Jump to content

Sky Slate Blueberry Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate

Lexer and Folding For N++ (Finally!) - [Deprecated]

  • Please log in to reply
133 replies to this topic
  • Members
  • 652 posts
  • Last active: Jan 04 2019 04:01 PM
  • Joined: 18 Oct 2008
I've had a go at the defining it myself. I based it on Zenburn. See image below for how it looks (almost) now.

It's not done yet, but maybe it's a good starting point for someone else.

The purple text is just so I can easily see what text is not defined yet.

    <UserLang name="AHK Zenburn" ext="ahk" udlVersion="2.0">
            <Global caseIgnored="yes" allowFoldOfComments="yes" forceLineCommentsAtBOL="no" foldCompact="no" />
            <Prefix Keywords1="no" Keywords2="no" Keywords3="no" Keywords4="no" Keywords5="no" Keywords6="yes" Keywords7="no" Keywords8="no" />
            <Keywords name="Comments" id="0">00; 01 02 03/* 04*/</Keywords>
            <Keywords name="Numbers, additional" id="1"></Keywords>
            <Keywords name="Numbers, prefixes" id="2">x y xs ys</Keywords>
            <Keywords name="Numbers, extras with prefixes" id="3">+ -</Keywords>
            <Keywords name="Numbers, suffixes" id="4"></Keywords>
            <Keywords name="Operators1" id="5">- ! " ' & , : ^ | + < = > % * ` :=</Keywords>
            <Keywords name="Operators2" id="6"></Keywords>
            <Keywords name="Folders in code1, open" id="7">{ (</Keywords>
            <Keywords name="Folders in code1, middle" id="8"></Keywords>
            <Keywords name="Folders in code1, close" id="9">} )</Keywords>
            <Keywords name="Folders in code2, open" id="10">if{</Keywords>
            <Keywords name="Folders in code2, middle" id="11"></Keywords>
            <Keywords name="Folders in code2, close" id="12">}</Keywords>
            <Keywords name="Folders in comment, open" id="13">/*</Keywords>
            <Keywords name="Folders in comment, middle" id="14"></Keywords>
            <Keywords name="Folders in comment, close" id="15">*/</Keywords>
            <Keywords name="Keywords1" id="16">#AllowSameLineComments #ClipboardTimeout #CommentFlag #Delimiter #DerefChar #ErrorStdOut #EscapeChar #HotkeyInterval #HotkeyModIfierTimeout #Hotstring #Include #IncludeAgain #IfWinActive #IfWinExist #IfWinNotActive #IfWinNotExist #InstallKeybdHook #InstallMouseHook #KeyHistory #LTrim #MaxHotkeysPerInterval #MaxMem #MaxThreads #MaxThreadsBuffer #MaxThreadsPerHotkey #NoEnv #NoTrayIcon #Persistent #SingleInstance #UseHook #WinActivateForceFileGetVersion</Keywords>
            <Keywords name="Keywords2" id="17">All Priority On Off Force High
