HiEdit

HiEdit is a multitabbed, ultra fast, large file edit control consuming very little memory.  It can display non-printable characters in a readable format and can be used for any general purpose editing of text and birary files.

Summary
HiEditHiEdit is a multitabbed, ultra fast, large file edit control consuming very little memory.
AddAdd control to the GUI.
AutoIndentSets the autoindent state
CloseFileClose file or all files
ConvertCaseConvert case of selected text
EmptyUndoBufferResets the undo flag in the HiEdit control for the current file.
FindTextFind desired text in the control
GetColorsGet the control colors
GetCurrentFileGet the index of the current file
GetFileCountReturns count of open files.
GetFileNameGet the file path.
GetFirstVisibleLineReturns the zero-based index of the uppermost visible line.
GetLineGet the text of the desired line from the control
GetLineCountReturns an integer specifying the number of lines in the HiEdit control.
GetModifyGets the state of the modification flag for the HiEdit control.
GetRedoDataReturns redo type and/or data for desired redo level.
GetSelGet letfmost and/or rightmost character positions of the selection
GetSelTextReturns selected text
GetTextLengthReturns the length of text, in characters.
GetTextRangeGet range of characters from the control
GetUndoDataReturns undo type and/or data for desired undo level.
LineFromCharReturns line number of the line containing specific character index.
LineIndexReturns the character index of the line.
LineLengthReturns the lenght of the line.
LineNumbersBarSets the line numbers bar state and looks.
LineScrollScrolls the text in the HiEdit control for the current file.
NewFileOpens new tab.
OpenFileOpen file in new tab
RedoDo redo operation
ReloadFileReload file
ReplaceSelReplace selection with desired text
SaveFileSave file to disk
ScrollScrolls the text vertically in the HiEdit control for the current file.
ScrollCaretScroll content of control until caret is visible.
SetColorsSet the control colors
SetCurrentFileSet the the current file
SetEventsSet notification events
SetFontSets the control font
SetKeywordFileSet syntax highlighting.
SetModifySets or clears the modification flag for the current file.
SetSelSet the selection
SetTabWidthSets the tab width
SetTabsImageListSets the image list of the tab navigation toolbar
ShowFileListShow popup menu containg list of open files.
UndoDo undo operation
Syntax ColoringThe file .hes is structured in sections, each of which specify the keywords for a one (or more) file extension.
Example
About

Add

HE_Add(hwnd,  
x,  
y,  
w,  
h,  
style = "HSCROLL VSCROLL",
dllPath = "HiEdit.dll")

Add control to the GUI.

Parameters

x,y,w,hPosition of the control
styleSpace separated list of control styles, by default both scroll bars are visible.  You can use numbers or style strings.
dllPathPath of the control dll, by default control is searched in the current folder.

Styles

HSCROLL, VSCROLL, TABBED, HILIGHT, TABBEDBTOP, TABBEDHRZSB, TABBEDBOTTOM

AutoIndent

HE_AutoIndent(hEdit,
pState)

Sets the autoindent state

Parameters

pStateTRUE or FALSE

CloseFile

HE_CloseFile(hEdit,  
idx = -1)

Close file or all files

Parameters

idxIndex of the file to close.  -2 to close ALL opened files, -1 to close current file (default)

ConvertCase

HE_ConvertCase(hEdit,  
case = "toggle")

Convert case of selected text

Parameters

caseCan be “upper”, “lower”, “toggle” (default), “capitalize”.

Returns

Returns TRUE if successful, FALSE otherwise

EmptyUndoBuffer

HE_EmptyUndoBuffer(hEdit)

Resets the undo flag in the HiEdit control for the current file.

FindText

HE_FindText(hEdit,  
sText,  
cpMin = 0,
cpMax = -1,
flags = "")

Find desired text in the control

Parameters

sTextText to be searched for.
cpMinStart searching at this character position.  By default 0.
cpMaxEnd searching at this character position.  By default -1.
flagsSpace separated combination of search flags: “WHOLEWORD” “MATCHCASE”

Returns

The zero-based character position of the next match, or -1 if there are no more matches.

GetColors

HE_GetColors(hEdit)

Get the control colors

Returns

Colors in INI format.  See SetColors for details.

GetCurrentFile

HE_GetCurrentFile(hEdit)

Get the index of the current file

GetFileCount

HE_GetFileCount(hEdit)

Returns count of open files.

