Теперь на странице ничего лишнего и все влезает.
Добро пожаловать!
На текущий момент в блоге затронуты следующие темы: vim, free pascal, lisp, forth, m4
Занимаюсь разработкой своего языка под названием DEmbro, подбробней: wiki и svn
Для постов, не связанных с программированием, у меня есть отдельное жж.
февраля 28, 2010
ctags (1)
Vim изначально не понимает языковых конструкций, поэтому не получиться эффективно бегать по исходному коду. Чтобы это исправить, существует утилитка ctags, которая экспортирует информацию о коде в отдельный файл, который понимает vim. Возможностей работы с тегами в vim'е много, поэтому за один день я со всем разобраться не смог, так что процесс растянется на несколько дней.
К сожалению, ctags очень плохо поддерживает паскаль, - видит только функции и процедуры, да и то кажется не видит их у дженериков.
Итак, я добавил себе в редактор окошко слева со структурой кода:
Качаем утилитку ctags отсюда, кидаем ее куда-нибудь в хорошее место. Далее, качаем плагин taglist. Кидаем содержимое doc себе в vimfiles\doc, а содержимое plugin соответственно в vimfiles\plugin. Теперь в _vimrc прописываем путь до ctags:
" for plugin taglist
let Tlist_Ctags_Cmd='"c:\prog\ctags\ctags.exe"'
Все, плагин готов к употреблению. То самое окошко со структурой открывается и закрывается командой
:TlistToggle. На этом его возможности не ограничиваются, и об остальных можно почитать хелп.
Для настройки хелпа нужно проделать следующее. Переходите в директорию vimfiles\doc\, открываете taglist.txt, вводите команду
:helptags .
Выходите. Теперь работает хелп
:help taglist.txt
Читать дальше......
февраля 25, 2010
Level up - Cygwin (1)
Сегодня понял, что пора учиться автоматизировать работу с большими группами файлов. Для этого нужны команды более продвинутые, чем изначально есть под виндой.
Решил установить Cygwin - эмулятор линукса под виндой, в первую очередь эмулирует bash. Чем он хорош - тем, что можно без проблем применять большинство статей о линуксе, рассказывающих как проделать то-то и то-то. Я-то человек ленивый, и сам копаться в настройках не очень люблю.
Как только я поставил cygwin, появилась проблема запуска бат-файлов - cygwin не понимает как этого делать. Проблема решается искусственным запуском cmd:
[Дож@test ~]# cmd /c some.bat
Кроме того, запуск многих прог блокирует cygwin до завершения работы программ. Чтобы избежать этого, следует пользоваться командой run
[Дож@test ~]# run bds temp.dpr
(этой строкой я запускаю дельфи).
К счастью, все программы из переменной окружения PATH, сразу видны из cygwin'а и потому все, что компилилось раньше, компилится и сейчас. Редактор gvim благополучно запускается. Так что я думаю, что мы подружимся.
Читать дальше......
TortoiseSVN из командной строки
При всем моем уважении к командной строке, TortoiseSVN по своей наглядности не заменяем ни одним консольным клиентом.
Но даже и TortoiseSVN можно запускать из консоли, избегая контекстное меню, вызовом
TortoiseProc /command:сюда имя команды /path:сюда путь для которого выполнить команду
для директории, либо
TortoiseProc /command:сюда имя команды /pathfile:сюда путь до файла для которого выполнить команду
для файла. В частности, вот две самые частоиспользуемые команды
TortoiseProc /command:update /path:"d:\proj\svn"
TortoiseProc /command:commit /path:"d:\proj\svn"
Я создал два bat-файла c этими действиями и раскидал по нужным мне директориям. Каждый раз переписывать в этих бат-файлах значение переменной /path: не хочется, к счастью, можно воспользоваться возможностями бат-файла. А именно, не вдаваясь в подробности, %~dp0 возвращает текущую директорию. Поэтому udate.bat и commit.bat окончательно выглядят так:
TortoiseProc /command:update /path:"%~dp0"
TortoiseProc /command:commit /path:"%~dp0"
Кроме того, гораздо удобнее не переходя к командной строке, а прямо из редактора (имею ввиду vim, под которым все делаю) горячими клавишами коммитить и апдейтить. Я выбрал клавиши F3 и F4 и прописал для них следующие две строки в _vimrc:
map <F3> :!<нужная директория>\commit.bat<CR>
map <F4> :!<нужная директория>\update.bat<CR>
Конечно, это не гибкое решение, так как не получится команды использовать из двух проектов, впрочем мне это и не надо. Если такое необходимо, то можно проделать следующее: 1) запускать TortoiseProc прямо для текущей директории (в которой открыт vim) - мне этого явно недостаточно 2) написать функцию setsvn, которая будет ставить директорию, для которой запускать TortoiseProc - мне это делать явно влом.
Так же стоит посмотреть в сторону всяких плагинов под вим, облегчающих работу с свн, например этот
vcscommand.vim
У приведенных выше маппингов есть недостаток, даже два: после выполнения манипуляций с свн потребуется дважды нажать на Enter (в cmd и vim). Этого можно избежать, переписав команды менее наглядным образом
map <F3> :!start cmd /c <нужная директория>\commit.bat<CR><CR>
map <F4> :!start cmd /c <нужная директория>\update.bat<CR><CR>
Подробнее можно почитать тут: Автоматизация TortoiseSVN.
Читать дальше......
февраля 21, 2010
Лесенка
Взято из реального проекта
TDialogScreenSettings = class(TDialog)
protected
AvailableModes : array of TIntSize;
Pages : TGUIN4_PageControl;
FWindow : TGUIN4_Window;
VideoPage : TGUIN4_Page;
ScreenModes : TGUIN4_ComboBox;
VsyncCheckBox : TGUIN4_CheckBox;
ShowFPSCheckBox : TGUIN4_CheckBox;
FullScreenCheckBox : TGUIN4_CheckBox;
AntialiasingCheckBox : TGUIN4_CheckBox;
procedure OnClose(Sender : TGUI_Control);
procedure OnBtnCancel(Sender : TGUI_Control);
procedure OnBtnOk(Sender : TGUI_Control);
procedure OnShow; override;
procedure OnHide; override;
procedure OnCreate; override;
procedure OnDestroy; override;
end;
Читать дальше......
февраля 12, 2010
Команды с паттернами
:%s/doj/visualdoj/g
Заменяет все вхождения doj в файле на visualdoj. Если убрать g на конце, то действие в каждой строке будет сделано не более одного раза. Удобно при рефакторинге.
:g/\cdoj/nu
Выведет на экран все строки, содержащие doj. Если убрать \c перед doj, то получим поиск с учетом регистра.
:v/doj/d
Удалит все строки файла, кроме тех, которые содержат doj. Удобно если у вас есть лог-файл, из которого нужно выделить какую-то определенную инфу.
Помощь:
:help :s
:help pattern
:help :g
Читать дальше......
Я немного подзабил
Но возобновляюсь. Посты теперь будут короткими в несколько строчек, описывающие какую-нибудь небольшую фитчу. Сложные посты буду разбивать на части - так их проще писать.
Читать дальше......