Page 15 of 97
Posted: Wed Jun 23, 2010 9:40 am
by [Yustas.NeO]
ShiftMarker.js
Небольшое предложение по изменению функционала: нельзя ли сделать параметры такими:
1.
_10 устанавливает маркер на 10;
2.
+10 смещает маркер на 10 вправо;
3.
-10 смещает маркер на 10 влево.
SelCompleteLine.js
А можно чуточку поподробнее, а то у меня так и не получается

Я хотел повесить в "Меню окна редактирования" пункт меню типа
-"SelectCompleteLine.js... Alt+L" Call("Scripts::Main", 1, "SelectCompleteLine.js")
и ткнув курсор в какую-нибудь часть текста (или выделив несколько строк) и выбрав этот пункт меню - получить выделение строки (или нескольких строк).
Подскажите, пожалуйста, какой текст надо внести в файл
SelectCompleteLine.js?
Posted: Wed Jun 23, 2010 9:54 am
by VladSh
[Yustas.NeO] wrote:Не может, случаем, быть так, что ты смотришь не на черту маркера а на черту активного столбца?
Нет, я не использую "активный столбец".
Posted: Wed Jun 23, 2010 10:06 am
by VladSh
[Yustas.NeO]
В контекстном меню вызов:
-"
Полное выделение строк" Call("Scripts::Main", 1, "
MyScript.js")
Создаём собственный файл
MyScript.js, вот его код:
Code: Select all
//Подключаем скрипт-"библиотеку" SelCompleteLine.js, который содержит функции для работы с выделенным текстом
eval(AkelPad.ReadFile(AkelPad.GetAkelDir() + "\\AkelFiles\\Plugs\\Scripts\\SelCompleteLine.js", 0xD, 0, 0));
//Вызываем её, т.е. выделяем текст
SelCompleteLine(AkelPad.GetEditWnd(), AkelPad.GetSelStart(), AkelPad.GetSelEnd());
//Пишем собственную обработку выделения
//..
Всё.
Posted: Wed Jun 23, 2010 10:12 am
by [Yustas.NeO]
Блин, даже и не знаю...
Сверим вызовы?
-"ShiftMarker.js" Call("Scripts::Main", 1, "ShiftMarker.js", "-10") Icon("explorer.exe", 11)
-"ShiftMarker.js" Call("Scripts::Main", 1, "ShiftMarker.js", "-1") Icon("explorer.exe", 11)
-"ShiftMarker.js" Call("Scripts::Main", 1, "ShiftMarker.js", " 1") Icon("explorer.exe", 12)
-"ShiftMarker.js" Call("Scripts::Main", 1, "ShiftMarker.js", " 10") Icon("explorer.exe", 12)
Posted: Wed Jun 23, 2010 10:14 am
by VladSh
У меня только
Code: Select all
-"ShiftMarker.js" Call("Scripts::Main", 1, "ShiftMarker.js", "-10")
-"ShiftMarker.js" Call("Scripts::Main", 1, "ShiftMarker.js", " 10")
Да Бог с ним, мне просто было интересно, что оно такое...
Posted: Wed Jun 23, 2010 10:42 am
by [Yustas.NeO]
Это немного не то. Я имел ввиду - выделение от \n до \n.
Такое-то выделение можно получить просто проведя курсором по LinaBoard-плагину...
Posted: Wed Jun 23, 2010 11:06 am
by VladSh
[Yustas.NeO] wrote:Такое-то выделение можно получить просто проведя курсором по LinaBoard-плагину...
Скрипт нужен, чтобы выделять программно, а не тягать рукой
[Yustas.NeO] wrote:Это немного не то. Я имел ввиду - выделение от \n до \n.
Есть SelCompleteLine.js, есть
AkelPad.SetSel(nSelStart, nSelEnd) (Scripts-Rus.txt), чем оно не подходит?
То, что писалось ранее
[Yustas.NeO] wrote:и ткнув курсор в какую-нибудь часть текста (или выделив несколько строк) и выбрав этот пункт меню - получить выделение строки (или нескольких строк).
для этого как раз и есть SelCompleteLine.js.
Опиши задачу подробно, я не пойму, что ты хочешь...
EDITED: Или может тебе надо просто получить выделенный текст? Так для этого есть
AkelPad.GetSelStart,
AkelPad.GetSelEnd или просто
AkelPad.GetSelText.
Posted: Wed Jun 23, 2010 11:18 am
by [Yustas.NeO]
VladSh wrote:Скрипт нужен, чтобы выделять программно, а тягать рукой

