Page 20 of 74

Posted: Sat Jul 24, 2010 1:45 pm
by KDJ
Instructor wrote:KDJ
Here is simple way to do this:
Thank you very much, Instructor.
You are perfect.

Posted: Sat Jul 24, 2010 1:49 pm
by KDJ
Infocatcher wrote:
VladSh wrote:Infocatcher, это ссылка на обновлённый скрипт? Я смотрю, что номер версии и дата не изменились...
Так и код не изменился – я убрал фрагмент, который не использовался.
Now the link does not work at all.

Posted: Sat Jul 24, 2010 3:56 pm
by Infocatcher
KDJ wrote:Now the link does not work at all.
Site was down. And now all seems Ok.
Now I adds restoring of column selection. Not right way in this case (restoring is not needed for already selected text), but it's works.

Posted: Sat Jul 24, 2010 9:08 pm
by se7h
Infocatcher wrote:Хорошо бы и правда какую-нибудь консоль и API для вывода туда сообщений.
поддерживаю
при работе таких программ как HTML Tidy, AStyle и подобных важно узнать результат их работы, да и в отладке скриптов лог-панель не помешает

Posted: Mon Jul 26, 2010 9:40 am
by [Yustas.NeO]
[Yustas.NeO] wrote:AkelPad.GetSelStart вместо начала выделения возвращает ближайшую к началу текста границу выделения, аналогично AkelPad.GetSelEnd вместо конца выделения возвращает ближайшую к концу границу выделения.
Instructor, Стоит ждать исправлений?

Posted: Mon Jul 26, 2010 11:39 am
by [Yustas.NeO]
Как-то странно себя ведет AkelPad.GetTextRange(0, -1) при вертикальном выделении...
Наглядно выглядит на примере скрипта:
var allText=AkelPad.GetTextRange(0, -1);
AkelPad.MessageBox(AkelPad.GetMainWnd(), allText, "MyCaption", 64 /*MB_ICONINFORMATION*/);
\
При нормальном выделении - все как надо.

Posted: Mon Jul 26, 2010 3:58 pm
by Instructor
[Yustas.NeO] wrote:AkelPad.GetSelStart вместо начала выделения возвращает ближайшую к началу текста границу выделения, аналогично AkelPad.GetSelEnd вместо конца выделения возвращает ближайшую к концу границу выделения.
Отсчет символов начинается с нуля, т.е. первый символ находится на позиции 0, второй на 1 и т.д.

Posted: Mon Jul 26, 2010 4:38 pm
by Instructor
Исправлено: метод GetTextRange() некорректно возвращал текст, если присутствовало вертикальное выделение.

Fixed: method GetTextRange() incorrectly returns the text, if vertical selection exists.


Scripts plugin v6.6

Posted: Mon Jul 26, 2010 6:54 pm
by [Yustas.NeO]
Instructor wrote:
[Yustas.NeO] wrote:AkelPad.GetSelStart вместо начала выделения возвращает ближайшую к началу текста границу выделения, аналогично AkelPad.GetSelEnd вместо конца выделения возвращает ближайшую к концу границу выделения.
Отсчет символов начинается с нуля, т.е. первый символ находится на позиции 0, второй на 1 и т.д.
Я не про это говорил.
Перефразирую:

При AkelPad.SetSel(0, 10)
AkelPad.GetSelStart возвращает 0
AkelPad.GetSelEnd возвращает 10

При AkelPad.SetSel(10, 0)
AkelPad.GetSelStart так же как и в первом варианте возвращает 0 а должен вернуть 10
AkelPad.GetSelEnd так же как и в первом варианте возвращает 10 а должен вернуть 0

Posted: Mon Jul 26, 2010 7:11 pm
by FeyFre
[Yustas.NeO]
Не должны. Они делают то что их просят. Вы попросили начало, а началом считается меньшее, вы просили конец - концом считается большее. Пруфлинк EM_SETSEL:
Remarks

The start value can be greater than the end value. The lower of the two values specifies the character position of the first character in the selection. The higher value specifies the position of the first character beyond the selection.
Так что Вы можете сколько угодно их менять местами при вызове, обработаны они будут как книга пишет.

Posted: Mon Jul 26, 2010 7:21 pm
by [Yustas.NeO]
FeyFre wrote:EM_SETSEL
Хех :) Как раз таки УСТАНОВИТЬ выделение - работает правильно :)
Попробуйте AkelPad.SetSel(0, 10) и AkelPad.SetSel(10, 0), и посмотрите у какой границы выделения мигает курсор ;)



Instructor, если это - системные медоты, возможно ли их допилить так, чтобы они работали _правильно_ а не "как книга пишет"?

Posted: Mon Jul 26, 2010 8:08 pm
by FeyFre
[Yustas.NeO]
Читайте по приведенной мной ссылке дальше:
Начало выделения - всегда меньший из двух аргументов Start и End.
Конец выделения - всегда больший из двух аргументов Start и End.
Якорь выделения - аргумент Start.
Активный "хвост" выделения(там где курсор) - аргумент End.
У Вас есть функция AkelPad.GetSelStart - взять НАЧАЛО выделения, а не ЯКОРЬ.
У Вас есть функция AkelPad.GetSelEnd - взять КОНЕЦ выделения, а не ХВОСТ.
Допилить их нельзя, ибо они делают то что заявлено: возвращают концы выделения.
EM_(EX)GETSEL, которое используют эти функции делает то, что заявлено в её описании.
Для получения позиции курсора есть свои методы.

Posted: Tue Jul 27, 2010 12:15 pm
by [Yustas.NeO]
FeyFre wrote:Начало выделения - всегда меньший из двух аргументов Start и End.
Конец выделения - всегда больший из двух аргументов Start и End.
The start value can be greater than the end value.

Posted: Tue Jul 27, 2010 1:36 pm
by Instructor
[Yustas.NeO]
Чтобы получить позицию курсора:
viewtopic.php?p=8226#p8226

Posted: Tue Jul 27, 2010 1:45 pm
by FeyFre
The start value can be greater than the end value.
И что я сказал что не соответствует написанному?