[ANN] Плагин к Far - текстовые шаблоны - Text Templates
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 26.01.06 16:41
Оценка: 6 (1)
Здравствуйте!

Наваял плагин к фару (плагин редактора), может еще кому пригодится.
Не знаю, правильно ли я в данный форум пишу ))
Плагин предназначен для тех, кто пишет код в фаре.
Плагин здесь.
Требования: Far 1.70 beta 5. На более старых версиях может не работать (скорее точно не будет работать).
Установка: разархивировать в Far\Plugins\Editor\TextTP
Зарегать два .reg файла. Примечание: файлы регистрируют клавишу t для быстрого доступа в меню плагинов (F11) и клавиатурный макрос Alt-W. При необходимости следует подправить reg файлы.
Что делает: в редакторе жмем Alt-W: появляется диалог ввода (такая черненькая полоска) в позиции курсора. набираем имя макроса. Как только плагин может однозначно идентифицировать шорткат, он прекращает ввод и вставляет его текст (как правило, имя не требуется вводить полность).
Пример: жмем Alt-W, вводим в строке ivector. Получаем в редакторе код:
#if !defined(_VECTOR_) && !defined(_STLP_VECTOR) && !defined(__STD_VECTOR__) && !defined(_CPP_VECTOR) && !defined(_GLIBCXX_VECTOR)
    #iclude <vector>
#endif


Подробности в конфигах, которые лежат рядом с dll. Там все просто. Доки пока нет ;-(
В шаблонах можно использовать парметры вида $NAME$. Если параметр не находится среди предопределенных, он запрашивается с клавиатуры и запоминается. Предопределены макросы с именем текущего файла и датой/временем, см шорткат mtest.

Планы по развитию: сделать проверку версии фара и не запускаться, если не та версия. Забить в комплект наборы макросов для часто используемых заголовков win, atl (stl вроде всю забил).

Принимаю критику и пожелания по развитию идеи ))

Если кто-то видел аналогичное, ногами не пинайте, я похожего не встречал. Видел True Templates, но он не понравился.
Маньяк Робокряк колесит по городу
Re: [ANN] Плагин к Far - текстовые шаблоны - Text Templates
От: Andir Россия
Дата: 27.01.06 01:57
Оценка:
Здравствуйте, Marty, Вы писали:

M>Если кто-то видел аналогичное, ногами не пинайте, я похожего не встречал. Видел True Templates, но он не понравился.


Сильно похоже на фичу WScite редактора, раскрыть аббревиатуру.

netmain=#region Using directives \n\nusing System;\nusing System.Collections.Generic;\n\n#endregion\n\ninternal class Program\n{\n\tpublic static void Main(string[] args)\n\t{\n\t\t|\n\t}\n}

Знак | вставленный внутри шаблона показывает где поставить каретку.

Для фара бы хотелось фичу, чтобы при создании файла в зависимости от его расширения сразу применялся какой-нить шаблон, по типу приведённого примера ...

С Уважением, Andir!
Re: [ANN] Плагин к Far - текстовые шаблоны - Text Templates
От: Andir Россия
Дата: 27.01.06 02:15
Оценка:
Здравствуйте, Marty, Вы писали:

M>Наваял плагин к фару (плагин редактора), может еще кому пригодится.


Что-то он у меня криво работает набираю имя шаблона cpp-include, вызываю плагин, он стирает имя до cpp-i и всё, потом в зависимости от того что я дальше нажимаю, то ничего не делает, то по непонятным правилам вставляет разные шаблоны

Версия Far: 1.70 alpha 6 (build 2031), стоят и другие плагины для редактора.

C Уважением, Andir!
Re[2]: [ANN] Плагин к Far - текстовые шаблоны - Text Templat
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 27.01.06 03:40
Оценка:
Здравствуйте, Andir, Вы писали:

A>Сильно похоже на фичу WScite редактора, раскрыть аббревиатуру.

