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
С жиру бесимся :mrgreen:

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 до

Code: Select all

AkelPad.Command(4105, 4251, ...);

Posted: Tue Jan 03, 2012 3:13 pm
by jumbleview
DV wrote:Можно бы расширить синтаксис AkelPad.Command до

Code: Select all

AkelPad.Command(4105, 4251, ...);
Это не поможет. Я имел в виду объединение комманд разного уровня: 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
Можно с новой версией

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
Можно с новой версией

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");`)
Спасибо. Теперь заработало...