True Template — использование текстовых шаблонов при написании кода

Здесь можно обсудить ваш любимый плагин.
Post Reply
Onanymous
Posts: 76
Joined: Wed 16 Mar, 2005 11:18
Contact:

Post by Onanymous »

Latest post of the previous page:

ну например прежнее

Code: Select all

<Expand  Pattern="\\frac"   Imm="c"    At=".*\p.*" 		To="\\frac{\0}{\1}"/>
не работает, приходится писать так

Code: Select all

<Expand  Pattern="\\frac"   Imm="c"    At=".*\p.*" 	To="\?''e'1'?\?''e?\\frac{\0}{\1}"/>
а если Ё там не будет то соответсвующая строка просто неактивна и ничего туда ввести нельзя...
User avatar
4ekucT
Posts: 507
Joined: Tue 05 Apr, 2005 23:44
Location: Беларусь, Минск

Post by 4ekucT »

Все правильно без 'ё' мы имеем элемент управления 'статическое поле'
Нынче поддерживаются:

Code: Select all

  1) Статический текст
     Формат - \?'Static text'?
  2) Чекбокс (+ элемент выбран, - элемент не выбран)
     Формат - \?'Name'x'On value'+'Off value'?
  3) Комбобокс (+ элемент активен, - элемент не активен; активным может быть только 1 элемент)
     Формат - \?'Name:'c-'Item 1'+'Item item 2'-'Item item 3'?
  4) Выпадающее меню (+ элемент активен, - элемент не активен; активным может быть только 1 элемент)
     Формат - \?'Name:'d-'Item 1 name':'Item 1: On value':'Item 1: Off value'+'Item 2 name':'Item 2: On value':'Item 2: Off value'-'Item 2 name':'Item 2: On value':'Item 2: Off value'?
  5) Поле ввода
     Формат - \?'Name:'e'init value'?
  6) Фиксированное поле ввода (после начального значения указывается фиксированная длинна поля)
     Формат - \?'Name:'f'AB':'2'?
  7) Листбокс (+ элемент активен, - элемент не активен; активным может быть только 1 элемент)
     Формат - \?'Name:'l-'Item 1 name':'Item 1: On value':'Item 1: Off value'+'Item 2 name':'Item 2: On value':'Item 2: Off value'-'Item 2 name':'Item 2: On value':'Item 2: Off value'?
  8) Группа радио элементов (+ элемент активен, - элемент не активен; активным может быть только 1 элемент)
     Формат - \?'Name:'r-'Item 1 name':'Item 1: On value':'Item 1: Off value'+'Item 2 name':'Item 2: On value':'Item 2: Off value'-'Item 2 name':'Item 2: On value':'Item 2: Off value'?
Вроде как правильно так

Code: Select all

<Expand  Pattern="\\frac"   Imm="c"    At=".*\p.*"    To="\?''e'1'?\?''e''?\\frac{\0}{\1}"/>
Эта 'ё' как ты называешь определяет что элемент управления есть поле вовода - editor. И оно работает так

Code: Select all

\?'name'e'init value'?
Onanymous
Posts: 76
Joined: Wed 16 Mar, 2005 11:18
Contact:

Post by Onanymous »

Ага... Ого!!! извиняйте, пойду почитаю true-tpl.txt
User avatar
Centaur
Posts: 1083
Joined: Tue 05 Apr, 2005 20:09
Location: Novosibirsk, Russia
Been thanked: 2 times

Post by Centaur »

Бага репорт, однако.

Version:
FAR 1.70 beta 5 build 1634
TrueTemplate 2.00

Summary:
Использование \l при отсутствии выделенного блока приводит к падению плагина.

To reproduce:
  • В файл true-text-txt.xml из стандартной поставки добавляем правило:

    Code: Select all

    <Expand Key="CtrlB" At="&AnyWhere;" To="*\l*" />
  • Создаём новый файл 1.txt
  • Нажимаем клавишу Ctrl+B
Expected behavior:
в позицию курсора вставляется текст "**"

