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


Feedback, addition, correction all appreciated.
edit: fixed an error with string