| View previous topic :: View next topic |
| Author |
Message |
vadim
Joined: 16 Aug 2012 Posts: 8
|
Posted: Wed Nov 21, 2012 4:41 pm Post subject: |
|
|
Помогло, спасибо! Быстро и просто.
Эти символы: ‹›«»‘’“”‚„ взяты из таблицы 1251
Красные подчеркивания слов с этими кавычками сильно раздражали.
Сейчас - совсем другое дело! |
|
| Back to top |
|
 |
VladSh
Joined: 29 Nov 2006 Posts: 2507 Location: Киев, Русь
|
Posted: Wed Nov 21, 2012 5:03 pm Post subject: |
|
|
Не являются ошибочными:
| Quote: | поможемd
наddписание | а вот наdddписание - уже ошибочное.
Странно всё это... |
|
| Back to top |
|
 |
FeyFre
Joined: 07 Aug 2007 Posts: 1888 Location: Vinnitsa, Ukraine
|
Posted: Wed Nov 21, 2012 9:56 pm Post subject: |
|
|
| Эм, у меня они все ошибочные. Или вместо "d","dd","ddd" мне нужно подобрать специальный набор символов? |
|
| Back to top |
|
 |
VladSh
Joined: 29 Nov 2006 Posts: 2507 Location: Киев, Русь
|
Posted: Wed Nov 21, 2012 11:09 pm Post subject: |
|
|
| FeyFre wrote: | | Эм, у меня они все ошибочные. | Ото ж я и говорю - странно, хотя Aspell у нас одинаковый и словари.. разве что у меня украинский не установлен. |
|
| Back to top |
|
 |
Infocatcher
Joined: 06 Aug 2007 Posts: 1431
|
Posted: Mon Dec 10, 2012 9:50 am Post subject: |
|
|
| После вызова +Call("SpellCheck::Background") обновляется только активная часть разделенного окна. |
|
| Back to top |
|
 |
VladSh
Joined: 29 Nov 2006 Posts: 2507 Location: Киев, Русь
|
Posted: Mon Dec 10, 2012 10:19 am Post subject: |
|
|
FeyFre
Если будете что-то допиливать/перепиливать, то очень прошу сделать, чтобы при нажатых клавишах, влияющих на промотку страницы (Left, Right, Up, Down, PgUp, PgDown) и удаление символов (Del, Backspase) определение и прорисовка неверных слов не срабатывала. Т.е. когда нажата любая из вышеупомянутых клавиш, то не определять/прорисовывать, а делать это при только отпускании.
Может быть опционально (какой-то параметр в ini), но пожалуйста, сделайте, а то уж очень плохо работать на старых компах! |
|
| Back to top |
|
 |
FeyFre
Joined: 07 Aug 2007 Posts: 1888 Location: Vinnitsa, Ukraine
|
Posted: Thu Dec 13, 2012 10:24 pm Post subject: |
|
|
VladSh
А попробуйте эту версию. |
|
| Back to top |
|
 |
