'original C# implementation at http://scide.net/

Imports System
Imports System.Runtime.InteropServices
Imports System.IO
Imports System.ComponentModel
Imports System.Text

Imports Stax
Imports Stax.UI
Imports Stax.Win32

Namespace UI
    Public Class Scintilla
        Inherits Control

        Private ScintillaHandle As IntPtr
        Private DirectPointer As Integer
        Private Initialized As Boolean

        Public Sub New()
            Dim path As String = CommonDirs.Startup + "SciLexer.dll"

            If File.Exists(path) Then
                MyBase.SetStyle(ControlStyles.UserPaint, False)
                MyBase.SetStyle(ControlStyles.UseTextForAccessibility, False)
                MyBase.SetStyle((ControlStyles.StandardDoubleClick Or ControlStyles.StandardClick), False)

                LoadLibrary("SciLexer.dll")

                ScintillaHandle = CreateWindowEx(0, "Scintilla", "", _
                    WS.CHILD Or WS.VISIBLE Or WS.TABSTOP, 0, 0, _
                    Width, Height, Handle, 0, IntPtr.Zero, Nothing)

                DirectPointer = CInt(SlowPerform(Constants.SCI_GETDIRECTPOINTER, 0, 0))
                SPerform(Constants.SCI_SETCODEPAGE, Constants.SC_CP_UTF8, 0)
                SPerform(Constants.SCI_SETMODEVENTMASK, Constants.SC_MOD_INSERTTEXT Or Constants.SC_MOD_DELETETEXT, 0)

                Application.AddMessageFilter(New MessageFiler(AddressOf MessageCallback))

                Initialized = True
            Else
                BackColor = Color.White
            End If
        End Sub

#Region " Methods "
        Protected Overrides Sub WndProc(ByRef m As Message)
            If m.Msg = WM.NOTIFY Then
                Dim s As NotifyHeader = DirectCast(Marshal.PtrToStructure(m.LParam, GetType(NotifyHeader)), NotifyHeader)

                If s.hwndFrom = ScintillaHandle Then
                    Dim n As SCNotification = DirectCast(Marshal.PtrToStructure(m.LParam, GetType(SCNotification)), SCNotification)

                    If (n.modificationType And Constants.SC_MOD_INSERTTEXT) = Constants.SC_MOD_INSERTTEXT OrElse _
                        (n.modificationType And Constants.SC_MOD_DELETETEXT) = Constants.SC_MOD_DELETETEXT Then

                        OnTextChanged(Nothing)
                    End If
                End If
            End If

            MyBase.WndProc(m)
        End Sub

        Private Sub MessageCallback(ByRef m As Message, ByRef cancel As Boolean)
            If m.HWnd = ScintillaHandle Then
                Select Case m.Msg
                    Case WM.LBUTTONDOWN, WM.RBUTTONDOWN
                        If Not Focused Then
                            FindForm.ActiveControl = Me
                        End If
                    Case WM.KEYDOWN, WM.KEYUP, WM.CHAR, WM.SYSKEYDOWN, WM.SYSKEYUP
                        If CType(GetType(Control).InvokeMember("ProcessKeyMessage", _
                               Reflection.BindingFlags.Instance Or _
                               Reflection.BindingFlags.InvokeMethod Or _
                               Reflection.BindingFlags.NonPublic, _
                               Nothing, Me, New Object() {m}), Boolean) Then

                            cancel = True
                        End If
                End Select
            End If
        End Sub

        Protected Overrides Function IsInputKey(ByVal keyData As Keys) As Boolean
            If (keyData And Keys.Alt) <> Keys.Alt Then
                Dim data As Keys = keyData And Keys.KeyCode

                If data <> Keys.Tab Then
                    Select Case data
                        Case Keys.Prior, Keys.Next, Keys.End, Keys.Home, _
                            Keys.Left, Keys.Up, Keys.Right, Keys.Down

                            Return True
                    End Select
                Else
                    Return ((keyData And Keys.Control) = Keys.None)
                End If
            End If

            Return MyBase.IsInputKey(keyData)
        End Function

        Protected Overrides Sub OnResize(ByVal e As EventArgs)
            MyBase.OnResize(e)

            If Initialized Then
                SetWindowPos(ScintillaHandle, 0, ClientRectangle.X, ClientRectangle.Y, ClientRectangle.Width, ClientRectangle.Height, 0)
            End If
        End Sub

        Private Function GetScintillaFocus() As Boolean
            If Initialized Then
                Return SPerform(Constants.SCI_GETFOCUS, 0, 0) <> 0
            End If
        End Function

        Private Sub SetScintillaFocus(ByVal focus As Boolean)
            If Initialized Then
                If focus Then
                    SPerform(Constants.SCI_SETFOCUS, CType(1, System.UInt32), 0)
                Else
                    SPerform(Constants.SCI_SETFOCUS, CType(0, System.UInt32), 0)
                End If
            End If
        End Sub

        Protected Overrides Sub OnGotFocus(ByVal e As EventArgs)
            SetScintillaFocus(SetFocus(ScintillaHandle) <> IntPtr.Zero)
        End Sub

        Protected Overrides Sub OnLostFocus(ByVal e As EventArgs)
            SetScintillaFocus(False)
        End Sub

        Public Overrides ReadOnly Property Focused() As Boolean
            Get
                Return GetScintillaFocus()
            End Get
        End Property
#End Region

