Page 1 of 1
Несколько команд в серии
Posted: Sat Dec 24, 2011 7:53 pm
by jumbleview
Было бы удобно иметь несколько команд в серии. Например сохранить файл перед Exec. Я не нашел как это сделать.
Posted: Sun Dec 25, 2011 11:20 am
by Instructor
Code: Select all
-"Сохранить и выполнить" Call("Scripts::Main", 1, "EvalCmd.js", `AkelPad.Command(4105); AkelPad.Command(4251);`)
Posted: Mon Dec 26, 2011 7:57 am
by Fr0sT
А
Code: Select all
-"Сохранить и выполнить" AkelPad.Command(4105) & AkelPad.Command(4251)
было бы удобнее
Posted: Mon Dec 26, 2011 9:00 am
by FeyFre
Fr0sT , а может быть просто
Code: Select all
-"Сохранить и выполнить" Command(4105) & Command(4251)
?
Posted: Mon Dec 26, 2011 9:17 am
by VladSh
С жиру бесимся
Posted: Mon Dec 26, 2011 10:35 am
by FeyFre
Не, фиксим невнимательности друг-друга
Posted: Mon Dec 26, 2011 11:13 am
by Fr0sT
FeyFre , ага, точно! Понедельник-с...
В Опере так сделано, очень круто: можно вешать на один пункт хоть сто действий.
Posted: Tue Jan 03, 2012 5:33 am
by jumbleview
Instructor wrote: Code: Select all
-"Сохранить и выполнить" Call("Scripts::Main", 1, "EvalCmd.js", `AkelPad.Command(4105); AkelPad.Command(4251);`)
Это работает только с exec, определенным в меню "Execute". Я имел в виду "'Exec' from the tool bar". Например я переключаюсь from the Perl to the Python or some DSL. AkelPad дает удобную возможность сделать сколь угодно Icons. К каждой из них можно привязать свою Exec команду. Здорово. Но вот файл сохраняь приходится отдельно.
Posted: Tue Jan 03, 2012 2:19 pm
by DV
Можно бы расширить синтаксис
AkelPad.Command до
Posted: Tue Jan 03, 2012 3:13 pm
by jumbleview
DV wrote: Можно бы расширить синтаксис
AkelPad.Command до
Это не поможет. Я имел в виду объединение комманд разного уровня: command & call & exec
Posted: Tue Jan 03, 2012 6:41 pm
by Instructor
jumbleview
Code: Select all
-"Сохранить и выполнить" Call("Scripts::Main", 1, "EvalCmd.js", `AkelPad.Command(4105); AkelPad.Exec("mspaint.exe");`)
Читаем Scripts-Rus.txt.
Posted: Wed Jan 04, 2012 5:01 am
by jumbleview
Instructor wrote: jumbleview
Code: Select all
-"Сохранить и выполнить" Call("Scripts::Main", 1, "EvalCmd.js", `AkelPad.Command(4105); AkelPad.Exec("mspaint.exe");`)
Читаем Scripts-Rus.txt.
Почитал. Не нашел как заставить работать переменные %f или %d в этом контексте. Back Slash видимо трактуется как escape character и вычищается. Если задавать путь явным образом используя double back slash все работатет, но смысла в этом немного. Alas...
Posted: Wed Jan 04, 2012 6:10 am
by Instructor
jumbleview
Можно с новой версией
EvalCmd.js EvalCmd.js Code: Select all
//// Evaluates an expression passed through command line.
//
// Variables:
// %%f active file
// %%d directory of active file
// %%a AkelPad's directory
//
// Example:
// Call("Scripts::Main", 1, "EvalCmd.js", "AkelPad.SetSel(0, -1);")
//
//
//// Обработать выражение, переданное через командную строку.
//
// Переменные:
// %%f активный файл
// %%d директория активного файла
// %%a директория AkelPad'а
//
// Пример:
// Call("Scripts::Main", 1, "EvalCmd.js", "AkelPad.SetSel(0, -1);")
var pArgLine;
if (pArgLine=AkelPad.GetArgLine())
{
if (/%f|%d|%a/.test(pArgLine))
{
var pFile=AkelPad.GetEditFile(0).replace(/\\/g, "\\\\");
var pFileDir=pFile.substr(0, pFile.lastIndexOf("\\\\"));
var pAkelDir=AkelPad.GetAkelDir().replace(/\\/g, "\\\\");
pArgLine=pArgLine.replace(/%f/g, pFile);
pArgLine=pArgLine.replace(/%d/g, pFileDir);
pArgLine=pArgLine.replace(/%a/g, pAkelDir);
}
eval(pArgLine);
}
вызвать так:
Code: Select all
-"Сохранить и выполнить" Call("Scripts::Main", 1, "EvalCmd.js", `AkelPad.Command(4105); AkelPad.Exec("notepad.exe %%f", "%%d");`)
Posted: Wed Jan 04, 2012 4:37 pm
by jumbleview
Instructor wrote: jumbleview
Можно с новой версией
EvalCmd.js EvalCmd.js Code: Select all
//// Evaluates an expression passed through command line.
//
// Variables:
// %%f active file
// %%d directory of active file
// %%a AkelPad's directory
//
// Example:
// Call("Scripts::Main", 1, "EvalCmd.js", "AkelPad.SetSel(0, -1);")
//
//
//// Обработать выражение, переданное через командную строку.
//
// Переменные:
// %%f активный файл
// %%d директория активного файла
// %%a директория AkelPad'а
//
// Пример:
// Call("Scripts::Main", 1, "EvalCmd.js", "AkelPad.SetSel(0, -1);")
var pArgLine;
if (pArgLine=AkelPad.GetArgLine())
{
if (/%f|%d|%a/.test(pArgLine))
{
var pFile=AkelPad.GetEditFile(0).replace(/\\/g, "\\\");
var pFileDir=pFile.substr(0, pFile.lastIndexOf("\\\"));
var pAkelDir=AkelPad.GetAkelDir().replace(/\\/g, "\\\");
pArgLine=pArgLine.replace(/%f/g, pFile);
pArgLine=pArgLine.replace(/%d/g, pFileDir);
pArgLine=pArgLine.replace(/%a/g, pAkelDir);
}
eval(pArgLine);
}
вызвать так:
Code: Select all
-"Сохранить и выполнить" Call("Scripts::Main", 1, "EvalCmd.js", `AkelPad.Command(4105); AkelPad.Exec("notepad.exe %%f", "%%d");`)
Спасибо. Теперь заработало...