True Template

Здесь можно обсудить ваш любимый плагин.
Post Reply
Kildor
Posts: 1515
Joined: Wed 16 Mar, 2005 06:26
Location: Новосибирск
Been thanked: 1 time
Contact:

Post by Kildor »

Latest post of the previous page:

жутко назойливая недоработка.
попробуйте ввести «' '» — после нажатия на пробел кавычки дублируются.

И… Нет ли более удобного способа писать подменю и прочие <expand> чем руками в одну строку?

ещё…
Копал, но так и не выкопал — как можно реализовать замену %%datetime%% на соответственно текущую дату и время?

И — фар начинает с жуткой скоростью сжирать память при сохранении true-*.xml —
открываю свежий фар, нажимаю F4 на одной из xml… получаю — 12+11 метров (память+своп)
жму на F2, получаю 12.5+11.1
ещё несколько раз сохраняю файл — 20+18.6
выхожу из редактора — память не освобождается.
опять вхожу, ещё несколько раз сохраняю — теперь 38+38
Как то раз правил шаблон, в итоге фар сожрал 200 метров оперативки и около 400 — свопа…
Ты мне не выкай!
«ФарФорум не для пользователей!»
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:жутко назойливая недоработка.
попробуйте ввести «' '» — после нажатия на пробел кавычки дублируются.
Доработаем... =))
Kildor wrote: И… Нет ли более удобного способа писать подменю и прочие <expand> чем руками в одну строку?
Боюсь что нету =(
Kildor wrote: ещё…
Копал, но так и не выкопал — как можно реализовать замену %%datetime%% на соответственно текущую дату и время?
Это к Тиму, он у нас за вставку из файла отвечает
Kildor wrote: И — фар начинает с жуткой скоростью сжирать память при сохранении true-*.xml —
открываю свежий фар, нажимаю F4 на одной из xml… получаю — 12+11 метров (память+своп)
жму на F2, получаю 12.5+11.1
ещё несколько раз сохраняю файл — 20+18.6
выхожу из редактора — память не освобождается.
опять вхожу, ещё несколько раз сохраняю — теперь 38+38
Как то раз правил шаблон, в итоге фар сожрал 200 метров оперативки и около 400 — свопа…
Да есть такое. Просто при каждом сохранении шаблонов он их перегружает. Видимо там сидит утечка памяти. Код в этом месте давольно жудкий лезть ломает, поэтому мой совет - настроил шаблон перезапусти фар. У меня при разработке шаблонов иногда утекало 500-700мб
User avatar
Tim Sobolev
Posts: 714
Joined: Fri 01 Apr, 2005 14:46
Location: Украина
Has thanked: 1 time
Been thanked: 2 times

Post by Tim Sobolev »

Kildor wrote: Копал, но так и не выкопал — как можно реализовать замену %%datetime%% на соответственно текущую дату и время?
Не совсем понятно какие трудности возникли... Надеюсь что следующих обьяснений будет достаточно...

Во-первых используется @@DATETIME@@ (см. true-tpl.txt пункт 5 )
Во-вторых по дефолту (без параметров) вставляется время и дата (например 01:12:19 16.09.2005)
Во-третьих все примеры использования шаблонов можно найти в файле "General Test.tpl", который расположен в папке .\Templates\Text\

вот несколько примеров использования @@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

Синтаксис:

Current day w/o leading zero ("d")
Current day with leading zero ("dd")
Week day short name ("ddd")
Week day full name ("dddd")
Month w/o leading zero ("M")
Month with leading zero ("MM")
Month short name ("MMM")
Month full name ("MMMM")
Two digit year w/o leading zero ("y")
Two digit year with leading zero("yy")
Four digit year ("yyyy")

12-hour clock: Hour w/o leading zero ("h")
12-hour clock: Hour with leading zero ("hh")
24-hour clock: Hour w/o leading zero ("H")
24-hour clock: Hour with leading zero ("HH")
Minute w/o leading zero ("m")
Minute with leading zero ("mm")
Second w/o leading zero ("s")
Second with leading zero ("ss")
Onanymous
Posts: 76
Joined: Wed 16 Mar, 2005 11:18
Contact:

Post by Onanymous »

far 2039 trutpl 2.0
конструкции с параметрами не работают если явно не указан вариант по умолчанию, конечно 'ё' в каждой метке несколько оживляет плагин, но скажите это сделано специально, ё?
User avatar
4ekucT
Posts: 507
Joined: Tue 05 Apr, 2005 23:44
Location: Беларусь, Минск

Post by 4ekucT »

Ммм не очень понятно о чем ты. Попробуй конкретнее, по шагам...
Onanymous
Posts: 76
Joined: Wed 16 Mar, 2005 11:18
Contact:

Post by Onanymous »

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

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: 1640
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 20 times
Been thanked: 41 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 608 times
User avatar
Smitis
Posts: 1640
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 20 times
Been thanked: 41 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
Post Reply

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