Page 1 of 1

Astyle и AkelPad

Posted: Sun Jun 27, 2010 10:16 am
by se7h
Рабочий

Code: Select all

/// Process current file in external tool 

var WshShell=new ActiveXObject("WScript.shell"); 
var fso=new ActiveXObject("Scripting.FileSystemObject"); 
var pToolPath=AkelPad.GetAkelDir() + "\\AkelFiles\\Plugs\\AStyle\\AStyle.exe"; 
var pToolFlags="--style=java --indent=tab"; 
var hEditWnd=AkelPad.GetEditWnd(); 
var pTmpFile; 
var pText; 

if (pTmpFile=CreateTempFile()) 
{ 
    AkelPad.SaveFile(hEditWnd, pTmpFile, 65001, true, false); 

    if (pToolPath.search(/ /) != -1) 
      pToolPath="\"" + pToolPath + "\""; 
    if (pTmpFile.search(/ /) != -1) 
      pTmpFile="\"" + pTmpFile + "\""; 
    WshShell.Run("%COMSPEC% /c " + pToolPath + " " + pToolFlags + " " + pTmpFile, 0, true); 

    pText=AkelPad.ReadFile(pTmpFile); 
    AkelPad.SetSel(0, -1); 
    AkelPad.ReplaceSel(pText); 

  fso.DeleteFile(pTmpFile); 
} 


//Functions 
function CreateTempFile() 
{ 
  var oTmpFolder; 
  var oTmpFile; 
  var pTmpName; 

  if (oTmpFolder=fso.GetSpecialFolder(2 /*TemporaryFolder*/)) 
  { 
    pTmpName=fso.GetTempName(); 
    if (oTmpFile=oTmpFolder.CreateTextFile(pTmpName)) 
      oTmpFile.Close(); 
    return (oTmpFolder.Path + "\\" + pTmpName); 
  } 
  return ""; 
}
, связывающий AStyle с AP

Posted: Sun Jun 27, 2010 10:26 am
by Instructor
se7h
На страничке указаны файлы с юниксовой косой чертой. Может так заработает:

Code: Select all

    if (pTmpFile1.search(/ /) != -1)
      pTmpFile1="\"" + pTmpFile1 + "\"";
    pTmpFile1=pTmpFile1.replace(/\\/g, "/");
Кстати, выложенный вами код, не соответствует тому, что в "Scripts collection". Также кодировку, следуя из описания Astyle, необходимо указать не 1200 (UTF-16LE), а например 65001 (UTF-8).

Posted: Sun Jun 27, 2010 10:59 am
by se7h
я убрал лишний темпфайл, в астайл можно работать с одним
для htmltidy код вообще не менял

Posted: Tue Jun 29, 2010 9:49 am
by se7h