Сниппеты как в Textmate

Речь пойдет о Snippets. Причем не о простых, а о таких какие реализованы в широко известном в узких кругах редакторе Textmate. Они так хороши что реализуют эти самые snippets теперь много где.
Например тут хорошо видно что это такое ( /stat/click.php?http://intype.info/screencasts/snippets/ ) [3Mb flash]

Итак, это удовольствие доступно и нам, хотя не в такой симпатичной обертке, но главное же функционал. Скрипт кстати не новый: http://caladbolg.net/scite_snippets.php ( /stat/click.php?http://caladbolg.net/scite_snippets.php )

Итак, для интеграции этого чуда в наш scite нам понадобится файл Snippets.lua

Кладем его в нашу сборку: SciTE\tools\Snippets.lua

Теперь редактируем SciTE\tools\SciTEStartup.lua
( Настройки -> Открыть файл автоматизации Lua )
Добавляем в конец файла:

Код lua:

-- textmate like snippets
require (props["SciteDefaultHome"].."\\tools\\Snippets.lua")


Теперь редактируем сам SciTE\tools\Snippets.lua: добавим в него нужные нам snippets. Я для примера напишу пару для php.

Добавлять новый код будеем между
Код lua:
snippets.none.key  = "['${1:}'] = { ${2:func}${3:, ${4:arg}} }"

и
Код lua:
-- options

(где-то около 26 строки)

Добавим следующее:
Код lua:
snippets[SCE_HPHP_DEFAULT] = {
['t'] = "$this->${0}",
['fun'] =
[[function ${1:name}(${2:})
{
${0}
}]],
}

Для примера этого хватит.

Если редактор при запуске не ругается значит пока все делали правильно.

Тепрь настроим клавиатурные сочетания по которым будут вызываться функции скрипта.

( Настройки -> Открыть файл пользовательских настроек )

Добавляем в конец:

Код properties:
# Snippets...
command.parent.37=10
command.name.37.*=Insert Snippet
command.37.*=dostring Snippets.insert()
command.mode.37.*=subsystem:lua,savebefore:no
command.shortcut.37.*=Ctrl+Space

command.parent.38=10
command.name.38.*=Cancel Snippet
command.38.*=dostring Snippets.cancel_current()
command.mode.38.*=subsystem:lua,savebefore:no
command.shortcut.38.*=Ctrl+Shift+Space

command.parent.39=10
command.name.39.*=List Snippets
command.39.*=dostring Snippets.list()
command.mode.39.*=subsystem:lua,savebefore:no
command.shortcut.39.*=Ctrl+Alt+Shift+Space


Сохраняем.

Теперь берем любой исходник на php.
Встаем на чистую строку.
Пишем
Код php:
fun

жмем ctrl-space
видим появившийся код в котором выделено имя функции.
Набираем новое. Опять жмем ctrl-space.
Курсор оказывается в области задания аргументов функции. Если нужно пишем что нужно. Опять жмем ctrl-space.
Курсор встает туда где определяется тело функции, с экрана пропадает маркер (слева там был) что говорит о том что snippet выполнился до конца.

Вот так.

Еще следует добавить что без проблем у меня работает не самый свежий Snippets.lua
(брал с http://caladbolg.net/scite.php ( /stat/click.php?http://caladbolg.net/scite.php )). Самый свежий (тут http://scite-tools.googlecode.com/svn/scripts/scite/ ( /stat/click.php?http://scite-tools.googlecode.com/svn/scripts/scite/ )) выдавал какие-то ошибки.

Автор ( http://forum.ru-board.com/profile.cgi?action=show&member=nicckolay ) интеграции.


Огигинал новости «Сниппеты как в Textmate»   -
«SciTE - редактор кода для программистов»   -