Автоматический конфигуратор редактора: жизнь и развитие
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Легенда: + добавлено
         - удалено
         * изменено
         ! исправлено

   Для поддержки разработки  программы можно пожертвовать некоторую
сумму. Вот мои кошельки в системе WebMoney.ru (www.wmtransfer.com):
Z787475721790  (для USD), E876273527569  (для Euro),  R538290555814
(для рублей).

   Есть у меня просьба к вам (не оглядывайтесь, именно к  вам):  не
могли бы вы (ваши знакомые  и  т.д.)  перевести  readme  и  lng  на
английский, немецкий, французский или любой другой,  какой  знаете,
язык, а затем прислать это дело мне, чтобы я включил это в поставку
программы? Я никого не заставляю и лишь надеюсь  на  то,  что  есть
люди, готовые подкрепить свои "пасибы" делом...


2.4/08.07.2006
~~~~~~~~~~~~~~
 ! Значение macro/stop по умолчанию  противоречило  документации  и
   было равно "on".
 ! При редактировании файлов, для которых была определена настройка
   wordsym,  команды  Ctrl-Del,  Ctrl-BS  и   Ctrl-T   не   удаляли
   последовательности пробелов.
 ! Ошибка обработки  комментариев  ()  в  конфигурационных
   файлах. Исправлено Константином Ступником.
 * Плагин работает только под FAR 1.70 Release (build 2087) и выше.
 + expandtabs/onlynew - поддержка опции редактора  "Преобразовывать
   новые символы табуляции в пробелы".

2.3/24.01.2006
~~~~~~~~~~~~~~
 * License: EMAILWARE -> DONATIONWARE.

2.2/09.01.2004
~~~~~~~~~~~~~~
 * Обновленный парсер xml от Константина Ступника.
 * esc_sources.xml: "*.vb" - это тоже BASIC.
 * esc_binary: "*.spk" - считается двоичным.
 + Макросы, которые  запускаются автоматически при создании  и  при
   открытии файла (см. описание параметра auto в readme).
 + Под FAR  1.70  build  1715  и  выше  используется  универсальный
   механизм запуска  макроса,  предоставляемый  самим  FAR'ом,  при
   котором работают без проблем всякие $Date, $MMode и т.п.
 + Обработка wordsym в самом [ESC]. Работает только  под  FAR  1.70
   build 1740,  на  момент  выпуска  данной  версии  [ESC]  она  не
   распространяется,   поэтому   вы    сможете    ощутить    данную
   функциональность  [ESC]  только  после  выпуска  соответствующей
   сборки FAR.
 + FAQ#5.
 * Размер dll увеличился с 81920 до 86016.

2.1/12.07.2003
~~~~~~~~~~~~~~
 * License
 * Для работы требуется Far 1.70 beta 5 (build 1634) и выше.
 + esc_sources.xml: "*.pp" - это тоже паскаль (FreePascal).
 + esc_xml: "*.xsd" - тоже xml.
 + esc_binary.xml: файлы "*.ow,*.o,*.wcx,*.wfx,*.fll"  -  считаются
   двоичными.
 + wordsym -  информация  о  символах  слова,  в  самом  плагине  в
   настоящий момент не используется, сделано  для  использования  в
   других плагинах.
 + Плагин учитывает новшество FAR 1.70 build 1662: клавиши, которые
   "нажимаются" при проигрывании макроса, доходят до плагинов.
 + overload.
 * Размер dll увеличился с 77824 до 81920.

2.0/09.12.2002
~~~~~~~~~~~~~~
 * License
 ! Плагин пытался изменить  файл,  который  был  в  режиме  запрета
   модификации (Ctrl-L).
 ! Не удалялся существующий блок при обработке  addsymbol,  если  в
   настройках редактора FAR были отключены постоянные блоки.
 + esc_binary.xml: к двоичным файлам причислены  *.hlp,*.gid,*.fts,
   *.m[12o]v.
 + В include можно использовать переменные окружения.
 + Плагин ругается вслух,  если  пользовательский  макрос  содержит
   неизвестную клавишу.
 + Плагин  ругается   на  ошибки  в   xml-файле   не   только   при
   тестировании, а при любой попытке прочитать конфигурацию.
 + esc_sources.xml:  тип  python   (*.py,*.pyw)   от   Ivan   Bykov
   <ivan.bykov@mail.ru>
 + smartkey/stopchar  -   уточнение  поведения  умной  табуляции  и
   backspace.
 * esc_sources.xml:   в  типе  "C/C++"  используем  свое   значение
   stopchar.
 * esc_xml.xml: файлы *.hrc (colorer hrc) тоже в формате XML.
 * smartkey/tab   и  smartkey/backspace  работают  и  при   наличии
   выделения.
 * Размер dll увеличился с 73728 до 77824.

