LuaSpell — проверка орфографии в редакторе

Здесь выкладываются готовые к использованию макросы и скрипты.
User avatar
Aidar
Posts: 541
Joined: Mon 09 Mar, 2009 22:43
Location: Kazan
Has thanked: 8 times
Been thanked: 7 times
Contact:

LuaSpell — проверка орфографии в редакторе

Post by Aidar »

LuaSpell — пакет для проверки орфографии в редакторе.

Пакет поддерживает словари, используемые Hunspell, а также словари OOoUserDict1 (пользовательский словарь OpenOffice) и WordList (список слов).
Для Hunspell‑словарей используется библиотека hunspell из проекта luapower.

На PlugRing также выложены:
  • LuaSpell-hunspell-1.3.2.7z — библиотека hunspell v.1.3.2.
  • LuaSpell-Dictionaries.7z — русский (с "ё") и английский словари в кодировке UTF‑8.
Перед установкой прочтите LuaSpell\doc\Install.rus.

Последнюю версию библиотеки hunspell можно также скачать здесь.

Внимание:
Все файлы словарей должны быть в кодировке UTF-8 без BOM,
а в первой строке aff-файлов нужно прописать "SET UTF-8" (без кавычек).

Текущая версия: PlugRing.
Ссылки:
Описание, GitHub, tags, zipball, master.zip.
User avatar
Aidar
Posts: 541
Joined: Mon 09 Mar, 2009 22:43
Location: Kazan
Has thanked: 8 times
Been thanked: 7 times
Contact:

Re: LuaSpell — проверка орфографии в редакторе

Post by Aidar »

Latest post of the previous page:

1) Да, с поправкой: на самом деле используются InnerSet, StartSet - для определения текущего слова, CheckSet - для определения слов в строке редактора.
2-3) Проверка идёт по словарям в той последовательности, в какой они указаны в конфигурации. Для слова выполняется проверка "активности" словаря, соответствия слова образцу find и spell-проверке слова. Если слово проходит spell-проверку, смотрится следующий словарь, иначе раскрашивается слово и проверка слова заканчивается.
4) По приведённым find:
Для tex-словаря всё равно останется проверка по hunspell-словарю, и даже если слово будет в словаре, в английском словаре может не оказаться этого слова. Кроме того, для рус. и англ. языков использование таких find приведёт к тому, что будут проверяться все слова, имеющие хоты бы одну букву соответствующего алфавита.

Ситуация в том, что для tex-словаря:
- не нужна spell-проверка,
- если слово уже удовлетворяет find, необходимо прерывание процесса проверки, чтобы избежать ненужной проверки по англ. словарю.

Как раз это (и, желательно, не только это) необходимо мне реализовать.
iva
Posts: 128
Joined: Sat 02 Nov, 2013 21:32
Been thanked: 3 times

Re: LuaSpell — проверка орфографии в редакторе

Post by iva »

Спасибо за разъяснения.
Может быть стоит предусмотреть два варианта с прерыванием. Один когда, слово удовлетворяющее find, заведомо считается правильным (как в случае с TeX) и когда оно считается неправильным (например, слово состоящее из смеси русских и английских букв). Впрочем, первый вариант реализуется указанием стандартного цвета для раскраски.
User avatar
Aidar
Posts: 541
Joined: Mon 09 Mar, 2009 22:43
Location: Kazan
Has thanked: 8 times
Been thanked: 7 times
Contact:

Re: LuaSpell — проверка орфографии в редакторе

Post by Aidar »

Aidar wrote:...пока есть вариант с поддержкой пользовательских не hunspell-словарей и пользовательской spell-функцией.
Выложил на PlugRing.

Конфигурация для tex теперь включена в дистрибутив: см. файл LuaSpell\LuaSpell.cfg.tex.example. Файлы tex.dic и tex.aff можно удалить.
iva
Posts: 128
Joined: Sat 02 Nov, 2013 21:32
Been thanked: 3 times

Re: LuaSpell — проверка орфографии в редакторе

Post by iva »

Спасибо. В принципе, той функциональности, которая уже реализована, мне вполне хватает.
Но мысль не остановишь. Поэтому хочу ещё немного обсудить.
Как я понимаю, отбрасывание слов, состоящих из одного символа, можно было бы не включать в script, а настраивать при помощи find c конструкцией {2,}. Вообще, функционал поиска по find мог бы использоваться полнее, если бы применять find не к слову, а к чуть более длинной последовательности, включающей символы-разделители до и после слова. Тогда можно было бы отслеживать, например, отсутствие пробела после знака препинания или перед открывающейся скобкой, проверять сокращения, запросы troff и т.д. Да и конструкции ТеХа можно было бы обработать более полноценно.
User avatar
Aidar
Posts: 541
Joined: Mon 09 Mar, 2009 22:43
Location: Kazan
Has thanked: 8 times
Been thanked: 7 times
Contact:

