Jump to content

Sky Slate Blueberry Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate
Photo

YATMB4AHK: yet another textmate bundle for AHK :)


  • Please log in to reply
7 replies to this topic
barty
  • Members
  • 10 posts
  • Last active: Nov 19 2009 11:37 PM
  • Joined: 30 Aug 2009
I spent some time putting together a textmate bundle for AHK and thought I'd share it here.

I greatly expanded on n00ge's bundle. Added

* block comment
* commands like Send, WinWait
* functions like abs, fileexist
* keywords like ahk_class
* predefined variables like A_ScriptDir
* label:
* keys like F1 Space
* quoted string

I pulled the list of keywords etc from the SciTE package that came with AHK.

It seems to work pretty well. No doubt there'll be instances where it's messed up. Particularly, my handling of strings is probably naive and will be tripped up with complicated strings, though I do handle `"

So here's AHK.plist a.k.a Autohotkey.tmLanguage

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>uuid</key>
    <string>77AC23B6-8A90-11D9-BAA4-000A9584EC8D</string>
    <key>name</key>
    <string>AutoHotKey</string>
    <key>scopeName</key>
    <string>source.ahk</string>
    <key>fileTypes</key>
    <array>
    <string>ahk</string>
    </array>
    <key>patterns</key>
    <array>
        <dict>
            <!--key>captures</key>
            <dict>
                <key>1</key>
                <dict>
                    <key>name</key>
                    <string>punctuation.definition.comment.ahk</string>
                </dict>
            </dict-->
            <key>name</key>
            <string>comment.line.ahk</string>
            <key>match</key>
            <string>(;).*$\n?</string>
        </dict>
        <dict>
            <key>begin</key>
            <string>/\*</string>
            <!--key>captures</key>
            <dict>
                <key>0</key>
                <dict>
                    <key>name</key>
                    <string>punctuation.definition.comment.ahk</string>
                </dict>
            </dict-->
            <key>end</key>
            <string>\*/</string>
            <key>name</key>
            <string>comment.block.ahk</string>
        </dict>
        <dict>
            <key>name</key>
            <string>keyword.command.ahk</string>
            <key>match</key>
            <string>(\b|^)(?i)(allowsamelinecomments|clipboardtimeout|commentflag|errorstdout|escapechar|hotkeyinterval|hotkeymodifiertimeout|hotstring|include|includeagain|installkeybdhook|installmousehook|keyhistory|ltrim|maxhotkeysperinterval|maxmem|maxthreads|maxthreadsbuffer|maxthreadsperhotkey|noenv|notrayicon|persistent|singleinstance|usehook|winactivateforce|autotrim|blockinput|click|clipwait|continue|control|controlclick|controlfocus|controlget|controlgetfocus|controlgetpos|controlgettext|controlmove|controlsend|controlsendraw|controlsettext|coordmode|critical|detecthiddentext|detecthiddenwindows|drive|driveget|drivespacefree|edit|endrepeat|envadd|envdiv|envget|envmult|envset|envsub|envupdate|exit|exitapp|fileappend|filecopy|filecopydir|filecreatedir|filecreateshortcut|filedelete|filegetattrib|filegetshortcut|filegetsize|filegettime|filegetversion|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|ifequal|ifexist|ifgreater|ifgreaterorequal|ifinstring|ifless|iflessorequal|ifmsgbox|ifnotequal|ifnotexist|ifnotinstring|ifwinactive|ifwinexist|ifwinnotactive|ifwinnotexist|imagesearch|inidelete|iniread|iniwrite|input|inputbox|keyhistory|keywait|listhotkeys|listlines|listvars|menu|mouseclick|mouseclickdrag|mousegetpos|mousemove|msgbox|onexit|outputdebug|pause|pixelgetcolor|pixelsearch|postmessage|process|progress|random|regdelete|regread|regwrite|reload|repeat|run|runas|runwait|send|sendevent|sendinput|sendmode|sendplay|sendmessage|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|while|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)\b</string>
        </dict>
        <dict>
            <key>name</key>
            <string>keyword.control.ahk</string>
            <key>match</key>
            <string>(\b|^)(?i)(if|else|return|loop|break|for|while)\b</string>
        </dict>

        <dict>
            <key>name</key>
            <string>keyword.function.ahk</string>
            <key>match</key>
            <string>(\b|^)(?i)(abs|acos|asc|asin|atan|ceil|chr|cos|dllcall|exp|fileexist|floor|getkeystate|il_add|il_create|il_destroy|instr|substr|isfunc|islabel|ln|log|lv_add|lv_delete|lv_deletecol|lv_getcount|lv_getnext|lv_gettext|lv_insert|lv_insertcol|lv_modify|lv_modifycol|lv_setimagelist|mod|onmessage|numget|numput|registercallback|regexmatch|regexreplace|round|sin|tan|sqrt|strlen|sb_seticon|sb_setparts|sb_settext|tv_add|tv_delete|tv_getchild|tv_getcount|tv_getnext|tv_get|tv_getparent|tv_getprev|tv_getselection|tv_gettext|tv_modify|varsetcapacity|winactive|winexist)\b</string>
        </dict>
                    
        <dict>
            <key>name</key>
            <string>variable.predefined.ahk</string>
            <key>match</key>
            <string>(\b|^)(?i)(a_ahkpath|a_ahkversion|a_appdata|a_appdatacommon|a_autotrim|a_batchlines|a_caretx|a_carety|a_computername|a_controldelay|a_cursor|a_dd|a_ddd|a_dddd|a_defaultmousespeed|a_desktop|a_desktopcommon|a_detecthiddentext|a_detecthiddenwindows|a_endchar|a_eventinfo|a_exitreason|a_formatfloat|a_formatinteger|a_gui|a_guievent|a_guicontrol|a_guicontrolevent|a_guiheight|a_guiwidth|a_guix|a_guiy|a_hour|a_iconfile|a_iconhidden|a_iconnumber|a_icontip|a_index|a_ipaddress1|a_ipaddress2|a_ipaddress3|a_ipaddress4|a_isadmin|a_iscompiled|a_iscritical|a_ispaused|a_issuspended|a_keydelay|a_language|a_lasterror|a_linefile|a_linenumber|a_loopfield|a_loopfileattrib|a_loopfiledir|a_loopfileext|a_loopfilefullpath|a_loopfilelongpath|a_loopfilename|a_loopfileshortname|a_loopfileshortpath|a_loopfilesize|a_loopfilesizekb|a_loopfilesizemb|a_loopfiletimeaccessed|a_loopfiletimecreated|a_loopfiletimemodified|a_loopreadline|a_loopregkey|a_loopregname|a_loopregsubkey|a_loopregtimemodified|a_loopregtype|a_mday|a_min|a_mm|a_mmm|a_mmmm|a_mon|a_mousedelay|a_msec|a_mydocuments|a_now|a_nowutc|a_numbatchlines|a_ostype|a_osversion|a_priorhotkey|programfiles|a_programfiles|a_programs|a_programscommon|a_screenheight|a_screenwidth|a_scriptdir|a_scriptfullpath|a_scriptname|a_sec|a_space|a_startmenu|a_startmenucommon|a_startup|a_startupcommon|a_stringcasesense|a_tab|a_temp|a_thisfunc|a_thishotkey|a_thislabel|a_thismenu|a_thismenuitem|a_thismenuitempos|a_tickcount|a_timeidle|a_timeidlephysical|a_timesincepriorhotkey|a_timesincethishotkey|a_titlematchmode|a_titlematchmodespeed|a_username|a_wday|a_windelay|a_windir|a_workingdir|a_yday|a_year|a_yweek|a_yyyy|clipboard|clipboardall|comspec|errorlevel)\b</string>
        </dict>
           
        <dict>
            <key>name</key>
            <string>keyword.keys.ahk</string>
            <key>match</key>
            <string>(\b|^)(?i)(shift|lshift|rshift|alt|lalt|ralt|control|lcontrol|rcontrol|ctrl|lctrl|rctrl|lwin|rwin|appskey|altdown|altup|shiftdown|shiftup|ctrldown|ctrlup|lwindown|lwinup|rwindown|rwinup|lbutton|rbutton|mbutton|wheelup|wheelleft|wheelright|wheeldown|xbutton1|xbutton2|joy1|joy2|joy3|joy4|joy5|joy6|joy7|joy8|joy9|joy10|joy11|joy12|joy13|joy14|joy15|joy16|joy17|joy18|joy19|joy20|joy21|joy22|joy23|joy24|joy25|joy26|joy27|joy28|joy29|joy30|joy31|joy32|joyx|joyy|joyz|joyr|joyu|joyv|joypov|joyname|joybuttons|joyaxes|joyinfo|space|tab|enter|escape|esc|backspace|bs|delete|del|insert|ins|pgup|pgdn|home|end|up|down|left|right|printscreen|ctrlbreak|pause|scrolllock|capslock|numlock|numpad0|numpad1|numpad2|numpad3|numpad4|numpad5|numpad6|numpad7|numpad8|numpad9|numpadmult|numpadadd|numpadsub|numpaddiv|numpaddot|numpaddel|numpadins|numpadclear|numpadup|numpaddown|numpadleft|numpadright|numpadhome|numpadend|numpadpgup|numpadpgdn|numpadenter|f1|f2|f3|f4|f5|f6|f7|f8|f9|f10|f11|f12|f13|f14|f15|f16|f17|f18|f19|f20|f21|f22|f23|f24|browser_back|browser_forward|browser_refresh|browser_stop|browser_search|browser_favorites|browser_home|volume_mute|volume_down|volume_up|media_next|media_prev|media_stop|media_play_pause|launch_mail|launch_media|launch_app1|launch_app2)\b</string>
        </dict>

        <dict>
            <key>name</key>
            <string>keyword.other.ahk</string>
            <key>match</key>
            <string>(\b|^)(?i)(pixel|mouse|screen|relative|rgb|ltrim|rtrim|join|low|belownormal|normal|abovenormal|high|realtime|ahk_id|ahk_pid|ahk_class|ahk_group|between|contains|in|is|integer|float|integerfast|floatfast|number|digit|xdigit|alpha|upper|lower|alnum|time|date|not|or|and|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|text|picture|pic|groupbox|button|checkbox|radio|dropdownlist|ddl|combobox|listbox|listview|datetime|monthcal|updown|slider|tab|tab2|statusbar|treeview|iconsmall|tile|report|sortdesc|nosort|nosorthdr|grid|hdr|autosize|range|xm|ym|ys|xs|xp|yp|font|resize|owner|submit|nohide|minimize|maximize|restore|noactivate|na|cancel|destroy|center|margin|maxsize|minsize|owndialogs|guiescape|guiclose|guisize|guicontextmenu|guidropfiles|tabstop|section|altsubmit|wrap|hscroll|vscroll|border|top|bottom|buttons|expand|first|imagelist|lines|wantctrla|wantf2|vis|visfirst|number|uppercase|lowercase|limit|password|multi|wantreturn|group|background|bold|italic|strike|underline|norm|backgroundtrans|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|lastfoundexist|alttab|shiftalttab|alttabmenu|alttabandmenu|alttabmenudismiss|notimers|interrupt|priority|waitclose|blind|raw|unicode|deref|pow|bitnot|bitand|bitor|bitxor|bitshiftleft|bitshiftright|yes|no|ok|cancel|abort|retry|ignore|tryagain|on|off|all|hkey_local_machine|hkey_users|hkey_current_user|hkey_classes_root|hkey_current_config|hklm|hku|hkcu|hkcr|hkcc|reg_sz|reg_expand_sz|reg_multi_sz|reg_dword|reg_qword|reg_binary|reg_link|reg_resource_list|reg_full_resource_descriptor|reg_resource_requirements_list|reg_dword_big_endian)\b</string>
        </dict>
        
        <dict>
            <key>name</key>
            <string>keyword.operator.ahk</string>
            <key>match</key>
            <string>=|==|<>|:=|<|>|\*|\/|\+|:|\?|\-</string>
        </dict>            
        <dict>
            <key>name</key>
            <string>punctuation.ahk</string>
            <key>match</key>
            <string>#|`|::|,|\{|\}|\(|\)|\%</string>
        </dict>            

        <dict>
            <key>captures</key>
            <dict>
                <key>2</key>
                <dict>
                    <key>name</key>
                    <string>string.quoted.ahk</string>
                </dict>
                <key>1</key>
                <dict>
                    <key>name</key>
                    <string>punctuation.quote.double</string>
                </dict>
                <key>4</key>
                <dict>
                    <key>name</key>
                    <string>punctuation.quote.double</string>
                </dict>
            </dict>
            <key>name</key>
            <string>quoted.string.line.ahk</string>
            <key>match</key>