VladSh
Joined: 29 Nov 2006 Posts: 2507 Location: Киев, Русь
|
Posted: Fri Dec 14, 2012 10:14 am Post subject: |
|
|
FeyFre
Надо теперь найти слабый комп, чтобы скорость движения каретки сравнить с включенным плагином и без; это в следующий раз когда к заказчику поеду.
Вообще по работе:
1. Если в нескольких строках специально сделать ошибки, а затем установить курсор ниже, а потом просто нажать Up и держать, то проходя по отмеченным словам курсор как бы удаляет существующие отметки.
После отпускания клавиши происходит не НЕмедленная перепрорисовка неправильных слов, а с задержкой в 1-2 секунды, создаётся впечатление, что на этой операции оно подтормаживает. Если бегать курсором по одному и тому же куску текста, то при последующих "пробегах" задержка перед прорисовкой меньше.
Убирать прорисовку при нажатии клавиш Up/Down и прохождении по определённому слову не надо, это стоит делать только при клавишах Del/Backspase.
2. При нажатии Del/Backspase убираются все подчёркивания ниже этой строки, а потом, при отпускании, неправильные слова всего окна редактирования прорисовываются снова, что долго. Лучше бы это действовало на текущее подчёркнутое слово, при невозможности - на текущую строку.
3. При одиночном нажатии Up/Down вся прорисовка подёргивается (происходит сброс и прорисовка заново; это хорошо видно, когда в текущей строке рядом 2 подчёркнутых слова), что тоже не нужно. Нужна перепрорисовка только когда в результате Up/Down текст "проскролился" в окне редактирования. А лучше именно ДОпрорисовка только появляющегося текста, как, вроде бы, сделано в текущей версии.
4. Если нажимать одиночный Left, то при каждом нажатии прорисовка убирается и снова проставляется, что подтормаживает. В этом случае лучше оставить предыдущую работу, т.е. текст не должен "мигать". Должен только когда в результате Left/Right текст "проскролился" в окне редактирования. Этот пункт похож на предыдущий.
Спасибо за начинание!
Upd: сейчас поставил текущую официальную версию, так там при движении Up/Down прорисовка не подёргивается, при скроле текста в результате действия кнопок новый текст прорисовывается мгновенно(!), я не вижу никакого "подрагивания", такое ощущение, что реально прорисовывается не всё окно редактирования, а только добавляемый текст.
Вы оптимизировали прошлую версию в этом плане? А то я её не смог потестить на старых компах((
Ещё заметил: при долгом нажатии Del низлежащие "подчёркивания" становятся блёклыми, а при отпускании клавиши прорисовываются в полный цвет, - интересный эффект!
В общем, тестовая версия во многих случаях стала работать гораздо медленнее (это стало видно на моём i3 3.2), возможно из-за того, что делает ненужные действия, а возможно из-за того, что для перепрорисовки стало использоваться отключение/включение плага (почему-то возникло такое ощущение), что долго. Т.е. в текущей официальной версии на указанной конфигурации работать гораздо комфортней.
Сравнить скорость при долгом нажатии Del/Backspace не могу, т.к. пока нет доступа к слабым компам. |
|
| Back to top |
|
 |
FeyFre
Joined: 07 Aug 2007 Posts: 1888 Location: Vinnitsa, Ukraine
|
Posted: Fri Dec 14, 2012 12:08 pm Post subject: |
|
|
VladSh,
> Вообще по работе:
Я вкурсе, грубо говоря, так специально делалось.
Давайте я объясню принцип, что изменилось, а Вы уже решите лучше или хуже:
Когда пришел пинок "перерисуй окно редактирования", тут появляюсь я и начинаю в заданой области искать слова и рисовать. Замечу, то практически после каждой операции с кнопками приходит такой пинок, ибо нужно перерисовать(либо редактирование, либо движение курсора).
Добавил:
Теперь я дополнительно ловлю все операции с кнопками. При каждой операции я взвожу некий флажок.
Рисовальщик ошибок в свою очередь смотрит "флажок поднят" значит ничего не делать, опущен - рисовать как обычно(вот Вам и ощущение отключения).
За флажком следит арбитр: он каждую секунду смотрит: опущен - ничего не делать, поднят - опустить, и перерисовать окно. Таким образом если за секунду пришло 10 нажатий, то я рисую(и проверяю) не 10 раз, а один. Но побочным эффектом является то, что те 10 раз просили перерисовывать маленькую область, фактически только ту что изменилась, а 1 раз - приходится перерисовывать всё, ибо невозможно выяснить куда за время предыдущих 9 занятий переместилась область которую нужно перерисовать(это ваш пункт 3). |
|
| Back to top |
|
 |
VladSh
Joined: 29 Nov 2006 Posts: 2507 Location: Киев, Русь
|
Posted: Fri Dec 14, 2012 3:11 pm Post subject: |
|
|
FeyFre
Спасибо за описание. Но сказать что-то по делу трудно, т.к. не знаешь, как оно раньше работало. Можно ли точно также описать, для сравнения? |
|
| Back to top |
|
 |
FeyFre
Joined: 07 Aug 2007 Posts: 1888 Location: Vinnitsa, Ukraine
|
Posted: Fri Dec 14, 2012 4:48 pm Post subject: |
|
|
VladSh, ну дык
| Quote: | | Когда пришел пинок "перерисуй окно редактирования", тут появляюсь я и начинаю в заданой области искать слова и рисовать. |
Техически так:
Пришел WM_PAINT - нарисовать окно. Даю АР нарисовать фон и слова. Далее я смотрю какую область окна попросили перерисовать(эта область не всегда полное окно, чаще всего строчка и нескокльо последующих), определяю диапазон текста размещенного в этой области и начинаю в этом диапазоне искать слова и проверять и подчеркивать.
Стало:
Включение функции фоновой проверки: сделать флаг=0
Кнопочное событие: сделать флаг=1
WM_PAINT - нарисовать окно: если флаг=0 то проверить и нарисовать(тем же алгоритмом).
Событие секундного таймера: если флаг=1 сделать его 0 и заставить перерисовать окно(полностью). За интервал срабатывания таймера событий WM_PAINT может прийти десятки, каждое требующее перерисовать свою область. За интервал срабатывания таймера может пройти десяток кнопочных событий, которые могут менять текст, а значит и отображение, т.е порождать WM_PAINT. |
|
| Back to top |
|
 |
VladSh
Joined: 29 Nov 2006 Posts: 2507 Location: Киев, Русь
|
Posted: Sat Dec 15, 2012 6:21 pm Post subject: |
|
|
Спасибо, ясно.
Мы, "высокоуровневики" и пользователи привыкли, что оно там "как-то само всё делается")), невольно начинаешь уважать тех, кто это на низком уровне рубает.
Значит по таймеру - от него придётся отказаться. Таймеры хороши для каких-то фоновых операций, т.е. где юзер не ожидает немедленного исполнения, например то же отображение лога в реальном времени.
Тут же надо "немедленно".
Вот этот вариант идеален:
| FeyFre wrote: | | Пришел WM_PAINT - нарисовать окно. Даю АР нарисовать фон и слова. Далее я смотрю какую область окна попросили перерисовать(эта область не всегда полное окно, чаще всего строчка и нескокльо последующих), определяю диапазон текста размещенного в этой области и начинаю в этом диапазоне искать слова и проверять и подчеркивать. | но хотелось бы вклиниться перед рисованием подчёркиваний.
Вот, на примере нажатия PgUp: мы находимся на первой странице, жмём PgUp, перед самой отрисовкой определяем, что это PgUp (ну или то, 'какая была нажата клавиша' можно передать параметром, если там не линейный код), заходим в switch по 'кодам нажатых клавиш' и в case для PgUp делаем свою проверку "если текст в окне редактирования не проскролился (а он не проскролился, т.к. находимся на 1-й странице)", то ничего не определяем и не прорисовываем.
Т.о. то, что я предлагаю, это для некоторых клавиш поставить такие case и просто в некоторых случаях не прорисовывать - выходить, ничего не делая. А именно (добавить обработку по 2-м основным правилам):
1. Если жмутся клавиши, изменяющие содержимое окна редактирования, и клавиша нажата и не отпускается (нажали Del и держим или нажали любой символ и держим), то ничего не нужно определять и прорисовывать, пока клавиша не будет отжата.
2. Если жмутся клавиши "навигации" (не изменяющие содержимого): Left, Right, Up, Down, PgUp, PgDown), то для них нужно определять (дополнительно отлавливать событие?), проскролился ли текст в окне редактирования, и если да, то при отпускании клавиши производить определение и прорисовку.
Если же так вклиниться можно, тогда всё решаемо.
P.S. Знаю, что вариант с case плохой... Я у себя для скорости инициализирую собственные 'объекты поведения' для определённых случаев (здесь это специальные клавиши) и объект поведения для всех остальных случаев, и засовываю их в объект, аналогичный Dictionary. При нажатии любой клавиши можно получить соотв. объект поведения по коду нажатой клавиши и вызвать у него метод, выполняющий действия, который состоит из предварительного условия (условия может и не быть), определения просчитываемого текста и вызова общего метода прорисовки слов с ошибками. |
|
| Back to top |
|
 |
