Макрос для проверки орфографии в редакторе

Здесь выкладываются готовые к использованию макросы и скрипты.
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Макрос для проверки орфографии в редакторе

Post 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 — включить/выключить подсветку неправильных слов.
выглядит это примерно так:
Attachments
spell.png
spell.png (8.68 KiB) Viewed 30172 times
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Re: Макрос для проверки орфографии в редакторе

Post by Shmuel »

Спасибо, полезная штука!

Пара мелких замечаний:
1. if word:len() - это баг. Правильно будет: if word ~= ""

2. kernel32 не обязательно явно грузить, можно просто вызывать его функции, например, ffi.C.lstrlenW()

Можно определить в файле local C = ffi.C, тогда ещё красивее: C.lstrlenW().
В то же время не рекомендуется делать local lstrlenW = ffi.C.lstrlenW.
Denis
Posts: 1444
Joined: Tue 05 Apr, 2005 18:12
Has thanked: 10 times
Been thanked: 5 times

Re: Макрос для проверки орфографии в редакторе

Post by Denis »

На x64 ошибка:
\Macros\scripts\spell.lua:33: cannot load module 'hunspellAMD64'
tstr
Posts: 557
Joined: Thu 16 Apr, 2009 16:15
Has thanked: 20 times
Been thanked: 9 times

Re: Макрос для проверки орфографии в редакторе

Post by tstr »

переименуйте Hunspellx64.dll в HunspellAMD64.dll
Denis
Posts: 1444
Joined: Tue 05 Apr, 2005 18:12
Has thanked: 10 times
Been thanked: 5 times

Re: Макрос для проверки орфографии в редакторе

Post by Denis »

Спасибо :)
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Re: Макрос для проверки орфографии в редакторе

Post by Shmuel »

tstr wrote:переименуйте Hunspellx64.dll в HunspellAMD64.dll
Можно, и так, но лучше заменить 33-ю строку на

Code: Select all

local hunspell=ffi.load("hunspell"..(win.GetEnv("PROCESSOR_ARCHITECTURE"):gsub("AMD64","x64")))
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Re: Макрос для проверки орфографии в редакторе

Post by zg »

ошибки исправил.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Re: Макрос для проверки орфографии в редакторе

Post by Shmuel »

Мне, чтобы скачать скрипт, приходится 5 раз кликать мышкой.

1. ссылка, приведенная в шапке
2. ссылка на spell.lua в папке .../scripts
3. правый клик на ссылке "View raw file"
4. клик "Save Link Target" в контекстном меню
5. и, наконец, кнопка "Save" в диалоге сохранения

Может я что-то не так делаю? Пока это всё делаешь, может и качать расхотеться. :(
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Re: Макрос для проверки орфографии в редакторе

Post by John Doe »

Аналогичные процедуры требуются также для скачивания движка и словарей :-)

Вот прямые ссылки для ленивых:

https://evil-programmers.googlecode.com ... /spell.lua
http://sourceforge.net/projects/aoo-ext ... t/download
http://sourceforge.net/projects/aoo-ext ... t/download
http://sourceforge.net/projects/nhunspe ... p/download
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Re: Макрос для проверки орфографии в редакторе

Post by Shmuel »

Сабж при перезагрузке макросов (MCTL_LOADALL) не освобождает хэндлы библиотеки, что приводит при каждой перезагрузке к отъеданию около 12 MB памяти. Да, сабж не виноват, он не в курсе. Но, видимо, надо будет организовать новый тип события для извещения макросов о их выгрузке, или подцепиться к ExitFAR.

На данный момент, при установленном сабже, следующая команда валит Фар из-за съедания всей памяти:

Code: Select all

lm:post for k=1,400 do far.MacroLoadAll() end
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Re: Макрос для проверки орфографии в редакторе

Post by zg »

Shmuel wrote:или подцепиться к ExitFAR.
можно к ExitFAR. если надо различать, то можно ввести параметр, указывающий, что реально происходит.
На данный момент, при установленном сабже, следующая команда валит Фар из-за съедания всей памяти:

Code: Select all

lm:post for k=1,400 do far.MacroLoadAll() end
у меня не валит, появляется несколько сообщений про нехватку памяти, потом даже по папкам ходить можно :)
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Макрос для проверки орфографии в редакторе

Post by Shmuel »

zg wrote:можно к ExitFAR. если надо различать, то можно ввести параметр, указывающий, что реально происходит.
Сделал, чтобы ExitFAR вызывался при выгрузке и перезагрузке макросов.

Мы как-то обсуждали общее время загрузки макросов. Сабж увеличивает его на 300 ms на моей машине, из которых 30 ms - загрузка файлов и 270 ms - инициализация. Может имеет смысл грузить библиотеку и словари при первом нажатии на F3/ShiftF3 в редакторе? Время lm:load меня не волнует, волнует время запуска Фара.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Re: Макрос для проверки орфографии в редакторе

Post by Smitis »

Я так понимаю, проблема имеет место для любых библиотек, загружаемых через ffi.load?
Разум когда-нибудь победит.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Макрос для проверки орфографии в редакторе

Post by Shmuel »

Smitis wrote:Я так понимаю, проблема имеет место для любых библиотек, загружаемых через ffi.load?
ffi.load тут ни при чём. Загрузка любой библиотеки делается не за нулевое время.
Речь идёт не о загрузке, а об инициализации, которая для данной библиотеки, включая загрузку словарей, занимает примерно 300 ms, что само по себе не так уж много, но если учесть, что у меня все остальные макросы вместе грузятся за 4 ms, то разница налицо.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Re: Макрос для проверки орфографии в редакторе

Post by Smitis »

Я имел ввиду отъедание памяти
Разум когда-нибудь победит.
Post Reply

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