#Region " Properties "
        Private ReadOnlyValue As Boolean

        <Category("Scintilla"), DefaultValue(False)> _
        Public Property [ReadOnly]() As Boolean
            Get
                If Initialized Then
                    Return SPerform(Constants.SCI_GETREADONLY, 0, 0) <> 0
                Else
                    Return ReadOnlyValue
                End If
            End Get
            Set(ByVal value As Boolean)
                ReadOnlyValue = value

                If Initialized Then
                    If value Then
                        SPerform(Constants.SCI_SETREADONLY, CType(1, System.UInt32), 0)
                    Else
                        SPerform(Constants.SCI_SETREADONLY, CType(0, System.UInt32), 0)
                    End If
                End If
            End Set
        End Property

        Public ReadOnly Property Length() As Integer
            Get
                Return CInt(SPerform(Constants.SCI_GETLENGTH, 0, 0))
            End Get
        End Property

        Private TextValue As String = ""

        Public Overrides Property Text() As String
            Get
                If Initialized Then
                    Dim buffer As Byte() = New Byte(Length) {}
                    Dim ptr As IntPtr = Marshal.AllocHGlobal(buffer.Length)
                    SPerform(Constants.SCI_GETTEXT, CType(buffer.Length, UInteger), CType(ptr, UInteger))
                    Marshal.Copy(ptr, buffer, 0, buffer.Length)
                    Marshal.FreeHGlobal(ptr)
                    Return UTF8Encoding.UTF8.GetString(buffer, 0, buffer.Length - 1)
                End If

                Return TextValue
            End Get
            Set(ByVal value As String)
                TextValue = value

                If Initialized Then
                    If value Is Nothing Then
                        value = ""
                    End If

                    Dim buffer As Byte() = UTF8Encoding.UTF8.GetBytes(value + ChrW(0))
                    Dim ptr As IntPtr = Marshal.AllocHGlobal(buffer.Length)
                    Marshal.Copy(buffer, 0, ptr, buffer.Length)
                    SPerform(Constants.SCI_SETTEXT, 0, CType(ptr, UInteger))
                    Marshal.FreeHGlobal(ptr)
                End If
            End Set
        End Property

        Protected Overrides ReadOnly Property CreateParams() As CreateParams
            Get
                Dim ret As CreateParams = MyBase.CreateParams
                ret.ExStyle = ret.ExStyle Or CInt(WS.EX_CLIENTEDGE)
                Return ret
            End Get
        End Property
#End Region