LuaSpell — проверка орфографии в редакторе

Post by Aidar »

iva wrote:Спасибо. В принципе, той функциональности, которая уже реализована, мне вполне хватает.
Но мысль не остановишь. Поэтому хочу ещё немного обсудить.
Как я понимаю, отбрасывание слов, состоящих из одного символа, можно было бы не включать в script, а настраивать при помощи find c конструкцией {2,}. Вообще, функционал поиска по find мог бы использоваться полнее, если бы применять find не к слову, а к чуть более длинной последовательности, включающей символы-разделители до и после слова. Тогда можно было бы отслеживать, например, отсутствие пробела после знака препинания или перед открывающейся скобкой, проверять сокращения, запросы troff и т.д. Да и конструкции ТеХа можно было бы обработать более полноценно.
1. В текущей версии есть недостаток: в не-tex-файле, "слова", начинающиеся с BackSlash будут подчёркиваться, а при замене (из списка замен) BackSlash будет пропадать.
2. Насчёт длины слова - да. надо бы вынести в конфигурацию, как впрочем и "очистку" слова.
Пока что анализируемое слово является одним и тем же для всех словарей.
Думаю, надо реализовать отдельную пре- и пост-обработку слова для каждого словаря.
3. В случае tex думаю, надо поступить проще:
- Скопируйте LuaSpell.lua в TexSpell.lua.
- Найдите строку unit.ScriptName = "LuaSpell"
и поменяйте её на unit.ScriptName = "TexSpell".
- Файл конфигурации переименуйте в TexSpell.cfg.
Теперь можете экспериментировать с настройкой конфигурации. Только не забудьте поменять MacroKeys в TexSpell.cfg.
А для LuaSpell можете использовать конфигурацию по умолчанию или поставить конфигурацию LuaSpell.cfg.grk.example (переименовав в LuaSpell.cfg).
4. Идей много, посмотрим, что получится реализовать.
iva
Posts: 128
Joined: Sat 02 Nov, 2013 21:32
Been thanked: 3 times

Re: LuaSpell — проверка орфографии в редакторе

Post by iva »

Набрался нахальства и изменил Ваш LuaSpell.lua (строчки помечены -- IVA)
Ввёл новый "язык" для подсвечивания ситуаций, когда пропущен пробел.
Да, посчитал удобнее хранить конфигурацию вместе со словарями.
Attachments
LuaSpell-Iva.7z
(5.39 KiB) Downloaded 82 times
User avatar
Aidar
Posts: 541
Joined: Mon 09 Mar, 2009 22:43
Location: Kazan
Has thanked: 8 times
Been thanked: 7 times
Contact:

Re: LuaSpell — проверка орфографии в редакторе

Post by Aidar »

iva wrote:Набрался нахальства и изменил Ваш LuaSpell.lua (строчки помечены -- IVA)
Ввёл новый "язык" для подсвечивания ситуаций, когда пропущен пробел.
Да, посчитал удобнее хранить конфигурацию вместе со словарями.
Это не нахальство, а "желательный" процесс разработки :) .
Изучил ваш код и решил сделать так (чтобы не изменять словари для hunspell): в словарь "добавил" новый метод match, в который передаётся словарь, слово, строка и позиция слова в строке. Для tex это позволит убрать BackSlash из CharEnum и заменить в словаре строку find на метод match.

User avatar
Aidar
Posts: 541
Joined: Mon 09 Mar, 2009 22:43
Location: Kazan
Has thanked: 8 times
Been thanked: 7 times
Contact:

Re: LuaSpell — проверка орфографии в редакторе

Post by Aidar »

Выложил на PlugRing.

По крайней мере теперь можно проверять отдельно слово и его строку-контекст.
Подправил конфигурацию для tex (но словарь для spc не добавлял, можно переделать аналогично tex).
iva
Posts: 128
Joined: Sat 02 Nov, 2013 21:32
Been thanked: 3 times

Re: LuaSpell — проверка орфографии в редакторе

Post by iva »

Конечно, возможности проверки расширились, НО:
1) пока не вижу какой из этого можно извлечь прок;
2) файл конфигурации стал сложным, а от пользователя, желающего произвести настройку, требуются умения программиста. Но поскольку такой пользователь может "влезть" и в скрипт, теряется смысл выделения файла настроек.
Моя же модификация Вашего скрипта для настройки требовала только владения поиском с регулярными выражениями.
User avatar
Aidar
Posts: 541
Joined: Mon 09 Mar, 2009 22:43
Location: Kazan
Has thanked: 8 times
Been thanked: 7 times
Contact:

