Мне в FAR'е очень не хватало проверки орфографии.
Существует плагин gSpell Семенова Алексея. Но он привязаны к платному офисному пакету.
Есть, также, некоторые другие плагины подобного назначения. Но всех их
объединяет то, что они не развиваются, их исходные коды закрыты.
В конце 2005 года я взялся за написание FarSpell.
В начале, я попытался подключить
Aspell. Библиотека
оказалась слишком громоздкая. Были некоторые неясности по поводу
её использования.
Потом я увидел MySpell и Hunspell из
OpenOffice.Org.
И было решено подключить Hunspell вместо Aspell. Почему именно Hunspell?
Потому что он развивается, а MySpell разработчики, скорее всего, забросили.
Для того чтобы ускорить разработку FarSpell, была взята
библиотека FARPlus,
которая является объектной обёрткой FAR Plugin API.
Это автоматически определило, что FarSpell будет написан на C++.
В процессе разработки FarSpell было внесено множество изменений
и дополнений в FARPlus. В основном это исправление старых ошибок,
подключение нововведений Plugin API, поддержка Unicode строк,
которая так необходима для взаимодействия с библиотекой проверки
орфографии, добавлена поддержка компилятора GNU project C compiler.
Как и к любому другому плагину к FarSpell'у предъявлено требование:
разумное взаимодействии с пользователем.
Это сообщения, диалоги, интуитивный интерфейс.
На мой взгляд, как разработчика плагинов, использование диалоговых
возможностей Plugin API нерационально. Для вывода сообщений сойдут
классы из FARPlus. А для создания диалогов был выбран DialogGenerator
от Семенова Алексея (автора gSpell.) Но DialogGenerator имел те же
проблемы что и gSpell (отсутствие развития и исходников.) Было решено
переизобрести велосипед и... получился DialogExpress.
DialogExpress адресован разработчикам интерфейса под FAR Manager.
Он состоит из нескольких частей:
- DialogRes
Библиотека для чтения описания диалогов на языке аналогичном
DialogGenerator. Сердцем этой библиотеки является парсер,
который автоматически создаётся из грамматики с помощью
lemon.
DialogRes написан на чистом C и вобрал в себя многое из
SQLite.
- DEx_View
Плагин для визуализации диалоговых ресурсов: как будто это
настоящий плагин, а не диалог от него.
Перед показом диалога можно выбрать файл с нужным языком строк
(благодаря
FarLNG от Warp ItSelf.) А клавиша F1 вызывает статью для выбранного
диалога из файла справки в текущей папке.
- Meta Dialog
Программа, которая конвертирует диалоговые ресурсы в формате
DialogRes в любой другой формат по заданному шаблону.
Сейчас есть образцы шаблонов для C и C++.
Для описания шаблонов был разработан простейший макро-язык
со вставкой переменных, примитивными условиями и жёстко
ограниченными циклам. Никакого XML!