GetFileName

HE_GetFileName(hEdit,  
idx = -1)

Get the file path.

Parameters

idxIndex of the file.  -1 to get file path of the current file (default)

Returns

TRUE if successful, FALSE otherwise

GetFirstVisibleLine

HE_GetFirstVisibleLine(hEdit)

Returns the zero-based index of the uppermost visible line.

GetLine

HE_GetLine(hEdit,  
idx = -1)

Get the text of the desired line from the control

Parameters

idxZero-based index of the line.  -1 means current line.

Returns

The return value is the text.  The return value is empty string if the line number specified by the line parameter is greater than the number of lines in the HiEdit control

GetLineCount

HE_GetLineCount(hEdit)

Returns an integer specifying the number of lines in the HiEdit control.  If no text is in the HiEdit control, the return value is 1.

GetModify

HE_GetModify(hEdit,  
idx = -1)

Gets the state of the modification flag for the HiEdit control.  The flag indicates whether the contents of the control have been modified.

Parameters

idxIndex of the file.  -1 for the current file (default)

Returns

TRUE if the content of HiEdit control has been modified, FALSE otherwise.

GetRedoData

HE_GetRedoData(hEdit,
level)

Returns redo type and/or data for desired redo level.  The same rules as in GetUndoData

GetSel

HE_GetSel( hEdit,  
ByRef start_pos = "@",
ByRef end_pos = "@")

Get letfmost and/or rightmost character positions of the selection

Parameters

start_posOptional starting position of the selection.
end_posOptional ending position of the selection.

Returns

Starting position.

GetSelText

HE_GetSelText(hEdit)

Returns selected text

GetTextLength

HE_GetTextLength(hEdit)

Returns the length of text, in characters.

GetTextRange

HE_GetTextRange(hEdit,  
min = 0,
max = -1)

Get range of characters from the control

Parameters

minIndex of leftmost characther of the range.  By default 0.
maxIndex of rightmost characther of the range.  -1 means last character in the control.

GetUndoData

HE_GetUndoData(hEdit,
level)

Returns undo type and/or data for desired undo level.

Parameters

levelUndo level

Types

UNKNOWNThe type of undo action is unknown.
TYPINGTyping operation.
DELETEDelete operation.
DRAGDROPDrag-and-drop operation.
CUTCut operation.
PASTEPaste operation.
SETTEXTWM_SETTEXT message was used to set the control text
REPLACESELEM_REPLACESEL message was used to insert text
CLEARDelete selected text
BACKSPACEBack Space Operation
INDENTIncrease Indent
OUTDENTDecrease Indent
CODEPAGEConvert codepage
CASEConvert case

LineFromChar

HE_LineFromChar(hEdit,
ich)

Returns line number of the line containing specific character index.

Parameters

ichThe character index of the character contained in the line whose number is to be retrieved.  If the ich parameter is -1, either the line number of the current line (the line containing the caret) is retrieved or, if there is a selection, the line number of the line containing the beginning of the selection is retrieved.

Returns

The zero-based line number of the line containing the character index specified by ich.

LineIndex

HE_LineIndex(hedit,  
idx = -1)

Returns the character index of the line.

Parameters

idxLine number for which to retreive character index.  -1 (default) means current line.

Returns

The character index of the line specified in the idx parameter, or -1 if the specified line number is greater than the number of lines.

LineLength

HE_LineLength(hEdit,  
idx = -1)

Returns the lenght of the line.

Parameters

idxLine number for which to retreive line length.  -1 (default) means current line.

Returns

the length, in characters, of the line

LineNumbersBar

HE_LineNumbersBar(hEdit,  
state = "show",
linw = 40,
selw = 10)

Sets the line numbers bar state and looks.

Parameters

stateCan be “show”, “hide”, “automaxsize”, “autosize”
linwLine numbers width (by default 40)
selwSelection bar width (by default 10)

LineScroll

HE_LineScroll(hEdit,  
xScroll = 0,
yScroll = 0)

Scrolls the text in the HiEdit control for the current file.

Parameters

xScrollThe number of characters to scroll horizontally.  Use a negative number to scroll to the left and a positive number to scroll to the right.
yScrollThe number of lines to scroll vertically.  Use a negative number to scroll up and a positive number to scroll down.

Remarks

This message does not move the caret.