Re: LuaSpell — проверка орфографии в редакторе

Post by Aidar »

iva wrote:Конечно, возможности проверки расширились, НО:
1) пока не вижу какой из этого можно извлечь прок;
2) файл конфигурации стал сложным, а от пользователя, желающего произвести настройку, требуются умения программиста. Но поскольку такой пользователь может "влезть" и в скрипт, теряется смысл выделения файла настроек.
Моя же модификация Вашего скрипта для настройки требовала только владения поиском с регулярными выражениями.
1) Для вас прока нет, т.к. вы уже изменили файл скрипта под себя :) . Как, впрочем, и я изменил файл скрипта под себя.
2) Смысл файла конфигурации - дать возможность настройки файла скрипта под себя в предоставленных скриптом рамках. Кому-то будет достаточно поменять find, кому-то захочется расширенной настройки. Если кто-то желает "управлять" скриптом - тот изучает lua и изменяет скрипт или реализует свой вариант.
User avatar
Wave
Posts: 1887
Joined: Thu 04 Aug, 2005 18:47
Has thanked: 15 times
Been thanked: 26 times

Re: LuaSpell — проверка орфографии в редакторе

Post by Wave »

ФАР 3972 x86. Попробовал скрипт. 3.1.3.0 пашет, 3.1.4.0 выдаёт какие-то зверские . Не знаю, кто виноват, но разница исключительно в содержимом modules и scripts.
Пользуюсь ФАРом больше 20 лет © собирательный.
User avatar
Aidar
Posts: 541
Joined: Mon 09 Mar, 2009 22:43
Location: Kazan
Has thanked: 8 times
Been thanked: 7 times
Contact:

Re: LuaSpell — проверка орфографии в редакторе

Post by Aidar »

А пункт 4 из doc\Install.rus выполняли?
  1. 4. Если нет файла конфигурации макроса
  2.  
  3.    %FarProfile%\data\macros\LuaSpell.cfg
  4.  
  5.    можно скопировать туда один из примеров
  6.  
  7.    %FarProfile%\Macros\scripts\LuaSpell\LuaSpell.cfg.???.example
  8.  
  9.    переименовав его в LuaSpell.cfg
Ошибка в конфигурации по умолчанию. Но примеры конфигураций правильные, поэтому при их использовании ошибка не должна возникнуть.
User avatar
John Doe
Бюрократ
Posts: 13862
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

Re: LuaSpell — проверка орфографии в редакторе

Post by John Doe »

Aidar
Это наверно лучше красным выводить?
User avatar
Wave
Posts: 1887
Joined: Thu 04 Aug, 2005 18:47
Has thanked: 15 times
Been thanked: 26 times

Re: LuaSpell — проверка орфографии в редакторе

Post by Wave »

Aidar, да, выполнял. Переименовывал LuaSpell.cfg.tex.example в LuaSpell.cfg
Кроме того, сказано в том же пункте 4
При отсутствии файла конфигурации будет использоваться
конфигурация по умолчанию, заданная в самом файле макроса (DefCfgData).
Это я в смысле, что и с переименованием, и без возникает ошибка.
Пользуюсь ФАРом больше 20 лет © собирательный.
User avatar
John Doe
Бюрократ
Posts: 13862
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

Re: LuaSpell — проверка орфографии в редакторе

Post by John Doe »

У меня работает (c LuaSpell.cfg.grk.example). Но его же надо положить в правильную папку.

О пункте 4 автор уже написал что ошибка.
User avatar
John Doe
Бюрократ
Posts: 13862
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

Re: LuaSpell — проверка орфографии в редакторе

Post by John Doe »

Из [url=http://forum.farmanager.com/viewtopic.php?p=118520#p118520]шапки[/url] wrote:Последнюю версию библиотеки можно скачать здесь.
Если качать здесь, то потребуется переименовать dll.
Может быть не стоит туда ссылаться, ведь dll есть и на плагринге.
Install.rus wrote:

Code: Select all

1. Скопируйте файлы каталога ~Lib~ из скачанного архива
   в каталог общих dll, например, в каталог FAR Manager.
Стоит уточнить, что библиотека отдельным архивом.

Ещё на плагринге есть словари (без описания).
Ни в шапке, ни в Install.rus об этом не говорится.
Post Reply

Return to “Полезные макросы и скрипты”