<string>(")(([^"]|"")*)(")</string>
        </dict>          

        <dict>
            <key>captures</key>
            <dict>
                <key>1</key>
                <dict>
                    <key>name</key>
                    <string>label.ahk</string>
                </dict>
                <key>2</key>
                <dict>
                    <key>name</key>
                    <string>punctuation.definition.label.ahk</string>
                </dict>
            </dict>
            <key>name</key>
            <string>label.line.ahk</string>
            <key>match</key>
            <string>^([^: ]+)(:)(?!:)</string>
        </dict>           
        
    </array>

    
</dict>
</plist>


Once you added the language file, you may find there are lots of things not syntax colored. You will need to define some new selector for your theme like keyword.control and keyword.keys

If you're lazy (and who isn't?), here's my tmTheme file. It was originally the "vibrant ink" theme for Ruby, so there's a lot of Ruby and Javascript stuff in there. I added the needed ahk specific stuff.

vibrant ink.tmTheme

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>name</key>
        <string>Vibrant Ink</string>
        <key>settings</key>
        <array>
            <dict>
                <key>settings</key>
                <dict>
                    <key>background</key>
                    <string>#24151E</string>
                    <key>caret</key>
                    <string>#FEDC81</string>
                    <key>foreground</key>
                    <string>#FFFFFF</string>
                    <key>invisibles</key>
                    <string>#FFFFFF</string>
                    <key>lineHighlight</key>
                    <string>#3B3B3B</string>
                    <key>selection</key>
                    <string>#bA707AE0</string>
                    <key>searchHighlight</key>
                    <string>#35AA54</string>
                    <key>bracketHighlight</key>
                    <string>#FF5757</string>
                    <key>multiEditHighlight</key>
                    <string>#D28F79</string>
                    <key>gutter</key>
                    <string>#B3C6CE</string>
                </dict>
            </dict>
            <dict>
                <key>name</key>
                <string>Text base</string>
                <key>scope</key>
                <string>text</string>
                <key>settings</key>
                <dict>
                    <key>background</key>
                    <string>#0F0F0F</string>
                    <key>foreground</key>
                    <string>#FFFFFF</string>
                </dict>
            </dict>
            <dict>
                <key>name</key>
                <string>Function params</string>
                <key>settings</key>
                <dict>
                    <key>foreground</key>
                    <string>#EBFAA5</string>
                </dict>
                <key>scope</key>
                <string>entity.parameters</string>
            </dict>
            <dict>
                <key>name</key>
                <string>braces</string>
                <key>settings</key>
                <dict>
                    <key>foreground</key>
                    <string>#B7FBF9</string>
                </dict>
                <key>scope</key>
                <string>meta.braces.curly.ahk</string>
            </dict>
            <dict>
                <key>name</key>
                <string>section title</string>
                <key>settings</key>
                <dict>
                    <key>foreground</key>
                    <string>#BDFBE6</string>
                </dict>
                <key>scope</key>
                <string>entity.name.section.group-title.ahk</string>
            </dict>
            <dict>
                <key>name</key>
                <string>Inline Ruby Html</string>
                <key>scope</key>
                <string>source.ruby.rails.embedded.html</string>
                <key>settings</key>
                <dict>
                    <key>background</key>
                    <string>#606060</string>
                    <key>foreground</key>
                    <string>#FFFFE8</string>
                </dict>
            </dict>
            <dict>
                <key>name</key>
                <string>Ruby Html</string>
                <key>scope</key>
                <string>text.html.ruby</string>
                <key>settings</key>
                <dict>
                    <key>background</key>
                    <string>#101010</string>
                    <key>foreground</key>
                    <string>#9178E7</string>
                </dict>
            </dict>
            <dict>
                <key>name</key>
                <string>Ruby Number</string>
                <key>scope</key>
                <string>constant.numeric.ruby</string>
                <key>settings</key>
                <dict>
                    <key>foreground</key>
                    <string>#CCFF33</string>
                </dict>
            </dict>
            <dict>
                <key>name</key>
                <string>Ruby source</string>
                <key>scope</key>
                <string>source.ruby</string>
                <key>settings</key>
                <dict>
                    <key>foreground</key>
                    <string>#FFFFFF</string>
                </dict>
            </dict>
            <dict>
                <key>name</key>
                <string>Source base</string>
                <key>scope</key>
                <string>source</string>
                <key>settings</key>
                <dict>
                    <key>background</key>
                    <string>#000000</string>
                    <key>foreground</key>
                    <string>#FFFFFF</string>
                </dict>
            </dict>
            <dict>
                <key>name</key>
                <string>Comment</string>
                <key>scope</key>
                <string>comment</string>
                <key>settings</key>
                <dict>
                    <key>foreground</key>
                    <string>#C0C0C0</string>
                </dict>
            </dict>
            <dict>
                <key>name</key>
                <string>Constant</string>
                <key>scope</key>
                <string>constant</string>
                <key>settings</key>
                <dict>
                    <key>foreground</key>
                    <string>#FA9ECE</string>
                </dict>
            </dict>
            <dict>
                <key>name</key>
                <string>Keyword</string>
                <key>scope</key>
                <string>keyword</string>
                <key>settings</key>
                <dict>
                    <key>foreground</key>
                    <string>#FFFF00</string>
                </dict>
            </dict>
            <dict>
                <key>name</key>
                <string>Keyword control</string>
                <key>settings</key>
                <dict>
                    <key>fontStyle</key>
                    <string>bold</string>                
                    <key>foreground</key>
                    <string>#ffccff</string>
                </dict>
                <key>scope</key>
                <string>keyword.control.ahk</string>
            </dict>
            <dict>
                <key>name</key>
                <string>Keyword command</string>
                <key>scope</key>
                <string>keyword.command.ahk</string>                
                <key>settings</key>                
                <dict>
                    <key>foreground</key>
                    <string>#ddffff</string>                 
                </dict>   
            </dict>
            <dict>
                <key>name</key>
                <string>Keyword function</string>
                <key>scope</key>
                <string>keyword.function.ahk</string>                
                <key>settings</key>                
                <dict>
                    <key>foreground</key>
                    <string>#aaeeff</string>                 
                </dict>   
            </dict>
            <dict>
                <key>name</key>
                <string>Keyword keys</string>
                <key>scope</key>
                <string>keyword.keys.ahk</string>                
                <key>settings</key>                
                <dict>
                    <key>foreground</key>
                    <string>#FFdd66</string>                 
                </dict>   
            </dict>
            <dict>
                <key>name</key>
                <string>predefined variables</string>
                <key>scope</key>
                <string>variable.predefined.ahk</string>                
                <key>settings</key>                
                <dict>
                    <key>foreground</key>
                    <string>#00ffaa</string>                 
                </dict>   
            </dict>
            <dict>
                <key>name</key>
                <string>Pre-processor Line</string>
                <key>scope</key>
                <string>keyword.preprocessor</string>
                <key>settings</key>
                <dict>
                    <key>fontStyle</key>
                    <string></string>
                    <key>foreground</key>
                    <string>#EDF8F9</string>
                </dict>
            </dict>
            <dict>
                <key>name</key>
                <string>Pre-processor Directive</string>
                <key>scope</key>
                <string>keyword.preprocessor directive</string>
                <key>settings</key>
                <dict>
                    <key>fontStyle</key>
                    <string></string>
                    <key>foreground</key>
                    <string>#FFFFFF</string>
                </dict>
            </dict>
            <dict>
                <key>name</key>
                <string>Function name</string>
                <key>scope</key>
                <string>entity.name.function, storage.type.function.js</string>
                <key>settings</key>
                <dict>
                    <key>fontStyle</key>
                    <string></string>
                    <key>foreground</key>
                    <string>#FFCC00</string>
                </dict>
            </dict>
            <dict>
                <key>name</key>
                <string>Function argument</string>
                <key>scope</key>
                <string>variable.parameter</string>
                <key>settings</key>
                <dict>
                    <key>fontStyle</key>
                    <string>italic</string>
                </dict>
            </dict>
            <dict>
                <key>name</key>
                <string>Block comment</string>
                <key>scope</key>
                <string>source comment.block</string>
                <key>settings</key>
                <dict>
                    <key>background</key>
                    <string>#070707</string>
                    <key>foreground</key>
                    <string>#D0BFB0</string>
                </dict>
            </dict>
            <dict>
                <key>name</key>
                <string>Variable</string>
                <key>scope</key>
                <string>variable.other</string>
                <key>settings</key>
                <dict>
                    <key>fontStyle</key>
                    <string></string>
                    <key>foreground</key>
                    <string>#A6E2FF</string>
                </dict>
            </dict>
            <dict>
                <key>name</key>
                <string>group</string>
                <key>settings</key>
                <dict>
                    <key>foreground</key>
                    <string>#F8BEE0</string>
                </dict>
                <key>scope</key>
                <string>group</string>
            </dict>
            <dict>
                <key>name</key>
                <string>ActiveRecord Function</string>
                <key>scope</key>
                <string>support.function.activerecord.rails</string>
                <key>settings</key>
                <dict>
                    <key>foreground</key>
                    <string>#CECEB5</string>
                </dict>
            </dict>
            <dict>
                <key>name</key>
                <string>String</string>
                <key>scope</key>
                <string>string</string>
                <key>settings</key>
                <dict>
                    <key>foreground</key>
                    <string>#66FF00</string>
                </dict>
            </dict>
            <dict>
                <key>name</key>
                <string>String escapes</string>
                <key>scope</key>
                <string>string constant.character.escape</string>
                <key>settings</key>
                <dict>
                    <key>foreground</key>
                    <string>#AAAAAA</string>
                </dict>
            </dict>
            <dict>
                <key>name</key>
                <string>String (executed)</string>
                <key>scope</key>
                <string>string.interpolated</string>
                <key>settings</key>
                <dict>
                    <key>background</key>
                    <string>#CCCC33</string>
                    <key>foreground</key>
                    <string>#000000</string>
                </dict>
            </dict>
            <dict>
                <key>name</key>
                <string>Regular expression</string>
                <key>scope</key>
                <string>string.regexp</string>
                <key>settings</key>
                <dict>
                    <key>foreground</key>
                    <string>#A8DDE8</string>
                </dict>
            </dict>
            <dict>
                <key>name</key>
                <string>String (literal)</string>
                <key>scope</key>
                <string>string.literal</string>
                <key>settings</key>
                <dict>
                    <key>foreground</key>
                    <string>#F0F0C4</string>
                </dict>
            </dict>
            <dict>
                <key>name</key>
                <string>String escapes (executed)</string>
                <key>scope</key>
                <string>string.interpolated constant.character.escape</string>
                <key>settings</key>
                <dict>
                    <key>foreground</key>
                    <string>#C0C0C0</string>
                </dict>
            </dict>
            <dict>
                <key>name</key>
                <string>keyword.directive</string>
                <key>settings</key>
                <dict>
                    <key>foreground</key>
                    <string>#93ddFF</string>
                </dict>
                <key>scope</key>
                <string>keyword.directive</string>
            </dict>
            <dict>
                <key>name</key>
                <string>Class name</string>
                <key>scope</key>
                <string>entity.name.class, support.class.js</string>
                <key>settings</key>
                <dict>
                    <key>fontStyle</key>
                    <string>underline</string>
                </dict>
            </dict>
            <dict>
                <key>name</key>
                <string>Class inheritance</string>
                <key>scope</key>
                <string>entity.other.inherited-class</string>
                <key>settings</key>
                <dict>
                    <key>fontStyle</key>
                    <string>italic underline</string>
                </dict>
            </dict>
            <dict>
                <key>name</key>
                <string>Tag name</string>
                <key>scope</key>
                <string>entity.name.tag</string>
                <key>settings</key>
                <dict>
                    <key>fontStyle</key>
                    <string></string>
                </dict>
            </dict>
            <dict>
                <key>name</key>
                <string>Html Meta</string>
                <key>scope</key>
                <string>meta.tag.inline.any.html,  meta.tag.block.any.html</string>
                <key>settings</key>
                <dict>
                    <key>fontStyle</key>
                    <string></string>
                    <key>foreground</key>
                    <string>#FADAD1</string>
                </dict>
            </dict>
            <dict>
                <key>name</key>
                <string>Operator</string>
                <key>settings</key>
                <dict>
                    <key>foreground</key>
                    <string>#F5B5FF</string>
                </dict>
                <key>scope</key>
                <string>operator</string>
            </dict>
            <dict>
                <key>name</key>
                <string>Tag attribute</string>
                <key>scope</key>
                <string>entity.other.attribute-name</string>
                <key>settings</key>
                <dict>
                    <key>fontStyle</key>
                    <string>italic</string>
                    <key>foreground</key>
                    <string>#B9FBBF</string>
                </dict>
            </dict>
            <dict>
                <key>name</key>
                <string>Other Keywords</string>
                <key>scope</key>
                <string>keyword.other</string>
                <key>settings</key>
                <dict>
                    <key>foreground</key>
                    <string>#66bbff</string>
                </dict>
            </dict>
            <dict>
                <key>name</key>
                <string>Punctuation</string>
                <key>scope</key>
                <string>punctuation</string>
                <key>settings</key>
                <dict>
                    <key>foreground</key>
                    <string>#FF8F78</string>
                </dict>
            </dict>
            
            <dict>
                <key>name</key>
                <string>label</string>
                <key>settings</key>
                <dict>
                    <key>foreground</key>
                    <string>#DAFCD3</string>
                </dict>
                <key>scope</key>
                <string>label.ahk</string>
            </dict>
            <dict>
                <key>name</key>
                <string>CSS Selector</string>
                <key>scope</key>
                <string>meta.selector.css, entity.other.attribute-name.pseudo-class.css, entity.name.tag.wildcard.css, entity.other.attribute-name.id.css, entity.other.attribute-name.class.css</string>
                <key>settings</key>
                <dict>
                    <key>foreground</key>
                    <string>#FFD9BF</string>
                </dict>
            </dict>
            <dict>
                <key>name</key>
                <string>CSS Property</string>
                <key>scope</key>
                <string>support.type.property-name.css</string>
                <key>settings</key>
                <dict>
                    <key>foreground</key>
                    <string>#BBDDFF</string>
                </dict>
            </dict>
            <dict>
                <key>name</key>
                <string>CSS Other</string>
                <key>scope</key>
                <string>keyword.other.unit.css, constant.other.rgb-value.css, constant.numeric.css</string>
                <key>settings</key>
                <dict>
                    <key>foreground</key>
                    <string>#FFB9FF</string>
                </dict>
            </dict>
            <dict>
                <key>name</key>
                <string>Javascript Events</string>
                <key>scope</key>
                <string>support.function.event-handler.js</string>
                <key>settings</key>
                <dict>
                    <key>foreground</key>
                    <string>#FFFFFF</string>
                </dict>
            </dict>
            <dict>
                <key>name</key>
                <string>Javascript Operators</string>
                <key>scope</key>
                <string>keyword.operator.js</string>
                <key>settings</key>
                <dict>
                    <key>foreground</key>
                    <string>#FFFFFF</string>
                </dict>
            </dict>
            <dict>
                <key>name</key>
                <string>Javascript Keywords</string>
                <key>scope</key>
                <string>keyword.control.js</string>
                <key>settings</key>
                <dict>
                    <key>foreground</key>
                    <string>#eeddee</string>
                </dict>
            </dict>
            <dict>
                <key>name</key>
                <string>Prototype Objects</string>
                <key>scope</key>
                <string>support.class.prototype.js</string>
                <key>settings</key>
                <dict>
                    <key>foreground</key>
                    <string>#FFFFFF</string>
                </dict>
            </dict>
            <dict>
                <key>name</key>
                <string>Prototype Methods</string>
                <key>scope</key>
                <string>object.property.function.prototype.js</string>
                <key>settings</key>
                <dict>
                    <key>foreground</key>
                    <string>#FF6600</string>
                </dict>
            </dict>
        </array>
        <key>uuid</key>
        <string>4B7A9AA6-C472-4460-BA48-199E2624956B</string>
    </dict>
