SpellCheck plugin

Discuss and announce AkelPad plugins
  • Author
  • Message
Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

Всегда пожалуйста.
0) Неизвестное слово нельзя сохранить в каком бы то ни было словаре, списке исключений и т. п. В форме SpellCheck::CheckSelection есть кнопки "Принять" и "Запомнить", но их использование не приводит ни к какому результату
"Принять" выполняет однократную замену текущего слова, т.е. если оно встретится ещё раз, то спросит опять. Эффект "Запомнить" действует в пределах сеанса(такая вот короткая память) проверки. При получении такого же ошибочного слова в сеансе оно будет заменено без вопросов. Это конечно не совсем идеальное поведение, но зато минимально гарантированное во всех обстоятельствах. Дело в том что Check* функции работают так сказать пассивно. Т.е. функцию вызвали, она отработала и ушла, почистив за собой бардак и выгрузив плагин(если фоновая не включена), таким образом память самоликвидируется. Перманентизацию конечно сделать можно было бы, но всему своё время.
1) Список вариантов показывается только для выбранного "Языка по умолчанию". Можно хотя бы добавить выбор языка по умолчанию в форму SpellCheck::CheckSelection.
Пока только через настройки. В следующей версии делаю переключение на ходу.(Уже с месяц делаю, когда релизну - не знаю).
2) Вариантов правильного написания предлагается очень много
Ну это ещё не полный список, он может выдать больше.

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

FeyFre wrote:"Принять" выполняет однократную замену текущего слова, т.е. если оно встретится ещё раз, то спросит опять. Эффект "Запомнить" действует в пределах сеанса(такая вот короткая память) проверки.
Это то, о чём я неоднократно тут писал - поведение неинтуитивно, и люди продолжают об этом говорить.
Надеемся на "когда-нидудь..." :)

Offline
Posts: 7
Joined: Fri Mar 16, 2012 12:34 pm

Post by Tcheluskin »

FeyFre wrote:Эффект "Запомнить" действует в пределах сеанса(такая вот короткая память) проверки. При получении такого же ошибочного слова в сеансе оно будет заменено без вопросов.
Я может неправильно понимаю или делаю что-то? Например:
– набираю в тексте слово "коронарография";
– оно подчёркивается красным;
– ставлю на него курсор и вызываю сочетанием клавиш форму SpellCheck::CheckSelection;
– она предлагает несколько вариантов, среди которых выбран "порнография";
– нажимаю "Начальное", "Запомнить", и…
– ничего не происходит; слово остаётся подчёркнутым.

А-а… понял: "Запомнить" действует только в процессе "CheckSelection" или "CheckDocument"; как только я закрыл форму, то "Запомнить" потеряло силу :D
Ну, это лучше чем ничего.

Offline
Posts: 7
Joined: Fri Mar 16, 2012 12:34 pm

Post by Tcheluskin »

FeyFre
Позвольте тогда ещё 2 непринципиальных замечания:

3) Хорошо бы сделать, чтобы это "Запомнить", после того как ему скормили слово, набранное маленькими буквами, например: "коронарография" — далее также пропускало это слово, набранное с большой, либо целиком большими буквами: "Коронарография", "КОРОНАРОГРАФИЯ".

Обратное вообще говоря неверно: если указано как правильное слово с заглавной буквы: "Кэррингтон" — это не значит, что правильно и написание с маленькой буквы: "кэррингтон" — ошибка.
Некоторые слова вообще специфически чувствительны к регистру, например: "эВ" (электронвольт) — верно; но "эв" — ошибка.

Возможное решение: в "короткой памяти" кроме слова хранить и информацию — чувствительно ли оно к регистру; а в форме "CheckSelection"/"CheckDocument" рядом с кнопкой "Запомнить" ввести соотв. галочку: "Учитывать регистр", либо вторую кнопку: "Запомнить с учётом регистра". (Но при проверке набор всеми заглавными буквами: "КЭРРИНГТОН", "ЭВ" — считать верным всегда.)

4) Если курсор стоит между словами — проверять не слово после курсора, а слово перед курсором.
Сейчас, допустим, я набрал "коронарография", оно подчеркнулось красным — мне надо сначала сдвинуть курсор влево внутрь слова; а потом уже жать клавиши вызова SpellCheck::CheckSelection.
Если сделать как я выше предлагаю, отпадёт необходимость в этом небольшом лишнем действии.

С уважением.
Last edited by Tcheluskin on Fri Mar 16, 2012 4:57 pm, edited 3 times in total.

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

Tcheluskin
Посмотрите, в документации на плагин должно быть что-то о белых списках.
Добавление выделенного слова в белый список SpellCheckAddToWhiteList.js.

Что касается проверки слов, которые забиты в скомпилированных словарях, то даже не знаю, помогут ли галочки в плаге.. одно предположу - ждать это скоро не стоит.

Offline
Posts: 7
Joined: Fri Mar 16, 2012 12:34 pm

Post by Tcheluskin »

VladSh wrote:Добавление выделенного слова в белый список SpellCheckAddToWhiteList.js.
Спасибо.

