Akelpad syntax scripts example
// Определяет тип файла по его расширению, имени или хедеру;
// и устанавливает соответствующее окружение AkelPad.
nTab = 4; // размер табуляции по умолчанию
AkelPad.Include("CommonFunctions.js");
AkelPad.Include("TextFunctions.js");
AkelPad.Include("CoderFunctions.js");
var hWndMain = AkelPad.GetMainWnd();
var hWndEdit = AkelPad.GetEditWnd();
if (hWndEdit)
{
pFile = AkelPad.GetEditFile(0);
pSyntax = pCurrentSyntax = GetSyntaxAliasExtension();
nCodePage = nCurrentCodePage = AkelPad.GetEditCodePage(0);
nCurrentTab = AkelPad.SendMessage(hWndEdit, 3239 /*AEM_GETTABSTOP*/, 0, 0);
pStartLine = GetLineText(0);
if ((/<\?xml(?: version="\d\.\d")?(?: encoding="([\w-]+?)" ?)?\?>/.exec(pStartLine))) {pSyntax = "xml"; SetCodePageFromText(RegExp.$1);} // XML
else if ((new RegExp('^#! */bin/sh', 'i')).test(pStartLine)) pSyntax = "sh"; // Bash
else if ((new RegExp('^#! *(/usr/bin/(env )?)?perl', 'i')).test(pStartLine)) pSyntax = "pl"; // Perl
else if ((new RegExp('^#! *(/usr/bin/(env )?)?python', 'i')).test(pStartLine)) pSyntax = "py"; // Python
else if (pFile.search(/\.git\\?config$/) != -1) pSyntax = "ini"; // INI для файлов ".gitconfig" и ".git\config"
else pSyntax = getFileExt(pFile); // Расширение
switch (pSyntax)
{
case "bat": nCodePage = 866; break;
case "coder": nCodePage = 1200; nTab = 8; break;
}
// Применение параметров кодировки, синтаксиса и табуляции
if (nCodePage != nCurrentCodePage) AkelPad.Command(GetCodePageCommand());
if (pSyntax != pCurrentSyntax) SetSyntax(pSyntax);
if (nTab != nCurrentTab) AkelPad.SendMessage(hWndEdit, 3240 /*AEM_SETTABSTOP*/, nTab, 0);
//AkelPad.MessageBox(hWndEdit, RegExp.$1 + " = " + nCodePage, WScript.ScriptName, 0 /*MB_OK*/);
}
// Устанавливает значение nCodePage по текстовому имени кодировки
function SetCodePageFromText(pEncoding)
{
switch (pEncoding)
{
case "utf-8": nCodePage = 65001; break;
}
}
// Возвращает команду AkelPad для переоткрытия документа в кодировке nCodePage
function GetCodePageCommand()
{
switch (nCodePage)
{
case 1251: return 4122; // ANSI
case 866: return 4123; // OEM
case 20866: return 4124; // KOI8-R
case 1200: return 4125; // UTF-16 LE
case 1201: return 4126; // UTF-16 BE
case 65001: return 4127; // UTF-8
default: return 0;
}
}
INFO