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
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

Latest post of the previous page:

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: 10823
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: 10823
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: 10823
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: 10823
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:Натолкнулся тут на ложные срабатывания на словах, в середине которых законно расположен апостроф...
Надо подправить файл конфигурации .
User avatar
HaRT
Moderator
Posts: 10823
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:...А вот сегодня у меня появилось обоснованное подозрение, что слова из пользовательского словаря не попадают в меню вариантов исправления.
1. Для пользовательских словарей такой функционал не реализован.
2. Список слов формируется библиотекой Hunspell только из первого подходящего словаря типа Hunspell.
3. Нет понятно изложенного и легко и просто реализуемого алгоритма выбора слов для такого меню.
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

Aidar, ясно, спасибо.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

Поставил я себе сегодня свежий Фар после длительного перерыва и, вопреки ожиданиям, не смог легко подправить LuaSpell так, чтобы он подружился с недавними исправлениями в обработке прозрачности цветов. Из коробки подсветку ошибочных слов теперь не видно; пробую выставлять у всех цветов в старшем байте FF — тоже не видно; пробую выставить у фоновых FF, а у «переднего плана» 00 — опять не видно. Там цвет передаётся в editor.AddColor таблицей tFarColor; если вместо этого передаю целочисленное значение, то какую-никакую подсветку получаю, но хочется-то менять код по минимуму. Кто знает, в чём тут дело и как починить?

01:01 МСК Сам разобрался. Я менял цвета правильно, но не там — в коде самого скрипта, а не в коде скрипта настройки LuaSpell.cfg.lua.
Last edited by HaRT on Mon 12 Jul, 2021 23:01, edited 1 time in total.
Reason: Сам разобрался
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post by citRiks »

HaRT, я требую предоставить исправленный LuaSpell.cfg.lua широкой обчествености
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

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

Post by buniak_a_h »

А можно откуда-нить ещё кроме плагринга получить скрипты? А то там File not found
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

buniak_a_h wrote: Tue 13 Jul, 2021 10:32 можно откуда-нить ещё кроме плагринга получить скрипты?
Ссылка на GitHub в шапке темы.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Post Reply

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