False True PIXEL MOUSE SCREEN RELATIVE RGB ahk_id ahk_pid ahk_class ahk_group Between Contains In Integer Float Number Digit Xdigit Alpha Upper Lower Alnum Time Date AlwaysOnTop Topmost Top Bottom Transparent TransColor Redraw Region ID IDLast ProcessName MinMax ControlList Count List Capacity StatusCD Eject Lock Unlock Label FileSystem Label SetLabel Serial Type Status static global local ByRef Seconds Minutes Hours Days Read Parse Logoff Close Error Single Tray Add Rename Check UnCheck ToggleCheck Enable Disable ToggleEnable Default NoDefault Standard NoStandard Color Delete DeleteAll Icon NoIcon Tip Click Show MainWindow NoMainWindow UseErrorLevel Font Resize Owner Submit NoHide Minimize Maximize Restore NoActivate NA Cancel Destroy Center Text Picture Pic GroupBox Button Checkbox Radio DropDownList DDL ComboBox ListBox ListView DateTime MonthCal UpDown Slider Tab TabStop Section AltSubmit Wrap HScroll VScroll Border Top Bottom Buttons Number Uppercase Lowercase Limit Password Multi WantReturn Group Background Theme Caption Delimiter MinimizeBox MaximizeBox SysMenu ToolWindow Flash Style ExStyle Check3 Checked CheckedGray ReadOnly Password Hidden Left Right Center NoTab Section Move Focus Hide Choose ChooseString Text Pos Enabled Disabled Visible LastFound AltTab ShiftAltTab AltTabMenu AltTabAndMenu AltTabMenuDismiss Unicode Asc Chr Deref Mod Pow Exp Sqrt Log Ln Round Ceil Floor Abs Sin Cos Tan ASin ACos ATan BitNot BitAnd BitOr BitXOr BitShiftLeft BitShiftRight Yes No Ok Cancel Abort Retry Ignore 
            <Keywords name="Keywords3" id="18">A_Index A_LoopField</Keywords>
            <Keywords name="Keywords4" id="19">Win {Win} Space {Space} {^} {+} {!} {#} {~} {$} Shift {Shift} LShift {LShift} RShift {RShift} Alt {Alt} LAlt {LAlt} RAlt {RAlt} Control {Control} LControl {LControl} RControl {RControl} Ctrl {Ctrl} LCtrl {LCtrl} RCtrl {RCtrl} LWin {LWin} RWin {RWin} AppsKey {AppsKey} Alt Down {Alt Down} Alt Up {Alt Up} Shift Down {Shift Down} Shift Up {Shift Up} Ctrl Down {Ctrl Down} Ctrl Up {Ctrl Up} LWin Down {LWin Down} RWin Down {RWin Down} LButton {LButton} RButton {RButton} MButton {MButton} WheelUp {WheelUp} WheelDown {WheelDown} XButton1 {XButton1} XButton2 {XButton2} Joy1 {Joy1} Joy2 {Joy2} Joy3 {Joy3} Joy4 {Joy4} Joy5 {Joy5} Joy6 {Joy6} Joy7 {Joy7} Joy8 {Joy8} Joy9 {Joy9} Joy10 {Joy10} Joy11 {Joy11} Joy12 {Joy12} Joy13 {Joy13} Joy14 {Joy14} Joy15 {Joy15} Joy16 {Joy16} Joy17 {Joy17} Joy18 {Joy18} Joy19 {Joy19} Joy20 {Joy20} Joy21 {Joy21} Joy22 {Joy22} Joy23 {Joy23} Joy24 {Joy24} Joy25 {Joy25} Joy26 {Joy26} Joy27 {Joy27} Joy28 {Joy28} Joy29 {Joy29} Joy30 {Joy30} Joy31 {Joy31} Joy32 {Joy32} JoyX {JoyX} JoyY {JoyY} JoyZ {JoyZ} JoyR {JoyR} JoyU {JoyU} JoyV {JoyV} JoyPOV {JoyPOV} JoyName {JoyName} JoyButtons {JoyButtons} JoyAxes {JoyAxes} JoyInfo {JoyInfo} Space {Space} Tab {Tab} Enter {Enter} Escape {Escape} Esc {Esc} BackSpace {BackSpace} BS {BS} Delete {Delete} Del {Del} Insert {Insert} Ins {Ins} PGUP {PGUP} PGDN {PGDN} Home {Home} End {End} Up {Up} Down {Down} Left {Left} Right {Right} PrintScreen {PrintScreen} CtrlBreak {CtrlBreak} Pause {Pause} ScrollLock {ScrollLock} CapsLock {CapsLock} NumLock {NumLock} Numpad0 {Numpad0} Numpad1 {Numpad1} Numpad2 {Numpad2} Numpad3 {Numpad3} Numpad4 {Numpad4} Numpad5 {Numpad5} Numpad6 {Numpad6} Numpad7 {Numpad7} Numpad8 {Numpad8} Numpad9 {Numpad9} NumpadMult {NumpadMult} NumpadAdd {NumpadAdd} NumpadSub {NumpadSub} NumpadDiv {NumpadDiv} NumpadDot {NumpadDot} NumpadDel {NumpadDel} NumpadIns {NumpadIns} NumpadClear {NumpadClear} NumpadUp {NumpadUp} NumpadDown {NumpadDown} NumpadLeft {NumpadLeft} NumpadRight {NumpadRight} NumpadHome {NumpadHome} NumpadEnd {NumpadEnd} NumpadPgup {NumpadPgup} NumpadPgdn {NumpadPgdn} NumpadEnter {NumpadEnter} F1 {F1} F2 {F2} F3 {F3} F4 {F4} F5 {F5} F6 {F6} F7 {F7} F8 {F8} F9 {F9} F10 {F10} F11 {F11} F12 {F12} F13 {F13} F14 {F14} F15 {F15} F16 {F16} F17 {F17} F18 {F18} F19 {F19} F20 {F20} F21 {F21} F22 {F22} F23 {F23} F24 {F24} Browser_Back {Browser_Back} Browser_Forward {Browser_Forward} Browser_Refresh {Browser_Refresh} Browser_Stop {Browser_Stop} Browser_Search {Browser_Search} Browser_Favorites {Browser_Favorites} Browser_Home {Browser_Home} Volume_Mute {Volume_Mute} Volume_Down {Volume_Down} Volume_Up {Volume_Up} Media_Next {Media_Next} Media_Prev {Media_Prev} Media_Stop {Media_Stop} Media_Play_Pause {Media_Play_Pause} Launch_Mail {Launch_Mail} Launch_Media {Launch_Media} Launch_App1 {Launch_App1} Launch_App2 {Launch_App2}</Keywords>
            <Keywords name="Keywords5" id="20">And AutoTrim BlockInput Click ClipWait Control ControlClick ControlFocus ControlGet ControlGetFocus ControlGetPos ControlGetText ControlMove ControlSend ControlSendRaw ControlSetText CoordMode Critical DetectHiddenText DetectHiddenWindows DllCall Drive DriveGet DriveSpaceFree Edit Else EndRepeat EnvAdd EnvDiv EnvGet EnvMult EnvSet EnvSub EnvUpdate Exit ExitApp FileAppend FileCopy FileCopyDir FileCreateDir FileCreateShortcut FileDelete FileGetAttrib FileGetShortcut FileGetSize FileGetTime FileInstall FileMove FileMoveDir FileRead FileReadLine FileRecycle FileRecycleEmpty FileRemoveDir FileSelectFile FileSelectFolder FileSetAttrib FileSetTime FormatTime GetKeyState Gosub Goto GroupActivate GroupAdd GroupClose GroupDeactivate Gui GuiControl GuiControlGet HideAutoItWin Hotkey If IfEqual IfExist IfGreater IfGreaterOrEqual IfInString IfLess IfLessOrEqual IfMsgBox IfNotEqual IfNotExist IfNotInString IfWinActive IfWinExist IfWinNotActive IfWinNotExist ImageSearch IniDelete IniRead IniWrite Input InputBox IsLabel KeyHistory KeyWait ListHotkeys ListLines ListVars Loop Menu MouseClick MouseClickDrag MouseGetPos MouseMove MsgBox Not OnExit OnMessage Or OutputDebug Pause PixelGetColor PixelSearch PostMessage Process Progress Random RegDelete RegExMatch RegExReplace RegRead RegWrite Reload Repeat Return Run RunAs RunWait Send SendMessage SendEvent SendInput SendMode SendPlay SendRaw SetBatchLines SetCapsLockState SetControlDelay SetDefaultMouseSpeed SetEnv SetFormat SetKeyDelay SetMouseDelay SetNumLockState SetScrollLockState SetStoreCapslockMode SetTimer SetTitleMatchMode SetWinDelay SetWorkingDir Shutdown Sleep Sort SoundBeep SoundGet SoundGetWaveVolume SoundPlay SoundSet SoundSetWaveVolume SplashImage SplashTextOff SplashTextOn SplitPath StatusBarGetText StatusBarWait StringCaseSense StringGetPos StringLeft StringLen StringLower StringMid StringReplace StringRight StringSplit StringTrimLeft StringTrimRight StringUpper Suspend SysGet Thread ToolTip Transform TrayTip URLDownloadToFile VarSetCapacity WinActivate WinActivateBottom WinClose WinGet WinGetActiveStats WinGetActiveTitle WinGetClass WinGetPos WinGetText WinGetTitle WinHide WinKill WinMaximize WinMenuSelectItem WinMinimize WinMinimizeAll WinMinimizeAllUndo WinMove WinRestore WinSet WinSetTitle WinShow WinWait WinWaitActive WinWaitClose WinWaitNotActive</Keywords>
            <Keywords name="Keywords6" id="21">% A_ `n</Keywords>
            <Keywords name="Keywords7" id="22"></Keywords>
            <Keywords name="Keywords8" id="23">continue
            <Keywords name="Delimiters" id="24">00 01 02 03 04 05 06 07 08 09" 10 11" 12 13 14 15 16 17 18 19 20 21 22 23</Keywords>
            <WordsStyle name="DEFAULT" styleID="0" fgColor="FF80FF" bgColor="3F3F3F" fontName="Courier New" fontStyle="0" fontSize="10" nesting="0" />
            <WordsStyle name="COMMENTS" styleID="1" fgColor="76E508" bgColor="3F3F3F" fontName="" fontStyle="1" nesting="768" />
            <WordsStyle name="LINE COMMENTS" styleID="2" fgColor="76E508" bgColor="3F3F3F" fontName="" fontStyle="1" nesting="256" />
            <WordsStyle name="NUMBERS" styleID="3" fgColor="FF8000" bgColor="3F3F3F" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="KEYWORDS1" styleID="4" fgColor="1768B7" bgColor="3F3F3F" fontName="" fontStyle="1" nesting="0" />
            <WordsStyle name="KEYWORDS2" styleID="5" fgColor="FFFF80" bgColor="3F3F3F" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="KEYWORDS3" styleID="6" fgColor="FF8000" bgColor="3F3F3F" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="KEYWORDS4" styleID="7" fgColor="FFFF00" bgColor="3F3F3F" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="KEYWORDS5" styleID="8" fgColor="5096DB" bgColor="3F3F3F" fontName="" fontStyle="1" nesting="0" />
            <WordsStyle name="KEYWORDS6" styleID="9" fgColor="FF8000" bgColor="3F3F3F" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="KEYWORDS7" styleID="10" fgColor="5096DB" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="KEYWORDS8" styleID="11" fgColor="FF0080" bgColor="3F3F3F" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="OPERATORS" styleID="12" fgColor="FF0000" bgColor="3F3F3F" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="FOLDER IN CODE1" styleID="13" fgColor="FFFF80" bgColor="3F3F3F" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="FOLDER IN CODE2" styleID="14" fgColor="FFFF80" bgColor="3F3F3F" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="FOLDER IN COMMENT" styleID="15" fgColor="00FF00" bgColor="3F3F3F" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="DELIMITERS1" styleID="16" fgColor="FFFF80" bgColor="3F3F3F" fontName="" fontStyle="0" nesting="117702655" />
            <WordsStyle name="DELIMITERS2" styleID="17" fgColor="76E508" bgColor="3F3F3F" fontName="" fontStyle="0" nesting="117702655" />
            <WordsStyle name="DELIMITERS3" styleID="18" fgColor="FF8000" bgColor="3F3F3F" fontName="" fontStyle="0" nesting="117702655" />
            <WordsStyle name="DELIMITERS4" styleID="19" fgColor="FFFFFF" bgColor="3F3F3F" fontName="" fontStyle="2" nesting="0" />
            <WordsStyle name="DELIMITERS5" styleID="20" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="DELIMITERS6" styleID="21" fgColor="00FFFF" bgColor="3F3F3F" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="DELIMITERS7" styleID="22" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="DELIMITERS8" styleID="23" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />

  • Members
  • 567 posts
  • Last active: Dec 01 2014 07:59 PM
  • Joined: 17 Jun 2008

New Notepad++ v6.2 includes a new User Defined Languge (UDL2) system
<!-- l --><a class="postlink-local" href="http://www.autohotkey.com/community/viewtopic.php?f=7&t=93530">viewtopic.php?f=7&t=93530</a><!-- l -->

I spent a couple of hours yesterday trying to defining AHK_L in UDL2. There seem to be several things I can't find a way to define (labels, folding and string highlighting of line separated "()", and a few other minor things). Unless I (or someone else who actually knows what they're doing) finds a way to get those working, I doubt I'll be switching over.

Too bad. It would be so nice to have reliable folding again.

Here is the complete mail text

UDL (User Defined Language) is one of most important features in Notepad++.

In v6.2, much better UDL system (UDL2) is provided by Ivan Radic (aka Loreia). Not only many restrictions/limitations in UDL are removed, but also a lot of new features/enhancements are added in UDL2. In fact, you can almost define any language with it.

The key features of UDL2 are:

1. More keyword groups were added (more syntax highlighting can be defined):

3 folding groups
8 keyword groups
2 comment groups
1 number definitons
2 operators groups
8 delimiter sets
2. Multipart keywords are supported (for example: "else if" can be defined as a single keyword)

3. Whitespace is no longer mandatory as keyword separator: Operators, Delimiters and Folding keywords can be recognized with or without whitespace separators.

4. Numbers recognition support is greatly improved (prefix, suffix, range and extra symbols supported).

5. Operators and delimiters can be longer than one character.

6. The same characters can be used as comments AND operators.

7. Comments and delimiters support nesting (even within each other).

8. Improvments to Comments include:

Comment folding
Comment continuation
Comment only start at the beginning of line
9. In the case of several comment pairs defined, comment open symbols match only with comment close symbols of the same order. (for example: /* C comment */, /+ D comment +/, but not /* mixed comment +/)

Thank Loreia for this new shining UDL engine, and thank Christian Cuvier for his multi-part keyword and number enhancement in UDL2.

I don't like RTFM usually. But this tutorial is relly easy to read (with a lot of screenshots) and it will help you greatly to use UDL2:
<!-- m -->http://udl20.weebly.com/<!-- m -->

Here you can find Notepad++ 6.2 Release:

<!-- m -->http://notepad-plus-...nload/v6.2.html<!-- m -->

Have fun with UDL2!

Very important (and rather easy to understand) is the link <!-- m -->http://udl20.weebly.com/<!-- m -->, where everything ist described.

  • Members
  • 928 posts
  • Last active: Jan 12 2018 09:23 AM
  • Joined: 01 Aug 2012
This is my UserDefineLang for AHK atm.
Posted Image

But its not up-to-date (AHK_L v1.1.08.01)
<!-- l --><a class="postlink-local" href="http://www.autohotkey.com/community/viewforum.php?f=7">viewforum.php?f=7</a><!-- l -->
[AHK] x64 Unicode | [WIN] 10 Pro (Version 1709)
My GitHub Profile | Donations are appreciated if I could help you

  • Members
  • 29 posts
  • Last active: Aug 07 2015 08:21 AM
  • Joined: 26 Sep 2009

Very important (and rather easy to understand) is the link <!-- m -->http://udl20.weebly.com/<!-- m -->, where everything ist described.

Yeah, I read all that over as I was working on it the other day. From what I can tell there is no way of defining some of AHK's behaviour. I'll likely contact the UDL2 developer and see what his take on it is. Tomorrow, once I've got some sleep!

Here is a comparison of this threads lexer, and my current AHK UDL2. The color difference in some of the operators is only because this lexer supports two different operator types but on UDL2 they all have to settle for being purple.

RaptorX's Lexer:
Posted Image

Posted Image

The issues are:
1) Can't use string highlighting in continuation section between "()".
2) That same continuation section should also fold, but "()" can't be defined as operators AND folding while still functioning properly.
3) Can't highlight label name.
4) Numbers with a folding mark (e.g. "}") immediately after looses highlighting. Comparison on lines 8-9.
If anyone knows a way of fixing any of these, please do let me know. It would be appreciated.

Those, for me, are more of a problem than not having reliable folding. So for the moment I'll be sticking with RaptorX's wonderful lexer!

Speaking of which, I suppose that brings this back around so it's on-topic for the thread, right? :p

  • Members
  • 1704 posts
  • Last active: Nov 19 2015 11:58 AM
  • Joined: 10 Mar 2011

all links in the first post are dead :(

  • Members
  • 1 posts
  • Last active: Feb 22 2013 03:27 PM
  • Joined: 20 Feb 2013

The link does not work


is there a new one?

  • Members
  • 1704 posts
  • Last active: Nov 19 2015 11:58 AM
  • Joined: 10 Mar 2011


EDIT: Big thank you to Maestr0 for the original mirror!

^those files are available

however, Notepad++ 6.3.1 crashes every time i try to close it while using that old lexer.dll sad.png

  • Members
  • 751 posts
  • Last active: Feb 19 2015 02:47 AM
  • Joined: 19 Feb 2010
Yes, after the autohotkey.net dissaster those files were lost. Not to worry though. I finally finished my own lexer that i re-wrote from scratch (this one was borrowed from Philho) now i will have to figure out how to make an N++ Plug-in out of it. After that you will have the AHKL Lexer working without issues with newer versions of N++ happy.png
AutoHotkey Toolkit [Main Project]
Scintilla Wrapper

  • Members
  • 1704 posts
  • Last active: Nov 19 2015 11:58 AM
  • Joined: 10 Mar 2011

  • Members
  • 751 posts
  • Last active: Feb 19 2015 02:47 AM
  • Joined: 19 Feb 2010
Well guys, it is a thing already... The main lexer can be found in the thread LexAHKL - Scintilla Lexer for Autohotkey L (v0.10.3 - RC2)

If you want to use it with Notepad++ there is a temporal work around until i create the plug-in.
You can download the Lexer version that comes with all the other standard lexers and then you replace the SciLexer.dll found in N++ with my version of it which includes the AHK lexer.
This however is not recomended. It might have unexpected results, so back up your original SciLexer before doing this!!
Until now the only confirmed misbehavior that I can mention is that you will lose the User Defined Language Lexer from N++, all other lexers work completely fine. But again, there might be other things that I have not noticed so use this work around at your own risk.

I am now working on making the External plug-in for N++ and that will solve all issues mentioned above. And hopefully Neil, the creator of scintilla, might include my lexer as a standard lexer pre-shipped with scintilla and then we wont even need an External Lexer because it will come pre-included in Notepad++ happy.png
So thanks for waiting! I am getting close to my goal now!
AutoHotkey Toolkit [Main Project]
Scintilla Wrapper

  • Members
  • 1704 posts
  • Last active: Nov 19 2015 11:58 AM
  • Joined: 10 Mar 2011
wow would be awesome if it gets included in scintilla itself

you should just name it "AHK" and not "AHKL" since AHKL has now become standard AHK

  • Members
  • 751 posts
  • Last active: Feb 19 2015 02:47 AM
  • Joined: 19 Feb 2010
I will disagree with you there tongue.png
The installer, the helpfile and the website still refer to it as AutoHotkey L even if it has become the "main" autohotkey.

Also you wont notice that since in Notepad++ it would simply appear as the "Autohotkey" language and there will be no version attached to it (L, 1.1, V2)...

But my lexer is based on the the L version of autohotkey while PhilHo made one for Autohotkey basic... his version is called LexAHK (surprisingly enough) and for that reason i couldnt use that name... that's why I came up (without much creativity from my part) with LexAHKL... so it will stay that way.
AutoHotkey Toolkit [Main Project]
Scintilla Wrapper

  • Members
  • 1704 posts
  • Last active: Nov 19 2015 11:58 AM
  • Joined: 10 Mar 2011
ahhhh i see. fair enough, that makes sense. i was more concerned with the internal NP++ designation but since you say it will appear as "AutoHotkey" then that is perfect

do you plan to open source the lexer incase something breaks in the future?

  • Members
  • 751 posts
  • Last active: Feb 19 2015 02:47 AM
  • Joined: 19 Feb 2010
I do not plan to. It already is... from day 1.

The sources can be found on github and they are GPL licenced.
Everybody is completely free to modify it and send me patches if they feel like it will improve the Lexer in any way. happy.png
AutoHotkey Toolkit [Main Project]
Scintilla Wrapper