Observed behavior:
в позицию курсора вставляется текст "*", после чего вываливается сообщение:
Plugin call error
Exception occurred:
"Attempt to read from the inaccessible address 0x34"
Exception address: 0x7C901010 in module:
C:\...s\Editor\TrueTemplate\true-tpl.dll
Workaround:
«а вы так не делайте!»

Proposed solution:

Code: Select all

--- true-tpl.cpp.bak	Sun Sep 11 06:00:20 2005
+++ true-tpl.cpp	Fri Sep 23 17:03:02 2005
@@ -1350,22 +1350,23 @@
 static void EditorSaveRestore(void)
 {
   int vblock;
   int sellength=0;
   EditorInfo ei;
   Info.EditorControl(ECTL_GETINFO, &ei);
   TEditorPos ep=EditorGetPos();
   char filename[NM];
   lstrcpy(filename,"%TEMP%\\true-template.tmp");
   FSF.ExpandEnvironmentStr(filename, filename, sizeof(filename));
   FILE* file=fopen(filename,"rb");
+  if (!file) return;
   fread(&vblock,1,sizeof(int),file);
   fread(&sellength,1,sizeof(int),file);
User avatar
Centaur
Posts: 1083
Joined: Tue 05 Apr, 2005 20:09
Location: Novosibirsk, Russia
Been thanked: 2 times

Post by Centaur »

=Tim Sobolev= wrote:вот несколько примеров использования @@DATETIME@@:

@@DATETIME:yyyy/MM/dd hh\:mm\:ss@@ => 2005/09/16 01:12:19
@@DATETIME:dd-MM-yyyy HH\:mm\:ss@@ => 16-09-2005 01:12:19
@@DATETIME:dd MMMM yyyy HH\:mm\:ss@@ => 16 сентября 2005 01:12:19
@@DATETIME:(ddd) dd-MM-yyyy HH\:mm\:ss@@ => (Пт) 16-09-2005 01:12:19
Здраво было бы задокументировать в описании \d и \w, что там ':' тоже надо эскейпить через '\'. А то без копания в исходниках это не интуитивно…
User avatar
4ekucT
Posts: 507
Joined: Tue 05 Apr, 2005 23:44
Location: Беларусь, Минск

Post by 4ekucT »

Спасибо за репорт сегодня же все исправим...
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Post by Smitis »

Почему не работает такой макрос:

Code: Select all

<TrueTpl>
<Language  File="*.aaa" ignoreCase="1" Desc="AAA files">
  <Expand  Pattern="aaa" At=End To="qqq\{CtrlHome}QQQ" />
</Language>
</TrueTpl>
Пример написан специально для теста.
Необходимое действие: "aaa" в конце строки заменяем на "qqq". Затем перескакиваем в начало файла и там вставляем "QQQ".
В действительности: вместо "aaa" получаем "qqqQQQ" и курсор в начале текста.
Такое впечатление, что управляющие символы \{key} обрабатываются в конце макроса (т.е. макрос обрабатывается не по порядку)
FAR 1.70 alpha 6 (build 2039)
TrueTemplate 2.00
User avatar
Centaur
Posts: 1083
Joined: Tue 05 Apr, 2005 20:09
Location: Novosibirsk, Russia
Been thanked: 2 times

Post by Centaur »

А вот ещё псевдофича.

Хотим клавишу, которая в HTML-файл вставит entity reference «<». Естественно, эскейпим &, по правилам XML:

Code: Select all

<Expand Key="Alt," To="<" />
А вот хрен. < разворачивается в < разворачивается в <. Более того, &lt; тоже разворачивается в <.

Обходим фичу, эскейпя l:

Code: Select all

<Expand Key="Alt," To="&\lt;" />
Всё работает.

Теперь хотим клавишу, которая вставит «&nbsp;». Наученные горьким опытом, эскейпим n… эээ, стоп, \n развернётся в перевод строки. Ну ладно, тогда эскейпим что-нибудь ещё.

Code: Select all

<Expand Key="CtrlShiftSpace" To="&n\bsp;" />
Клавиша вставляет «&sp;». Ах да, \b — это же backspace. Как я мог на это попасться.

Code: Select all

<Expand Key="CtrlShiftSpace" To="&nb\sp;" />
Вставляет &nbp;. Ах да, \s — это начало блока. \p — это позиция курсора. Наконец, на \; обретаем искомое.

Code: Select all

<Expand Key="CtrlShiftSpace" To="&nbsp\;" />
Так это я всё к чему? Entities надо разворачивать не до опупения, а один раз. Патч прилагается.
Attachments
fix-entity-expand.zip
Patch to fix entity expansion in TrueTemplate configs
(965 Bytes) Downloaded 636 times
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Post by Smitis »

А пожелания принимаются?
Очень не хватает хранения истории выбранных темплейтов ("Template set selection") для тех файлов, для которых тип менялся в ручную. А то поменял тип, а при следующем открытии все макросы опять не те. Не удобно, когда в файле с определённым расширением содержится не то, что задумывалось по умолчанию.
User avatar
4ekucT
Posts: 507
Joined: Tue 05 Apr, 2005 23:44
Location: Беларусь, Минск

Post by 4ekucT »

Smitis wrote:Почему не работает такой макрос:

Code: Select all

<TrueTpl>
<Language  File="*.aaa" ignoreCase="1" Desc="AAA files">
  <Expand  Pattern="aaa" At=End To="qqq\{CtrlHome}QQQ" />
</Language>
</TrueTpl>
Пример написан специально для теста.
Необходимое действие: "aaa" в конце строки заменяем на "qqq". Затем перескакиваем в начало файла и там вставляем "QQQ".
В действительности: вместо "aaa" получаем "qqqQQQ" и курсор в начале текста.
Такое впечатление, что управляющие символы \{key} обрабатываются в конце макроса (т.е. макрос обрабатывается не по порядку)
FAR 1.70 alpha 6 (build 2039)
TrueTemplate 2.00
Подругому никак ибо я делаю - Info.AdvControl(Info.ModuleNumber, ACTL_POSTKEYSEQUENCE, (void*)&ks);
А в спецухе написано

Code: Select all

ACTL_POSTKEYSEQUENCE Передать в FAR последовательность внутренних кодов клавиш.
Param - указатель на структуру KeySequence
Функция возвращает TRUE - клавиши успешно помещены в очередь, FALSE - ошибка.
Последовательность переданных клавиш начнет исполняться тогда, когда FAR получит управление.
Последовательность переданных клавиш начнет исполняться тогда, когда FAR получит управление.
Kildor
Posts: 1515
Joined: Wed 16 Mar, 2005 06:26
Location: Новосибирск
Been thanked: 1 time
Contact:

Post by Kildor »

жутко безобразное поведение плагина (вторая версия):
Работаю, работаю, потом бац, и плагин отключается.
не реагирует ни на что, при начале редактирования файла — окошко „tru tpl — загрузка” — появляется, но и только.
В меню плагинов только самое первое меню есть его — невозможно ни сменить схему, ни отобразить внешнюю команду, ничего.
можно удалить спокойно при этом dll его, он никак не отреагирует.

И так как всё это происходит молча, без какого-либо оповещения, разобраться нельзя…
Через пару дней — зарабатывает вновь., но ещё через денёк — опять умирает.
плагин — поселдий, фар — 2039.
Ты мне не выкай!
«ФарФорум не для пользователей!»
Upd:
P.S. Я просто поддерживаю беседу.» © Народ.

xmpp:kildor@jabber.ru
User avatar
4ekucT
Posts: 507
Joined: Tue 05 Apr, 2005 23:44
Location: Беларусь, Минск

Post by 4ekucT »

Хммм такое поведение пока ни у кого не наблюдалось больше. Постарайся понять изза чего это, так что бы я смог это почторить у себя... Тогда полечим.
Kildor
Posts: 1515
Joined: Wed 16 Mar, 2005 06:26
Location: Новосибирск
Been thanked: 1 time
Contact:

Post by Kildor »

4ekucT
Так…
убил все шаблоны, оставил только
<?xml version="1.0" encoding="windows-1251"?>
<TrueTpl>
<!-- Шаблоны по умолчанию -->
<Include File="templates\true-default.xml"/>
</TrueTpl>
true-beautifiers.xml
true-compilers.xml
true-default.xml
true-defines.xml
true-global.xml
файлы стандартны
Вставляются только разделители, и то, только через F11 T Enter
(нет ни кавычек, ни скобок.)
А ещё странное поведение
редактирую
C:\Program Files\Far\FarEng.lng
F11 T T
экран делится на две части, в нижней — появляется содержимое файла C:\Program Files\CVSNT\\Copying

во всех остальных просмотренных файлах — F11 T T не показывает ничего.
PS: Может у тебя аська/жаббер есть?
Ты мне не выкай!
«ФарФорум не для пользователей!»
Upd:
P.S. Я просто поддерживаю беседу.» © Народ.

xmpp:kildor@jabber.ru
User avatar
4ekucT
Posts: 507
Joined: Tue 05 Apr, 2005 23:44
Location: Беларусь, Минск

Post by 4ekucT »

Kildor wrote:4ekucT
Так…
убил все шаблоны, оставил только
<?xml version="1.0" encoding="windows-1251"?>
<TrueTpl>
<!-- Шаблоны по умолчанию -->
<Include File="templates\true-default.xml"/>
</TrueTpl>
true-beautifiers.xml
true-compilers.xml
true-default.xml
true-defines.xml
true-global.xml
файлы стандартны
Вставляются только разделители, и то, только через F11 T Enter
(нет ни кавычек, ни скобок.)
Не повторилось. Есть и скобки и кавычки.
А ещё странное поведение
редактирую
C:\Program Files\Far\FarEng.lng
F11 T T
экран делится на две части, в нижней — появляется содержимое файла C:\Program Files\CVSNT\\Copying

во всех остальных просмотренных файлах — F11 T T не показывает ничего.
Не повторилось.
PS: Может у тебя аська/жаббер есть?
АСЯ - 674333
ЖАБЕР - 4ekucT
Kildor
Posts: 1515
Joined: Wed 16 Mar, 2005 06:26
Location: Новосибирск
Been thanked: 1 time
Contact:

Post by Kildor »

4ekucT
Incorrect or damaged c:\...ugins\TrueTemplate\true-tpl-rus.lng
Message 39 not found
True-tpl-rus.lng — файл от 18.09, 1132 байт.
Создаю файл 1.cpp, предлагается на выбор несколько шаблонов, после выбора — выдаётся этот диалог.
Если нажимаю ok, то работа продолжается.

Есть у меня подозрение на то, что к глюкам причастен Punto Switcher (версии 2.8.0.0)
Периодически глюки начинаются после автосвича, периодически пропадают после неё.
PS:

Code: Select all

C:\Program Files\Far\FarEng.lng                                 DOS  Строка       1/1984   Кол 1          46  09:16
.Language=English,English

"Evaluation copy, please register."
"Registered to"
"Yes"
"No"
"Ok"

"&Yes"
"&No"
"&Ok"

"Cancel"
"Retry"
"Skip"
"Abort"
"Ignore"
"Delete"
"Split"

"&Cancel"
"&Retry"
C:\Program Files\CVSNT\\Copying                                       DOS  Строка        1/340   Кол 1            9
        GNU GENERAL PUBLIC LICENSE
           Version 2, June 1991

 Copyright (C) 1989, 1991 Free Software Foundation, Inc.
     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

          Preamble

  The licenses for most software are designed to take away your
freedom to share and change it.  By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users.  This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it.  (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.)  You can apply it to
your programs, too.

  When we speak of free software, we are referring to freedom, not
1        2        3        4        5        6        7        8Строка  9Видео   10        11ИстПр   12
Ты мне не выкай!
«ФарФорум не для пользователей!»
Upd:
P.S. Я просто поддерживаю беседу.» © Народ.

xmpp:kildor@jabber.ru
User avatar
Centaur
Posts: 1083
Joined: Tue 05 Apr, 2005 20:09
Location: Novosibirsk, Russia
Been thanked: 2 times

Post by Centaur »

Kildor wrote:А ещё странное поведение
редактирую
C:\Program Files\Far\FarEng.lng
F11 T T
экран делится на две части, в нижней — появляется содержимое файла C:\Program Files\CVSNT\\Copying
Это у тебя Навигация случилась. Фича, надо сказать, весьма своеобразная :)
Post Reply

Return to “Обсуждение плагинов”