A>

A>netmain=#region Using directives \n\nusing System;\nusing System.Collections.Generic;\n\n#endregion\n\ninternal class Program\n{\n\tpublic static void Main(string[] args)\n\t{\n\t\t|\n\t}\n}

A>Знак | вставленный внутри шаблона показывает где поставить каретку.
Что за зверь WScite не знаю Вопрос — насколько актуально использовать C-like управляющие последовательности? Сейчас использую те, что естественным образом содержаться в файлах и CDATA. Насчет каретки это мысль.

A>Для фара бы хотелось фичу, чтобы при создании файла в зависимости от его расширения сразу применялся какой-нить шаблон, по типу приведённого примера ...

Можно подумать над этим. Хотя не уверен, что это очень удобно, на автомате делать. Не верен, что будет удобно в тех случаях, когда шаблон, использующийся при создании файла, используется не 100% случаев. Если 50-50, то в 50 случаях из ста его удалять ручками придется, что может напрягать. Проще короткие шорткаты понаделать. Но вообще приделать можно, чтою юыло

Спасибо за ваш коментарий.
Маньяк Робокряк колесит по городу
Re[2]: [ANN] Плагин к Far - текстовые шаблоны - Text Templat
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 27.01.06 04:01
Оценка:
Здравствуйте, Andir, Вы писали:

A>Что-то он у меня криво работает набираю имя шаблона cpp-include, вызываю плагин, он стирает имя до cpp-i и всё, потом в зависимости от того что я дальше нажимаю, то ничего не делает, то по непонятным правилам вставляет разные шаблоны


Похоже, вы неправильно его используете
Видимо я плохо описал процедуру использования ;-(
1) В редакторе в меню плагинов вызываем плагин (лучше всего повесить клавиатурный макрос)
2) в появившемся поле ввода (черная строка, появляется на месте курсора), начинаем вводить имя шортката. Как только он распознается, вместо него вставляется тело макроса.

Для лучшего понимания приведу примерный алгоритм работы (все ссылки на конфиг — на texttp.xml)
1) При вызове плагина он строит список шорткатов, применимых к данному типу файла.
Типы файлов описаны в конфиге тегом file-type в секции file-types
<file-types>
    <file-type type="csrc" extention=".c,.cpp,.cxx,.c++,.h,.hpp"/>
</file-types>

Данный пример описывает тип файла csrc (C-Source), к нему относятся файлы с расширениями .c,.cpp,.cxx,.c++,.h,.hpp (маски не поддерживаются, точку не забываем ставить, просто точка опишет файл без расширения)
Применимые к данному типу файлов шорткаты имеют значение file-type="csrc"
    <shortcut name="cseparator"  file-type="csrc" template="c-separator-line"/>


2) При вводе каждого симола производится поиск подходящих шорткатов по имени.
Имф задано тэгом name (см листинг выше, имя — cseparator)
Если обнаруживается, что начальные символы введенной строки однозначно идентифицируют шорткат (введено например csep и есть только один шорткат, которые начинается с данной подстроки), то вставляется его тело — в приведенном примере тело имеет имя c-separator-line, его содержимое находиться в секции templates (template name="c-separator-line").
Тело макроса может быть целиком в отдельном файле, расположенном в подкаталоге templates.
    <shortcut name="cheader"     file-type="csrc" template="file:cheader.h"/>

Такой шорткат считывает файл Far\Editor\TextTP\Templates\cheader.h и вставляет его.

Ну вот, вроде бы все описал
Маньяк Робокряк колесит по городу
Re[2]: [ANN] Плагин к Far - текстовые шаблоны - Text Templat
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 27.01.06 04:14
Оценка:
Здравствуйте, Andir, Вы писали:

A>Что-то он у меня криво работает набираю имя шаблона cpp-include, вызываю плагин, он стирает имя до cpp-i и всё, потом в зависимости от того что я дальше нажимаю, то ничего не делает, то по непонятным правилам вставляет разные шаблоны