#Region " Native "
        <DllImport("kernel32")> _
        Private Shared Function LoadLibrary(ByVal lpLibFileName As String) As IntPtr
        End Function

        <DllImport("user32.dll")> _
        Private Shared Function CreateWindowEx(ByVal dwExStyle As UInteger, ByVal lpClassName As String, ByVal lpWindowName As String, ByVal dwStyle As UInteger, ByVal x As Integer, ByVal y As Integer, ByVal width As Integer, ByVal height As Integer, ByVal hWndParent As IntPtr, ByVal hMenu As Integer, ByVal hInstance As IntPtr, ByVal lpParam As String) As IntPtr
        End Function

        <DllImport("user32.dll")> _
        Private Shared Function SendMessage(ByVal hWnd As Integer, ByVal msg As UInt32, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
        End Function

        <DllImport("user32.dll")> _
        Private Shared Function SetWindowPos(ByVal hWnd As IntPtr, ByVal hWndInsertAfter As Integer, ByVal X As Integer, ByVal Y As Integer, ByVal cx As Integer, ByVal cy As Integer, ByVal uFlags As Integer) As Integer
        End Function

        <DllImport("scilexer.dll", EntryPoint:="Scintilla_DirectFunction")> _
        Private Shared Function Perform(ByVal directPointer As Integer, ByVal message As UInt32, ByVal wParam As UInt32, ByVal lParam As UInt32) As Integer
        End Function

        Private Function SlowPerform(ByVal message As UInt32, ByVal wParam As UInt32, ByVal lParam As UInt32) As UInt32
            Return CType(SendMessage(CInt(ScintillaHandle), message, CInt(wParam), CInt(lParam)), UInt32)
        End Function

        Private Function SPerform(ByVal message As UInt32, ByVal wParam As UInt32, ByVal lParam As UInt32) As UInt32
            Return CType(Perform(DirectPointer, message, wParam, lParam), UInt32)
        End Function

        <DllImport("user32.dll")> _
        Public Shared Function SetFocus(ByVal hwnd As IntPtr) As IntPtr
        End Function

        Public Structure SCNotification
            Public nmhdr As NotifyHeader
            Public position As Integer ' SCN_STYLENEEDED, SCN_MODIFIED, SCN_DWELLSTART, SCN_DWELLEND
            Public ch As Integer ' SCN_CHARADDED, SCN_KEY
            Public modifiers As Integer ' SCN_KEY
            Public modificationType As Integer ' SCN_MODIFIED
            Public text As IntPtr ' SCN_MODIFIED
            Public length As Integer ' SCN_MODIFIED
            Public linesAdded As Integer ' SCN_MODIFIED
            Public message As Integer ' SCN_MACRORECORD
            Public wParam As IntPtr ' SCN_MACRORECORD
            Public lParam As IntPtr ' SCN_MACRORECORD
            Public line As Integer ' SCN_MODIFIED
            Public foldLevelNow As Integer ' SCN_MODIFIED
            Public foldLevelPrev As Integer ' SCN_MODIFIED
            Public margin As Integer ' SCN_MARGINCLICK
            Public listType As Integer ' SCN_USERLISTSELECTION
            Public x As Integer ' SCN_DWELLSTART, SCN_DWELLEND
            Public y As Integer ' SCN_DWELLSTART, SCN_DWELLEND
        End Structure

        Public Structure NotifyHeader
            Public hwndFrom As IntPtr
            Public idFrom As UInteger
            Public code As UInteger
        End Structure

        Public Enum Constants As UInteger
            'INVALID_POSITION = -1
            SCI_START = 2000
            SCI_OPTIONAL_START = 3000
            SCI_LEXER_START = 4000
            SCI_ADDTEXT = 2001
            SCI_ADDSTYLEDTEXT = 2002
            SCI_INSERTTEXT = 2003
            SCI_CLEARALL = 2004
            SCI_CLEARDOCUMENTSTYLE = 2005
            SCI_GETLENGTH = 2006
            SCI_GETCHARAT = 2007
            SCI_GETCURRENTPOS = 2008
            SCI_GETANCHOR = 2009
            SCI_GETSTYLEAT = 2010
            SCI_REDO = 2011
            SCI_SETUNDOCOLLECTION = 2012
            SCI_SELECTALL = 2013
            SCI_SETSAVEPOINT = 2014
            SCI_GETSTYLEDTEXT = 2015
            SCI_CANREDO = 2016
            SCI_MARKERLINEFROMHANDLE = 2017
            SCI_MARKERDELETEHANDLE = 2018
            SCI_GETUNDOCOLLECTION = 2019
            SCWS_INVISIBLE = 0
            SCWS_VISIBLEALWAYS = 1
            SCWS_VISIBLEAFTERINDENT = 2
            SCI_GETVIEWWS = 2020
            SCI_SETVIEWWS = 2021
            SCI_POSITIONFROMPOINT = 2022
            SCI_POSITIONFROMPOINTCLOSE = 2023
            SCI_GOTOLINE = 2024
            SCI_GOTOPOS = 2025
            SCI_SETANCHOR = 2026
            SCI_GETCURLINE = 2027
            SCI_GETENDSTYLED = 2028
            SC_EOL_CRLF = 0
            SC_EOL_CR = 1
            SC_EOL_LF = 2
            SCI_CONVERTEOLS = 2029
            SCI_GETEOLMODE = 2030
            SCI_SETEOLMODE = 2031
            SCI_STARTSTYLING = 2032
            SCI_SETSTYLING = 2033
            SCI_GETBUFFEREDDRAW = 2034
            SCI_SETBUFFEREDDRAW = 2035
            SCI_SETTABWIDTH = 2036
            SCI_GETTABWIDTH = 2121
            SC_CP_UTF8 = 65001
            SC_CP_DBCS = 1
            SCI_SETCODEPAGE = 2037
            SCI_SETUSEPALETTE = 2039
            MARKER_MAX = 31
            SC_MARK_CIRCLE = 0
            SC_MARK_ROUNDRECT = 1
            SC_MARK_ARROW = 2
            SC_MARK_SMALLRECT = 3
            SC_MARK_SHORTARROW = 4
            SC_MARK_EMPTY = 5
            SC_MARK_ARROWDOWN = 6
            SC_MARK_MINUS = 7
            SC_MARK_PLUS = 8
            SC_MARK_VLINE = 9
            SC_MARK_LCORNER = 10
            SC_MARK_TCORNER = 11
            SC_MARK_BOXPLUS = 12
            SC_MARK_BOXPLUSCONNECTED = 13
            SC_MARK_BOXMINUS = 14
            SC_MARK_BOXMINUSCONNECTED = 15
            SC_MARK_LCORNERCURVE = 16
            SC_MARK_TCORNERCURVE = 17
            SC_MARK_CIRCLEPLUS = 18
            SC_MARK_CIRCLEPLUSCONNECTED = 19
            SC_MARK_CIRCLEMINUS = 20
            SC_MARK_CIRCLEMINUSCONNECTED = 21
            SC_MARK_BACKGROUND = 22
            SC_MARK_DOTDOTDOT = 23
            SC_MARK_ARROWS = 24
            SC_MARK_PIXMAP = 25
            SC_MARK_FULLRECT = 26
            SC_MARK_CHARACTER = 10000
            SC_MARKNUM_FOLDEREND = 25
            SC_MARKNUM_FOLDEROPENMID = 26
            SC_MARKNUM_FOLDERMIDTAIL = 27
            SC_MARKNUM_FOLDERTAIL = 28
            SC_MARKNUM_FOLDERSUB = 29
            SC_MARKNUM_FOLDER = 30
            SC_MARKNUM_FOLDEROPEN = 31
            'SC_MASK_FOLDERS = &HFE000000
            SCI_MARKERDEFINE = 2040
            SCI_MARKERSETFORE = 2041
            SCI_MARKERSETBACK = 2042
            SCI_MARKERADD = 2043
            SCI_MARKERDELETE = 2044
            SCI_MARKERDELETEALL = 2045
            SCI_MARKERGET = 2046
            SCI_MARKERNEXT = 2047
            SCI_MARKERPREVIOUS = 2048
            SCI_MARKERDEFINEPIXMAP = 2049
            SC_MARGIN_SYMBOL = 0
            SC_MARGIN_NUMBER = 1
            SCI_SETMARGINTYPEN = 2240
            SCI_GETMARGINTYPEN = 2241
            SCI_SETMARGINWIDTHN = 2242
            SCI_GETMARGINWIDTHN = 2243
            SCI_SETMARGINMASKN = 2244
            SCI_GETMARGINMASKN = 2245
            SCI_SETMARGINSENSITIVEN = 2246
            SCI_GETMARGINSENSITIVEN = 2247
            STYLE_DEFAULT = 32
            STYLE_LINENUMBER = 33
            STYLE_BRACELIGHT = 34
            STYLE_BRACEBAD = 35
            STYLE_CONTROLCHAR = 36
            STYLE_INDENTGUIDE = 37
            STYLE_LASTPREDEFINED = 39
            STYLE_MAX = 127
            SC_CHARSET_ANSI = 0
            SC_CHARSET_DEFAULT = 1
            SC_CHARSET_BALTIC = 186
            SC_CHARSET_CHINESEBIG5 = 136
            SC_CHARSET_EASTEUROPE = 238
            SC_CHARSET_GB2312 = 134
            SC_CHARSET_GREEK = 161
            SC_CHARSET_HANGUL = 129
            SC_CHARSET_MAC = 77
            SC_CHARSET_OEM = 255
            SC_CHARSET_RUSSIAN = 204
            SC_CHARSET_SHIFTJIS = 128
            SC_CHARSET_SYMBOL = 2
            SC_CHARSET_TURKISH = 162
            SC_CHARSET_JOHAB = 130
            SC_CHARSET_HEBREW = 177
            SC_CHARSET_ARABIC = 178
            SC_CHARSET_VIETNAMESE = 163
            SC_CHARSET_THAI = 222
            SC_CHARSET_8859_15 = 1000
            SCI_STYLECLEARALL = 2050
            SCI_STYLESETFORE = 2051
            SCI_STYLESETBACK = 2052
            SCI_STYLESETBOLD = 2053
            SCI_STYLESETITALIC = 2054
            SCI_STYLESETSIZE = 2055
            SCI_STYLESETFONT = 2056
            SCI_STYLESETEOLFILLED = 2057
            SCI_STYLERESETDEFAULT = 2058
            SCI_STYLESETUNDERLINE = 2059
            SC_CASE_MIXED = 0
            SC_CASE_UPPER = 1
            SC_CASE_LOWER = 2
            SCI_STYLESETCASE = 2060
            SCI_STYLESETCHARACTERSET = 2066
            SCI_STYLESETHOTSPOT = 2409
            SCI_SETSELFORE = 2067
            SCI_SETSELBACK = 2068
            SCI_SETCARETFORE = 2069
            SCI_ASSIGNCMDKEY = 2070
            SCI_CLEARCMDKEY = 2071
            SCI_CLEARALLCMDKEYS = 2072
            SCI_SETSTYLINGEX = 2073
            SCI_STYLESETVISIBLE = 2074
            SCI_GETCARETPERIOD = 2075
            SCI_SETCARETPERIOD = 2076
            SCI_SETWORDCHARS = 2077
            SCI_BEGINUNDOACTION = 2078
            SCI_ENDUNDOACTION = 2079
            INDIC_MAX = 7
            INDIC_PLAIN = 0
            INDIC_SQUIGGLE = 1
            INDIC_TT = 2
            INDIC_DIAGONAL = 3
            INDIC_STRIKE = 4
            INDIC_HIDDEN = 5
            INDIC_BOX = 6
            INDIC0_MASK = &H20
            INDIC1_MASK = &H40
            INDIC2_MASK = &H80
            INDICS_MASK = &HE0
            SCI_INDICSETSTYLE = 2080
            SCI_INDICGETSTYLE = 2081
            SCI_INDICSETFORE = 2082
            SCI_INDICGETFORE = 2083
            SCI_SETWHITESPACEFORE = 2084
            SCI_SETWHITESPACEBACK = 2085
            SCI_SETSTYLEBITS = 2090
            SCI_GETSTYLEBITS = 2091
            SCI_SETLINESTATE = 2092
            SCI_GETLINESTATE = 2093
            SCI_GETMAXLINESTATE = 2094
            SCI_GETCARETLINEVISIBLE = 2095
            SCI_SETCARETLINEVISIBLE = 2096
            SCI_GETCARETLINEBACK = 2097
            SCI_SETCARETLINEBACK = 2098
            SCI_STYLESETCHANGEABLE = 2099
            SCI_AUTOCSHOW = 2100
            SCI_AUTOCCANCEL = 2101
            SCI_AUTOCACTIVE = 2102
            SCI_AUTOCPOSSTART = 2103
            SCI_AUTOCCOMPLETE = 2104
            SCI_AUTOCSTOPS = 2105
            SCI_AUTOCSETSEPARATOR = 2106
            SCI_AUTOCGETSEPARATOR = 2107
            SCI_AUTOCSELECT = 2108
            SCI_AUTOCSETCANCELATSTART = 2110
            SCI_AUTOCGETCANCELATSTART = 2111
            SCI_AUTOCSETFILLUPS = 2112
            SCI_AUTOCSETCHOOSESINGLE = 2113
            SCI_AUTOCGETCHOOSESINGLE = 2114
            SCI_AUTOCSETIGNORECASE = 2115
            SCI_AUTOCGETIGNORECASE = 2116
            SCI_USERLISTSHOW = 2117
            SCI_AUTOCSETAUTOHIDE = 2118
            SCI_AUTOCGETAUTOHIDE = 2119
            SCI_AUTOCSETDROPRESTOFWORD = 2270
            SCI_AUTOCGETDROPRESTOFWORD = 2271
            SCI_REGISTERIMAGE = 2405
            SCI_CLEARREGISTEREDIMAGES = 2408
            SCI_AUTOCGETTYPESEPARATOR = 2285
            SCI_AUTOCSETTYPESEPARATOR = 2286
            SCI_AUTOCSETMAXWIDTH = 2208
            SCI_AUTOCGETMAXWIDTH = 2209
            SCI_AUTOCSETMAXHEIGHT = 2210
            SCI_AUTOCGETMAXHEIGHT = 2211
            SCI_SETINDENT = 2122
            SCI_GETINDENT = 2123
            SCI_SETUSETABS = 2124
            SCI_GETUSETABS = 2125
            SCI_SETLINEINDENTATION = 2126
            SCI_GETLINEINDENTATION = 2127
            SCI_GETLINEINDENTPOSITION = 2128
            SCI_GETCOLUMN = 2129
            SCI_SETHSCROLLBAR = 2130
            SCI_GETHSCROLLBAR = 2131
            SCI_SETINDENTATIONGUIDES = 2132
            SCI_GETINDENTATIONGUIDES = 2133
            SCI_SETHIGHLIGHTGUIDE = 2134
            SCI_GETHIGHLIGHTGUIDE = 2135
            SCI_GETLINEENDPOSITION = 2136
            SCI_GETCODEPAGE = 2137
            SCI_GETCARETFORE = 2138
            SCI_GETUSEPALETTE = 2139
            SCI_GETREADONLY = 2140
            SCI_SETCURRENTPOS = 2141
            SCI_SETSELECTIONSTART = 2142
            SCI_GETSELECTIONSTART = 2143
            SCI_SETSELECTIONEND = 2144
            SCI_GETSELECTIONEND = 2145
            SCI_SETPRINTMAGNIFICATION = 2146
            SCI_GETPRINTMAGNIFICATION = 2147
            SC_PRINT_NORMAL = 0
            SC_PRINT_INVERTLIGHT = 1
            SC_PRINT_BLACKONWHITE = 2
            SC_PRINT_COLOURONWHITE = 3
            SC_PRINT_COLOURONWHITEDEFAULTBG = 4
            SCI_SETPRINTCOLOURMODE = 2148
            SCI_GETPRINTCOLOURMODE = 2149
            SCFIND_WHOLEWORD = 2
            SCFIND_MATCHCASE = 4
            SCFIND_WORDSTART = &H100000
            SCFIND_REGEXP = &H200000
            SCFIND_POSIX = &H400000
            SCI_FINDTEXT = 2150
            SCI_FORMATRANGE = 2151
            SCI_GETFIRSTVISIBLELINE = 2152
            SCI_GETLINE = 2153
            SCI_GETLINECOUNT = 2154
            SCI_SETMARGINLEFT = 2155
            SCI_GETMARGINLEFT = 2156
            SCI_SETMARGINRIGHT = 2157
            SCI_GETMARGINRIGHT = 2158
            SCI_GETMODIFY = 2159
            SCI_SETSEL = 2160
            SCI_GETSELTEXT = 2161
            SCI_GETTEXTRANGE = 2162
            SCI_HIDESELECTION = 2163
            SCI_POINTXFROMPOSITION = 2164
            SCI_POINTYFROMPOSITION = 2165
            SCI_LINEFROMPOSITION = 2166
            SCI_POSITIONFROMLINE = 2167
            SCI_LINESCROLL = 2168
            SCI_SCROLLCARET = 2169
            SCI_REPLACESEL = 2170
            SCI_SETREADONLY = 2171
            SCI_NULL = 2172
            SCI_CANPASTE = 2173
            SCI_CANUNDO = 2174
            SCI_EMPTYUNDOBUFFER = 2175
            SCI_UNDO = 2176
            SCI_CUT = 2177
            SCI_COPY = 2178
            SCI_PASTE = 2179
            SCI_CLEAR = 2180
            SCI_SETTEXT = 2181
            SCI_GETTEXT = 2182
            SCI_GETTEXTLENGTH = 2183
            SCI_GETDIRECTFUNCTION = 2184
            SCI_GETDIRECTPOINTER = 2185
            SCI_SETOVERTYPE = 2186
            SCI_GETOVERTYPE = 2187
            SCI_SETCARETWIDTH = 2188
            SCI_GETCARETWIDTH = 2189
            SCI_SETTARGETSTART = 2190
            SCI_GETTARGETSTART = 2191
            SCI_SETTARGETEND = 2192
            SCI_GETTARGETEND = 2193
            SCI_REPLACETARGET = 2194
            SCI_REPLACETARGETRE = 2195
            SCI_SEARCHINTARGET = 2197
            SCI_SETSEARCHFLAGS = 2198
            SCI_GETSEARCHFLAGS = 2199
            SCI_CALLTIPSHOW = 2200
            SCI_CALLTIPCANCEL = 2201
            SCI_CALLTIPACTIVE = 2202
            SCI_CALLTIPPOSSTART = 2203
            SCI_CALLTIPSETHLT = 2204
            SCI_CALLTIPSETBACK = 2205
            SCI_CALLTIPSETFORE = 2206
            SCI_CALLTIPSETFOREHLT = 2207
            SCI_VISIBLEFROMDOCLINE = 2220
            SCI_DOCLINEFROMVISIBLE = 2221
            SCI_WRAPCOUNT = 2235
            SC_FOLDLEVELBASE = &H400
            SC_FOLDLEVELWHITEFLAG = &H1000
            SC_FOLDLEVELHEADERFLAG = &H2000
            SC_FOLDLEVELBOXHEADERFLAG = &H4000
            SC_FOLDLEVELBOXFOOTERFLAG = &H8000
            SC_FOLDLEVELCONTRACTED = &H10000
            SC_FOLDLEVELUNINDENT = &H20000
            SC_FOLDLEVELNUMBERMASK = &HFFF
            SCI_SETFOLDLEVEL = 2222
            SCI_GETFOLDLEVEL = 2223
            SCI_GETLASTCHILD = 2224
            SCI_GETFOLDPARENT = 2225
            SCI_SHOWLINES = 2226
            SCI_HIDELINES = 2227
            SCI_GETLINEVISIBLE = 2228
            SCI_SETFOLDEXPANDED = 2229
            SCI_GETFOLDEXPANDED = 2230
            SCI_TOGGLEFOLD = 2231
            SCI_ENSUREVISIBLE = 2232
            SC_FOLDFLAG_LINEBEFORE_EXPANDED = &H2
            SC_FOLDFLAG_LINEBEFORE_CONTRACTED = &H4
            SC_FOLDFLAG_LINEAFTER_EXPANDED = &H8
            SC_FOLDFLAG_LINEAFTER_CONTRACTED = &H10
            SC_FOLDFLAG_LEVELNUMBERS = &H40
            SC_FOLDFLAG_BOX = &H1
            SCI_SETFOLDFLAGS = 2233
            SCI_ENSUREVISIBLEENFORCEPOLICY = 2234
            SCI_SETTABINDENTS = 2260
            SCI_GETTABINDENTS = 2261
            SCI_SETBACKSPACEUNINDENTS = 2262
            SCI_GETBACKSPACEUNINDENTS = 2263
            SC_TIME_FOREVER = 10000000
            SCI_SETMOUSEDWELLTIME = 2264
            SCI_GETMOUSEDWELLTIME = 2265
            SCI_WORDSTARTPOSITION = 2266
            SCI_WORDENDPOSITION = 2267
            SC_WRAP_NONE = 0
            SC_WRAP_WORD = 1
            SC_WRAP_CHAR = 2
            SCI_SETWRAPMODE = 2268
            SCI_GETWRAPMODE = 2269
            SC_WRAPVISUALFLAG_NONE = &H0
            SC_WRAPVISUALFLAG_END = &H1
            SC_WRAPVISUALFLAG_START = &H2
            SCI_SETWRAPVISUALFLAGS = 2460
            SCI_GETWRAPVISUALFLAGS = 2461
            SC_WRAPVISUALFLAGLOC_DEFAULT = &H0
            SC_WRAPVISUALFLAGLOC_END_BY_TEXT = &H1
            SC_WRAPVISUALFLAGLOC_START_BY_TEXT = &H2
            SCI_SETWRAPVISUALFLAGSLOCATION = 2462
            SCI_GETWRAPVISUALFLAGSLOCATION = 2463
            SCI_SETWRAPSTARTINDENT = 2464
            SCI_GETWRAPSTARTINDENT = 2465
            SC_CACHE_NONE = 0
            SC_CACHE_CARET = 1
            SC_CACHE_PAGE = 2
            SC_CACHE_DOCUMENT = 3
            SCI_SETLAYOUTCACHE = 2272
            SCI_GETLAYOUTCACHE = 2273
            SCI_SETSCROLLWIDTH = 2274
            SCI_GETSCROLLWIDTH = 2275
            SCI_TEXTWIDTH = 2276
            SCI_SETENDATLASTLINE = 2277
            SCI_GETENDATLASTLINE = 2278
            SCI_TEXTHEIGHT = 2279
            SCI_SETVSCROLLBAR = 2280
            SCI_GETVSCROLLBAR = 2281
            SCI_APPENDTEXT = 2282
            SCI_GETTWOPHASEDRAW = 2283
            SCI_SETTWOPHASEDRAW = 2284
            SCI_TARGETFROMSELECTION = 2287
            SCI_LINESJOIN = 2288
            SCI_LINESSPLIT = 2289
            SCI_SETFOLDMARGINCOLOUR = 2290
            SCI_SETFOLDMARGINHICOLOUR = 2291
            SCI_LINEDOWN = 2300
            SCI_LINEDOWNEXTEND = 2301
            SCI_LINEUP = 2302
            SCI_LINEUPEXTEND = 2303
            SCI_CHARLEFT = 2304
            SCI_CHARLEFTEXTEND = 2305
            SCI_CHARRIGHT = 2306
            SCI_CHARRIGHTEXTEND = 2307
            SCI_WORDLEFT = 2308
            SCI_WORDLEFTEXTEND = 2309
            SCI_WORDRIGHT = 2310
            SCI_WORDRIGHTEXTEND = 2311
            SCI_HOME = 2312
            SCI_HOMEEXTEND = 2313
            SCI_LINEEND = 2314
            SCI_LINEENDEXTEND = 2315
            SCI_DOCUMENTSTART = 2316
            SCI_DOCUMENTSTARTEXTEND = 2317
            SCI_DOCUMENTEND = 2318
            SCI_DOCUMENTENDEXTEND = 2319
            SCI_PAGEUP = 2320
            SCI_PAGEUPEXTEND = 2321
            SCI_PAGEDOWN = 2322
            SCI_PAGEDOWNEXTEND = 2323
            SCI_EDITTOGGLEOVERTYPE = 2324
            SCI_CANCEL = 2325
            SCI_DELETEBACK = 2326
            SCI_TAB = 2327
            SCI_BACKTAB = 2328
            SCI_NEWLINE = 2329
            SCI_FORMFEED = 2330
            SCI_VCHOME = 2331
            SCI_VCHOMEEXTEND = 2332
            SCI_ZOOMIN = 2333
            SCI_ZOOMOUT = 2334
            SCI_DELWORDLEFT = 2335
            SCI_DELWORDRIGHT = 2336
            SCI_LINECUT = 2337
            SCI_LINEDELETE = 2338
            SCI_LINETRANSPOSE = 2339
            SCI_LINEDUPLICATE = 2404
            SCI_LOWERCASE = 2340
            SCI_UPPERCASE = 2341
            SCI_LINESCROLLDOWN = 2342
            SCI_LINESCROLLUP = 2343
            SCI_DELETEBACKNOTLINE = 2344
            SCI_HOMEDISPLAY = 2345
            SCI_HOMEDISPLAYEXTEND = 2346
            SCI_LINEENDDISPLAY = 2347
            SCI_LINEENDDISPLAYEXTEND = 2348
            SCI_HOMEWRAP = 2349
            SCI_HOMEWRAPEXTEND = 2450
            SCI_LINEENDWRAP = 2451
            SCI_LINEENDWRAPEXTEND = 2452
            SCI_VCHOMEWRAP = 2453
            SCI_VCHOMEWRAPEXTEND = 2454
            SCI_LINECOPY = 2455
            SCI_MOVECARETINSIDEVIEW = 2401
            SCI_LINELENGTH = 2350
            SCI_BRACEHIGHLIGHT = 2351
            SCI_BRACEBADLIGHT = 2352
            SCI_BRACEMATCH = 2353
            SCI_GETVIEWEOL = 2355
            SCI_SETVIEWEOL = 2356
            SCI_GETDOCPOINTER = 2357
            SCI_SETDOCPOINTER = 2358
            SCI_SETMODEVENTMASK = 2359
            EDGE_NONE = 0
            EDGE_LINE = 1
            EDGE_BACKGROUND = 2
            SCI_GETEDGECOLUMN = 2360
            SCI_SETEDGECOLUMN = 2361
            SCI_GETEDGEMODE = 2362
            SCI_SETEDGEMODE = 2363
            SCI_GETEDGECOLOUR = 2364
            SCI_SETEDGECOLOUR = 2365
            SCI_SEARCHANCHOR = 2366
            SCI_SEARCHNEXT = 2367
            SCI_SEARCHPREV = 2368
            SCI_LINESONSCREEN = 2370
            SCI_USEPOPUP = 2371
            SCI_SELECTIONISRECTANGLE = 2372
            SCI_SETZOOM = 2373
            SCI_GETZOOM = 2374
            SCI_CREATEDOCUMENT = 2375
            SCI_ADDREFDOCUMENT = 2376
            SCI_RELEASEDOCUMENT = 2377
            SCI_GETMODEVENTMASK = 2378
            SCI_SETFOCUS = 2380
            SCI_GETFOCUS = 2381
            SCI_SETSTATUS = 2382
            SCI_GETSTATUS = 2383
            SCI_SETMOUSEDOWNCAPTURES = 2384
            SCI_GETMOUSEDOWNCAPTURES = 2385
            'SC_CURSORNORMAL = -1
            SC_CURSORWAIT = 4
            SCI_SETCURSOR = 2386
            SCI_GETCURSOR = 2387
            SCI_SETCONTROLCHARSYMBOL = 2388
            SCI_GETCONTROLCHARSYMBOL = 2389
            SCI_WORDPARTLEFT = 2390
            SCI_WORDPARTLEFTEXTEND = 2391
            SCI_WORDPARTRIGHT = 2392
            SCI_WORDPARTRIGHTEXTEND = 2393
            VISIBLE_SLOP = &H1
            VISIBLE_STRICT = &H4
            SCI_SETVISIBLEPOLICY = 2394
            SCI_DELLINELEFT = 2395
            SCI_DELLINERIGHT = 2396
            SCI_SETXOFFSET = 2397
            SCI_GETXOFFSET = 2398
            SCI_CHOOSECARETX = 2399
            SCI_GRABFOCUS = 2400
            CARET_SLOP = &H1
            CARET_STRICT = &H4
            CARET_JUMPS = &H10
            CARET_EVEN = &H8
            SCI_SETXCARETPOLICY = 2402
            SCI_SETYCARETPOLICY = 2403
            SCI_SETPRINTWRAPMODE = 2406
            SCI_GETPRINTWRAPMODE = 2407
            SCI_SETHOTSPOTACTIVEFORE = 2410
            SCI_SETHOTSPOTACTIVEBACK = 2411
            SCI_SETHOTSPOTACTIVEUNDERLINE = 2412
            SCI_SETHOTSPOTSINGLELINE = 2421
            SCI_PARADOWN = 2413
            SCI_PARADOWNEXTEND = 2414
            SCI_PARAUP = 2415
            SCI_PARAUPEXTEND = 2416
            SCI_POSITIONBEFORE = 2417
            SCI_POSITIONAFTER = 2418
            SCI_COPYRANGE = 2419
            SCI_COPYTEXT = 2420
            SC_SEL_STREAM = 0
            SC_SEL_RECTANGLE = 1
            SC_SEL_LINES = 2
            SCI_SETSELECTIONMODE = 2422
            SCI_GETSELECTIONMODE = 2423
            SCI_GETLINESELSTARTPOSITION = 2424
            SCI_GETLINESELENDPOSITION = 2425
            SCI_LINEDOWNRECTEXTEND = 2426
            SCI_LINEUPRECTEXTEND = 2427
            SCI_CHARLEFTRECTEXTEND = 2428
            SCI_CHARRIGHTRECTEXTEND = 2429
            SCI_HOMERECTEXTEND = 2430
            SCI_VCHOMERECTEXTEND = 2431
            SCI_LINEENDRECTEXTEND = 2432
            SCI_PAGEUPRECTEXTEND = 2433
            SCI_PAGEDOWNRECTEXTEND = 2434
            SCI_STUTTEREDPAGEUP = 2435
            SCI_STUTTEREDPAGEUPEXTEND = 2436
            SCI_STUTTEREDPAGEDOWN = 2437
            SCI_STUTTEREDPAGEDOWNEXTEND = 2438
            SCI_WORDLEFTEND = 2439
            SCI_WORDLEFTENDEXTEND = 2440
            SCI_WORDRIGHTEND = 2441
            SCI_WORDRIGHTENDEXTEND = 2442
            SCI_SETWHITESPACECHARS = 2443
            SCI_SETCHARSDEFAULT = 2444
            SCI_AUTOCGETCURRENT = 2445
            SCI_ALLOCATE = 2446
            SCI_TARGETASUTF8 = 2447
            SCI_SETLENGTHFORENCODE = 2448
            SCI_ENCODEDFROMUTF8 = 2449
            SCI_FINDCOLUMN = 2456
            SCI_GETCARETSTICKY = 2457
            SCI_SETCARETSTICKY = 2458
            SCI_TOGGLECARETSTICKY = 2459
            SCI_STARTRECORD = 3001
            SCI_STOPRECORD = 3002
            SCI_SETLEXER = 4001
            SCI_GETLEXER = 4002
            SCI_COLOURISE = 4003
            SCI_SETPROPERTY = 4004
            KEYWORDSET_MAX = 8
            SCI_SETKEYWORDS = 4005
            SCI_SETLEXERLANGUAGE = 4006
            SCI_LOADLEXERLIBRARY = 4007
            SCI_GETPROPERTY = 4008
            SCI_GETPROPERTYEXPANDED = 4009
            SCI_GETPROPERTYINT = 4010
            SC_MOD_INSERTTEXT = &H1
            SC_MOD_DELETETEXT = &H2
            SC_MOD_CHANGESTYLE = &H4
            SC_MOD_CHANGEFOLD = &H8
            SC_PERFORMED_USER = &H10
            SC_PERFORMED_UNDO = &H20
            SC_PERFORMED_REDO = &H40
            SC_MULTISTEPUNDOREDO = &H80
            SC_LASTSTEPINUNDOREDO = &H100
            SC_MOD_CHANGEMARKER = &H200
            SC_MOD_BEFOREINSERT = &H400
            SC_MOD_BEFOREDELETE = &H800
            SC_MULTILINEUNDOREDO = &H1000
            SC_MODEVENTMASKALL = &H1FFF
            SCEN_CHANGE = 768
            SCEN_SETFOCUS = 512
            SCEN_KILLFOCUS = 256
            SCK_DOWN = 300
            SCK_UP = 301
            SCK_LEFT = 302
            SCK_RIGHT = 303
            SCK_HOME = 304
            SCK_END = 305
            SCK_PRIOR = 306
            SCK_NEXT = 307
            SCK_DELETE = 308
            SCK_INSERT = 309
            SCK_ESCAPE = 7
            SCK_BACK = 8
            SCK_TAB = 9
            SCK_RETURN = 13
            SCK_ADD = 310
            SCK_SUBTRACT = 311
            SCK_DIVIDE = 312
            SCMOD_SHIFT = 1
            SCMOD_CTRL = 2
            SCMOD_ALT = 4
            SCN_STYLENEEDED = 2000
            SCN_CHARADDED = 2001
            SCN_SAVEPOINTREACHED = 2002
            SCN_SAVEPOINTLEFT = 2003
            SCN_MODIFYATTEMPTRO = 2004
            SCN_KEY = 2005
            SCN_DOUBLECLICK = 2006
            SCN_UPDATEUI = 2007
            SCN_MODIFIED = 2008
            SCN_MACRORECORD = 2009
            SCN_MARGINCLICK = 2010
            SCN_NEEDSHOWN = 2011
            SCN_PAINTED = 2013
            SCN_USERLISTSELECTION = 2014
            SCN_URIDROPPED = 2015
            SCN_DWELLSTART = 2016
            SCN_DWELLEND = 2017
            SCN_ZOOM = 2018
            SCN_HOTSPOTCLICK = 2019
            SCN_HOTSPOTDOUBLECLICK = 2020
            SCN_CALLTIPCLICK = 2021
            SCN_AUTOCSELECTION = 2022
        End Enum
#End Region

    End Class
End Namespace