The HiEdit control does not scroll vertically past the last line of text in the control.  If the current line plus the number of lines specified by the yScroll parameter exceeds the total number of lines in the HiEdit control, the value is adjusted so that the last line of the HiEdit control is scrolled to the top of the HiEdit control window.

This function can be used to scroll horizontally past the last character of any line.

NewFile

HE_NewFile(hEdit)

Opens new tab.

OpenFile

HE_OpenFile(hEdit,  
pFileName,  
flag = )

Open file in new tab

Parameters

pFileNamePath of the file to be opened
flagSet to TRUE to create new file if pFileName doesn’t exist.  If set to FALSE, function fails if the file doesn’t exist (default).  Returns: TRUE if successful/FALSE otherwise

Redo

HE_Redo(hEdit)

Do redo operation

Returns

TRUE if the Redo operation succeeds, FALSE otherwise

ReloadFile

HE_ReloadFile(hEdit,  
idx = -1)

Reload file

Parameters

idxIndex of the file to reload.  -1 to reload current file (default)

ReplaceSel

HE_ReplaceSel(hEdit,  
text = "")

Replace selection with desired text

Parameters

textText to replace selection with.

SaveFile

HE_SaveFile(hEdit,  
pFileName,  
idx = -1)

Save file to disk

Parameters

pFileNameFile name.
idxIndex of the file to save.  -1 to save current file (default)

Returns

TRUE if successful, FALSE otherwise

Scroll

HE_Scroll(hEdit,  
Pages = 0,
Lines = 0)

Scrolls the text vertically in the HiEdit control for the current file.

Parameters

PagesThe number of pages to scroll.  Use a negative number to scroll up and a positive number to scroll down.
LinesThe number of lines to scroll.  Use a negative number to scroll up and a positive number to scroll down.

Returns

The number of lines that the command scrolls.  The number returned may not be the same as the actual number of lines scrolled if the scrolling moves to the beginning or the end of the text.

Remarks

This message does not move the caret.  0x7FFFFFFF = 2147483647 = largest possible 32-bit signed integer value

Despite the documentation, the return value for the message always reflects the request, not necessarily the actual number of lines that were scrolled.  Example: If a request to scroll down 25 lines is made, 25 is returned even if the control is already scrolled down to the bottom of the document.  [Bug?]

ScrollCaret

HE_ScrollCaret(hEdit)

Scroll content of control until caret is visible.

SetColors

HE_SetColors(hEdit,  
colors,  
fRedraw = true)

Set the control colors

Parameters

colorsAny subset of available color options in INI format (array of NAME=COLOR lines).  Skiped colors will be set to 0.
fRdrawSet to TRUE to redraw control

Colors

TextNormal Text Color
BackEditor Back Color
SelTextSelected Text Color
ActSelBackActive Selection Back Color
InSelBackInactive Selection Back Color
LineNumberLine Numbers Color
SelBarBackSelection Bar Back Color
NonPrintableBack0 - 31 special non printable chars
NumberNumber Color

SetCurrentFile

HE_SetCurrentFile(hEdit,
idx)

Set the the current file

Parameters

idxNew file index to set as current.

SetEvents

HE_SetEvents(hEdit,  
func,  
e = "selchange")

Set notification events

Parameters

funcSubroutine that will be called on events.
eWhite space separated list of events to monitor (by default “selchange”).

Globals

HE_EVENTSpecifies event that occurred.  Event must be registered to be able to monitor them.  Events “tabmclick” and “filechange” are registered automatically.
HE_INFOString specifying event info.

Events & Infos

SelChangeS<start_char_idx> E<end_char_idx> L<line_num> [t|*] (t if tab changed, * if text changed)
Keykey pressed
Mousex<mouse_x> y<mouse_y> v<virtual_key_code>
Scroll””
ContextMenu””
FileChange<file_index> (file is changed outside of the application)
Tabmclick”” (middle button click over tab)

Returns

”OK” if succesiful, error string otherwise

SetFont

HE_SetFont(hEdit,  
pFont = "")

Sets the control font

Parameters

pFontAHK font definition: “Style, FontName”

SetKeywordFile

HE_SetKeywordFile(pFile)

Set syntax highlighting.

Parameters

pFilePath to .hes file

SetModify

HE_SetModify(hEdit,
Flag)

Sets or clears the modification flag for the current file.  The modification flag indicates whether the text within the control has been modified.

Parameters

FlagSet to TRUE to set the modification flag.  Set to FALSE to clear the modification flag.