</plist>

Now if you are wondering "what do I do with this stuff? don't bundles come in umm, nicely zipped up bunndles?" When I grow up, I'll learn to post this to a server. Meanwhile, you can grab an already made bundle here

<!-- m -->http://www.autohotke...topic25329.html<!-- m -->

Then replace the content of AHK.plist with the code in the 1st code box.

For the theme, save the 2nd code box to a .tmTheme file, then find where your other .tmTheme files are, put it there and hopefully your editor will pick it up.

Tested with e-texteditor 1.0.38b, sublime text 1.2

screenshot

Posted Image

Posted Image

Feedback, addition, correction all appreciated.

edit: fixed an error with string

strictlyfocused02
  • Members
  • 64 posts
  • Last active: Dec 11 2015 08:35 PM
  • Joined: 21 Jan 2009
Any chance you could expand on your installation instructions? Specifically, I *just* downloaded Sublime Text and Im starting to love it, but I haven't got a clue on how to install your setup here into it.

--Stash--
  • Members
  • 2 posts
  • Last active: Apr 28 2010 06:38 PM
  • Joined: 27 Apr 2010
I had the same problem as you - brand new to Sublime Text, no idea what to do with anything...

Anyway, here are the above files as .sublime-package files:
AutoHotKey.sublime-package
Vibrant Ink.sublime-package

