Edit [v1.1]

Author: jballi Last Modified: 20100524


Although not as robust as the Rich Edit control, the standard Edit control is a lightweight and surprisingly powerful control for managing text. Inspired by the Edit mini-library created by Lexikos and the HiEditor library created by majkinetor, the Edit library was created to help bring the Edit control out of it's inferiority shell.

Edit_CanUndo(hEdit)
Edit_CharFromPos(hEdit,X,Y,ByRef r_CharPos="",ByRef r_LineIdx="")
Edit_Clear(hEdit)
Edit_Convert2DOS(p_Text)
Edit_Convert2Mac(p_Text)
Edit_Convert2Unix(p_Text)
Edit_ConvertCase(hEdit,p_Case)
Edit_Copy(hEdit)
Edit_Cut(hEdit)
Edit_EmptyUndoBuffer(hEdit)
Edit_FindText(hEdit,p_SearchText,p_Min=0,p_Max=-1,p_Flags="",ByRef r_RegExOut="")
Edit_FindTextReset()
Edit_FmtLines(hEdit,p_Flag)
Edit_GetActiveHandles(ByRef hEdit="",ByRef hWindow="",p_MsgBox=False)
Edit_GetFirstVisibleLine(hEdit)
Edit_GetLastVisibleLine(hEdit)
Edit_GetLimitText(hEdit)
Edit_GetLine(hEdit,p_LineIdx=-1,p_Length=-1)
Edit_GetLineCount(hEdit)
Edit_GetMargins(hEdit,ByRef r_LeftMargin="",ByRef r_RightMargin="")
Edit_GetModify(hEdit)
Edit_GetRect(hEdit,Left,Top,Right,Bottom)
Edit_GetSel(hEdit,l_StartSelPos,l_EndSelPos)
Edit_GetSelText(hEdit)
Edit_GetText(hEdit,p_Length=-1)
Edit_GetTextLength(hEdit)
Edit_GetTextRange(hEdit,p_Min=0,p_Max=-1)
Edit_IsMultiline(hEdit)
Edit_IsReadOnly(hEdit)
Edit_IsStyle(hEdit,p_Style)
Edit_LineFromChar(hEdit,p_CharPos=-1)
Edit_LineFromPos(hEdit,X,Y,ByRef r_CharPos="",ByRef r_LineIdx="")
Edit_LineIndex(hedit,p_LineIdx=-1)
Edit_LineLength(hEdit,p_LineIdx=-1)
Edit_LineScroll(hEdit,xScroll=0,yScroll=0)
Edit_LoadFile(hEdit,p_FileName,p_Convert2DOS=False,ByRef r_FileFormat="")
Edit_Paste(hEdit)
Edit_PosFromChar(hEdit,p_CharPos,ByRef X,ByRef Y)
Edit_ReplaceSel(hEdit,l_SelectedText)
Edit_SaveFile(hEdit,p_FileName,p_Convert="")
Edit_Scroll(hEdit,p_Pages=0,p_Lines=0)
Edit_ScrollCaret(hEdit)
Edit_SetLimitText(hEdit,p_Limit)
Edit_SetMargins(hEdit,p_LeftMargin="",p_RightMargin="")
Edit_SetModify(hEdit,p_Flag)
Edit_SetPasswordChar(hEdit,p_Char="*")
Edit_SetReadOnly(hEdit,p_Flag)
Edit_SetRect(hEdit,p_Left,p_Top,p_Right,p_Bottom)
Edit_SetSel(hEdit,l_StartSelPos,l_EndSelPos)
Edit_SetStyle(hEdit,p_Style,p_Option="+")
Edit_SetTabStops(hEdit,p_NbrOfTabStops=0,p_DTU=32)
Edit_SetText(hEdit,p_Text)
Edit_TextIsSelected(hEdit)
Edit_Undo(hEdit)

For the functions's parameters and return value, please see it's source code or the document.

Remarks

The Add-Ons for this library are not included. The downloadable archive from forum contains all files. There are more comprehensive example scripts.

For update's details and remarks related to the functions, please see the AutoHotkey Forum: http://www.autohotkey.com/forum/viewtopic.php?t=55062

License

nonexistent

Example

; #Include Edit.ahk
#NoEnv
SendMode Input
SetWorkingDir %A_ScriptDir%

; Start Notepad and get handle of the editor.
Run, notepad.exe,, , pid
WinWait ahk_pid %pid%
ControlGet, hEdit, Hwnd,, Edit1, ahk_pid %pid%

; Set default text to opened editor.
GoSub, F1

; Exit script after attached Notepad is closed.
WinWaitClose, ahk_pid %pid%
ExitApp

; Hotkeys for testing on that editor.
F1::Edit_SetText( hEdit, "Hotkeys `r`n  F1 - Set editor to default text`r`n  F2 - Show length of text`r`n  F3 - search text ""Show"", ahk_pid %pid%" )
F2::MsgBox % "Text length: " . Edit_GetTextLength( hEdit )
F3::MsgBox % "Position of ""Show"": " . Edit_FindText( hEdit,  "Show")