Page 1 of 3
Макрос для проверки орфографии в редакторе
Posted: Tue 16 Jul, 2013 23:06
by zg
Сам макрос
тут.
для его работы нужны:
1. dll от проекта
nhunspell.
отсюда берётся архив с последней версией и из него нужны либо Hunspellx86.dll, либо Hunspellx64.dll. именно эти dll чисто нативные, никакого .net-а в них нет. положить их нужно куда-нибудь, откуда они загрузятся, например в папку с фаром.
2. словари. по умолчанию макрос настроен на вот этот
русский словарь (нужны файлы ru_RU_yo.aff и ru_RU_yo.dic), и вот этот
английский словарь (нужны файлы en_US.aff и en_US.dic). по умолчанию словари ожидаются в
%FARPROFILE%\Dictionaries\.
все настройки словарей лежат в начале макроса.
F3 — показать меню с вариантами замены.
ShiftF3 — включить/выключить подсветку неправильных слов.
выглядит это примерно так:
Re: Макрос для проверки орфографии в редакторе
Posted: Wed 17 Jul, 2013 07:42
by Shmuel
Спасибо, полезная штука!
Пара мелких замечаний:
1. if word:len() - это баг. Правильно будет: if word ~= ""
2. kernel32 не обязательно явно грузить, можно просто вызывать его функции, например, ffi.C.lstrlenW()
Можно определить в файле local C = ffi.C, тогда ещё красивее: C.lstrlenW().
В то же время не рекомендуется делать local lstrlenW = ffi.C.lstrlenW.
Re: Макрос для проверки орфографии в редакторе
Posted: Wed 17 Jul, 2013 07:51
by Denis
На x64 ошибка:
\Macros\scripts\spell.lua:33: cannot load module 'hunspellAMD64'
Re: Макрос для проверки орфографии в редакторе
Posted: Wed 17 Jul, 2013 07:59
by tstr
переименуйте Hunspellx64.dll в HunspellAMD64.dll
Re: Макрос для проверки орфографии в редакторе
Posted: Wed 17 Jul, 2013 08:03
by Denis
Спасибо
Re: Макрос для проверки орфографии в редакторе
Posted: Wed 17 Jul, 2013 08:35
by Shmuel
tstr wrote:переименуйте Hunspellx64.dll в HunspellAMD64.dll
Можно, и так, но лучше заменить 33-ю строку на
Code: Select all
local hunspell=ffi.load("hunspell"..(win.GetEnv("PROCESSOR_ARCHITECTURE"):gsub("AMD64","x64")))
Re: Макрос для проверки орфографии в редакторе
Posted: Wed 17 Jul, 2013 09:27
by zg
ошибки исправил.
Re: Макрос для проверки орфографии в редакторе
Posted: Wed 17 Jul, 2013 11:05
by Shmuel
Мне, чтобы скачать скрипт, приходится 5 раз кликать мышкой.
1. ссылка, приведенная в шапке
2. ссылка на spell.lua в папке .../scripts
3. правый клик на ссылке "View raw file"
4. клик "Save Link Target" в контекстном меню
5. и, наконец, кнопка "Save" в диалоге сохранения
Может я что-то не так делаю? Пока это всё делаешь, может и качать расхотеться.
Re: Макрос для проверки орфографии в редакторе
Posted: Wed 17 Jul, 2013 13:53
by John Doe
Re: Макрос для проверки орфографии в редакторе
Posted: Thu 18 Jul, 2013 18:02
by Shmuel
Сабж при перезагрузке макросов (MCTL_LOADALL) не освобождает хэндлы библиотеки, что приводит при каждой перезагрузке к отъеданию около 12 MB памяти. Да, сабж не виноват, он не в курсе. Но, видимо, надо будет организовать новый тип события для извещения макросов о их выгрузке, или подцепиться к ExitFAR.
На данный момент, при установленном сабже, следующая команда валит Фар из-за съедания всей памяти:
Code: Select all
lm:post for k=1,400 do far.MacroLoadAll() end
Re: Макрос для проверки орфографии в редакторе
Posted: Thu 18 Jul, 2013 23:05
by zg
Shmuel wrote:или подцепиться к ExitFAR.
можно к ExitFAR. если надо различать, то можно ввести параметр, указывающий, что реально происходит.
На данный момент, при установленном сабже, следующая команда валит Фар из-за съедания всей памяти:
Code: Select all
lm:post for k=1,400 do far.MacroLoadAll() end
у меня не валит, появляется несколько сообщений про нехватку памяти, потом даже по папкам ходить можно
Макрос для проверки орфографии в редакторе
Posted: Fri 19 Jul, 2013 10:54
by Shmuel
zg wrote:можно к ExitFAR. если надо различать, то можно ввести параметр, указывающий, что реально происходит.
Сделал, чтобы ExitFAR вызывался при выгрузке и перезагрузке макросов.
Мы как-то обсуждали общее время загрузки макросов. Сабж увеличивает его на 300 ms на моей машине, из которых 30 ms - загрузка файлов и 270 ms - инициализация. Может имеет смысл грузить библиотеку и словари при первом нажатии на F3/ShiftF3 в редакторе? Время lm:load меня не волнует, волнует время запуска Фара.
Re: Макрос для проверки орфографии в редакторе
Posted: Fri 19 Jul, 2013 11:50
by Smitis
Я так понимаю, проблема имеет место для любых библиотек, загружаемых через ffi.load?
Макрос для проверки орфографии в редакторе
Posted: Fri 19 Jul, 2013 12:02
by Shmuel
Smitis wrote:Я так понимаю, проблема имеет место для любых библиотек, загружаемых через ffi.load?
ffi.load тут ни при чём. Загрузка любой библиотеки делается не за нулевое время.
Речь идёт не о загрузке, а об инициализации, которая для
данной библиотеки, включая загрузку словарей, занимает примерно 300 ms, что само по себе не так уж много, но если учесть, что у меня все остальные макросы вместе грузятся за 4 ms, то разница налицо.
Re: Макрос для проверки орфографии в редакторе
Posted: Fri 19 Jul, 2013 12:34
by Smitis
Я имел ввиду отъедание памяти