SetSel

HE_SetSel(hEdit,  
nStart = 0,
nEnd = -1)

Set the selection

Parameters

nStartStarting character position of the selection.  Set -1 to remov current selection.
nEndEnding character position of the selection.  Set -1 to use position of the last character in the control.

SetTabWidth

HE_SetTabWidth(hEdit,  
pWidth,  
pRedraw = true)

Sets the tab width

Parameters

pWidthTab width in characters
pRedrawSet to true to redraw control (default)

SetTabsImageList

HE_SetTabsImageList(hEdit,  
pImg = "")

Sets the image list of the tab navigation toolbar

Parameters

pImg.BMP file with image list.  Omit this parameter to use default image list.

ShowFileList

HE_ShowFileList(hEdit,  
x = 0,
y = 0)

Show popup menu containg list of open files.

Parameters

x, yPosition of popup window

Undo

HE_Undo(hEdit)

Do undo operation

Returns

TRUE if the Undo operation succeeds, FALSE otherwise

Syntax Coloring

File structure

The file .hes is structured in sections, each of which specify the keywords for a one (or more) file extension.  Thus, a single .hes file can be used to specify the syntax highlight of several different file types.

Section structure

Each section starts with a list of file extensions, separated by a comma, enclosed in square brackets, for instance

[asm,inc]

starts a section for the keywords that will be applied to .asm and .inc files.

The lines following the section start will specify a color and the keywords to which it is applied in this form :

0x00bbggrr = keyword1 keyword2 keyword3 ...
  • the number is a DWORD in hexadecimal format
  • first byte specifies the type of keywords (00=normal, 01=separators).
  • rr, gg, bb specify the red green blue parts of the color (note the reverse order).
  • after the equal sign follow the list of keywords separated by a space.

Keyword specification

  • A ^ in front of keyword: the keyword is case sensitive.
  • A ~ in front of keyword: forces the specified case (display only).
  • A + at the end of keyword: all the rest of the line will be treated as a comment.
  • A - at the end of keyword: all the rest of the line will be treated as a string.
  • A & at the end of keyword: specify the enclosing characters for a string (ie.  “& specifies “ as the string quotes, meaning that “string” is a string).

Comments

A line starting with ; is a comment and ignored by the syntax highlight parser.

Notes

  • The same file extension can be specified in up to nine (9) sections and all the keywords will be taken into account.  This simplifies the management of keywords that are shared among different file types.
  • There is no limit on the number of languages, keywords and keyword groups.
  • You can specify a default syntax highlight for new, unsaved files by adding an “empty” extension between the square brackets at the beginning of the section. i.e.  [,asm,inc] means that new files will have by default applied the syntax highlight of asm files.
  • See http://www.winasm.net/forum/index.php?showtopic=2161 for some syntax sections.

Example

This is an simplified example of a .hes syntax highlight file.

[asm,inc]
;Registers
0x00408080=~AH ~AL ~AX ~BH ~BL ~BH
;User instructions
0x008000ff=~AAA ~AAD ~AAM ~AAS ~ADC ~ADD

[rc]
;General statements
0x10000080=#define #include ACCELERATORS ALT AUTOCHECKBOX
;Object states
0x104080ff=^BS_3STATE ^BS_AUTO3STATE ^BS_AUTOCHECKBOX

Quick reference

[[,]ext1,ext2,...,extN]Each keyword definiton block starts with list of extensions in angular brackets.  If started with comma, this section will be used for coloring of new files.
0xSSRRGGBB=word1 .. wordNColor keywords on this line with RRGGBB color.  SS is 00 by default.
delimitersHigh byte in the color (0x01xxxxxx) refers to delimiters.  Delimiters are added from ALL sections for a file extension.
&A & at the end of keyword specifies a string char.  For ex.  “& means that everything enclosed in two “ is a string
+A + at the end of keyword specifies a comment char/keyword.  For ex.  //+ means that everything that follows is a comment.  Multiline comments are not supported yet.
!A ! at the end of any delimiter indicates that any word starting with this delimiter will be colored.  For example $! marks php variables.
-A - at the end of keyword specifies that ALL text up to the end of line will be painted using the color specified UNLESS a comment indicator is found.
~A ~ in front of keyword forces the specified case (display only).
^A ^ in front of keyword means that the keyword is case sensitive.
;Line comment in hes file.

Example