It would seem that .sublime-package files are just plain old ZIP files with the extension renamed (sensible IMO).

I'm using the portable version of Sublime Text, so I just drop these .sublime-package files into USB-DRIVE-LETTER:\Sublime Text\Pristine Packages\ and I'm good to go.

Hope this helps.

  • Guests
  • Last active:
  • Joined: --
what do you do after you droped the files in the pristine package map?
cause nothing happens here..

  • Guests
  • Last active:
  • Joined: --
Thanks to Barty for originally posting this!

I wanted to be able to use this syntax coloring for viewing/editing some of my AHK scripts on the go, using Textastic for iPad. Fortunately this app supports TextMate bundles for adding custom syntax definitions.

Anyway, I felt like posting the zipped AHK bundle described in this thread, since at least some of the files mentioned in the original post are long gone. Of course, all of the credit goes to Barty, this is his code just zipped up in the folder structure.


Files Included:
AutoHotKey.tmbundle
ink.tmTheme

Download here

creyc
  • Members
  • 1 posts
  • Last active: Aug 28 2012 07:52 AM
  • Joined: 28 Aug 2012

Thanks to Barty for originally posting this!

I wanted to be able to use this syntax coloring for viewing/editing some of my AHK scripts on the go, using Textastic for iPad. Fortunately this app supports TextMate bundles for adding custom syntax definitions.

