Scripts discussion (3)

Discuss and announce AkelPad plugins
Locked
  • Author
  • Message
Offline
Posts: 202
Joined: Sat Mar 28, 2015 2:36 pm
Location: Russia

Post by Kley »

LonerD
В этом скрипте или Акелпаде есть визуальный баг...
После строки 236:
AkelPad.Command(4209 /*IDM_VIEW_WORDWRAP*/);
Вставте:
SendMessage(hEditWnd, 3377 /*AEM_UPDATECARET*/, 0, 0);
Last edited by Kley on Sun Apr 05, 2015 8:54 am, edited 1 time in total.

Offline
Posts: 1162
Joined: Sun Oct 20, 2013 11:44 am

Post by Skif_off »

LonerD
SmartSel::NoSelEOL не вариант?

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

Post by KDJ »

LinesSelectCopyMoveDuplicate.js
Fixed: after script execution, caret is not visible if word wrap is on.

Kley
Thanks for localization of this bug.

Offline
Posts: 171
Joined: Thu Dec 01, 2011 11:15 pm
Location: Россия

Post by LonerD »

Skif_off wrote:SmartSel::NoSelEOL не вариант?
Не совсем. То есть это вариант, но для меня неудобный.
Часто тыкаю левой кнопкой мыши левее строк (в столбце нумерации строк), выделяется целая строка, я её вырезаю (Ctrl+X) и вставляю в другом месте. При включённом NoSelEOL после вырезания остаётся пустая строка, которую нужно вручную удалять...

В то же время для скрипта дублирования строк было бы удобней не учитывать этот самый последний символ перевода строки. То есть я опять же кликаю левой кнопкой мыши в столбце с номерами строк (выделяю нужные строки) и нажимаю хоткей для дублирования строк.

Алгоритмически я понимаю, что нужно вставить две проверки - 1) есть ли выделение, 2) и если есть, то находится ли курсор в начале строки (и если находится - то исключить эту строку из обработки). Вот только как этот фрагмент проверки оформить на js - не знаю.

Offline
Posts: 1162
Joined: Sun Oct 20, 2013 11:44 am

Post by Skif_off »

LonerD
Зачем выделять строку? Достаточно поставить на неё курсор и вызвать команду.
Несколько же строк дублировать почти так же: не выделять от начала первой до конца крайней, достаточно


1 | строка
2 | строка
3 | с|трока

DuplicateLines.js не сработает).
Я не отговариваю :), привык так делать, хочу понять, чем ваш вариант удобнее.

Offline
Posts: 202
Joined: Sat Mar 28, 2015 2:36 pm
Location: Russia

Post by Kley »

Подскажите, пожалуйста, как правильно (это только пример):

Баг(?) в скрипт: InsertUnicodeChar.js

1. Сказать, что в скрипте есть баг, и как он проявляется.

2. Подсказать, ВОЗМОЖНО ОШИБОЧНО, где он:

oSys.Call("User32::SendMessageW", aDlg[IDTEXTCB].HWNDE, 0xB1 /*EM_SETSEL*/, nGetTextLength, nGetTextLength);
(конец функции Templates)

3. Можно ли подсказать, возможно ошибочно и НЕ ЛУЧШИМ ОБРАЗОМ, как сам поправил скрипт:

Удалил строку 102: aDlg[IDTEXTCB].HWNDE = GetComboBoxEditWnd(aDlg[IDTEXTCB].HWND);
Удалил функцию GetComboBoxEditWnd;
В конце функции Templates заменил:
else
{
var nGetTextLength = oSys.Call("User32::SendMessageW", aDlg[IDTEXTCB].HWNDE, 14 /*WM_GETTEXTLENGTH*/, 0, 0);
oSys.Call("User32::SendMessageW", aDlg[IDTEXTCB].HWNDE, 0xB1 /*EM_SETSEL*/, nGetTextLength, nGetTextLength);
oSys.Call("User32::SendMessageW", aDlg[IDTEXTCB].HWNDE, 194 /*EM_REPLACESEL*/, 1, aMenu[nCmd][1]);
}
На:
else
oSys.Call("user32::SetWindowTextW", aDlg[IDTEXTCB].HWND, aMenu[nCmd][1]);

p.s. В данном случаи не знаю к кому и обратиться. Первое сообщение видел, но:
// Authors:
// - idea & first version: Skif_off;
// - development: KDJ, VladSh, Instructor.

Offline
Posts: 1162
Joined: Sun Oct 20, 2013 11:44 am

Post by Skif_off »

Kley
1/2. Так и сделать: назвать скрипт, проблему, как воспроизвести :) Обращаться можно сразу к автору.
3. Можно, только лучше в теге code, если можно.

Обычно автор - тот, кто добавил скрипт в коллекцию.
Упомянутый мой, но это первый мой скрипт, поэтому пожелал упомянуть всех, кто помогал :) В чём, собственно, баг? Посмотреть смогу немного позже, когда доберусь до компа.

Offline
Posts: 202
Joined: Sat Mar 28, 2015 2:36 pm
Location: Russia

Post by Kley »

Skif_off wrote:В чём, собственно, баг?
По умолчанию в ComboBox добавляется строка-код символа "002F".
При выборе символа из меню, он (символ) не заменяет "002F", а дописывается к нему: "002F00AB".

Offline
Posts: 1162
Joined: Sun Oct 20, 2013 11:44 am

Post by Skif_off »

Kley
Это не ошибка, так и задумано, чтобы можно было ввести в поле ввода ComboBox сразу несколько символов из InsertUnicodeChar_templates.csv. Для очистки добавлен соответствующий пункт и

Code: Select all

    if (aMenu[nCmd][1] == sTxtEmpty)
      oSys.Call("User32::SendMessageW", aDlg[IDTEXTCB].HWND, 12 /*WM_SETTEXT*/, 0, "");
Долго думал и решил, что один раз нажать Очистить быстрее, чем вызывать скрипт несколько раз. В любом случае, скрипт выложен публично и я не имею ничего против того, чтобы кто-то менял его так, как считает удобным для себя :)

Offline
Posts: 202
Joined: Sat Mar 28, 2015 2:36 pm
Location: Russia

Post by Kley »

Skif_off
Спасибо.
Чужая Логика потемки :)

Offline
Posts: 3234
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

Skif_off, Kley
А что, нельзя скрипт унифицировать (добавить параметр, отвечающий за разное поведение)? Зачем плодить скрипты, если обе логики работы обоснованы?

Offline
Posts: 1162
Joined: Sun Oct 20, 2013 11:44 am

Post by Skif_off »

- InsertUnicodeChar.js
Добавлен аргумент -add=0/1. По умолчанию вставка шаблона идёт с заменой содержимого поля ввода ComboBox, иначе - дописывается.

Offline
Posts: 3234
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

Instructor
Кажется, что в EvalCmd.js уже ненужна проверка и весь блок обработки /%f|%d|%a/, т.к. в скрипт поступают уже нормальные значения.

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

Post by Instructor »

VladSh
Это для вызова EvalCmd.js из командной строки.

Offline
Posts: 3234
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

Instructor (Сб Фев 05, 2011 9:14 am) wrote:Благодарность за код функции getArg Infocatcher'у.
Люди, у кого-то остался самый первый вариант функции Infocatcher'a getArg? Она была без "значения по умолчанию", анализа на количество аргументов и работала просто со строкой аргументов.
Locked