Scripts plugin

Discuss and announce AkelPad plugins
  • Author
  • Message
Offline
Posts: 381
Joined: Wed Sep 28, 2011 3:05 pm

Post by Cuprum »

Skif_off wrote: А зачем? У скрипта может быть любой параметр с любой доступной переменной/переменной окружения, пример и параметры обычно есть в комментарии в начале скриптов.
Когда несколько примеров, как-то нагляднее-понятнее выглядит...

И еще вот какой момент, может кто разъяснит? В Scripts-Rus.txt там, где описан "Внешний вызов" показан такой общий вариант

Call("Scripts::Main", 1, "SCRIPT", "ARGUMENTS")

Получается, что все аргументы передаются внутри одной строки, но нашел тут вот такой пример

Code: Select all

"Наименование позиции меню/подсказки тулбара" Call("Scripts::Main", 1, "Script.js", "%f", 0)
Здесь еще есть 0. Что он в данном случае обозначает? Получается, он появляется уже после строки "ARGUMENTS", но в Scripts-Rus об этом ничего не сказано...

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

Post by Skif_off »

Cuprum
Переменная как переменная, не понимаю, чего вы привязались к ней :) Вам же достаточно

Code: Select all

-"" Command(4158) Icon("%a\AkelFiles\ico\search.ico")
чтобы понять, как пользоваться %a? Или системной в параметрах

Code: Select all

 -"Открыть файлы из списка" Call("Scripts::Main", 1, "OpenSaveMask.js", `-OpenList="%Temp%\ListFiles.lst"`) Icon("%a\AkelFiles\Plugs\ToolBar.dll", 2)
Cuprum wrote:...нашел тут вот такой пример

Code: Select all

"Наименование позиции меню/подсказки тулбара" Call("Scripts::Main", 1, "Script.js", "%f", 0)
Здесь еще есть 0. Что он в данном случае обозначает? Получается, он появляется уже после строки "ARGUMENTS", но в Scripts-Rus об этом ничего не сказано...
Могу предположить, что 0 задаёт работу в фоне, т.е. выполняется параллельно, но в AkelHistory-Rus.txt: AkelPad 4.0.0 alpha 1 (28.05.2008), а в текущей документации такого нет, но инфа, как вызывать скрипт с параметрами, есть - я бы забил.

______________________________
Такой вопрос возник: если в скрипте вызываю другой скрипт, например,

Code: Select all

AkelPad.CallW("Scripts::Main", 1, "Multi_SR.js", '"\<p\>\n[ \t]*" "<p>" 0 1 0 16 3')
в jsBeautifier.js, то параметр после "Scripts::Main" нужно менять с 1 на 2?

Добавлено:
Кажется, всё-таки надо. Исправил, но почему не всплыли проблемы? Слишком быстро работало?

Offline
Posts: 670
Joined: Thu Jun 03, 2010 8:47 am
Location: Сочи, Хоста
Contact:

Post by Andrey_A_A »

Code: Select all

если в скрипте вызываю другой скрипт
Skif_off, где-то писалось, что надо, + ещё надо ScriptNoMutex()

Code: Select all

Call AkelPad.ScriptNoMutex()
Call AkelPad.Call("Scripts::Main", 2, "BracketsGoTo.js", "'L'")
Когда несколько примеров, как-то нагляднее-понятнее выглядит...
Cuprum, готовлю к выпуску сборку AkelPad Image 29 - вот несколько примеров:

MenuBarText.akelmenu

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

Post by Instructor »

Skif_off wrote:Если можно, ответьте, пожалуйста, в теме, чтобы можно было найти, если что
Если скриптом А используется вызов другого скрипта Б с ожиданием, то необходимо перед этим вызвать AkelPad.ScriptNoMutex() один раз:

Code: Select all