К сожалению, некорректно заработало с русскими словами, т. к. SpellCheckAddToWhiteList.js пишет слово в файл "белого списка" txt.spck в кодировке ANSI, а плагин SpellCheck читает его оттуда в UTF8.

UPD: разобрался. Корректно заработало вообще, и с русскими словами (в *.txt файлах в любых кодировках) в частности после того, как сделал следующее:

Добавил файлы
\AkelPad\AkelFiles\Plugs\Scripts.dll (v10.7.0.0)
\AkelPad\AkelFiles\Plugs\Scripts\SpellCheckAddToWhiteList.js (v1.1)
\AkelPad\AkelFiles\Plugs\Scripts\Include\WordCaretSelect.js (v2.0)

Создал файл в кодировке 1251 ANSI
\AkelPad\AkelFiles\Plugs\SpellCheck\txt.spck
следующего содержания:

Code: Select all

;--
;--	Файл "белого списка" исключений для плагина SpellCheck
;--	SpellCheck's plugin whitelist definition file
;--

;extensions
+
+txt

Установил ему все права на любой доступ всем пользователям.
Установил в AkelPad кодировку по умолчанию 1251 ANSI (UPD2: последнее необязательно, если в заголовке файла txt.spck есть русский текст).
Last edited by Tcheluskin on Sat Mar 17, 2012 5:06 pm, edited 4 times in total.

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

Tcheluskin, ну во-первых, ВЫ всё-тики создали файл в UTF8, именно так его распознает плагин. Если Вы продолжаете писать в него как ANSI(тонее не как UTF8), то отсюда вылазит второе - плагин прочтет там только мусор,а значит ноль эффекта.

Offline
Posts: 7
Joined: Fri Mar 16, 2012 12:34 pm

Post by Tcheluskin »

FeyFre
Спасибо, разобрался, выше пост исправил.
Надо было
1) сделать файл txt.spck в кодировке ANSI без символов п»ї в начале файла, И
2) установить в AkelPad кодировку по умолчанию 1251 ANSI (у меня стояла почему-то UTF8).
Без п.2 плагин читал txt.spck всё равно в UTF8.

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

Tcheluskin, просто нужно было писать туда в UTF8(это претензия к к автору скрипта не к Вам). И менять Вашу кодировку по-умолчанию тоже не нужно. Для того что-бы корректно определилась ANSI, Вам достаточно было бы в тех трех заголовочных строчках матернуться по-русски ;) тогда бы распозналась кодиорвка правильно(сама только латиница и знаки препинания не помогоают в этом деле, потому используется умолчание).

Offline
Posts: 7
Joined: Fri Mar 16, 2012 12:34 pm

Post by Tcheluskin »

FeyFre wrote:достаточно было бы в тех трех заголовочных строчках матернуться по-русски
Точно, работает.

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

FeyFre wrote:просто нужно было писать туда в UTF8(это претензия к к автору скрипта не к Вам).
В аргументах скрипта есть параметр format.

Offline
Posts: 37
Joined: Fri Oct 30, 2009 11:10 am

Post by antabu »

Русский словарь весит значительно больше, чем AkelPad со всеми остальными плагинами
opk44 wrote:
FeyFre wrote:Мне вот интересно 600000 слов - каких?
Оценивать емкость по аналогии с "обычным" орфографическим словарем неправильно, т.к. в отличие от оного, словарь содержит не только "существительные в именительном падеже" но еще и все словоформы:
бег - бегу, бегом, бегал, бежал, бежит, ... беглый, бегло...
Так вот 600тыс. и набегАет :)
В "самопальных" системах ИМХО для компактности добавляются некие "правила" словообразования, благодаря чему суффиксы/приставки/окончания хранятся отдельно от основного корпуса.
Опера, и предполагаю, что Мозилла используют словарь от Лебедева http://scon155.phys.msu.ru/~swan/orthography.html
У меня такой вопрос: существует ли плагин к AkelPad для проверки грамматики, альтернативный SpellCheck и использующий ispell http://www.luziusschneider.com/Speller/ ... /index.htm ?

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

проверки грамматики
Грамматики, не орфографии? Т.е. запятые не там расставлены? Я даже таких и не знаю библиотек.
альтернативный SpellCheck и использующий ispell
SpellCheck использует ASpell. ASpell в свою очередь является подавителем ISpell(посмотрите на дату последнего релиза). Достаточно словарей ASpell были получены из ISpell-овских, командой которая делала словари для ISpell.

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

Опера, и предполагаю, что Мозилла используют словарь от Лебедева
Да, Опера русский словарь - Лебедвский. Не знаю как там Панда, но Опера пользуется Hunspell-ом который в свою очередь вполне переваривает чужие словари(на стадии подготовки я так понимаю). en_GB там используется именно ASpell-овский(Аткинсона - разработчика ASpell). Так что какой движок Вы бы не предлагали, он в любом случает так или иначе много чего содержит от ASpell-а

Offline
Posts: 37
Joined: Fri Oct 30, 2009 11:10 am

Post by antabu »

Нет, я имел ввиду не запятые, а правописание.
А проблема именно в размере словаря, в ISpell отдельно корни слов и всякие суффиксы с приставками.
Более того, Опера раззиповывает словари на лету.
Post Reply