SmartSel plugin

Discuss and announce AkelPad plugins
  • Author
  • Message
DV
Offline
Posts: 1250
Joined: Thu Nov 16, 2006 11:53 am
Location: Kyiv, Ukraine

Post by DV »

Можно попробовать блокировать работу NoSelEOL, если показан диалог Поиска или Замены. Но тогда NoSelEOL не будет работать и в том случае, когда мы работаем в окне редактирования, а неактивный диалог поиска/замены просто висит на экране.

(добавлено позднее) Появилась ещё идея использовать GetFocus() - если во время изменения выделения фокус ввода не на окне редактирования, значит, выделение меняется извне (например, из диалогов поиска/замены).

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

Post by FeyFre »

DV
Ну как минимум на время обработки Акелом сообщений AKD_TEXTFIND, AKD_TEXTREPLACE нужно приостановится - программные(со скриптов и с плагинов) поиск/замена хотя бы будут работать.
Насчет замены через GUI - не повезло. Akel выполняет замену внутренними функция напрямую(Edit.cpp ReplaceText) минуя эти сообщения. И других специфических, на которые можно было бы среагировать, не использует.
Сообщение AEM_TEXTFIND тоже активно пользуется в поиске(и в пошаговой замене), можно вокруг него поплясать.
Ещё один способ привязаться в голову пришел: WM_SETREDRAW FALSE используется только автоматическими алгоритмами, которые манипулируют текстом. Поиск/замена тоже сюда входят. Всё что делается пользователем вручную(мышь, клавиатура) WM_SETREDRAW не использует. Можно попытаться отключатся между парой WM_SETREDRAW FALSE - WM_SETREDRAW TRUE.

DV
Offline
Posts: 1250
Joined: Thu Nov 16, 2006 11:53 am
Location: Kyiv, Ukraine

Post by DV »

Обновление плагина: Очередная медитация на тему NoSelEOL. Добавлено множество сообщений, которые NoSelEOL игнорирует (например, AKD_TEXTFIND и др., EM_FINDTEXT и др.).
Ахтунг! Это может повлиять на работу макросов, "обходящих" NoSelEOL.

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

Post by VladSh »

DV
Возможно ли что-то сделать с этой багофичей?

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

Post by VladSh »

Up!
Сделайте пожалуйста что-нибудь хотя бы с багом из первого пункта (см. ссылку в пред. сообщении)!
При отключенной функции NoSelEOL выделение текущей строки работает правильно.

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

DV
Сегодня пришло письмо, в котором человек указывал на то, что не работает Ctrl+Shift+Del - выделяется только строка.

Если назначение SmartSel::NoSelEOL только в том, чтобы не выделять строку при тройном клике, а также выделении строки нажатием на границу слева, то почему не использовать AEN_SELCHANGED и AESCT_MOUSETRIPLECLK, AESCT_MOUSELEFTMARGIN?

DV
Offline
Posts: 1250
Joined: Thu Nov 16, 2006 11:53 am
Location: Kyiv, Ukraine

Post by DV »

Instructor wrote:не работает Ctrl+Shift+Del - выделяется только строка.
А что он должен делать? Я вообще не вижу никакой реакции после нажатия...

Изначальное назначение NoSelEOL было в том, чтобы при выделении всей строки (Shift+End или клик левее начала строки) в RichEdit не выделялся завершающий символ переноса строки.
Однако в AkelEdit это уже не столь актуально, поскольку здесь Shift+End не выделяет символ переноса строки, в отличие от RichEdit. Более того, если в AkelEdit тянуть мышку с зажатой левой кнопкой (режим выделения) за конец строки, символ переноса строки при этом так же не выделяется - в отличие от RichEdit. А именно с подобным поведением RichEdit боролся NoSelEOL.
Собственно говоря, не знаю, чего народ ожидает от NoSelEOL сейчас, поскольку поведение AkelEdit меня вполне устраивает :)
Instructor wrote:почему не использовать AEN_SELCHANGED и AESCT_MOUSETRIPLECLK, AESCT_MOUSELEFTMARGIN?
Наверное, потому, что, когда разрабатывался NoSelEOL, таких вещей ещё не было :)

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

DV
Опечатался - имелось ввиду Ctrl+Shift+End.

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

Post by VladSh »

DV wrote:Собственно говоря, не знаю, чего народ ожидает от NoSelEOL сейчас, поскольку поведение AkelEdit меня вполне устраивает :)
Народ ожидает, чтобы при выделении строки тройным кликом по ней, а также с помощью нажатия на область слева от текста курсор бы не мигал на следующей строке :)
Если это было бы реализовано, то дальше надо посмотреть (как скрипты и плагины работают с выделением), возможно этот функционал сейчас и был бы избыточным.

DV
Offline
Posts: 1250
Joined: Thu Nov 16, 2006 11:53 am
Location: Kyiv, Ukraine

Post by DV »

VladSh wrote:при выделении строки тройным кликом по ней, а также с помощью нажатия на область слева от текста курсор бы не мигал на следующей строке :)
Постараюсь глянуть. Исходя из предыдущего комментария от Instructor, наверное, проще будет сначала сделать новую ф-цию NoSelEOL2, перехватывающую лишь указанные выше сообщения и флаги, - с тем, чтобы впоследствии вообще убрать старую реализацию NoSelEOL.

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

Post by VladSh »

DV wrote:Исходя из предыдущего комментария от Instructor, наверное, проще будет сначала сделать новую ф-цию NoSelEOL2
Я думаю, раз сам AkelEdit поддерживает выделение с захватом и без захвата символа переноса строки (при выделении Shift+End и мышью), то по хорошему было бы чтобы и выделение предложения без захвата символа переноса строки поддерживалось контролом или прогой, а то получается, что часть делает контрол, а часть плагин...
Но если такое не будет реализовано в проге, то, естественно, обновлённый NoSelEOL очень нужен!


Добавлено: да, и при новом NoSelEOL надо будет вручную обрабатывать ситуации захвата переноса строки - всегда будет возможно 2 варианта, а при NoSelEOL всегда был 1 - без захвата. Поэтому надо будет переписывать скрипты, т.к. многие, в случае захвата перевода строки, могут начать работать некорректно. Всё-таки проще, когда обрабатываешь 1 вариант.
Last edited by VladSh on Tue Jul 19, 2011 12:02 pm, edited 1 time in total.

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

Post by FeyFre »

VladSh
Не только скрипты могут пострадать, плагины тоже. Помнится когда-то уже решали проблему захвата/незахвата переноса при поиске. Это я так, к слову.

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

В 4.6.4 добавлен недокументированный ручной параметр для "MouseOptions" со значением 16 :)

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

Post by VladSh »

Instructor wrote:В 4.6.4 добавлен недокументированный ручной параметр для "MouseOptions" со значением 16 :)
:D
Здорово! Только как теперь скрипты писать, с учётом того, что это у всех будет включено? :roll: :twisted:

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

Может как-нибудь задокументирую к релизу.
VladSh wrote:Только как теперь скрипты писать, с учётом того, что это у всех будет включено? :roll: :twisted:
Для скриптов и плагинов наличие/отсутствие данного параметра никакой роли играть не будет.
Post Reply