NoSelEOL 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 »

Пожалуй, во второй ситуации реализация "прямее". А в случае первой каретка в начале любой строки (в том числе реальной, не-WordWrap-овой строки) по нажатию End неудержимо хочет прыгнуть в конец предыдущей строки.

Пробуем:
http://www.megaupload.com/?d=DXNY0N9J

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

Post by Instructor »

DV
Почему бы не передать на обработку программе перехваченный WM_KEYDOWN, когда требуется установить курсор в конце строки?

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

Post by DV »

Instructor wrote:DV
Почему бы не передать на обработку программе перехваченный WM_KEYDOWN, когда требуется установить курсор в конце строки?
В принципе, результат тот же, только более "прямым" путём :)

Пробуем:
http://www.megaupload.com/?d=62KNSFOJ

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

Post by VladSh »

Есть интересный трабл но всё равно значительно лучше!
Спасибо оргомадное! :)

Суть трабла: если нажать End, то курсор уходит нормально в конец текущей строки, если 2-й раз нажать End, то курсор уйдёт в конец следующей.
Это так работает только если курсор изначально установлен в предпоследней строке предложения.

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

Post by DV »

VladSh wrote:Есть интересный трабл
Да, есть такое.
Появилась у меня еще одна идейка: в такой ситуации заставить окно редактирования обработать нажатие End, чтобы узнать, изменится позиция каретки (тогда мы, значит, в начале строки) или нет (тогда мы уже в конце строки). И реагировать на это соответственно. Благо, есть команда WM_SETREDRAW, позволяющая запретить перерисовку окна на то время, пока окно будет гонять картеку туда-сюда.
Если получится, можете поставить свечку за моё здравие :)) Шутка ;)

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

Post by Instructor »

DV

Code: Select all

SendMessage(hWndEdit, EM_EXLINEFROMCHAR, 0, (LPARAM)-1);
Возвращает номер строки, на которой находится курсор.

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

Post by DV »

Instructor wrote:Возвращает номер строки, на которой находится курсор.
Нифига себе! :shock: Какой магией я должен был обладать, чтобы узнать об этом??? Ведь сраный MSDN (MuStDieNow) умалчивает про магический параметр -1.

Пробуем:
http://www.megaupload.com/?d=4Q5EDPKP

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

Post by VladSh »

Instructor, DV
Нет парни, вы монстры! 8)
Спасибо!!!

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

Post by DV »

VladSh wrote:Нет парни, вы монстры! 8)
Работает без дефектов?

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

Post by VladSh »

Да, пока дефектов не наблюдаю. Работает отлично!
Если что-то будет, то опять обращусь :) куда ж я денусь с подводной лодки-то... :lol:

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

Post by VladSh »

DV
Есть всё-таки небольшой баг. Если выделить текст, начиная от конца строки (даже несколько символов), то End не работает. Приходится сбрасывать выделение клавишами Left или Right, а потом уже жать End.

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

Post by DV »

VladSh wrote:Есть всё-таки небольшой баг
Это была оптимизация ;)

Пробуем:
http://ifolder.ru/13860681

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

Post by VladSh »

Теперь выделение сбрасывается, но курсор становится за последним значащим символом, а не в конец строки (когда в конце строки есть пробел); такое поведение, как будто AltSmartEnd не загружен.

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

Post by DV »

VladSh wrote:Теперь выделение сбрасывается, но курсор становится за последним значащим символом, а не в конец строки (когда в конце строки есть пробел); такое поведение, как будто AltSmartEnd не загружен.
???

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

Post by VladSh »

DV wrote:???
В конце предложения ставим пробел, затем сразу же, с этого пробела, начинаем выделять кусок строки влево, потом жмём End, глядим, куда прыгнет курсор.
Locked