Забыл указать вашу ошибку — вы набираете не шорткат (имя шортката), а имя шаблона. Имя шаблона просто позволяет его идентифицироваать, но не импользуется для вызова, по этому имени на него можно ссылаться из различных шорткатов для различных типов файлов.
Маньяк Робокряк колесит по городу
Re: [ANN] Плагин к Far - текстовые шаблоны - Text Templates
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 27.01.06 04:31
Оценка:
Здравствуйте, Marty, Вы писали:

В "дистрибутиве" обнаружил баг — не работает рег файл для клавиатурного макроса Alt-W. Из негшо надо удалить строку "NotEmptyCommandLine"=dword:00000001, после этого нажатие Alt-W начинает работать.
Маньяк Робокряк колесит по городу
Re[3]: [ANN] Плагин к Far - текстовые шаблоны - Text Templat
От: Andir Россия
Дата: 27.01.06 04:40
Оценка:
Здравствуйте, Marty, Вы писали:

M>Похоже, вы неправильно его используете


[skip]

M>Ну вот, вроде бы все описал


Ага, понял. Теперь работает.
Непривычно и пугающе То есть я вроде ещё шорткат не набрал а он уже вставил шаблон, а я на автомате пытаюсь дальше набирать ... Тут лучше бы что-нить типа автодополнения сделать, вместо автоматической вставки.

Далее мне всё-таки нравится так как сделано опять же в том же WScite, когда я просто набираю аббревиатуру и нажимаю клавиатурную комбинацию, чем наоборот.

С Уважением, Andir!
Re[4]: [ANN] Плагин к Far - текстовые шаблоны - Text Templat
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 27.01.06 05:11
Оценка:
Здравствуйте, Andir, Вы писали:

A>Ага, понял. Теперь работает.

A>Непривычно и пугающе То есть я вроде ещё шорткат не набрал а он уже вставил шаблон, а я на автомате пытаюсь дальше набирать ... Тут лучше бы что-нить типа автодополнения сделать, вместо автоматической вставки.
Мне нравится так, как я сделал. Впрочем, это можно будет вынести в настройки, наверно займусь, если будет пользователей >1 )))

A>Далее мне всё-таки нравится так как сделано опять же в том же WScite, когда я просто набираю аббревиатуру и нажимаю клавиатурную комбинацию, чем наоборот.

А вот по этому поводу я категорически против. Мне удобнее явно вызвать ввод шортката, и контролировать то, что я делаю, вместо того, чтобы бороться с тем, что понавставлялось на автомате. Есть плагин, TrueTemplate, я пытался им пользоваться, но не понравилось. Он как раз и пытается определить, что введено в редакторе, при помощи регэкспов, и на основании этого вставляет шаблон. Я устал с ним бороться, когда он вставляет то, что не нужно, там где ненужно и тогда, когда не нужно. Возможно я просто не умею его готовить, но я решил написать такой плагин, который был бы удобен мне. Это показалось проще, чем бороться с TrueTemplate.
Впрочем, можно сделать анализ строки перед курсором по команде плагина, единственно, как определять начало шортката. Сейчас у меня в именах шорткатов допустимы любые символы, придется ограничить такую свободу.
Вообщем, надо подумать

ЗЫ Готовлю новый релиз . Символ '@' в шаблоне будет обозначать позицию курсора, двойной @@ будет заменяться на одинарный (первый экранирует второй)
Маньяк Робокряк колесит по городу
Re[3]: [ANN] Плагин к Far - текстовые шаблоны - Text Templat
От: Andir Россия
Дата: 27.01.06 05:20
Оценка:
Здравствуйте, Marty, Вы писали:

M>Вопрос — насколько актуально использовать C-like управляющие последовательности? Сейчас использую те, что естественным образом содержаться в файлах и CDATA.