1.9/10.07.2002
~~~~~~~~~~~~~~
 ! Падение плагина при работе пользователя в редакторе, если  [ESC]
   был отключен в настройках.
 + Можно подключать определения типов не  только  из  esc.xml.  Для
   этого нужно использовать параметр тега type, который  называется
   include (см. readme).
 * Esc.xml:  все  настройки  типов  разлетелись  по  разным  файлам
   (esc_abstract.xml,       esc_binary.xml,        esc_message.xml,
   esc_others.xml,  esc_sources.xml,   esc_tex.xml,   esc_text.xml,
   esc_xml.xml),  которые  должны  находиться  рядом  с  esc.dll  в
   подкаталоге Cfg.
 * esc_sources.xml: тип Perl распространяется теперь на *.pm, *.pod
   и *.pls. Для него установим принудительно размер табуляции  в  4
   символа - смысл  этого  объясняется  в  комментарии  к  типу  от
   Alexander Myodov.
 * esc_sources.xml:  для  типа  C#  запретим  замену  табуляции  на
   пробелы - cмысл этого запрета объясняется в комментарии  к  типу
   от Alexander Myodov.
 * esc_binary.xml: *.fmp   считается  "Binary  executable   files",
   потому что под такую маску попадают  плагины  второго  уровня  к
   плагину FarMail.
 * esc_others.xml: тип "others :)" распространяется и  на  *.fml  -
   языковые файлы для плагинов второго уровня к FarMail.
 + Esc.xml:   в    конце    файла   делается   попытка   подключить
   пользовательские настройки из файла esc_user.xml, который должен
   находиться   в   каталоге   [ESC].   Смысл   этого   подключения
   проясняется в FAQ#3.
 + Можно вешать макросы на кнопки мыши.
 + Можно перед выполнением макроса разрешить Фару выполнить команду
   самому (см. описание macro/stop).
 * Размер dll увеличился с 69632 до 73728.

1.8/22.06.2002
~~~~~~~~~~~~~~
 Успешной защите диплома посвящается... :*)
 + Опция lockfile - позволяет  запретить  изменения  редактируемого
   файла сторонними процессами.
 + Esc.xml: "Sources" и его наследники - опция lockfile включена.
 + Можно переопределять  определенные  ранее  типы  (подробности  в
   readme).
 * При включенном автоматическом  перечитывании  esc.xml  настройки
   перечитываются  при  любом  изменении  даты  файла.  Раньше  они
   перечитывались только, если дата была новее.
 * Размер dll увеличился с 65536 до 69632.

1.7/08.06.2002
~~~~~~~~~~~~~~
 + [ESC] теперь  загружается  автоматически  при  старте  FAR  (для
   любознательных  -  собирается  с  флагом  PF_PRELOAD).  Если  вы
   пользовались  предыдущими  версиями  плагина,  то  рекомендуется
   очистить кэш плагинов (Far\ClearPluginsCache.bat).
 + Поддержка команды $Date в  пользовательских  макросах  -  теперь
   макросы  полностью   идентичны   макросам   FAR.   Сделано   при
   непосредственном участии Валентина Скирдину  <vskirdin@@mail.ru>
   (в ход пошла  тяжелая  артиллерия  :),  за  что  ему  -  большое
   спасибо! Напоминаю, что  псевдоклавиша  $Date  имеет  параметры,
   которые заключаются в кавычки -  т.к.  конфигурационный  файл  у
   [ESC] в формате XML, вы должны  вместо  символа  '"'  (0x22)  по
   правилам XML писать "&quot;" (без кавычек).
 * usermacro/value по умолчанию "off".
 + Экспортируется функция CreateMultiMacro.
 * Esc.xml: "other :)" - автосвертка отключена.