Gui, +LastFound
hwnd := WinExist()

hEdit := HE_Add(hwnd,0,0,600,500)
Gui, SHow, w600 h500

HE_SetKeywordFile( A_ScriptDir "\Keywords.hes")
HE_OpenFile( hEdit, A_ScriptFullPath )

#include HiEdit.ahk

About

HE_Add(hwnd,  
x,  
y,  
w,  
h,  
style = "HSCROLL VSCROLL",
dllPath = "HiEdit.dll")
Add control to the GUI.
HE_AutoIndent(hEdit,
pState)
Sets the autoindent state
HE_CloseFile(hEdit,  
idx = -1)
Close file or all files
HE_ConvertCase(hEdit,  
case = "toggle")
Convert case of selected text
HE_EmptyUndoBuffer(hEdit)
Resets the undo flag in the HiEdit control for the current file.
HE_FindText(hEdit,  
sText,  
cpMin = 0,
cpMax = -1,
flags = "")
Find desired text in the control
HE_GetColors(hEdit)
Get the control colors
HE_GetCurrentFile(hEdit)
Get the index of the current file
HE_GetFileCount(hEdit)
Returns count of open files.
HE_GetFileName(hEdit,  
idx = -1)
Get the file path.
HE_GetFirstVisibleLine(hEdit)
Returns the zero-based index of the uppermost visible line.
HE_GetLine(hEdit,  
idx = -1)
Get the text of the desired line from the control
HE_GetLineCount(hEdit)
Returns an integer specifying the number of lines in the HiEdit control.
HE_GetModify(hEdit,  
idx = -1)
Gets the state of the modification flag for the HiEdit control.
HE_GetRedoData(hEdit,
level)
Returns redo type and/or data for desired redo level.
HE_GetSel( hEdit,  
ByRef start_pos = "@",
ByRef end_pos = "@")
Get letfmost and/or rightmost character positions of the selection
HE_GetSelText(hEdit)
Returns selected text
HE_GetTextLength(hEdit)
Returns the length of text, in characters.
HE_GetTextRange(hEdit,  
min = 0,
max = -1)
Get range of characters from the control
HE_GetUndoData(hEdit,
level)
Returns undo type and/or data for desired undo level.
HE_LineFromChar(hEdit,
ich)
Returns line number of the line containing specific character index.
HE_LineIndex(hedit,  
idx = -1)
Returns the character index of the line.
HE_LineLength(hEdit,  
idx = -1)
Returns the lenght of the line.
HE_LineNumbersBar(hEdit,  
state = "show",
linw = 40,
selw = 10)
Sets the line numbers bar state and looks.
HE_LineScroll(hEdit,  
xScroll = 0,
yScroll = 0)
Scrolls the text in the HiEdit control for the current file.
HE_NewFile(hEdit)
Opens new tab.
HE_OpenFile(hEdit,  
pFileName,  
flag = )
Open file in new tab
HE_Redo(hEdit)
Do redo operation
HE_ReloadFile(hEdit,  
idx = -1)
Reload file
HE_ReplaceSel(hEdit,  
text = "")
Replace selection with desired text
HE_SaveFile(hEdit,  
pFileName,  
idx = -1)
Save file to disk
HE_Scroll(hEdit,  
Pages = 0,
Lines = 0)
Scrolls the text vertically in the HiEdit control for the current file.
HE_ScrollCaret(hEdit)
Scroll content of control until caret is visible.
HE_SetColors(hEdit,  
colors,  
fRedraw = true)
Set the control colors
HE_SetCurrentFile(hEdit,
idx)
Set the the current file
HE_SetEvents(hEdit,  
func,  
e = "selchange")
Set notification events
HE_SetFont(hEdit,  
pFont = "")
Sets the control font
HE_SetKeywordFile(pFile)
Set syntax highlighting.
HE_SetModify(hEdit,
Flag)
Sets or clears the modification flag for the current file.
HE_SetSel(hEdit,  
nStart = 0,
nEnd = -1)
Set the selection
HE_SetTabWidth(hEdit,  
pWidth,  
pRedraw = true)
Sets the tab width
HE_SetTabsImageList(hEdit,  
pImg = "")
Sets the image list of the tab navigation toolbar
HE_ShowFileList(hEdit,  
x = 0,
y = 0)
Show popup menu containg list of open files.
HE_Undo(hEdit)
Do undo operation
Close