Это просто пример существующего варианта, которым я пользуюсь, хотя там эта фича приделана как на коленке Если как у тебя в xml да в CDATA, то конечно никакие escape-последовательности не понадобятся (кроме разве что ']]>' но это редкая вещь).

M>Насчет каретки это мысль.


Оченно удобно, особенно потому, что шаблоны то нужны для ускорения набора однотипного кода. Вставил шаблон и пошёл дальше набирать, без лишних телодвижений.

A>>Для фара бы хотелось фичу, чтобы при создании файла в зависимости от его расширения сразу применялся какой-нить шаблон, по типу приведённого примера ...

M>Можно подумать над этим. Хотя не уверен, что это очень удобно, на автомате делать. Не верен, что будет удобно в тех случаях, когда шаблон, использующийся при создании файла, используется не 100% случаев. Если 50-50, то в 50 случаях из ста его удалять ручками придется, что может напрягать. Проще короткие шорткаты понаделать. Но вообще приделать можно, чтою юыло.

Аргументация заставила меня сомневаться Есть просто куча файлов, которые всегда должны иметь содержимое при создании, особенно для программистов. То есть всякие *.html, *.xml, *.h, *.cs и т.п. Хотя я и набираю очень быстро и привык набивать стандартный заголовок, но в большинстве случаев это можно делать и автоматом.
Пришла ещё такая идея:
1) Создаём пустой файл и он автоматом открывается в редакторе.
2) Там сразу (или по шорткату) открывается меню, по какому шаблону его заполнить (Пусть это будет *.cpp, раз уж у тебя шаблоны с++ — сные)

M>Спасибо за ваш коментарий.


Не за что, я заинтересованная сторона

С Уважением, Andir!
Re[5]: [ANN] Плагин к Far - текстовые шаблоны - Text Templat
От: Andir Россия
Дата: 27.01.06 05:24
Оценка:
Здравствуйте, Marty, Вы писали:

M>Впрочем, можно сделать анализ строки перед курсором по команде плагина, единственно, как определять начало шортката. Сейчас у меня в именах шорткатов допустимы любые символы, придется ограничить такую свободу.

M>Вообщем, надо подумать

Именно этот вариант я и имел ввиду, что шорткат — это цельное слово и в качестве темплэйта распознаётся только он, а не весь файл.

M>ЗЫ Готовлю новый релиз . Символ '@' в шаблоне будет обозначать позицию курсора, двойной @@ будет заменяться на одинарный (первый экранирует второй)




P.S. На ру-борде не делал представление своего плагина? Там вроде самая живая конференция по Far ...

С Уважением, Andir!
Re: [ANN] Far Text Templates - обновление
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 27.01.06 05:46
Оценка:
Версия 0.2
Добавлена возможность задавать позицию курсора после вставки
шаблона. Позиция курсора задается символом '@'. Для вставки
самого символа '@' его следует продублировать.
Все настройки (на текущий момент настройки для c/c++) вынесены
из основного конфигурационного файла texttp.xml в файл
c-shortcuts.xml, который в свою очередь подключает остальные
используемые файлы. Это сделано для того, чтобы пользователь
мог вносить изменения в свою копию конфигурации, и для упрощения
последующего обновления конфигурационных файлов, поставляемых
вместе с плагином.
Исправлена ошибка в файле AltW-hotkey.reg, из-за которой не
работала горячая клавиша.

Новая версия здесь.
Маньяк Робокряк колесит по городу
Re[4]: [ANN] Плагин к Far - текстовые шаблоны - Text Templat
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 27.01.06 05:54
Оценка:
Здравствуйте, Andir, Вы писали:

A>Здравствуйте, Marty, Вы писали:


M>>Вопрос — насколько актуально использовать C-like управляющие последовательности? Сейчас использую те, что естественным образом содержаться в файлах и CDATA.


