Quick actions

cmd+k|ctrl+k

Navigation

Languages

Akelpad syntax scripts example

Snippet info

Language

JavaScript

Visibility

public

Author

rusifer2004

Created

2016-10-05T11:26:51Z

Updated

2016-10-05T11:29:47Z

// Определяет тип файла по его расширению, имени или хедеру;
// и устанавливает соответствующее окружение 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