сделать стартовой  |  добавить в избранное

   SciTE - редактор кода для программистов

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


Автор: Тугаринов Сергей / Дата: 28.02.2007 / Комментариев: 9
Категория: Скрипты, LUA


Речь пойдет о Snippets. Причем не о простых, а о таких какие реализованы в широко известном в узких кругах редакторе Textmate. Они так хороши что реализуют эти самые snippets теперь много где.
Например тут хорошо видно что это такое [3Mb flash]

Итак, это удовольствие доступно и нам, хотя не в такой симпатичной обертке, но главное же функционал. Скрипт кстати не новый: 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). Самый свежий (тут http://scite-tools.googlecode.com/svn/scripts/scite/) выдавал какие-то ошибки.

Автор интеграции.

Версия для печати / Прочитано: 30743 раз(а)

Комментариев: 9 (rss)

1. lasc / 01.03.2007 - 03:21
отлично, а теперь бы еще и готовые сниплеты для пхп и вообще хорошо
Цитата
2. endrin / 22.03.2007 - 12:52
3. Loac / 06.05.2007 - 15:14
у меня жалуется при загрузке

Warning: "C:\Program Files\SciTE/scripts/utils/lex_scopes.txt" does not exist.Snippets.show_scope will not function properly.
Цитата
4. Loac / 06.05.2007 - 19:00
тек, файлик это нашел тут
http://scite-tools.googlecode.com/svn/scripts/utils/

но потом проявилась следующая ошибка:
C:\Program Files\SciTE\tools\Snippets.lua:150: bad argument #2 to `MarkerSetBack' (number expected, got nil)
>Lua: error occurred while processing command

удалил строку с ошибкой, вроде работает, но хотелось бы знать в чем была или есть проблема
Цитата
5. Blza / 13.07.2007 - 17:12
Помогите настроить это, у мне пишет либо

attempt to call a string value

если проприсать в global.properties

ext.lua.startup.script=scripts/snippets.lua и соответствующие команды

Либо, если подключать через global.properties отдельный файл startup.lua и написать туда одну строчку (так ли это надо делать??)

require (props[\"SciteDefaultHome\"]..\"\\\\scripts\\\\snippets.lua\")

выдает

scripts/startup.lua:1: error loading package `C:\\tmp\\distributives\\wscite\\scripts\\snippets.lua\' (C:\\tmp\\distributives\\wscite\\scripts\\snippets.lua:290: unexpected symbol near `#\')
>Lua: error occurred while loading startup script
Цитата
6. Blza / 16.07.2007 - 07:49
Так... разобрался ) для того, чтобы это подключить, надо как минимум сборку 1.74, т.к. на новые сниппеты с сайта разработчика используют lua 5.1.
Цитата
7. Blza / 25.07.2007 - 16:17
В настоящий момент сниппеты с сайта автора работают только для его собственной сборки SciTE-st (все скачивается, устанавливается и работает). Поэтому пока что не скачивайте скрипты из http://scite-tools.googlecode.com/svn/trunk или по ссылкам, указанным в начале новосит! В скором времени скрипты для буду обновлены для работы со стандартной сборкой 1.74.

Собственная сборка от Mitchell\\\'a Foral\\\'a является очень интересной, т.к. поддерживает dynamic lexing. Т.е. осуществляется правильная подстветка синтаксиса, если констукции на одном языке вставлены в другой. Как следствие этого не используются цветовые схемы, определенные в файлах .properties. Вместо этого цвета описываются в файлах lua скриптов, которые по совместительству являются лексерами. Поэтому пока что приходится пользоваться цветовыми схемами Митчелла либо сидеть и менять скрипты.
Помимо этого в сборке реализовано еще много всего:
- свой менеджер проектов
- редактирование текста сразу на нескольких линиях
- циклические буферы обмена (как в emacs)
- динамическое переопределение комбинаций клавиш в завсисимости от текуцего языка
Фактически многие настройки переносятся из файлов .properties в файлы скриптов на lua.
Все особенности сборки очень наглядно продемонстрированы в скринкастах.
Как все это скачать и установить довольно детально расписано в текстовых файлах из SVN, ссылки на которые находятся на странице, посвященной сборке SciTE-st.
Для работы некоторых сниппетов потребуется установка Ruby.
Если будут вопросы по установке именно текущей версии - пишите...
Цитата
8. alexpert / 02.04.2008 - 15:23
Сейчас посмотрим как это можно использовать с пользой для дела :)
Цитата


Добавить комментарий:
Имя:
E-mail:
        BBCodes




Интересные статьи / Тематические материалы © 2004 - 2017 - Хранение данных