A>Это просто пример существующего варианта, которым я пользуюсь, хотя там эта фича приделана как на коленке Если как у тебя в xml да в CDATA, то конечно никакие escape-последовательности не понадобятся (кроме разве что ']]>' но это редкая вещь).

Вообще да, это бы лишь запутало. А если в шаблоне используется ]]>, то это повод просто вынести шаблон в отдельный файл.

M>>Насчет каретки это мысль.


A>Оченно удобно, особенно потому, что шаблоны то нужны для ускорения набора однотипного кода. Вставил шаблон и пошёл дальше набирать, без лишних телодвижений.

Обновление ууже доступно. Вроде работает нормально

A>1) Создаём пустой файл и он автоматом открывается в редакторе.

A>2) Там сразу (или по шорткату) открывается меню, по какому шаблону его заполнить (Пусть это будет *.cpp, раз уж у тебя шаблоны с++ — сные)
A>
Это уже смахивает на некий проджект визард. У меня такая идея бродит в голове, но она пока окончательно не сформировалась
А то, что вы перечислили, можно на шорткаты повесить

Вообще интересно такие штуки парами/группами делать — исходник, хидеры, и тп сразу вместе генерить. Допустим класс визард какой — h, и cpp. Имя класса и там и там одно. У меня уже есть ввод параметров с запоминанием, параметр вводится один раз, и используется по всему шаблону дальше. Эту идею можно расширить и на несколько файлов. В принципе, это можно добавить в меню плагинов для файловой панели, и там визардов наделать. Вообщем, идея имеет право на жизнь, но надо все хорошенькол обдумать.
Маньяк Робокряк колесит по городу
Re[6]: [ANN] Плагин к Far - текстовые шаблоны - Text Templat
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 27.01.06 05:58
Оценка:
Здравствуйте, Andir, Вы писали:


A>P.S. На ру-борде не делал представление своего плагина? Там вроде самая живая конференция по Far ...


Не. Не успел еще. Сама идея плагина окончательно сформировалась в этот понедельник, когда в очередной раз приходилось копировать однотипные фрагменты кода С тех пор сидел ваял, первый релиз на любимый рсдн решил закинуть, а там видно будет
Маньяк Робокряк колесит по городу
Re: [ANN] Text Templates - обновление
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 29.01.06 12:05
Оценка:
Новая версия здесь.

Плагин позволяет упростить ввод повторяющихся фрагментов текста,
с возможностью использования макроподстановок (параметров) в теле
шаблона.

При использовании параметров в теле шаблона можно использовать
предопределенные имена параметров или задавать их произвольно.
В последнем случае при обработке шаблона будет произведен запрос
на ввод значений параметров с клавиатуры.
При вставке шаблона позиция курсора после вставки определяется
символом '@' в теле шаблона (при необходимости вставки символа
'@' его следует продублировать).

Плагин может работать в двух основных режимах:
1) в режиме ввода имени шаблона в отдельном поле ввода;
2) в режиме ввода имени шаблона в редактируемом файле с
последующей заменой имени шаблона на его тело.

При вводе имени шаблона в поле ввода могут использоваться
два режима:
1) режим немедленного завершения ввода и вставки шаблона,
если плагин может однозначно идентифицировать шаблон по
вводимому имени (по начальным символам);
2) режим автодополнения введенного текста, если плагин может
однозначно идентифицировать шаблон по вводимому имени (по
начальным символам). В данном режиме для вставки тела шаблона
требуется подтвердить ввод нажатием клавиши [Enter].
Маньяк Робокряк колесит по городу
Re: Re: [ANN] Text Templates - обновление (багфикс)
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 30.01.06 02:48
Оценка:
В последнем релизе обнаружена ошибка в конфигурационном файле.
Фикс здесь
Маньяк Робокряк колесит по городу
Re: [ANN] Плагин к Far - Text Templates
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 01.02.06 09:17
Оценка:
Переехал на farmanager.com
Маньяк Робокряк колесит по городу
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.