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

Здесь выкладываются готовые к использованию макросы и скрипты.
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 » Thu 08 May, 2014 06:52

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: 126
Joined: Sat 02 Nov, 2013 21:32
Been thanked: 3 times

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

Post by iva » Thu 08 May, 2014 09:34

Спасибо за разъяснения.
Может быть стоит предусмотреть два варианта с прерыванием. Один когда, слово удовлетворяющее 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 » Fri 09 May, 2014 12:57

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

Конфигурация для tex теперь включена в дистрибутив: см. файл LuaSpell\LuaSpell.cfg.tex.example. Файлы tex.dic и tex.aff можно удалить.

iva
Posts: 126
Joined: Sat 02 Nov, 2013 21:32
Been thanked: 3 times

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

Post by iva » Sat 10 May, 2014 18:54

Спасибо. В принципе, той функциональности, которая уже реализована, мне вполне хватает.
Но мысль не остановишь. Поэтому хочу ещё немного обсудить.
Как я понимаю, отбрасывание слов, состоящих из одного символа, можно было бы не включать в 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 » Sat 10 May, 2014 19:23

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: 126
Joined: Sat 02 Nov, 2013 21:32
Been thanked: 3 times

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

Post by iva » Sun 11 May, 2014 06:40

Набрался нахальства и изменил Ваш LuaSpell.lua (строчки помечены -- IVA)
Ввёл новый "язык" для подсвечивания ситуаций, когда пропущен пробел.
Да, посчитал удобнее хранить конфигурацию вместе со словарями.
Attachments
LuaSpell-Iva.7z
(5.39 KiB) Downloaded 46 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 » Sun 11 May, 2014 07:36

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 » Sun 11 May, 2014 11:26

Выложил на PlugRing.

По крайней мере теперь можно проверять отдельно слово и его строку-контекст.
Подправил конфигурацию для tex (но словарь для spc не добавлял, можно переделать аналогично tex).

iva
Posts: 126
Joined: Sat 02 Nov, 2013 21:32
Been thanked: 3 times

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

Post by iva » Sun 11 May, 2014 18:09

Конечно, возможности проверки расширились, НО:
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 » Sun 11 May, 2014 20:09

iva wrote:Конечно, возможности проверки расширились, НО:
1) пока не вижу какой из этого можно извлечь прок;
2) файл конфигурации стал сложным, а от пользователя, желающего произвести настройку, требуются умения программиста. Но поскольку такой пользователь может "влезть" и в скрипт, теряется смысл выделения файла настроек.
Моя же модификация Вашего скрипта для настройки требовала только владения поиском с регулярными выражениями.
1) Для вас прока нет, т.к. вы уже изменили файл скрипта под себя :) . Как, впрочем, и я изменил файл скрипта под себя.
2) Смысл файла конфигурации - дать возможность настройки файла скрипта под себя в предоставленных скриптом рамках. Кому-то будет достаточно поменять find, кому-то захочется расширенной настройки. Если кто-то желает "управлять" скриптом - тот изучает lua и изменяет скрипт или реализует свой вариант.

User avatar
Wave
Posts: 1771
Joined: Thu 04 Aug, 2005 18:47
Has thanked: 4 times
Been thanked: 16 times

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

Post by Wave » Thu 03 Jul, 2014 17:51

ФАР 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 » Thu 03 Jul, 2014 18:06

А пункт 4 из doc\Install.rus выполняли?
  1. 4. Если нет файла конфигурации макроса
  2.    %FarProfile%\data\macros\LuaSpell.cfg
  3.    можно скопировать туда один из примеров
  4.    %FarProfile%\Macros\scripts\LuaSpell\LuaSpell.cfg.???.example
  5.    переименовав его в LuaSpell.cfg
Ошибка в конфигурации по умолчанию. Но примеры конфигураций правильные, поэтому при их использовании ошибка не должна возникнуть.

User avatar
John Doe
Бюрократ
Posts: 12538
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 240 times

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

Post by John Doe » Thu 03 Jul, 2014 18:09

Aidar
Это наверно лучше красным выводить?

User avatar
Wave
Posts: 1771
Joined: Thu 04 Aug, 2005 18:47
Has thanked: 4 times
Been thanked: 16 times

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

Post by Wave » Thu 03 Jul, 2014 18:17

Aidar, да, выполнял. Переименовывал LuaSpell.cfg.tex.example в LuaSpell.cfg
Кроме того, сказано в том же пункте 4
При отсутствии файла конфигурации будет использоваться
конфигурация по умолчанию, заданная в самом файле макроса (DefCfgData).
Это я в смысле, что и с переименованием, и без возникает ошибка.
Пользуюсь ФАРом больше 20 лет © собирательный.

User avatar
John Doe
Бюрократ
Posts: 12538
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 240 times

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

Post by John Doe » Thu 03 Jul, 2014 18:19

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

О пункте 4 автор уже написал что ошибка.

User avatar
John Doe
Бюрократ
Posts: 12538
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 240 times

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

Post by John Doe » Thu 03 Jul, 2014 18:29

Из [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 об этом не говорится.

User avatar
Wave
Posts: 1771
Joined: Thu 04 Aug, 2005 18:47
Has thanked: 4 times
Been thanked: 16 times

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

Post by Wave » Thu 03 Jul, 2014 18:49

С LuaSpell.cfg.grk.example тоже не сработал. Правильная — это какая? У меня эти скрипты и конфиги лежат в Profile\Macros\scripts\LuaSpell
Пользуюсь ФАРом больше 20 лет © собирательный.

Post Reply

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