AkelPad.ScriptNoMutex();
AkelPad.Call("Scripts::Main", 2, "Б");
AkelPad.Call("Scripts::Main", 2, "Б");
AkelPad.Call("Scripts::Main", 2, "Б");
Т.к. по умолчанию запуск одновременной работы скриптов блокирован и без ScriptNoMutex скрипт Б будет ждать, когда завершится скрипт А, а скрипт А не завершается, т.к. ждет, когда завершится скрипт Б.

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

Post by VladSh »

Instructor
Хотел задать последний параметр в ReadFile без предыдущих необязательных.
Такая запись выдаёт ошибку синтаксиса:

Code: Select all

result = AkelPad.ReadFile(pFile,,,, nBytesMax);
а такая вешает AkelPad:

Code: Select all

result = AkelPad.ReadFile(pFile, nBytesMax);
Причём вешает странно: когда скрипт работает (процессор выжирается на 100% на файле 500kb), то AkelPad почему-то доступен, а когда проц падает до нормального состояния, то AkelPad блокируется и приходится снимать задачу.

P.S. С передачей параметров разобрался, - ненужные параметры просто забил нулями.

Добавлено: Прога на "больших" файлах вешается даже обычным

Code: Select all

result = AkelPad.ReadFile(pFile);

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

Post by Instructor »

VladSh wrote:P.S. С передачей параметров разобрался, - ненужные параметры просто забил нулями.
Нужно не забивать нулями, а указывать undefined или значение по умолчанию.

Code: Select all

var pText=AkelPad.ReadFile("C:\\1.txt", undefined, undefined, undefined, nBytesMax);

Code: Select all

var pText=AkelPad.ReadFile("C:\\MyFile.txt", 0xD, 0, 0, nBytesMax);

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

Post by VladSh »

Instructor
Спасибо! undefined - хорошо! :)

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

Post by Instructor »

VladSh
Всё таки при проверке выяснилось, что использовать undefined некорректно - плагину приходят нули. Так что правильный вариант указывать значения по умолчанию явно:

Code: Select all

var pText=AkelPad.ReadFile("C:\\MyFile.txt", 0xD, 0, 0, nBytesMax);

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

Post by FeyFre »

Instructor, а если аргументы переоформить в VARIANT? Тогда по идее будет приходить VT_EMPTY (не проверял если честно пока).

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

Post by KDJ »

Instructor
In section "*** Methods description ***" of documentation, I suggest to add the marker "ActiveX" to the method name eg:

Code: Select all

AkelPad.GetInstanceDll (+ActiveX)
_________________________________

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

Post by Instructor »

KDJ
Done.

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

Post by KDJ »

Instructor
Thanks, AkelPadMethodsView_test.js - test version for Scripts v.15.8: KDJ.zip.

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

Post by Instructor »

KDJ
Works fine.

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

Post by VladSh »

Подскажите пожалуйста, как передать в скрипт через аргументы обычную двойную кавычку?
Типа такого:

Code: Select all

..., `-param1='"' -param2='"'`)
не работает. Как только не пытался, и слэшами экранировал, ничего не выходит.

Offline
Posts: 670
Joined: Thu Jun 03, 2010 8:47 am
Location: Сочи, Хоста
Contact:

Post by Andrey_A_A »

VladSh wrote:Подскажите пожалуйста, как передать в скрипт через аргументы обычную двойную кавычку?
С этим когда-то сталкивался: решается передачей любого ключевого слова (или наборов символов), а в скрипте оно заменяется на кавычки

или так можно:

Code: Select all

Call("Scripts::Main", 1, "+Test.vbs", `Chr(34) Chr(34)`)

Code: Select all

With WScript Cnt = .Arguments.Count
  If Cnt > 0 Then
    param1 = Eval(.Arguments(0)) : If Cnt > 1 Then param2 = Eval(.Arguments(1))
  End If
End With
MsgBox "Переменная param1 =" & vbNewLine & "<" & param1 & ">"
MsgBox "Переменная param2 =" & vbNewLine & "<" & param2 & ">"
Post Reply