1.6/02.06.2002
~~~~~~~~~~~~~~
 ! Редактор: при показе меню плагина в пунктах, которые  шли  после
   36-го, выводился мусор, если был отключен показ масок файлов.
 + esc_ukr.lng от Michael Zhuravsky <Zhuravsky2@Yandex.ru>.
 + Экспортируется функция CloneMacro.

1.5/17.05.2002
~~~~~~~~~~~~~~
Что-то я смотрю - esc.xml какой-то  самостоятельной  жизнью  живет.
Непорядок  :-)  С  этой  версии  изменения   esc.xml   тоже   будут
фиксироваться в history.
 ! Падение  плагина   при  попытке  обратиться   к   несуществующим
   параметрам  совсем   пустых   тегов   (исправлено   Константином
   Ступником, как автором парсера xml).
 * Esc.xml: Символ '<' дополняется символом '>' только  в  "XML"  и
   "HTML".
 + Esc.xml: "LaTeX" (с подачи Alexander Myodov <honeyman@uic.nnov.ru>).
 + Esc.xml: "C#"/tabsize=4 (от Alexander Myodov).
 * Esc.xml: "Message" распространяется и на *.eml, *.nws.
 * Esc.xml: "Binary executable files" распространяется и на *.bav -
   подключаемые модули к TheBAT.
 - Старый вариант конфигурационного файла, который  был  до  версии
   1.1, перестал поддерживаться.
 + Поддержка набора  пользовательских  макросов  для  каждого  типа
   файла. Написано по мотивам идей и при  непосредственном  участии
   Вадима  Егорова   (http://zg.yo.lv,   zg@matrica.apollo.lv).   В
   принципе, можно считать, что ответственным за выпуск был он, а я
   так... на подхвате :-) В качестве  демонстрации  возможностей  -
   см. макрос, повешенный на Ctrl-D в типе  "Message".  Подробности
   см. в описании тега usermacro.
 + Я решил  не  жадничать,  поэтому  [ESC]  экспортирует  следующие
   функции: CreateMacro, DeleteMacro, IsMacroOK и PostMacro.
 + Esc.xml: "Unix Sources" (с подачи Вадима Егорова).
 * Размер dll увеличился с 61440 до 65536.

1.4/05.05.2002
~~~~~~~~~~~~~~
 ! Проблемы   с   выделением   при   использовании   smartkey/home.
   Исправление будет заметно только в Far 1.70 build 1343  и  выше,
   т.к. только там появился соответствующий сервис.
 + Опция  lockmode  -  позволяет   запретить  изменение  файла.   В
   стандартном Esc.xml  теперь  по  умолчанию  запрещено  изменение
   двоичных   файлов   (т.к.   редактор   Фара   предназначен   для
   редактирования только текстовых  файлов).  Опция  работоспособна
   только под Far 1.70 build 1318 и выше.
 + Опция table/name - позволяет  выбрать  пользовательскую  кодовую
   таблицу не по номеру, а по имени.
 * Изменена логика обработки start_b/end_b - символ добавляется  не
   только, когда под курсором пробел или табуляция, но и когда  под
   курсором находится символ, содержащийся в end_b.
 * Размер dll увеличился с 57344 до 61440.

1.3/22.03.2002
~~~~~~~~~~~~~~
 ! Не обрабатывался тег  <table  ...  />  (работала  только  запись
   формата в старом - до 1.2 - виде).
 ! Проблемы   с   наследованием   margin/autowrap,   kill/p_end   и
   kill/forcekel.
 * Для работы требуется Far 1.70 beta 4 (build 1282) и выше.

1.2/05.02.2002
~~~~~~~~~~~~~~
 ! Падение при выходе из FAR (наблюдалось, к счастью , не  у  всех,
   иначе вы бы меня замучили :).
 ! Не учитывалась взаимосвязь некоторых параметров при их изменении
   при помощи SetEditorOption.
 + Опция p_minuses - уточняет поведение killspace для строк, равных
   "-- ".
 + Новый формат конфигурационного файла. Рекомендуется прочитать  в
   документации описание этого  формата,  т.к.  названия  некоторых
   переменных   были    изменены.    Старый    формат    продолжает
   поддерживаться, но не смотря на это  лучше  все-таки  переделать
   ваши esc.xml под новый стиль, т.к. я не гарантирую того, что эта
   поддержка останется навсегда.
 * Размер dll увеличился с 49152 до 57344.

