Scripts plugin

Discuss and announce AkelPad plugins
  • Author
  • Message
KDJ
Offline
Posts: 1949
Joined: Sat Mar 06, 2010 7:40 pm
Location: Poland

Post by KDJ »

Instructor wrote:KDJ
Here is simple way to do this:
Thank you very much, Instructor.
You are perfect.

KDJ
Offline
Posts: 1949
Joined: Sat Mar 06, 2010 7:40 pm
Location: Poland

Post by KDJ »

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

Offline
Posts: 1879
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post 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.

Offline
Posts: 767
Joined: Mon Sep 28, 2009 10:03 am
Location: Minsk, Belarus

Post by se7h »

Infocatcher wrote:Хорошо бы и правда какую-нибудь консоль и API для вывода туда сообщений.
поддерживаю
при работе таких программ как HTML Tidy, AStyle и подобных важно узнать результат их работы, да и в отладке скриптов лог-панель не помешает

Offline
Posts: 267
Joined: Mon Mar 12, 2007 3:45 pm

Post by [Yustas.NeO] »

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

Offline
Posts: 267
Joined: Mon Mar 12, 2007 3:45 pm

Post by [Yustas.NeO] »

Как-то странно себя ведет AkelPad.GetTextRange(0, -1) при вертикальном выделении...
Наглядно выглядит на примере скрипта:
var allText=AkelPad.GetTextRange(0, -1);
AkelPad.MessageBox(AkelPad.GetMainWnd(), allText, "MyCaption", 64 /*MB_ICONINFORMATION*/);
\
При нормальном выделении - все как надо.

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

Post by Instructor »

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

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

Post by Instructor »

Исправлено: метод GetTextRange() некорректно возвращал текст, если присутствовало вертикальное выделение.

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


Scripts plugin v6.6

Offline
Posts: 267
Joined: Mon Mar 12, 2007 3:45 pm

Post 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
Last edited by [Yustas.NeO] on Mon Jul 26, 2010 7:23 pm, edited 2 times in total.

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

Post 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.
Так что Вы можете сколько угодно их менять местами при вызове, обработаны они будут как книга пишет.

Offline
Posts: 267
Joined: Mon Mar 12, 2007 3:45 pm

Post by [Yustas.NeO] »

FeyFre wrote:EM_SETSEL
Хех :) Как раз таки УСТАНОВИТЬ выделение - работает правильно :)
Попробуйте AkelPad.SetSel(0, 10) и AkelPad.SetSel(10, 0), и посмотрите у какой границы выделения мигает курсор ;)



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

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

Post by FeyFre »

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

Offline
Posts: 267
Joined: Mon Mar 12, 2007 3:45 pm

Post by [Yustas.NeO] »

FeyFre wrote:Начало выделения - всегда меньший из двух аргументов Start и End.
Конец выделения - всегда больший из двух аргументов Start и End.
The start value can be greater than the end value.

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

Post by Instructor »

[Yustas.NeO]
Чтобы получить позицию курсора:
viewtopic.php?p=8226#p8226

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

Post by FeyFre »

The start value can be greater than the end value.
И что я сказал что не соответствует написанному?
Post Reply