AkelPad Forum Index AkelPad
Support forum
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

NoSelEOL plugin
Goto page Previous  1, 2, 3, 4, 5  Next
 
Post new topic   This topic is locked: you cannot edit posts or make replies.    AkelPad Forum Index -> Plugins
View previous topic :: View next topic  
Author Message
DV



Joined: 16 Nov 2006
Posts: 851
Location: Kyiv, Ukraine

PostPosted: Mon Apr 21, 2008 2:13 pm    Post subject: Reply with quote

v.1.2 (April 2008)
+ new function: altSmartEnd
Back to top
View user's profile Send private message
VladSh



Joined: 29 Nov 2006
Posts: 2614
Location: Киев, Русь

PostPosted: Wed Apr 23, 2008 11:35 am    Post subject: Reply with quote

Сила! Теперь даже нечего попросить Very Happy
Back to top
View user's profile Send private message Visit poster's website
DV



Joined: 16 Nov 2006
Posts: 851
Location: Kyiv, Ukraine

PostPosted: Fri Jul 04, 2008 12:32 pm    Post subject: Reply with quote

v.1.3
Changed: AkelPad 3.6.0 required.
Back to top
View user's profile Send private message
DV



Joined: 16 Nov 2006
Posts: 851
Location: Kyiv, Ukraine

PostPosted: Wed Aug 13, 2008 7:26 am    Post subject: Reply with quote

v.1.4
* compatibility with column selection in AkelPad 4.0.1+
Back to top
View user's profile Send private message
VladSh



Joined: 29 Nov 2006
Posts: 2614
Location: Киев, Русь

PostPosted: Wed Aug 13, 2008 8:45 am    Post subject: Reply with quote

DV
Емеет ли смысл теперь NoSelEOL::Main, ведь выделение с новым контролом и так не захватывает символ перевода строки/конца файла?
Back to top
View user's profile Send private message Visit poster's website
DV



Joined: 16 Nov 2006
Posts: 851
Location: Kyiv, Ukraine

PostPosted: Thu Aug 14, 2008 10:51 am    Post subject: Reply with quote

захватывает после дбл-кликов, выделяющих всю строку, а также по клику перед началом строки.
Back to top
View user's profile Send private message
VladSh



Joined: 29 Nov 2006
Posts: 2614
Location: Киев, Русь

PostPosted: Mon Nov 17, 2008 9:26 am    Post subject: Неприятный баг Reply with quote

Если предложение переходит на другую строку, то если установить курсор в строку, где находится начало предложения, при нажатии клавиши End курсор переходит не на последний символ этой же строки, а на первый символ следующей строки. Shocked А изредка бывает так, что курсор переходит на просто на следующую строку, а на след. строку в самый конец предложения!
Back to top
View user's profile Send private message Visit poster's website
DV



Joined: 16 Nov 2006
Posts: 851
Location: Kyiv, Ukraine

PostPosted: Thu Nov 20, 2008 8:33 am    Post subject: Reply with quote

Instructor wrote:
VladSh
Такого не наблюдаю. Может дело в NoSelEOL::SmartEnd?


Да, в нём. Но я не вижу решения, поскольку:
1) так ведёт себя EM_EXSETSEL. Хотя это можно было бы обойти, оставив обработку по умолчанию для позиции в конце строки, если бы не
2) для позиции каретки в конце строки, чьё продолжение перенесено на другую строку, EM_EXLINEFROMCHAR возвращает индекс не той строки, на которой находится каретка, а индекс следующей строки. Из-за этого невозможно понять, находится ли каретка в конце первой части перенесенной строки, или же в начале второй части перенесенной строки.
Back to top
View user's profile Send private message
VladSh



Joined: 29 Nov 2006
Posts: 2614
Location: Киев, Русь

PostPosted: Thu Nov 20, 2008 9:19 am    Post subject: Reply with quote

DV
Интересно, по какому алгоритму работает подсветка текущей строки... Она работает правильно, т.е. выход по идее есть. Но это только Instructor может подсказать Smile
Back to top
View user's profile Send private message Visit poster's website
VladSh



Joined: 29 Nov 2006
Posts: 2614
Location: Киев, Русь

PostPosted: Mon Aug 31, 2009 9:22 am    Post subject: Reply with quote

Видимо всё же в алгоритмах ошибки.

Если отключить AltSmartEnd (SmartEnd включён) и установить курсор в предложение, оканчивающееся на этой же строке, то курсор бегает правильно!

Если при этих же условиях установить курсор в предложение, оканчивающееся на следующей строке, то при первом нажатии End курсор устанавливается в конец этой же строки (это правильно! т.е. сделать, чтобы работало правильно, возможно!), при втором нажатии от соскакивает в начало следующей строки!
Это ошибка, но можно было бы реализовать довольно-таки бомбезную штуку - при втором нажатии End устанавливать курсор в конец всего предложения Exclamation Cool Даже если оно занимает несколько строк! Мечта о такой функции есть уже давно Exclamation Very Happy