1.1/21.12.2001
~~~~~~~~~~~~~~
 ! При наследовании не учитывалась взаимосвязь killspace и p_end.
 ! Стас Механошин уточняет поведение Enter и Delete  при  обработке
   цитирования (p_quote).
 ! Не совсем корректно обрабатывался killemptylines в случае, когда
   в конце файла была только одна пустая строка.
 ! Не учитывалась взаимосвязь некоторых параметров при их изменении
   при помощи SetEditorOption.
 + Опция forcekel - влияет на обработку killemptylines.
 * smarttab теперь отвечает только за обработку tab и shift-tab.
 + smartbs - включает обработку клавиши backspace.
 + quoteeol  -  уточняет  обработку  клавиши  Enter  при  работе  с
   цитированием (p_quote). Сделано с подачи Стаса Механошина.
 * В качестве доказательства того, что "идея  работает",  в  readme
   помещены ссылки на плагины, которые  так  или  иначе  используют
   сервис от [ESC].

1.0/06.11.2001
~~~~~~~~~~~~~~
 ! Плагин некорректно срабатывал в некоторых  случаях  на  поднятие
   клавиши. Нашел/исправил это Стас Механошин <rampitec@tu.spb.ru>.
 + Опции smarttab и lines. Первая из них включает умную табуляцию и
   backspace, а вторая уточняет работу первой.
 + Опция smarthome -  изменяет  логику  поведения  клавиши  home  -
   курсор будет устанавливаться не на первую позицию в строке, а на
   первую непробельную позицию.
 + Опция skippath - указывает, учитывать ли путь  при  сравнении  с
   маской.
 + Опция p_quote - обрабатывать цитирование, будет полезна, если вы
   используете FAR в  качестве  редактора  писем.  Собственно,  мои
   усилия свелись к добавлению в  esc  только  кода  по  считыванию
   данной опции,  а  непосредственно  ее  обработка  осуществляется
   кодом от Стаса Механошина, поэтому все  претензии  по  обработке
   цитирования направляйте ему.
 + Опция inherit. Точнее, это даже  не  опция,  а  самая  настоящая
   команда. Делает она  именно  то  самое,  что  вы  и  подумали  -
   приказывает унаследовать характеристики определенного ранее типа
   файлов.
 + Опции  savepos  и  minlines.  Первая  из  них  управляет  опцией
   редактора "Сохранять позицию файла", а  вторая  уточняет  работу
   первой. Использование данных опций имеет смысл  только  для  FAR
   1.70 build 1032 и выше  (на  момент  выхода  плагина  этот  билд
   доступен только разработчикам и тестерам, всем, не относящимся к
   их числу следует дождаться выхода 4-й беты FAR 1.70).
 + Опции addsymbol,  addsym_s,  addsym_e,  addsym_s_b,  addsym_e_b.
   Включение первой заставляет плагин при  выполнении  определенных
   условий автоматически  добавлять  заранее  заданный  в  addsym_e
   (addsym_e_b) символ после каждого набранного  символа,  если  он
   упомянут в  addsym_s  (addsym_s_b).  Звучит  не  очень  понятно,
   поэтому проще все потрогать руками и  убедиться  на  практике...
   какая  же  это  удобная   штука   :-)   Дистрибутивный   esc.xml
   проиллюстрирует это - в нем содержатся настройки для  реализации
   "автоскобок", "автокавычек" и добавления  пробела  после  набора
   запятой.
 + Другие плагины  могут  изменять  настройки  [ESC]  для  текущего
   редактора.
 * Размер dll увеличился с 32768 до 49152.

0.9/28.09.2001
~~~~~~~~~~~~~~
 ! Не удалялись пробелы и табуляция из последней строки файла, если
   использовались параметры eol и killspace одновременно.
 ! Не срабатывала автосвертка при наборе русских (и  тому  подобных
   национальных) букв.
 + Параметр autowrap - позволяет отключить  автосвертку  средствами
   [esc], предоставляя при этом другим плагинам всю необходимую для
   свертки информацию. Например, это пригодится  для  тех  случаев,
   когда  автосвертка  не  нужна,  но  есть  желание   пользоваться
   плагином ReWrap Стаса Механошина (rampitec@tu.spb.ru).
 + Опция "Показывать маски файлов в меню" -  позволяет  убрать  или
   включить показ масок в меню выбора типа  файла  (как  оказалось,
   это новшество предыдущей версии плагина понравилось не всем). По
   умолчанию включена.

