+## First line may be used for shbang
+
+## This file defines the interface to Scintilla
+
+## A line starting with ## is a pure comment and should be stripped by readers.
+## A line starting with #!! is for future shbang use
+## A line starting with # followed by a space is a documentation comment and refers
+## to the next feature definition.
+
+## Each feature is defined by a line starting with fun, get, set or val.
+## cat -> start a category
+## fun -> a function
+## get -> a property get function
+## get -> a property set function
+## val -> definition of a constant
+## All other feature names should be ignored. They may be defined in the future.
+## A property may have a set function, a get function or both. Each will have
+## "Get" or "Set" in their names and the corresponding name will have the obvious switch.
+## A property may be subscripted, in which case the first parameter is the subscript.
+## fun, get, and set features have a strict syntax:
+## <featureType><ws><returnType><ws><name>[=<number](<param>,<param>)
+## param is <paramType><ws><paramName>[=<value>]
+## Additional white space is allowed between elements.
+## Feature names that contain an underscore are defined by Windows, so in these
+## cases, using the Windows definition is preferred where available.
+
+## Types:
+## void
+## int
+## bool -> integer, 1=true, 0=false
+## position -> integer position in a document
+## colour -> colour integer containing red, green and blue bytes.
+## string -> pointer to const character
+## stringresult -> pointer to character
+## cells -> pointer to array of cells, each cell containing a style byte and character byte
+## textrange -> complex structure
+## findtext -> searchrange, text -> foundposition
+## keymod -> integer containing key in low half and modifiers in high half
+## countedstring
+## formatrange
+## point -> x,y
+## Client code should ignore definitions containing types it does not understand, except
+## for possibly #defining the constants
+
+cat Basics
+
+################################################
+## From Scintilla.h
+val INVALID_POSITION=-1
+val SCI_START=2000
+val SCI_OPTIONAL_START=3000
+val SCI_LEXER_START=4000
+
+# Add text to the document
+fun void AddText=2001(int length, string text)
+
+# Add array of cells to document
+fun void AddStyledText=2002(int length, cells c)
+
+# Insert string at a position
+fun void InsertText=2003(position pos, string text)
+
+# Delete all text in the document
+fun void ClearAll=2004(,)
+
+# The number of characters in the document
+get int GetLength=2006(,)
+
+# Returns the character byte at the position
+get int GetCharAt=2007(position pos,)
+
+# Returns the position of the caret
+get position GetCurrentPos=2008(,)
+
+# Returns the position of the opposite end of the selection to the caret
+get position GetAnchor=2009(,)
+
+# Returns the style byte at the position
+get int GetStyleAt=2010(position pos,)
+
+# Redoes the next action on the undo history
+fun void Redo=2011(,)
+
+val SC_UNDOCOLLECT_NONE=0
+val SC_UNDOCOLLECT_AUTOSTART=1
+
+# Choose between collecting actions into the undo
+# history and discarding them.
+set void SetUndoCollection=2012(int collectUndo,)
+
+# Select all the text in the document.
+fun void SelectAll=2013(,)
+
+# Remember the current position in the undo history as the position
+# at which the document was saved.
+fun void SetSavePoint=2014(,)
+
+# Retrieve a buffer of cells.
+# Returns the number of bytes in the buffer not including terminating nulls.
+fun int GetStyledText=2015(, textrange tr)
+
+# Are there any redoable actions in the undo history.
+fun bool CanRedo=2016(,)
+
+# Retrieve the line number at which a particular marker is located
+fun int MarkerLineFromHandle=2017(int handle,)
+
+# Delete a marker.
+fun void MarkerDeleteHandle=2018(int handle,)
+
+# Are white space characters currently visible?
+get bool GetViewWS=2020(,)
+
+# Make white space characters visible or invisible.
+set void SetViewWS=2021(bool viewWS,)
+
+# Set caret to start of a line and ensure it is visible.
+fun void GotoLine=2024(int line,)
+
+# Set caret to a position and ensure it is visible.
+fun void GotoPos=2025(position pos,)
+
+# Set the selection anchor to a position. The anchor is the opposite
+# end of the selection from the caret.
+set void SetAnchor=2026(position posAnchor,)
+
+# Retrieve the text of the line containing the caret.
+# Returns the index of the caret on the line.
+fun int GetCurLine=2027(int length, stringresult text)
+
+# Retrieve the position of the last correctly styled character.
+get position GetEndStyled=2028(,)
+
+# Convert all line endings in the document to use the current mode.
+fun void ConvertEOLs=2029(,)
+
+val SC_EOL_CRLF=0
+val SC_EOL_CR=1
+val SC_EOL_LF=2
+
+# Retrieve the current end of line mode - one of CRLF, CR, or LF.
+get int GetEOLMode=2030(,)
+
+# Set the current end of line mode.
+set void SetEOLMode=2031(int eolMode,)
+
+# Set the current styling position to pos and the styling mask to mask.
+# The styling mask can be used to protect some bits in each styling byte from
+# modification.
+fun void StartStyling=2032(position pos, int mask)
+
+# Change style from current styling position for length characters to a style
+# and move the current styling position to after this newly styled segment.
+fun void SetStyling=2033(int length, int style)
+
+# If drawing is buffered then each line of text is drawn into a bitmap buffer
+# before drawing it to the screen to avoid flicker.
+set void SetBufferedDraw=2035(bool buffered,)
+
+# Change the visible size of a tab to be a multiple of the width of a space
+# character.
+set void SetTabWidth=2036(int tabWidth,)
+
+# Retrieve the visible size of a tab.
+get int GetTabWidth=2121(,)
+
+val SC_CP_UTF8=65001
+
+# Set the code page used to interpret the bytes of the document as characters.
+# The SC_CP_UTF8 value can be used to enter Unicode mode.
+set void SetCodePage=2037(int codePage,)
+
+# In palette mode, Scintilla uses the environments palette calls to display
+# more colours. This may lead to ugly displays.
+set void SetUsePalette=2039(bool usePalette,)
+
+val MARKER_MAX=31
+val SC_MARK_CIRCLE=0
+val SC_MARK_ROUNDRECT=1
+val SC_MARK_ARROW=2
+val SC_MARK_SMALLRECT=3
+val SC_MARK_SHORTARROW=4
+val SC_MARK_EMPTY=5
+val SC_MARK_ARROWDOWN=6
+val SC_MARK_MINUS=7
+val SC_MARK_PLUS=8
+
+val SC_MARKNUM_FOLDER=30
+val SC_MARKNUM_FOLDEROPEN=31
+##val SC_MASK_FOLDERS=1<<SC_MARKNUM_FOLDER | 1<<SC_MARKNUM_FOLDEROPEN
+
+# Set the symbol used for a particular marker number.
+fun void MarkerDefine=2040(int markerNumber, int markerSymbol)
+
+# Set the foreground colour used for a particular marker number.
+fun void MarkerSetFore=2041(int markerNumber, colour fore)
+
+# Set the background colour used for a particular marker number.
+fun void MarkerSetBack=2042(int markerNumber, colour back)
+
+# Add a marker to a line.
+fun void MarkerAdd=2043(int line, int markerNumber)
+
+# Delete a marker from a line
+fun void MarkerDelete=2044(int line, int markerNumber)
+
+# Delete all markers with a particular number from all lines
+fun void MarkerDeleteAll=2045(int markerNumber,)
+
+# Get a bit mask of all the markers set on a line.
+fun int MarkerGet=2046(int line,)
+
+# Find the next line after lineStart that includes a marker in mask.
+fun int MarkerNext=2047(int lineStart, int markerMask)
+
+# Find the previous line before lineStart that includes a marker in mask.
+fun int MarkerPrevious=2048(int lineStart, int markerMask)
+
+val SC_MARGIN_SYMBOL=0
+val SC_MARGIN_NUMBER=1
+
+# Set a margin to be either numeric or symbolic.
+set void SetMarginTypeN=2240(int margin, int marginType)
+
+# Retrieve the type of a margin.
+get int GetMarginTypeN=2241(int margin,)
+
+# Set the width of a margin to a width expressed in pixels.
+set void SetMarginWidthN=2242(int margin, int pixelWidth)
+
+# Retrieve the width of a margin in pixels.
+get int GetMarginWidthN=2243(int margin,)
+
+# Set a mask that determines which markers are displayed in a margin.
+set void SetMarginMaskN=2244(int margin, int mask)
+
+# Retrieve the marker mask of a margin.
+get int GetMarginMaskN=2245(int margin,)
+
+# Make a margin sensitive or insensitive to mouse clicks.
+set void SetMarginSensitiveN=2246(int margin, bool sensitive)
+
+# Retrieve the mouse click sensitivity of a margin.
+get bool GetMarginSensitiveN=2247(int margin,)
+
+val STYLE_DEFAULT=32
+val STYLE_LINENUMBER=33
+val STYLE_BRACELIGHT=34
+val STYLE_BRACEBAD=35
+val STYLE_CONTROLCHAR=36
+val STYLE_MAX=127
+
+# Clear all the styles and make equivalent to the global default style.
+set void StyleClearAll=2050(,)
+
+# Set the foreground colour of a style.
+set void StyleSetFore=2051(int style, colour fore)
+
+# Set the background colour of a style.
+set void StyleSetBack=2052(int style, colour back)
+
+# Set a style to be bold or not.
+set void StyleSetBold=2053(int style, bool bold)
+
+# Set a style to be italic or not.
+set void StyleSetItalic=2054(int style, bool italic)
+
+# Set the size of characters of a style.
+set void StyleSetSize=2055(int style, int sizePoints)
+
+# Set the font of a style.
+set void StyleSetFont=2056(int style, string fontName)
+
+# Set a style to have its end of line filled or not.
+set void StyleSetEOLFilled=2057(int style, bool filled)
+
+# Reset the default style to its state at startup
+fun void StyleResetDefault=2058(,)
+
+# Set a style to be underlined or not.
+set void StyleSetUnderline=2059(int style, bool underline)
+
+# Set the character set of the font in a style.
+set void StyleSetCharacterSet=2066(int style, int characterSet)
+
+# Set the foreground colour of the selection and whether to use this setting.
+fun void SetSelFore=2067(bool useSetting, colour fore)
+
+# Set the background colour of the selection and whether to use this setting.
+fun void SetSelBack=2068(bool useSetting, colour back)
+
+# Set the foreground colour of the caret.
+fun void SetCaretFore=2069(colour fore,)
+
+# When key+modifier combination km is pressed perform msg.
+fun void AssignCmdKey=2070(keymod km, int msg)
+
+# When key+modifier combination km do nothing.
+fun void ClearCmdKey=2071(keymod km,)
+
+# Drop all key mappings.
+fun void ClearAllCmdKeys=2072(,)
+
+# Set the styles for a segment of the document.
+fun void SetStylingEx=2073(int length, string styles)
+
+# Get the time in milliseconds that the caret is on and off.
+get int GetCaretPeriod=2075(,)
+
+# Get the time in milliseconds that the caret is on and off. 0 = steady on.
+set void SetCaretPeriod=2076(int periodMilliseconds,)
+
+# Set the set of characters making up words for when moving or selecting
+# by word.
+set void SetWordChars=2077(, string characters)
+
+# Start a sequence of actions that is undone and redone as a unit.
+# May be nested.
+fun void BeginUndoAction=2078(,)
+
+# End a sequence of actions that is undone and redone as a unit.
+fun void EndUndoAction=2079(,)
+
+val INDIC_MAX=7
+val INDIC_PLAIN=0
+val INDIC_SQUIGGLE=1
+val INDIC_TT=2
+val INDIC_DIAGONAL=3
+val INDIC_STRIKE=4
+val INDIC0_MASK=32
+val INDIC1_MASK=64
+val INDIC2_MASK=128
+val INDICS_MASK=INDIC0_MASK | INDIC1_MASK | INDIC2_MASK
+
+# Set an indicator to plain, squiggle or TT.
+set void IndicSetStyle=2080(int indic, int style)
+
+# Retrieve the style of an indicator.
+get int IndicGetStyle=2081(int indic,)
+
+# Set the foreground colour of an indicator.
+set void IndicSetFore=2082(int indic, colour fore)
+
+# Retrieve the foreground colour of an indicator.
+get colour IndicGetFore=2083(int indic,)
+
+# Divide each styling byte into lexical class bits (default:5) and indicator
+# bits (default:3). If a lexer requires more than 32 lexical states, then this
+# is used to expand the possible states.
+set void SetStyleBits=2090(int bits,)
+
+# Retrieve number of bits in style bytes used to hold the lexical state.
+get int GetStyleBits=2091(,)
+
+# Used to hold extra styling information for each line.
+set void SetLineState=2092(int line, int state)
+
+# Retrieve the extra styling information for a line.
+get int GetLineState=2093(int line,)
+
+# Retrieve the last line number that has line state.
+get int GetMaxLineState=2094(,)
+
+# Display a auto-completion list.
+# The lenEntered parameter indicates how many characters before
+# the caret should be used to provide context.
+fun void AutoCShow=2100(int lenEntered, string itemList)
+
+# Remove the auto-completion list from the screen.
+fun void AutoCCancel=2101(,)
+
+# Is there an auto-completion list visible?
+fun bool AutoCActive=2102(,)
+
+# Retrieve the position of the caret when the auto-completion list was
+# displayed.
+fun position AutoCPosStart=2103(,)
+
+# User has selected an item so remove the list and insert the selection.
+fun void AutoCComplete=2104(,)
+
+# Define a set of character that when typed cancel the auto-completion list.
+fun void AutoCStops=2105(, string characterSet)
+
+# Change the separator character in the string setting up an auto-completion
+# list. Default is space but can be changed if items contain space.
+set void AutoCSetSeparator=2106(int separatorCharacter,)
+
+# Retrieve the auto-completion list separator character.
+get int AutoCGetSeparator=2107(,)
+
+# Select the item in the auto-completion list that starts with a string.
+fun void AutoCSelect=2108(, string text)
+
+# Set the number of spaces used for one level of indentation.
+set void SetIndent=2122(int indentSize,)
+
+# Retrieve indentation size.
+get int GetIndent=2123(,)
+
+# Indentation will only use space characters if useTabs is false, otherwise
+# it will use a combination of tabs and spaces.
+set void SetUseTabs=2124(bool useTabs,)
+
+# Retrieve whether tabs will be used in indentation.
+get bool GetUseTabs=2125(,)
+
+# Change the indentation of a line to a number of columns.
+set void SetLineIndentation=2126(int line, int indentSize)
+
+# Retrieve the number of columns that a line is indented.
+get int GetLineIndentation=2127(int line,)
+
+# Retrieve the position before the first non indentation character on a line.
+get position GetLineIndentPosition=2128(int line,)
+
+# Show or hide the horizontal scroll bar
+set void SetHScrollBar=2130(bool show,)
+
+# Is the horizontal scroll bar visible.
+get bool GetHScrollBar=2131(,)
+
+# Show a call tip containing a definition near position pos.
+fun void CallTipShow=2200(position pos, string definition)
+
+# Remove the call tip from the screen.
+fun void CallTipCancel=2201(,)
+
+# Is there an active call tip?
+fun bool CallTipActive=2202(,)
+
+# Retrieve the position where the caret was before displaying the call tip.
+fun position CallTipPosStart=2203(,)
+
+# Highlight a segment of the definition.
+fun void CallTipSetHlt=2204(int start, int end)
+
+# Set the background colour for the call tip.
+set void CallTipSetBack=2205(colour back,)
+
+# Find the display line of a document line taking hidden lines into account.
+fun int VisibleFromDocLine=2220(int line,)
+
+# Find the document line of a display line taking hidden lines into account.
+fun int DocLineFromVisible=2221(int lineDisplay,)
+
+val SC_FOLDLEVELBASE=0x400
+val SC_FOLDLEVELWHITEFLAG=0x1000
+val SC_FOLDLEVELHEADERFLAG=0x2000
+val SC_FOLDLEVELNUMBERMASK=0x0FFF
+
+# Set the fold level of a line.
+# This encodes an integer level along with flags indicating whether the
+# line is a header and whether it is effectively white space.
+set void SetFoldLevel=2222(int line, int level)
+
+# Retrieve the fold level of a line.
+get int GetFoldLevel=2223(int line,)
+
+# Find the last child line of a header line.
+get int GetLastChild=2224(int line,)
+
+# Find the parent line of a child line.
+get int GetFoldParent=2225(int line,)
+
+# Make a range of lines visible.
+fun void ShowLines=2226(int lineStart, int lineEnd)
+
+# Make a range of lines invisible.
+fun void HideLines=2227(int lineStart, int lineEnd)
+
+# Is a line visible?
+get bool GetLineVisible=2228(int line,)
+
+# Show the children of a header line.
+set void SetFoldExpanded=2229(int line, bool expanded)
+
+# Is a header line expanded?
+get bool GetFoldExpanded=2230(int line,)
+
+# Switch a header line between expanded and contracted.
+fun void ToggleFold=2231(int line,)
+
+# Ensure a particular line is visible by expanding any header line hiding it.
+fun void EnsureVisible=2232(int line,)
+
+# Set some debugging options for folding
+fun void SetFoldFlags=2233(int flags,)
+
+# Move caret down one line.
+fun void LineDown=2300(,)
+
+# Move caret down one line extending selection to new caret position.
+fun void LineDownExtend=2301(,)
+
+# Move caret up one line.
+fun void LineUp=2302(,)
+
+# Move caret up one line extending selection to new caret position.
+fun void LineUpExtend=2303(,)
+
+# Move caret left one character.
+fun void CharLeft=2304(,)
+
+# Move caret left one character extending selection to new caret position.
+fun void CharLeftExtend=2305(,)
+
+# Move caret right one character.
+fun void CharRight=2306(,)
+
+# Move caret right one character extending selection to new caret position.
+fun void CharRightExtend=2307(,)
+
+# Move caret left one word.
+fun void WordLeft=2308(,)
+
+# Move caret left one word extending selection to new caret position.
+fun void WordLeftExtend=2309(,)
+
+# Move caret right one word.
+fun void WordRight=2310(,)
+
+# Move caret right one word extending selection to new caret position.
+fun void WordRightExtend=2311(,)
+
+# Move caret to first position on line.
+fun void Home=2312(,)
+
+# Move caret to first position on line extending selection to new caret position.
+fun void HomeExtend=2313(,)
+
+# Move caret to last position on line.
+fun void LineEnd=2314(,)
+
+# Move caret to last position on line extending selection to new caret position.
+fun void LineEndExtend=2315(,)
+
+# Move caret to first position in document.
+fun void DocumentStart=2316(,)
+
+# Move caret to first position in document extending selection to new caret position.
+fun void DocumentStartExtend=2317(,)
+
+# Move caret to last position in document.
+fun void DocumentEnd=2318(,)
+
+# Move caret to last position in document extending selection to new caret position.
+fun void DocumentEndExtend=2319(,)
+
+# Move caret one page up.
+fun void PageUp=2320(,)
+
+# Move caret one page up extending selection to new caret position.
+fun void PageUpExtend=2321(,)
+
+# Move caret one page down.
+fun void PageDown=2322(,)
+
+# Move caret one page down extending selection to new caret position.
+fun void PageDownExtend=2323(,)
+
+# Switch from insert to overtype mode or the reverse.
+fun void EditToggleOvertype=2324(,)
+
+# Cancel any modes such as call tip or auto-completion list display.
+fun void Cancel=2325(,)
+
+# Delete the selection or if no selection, the character before the caret.
+fun void DeleteBack=2326(,)
+
+# If selection is empty or all on one line replace the selection with a tab
+# character.
+# If more than one line selected, indent the lines.
+fun void Tab=2327(,)
+
+# Dedent the selected lines.
+fun void BackTab=2328(,)
+
+# Insert a new line, may use a CRLF, CR or LF depending on EOL mode.
+fun void NewLine=2329(,)
+
+# Insert a Form Feed character.
+fun void FormFeed=2330(,)
+
+# Move caret to before first visible character on line.
+# If already there move to first character on line.
+fun void VCHome=2331(,)
+
+# Like VCHome but extending selection to new caret position.
+fun void VCHomeExtend=2332(,)
+
+# Magnify the displayed text by increasing the sizes by 1 point.
+fun void ZoomIn=2333(,)
+
+# Make the displayed text smaller by decreasing the sizes by 1 point.
+fun void ZoomOut=2334(,)
+
+# Delete the word to the left of the caret.
+fun void DelWordLeft=2335(,)
+
+# Delete the word to the right of the caret.
+fun void DelWordRight=2336(,)
+
+# Cut the line containing the caret.
+fun void LineCut=2337(,)
+
+# Delete the line containing the caret.
+fun void LineDelete=2338(,)
+
+# Switch the current line with the previous.
+fun void LineTranspose=2339(,)
+
+# Transform the selection to lower case.
+fun void LowerCase=2340(,)
+
+# Transform the selection to upper case.
+fun void UpperCase=2341(,)
+
+# Scroll the document down, keeping the caret visible.
+fun void LineScrollDown=2342(,)
+
+# Scroll the document up, keeping the caret visible.
+fun void LineScrollUp=2343(,)
+
+# How many characters are on a line, not including end of line characters.
+fun int LineLength=2350(int line,)
+
+# Highlight the characters at two positions.
+fun void BraceHighlight=2351(position pos1,position pos2)
+
+# Highlight the character at a position indicating there is no matching brace.
+fun void BraceBadLight=2352(position pos,)
+
+# Find the position of a matching brace or INVALID_POSITION if no match.
+fun position BraceMatch=2353(position pos,)
+
+# Are the end of line characters visible.
+get bool GetViewEOL=2355(,)
+
+# Make the end of line characters visible or invisible
+set void SetViewEOL=2356(bool visible,)
+
+# Retrieve a pointer to the document object.
+get int GetDocPointer=2357(,)
+
+# Change the document object used.
+set void SetDocPointer=2358(int pointer,)
+
+# Set which document modification events are sent to the container.
+set void SetModEventMask=2359(int mask,)
+
+val EDGE_NONE=0
+val EDGE_LINE=1
+val EDGE_BACKGROUND=2
+
+# Retrieve the column number which text should be kept within.
+get int GetEdgeColumn=2360(,)
+
+# Set the column number of the edge.
+# If text goes past the edge then it is highlighted.
+set void SetEdgeColumn=2361(int column,)
+
+# Retrieve the edge highlight mode.
+get int GetEdgeMode=2362(,)
+
+# The edge may be displayed by a line (EDGE_LINE) or by highlighting text that
+# goes beyond it (EDGE_BACKGROUND) or not displayed at all (EDGE_NONE).
+set void SetEdgeMode=2363(int mode,)
+
+# Retrieve the colour used in edge indication.
+get colour GetEdgeColour=2364(,)
+
+# Change the colour used in edge indication.
+set void SetEdgeColour=2365(colour edgeColour,)
+
+# Sets the current caret position to be the search anchor.
+fun void SearchAnchor=2366(,)
+
+# Find some text starting at the search anchor.
+fun int SearchNext=2367(int flags, string text)
+
+# Find some text starting at the search anchor and moving backwards.
+fun int SearchPrev=2368(int flags, string text)
+
+val CARET_SLOP=0x01
+val CARET_CENTER=0x02
+val CARET_STRICT=0x04
+# Set the way the line the caret is on is kept visible.
+fun void SetCaretPolicy=2369(int caretPolicy, int caretSlop)
+
+# Retrieves the number of lines completely visible.
+get int LinesOnScreen=2370(,)
+
+# Set whether a pop up menu is displayed automatically when the user presses
+# the wrong mouse button.
+fun void UsePopUp=2371(bool allowPopUp,)
+
+# Is the selection a rectangular. The alternative is the more common stream selection.
+get bool SelectionIsRectangle=2372(,)
+
+# Set the zoom level. This number of points is added to the size of all fonts.
+# It may be positive to magnify or negative to reduce.
+set void SetZoom=2373(int zoom,)
+# Retrieve the zoom level.
+get int GetZoom=2374(,)
+
+# Extend life of document.
+fun void AddRefDoc=2375(, int doc)
+# Release a reference to the document, deleting document if it fades to black.
+fun void ReleaseDoc=2376(, int doc)
+
+# Set the focus to this Scintilla widget.
+fun void GrabFocus=2400(,)
+
+# Start notifying the container of all key presses and commands.
+fun void StartRecord=3001(,)
+
+# Stop notifying the container of all key presses and commands.
+fun void StopRecord=3002(,)
+
+# Set the lexing language of the document.
+set void SetLexer=4001(int lexer,)
+
+# Retrieve the lexing language of the document.
+get int GetLexer=4002(,)
+
+# Colourise a segment of the document using the current lexing language.
+fun void Colourise=4003(position start, position end)
+
+# Set up a value that may be used by a lexer for some optional feature.
+set void SetProperty=4004(string key, string value)
+
+# Set up the key words used by the lexer.
+set void SetKeyWords=4005(int keywordSet, string keyWords)
+
+val SC_MOD_INSERTTEXT=0x1
+val SC_MOD_DELETETEXT=0x2
+val SC_MOD_CHANGESTYLE=0x4
+val SC_MOD_CHANGEFOLD=0x8
+val SC_PERFORMED_USER=0x10
+val SC_PERFORMED_UNDO=0x20
+val SC_PERFORMED_REDO=0x40
+val SC_LASTSTEPINUNDOREDO=0x100
+val SC_MOD_CHANGEMARKER=0x200
+val SC_MOD_BEFOREINSERT=0x400
+val SC_MOD_BEFOREDELETE=0x800
+val SC_MODEVENTMASKALL=0xF77
+val SCN_STYLENEEDED=2000
+val SCN_CHARADDED=2001
+val SCN_SAVEPOINTREACHED=2002
+val SCN_SAVEPOINTLEFT=2003
+val SCN_MODIFYATTEMPTRO=2004
+val SCN_KEY=2005
+val SCN_DOUBLECLICK=2006
+val SCN_UPDATEUI=2007
+val SCN_CHECKBRACE=2007
+val SCN_MODIFIED=2008
+val SCN_MACRORECORD=2009
+val SCN_MARGINCLICK=2010
+val SCN_NEEDSHOWN=2011
+
+################################################
+# From SciLexer.h
+val SCLEX_CONTAINER=0
+val SCLEX_NULL=1
+val SCLEX_PYTHON=2
+val SCLEX_CPP=3
+val SCLEX_HTML=4
+val SCLEX_XML=5
+val SCLEX_PERL=6
+val SCLEX_SQL=7
+val SCLEX_VB=8
+val SCLEX_PROPERTIES=9
+val SCLEX_ERRORLIST=10
+val SCLEX_MAKEFILE=11
+val SCLEX_BATCH=12
+val SCLEX_XCODE=13
+val SCLEX_LATEX=14
+val SCE_P_DEFAULT=0
+val SCE_P_COMMENTLINE=1
+val SCE_P_NUMBER=2
+val SCE_P_STRING=3
+val SCE_P_CHARACTER=4
+val SCE_P_WORD=5
+val SCE_P_TRIPLE=6
+val SCE_P_TRIPLEDOUBLE=7
+val SCE_P_CLASSNAME=8
+val SCE_P_DEFNAME=9
+val SCE_P_OPERATOR=10
+val SCE_P_IDENTIFIER=11
+val SCE_P_COMMENTBLOCK=12
+val SCE_P_STRINGEOL=13
+val SCE_C_DEFAULT=0
+val SCE_C_COMMENT=1
+val SCE_C_COMMENTLINE=2
+val SCE_C_COMMENTDOC=3
+val SCE_C_NUMBER=4
+val SCE_C_WORD=5
+val SCE_C_STRING=6
+val SCE_C_CHARACTER=7
+val SCE_C_UUID=8
+val SCE_C_PREPROCESSOR=9
+val SCE_C_OPERATOR=10
+val SCE_C_IDENTIFIER=11
+val SCE_C_STRINGEOL=12
+val SCE_H_DEFAULT=0
+val SCE_H_TAG=1
+val SCE_H_TAGUNKNOWN=2
+val SCE_H_ATTRIBUTE=3
+val SCE_H_ATTRIBUTEUNKNOWN=4
+val SCE_H_NUMBER=5
+val SCE_H_DOUBLESTRING=6
+val SCE_H_SINGLESTRING=7
+val SCE_H_OTHER=8
+val SCE_H_COMMENT=9
+val SCE_H_ENTITY=10
+val SCE_H_TAGEND=11
+val SCE_H_XMLSTART=12
+val SCE_H_XMLEND=13
+val SCE_H_SCRIPT=14
+val SCE_H_ASP=15
+val SCE_H_ASPAT=16
+val SCE_HJ_START=40
+val SCE_HJ_DEFAULT=41
+val SCE_HJ_COMMENT=42
+val SCE_HJ_COMMENTLINE=43
+val SCE_HJ_COMMENTDOC=44
+val SCE_HJ_NUMBER=45
+val SCE_HJ_WORD=46
+val SCE_HJ_KEYWORD=47
+val SCE_HJ_DOUBLESTRING=48
+val SCE_HJ_SINGLESTRING=49
+val SCE_HJ_SYMBOLS=50
+val SCE_HJ_STRINGEOL=51
+val SCE_HJA_START=55
+val SCE_HJA_DEFAULT=56
+val SCE_HJA_COMMENT=57
+val SCE_HJA_COMMENTLINE=58
+val SCE_HJA_COMMENTDOC=59
+val SCE_HJA_NUMBER=60
+val SCE_HJA_WORD=61
+val SCE_HJA_KEYWORD=62
+val SCE_HJA_DOUBLESTRING=63
+val SCE_HJA_SINGLESTRING=64
+val SCE_HJA_SYMBOLS=65
+val SCE_HJA_STRINGEOL=66
+val SCE_HB_START=70
+val SCE_HB_DEFAULT=71
+val SCE_HB_COMMENTLINE=72
+val SCE_HB_NUMBER=73
+val SCE_HB_WORD=74
+val SCE_HB_STRING=75
+val SCE_HB_IDENTIFIER=76
+val SCE_HB_STRINGEOL=77
+val SCE_HBA_START=80
+val SCE_HBA_DEFAULT=81
+val SCE_HBA_COMMENTLINE=82
+val SCE_HBA_NUMBER=83
+val SCE_HBA_WORD=84
+val SCE_HBA_STRING=85
+val SCE_HBA_IDENTIFIER=86
+val SCE_HBA_STRINGEOL=87
+val SCE_HP_START=90
+val SCE_HP_DEFAULT=91
+val SCE_HP_COMMENTLINE=92
+val SCE_HP_NUMBER=93
+val SCE_HP_STRING=94
+val SCE_HP_CHARACTER=95
+val SCE_HP_WORD=96
+val SCE_HP_TRIPLE=97
+val SCE_HP_TRIPLEDOUBLE=98
+val SCE_HP_CLASSNAME=99
+val SCE_HP_DEFNAME=100
+val SCE_HP_OPERATOR=101
+val SCE_HP_IDENTIFIER=102
+val SCE_HPA_START=105
+val SCE_HPA_DEFAULT=106
+val SCE_HPA_COMMENTLINE=107
+val SCE_HPA_NUMBER=108
+val SCE_HPA_STRING=109
+val SCE_HPA_CHARACTER=110
+val SCE_HPA_WORD=111
+val SCE_HPA_TRIPLE=112
+val SCE_HPA_TRIPLEDOUBLE=113
+val SCE_HPA_CLASSNAME=114
+val SCE_HPA_DEFNAME=115
+val SCE_HPA_OPERATOR=116
+val SCE_HPA_IDENTIFIER=117
+val SCE_PL_DEFAULT=0
+val SCE_PL_HERE=1
+val SCE_PL_COMMENTLINE=2
+val SCE_PL_POD=3
+val SCE_PL_NUMBER=4
+val SCE_PL_WORD=5
+val SCE_PL_STRING=6
+val SCE_PL_CHARACTER=7
+val SCE_PL_PUNCTUATION=8
+val SCE_PL_PREPROCESSOR=9
+val SCE_PL_OPERATOR=10
+val SCE_PL_IDENTIFIER=11
+val SCE_PL_SCALAR=12
+val SCE_PL_ARRAY=13
+val SCE_PL_HASH=14
+val SCE_PL_SYMBOLTABLE=15
+val SCE_PL_REF=16
+val SCE_PL_REGEX=17
+val SCE_PL_REGSUBST=18
+val SCE_PL_LONGQUOTE=19
+val SCE_PL_BACKTICKS=20
+val SCE_PL_DATASECTION=21
+val SCE_L_DEFAULT=0
+val SCE_L_COMMAND=1
+val SCE_L_TAG=2
+val SCE_L_MATH=3
+val SCE_L_COMMENT=4
+
+################################################
+# From WinDefs.h
+
+# Will a paste succeed?
+fun bool EM_CanPaste=1074(,)
+
+# Are there any undoable actions in the undo history.
+fun bool EM_CanUndo=198(,)
+
+# Find the position and line from a point within the window.
+fun int EM_CharFromPos=215(,point pt)
+
+# Delete the undo history.
+fun void EM_EmptyUndoBuffer=205(,)
+
+# Retrieve the selection range.
+fun void EM_ExGetSel=1076(,charrange cr)
+
+# Retrieve the line number of a position in the document.
+get int EM_ExLineFromChar=1078(,position pos)
+
+# Select a range of text.
+fun void EM_ExSetSel=1079(,charrange cr)
+
+# Find some text in the document.
+fun position EM_FindText=1080(int flags, findtext ft)
+
+# Find some text in the document. Returns range of found text in ft argument.
+fun position EM_FindTextEx=1103(int flags, findtext ft)
+
+# On Windows will draw the document into a display context such as a printer.
+fun void EM_FormatRange=1081(bool draw, formatrange fr)
+
+# Retrieve the line at the top of the display.
+get int EM_GetFirstVisibleLine=206(,)
+
+# Retrieve the contents of a line.
+# Returns the length of the line.
+fun int EM_GetLine=196(int line, countedstring text)
+
+# Returns the number of lines in the document. There is always at least one.
+fun int EM_GetLineCount=186(,)
+
+# Returns the size in pixels of left and right margins packed into one integer.
+# The left margin is in the low half and the right margin in the high half.
+fun int EM_GetMargins=212(,)
+
+# Is the document different from when it was last saved?
+get bool EM_GetModify=184(,)
+
+# Get the area used to display the document.
+fun void EM_GetRect=178(,rectangle r)
+
+# Return the selection packed into one integer with the start of the selection
+# in the low half and the end in the high half.
+fun int EM_GetSel=176(,)
+
+# Retrieve the selected text.
+# Return the length of the text.
+fun int EM_GetSelText=1086(,stringresult text)
+
+# Retrieve a range of text.
+# Return the length of the text.
+fun int EM_GetTextRange=1099(, textrange tr)
+
+# Draw the selection in normal style or with selection highlighted.
+fun void EM_HideSelection=1087(bool normal,)
+
+# Retrieve the line of a position.
+fun int EM_LineFromChar=201(position pos,)
+
+# Retrieve the position at the start of a line.
+fun position EM_LineIndex=187(int line,)
+
+# Retrieve the number of characters on a line not including end of line characters.
+fun int EM_LineLength=193(int line,)
+
+# Scroll horizontally and vertically.
+fun void EM_LineScroll=182(int columns, int lines)
+
+# Retrieve the point in the window where a position is displayed.
+fun void EM_PosFromChar=214(point pt, position pos)
+
+# Replace the selected text with the argument text.
+fun void EM_ReplaceSel=194(, string text)
+
+# Ensure the caret is visible.
+fun void EM_ScrollCaret=183(,)
+
+# Returns SEL_EMPTY if selection contains no characters, otherwise SEL_TEXT.
+fun void EM_SelectionType=1090(,)
+
+# Set the width of the left and right margins
+fun void EM_SetMargins=211(int flags, int values)
+
+# Set to read only or read write.
+set void EM_SetReadOnly=207(bool readOnly,)
+
+# Select the range of text from start to end.
+fun void EM_SetSel=177(position start, position end)
+
+# Undo one action in the undo history.
+fun void EM_Undo=199(,)
+
+# Null operation.
+fun void WM_Null=0(,)
+
+# Clear the selection.
+fun void WM_Clear=771(,)
+
+fun void WM_Command=273(,)
+
+# Copy the selection to the clipboard.
+fun void WM_Copy=769(,)
+
+# Cut the selection to the clipboard.
+fun void WM_Cut=768(,)
+
+# Retrieve all the text in the document.
+# Returns number of characters retrieved.
+fun int WM_GetText=13(int length, stringresult text)
+
+# Retrieve the number of characters in the document.
+fun int WM_GetTextLength=14(,)
+
+# Notification back to container
+fun void WM_Notify=78(int id, int stuff)
+
+# Paste the contents of the clipboard into the document replacing the selection.
+fun void WM_Paste=770(,)
+
+# Replace the contents of the document with the argument text.
+fun void WM_SetText=12(, string text)
+
+# Undo one action in the undo history.
+fun void WM_Undo=772(,)
+
+# Notification codes
+val EN_CHANGE=768
+val EN_KILLFOCUS=512
+val EN_SETFOCUS=256
+
+# Flags for setting margins.
+val EC_LEFTMARGIN=1
+val EC_RIGHTMARGIN=2
+val EC_USEFONTINFO=0xffff
+
+# Selection type.
+val SEL_EMPTY=0
+val SEL_TEXT=1
+
+# Find replace mask constants
+val FR_MATCHCASE=0x4
+val FR_WHOLEWORD=0x2
+val FR_DOWN=0x1
+
+# Key modifier flag.
+val SHIFT_PRESSED=1
+val LEFT_CTRL_PRESSED=2
+val LEFT_ALT_PRESSED=4
+