Интересно, получится ли найти Hunspellx86.dll, которая была бы совместима с обоими макросами проверки и с плагином. Пока что все варианты, которые я пробовал, с кем-то одним несовместимы, выдают ошибки наподобии «cannot resolve symbol 'Hunspell_create': Не найдена указанная процедура.» или что-то в этом роде.
А, есть же ещё модуль для FarDotNet.
LuaSpell — проверка орфографии в редакторе
Posted: Thu 16 Jun, 2016 12:34
by HaRT
Wave wrote: получится ли найти Hunspellx86.dll, которая была бы совместима с обоими макросами проверки и с плагином
А зачем? Какие сценарии использования являются уникальными для каждого плагина/скрипта?
LuaSpell — проверка орфографии в редакторе
Posted: Thu 16 Jun, 2016 12:53
by John Doe
Wave wrote: Интересно, получится ли найти Hunspellx86.dll, которая была бы совместима с обоими макросами проверки и с плагином.
Нет
LuaSpell — проверка орфографии в редакторе
Posted: Thu 16 Jun, 2016 13:16
by Wave
HaRT wrote:
Wave wrote: получится ли найти Hunspellx86.dll, которая была бы совместима с обоими макросами проверки и с плагином
А зачем? Какие сценарии использования являются уникальными для каждого плагина/скрипта?
Плагин не умеет подсвечивать все слова с ошибками. Скрипты подсвечивают, но не умеют прыгать к следующему ошибочному слову. Если, конечно, я не слепой.
Итого, оптимальней всего использовать скрипт (один из двух) для подсветки и плагин для исправления. Вот и выбираю, какой скрипт мне больше нравится.
All-in-one получается Far.NET.RightWords, но модуль RightWords — единственный, ради которого я бы вообще захотел иметь Far.NET. А так — не хочу.
LuaSpell — проверка орфографии в редакторе
Posted: Thu 16 Jun, 2016 16:32
by Aidar
Wave wrote:Интересно, получится ли найти Hunspellx86.dll, которая была бы совместима с обоими макросами проверки и с плагином...
Можно поступить так: в modules\hunspell.luaизменяете строку
Wave wrote:...Скрипты подсвечивают, но не умеют прыгать к следующему ошибочному слову...
Добавил возможность перехода на следующее ошибочное слово.
В %FARPROFILE%\data\macros\LuaSpell.cfg добавьте строку с названием клавиши для нового действия, чтобы получилось
MacroKeys = {
CheckSpell = "CtrlF12", -- Клавиша для проверки текущего слова
SwitchCheck = "CtrlShiftF12", -- Клавиша для переключения подсветки ошибочных слов
Misspelling = "ShiftF12", -- Клавиша для перехода на следующее ошибочное слово
},
local lib_name = "hunspell_"..(win.GetEnv("PROCESSOR_ARCHITECTURE"):gsub("AMD64","x64"))
и переименовываете Hunspellx86.dll, нужный для LuaSpell, на Hunspell_x86.dll.
Но изменять строку придётся каждый раз при обновлении макроса.
Спасибо! Изменять каждый раз — не самая большая проблема — у меня профиль с макросами и всем таким лежит в Git-репозитории.
Aidar wrote:Добавил возможность перехода на следующее ошибочное слово.
В %FARPROFILE%\data\macros\LuaSpell.cfg добавьте строку с названием клавиши для нового действия, чтобы получилось
MacroKeys = {
CheckSpell = "CtrlF12", -- Клавиша для проверки текущего слова
SwitchCheck = "CtrlShiftF12", -- Клавиша для переключения подсветки ошибочных слов
Misspelling = "ShiftF12", -- Клавиша для перехода на следующее ошибочное слово
},
Опс! Спасибо!
LuaSpell — проверка орфографии в редакторе
Posted: Sat 18 Jun, 2016 09:27
by Aidar
Добавил поддержку подключения дополнительных пользовательских словарей.
Data = {
...
{ Type = "UserDict",
path = UserDictPath, -- путь к пользовательским словарям
filename = "User_Dict", -- название файла без расширения (.dic)
dics = { "Dict1", "Dict2", }, -- Названия дополнительных словарей без расширения (.dic)
...
P.S. Аналогично можно подключать дополнительные словари Hunspell (но пока не проверял, работает ли это).
LuaSpell — проверка орфографии в редакторе
Posted: Sat 18 Jun, 2016 12:44
by HaRT
Aidar wrote:Добавил поддержку подключения дополнительных пользовательских словарей.
Спасибо. А что значит дополнительных? В чём различие "User_Dict" и "Dict1", "Dict2"? Как они соотносятся?
LuaSpell — проверка орфографии в редакторе
Posted: Sat 18 Jun, 2016 14:58
by Aidar
В случае UserDict они ничем не отличаются. В LibreOffice есть возможность подключать несколько словарей - для разных языков и разной тематики. Вместо подключения их в LuaSpell по одному можно использовать новый функционал.
Ну и проверка слова будет идти сразу по единой таблице слов, а не по нескольким (для каждого словаря).
В библиотеке Hunspell есть функция добавления дополнительного словаря. Скорее всего, эта возможность используется также для подключения специализированных словарей помимо основного словаря.
LuaSpell — проверка орфографии в редакторе
Posted: Mon 20 Jun, 2016 17:14
by HaRT
Aidar wrote: Более подробно можно посмотреть в LuaSpell.cfg.user.example.
Если на этот файл (предварительно переименовав его в .lua) натравить LuaCheck, то вылезает
╔═══════════════════════════════════════ luacheck ═══════════════════════════════════════╗
║! 46:3 │ W111 │ setting non-standard global variable 'actprofiler' ║
║ 162:28 │ W212 │ unused argument 'ArgData' ║
║² 165:16 │ W231 │ variable 'serror' is never accessed ║
║! 186:5 │ W111 │ setting non-standard global variable 'v' ║
║! 187:13 │ W113 │ accessing undefined variable 'v' ║
║! 187:39 │ W113 │ accessing undefined variable 'v' ║
║! 188:7 │ W112 │ mutating non-standard global variable 'v' ║
║ 237:29 │ W212 │ unused argument 'k' ║
║ 240:9 │ W412 │ variable 'v' was previously defined as an argument on line 237 ║
║ 252:9 │ W412 │ variable 'k' was previously defined as an argument on line 251 ║
║ 300:29 │ W212 │ unused argument 'k' ║
║ 303:9 │ W412 │ variable 'v' was previously defined as an argument on line 300 ║
║ 315:9 │ W412 │ variable 'k' was previously defined as an argument on line 314 ║
║ 357:9 │ W412 │ variable 'k' was previously defined as an argument on line 356 ║
║ 390:7 │ W211 │ unused variable 'tostring' ║
║ 493:9 │ W311 │ value assigned to variable 'h' is unused ║
║ 498:9 │ W311 │ value assigned to variable 'y' is unused ║
║ 520:27 │ W212 │ unused argument 'dlg' ║
║ 520:32 │ W212 │ unused argument 'msg' ║
║ 520:37 │ W212 │ unused argument 'param1' ║
║ 520:45 │ W212 │ unused argument 'param2' ║
║ 613:19 │ W421 │ shadowing definition of variable 's' on line 580 ║
║ 676:9 │ W412 │ variable 'Info' was previously defined as an argument on line 675 ║
║ 695:9 │ W412 │ variable 'action' was previously defined as an argument on line 675 ║
║ 734:19 │ W211 │ unused variable 'h' ║
║ 818:33 │ W212 │ unused argument 'param' ║
╚═════════════════════════ Ctrl-Enter, Ctrl-Up/Down, F5, F6, F1 ═════════════════════════╝
.
LuaSpell — проверка орфографии в редакторе
Posted: Mon 20 Jun, 2016 18:45
by HaRT
@Aidar
Со второй попытки пользовательский словарь прикрутить удалось — спасибо!
Неочевидным моментом оказалось требуемое расположение файла LuaSpell.cfg. Сложно ли сделать, чтобы он искался также прямо в %FARPROFILE% рядом с FarMenu.ini?
И ещё желательно либо включить в документацию описание формата файлов UserDict (кодировка, заголовок, сортировка?), либо привести ссылку на имеющуюся. В частности, у меня работает и с lang: <none>.
LuaSpell — проверка орфографии в редакторе
Posted: Mon 20 Jun, 2016 22:01
by Aidar
HaRT wrote:
Aidar wrote: Более подробно можно посмотреть в LuaSpell.cfg.user.example.
Если на этот файл (предварительно переименовав его в .lua) натравить LuaCheck, то вылезает ряд предупреждений..., в т.ч. одно, возможно свидетельствующее о логической ошибке.
Спасибо, я не успел повторно прогнать lua-файлы своих пакетов через ZBS. Среди предупреждений лишь одно полезное: