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
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

Latest post of the previous page:

Aidar wrote: 4. Предполагаю реализовать добавление в меню плагинов, чтобы можно было назначать макросы обычным образом.
Вместо пункта в меню плагинов можно читать комбинации из файла конфигурации, или из БД.
Или сделать скрипт модулем, и в макросах обращаться через require
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

Aidar
Обнаружилось ложное срабатывание в строках вида “Latin-кириллица” — часть “Latin” проверяется, очевидно, по русскому словарю и подсвечивается как неправильное (красным фоном).
А ведь подобные конструкции нередко бывают нужны в двуязычных текстах профессиональной тематики с активными заимствованиями терминологии из английского.
Фар есть инструмент, а не нянька. © 2009 DrKnS
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 »

HaRT wrote:AidarОбнаружилось ложное срабатывание в строках вида “Latin-кириллица” — часть “Latin” проверяется, очевидно, по русскому словарю и подсвечивается как неправильное (красным фоном).
А ведь подобные конструкции нередко бывают нужны в двуязычных текстах профессиональной тематики с активными заимствованиями терминологии из английского.
В LuaSpell.cfg добавьте во все find символы ^ и $ аналогично .
Только перестанет работать проверка на словах из смешанных букв!
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

Aidar wrote: перестанет работать проверка на словах из смешанных букв
Это как? Можно пример (было/стало)?
Фар есть инструмент, а не нянька. © 2009 DrKnS
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 »

HaRT wrote:
Aidar wrote: перестанет работать проверка на словах из смешанных букв
Это как? Можно пример (было/стало)?
.
Но у меня "findинг" подкрасился как гибридный из-за использования Colorer-схем с поддержкой подкраски таких слов.
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

Aidar, ага, спасибо, ясно.
Предполагаете ли включить фиксы для BOM в словаре и для смешанно-составных слов в основной код?
Фар есть инструмент, а не нянька. © 2009 DrKnS
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 »

Спасибо. Выложил на плагринге.
HaRT wrote:...Предполагаете ли включить фиксы для BOM в словаре и для смешанно-составных слов в основной код?
1. Фикс включил. 2. Подправил регулярные выражения в файлах-примерах конфигурации.
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

Aidar wrote: Выложил
Жаль, что Вы не включили в свой код предложенные мною исправления предупреждений luacheck (или не исправили их иным, лучшим образом). Даже исправления окончания слова „строк_“ не взяли.
Эффективный способ демотивировать контрибьюторов.
Фар есть инструмент, а не нянька. © 2009 DrKnS
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 »

HaRT wrote:Жаль, что Вы не включили в свой код предложенные мною исправления предупреждений luacheck (или не исправили их иным, лучшим образом). Даже исправления окончания слова „строк_“ не взяли.
Эффективный способ демотивировать контрибьюторов.
Ну, проигнорированные мной предупреждения являются (в данном случае) всего лишь подсказками — с моей точки зрения, конечно.
Например, код вида — не решение, а"костыль" для исключения предупреждения, усложняющий код. Предупреждение о неиспользуемых параметрах функции говорит о том, что внутри функции может быть опечатка, из-за которой вместо параметра используется некорректная переменная.
Возможно, следует разобрать полезность предупреждений на странице luacheck.
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

Aidar wrote: не решение, а"костыль" для исключения предупреждения, усложняющий код
Да, согласен; потому я и упомянул иные, лучшие способы исправления.
Но я в упор не понимаю, зачем в коде повсеместно конструкции вида local k = k (если уж так хочется, можно присвоить новое значение прямо аргументу, не объявляя новую переменную с тем же именем) — и luacheck на них тоже ругается.
А конструкция вида local _,_ = paramM,paramN — это как раз то, что в коде на Си выглядело бы (void)paramM; (void)paramN; или при использовании соответствующего макроса UNUSED(paramM); UNUSED(paramN); — именно чтобы не было предупреждений компилятора и чтобы новые, которые по существу и потенциально полезны, сразу привлекали к себе внимание.
Aidar wrote: Возможно, следует разобрать полезность предупреждений на странице luacheck.
Я отлично понимаю, зачем выдаётся каждое из предупреждений, которые я подавил/исправил, и когда оно полезно. Без понимания я такими вещами не занимаюсь.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

Aidar, теперь, когда есть полноценная поддержка пользовательских словарей, открывается прямая дорога к реализации важной недостающей возможности: добавление туда слова. Как мне это видится:
1. Внизу списка вариантов (пусть прежде и пустого) добавляется пункт «Добавить в словарь»/“Add to dictionary” (наверно, перед ним лучше разделитель). Когда он разрешён, а когда запрещён, потребует уточнения в дальнейшем.
2. При выборе этого пункта из подключенных пользовательских словарей отбираются те, которые подходят по языку (т.е. либо на том же языке, либо всеязыкие). Если подходящих словарей несколько, пользователю предлагается выбрать, в который добавлять.
3. Слово дописывается отдельной строкой в конец выбранного словаря (желательно не забыть EOL в конце) и подгружается в проверку. Вопрос, какие концы строк использовать в файле словаря, может потребовать дальнейшей проработки.

Как Вам?
Фар есть инструмент, а не нянька. © 2009 DrKnS
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 »

HaRT wrote:Aidar, теперь, когда есть полноценная поддержка пользовательских словарей, открывается прямая дорога к реализации важной недостающей возможности: добавление туда слова.
К этому и развиваю. И схема реализации в чём-то похожа.
Но есть особенности: например, для OOoUserDict необходимо добавлять не в конец, а сразу в правильную позицию, иначе LibreOffice перестаёт корректно обрабатывать такой словарь, а сортировка слов там с нюансами.
Ну и было бы неплохо реализовать поддержку работы с гибридными словами, т.к. не все могут редактировать Colorer-схемы.
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

Aidar wrote: для OOoUserDict необходимо добавлять не в конец, а сразу в правильную позицию
Можно было бы для начала реализовать добавление в WordList как более простое, а уж затем и в OOoUserDict. Так ценность (value) появится раньше.
Aidar wrote: реализовать поддержку работы с гибридными словами
Мне кажется, это менее востребованная возможность, чем добавление в пользовательский словарь.
Фар есть инструмент, а не нянька. © 2009 DrKnS
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 »

HaRT wrote:3. Выставлена скрытая прежде возможность вызвать перехода на предыдущее ошибочное слово...
Дореализовал (правда, пока частичный) поиск и переход на предыдущее ошибочное слово.
MacroKey Misspelling переименован в FindNext. .
Предложенные по умолчанию сочетания клавиш оказались удобными. Спасибо.
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

Натолкнулся тут на ложные срабатывания на словах, в середине которых законно расположен апостроф: isn't doesn't hasn't wouldn't shouldn't couldn't. (На некоторые: won't don't haven't — не ругается, поскольку части до апострофа являются в свою очередь существующими словами.)
Как бы эту ситуацию побороть, чтобы ничего другого не сломать?

Конфигурация у меня прежняя с одной поправкой.
Фар есть инструмент, а не нянька. © 2009 DrKnS
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 »

HaRT wrote:Натолкнулся тут на ложные срабатывания на словах, в середине которых законно расположен апостроф...
Надо подправить файл конфигурации .
Post Reply

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