Script
Script Engine
VBScript/JScript are the built-in script engines of EverEdit. You could use VBS/JScript to manage your macros and define syntax highlights. Recommend JScript to write scripts for EverEdit. JScript is very simple and powerful, you could leverage various COM components in JScript/VBScript.
Save Script
In order to manage scripts, all the files should be placed into macro folder. EverEdit will automatically build a menu for these scripts. After adding/deleting scripts, you'd better refresh the menu by clicking [Reload Macros...] from Addons menu.
VBScript files should be saved with .mac or .evb and JScript should be .ejs.
How to bind a shortcut
Open shortcut manager and drag-drop a script file into the dialog or click Bind button to add a script file into Shortcut View. Then, just set the shortcut like normal commands.
Built-in Objects and Functions
SCRIPT_PATH: get path of current scriptSCRIPT_FULLNAMEget full path(path+filename) of current scriptSCRIPT_NAMEONLYget file name only of current scriptInclude(): include a script
Application
An application object means the EverEdit instance you are using.
// functions
Menu CreateMenu();
void Sleep(DWORD dwMillisec);
void SendCommand(int nCmd);
void SendCommandEx(string strCommand);
void WebPreview(string strPathName);
Document NewDoc();
Document OpenDoc(string strPathName);
void OutputText(string strText, bool bClear=false, bool bTerminate=false);
string ShowInputBox(string strPrompt, string strTitle);
int ShowMsgBox(string strText, string strTitle, int buttons);
int ShowHtmlHelp(string strPathName, string strWord);
string CreateTempFile(bool bAutoDelete);
void DebugLibrary(string strPathName);
void OpenSnippetByTitle(string title);
string GetResultFromExe(string cmdline, string initdir="", int encoding=0)
// delete template file by title
void DeleteTemplate(string title)
// properties
Document ActiveDoc; //get
HexDoc ActiveHex; //get
Document document; //get
OutputWindow OutputWindow; //get
Project Project; //get
string AppPath; //get
string CommandBox; //get
ULONG Hwnd; //get
ULONG FileCount; //get
string Version; //get
string ClipboardText; //get,set
int Lang;//get// Create a menu that will show at your gloabl cursor position.
Menu CreateMenu();
// Send a command to main window
// nCmd: the ID of a menu item.
void SendCommand(int nCmd);
// Send a string command(cm_edit_find...), get more details by shortcut dialog.
void SendCommandEx(string strText);
// Open a file in a new tab by web view, and the current text document will be linked to this tab. 
// You could press Ctrl+B to switch between them.
void WebPreview(string strPathName);
// Output texts into OutputWindow.
// bClear: Clear the exist content?
// bTerminate: Terminate running process?
void OutputText(string strText, bool bClear=false, bool bTerminate=false);
// Popup an input box.
// strPrompt: promopt text
// strTitle: title of the input box.
string ShowInputBox(string strPrompt, string strTitle);
/**
Popup a message box.
strText: message text
strTitle: title of the message box
buttons: buttons and icons.
Ref the below values to set buttons:
    #define MB_OK                       0x00000000L
    #define MB_OKCANCEL                 0x00000001L
    #define MB_ABORTRETRYIGNORE         0x00000002L
    #define MB_YESNOCANCEL              0x00000003L
    #define MB_YESNO                    0x00000004L
    #define MB_RETRYCANCEL              0x00000005L
    #define MB_CANCELTRYCONTINUE        0x00000006L
    #define MB_ICONHAND                 0x00000010L
    #define MB_ICONQUESTION             0x00000020L
    #define MB_ICONEXCLAMATION          0x00000030L
    #define MB_ICONASTERISK             0x00000040L
**/
int ShowMsgBox(string strText, string strTitle, int buttons);
// Open a .chm or .hlp file, find and locate strWord.
// strWord: If strWord is empty, start page will be displayed.
int ShowHtmlHelp(string strPathName, string strWord);
// Create a temporary file.
// bAutoDelete: delete this file after closing EverEdit?
string CreateTempFile(bool bAutoDelete);
// This function is used for debugging a plugin developed by C/C++.
// You could attach process of EverEdit first before invoking this function.,
void DebugLibrary(string strPathName);
// Show save/open dialog.
// bOpen:true:open dialog, false:save dialog
// strDefaultDir:default folder path
// strExts:default exts, format:*.png;*jpg;*.bmp
string ShowFileDialog(bool bOpen, string strDefaultDir, string strExts);Document
An document metans the active text tab.
// functions
Menu CreateMenu();
void SendCommand(int nCmd);
void Refresh();
bool HasSel();
void ClearSel();
void InsertAt(int line, int col, string strText);
void Insert(string strText);
void MoveCaret(int nLength);
void IndentInsert(string strText);
void Delete(int sline, int scol, int eline, int ecol);
void Delete(Pos spos, Pos epos);
void Delete();
void SetCaretPos(int line, int col, bool bVisible);
void SetSel(int sline, int scol, int eline, int ecol);
void SetSel(Pos pos1, Pos pos2);
int AddSel(Pos pos1, Pos pos2);
Pos Offset2Pos(int nOffset);
int Pos2Offset(Pos pos);
int ReplaceAll(string strFind, string strReplace, bool bCase=true, bool bRegex=false, bool bWord=false);
int FindAll(string strFind, bool bCase=true, bool bRegex=false, bool bWord=false);
bool FindNext(string strFind, bool bCase=true, bool bRegex=false, bool bWord=false);
string GetWord(int flag);
string GetLineText(int nLine);
int  GetLineLength(int nLine);
int  GetWrapCount(int nLine);
int  InsertSnippet(string strSnippet);
void CommentLine(string strCommentLine, bool bComment);
void CommentBlock(string strCommentOn, string strCommnetOff, bool bComment);
void write(string strText);
void writeln(string strText);
void close();
bool ExportTo(string strPathName, int nEncoding=/*same as document*/, bool bBom=/*same as document*/, int nEol=/*same as document*/)
void GhostTyping(string text, int speed=100);
/**
type:
    0: cancel wrap
    1: wrap at window's edge
    2: smart wrap
    3: wrap by column
    4: wrap by column (extend tabs)
    5: N/A (reserved)
    6: wrap by pixel
**/
void Wrap(int type, int value=0);// properties
Pos SelStartPos;
Pos SelEndPos;
bool Dirty;
int CaretLine;
int CaretCol;
int LineCount;
string PathName;
string Scope;
string EndOfLine;
void GroupUndo;//set
Pos CaretPos;//get,set
string SelText;//get,set
int Encoding;//get,set
int TabStop;//get,set
bool SoftTab;//get,set
string Text;//get,set
string Syntax;//get,set
int Hwnd;//get// Create a menu and this menu will follow the caret of the active document.
Menu CreateMenu();void SetSel(int sline, int scol, int eline, int ecol);
void SetSel(Pos pos1, Pos pos2);
Set normal selection.
int AddSel(Pos pos1, Pos pos2);
Add region into selection.
Pos Offset2Pos(int nOffset);
int Pos2Offset(Pos pos);
// Force to redraw current document.
void Refresh();
// Does current document contain a normal selection?
// Normal selection: True
// Multiple Selection/Column Selection: False
bool HasSel();
// Clear all selection(Normal/Multiple/Column)
void ClearSel();
// Insert text by line and column.
void InsertAt(int line, int col, string strText);
// Insert text at current caret position
void Insert(string strText);
// Move caret to next position with specified nLength.
// Note: Line breaks are also included.
void MoveCaret(int nLength);
// Insert text at caret position and the text will be used same indent as first line.
void IndentInsert(string strText);
// Delete text. Delete() is equal to Press Delete Key once.
void Delete(int sline, int scol, int eline, int ecol);
void Delete(Pos spos, Pos epos);
void Delete();
// Set syntax highlight for current document.
// strText: syntax title, ref Syntax Dialog to get more details about syntax titles.
void SetSyntax(string strText);
// normal selection.
void SetSel(int sline, int scol, int eline, int ecol);
void SetSel(Pos pos1, Pos pos2);
// Add a region into selection.
int AddSel(Pos pos1, Pos pos2);
// Convert between offset and position.
Pos Offset2Pos(int nOffset);
int Pos2Offset(Pos pos);
/**
    strFind: find what
    strReplace: replace to
    bCase: case sensitive?
    bRegex: use regular expression?
    bWord: word only?
**/
int ReplaceAll(string strFind, string strReplace, bool bCase=true, bool bRegex=false, bool bWord=false);
// Find and output all match places into OutputWindow.
// Note: This function doesn't support multiple lines search.
int FindAll(string strFind, bool bCase=true, bool bRegex=false, bool bWord=false);
/**
Find from caret position and select it if found. return True If result exists otherwise return False.
bCase: case sensitive?
bRegex: use regular expression?
bWord: word only?
    strFind: find what
    bCase: case sensitive?
    bRegex: use regular expression?
    bWord: word only?
**/
bool FindNext(string strFind, bool bCase=true, bool bRegex=false, bool bWord=false);
/**
Get the word from caret position by flag.
Flag values as below:
    #define GETWORD_LWORD           1
    #define GETWORD_RWORD           2
    #define GETWORD_WORD            GETWORD_LWORD|GETWORD_RWORD
    #define GETWORD_LEDGE           4
    #define GETWORD_REDGE           8
    #define GETWORD_EDGE            GETWORD_LEDGE|GETWORD_REDGE
    #define GETWORD_LSYNTAX         16
    #define GETWORD_RSYNTAX         32
    #define GETWORD_SYNTAX          GETWORD_LSYNTAX|GETWORD_RSYNTAX
    #define GETWORD_LSYNTAX2        64
    #define GETWORD_RSYNTAX2        128
    #define GETWORD_SYNTAX2         GETWORD_LSYNTAX2|GETWORD_RSYNTAX2
**/
string GetWord(int flag);
// Get wrapped line's (sub line) count.
int  GetWrapCount(int nLine);
// Insert a snippet at caret position.
int  InsertSnippet(string strSnippet);
// Line Comment or Block Comment.
// bComment: comment or uncomment?
void CommentLine(string strCommentLine, bool bComment);
void CommentBlock(string strCommentOn, string strCommnetOff, bool bComment);
// simulate some javascript functions.
void write(string strText);
void writeln(string strText);
void close();
/**
Export current document into a file.
    strPathName: dest folder
    nEncoding: encoding, utf-8 is 65001 native encoding is 0.
    bBom: should add bom?
    nEol: formant of line break(WIN=1,UNIX=2,MAC=3)
**/
bool ExportTo(string strPathName, int nEncoding=/*same as document*/, bool bBom=/*same as document*/, int nEol=/*same as document*/)
// Get the unique windows handle of document.
doc.HwndMenu
void AddSeparator();
// Add item into menu, nCommand must >0
void AddItem(int nCommand, string strText);
// Popup this menu
int Popup();
// Get menu text by nComand
string GetText(int nCommand)Pos
int Line;//get,set
int Col;//get,setOutputWindow
void OutputText(string strText);
void OutputLine(string strText);
/**
Set the jump pattern of output window with a regular expression.
Jump pattern: OutputWindow will navigate to proper files by clicking output window 
Example:
    SetJumpPattern "(.*?):(\d+):(\d+):", 0, 1, 2
**/
void SetJumpPattern(string strText, int file, int line, int col);
// Clear jump patterns.
void ClearJumpPattern();
// Clear the content of OutputWindow
void Clear();
// Terminate running process.
void Terminate();
// Show or hide OutputWindow
void Show();
void Hide();HexDoc
// Send command.
void SendCommand(int uCommand);Project
// get specific file path
string GetFile(int idx);
// get files count in current project
int FileCount;//get// You can't use the below functions right now (Not ready, in developing)!
void InsertText(int nOffset, string strText);
void InsertText(string strText);
void InsertBinary(int nOffset, string strText);
void InsertBinary(string strText);
void SetCaretPos(int nOffset);
int GetSize();
void InsertChar( int ch );
// properties
int CaretPos;//get,setLast updated