Если же включить AltSmartEnd, установить курсор в предложение, оканчивающееся на следующей строке, то при нажатии End курсор сразу соскакивает в начало следующей строки!

Если подправите, буду очень признателен, т.к. мучаюсь с соскоком курсора, вот уже год, постоянно... Crying or Very sad
Back to top
View user's profile Send private message Visit poster's website
DV



Joined: 16 Nov 2006
Posts: 851
Location: Kyiv, Ukraine

PostPosted: Tue Sep 01, 2009 7:43 am    Post subject: Reply with quote

Вышеописанное - это частные (локальные) проявления упомянутого поведения EM_EXLINEFROMCHAR:
Quote:
для позиции каретки в конце строки, чьё продолжение перенесено на другую строку, EM_EXLINEFROMCHAR возвращает индекс не той строки, на которой находится каретка, а индекс следующей строки. Из-за этого невозможно понять, находится ли каретка в конце первой части перенесенной строки, или же в начале второй части перенесенной строки.

Установка позиции курсора при нажатии на клавишу End описывается функцией OnEditEndKeyDown в файле "NoSelEOL.c". Можете попробовать поиграться с кодом выше строки
Code:
SendMessage( hEdit, EM_EXSETSEL, 0, (LPARAM) &cr );

Для сборки dll можно использовать Dev-C++ или Visual C++ Express.
Back to top
View user's profile Send private message
VladSh



Joined: 29 Nov 2006
Posts: 2614
Location: Киев, Русь

PostPosted: Tue Sep 01, 2009 8:52 am    Post subject: Reply with quote

Не, я не настолько крут)) таким никогда не занимался Smile

А можно ли как-то анализировать, что если не конец предложения, а соскок курсора вниз (номера строк до нажатия End и после - не совпадают), то насильно возвращать курсор на одну позицию назад?
Back to top
View user's profile Send private message Visit poster's website
DV



Joined: 16 Nov 2006
Posts: 851
Location: Kyiv, Ukraine

PostPosted: Tue Sep 01, 2009 4:14 pm    Post subject: Reply with quote

VladSh wrote:
(номера строк до нажатия End и после - не совпадают), то насильно возвращать курсор на одну позицию назад?

Так должно получиться. Но каретка будет позиционирована не в конце строки, а за один пробел или таб перед концом строки. И придётся ещё колбасить дополнительное условие для такой позиции каретки: "если мы за один пробел или таб до конца текущей строки и если следующая позиция перенесет нас на следующую строку, то по нажатию Енд прыгнуть на последний непробельный символ, иначе прыгнуть в конец строки".
Back to top
View user's profile Send private message
VladSh



Joined: 29 Nov 2006
Posts: 2614
Location: Киев, Русь

PostPosted: Tue Sep 01, 2009 5:41 pm    Post subject: Reply with quote

Пожалуйста! Я Вас умоляю!!! Embarassed Laughing

Upd: Может это из-за наложения алгоритмов происходит? Может удалить вообще SmartEnd (всё равно никто им не пользуется), а оставить только AltSmartEnd?
Back to top
View user's profile Send private message Visit poster's website
DV



Joined: 16 Nov 2006
Posts: 851
Location: Kyiv, Ukraine

PostPosted: Wed Sep 02, 2009 9:39 am    Post subject: Reply with quote

М-да, ну что я могу сказать... Как "костыли" ни приделывай - всё равно криво получается. Пусть у нас есть перенесённая (из-за WordWrap) строка вида

abc__
defghi


где символы подчёркивания означают пробелы.
Ситуации вида

a|bc__
defghi


или

abc_|_
defghi


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

abc__|
defghi


И вот в последней ситуации начинается маразм: если трактовать позицию кусора в конце первой части строки как относящуюся к первой части строки, то случай

abc__
|defghi


считается идентичным приведенному выше - то есть курсор в начале второй части строки по нажатию End прыгнет в конец предыдущей части строки. То есть сюда:

abc|__
defghi


Если же считать, что

abc__|
defghi


относится к началу второй части строки, тогда по нажатию End курсор прыгнет в конец второй части строки:

abc__
defghi|


Короче, в обеих ситуациях поведение неправильное - и я не могу сказать, какое лучше.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   This topic is locked: you cannot edit posts or make replies.    AkelPad Forum Index -> Plugins All times are GMT
Goto page Previous  1, 2, 3, 4, 5  Next
Page 2 of 5

 
Jump to:  
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


SourceForge.net Logo Powered by phpBB © 2001, 2005 phpBB Group