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: 831
Location: Kyiv, Ukraine

PostPosted: Mon Sep 07, 2009 7:28 am    Post subject: Reply with quote

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



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

PostPosted: Mon Sep 07, 2009 8:15 am    Post subject: Reply with quote

По алгоритму понятно) А вот с логикой.. текст выделен с конца (с пробелами), а каретка (курсор) ведь находится на тексте. Может если есть выделение, то перебрасывать курсор в конец строки? Это было бы логично - курсор просто подсознательно ожидается в конце строки, независимо от наличия выделения.
Back to top
View user's profile Send private message Visit poster's website
DV



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

PostPosted: Mon Sep 07, 2009 10:24 am    Post subject: Reply with quote

Для altSmartEnd должно прыгать в конец строки, без него - на последний непробельный символ.
Пробуем:
http://www.megaupload.com/?d=B8EO45J0
Back to top
View user's profile Send private message
VladSh



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

PostPosted: Mon Sep 07, 2009 1:40 pm    Post subject: Reply with quote

Тестирую ("тэщу", как у нас говорила одна девушка Laughing ) для altSmartEnd, т.к. только с ним пользуюсь.
Работает! Боков пока не наблюдаю Cool
Back to top
View user's profile Send private message Visit poster's website
DV



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

PostPosted: Wed Sep 16, 2009 7:52 am    Post subject: Reply with quote

v.1.9
- исправлено: иногда каретка исчезала при активной NoSelEOL::Main (например, после сохранения файла с помощью кнопки на Toolbar или через диалог сохранения)
Back to top
View user's profile Send private message
VladSh



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

PostPosted: Mon Nov 02, 2009 11:31 am    Post subject: Reply with quote

DV
Заметил небольшую багофичу: некорректно работает удаление текущей строки по горячим клавишам Ctrl+Y или F8 - удаляется содержимое строки, а не сама строка целиком.
Можно ли это как-то поправить?
Причём желательно было бы ставить обработчик не на указанные комбинации клавиш (они могут измениться), а на вызов команды удаления строки, т.е. чтобы в этом случае NoSelEOL::Main не отрабатывал.
Back to top
View user's profile Send private message Visit poster's website
DV



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

PostPosted: Tue Nov 03, 2009 12:04 pm    Post subject: Reply with quote

VladSh wrote:
Ctrl+Y или F8 - удаляется содержимое строки, а не сама строка целиком.

Внутренняя реализация Ctrl+Y (в самом AkelPad) работает в два этапа:
1. Выделяет строку, включая последний символ переноса строки
2. Удаляет выделение.

NoSelEOL работает так: при изменении выделения исключает последний символ переноса строки из выделенного текста. Это конфликтует с внутренней реализацией Ctrl+Y (с первым этапом).
Back to top
View user's profile Send private message
VladSh



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

PostPosted: Tue Nov 03, 2009 12:16 pm    Post subject: Reply with quote

А ещё до выделения мы не знаем, для чего будет производиться выделение? Т.е. нам неизвестен номер вызываемой команды до выделения?
Back to top
View user's profile Send private message Visit poster's website
DV



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

PostPosted: Tue Nov 03, 2009 2:03 pm    Post subject: Reply with quote

VladSh wrote:
А ещё до выделения мы не знаем, для чего будет производиться выделение?

В этом что-то есть.
Back to top
View user's profile Send private message
DV



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

PostPosted: Thu Nov 05, 2009 12:28 pm    Post subject: Reply with quote

v.2.0
- исправлено: Ctrl+Y не удалял всю строку
Back to top
View user's profile Send private message
VladSh



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

PostPosted: Wed Feb 24, 2010 3:49 pm    Post subject: Reply with quote

Проблемка обнаружилась...

Позже из почты:
Shengalts Aleksander wrote:
Vlad Sh wrote:
Shengalts Aleksander wrote:
Нормально заменяется, закладки не смещаются. Попробуйте поотключать остальные плагины.
Поочерёдно отключал, но ничего не изменилось - закладки всё равно сносит..
Настройки у меня хранятся в ini.
Проблема в NoSelEOL::Main.
Back to top
View user's profile Send private message Visit poster's website
DV



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

PostPosted: Wed Feb 24, 2010 4:51 pm    Post subject: Reply with quote

VladSh wrote:
Проблемка обнаружилась...

Формально это не вина NoSelEOL.
При нажатии на кнопку "Заменить все" AkelPad зачем-то устанавливает диапазон выделения текста от 0 до позиции за последним символом. NoSelEOL это честно перехватывает и смещает правую границу выделения на последний символ.
Почему при этом закладка LineBoard съезжает вниз, мне непонятно.
Как непонятно и то, что и как фильтровать, чтобы этого не происходило.
Наверное, нужно игнорировать какие-то сообщения в определенный момент примерно так же, как это было сделано с IDM_NONMENU_DELLINE, но непонятно, какие и когда.
Back to top
View user's profile Send private message
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5293

PostPosted: Thu Feb 25, 2010 5:54 am    Post subject: Reply with quote

DV
Quote:
При нажатии на кнопку "Заменить все" AkelPad зачем-то устанавливает диапазон выделения текста от 0 до позиции за последним символом.
Наверное для того, чтобы заменить текст (чтобы заменить текст, его надо выделить) Smile

Я бы предложил не производить никаких действий, если выделен весь текст.
Back to top
View user's profile Send private message Send e-mail
DV



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

PostPosted: Thu Feb 25, 2010 3:44 pm    Post subject: Reply with quote

Instructor wrote:
Я бы предложил не производить никаких действий, если выделен весь текст.

А как узнать, выделен ли весь текст? Насколько я помню, GetWindowTextLength() для RichEdit может вернуть неправильную длину всего текста.
Back to top
View user's profile Send private message
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5293

PostPosted: Fri Feb 26, 2010 9:35 am    Post subject: Reply with quote

DV
Code:
int nTextLen=SendMessage(pd->hMainWnd, AKD_GETTEXTLENGTH, (WPARAM)pd->hWndEdit, 0);

Можно и так:
Code:
  GETTEXTLENGTHEX gtl;
  int nTextLen;

  gtl.flags=GTL_DEFAULT|GTL_PRECISE;
  gtl.codepage=0;
  nTextLen=SendMessage(pd->hWndEdit, EM_GETTEXTLENGTHEX, (WPARAM)&gtl, 0);

И возможно даже не только, когда весь текст, но тогда, когда конец выделения находится в конце файла.
Back to top
View user's profile Send private message Send e-mail
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 4 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