Anyway, I felt like posting the zipped AHK bundle described in this thread, since at least some of the files mentioned in the original post are long gone. Of course, all of the credit goes to Barty, this is his code just zipped up in the folder structure.


Files Included:
AutoHotKey.tmbundle
ink.tmTheme

Download here



And in case you're interested in the iPad side of things, there's a guide over at Textasticapp.com

And here's a screenshot in action:

Posted Image

Cheers!

willyfoo
  • Members
  • 40 posts
  • Last active: Jul 31 2015 07:35 PM
  • Joined: 03 Jun 2007

Thanks to Barty for originally posting this!

I wanted to be able to use this syntax coloring for viewing/editing some of my AHK scripts on the go, using Textastic for iPad. Fortunately this app supports TextMate bundles for adding custom syntax definitions.

Anyway, I felt like posting the zipped AHK bundle described in this thread, since at least some of the files mentioned in the original post are long gone. Of course, all of the credit goes to Barty, this is his code just zipped up in the folder structure.


Files Included:
AutoHotKey.tmbundle
ink.tmTheme

Download here

Looking for AHK Syntax for Textastic for iPad too... but your Dropbox link is down.. would greatly save my time if you still have it! Thanks!



willyfoo
  • Members
  • 40 posts
  • Last active: Jul 31 2015 07:35 PM
  • Joined: 03 Jun 2007

Trying to create the bundle from the previous posts... but can't seem to get Textastic to pick it up.. can anybody help to see what's going wrong?

https://www.dropbox....kdkp/rrVNDhD0nA