Несколько команд в серии

Russian main discussion
Post Reply
  • Author
  • Message
Offline
Posts: 5
Joined: Sat Dec 24, 2011 7:23 am
Location: Bay Area, San Francisco

Несколько команд в серии

Post by jumbleview »

Было бы удобно иметь несколько команд в серии. Например сохранить файл перед Exec. Я не нашел как это сделать.

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

Post by Instructor »

Code: Select all

-"Сохранить и выполнить" Call("Scripts::Main", 1, "EvalCmd.js", `AkelPad.Command(4105); AkelPad.Command(4251);`)

Offline
Posts: 876
Joined: Tue Jul 24, 2007 8:54 am

Post by Fr0sT »

А

Code: Select all

-"Сохранить и выполнить" AkelPad.Command(4105) & AkelPad.Command(4251)
было бы удобнее :)

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

Post by FeyFre »

Fr0sT, а может быть просто

Code: Select all

-"Сохранить и выполнить" Command(4105) & Command(4251)
?

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

Post by VladSh »

С жиру бесимся :mrgreen:

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

Post by FeyFre »

Не, фиксим невнимательности друг-друга :)

Offline
Posts: 876
Joined: Tue Jul 24, 2007 8:54 am

Post by Fr0sT »

FeyFre, ага, точно! Понедельник-с... :)
В Опере так сделано, очень круто: можно вешать на один пункт хоть сто действий.

Offline
Posts: 5
Joined: Sat Dec 24, 2011 7:23 am
Location: Bay Area, San Francisco

Post 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 команду. Здорово. Но вот файл сохраняь приходится отдельно.

DV
Offline
Posts: 1250
Joined: Thu Nov 16, 2006 11:53 am
Location: Kyiv, Ukraine

Post by DV »

Можно бы расширить синтаксис AkelPad.Command до

Code: Select all

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

Offline
Posts: 5
Joined: Sat Dec 24, 2011 7:23 am
Location: Bay Area, San Francisco

Post by jumbleview »

DV wrote:Можно бы расширить синтаксис AkelPad.Command до

Code: Select all

AkelPad.Command(4105, 4251, ...);
Это не поможет. Я имел в виду объединение комманд разного уровня: command & call & exec

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

Post by Instructor »

jumbleview

Code: Select all

-"Сохранить и выполнить" Call("Scripts::Main", 1, "EvalCmd.js", `AkelPad.Command(4105); AkelPad.Exec("mspaint.exe");`)
Читаем Scripts-Rus.txt.

Offline
Posts: 5
Joined: Sat Dec 24, 2011 7:23 am
Location: Bay Area, San Francisco

Post 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...

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

Post 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");`)

Offline
Posts: 5
Joined: Sat Dec 24, 2011 7:23 am
Location: Bay Area, San Francisco

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