0.8/12.09.2001
~~~~~~~~~~~~~~
 ! Не проверялось изменение esc.xml при смене  настроек  для  файла
   вручную через меню в редакторе.
 ! Логическая ошибка - сначала менялось состояние  "пробелы  вместо
   табуляции", а только потом размер табуляции.
 ! Автосвертка  срабатывала  при  нажатии  на  кнопки,  которые  не
   генерируют  символы   (например,   кнопка   Home   на   цифровой
   клавиатуре).
 ! Если тип файла был изменен  через  меню  смены  типа  файла,  то
   происходило восстановление настроек  по  умолчанию  для  данного
   типа файла при его сохранении.
 + В меню смены типа файла звездочкой ('*') отмечается  тот  пункт,
   которому файл соответствует по маске.
 + В меню выбора типа файла кроме названия типа показывается еще  и
   соответствующая маска.
 + Размер автосвертки можно указывать в процентах  от  ширины  окна
   редактора.
 + Параметр p_end, при помощи которого  можно  отключать  обработку
   клавиш end и shift-end.

0.7/09.08.2001
~~~~~~~~~~~~~~
 ! Не обрабатывались нажатия на end и shift-end, если  клавиша  end
   находилась на цифровой клавиатуре.
 + Можно указывать кодировку, которая должна  быть  выставлена  для
   новых файлов по умолчанию. Фар для  таких  файлов  устанавливает
   кодировку OEM, а теперь вы  можете  отменить  это  правило!  Эта
   возможность действует только в FAR 1.70 build 886 и выше.

0.6/05.08.2001
~~~~~~~~~~~~~~
 ! Отловлен  мерзкий  жук:  могли   случаться  неприятности  в  том
   случае, когда esc.xml изменялся, а в  это  же  самое  время  был
   открыт один или  несколько  внутренних  редакторов  FAR.  Сейчас
   трагических последствий при такой операции быть  не  должно,  но
   все  равно  рекомендуется  при  изменении  esc.xml  закрыть  все
   редакторы, а потом открыть снова нужные файлы на редактирование.
 ! При  использовании   параметра  eol  в   файл   при   сохранении
   добавлялась пустая строка.
 + В readme появился ответ на о-о-очень часто задаваемый вопрос.
 + Можно вручную изменить настройки для текущего файла в  редакторе
   через меню плагина, которое можно вызвать через F11.
 * Размер dll увеличился с 24576 до 32768.

0.5/23.07.2001
~~~~~~~~~~~~~~
 + Настройка для символов конца строки.

0.4/16.07.2001
~~~~~~~~~~~~~~
 ! Теперь корректно работаем с кодировками типа EBCDIC.
 + Благодаря настойчивости Стаса  Механошина  <rampitec@tu.spb.ru>,
   подкрепленной для убедительности соответствующим  кодом,  теперь
   мы умеем делать автосвертку, причем не простую, а с  оптимальным
   заполнением! Стандартный плагин AutoWrap можно смело  отправлять
   на пенсию :-)
 + Плагин  теперь  умеет  делиться  информацией  о  настройках  для
   нужного типа файлов с другими плагинами.  Как  это  выглядит  на
   практике вы можете увидеть на плагине  ReWrap  Стаса  Механошина
   (взять его можно, например, на plugring.farmanager.com).
   Описание  доступных  настроек   есть   в   readme,   пример   их
   использования можно увидеть в том же ReWrap (он распространяется
   вместе с исходными текстами).
 + Если для редактируемого файла включена опция killspace,  то  при
   нажатии end или shift-end происходит удаление пробелов/табуляции
   на конце текущей строки.
 * Размер dll увеличился с 24576 до 28672.

0.3/09.07.2001
~~~~~~~~~~~~~~
 ! При включенной опции killemptylines  в  файле,  содержащем  одну
   непустую строку, эта строка с успехом удалялась :-(

0.2/05.07.2001
~~~~~~~~~~~~~~
 + Настройка для удаления лишних пробелов/табуляции в конце строк.
 + Настройка для удаления лишних пустых строк в конце файла.

0.1/04.07.2001
~~~~~~~~~~~~~~
 Я подумал: "А почему бы и нет?"