Scripts plugin

Discuss and announce AkelPad plugins
  • Author
  • Message
Offline
Posts: 269
Joined: Mon Jun 20, 2011 8:33 am
Location: Электросталь

Post by yozhic »

Нашёл виновника!

Code: Select all

CmdLineBegin=/Call("Scripts::Main", 1, "LineBoardRClickPanel.js")
С чистым CmdLineBegin, кстати, и мелькание прекратилось.

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

Post by Instructor »

yozhic
CmdLineEnd=/Call("Scripts::Main", 1, "LineBoardRClickPanel.js")

Offline
Posts: 269
Joined: Mon Jun 20, 2011 8:33 am
Location: Электросталь

Post by yozhic »

Теперь всё прекрасно. Спасибо большое.

Offline
Posts: 381
Joined: Wed Sep 28, 2011 3:05 pm

Post by Cuprum »

Instructor
Вы писали Группируются только изменения текста.
Тогда есть ли какой-то способ, чтобы заменить с помощью скрипта фрагмент текста на другой, при котором ctrl+z будет возвращать в первоначальное, "чистое" состояние. Сейчас, похоже, в скриптах, где используется

Code: Select all

AkelPad.SetSel(...);
AkelPad.ReplaceSel(...);
после отмены остается "висеть" выделение текста. Уж очень хочется от этого избавиться.

Offline
Posts: 582
Joined: Mon Apr 08, 2013 9:50 pm
Location: Win7SP1x64, APx64

Post by Drugmix »

Cuprum
А что мешает сделать SetSel() ещё раз, обнулив выделение и выставив каретку куда хочется (например, в начало первого вхождения)?

Offline
Posts: 381
Joined: Wed Sep 28, 2011 3:05 pm

Post by Cuprum »

Drugmix
Что-то не совсем уловил мысль. Ведь после отработки AkelPad.ReplaceSel(...) выделения и так нет (по умолчанию), зачем SetSel() еще раз?

На примере плагина toggleComments.js.
Вставляем через горячую клавишу однострочный комментарий, после этого, если отмотать шаг назад по ctrl+z, комментарий снимается, но строка остается выделенной. И вот эта "особенность" отмены, кхм....не так как у других ;).

Offline
Posts: 582
Joined: Mon Apr 08, 2013 9:50 pm
Location: Win7SP1x64, APx64

Post by Drugmix »

Я чего-то запутался в том, что вы хотите:
Cuprum wrote:после отмены остается "висеть" выделение текста. Уж очень хочется от этого избавиться.
по этим словам я подумал, что мешает выделение и его надо убрать.
Но тут вы пишете:
[quote="Ведь после отработки AkelPad.ReplaceSel(...) выделения и так нет (по умолчанию), зачем SetSel() еще раз?"[/quote]
А потом снова:
если отмотать шаг назад по ctrl+z, комментарий снимается, но строка остается выделенной.
Поясните что вы хотите.
Я лишь сказал, что SetSel() можно использовать для сброса выделения (выставить начало и конец выделения в одно и то же место).

Offline
Posts: 381
Joined: Wed Sep 28, 2011 3:05 pm

Post by Cuprum »

Drugmix wrote: Поясните что вы хотите.
Есть какой-то документ. В нем с помощью скрипта надо заменить один известный фрагмент текст на другой. Достигается это с помощью

Code: Select all

AkelPad.SetSel(начало фрагмента, конец фрагмента);
AkelPad.ReplaceSel(текст замены);
Теперь, если отменить действие скрипта, первоначальный фрагмент, к которому применялся скрипт становиться выделенным. Вот от этого ненужного выделения хочется избавиться при отмене.

Offline
Posts: 582
Joined: Mon Apr 08, 2013 9:50 pm
Location: Win7SP1x64, APx64

Post by Drugmix »

Можно попробовать команду Undo изменить на Undo + .SetSel(0,0)...

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

Post by Kley »

Instructor
Вопросы по нововведению:
Scripts-Rus.txt wrote:Внешний вызов
...
Call("Scripts::Main", 7, "METHOD", *RESULT)
Приведите, пожалуйста, еще пару примеров (примеры с AkelPad.TextFind видел). Интересует второй параметр с указателем. Но ведь:
Scripts-Rus.txt wrote:Предназначено для ContextMenu, Hotkeys, Toolbar плагинов.
Попробовал переделать вот такую строку:

Code: Select all

Call("Scripts::Main", 1, "EvalCmd.js", `AkelPad.SetClipboardText(AkelPad.GetTextRange(0, -1))`)
на такую:

Code: Select all

Call("Scripts::Main", 7, `AkelPad.SetClipboardText(AkelPad.GetTextRange(0, -1))`)
Ноль эмоций. Правда вот так в буфер попадает 0 (ноль):

Code: Select all

Call("Scripts::Main", 7, `AkelPad.SetClipboardText(AkelPad.GetSelText())`)
Так, конечно, работает:

Code: Select all

Call("Scripts::Main", 7, `AkelPad.SetClipboardText("текст в буфер")`)
А смысл? Похоже совсем я запутался и не туда рою. Помогайте, плиз.

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

Post by Instructor »

Kley
Можно использовать только один метод.

Второй параметр (*RESULT) врятли пригодится, т.к. в методе If() можно использовать прямой вызов без "Call("Scripts::Main", 7, ...".

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

Post by KDJ »

Instructor
I tested two versions of MessageBox:

Code: Select all

var hMainWnd = AkelPad.GetMainWnd();
var sMessage = "Test of MessageBox method. This text should be displayed in one line. In extended version of MessageBox, the line is broken.";
AkelPad.MessageBox(hMainWnd, sMessage, "MessageBox", 0x40 /*MB_ICONINFORMATION*/);
AkelPad.MessageBox(hMainWnd, sMessage, "MessageBox extended", 0x40 /*MB_ICONINFORMATION*/, 0, 1, "OK", 1 /*BMB_DEFAULT*/);
You can see the differences between the two versions:
1. In extended version, text line is broken.
2. Used different fonts.
3. Size and position of windows are different.
4. In extended version, you can not close the window by pressing Esc or Alt+F4.

Can you fix it in extended version?
You could add centering of the window within the owner window.

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

Post by Instructor »

KDJ
In 4.9.7 extended message box closer to standard.

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

Post by Instructor »

Добавлено: необязательный аргумент hDoc в метод SaveFile.

Added: optional argument hDoc in SaveFile method.


Scripts plugin v18.2

Offline
Posts: 269
Joined: Mon Jun 20, 2011 8:33 am
Location: Электросталь

Post by yozhic »

Подскажите, пожалуйста. Строка

Code: Select all

AkelPad.TextReplace(hEditWnd, "abc", "123", 0x00000001, false);
просто выделяет текст "abc", ничего не заменяя. Так и должно быть? Если да, то в чём тогда отличие от

Code: Select all

AkelPad.TextFind(hEditWnd, "abc", 0x00000001);
Post Reply