VladSh
Joined: 29 Nov 2006 Posts: 2507 Location: Киев, Русь
|
|
| Back to top |
|
 |
Drugmix
Joined: 08 Apr 2013 Posts: 24
|
Posted: Mon Apr 08, 2013 10:01 pm Post subject: |
|
|
| FeyFre wrote: | | Magister, spellcheck x64 не существует. И не просуществует ровно столько, сколько мне понадобится времени что-бы найти для него адекватную замену. Так что предложения принимаются. |
>2 лет прошло с того момента - неужели до сих пор не нашлось адекватной замены? нельзя ли просто пересобрать х32 версию имеющегося плагина под х64?
p.s.: я новичок, только приобщился к AkelPad, тему не читал, то сообщение нашёл гуглом. |
|
| Back to top |
|
 |
Infocatcher
Joined: 06 Aug 2007 Posts: 1431
|
Posted: Tue Apr 09, 2013 5:33 am Post subject: |
|
|
| Drugmix wrote: | | нельзя ли просто пересобрать х32 версию имеющегося плагина под х64? |
http://akelpad.sourceforge.net/forum/viewtopic.php?p=15960#15960
| FeyFre wrote: | | Nizaury, плагин будеть работать на x64 как только найду ASpell x64, а пока нет. Я конечно могу выпустить x64-плагин-пустышку, который будет только подсвечивать все слова которые не находятся в белых списках, но вряд ли это будет назвать "работает". |
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|