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" (без кавычек).
HaRT wrote:...Почему-то слово из первой строки не подхватывается — проще всего это выявить, запустив проверку в самом таком словаре. Ошибка?
Использую WordList-словарь Stop_List из трёх слов: все слова раскрашиваются.
Приложите словарь и файл конфигурации.
LuaSpell — проверка орфографии в редакторе
Posted: Tue 28 Jun, 2016 20:02
by Aidar
HaRT wrote:2. Добавлена опция ShowEmptyList — показывать ли пустой список пред(по)ложений (чтобы не было иллюзии, будто макрос не сработал).
Спасибо, опцию назвал EmptyList аналогично опции в WordComplete.
HaRT wrote:3. Выставлена скрытая прежде возможность вызвать перехода на предыдущее ошибочное слово (только при этом почему-то ничего не происходит).
1. Не тестировалось. 2. Будет работать странно: строки просматривает назад, а внутри строк — вперёд. 4. Предполагаю реализовать добавление в меню плагинов, чтобы можно было назначать макросы обычным образом. А текущие комбинации оставить как часто используемые.
HaRT wrote:4. Список пред(по)ложений расширен справа на одно знакоместо (чтобы самые длинные слова не упирались правым краем в рамку, будто усечённые).
Спасибо, добавил строку в макрос.
HaRT wrote:5. Устранены почти все предупреждения luacheck, устранены некоторые избыточные идентификаторы, устранены глобальные блоки do-end (чтобы не засоряли Outline от Colorer), исправлены опечатки в комментариях, удалены концевые пробелы.
Aidar wrote: используемые мной схемы для FarColorer
Как добавить в Колорер отдельные файлы, я знаю, но мне не нравится сама идея делать такое для каждого нового файла конфигурации и для каждого редактора, в котором я захочу его открыть. На мой взгляд, если формат текста — код на Луа, то удобнее, чтобы и расширение у имени файла было соответствующее.
Aidar wrote: Использую WordList-словарь Stop_List
Я использую WordList в качестве положительного словаря.
Aidar wrote: Приложите словарь и файл конфигурации.
local Flag4BIT = bit64.bor(F.FCF_FG_4BIT, F.FCF_BG_4BIT)
local CharEnum =[[A-Za-zÀ-ÖØ-ßà-öø-ÿĀ-ʯḀ-ỿА-Яа-яЁёЎўЄєЇї΄-Ͽἀ-_0-9́`]]
local CharsSet ="["..CharEnum.."]+"
localfunction DicMatch (dic, word, line, p, l)
--dic.word = word:gsub("́", "") -- Очистка слова
local word = word:gsub("́","")-- Очистка слова
dic.word = word:gsub("`","'")-- Замена апострофа
--far.Show(dic.word)
returntrue
end-- DicMatch
local DictionaryPath =[[%FARPROFILE%\Dictionaries\]]
local UserDictPath = DictionaryPath
Data ={-- Settings:
Enabled =false,
Path = DictionaryPath,
CharsSet = CharsSet,
InnerSet = CharsSet.."$",
StartSet ="^"..CharsSet,
CheckSet ="/\\b"..CharsSet.."\\b/",
ColorPrio =199,
ShowEmptyList =true,
-- Dictionaries:
{ Type ="WordList",
path = UserDictPath,
StrToPath =false,-- Отключение преобразования путей в ANSI
filename ="custom",
dicext =".dic",
match = DicMatch,
Enabled =true,
BreakOnMatch =true,
},
{ lng ="rus",
desc ="Russian",
Type ="Hunspell",
filename ="ru_RU_yo",
find =[[/[А-Яа-яЁё]{2,}/]],
match = DicMatch,
color ={
Flags = Flag4BIT,
ForegroundColor =0xF,
BackgroundColor =0x4,
},
Enabled =true,
},
{ lng ="eng",
desc ="English",
Type ="Hunspell",
filename ="en_US",
find =[[/[A-Za-z]{2,}/]],
match = DicMatch,
color ={
Flags = Flag4BIT,
ForegroundColor =0xF,
BackgroundColor =0x5,
},
Enabled =true,
},
}
.
Если открыть на редактирование сам custom.dic и включить подсветку неправильных слов, то «перваястрока» подсвечивается красным (от положения слова в тексте не зависит).
LuaSpell — проверка орфографии в редакторе
Posted: Tue 28 Jun, 2016 20:11
by HaRT
Aidar wrote: опцию назвал EmptyList аналогично опции в WordComplete.
Это не очень удачно, ибо может быть понято как „опустошить список“, т.к. “empty” — ещё и глагол. Впрочем, не принципиально.
Aidar wrote: 2. Будет работать странно: строки просматривает назад, а внутри строк — вперёд.
А сложно ли сделать, чтобы оно работало ожидаемо?
Aidar wrote: 4. Предполагаю реализовать добавление в меню плагинов, чтобы можно было назначать макросы обычным образом. А текущие комбинации оставить как часто используемые.
В принципе не возражаю, но не хотелось бы иметь каждое действие отдельным пунктом верхнего уровня, чтобы не раздувать меню попусту.
Aidar wrote: Тогда из lua.hrc лучше убрать do-end
Это отдельный вопрос. В коде LuaSpell.lua использование этой конструкции мне показалось неоправданным — потому и предлагаю их оттуда удалить.
LuaSpell — проверка орфографии в редакторе
Posted: Tue 28 Jun, 2016 20:21
by Aidar
HaRT wrote:
Aidar wrote: опцию назвал EmptyList...
Это не очень удачно, ибо может быть понято как „опустошить список“, т.к. “empty” — ещё и глагол.
Ясно.
HaRT wrote:
Aidar wrote: 2. Будет работать странно: строки просматривает назад, а внутри строк — вперёд.
А сложно ли сделать, чтобы оно работало ожидаемо? ;)
Ну, если есть или будет реализована поддержка поиска назад в регулярных выражениях.
HaRT wrote:...не хотелось бы иметь каждое действие отдельным пунктом верхнего уровня, чтобы не раздувать меню попусту.
Планировал один пункт с отображением меню с возможными действиями (как в UM_Adapter).
HaRT wrote:
Aidar wrote: Тогда из lua.hrc лучше убрать do-end
Это отдельный вопрос. В коде LuaSpell.lua использование этой конструкции мне показалось неоправданным — потому и предлагаю их оттуда удалить.
Ну, это у меня такой стиль выработался. Поэтому и добавил этот блок как outline в lua.hrc. Думаю, можно обсудить это в ветке FarColorer.
LuaSpell — проверка орфографии в редакторе
Posted: Tue 28 Jun, 2016 20:28
by HaRT
Aidar wrote: если есть или будет реализована поддержка поиска назад в регулярных выражениях
Не знаю насчёт FAR API, но в пользовательском интерфейсе Фара поиск назад по регулярному выражению вполне себе работает.
Aidar wrote: это у меня такой стиль выработался
Не смею настаивать на изменении Вами выработанного стиля, однако считаю, что исключение этой конструкции (а также нескольких не добавляющих ясности идентификаторов) только упростило код LuaSpell.lua.
LuaSpell — проверка орфографии в редакторе
Posted: Tue 28 Jun, 2016 20:30
by Aidar
HaRT wrote:... Я использую WordList в качестве положительного словаря...
У меня всё нормально: обе строки неподкрашенные. Создал файл словаря в кодировке UTF-8 без BOM.
LuaSpell — проверка орфографии в редакторе
Posted: Tue 28 Jun, 2016 20:52
by HaRT
Aidar wrote: в кодировке UTF-8 без BOM
Да, если без BOM, то всё в порядке.
Сложно ли сделать, чтобы BOM не влиял столь пагубно? Ведь BOM — это совершенно штатная, полезная и очень распространённая вещь…
LuaSpell — проверка орфографии в редакторе
Posted: Tue 28 Jun, 2016 21:19
by Aidar
HaRT wrote:...Сложно ли сделать, чтобы BOM не влиял столь пагубно? Ведь BOM — это совершенно штатная, полезная и очень распространённая вещь…
if self.Type == "WordList" then
if string.sub(s, 1, 3) == string.char(0xEF, 0xBB, 0xBF) then
s = string.sub(s, 4, -1) -- Исключение UTF-8 BOM
end
end
LuaSpell — проверка орфографии в редакторе
Posted: Wed 29 Jun, 2016 10:41
by John Doe
Aidar wrote: 4. Предполагаю реализовать добавление в меню плагинов, чтобы можно было назначать макросы обычным образом.
Вместо пункта в меню плагинов можно читать комбинации из файла конфигурации, или из БД.
Или сделать скрипт модулем, и в макросах обращаться через require
LuaSpell — проверка орфографии в редакторе
Posted: Wed 29 Jun, 2016 14:36
by HaRT
Aidar
Обнаружилось ложное срабатывание в строках вида “Latin-кириллица” — часть “Latin” проверяется, очевидно, по русскому словарю и подсвечивается как неправильное (красным фоном).
А ведь подобные конструкции нередко бывают нужны в двуязычных текстах профессиональной тематики с активными заимствованиями терминологии из английского.
LuaSpell — проверка орфографии в редакторе
Posted: Wed 29 Jun, 2016 15:54
by Aidar
HaRT wrote:AidarОбнаружилось ложное срабатывание в строках вида “Latin-кириллица” — часть “Latin” проверяется, очевидно, по русскому словарю и подсвечивается как неправильное (красным фоном).
А ведь подобные конструкции нередко бывают нужны в двуязычных текстах профессиональной тематики с активными заимствованиями терминологии из английского.
В LuaSpell.cfg добавьте во все find символы ^ и $ аналогично