Я имел ввиду что, то что сделал предыдущй скрипт - "руками" я сделаю быстрее (в один клик) по сравнению с вызовом меню
VladSh wrote:чем оно не подходит?
Не подходит оно тем, что я не умею писать эти скрипты
VladSh wrote:Опиши задачу подробно, я не пойму, что ты хочешь...
Режим "Переносить длинные строки включен". Имеем очень длинную строчку текста, не влезающую на экран и расположившуюся в несколько строк. Ставим курсор куда-то в середину этой строчки текста и выбираем пункт меню "Выделить целиком строку". Выделение становится: от ближайшего
физического \n выше по тексту до ближайшего
физического \n ниже по тексту. В случае если не просто курсор стоит, а выделено несколько строк текста, то: от ближайшего
физического \n выше верхней границы выделенного до ближайшего
физического \n ниже нижней границы выделенного.
Posted: Wed Jun 23, 2010 11:32 am
by Instructor
[Yustas.NeO]
Тройной клик мыши выделяет строку полностью.
Posted: Wed Jun 23, 2010 11:52 am
by [Yustas.NeO]
О! Спасибо!
Но для выделения нескольких строк, видимо придется все-таки JS изучать

Posted: Wed Jun 23, 2010 12:09 pm
by VladSh
Тройной клик чем не подходит?
Кстати он глючит с включённой SmartSel::NoSelEOL

Posted: Wed Jun 23, 2010 12:14 pm
by Instructor
[Yustas.NeO] wrote:ShiftMarker.js
Небольшое предложение по изменению функционала: нельзя ли сделать параметры такими:
1. _10 устанавливает маркер на 10;
2. +10 смещает маркер на 10 вправо;
3. -10 смещает маркер на 10 влево.
Добавил.
Posted: Wed Jun 23, 2010 12:45 pm
by [Yustas.NeO]
VladSh wrote:Тройной клик чем не подходит?
Тем что выделяет только одну строчку текста, а надо - по выделенному куску выделять все строчки текста содержащие это выделение.
Если я правильно разобрался...
Code: Select all
var nSelStart=AkelPad.GetSelStart();
var nSelEnd=AkelPad.GetSelEnd();
var nSelTemp;
if (nSelStart > nSelEnd)
{
nSelTemp=nSelEnd;
nSelEnd=nSelStart;
nSelStart=nSelTemp;
}
AkelPad.SetSel(0, 1000000);
var allText=AkelPad.GetSelText();
var lineStart=allText.lastIndexOf('a', nSelStart);
var lineEnd=allText.indexOf('a', nSelEnd);
AkelPad.SetSel(lineStart+1, lineEnd);
Подскажите плиз:
1. Есть ли другой способ искать во всем тексте? (9-10 строки)
2. Как искать "конец строки" "перевод каретки", да так, что б не зависило от кодировки? (11-12 строки)
Instructor wrote:Добавил.
В очередной раз Гранд мерси

Posted: Wed Jun 23, 2010 1:09 pm
by VladSh
[Yustas.NeO] wrote:Тем что выделяет только одну строчку текста, а надо - по выделенному куску выделять все строчки текста содержащие это выделение.
Он правильно выделяет, несколько строк. Это баг
SmartSel::
NoSelEOL, при его включении выделяется одна строчка, причём от начала,
до текущего положения курсора, а не до конца строки.
[Yustas.NeO] wrote:Подскажите плиз:
1. Есть ли другой способ искать во всем тексте?
На сколько мне известно - на данный момент нет.
Выделить всё:
Либо что-то мутить на основе тех функций, что внутри SelCompleteLine.js.
[Yustas.NeO] wrote:2. Как искать "конец строки" "перевод каретки", да так, что б не зависило от кодировки?
Использовать не
\n, а
\r.
Posted: Wed Jun 23, 2010 1:32 pm
by [Yustas.NeO]
VladSh wrote:Он правильно выделяет, несколько строк. Это баг SmartSel::NoSelEOL, при его включении выделяется одна строчка, причём от начала, до текущего положения курсора, а не до конца строки.
Не-не-не, я имею ввиду: если в выделени находится несколько строк текста (тоесть в выделении находится символ переноса строки.), то нужно получить ПОЛНОЕ выделение этих строк текста. А если тройным кликом, то выделится только текущая строка текста.
К тому же этот плагин у меня и не включен...
VladSh wrote:На сколько мне известно - на данный момент нет.
Будем подождать
VladSh wrote:Выделить всё:
Спасибо, пока подойдет!
VladSh wrote:Использовать не \n, а \r.
Ок!
Вот что получилось:
Code: Select all
var nSelStart=AkelPad.GetSelStart();
var nSelEnd=AkelPad.GetSelEnd();
var nSelTemp;
if (nSelStart > nSelEnd)
{
nSelTemp=nSelEnd;
nSelEnd=nSelStart;
nSelStart=nSelTemp;
}
AkelPad.SetSel(0, -1);
var allText=AkelPad.GetSelText();
var lineStart=allText.lastIndexOf('\r', nSelStart);
var lineEnd=allText.indexOf('\r', nSelEnd);
AkelPad.SetSel(lineStart+1, lineEnd);
И вроде бы даже работает так как я хотел.
Жаль только что скролл текста прыгает...