diff --git a/sublime/Packages/ASP/ASP.tmLanguage b/sublime/Packages/ASP/ASP.tmLanguage
new file mode 100644
index 0000000..b519757
--- /dev/null
+++ b/sublime/Packages/ASP/ASP.tmLanguage
@@ -0,0 +1,214 @@
+
+
+
+
+ comment
+ ASP SCRIPTING DICTIONARY – By Rich Barton: Version 1.0 (based on PHP Scripting Dictionary by Justin French, Sune Foldager and Allan Odgaard) Note: .asp is handled by asp/html
+ fileTypes
+
+ asa
+
+ foldingStartMarker
+ (?i)^\s*(Public|Private)?\s*(Class|Function|Sub|Property)\s*([a-zA-Z_]\w*)\s*(\(.*\)\s*)?$
+ foldingStopMarker
+ (?i)^\s*End (Class|Function|Sub|Property)\s*$
+ keyEquivalent
+ ^~A
+ name
+ ASP
+ patterns
+
+
+ captures
+
+ 1
+
+ name
+ storage.type.function.asp
+
+ 2
+
+ name
+ entity.name.function.asp
+
+ 3
+
+ name
+ punctuation.definition.parameters.asp
+
+ 4
+
+ name
+ variable.parameter.function.asp
+
+ 5
+
+ name
+ punctuation.definition.parameters.asp
+
+
+ match
+ ^\s*((?i:function|sub))\s*([a-zA-Z_]\w*)\s*(\()([^)]*)(\)).*\n?
+ name
+ meta.function.asp
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.definition.comment.asp
+
+
+ match
+ (').*$\n?
+ name
+ comment.line.apostrophe.asp
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.definition.comment.asp
+
+
+ match
+ (REM ).*$\n?
+ name
+ comment.line.rem.asp
+
+
+ match
+ (?i:\b(If|Then|Else|ElseIf|End If|While|Wend|For|To|Each|In|Step|Case|Select|End Select|Return|Continue|Do|Until|Loop|Next|With|Exit Do|Exit For|Exit Function|Exit Property|Exit Sub)\b)
+ name
+ keyword.control.asp
+
+
+ match
+ =|>=|<|>|<|<>|\+|-|\*|\^|&|\b(?i:(Mod|And|Not|Or|Xor|Is))\b
+ name
+ keyword.operator.asp
+
+
+ match
+ (?i:\b(Call|Class|Const|Dim|Redim|Function|Sub|Property|End Property|End sub|End Function|Set|Let|Get|New|Randomize|Option Explicit|On Error Resume Next|On Error GoTo)\b)
+ name
+ storage.type.asp
+
+
+ match
+ (?i:\b(Private|Public|Default)\b)
+ name
+ storage.modifier.asp
+
+
+ match
+ (?i:\b(Empty|False|Nothing|Null|True)\b)
+ name
+ constant.language.asp
+
+
+ begin
+ "
+ beginCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.begin.asp
+
+
+ end
+ "(?!")
+ endCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.end.asp
+
+
+ name
+ string.quoted.double.asp
+ patterns
+
+
+ match
+ ""
+ name
+ constant.character.escape.apostrophe.asp
+
+
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.definition.variable.asp
+
+
+ match
+ (\$)[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?\b
+ name
+ variable.other.asp
+
+
+ match
+ (?i:\b(Application|ObjectContext|Request|Response|Server|Session)\b)
+ name
+ support.class.asp
+
+
+ match
+ (?i:\b(Contents|StaticObjects|ClientCertificate|Cookies|Form|QueryString|ServerVariables)\b)
+ name
+ support.class.collection.asp
+
+
+ match
+ (?i:\b(TotalBytes|Buffer|CacheControl|Charset|ContentType|Expires|ExpiresAbsolute|IsClientConnected|PICS|Status|ScriptTimeout|CodePage|LCID|SessionID|Timeout)\b)
+ name
+ support.constant.asp
+
+
+ match
+ (?i:\b(Lock|Unlock|SetAbort|SetComplete|BianryRead|AddHeader|AppendToLog|BinaryWrite|Clear|End|Flush|Redirect|Write|CreateObject|HTMLEncode|MapPath|URLEncode|Abandon)\b)
+ name
+ support.function.asp
+
+
+ match
+ (?i:\b(Application_OnEnd|Application_OnStart|OnTransactionAbort|OnTransactionCommit|Session_OnEnd|Session_OnStart|Class_Initialize|Class_Terminate)\b)
+ name
+ support.function.event.asp
+
+
+ match
+ (?i:\b(Array|Add|Asc|Atn|CBool|CByte|CCur|CDate|CDbl|Chr|CInt|CLng|Conversions|Cos|CreateObject|CSng|CStr|Date|DateAdd|DateDiff|DatePart|DateSerial|DateValue|Day|Derived|Math|Escape|Eval|Exists|Exp|Filter|FormatCurrency|FormatDateTime|FormatNumber|FormatPercent|GetLocale|GetObject|GetRef|Hex|Hour|InputBox|InStr|InStrRev|Int|Fix|IsArray|IsDate|IsEmpty|IsNull|IsNumeric|IsObject|Item|Items|Join|Keys|LBound|LCase|Left|Len|LoadPicture|Log|LTrim|RTrim|Trim|Maths|Mid|Minute|Month|MonthName|MsgBox|Now|Oct|Remove|RemoveAll|Replace|RGB|Right|Rnd|Round|ScriptEngine|ScriptEngineBuildVersion|ScriptEngineMajorVersion|ScriptEngineMinorVersion|Second|SetLocale|Sgn|Sin|Space|Split|Sqr|StrComp|String|StrReverse|Tan|Time|Timer|TimeSerial|TimeValue|TypeName|UBound|UCase|Unescape|VarType|Weekday|WeekdayName|Year)\b)
+ name
+ support.function.vb.asp
+
+
+ match
+ \b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f)?\b
+ name
+ constant.numeric.asp
+
+
+ match
+ (?i:\b(vbtrue|fvbalse|vbcr|vbcrlf|vbformfeed|vblf|vbnewline|vbnullchar|vbnullstring|vbtab|vbverticaltab|vbbinarycompare|vbtextcomparevbsunday|vbmonday|vbtuesday|vbwednesday|vbthursday|vbfriday|vbsaturday|vbusesystemdayofweek|vbfirstjan1|vbfirstfourdays|vbfirstfullweek|vbgeneraldate|vblongdate|vbshortdate|vblongtime|vbshorttime|vbobjecterror|vbEmpty|vbNull|vbInteger|vbLong|vbSingle|vbDouble|vbCurrency|vbDate|vbString|vbObject|vbError|vbBoolean|vbVariant|vbDataObject|vbDecimal|vbByte|vbArray)\b)
+ name
+ support.type.vb.asp
+
+
+ scopeName
+ source.asp
+ uuid
+ 291022B4-6B1D-11D9-90EB-000D93589AF6
+
+
diff --git a/sublime/Packages/ASP/ASP.tmLanguage.cache b/sublime/Packages/ASP/ASP.tmLanguage.cache
new file mode 100644
index 0000000..36f24d8
Binary files /dev/null and b/sublime/Packages/ASP/ASP.tmLanguage.cache differ
diff --git a/sublime/Packages/ASP/HTML-ASP.tmLanguage b/sublime/Packages/ASP/HTML-ASP.tmLanguage
new file mode 100644
index 0000000..b2b8aa8
--- /dev/null
+++ b/sublime/Packages/ASP/HTML-ASP.tmLanguage
@@ -0,0 +1,74 @@
+
+
+
+
+ fileTypes
+
+ asp
+
+ foldingStartMarker
+ (<(?i:(head|table|div|style|script|ul|ol|form|dl))\b.*?>|\{)
+ foldingStopMarker
+ (</(?i:(head|table|div|style|script|ul|ol|form|dl))>|\})
+ keyEquivalent
+ ^~A
+ name
+ HTML (ASP)
+ patterns
+
+
+ begin
+ <%=?
+ beginCaptures
+
+ 0
+
+ name
+ punctuation.section.embedded.begin.asp
+
+
+ end
+ %>
+ endCaptures
+
+ 0
+
+ name
+ punctuation.section.embedded.end.asp
+
+
+ name
+ source.asp.embedded.html
+ patterns
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.definition.comment.asp
+
+
+ match
+ (').*?(?=%>)
+ name
+ comment.line.apostrophe.asp
+
+
+ include
+ source.asp
+
+
+
+
+ include
+ text.html.basic
+
+
+ scopeName
+ text.html.asp
+ uuid
+ 27798CC6-6B1D-11D9-B8FA-000D93589AF6
+
+
diff --git a/sublime/Packages/ASP/HTML-ASP.tmLanguage.cache b/sublime/Packages/ASP/HTML-ASP.tmLanguage.cache
new file mode 100644
index 0000000..1468442
Binary files /dev/null and b/sublime/Packages/ASP/HTML-ASP.tmLanguage.cache differ
diff --git a/sublime/Packages/ActionScript/ActionScript.tmLanguage b/sublime/Packages/ActionScript/ActionScript.tmLanguage
new file mode 100644
index 0000000..a407771
--- /dev/null
+++ b/sublime/Packages/ActionScript/ActionScript.tmLanguage
@@ -0,0 +1,267 @@
+
+
+
+
+ fileTypes
+
+ as
+
+ foldingStartMarker
+ (/\*\*|\{\s*$)
+ foldingStopMarker
+ (\*\*/|^\s*\})
+ keyEquivalent
+ ^~A
+ name
+ ActionScript
+ patterns
+
+
+ match
+ \b(R(ecordset|DBMSResolver|adioButton(Group)?)|X(ML(Socket|Node|Connector)?|UpdateResolverDataHolder)|M(M(Save|Execute)|icrophoneMicrophone|o(use|vieClip(Loader)?)|e(nu(Bar)?|dia(Controller|Display|Playback))|ath)|B(yName|inding|utton)|S(haredObject|ystem|crollPane|t(yleSheet|age|ream)|ound|e(ndEvent|rviceObject)|OAPCall|lide)|N(umericStepper|et(stream|S(tream|ervices)|Connection|Debug(Config)?))|C(heckBox|o(ntextMenu(Item)?|okie|lor|m(ponentMixins|boBox))|ustomActions|lient|amera)|T(ypedValue|ext(Snapshot|Input|F(ield|ormat)|Area)|ree|AB)|Object|D(ownload|elta(Item|Packet)?|at(e(Chooser|Field)?|a(G(lue|rid)|Set|Type)))|U(RL|TC|IScrollBar)|P(opUpManager|endingCall|r(intJob|o(duct|gressBar)))|E(ndPoint|rror)|Video|Key|F(RadioButton|GridColumn|MessageBox|BarChart|S(croll(Bar|Pane)|tyleFormat|plitView)|orm|C(heckbox|omboBox|alendar)|unction|T(icker|ooltip(Lite)?|ree(Node)?)|IconButton|D(ataGrid|raggablePane)|P(ieChart|ushButton|ro(gressBar|mptBox))|L(i(stBox|neChart)|oadingBox)|AdvancedMessageBox)|W(indow|SDLURL|ebService(Connector)?)|L(ist|o(calConnection|ad(er|Vars)|g)|a(unch|bel))|A(sBroadcaster|cc(ordion|essibility)|S(Set(Native|PropFlags)|N(ew|ative)|C(onstructor|lamp(2)?)|InstanceOf)|pplication|lert|rray))\b
+ name
+ support.class.actionscript.2
+
+
+ match
+ \b(s(h(ift|ow(GridLines|Menu|Border|Settings|Headers|ColumnHeaders|Today|Preferences)?|ad(ow|ePane))|c(hema|ale(X|Mode|Y|Content)|r(oll(Track|Drag)?|een(Resolution|Color|DPI)))|t(yleSheet|op(Drag|A(nimation|llSounds|gent))?|epSize|a(tus|rt(Drag|A(nimation|gent))?))|i(n|ze|lence(TimeOut|Level))|o(ngname|urce|rt(Items(By)?|On(HeaderRelease)?|able(Columns)?)?)|u(ppressInvalidCalls|bstr(ing)?)|p(li(ce|t)|aceCol(umnsEqually|lumnsEqually))|e(nd(DefaultPushButtonEvent|AndLoad)?|curity|t(R(GB|o(otNode|w(Height|Count))|esizable(Columns)?|a(nge|te))|G(ain|roupName)|X(AxisTitle)?|M(i(n(imum|utes)|lliseconds)|o(nth(Names)?|tionLevel|de)|ultilineMode|e(ssage|nu(ItemEnabled(At)?|EnabledAt)|dia)|a(sk|ximum))|B(u(tton(s|Width)|fferTime)|a(seTabIndex|ndwidthLimit|ckground))|S(howAsDisabled|croll(ing|Speed|Content|Target|P(osition|roperties)|barState|Location)|t(yle(Property)?|opOnFocus|at(us|e))|i(ze|lenceLevel)|ort(able(Columns)?|Function)|p(litterBarPosition|acing)|e(conds|lect(Multiple|ion(Required|Type)?|Style|Color|ed(Node(s)?|Cell|I(nd(ices|ex)|tem(s)?))?|able))|kin|m(oothness|allScroll))|H(ighlight(s|Color)|Scroll|o(urs|rizontal)|eader(Symbol|Height|Text|Property|Format|Width|Location)?|as(Shader|CloseBox))|Y(ear|AxisTitle)?|N(ode(Properties|ExpansionHandler)|ewTextFormat)|C(h(ildNodes|a(ngeHandler|rt(Title|EventHandler)))|o(ntent(Size)?|okie|lumns)|ell(Symbol|Data)|l(i(ckHandler|pboard)|oseHandler)|redentials)|T(ype(dVaule)?|i(tle(barHeight)?|p(Target|Offset)?|me(out(Handler)?)?)|oggle|extFormat|ransform)|I(s(Branch|Open)|n(terval|putProperty)|con(SymbolName)?|te(rator|m(ByKey|Symbol)))|Orientation|D(i(splay(Range|Graphics|Mode|Clip|Text|edMonth)|rection)|uration|e(pth(Below|To|Above)|fault(GatewayURL|Mappings|NodeIconSymbolName)|l(iveryMode|ay)|bug(ID)?)|a(yOfWeekNames|t(e(Filter)?|a(Mapping(s)?|Item(Text|Property|Format)|Provider|All(Height|Property|Format|Width))?))|ra(wConnectors|gContent))|U(se(Shadow|HandCursor|EchoSuppression|rInput|Fade)|TC(M(i(nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear))|P(osition|ercentComplete|an(e(M(inimumSize|aximumSize)|Size|Title))?|ro(pert(y(Data)?|iesAt)|gress))|E(nabled|dit(Handler|able)|xpand(NodeTrigger|erSymbolName))|V(Scroll|olume|alue(Source)?)|KeyFrameInterval|Quality|F(i(eld|rst(DayOfWeek|VisibleNode))|ocus|ullYear|ps|ade(InLength|OutLength)|rame(Color|Width))|Width|L(ine(Color|Weight)|o(opback|adTarget)|a(rgeScroll|bel(Source|Placement)?))|A(s(Boolean|String|Number)|n(yTypedValue|imation)|ctiv(e(State(Handler)?|Handler)|ateHandler)|utoH(ideScrollBar|eight)))?|paratorBefore|ek|lect(ion(Disabled|Unfocused)?|ed(Node(s)?|Child|I(nd(ices|ex)|tem(s)?)|Dat(e|a))?|able(Ranges)?)|rver(String)?)|kip|qrt|wapDepths|lice|aveToSharedObj|moothing)|h(scroll(Policy)?|tml(Text)?|i(t(Test(TextNearPos)?|Area)|de(BuiltInItems|Child)?|ghlight(2D|3D)?)|orizontal|e(ight|ader(Re(nderer|lease)|Height|Text))|P(osition|ageScrollSize)|a(s(childNodes|MP3|S(creen(Broadcast|Playback)|treaming(Video|Audio)|ort)|Next|OwnProperty|Pr(inting|evious)|EmbeddedVideo|VideoEncoder|A(ccesibility|udio(Encoder)?))|ndlerName)|LineScrollSize)|ye(sLabel|ar)|n(o(t|de(Name|Close|Type|Open|Value)|Label)|u(llValue|mChild(S(creens|lides)|ren|Forms))|e(w(Item|line|Value|LocationDialog)|xt(S(cene|ibling|lide)|TabIndex|Value|Frame)?)?|ame(s)?)|c(h(ildNodes|eck|a(nge(sPending)?|r(CodeAt|At))|r)|o(s|n(st(ant|ructor)|nect|c(urrency|at)|t(ent(Type|Path)?|ains|rol(Placement|lerPolicy))|denseWhite|version)|py|l(or|umn(Stretch|Name(s)?|Count))|m(p(onent|lete)|ment))|u(stomItems|ePoint(s)?|r(veTo|Value|rent(Slide|ChildSlide|Item|F(ocused(S(creen|lide)|Form)|ps))))|e(il|ll(Renderer|Press|Edit|Focus(In|Out)))|l(i(ck|ents)|o(se(Button|Pane)?|ne(Node)?)|ear(S(haredObjects|treams)|Timeout|Interval)?)|a(ncelLabel|tch|p(tion|abilities)|l(cFields|l(e(e|r))?))|reate(GatewayConnection|Menu|Se(rver|gment)|C(hild(AtDepth)?|l(ient|ass(ChildAtDepth|Object(AtDepth)?))|all)|Text(Node|Field)|Item|Object(AtDepth)?|PopUp|E(lement|mptyMovieClip)))|t(h(is|row)|ype(of|Name)?|i(tle(StyleDeclaration)?|me(out)?)|o(talTime|String|olTipText|p|UpperCase|ggle(HighQuality)?|Lo(caleString|werCase))|e(st|llTarget|xt(RightMargin|Bold|S(ize|elected)|Height|Color|I(ndent|talic)|Disabled|Underline|F(ield|ont)|Width|LeftMargin|Align)?)|a(n|rget(Path)?|b(Stops|Children|Index|Enabled|leName))|r(y|igger|ac(e|k(AsMenu)?)))|i(s(Running|Branch|NaN|Con(soleOpen|nected)|Toggled|Installed|Open|D(own|ebugger)|P(urchased|ro(totypeOf|pertyEnumerable))|Empty|F(inite|ullyPopulated)|Local|Active)|n(s(tall|ertBefore)|cludeDeltaPacketInfo|t|it(ialize|Component|Pod|A(pplication|gent))?|de(nt|terminate|x(InParent(Slide|Form)?|Of)?)|put|validate|finity|LocalInternetCache)?|con(F(ield|unction))?|t(e(ratorScrolled|m(s|RollO(ut|ver)|ClassName))|alic)|d3|p|fFrameLoaded|gnore(Case|White))|o(s|n(R(ollO(ut|ver)|e(s(ize|ult)|l(ease(Outside)?|aseOutside)))|XML|Mouse(Move|Down|Up|Wheel)|S(ync|croller|tatus|oundComplete|e(tFocus|lect(edItem)?))|N(oticeEvent|etworkChange)|C(hanged|onnect|l(ipEvent|ose))|ID3|D(isconnect|eactivate|ata|ragO(ut|ver))|Un(install|load)|P(aymentResult|ress)|EnterFrame|K(illFocus|ey(Down|Up))|Fault|Lo(ad|g)|A(ctiv(ity|ate)|ppSt(op|art)))?|pe(n|ration)|verLayChildren|kLabel|ldValue|r(d)?)|d(i(s(connect|play(Normal|ed(Month|Year)|Full)|able(Shader|d(Ranges|Days)|CloseBox|Events))|rection)|o(cTypeDecl|tall|Decoding|main|LazyDecoding)|u(plicateMovieClip|ration)|e(stroy(ChildAt|Object)|code|fault(PushButton(Enabled)?|KeydownHandler)?|l(ta(Packet(Changed)?)?|ete(PopUp|All)?)|blocking)|a(shBoardSave|yNames|ta(Provider)?|rkshadow)|r(opdown(Width)?|a(w|gO(ut|ver))))|u(se(Sort|HandCursor|Codepage|EchoSuppression)|n(shift|install|derline|escape|format|watch|lo(ck|ad(Movie(Num)?)?))|pdate(Results|Mode|I(nputProperties|tem(ByIndex)?)|P(acket|roperties)|View|AfterEvent)|rl)|join|p(ixelAspectRatio|o(sition|p|w)|u(sh|rge|blish)|ercen(tComplete|Loaded)|lay(head(Change|Time)|ing|Hidden|erType)?|a(ssword|use|r(se(XML|CSS|Int|Float)|ent(Node|Is(S(creen|lide)|Form))|ams))|r(int(Num|AsBitmap(Num)?)?|o(to(type)?|pert(y|ies)|gress)|e(ss|v(ious(S(ibling|lide)|Value)?|Scene|Frame)|ferred(Height|Width))))|e(scape|n(code(r)?|ter(Frame)?|dFill|able(Shader|d|CloseBox|Events))|dit(able|Field|LocationDialog)|v(ent|al(uate)?)|q|x(tended|p|ec(ute)?|actSettings)|m(phasized(StyleDeclaration)?|bedFonts))|v(i(sible|ewPod)|ScrollPolicy|o(id|lume)|ersion|P(osition|ageScrollSize)|a(l(idat(ionError|e(Property|ActivationKey)?)|ue(Of)?)|riable)|LineScrollSize)|k(ind|ey(Down|Up|Press|FrameInterval))|q(sort|uality)|f(scommand|i(n(d(Text|First|Last)?|ally)|eldInfo|lter(ed|Func)?|rst(Slide|Child|DayOfWeek|VisibleNode)?)|o(nt|cus(In|edCell|Out|Enabled)|r(egroundDisabled|mat(ter)?))|unctionName|ps|l(oor|ush)|ace|romCharCode)|w(i(th|dth)|ordWrap|atch|riteAccess)|l(t|i(st(Owner)?|ne(Style|To))|o(c(k|a(t(ion|eByld)|l(ToGlobal|FileReadDisable)))|opback|ad(Movie(Num)?|S(crollContent|ound)|ed|Variables(Num)?|Application)?|g(Changes)?)|e(ngth|ft(Margin)?|ading)?|a(st(Slide|Child|Index(Of)?)?|nguage|b(el(Placement|F(ield|unction))?|leField)))|a(s(scociate(Controller|Display)|in|pectRatio|function)|nd|c(ceptConnection|tiv(ityLevel|ePlayControl)|os)|t(t(ach(Movie|Sound|Video|Audio)|ributes)|an(2)?)|dd(header|RequestHeader|Menu(Item(At)?|At)?|Sort|Header|No(tice|de(At)?)|C(olumn(At)?|uePoint)|T(oLocalInternetCache|reeNode(At)?)|I(con|tem(s(At)?|At)?)|DeltaItem|P(od|age|roperty)|EventListener|View|FieldInfo|Listener|Animation)?|uto(Size|Play|KeyNav|Load)|pp(endChild|ly(Changes|Updates)?)|vHardwareDisable|fterLoaded|l(ternateRowColors|ign|l(ow(InsecureDomain|Domain)|Transitions(InDone|OutDone))|bum)|r(tist|row|g(uments|List))|gent|bs)|r(ight(Margin)?|o(ot(S(creen|lide)|Form)|und|w(Height|Count)|llO(ut|ver))|e(s(yncDepth|t(orePane|artAnimation|rict)|iz(e|able(Columns)?)|olveDelta|ult(s)?|ponse)|c(o(ncile(Results|Updates)|rd)|eive(Video|Audio))|draw|jectConnection|place(Sel|ItemAt|AllItems)?|ve(al(Child)?|rse)|quest(SizeChange|Payment)?|f(errer|resh(ScrollContent|Destinations|Pane|FromSources)?)|lease(Outside)?|ad(Only|Access)|gister(SkinElement|C(olor(Style|Name)|lass)|InheritingStyle|Proxy)|move(Range|M(ovieClip|enu(Item(At)?|At))|Background|Sort|No(tice|de(sAt|At)?)|C(olum(nAt|At)|uePoints)|T(extField|reeNode(At)?)|Item(At)?|Pod|EventListener|FromLocalInternetCache|Listener|All(C(olumns|uePoints)|Items)?))|a(ndom|te|dioDot))|g(t|oto(Slide|NextSlide|PreviousSlide|FirstSlide|LastSlide|And(Stop|Play))|e(nre|t(R(GB|o(otNode|wCount)|e(sizable|mote))|X(AxisTitle)?|M(i(n(imum(Size)?|utes)|lliseconds)|onth(Names)?|ultilineMode|e(ssage|nu(ItemAt|EnabledAt|At))|aximum(Size)?)|B(ytes(Total|Loaded)|ounds|utton(s|Width)|eginIndex|a(ndwidthLimit|ckground))|S(howAsDisabled|croll(ing|Speed|Content|Position|barState|Location)|t(yle(Names)?|opOnFocus|ate)|ize|o(urce|rtState)|p(litterBarPosition|acing)|e(conds|lect(Multiple|ion(Required|Type)|Style|ed(Node(s)?|Cell|Text|I(nd(ices|ex)|tem(s)?))?)|rvice)|moothness|WFVersion)|H(ighlight(s|Color)|ours|e(ight|ader(Height|Text|Property|Format|Width|Location)?)|as(Shader|CloseBox))|Y(ear|AxisTitle)?|N(o(tices|de(DisplayedAt|At))|um(Children|berAvailable)|e(wTextFormat|xtHighestDepth))|C(h(ild(S(creen|lide)|Nodes|Form|At)|artTitle)|o(n(tent|figInfo)|okie|de|unt|lumn(Names|Count|Index|At))|uePoint|ellIndex|loseHandler|a(ll|retIndex))|T(ypedValue|i(tle(barHeight)?|p(Target|Offset)?|me(stamp|zoneOffset|out(State|Handler)|r)?)|oggle|ext(Extent|Format)?|r(ee(NodeAt|Length)|ans(form|actionId)))|I(s(Branch|Open)|n(stanceAtDepth|d(icesByKey|exByKey))|con(SymbolName)?|te(rator|m(sByKey|By(Name|Key)|id|ID|At))|d)|O(utput(Parameter(s|ByName)?|Value(s)?)|peration|ri(entation|ginalCellData))|D(i(s(play(Range|Mode|Clip|Index|edMonth)|kUsage)|rection)|uration|e(pth|faultNodeIconSymbolName|l(taPacket|ay)|bug(Config|ID)?)|a(y(OfWeekNames)?|t(e|a(Mapping(s)?|Item(Text|Property|Format)|Label|All(Height|Property|Format|Width))?))|rawConnectors)|U(se(Shadow|HandCursor|rInput|Fade)|RL|TC(M(i(nutes|lliseconds)|onth)|Seconds|Hours|Da(y|te)|FullYear))|P(o(sition|ds)|ercentComplete|a(n(e(M(inimums|aximums)|Height|Title|Width))?|rentNode)|r(operty(Name|Data)?|efer(ences|red(Height|Width))))|E(n(dIndex|abled)|ditingData|x(panderSymbolName|andNodeTrigger))|V(iewed(Pods|Applications)|olume|ersion|alue(Source)?)|F(i(eld|rst(DayOfWeek|VisibleNode))|o(ntList|cus)|ullYear|ade(InLength|OutLength)|rame(Color|Width))|Width|L(ine(Color|Weight)|o(cal|adTarget)|ength|a(stTabIndex|bel(Source)?))|A(s(cii|Boolean|String|Number)|n(yTypedValue|imation)|ctiv(eState(Handler)?|ateHandler)|utoH(ideScrollBar|eight)|llItems|gent))?)?|lobal(StyleFormat|ToLocal)?|ain|roupName)|x(updatePackety|mlDecl)?|m(y(MethodName|Call)|in(imum)?|o(nthNames|tion(TimeOut|Level)|de(lChanged)?|use(Move|O(ut|ver)|Down(Somewhere|Outside)?|Up(Somewhere)?|WheelEnabled)|ve(To)?)|u(ted|lti(pleS(imultaneousAllowed|elections)|line))|e(ssage|nu(Show|Hide)?|th(od)?|diaType)|a(nufacturer|tch|x(scroll|hscroll|imum|HPosition|Chars|VPosition)?)|b(substring|chr|ord|length))|b(ytes(Total|Loaded)|indFormat(Strings|Function)|o(ttom(Scroll)?|ld|rder(Color)?)|u(tton(Height|Width)|iltInItems|ffer(Time|Length)|llet)|e(foreApplyUpdates|gin(GradientFill|Fill))|lockIndent|a(ndwidth|ckground(Style|Color|Disabled)?)|roadcastMessage)|onHTTPStatus)\b
+ name
+ support.function.actionscript.2
+
+
+ match
+ \b(__proto__|__resolve|_accProps|_alpha|_changed|_currentframe|_droptarget|_flash|_focusrect|_framesloaded|_global|_height|_highquality|_level|_listeners|_lockroot|_name|_parent|_quality|_root|_rotation|_soundbuftime|_target|_totalframes|_url|_visible|_width|_x|_xmouse|_xscale|_y|_ymouse|_yscale)\b
+ name
+ support.constant.actionscript.2
+
+
+ match
+ \b(dynamic|extends|import|implements|interface|public|private|new|static|super|var|for|in|break|continue|while|do|return|if|else|case|switch)\b
+ name
+ keyword.control.actionscript.2
+
+
+ match
+ \b(Boolean|Number|String|Void)\b
+ name
+ storage.type.actionscript.2
+
+
+ match
+ \b(null|undefined|true|false)\b
+ name
+ constant.language.actionscript.2
+
+
+ match
+ \b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f)?\b
+ name
+ constant.numeric.actionscript.2
+
+
+ begin
+ "
+ beginCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.begin.actionscript.2
+
+
+ end
+ "
+ endCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.end.actionscript.2
+
+
+ name
+ string.quoted.double.actionscript.2
+ patterns
+
+
+ match
+ \\.
+ name
+ constant.character.escape.actionscript.2
+
+
+
+
+ begin
+ '
+ beginCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.begin.actionscript.2
+
+
+ end
+ '
+ endCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.end.actionscript.2
+
+
+ name
+ string.quoted.single.actionscript.2
+ patterns
+
+
+ match
+ \\.
+ name
+ constant.character.escape.actionscript.2
+
+
+
+
+ match
+ \b(BACKSPACE|CAPSLOCK|CONTROL|DELETEKEY|DOWN|END|ENTER|HOME|INSERT|LEFT|LN10|LN2|LOG10E|LOG2E|MAX_VALUE|MIN_VALUE|NEGATIVE_INFINITY|NaN|PGDN|PGUP|PI|POSITIVE_INFINITY|RIGHT|SPACE|SQRT1_2|SQRT2|UP)\b
+ name
+ support.constant.actionscript.2
+
+
+ begin
+ /\*
+ captures
+
+ 0
+
+ name
+ punctuation.definition.comment.actionscript.2
+
+
+ end
+ \*/
+ name
+ comment.block.actionscript.2
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.definition.comment.actionscript.2
+
+
+ match
+ (//).*$\n?
+ name
+ comment.line.double-slash.actionscript.2
+
+
+ match
+ \b(instanceof)\b
+ name
+ keyword.operator.actionscript.2
+
+
+ match
+ [-!%&*+=/?:]
+ name
+ keyword.operator.symbolic.actionscript.2
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.definition.preprocessor.actionscript.2
+
+
+ match
+ ^[ \t]*(#)[a-zA-Z]+
+ name
+ meta.preprocessor.actionscript.2
+
+
+ begin
+ \b(function)\s+([a-zA-Z_]\w*)\s*(\()
+ captures
+
+ 1
+
+ name
+ storage.type.function.actionscript.2
+
+ 2
+
+ name
+ entity.name.function.actionscript.2
+
+ 3
+
+ name
+ punctuation.definition.parameters.begin.actionscript.2
+
+
+ end
+ \)
+ endCaptures
+
+ 0
+
+ name
+ punctuation.definition.parameters.end.actionscript.2
+
+
+ name
+ meta.function.actionscript.2
+ patterns
+
+
+ match
+ [^,)\n]+
+ name
+ variable.parameter.function.actionscript.2
+
+
+
+
+ captures
+
+ 1
+
+ name
+ storage.type.class.actionscript.2
+
+ 2
+
+ name
+ entity.name.type.class.actionscript.2
+
+ 3
+
+ name
+ storage.modifier.extends.actionscript.2
+
+ 4
+
+ name
+ entity.other.inherited-class.actionscript.2
+
+
+ match
+ \b(class)\s+([a-zA-Z_](?:\w|\.)*)(?:\s+(extends)\s+([a-zA-Z_](?:\w|\.)*))?
+ name
+ meta.class.actionscript.2
+
+
+ scopeName
+ source.actionscript.2
+ uuid
+ E5A6EC91-6EE4-11D9-BAB4-000D93589AF6
+
+
diff --git a/sublime/Packages/ActionScript/ActionScript.tmLanguage.cache b/sublime/Packages/ActionScript/ActionScript.tmLanguage.cache
new file mode 100644
index 0000000..5031e84
Binary files /dev/null and b/sublime/Packages/ActionScript/ActionScript.tmLanguage.cache differ
diff --git a/sublime/Packages/AppleScript/AppleScript.tmLanguage b/sublime/Packages/AppleScript/AppleScript.tmLanguage
new file mode 100644
index 0000000..cc8123d
--- /dev/null
+++ b/sublime/Packages/AppleScript/AppleScript.tmLanguage
@@ -0,0 +1,2142 @@
+
+
+
+
+ fileTypes
+
+ applescript
+ script editor
+
+ firstLineMatch
+ ^#!.*(osascript)
+ foldingStartMarker
+ (?x)
+ ^\s*
+ (
+ tell \s+ (?! .* \b(to)\b) .*
+ |tell\b.*?\bto\ tell \s+ (?! .* \b(to)\b) .*
+ |using \s+ terms \s+ from \s+ .*
+ |if\b .* \bthen\b
+ |repeat\b .*
+ |( on | to )\b (?!\s+ error) .*
+ |try\b
+ |with \s+ timeout\b .*
+ |script\b .*
+ |( considering | ignoring )\b .*
+ )\s*(--.*?)?$
+
+ foldingStopMarker
+ ^\s*end\b.*$
+ keyEquivalent
+ ^~A
+ name
+ AppleScript
+ patterns
+
+
+ include
+ #blocks
+
+
+ include
+ #inline
+
+
+ repository
+
+ attributes.considering-ignoring
+
+ patterns
+
+
+ match
+ ,
+ name
+ punctuation.separator.array.attributes.applescript
+
+
+ match
+ \b(and)\b
+ name
+ keyword.control.attributes.and.applescript
+
+
+ match
+ \b(?i:case|diacriticals|hyphens|numeric\s+strings|punctuation|white\s+space)\b
+ name
+ constant.other.attributes.text.applescript
+
+
+ match
+ \b(?i:application\s+responses)\b
+ name
+ constant.other.attributes.application.applescript
+
+
+
+ blocks
+
+ patterns
+
+
+ begin
+ ^\s*(script)\s+(\w+)
+ beginCaptures
+
+ 1
+
+ name
+ keyword.control.script.applescript
+
+ 2
+
+ name
+ entity.name.type.script-object.applescript
+
+
+ end
+ ^\s*(end(?:\s+script)?)(?=\s*(--.*?)?$)
+ endCaptures
+
+ 1
+
+ name
+ keyword.control.script.applescript
+
+
+ name
+ meta.block.script.applescript
+ patterns
+
+
+ include
+ $self
+
+
+
+
+ begin
+ ^(?x)
+ \s*(to|on)\s+ # "on" or "to"
+ (\w+) # function name
+ (\() # opening paren
+ ((?:[\s,:\{\}]*(?:\w+)?)*) # parameters
+ (\)) # closing paren
+
+ beginCaptures
+
+ 1
+
+ name
+ keyword.control.function.applescript
+
+ 2
+
+ name
+ entity.name.function.handler.applescript
+
+ 3
+
+ name
+ punctuation.definition.parameters.applescript
+
+ 4
+
+ name
+ variable.parameter.handler.applescript
+
+ 5
+
+ name
+ punctuation.definition.parameters.applescript
+
+
+ comment
+
+ This is not a very well-designed rule. For now,
+ we can leave it like this though, as it sorta works.
+
+ end
+ ^\s*(end)(?:\s+(\2))?(?=\s*(--.*?)?$)
+ endCaptures
+
+ 1
+
+ name
+ keyword.control.function.applescript
+
+
+ name
+ meta.function.positional.applescript
+ patterns
+
+
+ include
+ $self
+
+
+
+
+ begin
+ ^(?x)
+ \s*(to|on)\s+ # "on" or "to"
+ (\w+) # function name
+ (?:\s+
+ (of|in)\s+ # "of" or "in"
+ (\w+) # direct parameter
+ )?
+ (?=\s+(above|against|apart\s+from|around|aside\s+from|at|below|beneath|beside|between|by|for|from|instead\s+of|into|on|onto|out\s+of|over|thru|under)\b)
+
+ beginCaptures
+
+ 1
+
+ name
+ keyword.control.function.applescript
+
+ 2
+
+ name
+ entity.name.function.handler.applescript
+
+ 3
+
+ name
+ keyword.control.function.applescript
+
+ 4
+
+ name
+ variable.parameter.handler.direct.applescript
+
+
+ comment
+ TODO: match `given` parameters
+ end
+ ^\s*(end)(?:\s+(\2))?(?=\s*(--.*?)?$)
+ endCaptures
+
+ 1
+
+ name
+ keyword.control.function.applescript
+
+
+ name
+ meta.function.prepositional.applescript
+ patterns
+
+
+ captures
+
+ 1
+
+ name
+ keyword.control.preposition.applescript
+
+ 2
+
+ name
+ variable.parameter.handler.applescript
+
+
+ match
+ \b(?i:above|against|apart\s+from|around|aside\s+from|at|below|beneath|beside|between|by|for|from|instead\s+of|into|on|onto|out\s+of|over|thru|under)\s+(\w+)\b
+
+
+ include
+ $self
+
+
+
+
+ begin
+ ^(?x)
+ \s*(to|on)\s+ # "on" or "to"
+ (\w+) # function name
+ (?=\s*(--.*?)?$) # nothing else
+
+ beginCaptures
+
+ 1
+
+ name
+ keyword.control.function.applescript
+
+ 2
+
+ name
+ entity.name.function.handler.applescript
+
+
+ end
+ ^\s*(end)(?:\s+(\2))?(?=\s*(--.*?)?$)
+ endCaptures
+
+ 1
+
+ name
+ keyword.control.function.applescript
+
+
+ name
+ meta.function.parameterless.applescript
+ patterns
+
+
+ include
+ $self
+
+
+
+
+ include
+ #blocks.tell
+
+
+ include
+ #blocks.repeat
+
+
+ include
+ #blocks.statement
+
+
+ include
+ #blocks.other
+
+
+
+ blocks.other
+
+ patterns
+
+
+ begin
+ ^\s*(considering)\b
+ end
+ ^\s*(end(?:\s+considering)?)(?=\s*(--.*?)?$)
+ name
+ meta.block.considering.applescript
+ patterns
+
+
+ begin
+ (?<=considering)
+ end
+ (?<!¬)$
+ name
+ meta.array.attributes.considering.applescript
+ patterns
+
+
+ include
+ #attributes.considering-ignoring
+
+
+
+
+ begin
+ (?<=ignoring)
+ end
+ (?<!¬)$
+ name
+ meta.array.attributes.ignoring.applescript
+ patterns
+
+
+ include
+ #attributes.considering-ignoring
+
+
+
+
+ match
+ \b(but)\b
+ name
+ keyword.control.but.applescript
+
+
+ include
+ $self
+
+
+
+
+ begin
+ ^\s*(ignoring)\b
+ end
+ ^\s*(end(?:\s+ignoring)?)(?=\s*(--.*?)?$)
+ name
+ meta.block.ignoring.applescript
+ patterns
+
+
+ begin
+ (?<=considering)
+ end
+ (?<!¬)$
+ name
+ meta.array.attributes.considering.applescript
+ patterns
+
+
+ include
+ #attributes.considering-ignoring
+
+
+
+
+ begin
+ (?<=ignoring)
+ end
+ (?<!¬)$
+ name
+ meta.array.attributes.ignoring.applescript
+ patterns
+
+
+ include
+ #attributes.considering-ignoring
+
+
+
+
+ match
+ \b(but)\b
+ name
+ keyword.control.but.applescript
+
+
+ include
+ $self
+
+
+
+
+ begin
+ ^\s*(if)\b
+ beginCaptures
+
+ 1
+
+ name
+ keyword.control.if.applescript
+
+
+ end
+ ^\s*(end(?:\s+if)?)(?=\s*(--.*?)?$)
+ endCaptures
+
+ 1
+
+ name
+ keyword.control.end.applescript
+
+
+ name
+ meta.block.if.applescript
+ patterns
+
+
+ match
+ \b(then)\b
+ name
+ keyword.control.then.applescript
+
+
+ match
+ \b(else\s+if)\b
+ name
+ keyword.control.else-if.applescript
+
+
+ match
+ \b(else)\b
+ name
+ keyword.control.else.applescript
+
+
+ include
+ $self
+
+
+
+
+ begin
+ ^\s*(try)\b
+ beginCaptures
+
+ 1
+
+ name
+ keyword.control.try.applescript
+
+
+ end
+ ^\s*(end(?:\s+(try|error))?)(?=\s*(--.*?)?$)
+ endCaptures
+
+ 1
+
+ name
+ keyword.control.end.applescript
+
+
+ name
+ meta.block.try.applescript
+ patterns
+
+
+ begin
+ ^\s*(on\s+error)\b
+ beginCaptures
+
+ 1
+
+ name
+ keyword.control.exception.on-error.applescript
+
+
+ end
+ (?<!¬)$
+ name
+ meta.property.error.applescript
+ patterns
+
+
+ match
+ \b(?i:number|partial|from|to)\b
+ name
+ keyword.control.exception.modifier.applescript
+
+
+ include
+ #inline
+
+
+
+
+ include
+ $self
+
+
+
+
+ begin
+ ^\s*(using\s+terms\s+from)\b
+ beginCaptures
+
+ 1
+
+ name
+ keyword.control.terms.applescript
+
+
+ end
+ ^\s*(end(?:\s+using\s+terms\s+from)?)(?=\s*(--.*?)?$)
+ endCaptures
+
+ 1
+
+ name
+ keyword.control.end.applescript
+
+
+ name
+ meta.block.terms.applescript
+ patterns
+
+
+ include
+ $self
+
+
+
+
+ begin
+ ^\s*(with\s+timeout(\s+of)?)\b
+ beginCaptures
+
+ 1
+
+ name
+ keyword.control.timeout.applescript
+
+
+ end
+ ^\s*(end(?:\s+timeout)?)(?=\s*(--.*?)?$)
+ endCaptures
+
+ 1
+
+ name
+ keyword.control.end.applescript
+
+
+ name
+ meta.block.timeout.applescript
+ patterns
+
+
+ include
+ $self
+
+
+
+
+ begin
+ ^\s*(with\s+transaction(\s+of)?)\b
+ beginCaptures
+
+ 1
+
+ name
+ keyword.control.transaction.applescript
+
+
+ end
+ ^\s*(end(?:\s+transaction)?)(?=\s*(--.*?)?$)
+ endCaptures
+
+ 1
+
+ name
+ keyword.control.end.applescript
+
+
+ name
+ meta.block.transaction.applescript
+ patterns
+
+
+ include
+ $self
+
+
+
+
+
+ blocks.repeat
+
+ patterns
+
+
+ begin
+ ^\s*(repeat)\s+(until)\b
+ beginCaptures
+
+ 1
+
+ name
+ keyword.control.repeat.applescript
+
+ 2
+
+ name
+ keyword.control.until.applescript
+
+
+ end
+ ^\s*(end(?:\s+repeat)?)(?=\s*(--.*?)?$)
+ endCaptures
+
+ 1
+
+ name
+ keyword.control.end.applescript
+
+
+ name
+ meta.block.repeat.until.applescript
+ patterns
+
+
+ include
+ $self
+
+
+
+
+ begin
+ ^\s*(repeat)\s+(while)\b
+ beginCaptures
+
+ 1
+
+ name
+ keyword.control.repeat.applescript
+
+ 2
+
+ name
+ keyword.control.while.applescript
+
+
+ end
+ ^\s*(end(?:\s+repeat)?)(?=\s*(--.*?)?$)
+ endCaptures
+
+ 1
+
+ name
+ keyword.control.end.applescript
+
+
+ name
+ meta.block.repeat.while.applescript
+ patterns
+
+
+ include
+ $self
+
+
+
+
+ begin
+ ^\s*(repeat)\s+(with)\s+(\w+)\b
+ beginCaptures
+
+ 1
+
+ name
+ keyword.control.repeat.applescript
+
+ 2
+
+ name
+ keyword.control.until.applescript
+
+ 3
+
+ name
+ variable.parameter.loop.applescript
+
+
+ end
+ ^\s*(end(?:\s+repeat)?)(?=\s*(--.*?)?$)
+ endCaptures
+
+ 1
+
+ name
+ keyword.control.end.applescript
+
+
+ name
+ meta.block.repeat.with.applescript
+ patterns
+
+
+ match
+ \b(from|to|by)\b
+ name
+ keyword.control.modifier.range.applescript
+
+
+ match
+ \b(in)\b
+ name
+ keyword.control.modifier.list.applescript
+
+
+ include
+ $self
+
+
+
+
+ begin
+ ^\s*(repeat)\b(?=\s*(--.*?)?$)
+ beginCaptures
+
+ 1
+
+ name
+ keyword.control.repeat.applescript
+
+
+ end
+ ^\s*(end(?:\s+repeat)?)(?=\s*(--.*?)?$)
+ endCaptures
+
+ 1
+
+ name
+ keyword.control.end.applescript
+
+
+ name
+ meta.block.repeat.forever.applescript
+ patterns
+
+
+ include
+ $self
+
+
+
+
+ begin
+ ^\s*(repeat)\b
+ beginCaptures
+
+ 1
+
+ name
+ keyword.control.repeat.applescript
+
+
+ end
+ ^\s*(end(?:\s+repeat)?)(?=\s*(--.*?)?$)
+ endCaptures
+
+ 1
+
+ name
+ keyword.control.end.applescript
+
+
+ name
+ meta.block.repeat.times.applescript
+ patterns
+
+
+ match
+ \b(times)\b
+ name
+ keyword.control.times.applescript
+
+
+ include
+ $self
+
+
+
+
+
+ blocks.statement
+
+ patterns
+
+
+ begin
+ \b(prop(?:erty)?)\s+(\w+)\b
+ beginCaptures
+
+ 1
+
+ name
+ keyword.control.def.property.applescript
+
+ 2
+
+ name
+ variable.other.property.applescript
+
+
+ end
+ (?<!¬)$
+ name
+ meta.statement.property.applescript
+ patterns
+
+
+ match
+ :
+ name
+ punctuation.separator.key-value.property.applescript
+
+
+ include
+ #inline
+
+
+
+
+ begin
+ \b(set)\s+(\w+)\s+(to)\b
+ beginCaptures
+
+ 1
+
+ name
+ keyword.control.def.set.applescript
+
+ 2
+
+ name
+ variable.other.readwrite.set.applescript
+
+ 3
+
+ name
+ keyword.control.def.set.applescript
+
+
+ end
+ (?<!¬)$
+ name
+ meta.statement.set.applescript
+ patterns
+
+
+ include
+ #inline
+
+
+
+
+ begin
+ \b(local)\b
+ beginCaptures
+
+ 1
+
+ name
+ keyword.control.def.local.applescript
+
+
+ end
+ (?<!¬)$
+ name
+ meta.statement.local.applescript
+ patterns
+
+
+ match
+ ,
+ name
+ punctuation.separator.variables.local.applescript
+
+
+ match
+ \b\w+
+ name
+ variable.other.readwrite.local.applescript
+
+
+ include
+ #inline
+
+
+
+
+ begin
+ \b(global)\b
+ beginCaptures
+
+ 1
+
+ name
+ keyword.control.def.global.applescript
+
+
+ end
+ (?<!¬)$
+ name
+ meta.statement.global.applescript
+ patterns
+
+
+ match
+ ,
+ name
+ punctuation.separator.variables.global.applescript
+
+
+ match
+ \b\w+
+ name
+ variable.other.readwrite.global.applescript
+
+
+ include
+ #inline
+
+
+
+
+ begin
+ \b(error)\b
+ beginCaptures
+
+ 1
+
+ name
+ keyword.control.exception.error.applescript
+
+
+ end
+ (?<!¬)$
+ name
+ meta.statement.error.applescript
+ patterns
+
+
+ match
+ \b(number|partial|from|to)\b
+ name
+ keyword.control.exception.modifier.applescript
+
+
+ include
+ #inline
+
+
+
+
+ begin
+ \b(if)\b(?=.*\bthen\b(?!\s*(--.*?)?$))
+ beginCaptures
+
+ 1
+
+ name
+ keyword.control.if.applescript
+
+
+ end
+ (?<!¬)$
+ name
+ meta.statement.if-then.applescript
+ patterns
+
+
+ include
+ #inline
+
+
+
+
+
+ blocks.tell
+
+ patterns
+
+
+ begin
+ ^\s*(tell)\s+(?=app(lication)?\s+"(?i:textmate)")(?!.*\bto(?!\s+tell)\b)
+ captures
+
+ 1
+
+ name
+ keyword.control.tell.applescript
+
+
+ comment
+ tell Textmate
+ end
+ ^\s*(end(?:\s+tell)?)(?=\s*(--.*?)?$)
+ name
+ meta.block.tell.application.textmate.applescript
+ patterns
+
+
+ include
+ #textmate
+
+
+ include
+ #standard-suite
+
+
+ include
+ $self
+
+
+
+
+ begin
+ ^\s*(tell)\s+(?=app(lication)?\s+"(?i:finder)")(?!.*\bto(?!\s+tell)\b)
+ captures
+
+ 1
+
+ name
+ keyword.control.tell.applescript
+
+
+ comment
+ tell Finder
+ end
+ ^\s*(end(?:\s+tell)?)(?=\s*(--.*?)?$)
+ name
+ meta.block.tell.application.finder.applescript
+ patterns
+
+
+ include
+ #finder
+
+
+ include
+ #standard-suite
+
+
+ include
+ $self
+
+
+
+
+ begin
+ ^\s*(tell)\s+(?=app(lication)?\s+"(?i:system events)")(?!.*\bto(?!\s+tell)\b)
+ captures
+
+ 1
+
+ name
+ keyword.control.tell.applescript
+
+
+ comment
+ tell System Events
+ end
+ ^\s*(end(?:\s+tell)?)(?=\s*(--.*?)?$)
+ name
+ meta.block.tell.application.system-events.applescript
+ patterns
+
+
+ include
+ #system-events
+
+
+ include
+ #standard-suite
+
+
+ include
+ $self
+
+
+
+
+ begin
+ ^\s*(tell)\s+(?=app(lication)?\s+"(?i:itunes)")(?!.*\bto(?!\s+tell)\b)
+ captures
+
+ 1
+
+ name
+ keyword.control.tell.applescript
+
+
+ comment
+ tell iTunes
+ end
+ ^\s*(end(?:\s+tell)?)(?=\s*(--.*?)?$)
+ name
+ meta.block.tell.application.itunes.applescript
+ patterns
+
+
+ include
+ #itunes
+
+
+ include
+ #standard-suite
+
+
+ include
+ $self
+
+
+
+
+ begin
+ ^\s*(tell)\s+(?=app(lication)?\s+process\b)(?!.*\bto(?!\s+tell)\b)
+ captures
+
+ 1
+
+ name
+ keyword.control.tell.applescript
+
+
+ comment
+ tell generic application process
+ end
+ ^\s*(end(?:\s+tell)?)(?=\s*(--.*?)?$)
+ name
+ meta.block.tell.application-process.generic.applescript
+ patterns
+
+
+ include
+ #standard-suite
+
+
+ include
+ $self
+
+
+
+
+ begin
+ ^\s*(tell)\s+(?=app(lication)?\b)(?!.*\bto(?!\s+tell)\b)
+ captures
+
+ 1
+
+ name
+ keyword.control.tell.applescript
+
+
+ comment
+ tell generic application
+ end
+ ^\s*(end(?:\s+tell)?)(?=\s*(--.*?)?$)
+ name
+ meta.block.tell.application.generic.applescript
+ patterns
+
+
+ include
+ #standard-suite
+
+
+ include
+ $self
+
+
+
+
+ begin
+ ^\s*(tell)\s+(?!.*\bto(?!\s+tell)\b)
+ captures
+
+ 1
+
+ name
+ keyword.control.tell.applescript
+
+
+ comment
+ generic tell block
+ end
+ ^\s*(end(?:\s+tell)?)(?=\s*(--.*?)?$)
+ name
+ meta.block.tell.generic.applescript
+ patterns
+
+
+ include
+ $self
+
+
+
+
+ begin
+ ^\s*(tell)\s+(?=.*\bto\b)
+ captures
+
+ 1
+
+ name
+ keyword.control.tell.applescript
+
+
+ comment
+ tell … to statement
+ end
+ (?<!¬)$
+ name
+ meta.block.tell.generic.applescript
+ patterns
+
+
+ include
+ $self
+
+
+
+
+
+ built-in
+
+ patterns
+
+
+ include
+ #built-in.constant
+
+
+ include
+ #built-in.keyword
+
+
+ include
+ #built-in.support
+
+
+ include
+ #built-in.punctuation
+
+
+
+ built-in.constant
+
+ patterns
+
+
+ comment
+ yes/no can’t always be used as booleans, e.g. in an if() expression. But they work e.g. for boolean arguments.
+ match
+ \b(?i:true|false|yes|no)\b
+ name
+ constant.language.boolean.applescript
+
+
+ match
+ \b(?i:null|missing\s+value)\b
+ name
+ constant.language.null.applescript
+
+
+ match
+ -?\b\d+((\.(\d+\b)?)?(?i:e\+?\d*\b)?|\b)
+ name
+ constant.numeric.applescript
+
+
+ match
+ \b(?i:space|tab|return|linefeed|quote)\b
+ name
+ constant.other.text.applescript
+
+
+ match
+ \b(?i:all\s+(caps|lowercase)|bold|condensed|expanded|hidden|italic|outline|plain|shadow|small\s+caps|strikethrough|(sub|super)script|underline)\b
+ name
+ constant.other.styles.applescript
+
+
+ match
+ \b(?i:Jan(uary)?|Feb(ruary)?|Mar(ch)?|Apr(il)?|May|Jun(e)?|Jul(y)?|Aug(ust)?|Sep(tember)?|Oct(ober)?|Nov(ember)?|Dec(ember)?)\b
+ name
+ constant.other.time.month.applescript
+
+
+ match
+ \b(?i:Mon(day)?|Tue(sday)?|Wed(nesday)?|Thu(rsday)?|Fri(day)?|Sat(urday)?|Sun(day)?)\b
+ name
+ constant.other.time.weekday.applescript
+
+
+ match
+ \b(?i:AppleScript|pi|result|version|current\s+application|its?|m[ey])\b
+ name
+ constant.other.miscellaneous.applescript
+
+
+ match
+ \b(?i:text\s+item\s+delimiters|print\s+(length|depth))\b
+ name
+ variable.language.applescript
+
+
+
+ built-in.keyword
+
+ patterns
+
+
+ match
+ (&|\*|\+|-|/|÷|\^)
+ name
+ keyword.operator.arithmetic.applescript
+
+
+ match
+ (=|≠|>|<|≥|>=|≤|<=)
+ name
+ keyword.operator.comparison.applescript
+
+
+ match
+ (?ix)\b
+ (and|or|div|mod|as|not
+ |(a\s+)?(ref(\s+to)?|reference\s+to)
+ |equal(s|\s+to)|contains?|comes\s+(after|before)|(start|begin|end)s?\s+with
+ )
+ \b
+ name
+ keyword.operator.word.applescript
+
+
+ comment
+ In double quotes so we can use a single quote in the keywords.
+ match
+ (?ix)\b
+ (is(n't|\s+not)?(\s+(equal(\s+to)?|(less|greater)\s+than(\s+or\s+equal(\s+to)?)?|in|contained\s+by))?
+ |does(n't|\s+not)\s+(equal|come\s+(before|after)|contain)
+ )
+ \b
+ name
+ keyword.operator.word.applescript
+
+
+ match
+ \b(?i:some|every|whose|where|that|id|index|\d+(st|nd|rd|th)|first|second|third|fourth|fifth|sixth|seventh|eighth|ninth|tenth|last|front|back|middle|named|beginning|end|from|to|thr(u|ough)|before|(front|back|beginning|end)\s+of|after|behind|in\s+(front|back|beginning|end)\s+of)\b
+ name
+ keyword.operator.reference.applescript
+
+
+ match
+ \b(?i:continue|return|exit(\s+repeat)?)\b
+ name
+ keyword.control.loop.applescript
+
+
+ match
+ \b(?i:about|above|after|against|and|apart\s+from|around|as|aside\s+from|at|back|before|beginning|behind|below|beneath|beside|between|but|by|considering|contain|contains|contains|copy|div|does|eighth|else|end|equal|equals|error|every|false|fifth|first|for|fourth|from|front|get|given|global|if|ignoring|in|instead\s+of|into|is|it|its|last|local|me|middle|mod|my|ninth|not|of|on|onto|or|out\s+of|over|prop|property|put|ref|reference|repeat|returning|script|second|set|seventh|since|sixth|some|tell|tenth|that|the|then|third|through|thru|timeout|times|to|transaction|true|try|until|where|while|whose|with|without)\b
+ name
+ keyword.other.applescript
+
+
+
+ built-in.punctuation
+
+ patterns
+
+
+ match
+ ¬
+ name
+ punctuation.separator.continuation.line.applescript
+
+
+ comment
+ the : in property assignments
+ match
+ :
+ name
+ punctuation.separator.key-value.property.applescript
+
+
+ comment
+ the parentheses in groups
+ match
+ [()]
+ name
+ punctuation.section.group.applescript
+
+
+
+ built-in.support
+
+ patterns
+
+
+ match
+ \b(?i:POSIX\s+path|frontmost|id|name|running|version|days?|weekdays?|months?|years?|time|date\s+string|time\s+string|length|rest|reverse|items?|contents|quoted\s+form|characters?|paragraphs?|words?)\b
+ name
+ support.function.built-in.property.applescript
+
+
+ match
+ \b(?i:activate|log|clipboard\s+info|set\s+the\s+clipboard\s+to|the\s+clipboard|info\s+for|list\s+(disks|folder)|mount\s+volume|path\s+to(\s+resource)?|close\s+access|get\s+eof|open\s+for\s+access|read|set\s+eof|write|open\s+location|current\s+date|do\s+shell\s+script|get\s+volume\s+settings|random\s+number|round|set\s+volume|system\s+(attribute|info)|time\s+to\s+GMT|load\s+script|run\s+script|scripting\s+components|store\s+script|copy|count|get|launch|run|set|ASCII\s+(character|number)|localized\s+string|offset|summarize|beep|choose\s+(application|color|file(\s+name)?|folder|from\s+list|remote\s+application|URL)|delay|display\s+(alert|dialog)|say)\b
+ name
+ support.function.built-in.command.applescript
+
+
+ match
+ \b(?i:get|run)\b
+ name
+ support.function.built-in.applescript
+
+
+ match
+ \b(?i:anything|data|text|upper\s+case|propert(y|ies))\b
+ name
+ support.class.built-in.applescript
+
+
+ match
+ \b(?i:alias|class)(es)?\b
+ name
+ support.class.built-in.applescript
+
+
+ match
+ \b(?i:app(lication)?|boolean|character|constant|date|event|file(\s+specification)?|handler|integer|item|keystroke|linked\s+list|list|machine|number|picture|preposition|POSIX\s+file|real|record|reference(\s+form)?|RGB\s+color|script|sound|text\s+item|type\s+class|vector|writing\s+code(\s+info)?|zone|((international|styled(\s+(Clipboard|Unicode))?|Unicode)\s+)?text|((C|encoded|Pascal)\s+)?string)s?\b
+ name
+ support.class.built-in.applescript
+
+
+ match
+ (?ix)\b
+ ( (cubic\s+(centi)?|square\s+(kilo)?|centi|kilo)met(er|re)s
+ | square\s+(yards|feet|miles)|cubic\s+(yards|feet|inches)|miles|inches
+ | lit(re|er)s|gallons|quarts
+ | (kilo)?grams|ounces|pounds
+ | degrees\s+(Celsius|Fahrenheit|Kelvin)
+ )
+ \b
+ name
+ support.class.built-in.unit.applescript
+
+
+ match
+ \b(?i:seconds|minutes|hours|days)\b
+ name
+ support.class.built-in.time.applescript
+
+
+
+ comments
+
+ patterns
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.definition.comment.applescript
+
+
+ match
+ ^\s*(#!).*$\n?
+ name
+ comment.line.number-sign.applescript
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.definition.comment.applescript
+
+
+ match
+ (--).*$\n?
+ name
+ comment.line.double-dash.applescript
+
+
+ begin
+ \(\*
+ captures
+
+ 0
+
+ name
+ punctuation.definition.comment.applescript
+
+
+ end
+ \*\)
+ name
+ comment.block.applescript
+ patterns
+
+
+ include
+ #comments.nested
+
+
+
+
+
+ comments.nested
+
+ patterns
+
+
+ begin
+ \(\*
+ captures
+
+ 0
+
+ name
+ punctuation.definition.comment.applescript
+
+
+ end
+ \*\)
+ name
+ comment.block.applescript
+ patterns
+
+
+ include
+ #comments.nested
+
+
+
+
+
+ data-structures
+
+ patterns
+
+
+ begin
+ (\{)
+ captures
+
+ 1
+
+ name
+ punctuation.section.array.applescript
+
+
+ comment
+ We cannot necessarily distinguish "records" from "arrays", and so this could be either.
+ end
+ (\})
+ name
+ meta.array.applescript
+ patterns
+
+
+ captures
+
+ 1
+
+ name
+ constant.other.key.applescript
+
+ 2
+
+ name
+ meta.identifier.applescript
+
+ 3
+
+ name
+ punctuation.definition.identifier.applescript
+
+ 4
+
+ name
+ punctuation.definition.identifier.applescript
+
+ 5
+
+ name
+ punctuation.separator.key-value.applescript
+
+
+ match
+ (\w+|((\|)[^|\n]*(\|)))\s*(:)
+
+
+ match
+ :
+ name
+ punctuation.separator.key-value.applescript
+
+
+ match
+ ,
+ name
+ punctuation.separator.array.applescript
+
+
+ include
+ #inline
+
+
+
+
+ begin
+ (?:(?<=application )|(?<=app ))(")
+ captures
+
+ 1
+
+ name
+ punctuation.definition.string.applescript
+
+
+ end
+ (")
+ name
+ string.quoted.double.application-name.applescript
+ patterns
+
+
+ match
+ \\.
+ name
+ constant.character.escape.applescript
+
+
+
+
+ begin
+ (")
+ captures
+
+ 1
+
+ name
+ punctuation.definition.string.applescript
+
+
+ end
+ (")
+ name
+ string.quoted.double.applescript
+ patterns
+
+
+ match
+ \\.
+ name
+ constant.character.escape.applescript
+
+
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.definition.identifier.applescript
+
+ 2
+
+ name
+ punctuation.definition.identifier.applescript
+
+
+ match
+ (\|)[^|\n]*(\|)
+ name
+ meta.identifier.applescript
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.definition.data.applescript
+
+ 2
+
+ name
+ support.class.built-in.applescript
+
+ 3
+
+ name
+ storage.type.utxt.applescript
+
+ 4
+
+ name
+ string.unquoted.data.applescript
+
+ 5
+
+ name
+ punctuation.definition.data.applescript
+
+ 6
+
+ name
+ keyword.operator.applescript
+
+ 7
+
+ name
+ support.class.built-in.applescript
+
+
+ match
+ («)(data) (utxt|utf8)([[:xdigit:]]*)(»)(?:\s+(as)\s+(?i:Unicode\s+text))?
+ name
+ constant.other.data.utxt.applescript
+
+
+ begin
+ («)(\w+)\b(?=\s)
+ beginCaptures
+
+ 1
+
+ name
+ punctuation.definition.data.applescript
+
+ 2
+
+ name
+ support.class.built-in.applescript
+
+
+ end
+ (»)
+ endCaptures
+
+ 1
+
+ name
+ punctuation.definition.data.applescript
+
+
+ name
+ constant.other.data.raw.applescript
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.definition.data.applescript
+
+ 2
+
+ name
+ punctuation.definition.data.applescript
+
+
+ match
+ («)[^»]*(»)
+ name
+ invalid.illegal.data.applescript
+
+
+
+ finder
+
+ patterns
+
+
+ match
+ \b(item|container|(computer|disk|trash)-object|disk|folder|((alias|application|document|internet location) )?file|clipping|package)s?\b
+ name
+ support.class.finder.items.applescript
+
+
+ match
+ \b((Finder|desktop|information|preferences|clipping) )windows?\b
+ name
+ support.class.finder.window-classes.applescript
+
+
+ match
+ \b(preferences|(icon|column|list) view options|(label|column|alias list)s?)\b
+ name
+ support.class.finder.type-definitions.applescript
+
+
+ match
+ \b(copy|find|sort|clean up|eject|empty( trash)|erase|reveal|update)\b
+ name
+ support.function.finder.items.applescript
+
+
+ match
+ \b(insertion location|product version|startup disk|desktop|trash|home|computer container|finder preferences)\b
+ name
+ support.constant.finder.applescript
+
+
+ match
+ \b(visible)\b
+ name
+ support.variable.finder.applescript
+
+
+
+ inline
+
+ patterns
+
+
+ include
+ #comments
+
+
+ include
+ #data-structures
+
+
+ include
+ #built-in
+
+
+ include
+ #standardadditions
+
+
+
+ itunes
+
+ patterns
+
+
+ match
+ \b(artwork|application|encoder|EQ preset|item|source|visual|(EQ |browser )?window|((audio CD|device|shared|URL|file) )?track|playlist window|((audio CD|device|radio tuner|library|folder|user) )?playlist)s?\b
+ name
+ support.class.itunes.applescript
+
+
+ match
+ \b(add|back track|convert|fast forward|(next|previous) track|pause|play(pause)?|refresh|resume|rewind|search|stop|update|eject|subscribe|update(Podcast|AllPodcasts)|download)\b
+ name
+ support.function.itunes.applescript
+
+
+ match
+ \b(current (playlist|stream (title|URL)|track)|player state)\b
+ name
+ support.constant.itunes.applescript
+
+
+ match
+ \b(current (encoder|EQ preset|visual)|EQ enabled|fixed indexing|full screen|mute|player position|sound volume|visuals enabled|visual size)\b
+ name
+ support.variable.itunes.applescript
+
+
+
+ standard-suite
+
+ patterns
+
+
+ match
+ \b(colors?|documents?|items?|windows?)\b
+ name
+ support.class.standard-suite.applescript
+
+
+ match
+ \b(close|count|delete|duplicate|exists|make|move|open|print|quit|save|activate|select|data size)\b
+ name
+ support.function.standard-suite.applescript
+
+
+ match
+ \b(name|frontmost|version)\b
+ name
+ support.constant.standard-suite.applescript
+
+
+ match
+ \b(selection)\b
+ name
+ support.variable.standard-suite.applescript
+
+
+ match
+ \b(attachments?|attribute runs?|characters?|paragraphs?|texts?|words?)\b
+ name
+ support.class.text-suite.applescript
+
+
+
+ standardadditions
+
+ patterns
+
+
+ match
+ \b((alert|dialog) reply)\b
+ name
+ support.class.standardadditions.user-interaction.applescript
+
+
+ match
+ \b(file information)\b
+ name
+ support.class.standardadditions.file.applescript
+
+
+ match
+ \b(POSIX files?|system information|volume settings)\b
+ name
+ support.class.standardadditions.miscellaneous.applescript
+
+
+ match
+ \b(URLs?|internet address(es)?|web pages?|FTP items?)\b
+ name
+ support.class.standardadditions.internet.applescript
+
+
+ match
+ \b(info for|list (disks|folder)|mount volume|path to( resource)?)\b
+ name
+ support.function.standardadditions.file.applescript
+
+
+ match
+ \b(beep|choose (application|color|file( name)?|folder|from list|remote application|URL)|delay|display (alert|dialog)|say)\b
+ name
+ support.function.standardadditions.user-interaction.applescript
+
+
+ match
+ \b(ASCII (character|number)|localized string|offset|summarize)\b
+ name
+ support.function.standardadditions.string.applescript
+
+
+ match
+ \b(set the clipboard to|the clipboard|clipboard info)\b
+ name
+ support.function.standardadditions.clipboard.applescript
+
+
+ match
+ \b(open for access|close access|read|write|get eof|set eof)\b
+ name
+ support.function.standardadditions.file-i-o.applescript
+
+
+ match
+ \b((load|store|run) script|scripting components)\b
+ name
+ support.function.standardadditions.scripting.applescript
+
+
+ match
+ \b(current date|do shell script|get volume settings|random number|round|set volume|system attribute|system info|time to GMT)\b
+ name
+ support.function.standardadditions.miscellaneous.applescript
+
+
+ match
+ \b(opening folder|(closing|moving) folder window for|adding folder items to|removing folder items from)\b
+ name
+ support.function.standardadditions.folder-actions.applescript
+
+
+ match
+ \b(open location|handle CGI request)\b
+ name
+ support.function.standardadditions.internet.applescript
+
+
+
+ system-events
+
+ patterns
+
+
+ match
+ \b(audio (data|file))\b
+ name
+ support.class.system-events.audio-file.applescript
+
+
+ match
+ \b(alias(es)?|(Classic|local|network|system|user) domain objects?|disk( item)?s?|domains?|file( package)?s?|folders?|items?)\b
+ name
+ support.class.system-events.disk-folder-file.applescript
+
+
+ match
+ \b(delete|open|move)\b
+ name
+ support.function.system-events.disk-folder-file.applescript
+
+
+ match
+ \b(folder actions?|scripts?)\b
+ name
+ support.class.system-events.folder-actions.applescript
+
+
+ match
+ \b(attach action to|attached scripts|edit action of|remove action from)\b
+ name
+ support.function.system-events.folder-actions.applescript
+
+
+ match
+ \b(movie data|movie file)\b
+ name
+ support.class.system-events.movie-file.applescript
+
+
+ match
+ \b(log out|restart|shut down|sleep)\b
+ name
+ support.function.system-events.power.applescript
+
+
+ match
+ \b(((application |desk accessory )?process|(check|combo )?box)(es)?|(action|attribute|browser|(busy|progress|relevance) indicator|color well|column|drawer|group|grow area|image|incrementor|list|menu( bar)?( item)?|(menu |pop up |radio )?button|outline|(radio|tab|splitter) group|row|scroll (area|bar)|sheet|slider|splitter|static text|table|text (area|field)|tool bar|UI element|window)s?)\b
+ name
+ support.class.system-events.processes.applescript
+
+
+ match
+ \b(click|key code|keystroke|perform|select)\b
+ name
+ support.function.system-events.processes.applescript
+
+
+ match
+ \b(property list (file|item))\b
+ name
+ support.class.system-events.property-list.applescript
+
+
+ match
+ \b(annotation|QuickTime (data|file)|track)s?\b
+ name
+ support.class.system-events.quicktime-file.applescript
+
+
+ match
+ \b((abort|begin|end) transaction)\b
+ name
+ support.function.system-events.system-events.applescript
+
+
+ match
+ \b(XML (attribute|data|element|file)s?)\b
+ name
+ support.class.system-events.xml.applescript
+
+
+ match
+ \b(print settings|users?|login items?)\b
+ name
+ support.class.sytem-events.other.applescript
+
+
+
+ textmate
+
+ patterns
+
+
+ match
+ \b(print settings)\b
+ name
+ support.class.textmate.applescript
+
+
+ match
+ \b(get url|insert|reload bundles)\b
+ name
+ support.function.textmate.applescript
+
+
+
+
+ scopeName
+ source.applescript
+ uuid
+ 777CF925-14B9-428E-B07B-17FAAB8FA27E
+
+
diff --git a/sublime/Packages/AppleScript/AppleScript.tmLanguage.cache b/sublime/Packages/AppleScript/AppleScript.tmLanguage.cache
new file mode 100644
index 0000000..db65741
Binary files /dev/null and b/sublime/Packages/AppleScript/AppleScript.tmLanguage.cache differ
diff --git a/sublime/Packages/Batch File/Batch File.tmLanguage b/sublime/Packages/Batch File/Batch File.tmLanguage
new file mode 100644
index 0000000..2a7752e
--- /dev/null
+++ b/sublime/Packages/Batch File/Batch File.tmLanguage
@@ -0,0 +1,111 @@
+
+
+
+
+ uuid
+ E07EC438-7B75-4437-8AA1-DA94C1E6EACC
+ patterns
+
+
+ name
+ keyword.command.dosbatch
+ match
+ \b(?i)(?:append|assoc|at|attrib|break|cacls|cd|chcp|chdir|chkdsk|chkntfs|cls|cmd|color|comp|compact|convert|copy|date|del|dir|diskcomp|diskcopy|doskey|echo|endlocal|erase|fc|find|findstr|format|ftype|graftabl|help|keyb|label|md|mkdir|mode|more|move|path|pause|popd|print|prompt|pushd|rd|recover|rem|ren|rename|replace|restore|rmdir|set|setlocal|shift|sort|start|subst|time|title|tree|type|ver|verify|vol|xcopy)\b
+
+
+ name
+ keyword.control.statement.dosbatch
+ match
+ \b(?i)(?:goto|call|exit)\b
+
+
+ name
+ keyword.control.conditional.if.dosbatch
+ match
+ \b(?i)if\s+((not)\s+)(exist|defined|errorlevel|cmdextversion)\b
+
+
+ name
+ keyword.control.conditional.dosbatch
+ match
+ \b(?i)(?:if|else)\b
+
+
+ name
+ keyword.control.repeat.dosbatch
+ match
+ \b(?i)for\b
+
+
+ name
+ keyword.operator.dosbatch
+ match
+ \b(?:EQU|NEQ|LSS|LEQ|GTR|GEQ)\b
+
+
+ captures
+
+ 1
+
+ name
+ keyword.command.rem.dosbatch
+
+
+ name
+ comment.line.rem.dosbatch
+ match
+ (?:^|\s)((?i)rem)(?:$|\s.*$)
+
+
+ name
+ comment.line.colons.dosbatch
+ match
+ \s*:\s*:.*$
+
+
+ begin
+ "
+ endCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.end.shell
+
+
+ beginCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.begin.shell
+
+
+ name
+ string.quoted.double.dosbatch
+ end
+ "
+
+
+ name
+ keyword.operator.pipe.dosbatch
+ match
+ [|]
+
+
+ name
+ keyword.operator.redirect.shell
+ match
+ &>|\d*>&\d*|\d*(>>|>|<)|\d*<&|\d*<>
+
+
+ name
+ Batch File
+ scopeName
+ source.dosbatch
+ fileTypes
+
+ bat
+
+
+
\ No newline at end of file
diff --git a/sublime/Packages/Batch File/Batch File.tmLanguage.cache b/sublime/Packages/Batch File/Batch File.tmLanguage.cache
new file mode 100644
index 0000000..1f6790a
Binary files /dev/null and b/sublime/Packages/Batch File/Batch File.tmLanguage.cache differ
diff --git a/sublime/Packages/C#/Build.tmLanguage b/sublime/Packages/C#/Build.tmLanguage
new file mode 100644
index 0000000..55191b4
--- /dev/null
+++ b/sublime/Packages/C#/Build.tmLanguage
@@ -0,0 +1,142 @@
+
+
+
+
+ fileTypes
+
+ build
+
+ foldingStartMarker
+ <[^!?/>]+|<!--
+ foldingStopMarker
+ />|</[^?>]+|-->
+ name
+ NAnt Build File
+ patterns
+
+
+ begin
+ <!--
+ captures
+
+ 0
+
+ name
+ punctuation.definition.comment.nant
+
+
+ end
+ -->
+ name
+ comment.block.nant
+
+
+ begin
+ (</?)([-_a-zA-Z0-9:]+)
+ captures
+
+ 1
+
+ name
+ punctuation.definition.tag.nant
+
+ 2
+
+ name
+ entity.name.tag.nant
+
+
+ end
+ (/?>)
+ name
+ meta.tag.nant
+ patterns
+
+
+ match
+ ([a-zA-Z-]+)
+ name
+ entity.other.attribute-name.nant
+
+
+ begin
+ "
+ beginCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.begin.nant
+
+
+ end
+ "
+ endCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.end.nant
+
+
+ name
+ string.quoted.double.nant
+
+
+ begin
+ '
+ beginCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.begin.nant
+
+
+ end
+ '
+ endCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.end.nant
+
+
+ name
+ string.quoted.single.nant
+
+
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.definition.constant.nant
+
+ 3
+
+ name
+ punctuation.definition.constant.nant
+
+
+ match
+ (&)([a-zA-Z]+|#[0-9]+|#x[0-9a-fA-F]+)(;)
+ name
+ constant.character.entity.nant
+
+
+ match
+ &
+ name
+ invalid.illegal.bad-ampersand.nant
+
+
+ scopeName
+ source.nant-build
+ uuid
+ 1BA72668-707C-11D9-A928-000D93589AF6
+
+
diff --git a/sublime/Packages/C#/Build.tmLanguage.cache b/sublime/Packages/C#/Build.tmLanguage.cache
new file mode 100644
index 0000000..95d8670
Binary files /dev/null and b/sublime/Packages/C#/Build.tmLanguage.cache differ
diff --git a/sublime/Packages/C#/C#.tmLanguage b/sublime/Packages/C#/C#.tmLanguage
new file mode 100644
index 0000000..4d6bd9b
--- /dev/null
+++ b/sublime/Packages/C#/C#.tmLanguage
@@ -0,0 +1,530 @@
+
+
+
+
+ fileTypes
+
+ cs
+
+ foldingStartMarker
+ ^\s*/\*|^(?![^{]*?//|[^{]*?/\*(?!.*?\*/.*?\{)).*?\{\s*($|//|/\*(?!.*?\*/.*\S))
+ foldingStopMarker
+ ^\s*\*/|^\s*\}
+ keyEquivalent
+ ^~C
+ name
+ C#
+ patterns
+
+
+ begin
+ ///
+ captures
+
+ 0
+
+ name
+ punctuation.definition.comment.source.cs
+
+
+ end
+ $\n?
+ name
+ comment.block.documentation.source.cs
+ patterns
+
+
+ begin
+ (</?)(?:([-_a-zA-Z0-9]+)((:)))?([-_a-zA-Z0-9:]+)
+ captures
+
+ 1
+
+ name
+ punctuation.definition.tag.source.cs
+
+ 2
+
+ name
+ entity.name.tag.namespace.source.cs
+
+ 3
+
+ name
+ entity.name.tag.source.cs
+
+ 4
+
+ name
+ punctuation.separator.namespace.source.cs
+
+ 5
+
+ name
+ entity.name.tag.localname.source.cs
+
+
+ end
+ (/?>)
+ name
+ keyword.other.documentation.source.cs
+ patterns
+
+
+ captures
+
+ 1
+
+ name
+ entity.other.attribute-name.namespace.source.cs
+
+ 2
+
+ name
+ entity.other.attribute-name.source.cs
+
+ 3
+
+ name
+ punctuation.separator.namespace.source.cs
+
+ 4
+
+ name
+ entity.other.attribute-name.localname.source.cs
+
+
+ match
+ (?:([-_a-zA-Z0-9]+)((:)))?([_a-zA-Z-]+)=
+
+
+ include
+ #doubleQuotedString
+
+
+ include
+ #singleQuotedString
+
+
+
+
+
+
+ include
+ #comments
+
+
+ begin
+ (?x)^\s*
+((?:\b(?:new|public|protected|internal|private|abstract|sealed|static)\b\s)*)
+(class)\s+
+([A-Za-z_]\w+)\b
+ captures
+
+ 1
+
+ name
+ storage.modifier.source.cs
+
+ 2
+
+ name
+ storage.type.source.cs
+
+ 3
+
+ name
+ entity.name.type.class.source.cs
+
+
+ end
+ {
+ name
+ meta.definition.class.source.cs
+ patterns
+
+
+ include
+ #classInheritance
+
+
+
+
+
+
+ match
+ \b(true|false|null|this|base)\b
+ name
+ constant.language.source.cs
+
+
+ match
+ \b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\b
+ name
+ constant.numeric.source.cs
+
+
+ match
+ \b(if|else|while|for|foreach|do|return|continue|break|switch|case|default|goto|throw|try|catch|finally|lock|yield)\b
+ name
+ keyword.control.source.cs
+
+
+ match
+ \b(new|is|checked|unchecked|typeof|sizeof|override|in|out|ref|readonly|params|stackalloc|as)\b
+ name
+ keyword.operator.source.cs
+
+
+ match
+ \b(event|delegate|explicit|implicit|in|set|get)\b
+ name
+ keyword.other.source.cs
+
+
+ match
+ \b(internal|public|protected|private|static|const|new|sealed|abstract|override|extern|unsafe|readonly|volatile|operator)\b
+ name
+ storage.modifier.source.cs
+
+
+ include
+ #doubleQuotedStringLiteral
+
+
+ include
+ #doubleQuotedString
+
+
+ include
+ #singleQuotedString
+
+
+ captures
+
+ 1
+
+ name
+ keyword.other.using.source.cs
+
+ 2
+
+ name
+ entity.name.type.package.source.cs
+
+
+ match
+ ^\s*(using)\s+([^ ;]*);
+ name
+ meta.keyword.using.source.cs
+
+
+ include
+ #builtinTypes
+
+
+ captures
+
+ 1
+
+ name
+ keyword.other.namespace.source.cs
+
+ 2
+
+ name
+ entity.name.type.namespace.source.cs
+
+
+ match
+ ^\s*(namespace)\s+([^ ]+)(?:\s*{)?$
+ name
+ meta.keyword.namespace.source.cs
+
+
+ captures
+
+ 2
+
+ name
+ keyword.control.import.source.cs
+
+
+ match
+ ^(#)\s*(if|else|elif|endif|define|undef|warning|error|line|region|endregion)\b
+ name
+ meta.preprocessor.source.cs
+
+
+ repository
+
+ builtinTypes
+
+ patterns
+
+
+ match
+ \b(bool|byte|sbyte|char|decimal|double|float|int|uint|long|ulong|object|short|ushort|string|void|class|struct|enum|interface)\b
+ name
+ storage.type.source.cs
+
+
+
+ classInheritance
+
+ patterns
+
+
+ begin
+ :
+ end
+ (?={)
+ patterns
+
+
+ captures
+
+ 1
+
+ name
+ storage.type.source.cs
+
+
+ match
+ \s*,?([A-Za-z_]\w*)\b
+
+
+
+
+
+ comments
+
+ patterns
+
+
+ begin
+ /\*
+ captures
+
+ 0
+
+ name
+ punctuation.definition.comment.source.cs
+
+
+ end
+ \*/\n?
+ name
+ comment.block.source.cs
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.definition.comment.source.cs
+
+
+ match
+ (//).*$\n?
+ name
+ comment.line.double-slash.source.cs
+
+
+
+ doubleQuotedString
+
+ begin
+ "
+ beginCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.begin.source.cs
+
+
+ end
+ "
+ endCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.end.source.cs
+
+
+ name
+ string.quoted.double.source.cs
+ patterns
+
+
+ match
+ \\.
+ name
+ constant.character.escape.source.cs
+
+
+
+ doubleQuotedStringLiteral
+
+ captures
+
+ 0
+
+ name
+ punctuation.definition.string.begin.source.cs
+
+
+ match
+ @"([^"]|"")*"
+ name
+ string.quoted.double.literal.source.cs
+
+ singleQuotedString
+
+ begin
+ '
+ beginCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.begin.source.cs
+
+
+ end
+ '
+ endCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.end.source.cs
+
+
+ name
+ string.quoted.single.xml
+ patterns
+
+
+ match
+ \\.
+ name
+ constant.character.escape.source.cs
+
+
+
+ statementRemainder
+
+ patterns
+
+
+ begin
+ \(
+ end
+ (?=\))
+ name
+ meta.definition.param-list.source.cs
+ patterns
+
+
+ include
+ #builtinTypes
+
+
+
+
+
+
+ scopeName
+ source.cs
+ uuid
+ 1BA75B32-707C-11D9-A928-000D93589AF6
+
+
diff --git a/sublime/Packages/C#/C#.tmLanguage.cache b/sublime/Packages/C#/C#.tmLanguage.cache
new file mode 100644
index 0000000..0fc0d9e
Binary files /dev/null and b/sublime/Packages/C#/C#.tmLanguage.cache differ
diff --git a/sublime/Packages/C++/#ifndef-#define-#endif.sublime-snippet b/sublime/Packages/C++/#ifndef-#define-#endif.sublime-snippet
new file mode 100644
index 0000000..bdf483b
--- /dev/null
+++ b/sublime/Packages/C++/#ifndef-#define-#endif.sublime-snippet
@@ -0,0 +1,8 @@
+
+ #ifndef … #define … #endif
+
+ def
+ source.c, source.c++, source.objc, source.objc++
+
diff --git a/sublime/Packages/C++/#include-(inc angle).sublime-snippet b/sublime/Packages/C++/#include-(inc angle).sublime-snippet
new file mode 100644
index 0000000..27b9b75
--- /dev/null
+++ b/sublime/Packages/C++/#include-(inc angle).sublime-snippet
@@ -0,0 +1,6 @@
+
+ #include <…>
+ ]]>
+ Inc
+ source.c, source.objc, source.c++, source.objc++
+
diff --git a/sublime/Packages/C++/#include-(inc).sublime-snippet b/sublime/Packages/C++/#include-(inc).sublime-snippet
new file mode 100644
index 0000000..098dde9
--- /dev/null
+++ b/sublime/Packages/C++/#include-(inc).sublime-snippet
@@ -0,0 +1,6 @@
+
+ #include "…"
+
+ inc
+ source.c, source.objc, source.c++, source.objc++
+
diff --git a/sublime/Packages/C++/$1.begin()-$1.end()-(beginend).sublime-snippet b/sublime/Packages/C++/$1.begin()-$1.end()-(beginend).sublime-snippet
new file mode 100644
index 0000000..a5bb6c3
--- /dev/null
+++ b/sublime/Packages/C++/$1.begin()-$1.end()-(beginend).sublime-snippet
@@ -0,0 +1,6 @@
+
+ $1.begin(), $1.end()
+ )?$/(?2::(?1:>:.))/}begin(), ${1:v}${1/^.*?(-)?(>)?$/(?2::(?1:>:.))/}end()]]>
+ beginend
+ source.c++, source.objc++
+
diff --git a/sublime/Packages/C++/010-main()-(main).sublime-snippet b/sublime/Packages/C++/010-main()-(main).sublime-snippet
new file mode 100644
index 0000000..511c95c
--- /dev/null
+++ b/sublime/Packages/C++/010-main()-(main).sublime-snippet
@@ -0,0 +1,10 @@
+
+ main()
+
+ main
+ source.c, source.objc, source.c++, source.objc++
+
diff --git a/sublime/Packages/C++/030-for-int-loop-(fori).sublime-snippet b/sublime/Packages/C++/030-for-int-loop-(fori).sublime-snippet
new file mode 100644
index 0000000..30a674b
--- /dev/null
+++ b/sublime/Packages/C++/030-for-int-loop-(fori).sublime-snippet
@@ -0,0 +1,9 @@
+
+ For Loop
+
+ for
+ source.c, source.objc, source.c++, source.objc++
+
diff --git a/sublime/Packages/C++/C++.sublime-build b/sublime/Packages/C++/C++.sublime-build
new file mode 100644
index 0000000..f4f7d4f
--- /dev/null
+++ b/sublime/Packages/C++/C++.sublime-build
@@ -0,0 +1,14 @@
+{
+ "cmd": ["g++", "${file}", "-o", "${file_path}/${file_base_name}"],
+ "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
+ "working_dir": "${file_path}",
+ "selector": "source.c, source.c++",
+
+ "variants":
+ [
+ {
+ "name": "Run",
+ "cmd": ["bash", "-c", "g++ '${file}' -o '${file_path}/${file_base_name}' && '${file_path}/${file_base_name}'"]
+ }
+ ]
+}
diff --git a/sublime/Packages/C++/C++.sublime-settings b/sublime/Packages/C++/C++.sublime-settings
new file mode 100644
index 0000000..d78414e
--- /dev/null
+++ b/sublime/Packages/C++/C++.sublime-settings
@@ -0,0 +1,3 @@
+{
+ "extensions": ["cpp", "cc", "cxx", "c++", "h", "hpp", "hxx", "h++", "inl", "ipp"]
+}
diff --git a/sublime/Packages/C++/C++.tmLanguage b/sublime/Packages/C++/C++.tmLanguage
new file mode 100644
index 0000000..e6647c1
--- /dev/null
+++ b/sublime/Packages/C++/C++.tmLanguage
@@ -0,0 +1,491 @@
+
+
+
+
+ comment
+ I don't think anyone uses .hp. .cp tends to be paired with .h. (I could be wrong. :) -- chris
+ fileTypes
+
+ cpp
+ cc
+ cp
+ cxx
+ c++
+ C
+ h
+ hh
+ hpp
+ hxx
+ h++
+ inl
+ ipp
+
+ firstLineMatch
+ -\*- C\+\+ -\*-
+ foldingStartMarker
+ (?x)
+ /\*\*(?!\*)
+ |^(?![^{]*?//|[^{]*?/\*(?!.*?\*/.*?\{)).*?\{\s*($|//|/\*(?!.*?\*/.*\S))
+
+ foldingStopMarker
+ (?<!\*)\*\*/|^\s*\}
+ keyEquivalent
+ ^~C
+ name
+ C++
+ patterns
+
+
+ include
+ #special_block
+
+
+ include
+ source.c
+
+
+ match
+ \b(friend|explicit|virtual)\b
+ name
+ storage.modifier.c++
+
+
+ match
+ \b(private:|protected:|public:)
+ name
+ storage.modifier.c++
+
+
+ match
+ \b(catch|operator|try|throw|using)\b
+ name
+ keyword.control.c++
+
+
+ match
+ \bdelete\b(\s*\[\])?|\bnew\b(?!])
+ name
+ keyword.control.c++
+
+
+ comment
+ common C++ instance var naming idiom -- fMemberName
+ match
+ \b(f|m)[A-Z]\w*\b
+ name
+ variable.other.readwrite.member.c++
+
+
+ match
+ \b(this)\b
+ name
+ variable.language.c++
+
+
+ match
+ \btemplate\b\s*
+ name
+ storage.type.template.c++
+
+
+ match
+ \b(const_cast|dynamic_cast|reinterpret_cast|static_cast)\b\s*
+ name
+ keyword.operator.cast.c++
+
+
+ match
+ \b(and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq)\b
+ name
+ keyword.operator.c++
+
+
+ match
+ \b(class|wchar_t)\b
+ name
+ storage.type.c++
+
+
+ match
+ \b(export|mutable|typename)\b
+ name
+ storage.modifier.c++
+
+
+ begin
+ (?x)
+ (?: ^ # begin-of-line
+ | (?: (?<!else|new|=) ) # or word + space before name
+ )
+ ((?:[A-Za-z_][A-Za-z0-9_]*::)*+~[A-Za-z_][A-Za-z0-9_]*) # actual name
+ \s*(\() # start bracket or end-of-line
+
+ beginCaptures
+
+ 1
+
+ name
+ entity.name.function.c++
+
+ 2
+
+ name
+ punctuation.definition.parameters.c
+
+
+ end
+ \)
+ endCaptures
+
+ 0
+
+ name
+ punctuation.definition.parameters.c
+
+
+ name
+ meta.function.destructor.c++
+ patterns
+
+
+ include
+ $base
+
+
+
+
+ begin
+ (?x)
+ (?: ^ # begin-of-line
+ | (?: (?<!else|new|=) ) # or word + space before name
+ )
+ ((?:[A-Za-z_][A-Za-z0-9_]*::)*+~[A-Za-z_][A-Za-z0-9_]*) # actual name
+ \s*(\() # terminating semi-colon
+
+ beginCaptures
+
+ 1
+
+ name
+ entity.name.function.c++
+
+ 2
+
+ name
+ punctuation.definition.parameters.c
+
+
+ end
+ \)
+ endCaptures
+
+ 0
+
+ name
+ punctuation.definition.parameters.c
+
+
+ name
+ meta.function.destructor.prototype.c++
+ patterns
+
+
+ include
+ $base
+
+
+
+
+ repository
+
+ angle_brackets
+
+ begin
+ <
+ end
+ >
+ name
+ meta.angle-brackets.c++
+ patterns
+
+
+ include
+ #angle_brackets
+
+
+ include
+ $base
+
+
+
+ block
+
+ begin
+ \{
+ end
+ \}
+ name
+ meta.block.c++
+ patterns
+
+
+ captures
+
+ 1
+
+ name
+ support.function.any-method.c
+
+ 2
+
+ name
+ punctuation.definition.parameters.c
+
+
+ match
+ (?x)
+ (
+ (?!while|for|do|if|else|switch|catch|enumerate|return|r?iterate)(?: \b[A-Za-z_][A-Za-z0-9_]*+\b | :: )*+ # actual name
+ )
+ \s*(\()
+ name
+ meta.function-call.c
+
+
+ include
+ $base
+
+
+
+ constructor
+
+ patterns
+
+
+ begin
+ (?x)
+ (?: ^\s*) # begin-of-line
+ ((?!while|for|do|if|else|switch|catch|enumerate|r?iterate)[A-Za-z_][A-Za-z0-9_:]*) # actual name
+ \s*(\() # start bracket or end-of-line
+
+ beginCaptures
+
+ 1
+
+ name
+ entity.name.function.c++
+
+ 2
+
+ name
+ punctuation.definition.parameters.c
+
+
+ end
+ \)
+ endCaptures
+
+ 0
+
+ name
+ punctuation.definition.parameters.c
+
+
+ name
+ meta.function.constructor.c++
+ patterns
+
+
+ include
+ $base
+
+
+
+
+ begin
+ (?x)
+ (:) # begin-of-line
+ ((?=\s*[A-Za-z_][A-Za-z0-9_:]* # actual name
+ \s*(\())) # start bracket or end-of-line
+
+ beginCaptures
+
+ 1
+
+ name
+ punctuation.definition.parameters.c
+
+
+ end
+ (?=\{)
+ name
+ meta.function.constructor.initializer-list.c++
+ patterns
+
+
+ include
+ $base
+
+
+
+
+
+ special_block
+
+ patterns
+
+
+ begin
+ \b(namespace)\s+([A-Za-z_][_A-Za-z0-9:]*\b)?+(?!\s*?(;|=|,))
+ end
+ (?<=\})
+ name
+ meta.namespace-block.c++
+ patterns
+
+
+ begin
+ \{
+ end
+ \}
+ patterns
+
+
+ include
+ #special_block
+
+
+ include
+ #constructor
+
+
+ include
+ $base
+
+
+
+
+
+
+ begin
+ \b(class|struct)\s+([_A-Za-z][_A-Za-z0-9]*\b)
+ beginCaptures
+
+ 1
+
+ name
+ storage.type.c++
+
+ 2
+
+ name
+ entity.name.type.c++
+
+
+ end
+ (?<=\})|(?=(;|,|\(|\)|>|\[|\]))
+ name
+ meta.class-struct-block.c++
+ patterns
+
+
+ include
+ #angle_brackets
+
+
+ begin
+ (\{)
+ beginCaptures
+
+ 1
+
+ name
+ punctuation.definition.scope.c++
+
+
+ end
+ (\})(\s*\n)?
+ endCaptures
+
+ 1
+
+ name
+ punctuation.definition.invalid.c++
+
+ 2
+
+ name
+ invalid.illegal.you-forgot-semicolon.c++
+
+
+ patterns
+
+
+ include
+ #special_block
+
+
+ include
+ #constructor
+
+
+ include
+ $base
+
+
+
+
+ include
+ $base
+
+
+
+
+ begin
+ \b(extern)(?=\s*")
+ beginCaptures
+
+ 1
+
+ name
+ storage.modifier.c++
+
+
+ end
+ (?<=\})|(?=\w)
+ name
+ meta.extern-block.c++
+ patterns
+
+
+ begin
+ \{
+ end
+ \}
+ patterns
+
+
+ include
+ #special_block
+
+
+ include
+ $base
+
+
+
+
+ include
+ $base
+
+
+
+
+
+
+ scopeName
+ source.c++
+ uuid
+ 26251B18-6B1D-11D9-AFDB-000D93589AF6
+
+
diff --git a/sublime/Packages/C++/C++.tmLanguage.cache b/sublime/Packages/C++/C++.tmLanguage.cache
new file mode 100644
index 0000000..d79d4b1
Binary files /dev/null and b/sublime/Packages/C++/C++.tmLanguage.cache differ
diff --git a/sublime/Packages/C++/C.tmLanguage b/sublime/Packages/C++/C.tmLanguage
new file mode 100644
index 0000000..925a864
--- /dev/null
+++ b/sublime/Packages/C++/C.tmLanguage
@@ -0,0 +1,1126 @@
+
+
+
+
+ fileTypes
+
+ c
+ h
+
+ firstLineMatch
+ -[*]-( Mode:)? C -[*]-
+ foldingStartMarker
+ (?x)
+ /\*\*(?!\*)
+ |^(?![^{]*?//|[^{]*?/\*(?!.*?\*/.*?\{)).*?\{\s*($|//|/\*(?!.*?\*/.*\S))
+
+ foldingStopMarker
+ (?<!\*)\*\*/|^\s*\}
+ keyEquivalent
+ ^~C
+ name
+ C
+ patterns
+
+
+ include
+ #preprocessor-rule-enabled
+
+
+ include
+ #preprocessor-rule-disabled
+
+
+ include
+ #preprocessor-rule-other
+
+
+ include
+ #comments
+
+
+ match
+ \b(break|case|continue|default|do|else|for|goto|if|_Pragma|return|switch|while)\b
+ name
+ keyword.control.c
+
+
+ match
+ \b(asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void)\b
+ name
+ storage.type.c
+
+
+ match
+ \b(const|extern|register|restrict|static|volatile|inline)\b
+ name
+ storage.modifier.c
+
+
+ comment
+ common C constant naming idiom -- kConstantVariable
+ match
+ \bk[A-Z]\w*\b
+ name
+ constant.other.variable.mac-classic.c
+
+
+ match
+ \bg[A-Z]\w*\b
+ name
+ variable.other.readwrite.global.mac-classic.c
+
+
+ match
+ \bs[A-Z]\w*\b
+ name
+ variable.other.readwrite.static.mac-classic.c
+
+
+ match
+ \b(NULL|true|false|TRUE|FALSE)\b
+ name
+ constant.language.c
+
+
+ include
+ #sizeof
+
+
+ match
+ \b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\b
+ name
+ constant.numeric.c
+
+
+ begin
+ "
+ beginCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.begin.c
+
+
+ end
+ "
+ endCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.end.c
+
+
+ name
+ string.quoted.double.c
+ patterns
+
+
+ include
+ #string_escaped_char
+
+
+ include
+ #string_placeholder
+
+
+
+
+ begin
+ '
+ beginCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.begin.c
+
+
+ end
+ '
+ endCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.end.c
+
+
+ name
+ string.quoted.single.c
+ patterns
+
+
+ include
+ #string_escaped_char
+
+
+
+
+ begin
+ (?x)
+ ^\s*\#\s*(define)\s+ # define
+ ((?<id>[a-zA-Z_][a-zA-Z0-9_]*)) # macro name
+ (?: # and optionally:
+ (\() # an open parenthesis
+ (
+ \s* \g<id> \s* # first argument
+ ((,) \s* \g<id> \s*)* # additional arguments
+ (?:\.\.\.)? # varargs ellipsis?
+ )
+ (\)) # a close parenthesis
+ )?
+
+ beginCaptures
+
+ 1
+
+ name
+ keyword.control.import.define.c
+
+ 2
+
+ name
+ entity.name.function.preprocessor.c
+
+ 4
+
+ name
+ punctuation.definition.parameters.c
+
+ 5
+
+ name
+ variable.parameter.preprocessor.c
+
+ 7
+
+ name
+ punctuation.separator.parameters.c
+
+ 8
+
+ name
+ punctuation.definition.parameters.c
+
+
+ end
+ (?=(?://|/\*))|$
+ name
+ meta.preprocessor.macro.c
+ patterns
+
+
+ match
+ (?>\\\s*\n)
+ name
+ punctuation.separator.continuation.c
+
+
+ include
+ $base
+
+
+
+
+ begin
+ ^\s*#\s*(error|warning)\b
+ captures
+
+ 1
+
+ name
+ keyword.control.import.error.c
+
+
+ end
+ $
+ name
+ meta.preprocessor.diagnostic.c
+ patterns
+
+
+ match
+ (?>\\\s*\n)
+ name
+ punctuation.separator.continuation.c
+
+
+
+
+ begin
+ ^\s*#\s*(include|import)\b\s+
+ captures
+
+ 1
+
+ name
+ keyword.control.import.include.c
+
+
+ end
+ (?=(?://|/\*))|$
+ name
+ meta.preprocessor.c.include
+ patterns
+
+
+ match
+ (?>\\\s*\n)
+ name
+ punctuation.separator.continuation.c
+
+
+ begin
+ "
+ beginCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.begin.c
+
+
+ end
+ "
+ endCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.end.c
+
+
+ name
+ string.quoted.double.include.c
+
+
+ begin
+ <
+ beginCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.begin.c
+
+
+ end
+ >
+ endCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.end.c
+
+
+ name
+ string.quoted.other.lt-gt.include.c
+
+
+
+
+ include
+ #pragma-mark
+
+
+ begin
+ ^\s*#\s*(define|defined|elif|else|if|ifdef|ifndef|line|pragma|undef)\b
+ captures
+
+ 1
+
+ name
+ keyword.control.import.c
+
+
+ end
+ (?=(?://|/\*))|$
+ name
+ meta.preprocessor.c
+ patterns
+
+
+ match
+ (?>\\\s*\n)
+ name
+ punctuation.separator.continuation.c
+
+
+
+
+ match
+ \b(u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t)\b
+ name
+ support.type.sys-types.c
+
+
+ match
+ \b(pthread_attr_t|pthread_cond_t|pthread_condattr_t|pthread_mutex_t|pthread_mutexattr_t|pthread_once_t|pthread_rwlock_t|pthread_rwlockattr_t|pthread_t|pthread_key_t)\b
+ name
+ support.type.pthread.c
+
+
+ match
+ \b(int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t|uintmax_t|uintmax_t)\b
+ name
+ support.type.stdint.c
+
+
+ match
+ \b(noErr|kNilOptions|kInvalidID|kVariableLengthArray)\b
+ name
+ support.constant.mac-classic.c
+
+
+ match
+ \b(AbsoluteTime|Boolean|Byte|ByteCount|ByteOffset|BytePtr|CompTimeValue|ConstLogicalAddress|ConstStrFileNameParam|ConstStringPtr|Duration|Fixed|FixedPtr|Float32|Float32Point|Float64|Float80|Float96|FourCharCode|Fract|FractPtr|Handle|ItemCount|LogicalAddress|OptionBits|OSErr|OSStatus|OSType|OSTypePtr|PhysicalAddress|ProcessSerialNumber|ProcessSerialNumberPtr|ProcHandle|Ptr|ResType|ResTypePtr|ShortFixed|ShortFixedPtr|SignedByte|SInt16|SInt32|SInt64|SInt8|Size|StrFileName|StringHandle|StringPtr|TimeBase|TimeRecord|TimeScale|TimeValue|TimeValue64|UInt16|UInt32|UInt64|UInt8|UniChar|UniCharCount|UniCharCountPtr|UniCharPtr|UnicodeScalarValue|UniversalProcHandle|UniversalProcPtr|UnsignedFixed|UnsignedFixedPtr|UnsignedWide|UTF16Char|UTF32Char|UTF8Char)\b
+ name
+ support.type.mac-classic.c
+
+
+ include
+ #block
+
+
+ begin
+ (?x)
+ (?: ^ # begin-of-line
+ |
+ (?: (?= \s ) (?<!else|new|return) (?<=\w) # or word + space before name
+ | (?= \s*[A-Za-z_] ) (?<!&&) (?<=[*&>]) # or type modifier before name
+ )
+ )
+ (\s*) (?!(while|for|do|if|else|switch|catch|enumerate|return|r?iterate)\s*\()
+ (
+ (?: [A-Za-z_][A-Za-z0-9_]*+ | :: )++ | # actual name
+ (?: (?<=operator) (?: [-*&<>=+!]+ | \(\) | \[\] ) ) # if it is a C++ operator
+ )
+ \s*(?=\()
+ beginCaptures
+
+ 1
+
+ name
+ punctuation.whitespace.function.leading.c
+
+ 3
+
+ name
+ entity.name.function.c
+
+ 4
+
+ name
+ punctuation.definition.parameters.c
+
+
+ end
+ (?<=\})|(?=#)|(;)
+ name
+ meta.function.c
+ patterns
+
+
+ include
+ #comments
+
+
+ include
+ #parens
+
+
+ match
+ \bconst\b
+ name
+ storage.modifier.c
+
+
+ include
+ #block
+
+
+
+
+ repository
+
+ access
+
+ match
+ \.[a-zA-Z_][a-zA-Z_0-9]*\b(?!\s*\()
+ name
+ variable.other.dot-access.c
+
+ block
+
+ begin
+ \{
+ end
+ \}
+ name
+ meta.block.c
+ patterns
+
+
+ include
+ #block_innards
+
+
+
+ block_innards
+
+ patterns
+
+
+ include
+ #preprocessor-rule-enabled-block
+
+
+ include
+ #preprocessor-rule-disabled-block
+
+
+ include
+ #preprocessor-rule-other-block
+
+
+ include
+ #sizeof
+
+
+ include
+ #access
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.whitespace.support.function.leading.c
+
+ 2
+
+ name
+ support.function.C99.c
+
+
+ match
+ (\s*)\b(hypot(f|l)?|s(scanf|ystem|nprintf|ca(nf|lb(n(f|l)?|ln(f|l)?))|i(n(h(f|l)?|f|l)?|gn(al|bit))|tr(s(tr|pn)|nc(py|at|mp)|c(spn|hr|oll|py|at|mp)|to(imax|d|u(l(l)?|max)|k|f|l(d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(jmp|vbuf|locale|buf)|qrt(f|l)?|w(scanf|printf)|rand)|n(e(arbyint(f|l)?|xt(toward(f|l)?|after(f|l)?))|an(f|l)?)|c(s(in(h(f|l)?|f|l)?|qrt(f|l)?)|cos(h(f)?|f|l)?|imag(f|l)?|t(ime|an(h(f|l)?|f|l)?)|o(s(h(f|l)?|f|l)?|nj(f|l)?|pysign(f|l)?)|p(ow(f|l)?|roj(f|l)?)|e(il(f|l)?|xp(f|l)?)|l(o(ck|g(f|l)?)|earerr)|a(sin(h(f|l)?|f|l)?|cos(h(f|l)?|f|l)?|tan(h(f|l)?|f|l)?|lloc|rg(f|l)?|bs(f|l)?)|real(f|l)?|brt(f|l)?)|t(ime|o(upper|lower)|an(h(f|l)?|f|l)?|runc(f|l)?|gamma(f|l)?|mp(nam|file))|i(s(space|n(ormal|an)|cntrl|inf|digit|u(nordered|pper)|p(unct|rint)|finite|w(space|c(ntrl|type)|digit|upper|p(unct|rint)|lower|al(num|pha)|graph|xdigit|blank)|l(ower|ess(equal|greater)?)|al(num|pha)|gr(eater(equal)?|aph)|xdigit|blank)|logb(f|l)?|max(div|abs))|di(v|fftime)|_Exit|unget(c|wc)|p(ow(f|l)?|ut(s|c(har)?|wc(har)?)|error|rintf)|e(rf(c(f|l)?|f|l)?|x(it|p(2(f|l)?|f|l|m1(f|l)?)?))|v(s(scanf|nprintf|canf|printf|w(scanf|printf))|printf|f(scanf|printf|w(scanf|printf))|w(scanf|printf)|a_(start|copy|end|arg))|qsort|f(s(canf|e(tpos|ek))|close|tell|open|dim(f|l)?|p(classify|ut(s|c|w(s|c))|rintf)|e(holdexcept|set(e(nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(aiseexcept|ror)|get(e(nv|xceptflag)|round))|flush|w(scanf|ide|printf|rite)|loor(f|l)?|abs(f|l)?|get(s|c|pos|w(s|c))|re(open|e|ad|xp(f|l)?)|m(in(f|l)?|od(f|l)?|a(f|l|x(f|l)?)?))|l(d(iv|exp(f|l)?)|o(ngjmp|cal(time|econv)|g(1(p(f|l)?|0(f|l)?)|2(f|l)?|f|l|b(f|l)?)?)|abs|l(div|abs|r(int(f|l)?|ound(f|l)?))|r(int(f|l)?|ound(f|l)?)|gamma(f|l)?)|w(scanf|c(s(s(tr|pn)|nc(py|at|mp)|c(spn|hr|oll|py|at|mp)|to(imax|d|u(l(l)?|max)|k|f|l(d|l)?|mbs)|pbrk|ftime|len|r(chr|tombs)|xfrm)|to(b|mb)|rtomb)|printf|mem(set|c(hr|py|mp)|move))|a(s(sert|ctime|in(h(f|l)?|f|l)?)|cos(h(f|l)?|f|l)?|t(o(i|f|l(l)?)|exit|an(h(f|l)?|2(f|l)?|f|l)?)|b(s|ort))|g(et(s|c(har)?|env|wc(har)?)|mtime)|r(int(f|l)?|ound(f|l)?|e(name|alloc|wind|m(ove|quo(f|l)?|ainder(f|l)?))|a(nd|ise))|b(search|towc)|m(odf(f|l)?|em(set|c(hr|py|mp)|move)|ktime|alloc|b(s(init|towcs|rtowcs)|towc|len|r(towc|len))))\b
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.whitespace.function-call.leading.c
+
+ 2
+
+ name
+ support.function.any-method.c
+
+ 3
+
+ name
+ punctuation.definition.parameters.c
+
+
+ match
+ (?x) (?: (?= \s ) (?:(?<=else|new|return) | (?<!\w)) (\s+))?
+ (\b
+ (?!(while|for|do|if|else|switch|catch|enumerate|return|r?iterate)\s*\()(?:(?!NS)[A-Za-z_][A-Za-z0-9_]*+\b | :: )++ # actual name
+ )
+ \s*(\()
+ name
+ meta.function-call.c
+
+
+ captures
+
+ 1
+
+ name
+ variable.other.c
+
+ 2
+
+ name
+ punctuation.definition.parameters.c
+
+
+ match
+ (?x)
+ (?x)
+ (?:
+ (?: (?= \s ) (?<!else|new|return) (?<=\w)\s+ # or word + space before name
+ )
+ )
+ (
+ (?: [A-Za-z_][A-Za-z0-9_]*+ | :: )++ | # actual name
+ (?: (?<=operator) (?: [-*&<>=+!]+ | \(\) | \[\] ) )? # if it is a C++ operator
+ )
+ \s*(\()
+ name
+ meta.initialization.c
+
+
+ include
+ #block
+
+
+ include
+ $base
+
+
+
+ comments
+
+ patterns
+
+
+ captures
+
+ 1
+
+ name
+ meta.toc-list.banner.block.c
+
+
+ match
+ ^/\* =(\s*.*?)\s*= \*/$\n?
+ name
+ comment.block.c
+
+
+ begin
+ /\*
+ captures
+
+ 0
+
+ name
+ punctuation.definition.comment.c
+
+
+ end
+ \*/
+ name
+ comment.block.c
+
+
+ match
+ \*/.*\n
+ name
+ invalid.illegal.stray-comment-end.c
+
+
+ captures
+
+ 1
+
+ name
+ meta.toc-list.banner.line.c
+
+
+ match
+ ^// =(\s*.*?)\s*=\s*$\n?
+ name
+ comment.line.banner.c++
+
+
+ begin
+ //
+ beginCaptures
+
+ 0
+
+ name
+ punctuation.definition.comment.c
+
+
+ end
+ $\n?
+ name
+ comment.line.double-slash.c++
+ patterns
+
+
+ match
+ (?>\\\s*\n)
+ name
+ punctuation.separator.continuation.c++
+
+
+
+
+
+ disabled
+
+ begin
+ ^\s*#\s*if(n?def)?\b.*$
+ comment
+ eat nested preprocessor if(def)s
+ end
+ ^\s*#\s*endif\b.*$
+ patterns
+
+
+ include
+ #disabled
+
+
+ include
+ #pragma-mark
+
+
+
+ parens
+
+ begin
+ \(
+ end
+ \)
+ name
+ meta.parens.c
+ patterns
+
+
+ include
+ $base
+
+
+
+ pragma-mark
+
+ captures
+
+ 1
+
+ name
+ meta.preprocessor.c
+
+ 2
+
+ name
+ keyword.control.import.pragma.c
+
+ 3
+
+ name
+ meta.toc-list.pragma-mark.c
+
+
+ match
+ ^\s*(#\s*(pragma\s+mark)\s+(.*))
+ name
+ meta.section
+
+ preprocessor-rule-disabled
+
+ begin
+ ^\s*(#(if)\s+(0)\b).*
+ captures
+
+ 1
+
+ name
+ meta.preprocessor.c
+
+ 2
+
+ name
+ keyword.control.import.if.c
+
+ 3
+
+ name
+ constant.numeric.preprocessor.c
+
+
+ end
+ ^\s*(#\s*(endif)\b)
+ patterns
+
+
+ begin
+ ^\s*(#\s*(else)\b)
+ captures
+
+ 1
+
+ name
+ meta.preprocessor.c
+
+ 2
+
+ name
+ keyword.control.import.else.c
+
+
+ end
+ (?=^\s*#\s*endif\b.*$)
+ patterns
+
+
+ include
+ $base
+
+
+
+
+ begin
+
+ end
+ (?=^\s*#\s*(else|endif)\b.*$)
+ name
+ comment.block.preprocessor.if-branch
+ patterns
+
+
+ include
+ #disabled
+
+
+ include
+ #pragma-mark
+
+
+
+
+
+ preprocessor-rule-disabled-block
+
+ begin
+ ^\s*(#(if)\s+(0)\b).*
+ captures
+
+ 1
+
+ name
+ meta.preprocessor.c
+
+ 2
+
+ name
+ keyword.control.import.if.c
+
+ 3
+
+ name
+ constant.numeric.preprocessor.c
+
+
+ end
+ ^\s*(#\s*(endif)\b)
+ patterns
+
+
+ begin
+ ^\s*(#\s*(else)\b)
+ captures
+
+ 1
+
+ name
+ meta.preprocessor.c
+
+ 2
+
+ name
+ keyword.control.import.else.c
+
+
+ end
+ (?=^\s*#\s*endif\b.*$)
+ patterns
+
+
+ include
+ #block_innards
+
+
+
+
+ begin
+
+ end
+ (?=^\s*#\s*(else|endif)\b.*$)
+ name
+ comment.block.preprocessor.if-branch.in-block
+ patterns
+
+
+ include
+ #disabled
+
+
+ include
+ #pragma-mark
+
+
+
+
+
+ preprocessor-rule-enabled
+
+ begin
+ ^\s*(#(if)\s+(0*1)\b)
+ captures
+
+ 1
+
+ name
+ meta.preprocessor.c
+
+ 2
+
+ name
+ keyword.control.import.if.c
+
+ 3
+
+ name
+ constant.numeric.preprocessor.c
+
+
+ end
+ ^\s*(#\s*(endif)\b)
+ patterns
+
+
+ begin
+ ^\s*(#\s*(else)\b).*
+ captures
+
+ 1
+
+ name
+ meta.preprocessor.c
+
+ 2
+
+ name
+ keyword.control.import.else.c
+
+
+ contentName
+ comment.block.preprocessor.else-branch
+ end
+ (?=^\s*#\s*endif\b.*$)
+ patterns
+
+
+ include
+ #disabled
+
+
+ include
+ #pragma-mark
+
+
+
+
+ begin
+
+ end
+ (?=^\s*#\s*(else|endif)\b.*$)
+ patterns
+
+
+ include
+ $base
+
+
+
+
+
+ preprocessor-rule-enabled-block
+
+ begin
+ ^\s*(#(if)\s+(0*1)\b)
+ captures
+
+ 1
+
+ name
+ meta.preprocessor.c
+
+ 2
+
+ name
+ keyword.control.import.if.c
+
+ 3
+
+ name
+ constant.numeric.preprocessor.c
+
+
+ end
+ ^\s*(#\s*(endif)\b)
+ patterns
+
+
+ begin
+ ^\s*(#\s*(else)\b).*
+ captures
+
+ 1
+
+ name
+ meta.preprocessor.c
+
+ 2
+
+ name
+ keyword.control.import.else.c
+
+
+ contentName
+ comment.block.preprocessor.else-branch.in-block
+ end
+ (?=^\s*#\s*endif\b.*$)
+ patterns
+
+
+ include
+ #disabled
+
+
+ include
+ #pragma-mark
+
+
+
+
+ begin
+
+ end
+ (?=^\s*#\s*(else|endif)\b.*$)
+ patterns
+
+
+ include
+ #block_innards
+
+
+
+
+
+ preprocessor-rule-other
+
+ begin
+ ^\s*(#\s*(if(n?def)?)\b.*?(?:(?=(?://|/\*))|$))
+ captures
+
+ 1
+
+ name
+ meta.preprocessor.c
+
+ 2
+
+ name
+ keyword.control.import.c
+
+
+ end
+ ^\s*(#\s*(endif)\b).*$
+ patterns
+
+
+ include
+ $base
+
+
+
+ preprocessor-rule-other-block
+
+ begin
+ ^\s*(#\s*(if(n?def)?)\b.*?(?:(?=(?://|/\*))|$))
+ captures
+
+ 1
+
+ name
+ meta.preprocessor.c
+
+ 2
+
+ name
+ keyword.control.import.c
+
+
+ end
+ ^\s*(#\s*(endif)\b).*$
+ patterns
+
+
+ include
+ #block_innards
+
+
+
+ sizeof
+
+ match
+ \b(sizeof)\b
+ name
+ keyword.operator.sizeof.c
+
+ string_escaped_char
+
+ patterns
+
+
+ match
+ \\(\\|[abefnprtv'"?]|[0-3]\d{,2}|[4-7]\d?|x[a-fA-F0-9]{,2}|u[a-fA-F0-9]{,4}|U[a-fA-F0-9]{,8})
+ name
+ constant.character.escape.c
+
+
+ match
+ \\.
+ name
+ invalid.illegal.unknown-escape.c
+
+
+
+ string_placeholder
+
+ patterns
+
+
+ match
+ (?x)%
+ (\d+\$)? # field (argument #)
+ [#0\- +']* # flags
+ [,;:_]? # separator character (AltiVec)
+ ((-?\d+)|\*(-?\d+\$)?)? # minimum field width
+ (\.((-?\d+)|\*(-?\d+\$)?)?)? # precision
+ (hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)? # length modifier
+ [diouxXDOUeEfFgGaACcSspn%] # conversion type
+
+ name
+ constant.other.placeholder.c
+
+
+ match
+ %
+ name
+ invalid.illegal.placeholder.c
+
+
+
+
+ scopeName
+ source.c
+ uuid
+ 25066DC2-6B1D-11D9-9D5B-000D93589AF6
+
+
diff --git a/sublime/Packages/C++/C.tmLanguage.cache b/sublime/Packages/C++/C.tmLanguage.cache
new file mode 100644
index 0000000..4899e1e
Binary files /dev/null and b/sublime/Packages/C++/C.tmLanguage.cache differ
diff --git a/sublime/Packages/C++/Comments (C++).tmPreferences b/sublime/Packages/C++/Comments (C++).tmPreferences
new file mode 100644
index 0000000..c0a43b9
--- /dev/null
+++ b/sublime/Packages/C++/Comments (C++).tmPreferences
@@ -0,0 +1,42 @@
+
+
+
+
+ name
+ Comments
+ scope
+ source.c, source.c++, source.objc, source.objc++
+ settings
+
+ shellVariables
+
+
+ name
+ TM_COMMENT_START
+ value
+ //
+
+
+ name
+ TM_COMMENT_START_2
+ value
+ /*
+
+
+ name
+ TM_COMMENT_END_2
+ value
+ */
+
+
+ name
+ TM_COMMENT_DISABLE_INDENT_2
+ value
+ yes
+
+
+
+ uuid
+ 38DBCCE5-2005-410C-B7D7-013097751AC8
+
+
diff --git a/sublime/Packages/C++/Comments (C++).tmPreferences.cache b/sublime/Packages/C++/Comments (C++).tmPreferences.cache
new file mode 100644
index 0000000..f8ecc2b
Binary files /dev/null and b/sublime/Packages/C++/Comments (C++).tmPreferences.cache differ
diff --git a/sublime/Packages/C++/Completion Rules.tmPreferences b/sublime/Packages/C++/Completion Rules.tmPreferences
new file mode 100644
index 0000000..1e9bb1e
--- /dev/null
+++ b/sublime/Packages/C++/Completion Rules.tmPreferences
@@ -0,0 +1,13 @@
+
+
+
+
+ scope
+ source.c, source.c++, source.objc, source.objc++
+ settings
+
+ cancelCompletion
+ ^\s*(\}?\s*(else|try|do)|(class|struct|enum|namespace)\s*[a-zA-Z_0-9]+*)$
+
+
+
diff --git a/sublime/Packages/C++/Completion Rules.tmPreferences.cache b/sublime/Packages/C++/Completion Rules.tmPreferences.cache
new file mode 100644
index 0000000..8cda632
Binary files /dev/null and b/sublime/Packages/C++/Completion Rules.tmPreferences.cache differ
diff --git a/sublime/Packages/C++/Enumeration.sublime-snippet b/sublime/Packages/C++/Enumeration.sublime-snippet
new file mode 100644
index 0000000..c5357ec
--- /dev/null
+++ b/sublime/Packages/C++/Enumeration.sublime-snippet
@@ -0,0 +1,6 @@
+
+ Enumeration
+
+ enum
+ source.c++, source.objc++
+
diff --git a/sublime/Packages/C++/Indentation Rules.tmPreferences b/sublime/Packages/C++/Indentation Rules.tmPreferences
new file mode 100644
index 0000000..3543cd3
--- /dev/null
+++ b/sublime/Packages/C++/Indentation Rules.tmPreferences
@@ -0,0 +1,40 @@
+
+
+
+
+ name
+ Indentation Rules
+ scope
+ source.c, source.c++, source.objc, source.objc++
+ settings
+
+ decreaseIndentPattern
+ (?x)
+ ^ (.*\*/)? \s* \} .* $
+ | ^ \s* (public|private|protected): \s* $
+ | ^ \s* @(public|private|protected) \s* $
+
+ increaseIndentPattern
+ (?x)
+ ^ .* \{ [^}"']* $
+ | ^ \s* (public|private|protected): \s* $
+ | ^ \s* @(public|private|protected) \s* $
+
+
+ bracketIndentNextLinePattern
+ (?x)
+ ^ \s* \b(if|while|else)\b [^;]* $
+ | ^ \s* \b(for)\b .* $
+
+
+ unIndentedLinePattern
+ ^\s*((/\*|.*\*/|//|#|template\b.*?>(?!\(.*\))|@protocol|@interface(?!.*\{)|@implementation|@end).*)?$
+
+ indentSquareBrackets
+
+
+
+ uuid
+ 02EB44C6-9203-4F4C-BFCB-7E3360B12812
+
+
diff --git a/sublime/Packages/C++/Indentation Rules.tmPreferences.cache b/sublime/Packages/C++/Indentation Rules.tmPreferences.cache
new file mode 100644
index 0000000..1011e1a
Binary files /dev/null and b/sublime/Packages/C++/Indentation Rules.tmPreferences.cache differ
diff --git a/sublime/Packages/C++/Symbol List - Indent Class Methods.tmPreferences b/sublime/Packages/C++/Symbol List - Indent Class Methods.tmPreferences
new file mode 100644
index 0000000..45f2a4c
--- /dev/null
+++ b/sublime/Packages/C++/Symbol List - Indent Class Methods.tmPreferences
@@ -0,0 +1,20 @@
+
+
+
+
+ bundleUUID
+ 4675A940-6227-11D9-BFB1-000D93589AF6
+ name
+ Symbol List: Indent Class Methods
+ scope
+ meta.class-struct-block.c++ entity.name.function
+ settings
+
+ symbolTransformation
+
+ s/^\s*/ /; # pad
+
+ uuid
+ B2B97E23-E686-4410-991D-A92AF3A9FC95
+
+
diff --git a/sublime/Packages/C++/Symbol List - Indent Class Methods.tmPreferences.cache b/sublime/Packages/C++/Symbol List - Indent Class Methods.tmPreferences.cache
new file mode 100644
index 0000000..608921b
Binary files /dev/null and b/sublime/Packages/C++/Symbol List - Indent Class Methods.tmPreferences.cache differ
diff --git a/sublime/Packages/C++/Symbol List - Prefix Banner Items.tmPreferences b/sublime/Packages/C++/Symbol List - Prefix Banner Items.tmPreferences
new file mode 100644
index 0000000..9fef596
--- /dev/null
+++ b/sublime/Packages/C++/Symbol List - Prefix Banner Items.tmPreferences
@@ -0,0 +1,20 @@
+
+
+
+
+ name
+ Symbol List: Prefix Banner Items
+ scope
+ meta.toc-list.banner
+ settings
+
+ symbolTransformation
+
+ s/^\s+/# /;
+ s/^=+$/-/;
+
+
+ uuid
+ A8E4E48A-81F3-4DB7-A7A2-88662C06E011
+
+
diff --git a/sublime/Packages/C++/Symbol List - Prefix Banner Items.tmPreferences.cache b/sublime/Packages/C++/Symbol List - Prefix Banner Items.tmPreferences.cache
new file mode 100644
index 0000000..adda39c
Binary files /dev/null and b/sublime/Packages/C++/Symbol List - Prefix Banner Items.tmPreferences.cache differ
diff --git a/sublime/Packages/C++/Typedef.sublime-snippet b/sublime/Packages/C++/Typedef.sublime-snippet
new file mode 100644
index 0000000..351bea3
--- /dev/null
+++ b/sublime/Packages/C++/Typedef.sublime-snippet
@@ -0,0 +1,6 @@
+
+ Typedef
+
+ td
+ source.c, source.objc, source.c++, source.objc++
+
diff --git a/sublime/Packages/C++/class-..-(class).sublime-snippet b/sublime/Packages/C++/class-..-(class).sublime-snippet
new file mode 100644
index 0000000..64a09f2
--- /dev/null
+++ b/sublime/Packages/C++/class-..-(class).sublime-snippet
@@ -0,0 +1,13 @@
+
+ Class
+
+ class
+ source.c++, source.objc++
+
diff --git a/sublime/Packages/C++/do...while-loop-(do).sublime-snippet b/sublime/Packages/C++/do...while-loop-(do).sublime-snippet
new file mode 100644
index 0000000..01dddb4
--- /dev/null
+++ b/sublime/Packages/C++/do...while-loop-(do).sublime-snippet
@@ -0,0 +1,9 @@
+
+ Do While Loop
+
+ do
+ source.c, source.objc, source.c++, source.objc++
+
diff --git a/sublime/Packages/C++/forv.sublime-snippet b/sublime/Packages/C++/forv.sublime-snippet
new file mode 100644
index 0000000..4a15023
--- /dev/null
+++ b/sublime/Packages/C++/forv.sublime-snippet
@@ -0,0 +1,9 @@
+
+ Vector For Loop
+ ::iterator ${3:i} = $2.begin(); $3 != $2.end(); ++$3)
+{
+ $0
+}]]>
+ forv
+ source.c, source.objc, source.c++, source.objc++
+
diff --git a/sublime/Packages/C++/fprintf.sublime-snippet b/sublime/Packages/C++/fprintf.sublime-snippet
new file mode 100644
index 0000000..983dee0
--- /dev/null
+++ b/sublime/Packages/C++/fprintf.sublime-snippet
@@ -0,0 +1,6 @@
+
+ fprintf …
+
+ fprintf
+ source.c, source.objc, source.c++, source.objc++
+
diff --git a/sublime/Packages/C++/if-..-(if).sublime-snippet b/sublime/Packages/C++/if-..-(if).sublime-snippet
new file mode 100644
index 0000000..18830ee
--- /dev/null
+++ b/sublime/Packages/C++/if-..-(if).sublime-snippet
@@ -0,0 +1,9 @@
+
+ If Condition
+
+ if
+ source.c, source.objc, source.c++, source.objc++
+
diff --git a/sublime/Packages/C++/namespace-..-(namespace).sublime-snippet b/sublime/Packages/C++/namespace-..-(namespace).sublime-snippet
new file mode 100644
index 0000000..2029803
--- /dev/null
+++ b/sublime/Packages/C++/namespace-..-(namespace).sublime-snippet
@@ -0,0 +1,10 @@
+
+ Namespace
+
+ ns
+ source.c++, source.objc++
+
diff --git a/sublime/Packages/C++/printf-..-(printf).sublime-snippet b/sublime/Packages/C++/printf-..-(printf).sublime-snippet
new file mode 100644
index 0000000..5f8bb28
--- /dev/null
+++ b/sublime/Packages/C++/printf-..-(printf).sublime-snippet
@@ -0,0 +1,6 @@
+
+ printf …
+
+ printf
+ source.c, source.objc, source.c++, source.objc++
+
diff --git a/sublime/Packages/C++/read-file-(readF).sublime-snippet b/sublime/Packages/C++/read-file-(readF).sublime-snippet
new file mode 100644
index 0000000..9023c5a
--- /dev/null
+++ b/sublime/Packages/C++/read-file-(readF).sublime-snippet
@@ -0,0 +1,13 @@
+
+ Read File Into Vector
+ v;
+if (FILE${TM_C_POINTER: *}fp = fopen(${1:"filename"}, "r"))
+{
+ char buf[1024];
+ while (size_t len = fread(buf, 1, sizeof(buf), fp))
+ v.insert(v.end(), buf, buf + len);
+ fclose(fp);
+}]]>
+ readfile
+ source.c++, source.objc++
+
diff --git a/sublime/Packages/C++/std-map-(map).sublime-snippet b/sublime/Packages/C++/std-map-(map).sublime-snippet
new file mode 100644
index 0000000..3848a74
--- /dev/null
+++ b/sublime/Packages/C++/std-map-(map).sublime-snippet
@@ -0,0 +1,6 @@
+
+ std::map
+ map$0;]]>
+ map
+ source.c++, source.objc++
+
diff --git a/sublime/Packages/C++/std-vector-(v).sublime-snippet b/sublime/Packages/C++/std-vector-(v).sublime-snippet
new file mode 100644
index 0000000..ff9663f
--- /dev/null
+++ b/sublime/Packages/C++/std-vector-(v).sublime-snippet
@@ -0,0 +1,6 @@
+
+ std::vector
+ v$0;]]>
+ vector
+ source.c++, source.objc++
+
diff --git a/sublime/Packages/C++/struct.sublime-snippet b/sublime/Packages/C++/struct.sublime-snippet
new file mode 100644
index 0000000..8ead93b
--- /dev/null
+++ b/sublime/Packages/C++/struct.sublime-snippet
@@ -0,0 +1,9 @@
+
+ Struct
+
+ struct
+ source.c, source.objc, source.c++, source.objc++
+
diff --git a/sublime/Packages/C++/template-typename-..-(template).sublime-snippet b/sublime/Packages/C++/template-typename-..-(template).sublime-snippet
new file mode 100644
index 0000000..ed28d46
--- /dev/null
+++ b/sublime/Packages/C++/template-typename-..-(template).sublime-snippet
@@ -0,0 +1,6 @@
+
+ template <typename ${1:_InputIter}>
+ ]]>
+ tp
+ source.c++, source.objc++
+
diff --git a/sublime/Packages/CSS/CSS.tmLanguage b/sublime/Packages/CSS/CSS.tmLanguage
new file mode 100644
index 0000000..926773c
--- /dev/null
+++ b/sublime/Packages/CSS/CSS.tmLanguage
@@ -0,0 +1,1010 @@
+
+
+
+
+ comment
+
+ fileTypes
+
+ css
+ css.erb
+
+ foldingStartMarker
+ /\*\*(?!\*)|\{\s*($|/\*(?!.*?\*/.*\S))
+ foldingStopMarker
+ (?<!\*)\*\*/|^\s*\}
+ keyEquivalent
+ ^~C
+ name
+ CSS
+ patterns
+
+
+ include
+ #comment-block
+
+
+ include
+ #selector
+
+
+ begin
+ \s*((@)charset\b)\s*
+ captures
+
+ 1
+
+ name
+ keyword.control.at-rule.charset.css
+
+ 2
+
+ name
+ punctuation.definition.keyword.css
+
+
+ end
+ \s*((?=;|$))
+ name
+ meta.at-rule.charset.css
+ patterns
+
+
+ include
+ #string-double
+
+
+ include
+ #string-single
+
+
+
+
+ begin
+ \s*((@)import\b)\s*
+ captures
+
+ 1
+
+ name
+ keyword.control.at-rule.import.css
+
+ 2
+
+ name
+ punctuation.definition.keyword.css
+
+
+ end
+ \s*((?=;|\}))
+ name
+ meta.at-rule.import.css
+ patterns
+
+
+ include
+ #string-double
+
+
+ include
+ #string-single
+
+
+ begin
+ \s*(url)\s*(\()\s*
+ beginCaptures
+
+ 1
+
+ name
+ support.function.url.css
+
+ 2
+
+ name
+ punctuation.section.function.css
+
+
+ end
+ \s*(\))\s*
+ endCaptures
+
+ 1
+
+ name
+ punctuation.section.function.css
+
+
+ patterns
+
+
+ match
+ [^'") \t]+
+ name
+ variable.parameter.url.css
+
+
+ include
+ #string-single
+
+
+ include
+ #string-double
+
+
+
+
+ include
+ #media-query-list
+
+
+
+
+ begin
+ ^\s*((@)font-face)\s*(?=\{)
+ beginCaptures
+
+ 1
+
+ name
+ keyword.control.at-rule.font-face.css
+
+ 2
+
+ name
+ punctuation.definition.keyword.css
+
+
+ end
+ \s*(\})
+ endCaptures
+
+ 1
+
+ name
+ punctuation.section.property-list.css
+
+
+ name
+ meta.at-rule.font-face.css
+ patterns
+
+
+ include
+ #rule-list
+
+
+
+
+ begin
+ (?=^\s*@media\s*.*?\{)
+ end
+ \s*(\})
+ endCaptures
+
+ 1
+
+ name
+ punctuation.section.property-list.css
+
+
+ patterns
+
+
+ begin
+ ^\s*((@)media)(?=.*?\{)
+ beginCaptures
+
+ 1
+
+ name
+ keyword.control.at-rule.media.css
+
+ 2
+
+ name
+ punctuation.definition.keyword.css
+
+ 3
+
+ name
+ support.constant.media.css
+
+
+ end
+ \s*(?=\{)
+ name
+ meta.at-rule.media.css
+ patterns
+
+
+ include
+ #media-query-list
+
+
+
+
+ begin
+ \s*(\{)
+ beginCaptures
+
+ 1
+
+ name
+ punctuation.section.property-list.css
+
+
+ end
+ (?=\})
+ patterns
+
+
+ include
+ $self
+
+
+
+
+
+
+ begin
+ (?=\{)
+ end
+ \}
+ endCaptures
+
+ 1
+
+ name
+ punctuation.section.property-list.css
+
+
+ patterns
+
+
+ include
+ #rule-list
+
+
+
+
+ repository
+
+ color-values
+
+ patterns
+
+
+ comment
+ http://www.w3.org/TR/CSS21/syndata.html#value-def-color
+ match
+ \b(aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow)\b
+ name
+ support.constant.color.w3c-standard-color-name.css
+
+
+ comment
+ These colours are mostly recognised but will not validate. ref: http://www.w3schools.com/css/css_colornames.asp
+ match
+ \b(aliceblue|antiquewhite|aquamarine|azure|beige|bisque|blanchedalmond|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|gainsboro|ghostwhite|gold|goldenrod|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|limegreen|linen|magenta|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|oldlace|olivedrab|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|thistle|tomato|turquoise|violet|wheat|whitesmoke|yellowgreen)\b
+ name
+ invalid.deprecated.color.w3c-non-standard-color-name.css
+
+
+ begin
+ (hsla?|rgba?)\s*(\()
+ beginCaptures
+
+ 1
+
+ name
+ support.function.misc.css
+
+ 2
+
+ name
+ punctuation.section.function.css
+
+
+ end
+ (\))
+ endCaptures
+
+ 1
+
+ name
+ punctuation.section.function.css
+
+
+ patterns
+
+
+ match
+ (?x)\b
+ (0*((1?[0-9]{1,2})|(2([0-4][0-9]|5[0-5])))\s*,\s*){2}
+ (0*((1?[0-9]{1,2})|(2([0-4][0-9]|5[0-5])))\b)
+ (\s*,\s*((0?\.[0-9]+)|[0-1]))?
+
+ name
+ constant.other.color.rgb-value.css
+
+
+ match
+ \b([0-9]{1,2}|100)\s*%,\s*([0-9]{1,2}|100)\s*%,\s*([0-9]{1,2}|100)\s*%
+ name
+ constant.other.color.rgb-percentage.css
+
+
+ include
+ #numeric-values
+
+
+
+
+
+ comment-block
+
+ begin
+ /\*
+ captures
+
+ 0
+
+ name
+ punctuation.definition.comment.css
+
+
+ end
+ \*/
+ name
+ comment.block.css
+
+ media-query
+
+ begin
+ (?i)\s*(only|not)?\s*(all|aural|braille|embossed|handheld|print|projection|screen|tty|tv)?
+ beginCaptures
+
+ 1
+
+ name
+ keyword.operator.logic.media.css
+
+ 2
+
+ name
+ support.constant.media.css
+
+
+ end
+ \s*(?:(,)|(?=[{;]))
+ endCaptures
+
+ 1
+
+ name
+ punctuation.definition.arbitrary-repitition.css
+
+
+ patterns
+
+
+ begin
+ \s*(and)?\s*(\()\s*
+ beginCaptures
+
+ 1
+
+ name
+ keyword.operator.logic.media.css
+
+
+ end
+ \)
+ patterns
+
+
+ begin
+ (?x)
+ (
+ ((min|max)-)?
+ (
+ ((device-)?(height|width|aspect-ratio))|
+ (color(-index)?)|monochrome|resolution
+ )
+ )|grid|scan|orientation
+ \s*(?=[:)])
+ beginCaptures
+
+ 0
+
+ name
+ support.type.property-name.media.css
+
+
+ end
+ (:)|(?=\))
+ endCaptures
+
+ 1
+
+ name
+ punctuation.separator.key-value.css
+
+
+
+
+ match
+ \b(portrait|landscape|progressive|interlace)
+ name
+ support.constant.property-value.css
+
+
+ captures
+
+ 1
+
+ name
+ constant.numeric.css
+
+ 2
+
+ name
+ keyword.operator.arithmetic.css
+
+ 3
+
+ name
+ constant.numeric.css
+
+
+ match
+ \s*(\d+)(/)(\d+)
+
+
+ include
+ #numeric-values
+
+
+
+
+
+ media-query-list
+
+ begin
+ \s*(?=[^{;])
+ end
+ \s*(?=[{;])
+ patterns
+
+
+ include
+ #media-query
+
+
+
+ numeric-values
+
+ patterns
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.definition.constant.css
+
+
+ match
+ (#)([0-9a-fA-F]{3}|[0-9a-fA-F]{6})\b
+ name
+ constant.other.color.rgb-value.css
+
+
+ captures
+
+ 1
+
+ name
+ keyword.other.unit.css
+
+
+ match
+ (?x)
+ (?:-|\+)?(?:(?:[0-9]+(?:\.[0-9]+)?)|(?:\.[0-9]+))
+ ((?:px|pt|ch|cm|mm|in|r?em|ex|pc|deg|g?rad|dpi|dpcm|s)\b|%)?
+
+ name
+ constant.numeric.css
+
+
+
+ property-values
+
+ patterns
+
+
+ match
+ \b(absolute|all(-scroll)?|always|armenian|auto|avoid|baseline|below|bidi-override|block|bold|bolder|both|bottom|break-all|break-word|capitalize|center|char|circle|cjk-ideographic|col-resize|collapse|crosshair|dashed|decimal-leading-zero|decimal|default|disabled|disc|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ellipsis|fixed|geometricPrecision|georgian|groove|hand|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|inactive|inherit|inline-block|inline|inset|inside|inter-ideograph|inter-word|italic|justify|katakana-iroha|katakana|keep-all|left|lighter|line-edge|line-through|line|list-item|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|medium|middle|move|n-resize|ne-resize|newspaper|no-drop|no-repeat|nw-resize|none|normal|not-allowed|nowrap|oblique|optimize(Legibility|Quality|Speed)|outset|outside|overline|pointer|pre(-(wrap|line))?|progress|relative|repeat-x|repeat-y|repeat|right|ridge|row-resize|rtl|s-resize|scroll|se-resize|separate|small-caps|solid|square|static|strict|sub|super|sw-resize|table-footer-group|table-header-group|tb-rl|text-bottom|text-top|text|thick|thin|top|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|vertical(-(ideographic|text))?|visible(Painted|Fill|Stroke)?|w-resize|wait|whitespace|zero|smaller|larger|((xx?-)?(small|large))|painted|fill|stroke)\b
+ name
+ support.constant.property-value.css
+
+
+ match
+ (\b(?i:arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace)\b)
+ name
+ support.constant.font-name.css
+
+
+ include
+ #numeric-values
+
+
+ include
+ #color-values
+
+
+ include
+ #string-double
+
+
+ include
+ #string-single
+
+
+ begin
+ (rect)\s*(\()
+ beginCaptures
+
+ 1
+
+ name
+ support.function.misc.css
+
+ 2
+
+ name
+ punctuation.section.function.css
+
+
+ end
+ (\))
+ endCaptures
+
+ 1
+
+ name
+ punctuation.section.function.css
+
+
+ patterns
+
+
+ include
+ #numeric-values
+
+
+
+
+ begin
+ (format|local|url|attr|counter|counters)\s*(\()
+ beginCaptures
+
+ 1
+
+ name
+ support.function.misc.css
+
+ 2
+
+ name
+ punctuation.section.function.css
+
+
+ end
+ (\))
+ endCaptures
+
+ 1
+
+ name
+ punctuation.section.function.css
+
+
+ patterns
+
+
+ include
+ #string-single
+
+
+ include
+ #string-double
+
+
+ match
+ [^'") \t]+
+ name
+ variable.parameter.misc.css
+
+
+
+
+ match
+ \!\s*important
+ name
+ keyword.other.important.css
+
+
+
+ rule-list
+
+ begin
+ \{
+ beginCaptures
+
+ 0
+
+ name
+ punctuation.section.property-list.css
+
+
+ end
+ (?=\s*\})
+ name
+ meta.property-list.css
+ patterns
+
+
+ include
+ #comment-block
+
+
+ begin
+ (?<![-a-z])(?=[-a-z])
+ end
+ $|(?![-a-z])
+ name
+ meta.property-name.css
+ patterns
+
+
+ match
+ \b(azimuth|background-attachment|background-color|background-image|background-position|background-repeat|background|box-shadow|border-radius|border-bottom-color|border-bottom-style|border-bottom-width|border-bottom|border-collapse|border-color|border-left-color|border-left-style|border-left-width|border-left|border-right-color|border-right-style|border-right-width|border-right|border-spacing|border-style|border-top-color|border-top-style|border-top-width|border-top|border-width|border|bottom|caption-side|clear|clip|color|content|counter-increment|counter-reset|cue-after|cue-before|cue|cursor|direction|display|elevation|empty-cells|float|font-family|font-size-adjust|font-size|font-stretch|font-style|font-variant|font-weight|font|height|image-rendering|left|letter-spacing|line-height|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|marker-offset|margin|marks|max-height|max-width|min-height|min-width|-moz-border-radius|opacity|orphans|outline-color|outline-style|outline-width|outline|overflow(-[xy])?|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page|pause-after|pause-before|pause|pitch-range|pitch|play-during|pointer-events|position|quotes|resize|richness|right|size|speak-header|speak-numeral|speak-punctuation|speech-rate|speak|src|stress|table-layout|text-(align|decoration|indent|rendering|shadow|transform)|top|unicode-bidi|vertical-align|visibility|voice-family|volume|white-space|widows|width|word-(spacing|wrap)|zoom|z-index)\b
+ name
+ support.type.property-name.css
+
+
+
+
+ begin
+ (:)\s*
+ beginCaptures
+
+ 1
+
+ name
+ punctuation.separator.key-value.css
+
+
+ end
+ \s*(;|(?=\}))
+ endCaptures
+
+ 1
+
+ name
+ punctuation.terminator.rule.css
+
+
+ name
+ meta.property-value.css
+ patterns
+
+
+ include
+ #property-values
+
+
+
+
+
+ selector
+
+ begin
+ \s*(?=[:.*#a-zA-Z])
+ end
+ (?=[/@{)])
+ name
+ meta.selector.css
+ patterns
+
+
+ match
+ \b(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|datalist|dd|del|details|dfn|dialog|div|dl|dt|em|eventsource|fieldset|figure|figcaption|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|label|legend|li|link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|samp|script|section|select|small|span|strike|strong|style|sub|summary|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)\b
+ name
+ entity.name.tag.css
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.definition.entity.css
+
+
+ match
+ (\.)[a-zA-Z0-9_-]+
+ name
+ entity.other.attribute-name.class.css
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.definition.entity.css
+
+
+ match
+ (#)[a-zA-Z][a-zA-Z0-9_-]*
+ name
+ entity.other.attribute-name.id.css
+
+
+ match
+ \*
+ name
+ entity.name.tag.wildcard.css
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.definition.entity.css
+
+
+ match
+ (:+)(after|before|first-letter|first-line|selection)\b
+ name
+ entity.other.attribute-name.pseudo-element.css
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.definition.entity.css
+
+
+ match
+ (:)((first|last)-child|(first|last|only)-of-type|empty|root|target|first|left|right)\b
+ name
+ entity.other.attribute-name.pseudo-class.css
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.definition.entity.css
+
+
+ match
+ (:)(checked|enabled|default|disabled|indeterminate|invalid|optional|required|valid)\b
+ name
+ entity.other.attribute-name.pseudo-class.ui-state.css
+
+
+ begin
+ ((:)not)(\()
+ beginCaptures
+
+ 1
+
+ name
+ entity.other.attribute-name.pseudo-class.css
+
+ 2
+
+ name
+ punctuation.definition.entity.css
+
+ 3
+
+ name
+ punctuation.section.function.css
+
+
+ end
+ \)
+ endCaptures
+
+ 0
+
+ name
+ punctuation.section.function.css
+
+
+ patterns
+
+
+ include
+ #selector
+
+
+
+
+ captures
+
+ 1
+
+ name
+ entity.other.attribute-name.pseudo-class.css
+
+ 2
+
+ name
+ punctuation.definition.entity.css
+
+ 3
+
+ name
+ punctuation.section.function.css
+
+ 4
+
+ name
+ constant.numeric.css
+
+ 5
+
+ name
+ punctuation.section.function.css
+
+
+ match
+ ((:)nth-(?:(?:last-)?child|(?:last-)?of-type))(\()(\-?(?:\d+n?|n)(?:\+\d+)?|even|odd)(\))
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.definition.entity.css
+
+
+ match
+ (:)(active|hover|link|visited|focus)\b
+ name
+ entity.other.attribute-name.pseudo-class.css
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.definition.entity.css
+
+ 2
+
+ name
+ entity.other.attribute-name.attribute.css
+
+ 3
+
+ name
+ punctuation.separator.operator.css
+
+ 4
+
+ name
+ string.unquoted.attribute-value.css
+
+ 5
+
+ name
+ string.quoted.double.attribute-value.css
+
+ 6
+
+ name
+ punctuation.definition.string.begin.css
+
+ 7
+
+ name
+ punctuation.definition.string.end.css
+
+
+ match
+ (?i)(\[)\s*(-?[_a-z\\[[:^ascii:]]][_a-z0-9\-\\[[:^ascii:]]]*)(?:\s*([~|^$*]?=)\s*(?:(-?[_a-z\\[[:^ascii:]]][_a-z0-9\-\\[[:^ascii:]]]*)|((?>(['"])(?:[^\\]|\\.)*?(\6)))))?\s*(\])
+ name
+ meta.attribute-selector.css
+
+
+
+ string-double
+
+ begin
+ "
+ beginCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.begin.css
+
+
+ end
+ "
+ endCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.end.css
+
+
+ name
+ string.quoted.double.css
+ patterns
+
+
+ match
+ \\.
+ name
+ constant.character.escape.css
+
+
+
+ string-single
+
+ begin
+ '
+ beginCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.begin.css
+
+
+ end
+ '
+ endCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.end.css
+
+
+ name
+ string.quoted.single.css
+ patterns
+
+
+ match
+ \\.
+ name
+ constant.character.escape.css
+
+
+
+
+ scopeName
+ source.css
+ uuid
+ 69AA0917-B7BB-11D9-A7E2-000D93C8BE28
+
+
diff --git a/sublime/Packages/CSS/CSS.tmLanguage.cache b/sublime/Packages/CSS/CSS.tmLanguage.cache
new file mode 100644
index 0000000..8a07ffd
Binary files /dev/null and b/sublime/Packages/CSS/CSS.tmLanguage.cache differ
diff --git a/sublime/Packages/CSS/Comments.tmPreferences b/sublime/Packages/CSS/Comments.tmPreferences
new file mode 100644
index 0000000..6de289f
--- /dev/null
+++ b/sublime/Packages/CSS/Comments.tmPreferences
@@ -0,0 +1,36 @@
+
+
+
+
+ name
+ Comments
+ scope
+ source.css
+ settings
+
+ shellVariables
+
+
+ name
+ TM_COMMENT_START
+ value
+ /*
+
+
+ name
+ TM_COMMENT_END
+ value
+ */
+
+
+ name
+ TM_COMMENT_DISABLE_INDENT
+ value
+ yes
+
+
+
+ uuid
+ 375CF370-8A7B-450A-895C-FD18B47957E2
+
+
diff --git a/sublime/Packages/CSS/Comments.tmPreferences.cache b/sublime/Packages/CSS/Comments.tmPreferences.cache
new file mode 100644
index 0000000..284c796
Binary files /dev/null and b/sublime/Packages/CSS/Comments.tmPreferences.cache differ
diff --git a/sublime/Packages/CSS/Default (Linux).sublime-keymap b/sublime/Packages/CSS/Default (Linux).sublime-keymap
new file mode 100644
index 0000000..7c840ea
--- /dev/null
+++ b/sublime/Packages/CSS/Default (Linux).sublime-keymap
@@ -0,0 +1,27 @@
+[
+ { "keys": [":"], "command": "insert_snippet", "args": {"contents": ":$0;"}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "selector", "operator": "equal", "operand": "source.css - meta.selector.css", "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\}|$)", "match_all": true }
+ ]
+ },
+ { "keys": [";"], "command": "move", "args": {"by": "characters", "forward": true}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "selector", "operator": "equal", "operand": "source.css - meta.selector.css", "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^;", "match_all": true }
+ ]
+ },
+ { "keys": ["backspace"], "command": "run_macro_file", "args": {"file": "Packages/Default/Delete Left Right.sublime-macro"}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "selector", "operator": "equal", "operand": "source.css - meta.selector.css", "match_all": true },
+ { "key": "preceding_text", "operator": "regex_contains", "operand": ":$", "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^;", "match_all": true }
+ ]
+ }
+]
diff --git a/sublime/Packages/CSS/Default (OSX).sublime-keymap b/sublime/Packages/CSS/Default (OSX).sublime-keymap
new file mode 100644
index 0000000..7c840ea
--- /dev/null
+++ b/sublime/Packages/CSS/Default (OSX).sublime-keymap
@@ -0,0 +1,27 @@
+[
+ { "keys": [":"], "command": "insert_snippet", "args": {"contents": ":$0;"}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "selector", "operator": "equal", "operand": "source.css - meta.selector.css", "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\}|$)", "match_all": true }
+ ]
+ },
+ { "keys": [";"], "command": "move", "args": {"by": "characters", "forward": true}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "selector", "operator": "equal", "operand": "source.css - meta.selector.css", "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^;", "match_all": true }
+ ]
+ },
+ { "keys": ["backspace"], "command": "run_macro_file", "args": {"file": "Packages/Default/Delete Left Right.sublime-macro"}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "selector", "operator": "equal", "operand": "source.css - meta.selector.css", "match_all": true },
+ { "key": "preceding_text", "operator": "regex_contains", "operand": ":$", "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^;", "match_all": true }
+ ]
+ }
+]
diff --git a/sublime/Packages/CSS/Default (Windows).sublime-keymap b/sublime/Packages/CSS/Default (Windows).sublime-keymap
new file mode 100644
index 0000000..7c840ea
--- /dev/null
+++ b/sublime/Packages/CSS/Default (Windows).sublime-keymap
@@ -0,0 +1,27 @@
+[
+ { "keys": [":"], "command": "insert_snippet", "args": {"contents": ":$0;"}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "selector", "operator": "equal", "operand": "source.css - meta.selector.css", "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\}|$)", "match_all": true }
+ ]
+ },
+ { "keys": [";"], "command": "move", "args": {"by": "characters", "forward": true}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "selector", "operator": "equal", "operand": "source.css - meta.selector.css", "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^;", "match_all": true }
+ ]
+ },
+ { "keys": ["backspace"], "command": "run_macro_file", "args": {"file": "Packages/Default/Delete Left Right.sublime-macro"}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "selector", "operator": "equal", "operand": "source.css - meta.selector.css", "match_all": true },
+ { "key": "preceding_text", "operator": "regex_contains", "operand": ":$", "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^;", "match_all": true }
+ ]
+ }
+]
diff --git a/sublime/Packages/CSS/Symbol List Group.tmPreferences b/sublime/Packages/CSS/Symbol List Group.tmPreferences
new file mode 100644
index 0000000..82ef163
--- /dev/null
+++ b/sublime/Packages/CSS/Symbol List Group.tmPreferences
@@ -0,0 +1,19 @@
+
+
+
+
+ name
+ Symbol List: Group
+ scope
+ source.css comment.block.css -source.css.embedded
+ settings
+
+ showInSymbolList
+ 1
+ symbolTransformation
+ s/\/\*\*\s*(.*?)\s*\*\//** $1 **/; s/\/\*.*?\*\*\//./; s/\/\*[^\*].*?[^\*]\*\///
+
+ uuid
+ 096894D8-6A5A-4F1D-B68C-782F0A850E52
+
+
diff --git a/sublime/Packages/CSS/Symbol List Group.tmPreferences.cache b/sublime/Packages/CSS/Symbol List Group.tmPreferences.cache
new file mode 100644
index 0000000..334f278
Binary files /dev/null and b/sublime/Packages/CSS/Symbol List Group.tmPreferences.cache differ
diff --git a/sublime/Packages/CSS/Symbol List.tmPreferences b/sublime/Packages/CSS/Symbol List.tmPreferences
new file mode 100644
index 0000000..3aa3c7f
--- /dev/null
+++ b/sublime/Packages/CSS/Symbol List.tmPreferences
@@ -0,0 +1,19 @@
+
+
+
+
+ name
+ Symbol List: Selector
+ scope
+ source.css meta.selector
+ settings
+
+ showInSymbolList
+ 1
+ symbolTransformation
+ s/^\s*/CSS: /; s/\s+/ /g
+
+ uuid
+ 17B2DD5B-D2EA-4DC5-9C7D-B09B505156C5
+
+
diff --git a/sublime/Packages/CSS/Symbol List.tmPreferences.cache b/sublime/Packages/CSS/Symbol List.tmPreferences.cache
new file mode 100644
index 0000000..838faf0
Binary files /dev/null and b/sublime/Packages/CSS/Symbol List.tmPreferences.cache differ
diff --git a/sublime/Packages/CSS/css_completions (Hackintosh's conflicted copy 2012-07-24).pyc b/sublime/Packages/CSS/css_completions (Hackintosh's conflicted copy 2012-07-24).pyc
new file mode 100644
index 0000000..dcc764f
Binary files /dev/null and b/sublime/Packages/CSS/css_completions (Hackintosh's conflicted copy 2012-07-24).pyc differ
diff --git a/sublime/Packages/CSS/css_completions.py b/sublime/Packages/CSS/css_completions.py
new file mode 100644
index 0000000..94bc668
--- /dev/null
+++ b/sublime/Packages/CSS/css_completions.py
@@ -0,0 +1,194 @@
+import sublime, sublime_plugin
+import re
+
+
+common = { "color": ["rgb($1)", "rgba($1)", "hsl($1)", "hsla($1)", "transparent"],
+ "uri": ["url($1)"],
+ "border-style": ["none", "hidden", "dotted", "dashed", "solid", "double", "groove", "ridge", "inset", "outset"],
+ "border-width": ["thin", "medium", "thick"],
+ "shape": ["rect($1)"],
+ "generic-family": ["serif", "sans-serif", "cursive", "fantasy", "monospace"] }
+
+css_data = """
+"background-attachment"=scroll | fixed | inherit
+"background-color"= | inherit
+"background-image"= | none | inherit
+"background-position"=left | center | right | top | bottom | inherit
+"background-repeat"=repeat | repeat-x | repeat-y | no-repeat | inherit
+"background"= | | repeat | repeat-x | repeat-y | no-repeat | scroll | fixed | left | center | right | top | bottom | inherit
+"border-collapse"=collapse | separate | inherit
+"border-color"= | inherit
+"border-spacing"=inherit
+"border-style"= | inherit
+"border-top" "border-right" "border-bottom" "border-left"= | | | inherit
+"border-top-color" "border-right-color" "border-bottom-color" "border-left-color"= | inherit
+"border-top-style" "border-right-style" "border-bottom-style" "border-left-style"= | inherit
+"border-top-width" "border-right-width" "border-bottom-width" "border-left-width"= | inherit
+"border-width"= | inherit
+"border"= | | | inherit
+"bottom"= | | auto | inherit
+"caption-side"=top | bottom | inherit
+"clear"=none | left | right | both | inherit
+"clip"= | auto | inherit
+"color"= | inherit
+"content"=normal | none | | open-quote | close-quote | no-open-quote | no-close-quote | inherit
+"counter-increment"=none | inherit
+"counter-reset"=none | inherit
+"cursor"= | auto | crosshair | default | pointer | move | e-resize | ne-resize | nw-resize | n-resize | se-resize | sw-resize | s-resize | w-resize | text | wait | help | progress | inherit
+"direction"=ltr | rtl | inherit
+"display"=inline | block | list-item | inline-block | table | inline-table | table-row-group | table-header-group | table-footer-group | table-row | table-column-group | table-column | table-cell | table-caption | none | inherit
+"empty-cells"=show | hide | inherit
+"float"=left | right | none | inherit
+"font-family"=| inherit
+"font-size"=inherit
+"font-style"=normal | italic | oblique | inherit
+"font-variant"=normal | small-caps | inherit
+"font-weight"=normal | bold | bolder | lighter | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | inherit
+"font"=normal | italic | oblique | normal | small-caps | normal | bold | bolder | lighter | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | normal | | caption | icon | menu | message-box | small-caption | status-bar | inherit
+"height"= | | auto | inherit
+"left"= | | auto | inherit
+"letter-spacing"=normal | | inherit
+"line-height"=normal | | | | inherit
+"list-style-image"= | none | inherit
+"list-style-position"=inside | outside | inherit
+"list-style-type"=disc | circle | square | decimal | decimal-leading-zero | lower-roman | upper-roman | lower-greek | lower-latin | upper-latin | armenian | georgian | lower-alpha | upper-alpha | none | inherit
+"list-style"=disc | circle | square | decimal | decimal-leading-zero | lower-roman | upper-roman | lower-greek | lower-latin | upper-latin | armenian | georgian | lower-alpha | upper-alpha | none | inside | outside | | inherit
+"margin-right" "margin-left"= | inherit
+"margin-top" "margin-bottom"= | inherit
+"margin"= | inherit
+"max-height"= | | none | inherit
+"max-width"= | | none | inherit
+"min-height"= | | inherit
+"min-width"= | | inherit
+"opacity"= | inherit
+"orphans"= | inherit
+"outline-color"= | invert | inherit
+"outline-style"= | inherit
+"outline-width"= | inherit
+"outline"= | | | inherit
+"overflow"=visible | hidden | scroll | auto | inherit
+"padding-top" "padding-right" "padding-bottom" "padding-left"= | inherit
+"padding"= | inherit
+"page-break-after"=auto | always | avoid | left | right | inherit
+"page-break-before"=auto | always | avoid | left | right | inherit
+"page-break-inside"=avoid | auto | inherit
+"position"=static | relative | absolute | fixed | inherit
+"quotes"=none | inherit
+"right"= | | auto | inherit
+"table-layout"=auto | fixed | inherit
+"text-align"=left | right | center | justify | inherit
+"text-decoration"=none | underline | overline | line-through | blink | inherit | none
+"text-indent"= | | inherit
+"text-transform"=capitalize | uppercase | lowercase | none | inherit
+"top"= | | auto | inherit
+"unicode-bidi"=normal | embed | bidi-override | inherit
+"vertical-align"=baseline | sub | super | top | text-top | middle | bottom | text-bottom | | | inherit
+"visibility"=visible | hidden | collapse | inherit
+"white-space"=normal | pre | nowrap | pre-wrap | pre-line | inherit
+"widows"= | inherit
+"width"= | | auto | inherit
+"word-spacing"=normal | | inherit
+"z-index"=auto | | inherit
+
+
+"background-clip"=
+"background-origin"=
+"background-size"=
+"border"= | |
+"border-color"=
+"border-image"= | | | | |
+"border-image-outset"= |
+"border-image-repeat"=stretch | repeat | round | space
+"border-image-slice"= |
+"border-image-source"=none |
+"border-image-width"= | | | auto
+"border-radius"= |
+"border-style"=
+"border-top" "border-right" "border-bottom" "border-left"= | |
+"border-top-color" "border-right-color" "border-bottom-color" "border-left-color"=
+"border-top-left-radius" "border-top-right-radius" "border-bottom-right-radius" "border-bottom-left-radius"= |
+"border-top-style" "border-right-style" "border-bottom-style" "border-left-style"=
+"border-top-width" "border-right-width" "border-bottom-width" "border-left-width"=
+"border-width"=
+"box-decoration-break"=slice | clone
+"box-shadow"=none | | none
+"""
+
+def parse_css_data(data):
+ props = {}
+ for l in data.splitlines():
+ if l == "":
+ continue
+
+ names, values = l.split('=')
+
+ allowed_values = []
+ for v in values.split('|'):
+ v = v.strip()
+ if v[0] == '<' and v[-1] == '>':
+ key = v[1:-1]
+ if key in common:
+ allowed_values += common[key]
+ else:
+ allowed_values.append(v)
+
+ for e in names.split():
+ if e[0] == '"':
+ props[e[1:-1]] = sorted(allowed_values)
+ else:
+ break
+
+ return props
+
+class CSSCompletions(sublime_plugin.EventListener):
+ props = None
+ rex = None
+
+ def on_query_completions(self, view, prefix, locations):
+ if not view.match_selector(locations[0], "source.css - meta.selector.css"):
+ return []
+
+ if not self.props:
+ self.props = parse_css_data(css_data)
+ self.rex = re.compile("([a-zA-Z-]+):\s*$")
+
+ l = []
+ if (view.match_selector(locations[0], "meta.property-value.css") or
+ # This will catch scenarios like .foo {font-style: |}
+ view.match_selector(locations[0] - 1, "meta.property-value.css")):
+ loc = locations[0] - len(prefix)
+ line = view.substr(sublime.Region(view.line(loc).begin(), loc))
+
+ m = re.search(self.rex, line)
+ if m:
+ prop_name = m.group(1)
+ if prop_name in self.props:
+ values = self.props[prop_name]
+
+ add_semi_colon = view.substr(sublime.Region(locations[0], locations[0] + 1)) != ';'
+
+ for v in values:
+ desc = v
+ snippet = v
+
+ if add_semi_colon:
+ snippet += ";"
+
+ if snippet.find("$1") != -1:
+ desc = desc.replace("$1", "")
+
+ l.append((desc, snippet))
+
+ return (l, sublime.INHIBIT_WORD_COMPLETIONS)
+
+ return None
+ else:
+ add_colon = not view.match_selector(locations[0], "meta.property-name.css")
+
+ for p in self.props:
+ if add_colon:
+ l.append((p, p + ": "))
+ else:
+ l.append((p, p))
+
+ return (l, sublime.INHIBIT_WORD_COMPLETIONS)
diff --git a/sublime/Packages/CSS/css_completions.pyc b/sublime/Packages/CSS/css_completions.pyc
new file mode 100644
index 0000000..fa75e89
Binary files /dev/null and b/sublime/Packages/CSS/css_completions.pyc differ
diff --git a/sublime/Packages/Clojure/Clojure.tmLanguage b/sublime/Packages/Clojure/Clojure.tmLanguage
new file mode 100644
index 0000000..8cb89e7
--- /dev/null
+++ b/sublime/Packages/Clojure/Clojure.tmLanguage
@@ -0,0 +1,3415 @@
+
+
+
+
+ comment
+ Symbol pattern : [a-zA-Z+!\-_?0-9*~#@'`/.$=]
+ fileTypes
+
+ clj
+
+ foldingStartMarker
+ (?x)^ [ \t]* \(
+ (?<par>
+ ( [^()\n]++ | \( \g<par> \)? )*+
+ )
+ $
+ foldingStopMarker
+ ^\s*$
+ keyEquivalent
+ ^~C
+ name
+ Clojure
+ patterns
+
+
+ include
+ #comment
+
+
+ include
+ #function
+
+
+ include
+ #function_multi_method
+
+
+ include
+ #macro
+
+
+ include
+ #namespace
+
+
+ include
+ #sexpr
+
+
+ repository
+
+ all
+
+ patterns
+
+
+ include
+ #function
+
+
+ include
+ #function_multi_method
+
+
+ include
+ #lambda
+
+
+ include
+ #macro
+
+
+ include
+ #comment
+
+
+ include
+ #expr
+
+
+ include
+ #sexpr
+
+
+
+ binding
+
+ comment
+ consume bindings to the end, dual recursive with binding_exp
+ patterns
+
+
+ include
+ #comment
+
+
+ include
+ #metadata
+
+
+ begin
+ \[
+ beginCaptures
+
+ 0
+
+ name
+ punctuation.definition.vector.begin.clojure
+
+
+ end
+ (?=\])
+ name
+ meta.structure.binding.vector.clojure
+ patterns
+
+
+ begin
+ (?<=\[)
+ comment
+ TODO: merge with parameters ??
+ end
+ \]
+ endCaptures
+
+ 0
+
+ name
+ punctuation.definition.vector.end.clojure
+
+
+ name
+ meta.parameters.vector.clojure
+ patterns
+
+
+ include
+ #comment
+
+
+ include
+ #metadata
+
+
+ include
+ #parameters_variable
+
+
+ match
+ \&
+ name
+ keyword.operator.varargs.clojure
+
+
+ match
+ (:as)(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ name
+ keyword.operator.symbolargs.clojure
+
+
+ include
+ #parameters
+
+
+ include
+ #parameters_map
+
+
+ include
+ #all
+
+
+
+
+ include
+ #binding_exp
+
+
+
+
+ begin
+ \{
+ beginCaptures
+
+ 0
+
+ name
+ punctuation.definition.map.begin.clojure
+
+
+ end
+ (?=\])
+ name
+ meta.structure.binding.map.clojure
+ patterns
+
+
+ begin
+ (?<=\{)
+ comment
+ TODO: merge with map ??
+ end
+ \}
+ endCaptures
+
+ 0
+
+ name
+ punctuation.definition.map.end.clojure
+
+
+ name
+ meta.function.parameters.map.clojure
+ patterns
+
+
+ include
+ #comment
+
+
+ include
+ #metadata
+
+
+ include
+ #parameters_variable
+
+
+ match
+ (:as|:or|:keys|:strs|:syms)(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ name
+ keyword.operator.symbolargs.clojure
+
+
+ include
+ #parameters
+
+
+ include
+ #parameters_map
+
+
+ include
+ #all
+
+
+
+
+ include
+ #binding_exp
+
+
+
+
+ begin
+ (:let|:when|:while)(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ beginCaptures
+
+ 1
+
+ name
+ keyword.operator.symbolargs.clojure
+
+
+ end
+ (?=\])
+ name
+ meta.structure.binding.symbolargs.clojure
+ patterns
+
+
+ include
+ #binding_exp
+
+
+
+
+ begin
+ (?=[a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ comment
+ symbol matching
+ end
+ (?=\])
+ name
+ meta.structure.binding.symbole.clojure
+ patterns
+
+
+ begin
+ (?=[a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ end
+ (?<=[a-zA-Z+!\-_?0-9*~#@'`/.$=])(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ name
+ variable.parameter.clojure
+ patterns
+
+
+ include
+ #keyword
+
+
+ include
+ #operator
+
+
+ include
+ #number
+
+
+ include
+ #symbol
+
+
+
+
+ begin
+ (?![a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ end
+ (?=\])
+ patterns
+
+
+ include
+ #binding_exp
+
+
+
+
+
+
+ begin
+ [^\s]
+ end
+ [^\]]
+ name
+ invalid.illegal.bindings.clojure
+
+
+
+ binding_exp
+
+ comment
+ consume bindings to the end, dual recursive with binding
+ patterns
+
+
+ include
+ #comment
+
+
+ include
+ #metadata
+
+
+ include
+ #operator_special
+
+
+ begin
+ (\(\)|{}|\[\]|#{})
+ beginCaptures
+
+ 1
+
+ name
+ constant.language.clojure
+
+
+ end
+ (?=\])
+ name
+ meta.structure.binding_exp.constant.language.clojure
+ patterns
+
+
+ include
+ #binding
+
+
+
+
+ begin
+ (?=#?\()
+ end
+ (?=\])
+ name
+ meta.structure.binding_exp.sexp.clojure
+ patterns
+
+
+ begin
+ (?=#?\()
+ end
+ (?<=\))
+ patterns
+
+
+ include
+ #function
+
+
+ include
+ #function_multi_method
+
+
+ include
+ #lambda
+
+
+ include
+ #macro
+
+
+ include
+ #sexpr
+
+
+
+
+ include
+ #binding
+
+
+
+
+ begin
+ (\[)
+ end
+ (?=\])
+ name
+ meta.structure.binding_exp.vector.clojure
+ patterns
+
+
+ begin
+ (?<=\[)
+ beginCaptures
+
+ 0
+
+ name
+ punctuation.definition.vector.begin.clojure
+
+
+ comment
+ TODO: merge with vector
+ end
+ \]
+ endCaptures
+
+ 0
+
+ name
+ punctuation.definition.vector.end.clojure
+
+
+ name
+ meta.expression.vector.clojure
+ patterns
+
+
+ include
+ #all
+
+
+
+
+ include
+ #binding
+
+
+
+
+ begin
+ (\{)
+ end
+ (?=\])
+ name
+ meta.structure.binding_exp.map.clojure
+ patterns
+
+
+ begin
+ (?<=\{)
+ beginCaptures
+
+ 0
+
+ name
+ punctuation.definition.map.begin.clojure
+
+
+ comment
+ TODO: merge with map
+ end
+ }
+ endCaptures
+
+ 0
+
+ name
+ punctuation.definition.map.end.clojure
+
+
+ name
+ meta.expression.map.clojure
+ patterns
+
+
+ include
+ #all
+
+
+
+
+ include
+ #binding
+
+
+
+
+ begin
+ (?=#\{)
+ end
+ (?=\])
+ name
+ meta.structure.binding_exp.set.clojure
+ patterns
+
+
+ include
+ #set
+
+
+ include
+ #binding
+
+
+
+
+ begin
+ (?=")|(?=\\)|(?=\:)|(?=\#")
+ end
+ (?=\])
+ name
+ meta.structure.binding_exp.string.clojure
+ patterns
+
+
+ include
+ #string
+
+
+ include
+ #binding
+
+
+
+
+ begin
+ (?=[a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ comment
+ symbol matching
+ end
+ (?=\])
+ name
+ meta.structure.binding_exp.symbole.clojure
+ patterns
+
+
+ begin
+ (?=[a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ end
+ (?<=[a-zA-Z+!\-_?0-9*~#@'`/.$=])(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ patterns
+
+
+ include
+ #keyword
+
+
+ include
+ #operator
+
+
+ include
+ #number
+
+
+ include
+ #symbol
+
+
+
+
+ begin
+ (?![a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ end
+ (?=\])
+ patterns
+
+
+ include
+ #binding
+
+
+
+
+
+
+ begin
+ [^\s]
+ end
+ [^\]]
+ name
+ invalid.illegal.bindings.clojure
+
+
+
+ bindings_form
+
+ begin
+ \[
+ comment
+ bindings followed by all
+ end
+ (?=\))
+ name
+ meta.structure.bindings.clojure
+ patterns
+
+
+ begin
+ (?<=\[)
+ end
+ \]
+ patterns
+
+
+ include
+ #binding
+
+
+
+
+ begin
+ (?<=\])
+ end
+ (?=\))
+ patterns
+
+
+ include
+ #all
+
+
+
+
+
+ comment
+
+ patterns
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.definition.comment.clojure
+
+
+ match
+ (;;).*(;;)$\n?
+ name
+ comment.line.semicolon.double.banner.clojure
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.definition.comment.clojure
+
+
+ match
+ (;;).*$\n?
+ name
+ comment.line.semicolon.double.clojure
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.definition.comment.clojure
+
+
+ match
+ ^(;).*$\n?
+ name
+ comment.line.semicolon.start.clojure
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.definition.comment.clojure
+
+
+ match
+ (;).*$\n?
+ name
+ comment.line.semicolon.clojure
+
+
+
+ expr
+
+ name
+ meta.expr.clojure
+ patterns
+
+
+ include
+ #keyword
+
+
+ include
+ #operator
+
+
+ include
+ #string
+
+
+ include
+ #vector
+
+
+ include
+ #map
+
+
+ include
+ #set
+
+
+ include
+ #metadata
+
+
+ include
+ #number
+
+
+ include
+ #symbol
+
+
+
+ function
+
+ begin
+ \(\s*(defn\-?)\s
+ beginCaptures
+
+ 1
+
+ name
+ storage.type.function.type.clojure
+
+
+ end
+ \)
+ endCaptures
+
+ 1
+
+ name
+ punctuation.terminator.function.clojure
+
+
+ name
+ meta.function.clojure
+ patterns
+
+
+ include
+ #comment
+
+
+ include
+ #metadata
+
+
+ match
+ \s*
+
+
+ include
+ #function_name
+
+
+ include
+ #function_body_comment
+
+
+
+ function_body
+
+ patterns
+
+
+ begin
+ \(\s*(?=\[)
+ end
+ \)
+ name
+ meta.function.body.code.clojure
+ patterns
+
+
+ include
+ #parameters_body
+
+
+
+
+ begin
+ (?=\[)
+ end
+ (?=\))
+ name
+ meta.function.body.clojure
+ patterns
+
+
+ include
+ #parameters_body
+
+
+
+
+
+ function_body_comment
+
+ patterns
+
+
+ begin
+ "
+ beginCaptures
+
+ 0
+
+ name
+ string.quoted.double.begin.clojure
+
+
+ end
+ "
+ endCaptures
+
+ 0
+
+ name
+ string.quoted.double.end.clojure
+
+
+ name
+ string.docstring.clojure
+ patterns
+
+
+ include
+ #string_escape
+
+
+
+
+ begin
+ \{
+ beginCaptures
+
+ 0
+
+ name
+ comment.punctuation.definition.metadata.begin.clojure
+
+
+ end
+ \}
+ endCaptures
+
+ 0
+
+ name
+ comment.punctuation.definition.metadata.end.clojure
+
+
+ name
+ meta.metadata.map.clojure
+ patterns
+
+
+ include
+ #metadata_patterns
+
+
+
+
+ include
+ #function_body
+
+
+
+ function_multi_method
+
+ begin
+ \(\s*(defmethod\-?)\s+
+ beginCaptures
+
+ 1
+
+ name
+ storage.type.function.type.clojure
+
+
+ end
+ \)
+ name
+ meta.function.multi_method.clojure
+ patterns
+
+
+ include
+ #comment
+
+
+ begin
+ (?=[a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ end
+ (?=\))
+ patterns
+
+
+ begin
+ (?=[a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ end
+ (?<=[a-zA-Z+!\-_?0-9*~#@'`/.$=])(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ name
+ meta.function.multi_method.name.clojure
+ patterns
+
+
+ include
+ #function_name
+
+
+
+
+ begin
+ (?<=[a-zA-Z+!\-_?0-9*~#@'`/.$=])(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ end
+ (?=\))
+ patterns
+
+
+ include
+ #comment
+
+
+ include
+ #metadata
+
+
+ include
+ #operator_special
+
+
+ begin
+ (\(\)|{}|\[\]|#{})
+ beginCaptures
+
+ 1
+
+ name
+ constant.language.clojure
+
+
+ end
+ (?=\))
+ name
+ meta.structure.multi_method_exp.constant.language.clojure
+ patterns
+
+
+ include
+ #parameters_body
+
+
+
+
+ begin
+ (?=#?\()
+ end
+ (?=\))
+ name
+ meta.structure.multi_method_exp.sexp.clojure
+ patterns
+
+
+ begin
+ (?=#?\()
+ end
+ (?<=\))
+ patterns
+
+
+ include
+ #function
+
+
+ include
+ #function_multi_method
+
+
+ include
+ #lambda
+
+
+ include
+ #macro
+
+
+ include
+ #sexpr
+
+
+
+
+ include
+ #parameters_body
+
+
+
+
+ begin
+ (\[)
+ end
+ (?=\))
+ name
+ meta.structure.multi_method_exp.vector.clojure
+ patterns
+
+
+ begin
+ (?<=\[)
+ beginCaptures
+
+ 0
+
+ name
+ punctuation.definition.vector.begin.clojure
+
+
+ comment
+ TODO: merge with vector
+ end
+ (\])
+ endCaptures
+
+ 1
+
+ name
+ punctuation.definition.vector.end.clojure
+
+
+ name
+ meta.expression.vector.clojure
+ patterns
+
+
+ include
+ #all
+
+
+
+
+ begin
+ (?<=\])\s*
+ end
+ (?=\))
+ patterns
+
+
+ include
+ #parameters_body
+
+
+
+
+
+
+ begin
+ (\{)
+ end
+ (?=\))
+ name
+ meta.structure.multi_method_exp.map.clojure
+ patterns
+
+
+ begin
+ (?<=\{)
+ beginCaptures
+
+ 0
+
+ name
+ punctuation.definition.map.begin.clojure
+
+
+ comment
+ TODO: merge with map
+ end
+ }
+ endCaptures
+
+ 0
+
+ name
+ punctuation.definition.map.end.clojure
+
+
+ name
+ meta.expression.map.clojure
+ patterns
+
+
+ include
+ #all
+
+
+
+
+ include
+ #parameters_body
+
+
+
+
+ begin
+ (?=#\{)
+ end
+ (?=\))
+ name
+ meta.structure.multi_method_exp.set.clojure
+ patterns
+
+
+ include
+ #set
+
+
+ include
+ #parameters_body
+
+
+
+
+ begin
+ (?=")|(?=\\)|(?=\:)|(?=\#")
+ end
+ (?=\))
+ name
+ meta.structure.multi_method_exp.string.clojure
+ patterns
+
+
+ include
+ #string
+
+
+ include
+ #parameters_body
+
+
+
+
+ begin
+ (?=[a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ comment
+ symbol matching
+ end
+ (?=\))
+ name
+ meta.structure.multi_method_exp.symbole.clojure
+ patterns
+
+
+ begin
+ (?=[a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ end
+ (?<=[a-zA-Z+!\-_?0-9*~#@'`/.$=])(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ patterns
+
+
+ include
+ #symbol_java_inherited_class
+
+
+ include
+ #keyword
+
+
+ include
+ #operator
+
+
+ include
+ #number
+
+
+ include
+ #symbol
+
+
+
+
+ begin
+ (?![a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ end
+ (?=\))
+ patterns
+
+
+ include
+ #parameters_body
+
+
+
+
+
+
+
+
+
+
+ comment
+ Need to match a single expression like binding-exp
+
+
+
+ function_name
+
+ begin
+ (?=[a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ comment
+ symbol matching
+ end
+ (?![a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ name
+ entity.name.function.clojure
+ patterns
+
+
+ include
+ #keyword
+
+
+ include
+ #operator
+
+
+ begin
+ -(?=[a-zA-Z+!\-_?*~#@'`/.$=])
+ beginCaptures
+
+ 0
+
+ name
+ keyword.operator.prefix.genclass.clojure
+
+
+ end
+ (?![a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ patterns
+
+
+ include
+ #symbol
+
+
+
+
+ include
+ #symbol
+
+
+
+ genclass_parameters
+
+ patterns
+
+
+ include
+ #gencommon_parameters
+
+
+ begin
+ (:extends)\s+
+ beginCaptures
+
+ 1
+
+ name
+ support.other.keyword.genclass.clojure
+
+
+ end
+ (?![a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ name
+ meta.other.genclass.extends.clojure
+ patterns
+
+
+ include
+ #symbol_java_inherited_class
+
+
+
+
+ begin
+ (:implements)\s+(\[)
+ beginCaptures
+
+ 1
+
+ name
+ support.other.keyword.genclass.clojure
+
+
+ end
+ \]
+ name
+ meta.other.genclass.implements.clojure
+ patterns
+
+
+ include
+ #symbol_java_inherited_class
+
+
+ include
+ #all
+
+
+
+
+ begin
+ (:constructors)\s+(\{)
+ beginCaptures
+
+ 1
+
+ name
+ support.other.keyword.genclass.clojure
+
+
+ end
+ \}
+ name
+ meta.other.genclass.constructors.clojure
+ patterns
+
+
+ begin
+ \[
+ end
+ \]
+ name
+ meta.other.genclass.constructor.signature.clojure
+ patterns
+
+
+ begin
+ (?=[a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ comment
+ TODO: make a rule java Class (storage)
+ end
+ (?![a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ name
+ storage.type.java.clojure
+ patterns
+
+
+ include
+ #symbol
+
+
+
+
+ include
+ #all
+
+
+
+
+ include
+ #all
+
+
+
+
+ begin
+ (:exposes)\s+(\{)
+ beginCaptures
+
+ 1
+
+ name
+ support.other.keyword.genclass.clojure
+
+
+ end
+ \}
+ name
+ meta.other.genclass.exposes.clojure
+ patterns
+
+
+ begin
+ \{
+ end
+ \}
+ name
+ meta.other.genclass.exposes.get_set.clojure
+ patterns
+
+
+ match
+ :(get|set)
+ name
+ support.other.keyword.genclass.clojure
+
+
+ include
+ #all
+
+
+
+
+ include
+ #all
+
+
+
+
+ captures
+
+ 0
+
+ name
+ support.other.keyword.genclass.clojure
+
+
+ match
+ :(init|main|factory|state|prefix|load-impl-ns|implements|constructors|exposes|impl-ns|exposes-methods|methods)(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])
+
+
+ include
+ #all
+
+
+
+ gencommon_parameters
+
+ patterns
+
+
+ include
+ #comment
+
+
+ begin
+ (:name)\s+(?=[a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ beginCaptures
+
+ 1
+
+ name
+ support.other.keyword.genclass.clojure
+
+
+ end
+ (?![a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ name
+ meta.other.genclass.name.clojure
+ patterns
+
+
+ begin
+ (?=[a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ end
+ (?![a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ name
+ entity.name.namespace.clojure
+ patterns
+
+
+ include
+ #symbol
+
+
+
+
+
+
+ begin
+ (:methods)\s+(\[)
+ beginCaptures
+
+ 1
+
+ name
+ support.other.keyword.genclass.clojure
+
+
+ end
+ \]
+ name
+ meta.other.genclass.methods.clojure
+ patterns
+
+
+ begin
+ \[
+ end
+ \]
+ name
+ meta.other.genclass.method.signature.clojure
+ patterns
+
+
+ begin
+ \[
+ end
+ \]
+ name
+ meta.other.genclass.method.args.signature.clojure
+ patterns
+
+
+ begin
+ (?=[a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ comment
+ TODO: make a rule java Class (storage)
+ end
+ (?![a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ name
+ storage.type.java.clojure
+ patterns
+
+
+ include
+ #symbol
+
+
+
+
+ include
+ #all
+
+
+
+
+ begin
+ (?=[a-zA-Z+!\-_?0-9*~#@'`/.$=]+\s*])
+ end
+ .|$
+ name
+ storage.type.java.genclass.return_type.clojure
+ patterns
+
+
+ include
+ #symbol
+
+
+
+
+ include
+ #all
+
+
+
+
+ include
+ #all
+
+
+
+
+
+ geninterface_parameters
+
+ patterns
+
+
+ include
+ #gencommon_parameters
+
+
+ begin
+ (:extends)\s+(\[)
+ beginCaptures
+
+ 1
+
+ name
+ support.other.keyword.genclass.clojure
+
+
+ end
+ \]
+ name
+ meta.other.genclass.implements.clojure
+ patterns
+
+
+ include
+ #symbol_java_inherited_class
+
+
+ include
+ #all
+
+
+
+
+
+ keyword
+
+ patterns
+
+
+ match
+ (?<![*+!_?\-])\b((if-not|if|cond|do|let|loop|recur|throw|try|catch|finally|new|trampoline)\b|(set!|swap!|compare-and-set!))(?![*+!_?\-])
+ name
+ keyword.control.clojure
+
+
+ match
+ (?<![*+!_?\-])\b(monitor-enter|monitor-exit|assoc|touch|drop|take|concat|prn|into|cons|first|flatten|rest|frest|rrest|second|lazy-cat|lazy-cons|conj|await|range|iterate)\b(?![*+!_?\-])
+ name
+ keyword.other.clojure
+
+
+ match
+ (?<![*+!_?\-])\b(str|print(ln)?|eval|def|defmacro|defn|quote|var|fn|defmulti|defmethod|map|list|hash-map|vector|agent|declare|intern|macroexpand|macroexpand-1)\b(?![*+!_?\-])
+ name
+ storage.clojure
+
+
+ match
+ (?<![*+!_?\-])\b(->|\.\.|amap|and|areduce|assert|binding|comment|cond|definline|(def[a-z\-]*)|defmatch|defmethod|defmulti|defn|defn-|defonce|defstruct|delay|doc|doseq|dosync|dotimes|doto|fn|for|if-let|lazy-cons|let|locking|loop|memfn|ns|or|prefer-method|proxy-super|proxy|refer-clojure|remove-method|sync|time|when-first|when-let|when-not|when|while|with-in-str|with-local-vars|with-open|with-out-str|with-precision|memoize)\b(?![*+!_?\-])
+ name
+ support.function.match.clojure
+
+
+ captures
+
+ 2
+
+ name
+ keyword.other.mark.clojure
+
+
+ match
+ (?<![*+!_?\-])\b(rational|associative|branch|class|coll|contains|decimal|delay|distinct|empty|end|even|every|false|float|fn|identical|instance|integer|isa|keyword|list|map|neg|nil|not-any|not-every|number|odd|pos|ratio|reversible|seq|sequential|set|sorted|special-symbol|string|symbol|true|var|zero|vector|ifn)(\?)(?![*+!_?\-])
+ name
+ support.function.tester.clojure
+
+
+ captures
+
+ 2
+
+ name
+ keyword.other.mark.clojure
+
+ 3
+
+ name
+ keyword.other.mark.clojure
+
+ 4
+
+ name
+ keyword.other.mark.clojure
+
+
+ match
+ (?<![*+!_?\-])\b(not(=)|list(\*)|io(!))(?![*+!_?\-])
+ name
+ support.function.clojure
+
+
+ match
+ (?<![*+!_?\-])\b(zipper|zipmap|xml-zip|xml-seq|with-meta|vector-zip|vector|vec|var-set|var-get|vals|val|use|update-proxy|update-in|up|union|underive|unchecked-subtract|unchecked-negate|unchecked-multiply|unchecked-inc|unchecked-divide|unchecked-dec|unchecked-add|tree-seq|to-array-2d|to-array|test|take-while|take-nth|symbol|supers|subvec|subseq|subs|struct-map|struct|str|split-with|split-at|sorted-set|sorted-map-by|sorted-map|sort-by|sort|some|slurp|shutdown-agents|short|set-validator|set|seque|seq-zip|seq|send-off|send|select-keys|select|rsubseq|rseq|root|rights|right|rfirst|reverse|resultset-seq|resolve|require|replicate|replace|repeatedly|repeat|rename-keys|rename|remove-ns|remove|rem|refer|ref-set|ref|reduce|read-string|read-line|read|re-seq|re-pattern|re-matches|re-matcher|re-groups|re-find|rationalize|rand-int|rand|quot|pvec|psummary|psort|proxy-mappings|project|prn-str|println-str|println|printf|print-str|print|preduce|pr-str|pr|pop|pmin|pmax|pmap|pfilter-nils|pfilter-dupes|peek|pdistinct|path|partition|partial|parse|parents|par|pany|num|nthrest|nth|ns-unmap|ns-unalias|ns-resolve|ns-refers|ns-publics|ns-name|ns-map|ns-interns|ns-imports|ns-aliases|not=|not-empty|not|node|next|newline|namespace|name|min-key|min|meta|merge-with|merge|max-key|max|matchexpand-1|matchexpand|mapcat|map-invert|map|make-node|make-hierarchy|make-array|long-array|long|loaded-libs|load-string|load-reader|load-file|load|list*|list|line-seq|lefts|left|last|keyword|keys|key|join|iterator-seq|into-array|intersection|interpose|interleave|int-array|int|inspect-tree|inspect-table|insert-right|insert-left|insert-child|index|inc|in-ns|import|identity|hash-set|hash-map|hash|get-validator|get-proxy-class|get-in|get|gensym|gen-class|gen-interface|gen-and-save-class|gen-and-load-class|format|force|fnseq|flush|float-array|float|find-var|find-ns|find-doc|find|filter|file-seq|ffirst|eval|enumeration-seq|ensure|empty|edit|drop-while|drop-last|down|double-array|double|dorun|doall|distinct|dissoc|disj|difference|descendants|derive|deref|dec|cycle|create-struct|create-ns|count|construct-proxy|constantly|conj|complement|compare|comparator|comp|commute|clojure.set|clojure.parallel|clojure.inspector|clear-agent-errors|class|children|char|cast|cache-seq|byte|butlast|boolean|bit-xor|bit-test|bit-shift-right|bit-shift-left|bit-set|bit-or|bit-not|bit-flip|bit-clear|bit-and-not|bit-and|bigint|bigdec|bean|bases|await-for|assoc-in|aset-short|aset-long|aset-int|aset-float|aset-double|aset-char|aset-byte|aset-boolean|aset|array-map|apply|append-child|ancestors|alter-var-root|alter|all-ns|alias|alength|aget|agent-errors|agent|add-classpath|aclone|accessor|compile|longs|doubles|ints|floats|atom)\b(?![*+!_?\-])
+ name
+ support.function.clojure
+
+
+ match
+ (?<![*+!_?\-])\b(true|false|nil)\b(?![*+!_?\-])
+ name
+ constant.language.clojure
+
+
+ match
+ (\(\)|{}|\[\]|#{})
+ name
+ constant.language.clojure
+
+
+ comment
+ TODO : clean this ?
+ match
+ (?<![*+!_?\-])\b:(private|doc|test|tag)\b(?![*+!_?\-])
+ name
+ storage.modifier.clojure
+
+
+ comment
+ TODO : clean this ?
+ match
+ (?<![*+!_?\-])\b:(file|line|name|ns|match|argslist)\b(?![*+!_?\-])
+ name
+ support.variable.clojure
+
+
+ match
+ (?<![*+!_?\-])\*(agent|allow-unresolved-vars|command-line-args|compile-files|compile-path|err|file|flush-on-newline|in|macro-meta|math-context|ns|out|print-dup|print-length|print-level|print-meta|print-readably|proxy-classes|use-context-classloader|warn-on-reflection)\*(?![*+!_?\-])
+ name
+ support.variable.global.clojure
+
+
+
+ lambda
+
+ patterns
+
+
+ begin
+ \(\s*(fn)\s+
+ beginCaptures
+
+ 1
+
+ name
+ storage.type.function.type.clojure
+
+
+ end
+ \)
+ name
+ meta.function.lambda.clojure
+ patterns
+
+
+ include
+ #comment
+
+
+ include
+ #function_name
+
+
+ include
+ #function_body
+
+
+
+
+ begin
+ (#)\(
+ beginCaptures
+
+ 1
+
+ name
+ storage.type.function.type.clojure
+
+
+ end
+ \)
+ name
+ meta.function.lambda.clojure
+ patterns
+
+
+ include
+ #sexpr_special
+
+
+ include
+ #all
+
+
+
+
+
+ macro
+
+ begin
+ \(\s*(\b(defmacro\-?))\s+
+ beginCaptures
+
+ 1
+
+ name
+ storage.type.function.type.clojure
+
+
+ end
+ \)
+ name
+ meta.function.macro.clojure
+ patterns
+
+
+ include
+ #comment
+
+
+ include
+ #metadata
+
+
+ match
+ \s*
+
+
+ include
+ #function_name
+
+
+ include
+ #function_body_comment
+
+
+
+ map
+
+ begin
+ {(?!})
+ beginCaptures
+
+ 0
+
+ name
+ punctuation.definition.map.begin.clojure
+
+
+ end
+ (?<!{)}
+ endCaptures
+
+ 0
+
+ name
+ punctuation.definition.map.end.clojure
+
+
+ name
+ meta.expression.map.clojure
+ patterns
+
+
+ include
+ #all
+
+
+
+ metadata
+
+ patterns
+
+
+ begin
+ #?\^{
+ beginCaptures
+
+ 0
+
+ name
+ comment.punctuation.definition.metadata.begin.clojure
+
+
+ end
+ }
+ endCaptures
+
+ 0
+
+ name
+ comment.punctuation.definition.metadata.end.clojure
+
+
+ name
+ punctuation.metadata.map.clojure
+ patterns
+
+
+ include
+ #metadata_patterns
+
+
+
+
+ begin
+ #?\^"
+ beginCaptures
+
+ 0
+
+ name
+ comment.punctuation.definition.metadata.begin.clojure
+
+
+ end
+ "
+ endCaptures
+
+ 0
+
+ name
+ comment.punctuation.definition.metadata.end.clojure
+
+
+ name
+ string.metadata.clojure
+
+
+ captures
+
+ 1
+
+ name
+ comment.punctuation.definition.metadata.begin.clojure
+
+ 2
+
+ name
+ storage.type.java.clojure
+
+
+ match
+ (#?\^)([a-zA-Z+!\-_?0-9*/.$=]+)
+ name
+ punctuation.metadata.class.clojure
+
+
+
+ metadata_patterns
+
+ patterns
+
+
+ match
+ (:tag|:doc|:arglists|:private|:macro|:name|:ns|:inline-arities|:inline|:line|:file)(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ name
+ support.other.keyword.namespace.clojure
+
+
+ match
+ (?<=:tag)\s+([a-zA-Z+!\-_?0-9*/.$=]+)
+ name
+ storage.type.java.clojure
+
+
+ begin
+ (?<=:doc)\s+"
+ beginCaptures
+
+ 0
+
+ name
+ string.quoted.double.begin.clojure
+
+
+ end
+ "
+ endCaptures
+
+ 0
+
+ name
+ string.quoted.double.end.clojure
+
+
+ name
+ string.docstring.clojure
+ patterns
+
+
+ include
+ #string_escape
+
+
+
+
+ include
+ #all
+
+
+
+ namespace
+
+ begin
+ \(\s*(ns)\b
+ beginCaptures
+
+ 1
+
+ name
+ support.function.namespace.clojure
+
+
+ end
+ \)
+ name
+ meta.function.namespace.clojure
+ patterns
+
+
+ begin
+ (?=[a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ end
+ (?![a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ name
+ entity.name.namespace.clojure
+ patterns
+
+
+ include
+ #symbol
+
+
+
+
+ include
+ #namespace_body
+
+
+
+ namespace_body
+
+ patterns
+
+
+ match
+ (:refer-clojure|:require|:use|:import|:load|:exclude|:as|:only)(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ name
+ support.other.keyword.namespace.clojure
+
+
+ begin
+ \(\s*(:gen-class)
+ beginCaptures
+
+ 1
+
+ name
+ support.other.keyword.genclass.clojure
+
+
+ end
+ \)
+ name
+ meta.function.genclass_form.clojure
+ patterns
+
+
+ include
+ #genclass_parameters
+
+
+
+
+ include
+ #symbol
+
+
+ include
+ #string
+
+
+ begin
+ \(
+ end
+ \)
+ patterns
+
+
+ include
+ #namespace_body
+
+
+
+
+ begin
+ \[
+ end
+ \]
+ patterns
+
+
+ include
+ #namespace_body
+
+
+
+
+
+ number
+
+ patterns
+
+
+ captures
+
+ 2
+
+ name
+ keyword.operator.arithmetic.ratio.clojure
+
+
+ match
+ (-|\+)?\b[0-9]+(/)[0-9]+\b
+ name
+ constant.numeric.float.ratio.clojure
+
+
+ match
+ [-+]?\b[0-9]+((\.[0-9]+([eE][-+]?[0-9]+)?)|((\.[0-9]+)?[eE][-+]?[0-9]+))?\b
+ name
+ constant.numeric.float.clojure
+
+
+ match
+ [-+]?\b[0-9]+(((\.[0-9])?+([eE][-+]?[0-9]+)?)|((\.[0-9]+)?[eE][-+]?[0-9]+))[M]?\b
+ name
+ constant.numeric.big_decimal.clojure
+
+
+ captures
+
+ 2
+
+ name
+ keyword.operator.arithmetic.octal.clojure
+
+ 4
+
+ name
+ invalid.illegal.integer.octal.clojure
+
+ 5
+
+ name
+ invalid.illegal.integer.octal.clojure
+
+
+ match
+ (-|\+)?\b(0)([0-7]+|([89]))([0-9]*)\b
+ name
+ constant.numeric.integer.octal.clojure
+
+
+ match
+ (-|\+)?\b[0-9]+\b
+ name
+ constant.numeric.integer.clojure
+
+
+ captures
+
+ 2
+
+ name
+ keyword.operator.arithmetic.hexa.clojure
+
+
+ match
+ (-|\+)?\b(0[xX])[0-9A-Fa-f]+\b
+ name
+ constant.numeric.integer.hexa.clojure
+
+
+
+ operator
+
+ patterns
+
+
+ match
+ (?<![a-zA-Z0-9*+!_?\-])(\*|/|\<|\<=|=|==|\>|\>=|-\>)(?![a-zA-Z0-9*+!_?\-])
+ name
+ keyword.operator.clojure
+
+
+ match
+ (?<![a-zA-Z0-9*+!_?\-])(-|\+)(?![a-zA-Z0-9*+!_?\-])
+ name
+ keyword.operator.clojure
+
+
+ match
+ (?<![a-zA-Z0-9*+!_?\-])(\.|\.\.)(?![a-zA-Z0-9*+!_?\-])
+ name
+ keyword.operator.class.clojure
+
+
+ match
+ %(\d+|&)?
+ name
+ variable.parameter.literal.clojure
+
+
+ include
+ #operator_special
+
+
+
+ operator_special
+
+ patterns
+
+
+ match
+ `|~@|~
+ name
+ keyword.control.operator.clojure
+
+
+ match
+ #'|@
+ name
+ storage.type.function.type.clojure
+
+
+ match
+ '
+ name
+ constant.other.quote
+
+
+ match
+ \^
+ name
+ constant.other.metadata.read.clojure
+
+
+
+ parameters
+
+ begin
+ \[
+ beginCaptures
+
+ 0
+
+ name
+ punctuation.definition.vector.begin.clojure
+
+
+ end
+ \]
+ endCaptures
+
+ 0
+
+ name
+ punctuation.definition.vector.end.clojure
+
+
+ name
+ meta.parameters.vector.clojure
+ patterns
+
+
+ match
+ \&
+ name
+ keyword.operator.varargs.clojure
+
+
+ match
+ (:as)(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ name
+ keyword.operator.symbolargs.clojure
+
+
+ include
+ #comment
+
+
+ include
+ #metadata
+
+
+ include
+ #parameters_variable
+
+
+ include
+ #parameters
+
+
+ include
+ #parameters_map
+
+
+
+ parameters_body
+
+ name
+ meta.function.body
+ patterns
+
+
+ include
+ #parameters_function
+
+
+ begin
+ (?<=\])
+ end
+ (?=\))
+ name
+ meta.function.body.code.clojure
+ patterns
+
+
+ include
+ #all
+
+
+
+
+
+ parameters_function
+
+ begin
+ \[
+ beginCaptures
+
+ 0
+
+ name
+ punctuation.definition.vector.begin.clojure
+
+
+ end
+ \]
+ endCaptures
+
+ 0
+
+ name
+ punctuation.definition.vector.end.clojure
+
+
+ name
+ meta.function.parameters.vector.clojure
+ patterns
+
+
+ match
+ \&
+ name
+ keyword.operator.varargs.clojure
+
+
+ match
+ (:as)(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ name
+ keyword.operator.symbolargs.clojure
+
+
+ include
+ #comment
+
+
+ include
+ #metadata
+
+
+ include
+ #parameters_variable
+
+
+ include
+ #parameters
+
+
+ include
+ #parameters_map
+
+
+
+ parameters_map
+
+ begin
+ \{
+ beginCaptures
+
+ 0
+
+ name
+ punctuation.definition.map.begin.clojure
+
+
+ end
+ \}
+ endCaptures
+
+ 0
+
+ name
+ punctuation.definition.map.end.clojure
+
+
+ name
+ meta.function.parameters.map.clojure
+ patterns
+
+
+ include
+ #parameters_variable
+
+
+ match
+ (:as|:or|:keys|:strs|:syms)(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ name
+ keyword.operator.symbolargs.clojure
+
+
+ include
+ #parameters
+
+
+ include
+ #parameters_map
+
+
+ include
+ #all
+
+
+
+ parameters_variable
+
+ begin
+ (?=[a-zA-Z+!\-_?0-9*~@'`/.$=])
+ comment
+ symbol matching TODO:operator number => error ?
+ end
+ (?![a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ name
+ variable.parameter.clojure
+ patterns
+
+
+ include
+ #keyword
+
+
+ include
+ #operator
+
+
+ include
+ #number
+
+
+ include
+ #symbol
+
+
+
+ set
+
+ begin
+ #{
+ beginCaptures
+
+ 0
+
+ name
+ punctuation.definition.set.begin.clojure
+
+
+ end
+ }
+ endCaptures
+
+ 0
+
+ name
+ punctuation.definition.set.end.clojure
+
+
+ name
+ meta.expression.set.clojure
+ patterns
+
+
+ include
+ #all
+
+
+
+ sexpr
+
+ begin
+ \((?!\))
+ end
+ (?<!\()\)
+ name
+ meta.sexpr.clojure
+ patterns
+
+
+ include
+ #sexpr_special
+
+
+ include
+ #all
+
+
+
+ sexpr_special
+
+ patterns
+
+
+ begin
+ (?<=\()\s*(let|loop|doseq|dotimes|binding|for|if-let|when-let|with-local-vars|with-open)\s+(?=\[)
+ beginCaptures
+
+ 1
+
+ name
+ keyword.control.clojure
+
+
+ end
+ (?=\))
+ name
+ meta.function.let_form.clojure
+ patterns
+
+
+ include
+ #bindings_form
+
+
+
+
+ begin
+ (?<=\()\s*(def|declare|defstruct|defonce|defmulti)\s+
+ beginCaptures
+
+ 1
+
+ name
+ storage.type.variable.clojure
+
+
+ end
+ (?=\))
+ name
+ meta.function.def_form.clojure
+ patterns
+
+
+ include
+ #metadata
+
+
+ match
+ \s*
+
+
+ include
+ #function_name
+
+
+ begin
+ (?<=$|.)
+ end
+ (?=\))
+ patterns
+
+
+ include
+ #all
+
+
+
+
+
+
+ begin
+ (?<=\()\s*(prefer-method)\s+
+ beginCaptures
+
+ 1
+
+ name
+ storage.type.variable.clojure
+
+
+ end
+ (?=\))
+ name
+ meta.function.def_form.clojure
+ patterns
+
+
+ include
+ #metadata
+
+
+ match
+ \s*
+
+
+ include
+ #function_name
+
+
+ begin
+ (?<=$|.)
+ end
+ (?=\))
+ patterns
+
+
+ include
+ #symbol_java_inherited_class
+
+
+ include
+ #all
+
+
+
+
+
+
+ begin
+ (?<=\()\s*(instance(\?))\s+
+ beginCaptures
+
+ 1
+
+ name
+ support.function.tester.clojure
+
+ 2
+
+ name
+ keyword.other.mark.clojure
+
+
+ end
+ (?=\))
+ name
+ meta.function.isInstance_form.clojure
+ patterns
+
+
+ include
+ #symbol_java_class_form_body
+
+
+
+
+ begin
+ (?<=\()\s*(cast)\s+
+ beginCaptures
+
+ 1
+
+ name
+ support.function.clojure
+
+
+ end
+ (?=\))
+ name
+ meta.function.cast_form.clojure
+ patterns
+
+
+ include
+ #symbol_java_class_form_body
+
+
+
+
+ begin
+ (?<=\()\s*((new)\s+|(?=[a-zA-Z][a-zA-Z.]*\.(\s+|$|\))))
+ beginCaptures
+
+ 2
+
+ name
+ keyword.control.clojure
+
+
+ end
+ (?=\))
+ name
+ meta.function.new_form.clojure
+ patterns
+
+
+ begin
+ (?=([a-z]+\.)*[A-Z][a-zA-Z]*(\$[A-Z][a-zA-Z]*)?)
+ end
+ (?![a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ name
+ storage.type.java.clojure
+ patterns
+
+
+ include
+ #symbol
+
+
+
+
+ begin
+ (?![a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ end
+ (?=\))
+ patterns
+
+
+ include
+ #all
+
+
+
+
+ include
+ #all
+
+
+
+
+ begin
+ (?<=\()\s*((\.\.?)\s+(?=([a-z]+\.)*[A-Z][a-zA-Z]*(\$[A-Z][a-zA-Z]*)?))
+ beginCaptures
+
+ 2
+
+ name
+ keyword.control.clojure
+
+
+ end
+ (?=\))
+ name
+ meta.function.member_access_form.clojure
+ patterns
+
+
+ begin
+ (?=[a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ end
+ (?![a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ name
+ storage.type.java.clojure
+ patterns
+
+
+ include
+ #symbol
+
+
+
+
+ begin
+ (?![a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ end
+ (?=\))
+ patterns
+
+
+ include
+ #all
+
+
+
+
+ include
+ #all
+
+
+
+
+ begin
+ (?<=\()\s*(gen-class)\s+
+ beginCaptures
+
+ 1
+
+ name
+ support.function.clojure
+
+
+ end
+ (?=\))
+ name
+ meta.function.genclass_form.clojure
+ patterns
+
+
+ include
+ #genclass_parameters
+
+
+
+
+ begin
+ (?<=\()\s*(gen-interface)\s+
+ beginCaptures
+
+ 1
+
+ name
+ support.function.clojure
+
+
+ end
+ (?=\))
+ name
+ meta.function.geninterface_form.clojure
+ patterns
+
+
+ include
+ #geninterface_parameters
+
+
+
+
+ begin
+ (?<=\()\s*((catch)\s+)
+ beginCaptures
+
+ 2
+
+ name
+ keyword.control.clojure
+
+
+ end
+ (?=\))
+ name
+ meta.function.catch_form.clojure
+ patterns
+
+
+ begin
+ (?=[a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ end
+ (?![a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ patterns
+
+
+ include
+ #symbol_java_class_form_body
+
+
+
+
+ begin
+ \s+(?=[a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ end
+ (?![a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ name
+ variable.parameter.clojure
+ patterns
+
+
+ include
+ #symbol
+
+
+
+
+ begin
+ (?![a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ end
+ (?=\))
+ patterns
+
+
+ include
+ #all
+
+
+
+
+ include
+ #all
+
+
+
+
+ begin
+ (?<=\()\s*(((set|swap|compare-and-set)(\!))\s+)
+ beginCaptures
+
+ 2
+
+ name
+ keyword.control.clojure
+
+ 3
+
+ name
+ keyword.other.mark.clojure
+
+
+ end
+ (?=\))
+ name
+ meta.function.setvar_form.clojure
+ patterns
+
+
+ begin
+ (?=[a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ end
+ (?![a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ name
+ variable.parameter.clojure
+ patterns
+
+
+ include
+ #symbol
+
+
+
+
+ begin
+ (?![a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ end
+ (?=\))
+ patterns
+
+
+ include
+ #all
+
+
+
+
+ include
+ #all
+
+
+
+
+ begin
+ (?<=\()\s*(proxy)\s+
+ beginCaptures
+
+ 1
+
+ name
+ keyword.control.clojure
+
+
+ end
+ (?=\))
+ name
+ meta.function.proxy_form.clojure
+ patterns
+
+
+ include
+ #comment
+
+
+ begin
+ (?=\[)
+ end
+ (?=\))
+ patterns
+
+
+ include
+ #comment
+
+
+ begin
+ \[
+ end
+ \]
+ patterns
+
+
+ begin
+ (?=([a-z]+\.)*[A-Z][a-zA-Z]*)
+ end
+ (?![a-zA-Z.])
+ name
+ entity.other.inherited-class.java.proxy.clojure
+ patterns
+
+
+ include
+ #symbol
+
+
+
+
+ include
+ #all
+
+
+
+
+ begin
+ (?<=\])
+ end
+ (?=\))
+ patterns
+
+
+ include
+ #comment
+
+
+ begin
+ (?=\[)
+ end
+ (?=\))
+ name
+ meta.function.body.proxy_form.clojure
+ patterns
+
+
+ include
+ #comment
+
+
+ include
+ #parameters
+
+
+ begin
+ (?<=\])
+ end
+ (?=\))
+ patterns
+
+
+ include
+ #comment
+
+
+ begin
+ \(\s*
+ end
+ \)
+ name
+ meta.function.proxy.method.clojure
+ patterns
+
+
+ include
+ #comment
+
+
+ include
+ #function_name
+
+
+ include
+ #function_body_comment
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ string
+
+ patterns
+
+
+ begin
+ "
+ beginCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.begin.clojure
+
+
+ end
+ "
+ endCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.end.clojure
+
+
+ name
+ string.quoted.double.clojure
+ patterns
+
+
+ include
+ #string_escape
+
+
+
+
+ match
+ \\(u[0-9a-fA-F]{4}|newline|tab|space|backspace|formfeed|return|[^\s])
+ name
+ constant.character.escape.clojure
+
+
+ begin
+ (\:{1,2})(?=[a-zA-Z+!\-_?0-9*/.$=])
+ beginCaptures
+
+ 1
+
+ name
+ keyword.operator.symbole.clojure
+
+
+ comment
+ . is OK in symbol ?
+ end
+ (?![a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ name
+ constant.string.symbole.clojure
+ patterns
+
+
+ include
+ #symbol
+
+
+
+
+ begin
+ #"
+ beginCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.begin.clojure
+
+
+ end
+ "
+ endCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.end.clojure
+
+
+ name
+ string.regexp.clojure
+ patterns
+
+
+ include
+ source.regexp.oniguruma
+
+
+
+
+
+ string_escape
+
+ captures
+
+ 2
+
+ name
+ invalid.illegal.escape.string.clojure
+
+
+ match
+ \\(u[0-9a-fA-F]{4}|b|t|n|f|r|"|'|\\|[0-3]?[0-7]{1,2}|(.))
+ name
+ constant.character.escape.clojure
+
+ symbol
+
+ patterns
+
+
+ match
+ \b[A-Z_]{2,}\b
+ name
+ constant.other.java.clojure
+
+
+ match
+ (?<![a-zA-Z+!\-_?0-9*])\*[a-z\-]{2,}\*(?![a-zA-Z+!\-_?0-9*])
+ name
+ source.symbol.global.clojure
+
+
+ begin
+ (?=[a-zA-Z+!\-_?0-9*=])
+ end
+ (?![a-zA-Z+!\-_?0-9*=])
+ name
+ source.symbol.clojure
+ patterns
+
+
+ begin
+ [0-9]
+ end
+ (?![a-zA-Z+!\-_?0-9*=])
+ name
+ invalid.illegal.symbol.clojure
+
+
+ begin
+ [a-zA-Z]
+ end
+ ([+!\-_?*=#])?(?![a-zA-Z+!\-_?0-9*=])
+ endCaptures
+
+ 1
+
+ name
+ keyword.other.mark.clojure
+
+
+
+
+ begin
+ [+!\-_?*=]
+ end
+ (?![a-zA-Z+!\-_?0-9*=])
+
+
+
+
+ match
+ (?<=[a-zA-Z+!\-_?0-9*])\.(?=[a-zA-Z+!\-_?0-9*])
+ name
+ keyword.operator.classpath.clojure
+
+
+ match
+ (?<=[a-zA-Z+!\-_?0-9*])(/|\$)(?=[a-zA-Z+!\-_?0-9*])
+ name
+ keyword.operator.qualified.clojure
+
+
+
+ symbol_java_class
+
+ begin
+ (?=([a-z]+\.)*[A-Z][a-zA-Z]*(\$[A-Z][a-zA-Z]*)?)
+ comment
+ TODO : use it
+ end
+ (?![a-zA-Z.$])
+ name
+ storage.type.java.clojure
+ patterns
+
+
+ include
+ #symbol
+
+
+
+ symbol_java_class_form_body
+
+ patterns
+
+
+ begin
+ (?=[a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ end
+ (?![a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ patterns
+
+
+ include
+ #symbol_java_inherited_class
+
+
+
+
+ begin
+ (?![a-zA-Z+!\-_?0-9*~#@'`/.$=])
+ end
+ (?=\))
+ patterns
+
+
+ include
+ #all
+
+
+
+
+ include
+ #all
+
+
+
+ symbol_java_inherited_class
+
+ begin
+ (?=([a-z]+\.)*[A-Z][a-zA-Z]*(\$[A-Z][a-zA-Z]*)?)
+ end
+ (?![a-zA-Z.$])
+ name
+ entity.other.inherited-class.java.clojure
+ patterns
+
+
+ include
+ #symbol
+
+
+
+ vector
+
+ begin
+ \[(?!\])
+ beginCaptures
+
+ 0
+
+ name
+ punctuation.definition.vector.begin.clojure
+
+
+ end
+ (?<!\[)\]
+ endCaptures
+
+ 0
+
+ name
+ punctuation.definition.vector.end.clojure
+
+
+ name
+ meta.expression.vector.clojure
+ patterns
+
+
+ include
+ #all
+
+
+
+
+ scopeName
+ source.clojure
+ uuid
+ 6A87759F-F746-4E84-B788-965B46363202
+
+
diff --git a/sublime/Packages/Clojure/Clojure.tmLanguage.cache b/sublime/Packages/Clojure/Clojure.tmLanguage.cache
new file mode 100644
index 0000000..f35df90
Binary files /dev/null and b/sublime/Packages/Clojure/Clojure.tmLanguage.cache differ
diff --git a/sublime/Packages/Clojure/Comment.tmPreferences b/sublime/Packages/Clojure/Comment.tmPreferences
new file mode 100644
index 0000000..0623946
--- /dev/null
+++ b/sublime/Packages/Clojure/Comment.tmPreferences
@@ -0,0 +1,24 @@
+
+
+
+
+ name
+ Comment
+ scope
+ source.clojure
+ settings
+
+ shellVariables
+
+
+ name
+ TM_COMMENT_START
+ value
+ ;
+
+
+
+ uuid
+ 40910C79-E8F5-4930-8493-EC63AC6AAF0F
+
+
diff --git a/sublime/Packages/Clojure/Comment.tmPreferences.cache b/sublime/Packages/Clojure/Comment.tmPreferences.cache
new file mode 100644
index 0000000..6e8dba4
Binary files /dev/null and b/sublime/Packages/Clojure/Comment.tmPreferences.cache differ
diff --git a/sublime/Packages/Clojure/Symbol List.tmPreferences b/sublime/Packages/Clojure/Symbol List.tmPreferences
new file mode 100644
index 0000000..0b69f1c
--- /dev/null
+++ b/sublime/Packages/Clojure/Symbol List.tmPreferences
@@ -0,0 +1,17 @@
+
+
+
+
+ name
+ Symbol List
+ scope
+ entity.global.clojure
+ settings
+
+ showInSymbolList
+ 1
+
+ uuid
+ 3C7566E1-E339-4F14-813D-12B3EA6A38BD
+
+
diff --git a/sublime/Packages/Clojure/Symbol List.tmPreferences.cache b/sublime/Packages/Clojure/Symbol List.tmPreferences.cache
new file mode 100644
index 0000000..6cb2705
Binary files /dev/null and b/sublime/Packages/Clojure/Symbol List.tmPreferences.cache differ
diff --git a/sublime/Packages/Color Scheme - Default/All Hallow's Eve.tmTheme b/sublime/Packages/Color Scheme - Default/All Hallow's Eve.tmTheme
new file mode 100644
index 0000000..47a6797
--- /dev/null
+++ b/sublime/Packages/Color Scheme - Default/All Hallow's Eve.tmTheme
@@ -0,0 +1,277 @@
+
+
+
+
+ author
+ David Heinemeier Hansson
+ name
+ All Hallow's Eve
+ settings
+
+
+ settings
+
+ background
+ #000000
+ caret
+ #FFFFFF
+ foreground
+ #FFFFFF
+ invisibles
+ #404040
+ lineHighlight
+ #333300
+ selection
+ #73597EE0
+
+
+
+ name
+ Text base
+ scope
+ text
+ settings
+
+ background
+ #434242
+ foreground
+ #FFFFFF
+
+
+
+ name
+ Source base
+ scope
+ source
+ settings
+
+ background
+ #000000
+ foreground
+ #FFFFFF
+
+
+
+ name
+ Comment
+ scope
+ comment
+ settings
+
+ foreground
+ #9933CC
+
+
+
+ name
+ Constant
+ scope
+ constant
+ settings
+
+ foreground
+ #3387CC
+
+
+
+ name
+ Keyword
+ scope
+ keyword
+ settings
+
+ fontStyle
+
+ foreground
+ #CC7833
+
+
+
+ name
+ Pre-processor Line
+ scope
+ meta.preprocessor.c
+ settings
+
+ fontStyle
+
+ foreground
+ #D0D0FF
+
+
+
+ name
+ Pre-processor Directive
+ scope
+ keyword.control.import
+ settings
+
+ fontStyle
+
+
+
+
+ name
+ Function name
+ scope
+ entity.name.function
+ settings
+
+ fontStyle
+
+
+
+
+ name
+ Function argument
+ scope
+ variable.parameter
+ settings
+
+ fontStyle
+ italic
+
+
+
+ name
+ Block comment
+ scope
+ source comment.block
+ settings
+
+ background
+ #9B9B9B
+ foreground
+ #FFFFFF
+
+
+
+ name
+ String
+ scope
+ string
+ settings
+
+ foreground
+ #66CC33
+
+
+
+ name
+ String escapes
+ scope
+ string constant.character.escape
+ settings
+
+ foreground
+ #AAAAAA
+
+
+
+ name
+ String (executed)
+ scope
+ string.interpolated
+ settings
+
+ background
+ #CCCC33
+ foreground
+ #000000
+
+
+
+ name
+ Regular expression
+ scope
+ string.regexp
+ settings
+
+ foreground
+ #CCCC33
+
+
+
+ name
+ String (literal)
+ scope
+ string.literal
+ settings
+
+ foreground
+ #CCCC33
+
+
+
+ name
+ String escapes (executed)
+ scope
+ string.interpolated constant.character.escape
+ settings
+
+ foreground
+ #555555
+
+
+
+ name
+ Type name
+ scope
+ entity.name.type
+ settings
+
+ fontStyle
+ underline
+
+
+
+ name
+ Class inheritance
+ scope
+ entity.other.inherited-class
+ settings
+
+ fontStyle
+ italic underline
+
+
+
+ name
+ Tag name
+ scope
+ entity.name.tag
+ settings
+
+ fontStyle
+ underline
+
+
+
+ name
+ Tag attribute
+ scope
+ entity.other.attribute-name
+ settings
+
+ fontStyle
+
+
+
+
+ name
+ Support function
+ scope
+ support.function
+ settings
+
+ fontStyle
+
+ foreground
+ #C83730
+
+
+
+ uuid
+ 37F22BDC-B2F4-11D9-850C-000A95A89C98
+
+
diff --git a/sublime/Packages/Color Scheme - Default/Amy.tmTheme b/sublime/Packages/Color Scheme - Default/Amy.tmTheme
new file mode 100644
index 0000000..b3258c4
--- /dev/null
+++ b/sublime/Packages/Color Scheme - Default/Amy.tmTheme
@@ -0,0 +1,557 @@
+
+
+
+
+ name
+ Amy
+ author
+ William D. Neumann
+ settings
+
+
+ settings
+
+ background
+ #200020
+ caret
+ #7070FF
+ foreground
+ #D0D0FF
+ invisibles
+ #BFBFBF
+ lineHighlight
+ #80000040
+ selection
+ #80000080
+
+
+
+ name
+ Comment
+ scope
+ comment.block
+ settings
+
+ background
+ #200020
+ fontStyle
+ italic
+ foreground
+ #404080
+
+
+
+ name
+ String
+ scope
+ string
+ settings
+
+ foreground
+ #999999
+
+
+
+ name
+ Built-in constant
+ scope
+ constant.language
+ settings
+
+ foreground
+ #707090
+
+
+
+ name
+ Integer
+ scope
+ constant.numeric
+ settings
+
+ foreground
+ #7090B0
+
+
+
+ name
+ Int32 constant
+ scope
+ constant.numeric.integer.int32
+ settings
+
+ fontStyle
+ bold
+
+
+
+ name
+ Int64 constant
+ scope
+ constant.numeric.integer.int64
+ settings
+
+ fontStyle
+ italic
+
+
+
+ name
+ Nativeint constant
+ scope
+ constant.numeric.integer.nativeint
+ settings
+
+ fontStyle
+ bold italic
+
+
+
+ name
+ Floating-point constant
+ scope
+ constant.numeric.floating-point.ocaml
+ settings
+
+ fontStyle
+ underline
+
+
+
+ name
+ Character constant
+ scope
+ constant.character
+ settings
+
+ fontStyle
+
+ foreground
+ #666666
+
+
+
+ name
+ Boolean constant
+ scope
+ constant.language.boolean
+ settings
+
+ foreground
+ #8080A0
+
+
+
+ name
+ Built-in constant
+ scope
+ constant.language
+ settings
+
+
+
+ name
+ User-defined constant
+ scope
+ constant.other
+ settings
+
+
+
+ name
+ Variable
+ scope
+ variable.language, variable.other
+ settings
+
+ fontStyle
+
+ foreground
+ #008080
+
+
+
+ name
+ Keyword
+ scope
+ keyword
+ settings
+
+ foreground
+ #A080FF
+
+
+
+ name
+ Keyword operator
+ scope
+ keyword.operator
+ settings
+
+ foreground
+ #A0A0FF
+
+
+
+ name
+ Keyword decorator
+ scope
+ keyword.other.decorator
+ settings
+
+ foreground
+ #D0D0FF
+
+
+
+ name
+ Floating-point infix operator
+ scope
+ keyword.operator.infix.floating-point.ocaml
+ settings
+
+ fontStyle
+ underline
+
+
+
+ name
+ Floating-point prefix operator
+ scope
+ keyword.operator.prefix.floating-point.ocaml
+ settings
+
+ fontStyle
+ underline
+
+
+
+ name
+ Compiler directives
+ scope
+ keyword.other.directive
+ settings
+
+ fontStyle
+
+ foreground
+ #C080C0
+
+
+
+ name
+ Line-number directives
+ scope
+ keyword.other.directive.line-number
+ settings
+
+ fontStyle
+ underline
+ foreground
+ #C080C0
+
+
+
+ name
+ Control keyword
+ scope
+ keyword.control
+ settings
+
+ foreground
+ #80A0FF
+
+
+
+ name
+ Storage
+ scope
+ storage
+ settings
+
+ foreground
+ #B0FFF0
+
+
+
+ name
+ Variants
+ scope
+ entity.name.type.variant
+ settings
+
+ foreground
+ #60B0FF
+
+
+
+ name
+ Polymorphic variants
+ scope
+ storage.type.variant.polymorphic, entity.name.type.variant.polymorphic
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #60B0FF
+
+
+
+ name
+ Module definitions
+ scope
+ entity.name.type.module
+ settings
+
+ foreground
+ #B000B0
+
+
+
+ name
+ Module type definitions
+ scope
+ entity.name.type.module-type.ocaml
+ settings
+
+ fontStyle
+ underline
+ foreground
+ #B000B0
+
+
+
+ name
+ Support modules
+ scope
+ support.other
+ settings
+
+ foreground
+ #A00050
+
+
+
+ name
+ Class name
+ scope
+ entity.name.type.class
+ settings
+
+ foreground
+ #70E080
+
+
+
+ name
+ Class type
+ scope
+ entity.name.type.class-type
+ settings
+
+ fontStyle
+
+ foreground
+ #70E0A0
+
+
+
+ name
+ Inherited class
+ scope
+ entity.other.inherited-class
+ settings
+
+
+
+ name
+ Function name
+ scope
+ entity.name.function
+ settings
+
+ foreground
+ #50A0A0
+
+
+
+ name
+ Function argument
+ scope
+ variable.parameter
+ settings
+
+ foreground
+ #80B0B0
+
+
+
+ name
+ Token definition (ocamlyacc)
+ scope
+ entity.name.type.token
+ settings
+
+ fontStyle
+
+ foreground
+ #3080A0
+
+
+
+ name
+ Token reference (ocamlyacc)
+ scope
+ entity.name.type.token.reference
+ settings
+
+ fontStyle
+
+ foreground
+ #3CB0D0
+
+
+
+ name
+ Non-terminal definition (ocamlyacc)
+ scope
+ entity.name.function.non-terminal
+ settings
+
+ foreground
+ #90E0E0
+
+
+
+ name
+ Non-terminal reference (ocamlyacc)
+ scope
+ entity.name.function.non-terminal.reference
+ settings
+
+ foreground
+ #C0F0F0
+
+
+
+ name
+ Tag name
+ scope
+ entity.name.tag
+ settings
+
+ foreground
+ #009090
+
+
+
+ name
+ Tag attribute
+ scope
+ entity.other.attribute-name
+ settings
+
+
+
+ name
+ Library function
+ settings
+
+ background
+ #200020
+
+
+
+ name
+ Library constant
+ scope
+ support.constant
+ settings
+
+ background
+ #200020
+
+
+
+ name
+ Library class/type
+ scope
+ support.type, support.class
+ settings
+
+
+
+ name
+ Library variable
+ scope
+ support.other.variable
+ settings
+
+
+
+ name
+ Invalid - illegal
+ scope
+ invalid.illegal
+ settings
+
+ background
+ #FFFF00
+ fontStyle
+ bold
+ foreground
+ #400080
+
+
+
+ name
+ Invalid - depricated
+ scope
+ invalid.deprecated
+ settings
+
+ background
+ #CC66FF
+ foreground
+ #200020
+
+
+
+ name
+ Camlp4 code
+ scope
+ source.camlp4.embedded
+ settings
+
+ background
+ #40008054
+
+
+
+ name
+ Camlp4 temp (parser)
+ scope
+ source.camlp4.embedded.parser.ocaml
+ settings
+
+ fontStyle
+
+
+
+
+ name
+ Punctuation
+ scope
+ punctuation
+ settings
+
+ foreground
+ #805080
+
+
+
+ uuid
+ 3C01FADD-7592-49DD-B7A5-1B82CA4E57B5
+
+
diff --git a/sublime/Packages/Color Scheme - Default/Blackboard.tmTheme b/sublime/Packages/Color Scheme - Default/Blackboard.tmTheme
new file mode 100644
index 0000000..18bb72e
--- /dev/null
+++ b/sublime/Packages/Color Scheme - Default/Blackboard.tmTheme
@@ -0,0 +1,350 @@
+
+
+
+
+ name
+ Blackboard
+ author
+ Domenico Carbotta
+ settings
+
+
+ settings
+
+ background
+ #0C1021
+ caret
+ #FFFFFFA6
+ foreground
+ #F8F8F8
+ invisibles
+ #FFFFFF40
+ lineHighlight
+ #FFFFFF0F
+ selection
+ #253B76
+
+
+
+ name
+ Comment
+ scope
+ comment
+ settings
+
+ fontStyle
+
+ foreground
+ #AEAEAE
+
+
+
+ name
+ Constant
+ scope
+ constant
+ settings
+
+ fontStyle
+
+ foreground
+ #D8FA3C
+
+
+
+ name
+ Entity
+ scope
+ entity
+ settings
+
+ fontStyle
+
+ foreground
+ #FF6400
+
+
+
+ name
+ Keyword
+ scope
+ keyword
+ settings
+
+ fontStyle
+
+ foreground
+ #FBDE2D
+
+
+
+ name
+ Storage
+ scope
+ storage
+ settings
+
+ fontStyle
+
+ foreground
+ #FBDE2D
+
+
+
+ name
+ String
+ scope
+ string, meta.verbatim
+ settings
+
+ fontStyle
+
+ foreground
+ #61CE3C
+
+
+
+ name
+ Support
+ scope
+ support
+ settings
+
+ fontStyle
+
+ foreground
+ #8DA6CE
+
+
+
+ name
+ Variable
+ scope
+ variable
+ settings
+
+ fontStyle
+
+
+
+
+ name
+ Invalid – Deprecated
+ scope
+ invalid.deprecated
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #AB2A1D
+
+
+
+ name
+ Invalid – Illegal
+ scope
+ invalid.illegal
+ settings
+
+ background
+ #9D1E15
+ foreground
+ #F8F8F8
+
+
+
+ name
+ Superclass
+ scope
+ entity.other.inherited-class
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #FF6400
+
+
+
+ name
+ String interpolation
+ scope
+ string constant.other.placeholder
+ settings
+
+ fontStyle
+
+ foreground
+ #FF6400
+
+
+
+ name
+ meta.function-call.py
+ scope
+ meta.function-call.py
+ settings
+
+ fontStyle
+
+ foreground
+ #BECDE6
+
+
+
+ name
+ meta.tag
+ scope
+ meta.tag, meta.tag entity
+ settings
+
+ foreground
+ #7F90AA
+
+
+
+ name
+ entity.name.section
+ scope
+ entity.name.section
+ settings
+
+ fontStyle
+
+ foreground
+ #FFFFFF
+
+
+
+ name
+ OCaml variant
+ scope
+ keyword.type.variant
+ settings
+
+ foreground
+ #D5E0F3
+
+
+
+ name
+ OCaml operator
+ scope
+ source.ocaml keyword.operator.symbol
+ settings
+
+ foreground
+ #F8F8F8
+
+
+
+ name
+ OCaml infix operator
+ scope
+ source.ocaml keyword.operator.symbol.infix
+ settings
+
+ fontStyle
+
+ foreground
+ #8DA6CE
+
+
+
+ name
+ OCaml prefix operator
+ scope
+ source.ocaml keyword.operator.symbol.prefix
+ settings
+
+ fontStyle
+
+ foreground
+ #8DA6CE
+
+
+
+ name
+ OCaml f-p infix operator
+ scope
+ source.ocaml keyword.operator.symbol.infix.floating-point
+ settings
+
+ fontStyle
+ underline
+
+
+
+ name
+ OCaml f-p prefix operator
+ scope
+ source.ocaml keyword.operator.symbol.prefix.floating-point
+ settings
+
+ fontStyle
+ underline
+
+
+
+ name
+ OCaml f-p constant
+ scope
+ source.ocaml constant.numeric.floating-point
+ settings
+
+ fontStyle
+ underline
+
+
+
+ name
+ LaTeX environment
+ scope
+ text.tex.latex meta.function.environment
+ settings
+
+ background
+ #FFFFFF08
+
+
+
+ name
+ LaTeX environment (nested)
+ scope
+ text.tex.latex meta.function.environment meta.function.environment
+ settings
+
+ background
+ #7A96FA08
+
+
+
+ name
+ Latex support
+ scope
+ text.tex.latex support.function
+ settings
+
+ fontStyle
+
+ foreground
+ #FBDE2D
+
+
+
+ name
+ PList unquoted string
+ scope
+ source.plist string.unquoted, source.plist keyword.operator
+ settings
+
+ foreground
+ #FFFFFF
+
+
+
+ uuid
+ A2C6BAA7-90D0-4147-BBF5-96B0CD92D109
+
+
diff --git a/sublime/Packages/Color Scheme - Default/Cobalt.tmTheme b/sublime/Packages/Color Scheme - Default/Cobalt.tmTheme
new file mode 100644
index 0000000..9790358
--- /dev/null
+++ b/sublime/Packages/Color Scheme - Default/Cobalt.tmTheme
@@ -0,0 +1,559 @@
+
+
+
+
+ comment
+ Created by Jacob Rus. Based on ‘Slate’ by Wilson Miner
+ author
+ Jacob Rus
+ name
+ Cobalt
+ settings
+
+
+ settings
+
+ background
+ #002240
+ caret
+ #FFFFFF
+ foreground
+ #FFFFFF
+ invisibles
+ #FFFFFF26
+ lineHighlight
+ #00000059
+ selection
+ #B36539BF
+
+
+
+ name
+ Punctuation
+ scope
+ punctuation - (punctuation.definition.string || punctuation.definition.comment)
+ settings
+
+ fontStyle
+
+ foreground
+ #E1EFFF
+
+
+
+ name
+ Constant
+ scope
+ constant
+ settings
+
+ fontStyle
+
+ foreground
+ #FF628C
+
+
+
+ name
+ Entity
+ scope
+ entity
+ settings
+
+ fontStyle
+
+ foreground
+ #FFDD00
+
+
+
+ name
+ Keyword
+ scope
+ keyword
+ settings
+
+ fontStyle
+
+ foreground
+ #FF9D00
+
+
+
+ name
+ Storage
+ scope
+ storage
+ settings
+
+ fontStyle
+
+ foreground
+ #FFEE80
+
+
+
+ name
+ String
+ scope
+ string -string.unquoted.old-plist -string.unquoted.heredoc, string.unquoted.heredoc string
+ settings
+
+ fontStyle
+
+ foreground
+ #3AD900
+
+
+
+ name
+ Comment
+ scope
+ comment
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #0088FF
+
+
+
+ name
+ Support
+ scope
+ support
+ settings
+
+ fontStyle
+
+ foreground
+ #80FFBB
+
+
+
+ name
+ Variable
+ scope
+ variable
+ settings
+
+ fontStyle
+
+ foreground
+ #CCCCCC
+
+
+
+ name
+ Lang Variable
+ scope
+ variable.language
+ settings
+
+ fontStyle
+
+ foreground
+ #FF80E1
+
+
+
+ name
+ Function Call
+ scope
+ meta.function-call
+ settings
+
+ foreground
+ #FFEE80
+
+
+
+ name
+ Invalid
+ scope
+ invalid
+ settings
+
+ background
+ #800F00
+ foreground
+ #F8F8F8
+
+
+
+ name
+ Embedded Source
+ scope
+ text source, string.unquoted.heredoc, source source
+ settings
+
+ background
+ #223545
+ fontStyle
+
+ foreground
+ #FFFFFF
+
+
+
+ name
+ Entity inherited-class
+ scope
+ entity.other.inherited-class
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #80FCFF
+
+
+
+ name
+ String embedded-source
+ scope
+ string.quoted source
+ settings
+
+ fontStyle
+
+ foreground
+ #9EFF80
+
+
+
+ name
+ String constant
+ scope
+ string constant
+ settings
+
+ foreground
+ #80FF82
+
+
+
+ name
+ String.regexp
+ scope
+ string.regexp
+ settings
+
+ foreground
+ #80FFC2
+
+
+
+ name
+ String variable
+ scope
+ string variable
+ settings
+
+ foreground
+ #EDEF7D
+
+
+
+ name
+ Support.function
+ scope
+ support.function
+ settings
+
+ fontStyle
+
+ foreground
+ #FFB054
+
+
+
+ name
+ Support.constant
+ scope
+ support.constant
+ settings
+
+ fontStyle
+
+ foreground
+ #EB939A
+
+
+
+ name
+ Exception
+ scope
+ support.type.exception
+ settings
+
+ foreground
+ #FF1E00
+
+
+
+ name
+ C/C++ Preprocessor Line
+ scope
+ meta.preprocessor.c
+ settings
+
+ foreground
+ #8996A8
+
+
+
+ name
+ C/C++ Preprocessor Directive
+ scope
+ meta.preprocessor.c keyword
+ settings
+
+ foreground
+ #AFC4DB
+
+
+
+ name
+ Doctype/XML Processing
+ scope
+ meta.sgml.html meta.doctype, meta.sgml.html meta.doctype entity, meta.sgml.html meta.doctype string, meta.xml-processing, meta.xml-processing entity, meta.xml-processing string
+ settings
+
+ foreground
+ #73817D
+
+
+
+ name
+ Meta.tag.A
+ scope
+ meta.tag, meta.tag entity
+ settings
+
+ foreground
+ #9EFFFF
+
+
+
+ name
+ css tag-name
+ scope
+ meta.selector.css entity.name.tag
+ settings
+
+ foreground
+ #9EFFFF
+
+
+
+ name
+ css#id
+ scope
+ meta.selector.css entity.other.attribute-name.id
+ settings
+
+ foreground
+ #FFB454
+
+
+
+ name
+ css.class
+ scope
+ meta.selector.css entity.other.attribute-name.class
+ settings
+
+ foreground
+ #5FE461
+
+
+
+ name
+ css property-name:
+ scope
+ support.type.property-name.css
+ settings
+
+ foreground
+ #9DF39F
+
+
+
+ name
+ css property-value;
+ scope
+ meta.property-group support.constant.property-value.css, meta.property-value support.constant.property-value.css
+ settings
+
+ foreground
+ #F6F080
+
+
+
+ name
+ css @at-rule
+ scope
+ meta.preprocessor.at-rule keyword.control.at-rule
+ settings
+
+ foreground
+ #F6AA11
+
+
+
+ name
+ css additional-constants
+ scope
+ meta.property-value support.constant.named-color.css, meta.property-value constant
+ settings
+
+ foreground
+ #EDF080
+
+
+
+ name
+ css constructor.argument
+ scope
+ meta.constructor.argument.css
+ settings
+
+ foreground
+ #EB939A
+
+
+
+ name
+ diff.header
+ scope
+ meta.diff, meta.diff.header
+ settings
+
+ background
+ #000E1A
+ fontStyle
+
+ foreground
+ #F8F8F8
+
+
+
+ name
+ diff.deleted
+ scope
+ markup.deleted
+ settings
+
+ background
+ #4C0900
+ foreground
+ #F8F8F8
+
+
+
+ name
+ diff.changed
+ scope
+ markup.changed
+ settings
+
+ background
+ #806F00
+ foreground
+ #F8F8F8
+
+
+
+ name
+ diff.inserted
+ scope
+ markup.inserted
+ settings
+
+ background
+ #154F00
+ foreground
+ #F8F8F8
+
+
+
+ name
+ Raw Markup
+ scope
+ markup.raw
+ settings
+
+ background
+ #8FDDF630
+
+
+
+ name
+ Block Quote
+ scope
+ markup.quote
+ settings
+
+ background
+ #004480
+
+
+
+ name
+ List
+ scope
+ markup.list
+ settings
+
+ background
+ #130D26
+
+
+
+ name
+ Bold Markup
+ scope
+ markup.bold
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #C1AFFF
+
+
+
+ name
+ Italic Markup
+ scope
+ markup.italic
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #B8FFD9
+
+
+
+ name
+ Heading Markup
+ scope
+ markup.heading
+ settings
+
+ background
+ #001221
+ fontStyle
+ bold
+ foreground
+ #C8E4FD
+
+
+
+ uuid
+ 06CD1FB2-A00A-4F8C-97B2-60E131980454
+
+
diff --git a/sublime/Packages/Color Scheme - Default/Dawn.tmTheme b/sublime/Packages/Color Scheme - Default/Dawn.tmTheme
new file mode 100644
index 0000000..a09a3bf
--- /dev/null
+++ b/sublime/Packages/Color Scheme - Default/Dawn.tmTheme
@@ -0,0 +1,441 @@
+
+
+
+
+ author
+ David Powers
+ comment
+ Dawn
+ name
+ Dawn
+ settings
+
+
+ settings
+
+ background
+ #F9F9F9
+ caret
+ #000000
+ foreground
+ #080808
+ invisibles
+ #4B4B7E80
+ lineHighlight
+ #2463B41F
+ selection
+ #275FFF4D
+ shadow
+ #808080
+ shadowWidth
+ 6
+
+
+
+ name
+ Comment
+ scope
+ comment
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #5A525F
+
+
+
+ name
+ Constant
+ scope
+ constant
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #811F24
+
+
+
+ name
+ Entity
+ scope
+ entity
+ settings
+
+ fontStyle
+
+ foreground
+ #BF4F24
+
+
+
+ name
+ Keyword
+ scope
+ keyword
+ settings
+
+ fontStyle
+
+ foreground
+ #794938
+
+
+
+ name
+ Storage
+ scope
+ storage
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #A71D5D
+
+
+
+ name
+ String
+ scope
+ string | punctuation.definition.string
+ settings
+
+ fontStyle
+
+ foreground
+ #0B6125
+
+
+
+ name
+ Support
+ scope
+ support
+ settings
+
+ fontStyle
+
+ foreground
+ #691C97
+
+
+
+ name
+ Variable
+ scope
+ variable
+ settings
+
+ fontStyle
+
+ foreground
+ #234A97
+
+
+
+ name
+ Punctuation.separator
+ scope
+ punctuation.separator
+ settings
+
+ foreground
+ #794938
+
+
+
+ name
+ Invalid – Deprecated
+ scope
+ invalid.deprecated
+ settings
+
+ fontStyle
+ bold italic underline
+ foreground
+ #B52A1D
+
+
+
+ name
+ Invalid – Illegal
+ scope
+ invalid.illegal
+ settings
+
+ background
+ #B52A1D
+ fontStyle
+ italic underline
+ foreground
+ #F8F8F8
+
+
+
+ name
+ String embedded-source
+ scope
+ string source
+ settings
+
+ background
+ #6F8BBA26
+ fontStyle
+
+ foreground
+ #080808
+
+
+
+ name
+ String constant
+ scope
+ string constant
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #696969
+
+
+
+ name
+ String variable
+ scope
+ string variable
+ settings
+
+ fontStyle
+
+ foreground
+ #234A97
+
+
+
+ name
+ String.regexp
+ scope
+ string.regexp
+ settings
+
+ fontStyle
+
+ foreground
+ #CF5628
+
+
+
+ name
+ String.regexp.«special»
+ scope
+ string.regexp.character-class, string.regexp constant.character.escaped, string.regexp source.ruby.embedded, string.regexp string.regexp.arbitrary-repitition
+ settings
+
+ fontStyle
+ bold italic
+ foreground
+ #CF5628
+
+
+
+ name
+ String.regexp constant.character.escape
+ scope
+ string.regexp constant.character.escape
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #811F24
+
+
+
+ name
+ Embedded Source
+ scope
+ text source
+ settings
+
+ background
+ #6F8BBA26
+
+
+
+ name
+ Support.function
+ scope
+ support.function
+ settings
+
+ fontStyle
+
+ foreground
+ #693A17
+
+
+
+ name
+ Support.constant
+ scope
+ support.constant
+ settings
+
+ fontStyle
+
+ foreground
+ #B4371F
+
+
+
+ name
+ Support.variable
+ scope
+ support.variable
+ settings
+
+ foreground
+ #234A97
+
+
+
+ name
+ Markup.list
+ scope
+ markup.list
+ settings
+
+ foreground
+ #693A17
+
+
+
+ name
+ Markup.heading
+ scope
+ markup.heading | markup.heading entity.name
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #19356D
+
+
+
+ name
+ Markup.quote
+ scope
+ markup.quote
+ settings
+
+ background
+ #BBBBBB30
+ fontStyle
+ italic
+ foreground
+ #0B6125
+
+
+
+ name
+ Markup.italic
+ scope
+ markup.italic
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #080808
+
+
+
+ name
+ Markup.bold
+ scope
+ markup.bold
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #080808
+
+
+
+ name
+ Markup.underline
+ scope
+ markup.underline
+ settings
+
+ fontStyle
+ underline
+ foreground
+ #080808
+
+
+
+ name
+ Markup.link
+ scope
+ markup.link
+ settings
+
+ fontStyle
+ italic underline
+ foreground
+ #234A97
+
+
+
+ name
+ Markup.raw
+ scope
+ markup.raw
+ settings
+
+ background
+ #BBBBBB30
+ fontStyle
+
+ foreground
+ #234A97
+
+
+
+ name
+ Markup.deleted
+ scope
+ markup.deleted
+ settings
+
+ foreground
+ #B52A1D
+
+
+
+ name
+ Meta.separator
+ scope
+ meta.separator
+ settings
+
+ background
+ #DCDCDC
+ fontStyle
+ bold
+ foreground
+ #19356D
+
+
+
+ uuid
+ E7E82498-F9EA-49A6-A0D8-12327EA46B01
+
+
diff --git a/sublime/Packages/Color Scheme - Default/Eiffel.tmTheme b/sublime/Packages/Color Scheme - Default/Eiffel.tmTheme
new file mode 100644
index 0000000..1e8160c
--- /dev/null
+++ b/sublime/Packages/Color Scheme - Default/Eiffel.tmTheme
@@ -0,0 +1,439 @@
+
+
+
+
+ name
+ Eiffel
+ author
+ Ian Joyner
+ settings
+
+
+ settings
+
+ background
+ #FFFFFF
+ caret
+ #000000
+ foreground
+ #000000
+ invisibles
+ #BFBFBF
+ lineHighlight
+ #00000012
+ selection
+ #C3DCFF
+
+
+
+ name
+ Comment
+ scope
+ comment
+ settings
+
+ fontStyle
+
+ foreground
+ #00B418
+
+
+
+ name
+ Variable
+ scope
+ variable
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #0206FF
+
+
+
+ name
+ Keyword
+ scope
+ keyword
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #0100B6
+
+
+
+ name
+ Number
+ scope
+ constant.numeric
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #CD0000
+
+
+
+ name
+ User-defined constant
+ scope
+ constant
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #C5060B
+
+
+
+ name
+ Built-in constant
+ scope
+ constant.language
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #585CF6
+
+
+
+ name
+ String
+ scope
+ string
+ settings
+
+ fontStyle
+
+ foreground
+ #D80800
+
+
+
+ name
+ String interpolation
+ scope
+ constant.character.escape, string source
+ settings
+
+ fontStyle
+
+ foreground
+ #26B31A
+
+
+
+ name
+ Preprocessor line
+ scope
+ meta.preprocessor
+ settings
+
+ fontStyle
+
+ foreground
+ #1A921C
+
+
+
+ name
+ Preprocessor directive
+ scope
+ keyword.control.import
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #0C450D
+
+
+
+ name
+ Function name
+ scope
+ entity.name.function, keyword.other.name-of-parameter.objc
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #0000A2
+
+
+
+ name
+ Type name
+ scope
+ entity.name.type
+ settings
+
+ fontStyle
+ italic
+
+
+
+ name
+ Inherited class name
+ scope
+ entity.other.inherited-class
+ settings
+
+ fontStyle
+ italic
+
+
+
+ name
+ Function parameter
+ scope
+ variable.parameter
+ settings
+
+ fontStyle
+ italic
+
+
+
+ name
+ Function argument and result types
+ scope
+ storage.type.method
+ settings
+
+ fontStyle
+
+ foreground
+ #70727E
+
+
+
+ name
+ Section
+ scope
+ meta.section entity.name.section, declaration.section entity.name.section
+ settings
+
+ fontStyle
+ italic
+
+
+
+ name
+ Library function
+ scope
+ support.function
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #3C4C72
+
+
+
+ name
+ Library object
+ scope
+ support.class, support.type
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #6D79DE
+
+
+
+ name
+ Library constant
+ scope
+ support.constant
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #06960E
+
+
+
+ name
+ Library variable
+ scope
+ support.variable
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #21439C
+
+
+
+ name
+ JS: Operator
+ scope
+ keyword.operator.js
+ settings
+
+ foreground
+ #687687
+
+
+
+ name
+ Invalid
+ scope
+ invalid
+ settings
+
+ background
+ #990000
+ foreground
+ #FFFFFF
+
+
+
+ name
+ Invalid trailing whitespace
+ scope
+ invalid.deprecated.trailing-whitespace
+ settings
+
+ background
+ #FFD0D0
+
+
+
+ name
+ Embedded source
+ scope
+ text source, string.unquoted
+ settings
+
+ background
+ #427FF530
+
+
+
+ name
+ Markup XML declaration
+ scope
+ meta.xml-processing, declaration.xml-processing
+ settings
+
+ fontStyle
+
+ foreground
+ #68685B
+
+
+
+ name
+ Markup DOCTYPE
+ scope
+ meta.doctype, declaration.doctype
+ settings
+
+ fontStyle
+
+ foreground
+ #888888
+
+
+
+ name
+ Markup DTD
+ scope
+ meta.doctype.DTD, declaration.doctype.DTD
+ settings
+
+ fontStyle
+ italic
+
+
+
+ name
+ Markup tag
+ scope
+ meta.tag, declaration.tag
+ settings
+
+ fontStyle
+
+ foreground
+ #1C02FF
+
+
+
+ name
+ Markup name of tag
+ scope
+ entity.name.tag
+ settings
+
+ fontStyle
+ bold
+
+
+
+ name
+ Markup tag attribute
+ scope
+ entity.other.attribute-name
+ settings
+
+ fontStyle
+ italic
+
+
+
+ name
+ Markup: Heading
+ scope
+ markup.heading
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #0C07FF
+
+
+
+ name
+ Markup: Quote
+ scope
+ markup.quote
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #000000
+
+
+
+ name
+ Markup: List
+ scope
+ markup.list
+ settings
+
+ foreground
+ #B90690
+
+
+
+ uuid
+ ADD7FDE7-C6BE-454B-A71A-7951ED54FB04
+
+
diff --git a/sublime/Packages/Color Scheme - Default/Espresso Libre.tmTheme b/sublime/Packages/Color Scheme - Default/Espresso Libre.tmTheme
new file mode 100644
index 0000000..2ccae64
--- /dev/null
+++ b/sublime/Packages/Color Scheme - Default/Espresso Libre.tmTheme
@@ -0,0 +1,402 @@
+
+
+
+
+ author
+ Chris Thomas
+ name
+ Espresso Libre
+ settings
+
+
+ settings
+
+ background
+ #2A211C
+ caret
+ #889AFF
+ foreground
+ #BDAE9D
+ invisibles
+ #BFBFBF
+ lineHighlight
+ #3A312C
+ selection
+ #C3DCFF
+
+
+
+ name
+ Comment
+ scope
+ comment
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #0066FF
+
+
+
+ name
+ Keyword
+ scope
+ keyword, storage
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #43A8ED
+
+
+
+ name
+ Number
+ scope
+ constant.numeric
+ settings
+
+ fontStyle
+
+ foreground
+ #44AA43
+
+
+
+ name
+ User-defined constant
+ scope
+ constant
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #C5656B
+
+
+
+ name
+ Built-in constant
+ scope
+ constant.language
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #585CF6
+
+
+
+ name
+ Variable
+ scope
+ variable.language, variable.other
+ settings
+
+ fontStyle
+
+ foreground
+ #318495
+
+
+
+ name
+ String
+ scope
+ string
+ settings
+
+ fontStyle
+
+ foreground
+ #049B0A
+
+
+
+ name
+ String interpolation
+ scope
+ constant.character.escape, string source
+ settings
+
+ fontStyle
+
+ foreground
+ #2FE420
+
+
+
+ name
+ Preprocessor line
+ scope
+ meta.preprocessor
+ settings
+
+ fontStyle
+
+ foreground
+ #1A921C
+
+
+
+ name
+ Preprocessor directive
+ scope
+ keyword.control.import
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #9AFF87
+
+
+
+ name
+ Function name
+ scope
+ entity.name.function, keyword.other.name-of-parameter.objc
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #FF9358
+
+
+
+ name
+ Type name
+ scope
+ entity.name.type
+ settings
+
+ fontStyle
+ underline
+
+
+
+ name
+ Inherited class name
+ scope
+ entity.other.inherited-class
+ settings
+
+ fontStyle
+ italic
+
+
+
+ name
+ Function parameter
+ scope
+ variable.parameter
+ settings
+
+ fontStyle
+ italic
+
+
+
+ name
+ Function argument and result types
+ scope
+ storage.type.method
+ settings
+
+ fontStyle
+
+ foreground
+ #8B8E9C
+
+
+
+ name
+ Section
+ scope
+ meta.section entity.name.section, declaration.section entity.name.section
+ settings
+
+ fontStyle
+ italic
+
+
+
+ name
+ Library function
+ scope
+ support.function
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #7290D9
+
+
+
+ name
+ Library object
+ scope
+ support.class, support.type
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #6D79DE
+
+
+
+ name
+ Library constant
+ scope
+ support.constant
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #00AF0E
+
+
+
+ name
+ Library variable
+ scope
+ support.variable
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #2F5FE0
+
+
+
+ name
+ JS: Operator
+ scope
+ keyword.operator.js
+ settings
+
+ foreground
+ #687687
+
+
+
+ name
+ Invalid
+ scope
+ invalid
+ settings
+
+ background
+ #990000
+ foreground
+ #FFFFFF
+
+
+
+ name
+ Invalid trailing whitespace
+ scope
+ invalid.deprecated.trailing-whitespace
+ settings
+
+ background
+ #FFD0D0
+
+
+
+ name
+ Embedded source
+ scope
+ text source, string.unquoted
+ settings
+
+ background
+ #F5AA7730
+
+
+
+ name
+ Markup XML declaration
+ scope
+ meta.tag.preprocessor.xml
+ settings
+
+ fontStyle
+
+ foreground
+ #8F7E65
+
+
+
+ name
+ Markup DOCTYPE
+ scope
+ meta.tag.sgml.doctype
+ settings
+
+ fontStyle
+
+ foreground
+ #888888
+
+
+
+ name
+ Markup DTD
+ scope
+ string.quoted.docinfo.doctype.DTD
+ settings
+
+ fontStyle
+ italic
+
+
+
+ name
+ Markup tag
+ scope
+ meta.tag, declaration.tag
+ settings
+
+ fontStyle
+
+ foreground
+ #43A8ED
+
+
+
+ name
+ Markup name of tag
+ scope
+ entity.name.tag
+ settings
+
+ fontStyle
+ bold
+
+
+
+ name
+ Markup tag attribute
+ scope
+ entity.other.attribute-name
+ settings
+
+ fontStyle
+ italic
+
+
+
+ uuid
+ 6B90703E-4E4B-43C8-9D32-921BEDF6D725
+
+
diff --git a/sublime/Packages/Color Scheme - Default/IDLE.tmTheme b/sublime/Packages/Color Scheme - Default/IDLE.tmTheme
new file mode 100644
index 0000000..704296f
--- /dev/null
+++ b/sublime/Packages/Color Scheme - Default/IDLE.tmTheme
@@ -0,0 +1,235 @@
+
+
+
+
+ author
+ Domenico Carbotta
+ name
+ IDLE
+ settings
+
+
+ settings
+
+ background
+ #FFFFFF
+ caret
+ #000000
+ foreground
+ #000000
+ invisibles
+ #BFBFBF
+ lineHighlight
+ #00000012
+ selection
+ #BAD6FD
+
+
+
+ name
+ Comment
+ scope
+ comment
+ settings
+
+ foreground
+ #919191
+
+
+
+ name
+ String
+ scope
+ string
+ settings
+
+ foreground
+ #00A33F
+
+
+
+ name
+ Number
+ scope
+ constant.numeric
+ settings
+
+
+
+ name
+ Built-in constant
+ scope
+ constant.language
+ settings
+
+ foreground
+ #A535AE
+
+
+
+ name
+ User-defined constant
+ scope
+ constant.character, constant.other
+ settings
+
+
+
+ name
+ Variable
+ scope
+ variable.language, variable.other
+ settings
+
+
+
+ name
+ Keyword
+ scope
+ keyword
+ settings
+
+ foreground
+ #FF5600
+
+
+
+ name
+ Storage
+ scope
+ storage
+ settings
+
+ foreground
+ #FF5600
+
+
+
+ name
+ Type name
+ scope
+ entity.name.type
+ settings
+
+ foreground
+ #21439C
+
+
+
+ name
+ Inherited class
+ scope
+ entity.other.inherited-class
+ settings
+
+
+
+ name
+ Function name
+ scope
+ entity.name.function
+ settings
+
+ foreground
+ #21439C
+
+
+
+ name
+ Function argument
+ scope
+ variable.parameter
+ settings
+
+
+
+ name
+ Tag name
+ scope
+ entity.name.tag
+ settings
+
+
+
+ name
+ Tag attribute
+ scope
+ entity.other.attribute-name
+ settings
+
+
+
+ name
+ Library function
+ scope
+ support.function
+ settings
+
+ foreground
+ #A535AE
+
+
+
+ name
+ Library constant
+ scope
+ support.constant
+ settings
+
+ foreground
+ #A535AE
+
+
+
+ name
+ Library class/type
+ scope
+ support.type, support.class
+ settings
+
+ foreground
+ #A535AE
+
+
+
+ name
+ Library variable
+ scope
+ support.variable
+ settings
+
+ foreground
+ #A535AE
+
+
+
+ name
+ Invalid
+ scope
+ invalid
+ settings
+
+ background
+ #990000
+ foreground
+ #FFFFFF
+
+
+
+ name
+ String interpolation
+ scope
+ constant.other.placeholder.py
+ settings
+
+ fontStyle
+
+ foreground
+ #990000
+
+
+
+ uuid
+ DDC0CBE1-442B-4CB5-80E4-26E4CFB3A277
+
+
diff --git a/sublime/Packages/Color Scheme - Default/LAZY.tmTheme b/sublime/Packages/Color Scheme - Default/LAZY.tmTheme
new file mode 100644
index 0000000..09ff511
--- /dev/null
+++ b/sublime/Packages/Color Scheme - Default/LAZY.tmTheme
@@ -0,0 +1,291 @@
+
+
+
+
+ author
+ Domenico Carbotta
+ name
+ LAZY
+ settings
+
+
+ settings
+
+ background
+ #FFFFFF
+ caret
+ #7C7C7C
+ foreground
+ #000000
+ invisibles
+ #B6B6B6
+ lineHighlight
+ #EFFCA68F
+ selection
+ #E3FC8D
+
+
+
+ name
+ Comment
+ scope
+ comment
+ settings
+
+ fontStyle
+
+ foreground
+ #8C868F
+
+
+
+ name
+ Constant
+ scope
+ constant
+ settings
+
+ fontStyle
+
+ foreground
+ #3B5BB5
+
+
+
+ name
+ Entity
+ scope
+ entity
+ settings
+
+ fontStyle
+
+ foreground
+ #3B5BB5
+
+
+
+ name
+ Latex Entity
+ scope
+ text.tex.latex entity
+ settings
+
+ fontStyle
+
+ foreground
+ #D62A28
+
+
+
+ name
+ Keyword
+ scope
+ keyword, storage
+ settings
+
+ fontStyle
+
+ foreground
+ #FF7800
+
+
+
+ name
+ String
+ scope
+ string, meta.verbatim
+ settings
+
+ fontStyle
+
+ foreground
+ #409B1C
+
+
+
+ name
+ Support
+ scope
+ support
+ settings
+
+ fontStyle
+
+ foreground
+ #3B5BB5
+
+
+
+ name
+ Variable
+ scope
+ variable
+ settings
+
+ fontStyle
+
+
+
+
+ name
+ Invalid – Deprecated
+ scope
+ invalid.deprecated
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #990000
+
+
+
+ name
+ Invalid – Illegal
+ scope
+ invalid.illegal
+ settings
+
+ background
+ #9D1E15
+ foreground
+ #F8F8F8
+
+
+
+ name
+ Superclass
+ scope
+ entity.other.inherited-class
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #3B5BB5
+
+
+
+ name
+ String interpolation
+ scope
+ string constant.other.placeholder
+ settings
+
+ fontStyle
+
+ foreground
+ #671EBB
+
+
+
+ name
+ meta.function-call.py
+ scope
+ meta.function-call.py
+ settings
+
+ fontStyle
+
+ foreground
+ #3E4558
+
+
+
+ name
+ meta.tag
+ scope
+ meta.tag, meta.tag entity
+ settings
+
+ foreground
+ #3A4A64
+
+
+
+ name
+ OCaml variant
+ scope
+ keyword.type.variant
+ settings
+
+ fontStyle
+
+ foreground
+ #7F90AA
+
+
+
+ name
+ OCaml operator
+ scope
+ source.ocaml keyword.operator
+ settings
+
+ foreground
+ #000000
+
+
+
+ name
+ OCaml infix operator
+ scope
+ source.ocaml keyword.operator.symbol.infix
+ settings
+
+ fontStyle
+
+ foreground
+ #3B5BB5
+
+
+
+ name
+ OCaml prefix operator
+ scope
+ source.ocaml keyword.operator.symbol.prefix
+ settings
+
+ foreground
+ #3B5BB5
+
+
+
+ name
+ OCaml infix f-p operator
+ scope
+ source.ocaml keyword.operator.symbol.infix.floating-point
+ settings
+
+ fontStyle
+ underline
+
+
+
+ name
+ OCaml prefix f-p operator
+ scope
+ source.ocaml keyword.operator.symbol.prefix.floating-point
+ settings
+
+ fontStyle
+ underline
+
+
+
+ name
+ OCaml f-p constant
+ scope
+ source.ocaml constant.numeric.floating-point
+ settings
+
+ fontStyle
+ underline
+
+
+
+ uuid
+ A1E55FCB-3CD2-4811-9E73-D9B87419443A
+
+
diff --git a/sublime/Packages/Color Scheme - Default/Mac Classic.tmTheme b/sublime/Packages/Color Scheme - Default/Mac Classic.tmTheme
new file mode 100644
index 0000000..4b789df
--- /dev/null
+++ b/sublime/Packages/Color Scheme - Default/Mac Classic.tmTheme
@@ -0,0 +1,450 @@
+
+
+
+
+ author
+ Chris Thomas
+ name
+ Mac Classic
+ settings
+
+
+ settings
+
+ background
+ #FFFFFF
+ caret
+ #000000
+ foreground
+ #000000
+ invisibles
+ #BFBFBF
+ lineHighlight
+ #00000012
+ selection
+ #4D97FF54
+
+
+
+ name
+ Comment
+ scope
+ comment
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #0066FF
+
+
+
+ name
+ Keyword
+ scope
+ keyword, storage
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #0000FF
+
+
+
+ name
+ Number
+ scope
+ constant.numeric
+ settings
+
+ fontStyle
+
+ foreground
+ #0000CD
+
+
+
+ name
+ User-defined constant
+ scope
+ constant
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #C5060B
+
+
+
+ name
+ Built-in constant
+ scope
+ constant.language
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #585CF6
+
+
+
+ name
+ Variable
+ scope
+ variable.language, variable.other
+ settings
+
+ fontStyle
+
+ foreground
+ #318495
+
+
+
+ name
+ String
+ scope
+ string
+ settings
+
+ fontStyle
+
+ foreground
+ #036A07
+
+
+
+ name
+ String interpolation
+ scope
+ constant.character.escape, string source
+ settings
+
+ fontStyle
+
+ foreground
+ #26B31A
+
+
+
+ name
+ Preprocessor line
+ scope
+ meta.preprocessor
+ settings
+
+ fontStyle
+
+ foreground
+ #1A921C
+
+
+
+ name
+ Preprocessor directive
+ scope
+ keyword.control.import
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #0C450D
+
+
+
+ name
+ Function name
+ scope
+ entity.name.function, support.function.any-method
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #0000A2
+
+
+
+ name
+ Type name
+ scope
+ entity.name.type
+ settings
+
+ fontStyle
+ underline
+
+
+
+ name
+ Inherited class name
+ scope
+ entity.other.inherited-class
+ settings
+
+ fontStyle
+ italic
+
+
+
+ name
+ Function parameter
+ scope
+ variable.parameter
+ settings
+
+ fontStyle
+ italic
+
+
+
+ name
+ Function argument and result types
+ scope
+ storage.type.method
+ settings
+
+ fontStyle
+
+ foreground
+ #70727E
+
+
+
+ name
+ Section
+ scope
+ meta.section entity.name.section, declaration.section entity.name.section
+ settings
+
+ fontStyle
+ italic
+
+
+
+ name
+ Library function
+ scope
+ support.function
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #3C4C72
+
+
+
+ name
+ Library object
+ scope
+ support.class, support.type
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #6D79DE
+
+
+
+ name
+ Library constant
+ scope
+ support.constant
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #06960E
+
+
+
+ name
+ Library variable
+ scope
+ support.variable
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #21439C
+
+
+
+ name
+ JS: Operator
+ scope
+ keyword.operator.js
+ settings
+
+ foreground
+ #687687
+
+
+
+ name
+ Invalid
+ scope
+ invalid
+ settings
+
+ background
+ #990000
+ foreground
+ #FFFFFF
+
+
+
+ name
+ Invalid trailing whitespace
+ scope
+ invalid.deprecated.trailing-whitespace
+ settings
+
+ background
+ #FFD0D0
+
+
+
+ name
+ Embedded source
+ scope
+ text source, string.unquoted
+ settings
+
+ background
+ #0000000D
+
+
+
+ name
+ Embedded embedded source
+ scope
+ text source string.unquoted, text source text source
+ settings
+
+ background
+ #0000000F
+
+
+
+ name
+ Markup XML declaration
+ scope
+ meta.tag.preprocessor.xml
+ settings
+
+ fontStyle
+
+ foreground
+ #68685B
+
+
+
+ name
+ Markup DOCTYPE
+ scope
+ meta.tag.sgml.doctype, meta.tag.sgml.doctype entity, meta.tag.sgml.doctype string, meta.tag.preprocessor.xml, meta.tag.preprocessor.xml entity, meta.tag.preprocessor.xml string
+ settings
+
+ fontStyle
+
+ foreground
+ #888888
+
+
+
+ name
+ Markup DTD
+ scope
+ string.quoted.docinfo.doctype.DTD
+ settings
+
+ fontStyle
+ italic
+
+
+
+ name
+ Markup tag
+ scope
+ meta.tag, declaration.tag
+ settings
+
+ fontStyle
+
+ foreground
+ #1C02FF
+
+
+
+ name
+ Markup name of tag
+ scope
+ entity.name.tag
+ settings
+
+ fontStyle
+ bold
+
+
+
+ name
+ Markup tag attribute
+ scope
+ entity.other.attribute-name
+ settings
+
+ fontStyle
+ italic
+
+
+
+ name
+ Markup: Heading
+ scope
+ markup.heading
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #0C07FF
+
+
+
+ name
+ Markup: Quote
+ scope
+ markup.quote
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #000000
+
+
+
+ name
+ Markup: List
+ scope
+ markup.list
+ settings
+
+ foreground
+ #B90690
+
+
+
+ uuid
+ 71D40D9D-AE48-11D9-920A-000D93589AF6
+
+
diff --git a/sublime/Packages/Color Scheme - Default/MagicWB (Amiga).tmTheme b/sublime/Packages/Color Scheme - Default/MagicWB (Amiga).tmTheme
new file mode 100644
index 0000000..7897886
--- /dev/null
+++ b/sublime/Packages/Color Scheme - Default/MagicWB (Amiga).tmTheme
@@ -0,0 +1,376 @@
+
+
+
+
+ author
+ Allan Odgaard
+ comment
+ Inspired by the original 8 MagicWB colors from Martin Huttenloher
+ name
+ MagicWB (Amiga)
+ settings
+
+
+ settings
+
+ background
+ #969696
+ caret
+ #FFFFFF
+ foreground
+ #000000
+ invisibles
+ #FF38FF
+ lineHighlight
+ #00000012
+ selection
+ #B1B1B1
+
+
+
+ name
+ Comment
+ scope
+ comment
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #8D2E75
+
+
+
+ name
+ String
+ scope
+ string
+ settings
+
+ background
+ #FF000033
+ fontStyle
+
+ foreground
+ #FFFFFF
+
+
+
+ name
+ Number
+ scope
+ constant.numeric
+ settings
+
+ foreground
+ #FFFFFF
+
+
+
+ name
+ Constant: Built-in
+ scope
+ constant.language
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #FFA995
+
+
+
+ name
+ Constant: User-defined
+ scope
+ constant.character, constant.other
+ settings
+
+ background
+ #0000FF33
+ fontStyle
+
+ foreground
+ #FFA995
+
+
+
+ name
+ Variable
+ scope
+ variable.language, variable.other
+ settings
+
+ foreground
+ #FFA995
+
+
+
+ name
+ Keyword
+ scope
+ keyword
+ settings
+
+ fontStyle
+ bold
+
+
+
+ name
+ Storage
+ scope
+ storage
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #3A68A3
+
+
+
+ name
+ Type Name
+ scope
+ entity.name.type
+ settings
+
+ fontStyle
+ underline
+
+
+
+ name
+ Inherited Class
+ scope
+ entity.other.inherited-class
+ settings
+
+ fontStyle
+ italic
+
+
+
+ name
+ Function Name
+ scope
+ entity.name.function
+ settings
+
+ fontStyle
+
+ foreground
+ #FFA995
+
+
+
+ name
+ Function Argument
+ scope
+ variable.parameter
+ settings
+
+ fontStyle
+ italic
+
+
+
+ name
+ Entity Name
+ scope
+ entity.name
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #0000FF
+
+
+
+ name
+ Tag Attribute
+ scope
+ entity.other.attribute-name
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #3A68A3
+
+
+
+ name
+ Library Function
+ scope
+ support.function
+ settings
+
+ foreground
+ #E5B3FF
+
+
+
+ name
+ Objective-C Method Call
+ scope
+ support.function.any-method
+ settings
+
+ fontStyle
+
+ foreground
+ #000000
+
+
+
+ name
+ Objective-C Method Call - :
+ scope
+ support.function.any-method - punctuation
+ settings
+
+ fontStyle
+ italic
+
+
+
+ name
+ Library Constant
+ scope
+ support.constant
+ settings
+
+ foreground
+ #FFFFFF
+
+
+
+ name
+ Library Class/Type
+ scope
+ support.type, support.class
+ settings
+
+ foreground
+ #FFA995
+
+
+
+ name
+ Library Variable
+ scope
+ support.variable
+ settings
+
+ foreground
+ #3A68A3
+
+
+
+ name
+ Invalid
+ scope
+ invalid
+ settings
+
+ background
+ #797979
+ foreground
+ #FFFFFF
+
+
+
+ name
+ Include <system>
+ scope
+ string.quoted.other.lt-gt.include
+ settings
+
+ background
+ #969696
+ fontStyle
+ italic
+ foreground
+ #FFA995
+
+
+
+ name
+ Include "user"
+ scope
+ string.quoted.double.include
+ settings
+
+ background
+ #969696
+ foreground
+ #FFA995
+
+
+
+ name
+ Markup: List Item
+ scope
+ markup.list
+ settings
+
+ foreground
+ #4D4E60
+
+
+
+ name
+ Markup: Raw
+ scope
+ markup.raw
+ settings
+
+ background
+ #0000FF
+ foreground
+ #FFFFFF
+
+
+
+ name
+ Markup: Quote (Email)
+ scope
+ markup.quote
+ settings
+
+ foreground
+ #00F0C9
+
+
+
+ name
+ Markup: Quote Double (Email)
+ scope
+ markup.quote markup.quote
+ settings
+
+ fontStyle
+
+ foreground
+ #4C457E
+
+
+
+ name
+ Embedded Source
+ scope
+ text.html source
+ settings
+
+ background
+ #8A9ECB
+
+
+
+ uuid
+ B0A18BAA-6220-481C-9914-F6D3E51B5410
+
+
diff --git a/sublime/Packages/Color Scheme - Default/Monokai Bright.tmTheme b/sublime/Packages/Color Scheme - Default/Monokai Bright.tmTheme
new file mode 100644
index 0000000..3b53e4e
--- /dev/null
+++ b/sublime/Packages/Color Scheme - Default/Monokai Bright.tmTheme
@@ -0,0 +1,390 @@
+
+
+
+
+ name
+ Monokai Bright
+ settings
+
+
+ settings
+
+ background
+ #272822
+ caret
+ #F8F8F0
+ foreground
+ #F8F8F2
+ invisibles
+ #3B3A32
+ lineHighlight
+ #3E3D32
+ selection
+ #9D550F
+ selectionForeground
+ #fffff8
+ inactiveSelection
+ #bbbbbb
+ inactiveSelectionForeground
+ #222222
+ findHighlight
+ #FFE792
+ findHighlightForeground
+ #000000
+ activeGuide
+ #9D550FB0
+
+ bracketsForeground
+ #F8F8F2A5
+ bracketsOptions
+ underline
+
+ bracketContentsForeground
+ #F8F8F2A5
+ bracketContentsOptions
+ underline
+
+ tagsOptions
+ stippled_underline
+
+
+
+ name
+ Comment
+ scope
+ comment
+ settings
+
+ foreground
+ #75715E
+
+
+
+ name
+ String
+ scope
+ string
+ settings
+
+ foreground
+ #E6DB74
+
+
+
+ name
+ Number
+ scope
+ constant.numeric
+ settings
+
+ foreground
+ #AE81FF
+
+
+
+ name
+ Built-in constant
+ scope
+ constant.language
+ settings
+
+ foreground
+ #AE81FF
+
+
+
+ name
+ User-defined constant
+ scope
+ constant.character, constant.other
+ settings
+
+ foreground
+ #AE81FF
+
+
+
+ name
+ Variable
+ scope
+ variable
+ settings
+
+ fontStyle
+
+
+
+
+ name
+ Keyword
+ scope
+ keyword
+ settings
+
+ foreground
+ #F92672
+
+
+
+ name
+ Storage
+ scope
+ storage
+ settings
+
+ fontStyle
+
+ foreground
+ #F92672
+
+
+
+ name
+ Storage type
+ scope
+ storage.type
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #66D9EF
+
+
+
+ name
+ Class name
+ scope
+ entity.name.class
+ settings
+
+ fontStyle
+ underline
+ foreground
+ #A6E22E
+
+
+
+ name
+ Inherited class
+ scope
+ entity.other.inherited-class
+ settings
+
+ fontStyle
+ italic underline
+ foreground
+ #A6E22E
+
+
+
+ name
+ Function name
+ scope
+ entity.name.function
+ settings
+
+ fontStyle
+
+ foreground
+ #A6E22E
+
+
+
+ name
+ Function argument
+ scope
+ variable.parameter
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #FD971F
+
+
+
+ name
+ Tag name
+ scope
+ entity.name.tag
+ settings
+
+ fontStyle
+
+ foreground
+ #F92672
+
+
+
+ name
+ Tag attribute
+ scope
+ entity.other.attribute-name
+ settings
+
+ fontStyle
+
+ foreground
+ #A6E22E
+
+
+
+ name
+ Library function
+ scope
+ support.function
+ settings
+
+ fontStyle
+
+ foreground
+ #66D9EF
+
+
+
+ name
+ Library constant
+ scope
+ support.constant
+ settings
+
+ fontStyle
+
+ foreground
+ #66D9EF
+
+
+
+ name
+ Library class/type
+ scope
+ support.type, support.class
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #66D9EF
+
+
+
+ name
+ Library variable
+ scope
+ support.other.variable
+ settings
+
+ fontStyle
+
+
+
+
+ name
+ Invalid
+ scope
+ invalid
+ settings
+
+ background
+ #F92672
+ fontStyle
+
+ foreground
+ #F8F8F0
+
+
+
+ name
+ Invalid deprecated
+ scope
+ invalid.deprecated
+ settings
+
+ background
+ #AE81FF
+ foreground
+ #F8F8F0
+
+
+
+ name
+ JSON String
+ scope
+ meta.structure.dictionary.json string.quoted.double.json
+ settings
+
+ foreground
+ #CFCFC2
+
+
+
+
+ name
+ diff.header
+ scope
+ meta.diff, meta.diff.header
+ settings
+
+ foreground
+ #75715E
+
+
+
+ name
+ diff.deleted
+ scope
+ markup.deleted
+ settings
+
+ foreground
+ #F92672
+
+
+
+ name
+ diff.inserted
+ scope
+ markup.inserted
+ settings
+
+ foreground
+ #A6E22E
+
+
+
+ name
+ diff.changed
+ scope
+ markup.changed
+ settings
+
+ foreground
+ #E6DB74
+
+
+
+
+ scope
+ constant.numeric.line-number.find-in-files - match
+ settings
+
+ foreground
+ #AE81FFA0
+
+
+
+ scope
+ entity.name.filename.find-in-files
+ settings
+
+ foreground
+ #E6DB74
+
+
+
+
+ uuid
+ D8D5E82E-3D5B-46B5-B38E-8C841C21347E
+
+
diff --git a/sublime/Packages/Color Scheme - Default/Monokai Bright.tmTheme.cache b/sublime/Packages/Color Scheme - Default/Monokai Bright.tmTheme.cache
new file mode 100644
index 0000000..9cb4bce
Binary files /dev/null and b/sublime/Packages/Color Scheme - Default/Monokai Bright.tmTheme.cache differ
diff --git a/sublime/Packages/Color Scheme - Default/Monokai.tmTheme b/sublime/Packages/Color Scheme - Default/Monokai.tmTheme
new file mode 100644
index 0000000..c179cbe
--- /dev/null
+++ b/sublime/Packages/Color Scheme - Default/Monokai.tmTheme
@@ -0,0 +1,387 @@
+
+
+
+
+ name
+ Monokai
+ settings
+
+
+ settings
+
+ background
+ #272822
+ caret
+ #F8F8F0
+ foreground
+ #F8F8F2
+ invisibles
+ #3B3A32
+ lineHighlight
+ #3E3D32
+ selection
+ #49483E
+ findHighlight
+ #FFE792
+ findHighlightForeground
+ #000000
+ selectionBorder
+ #222218
+ activeGuide
+ #9D550FB0
+
+ bracketsForeground
+ #F8F8F2A5
+ bracketsOptions
+ underline
+
+ bracketContentsForeground
+ #F8F8F2A5
+ bracketContentsOptions
+ underline
+
+ tagsOptions
+ stippled_underline
+
+
+
+ name
+ Comment
+ scope
+ comment
+ settings
+
+ foreground
+ #75715E
+
+
+
+ name
+ String
+ scope
+ string
+ settings
+
+ foreground
+ #E6DB74
+
+
+
+ name
+ Number
+ scope
+ constant.numeric
+ settings
+
+ foreground
+ #AE81FF
+
+
+
+
+ name
+ Built-in constant
+ scope
+ constant.language
+ settings
+
+ foreground
+ #AE81FF
+
+
+
+ name
+ User-defined constant
+ scope
+ constant.character, constant.other
+ settings
+
+ foreground
+ #AE81FF
+
+
+
+ name
+ Variable
+ scope
+ variable
+ settings
+
+ fontStyle
+
+
+
+
+ name
+ Keyword
+ scope
+ keyword
+ settings
+
+ foreground
+ #F92672
+
+
+
+ name
+ Storage
+ scope
+ storage
+ settings
+
+ fontStyle
+
+ foreground
+ #F92672
+
+
+
+ name
+ Storage type
+ scope
+ storage.type
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #66D9EF
+
+
+
+ name
+ Class name
+ scope
+ entity.name.class
+ settings
+
+ fontStyle
+ underline
+ foreground
+ #A6E22E
+
+
+
+ name
+ Inherited class
+ scope
+ entity.other.inherited-class
+ settings
+
+ fontStyle
+ italic underline
+ foreground
+ #A6E22E
+
+
+
+ name
+ Function name
+ scope
+ entity.name.function
+ settings
+
+ fontStyle
+
+ foreground
+ #A6E22E
+
+
+
+ name
+ Function argument
+ scope
+ variable.parameter
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #FD971F
+
+
+
+ name
+ Tag name
+ scope
+ entity.name.tag
+ settings
+
+ fontStyle
+
+ foreground
+ #F92672
+
+
+
+ name
+ Tag attribute
+ scope
+ entity.other.attribute-name
+ settings
+
+ fontStyle
+
+ foreground
+ #A6E22E
+
+
+
+ name
+ Library function
+ scope
+ support.function
+ settings
+
+ fontStyle
+
+ foreground
+ #66D9EF
+
+
+
+ name
+ Library constant
+ scope
+ support.constant
+ settings
+
+ fontStyle
+
+ foreground
+ #66D9EF
+
+
+
+ name
+ Library class/type
+ scope
+ support.type, support.class
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #66D9EF
+
+
+
+ name
+ Library variable
+ scope
+ support.other.variable
+ settings
+
+ fontStyle
+
+
+
+
+ name
+ Invalid
+ scope
+ invalid
+ settings
+
+ background
+ #F92672
+ fontStyle
+
+ foreground
+ #F8F8F0
+
+
+
+ name
+ Invalid deprecated
+ scope
+ invalid.deprecated
+ settings
+
+ background
+ #AE81FF
+ foreground
+ #F8F8F0
+
+
+
+ name
+ JSON String
+ scope
+ meta.structure.dictionary.json string.quoted.double.json
+ settings
+
+ foreground
+ #CFCFC2
+
+
+
+
+ name
+ diff.header
+ scope
+ meta.diff, meta.diff.header
+ settings
+
+ foreground
+ #75715E
+
+
+
+ name
+ diff.deleted
+ scope
+ markup.deleted
+ settings
+
+ foreground
+ #F92672
+
+
+
+ name
+ diff.inserted
+ scope
+ markup.inserted
+ settings
+
+ foreground
+ #A6E22E
+
+
+
+ name
+ diff.changed
+ scope
+ markup.changed
+ settings
+
+ foreground
+ #E6DB74
+
+
+
+
+ scope
+ constant.numeric.line-number.find-in-files - match
+ settings
+
+ foreground
+ #AE81FFA0
+
+
+
+ scope
+ entity.name.filename.find-in-files
+ settings
+
+ foreground
+ #E6DB74
+
+
+
+
+ uuid
+ D8D5E82E-3D5B-46B5-B38E-8C841C21347D
+
+
diff --git a/sublime/Packages/Color Scheme - Default/Monokai.tmTheme.cache b/sublime/Packages/Color Scheme - Default/Monokai.tmTheme.cache
new file mode 100644
index 0000000..af2b906
Binary files /dev/null and b/sublime/Packages/Color Scheme - Default/Monokai.tmTheme.cache differ
diff --git a/sublime/Packages/Color Scheme - Default/Pastels on Dark.tmTheme b/sublime/Packages/Color Scheme - Default/Pastels on Dark.tmTheme
new file mode 100644
index 0000000..e392860
--- /dev/null
+++ b/sublime/Packages/Color Scheme - Default/Pastels on Dark.tmTheme
@@ -0,0 +1,701 @@
+
+
+
+
+ author
+ Mats Persson
+ name
+ Pastels on Dark
+ settings
+
+
+ settings
+
+ background
+ #211E1E
+ caret
+ #FFFFFF
+ foreground
+ #DADADA
+ invisibles
+ #4F4D4D
+ lineHighlight
+ #353030
+ selection
+ #73597E80
+
+
+
+ name
+ Comments
+ scope
+ comment
+ settings
+
+ fontStyle
+
+ foreground
+ #555555
+
+
+
+ name
+ Comments Block
+ scope
+ comment.block
+ settings
+
+ fontStyle
+
+ foreground
+ #555555
+
+
+
+ name
+ Strings
+ scope
+ string
+ settings
+
+ foreground
+ #AD9361
+
+
+
+ name
+ Numbers
+ scope
+ constant.numeric
+ settings
+
+ fontStyle
+
+ foreground
+ #CCCCCC
+
+
+
+ name
+ Keywords
+ scope
+ keyword
+ settings
+
+ fontStyle
+
+ foreground
+ #A1A1FF
+
+
+
+ name
+ Preprocessor Line
+ scope
+ meta.preprocessor
+ settings
+
+ fontStyle
+
+ foreground
+ #2F006E
+
+
+
+ name
+ Preprocessor Directive
+ scope
+ keyword.control.import
+ settings
+
+ fontStyle
+ bold
+
+
+
+ name
+ Functions
+ scope
+ support.function
+ settings
+
+ fontStyle
+
+ foreground
+ #A1A1FF
+
+
+
+ name
+ Function result
+ scope
+ declaration.function function-result
+ settings
+
+ foreground
+ #0000FF
+
+
+
+ name
+ Function name
+ scope
+ declaration.function function-name
+ settings
+
+ fontStyle
+ bold
+
+
+
+ name
+ Function argument name
+ scope
+ declaration.function argument-name
+ settings
+
+ fontStyle
+ bold
+
+
+
+ name
+ Function argument type
+ scope
+ declaration.function function-arg-type
+ settings
+
+ foreground
+ #0000FF
+
+
+
+ name
+ Function argument variable
+ scope
+ declaration.function function-argument
+ settings
+
+ fontStyle
+ italic
+
+
+
+ name
+ Class name
+ scope
+ declaration.class class-name
+ settings
+
+ fontStyle
+ underline
+
+
+
+ name
+ Class inheritance
+ scope
+ declaration.class class-inheritance
+ settings
+
+ fontStyle
+ italic underline
+
+
+
+ name
+ Invalid
+ scope
+ invalid
+ settings
+
+ background
+ #FF0000
+ fontStyle
+ bold
+ foreground
+ #FFF9F9
+
+
+
+ name
+ Invalid Trailing Whitespace
+ scope
+ invalid.deprecated.trailing-whitespace
+ settings
+
+ background
+ #FFD0D0
+
+
+
+ name
+ Section
+ scope
+ declaration.section section-name
+ settings
+
+ fontStyle
+ italic
+
+
+
+ name
+ Interpolation
+ scope
+ string.interpolation
+ settings
+
+ foreground
+ #C10006
+
+
+
+ name
+ Regular Expressions
+ scope
+ string.regexp
+ settings
+
+ fontStyle
+
+ foreground
+ #666666
+
+
+
+ name
+ Variables
+ scope
+ variable
+ settings
+
+ foreground
+ #C1C144
+
+
+
+ name
+ Constants
+ scope
+ constant
+ settings
+
+ foreground
+ #6782D3
+
+
+
+ name
+ Character Constants
+ scope
+ constant.character
+ settings
+
+ fontStyle
+
+ foreground
+ #AFA472
+
+
+
+ name
+ Language Constants
+ scope
+ constant.language
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #DE8E30
+
+
+
+ name
+ Embedded Code
+ scope
+ embedded
+ settings
+
+ fontStyle
+ underline
+
+
+
+ name
+ Tag name
+ scope
+ keyword.markup.element-name
+ settings
+
+ fontStyle
+
+ foreground
+ #858EF4
+
+
+
+ name
+ Attribute name
+ scope
+ keyword.markup.attribute-name
+ settings
+
+ fontStyle
+
+ foreground
+ #9B456F
+
+
+
+ name
+ Attribute with Value
+ scope
+ meta.attribute-with-value
+ settings
+
+ fontStyle
+
+ foreground
+ #9B456F
+
+
+
+ name
+ Exceptions
+ scope
+ keyword.exception
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #C82255
+
+
+
+ name
+ Operators
+ scope
+ keyword.operator
+ settings
+
+ fontStyle
+
+ foreground
+ #47B8D6
+
+
+
+ name
+ Control Structures
+ scope
+ keyword.control
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #6969FA
+
+
+
+ name
+ HTML: DocInfo XML
+ scope
+ meta.tag.preprocessor.xml
+ settings
+
+ foreground
+ #68685B
+
+
+
+ name
+ HTML: DocType
+ scope
+ meta.tag.sgml.doctype
+ settings
+
+ foreground
+ #888888
+
+
+
+ name
+ HTML: DocInfo DTD
+ scope
+ string.quoted.docinfo.doctype.DTD
+ settings
+
+ fontStyle
+ italic
+
+
+
+ name
+ HTML: ServerSide Includes
+ scope
+ comment.other.server-side-include.xhtml, comment.other.server-side-include.html
+ settings
+
+ foreground
+ #909090
+
+
+
+ name
+ HTML: Tag
+ scope
+ text.html declaration.tag, text.html meta.tag, text.html entity.name.tag.xhtml
+ settings
+
+ foreground
+ #858EF4
+
+
+
+ name
+ HTML: attribute=""
+ scope
+ keyword.markup.attribute-name
+ settings
+
+ foreground
+ #9B456F
+
+
+
+ name
+ PHP: PHPdocs
+ scope
+ keyword.other.phpdoc.php
+ settings
+
+ foreground
+ #777777
+
+
+
+ name
+ PHP: Include() & Require()
+ scope
+ keyword.other.include.php
+ settings
+
+ foreground
+ #C82255
+
+
+
+ name
+ PHP: Constants Core Predefined
+ scope
+ support.constant.core.php
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #DE8E20
+
+
+
+ name
+ PHP: Constants Standard Predefined
+ scope
+ support.constant.std.php
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #DE8E10
+
+
+
+ name
+ PHP: Variables Globals
+ scope
+ variable.other.global.php
+ settings
+
+ foreground
+ #B72E1D
+
+
+
+ name
+ PHP: Variables Safer Globals
+ scope
+ variable.other.global.safer.php
+ settings
+
+ foreground
+ #00FF00
+
+
+
+ name
+ PHP: Strings Single-Quoted
+ scope
+ string.quoted.single.php
+ settings
+
+ foreground
+ #BFA36D
+
+
+
+ name
+ PHP: Keywords Storage
+ scope
+ keyword.storage.php
+ settings
+
+ foreground
+ #6969FA
+
+
+
+ name
+ PHP: Strings Double-Quoted
+ scope
+ string.quoted.double.php
+ settings
+
+ foreground
+ #AD9361
+
+
+
+ name
+ CSS: Selectors #ID
+ scope
+ entity.other.attribute-name.id.css
+ settings
+
+ foreground
+ #EC9E00
+
+
+
+ name
+ CSS: Selectors <Elements>
+ scope
+ entity.name.tag.css
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #B8CD06
+
+
+
+ name
+ CSS: Selectors .ClassName
+ scope
+ entity.other.attribute-name.class.css
+ settings
+
+ foreground
+ #EDCA06
+
+
+
+ name
+ CSS: Selectors :PseudoClass
+ scope
+ entity.other.attribute-name.pseudo-class.css
+ settings
+
+ foreground
+ #2E759C
+
+
+
+ name
+ CSS: Invalid Comma
+ scope
+ invalid.bad-comma.css
+ settings
+
+ background
+ #FF0000
+ foreground
+ #FFFFFF
+
+
+
+ name
+ CSS: Property Value
+ scope
+ support.constant.property-value.css
+ settings
+
+ foreground
+ #9B2E4D
+
+
+
+ name
+ CSS: Property Keyword
+ scope
+ support.type.property-name.css
+ settings
+
+ foreground
+ #E1C96B
+
+
+
+ name
+ CSS: Property Colours
+ scope
+ constant.other.rgb-value.css
+ settings
+
+ foreground
+ #666633
+
+
+
+ name
+ CSS: Font Names
+ scope
+ support.constant.font-name.css
+ settings
+
+ foreground
+ #666633
+
+
+
+ name
+ TMLangDef: Keys
+ scope
+ support.constant.tm-language-def, support.constant.name.tm-language-def
+ settings
+
+ foreground
+ #7171F3
+
+
+
+ name
+ CSS: Units
+ scope
+ keyword.other.unit.css
+ settings
+
+ foreground
+ #6969FA
+
+
+
+ uuid
+ 343011CC-B7DF-11D9-B5C6-000D93C8BE28
+
+
diff --git a/sublime/Packages/Color Scheme - Default/Slush & Poppies.tmTheme b/sublime/Packages/Color Scheme - Default/Slush & Poppies.tmTheme
new file mode 100644
index 0000000..02ecbcb
--- /dev/null
+++ b/sublime/Packages/Color Scheme - Default/Slush & Poppies.tmTheme
@@ -0,0 +1,336 @@
+
+
+
+
+ author
+ William D. Neumann
+ name
+ Slush & Poppies
+ settings
+
+
+ settings
+
+ background
+ #F1F1F1
+ caret
+ #000000
+ foreground
+ #000000
+ invisibles
+ #BFBFBF
+ lineHighlight
+ #00000026
+ selection
+ #B0B0FF
+
+
+
+ name
+ Comment
+ scope
+ comment
+ settings
+
+ fontStyle
+
+ foreground
+ #406040
+
+
+
+ name
+ String
+ scope
+ string
+ settings
+
+ foreground
+ #C03030
+
+
+
+ name
+ Number
+ scope
+ constant.numeric
+ settings
+
+ foreground
+ #0080A0
+
+
+
+ name
+ OCaml floating-point constants
+ scope
+ source.ocaml constant.numeric.floating-point
+ settings
+
+ fontStyle
+ underline
+
+
+
+ name
+ Character constants
+ scope
+ constant.character
+ settings
+
+ foreground
+ #800000
+
+
+
+ name
+ Built-in constant
+ scope
+ constant.language
+ settings
+
+
+
+ name
+ User-defined constant
+ scope
+ constant.character, constant.other
+ settings
+
+
+
+ name
+ Variable
+ scope
+ variable.parameter, variable.other
+ settings
+
+
+
+ name
+ Keyword
+ scope
+ keyword
+ settings
+
+ fontStyle
+
+ foreground
+ #2060A0
+
+
+
+ name
+ Operators
+ scope
+ keyword.operator
+ settings
+
+ fontStyle
+
+ foreground
+ #2060A0
+
+
+
+ name
+ OCaml prefix f-p operators
+ scope
+ source.ocaml keyword.operator.symbol.prefix.floating-point
+ settings
+
+ fontStyle
+ underline
+
+
+
+ name
+ OCaml infix f-p operators
+ scope
+ source.ocaml keyword.operator.symbol.infix.floating-point
+ settings
+
+ fontStyle
+ underline
+
+
+
+ name
+ Module Keyword
+ scope
+ entity.name.module, support.other.module
+ settings
+
+ fontStyle
+
+ foreground
+ #0080FF
+
+
+
+ name
+ Storage types
+ scope
+ storage.type
+ settings
+
+ foreground
+ #A08000
+
+
+
+ name
+ Storage
+ scope
+ storage
+ settings
+
+ foreground
+ #008080
+
+
+
+ name
+ Variant types
+ scope
+ entity.name.class.variant
+ settings
+
+ foreground
+ #C08060
+
+
+
+ name
+ Directives
+ scope
+ keyword.other.directive
+ settings
+
+ fontStyle
+ bold
+
+
+
+ name
+ Line-number directives
+ scope
+ source.ocaml keyword.other.directive.line-number
+ settings
+
+ fontStyle
+
+
+
+
+ name
+ Inherited class
+ scope
+ entity.other.inherited-class
+ settings
+
+
+
+ name
+ Function name
+ scope
+ entity.name.function
+ settings
+
+ fontStyle
+
+ foreground
+ #800000
+
+
+
+ name
+ Type name
+ scope
+ storage.type.user-defined
+ settings
+
+ foreground
+ #800080
+
+
+
+ name
+ Class type name
+ scope
+ entity.name.type.class.type
+ settings
+
+ foreground
+ #8000C0
+
+
+
+ name
+ Function argument
+ scope
+ variable.parameter
+ settings
+
+
+
+ name
+ Tag name
+ scope
+ entity.name.tag
+ settings
+
+
+
+ name
+ Tag attribute
+ scope
+ entity.other.attribute-name
+ settings
+
+
+
+ name
+ Library function
+ scope
+ support.function
+ settings
+
+
+
+ name
+ Library constant
+ scope
+ support.constant
+ settings
+
+
+
+ name
+ Library class/type
+ scope
+ support.type, support.class
+ settings
+
+
+
+ name
+ Library variable
+ scope
+ support.variable
+ settings
+
+
+
+ name
+ Invalid
+ scope
+ invalid
+ settings
+
+
+
+ uuid
+ D68685B8-1CFE-4C10-99C4-E21CBC892376
+
+
diff --git a/sublime/Packages/Color Scheme - Default/Solarized (Dark).tmTheme b/sublime/Packages/Color Scheme - Default/Solarized (Dark).tmTheme
new file mode 100644
index 0000000..51aa484
--- /dev/null
+++ b/sublime/Packages/Color Scheme - Default/Solarized (Dark).tmTheme
@@ -0,0 +1,1897 @@
+
+
+
+
+ name
+ Solarized (dark)
+ settings
+
+
+ settings
+
+ background
+ #042029
+ caret
+ #819090
+ foreground
+ #839496
+ invisibles
+ #0A2933
+ lineHighlight
+ #0A2933
+ selection
+ #0A2933
+
+
+
+ name
+ Comment
+ scope
+ comment
+ settings
+
+ fontStyle
+
+ foreground
+ #586E75
+
+
+
+ name
+ String
+ scope
+ string
+ settings
+
+ foreground
+ #2AA198
+
+
+
+ name
+ StringNumber
+ scope
+ string
+ settings
+
+ foreground
+ #586E75
+
+
+
+ name
+ Regexp
+ scope
+ string.regexp
+ settings
+
+ foreground
+ #D30102
+
+
+
+ name
+ Number
+ scope
+ constant.numeric
+ settings
+
+ foreground
+ #D33682
+
+
+
+ name
+ Variable
+ scope
+ variable.language, variable.other
+ settings
+
+ foreground
+ #268BD2
+
+
+
+ name
+ Keyword
+ scope
+ keyword
+ settings
+
+ foreground
+ #859900
+
+
+
+ name
+ Storage
+ scope
+ storage
+ settings
+
+ fontStyle
+
+ foreground
+ #738A05
+
+
+
+ name
+ Class name
+ scope
+ entity.name.class, entity.name.type.class
+ settings
+
+ foreground
+ #268BD2
+
+
+
+ name
+ Function name
+ scope
+ entity.name.function
+ settings
+
+ foreground
+ #268BD2
+
+
+
+ name
+ Variable start
+ scope
+ punctuation.definition.variable
+ settings
+
+ foreground
+ #859900
+
+
+
+ name
+ Embedded code markers
+ scope
+ punctuation.section.embedded.begin, punctuation.section.embedded.end
+ settings
+
+ foreground
+ #D30102
+
+
+
+ name
+ Built-in constant
+ scope
+ constant.language, meta.preprocessor
+ settings
+
+ foreground
+ #B58900
+
+
+
+ name
+ Support.construct
+ scope
+ support.function.construct, keyword.other.new
+ settings
+
+ foreground
+ #D30102
+
+
+
+ name
+ User-defined constant
+ scope
+ constant.character, constant.other
+ settings
+
+ foreground
+ #CB4B16
+
+
+
+ name
+ Inherited class
+ scope
+ entity.other.inherited-class
+ settings
+
+
+
+ name
+ Function argument
+ scope
+ variable.parameter
+ settings
+
+
+
+ name
+ Tag name
+ scope
+ entity.name.tag
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #268BD2
+
+
+
+ name
+ Tag start/end
+ scope
+ punctuation.definition.tag.html, punctuation.definition.tag.begin, punctuation.definition.tag.end
+ settings
+
+ foreground
+ #586E75
+
+
+
+ name
+ Tag attribute
+ scope
+ entity.other.attribute-name
+ settings
+
+ foreground
+ #93A1A1
+
+
+
+ name
+ Library function
+ scope
+ support.function
+ settings
+
+ foreground
+ #268BD2
+
+
+
+ name
+ Continuation
+ scope
+ punctuation.separator.continuation
+ settings
+
+ foreground
+ #D30102
+
+
+
+ name
+ Library constant
+ scope
+ support.constant
+ settings
+
+
+
+ name
+ Library class/type
+ scope
+ support.type, support.class
+ settings
+
+ foreground
+ #859900
+
+
+
+ name
+ Library Exception
+ scope
+ support.type.exception
+ settings
+
+ foreground
+ #CB4B16
+
+
+
+ name
+ Special
+ scope
+ keyword.other.special-method
+ settings
+
+ foreground
+ #CB4B16
+
+
+
+ name
+ Library variable
+ scope
+ support.other.variable
+ settings
+
+
+
+ name
+ Invalid
+ scope
+ invalid
+ settings
+
+
+
+ name
+ Quoted String
+ scope
+ string.quoted.double, string.quoted.single
+ settings
+
+ foreground
+ #269186
+
+
+
+ name
+ Quotes
+ scope
+ punctuation.definition.string.begin, punctuation.definition.string.end
+ settings
+
+ foreground
+ #C60000
+
+
+
+ name
+ CSS: Property
+ scope
+ entity.name.tag.css, support.type.property-name.css, meta.property-name.css
+ settings
+
+ fontStyle
+
+ foreground
+ #A57800
+
+
+
+ name
+ CSS: @font-face
+ scope
+ source.css
+ settings
+
+ foreground
+ #D01F1E
+
+
+
+ name
+ CSS: Selector
+ scope
+ meta.selector.css
+ settings
+
+ fontStyle
+
+ foreground
+ #536871
+
+
+
+ name
+ CSS: {}
+ scope
+ punctuation.section.property-list.css
+ settings
+
+ foreground
+ #5A74CF
+
+
+
+ name
+ CSS: Numeric Value
+ scope
+ meta.property-value.css constant.numeric.css, keyword.other.unit.css,constant.other.color.rgb-value.css
+ settings
+
+ fontStyle
+
+ foreground
+ #269186
+
+
+
+ name
+ CSS: Value
+ scope
+ meta.property-value.css
+ settings
+
+ fontStyle
+
+ foreground
+ #269186
+
+
+
+ name
+ CSS: !Important
+ scope
+ keyword.other.important.css
+ settings
+
+ foreground
+ #D01F1E
+
+
+
+ name
+ CSS: Standard Value
+ scope
+ support.constant.color
+ settings
+
+ foreground
+ #269186
+
+
+
+ name
+ CSS: Tag
+ scope
+ entity.name.tag.css
+ settings
+
+ foreground
+ #738A13
+
+
+
+ name
+ CSS: : ,
+ scope
+ punctuation.separator.key-value.css, punctuation.terminator.rule.css
+ settings
+
+ fontStyle
+
+ foreground
+ #536871
+
+
+
+ name
+ CSS .class
+ scope
+ entity.other.attribute-name.class.css
+ settings
+
+ fontStyle
+
+ foreground
+ #268BD2
+
+
+
+ name
+ CSS :pseudo
+ scope
+ entity.other.attribute-name.pseudo-element.css, entity.other.attribute-name.pseudo-class.css
+ settings
+
+ fontStyle
+
+ foreground
+ #BD3800
+
+
+
+ name
+ CSS: #id
+ scope
+ entity.other.attribute-name.id.css
+ settings
+
+ fontStyle
+
+ foreground
+ #268BD2
+
+
+
+ name
+ JS: Function Name
+ scope
+ meta.function.js, entity.name.function.js, support.function.dom.js
+ settings
+
+ foreground
+ #A57800
+
+
+
+ name
+ JS: Source
+ scope
+ text.html.basic source.js.embedded.html
+ settings
+
+ fontStyle
+
+ foreground
+ #A57800
+
+
+
+ name
+ JS: Function
+ scope
+ storage.type.function.js
+ settings
+
+ foreground
+ #268BD2
+
+
+
+ name
+ JS: Numeric Constant
+ scope
+ constant.numeric.js
+ settings
+
+ foreground
+ #269186
+
+
+
+ name
+ JS: []
+ scope
+ meta.brace.square.js
+ settings
+
+ foreground
+ #268BD2
+
+
+
+ name
+ JS: Storage Type
+ scope
+ storage.type.js
+ settings
+
+ foreground
+ #268BD2
+
+
+
+ name
+ ()
+ scope
+ meta.brace.round, punctuation.definition.parameters.begin.js, punctuation.definition.parameters.end.js
+ settings
+
+ foreground
+ #93A1A1
+
+
+
+ name
+ {}
+ scope
+ meta.brace.curly.js
+ settings
+
+ foreground
+ #268BD2
+
+
+
+ name
+ HTML: Doctype
+ scope
+ entity.name.tag.doctype.html, meta.tag.sgml.html, string.quoted.double.doctype.identifiers-and-DTDs.html
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #899090
+
+
+
+ name
+ HTML: Comment Block
+ scope
+ comment.block.html
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #839496
+
+
+
+ name
+ HTML: Script
+ scope
+ entity.name.tag.script.html
+ settings
+
+ fontStyle
+ italic
+
+
+
+ name
+ HTML: Style
+ scope
+ source.css.embedded.html string.quoted.double.html
+ settings
+
+ fontStyle
+
+ foreground
+ #269186
+
+
+
+ name
+ HTML: Text
+ scope
+ text.html.ruby
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #BD3800
+
+
+
+ name
+ HTML: =
+ scope
+ text.html.basic meta.tag.other.html, text.html.basic meta.tag.any.html, text.html.basic meta.tag.block.any, text.html.basic meta.tag.inline.any, text.html.basic meta.tag.structure.any.html, text.html.basic source.js.embedded.html, punctuation.separator.key-value.html
+ settings
+
+ fontStyle
+
+ foreground
+ #708284
+
+
+
+ name
+ HTML: something=
+ scope
+ text.html.basic entity.other.attribute-name.html
+ settings
+
+ foreground
+ #708284
+
+
+
+ name
+ HTML: "
+ scope
+ text.html.basic meta.tag.structure.any.html punctuation.definition.string.begin.html, punctuation.definition.string.begin.html, punctuation.definition.string.end.html
+ settings
+
+ fontStyle
+
+ foreground
+ #269186
+
+
+
+ name
+ HTML: <tag>
+ scope
+ entity.name.tag.block.any.html
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #268BD2
+
+
+
+ name
+ HTML: style
+ scope
+ source.css.embedded.html entity.name.tag.style.html
+ settings
+
+ fontStyle
+ italic
+
+
+
+ name
+ HTML: <style>
+ scope
+ entity.name.tag.style.html
+ settings
+
+ fontStyle
+
+
+
+
+ name
+ HTML: {}
+ scope
+ text.html.basic punctuation.section.property-list.css
+ settings
+
+ fontStyle
+
+
+
+
+ name
+ HTML: Embeddable
+ scope
+ source.css.embedded.html, comment.block.html
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #819090
+
+
+
+ name
+ Ruby: Variable definition
+ scope
+ punctuation.definition.variable.ruby
+ settings
+
+ fontStyle
+
+ foreground
+ #268BD2
+
+
+
+ name
+ Ruby: Function Name
+ scope
+ meta.function.method.with-arguments.ruby
+ settings
+
+ foreground
+ #708284
+
+
+
+ name
+ Ruby: Variable
+ scope
+ variable.language.ruby
+ settings
+
+ foreground
+ #469186
+
+
+
+ name
+ Ruby: Function
+ scope
+ entity.name.function.ruby
+ settings
+
+ foreground
+ #268BD2
+
+
+
+ name
+ Ruby: Keyword Control
+ scope
+ keyword.control.ruby, keyword.control.def.ruby
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #738A05
+
+
+
+ name
+ Ruby: Class
+ scope
+ keyword.control.class.ruby, meta.class.ruby
+ settings
+
+ foreground
+ #748B00
+
+
+
+ name
+ Ruby: Class Name
+ scope
+ entity.name.type.class.ruby
+ settings
+
+ fontStyle
+
+ foreground
+ #A57800
+
+
+
+ name
+ Ruby: Keyword
+ scope
+ keyword.control.ruby
+ settings
+
+ fontStyle
+
+ foreground
+ #748B00
+
+
+
+ name
+ Ruby: Support Class
+ scope
+ support.class.ruby
+ settings
+
+ fontStyle
+
+ foreground
+ #A57800
+
+
+
+ name
+ Ruby: Special Method
+ scope
+ keyword.other.special-method.ruby
+ settings
+
+ foreground
+ #748B00
+
+
+
+ name
+ Ruby: Constant
+ scope
+ constant.language.ruby, constant.numeric.ruby
+ settings
+
+ foreground
+ #269186
+
+
+
+ name
+ Ruby: Constant Other
+ scope
+ variable.other.constant.ruby
+ settings
+
+ fontStyle
+
+ foreground
+ #A57800
+
+
+
+ name
+ Ruby: :symbol
+ scope
+ constant.other.symbol.ruby
+ settings
+
+ fontStyle
+
+ foreground
+ #269186
+
+
+
+ name
+ Ruby: Punctuation Section ''
+ scope
+ punctuation.section.embedded.ruby, punctuation.definition.string.begin.ruby, punctuation.definition.string.end.ruby
+ settings
+
+ foreground
+ #D01F1E
+
+
+
+ name
+ Ruby: Special Method
+ scope
+ keyword.other.special-method.ruby
+ settings
+
+ foreground
+ #BD3800
+
+
+
+ name
+ PHP: Include
+ scope
+ keyword.control.import.include.php
+ settings
+
+ foreground
+ #BD3800
+
+
+
+ name
+ Ruby: erb =
+ scope
+ text.html.ruby meta.tag.inline.any.html
+ settings
+
+ fontStyle
+
+ foreground
+ #819090
+
+
+
+ name
+ Ruby: erb ""
+ scope
+ text.html.ruby punctuation.definition.string.begin, text.html.ruby punctuation.definition.string.end
+ settings
+
+ fontStyle
+
+ foreground
+ #269186
+
+
+
+ name
+ PHP: Quoted Single
+ scope
+ punctuation.definition.string.begin, punctuation.definition.string.end
+ settings
+
+ foreground
+ #839496
+
+
+
+ name
+ PHP: Class Names
+ scope
+ support.class.php
+ settings
+
+ foreground
+ #839496
+
+
+
+ name
+ PHP: []
+ scope
+ keyword.operator.index-start.php, keyword.operator.index-end.php
+ settings
+
+ foreground
+ #D31E1E
+
+
+
+ name
+ PHP: Array
+ scope
+ meta.array.php
+ settings
+
+ foreground
+ #536871
+
+
+
+ name
+ PHP: Array()
+ scope
+ meta.array.php support.function.construct.php, meta.array.empty.php support.function.construct.php
+ settings
+
+ fontStyle
+
+ foreground
+ #A57800
+
+
+
+ name
+ PHP: Array Construct
+ scope
+ support.function.construct.php
+ settings
+
+ foreground
+ #A57800
+
+
+
+ name
+ PHP: Array Begin
+ scope
+ punctuation.definition.array.begin, punctuation.definition.array.end
+ settings
+
+ foreground
+ #D31E1E
+
+
+
+ name
+ PHP: Numeric Constant
+ scope
+ constant.numeric.php
+ settings
+
+ foreground
+ #269186
+
+
+
+ name
+ PHP: New
+ scope
+ keyword.other.new.php
+ settings
+
+ foreground
+ #CB4B16
+
+
+
+ name
+ PHP: ::
+ scope
+ keyword.operator.class
+ settings
+
+ fontStyle
+
+ foreground
+ #839496
+
+
+
+ name
+ PHP: Other Property
+ scope
+ variable.other.property.php
+ settings
+
+ foreground
+ #899090
+
+
+
+ name
+ PHP: Class
+ scope
+ storage.modifier.extends.php, storage.type.class.php, keyword.operator.class.php
+ settings
+
+ foreground
+ #A57800
+
+
+
+ name
+ PHP: Class Function
+ settings
+
+
+
+ name
+ PHP: Semicolon
+ scope
+ punctuation.terminator.expression.php
+ settings
+
+ foreground
+ #839496
+
+
+
+ name
+ PHP: Inherited Class
+ scope
+ meta.other.inherited-class.php
+ settings
+
+ fontStyle
+
+ foreground
+ #536871
+
+
+
+ name
+ PHP: Storage Type
+ scope
+ storage.type.php
+ settings
+
+ foreground
+ #748B00
+
+
+
+ name
+ PHP: Function
+ scope
+ entity.name.function.php
+ settings
+
+ foreground
+ #899090
+
+
+
+ name
+ PHP: Function Construct
+ scope
+ support.function.construct.php
+ settings
+
+ foreground
+ #748B00
+
+
+
+ name
+ PHP: Function Call
+ scope
+ entity.name.type.class.php, meta.function-call.php, meta.function-call.static.php, meta.function-call.object.php
+ settings
+
+ foreground
+ #839496
+
+
+
+ name
+ PHP: Comment
+ scope
+ keyword.other.phpdoc
+ settings
+
+ fontStyle
+
+ foreground
+ #899090
+
+
+
+ name
+ PHP: Source Emebedded
+ scope
+ source.php.embedded.block.html
+ settings
+
+ foreground
+ #BD3613
+
+
+
+ name
+ PHP: Storage Type Function
+ scope
+ storage.type.function.php
+ settings
+
+ foreground
+ #BD3800
+
+
+
+ name
+ C: constant
+ scope
+ constant.numeric.c
+ settings
+
+ fontStyle
+
+ foreground
+ #269186
+
+
+
+ name
+ C: Meta Preprocessor
+ scope
+ meta.preprocessor.c.include, meta.preprocessor.macro.c
+ settings
+
+ fontStyle
+
+ foreground
+ #BB3700
+
+
+
+ name
+ C: Keyword
+ scope
+ keyword.control.import.define.c, keyword.control.import.include.c
+ settings
+
+ fontStyle
+
+ foreground
+ #BB3700
+
+
+
+ name
+ C: Function Preprocessor
+ scope
+ entity.name.function.preprocessor.c
+ settings
+
+ fontStyle
+
+ foreground
+ #BB3700
+
+
+
+ name
+ C: include <something.c>
+ scope
+ meta.preprocessor.c.include string.quoted.other.lt-gt.include.c, meta.preprocessor.c.include punctuation.definition.string.begin.c, meta.preprocessor.c.include punctuation.definition.string.end.c
+ settings
+
+ fontStyle
+
+ foreground
+ #269186
+
+
+
+ name
+ C: Function
+ scope
+ support.function.C99.c, support.function.any-method.c, entity.name.function.c
+ settings
+
+ fontStyle
+
+ foreground
+ #536871
+
+
+
+ name
+ C: "
+ scope
+ punctuation.definition.string.begin.c, punctuation.definition.string.end.c
+ settings
+
+ fontStyle
+
+ foreground
+ #269186
+
+
+
+ name
+ C: Storage Type
+ scope
+ storage.type.c
+ settings
+
+ fontStyle
+
+ foreground
+ #A57800
+
+
+
+ name
+ diff: header
+ scope
+ meta.diff, meta.diff.header
+ settings
+
+ background
+ #A57706
+ fontStyle
+ italic
+ foreground
+ #E0EDDD
+
+
+
+ name
+ diff: deleted
+ scope
+ markup.deleted
+ settings
+
+ background
+ #EAE3CA
+ fontStyle
+
+ foreground
+ #D3201F
+
+
+
+ name
+ diff: changed
+ scope
+ markup.changed
+ settings
+
+ background
+ #EAE3CA
+ fontStyle
+
+ foreground
+ #BF3904
+
+
+
+ name
+ diff: inserted
+ scope
+ markup.inserted
+ settings
+
+ background
+ #EAE3CA
+ foreground
+ #219186
+
+
+
+ name
+ Markdown: Linebreak
+ scope
+ text.html.markdown meta.dummy.line-break
+ settings
+
+ background
+ #A57706
+ foreground
+ #E0EDDD
+
+
+
+ name
+ Markdown: Raw
+ scope
+ text.html.markdown markup.raw.inline
+ settings
+
+ foreground
+ #269186
+
+
+
+ name
+ reST raw
+ scope
+ text.restructuredtext markup.raw
+ settings
+
+ foreground
+ #269186
+
+
+
+ name
+ Other: Removal
+ scope
+ other.package.exclude, other.remove
+ settings
+
+ fontStyle
+
+ foreground
+ #D3201F
+
+
+
+ name
+ Other: Add
+ scope
+ other.add
+ settings
+
+ foreground
+ #269186
+
+
+
+ name
+ Tex: {}
+ scope
+ punctuation.section.group.tex , punctuation.definition.arguments.begin.latex, punctuation.definition.arguments.end.latex, punctuation.definition.arguments.latex
+ settings
+
+ fontStyle
+
+ foreground
+ #B81D1C
+
+
+
+ name
+ Tex: {text}
+ scope
+ meta.group.braces.tex
+ settings
+
+ fontStyle
+
+ foreground
+ #A57705
+
+
+
+ name
+ Tex: Other Math
+ scope
+ string.other.math.tex
+ settings
+
+ fontStyle
+
+ foreground
+ #A57705
+
+
+
+ name
+ Tex: {var}
+ scope
+ variable.parameter.function.latex
+ settings
+
+ fontStyle
+
+ foreground
+ #BD3800
+
+
+
+ name
+ Tex: Math \\
+ scope
+ punctuation.definition.constant.math.tex
+ settings
+
+ fontStyle
+
+ foreground
+ #D01F1E
+
+
+
+ name
+ Tex: Constant Math
+ scope
+ text.tex.latex constant.other.math.tex, constant.other.general.math.tex, constant.other.general.math.tex, constant.character.math.tex
+ settings
+
+ fontStyle
+
+ foreground
+ #269186
+
+
+
+ name
+ Tex: Other Math String
+ scope
+ string.other.math.tex
+ settings
+
+ fontStyle
+
+ foreground
+ #A57800
+
+
+
+ name
+ Tex: $
+ scope
+ punctuation.definition.string.begin.tex, punctuation.definition.string.end.tex
+ settings
+
+ fontStyle
+
+ foreground
+ #D3201F
+
+
+
+ name
+ Tex: \label
+ scope
+ keyword.control.label.latex, text.tex.latex constant.other.general.math.tex
+ settings
+
+ fontStyle
+
+ foreground
+ #269186
+
+
+
+ name
+ Tex: \label { }
+ scope
+ variable.parameter.definition.label.latex
+ settings
+
+ fontStyle
+
+ foreground
+ #D01F1E
+
+
+
+ name
+ Tex: Function
+ scope
+ support.function.be.latex
+ settings
+
+ fontStyle
+
+ foreground
+ #748B00
+
+
+
+ name
+ Tex: Support Function Section
+ scope
+ support.function.section.latex
+ settings
+
+ fontStyle
+
+ foreground
+ #BD3800
+
+
+
+ name
+ Tex: Support Function
+ scope
+ support.function.general.tex
+ settings
+
+ fontStyle
+
+ foreground
+ #269186
+
+
+
+ name
+ Tex: Comment
+ scope
+ punctuation.definition.comment.tex, comment.line.percentage.tex
+ settings
+
+ fontStyle
+ italic
+
+
+
+ name
+ Tex: Reference Label
+ scope
+ keyword.control.ref.latex
+ settings
+
+ fontStyle
+
+ foreground
+ #269186
+
+
+
+ name
+ Python: storage
+ scope
+ storage.type.class.python, storage.type.function.python, storage.modifier.global.python
+ settings
+
+ fontStyle
+
+ foreground
+ #748B00
+
+
+
+ name
+ Python: import
+ scope
+ keyword.control.import.python, keyword.control.import.from.python
+ settings
+
+ foreground
+ #BD3800
+
+
+
+ name
+ Python: Support.exception
+ scope
+ support.type.exception.python
+ settings
+
+ foreground
+ #A57800
+
+
+
+ name
+ Shell: builtin
+ scope
+ support.function.builtin.shell
+ settings
+
+ foreground
+ #748B00
+
+
+
+ name
+ Shell: variable
+ scope
+ variable.other.normal.shell
+ settings
+
+ foreground
+ #BD3800
+
+
+
+ name
+ Shell: DOT_FILES
+ scope
+ source.shell
+ settings
+
+ fontStyle
+
+ foreground
+ #268BD2
+
+
+
+ name
+ Shell: meta scope in loop
+ scope
+ meta.scope.for-in-loop.shell, variable.other.loop.shell
+ settings
+
+ fontStyle
+
+ foreground
+ #536871
+
+
+
+ name
+ Shell: ""
+ scope
+ punctuation.definition.string.end.shell, punctuation.definition.string.begin.shell
+ settings
+
+ fontStyle
+
+ foreground
+ #748B00
+
+
+
+ name
+ Shell: Meta Block
+ scope
+ meta.scope.case-block.shell, meta.scope.case-body.shell
+ settings
+
+ fontStyle
+
+ foreground
+ #536871
+
+
+
+ name
+ Shell: []
+ scope
+ punctuation.definition.logical-expression.shell
+ settings
+
+ fontStyle
+
+ foreground
+ #CD1E1D
+
+
+
+ name
+ Shell: Comment
+ scope
+ comment.line.number-sign.shell
+ settings
+
+ fontStyle
+ italic
+
+
+
+ name
+ Java: import
+ scope
+ keyword.other.import.java
+ settings
+
+ fontStyle
+
+ foreground
+ #BD3800
+
+
+
+ name
+ Java: meta-import
+ scope
+ storage.modifier.import.java
+ settings
+
+ fontStyle
+
+ foreground
+ #586E75
+
+
+
+ name
+ Java: Class
+ scope
+ meta.class.java storage.modifier.java
+ settings
+
+ fontStyle
+
+ foreground
+ #A57800
+
+
+
+ name
+ Java: /* comment */
+ scope
+ source.java comment.block
+ settings
+
+ fontStyle
+
+ foreground
+ #536871
+
+
+
+ name
+ Java: /* @param */
+ scope
+ comment.block meta.documentation.tag.param.javadoc keyword.other.documentation.param.javadoc
+ settings
+
+ fontStyle
+
+ foreground
+ #536871
+
+
+
+ name
+ Perl: variables
+ scope
+ punctuation.definition.variable.perl, variable.other.readwrite.global.perl, variable.other.predefined.perl, keyword.operator.comparison.perl
+ settings
+
+ foreground
+ #B58900
+
+
+
+ name
+ Perl: functions
+ scope
+ support.function.perl
+ settings
+
+ foreground
+ #859900
+
+
+
+ name
+ Perl: comments
+ scope
+ comment.line.number-sign.perl
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #586E75
+
+
+
+ name
+ Perl: quotes
+ scope
+ punctuation.definition.string.begin.perl, punctuation.definition.string.end.perl
+ settings
+
+ foreground
+ #2AA198
+
+
+
+ name
+ Perl: \char
+ scope
+ constant.character.escape.perl
+ settings
+
+ foreground
+ #DC322F
+
+
+
+ uuid
+ A4299D9B-1DE5-4BC4-87F6-A757E71B1597
+ license
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+
diff --git a/sublime/Packages/Color Scheme - Default/Solarized (Light).tmTheme b/sublime/Packages/Color Scheme - Default/Solarized (Light).tmTheme
new file mode 100644
index 0000000..a34bef0
--- /dev/null
+++ b/sublime/Packages/Color Scheme - Default/Solarized (Light).tmTheme
@@ -0,0 +1,1875 @@
+
+
+
+
+ name
+ Solarized (light)
+ settings
+
+
+ settings
+
+ background
+ #FDF6E3
+ caret
+ #000000
+ foreground
+ #586E75
+ invisibles
+ #EAE3C9
+ lineHighlight
+ #EEE8D5
+ selection
+ #073642
+
+
+
+ name
+ Comment
+ scope
+ comment
+ settings
+
+ fontStyle
+
+ foreground
+ #93A1A1
+
+
+
+ name
+ String
+ scope
+ string
+ settings
+
+ foreground
+ #2AA198
+
+
+
+ name
+ StringNumber
+ scope
+ string
+ settings
+
+ foreground
+ #586E75
+
+
+
+ name
+ Regexp
+ scope
+ string.regexp
+ settings
+
+ foreground
+ #D30102
+
+
+
+ name
+ Number
+ scope
+ constant.numeric
+ settings
+
+ foreground
+ #D33682
+
+
+
+ name
+ Variable
+ scope
+ variable.language, variable.other
+ settings
+
+ foreground
+ #268BD2
+
+
+
+ name
+ Keyword
+ scope
+ keyword
+ settings
+
+ foreground
+ #859900
+
+
+
+ name
+ Storage
+ scope
+ storage
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #073642
+
+
+
+ name
+ Class name
+ scope
+ entity.name.class, entity.name.type.class
+ settings
+
+ foreground
+ #268BD2
+
+
+
+ name
+ Function name
+ scope
+ entity.name.function
+ settings
+
+ foreground
+ #268BD2
+
+
+
+ name
+ Variable start
+ scope
+ punctuation.definition.variable
+ settings
+
+ foreground
+ #859900
+
+
+
+ name
+ Embedded code markers
+ scope
+ punctuation.section.embedded.begin, punctuation.section.embedded.end
+ settings
+
+ foreground
+ #D30102
+
+
+
+ name
+ Built-in constant
+ scope
+ constant.language, meta.preprocessor
+ settings
+
+ foreground
+ #B58900
+
+
+
+ name
+ Support.construct
+ scope
+ support.function.construct, keyword.other.new
+ settings
+
+ foreground
+ #D30102
+
+
+
+ name
+ User-defined constant
+ scope
+ constant.character, constant.other
+ settings
+
+ foreground
+ #CB4B16
+
+
+
+ name
+ Inherited class
+ scope
+ entity.other.inherited-class
+ settings
+
+
+
+ name
+ Function argument
+ scope
+ variable.parameter
+ settings
+
+
+
+ name
+ Tag name
+ scope
+ entity.name.tag
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #268BD2
+
+
+
+ name
+ Tag start/end
+ scope
+ punctuation.definition.tag.html, punctuation.definition.tag.begin, punctuation.definition.tag.end
+ settings
+
+ foreground
+ #93A1A1
+
+
+
+ name
+ Tag attribute
+ scope
+ entity.other.attribute-name
+ settings
+
+ foreground
+ #93A1A1
+
+
+
+ name
+ Library function
+ scope
+ support.function
+ settings
+
+ foreground
+ #268BD2
+
+
+
+ name
+ Continuation
+ scope
+ punctuation.separator.continuation
+ settings
+
+ foreground
+ #D30102
+
+
+
+ name
+ Library constant
+ scope
+ support.constant
+ settings
+
+
+
+ name
+ Library class/type
+ scope
+ support.type, support.class
+ settings
+
+ foreground
+ #859900
+
+
+
+ name
+ Library Exception
+ scope
+ support.type.exception
+ settings
+
+ foreground
+ #CB4B16
+
+
+
+ name
+ Special
+ scope
+ keyword.other.special-method
+ settings
+
+ foreground
+ #CB4B16
+
+
+
+ name
+ Library variable
+ scope
+ support.other.variable
+ settings
+
+
+
+ name
+ Invalid
+ scope
+ invalid
+ settings
+
+
+
+ name
+ Quoted String
+ scope
+ string.quoted.double, string.quoted.single
+ settings
+
+ foreground
+ #269186
+
+
+
+ name
+ Quotes
+ scope
+ punctuation.definition.string.begin, punctuation.definition.string.end
+ settings
+
+ foreground
+ #C60000
+
+
+
+ name
+ CSS: Property
+ scope
+ entity.name.tag.css, support.type.property-name.css, meta.property-name.css
+ settings
+
+ fontStyle
+
+ foreground
+ #A57800
+
+
+
+ name
+ CSS: @font-face
+ scope
+ source.css
+ settings
+
+ foreground
+ #D01F1E
+
+
+
+ name
+ CSS: Selector
+ scope
+ meta.selector.css
+ settings
+
+ fontStyle
+
+ foreground
+ #536871
+
+
+
+ name
+ CSS: {}
+ scope
+ punctuation.section.property-list.css
+ settings
+
+ foreground
+ #5A74CF
+
+
+
+ name
+ CSS: Numeric Value
+ scope
+ meta.property-value.css constant.numeric.css, keyword.other.unit.css,constant.other.color.rgb-value.css
+ settings
+
+ fontStyle
+
+ foreground
+ #269186
+
+
+
+ name
+ CSS: Value
+ scope
+ meta.property-value.css
+ settings
+
+ fontStyle
+
+ foreground
+ #269186
+
+
+
+ name
+ CSS: !Important
+ scope
+ keyword.other.important.css
+ settings
+
+ foreground
+ #D01F1E
+
+
+
+ name
+ CSS: Standard Value
+ scope
+ support.constant.color
+ settings
+
+ foreground
+ #269186
+
+
+
+ name
+ CSS: Tag
+ scope
+ entity.name.tag.css
+ settings
+
+ foreground
+ #738A13
+
+
+
+ name
+ CSS: : ,
+ scope
+ punctuation.separator.key-value.css, punctuation.terminator.rule.css
+ settings
+
+ fontStyle
+
+ foreground
+ #536871
+
+
+
+ name
+ CSS .class
+ scope
+ entity.other.attribute-name.class.css
+ settings
+
+ fontStyle
+
+ foreground
+ #268BD2
+
+
+
+ name
+ CSS :pseudo
+ scope
+ entity.other.attribute-name.pseudo-element.css, entity.other.attribute-name.pseudo-class.css
+ settings
+
+ fontStyle
+
+ foreground
+ #BD3800
+
+
+
+ name
+ CSS: #id
+ scope
+ entity.other.attribute-name.id.css
+ settings
+
+ fontStyle
+
+ foreground
+ #268BD2
+
+
+
+ name
+ JS: Function Name
+ scope
+ meta.function.js, entity.name.function.js, support.function.dom.js
+ settings
+
+ foreground
+ #A57800
+
+
+
+ name
+ JS: Source
+ scope
+ text.html.basic source.js.embedded.html
+ settings
+
+ fontStyle
+
+ foreground
+ #A57800
+
+
+
+ name
+ JS: Function
+ scope
+ storage.type.function.js
+ settings
+
+ foreground
+ #268BD2
+
+
+
+ name
+ JS: Numeric Constant
+ scope
+ constant.numeric.js
+ settings
+
+ foreground
+ #269186
+
+
+
+ name
+ JS: []
+ scope
+ meta.brace.square.js
+ settings
+
+ foreground
+ #268BD2
+
+
+
+ name
+ JS: Storage Type
+ scope
+ storage.type.js
+ settings
+
+ foreground
+ #268BD2
+
+
+
+ name
+ ()
+ scope
+ meta.brace.round, punctuation.definition.parameters.begin.js, punctuation.definition.parameters.end.js
+ settings
+
+ foreground
+ #93A1A1
+
+
+
+ name
+ {}
+ scope
+ meta.brace.curly.js
+ settings
+
+ foreground
+ #268BD2
+
+
+
+ name
+ HTML: Doctype
+ scope
+ entity.name.tag.doctype.html, meta.tag.sgml.html, string.quoted.double.doctype.identifiers-and-DTDs.html
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #899090
+
+
+
+ name
+ HTML: Comment Block
+ scope
+ comment.block.html
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #839496
+
+
+
+ name
+ HTML: Script
+ scope
+ entity.name.tag.script.html
+ settings
+
+ fontStyle
+ italic
+
+
+
+ name
+ HTML: Style
+ scope
+ source.css.embedded.html string.quoted.double.html
+ settings
+
+ fontStyle
+
+ foreground
+ #269186
+
+
+
+ name
+ HTML: Text
+ scope
+ text.html.ruby
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #BD3800
+
+
+
+ name
+ HTML: =
+ scope
+ text.html.basic meta.tag.other.html, text.html.basic meta.tag.any.html, text.html.basic meta.tag.block.any, text.html.basic meta.tag.inline.any, text.html.basic meta.tag.structure.any.html, text.html.basic source.js.embedded.html, punctuation.separator.key-value.html
+ settings
+
+ fontStyle
+
+ foreground
+ #708284
+
+
+
+ name
+ HTML: something=
+ scope
+ text.html.basic entity.other.attribute-name.html
+ settings
+
+ foreground
+ #708284
+
+
+
+ name
+ HTML: "
+ scope
+ text.html.basic meta.tag.structure.any.html punctuation.definition.string.begin.html, punctuation.definition.string.begin.html, punctuation.definition.string.end.html
+ settings
+
+ fontStyle
+
+ foreground
+ #269186
+
+
+
+ name
+ HTML: <tag>
+ scope
+ entity.name.tag.block.any.html
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #268BD2
+
+
+
+ name
+ HTML: style
+ scope
+ source.css.embedded.html entity.name.tag.style.html
+ settings
+
+ fontStyle
+ italic
+
+
+
+ name
+ HTML: <style>
+ scope
+ entity.name.tag.style.html
+ settings
+
+ fontStyle
+
+
+
+
+ name
+ HTML: {}
+ scope
+ text.html.basic punctuation.section.property-list.css
+ settings
+
+ fontStyle
+
+
+
+
+ name
+ HTML: Embeddable
+ scope
+ source.css.embedded.html, comment.block.html
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #819090
+
+
+
+ name
+ Ruby: Variable definition
+ scope
+ punctuation.definition.variable.ruby
+ settings
+
+ fontStyle
+
+ foreground
+ #268BD2
+
+
+
+ name
+ Ruby: Function Name
+ scope
+ meta.function.method.with-arguments.ruby
+ settings
+
+ foreground
+ #708284
+
+
+
+ name
+ Ruby: Variable
+ scope
+ variable.language.ruby
+ settings
+
+ foreground
+ #469186
+
+
+
+ name
+ Ruby: Function
+ scope
+ entity.name.function.ruby
+ settings
+
+ foreground
+ #268BD2
+
+
+
+ name
+ Ruby: Keyword Control
+ scope
+ keyword.control.ruby, keyword.control.def.ruby
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #738A05
+
+
+
+ name
+ Ruby: Class
+ scope
+ keyword.control.class.ruby, meta.class.ruby
+ settings
+
+ foreground
+ #748B00
+
+
+
+ name
+ Ruby: Class Name
+ scope
+ entity.name.type.class.ruby
+ settings
+
+ fontStyle
+
+ foreground
+ #A57800
+
+
+
+ name
+ Ruby: Keyword
+ scope
+ keyword.control.ruby
+ settings
+
+ fontStyle
+
+ foreground
+ #748B00
+
+
+
+ name
+ Ruby: Support Class
+ scope
+ support.class.ruby
+ settings
+
+ fontStyle
+
+ foreground
+ #A57800
+
+
+
+ name
+ Ruby: Special Method
+ scope
+ keyword.other.special-method.ruby
+ settings
+
+ foreground
+ #748B00
+
+
+
+ name
+ Ruby: Constant
+ scope
+ constant.language.ruby, constant.numeric.ruby
+ settings
+
+ foreground
+ #269186
+
+
+
+ name
+ Ruby: Constant Other
+ scope
+ variable.other.constant.ruby
+ settings
+
+ fontStyle
+
+ foreground
+ #A57800
+
+
+
+ name
+ Ruby: :symbol
+ scope
+ constant.other.symbol.ruby
+ settings
+
+ fontStyle
+
+ foreground
+ #269186
+
+
+
+ name
+ Ruby: Punctuation Section ''
+ scope
+ punctuation.section.embedded.ruby, punctuation.definition.string.begin.ruby, punctuation.definition.string.end.ruby
+ settings
+
+ foreground
+ #D01F1E
+
+
+
+ name
+ Ruby: Special Method
+ scope
+ keyword.other.special-method.ruby
+ settings
+
+ foreground
+ #BD3800
+
+
+
+ name
+ PHP: Include
+ scope
+ keyword.control.import.include.php
+ settings
+
+ foreground
+ #BD3800
+
+
+
+ name
+ Ruby: erb =
+ scope
+ text.html.ruby meta.tag.inline.any.html
+ settings
+
+ fontStyle
+
+ foreground
+ #819090
+
+
+
+ name
+ Ruby: erb ""
+ scope
+ text.html.ruby punctuation.definition.string.begin, text.html.ruby punctuation.definition.string.end
+ settings
+
+ fontStyle
+
+ foreground
+ #269186
+
+
+
+ name
+ PHP: Quoted Single
+ scope
+ punctuation.definition.string.begin, punctuation.definition.string.end
+ settings
+
+ foreground
+ #839496
+
+
+
+ name
+ PHP: []
+ scope
+ keyword.operator.index-start.php, keyword.operator.index-end.php
+ settings
+
+ foreground
+ #D31E1E
+
+
+
+ name
+ PHP: Array
+ scope
+ meta.array.php
+ settings
+
+ foreground
+ #536871
+
+
+
+ name
+ PHP: Array()
+ scope
+ meta.array.php support.function.construct.php, meta.array.empty.php support.function.construct.php
+ settings
+
+ fontStyle
+
+ foreground
+ #A57800
+
+
+
+ name
+ PHP: Array Construct
+ scope
+ support.function.construct.php
+ settings
+
+ foreground
+ #A57800
+
+
+
+ name
+ PHP: Array Begin
+ scope
+ punctuation.definition.array.begin, punctuation.definition.array.end
+ settings
+
+ foreground
+ #D31E1E
+
+
+
+ name
+ PHP: Numeric Constant
+ scope
+ constant.numeric.php
+ settings
+
+ foreground
+ #269186
+
+
+
+ name
+ PHP: New
+ scope
+ keyword.other.new.php
+ settings
+
+ foreground
+ #CB4B16
+
+
+
+ name
+ PHP: ::
+ scope
+ support.class.php, keyword.operator.class
+ settings
+
+ fontStyle
+
+ foreground
+ #536871
+
+
+
+ name
+ PHP: Other Property
+ scope
+ variable.other.property.php
+ settings
+
+ foreground
+ #899090
+
+
+
+ name
+ PHP: Class
+ scope
+ storage.modifier.extends.php, storage.type.class.php, keyword.operator.class.php
+ settings
+
+ foreground
+ #A57800
+
+
+
+ name
+ PHP: Class Function
+ settings
+
+
+
+ name
+ PHP: Inherited Class
+ scope
+ meta.other.inherited-class.php
+ settings
+
+ fontStyle
+
+ foreground
+ #536871
+
+
+
+ name
+ PHP: Storage Type
+ scope
+ storage.type.php
+ settings
+
+ foreground
+ #748B00
+
+
+
+ name
+ PHP: Function
+ scope
+ entity.name.function.php
+ settings
+
+ foreground
+ #899090
+
+
+
+ name
+ PHP: Function Construct
+ scope
+ support.function.construct.php
+ settings
+
+ foreground
+ #748B00
+
+
+
+ name
+ PHP: Function Call
+ scope
+ entity.name.type.class.php, meta.function-call.php, meta.function-call.static.php, meta.function-call.object.php
+ settings
+
+ foreground
+ #839496
+
+
+
+ name
+ PHP: Comment
+ scope
+ keyword.other.phpdoc
+ settings
+
+ fontStyle
+
+ foreground
+ #899090
+
+
+
+ name
+ PHP: Source Emebedded
+ scope
+ source.php.embedded.block.html
+ settings
+
+ foreground
+ #BD3613
+
+
+
+ name
+ PHP: Storage Type Function
+ scope
+ storage.type.function.php
+ settings
+
+ foreground
+ #BD3800
+
+
+
+ name
+ C: constant
+ scope
+ constant.numeric.c
+ settings
+
+ fontStyle
+
+ foreground
+ #269186
+
+
+
+ name
+ C: Meta Preprocessor
+ scope
+ meta.preprocessor.c.include, meta.preprocessor.macro.c
+ settings
+
+ fontStyle
+
+ foreground
+ #BB3700
+
+
+
+ name
+ C: Keyword
+ scope
+ keyword.control.import.define.c, keyword.control.import.include.c
+ settings
+
+ fontStyle
+
+ foreground
+ #BB3700
+
+
+
+ name
+ C: Function Preprocessor
+ scope
+ entity.name.function.preprocessor.c
+ settings
+
+ fontStyle
+
+ foreground
+ #BB3700
+
+
+
+ name
+ C: include <something.c>
+ scope
+ meta.preprocessor.c.include string.quoted.other.lt-gt.include.c, meta.preprocessor.c.include punctuation.definition.string.begin.c, meta.preprocessor.c.include punctuation.definition.string.end.c
+ settings
+
+ fontStyle
+
+ foreground
+ #269186
+
+
+
+ name
+ C: Function
+ scope
+ support.function.C99.c, support.function.any-method.c, entity.name.function.c
+ settings
+
+ fontStyle
+
+ foreground
+ #536871
+
+
+
+ name
+ C: "
+ scope
+ punctuation.definition.string.begin.c, punctuation.definition.string.end.c
+ settings
+
+ fontStyle
+
+ foreground
+ #269186
+
+
+
+ name
+ C: Storage Type
+ scope
+ storage.type.c
+ settings
+
+ fontStyle
+
+ foreground
+ #A57800
+
+
+
+ name
+ diff: header
+ scope
+ meta.diff, meta.diff.header
+ settings
+
+ background
+ #A57706
+ fontStyle
+ italic
+ foreground
+ #E0EDDD
+
+
+
+ name
+ diff: deleted
+ scope
+ markup.deleted
+ settings
+
+ background
+ #EAE3CA
+ fontStyle
+
+ foreground
+ #D3201F
+
+
+
+ name
+ diff: changed
+ scope
+ markup.changed
+ settings
+
+ background
+ #EAE3CA
+ fontStyle
+
+ foreground
+ #BF3904
+
+
+
+ name
+ diff: inserted
+ scope
+ markup.inserted
+ settings
+
+ background
+ #EAE3CA
+ foreground
+ #219186
+
+
+
+ name
+ Markdown: Linebreak
+ scope
+ text.html.markdown meta.dummy.line-break
+ settings
+
+ background
+ #A57706
+ foreground
+ #E0EDDD
+
+
+
+ name
+ Markdown: Raw
+ scope
+ text.html.markdown markup.raw.inline
+ settings
+
+ foreground
+ #269186
+
+
+
+ name
+ reST raw
+ scope
+ text.restructuredtext markup.raw
+ settings
+
+ foreground
+ #269186
+
+
+
+ name
+ Other: Removal
+ scope
+ other.package.exclude, other.remove
+ settings
+
+ fontStyle
+
+ foreground
+ #D3201F
+
+
+
+ name
+ Other: Add
+ scope
+ other.add
+ settings
+
+ foreground
+ #269186
+
+
+
+ name
+ Tex: {}
+ scope
+ punctuation.section.group.tex , punctuation.definition.arguments.begin.latex, punctuation.definition.arguments.end.latex, punctuation.definition.arguments.latex
+ settings
+
+ fontStyle
+
+ foreground
+ #B81D1C
+
+
+
+ name
+ Tex: {text}
+ scope
+ meta.group.braces.tex
+ settings
+
+ fontStyle
+
+ foreground
+ #A57705
+
+
+
+ name
+ Tex: Other Math
+ scope
+ string.other.math.tex
+ settings
+
+ fontStyle
+
+ foreground
+ #A57705
+
+
+
+ name
+ Tex: {var}
+ scope
+ variable.parameter.function.latex
+ settings
+
+ fontStyle
+
+ foreground
+ #BD3800
+
+
+
+ name
+ Tex: Math \\
+ scope
+ punctuation.definition.constant.math.tex
+ settings
+
+ fontStyle
+
+ foreground
+ #D01F1E
+
+
+
+ name
+ Tex: Constant Math
+ scope
+ text.tex.latex constant.other.math.tex, constant.other.general.math.tex, constant.other.general.math.tex, constant.character.math.tex
+ settings
+
+ fontStyle
+
+ foreground
+ #269186
+
+
+
+ name
+ Tex: Other Math String
+ scope
+ string.other.math.tex
+ settings
+
+ fontStyle
+
+ foreground
+ #A57800
+
+
+
+ name
+ Tex: $
+ scope
+ punctuation.definition.string.begin.tex, punctuation.definition.string.end.tex
+ settings
+
+ fontStyle
+
+ foreground
+ #D3201F
+
+
+
+ name
+ Tex: \label
+ scope
+ keyword.control.label.latex, text.tex.latex constant.other.general.math.tex
+ settings
+
+ fontStyle
+
+ foreground
+ #269186
+
+
+
+ name
+ Tex: \label { }
+ scope
+ variable.parameter.definition.label.latex
+ settings
+
+ fontStyle
+
+ foreground
+ #D01F1E
+
+
+
+ name
+ Tex: Function
+ scope
+ support.function.be.latex
+ settings
+
+ fontStyle
+
+ foreground
+ #748B00
+
+
+
+ name
+ Tex: Support Function Section
+ scope
+ support.function.section.latex
+ settings
+
+ fontStyle
+
+ foreground
+ #BD3800
+
+
+
+ name
+ Tex: Support Function
+ scope
+ support.function.general.tex
+ settings
+
+ fontStyle
+
+ foreground
+ #269186
+
+
+
+ name
+ Tex: Comment
+ scope
+ punctuation.definition.comment.tex, comment.line.percentage.tex
+ settings
+
+ fontStyle
+ italic
+
+
+
+ name
+ Tex: Reference Label
+ scope
+ keyword.control.ref.latex
+ settings
+
+ fontStyle
+
+ foreground
+ #269186
+
+
+
+ name
+ Python: storage
+ scope
+ storage.type.class.python, storage.type.function.python, storage.modifier.global.python
+ settings
+
+ fontStyle
+
+ foreground
+ #748B00
+
+
+
+ name
+ Python: import
+ scope
+ keyword.control.import.python, keyword.control.import.from.python
+ settings
+
+ foreground
+ #BD3800
+
+
+
+ name
+ Python: Support.exception
+ scope
+ support.type.exception.python
+ settings
+
+ foreground
+ #A57800
+
+
+
+ name
+ Shell: builtin
+ scope
+ support.function.builtin.shell
+ settings
+
+ foreground
+ #748B00
+
+
+
+ name
+ Shell: variable
+ scope
+ variable.other.normal.shell
+ settings
+
+ foreground
+ #BD3800
+
+
+
+ name
+ Shell: DOT_FILES
+ scope
+ source.shell
+ settings
+
+ fontStyle
+
+ foreground
+ #268BD2
+
+
+
+ name
+ Shell: meta scope in loop
+ scope
+ meta.scope.for-in-loop.shell, variable.other.loop.shell
+ settings
+
+ fontStyle
+
+ foreground
+ #536871
+
+
+
+ name
+ Shell: ""
+ scope
+ punctuation.definition.string.end.shell, punctuation.definition.string.begin.shell
+ settings
+
+ fontStyle
+
+ foreground
+ #748B00
+
+
+
+ name
+ Shell: Meta Block
+ scope
+ meta.scope.case-block.shell, meta.scope.case-body.shell
+ settings
+
+ fontStyle
+
+ foreground
+ #536871
+
+
+
+ name
+ Shell: []
+ scope
+ punctuation.definition.logical-expression.shell
+ settings
+
+ fontStyle
+
+ foreground
+ #CD1E1D
+
+
+
+ name
+ Shell: Comment
+ scope
+ comment.line.number-sign.shell
+ settings
+
+ fontStyle
+ italic
+
+
+
+ name
+ Java: import
+ scope
+ keyword.other.import.java
+ settings
+
+ fontStyle
+
+ foreground
+ #BD3800
+
+
+
+ name
+ Java: meta-import
+ scope
+ storage.modifier.import.java
+ settings
+
+ fontStyle
+
+ foreground
+ #586E75
+
+
+
+ name
+ Java: Class
+ scope
+ meta.class.java storage.modifier.java
+ settings
+
+ fontStyle
+
+ foreground
+ #A57800
+
+
+
+ name
+ Java: /* comment */
+ scope
+ source.java comment.block
+ settings
+
+ fontStyle
+
+ foreground
+ #536871
+
+
+
+ name
+ Java: /* @param */
+ scope
+ comment.block meta.documentation.tag.param.javadoc keyword.other.documentation.param.javadoc
+ settings
+
+ fontStyle
+
+ foreground
+ #536871
+
+
+
+ name
+ Perl: variables
+ scope
+ punctuation.definition.variable.perl, variable.other.readwrite.global.perl, variable.other.predefined.perl, keyword.operator.comparison.perl
+ settings
+
+ foreground
+ #B58900
+
+
+
+ name
+ Perl: functions
+ scope
+ support.function.perl
+ settings
+
+ foreground
+ #859900
+
+
+
+ name
+ Perl: comments
+ scope
+ comment.line.number-sign.perl
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #586E75
+
+
+
+ name
+ Perl: quotes
+ scope
+ punctuation.definition.string.begin.perl, punctuation.definition.string.end.perl
+ settings
+
+ foreground
+ #2AA198
+
+
+
+ name
+ Perl: \char
+ scope
+ constant.character.escape.perl
+ settings
+
+ foreground
+ #DC322F
+
+
+
+ uuid
+ 38E819D9-AE02-452F-9231-ECC3B204AFD7
+ license
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+
diff --git a/sublime/Packages/Color Scheme - Default/SpaceCadet.tmTheme b/sublime/Packages/Color Scheme - Default/SpaceCadet.tmTheme
new file mode 100644
index 0000000..156f43d
--- /dev/null
+++ b/sublime/Packages/Color Scheme - Default/SpaceCadet.tmTheme
@@ -0,0 +1,212 @@
+
+
+
+
+ author
+ Alex Ross
+ comment
+ Created by Alex Ross
+ name
+ SpaceCadet
+ settings
+
+
+ settings
+
+ background
+ #0D0D0D
+ caret
+ #7F005D
+ foreground
+ #DDE6CF
+ invisibles
+ #BFBFBF
+ lineHighlight
+ #00000012
+ selection
+ #40002F
+
+
+
+ name
+ Comment
+ scope
+ comment
+ settings
+
+ foreground
+ #473C45
+
+
+
+ name
+ String
+ scope
+ string
+ settings
+
+ foreground
+ #805978
+
+
+
+ name
+ Constant
+ scope
+ constant
+ settings
+
+ foreground
+ #A8885A
+
+
+
+ name
+ Variable
+ scope
+ variable.parameter, variable.other
+ settings
+
+ foreground
+ #596380
+
+
+
+ name
+ Keyword
+ scope
+ keyword - keyword.operator, keyword.operator.logical
+ settings
+
+ foreground
+ #728059
+
+
+
+ name
+ Storage
+ scope
+ storage
+ settings
+
+ foreground
+ #9EBF60
+
+
+
+ name
+ Entity
+ scope
+ entity
+ settings
+
+ foreground
+ #6078BF
+
+
+
+ name
+ Inherited class
+ scope
+ entity.other.inherited-class
+ settings
+
+ fontStyle
+ italic
+
+
+
+ name
+ Support
+ scope
+ support
+ settings
+
+ foreground
+ #8A4B66
+
+
+
+ name
+ Exception
+ scope
+ support.type.exception
+ settings
+
+ foreground
+ #893062
+
+
+
+ name
+ Tag name
+ scope
+ entity.name.tag
+ settings
+
+
+
+ name
+ Tag attribute
+ scope
+ entity.other.attribute-name
+ settings
+
+
+
+ name
+ Library constant
+ scope
+ support.constant
+ settings
+
+
+
+ name
+ Library class/type
+ scope
+ support.type, support.class
+ settings
+
+
+
+ name
+ Library variable
+ scope
+ support.other.variable
+ settings
+
+
+
+ name
+ Invalid
+ scope
+ invalid
+ settings
+
+ background
+ #5F0047
+
+
+
+ name
+ - Meta
+ settings
+
+
+
+ name
+ function.section
+ scope
+ meta.function.section
+ settings
+
+ background
+ #371D28
+
+
+
+ uuid
+ 2C24E84F-F9FE-4C2E-92D2-F52198BA7E41
+
+
diff --git a/sublime/Packages/Color Scheme - Default/Sunburst.tmTheme b/sublime/Packages/Color Scheme - Default/Sunburst.tmTheme
new file mode 100644
index 0000000..c48337b
--- /dev/null
+++ b/sublime/Packages/Color Scheme - Default/Sunburst.tmTheme
@@ -0,0 +1,665 @@
+
+
+
+
+ author
+ Stanley Rost
+ comment
+ (π) Soryu, 2005
+ name
+ Sunburst
+ settings
+
+
+ settings
+
+ background
+ #000000
+ caret
+ #A7A7A7
+ foreground
+ #F8F8F8
+ invisibles
+ #CAE2FB3D
+ lineHighlight
+ #FFFFFF0D
+ selection
+ #DDF0FF33
+
+
+
+ name
+ Comment
+ scope
+ comment
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #AEAEAE
+
+
+
+ name
+ Constant
+ scope
+ constant
+ settings
+
+ foreground
+ #3387CC
+
+
+
+ name
+ Entity
+ scope
+ entity
+ settings
+
+ fontStyle
+
+ foreground
+ #89BDFF
+
+
+
+ name
+ Keyword
+ scope
+ keyword
+ settings
+
+ fontStyle
+
+ foreground
+ #E28964
+
+
+
+ name
+ Storage
+ scope
+ storage
+ settings
+
+ fontStyle
+
+ foreground
+ #99CF50
+
+
+
+ name
+ String
+ scope
+ string
+ settings
+
+ fontStyle
+
+ foreground
+ #65B042
+
+
+
+ name
+ Support
+ scope
+ support
+ settings
+
+ fontStyle
+
+ foreground
+ #9B859D
+
+
+
+ name
+ Variable
+ scope
+ variable
+ settings
+
+ foreground
+ #3E87E3
+
+
+
+ name
+ Invalid – Deprecated
+ scope
+ invalid.deprecated
+ settings
+
+ fontStyle
+ italic underline
+ foreground
+ #FD5FF1
+
+
+
+ name
+ Invalid – Illegal
+ scope
+ invalid.illegal
+ settings
+
+ background
+ #562D56BF
+ foreground
+ #FD5FF1
+
+
+
+ name
+ -----------------------------------
+ settings
+
+
+
+ name
+ ♦ Embedded Source (Bright)
+ scope
+ text source
+ settings
+
+ background
+ #B1B3BA08
+
+
+
+ name
+ ♦ Entity inherited-class
+ scope
+ entity.other.inherited-class
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #9B5C2E
+
+
+
+ name
+ ♦ String embedded-source
+ scope
+ string.quoted source
+ settings
+
+ fontStyle
+
+ foreground
+ #DAEFA3
+
+
+
+ name
+ ♦ String constant
+ scope
+ string constant
+ settings
+
+ foreground
+ #DDF2A4
+
+
+
+ name
+ ♦ String.regexp
+ scope
+ string.regexp
+ settings
+
+ foreground
+ #E9C062
+
+
+
+ name
+ ♦ String.regexp.«special»
+ scope
+ string.regexp constant.character.escape, string.regexp source.ruby.embedded, string.regexp string.regexp.arbitrary-repitition
+ settings
+
+ foreground
+ #CF7D34
+
+
+
+ name
+ ♦ String variable
+ scope
+ string variable
+ settings
+
+ foreground
+ #8A9A95
+
+
+
+ name
+ ♦ Support.function
+ scope
+ support.function
+ settings
+
+ fontStyle
+
+ foreground
+ #DAD085
+
+
+
+ name
+ ♦ Support.constant
+ scope
+ support.constant
+ settings
+
+ fontStyle
+
+ foreground
+ #CF6A4C
+
+
+
+ name
+ c C/C++ Preprocessor Line
+ scope
+ meta.preprocessor.c
+ settings
+
+ foreground
+ #8996A8
+
+
+
+ name
+ c C/C++ Preprocessor Directive
+ scope
+ meta.preprocessor.c keyword
+ settings
+
+ foreground
+ #AFC4DB
+
+
+
+ name
+ j Entity Name Type
+ scope
+ entity.name.type
+ settings
+
+ fontStyle
+ underline
+
+
+
+ name
+ j Cast
+ scope
+ meta.cast
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #676767
+
+
+
+ name
+ ✘ Doctype/XML Processing
+ scope
+ meta.sgml.html meta.doctype, meta.sgml.html meta.doctype entity, meta.sgml.html meta.doctype string, meta.xml-processing, meta.xml-processing entity, meta.xml-processing string
+ settings
+
+ foreground
+ #494949
+
+
+
+ name
+ ✘ Meta.tag.«all»
+ scope
+ meta.tag, meta.tag entity
+ settings
+
+ foreground
+ #89BDFF
+
+
+
+ name
+ ✘ Meta.tag.inline
+ scope
+ source entity.name.tag, source entity.other.attribute-name, meta.tag.inline, meta.tag.inline entity
+ settings
+
+ foreground
+ #E0C589
+
+
+
+ name
+ ✘ Namespaces
+ scope
+ entity.name.tag.namespace, entity.other.attribute-name.namespace
+ settings
+
+ foreground
+ #E18964
+
+
+
+ name
+ § css tag-name
+ scope
+ meta.selector.css entity.name.tag
+ settings
+
+ foreground
+ #CDA869
+
+
+
+ name
+ § css:pseudo-class
+ scope
+ meta.selector.css entity.other.attribute-name.tag.pseudo-class
+ settings
+
+ foreground
+ #8F9D6A
+
+
+
+ name
+ § css#id
+ scope
+ meta.selector.css entity.other.attribute-name.id
+ settings
+
+ foreground
+ #8B98AB
+
+
+
+ name
+ § css.class
+ scope
+ meta.selector.css entity.other.attribute-name.class
+ settings
+
+ foreground
+ #9B703F
+
+
+
+ name
+ § css property-name:
+ scope
+ support.type.property-name.css
+ settings
+
+ foreground
+ #C5AF75
+
+
+
+ name
+ § css property-value;
+ scope
+ meta.property-group support.constant.property-value.css, meta.property-value support.constant.property-value.css
+ settings
+
+ foreground
+ #F9EE98
+
+
+
+ name
+ § css @at-rule
+ scope
+ meta.preprocessor.at-rule keyword.control.at-rule
+ settings
+
+ foreground
+ #8693A5
+
+
+
+ name
+ § css additional-constants
+ scope
+ meta.property-value support.constant.named-color.css, meta.property-value constant
+ settings
+
+ foreground
+ #DD7B3B
+
+
+
+ name
+ § css constructor.argument
+ scope
+ meta.constructor.argument.css
+ settings
+
+ foreground
+ #8F9D6A
+
+
+
+ name
+ ⎇ diff.header
+ scope
+ meta.diff, meta.diff.header
+ settings
+
+ background
+ #0E2231
+ fontStyle
+ italic
+ foreground
+ #F8F8F8
+
+
+
+ name
+ ⎇ diff.deleted
+ scope
+ markup.deleted
+ settings
+
+ background
+ #420E09
+ foreground
+ #F8F8F8
+
+
+
+ name
+ ⎇ diff.changed
+ scope
+ markup.changed
+ settings
+
+ background
+ #4A410D
+ foreground
+ #F8F8F8
+
+
+
+ name
+ ⎇ diff.inserted
+ scope
+ markup.inserted
+ settings
+
+ background
+ #253B22
+ foreground
+ #F8F8F8
+
+
+
+ name
+ --------------------------------
+ settings
+
+
+
+ name
+ Markup: Italic
+ scope
+ markup.italic
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #E9C062
+
+
+
+ name
+ Markup: Bold
+ scope
+ markup.bold
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #E9C062
+
+
+
+ name
+ Markup: Underline
+ scope
+ markup.underline
+ settings
+
+ fontStyle
+ underline
+ foreground
+ #E18964
+
+
+
+ name
+ Markup: Quote
+ scope
+ markup.quote
+ settings
+
+ background
+ #FEE09C12
+ fontStyle
+ italic
+ foreground
+ #E1D4B9
+
+
+
+ name
+ Markup: Heading
+ scope
+ markup.heading, markup.heading entity
+ settings
+
+ background
+ #632D04
+ fontStyle
+
+ foreground
+ #FEDCC5
+
+
+
+ name
+ Markup: List
+ scope
+ markup.list
+ settings
+
+ foreground
+ #E1D4B9
+
+
+
+ name
+ Markup: Raw
+ scope
+ markup.raw
+ settings
+
+ background
+ #B1B3BA08
+ fontStyle
+
+ foreground
+ #578BB3
+
+
+
+ name
+ Markup: Comment
+ scope
+ markup comment
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #F67B37
+
+
+
+ name
+ Markup: Separator
+ scope
+ meta.separator
+ settings
+
+ background
+ #242424
+ foreground
+ #60A633
+
+
+
+ name
+ Log Entry
+ scope
+ meta.line.entry.logfile, meta.line.exit.logfile
+ settings
+
+ background
+ #EEEEEE29
+
+
+
+ name
+ Log Entry Error
+ scope
+ meta.line.error.logfile
+ settings
+
+ background
+ #751012
+
+
+
+ uuid
+ C8C58F9A-35FE-44A4-9BC2-2F3C343DC81D
+
+
diff --git a/sublime/Packages/Color Scheme - Default/Twilight.tmTheme b/sublime/Packages/Color Scheme - Default/Twilight.tmTheme
new file mode 100644
index 0000000..a83f7ec
--- /dev/null
+++ b/sublime/Packages/Color Scheme - Default/Twilight.tmTheme
@@ -0,0 +1,514 @@
+
+
+
+
+ author
+ Michael Sheets
+ name
+ Twilight
+ settings
+
+
+ settings
+
+ background
+ #141414
+ caret
+ #A7A7A7
+ foreground
+ #F8F8F8
+ invisibles
+ #FFFFFF40
+ lineHighlight
+ #FFFFFF08
+ selection
+ #DDF0FF33
+
+
+
+ name
+ Comment
+ scope
+ comment
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #5F5A60
+
+
+
+ name
+ Constant
+ scope
+ constant
+ settings
+
+ foreground
+ #CF6A4C
+
+
+
+ name
+ Entity
+ scope
+ entity
+ settings
+
+ fontStyle
+
+ foreground
+ #9B703F
+
+
+
+ name
+ Keyword
+ scope
+ keyword
+ settings
+
+ fontStyle
+
+ foreground
+ #CDA869
+
+
+
+ name
+ Storage
+ scope
+ storage
+ settings
+
+ fontStyle
+
+ foreground
+ #F9EE98
+
+
+
+ name
+ String
+ scope
+ string
+ settings
+
+ fontStyle
+
+ foreground
+ #8F9D6A
+
+
+
+ name
+ Support
+ scope
+ support
+ settings
+
+ fontStyle
+
+ foreground
+ #9B859D
+
+
+
+ name
+ Variable
+ scope
+ variable
+ settings
+
+ foreground
+ #7587A6
+
+
+
+ name
+ Invalid – Deprecated
+ scope
+ invalid.deprecated
+ settings
+
+ fontStyle
+ italic underline
+ foreground
+ #D2A8A1
+
+
+
+ name
+ Invalid – Illegal
+ scope
+ invalid.illegal
+ settings
+
+ background
+ #562D56BF
+ foreground
+ #F8F8F8
+
+
+
+ name
+ -----------------------------------
+ settings
+
+
+
+ name
+ ♦ Embedded Source
+ scope
+ text source
+ settings
+
+ background
+ #B0B3BA14
+
+
+
+ name
+ ♦ Embedded Source (Bright)
+ scope
+ text.html.ruby source
+ settings
+
+ background
+ #B1B3BA21
+
+
+
+ name
+ ♦ Entity inherited-class
+ scope
+ entity.other.inherited-class
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #9B5C2E
+
+
+
+ name
+ ♦ String embedded-source
+ scope
+ string source
+ settings
+
+ fontStyle
+
+ foreground
+ #DAEFA3
+
+
+
+ name
+ ♦ String constant
+ scope
+ string constant
+ settings
+
+ foreground
+ #DDF2A4
+
+
+
+ name
+ ♦ String.regexp
+ scope
+ string.regexp
+ settings
+
+ fontStyle
+
+ foreground
+ #E9C062
+
+
+
+ name
+ ♦ String.regexp.«special»
+ scope
+ string.regexp constant.character.escape, string.regexp source.ruby.embedded, string.regexp string.regexp.arbitrary-repitition
+ settings
+
+ foreground
+ #CF7D34
+
+
+
+ name
+ ♦ String variable
+ scope
+ string variable
+ settings
+
+ foreground
+ #8A9A95
+
+
+
+ name
+ ♦ Support.function
+ scope
+ support.function
+ settings
+
+ fontStyle
+
+ foreground
+ #DAD085
+
+
+
+ name
+ ♦ Support.constant
+ scope
+ support.constant
+ settings
+
+ fontStyle
+
+ foreground
+ #CF6A4C
+
+
+
+ name
+ c C/C++ Preprocessor Line
+ scope
+ meta.preprocessor.c
+ settings
+
+ foreground
+ #8996A8
+
+
+
+ name
+ c C/C++ Preprocessor Directive
+ scope
+ meta.preprocessor.c keyword
+ settings
+
+ foreground
+ #AFC4DB
+
+
+
+ name
+ ✘ Doctype/XML Processing
+ scope
+ meta.tag.sgml.doctype, meta.tag.sgml.doctype entity, meta.tag.sgml.doctype string, meta.tag.preprocessor.xml, meta.tag.preprocessor.xml entity, meta.tag.preprocessor.xml string
+ settings
+
+ foreground
+ #494949
+
+
+
+ name
+ ✘ Meta.tag.«all»
+ scope
+ declaration.tag, declaration.tag entity, meta.tag, meta.tag entity
+ settings
+
+ foreground
+ #AC885B
+
+
+
+ name
+ ✘ Meta.tag.inline
+ scope
+ declaration.tag.inline, declaration.tag.inline entity, source entity.name.tag, source entity.other.attribute-name, meta.tag.inline, meta.tag.inline entity
+ settings
+
+ foreground
+ #E0C589
+
+
+
+ name
+ § css tag-name
+ scope
+ meta.selector.css entity.name.tag
+ settings
+
+ foreground
+ #CDA869
+
+
+
+ name
+ § css:pseudo-class
+ scope
+ meta.selector.css entity.other.attribute-name.tag.pseudo-class
+ settings
+
+ foreground
+ #8F9D6A
+
+
+
+ name
+ § css#id
+ scope
+ meta.selector.css entity.other.attribute-name.id
+ settings
+
+ foreground
+ #8B98AB
+
+
+
+ name
+ § css.class
+ scope
+ meta.selector.css entity.other.attribute-name.class
+ settings
+
+ foreground
+ #9B703F
+
+
+
+ name
+ § css property-name:
+ scope
+ support.type.property-name.css
+ settings
+
+ foreground
+ #C5AF75
+
+
+
+ name
+ § css property-value;
+ scope
+ meta.property-group support.constant.property-value.css, meta.property-value support.constant.property-value.css
+ settings
+
+ foreground
+ #F9EE98
+
+
+
+ name
+ § css @at-rule
+ scope
+ meta.preprocessor.at-rule keyword.control.at-rule
+ settings
+
+ foreground
+ #8693A5
+
+
+
+ name
+ § css additional-constants
+ scope
+ meta.property-value support.constant.named-color.css, meta.property-value constant
+ settings
+
+ foreground
+ #CA7840
+
+
+
+ name
+ § css constructor.argument
+ scope
+ meta.constructor.argument.css
+ settings
+
+ foreground
+ #8F9D6A
+
+
+
+ name
+ ⎇ diff.header
+ scope
+ meta.diff, meta.diff.header, meta.separator
+ settings
+
+ background
+ #0E2231
+ fontStyle
+ italic
+ foreground
+ #F8F8F8
+
+
+
+ name
+ ⎇ diff.deleted
+ scope
+ markup.deleted
+ settings
+
+ background
+ #420E09
+ foreground
+ #F8F8F8
+
+
+
+ name
+ ⎇ diff.changed
+ scope
+ markup.changed
+ settings
+
+ background
+ #4A410D
+ foreground
+ #F8F8F8
+
+
+
+ name
+ ⎇ diff.inserted
+ scope
+ markup.inserted
+ settings
+
+ background
+ #253B22
+ foreground
+ #F8F8F8
+
+
+
+ name
+ Markup: List
+ scope
+ markup.list
+ settings
+
+ foreground
+ #F9EE98
+
+
+
+ name
+ Markup: Heading
+ scope
+ markup.heading
+ settings
+
+ foreground
+ #CF6A4C
+
+
+
+ uuid
+ 766026CB-703D-4610-B070-8DE07D967C5F
+
+
diff --git a/sublime/Packages/Color Scheme - Default/Zenburnesque.tmTheme b/sublime/Packages/Color Scheme - Default/Zenburnesque.tmTheme
new file mode 100644
index 0000000..8631f98
--- /dev/null
+++ b/sublime/Packages/Color Scheme - Default/Zenburnesque.tmTheme
@@ -0,0 +1,343 @@
+
+
+
+
+ author
+ William D. Neumann
+ name
+ Zenburnesque
+ settings
+
+
+ settings
+
+ background
+ #404040
+ caret
+ #FFFF66
+ foreground
+ #DEDEDE
+ invisibles
+ #A8A8A8
+ lineHighlight
+ #A0804026
+ selection
+ #A0A0C0
+
+
+
+ name
+ Comment
+ scope
+ comment
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #709070
+
+
+
+ name
+ Directive
+ scope
+ keyword.other.directive
+ settings
+
+ fontStyle
+ bold
+
+
+
+ name
+ Line-number directives
+ scope
+ keyword.other.directive.line-number
+ settings
+
+ fontStyle
+ underline
+
+
+
+ name
+ Characters
+ scope
+ constant.character
+ settings
+
+ foreground
+ #FF8080
+
+
+
+ name
+ String
+ scope
+ string
+ settings
+
+ foreground
+ #FF2020
+
+
+
+ name
+ Number
+ scope
+ constant.numeric
+ settings
+
+ foreground
+ #22C0FF
+
+
+
+ name
+ Floating-point numbers
+ scope
+ constant.numeric.floating-point
+ settings
+
+ fontStyle
+ underline
+
+
+
+ name
+ Built-in constant
+ scope
+ constant.language
+ settings
+
+
+
+ name
+ User-defined constant
+ scope
+ constant.character, constant.other
+ settings
+
+
+
+ name
+ Variable
+ scope
+ variable.parameter, variable.other
+ settings
+
+
+
+ name
+ Language Keyword
+ scope
+ keyword
+ settings
+
+ foreground
+ #FFFFA0
+
+
+
+ name
+ Module Keyword
+ scope
+ entity.name.module, support.other.module
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #FF8000
+
+
+
+ name
+ Operators
+ scope
+ keyword.operator
+ settings
+
+ foreground
+ #FFFFA0
+
+
+
+ name
+ Floating-point infix operators
+ scope
+ source.ocaml keyword.operator.symbol.infix.floating-point
+ settings
+
+ fontStyle
+ underline
+
+
+
+ name
+ Floating-point prefix operators
+ scope
+ source.ocaml keyword.operator.symbol.prefix.floating-point
+ settings
+
+ fontStyle
+ underline
+
+
+
+ name
+ Storage Types
+ scope
+ storage.type
+ settings
+
+ foreground
+ #6080FF
+
+
+
+ name
+ Variant Types
+ scope
+ entity.name.class.variant
+ settings
+
+ foreground
+ #4080A0
+
+
+
+ name
+ Storage
+ scope
+ storage
+ settings
+
+
+
+ name
+ Type name
+ scope
+ entity.name.type
+ settings
+
+ foreground
+ #F09040
+
+
+
+ name
+ Inherited class
+ scope
+ entity.other.inherited-class
+ settings
+
+
+
+ name
+ Function name
+ scope
+ entity.name.function
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #FFCC66
+
+
+
+ name
+ Type name
+ scope
+ storage.type.user-defined
+ settings
+
+ foreground
+ #FFE000
+
+
+
+ name
+ Class type name
+ scope
+ entity.name.type.class.type
+ settings
+
+ foreground
+ #F4A020
+
+
+
+ name
+ Function argument
+ scope
+ variable.parameter
+ settings
+
+ fontStyle
+
+
+
+
+ name
+ Tag name
+ scope
+ entity.name.tag
+ settings
+
+
+
+ name
+ Tag attribute
+ scope
+ entity.other.attribute-name
+ settings
+
+
+
+ name
+ Library function
+ scope
+ support.function
+ settings
+
+
+
+ name
+ Library constant
+ scope
+ support.constant
+ settings
+
+
+
+ name
+ Library class/type
+ scope
+ support.type, support.class
+ settings
+
+
+
+ name
+ Library variable
+ scope
+ support.variable
+ settings
+
+
+
+ name
+ Invalid
+ scope
+ invalid
+ settings
+
+
+
+ uuid
+ 8D4988B9-ADD8-436F-B388-BC1360F8504B
+
+
diff --git a/sublime/Packages/Color Scheme - Default/iPlastic.tmTheme b/sublime/Packages/Color Scheme - Default/iPlastic.tmTheme
new file mode 100644
index 0000000..7253df6
--- /dev/null
+++ b/sublime/Packages/Color Scheme - Default/iPlastic.tmTheme
@@ -0,0 +1,286 @@
+
+
+
+
+ author
+ Jeroen van der Ham
+ name
+ iPlastic
+ settings
+
+
+ settings
+
+ background
+ #EEEEEEEB
+ caret
+ #000000
+ foreground
+ #000000
+ invisibles
+ #B3B3B3F4
+ lineHighlight
+ #0000001A
+ selection
+ #BAD6FD
+
+
+
+ name
+ String
+ scope
+ string
+ settings
+
+ foreground
+ #009933
+
+
+
+ name
+ Number
+ scope
+ constant.numeric
+ settings
+
+ foreground
+ #0066FF
+
+
+
+ name
+ Regular expression
+ scope
+ string.regexp
+ settings
+
+ foreground
+ #FF0080
+
+
+
+ name
+ Keyword
+ scope
+ keyword
+ settings
+
+ foreground
+ #0000FF
+
+
+
+ name
+ Identifier
+ scope
+ constant.language
+ settings
+
+ foreground
+ #9700CC
+
+
+
+ name
+ Exception
+ scope
+ support.class.exception
+ settings
+
+ foreground
+ #990000
+
+
+
+ name
+ Function name
+ scope
+ entity.name.function
+ settings
+
+ foreground
+ #FF8000
+
+
+
+ name
+ Type name
+ scope
+ entity.name.type
+ settings
+
+ fontStyle
+ bold underline
+
+
+
+ name
+ Arguments
+ scope
+ variable.parameter
+ settings
+
+ fontStyle
+ italic
+
+
+
+ name
+ Comment
+ scope
+ comment
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #0066FF
+
+
+
+ name
+ Invalid
+ scope
+ invalid
+ settings
+
+ background
+ #E71A114D
+ foreground
+ #FF0000
+
+
+
+ name
+ Trailing whitespace
+ scope
+ invalid.deprecated.trailing-whitespace
+ settings
+
+ background
+ #E71A1100
+
+
+
+ name
+ Embedded source
+ scope
+ text source
+ settings
+
+ background
+ #FAFAFAFC
+ foreground
+ #000000
+
+
+
+ name
+ Tag
+ scope
+ meta.tag, declaration.tag
+ settings
+
+ foreground
+ #0033CC
+
+
+
+ name
+ Constant
+ scope
+ constant, support.constant
+ settings
+
+ foreground
+ #6782D3
+
+
+
+ name
+ Support
+ scope
+ support
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #3333FF
+
+
+
+ name
+ Storage
+ scope
+ storage
+ settings
+
+ fontStyle
+ bold
+
+
+
+ name
+ Section name
+ scope
+ entity.name.section
+ settings
+
+ fontStyle
+ bold underline
+
+
+
+ name
+ Frame title
+ scope
+ entity.name.function.frame
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #000000
+
+
+
+ name
+ XML Declaration
+ scope
+ meta.tag.preprocessor.xml
+ settings
+
+ foreground
+ #333333
+
+
+
+ name
+ Tag Attribute
+ scope
+ entity.other.attribute-name
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #3366CC
+
+
+
+ name
+ Tag Name
+ scope
+ entity.name.tag
+ settings
+
+ fontStyle
+ bold
+
+
+
+ uuid
+ 4FCFA210-B247-11D9-9D00-000D93347A42
+
+
diff --git a/sublime/Packages/D/Comments.tmPreferences b/sublime/Packages/D/Comments.tmPreferences
new file mode 100644
index 0000000..768d055
--- /dev/null
+++ b/sublime/Packages/D/Comments.tmPreferences
@@ -0,0 +1,66 @@
+
+
+
+
+ name
+ Comments
+ scope
+ source.d
+ settings
+
+ shellVariables
+
+
+ name
+ TM_COMMENT_START
+ value
+ /*
+
+
+ name
+ TM_COMMENT_END
+ value
+ */
+
+
+ name
+ TM_COMMENT_MODE
+ value
+ block
+
+
+ name
+ TM_COMMENT_DISABLE_INDENT
+ value
+ yes
+
+
+ name
+ TM_COMMENT_START_2
+ value
+ //
+
+
+ name
+ TM_COMMENT_START_3
+ value
+ /+
+
+
+ name
+ TM_COMMENT_END_3
+ value
+ +/
+
+
+ name
+ TM_COMMENT_MODE_3
+ value
+ block
+
+
+
+ uuid
+ 4A7C08E3-CF6E-47AC-B5C4-F177BC6F2653
+
+
diff --git a/sublime/Packages/D/Comments.tmPreferences.cache b/sublime/Packages/D/Comments.tmPreferences.cache
new file mode 100644
index 0000000..4e61c5d
Binary files /dev/null and b/sublime/Packages/D/Comments.tmPreferences.cache differ
diff --git a/sublime/Packages/D/D.sublime-build b/sublime/Packages/D/D.sublime-build
new file mode 100644
index 0000000..19f3835
--- /dev/null
+++ b/sublime/Packages/D/D.sublime-build
@@ -0,0 +1,5 @@
+{
+ "cmd": ["dmd", "$file"],
+ "file_regex": "^(.*?)\\(([0-9]+)\\)",
+ "selector": "source.d"
+}
diff --git a/sublime/Packages/D/D.tmLanguage b/sublime/Packages/D/D.tmLanguage
new file mode 100644
index 0000000..c7233a2
--- /dev/null
+++ b/sublime/Packages/D/D.tmLanguage
@@ -0,0 +1,908 @@
+
+
+
+
+ comment
+ D language
+ fileTypes
+
+ d
+ di
+
+ firstLineMatch
+ ^#!.*\bg?dmd\b.
+ foldingStartMarker
+ (?x)/\*\*(?!\*)|^(?![^{]*?//|[^{]*?/\*(?!.*?\*/.*?\{)).*?\{\s*($|//|/\*(?!.*?\*/.*\S))
+ foldingStopMarker
+ (?<!\*)\*\*/|^\s*\}
+ keyEquivalent
+ ^~D
+ name
+ D
+ patterns
+
+
+ captures
+
+ 0
+
+ name
+ punctuation.definition.comment.d
+
+
+ match
+ /\*\*/
+ name
+ comment.block.empty.d
+
+
+ include
+ text.html.javadoc
+
+
+ begin
+ (?x)^\s*
+ ((?:\b(public|private|protected|static|final|native|synchronized|abstract|export)\b\s*)*) # modifier
+ (class|interface)\s+
+ (\w+)\s* # identifier
+ (?:\(\s*([^\)]+)\s*\)|)\s* # Template type
+ (?:
+ \s*(:)\s*
+ (\w+)
+ (?:\s*,\s*(\w+))?
+ (?:\s*,\s*(\w+))?
+ (?:\s*,\s*(\w+))?
+ (?:\s*,\s*(\w+))?
+ (?:\s*,\s*(\w+))?
+ (?:\s*,\s*(\w+))?
+ )? # super class
+
+ beginCaptures
+
+ 1
+
+ name
+ storage.modifier.d
+
+ 10
+
+ name
+ entity.other.inherited-class.d
+
+ 11
+
+ name
+ entity.other.inherited-class.d
+
+ 12
+
+ name
+ entity.other.inherited-class.d
+
+ 13
+
+ name
+ entity.other.inherited-class.d
+
+ 3
+
+ name
+ storage.type.structure.d
+
+ 4
+
+ name
+ entity.name.type.class.d
+
+ 5
+
+ name
+ storage.type.template.d
+
+ 6
+
+ name
+ punctuation.separator.inheritance.d
+
+ 7
+
+ name
+ entity.other.inherited-class.d
+
+ 8
+
+ name
+ entity.other.inherited-class.d
+
+ 9
+
+ name
+ entity.other.inherited-class.d
+
+
+ end
+ (?={)
+ name
+ meta.definition.class.d
+ patterns
+
+
+ begin
+ \b(_|:)\b
+ captures
+
+ 1
+
+ name
+ storage.modifier.d
+
+
+ end
+ (?={)
+ name
+ meta.definition.class.extends.d
+ patterns
+
+
+ include
+ #all-types
+
+
+
+
+
+
+ begin
+ (?x)^\s*
+ ((?:\b(public|private|protected|static|final|native|synchronized|abstract|export)\b\s*)*) # modifier
+ (struct)\s+
+ (\w+)\s* # identifier
+ (?:\(\s*([^\)]+)\s*\)|)\s* # Template type
+
+ beginCaptures
+
+ 1
+
+ name
+ storage.modifier.d
+
+ 3
+
+ name
+ storage.type.structure.d
+
+ 4
+
+ name
+ entity.name.type.struct.d
+
+ 5
+
+ name
+ storage.type.template.d
+
+
+ end
+ (?={)
+ name
+ meta.definition.struct.d
+ patterns
+
+
+ begin
+ \b(_|:)\b
+ captures
+
+ 1
+
+ name
+ storage.modifier.d
+
+
+ end
+ (?={)
+ name
+ meta.definition.class.extends.d
+ patterns
+
+
+ include
+ #all-types
+
+
+
+
+
+
+ begin
+ (?x)^\s*
+ ((?:\b(public|private|protected|static|final|native|synchronized|abstract|threadsafe|transient|export)\b\s*)*) # modifier
+ (\b(this))\s* # identifier
+ (?!.*;) # abort if line has a ;
+ (?=\()
+ captures
+
+ 1
+
+ name
+ storage.modifier.d
+
+ 3
+
+ name
+ entity.name.function.constructor.d
+
+
+ end
+ (?={)
+ name
+ meta.definition.constructor.d
+ patterns
+
+
+ include
+ $base
+
+
+
+
+ begin
+ (?x)
+ (?: ^ # begin-of-line
+ | (?: (?<!else|new|=) ) # or word + space before name
+ )
+ ((?:\b(?:public|private|protected|static|final|native|synchronized|abstract|threadsafe|transient|export)\b\s*)*) # modifier
+ (~this) # actual name
+ \s*(\() # start bracket or end-of-line
+
+ captures
+
+ 1
+
+ name
+ storage.modifier.d
+
+ 2
+
+ name
+ entity.name.function.destructor.d
+
+
+ end
+ \)
+ endCaptures
+
+ 0
+
+ name
+ punctuation.definition.parameters.d
+
+
+ name
+ meta.definition.destructor.d
+ patterns
+
+
+ include
+ $base
+
+
+
+
+ begin
+ (?x)^\s*
+ ((?:\b(?:public|private|protected|static|final|native|lazy|synchronized|abstract|threadsafe|transient|export)\b\s*)*) # modifier
+ (\b(?:void|boolean|byte|char|short|int|float|long|double|[\w_]+[\w0-9_]*|(?:\w+\.)*[A-Z]\w+)\b(?:<(?:(?:(?:\w+\.)*[A-Z]\w+)(?:\s*,\s*)?)+>|(?:\[\s*\])*)?)\s* # type
+ (\w+)\s* # identifier
+ (?!.*;) # abort if line has a ;
+ (?=\()
+ beginCaptures
+
+ 1
+
+ name
+ storage.modifier.d
+
+ 2
+
+ name
+ storage.type.structure.d
+
+ 3
+
+ name
+ entity.name.function.d
+
+
+ end
+ (?={)
+ name
+ meta.definition.method.d
+ patterns
+
+
+ include
+ $base
+
+
+
+
+ match
+ \b([A-Z][A-Z0-9_]+)\b
+ name
+ constant.other.d
+
+
+ include
+ #comments
+
+
+ include
+ #all-types
+
+
+ match
+ \b(private|protected|public|export)\b
+ name
+ storage.modifier.access-control.d
+
+
+ match
+ \b(auto|static|override|final|const|abstract|volatile|synchronized|lazy)\b
+ name
+ storage.modifier.d
+
+
+ match
+ \b(template|interface|class|enum|struct|union)\b
+ name
+ storage.type.structure.d
+
+
+ match
+ \b(ushort|int|uint|long|ulong|float|void|byte|ubyte|double|bit|char|wchar|ucent|cent|short|bool|dchar|real|ireal|ifloat|idouble|creal|cfloat|cdouble|lazy)\b
+ name
+ storage.type.d
+
+
+ match
+ \b(try|catch|finally|throw)\b
+ name
+ keyword.control.exception.d
+
+
+ match
+ \b(return|break|case|continue|default|do|while|for|switch|if|else)\b
+ name
+ keyword.control.d
+
+
+ match
+ \b(if|else|switch|iftype)\b
+ name
+ keyword.control.conditional.d
+
+
+ match
+ \b(goto|break|continue)\b
+ name
+ keyword.control.branch.d
+
+
+ match
+ \b(while|for|do|foreach(_reverse)?)\b
+ name
+ keyword.control.repeat.d
+
+
+ match
+ \b(version|return|with|invariant|body|scope|in|out|inout|asm|mixin|function|delegate)\b
+ name
+ keyword.control.statement.d
+
+
+ match
+ \b(pragma)\b
+ name
+ keyword.control.pragma.d
+
+
+ match
+ \b(alias|typedef)\b
+ name
+ keyword.control.alias.d
+
+
+ match
+ \b(import)\b
+ name
+ keyword.control.import.d
+
+
+ captures
+
+ 1
+
+ name
+ keyword.control.module.d
+
+ 2
+
+ name
+ entity.name.function.package.d
+
+
+ match
+ ^\s*(module)\s+([^ ;]+?);
+ name
+ meta.module.d
+
+
+ match
+ \b(true|false)\b
+ name
+ constant.language.boolean.d
+
+
+ match
+ \b(__FILE__|__LINE__|__DATE__|__TIME__|__TIMESTAMP__|null)\b
+ name
+ constant.language.d
+
+
+ match
+ \b(this|super)\b
+ name
+ variable.language.d
+
+
+ match
+ \b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)([LlFfUuDd]|UL|ul)?\b
+ name
+ constant.numeric.d
+
+
+ include
+ #string_escaped_char
+
+
+ include
+ #strings
+
+
+ match
+ (==|!=|<=|>=|<>|<|>)
+ name
+ keyword.operator.comparison.d
+
+
+ match
+ (\-\-|\+\+)
+ name
+ keyword.operator.increment-decrement.d
+
+
+ match
+ (\-|\+|\*|\/|~|%)
+ name
+ keyword.operator.arithmetic.d
+
+
+ match
+ (!|&&|\|\|)
+ name
+ keyword.operator.logical.d
+
+
+ match
+ \b(opNeg|opCom|opPostInc|opPostDec|opCast|opAdd|opSub|opSub_r|opMul|opDiv|opDiv_r|opMod|opMod_r|opAnd|opOr|opXor|opShl|opShl_r|opShr|opShr_r|opUShr|opUShr_r|opCat|opCat_r|opEquals|opEquals|opCmp|opCmp|opCmp|opCmp|opAddAssign|opSubAssign|opMulAssign|opDivAssign|opModAssign|opAndAssign|opOrAssign|opXorAssign|opShlAssign|opShrAssign|opUShrAssign|opCatAssign|opIndex|opIndexAssign|opCall|opSlice|opSliceAssign|opPos|opAdd_r|opMul_r|opAnd_r|opOr_r|opXor_r)\b
+ name
+ keyword.operator.overload.d
+
+
+ match
+ \b(new|delete|typeof|typeid|cast|align|is)\b
+ name
+ keyword.operator.d
+
+
+ match
+ \b(new|throws)\b
+ name
+ keyword.other.class-fns.d
+
+
+ match
+ \b(package|extern)\b
+ name
+ keyword.other.external.d
+
+
+ match
+ \b(deprecated|unittest|debug)\b
+ name
+ keyword.other.debug.d
+
+
+ match
+ \b(u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t)\b
+ name
+ support.type.sys-types.c
+
+
+ match
+ \b(pthread_attr_t|pthread_cond_t|pthread_condattr_t|pthread_mutex_t|pthread_mutexattr_t|pthread_once_t|pthread_rwlock_t|pthread_rwlockattr_t|pthread_t|pthread_key_t)\b
+ name
+ support.type.pthread.c
+
+
+ match
+ \b(int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t|uintmax_t|uintmax_t)\b
+ name
+ support.type.stdint.c
+
+
+ repository
+
+ all-types
+
+ patterns
+
+
+ include
+ #support-type-built-ins-d
+
+
+ include
+ #support-type-d
+
+
+ include
+ #storage-type-d
+
+
+
+ comments
+
+ patterns
+
+
+ begin
+ /\*
+ captures
+
+ 0
+
+ name
+ punctuation.definition.comment.d
+
+
+ end
+ \*/
+ name
+ comment.block.d
+
+
+ begin
+ /\+
+ captures
+
+ 0
+
+ name
+ punctuation.definition.comment.d
+
+
+ end
+ \+/
+ name
+ comment.block.nested.d
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.definition.comment.d
+
+
+ match
+ (//).*$\n?
+ name
+ comment.line.double-slash.d
+
+
+
+ constant_placeholder
+
+ match
+ (?i:%(\([a-z_]+\))?#?0?\-?[ ]?\+?([0-9]*|\*)(\.([0-9]*|\*))?[hL]?[a-z%])
+ name
+ constant.other.placeholder.d
+
+ regular_expressions
+
+ comment
+ Change disabled to 1 to turn off syntax highlighting in “r” strings.
+ disabled
+ 1
+ patterns
+
+
+ include
+ source.regexp.python
+
+
+
+ statement-remainder
+
+ patterns
+
+
+ begin
+ \(
+ end
+ (?=\))
+ name
+ meta.definition.param-list.d
+ patterns
+
+
+ include
+ #all-types
+
+
+
+
+ begin
+ (throws)
+ captures
+
+ 1
+
+ name
+ keyword.other.class-fns.d
+
+
+ end
+ (?={)
+ name
+ meta.definition.throws.d
+ patterns
+
+
+ include
+ #all-types
+
+
+
+
+
+ storage-type-d
+
+ match
+ \b(void|byte|short|char|int|long|float|double|boolean|([a-z]\w+\.)*[A-Z]\w+)\b
+ name
+ storage.type.d
+
+ string_escaped_char
+
+ patterns
+
+
+ match
+ \\(\\|[abefnprtv'"?]|[0-3]\d{,2}|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8}|&\w+;)
+ name
+ constant.character.escape.d
+
+
+ match
+ \\.
+ name
+ invalid.illegal.unknown-escape.d
+
+
+
+ strings
+
+ patterns
+
+
+ begin
+ "
+ beginCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.begin.d
+
+
+ end
+ "
+ endCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.end.d
+
+
+ name
+ string.quoted.double.d
+ patterns
+
+
+ include
+ #string_escaped_char
+
+
+
+
+ begin
+ (r)(")
+ beginCaptures
+
+ 1
+
+ name
+ storage.type.string.d
+
+ 2
+
+ name
+ punctuation.definition.string.begin.d
+
+
+ end
+ ((?<=")(")|")
+ endCaptures
+
+ 1
+
+ name
+ punctuation.definition.string.end.d
+
+ 2
+
+ name
+ meta.empty-string.double.d
+
+
+ name
+ string.quoted.double.raw.d
+ patterns
+
+
+ include
+ #regular_expressions
+
+
+
+
+ begin
+ `
+ beginCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.begin.d
+
+
+ end
+ ((?<=`)(`)|`)
+ endCaptures
+
+ 1
+
+ name
+ punctuation.definition.string.end.d
+
+ 2
+
+ name
+ meta.empty-string.double.d
+
+
+ name
+ string.quoted.double.raw.backtick.d
+
+
+ begin
+ '
+ beginCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.begin.d
+
+
+ end
+ '
+ endCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.end.d
+
+
+ name
+ string.quoted.single.d
+ patterns
+
+
+ include
+ #string_escaped_char
+
+
+
+
+
+ support-type-built-ins-classes-d
+
+ match
+ \b(AbstractServer|ArchiveMember|ArgParser|Barrier|BomSniffer|Buffer|BufferInput|BufferOutput|BufferSlice|BufferedFile|BufferedStream|BzipInput|BzipOutput|CFile|CacheInvalidatee|CacheInvalidator|CacheServer|CacheThread|Certificate|CertificateStore|CertificateStoreCtx|ChunkInput|ChunkOutput|ClassInfo|Cluster|ClusterCache|ClusterQueue|ClusterThread|CmdParser|ComObject|Compress|Condition|Conduit|Cookie|CookieParser|CookieStack|CounterInput|CounterOutput|DataFileInput|DataFileOutput|DataInput|DataOutput|Database|DatagramConduit|DeviceConduit|DigestInput|DigestOutput|DocPrinter|Document|DummyInputStream|DummyOutputStream|EndianInput|EndianOutput|EndianProtocol|EndianStream|EventSeekInputStream|EventSeekOutputStream|FTPConnection|Fiber|Field|File|FileConduit|FileFolder|FileGroup|FileInput|FileOutput|FilePath|FileScan|FilterStream|Foo|FormatOutput|GreedyInput|GreedyOutput|Gregorian|GrowBuffer|HeapCopy|HeapSlice|Hierarchy|HttpClient|HttpCookies|HttpCookiesView|HttpGet|HttpHeaders|HttpHeadersView|HttpParams|HttpPost|HttpStack|HttpTokens|HttpTriplet|IPv4Address|IUnknown|InputFilter|InternetAddress|InternetHost|Layout|LineInput|LineIterator|LinkedFolder|Log|MapInput|MapOutput|MappedBuffer|Md2|Md4|MemoryQueue|MemoryStream|MmFile|MmFileStream|ModuleInfo|MulticastConduit|Mutex|NativeProtocol|NetCall|NetHost|NetworkAlert|NetworkCache|NetworkCall|NetworkClient|NetworkCombo|NetworkMessage|NetworkQueue|NetworkRegistry|NetworkTask|NotImplemented|Object|Observer|OutBuffer|OutputFilter|PersistQueue|Pipe|PipeConduit|Print|PrivateKey|Process|Properties|Protocol|ProtocolReader|ProtocolWriter|PublicKey|PullParser|QueueFile|QueueServer|QueueThread|QueuedCache|QuoteIterator|Random|Range|ReadWriteMutex|Reader|Record|RegExp|RegExpT|RegexIterator|RollCall|SSLCtx|SSLServerSocket|SSLSocketConduit|SaxParser|SelectionKey|Semaphore|ServerSocket|ServerThread|Service|SimpleIterator|SliceInputStream|SliceSeekInputStream|SliceSeekOutputStream|SliceStream|SnoopInput|SnoopOutput|Socket|SocketConduit|SocketListener|SocketSet|SocketStream|Sprint|Stream|StreamIterator|TArrayStream|TaskServer|TaskThread|TcpSocket|Telnet|TempFile|Text|TextFileInput|TextFileOutput|TextView|Thread|ThreadGroup|ThreadLocal|ThreadPool|Token|TypeInfo|TypeInfo_AC|TypeInfo_Aa|TypeInfo_Ab|TypeInfo_Ac|TypeInfo_Ad|TypeInfo_Ae|TypeInfo_Af|TypeInfo_Ag|TypeInfo_Ah|TypeInfo_Ai|TypeInfo_Aj|TypeInfo_Ak|TypeInfo_Al|TypeInfo_Am|TypeInfo_Ao|TypeInfo_Ap|TypeInfo_Aq|TypeInfo_Ar|TypeInfo_Array|TypeInfo_As|TypeInfo_AssociativeArray|TypeInfo_At|TypeInfo_Au|TypeInfo_Av|TypeInfo_Aw|TypeInfo_C|TypeInfo_Class|TypeInfo_D|TypeInfo_Delegate|TypeInfo_Enum|TypeInfo_Function|TypeInfo_Interface|TypeInfo_P|TypeInfo_Pointer|TypeInfo_StaticArray|TypeInfo_Struct|TypeInfo_Tuple|TypeInfo_Typedef|TypeInfo_a|TypeInfo_b|TypeInfo_c|TypeInfo_d|TypeInfo_e|TypeInfo_f|TypeInfo_g|TypeInfo_h|TypeInfo_i|TypeInfo_j|TypeInfo_k|TypeInfo_l|TypeInfo_m|TypeInfo_o|TypeInfo_p|TypeInfo_q|TypeInfo_r|TypeInfo_s|TypeInfo_t|TypeInfo_u|TypeInfo_v|TypeInfo_w|TypedInput|TypedOutput|URIerror|UdpSocket|UnCompress|UniText|UnicodeBom|UnicodeFile|UnknownAddress|Uri|UtfInput|UtfOutput|VirtualFolder|WrapSeekInputStream|WrapSeekOutputStream|Writer|XmlPrinter|ZipArchive|ZipBlockReader|ZipBlockWriter|ZipEntry|ZipEntryVerifier|ZipFile|ZipFileGroup|ZipFolder|ZipSubFolder|ZipSubFolderEntry|ZipSubFolderGroup|ZlibInput|ZlibOutput)\b
+ name
+ support.type.built-ins.classes.d
+
+ support-type-built-ins-d
+
+ patterns
+
+
+ include
+ #support-type-built-ins-exceptions-d
+
+
+ include
+ #support-type-built-ins-classes-d
+
+
+ include
+ #support-type-built-ins-interfaces-d
+
+
+ include
+ #support-type-built-ins-structs-d
+
+
+
+ support-type-built-ins-exceptions-d
+
+ match
+ \b(AddressException|ArrayBoundsError|ArrayBoundsException|AssertError|AssertException|Base64CharException|Base64Exception|BzipClosedException|BzipException|ClusterEmptyException|ClusterFullException|ConvError|ConvOverflowError|ConversionException|CorruptedIteratorException|DatabaseException|DateParseError|Exception|FTPException|FiberException|FileException|FinalizeException|FormatError|HostException|IOException|IllegalArgumentException|IllegalElementException|InvalidKeyException|InvalidTypeException|LocaleException|ModuleCtorError|NoSuchElementException|OpenException|OpenRJException|OutOfMemoryException|PlatformException|ProcessCreateException|ProcessException|ProcessForkException|ProcessKillException|ProcessWaitException|ReadException|RegExpException|RegexException|RegistryException|SeekException|SharedLibException|SocketAcceptException|SocketException|StdioException|StreamException|StreamFileException|StringException|SwitchError|SwitchException|SyncException|TextException|ThreadError|ThreadException|UnboxException|UnicodeException|UtfException|VariantTypeMismatchException|Win32Exception|WriteException|XmlException|ZipChecksumException|ZipException|ZipExhaustedException|ZipNotSupportedException|ZlibClosedException|ZlibException|OurUnwindException|SysError)\b
+ name
+ support.type.built-ins.exceptions.d
+
+ support-type-built-ins-interfaces-d
+
+ match
+ \b(Buffered|HttpParamsView|ICache|IChannel|IClassFactory|ICluster|IConduit|IConsumer|IEvent|IHierarchy|ILevel|IListener|IMessage|IMessageLoader|IOStream|IReadable|ISelectable|ISelectionSet|ISelector|IServer|IUnknown|IWritable|IXmlPrinter|InputStream|OutputStream|PathView|VfsFile|VfsFiles|VfsFolder|VfsFolderEntry|VfsFolders|VfsHost|VfsSync|ZipReader|ZipWriter)\b
+ name
+ support.type.built-ins.interfaces.d
+
+ support-type-built-ins-structs-d
+
+ match
+ \b(ABC|ABCFLOAT|ACCEL|ACCESSTIMEOUT|ACCESS_ALLOWED_ACE|ACCESS_DENIED_ACE|ACE_HEADER|ACL|ACL_REVISION_INFORMATION|ACL_SIZE_INFORMATION|ACTION_HEADER|ADAPTER_STATUS|ADDJOB_INFO_1|ANIMATIONINFO|APPBARDATA|Argument|Atomic|Attribute|BITMAP|BITMAPCOREHEADER|BITMAPCOREINFO|BITMAPINFO|BITMAPINFOHEADER|BITMAPV4HEADER|BLOB|BROWSEINFO|BY_HANDLE_FILE_INFORMATION|Bar|Baz|BitArray|Box|BracketResult|ByteSwap|CANDIDATEFORM|CANDIDATELIST|CBTACTIVATESTRUCT|CBT_CREATEWND|CHARFORMAT|CHARRANGE|CHARSET|CHARSETINFO|CHAR_INFO|CIDA|CIEXYZ|CIEXYZTRIPLE|CLIENTCREATESTRUCT|CMINVOKECOMMANDINFO|COLORADJUSTMENT|COLORMAP|COMMCONFIG|COMMPROP|COMMTIMEOUTS|COMPAREITEMSTRUCT|COMPCOLOR|COMPOSITIONFORM|COMSTAT|CONNECTDLGSTRUCT|CONSOLE_CURSOR_INFO|CONTEXT|CONVCONTEXT|CONVINFO|COORD|COPYDATASTRUCT|CPINFO|CPLINFO|CREATESTRUCT|CREATE_PROCESS_DEBUG_INFO|CREATE_THREAD_DEBUG_INFO|CRITICAL_SECTION|CRITICAL_SECTION_DEBUG|CURRENCYFMT|CURSORSHAPE|CWPRETSTRUCT|CWPSTRUCT|CharClass|CharRange|Clock|CodePage|Console|DATATYPES_INFO_1|DCB|DDEACK|DDEADVISE|DDEDATA|DDELN|DDEML_MSG_HOOK_DATA|DDEPOKE|DDEUP|DEBUGHOOKINFO|DEBUG_EVENT|DELETEITEMSTRUCT|DEVMODE|DEVNAMES|DEV_BROADCAST_HDR|DEV_BROADCAST_OEM|DEV_BROADCAST_PORT|DEV_BROADCAST_VOLUME|DIBSECTION|DIR|DISCDLGSTRUCT|DISK_GEOMETRY|DISK_PERFORMANCE|DOCINFO|DOC_INFO_1|DOC_INFO_2|DRAGLISTINFO|DRAWITEMSTRUCT|DRAWTEXTPARAMS|DRIVER_INFO_1|DRIVER_INFO_2|DRIVER_INFO_3|DRIVE_LAYOUT_INFORMATION|Date|DateParse|DateTime|DirEntry|DynArg|EDITSTREAM|EMPTYRECORD|EMR|EMRABORTPATH|EMRANGLEARC|EMRARC|EMRBITBLT|EMRCREATEBRUSHINDIRECT|EMRCREATECOLORSPACE|EMRCREATEDIBPATTERNBRUSHPT|EMRCREATEMONOBRUSH|EMRCREATEPALETTE|EMRCREATEPEN|EMRELLIPSE|EMREOF|EMREXCLUDECLIPRECT|EMREXTCREATEFONTINDIRECTW|EMREXTCREATEPEN|EMREXTFLOODFILL|EMREXTSELECTCLIPRGN|EMREXTTEXTOUTA|EMRFILLPATH|EMRFILLRGN|EMRFORMAT|EMRFRAMERGN|EMRGDICOMMENT|EMRINVERTRGN|EMRLINETO|EMRMASKBLT|EMRMODIFYWORLDTRANSFORM|EMROFFSETCLIPRGN|EMRPLGBLT|EMRPOLYDRAW|EMRPOLYDRAW16|EMRPOLYLINE|EMRPOLYLINE16|EMRPOLYPOLYLINE|EMRPOLYPOLYLINE16|EMRPOLYTEXTOUTA|EMRRESIZEPALETTE|EMRRESTOREDC|EMRROUNDRECT|EMRSCALEVIEWPORTEXTEX|EMRSELECTCLIPPATH|EMRSELECTCOLORSPACE|EMRSELECTOBJECT|EMRSELECTPALETTE|EMRSETARCDIRECTION|EMRSETBKCOLOR|EMRSETCOLORADJUSTMENT|EMRSETDIBITSTODEVICE|EMRSETMAPPERFLAGS|EMRSETMITERLIMIT|EMRSETPALETTEENTRIES|EMRSETPIXELV|EMRSETVIEWPORTEXTEX|EMRSETVIEWPORTORGEX|EMRSETWORLDTRANSFORM|EMRSTRETCHBLT|EMRSTRETCHDIBITS|EMRTEXT|ENCORRECTTEXT|ENDROPFILES|ENHMETAHEADER|ENHMETARECORD|ENOLEOPFAILED|ENPROTECTED|ENSAVECLIPBOARD|ENUMLOGFONT|ENUMLOGFONTEX|ENUM_SERVICE_STATUS|EVENTLOGRECORD|EVENTMSG|EXCEPTION_DEBUG_INFO|EXCEPTION_POINTERS|EXCEPTION_RECORD|EXIT_PROCESS_DEBUG_INFO|EXIT_THREAD_DEBUG_INFO|EXTLOGFONT|EXTLOGPEN|EXT_BUTTON|EmptySlot|EndOfCDRecord|Environment|FILETIME|FILTERKEYS|FINDREPLACE|FINDTEXTEX|FIND_NAME_BUFFER|FIND_NAME_HEADER|FIXED|FLOATING_SAVE_AREA|FMS_GETDRIVEINFO|FMS_GETFILESEL|FMS_LOAD|FMS_TOOLBARLOAD|FOCUS_EVENT_RECORD|FONTSIGNATURE|FORMATRANGE|FORMAT_PARAMETERS|FORM_INFO_1|FileConst|FileHeader|FileRoots|FileSystem|FoldingCaseData|Foo|FtpConnectionDetail|FtpFeature|FtpFileInfo|FtpResponse|GC|GCP_RESULTS|GCStats|GENERIC_MAPPING|GLYPHMETRICS|GLYPHMETRICSFLOAT|GROUP_INFO_2|GUID|HANDLETABLE|HD_HITTESTINFO|HD_ITEM|HD_LAYOUT|HD_NOTIFY|HELPINFO|HELPWININFO|HIGHCONTRAST|HSZPAIR|HeaderElement|HttpConst|HttpHeader|HttpHeaderName|HttpResponses|HttpStatus|HttpToken|ICONINFO|ICONMETRICS|IMAGEINFO|IMAGE_DOS_HEADER|INPUT_RECORD|ITEMIDLIST|IeeeFlags|Interface|JOB_INFO_1|JOB_INFO_2|KERNINGPAIR|LANA_ENUM|LAYERPLANEDESCRIPTOR|LDT_ENTRY|LIST_ENTRY|LOAD_DLL_DEBUG_INFO|LOCALESIGNATURE|LOCALGROUP_INFO_0|LOCALGROUP_MEMBERS_INFO_0|LOCALGROUP_MEMBERS_INFO_3|LOGBRUSH|LOGCOLORSPACE|LOGFONT|LOGFONTA|LOGFONTW|LOGPALETTE|LOGPEN|LUID_AND_ATTRIBUTES|LV_COLUMN|LV_DISPINFO|LV_FINDINFO|LV_HITTESTINFO|LV_ITEM|LV_KEYDOWN|LocalFileHeader|MAT2|MD5_CTX|MDICREATESTRUCT|MEASUREITEMSTRUCT|MEMORYSTATUS|MEMORY_BASIC_INFORMATION|MENUEX_TEMPLATE_HEADER|MENUEX_TEMPLATE_ITEM|MENUITEMINFO|MENUITEMTEMPLATE|MENUITEMTEMPLATEHEADER|MENUTEMPLATE|MENU_EVENT_RECORD|METAFILEPICT|METARECORD|MINIMIZEDMETRICS|MINMAXINFO|MODEMDEVCAPS|MODEMSETTINGS|MONCBSTRUCT|MONCONVSTRUCT|MONERRSTRUCT|MONHSZSTRUCT|MONITOR_INFO_1|MONITOR_INFO_2|MONLINKSTRUCT|MONMSGSTRUCT|MOUSEHOOKSTRUCT|MOUSEKEYS|MOUSE_EVENT_RECORD|MSG|MSGBOXPARAMS|MSGFILTER|MULTIKEYHELP|NAME_BUFFER|NCB|NCCALCSIZE_PARAMS|NDDESHAREINFO|NETCONNECTINFOSTRUCT|NETINFOSTRUCT|NETRESOURCE|NEWCPLINFO|NEWTEXTMETRIC|NEWTEXTMETRICEX|NMHDR|NM_LISTVIEW|NM_TREEVIEW|NM_UPDOWNW|NONCLIENTMETRICS|NS_SERVICE_INFO|NUMBERFMT|OFNOTIFY|OFSTRUCT|OPENFILENAME|OPENFILENAMEA|OPENFILENAMEW|OSVERSIONINFO|OUTLINETEXTMETRIC|OUTPUT_DEBUG_STRING_INFO|OVERLAPPED|OffsetTypeInfo|PAINTSTRUCT|PALETTEENTRY|PANOSE|PARAFORMAT|PARTITION_INFORMATION|PERF_COUNTER_BLOCK|PERF_COUNTER_DEFINITION|PERF_DATA_BLOCK|PERF_INSTANCE_DEFINITION|PERF_OBJECT_TYPE|PIXELFORMATDESCRIPTOR|POINT|POINTFLOAT|POINTFX|POINTL|POINTS|POLYTEXT|PORT_INFO_1|PORT_INFO_2|PREVENT_MEDIA_REMOVAL|PRINTER_DEFAULTS|PRINTER_INFO_1|PRINTER_INFO_2|PRINTER_INFO_3|PRINTER_INFO_4|PRINTER_INFO_5|PRINTER_NOTIFY_INFO|PRINTER_NOTIFY_INFO_DATA|PRINTER_NOTIFY_OPTIONS|PRINTER_NOTIFY_OPTIONS_TYPE|PRINTPROCESSOR_INFO_1|PRIVILEGE_SET|PROCESS_HEAPENTRY|PROCESS_INFORMATION|PROPSHEETHEADER|PROPSHEETHEADER_U1|PROPSHEETHEADER_U2|PROPSHEETHEADER_U3|PROPSHEETPAGE|PROPSHEETPAGE_U1|PROPSHEETPAGE_U2|PROTOCOL_INFO|PROVIDOR_INFO_1|PSHNOTIFY|PUNCTUATION|PassByCopy|PassByRef|Phase1Info|PropertyConfigurator|QUERY_SERVICE_CONFIG|QUERY_SERVICE_LOCK_STATUS|RASAMB|RASCONN|RASCONNSTATUS|RASDIALEXTENSIONS|RASDIALPARAMS|RASENTRYNAME|RASPPPIP|RASPPPIPX|RASPPPNBF|RASTERIZER_STATUS|REASSIGN_BLOCKS|RECT|RECTL|REMOTE_NAME_INFO|REPASTESPECIAL|REQRESIZE|RGBQUAD|RGBTRIPLE|RGNDATA|RGNDATAHEADER|RIP_INFO|Runtime|SCROLLINFO|SECURITY_ATTRIBUTES|SECURITY_DESCRIPTOR|SECURITY_QUALITY_OF_SERVICE|SELCHANGE|SERIALKEYS|SERVICE_ADDRESS|SERVICE_ADDRESSES|SERVICE_INFO|SERVICE_STATUS|SERVICE_TABLE_ENTRY|SERVICE_TYPE_INFO_ABS|SERVICE_TYPE_VALUE_ABS|SESSION_BUFFER|SESSION_HEADER|SET_PARTITION_INFORMATION|SHFILEINFO|SHFILEOPSTRUCT|SHITEMID|SHNAMEMAPPING|SID|SID_AND_ATTRIBUTES|SID_IDENTIFIER_AUTHORITY|SINGLE_LIST_ENTRY|SIZE|SMALL_RECT|SOUNDSENTRY|STARTUPINFO|STICKYKEYS|STRRET|STYLEBUF|STYLESTRUCT|SYSTEMTIME|SYSTEM_AUDIT_ACE|SYSTEM_INFO|SYSTEM_INFO_U|SYSTEM_POWER_STATUS|Signal|SjLj_Function_Context|SpecialCaseData|TAPE_ERASE|TAPE_GET_DRIVE_PARAMETERS|TAPE_GET_MEDIA_PARAMETERS|TAPE_GET_POSITION|TAPE_PREPARE|TAPE_SET_DRIVE_PARAMETERS|TAPE_SET_MEDIA_PARAMETERS|TAPE_SET_POSITION|TAPE_WRITE_MARKS|TBADDBITMAP|TBBUTTON|TBNOTIFY|TBSAVEPARAMS|TCHOOSECOLOR|TCHOOSEFONT|TC_HITTESTINFO|TC_ITEM|TC_ITEMHEADER|TC_KEYDOWN|TEXTMETRIC|TEXTMETRICA|TEXTRANGE|TFINDTEXT|TIME_ZONE_INFORMATION|TOGGLEKEYS|TOKEN_CONTROL|TOKEN_DEFAULT_DACL|TOKEN_GROUPS|TOKEN_OWNER|TOKEN_PRIMARY_GROUP|TOKEN_PRIVILEGES|TOKEN_SOURCE|TOKEN_STATISTICS|TOKEN_USER|TOOLINFO|TOOLTIPTEXT|TPAGESETUPDLG|TPMPARAMS|TRANSMIT_FILE_BUFFERS|TREEITEM|TSMALLPOINT|TTHITTESTINFO|TTPOLYCURVE|TTPOLYGONHEADER|TVARIANT|TV_DISPINFO|TV_HITTESTINFO|TV_INSERTSTRUCT|TV_ITEM|TV_KEYDOWN|TV_SORTCB|Time|TimeOfDay|TimeSpan|Tuple|UDACCEL|ULARGE_INTEGER|UNIVERSAL_NAME_INFO|UNLOAD_DLL_DEBUG_INFO|USEROBJECTFLAGS|USER_INFO_0|USER_INFO_2|USER_INFO_3|UnicodeData|VALENT|VA_LIST|VERIFY_INFORMATION|VS_FIXEDFILEINFO|Variant|VfsFilterInfo|WIN32_FILE_ATTRIBUTE_DATA|WIN32_FIND_DATA|WIN32_FIND_DATAW|WIN32_STREAM_ID|WINDOWINFO|WINDOWPLACEMENT|WINDOWPOS|WINDOW_BUFFER_SIZE_RECORD|WNDCLASS|WNDCLASSA|WNDCLASSEX|WNDCLASSEXA|WSADATA|WallClock|XFORM|ZipEntryInfo)\b
+ name
+ support.type.built-ins.structs.d
+
+ support-type-d
+
+ match
+ \b((?:tango|std)\.[\w\.]+)\b
+ name
+ support.type.d
+
+
+ scopeName
+ source.d
+ uuid
+ D7C3A109-0466-4C28-9ECF-10753300FF46
+
+
diff --git a/sublime/Packages/D/D.tmLanguage.cache b/sublime/Packages/D/D.tmLanguage.cache
new file mode 100644
index 0000000..17f5085
Binary files /dev/null and b/sublime/Packages/D/D.tmLanguage.cache differ
diff --git a/sublime/Packages/D/Indentation Rules.tmPreferences b/sublime/Packages/D/Indentation Rules.tmPreferences
new file mode 100644
index 0000000..38675e4
--- /dev/null
+++ b/sublime/Packages/D/Indentation Rules.tmPreferences
@@ -0,0 +1,26 @@
+
+
+
+
+ name
+ Indentation Rules
+ scope
+ source.d
+ settings
+
+ decreaseIndentPattern
+ ^(.*\*/)?\s*\}([^}{"']*\{)?[;\s]*(//.*|/\*.*\*/\s*)?$|^\s*(public|private|protected):\s*$
+ increaseIndentPattern
+ ^.*\{[^}"']*$|^\s*(public|private|protected):\s*$
+
+ bracketIndentNextLinePattern
+ (?x)
+ ^ \s* \b(if|while|else|foreach)\b [^;]* $
+ | ^ \s* \b(for)\b .* $
+
+
+
+ uuid
+ 7C8F9C84-7DCC-4DD7-B32E-A638F322199F
+
+
diff --git a/sublime/Packages/D/Indentation Rules.tmPreferences.cache b/sublime/Packages/D/Indentation Rules.tmPreferences.cache
new file mode 100644
index 0000000..353f5f7
Binary files /dev/null and b/sublime/Packages/D/Indentation Rules.tmPreferences.cache differ
diff --git a/sublime/Packages/D/Symbol List-Method-Constructor.tmPreferences b/sublime/Packages/D/Symbol List-Method-Constructor.tmPreferences
new file mode 100644
index 0000000..c4e34d6
--- /dev/null
+++ b/sublime/Packages/D/Symbol List-Method-Constructor.tmPreferences
@@ -0,0 +1,20 @@
+
+
+
+
+ name
+ Symbol List: Method / Constructor
+ scope
+ source.d meta.definition.method, source.d meta.definition.constructor, source.d meta.definition.destructor
+ settings
+
+ showInSymbolList
+ 0
+ symbolTransformation
+
+ s/^\s*([^\)]+)/ $1/; # pad
+
+ uuid
+ A6BCFD4A-B6CC-49C6-93F9-FEB979CC679E
+
+
diff --git a/sublime/Packages/D/Symbol List-Method-Constructor.tmPreferences (Hackintosh's conflicted copy 2012-07-23).cache b/sublime/Packages/D/Symbol List-Method-Constructor.tmPreferences (Hackintosh's conflicted copy 2012-07-23).cache
new file mode 100644
index 0000000..8541a9e
Binary files /dev/null and b/sublime/Packages/D/Symbol List-Method-Constructor.tmPreferences (Hackintosh's conflicted copy 2012-07-23).cache differ
diff --git a/sublime/Packages/D/Symbol List-Method-Constructor.tmPreferences.cache b/sublime/Packages/D/Symbol List-Method-Constructor.tmPreferences.cache
new file mode 100644
index 0000000..904009e
Binary files /dev/null and b/sublime/Packages/D/Symbol List-Method-Constructor.tmPreferences.cache differ
diff --git a/sublime/Packages/D/class.sublime-snippet b/sublime/Packages/D/class.sublime-snippet
new file mode 100644
index 0000000..0e09406
--- /dev/null
+++ b/sublime/Packages/D/class.sublime-snippet
@@ -0,0 +1,11 @@
+
+
+ class
+ source.d
+ class … { … }
+
diff --git a/sublime/Packages/D/constant.sublime-snippet b/sublime/Packages/D/constant.sublime-snippet
new file mode 100644
index 0000000..54e771d
--- /dev/null
+++ b/sublime/Packages/D/constant.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ ps
+ source.d
+ constant (private static final)
+
diff --git a/sublime/Packages/D/debug.sublime-snippet b/sublime/Packages/D/debug.sublime-snippet
new file mode 100644
index 0000000..3080cda
--- /dev/null
+++ b/sublime/Packages/D/debug.sublime-snippet
@@ -0,0 +1,8 @@
+
+
+ debug
+ source.d
+ debug { … }
+
diff --git a/sublime/Packages/D/debugm.sublime-snippet b/sublime/Packages/D/debugm.sublime-snippet
new file mode 100644
index 0000000..999e21b
--- /dev/null
+++ b/sublime/Packages/D/debugm.sublime-snippet
@@ -0,0 +1,8 @@
+
+
+ debugm
+ source.d
+ debug(module) { … }
+
diff --git a/sublime/Packages/D/enum.sublime-snippet b/sublime/Packages/D/enum.sublime-snippet
new file mode 100644
index 0000000..2881392
--- /dev/null
+++ b/sublime/Packages/D/enum.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ en
+ source.d
+ enum … { … }
+
diff --git a/sublime/Packages/D/err-format.sublime-snippet b/sublime/Packages/D/err-format.sublime-snippet
new file mode 100644
index 0000000..5fa0b09
--- /dev/null
+++ b/sublime/Packages/D/err-format.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ errf
+ source.d
+ Stderr(format, …)
+
diff --git a/sublime/Packages/D/err.sublime-snippet b/sublime/Packages/D/err.sublime-snippet
new file mode 100644
index 0000000..0d14ec4
--- /dev/null
+++ b/sublime/Packages/D/err.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ err
+ source.d
+ Stderr(…)
+
diff --git a/sublime/Packages/D/foreach-reverse.sublime-snippet b/sublime/Packages/D/foreach-reverse.sublime-snippet
new file mode 100644
index 0000000..c1540f6
--- /dev/null
+++ b/sublime/Packages/D/foreach-reverse.sublime-snippet
@@ -0,0 +1,8 @@
+
+
+ fer
+ source.d
+ foreach_reverse(e; …) { … }
+
diff --git a/sublime/Packages/D/foreach.sublime-snippet b/sublime/Packages/D/foreach.sublime-snippet
new file mode 100644
index 0000000..fb27ed6
--- /dev/null
+++ b/sublime/Packages/D/foreach.sublime-snippet
@@ -0,0 +1,8 @@
+
+
+ fe
+ source.d
+ foreach(e; …) { … }
+
diff --git a/sublime/Packages/D/if-else.sublime-snippet b/sublime/Packages/D/if-else.sublime-snippet
new file mode 100644
index 0000000..35c46d2
--- /dev/null
+++ b/sublime/Packages/D/if-else.sublime-snippet
@@ -0,0 +1,11 @@
+
+
+ ife
+ source.d
+ if … else
+
diff --git a/sublime/Packages/D/if.sublime-snippet b/sublime/Packages/D/if.sublime-snippet
new file mode 100644
index 0000000..d4ae982
--- /dev/null
+++ b/sublime/Packages/D/if.sublime-snippet
@@ -0,0 +1,8 @@
+
+
+ if
+ source.d
+ if …
+
diff --git a/sublime/Packages/D/import.sublime-snippet b/sublime/Packages/D/import.sublime-snippet
new file mode 100644
index 0000000..af96748
--- /dev/null
+++ b/sublime/Packages/D/import.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ im
+ source.d
+ import …
+
diff --git a/sublime/Packages/D/log-error.sublime-snippet b/sublime/Packages/D/log-error.sublime-snippet
new file mode 100644
index 0000000..11259e1
--- /dev/null
+++ b/sublime/Packages/D/log-error.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ loge
+ source.d
+ log.error(…)
+
diff --git a/sublime/Packages/D/log-fatal.sublime-snippet b/sublime/Packages/D/log-fatal.sublime-snippet
new file mode 100644
index 0000000..4a07803
--- /dev/null
+++ b/sublime/Packages/D/log-fatal.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ logf
+ source.d
+ log.fatal(…)
+
diff --git a/sublime/Packages/D/log-info.sublime-snippet b/sublime/Packages/D/log-info.sublime-snippet
new file mode 100644
index 0000000..99c8604
--- /dev/null
+++ b/sublime/Packages/D/log-info.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ log
+ source.d
+ log.info(…)
+
diff --git a/sublime/Packages/D/log-trace.sublime-snippet b/sublime/Packages/D/log-trace.sublime-snippet
new file mode 100644
index 0000000..aecb1df
--- /dev/null
+++ b/sublime/Packages/D/log-trace.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ logt
+ source.d
+ log.trace(…)
+
diff --git a/sublime/Packages/D/log-warn.sublime-snippet b/sublime/Packages/D/log-warn.sublime-snippet
new file mode 100644
index 0000000..facb866
--- /dev/null
+++ b/sublime/Packages/D/log-warn.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ logw
+ source.d
+ log.warn(…)
+
diff --git a/sublime/Packages/D/logger.sublime-snippet b/sublime/Packages/D/logger.sublime-snippet
new file mode 100644
index 0000000..718f184
--- /dev/null
+++ b/sublime/Packages/D/logger.sublime-snippet
@@ -0,0 +1,12 @@
+
+
+ logger
+ source.d
+ Logger for Module
+
diff --git a/sublime/Packages/D/main-with-args.sublime-snippet b/sublime/Packages/D/main-with-args.sublime-snippet
new file mode 100644
index 0000000..5e3c44a
--- /dev/null
+++ b/sublime/Packages/D/main-with-args.sublime-snippet
@@ -0,0 +1,9 @@
+
+
+ maina
+ source.d
+ int main(char[][] args) { … }
+
diff --git a/sublime/Packages/D/main.sublime-snippet b/sublime/Packages/D/main.sublime-snippet
new file mode 100644
index 0000000..d0a6e06
--- /dev/null
+++ b/sublime/Packages/D/main.sublime-snippet
@@ -0,0 +1,8 @@
+
+
+ main
+ source.d
+ void main() { … }
+
diff --git a/sublime/Packages/D/method.sublime-snippet b/sublime/Packages/D/method.sublime-snippet
new file mode 100644
index 0000000..8aa4bc2
--- /dev/null
+++ b/sublime/Packages/D/method.sublime-snippet
@@ -0,0 +1,11 @@
+
+
+ me
+ source.d
+ method … { … }
+
diff --git a/sublime/Packages/D/out-format.sublime-snippet b/sublime/Packages/D/out-format.sublime-snippet
new file mode 100644
index 0000000..11f0902
--- /dev/null
+++ b/sublime/Packages/D/out-format.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ outf
+ source.d
+ Stdout(format, …)
+
diff --git a/sublime/Packages/D/out.sublime-snippet b/sublime/Packages/D/out.sublime-snippet
new file mode 100644
index 0000000..a7ce510
--- /dev/null
+++ b/sublime/Packages/D/out.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ out
+ source.d
+ Stdout(…)
+
diff --git a/sublime/Packages/D/return.sublime-snippet b/sublime/Packages/D/return.sublime-snippet
new file mode 100644
index 0000000..de39779
--- /dev/null
+++ b/sublime/Packages/D/return.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ r
+ source.d
+ return …
+
diff --git a/sublime/Packages/D/struct.sublime-snippet b/sublime/Packages/D/struct.sublime-snippet
new file mode 100644
index 0000000..662b953
--- /dev/null
+++ b/sublime/Packages/D/struct.sublime-snippet
@@ -0,0 +1,11 @@
+
+
+ st
+ source.d
+ struct … { … }
+
diff --git a/sublime/Packages/D/try-catch-finally.sublime-snippet b/sublime/Packages/D/try-catch-finally.sublime-snippet
new file mode 100644
index 0000000..867aeb6
--- /dev/null
+++ b/sublime/Packages/D/try-catch-finally.sublime-snippet
@@ -0,0 +1,12 @@
+
+
+ tcf
+ source.d
+ try … catch … finally
+
diff --git a/sublime/Packages/D/try-catch.sublime-snippet b/sublime/Packages/D/try-catch.sublime-snippet
new file mode 100644
index 0000000..7aeb61e
--- /dev/null
+++ b/sublime/Packages/D/try-catch.sublime-snippet
@@ -0,0 +1,10 @@
+
+
+ tc
+ source.d
+ try … catch
+
diff --git a/sublime/Packages/D/try-finally.sublime-snippet b/sublime/Packages/D/try-finally.sublime-snippet
new file mode 100644
index 0000000..f2b1a2e
--- /dev/null
+++ b/sublime/Packages/D/try-finally.sublime-snippet
@@ -0,0 +1,10 @@
+
+
+ tf
+ source.d
+ try … finally
+
diff --git a/sublime/Packages/D/unittest.sublime-snippet b/sublime/Packages/D/unittest.sublime-snippet
new file mode 100644
index 0000000..3826af1
--- /dev/null
+++ b/sublime/Packages/D/unittest.sublime-snippet
@@ -0,0 +1,8 @@
+
+
+ unit
+ source.d
+ unittest { … }
+
diff --git a/sublime/Packages/D/version.sublime-snippet b/sublime/Packages/D/version.sublime-snippet
new file mode 100644
index 0000000..f0c9b7a
--- /dev/null
+++ b/sublime/Packages/D/version.sublime-snippet
@@ -0,0 +1,8 @@
+
+
+ ver
+ source.d
+ version(ident) { … }
+
diff --git a/sublime/Packages/D/while.sublime-snippet b/sublime/Packages/D/while.sublime-snippet
new file mode 100644
index 0000000..5210951
--- /dev/null
+++ b/sublime/Packages/D/while.sublime-snippet
@@ -0,0 +1,8 @@
+
+
+ while
+ source.d
+ while(…) { … }
+
diff --git a/sublime/Packages/Default/Add Line Before.sublime-macro b/sublime/Packages/Default/Add Line Before.sublime-macro
new file mode 100644
index 0000000..a1164e7
--- /dev/null
+++ b/sublime/Packages/Default/Add Line Before.sublime-macro
@@ -0,0 +1,6 @@
+[
+ {"command": "move_to", "args": {"to": "hardbol"}},
+ {"command": "insert", "args": {"characters": "\n"}},
+ {"command": "move", "args": {"by": "lines", "forward": false}},
+ {"command": "reindent", "args": {"force_indent": false}}
+]
diff --git a/sublime/Packages/Default/Add Line in Braces.sublime-macro b/sublime/Packages/Default/Add Line in Braces.sublime-macro
new file mode 100644
index 0000000..aaf8218
--- /dev/null
+++ b/sublime/Packages/Default/Add Line in Braces.sublime-macro
@@ -0,0 +1,6 @@
+[
+ {"command": "insert", "args": {"characters": "\n\n"} },
+ {"command": "move", "args": {"by": "lines", "forward": false} },
+ {"command": "move_to", "args": {"to": "hardeol", "extend": false} },
+ {"command": "reindent", "args": {"single_line": true} }
+]
diff --git a/sublime/Packages/Default/Add Line.sublime-macro b/sublime/Packages/Default/Add Line.sublime-macro
new file mode 100644
index 0000000..6d746e7
--- /dev/null
+++ b/sublime/Packages/Default/Add Line.sublime-macro
@@ -0,0 +1,4 @@
+[
+ {"command": "move_to", "args": {"to": "hardeol"}},
+ {"command": "insert", "args": {"characters": "\n"}}
+]
diff --git a/sublime/Packages/Default/Context.sublime-menu b/sublime/Packages/Default/Context.sublime-menu
new file mode 100644
index 0000000..61a9de2
--- /dev/null
+++ b/sublime/Packages/Default/Context.sublime-menu
@@ -0,0 +1,13 @@
+[
+ { "command": "copy" },
+ { "command": "cut" },
+ { "command": "paste" },
+ { "caption": "-", "id": "selection" },
+ { "command": "select_all" },
+ { "caption": "-", "id": "file" },
+ { "command": "open_in_browser", "caption": "Open in Browser" },
+ { "command": "open_dir", "args": {"dir": "$file_path", "file": "$file_name"}, "caption": "Open Containing Folder…" },
+ { "command": "copy_path", "caption": "Copy File Path" },
+ { "command": "reveal_in_side_bar", "caption": "Reveal in Side Bar" },
+ { "caption": "-", "id": "end" }
+]
diff --git a/sublime/Packages/Default/Default (Linux).sublime-keymap b/sublime/Packages/Default/Default (Linux).sublime-keymap
new file mode 100644
index 0000000..0903204
--- /dev/null
+++ b/sublime/Packages/Default/Default (Linux).sublime-keymap
@@ -0,0 +1,650 @@
+[
+ { "keys": ["ctrl+q"], "command": "exit" },
+
+ { "keys": ["ctrl+shift+n"], "command": "new_window" },
+ { "keys": ["ctrl+shift+w"], "command": "close_window" },
+ { "keys": ["ctrl+o"], "command": "prompt_open_file" },
+ { "keys": ["ctrl+shift+t"], "command": "reopen_last_file" },
+ { "keys": ["alt+o"], "command": "switch_file", "args": {"extensions": ["cpp", "cxx", "cc", "c", "hpp", "hxx", "h", "ipp", "inl", "m", "mm"]} },
+ { "keys": ["ctrl+n"], "command": "new_file" },
+ { "keys": ["ctrl+s"], "command": "save" },
+ { "keys": ["ctrl+shift+s"], "command": "prompt_save_as" },
+ { "keys": ["ctrl+f4"], "command": "close_file" },
+ { "keys": ["ctrl+w"], "command": "close" },
+
+ { "keys": ["ctrl+k", "ctrl+b"], "command": "toggle_side_bar" },
+ { "keys": ["f11"], "command": "toggle_full_screen" },
+ { "keys": ["shift+f11"], "command": "toggle_distraction_free" },
+
+ { "keys": ["backspace"], "command": "left_delete" },
+ { "keys": ["shift+backspace"], "command": "left_delete" },
+ { "keys": ["ctrl+shift+backspace"], "command": "left_delete" },
+ { "keys": ["delete"], "command": "right_delete" },
+ { "keys": ["enter"], "command": "insert", "args": {"characters": "\n"} },
+ { "keys": ["shift+enter"], "command": "insert", "args": {"characters": "\n"} },
+ { "keys": ["keypad_enter"], "command": "insert", "args": {"characters": "\n"} },
+ { "keys": ["shift+keypad_enter"], "command": "insert", "args": {"characters": "\n"} },
+
+ { "keys": ["ctrl+z"], "command": "undo" },
+ { "keys": ["ctrl+shift+z"], "command": "redo" },
+ { "keys": ["ctrl+y"], "command": "redo_or_repeat" },
+ { "keys": ["ctrl+u"], "command": "soft_undo" },
+ { "keys": ["ctrl+shift+u"], "command": "soft_redo" },
+
+ { "keys": ["shift+delete"], "command": "cut" },
+ { "keys": ["ctrl+insert"], "command": "copy" },
+ { "keys": ["shift+insert"], "command": "paste" },
+
+ // These two key bindings should replace the above three if you'd prefer
+ // the traditional X11 behavior of shift+insert pasting from the primary
+ // selection. The above CUA keys are the default, to match most GTK
+ // applications.
+ //{ "keys": ["shift+insert"], "command": "paste", "args": {"clipboard": "selection"} },
+ //{ "keys": ["shift+delete"], "command": "right_delete" },
+
+ { "keys": ["ctrl+x"], "command": "cut" },
+ { "keys": ["ctrl+c"], "command": "copy" },
+ { "keys": ["ctrl+v"], "command": "paste" },
+ { "keys": ["ctrl+shift+v"], "command": "paste_and_indent" },
+
+ { "keys": ["left"], "command": "move", "args": {"by": "characters", "forward": false} },
+ { "keys": ["right"], "command": "move", "args": {"by": "characters", "forward": true} },
+ { "keys": ["up"], "command": "move", "args": {"by": "lines", "forward": false} },
+ { "keys": ["down"], "command": "move", "args": {"by": "lines", "forward": true} },
+ { "keys": ["shift+left"], "command": "move", "args": {"by": "characters", "forward": false, "extend": true} },
+ { "keys": ["shift+right"], "command": "move", "args": {"by": "characters", "forward": true, "extend": true} },
+ { "keys": ["shift+up"], "command": "move", "args": {"by": "lines", "forward": false, "extend": true} },
+ { "keys": ["shift+down"], "command": "move", "args": {"by": "lines", "forward": true, "extend": true} },
+
+ { "keys": ["ctrl+left"], "command": "move", "args": {"by": "words", "forward": false} },
+ { "keys": ["ctrl+right"], "command": "move", "args": {"by": "word_ends", "forward": true} },
+ { "keys": ["ctrl+shift+left"], "command": "move", "args": {"by": "words", "forward": false, "extend": true} },
+ { "keys": ["ctrl+shift+right"], "command": "move", "args": {"by": "word_ends", "forward": true, "extend": true} },
+
+ { "keys": ["alt+left"], "command": "move", "args": {"by": "subwords", "forward": false} },
+ { "keys": ["alt+right"], "command": "move", "args": {"by": "subword_ends", "forward": true} },
+ { "keys": ["alt+shift+left"], "command": "move", "args": {"by": "subwords", "forward": false, "extend": true} },
+ { "keys": ["alt+shift+right"], "command": "move", "args": {"by": "subword_ends", "forward": true, "extend": true} },
+
+ { "keys": ["alt+shift+up"], "command": "select_lines", "args": {"forward": false} },
+ { "keys": ["alt+shift+down"], "command": "select_lines", "args": {"forward": true} },
+
+ { "keys": ["pageup"], "command": "move", "args": {"by": "pages", "forward": false} },
+ { "keys": ["pagedown"], "command": "move", "args": {"by": "pages", "forward": true} },
+ { "keys": ["shift+pageup"], "command": "move", "args": {"by": "pages", "forward": false, "extend": true} },
+ { "keys": ["shift+pagedown"], "command": "move", "args": {"by": "pages", "forward": true, "extend": true} },
+
+ { "keys": ["home"], "command": "move_to", "args": {"to": "bol", "extend": false} },
+ { "keys": ["end"], "command": "move_to", "args": {"to": "eol", "extend": false} },
+ { "keys": ["shift+home"], "command": "move_to", "args": {"to": "bol", "extend": true} },
+ { "keys": ["shift+end"], "command": "move_to", "args": {"to": "eol", "extend": true} },
+ { "keys": ["ctrl+home"], "command": "move_to", "args": {"to": "bof", "extend": false} },
+ { "keys": ["ctrl+end"], "command": "move_to", "args": {"to": "eof", "extend": false} },
+ { "keys": ["ctrl+shift+home"], "command": "move_to", "args": {"to": "bof", "extend": true} },
+ { "keys": ["ctrl+shift+end"], "command": "move_to", "args": {"to": "eof", "extend": true} },
+
+ { "keys": ["ctrl+up"], "command": "scroll_lines", "args": {"amount": 1.0 } },
+ { "keys": ["ctrl+down"], "command": "scroll_lines", "args": {"amount": -1.0 } },
+
+ { "keys": ["ctrl+pagedown"], "command": "next_view" },
+ { "keys": ["ctrl+pageup"], "command": "prev_view" },
+
+ { "keys": ["ctrl+tab"], "command": "next_view_in_stack" },
+ { "keys": ["ctrl+shift+tab"], "command": "prev_view_in_stack" },
+
+ { "keys": ["ctrl+a"], "command": "select_all" },
+ { "keys": ["ctrl+shift+l"], "command": "split_selection_into_lines" },
+ { "keys": ["escape"], "command": "single_selection", "context":
+ [
+ { "key": "num_selections", "operator": "not_equal", "operand": 1 }
+ ]
+ },
+ { "keys": ["escape"], "command": "clear_fields", "context":
+ [
+ { "key": "has_next_field", "operator": "equal", "operand": true }
+ ]
+ },
+ { "keys": ["escape"], "command": "clear_fields", "context":
+ [
+ { "key": "has_prev_field", "operator": "equal", "operand": true }
+ ]
+ },
+ { "keys": ["escape"], "command": "hide_panel", "args": {"cancel": true},
+ "context":
+ [
+ { "key": "panel_visible", "operator": "equal", "operand": true }
+ ]
+ },
+ { "keys": ["escape"], "command": "hide_overlay", "context":
+ [
+ { "key": "overlay_visible", "operator": "equal", "operand": true }
+ ]
+ },
+ { "keys": ["escape"], "command": "hide_auto_complete", "context":
+ [
+ { "key": "auto_complete_visible", "operator": "equal", "operand": true }
+ ]
+ },
+
+ { "keys": ["tab"], "command": "insert_best_completion", "args": {"default": "\t", "exact": true} },
+ { "keys": ["tab"], "command": "insert_best_completion", "args": {"default": "\t", "exact": false},
+ "context":
+ [
+ { "key": "setting.tab_completion", "operator": "equal", "operand": true }
+ ]
+ },
+ { "keys": ["tab"], "command": "replace_completion_with_next_completion", "context":
+ [
+ { "key": "last_command", "operator": "equal", "operand": "insert_best_completion" },
+ { "key": "setting.tab_completion", "operator": "equal", "operand": true }
+ ]
+ },
+ { "keys": ["tab"], "command": "reindent", "context":
+ [
+ { "key": "setting.auto_indent", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "preceding_text", "operator": "regex_match", "operand": "^$", "match_all": true },
+ { "key": "following_text", "operator": "regex_match", "operand": "^$", "match_all": true }
+ ]
+ },
+ { "keys": ["tab"], "command": "indent", "context":
+ [
+ { "key": "text", "operator": "regex_contains", "operand": "\n" }
+ ]
+ },
+ { "keys": ["tab"], "command": "next_field", "context":
+ [
+ { "key": "has_next_field", "operator": "equal", "operand": true }
+ ]
+ },
+ { "keys": ["tab"], "command": "commit_completion", "context":
+ [
+ { "key": "auto_complete_visible" },
+ { "key": "setting.auto_complete_commit_on_tab" }
+ ]
+ },
+
+ { "keys": ["shift+tab"], "command": "insert", "args": {"characters": "\t"} },
+ { "keys": ["shift+tab"], "command": "unindent", "context":
+ [
+ { "key": "setting.shift_tab_unindent", "operator": "equal", "operand": true }
+ ]
+ },
+ { "keys": ["shift+tab"], "command": "unindent", "context":
+ [
+ { "key": "preceding_text", "operator": "regex_match", "operand": "^[\t ]*" }
+ ]
+ },
+ { "keys": ["shift+tab"], "command": "unindent", "context":
+ [
+ { "key": "text", "operator": "regex_contains", "operand": "\n" }
+ ]
+ },
+ { "keys": ["shift+tab"], "command": "prev_field", "context":
+ [
+ { "key": "has_prev_field", "operator": "equal", "operand": true }
+ ]
+ },
+
+ { "keys": ["ctrl+]"], "command": "indent" },
+ { "keys": ["ctrl+["], "command": "unindent" },
+
+ { "keys": ["insert"], "command": "toggle_overwrite" },
+
+ { "keys": ["ctrl+l"], "command": "expand_selection", "args": {"to": "line"} },
+ { "keys": ["ctrl+d"], "command": "find_under_expand" },
+ { "keys": ["ctrl+k", "ctrl+d"], "command": "find_under_expand_skip" },
+ { "keys": ["ctrl+shift+space"], "command": "expand_selection", "args": {"to": "scope"} },
+ { "keys": ["ctrl+shift+m"], "command": "expand_selection", "args": {"to": "brackets"} },
+ { "keys": ["ctrl+m"], "command": "move_to", "args": {"to": "brackets"} },
+ { "keys": ["ctrl+shift+j"], "command": "expand_selection", "args": {"to": "indentation"} },
+ { "keys": ["ctrl+shift+a"], "command": "expand_selection", "args": {"to": "tag"} },
+
+ { "keys": ["alt+."], "command": "close_tag" },
+
+ { "keys": ["ctrl+alt+q"], "command": "toggle_record_macro" },
+ { "keys": ["ctrl+alt+shift+q"], "command": "run_macro" },
+
+ { "keys": ["ctrl+enter"], "command": "run_macro_file", "args": {"file": "Packages/Default/Add Line.sublime-macro"} },
+ { "keys": ["ctrl+shift+enter"], "command": "run_macro_file", "args": {"file": "Packages/Default/Add Line Before.sublime-macro"} },
+ { "keys": ["enter"], "command": "commit_completion", "context":
+ [
+ { "key": "auto_complete_visible" },
+ { "key": "setting.auto_complete_commit_on_tab", "operand": false }
+ ]
+ },
+
+ { "keys": ["ctrl+p"], "command": "show_overlay", "args": {"overlay": "goto", "show_files": true} },
+ { "keys": ["ctrl+shift+p"], "command": "show_overlay", "args": {"overlay": "command_palette"} },
+ { "keys": ["ctrl+alt+p"], "command": "prompt_select_project" },
+ { "keys": ["ctrl+r"], "command": "show_overlay", "args": {"overlay": "goto", "text": "@"} },
+ { "keys": ["ctrl+g"], "command": "show_overlay", "args": {"overlay": "goto", "text": ":"} },
+ { "keys": ["ctrl+;"], "command": "show_overlay", "args": {"overlay": "goto", "text": "#"} },
+
+ { "keys": ["ctrl+i"], "command": "show_panel", "args": {"panel": "incremental_find", "reverse":false} },
+ { "keys": ["ctrl+shift+i"], "command": "show_panel", "args": {"panel": "incremental_find", "reverse":true} },
+ { "keys": ["ctrl+f"], "command": "show_panel", "args": {"panel": "find"} },
+ { "keys": ["ctrl+h"], "command": "show_panel", "args": {"panel": "replace"} },
+ { "keys": ["ctrl+shift+h"], "command": "replace_next" },
+ { "keys": ["f3"], "command": "find_next" },
+ { "keys": ["shift+f3"], "command": "find_prev" },
+ { "keys": ["ctrl+f3"], "command": "find_under" },
+ { "keys": ["ctrl+shift+f3"], "command": "find_under_prev" },
+ { "keys": ["alt+f3"], "command": "find_all_under" },
+ { "keys": ["ctrl+e"], "command": "slurp_find_string" },
+ { "keys": ["ctrl+shift+e"], "command": "slurp_replace_string" },
+ { "keys": ["ctrl+shift+f"], "command": "show_panel", "args": {"panel": "find_in_files"} },
+ { "keys": ["f4"], "command": "next_result" },
+ { "keys": ["shift+f4"], "command": "prev_result" },
+
+ { "keys": ["f6"], "command": "toggle_setting", "args": {"setting": "spell_check"} },
+ { "keys": ["ctrl+f6"], "command": "next_misspelling" },
+ { "keys": ["ctrl+shift+f6"], "command": "prev_misspelling" },
+
+ { "keys": ["ctrl+shift+up"], "command": "swap_line_up" },
+ { "keys": ["ctrl+shift+down"], "command": "swap_line_down" },
+
+ { "keys": ["ctrl+backspace"], "command": "delete_word", "args": { "forward": false } },
+ { "keys": ["ctrl+shift+backspace"], "command": "run_macro_file", "args": {"file": "Packages/Default/Delete to Hard BOL.sublime-macro"} },
+
+ { "keys": ["ctrl+delete"], "command": "delete_word", "args": { "forward": true } },
+ { "keys": ["ctrl+shift+delete"], "command": "run_macro_file", "args": {"file": "Packages/Default/Delete to Hard EOL.sublime-macro"} },
+
+ { "keys": ["ctrl+/"], "command": "toggle_comment", "args": { "block": false } },
+ { "keys": ["ctrl+shift+/"], "command": "toggle_comment", "args": { "block": true } },
+
+ { "keys": ["ctrl+j"], "command": "join_lines" },
+ { "keys": ["ctrl+shift+d"], "command": "duplicate_line" },
+
+ { "keys": ["ctrl+`"], "command": "show_panel", "args": {"panel": "console", "toggle": true} },
+
+ { "keys": ["alt+/"], "command": "auto_complete" },
+ { "keys": ["alt+/"], "command": "replace_completion_with_auto_complete", "context":
+ [
+ { "key": "last_command", "operator": "equal", "operand": "insert_best_completion" },
+ { "key": "auto_complete_visible", "operator": "equal", "operand": false },
+ { "key": "setting.tab_completion", "operator": "equal", "operand": true }
+ ]
+ },
+
+ { "keys": ["ctrl+alt+shift+p"], "command": "show_scope_name" },
+
+ { "keys": ["f7"], "command": "build" },
+ { "keys": ["ctrl+b"], "command": "build" },
+ { "keys": ["ctrl+shift+b"], "command": "build", "args": {"variant": "Run"} },
+ { "keys": ["ctrl+break"], "command": "exec", "args": {"kill": true} },
+
+ { "keys": ["ctrl+t"], "command": "transpose" },
+
+ { "keys": ["f9"], "command": "sort_lines", "args": {"case_sensitive": false} },
+ { "keys": ["ctrl+f9"], "command": "sort_lines", "args": {"case_sensitive": true} },
+
+ // Auto-pair quotes
+ { "keys": ["\""], "command": "insert_snippet", "args": {"contents": "\"$0\""}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|\\}|>|$)", "match_all": true },
+ { "key": "preceding_text", "operator": "not_regex_contains", "operand": "[\"a-zA-Z0-9_]$", "match_all": true },
+ { "key": "eol_selector", "operator": "not_equal", "operand": "string.quoted.double", "match_all": true }
+ ]
+ },
+ { "keys": ["\""], "command": "insert_snippet", "args": {"contents": "\"${0:$SELECTION}\""}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true }
+ ]
+ },
+ { "keys": ["\""], "command": "move", "args": {"by": "characters", "forward": true}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^\"", "match_all": true }
+ ]
+ },
+ { "keys": ["backspace"], "command": "run_macro_file", "args": {"file": "Packages/Default/Delete Left Right.sublime-macro"}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "preceding_text", "operator": "regex_contains", "operand": "\"$", "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^\"", "match_all": true }
+ ]
+ },
+
+ // Auto-pair single quotes
+ { "keys": ["'"], "command": "insert_snippet", "args": {"contents": "'$0'"}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|\\}|>|$)", "match_all": true },
+ { "key": "preceding_text", "operator": "not_regex_contains", "operand": "['a-zA-Z0-9_]$", "match_all": true },
+ { "key": "eol_selector", "operator": "not_equal", "operand": "string.quoted.single", "match_all": true }
+ ]
+ },
+ { "keys": ["'"], "command": "insert_snippet", "args": {"contents": "'${0:$SELECTION}'"}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true }
+ ]
+ },
+ { "keys": ["'"], "command": "move", "args": {"by": "characters", "forward": true}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^'", "match_all": true }
+ ]
+ },
+ { "keys": ["backspace"], "command": "run_macro_file", "args": {"file": "Packages/Default/Delete Left Right.sublime-macro"}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "preceding_text", "operator": "regex_contains", "operand": "'$", "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^'", "match_all": true }
+ ]
+ },
+
+ // Auto-pair brackets
+ { "keys": ["("], "command": "insert_snippet", "args": {"contents": "($0)"}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|;|\\}|$)", "match_all": true }
+ ]
+ },
+ { "keys": ["("], "command": "insert_snippet", "args": {"contents": "(${0:$SELECTION})"}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true }
+ ]
+ },
+ { "keys": [")"], "command": "move", "args": {"by": "characters", "forward": true}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^\\)", "match_all": true }
+ ]
+ },
+ { "keys": ["backspace"], "command": "run_macro_file", "args": {"file": "Packages/Default/Delete Left Right.sublime-macro"}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "preceding_text", "operator": "regex_contains", "operand": "\\($", "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^\\)", "match_all": true }
+ ]
+ },
+
+ // Auto-pair square brackets
+ { "keys": ["["], "command": "insert_snippet", "args": {"contents": "[$0]"}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|;|\\}|$)", "match_all": true }
+ ]
+ },
+ { "keys": ["["], "command": "insert_snippet", "args": {"contents": "[${0:$SELECTION}]"}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true }
+ ]
+ },
+ { "keys": ["]"], "command": "move", "args": {"by": "characters", "forward": true}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^\\]", "match_all": true }
+ ]
+ },
+ { "keys": ["backspace"], "command": "run_macro_file", "args": {"file": "Packages/Default/Delete Left Right.sublime-macro"}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "preceding_text", "operator": "regex_contains", "operand": "\\[$", "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^\\]", "match_all": true }
+ ]
+ },
+
+ // Auto-pair curly brackets
+ { "keys": ["{"], "command": "insert_snippet", "args": {"contents": "{$0}"}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|\\}|$)", "match_all": true }
+ ]
+ },
+ { "keys": ["{"], "command": "insert_snippet", "args": {"contents": "{${0:$SELECTION}}"}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true }
+ ]
+ },
+ { "keys": ["}"], "command": "move", "args": {"by": "characters", "forward": true}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^\\}", "match_all": true }
+ ]
+ },
+ { "keys": ["backspace"], "command": "run_macro_file", "args": {"file": "Packages/Default/Delete Left Right.sublime-macro"}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "preceding_text", "operator": "regex_contains", "operand": "\\{$", "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^\\}", "match_all": true }
+ ]
+ },
+
+ { "keys": ["enter"], "command": "run_macro_file", "args": {"file": "Packages/Default/Add Line in Braces.sublime-macro"}, "context":
+ [
+ { "key": "setting.auto_indent", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "preceding_text", "operator": "regex_contains", "operand": "\\{$", "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^\\}", "match_all": true }
+ ]
+ },
+ { "keys": ["shift+enter"], "command": "run_macro_file", "args": {"file": "Packages/Default/Add Line in Braces.sublime-macro"}, "context":
+ [
+ { "key": "setting.auto_indent", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "preceding_text", "operator": "regex_contains", "operand": "\\{$", "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^\\}", "match_all": true }
+ ]
+ },
+
+ {
+ "keys": ["alt+shift+1"],
+ "command": "set_layout",
+ "args":
+ {
+ "cols": [0.0, 1.0],
+ "rows": [0.0, 1.0],
+ "cells": [[0, 0, 1, 1]]
+ }
+ },
+ {
+ "keys": ["alt+shift+2"],
+ "command": "set_layout",
+ "args":
+ {
+ "cols": [0.0, 0.5, 1.0],
+ "rows": [0.0, 1.0],
+ "cells": [[0, 0, 1, 1], [1, 0, 2, 1]]
+ }
+ },
+ {
+ "keys": ["alt+shift+3"],
+ "command": "set_layout",
+ "args":
+ {
+ "cols": [0.0, 0.33, 0.66, 1.0],
+ "rows": [0.0, 1.0],
+ "cells": [[0, 0, 1, 1], [1, 0, 2, 1], [2, 0, 3, 1]]
+ }
+ },
+ {
+ "keys": ["alt+shift+4"],
+ "command": "set_layout",
+ "args":
+ {
+ "cols": [0.0, 0.25, 0.5, 0.75, 1.0],
+ "rows": [0.0, 1.0],
+ "cells": [[0, 0, 1, 1], [1, 0, 2, 1], [2, 0, 3, 1], [3, 0, 4, 1]]
+ }
+ },
+ {
+ "keys": ["alt+shift+8"],
+ "command": "set_layout",
+ "args":
+ {
+ "cols": [0.0, 1.0],
+ "rows": [0.0, 0.5, 1.0],
+ "cells": [[0, 0, 1, 1], [0, 1, 1, 2]]
+ }
+ },
+ {
+ "keys": ["alt+shift+9"],
+ "command": "set_layout",
+ "args":
+ {
+ "cols": [0.0, 1.0],
+ "rows": [0.0, 0.33, 0.66, 1.0],
+ "cells": [[0, 0, 1, 1], [0, 1, 1, 2], [0, 2, 1, 3]]
+ }
+ },
+ {
+ "keys": ["alt+shift+5"],
+ "command": "set_layout",
+ "args":
+ {
+ "cols": [0.0, 0.5, 1.0],
+ "rows": [0.0, 0.5, 1.0],
+ "cells":
+ [
+ [0, 0, 1, 1], [1, 0, 2, 1],
+ [0, 1, 1, 2], [1, 1, 2, 2]
+ ]
+ }
+ },
+ { "keys": ["ctrl+1"], "command": "focus_group", "args": { "group": 0 } },
+ { "keys": ["ctrl+2"], "command": "focus_group", "args": { "group": 1 } },
+ { "keys": ["ctrl+3"], "command": "focus_group", "args": { "group": 2 } },
+ { "keys": ["ctrl+4"], "command": "focus_group", "args": { "group": 3 } },
+ { "keys": ["ctrl+shift+1"], "command": "move_to_group", "args": { "group": 0 } },
+ { "keys": ["ctrl+shift+2"], "command": "move_to_group", "args": { "group": 1 } },
+ { "keys": ["ctrl+shift+3"], "command": "move_to_group", "args": { "group": 2 } },
+ { "keys": ["ctrl+shift+4"], "command": "move_to_group", "args": { "group": 3 } },
+ { "keys": ["ctrl+0"], "command": "focus_side_bar" },
+
+ { "keys": ["alt+1"], "command": "select_by_index", "args": { "index": 0 } },
+ { "keys": ["alt+2"], "command": "select_by_index", "args": { "index": 1 } },
+ { "keys": ["alt+3"], "command": "select_by_index", "args": { "index": 2 } },
+ { "keys": ["alt+4"], "command": "select_by_index", "args": { "index": 3 } },
+ { "keys": ["alt+5"], "command": "select_by_index", "args": { "index": 4 } },
+ { "keys": ["alt+6"], "command": "select_by_index", "args": { "index": 5 } },
+ { "keys": ["alt+7"], "command": "select_by_index", "args": { "index": 6 } },
+ { "keys": ["alt+8"], "command": "select_by_index", "args": { "index": 7 } },
+ { "keys": ["alt+9"], "command": "select_by_index", "args": { "index": 8 } },
+ { "keys": ["alt+0"], "command": "select_by_index", "args": { "index": 9 } },
+
+ { "keys": ["f2"], "command": "next_bookmark" },
+ { "keys": ["shift+f2"], "command": "prev_bookmark" },
+ { "keys": ["ctrl+f2"], "command": "toggle_bookmark" },
+ { "keys": ["ctrl+shift+f2"], "command": "clear_bookmarks" },
+ { "keys": ["alt+f2"], "command": "select_all_bookmarks" },
+
+ { "keys": ["ctrl+shift+k"], "command": "run_macro_file", "args": {"file": "Packages/Default/Delete Line.sublime-macro"} },
+
+ { "keys": ["alt+q"], "command": "wrap_lines" },
+
+ { "keys": ["ctrl+k", "ctrl+u"], "command": "upper_case" },
+ { "keys": ["ctrl+k", "ctrl+l"], "command": "lower_case" },
+
+ { "keys": ["ctrl+k", "ctrl+space"], "command": "set_mark" },
+ { "keys": ["ctrl+k", "ctrl+a"], "command": "select_to_mark" },
+ { "keys": ["ctrl+k", "ctrl+w"], "command": "delete_to_mark" },
+ { "keys": ["ctrl+k", "ctrl+x"], "command": "swap_with_mark" },
+ { "keys": ["ctrl+k", "ctrl+y"], "command": "yank" },
+ { "keys": ["ctrl+k", "ctrl+k"], "command": "run_macro_file", "args": {"file": "Packages/Default/Delete to Hard EOL.sublime-macro"} },
+ { "keys": ["ctrl+k", "ctrl+backspace"], "command": "run_macro_file", "args": {"file": "Packages/Default/Delete to Hard BOL.sublime-macro"} },
+ { "keys": ["ctrl+k", "ctrl+g"], "command": "clear_bookmarks", "args": {"name": "mark"} },
+ { "keys": ["ctrl+k", "ctrl+c"], "command": "show_at_center" },
+
+ { "keys": ["ctrl++"], "command": "increase_font_size" },
+ { "keys": ["ctrl+="], "command": "increase_font_size" },
+ { "keys": ["ctrl+-"], "command": "decrease_font_size" },
+
+ { "keys": ["alt+shift+w"], "command": "insert_snippet", "args": { "name": "Packages/XML/long-tag.sublime-snippet" } },
+
+ { "keys": ["ctrl+shift+["], "command": "fold" },
+ { "keys": ["ctrl+shift+]"], "command": "unfold" },
+ { "keys": ["ctrl+k", "ctrl+1"], "command": "fold_by_level", "args": {"level": 1} },
+ { "keys": ["ctrl+k", "ctrl+2"], "command": "fold_by_level", "args": {"level": 2} },
+ { "keys": ["ctrl+k", "ctrl+3"], "command": "fold_by_level", "args": {"level": 3} },
+ { "keys": ["ctrl+k", "ctrl+4"], "command": "fold_by_level", "args": {"level": 4} },
+ { "keys": ["ctrl+k", "ctrl+5"], "command": "fold_by_level", "args": {"level": 5} },
+ { "keys": ["ctrl+k", "ctrl+6"], "command": "fold_by_level", "args": {"level": 6} },
+ { "keys": ["ctrl+k", "ctrl+7"], "command": "fold_by_level", "args": {"level": 7} },
+ { "keys": ["ctrl+k", "ctrl+8"], "command": "fold_by_level", "args": {"level": 8} },
+ { "keys": ["ctrl+k", "ctrl+9"], "command": "fold_by_level", "args": {"level": 9} },
+ { "keys": ["ctrl+k", "ctrl+0"], "command": "unfold_all" },
+ { "keys": ["ctrl+k", "ctrl+j"], "command": "unfold_all" },
+ { "keys": ["ctrl+k", "ctrl+t"], "command": "fold_tag_attributes" },
+
+ { "keys": ["context_menu"], "command": "context_menu" },
+
+ { "keys": ["alt+c"], "command": "toggle_case_sensitive", "context":
+ [
+ { "key": "setting.is_widget", "operator": "equal", "operand": true }
+ ]
+ },
+ { "keys": ["alt+r"], "command": "toggle_regex", "context":
+ [
+ { "key": "setting.is_widget", "operator": "equal", "operand": true }
+ ]
+ },
+ { "keys": ["alt+w"], "command": "toggle_whole_word", "context":
+ [
+ { "key": "setting.is_widget", "operator": "equal", "operand": true }
+ ]
+ },
+ { "keys": ["alt+a"], "command": "toggle_preserve_case", "context":
+ [
+ { "key": "setting.is_widget", "operator": "equal", "operand": true }
+ ]
+ },
+
+ // Find panel key bindings
+ { "keys": ["enter"], "command": "find_next", "context":
+ [{"key": "panel", "operand": "find"}, {"key": "panel_has_focus"}]
+ },
+ { "keys": ["shift+enter"], "command": "find_prev", "context":
+ [{"key": "panel", "operand": "find"}, {"key": "panel_has_focus"}]
+ },
+ { "keys": ["alt+enter"], "command": "find_all", "args": {"close_panel": true},
+ "context": [{"key": "panel", "operand": "find"}, {"key": "panel_has_focus"}]
+ },
+
+ // Replace panel key bindings
+ { "keys": ["enter"], "command": "find_next", "context":
+ [{"key": "panel", "operand": "replace"}, {"key": "panel_has_focus"}]
+ },
+ { "keys": ["shift+enter"], "command": "find_prev", "context":
+ [{"key": "panel", "operand": "replace"}, {"key": "panel_has_focus"}]
+ },
+ { "keys": ["alt+enter"], "command": "find_all", "args": {"close_panel": true},
+ "context": [{"key": "panel", "operand": "replace"}, {"key": "panel_has_focus"}]
+ },
+ { "keys": ["ctrl+alt+enter"], "command": "replace_all", "args": {"close_panel": true},
+ "context": [{"key": "panel", "operand": "replace"}, {"key": "panel_has_focus"}]
+ },
+
+ // Incremental find panel key bindings
+ { "keys": ["enter"], "command": "hide_panel", "context":
+ [{"key": "panel", "operand": "incremental_find"}, {"key": "panel_has_focus"}]
+ },
+ { "keys": ["shift+enter"], "command": "find_prev", "context":
+ [{"key": "panel", "operand": "incremental_find"}, {"key": "panel_has_focus"}]
+ },
+ { "keys": ["alt+enter"], "command": "find_all", "args": {"close_panel": true},
+ "context": [{"key": "panel", "operand": "incremental_find"}, {"key": "panel_has_focus"}]
+ }
+]
diff --git a/sublime/Packages/Default/Default (Linux).sublime-mousemap b/sublime/Packages/Default/Default (Linux).sublime-mousemap
new file mode 100644
index 0000000..44bed1f
--- /dev/null
+++ b/sublime/Packages/Default/Default (Linux).sublime-mousemap
@@ -0,0 +1,100 @@
+[
+ // Basic drag select
+ {
+ "button": "button1", "count": 1,
+ "press_command": "drag_select"
+ },
+ {
+ "button": "button1", "count": 1, "modifiers": ["ctrl"],
+ "press_command": "drag_select",
+ "press_args": {"additive": true}
+ },
+ {
+ "button": "button1", "count": 1, "modifiers": ["alt"],
+ "press_command": "drag_select",
+ "press_args": {"subtractive": true}
+ },
+
+ // Select between selection and click location
+ {
+ "button": "button1", "modifiers": ["shift"],
+ "press_command": "drag_select",
+ "press_args": {"extend": true}
+ },
+ {
+ "button": "button1", "modifiers": ["shift", "ctrl"],
+ "press_command": "drag_select",
+ "press_args": {"additive": true, "extend": true}
+ },
+ {
+ "button": "button1", "modifiers": ["shift", "alt"],
+ "press_command": "drag_select",
+ "press_args": {"subtractive": true, "extend": true}
+ },
+
+ // Drag select by words
+ {
+ "button": "button1", "count": 2,
+ "press_command": "drag_select",
+ "press_args": {"by": "words"}
+ },
+ {
+ "button": "button1", "count": 2, "modifiers": ["ctrl"],
+ "press_command": "drag_select",
+ "press_args": {"by": "words", "additive": true}
+ },
+ {
+ "button": "button1", "count": 2, "modifiers": ["alt"],
+ "press_command": "drag_select",
+ "press_args": {"by": "words", "subtractive": true}
+ },
+
+ // Drag select by lines
+ {
+ "button": "button1", "count": 3,
+ "press_command": "drag_select",
+ "press_args": {"by": "lines"}
+ },
+ {
+ "button": "button1", "count": 3, "modifiers": ["ctrl"],
+ "press_command": "drag_select",
+ "press_args": {"by": "lines", "additive": true}
+ },
+ {
+ "button": "button1", "count": 3, "modifiers": ["alt"],
+ "press_command": "drag_select",
+ "press_args": {"by": "lines", "subtractive": true}
+ },
+
+ // Column select
+ {
+ "button": "button2", "modifiers": ["shift"],
+ "press_command": "drag_select",
+ "press_args": {"by": "columns"}
+ },
+ {
+ "button": "button2", "modifiers": ["shift", "ctrl"],
+ "press_command": "drag_select",
+ "press_args": {"by": "columns", "additive": true}
+ },
+ {
+ "button": "button2", "modifiers": ["shift", "alt"],
+ "press_command": "drag_select",
+ "press_args": {"by": "columns", "subtractive": true}
+ },
+
+ // Middle click paste
+ { "button": "button3", "command": "paste_selection_clipboard" },
+
+ // Switch files with buttons 4 and 5, as well as 8 and 9
+ { "button": "button4", "modifiers": [], "command": "prev_view" },
+ { "button": "button5", "modifiers": [], "command": "next_view" },
+ { "button": "button8", "modifiers": [], "command": "prev_view" },
+ { "button": "button9", "modifiers": [], "command": "next_view" },
+
+ // Change font size with ctrl+scroll wheel
+ { "button": "scroll_down", "modifiers": ["ctrl"], "command": "decrease_font_size" },
+ { "button": "scroll_up", "modifiers": ["ctrl"], "command": "increase_font_size" },
+
+ { "button": "button2", "modifiers": [], "press_command": "context_menu" }
+]
diff --git a/sublime/Packages/Default/Default (OSX).sublime-keymap b/sublime/Packages/Default/Default (OSX).sublime-keymap
new file mode 100644
index 0000000..52cecb5
--- /dev/null
+++ b/sublime/Packages/Default/Default (OSX).sublime-keymap
@@ -0,0 +1,624 @@
+/*
+On OS X, basic text manipulations (left, right, command+left, etc) make use of the system key bindings,
+and don't need to be repeated here. Anything listed here will take precedence, however.
+*/
+[
+ { "keys": ["super+shift+n"], "command": "new_window" },
+ { "keys": ["super+shift+w"], "command": "close_window" },
+ { "keys": ["super+o"], "command": "prompt_open" },
+ { "keys": ["super+shift+t"], "command": "reopen_last_file" },
+ { "keys": ["super+alt+up"], "command": "switch_file", "args": {"extensions": ["cpp", "cxx", "cc", "c", "hpp", "hxx", "h", "ipp", "inl", "m", "mm"]} },
+ { "keys": ["super+n"], "command": "new_file" },
+ { "keys": ["super+s"], "command": "save" },
+ { "keys": ["super+shift+s"], "command": "prompt_save_as" },
+ { "keys": ["super+alt+s"], "command": "save_all" },
+ { "keys": ["super+w"], "command": "close" },
+
+ { "keys": ["super+k", "super+b"], "command": "toggle_side_bar" },
+ { "keys": ["super+ctrl+f"], "command": "toggle_full_screen" },
+ { "keys": ["super+ctrl+shift+f"], "command": "toggle_distraction_free" },
+
+ { "keys": ["super+z"], "command": "undo" },
+ { "keys": ["super+shift+z"], "command": "redo" },
+ { "keys": ["super+y"], "command": "redo_or_repeat" },
+ { "keys": ["super+u"], "command": "soft_undo" },
+ { "keys": ["super+shift+u"], "command": "soft_redo" },
+
+ { "keys": ["super+x"], "command": "cut" },
+ { "keys": ["super+c"], "command": "copy" },
+ { "keys": ["super+v"], "command": "paste" },
+ { "keys": ["super+shift+v"], "command": "paste_and_indent" },
+
+ { "keys": ["ctrl+alt+left"], "command": "move", "args": {"by": "subwords", "forward": false} },
+ { "keys": ["ctrl+alt+right"], "command": "move", "args": {"by": "subword_ends", "forward": true} },
+ { "keys": ["ctrl+alt+shift+left"], "command": "move", "args": {"by": "subwords", "forward": false, "extend": true} },
+ { "keys": ["ctrl+alt+shift+right"], "command": "move", "args": {"by": "subword_ends", "forward": true, "extend": true} },
+
+ { "keys": ["ctrl+left"], "command": "move", "args": {"by": "subwords", "forward": false} },
+ { "keys": ["ctrl+right"], "command": "move", "args": {"by": "subword_ends", "forward": true} },
+ { "keys": ["ctrl+shift+left"], "command": "move", "args": {"by": "subwords", "forward": false, "extend": true} },
+ { "keys": ["ctrl+shift+right"], "command": "move", "args": {"by": "subword_ends", "forward": true, "extend": true} },
+
+ { "keys": ["ctrl+alt+up"], "command": "scroll_lines", "args": {"amount": 1.0} },
+ { "keys": ["ctrl+alt+down"], "command": "scroll_lines", "args": {"amount": -1.0} },
+
+ { "keys": ["ctrl+shift+up"], "command": "select_lines", "args": {"forward": false} },
+ { "keys": ["ctrl+shift+down"], "command": "select_lines", "args": {"forward": true} },
+
+ { "keys": ["super+shift+["], "command": "prev_view" },
+ { "keys": ["super+shift+]"], "command": "next_view" },
+ { "keys": ["super+alt+left"], "command": "prev_view" },
+ { "keys": ["super+alt+right"], "command": "next_view" },
+
+ { "keys": ["ctrl+tab"], "command": "next_view_in_stack" },
+ { "keys": ["ctrl+shift+tab"], "command": "prev_view_in_stack" },
+
+ { "keys": ["super+a"], "command": "select_all" },
+ { "keys": ["super+shift+l"], "command": "split_selection_into_lines" },
+ { "keys": ["escape"], "command": "single_selection", "context":
+ [
+ { "key": "num_selections", "operator": "not_equal", "operand": 1 }
+ ]
+ },
+ { "keys": ["escape"], "command": "clear_fields", "context":
+ [
+ { "key": "has_next_field", "operator": "equal", "operand": true }
+ ]
+ },
+ { "keys": ["escape"], "command": "clear_fields", "context":
+ [
+ { "key": "has_prev_field", "operator": "equal", "operand": true }
+ ]
+ },
+ { "keys": ["escape"], "command": "hide_panel", "args": {"cancel": true},
+ "context":
+ [
+ { "key": "panel_visible", "operator": "equal", "operand": true }
+ ]
+ },
+ { "keys": ["escape"], "command": "hide_overlay", "context":
+ [
+ { "key": "overlay_visible", "operator": "equal", "operand": true }
+ ]
+ },
+ { "keys": ["escape"], "command": "hide_auto_complete", "context":
+ [
+ { "key": "auto_complete_visible", "operator": "equal", "operand": true }
+ ]
+ },
+
+ { "keys": ["super+]"], "command": "indent" },
+ { "keys": ["super+["], "command": "unindent" },
+
+ { "keys": ["tab"], "command": "insert_best_completion", "args": {"default": "\t", "exact": true} },
+ { "keys": ["tab"], "command": "insert_best_completion", "args": {"default": "\t", "exact": false},
+ "context":
+ [
+ { "key": "setting.tab_completion", "operator": "equal", "operand": true }
+ ]
+ },
+ { "keys": ["tab"], "command": "replace_completion_with_next_completion", "context":
+ [
+ { "key": "last_command", "operator": "equal", "operand": "insert_best_completion" },
+ { "key": "setting.tab_completion", "operator": "equal", "operand": true }
+ ]
+ },
+ { "keys": ["tab"], "command": "reindent", "context":
+ [
+ { "key": "setting.auto_indent", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "preceding_text", "operator": "regex_match", "operand": "^$", "match_all": true },
+ { "key": "following_text", "operator": "regex_match", "operand": "^$", "match_all": true }
+ ]
+ },
+ { "keys": ["tab"], "command": "indent", "context":
+ [
+ { "key": "text", "operator": "regex_contains", "operand": "\n" }
+ ]
+ },
+ { "keys": ["tab"], "command": "next_field", "context":
+ [
+ { "key": "has_next_field", "operator": "equal", "operand": true }
+ ]
+ },
+ { "keys": ["tab"], "command": "commit_completion", "context":
+ [
+ { "key": "auto_complete_visible" },
+ { "key": "setting.auto_complete_commit_on_tab" }
+ ]
+ },
+
+ { "keys": ["shift+tab"], "command": "insert", "args": {"characters": "\t"} },
+ { "keys": ["shift+tab"], "command": "unindent", "context":
+ [
+ { "key": "setting.shift_tab_unindent", "operator": "equal", "operand": true }
+ ]
+ },
+ { "keys": ["shift+tab"], "command": "unindent", "context":
+ [
+ { "key": "preceding_text", "operator": "regex_match", "operand": "^[\t ]*" }
+ ]
+ },
+ { "keys": ["shift+tab"], "command": "unindent", "context":
+ [
+ { "key": "text", "operator": "regex_contains", "operand": "\n" }
+ ]
+ },
+ { "keys": ["shift+tab"], "command": "prev_field", "context":
+ [
+ { "key": "has_prev_field", "operator": "equal", "operand": true }
+ ]
+ },
+
+ { "keys": ["super+l"], "command": "expand_selection", "args": {"to": "line"} },
+ { "keys": ["super+d"], "command": "find_under_expand" },
+ { "keys": ["super+k", "super+d"], "command": "find_under_expand_skip" },
+ { "keys": ["super+shift+space"], "command": "expand_selection", "args": {"to": "scope"} },
+ { "keys": ["ctrl+shift+m"], "command": "expand_selection", "args": {"to": "brackets"} },
+ { "keys": ["ctrl+m"], "command": "move_to", "args": {"to": "brackets"} },
+ { "keys": ["super+shift+j"], "command": "expand_selection", "args": {"to": "indentation"} },
+ { "keys": ["super+shift+a"], "command": "expand_selection", "args": {"to": "tag"} },
+
+ { "keys": ["super+alt+."], "command": "close_tag" },
+
+ { "keys": ["ctrl+q"], "command": "toggle_record_macro" },
+ { "keys": ["ctrl+shift+q"], "command": "run_macro" },
+
+ { "keys": ["super+enter"], "command": "run_macro_file", "args": {"file": "Packages/Default/Add Line.sublime-macro"} },
+ { "keys": ["super+shift+enter"], "command": "run_macro_file", "args": {"file": "Packages/Default/Add Line Before.sublime-macro"} },
+ { "keys": ["enter"], "command": "commit_completion", "context":
+ [
+ { "key": "auto_complete_visible" },
+ { "key": "setting.auto_complete_commit_on_tab", "operand": false }
+ ]
+ },
+
+ { "keys": ["super+t"], "command": "show_overlay", "args": {"overlay": "goto", "show_files": true} },
+ { "keys": ["super+p"], "command": "show_overlay", "args": {"overlay": "goto", "show_files": true} },
+ { "keys": ["super+shift+p"], "command": "show_overlay", "args": {"overlay": "command_palette"} },
+ { "keys": ["super+ctrl+p"], "command": "prompt_select_project" },
+ { "keys": ["super+r"], "command": "show_overlay", "args": {"overlay": "goto", "text": "@"} },
+ { "keys": ["ctrl+g"], "command": "show_overlay", "args": {"overlay": "goto", "text": ":"} },
+
+ { "keys": ["super+i"], "command": "show_panel", "args": {"panel": "incremental_find", "reverse":false} },
+ { "keys": ["super+shift+i"], "command": "show_panel", "args": {"panel": "incremental_find", "reverse":true} },
+ { "keys": ["super+f"], "command": "show_panel", "args": {"panel": "find"} },
+ { "keys": ["super+alt+f"], "command": "show_panel", "args": {"panel": "replace"} },
+ { "keys": ["super+alt+e"], "command": "replace_next" },
+ { "keys": ["super+g"], "command": "find_next" },
+ { "keys": ["super+shift+g"], "command": "find_prev" },
+ { "keys": ["super+e"], "command": "slurp_find_string" },
+ { "keys": ["super+shift+e"], "command": "slurp_replace_string" },
+
+ { "keys": ["alt+super+g"], "command": "find_under" },
+ { "keys": ["shift+alt+super+g"], "command": "find_under_prev" },
+ { "keys": ["ctrl+super+g"], "command": "find_all_under" },
+
+ { "keys": ["super+shift+f"], "command": "show_panel", "args": {"panel": "find_in_files"} },
+ { "keys": ["f4"], "command": "next_result" },
+ { "keys": ["shift+f4"], "command": "prev_result" },
+
+ { "keys": ["f6"], "command": "toggle_setting", "args": {"setting": "spell_check"} },
+ { "keys": ["ctrl+f6"], "command": "next_misspelling" },
+ { "keys": ["ctrl+shift+f6"], "command": "prev_misspelling" },
+
+ { "keys": ["ctrl+super+up"], "command": "swap_line_up" },
+ { "keys": ["ctrl+super+down"], "command": "swap_line_down" },
+
+ { "keys": ["ctrl+backspace"], "command": "delete_word", "args": { "forward": false, "sub_words": true } },
+ { "keys": ["ctrl+delete"], "command": "delete_word", "args": { "forward": true, "sub_words": true } },
+
+ { "keys": ["super+forward_slash"], "command": "toggle_comment", "args": { "block": false } },
+ { "keys": ["super+alt+forward_slash"], "command": "toggle_comment", "args": { "block": true } },
+
+ { "keys": ["super+j"], "command": "join_lines" },
+ { "keys": ["super+shift+d"], "command": "duplicate_line" },
+
+ { "keys": ["ctrl+backquote"], "command": "show_panel", "args": {"panel": "console", "toggle": true} },
+
+ { "keys": ["ctrl+space"], "command": "auto_complete" },
+ { "keys": ["ctrl+space"], "command": "replace_completion_with_auto_complete", "context":
+ [
+ { "key": "last_command", "operator": "equal", "operand": "insert_best_completion" },
+ { "key": "auto_complete_visible", "operator": "equal", "operand": false },
+ { "key": "setting.tab_completion", "operator": "equal", "operand": true }
+ ]
+ },
+
+ { "keys": ["super+alt+p"], "command": "show_scope_name" },
+ { "keys": ["ctrl+shift+p"], "command": "show_scope_name" },
+
+ { "keys": ["f7"], "command": "build" },
+ { "keys": ["super+b"], "command": "build" },
+ { "keys": ["super+shift+b"], "command": "build", "args": {"variant": "Run"} },
+
+ { "keys": ["ctrl+t"], "command": "transpose" },
+
+ { "keys": ["f5"], "command": "sort_lines", "args": {"case_sensitive": false} },
+ { "keys": ["ctrl+f5"], "command": "sort_lines", "args": {"case_sensitive": true} },
+
+ // Auto-pair quotes
+ { "keys": ["\""], "command": "insert_snippet", "args": {"contents": "\"$0\""}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|\\}|>|$)", "match_all": true },
+ { "key": "preceding_text", "operator": "not_regex_contains", "operand": "[\"a-zA-Z0-9_]$", "match_all": true },
+ { "key": "eol_selector", "operator": "not_equal", "operand": "string.quoted.double", "match_all": true }
+ ]
+ },
+ { "keys": ["\""], "command": "insert_snippet", "args": {"contents": "\"${0:$SELECTION}\""}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true }
+ ]
+ },
+ { "keys": ["\""], "command": "move", "args": {"by": "characters", "forward": true}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^\"", "match_all": true }
+ ]
+ },
+ { "keys": ["backspace"], "command": "run_macro_file", "args": {"file": "Packages/Default/Delete Left Right.sublime-macro"}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "preceding_text", "operator": "regex_contains", "operand": "\"$", "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^\"", "match_all": true }
+ ]
+ },
+
+ // Auto-pair single quotes
+ { "keys": ["'"], "command": "insert_snippet", "args": {"contents": "'$0'"}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|\\}|>|$)", "match_all": true },
+ { "key": "preceding_text", "operator": "not_regex_contains", "operand": "['a-zA-Z0-9_]$", "match_all": true },
+ { "key": "eol_selector", "operator": "not_equal", "operand": "string.quoted.single", "match_all": true }
+ ]
+ },
+ { "keys": ["'"], "command": "insert_snippet", "args": {"contents": "'${0:$SELECTION}'"}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true }
+ ]
+ },
+ { "keys": ["'"], "command": "move", "args": {"by": "characters", "forward": true}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^'", "match_all": true }
+ ]
+ },
+ { "keys": ["backspace"], "command": "run_macro_file", "args": {"file": "Packages/Default/Delete Left Right.sublime-macro"}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "preceding_text", "operator": "regex_contains", "operand": "'$", "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^'", "match_all": true }
+ ]
+ },
+
+ // Auto-pair brackets
+ { "keys": ["("], "command": "insert_snippet", "args": {"contents": "($0)"}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|;|\\}|$)", "match_all": true }
+ ]
+ },
+ { "keys": ["("], "command": "insert_snippet", "args": {"contents": "(${0:$SELECTION})"}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true }
+ ]
+ },
+ { "keys": [")"], "command": "move", "args": {"by": "characters", "forward": true}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^\\)", "match_all": true }
+ ]
+ },
+ { "keys": ["backspace"], "command": "run_macro_file", "args": {"file": "Packages/Default/Delete Left Right.sublime-macro"}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "preceding_text", "operator": "regex_contains", "operand": "\\($", "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^\\)", "match_all": true }
+ ]
+ },
+
+ // Auto-pair square brackets
+ { "keys": ["["], "command": "insert_snippet", "args": {"contents": "[$0]"}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|;|\\}|$)", "match_all": true }
+ ]
+ },
+ { "keys": ["["], "command": "insert_snippet", "args": {"contents": "[${0:$SELECTION}]"}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true }
+ ]
+ },
+ { "keys": ["]"], "command": "move", "args": {"by": "characters", "forward": true}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^\\]", "match_all": true }
+ ]
+ },
+ { "keys": ["backspace"], "command": "run_macro_file", "args": {"file": "Packages/Default/Delete Left Right.sublime-macro"}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "preceding_text", "operator": "regex_contains", "operand": "\\[$", "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^\\]", "match_all": true }
+ ]
+ },
+
+ // Auto-pair curly brackets
+ { "keys": ["{"], "command": "insert_snippet", "args": {"contents": "{$0}"}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|\\}|$)", "match_all": true }
+ ]
+ },
+ { "keys": ["{"], "command": "insert_snippet", "args": {"contents": "{${0:$SELECTION}}"}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true }
+ ]
+ },
+ { "keys": ["}"], "command": "move", "args": {"by": "characters", "forward": true}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^\\}", "match_all": true }
+ ]
+ },
+ { "keys": ["backspace"], "command": "run_macro_file", "args": {"file": "Packages/Default/Delete Left Right.sublime-macro"}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "preceding_text", "operator": "regex_contains", "operand": "\\{$", "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^\\}", "match_all": true }
+ ]
+ },
+
+ { "keys": ["enter"], "command": "run_macro_file", "args": {"file": "Packages/Default/Add Line in Braces.sublime-macro"}, "context":
+ [
+ { "key": "setting.auto_indent", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "preceding_text", "operator": "regex_contains", "operand": "\\{$", "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^\\}", "match_all": true }
+ ]
+ },
+ { "keys": ["shift+enter"], "command": "run_macro_file", "args": {"file": "Packages/Default/Add Line in Braces.sublime-macro"}, "context":
+ [
+ { "key": "setting.auto_indent", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "preceding_text", "operator": "regex_contains", "operand": "\\{$", "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^\\}", "match_all": true }
+ ]
+ },
+
+ {
+ "keys": ["super+alt+1"],
+ "command": "set_layout",
+ "args":
+ {
+ "cols": [0.0, 1.0],
+ "rows": [0.0, 1.0],
+ "cells": [[0, 0, 1, 1]]
+ }
+ },
+ {
+ "keys": ["super+alt+2"],
+ "command": "set_layout",
+ "args":
+ {
+ "cols": [0.0, 0.5, 1.0],
+ "rows": [0.0, 1.0],
+ "cells": [[0, 0, 1, 1], [1, 0, 2, 1]]
+ }
+ },
+ {
+ "keys": ["super+alt+3"],
+ "command": "set_layout",
+ "args":
+ {
+ "cols": [0.0, 0.33, 0.66, 1.0],
+ "rows": [0.0, 1.0],
+ "cells": [[0, 0, 1, 1], [1, 0, 2, 1], [2, 0, 3, 1]]
+ }
+ },
+ {
+ "keys": ["super+alt+4"],
+ "command": "set_layout",
+ "args":
+ {
+ "cols": [0.0, 0.25, 0.5, 0.75, 1.0],
+ "rows": [0.0, 1.0],
+ "cells": [[0, 0, 1, 1], [1, 0, 2, 1], [2, 0, 3, 1], [3, 0, 4, 1]]
+ }
+ },
+ {
+ "keys": ["super+alt+shift+2"],
+ "command": "set_layout",
+ "args":
+ {
+ "cols": [0.0, 1.0],
+ "rows": [0.0, 0.5, 1.0],
+ "cells": [[0, 0, 1, 1], [0, 1, 1, 2]]
+ }
+ },
+ {
+ "keys": ["super+alt+shift+3"],
+ "command": "set_layout",
+ "args":
+ {
+ "cols": [0.0, 1.0],
+ "rows": [0.0, 0.33, 0.66, 1.0],
+ "cells": [[0, 0, 1, 1], [0, 1, 1, 2], [0, 2, 1, 3]]
+ }
+ },
+ {
+ "keys": ["super+alt+5"],
+ "command": "set_layout",
+ "args":
+ {
+ "cols": [0.0, 0.5, 1.0],
+ "rows": [0.0, 0.5, 1.0],
+ "cells":
+ [
+ [0, 0, 1, 1], [1, 0, 2, 1],
+ [0, 1, 1, 2], [1, 1, 2, 2]
+ ]
+ }
+ },
+ { "keys": ["ctrl+1"], "command": "focus_group", "args": { "group": 0 } },
+ { "keys": ["ctrl+2"], "command": "focus_group", "args": { "group": 1 } },
+ { "keys": ["ctrl+3"], "command": "focus_group", "args": { "group": 2 } },
+ { "keys": ["ctrl+4"], "command": "focus_group", "args": { "group": 3 } },
+ { "keys": ["ctrl+shift+1"], "command": "move_to_group", "args": { "group": 0 } },
+ { "keys": ["ctrl+shift+2"], "command": "move_to_group", "args": { "group": 1 } },
+ { "keys": ["ctrl+shift+3"], "command": "move_to_group", "args": { "group": 2 } },
+ { "keys": ["ctrl+shift+4"], "command": "move_to_group", "args": { "group": 3 } },
+ { "keys": ["ctrl+0"], "command": "focus_side_bar" },
+
+ { "keys": ["super+1"], "command": "select_by_index", "args": { "index": 0 } },
+ { "keys": ["super+2"], "command": "select_by_index", "args": { "index": 1 } },
+ { "keys": ["super+3"], "command": "select_by_index", "args": { "index": 2 } },
+ { "keys": ["super+4"], "command": "select_by_index", "args": { "index": 3 } },
+ { "keys": ["super+5"], "command": "select_by_index", "args": { "index": 4 } },
+ { "keys": ["super+6"], "command": "select_by_index", "args": { "index": 5 } },
+ { "keys": ["super+7"], "command": "select_by_index", "args": { "index": 6 } },
+ { "keys": ["super+8"], "command": "select_by_index", "args": { "index": 7 } },
+ { "keys": ["super+9"], "command": "select_by_index", "args": { "index": 8 } },
+ { "keys": ["super+0"], "command": "select_by_index", "args": { "index": 9 } },
+
+ { "keys": ["f2"], "command": "next_bookmark" },
+ { "keys": ["shift+f2"], "command": "prev_bookmark" },
+ { "keys": ["super+f2"], "command": "toggle_bookmark" },
+ { "keys": ["super+shift+f2"], "command": "clear_bookmarks" },
+ { "keys": ["alt+f2"], "command": "select_all_bookmarks" },
+
+ { "keys": ["super+k", "super+u"], "command": "upper_case" },
+ { "keys": ["super+k", "super+l"], "command": "lower_case" },
+ { "keys": ["super+k", "super+space"], "command": "set_mark" },
+ { "keys": ["super+k", "super+a"], "command": "select_to_mark" },
+ { "keys": ["super+k", "super+w"], "command": "delete_to_mark" },
+ { "keys": ["super+k", "super+x"], "command": "swap_with_mark" },
+ { "keys": ["super+k", "super+g"], "command": "clear_bookmarks", "args": {"name": "mark"} },
+
+ { "keys": ["super+plus"], "command": "increase_font_size" },
+ { "keys": ["super+equals"], "command": "increase_font_size" },
+ { "keys": ["super+minus"], "command": "decrease_font_size" },
+
+ { "keys": ["ctrl+shift+w"], "command": "insert_snippet", "args": { "name": "Packages/XML/long-tag.sublime-snippet" } },
+
+ { "keys": ["ctrl+shift+k"], "command": "run_macro_file", "args": {"file": "Packages/Default/Delete Line.sublime-macro"} },
+
+ { "keys": ["super+alt+q"], "command": "wrap_lines" },
+
+ { "keys": ["super+alt+["], "command": "fold" },
+ { "keys": ["super+alt+]"], "command": "unfold" },
+ { "keys": ["super+k", "super+1"], "command": "fold_by_level", "args": {"level": 1} },
+ { "keys": ["super+k", "super+2"], "command": "fold_by_level", "args": {"level": 2} },
+ { "keys": ["super+k", "super+3"], "command": "fold_by_level", "args": {"level": 3} },
+ { "keys": ["super+k", "super+4"], "command": "fold_by_level", "args": {"level": 4} },
+ { "keys": ["super+k", "super+5"], "command": "fold_by_level", "args": {"level": 5} },
+ { "keys": ["super+k", "super+6"], "command": "fold_by_level", "args": {"level": 6} },
+ { "keys": ["super+k", "super+7"], "command": "fold_by_level", "args": {"level": 7} },
+ { "keys": ["super+k", "super+8"], "command": "fold_by_level", "args": {"level": 8} },
+ { "keys": ["super+k", "super+9"], "command": "fold_by_level", "args": {"level": 9} },
+ { "keys": ["super+k", "super+0"], "command": "unfold_all" },
+ { "keys": ["super+k", "super+j"], "command": "unfold_all" },
+ { "keys": ["super+k", "super+t"], "command": "fold_tag_attributes" },
+
+ { "keys": ["super+alt+o"], "command": "toggle_overwrite" },
+
+ { "keys": ["alt+f2"], "command": "context_menu" },
+
+ { "keys": ["super+alt+c"], "command": "toggle_case_sensitive", "context":
+ [
+ { "key": "setting.is_widget", "operator": "equal", "operand": true }
+ ]
+ },
+ { "keys": ["super+alt+r"], "command": "toggle_regex", "context":
+ [
+ { "key": "setting.is_widget", "operator": "equal", "operand": true }
+ ]
+ },
+ { "keys": ["super+alt+w"], "command": "toggle_whole_word", "context":
+ [
+ { "key": "setting.is_widget", "operator": "equal", "operand": true }
+ ]
+ },
+ { "keys": ["super+alt+a"], "command": "toggle_preserve_case", "context":
+ [
+ { "key": "setting.is_widget", "operator": "equal", "operand": true }
+ ]
+ },
+
+ // Find panel key bindings
+ { "keys": ["enter"], "command": "find_next", "context":
+ [{"key": "panel", "operand": "find"}, {"key": "panel_has_focus"}]
+ },
+ { "keys": ["shift+enter"], "command": "find_prev", "context":
+ [{"key": "panel", "operand": "find"}, {"key": "panel_has_focus"}]
+ },
+ { "keys": ["alt+enter"], "command": "find_all", "args": {"close_panel": true},
+ "context": [{"key": "panel", "operand": "find"}, {"key": "panel_has_focus"}]
+ },
+
+ // Replace panel key bindings
+ { "keys": ["enter"], "command": "find_next", "context":
+ [{"key": "panel", "operand": "replace"}, {"key": "panel_has_focus"}]
+ },
+ { "keys": ["shift+enter"], "command": "find_prev", "context":
+ [{"key": "panel", "operand": "replace"}, {"key": "panel_has_focus"}]
+ },
+ { "keys": ["alt+enter"], "command": "find_all", "args": {"close_panel": true},
+ "context": [{"key": "panel", "operand": "replace"}, {"key": "panel_has_focus"}]
+ },
+ { "keys": ["ctrl+alt+enter"], "command": "replace_all", "args": {"close_panel": true},
+ "context": [{"key": "panel", "operand": "replace"}, {"key": "panel_has_focus"}]
+ },
+
+ // Incremental find panel key bindings
+ { "keys": ["enter"], "command": "hide_panel", "context":
+ [{"key": "panel", "operand": "incremental_find"}, {"key": "panel_has_focus"}]
+ },
+ { "keys": ["shift+enter"], "command": "find_prev", "context":
+ [{"key": "panel", "operand": "incremental_find"}, {"key": "panel_has_focus"}]
+ },
+ { "keys": ["alt+enter"], "command": "find_all", "args": {"close_panel": true},
+ "context": [{"key": "panel", "operand": "incremental_find"}, {"key": "panel_has_focus"}]
+ },
+
+ { "keys": ["super+,"], "command": "open_file", "args": {"file": "${packages}/User/Preferences.sublime-settings"} },
+
+ { "keys": ["super+k", "super+y"], "command": "yank" },
+ { "keys": ["super+k", "super+k"], "command": "run_macro_file", "args": {"file": "Packages/Default/Delete to Hard EOL.sublime-macro"} },
+ { "keys": ["super+k", "super+backspace"], "command": "run_macro_file", "args": {"file": "Packages/Default/Delete to Hard BOL.sublime-macro"} },
+ { "keys": ["super+k", "super+c"], "command": "show_at_center" },
+
+ // These are OS X built in commands, and don't need to be listed here, but
+ // doing so lets them show up in the menu
+ { "keys": ["ctrl+y"], "command": "yank" },
+ { "keys": ["super+backspace"], "command": "run_macro_file", "args": {"file": "Packages/Default/Delete to Hard BOL.sublime-macro"} },
+ // super+delete isn't a built in command, but makes sense anyway
+ { "keys": ["super+delete"], "command": "run_macro_file", "args": {"file": "Packages/Default/Delete to Hard EOL.sublime-macro"} },
+ { "keys": ["ctrl+k"], "command": "run_macro_file", "args": {"file": "Packages/Default/Delete to Hard EOL.sublime-macro"} },
+ { "keys": ["ctrl+l"], "command": "show_at_center" },
+ { "keys": ["ctrl+o"], "command": "insert_snippet", "args": { "contents": "$0\n" } },
+ { "keys": ["ctrl+super+d"], "command": "noop" },
+ { "keys": ["ctrl+super+shift+d"], "command": "noop" }
+]
diff --git a/sublime/Packages/Default/Default (OSX).sublime-mousemap b/sublime/Packages/Default/Default (OSX).sublime-mousemap
new file mode 100644
index 0000000..d08b14d
--- /dev/null
+++ b/sublime/Packages/Default/Default (OSX).sublime-mousemap
@@ -0,0 +1,98 @@
+[
+ // Basic drag select
+ {
+ "button": "button1", "count": 1,
+ "press_command": "drag_select"
+ },
+ {
+ // Select between selection and click location
+ "button": "button1", "modifiers": ["shift"],
+ "press_command": "drag_select",
+ "press_args": {"extend": true}
+ },
+ {
+ "button": "button1", "count": 1, "modifiers": ["super"],
+ "press_command": "drag_select",
+ "press_args": {"additive": true}
+ },
+ {
+ "button": "button1", "count": 1, "modifiers": ["shift", "super"],
+ "press_command": "drag_select",
+ "press_args": {"subtractive": true}
+ },
+
+ // Drag select by words
+ {
+ "button": "button1", "count": 2,
+ "press_command": "drag_select",
+ "press_args": {"by": "words"}
+ },
+ {
+ "button": "button1", "count": 2, "modifiers": ["super"],
+ "press_command": "drag_select",
+ "press_args": {"by": "words", "additive": true}
+ },
+ {
+ "button": "button1", "count": 2, "modifiers": ["shift", "super"],
+ "press_command": "drag_select",
+ "press_args": {"by": "words", "subtractive": true}
+ },
+
+ // Drag select by lines
+ {
+ "button": "button1", "count": 3,
+ "press_command": "drag_select",
+ "press_args": {"by": "lines"}
+ },
+ {
+ "button": "button1", "count": 3, "modifiers": ["super"],
+ "press_command": "drag_select",
+ "press_args": {"by": "lines", "additive": true}
+ },
+ {
+ "button": "button1", "count": 3, "modifiers": ["shift", "super"],
+ "press_command": "drag_select",
+ "press_args": {"by": "lines", "subtractive": true}
+ },
+
+ // Alt + Mouse 1 Column select
+ {
+ "button": "button1", "modifiers": ["alt"],
+ "press_command": "drag_select",
+ "press_args": {"by": "columns"}
+ },
+ {
+ "button": "button1", "modifiers": ["alt", "super"],
+ "press_command": "drag_select",
+ "press_args": {"by": "columns", "additive": true}
+ },
+ {
+ "button": "button1", "modifiers": ["alt", "shift", "super"],
+ "press_command": "drag_select",
+ "press_args": {"by": "columns", "subtractive": true}
+ },
+
+ // Mouse 3 column select
+ {
+ "button": "button3",
+ "press_command": "drag_select",
+ "press_args": {"by": "columns"}
+ },
+ {
+ "button": "button3", "modifiers": ["super"],
+ "press_command": "drag_select",
+ "press_args": {"by": "columns", "additive": true}
+ },
+ {
+ "button": "button3", "modifiers": ["shift", "super"],
+ "press_command": "drag_select",
+ "press_args": {"by": "columns", "subtractive": true}
+ },
+
+ // Switch files with buttons 4 and 5
+ { "button": "button4", "modifiers": [], "command": "prev_view" },
+ { "button": "button5", "modifiers": [], "command": "next_view" },
+
+ { "button": "button2", "modifiers": [], "press_command": "context_menu" },
+ { "button": "button1", "count": 1, "modifiers": ["ctrl"], "press_command": "context_menu" }
+]
diff --git a/sublime/Packages/Default/Default (Windows).sublime-keymap b/sublime/Packages/Default/Default (Windows).sublime-keymap
new file mode 100644
index 0000000..5bde08e
--- /dev/null
+++ b/sublime/Packages/Default/Default (Windows).sublime-keymap
@@ -0,0 +1,641 @@
+[
+ { "keys": ["ctrl+shift+n"], "command": "new_window" },
+ { "keys": ["ctrl+shift+w"], "command": "close_window" },
+ { "keys": ["ctrl+o"], "command": "prompt_open_file" },
+ { "keys": ["ctrl+shift+t"], "command": "reopen_last_file" },
+ { "keys": ["alt+o"], "command": "switch_file", "args": {"extensions": ["cpp", "cxx", "cc", "c", "hpp", "hxx", "h", "ipp", "inl", "m", "mm"]} },
+ { "keys": ["ctrl+n"], "command": "new_file" },
+ { "keys": ["ctrl+s"], "command": "save" },
+ { "keys": ["ctrl+shift+s"], "command": "prompt_save_as" },
+ { "keys": ["ctrl+f4"], "command": "close_file" },
+ { "keys": ["ctrl+w"], "command": "close" },
+
+ { "keys": ["ctrl+k", "ctrl+b"], "command": "toggle_side_bar" },
+ { "keys": ["f11"], "command": "toggle_full_screen" },
+ { "keys": ["shift+f11"], "command": "toggle_distraction_free" },
+
+ { "keys": ["backspace"], "command": "left_delete" },
+ { "keys": ["shift+backspace"], "command": "left_delete" },
+ { "keys": ["ctrl+shift+backspace"], "command": "left_delete" },
+ { "keys": ["delete"], "command": "right_delete" },
+ { "keys": ["enter"], "command": "insert", "args": {"characters": "\n"} },
+ { "keys": ["shift+enter"], "command": "insert", "args": {"characters": "\n"} },
+
+ { "keys": ["ctrl+z"], "command": "undo" },
+ { "keys": ["ctrl+shift+z"], "command": "redo" },
+ { "keys": ["ctrl+y"], "command": "redo_or_repeat" },
+ { "keys": ["ctrl+u"], "command": "soft_undo" },
+ { "keys": ["ctrl+shift+u"], "command": "soft_redo" },
+
+ { "keys": ["ctrl+shift+v"], "command": "paste_and_indent" },
+ { "keys": ["shift+delete"], "command": "cut" },
+ { "keys": ["ctrl+insert"], "command": "copy" },
+ { "keys": ["shift+insert"], "command": "paste" },
+ { "keys": ["ctrl+x"], "command": "cut" },
+ { "keys": ["ctrl+c"], "command": "copy" },
+ { "keys": ["ctrl+v"], "command": "paste" },
+
+ { "keys": ["left"], "command": "move", "args": {"by": "characters", "forward": false} },
+ { "keys": ["right"], "command": "move", "args": {"by": "characters", "forward": true} },
+ { "keys": ["up"], "command": "move", "args": {"by": "lines", "forward": false} },
+ { "keys": ["down"], "command": "move", "args": {"by": "lines", "forward": true} },
+ { "keys": ["shift+left"], "command": "move", "args": {"by": "characters", "forward": false, "extend": true} },
+ { "keys": ["shift+right"], "command": "move", "args": {"by": "characters", "forward": true, "extend": true} },
+ { "keys": ["shift+up"], "command": "move", "args": {"by": "lines", "forward": false, "extend": true} },
+ { "keys": ["shift+down"], "command": "move", "args": {"by": "lines", "forward": true, "extend": true} },
+
+ { "keys": ["ctrl+left"], "command": "move", "args": {"by": "words", "forward": false} },
+ { "keys": ["ctrl+right"], "command": "move", "args": {"by": "word_ends", "forward": true} },
+ { "keys": ["ctrl+shift+left"], "command": "move", "args": {"by": "words", "forward": false, "extend": true} },
+ { "keys": ["ctrl+shift+right"], "command": "move", "args": {"by": "word_ends", "forward": true, "extend": true} },
+
+ { "keys": ["alt+left"], "command": "move", "args": {"by": "subwords", "forward": false} },
+ { "keys": ["alt+right"], "command": "move", "args": {"by": "subword_ends", "forward": true} },
+ { "keys": ["alt+shift+left"], "command": "move", "args": {"by": "subwords", "forward": false, "extend": true} },
+ { "keys": ["alt+shift+right"], "command": "move", "args": {"by": "subword_ends", "forward": true, "extend": true} },
+
+ { "keys": ["ctrl+alt+up"], "command": "select_lines", "args": {"forward": false} },
+ { "keys": ["ctrl+alt+down"], "command": "select_lines", "args": {"forward": true} },
+
+ { "keys": ["pageup"], "command": "move", "args": {"by": "pages", "forward": false} },
+ { "keys": ["pagedown"], "command": "move", "args": {"by": "pages", "forward": true} },
+ { "keys": ["shift+pageup"], "command": "move", "args": {"by": "pages", "forward": false, "extend": true} },
+ { "keys": ["shift+pagedown"], "command": "move", "args": {"by": "pages", "forward": true, "extend": true} },
+
+ { "keys": ["home"], "command": "move_to", "args": {"to": "bol", "extend": false} },
+ { "keys": ["end"], "command": "move_to", "args": {"to": "eol", "extend": false} },
+ { "keys": ["shift+home"], "command": "move_to", "args": {"to": "bol", "extend": true} },
+ { "keys": ["shift+end"], "command": "move_to", "args": {"to": "eol", "extend": true} },
+ { "keys": ["ctrl+home"], "command": "move_to", "args": {"to": "bof", "extend": false} },
+ { "keys": ["ctrl+end"], "command": "move_to", "args": {"to": "eof", "extend": false} },
+ { "keys": ["ctrl+shift+home"], "command": "move_to", "args": {"to": "bof", "extend": true} },
+ { "keys": ["ctrl+shift+end"], "command": "move_to", "args": {"to": "eof", "extend": true} },
+
+
+ { "keys": ["ctrl+up"], "command": "scroll_lines", "args": {"amount": 1.0 } },
+ { "keys": ["ctrl+down"], "command": "scroll_lines", "args": {"amount": -1.0 } },
+
+ { "keys": ["ctrl+pagedown"], "command": "next_view" },
+ { "keys": ["ctrl+pageup"], "command": "prev_view" },
+
+ { "keys": ["ctrl+tab"], "command": "next_view_in_stack" },
+ { "keys": ["ctrl+shift+tab"], "command": "prev_view_in_stack" },
+
+ { "keys": ["ctrl+a"], "command": "select_all" },
+ { "keys": ["ctrl+shift+l"], "command": "split_selection_into_lines" },
+ { "keys": ["escape"], "command": "single_selection", "context":
+ [
+ { "key": "num_selections", "operator": "not_equal", "operand": 1 }
+ ]
+ },
+ { "keys": ["escape"], "command": "clear_fields", "context":
+ [
+ { "key": "has_next_field", "operator": "equal", "operand": true }
+ ]
+ },
+ { "keys": ["escape"], "command": "clear_fields", "context":
+ [
+ { "key": "has_prev_field", "operator": "equal", "operand": true }
+ ]
+ },
+ { "keys": ["escape"], "command": "hide_panel", "args": {"cancel": true},
+ "context":
+ [
+ { "key": "panel_visible", "operator": "equal", "operand": true }
+ ]
+ },
+ { "keys": ["escape"], "command": "hide_overlay", "context":
+ [
+ { "key": "overlay_visible", "operator": "equal", "operand": true }
+ ]
+ },
+ { "keys": ["escape"], "command": "hide_auto_complete", "context":
+ [
+ { "key": "auto_complete_visible", "operator": "equal", "operand": true }
+ ]
+ },
+
+ { "keys": ["tab"], "command": "insert_best_completion", "args": {"default": "\t", "exact": true} },
+ { "keys": ["tab"], "command": "insert_best_completion", "args": {"default": "\t", "exact": false},
+ "context":
+ [
+ { "key": "setting.tab_completion", "operator": "equal", "operand": true }
+ ]
+ },
+ { "keys": ["tab"], "command": "replace_completion_with_next_completion", "context":
+ [
+ { "key": "last_command", "operator": "equal", "operand": "insert_best_completion" },
+ { "key": "setting.tab_completion", "operator": "equal", "operand": true }
+ ]
+ },
+ { "keys": ["tab"], "command": "reindent", "context":
+ [
+ { "key": "setting.auto_indent", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "preceding_text", "operator": "regex_match", "operand": "^$", "match_all": true },
+ { "key": "following_text", "operator": "regex_match", "operand": "^$", "match_all": true }
+ ]
+ },
+ { "keys": ["tab"], "command": "indent", "context":
+ [
+ { "key": "text", "operator": "regex_contains", "operand": "\n" }
+ ]
+ },
+ { "keys": ["tab"], "command": "next_field", "context":
+ [
+ { "key": "has_next_field", "operator": "equal", "operand": true }
+ ]
+ },
+ { "keys": ["tab"], "command": "commit_completion", "context":
+ [
+ { "key": "auto_complete_visible" },
+ { "key": "setting.auto_complete_commit_on_tab" }
+ ]
+ },
+
+ { "keys": ["shift+tab"], "command": "insert", "args": {"characters": "\t"} },
+ { "keys": ["shift+tab"], "command": "unindent", "context":
+ [
+ { "key": "setting.shift_tab_unindent", "operator": "equal", "operand": true }
+ ]
+ },
+ { "keys": ["shift+tab"], "command": "unindent", "context":
+ [
+ { "key": "preceding_text", "operator": "regex_match", "operand": "^[\t ]*" }
+ ]
+ },
+ { "keys": ["shift+tab"], "command": "unindent", "context":
+ [
+ { "key": "text", "operator": "regex_contains", "operand": "\n" }
+ ]
+ },
+ { "keys": ["shift+tab"], "command": "prev_field", "context":
+ [
+ { "key": "has_prev_field", "operator": "equal", "operand": true }
+ ]
+ },
+
+ { "keys": ["ctrl+]"], "command": "indent" },
+ { "keys": ["ctrl+["], "command": "unindent" },
+
+ { "keys": ["insert"], "command": "toggle_overwrite" },
+
+ { "keys": ["ctrl+l"], "command": "expand_selection", "args": {"to": "line"} },
+ { "keys": ["ctrl+d"], "command": "find_under_expand" },
+ { "keys": ["ctrl+k", "ctrl+d"], "command": "find_under_expand_skip" },
+ { "keys": ["ctrl+shift+space"], "command": "expand_selection", "args": {"to": "scope"} },
+ { "keys": ["ctrl+shift+m"], "command": "expand_selection", "args": {"to": "brackets"} },
+ { "keys": ["ctrl+m"], "command": "move_to", "args": {"to": "brackets"} },
+ { "keys": ["ctrl+shift+j"], "command": "expand_selection", "args": {"to": "indentation"} },
+ { "keys": ["ctrl+shift+a"], "command": "expand_selection", "args": {"to": "tag"} },
+
+ { "keys": ["alt+."], "command": "close_tag" },
+
+ { "keys": ["ctrl+q"], "command": "toggle_record_macro" },
+ { "keys": ["ctrl+shift+q"], "command": "run_macro" },
+
+ { "keys": ["ctrl+enter"], "command": "run_macro_file", "args": {"file": "Packages/Default/Add Line.sublime-macro"} },
+ { "keys": ["ctrl+shift+enter"], "command": "run_macro_file", "args": {"file": "Packages/Default/Add Line Before.sublime-macro"} },
+ { "keys": ["enter"], "command": "commit_completion", "context":
+ [
+ { "key": "auto_complete_visible" },
+ { "key": "setting.auto_complete_commit_on_tab", "operand": false }
+ ]
+ },
+
+ { "keys": ["ctrl+p"], "command": "show_overlay", "args": {"overlay": "goto", "show_files": true} },
+ { "keys": ["ctrl+shift+p"], "command": "show_overlay", "args": {"overlay": "command_palette"} },
+ { "keys": ["ctrl+alt+p"], "command": "prompt_select_project" },
+ { "keys": ["ctrl+r"], "command": "show_overlay", "args": {"overlay": "goto", "text": "@"} },
+ { "keys": ["ctrl+g"], "command": "show_overlay", "args": {"overlay": "goto", "text": ":"} },
+ { "keys": ["ctrl+;"], "command": "show_overlay", "args": {"overlay": "goto", "text": "#"} },
+
+ { "keys": ["ctrl+i"], "command": "show_panel", "args": {"panel": "incremental_find", "reverse":false} },
+ { "keys": ["ctrl+shift+i"], "command": "show_panel", "args": {"panel": "incremental_find", "reverse":true} },
+ { "keys": ["ctrl+f"], "command": "show_panel", "args": {"panel": "find"} },
+ { "keys": ["ctrl+h"], "command": "show_panel", "args": {"panel": "replace"} },
+ { "keys": ["ctrl+shift+h"], "command": "replace_next" },
+ { "keys": ["f3"], "command": "find_next" },
+ { "keys": ["shift+f3"], "command": "find_prev" },
+ { "keys": ["ctrl+f3"], "command": "find_under" },
+ { "keys": ["ctrl+shift+f3"], "command": "find_under_prev" },
+ { "keys": ["alt+f3"], "command": "find_all_under" },
+ { "keys": ["ctrl+e"], "command": "slurp_find_string" },
+ { "keys": ["ctrl+shift+e"], "command": "slurp_replace_string" },
+ { "keys": ["ctrl+shift+f"], "command": "show_panel", "args": {"panel": "find_in_files"} },
+ { "keys": ["f4"], "command": "next_result" },
+ { "keys": ["shift+f4"], "command": "prev_result" },
+
+ { "keys": ["f6"], "command": "toggle_setting", "args": {"setting": "spell_check"} },
+ { "keys": ["ctrl+f6"], "command": "next_misspelling" },
+ { "keys": ["ctrl+shift+f6"], "command": "prev_misspelling" },
+
+ { "keys": ["ctrl+shift+up"], "command": "swap_line_up" },
+ { "keys": ["ctrl+shift+down"], "command": "swap_line_down" },
+
+ { "keys": ["ctrl+backspace"], "command": "delete_word", "args": { "forward": false } },
+ { "keys": ["ctrl+shift+backspace"], "command": "run_macro_file", "args": {"file": "Packages/Default/Delete to Hard BOL.sublime-macro"} },
+
+ { "keys": ["ctrl+delete"], "command": "delete_word", "args": { "forward": true } },
+ { "keys": ["ctrl+shift+delete"], "command": "run_macro_file", "args": {"file": "Packages/Default/Delete to Hard EOL.sublime-macro"} },
+
+ { "keys": ["ctrl+/"], "command": "toggle_comment", "args": { "block": false } },
+ { "keys": ["ctrl+shift+/"], "command": "toggle_comment", "args": { "block": true } },
+
+ { "keys": ["ctrl+j"], "command": "join_lines" },
+ { "keys": ["ctrl+shift+d"], "command": "duplicate_line" },
+
+ { "keys": ["ctrl+`"], "command": "show_panel", "args": {"panel": "console", "toggle": true} },
+
+ { "keys": ["ctrl+space"], "command": "auto_complete" },
+ { "keys": ["ctrl+space"], "command": "replace_completion_with_auto_complete", "context":
+ [
+ { "key": "last_command", "operator": "equal", "operand": "insert_best_completion" },
+ { "key": "auto_complete_visible", "operator": "equal", "operand": false },
+ { "key": "setting.tab_completion", "operator": "equal", "operand": true }
+ ]
+ },
+
+ { "keys": ["ctrl+alt+shift+p"], "command": "show_scope_name" },
+
+ { "keys": ["f7"], "command": "build" },
+ { "keys": ["ctrl+b"], "command": "build" },
+ { "keys": ["ctrl+shift+b"], "command": "build", "args": {"variant": "Run"} },
+ { "keys": ["ctrl+break"], "command": "exec", "args": {"kill": true} },
+
+ { "keys": ["ctrl+t"], "command": "transpose" },
+
+ { "keys": ["f9"], "command": "sort_lines", "args": {"case_sensitive": false} },
+ { "keys": ["ctrl+f9"], "command": "sort_lines", "args": {"case_sensitive": true} },
+
+ // Auto-pair quotes
+ { "keys": ["\""], "command": "insert_snippet", "args": {"contents": "\"$0\""}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|\\}|>|$)", "match_all": true },
+ { "key": "preceding_text", "operator": "not_regex_contains", "operand": "[\"a-zA-Z0-9_]$", "match_all": true },
+ { "key": "eol_selector", "operator": "not_equal", "operand": "string.quoted.double", "match_all": true }
+ ]
+ },
+ { "keys": ["\""], "command": "insert_snippet", "args": {"contents": "\"${0:$SELECTION}\""}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true }
+ ]
+ },
+ { "keys": ["\""], "command": "move", "args": {"by": "characters", "forward": true}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^\"", "match_all": true }
+ ]
+ },
+ { "keys": ["backspace"], "command": "run_macro_file", "args": {"file": "Packages/Default/Delete Left Right.sublime-macro"}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "preceding_text", "operator": "regex_contains", "operand": "\"$", "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^\"", "match_all": true }
+ ]
+ },
+
+ // Auto-pair single quotes
+ { "keys": ["'"], "command": "insert_snippet", "args": {"contents": "'$0'"}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|\\}|>|$)", "match_all": true },
+ { "key": "preceding_text", "operator": "not_regex_contains", "operand": "['a-zA-Z0-9_]$", "match_all": true },
+ { "key": "eol_selector", "operator": "not_equal", "operand": "string.quoted.single", "match_all": true }
+ ]
+ },
+ { "keys": ["'"], "command": "insert_snippet", "args": {"contents": "'${0:$SELECTION}'"}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true }
+ ]
+ },
+ { "keys": ["'"], "command": "move", "args": {"by": "characters", "forward": true}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^'", "match_all": true }
+ ]
+ },
+ { "keys": ["backspace"], "command": "run_macro_file", "args": {"file": "Packages/Default/Delete Left Right.sublime-macro"}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "preceding_text", "operator": "regex_contains", "operand": "'$", "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^'", "match_all": true }
+ ]
+ },
+
+ // Auto-pair brackets
+ { "keys": ["("], "command": "insert_snippet", "args": {"contents": "($0)"}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|;|\\}|$)", "match_all": true }
+ ]
+ },
+ { "keys": ["("], "command": "insert_snippet", "args": {"contents": "(${0:$SELECTION})"}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true }
+ ]
+ },
+ { "keys": [")"], "command": "move", "args": {"by": "characters", "forward": true}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^\\)", "match_all": true }
+ ]
+ },
+ { "keys": ["backspace"], "command": "run_macro_file", "args": {"file": "Packages/Default/Delete Left Right.sublime-macro"}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "preceding_text", "operator": "regex_contains", "operand": "\\($", "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^\\)", "match_all": true }
+ ]
+ },
+
+ // Auto-pair square brackets
+ { "keys": ["["], "command": "insert_snippet", "args": {"contents": "[$0]"}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|;|\\}|$)", "match_all": true }
+ ]
+ },
+ { "keys": ["["], "command": "insert_snippet", "args": {"contents": "[${0:$SELECTION}]"}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true }
+ ]
+ },
+ { "keys": ["]"], "command": "move", "args": {"by": "characters", "forward": true}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^\\]", "match_all": true }
+ ]
+ },
+ { "keys": ["backspace"], "command": "run_macro_file", "args": {"file": "Packages/Default/Delete Left Right.sublime-macro"}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "preceding_text", "operator": "regex_contains", "operand": "\\[$", "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^\\]", "match_all": true }
+ ]
+ },
+
+ // Auto-pair curly brackets
+ { "keys": ["{"], "command": "insert_snippet", "args": {"contents": "{$0}"}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|\\}|$)", "match_all": true }
+ ]
+ },
+ { "keys": ["{"], "command": "insert_snippet", "args": {"contents": "{${0:$SELECTION}}"}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true }
+ ]
+ },
+ { "keys": ["}"], "command": "move", "args": {"by": "characters", "forward": true}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^\\}", "match_all": true }
+ ]
+ },
+ { "keys": ["backspace"], "command": "run_macro_file", "args": {"file": "Packages/Default/Delete Left Right.sublime-macro"}, "context":
+ [
+ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "preceding_text", "operator": "regex_contains", "operand": "\\{$", "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^\\}", "match_all": true }
+ ]
+ },
+
+ { "keys": ["enter"], "command": "run_macro_file", "args": {"file": "Packages/Default/Add Line in Braces.sublime-macro"}, "context":
+ [
+ { "key": "setting.auto_indent", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "preceding_text", "operator": "regex_contains", "operand": "\\{$", "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^\\}", "match_all": true }
+ ]
+ },
+ { "keys": ["shift+enter"], "command": "run_macro_file", "args": {"file": "Packages/Default/Add Line in Braces.sublime-macro"}, "context":
+ [
+ { "key": "setting.auto_indent", "operator": "equal", "operand": true },
+ { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
+ { "key": "preceding_text", "operator": "regex_contains", "operand": "\\{$", "match_all": true },
+ { "key": "following_text", "operator": "regex_contains", "operand": "^\\}", "match_all": true }
+ ]
+ },
+
+ {
+ "keys": ["alt+shift+1"],
+ "command": "set_layout",
+ "args":
+ {
+ "cols": [0.0, 1.0],
+ "rows": [0.0, 1.0],
+ "cells": [[0, 0, 1, 1]]
+ }
+ },
+ {
+ "keys": ["alt+shift+2"],
+ "command": "set_layout",
+ "args":
+ {
+ "cols": [0.0, 0.5, 1.0],
+ "rows": [0.0, 1.0],
+ "cells": [[0, 0, 1, 1], [1, 0, 2, 1]]
+ }
+ },
+ {
+ "keys": ["alt+shift+3"],
+ "command": "set_layout",
+ "args":
+ {
+ "cols": [0.0, 0.33, 0.66, 1.0],
+ "rows": [0.0, 1.0],
+ "cells": [[0, 0, 1, 1], [1, 0, 2, 1], [2, 0, 3, 1]]
+ }
+ },
+ {
+ "keys": ["alt+shift+4"],
+ "command": "set_layout",
+ "args":
+ {
+ "cols": [0.0, 0.25, 0.5, 0.75, 1.0],
+ "rows": [0.0, 1.0],
+ "cells": [[0, 0, 1, 1], [1, 0, 2, 1], [2, 0, 3, 1], [3, 0, 4, 1]]
+ }
+ },
+ {
+ "keys": ["alt+shift+8"],
+ "command": "set_layout",
+ "args":
+ {
+ "cols": [0.0, 1.0],
+ "rows": [0.0, 0.5, 1.0],
+ "cells": [[0, 0, 1, 1], [0, 1, 1, 2]]
+ }
+ },
+ {
+ "keys": ["alt+shift+9"],
+ "command": "set_layout",
+ "args":
+ {
+ "cols": [0.0, 1.0],
+ "rows": [0.0, 0.33, 0.66, 1.0],
+ "cells": [[0, 0, 1, 1], [0, 1, 1, 2], [0, 2, 1, 3]]
+ }
+ },
+ {
+ "keys": ["alt+shift+5"],
+ "command": "set_layout",
+ "args":
+ {
+ "cols": [0.0, 0.5, 1.0],
+ "rows": [0.0, 0.5, 1.0],
+ "cells":
+ [
+ [0, 0, 1, 1], [1, 0, 2, 1],
+ [0, 1, 1, 2], [1, 1, 2, 2]
+ ]
+ }
+ },
+ { "keys": ["ctrl+1"], "command": "focus_group", "args": { "group": 0 } },
+ { "keys": ["ctrl+2"], "command": "focus_group", "args": { "group": 1 } },
+ { "keys": ["ctrl+3"], "command": "focus_group", "args": { "group": 2 } },
+ { "keys": ["ctrl+4"], "command": "focus_group", "args": { "group": 3 } },
+ { "keys": ["ctrl+shift+1"], "command": "move_to_group", "args": { "group": 0 } },
+ { "keys": ["ctrl+shift+2"], "command": "move_to_group", "args": { "group": 1 } },
+ { "keys": ["ctrl+shift+3"], "command": "move_to_group", "args": { "group": 2 } },
+ { "keys": ["ctrl+shift+4"], "command": "move_to_group", "args": { "group": 3 } },
+ { "keys": ["ctrl+0"], "command": "focus_side_bar" },
+
+ { "keys": ["alt+1"], "command": "select_by_index", "args": { "index": 0 } },
+ { "keys": ["alt+2"], "command": "select_by_index", "args": { "index": 1 } },
+ { "keys": ["alt+3"], "command": "select_by_index", "args": { "index": 2 } },
+ { "keys": ["alt+4"], "command": "select_by_index", "args": { "index": 3 } },
+ { "keys": ["alt+5"], "command": "select_by_index", "args": { "index": 4 } },
+ { "keys": ["alt+6"], "command": "select_by_index", "args": { "index": 5 } },
+ { "keys": ["alt+7"], "command": "select_by_index", "args": { "index": 6 } },
+ { "keys": ["alt+8"], "command": "select_by_index", "args": { "index": 7 } },
+ { "keys": ["alt+9"], "command": "select_by_index", "args": { "index": 8 } },
+ { "keys": ["alt+0"], "command": "select_by_index", "args": { "index": 9 } },
+
+ { "keys": ["f2"], "command": "next_bookmark" },
+ { "keys": ["shift+f2"], "command": "prev_bookmark" },
+ { "keys": ["ctrl+f2"], "command": "toggle_bookmark" },
+ { "keys": ["ctrl+shift+f2"], "command": "clear_bookmarks" },
+ { "keys": ["alt+f2"], "command": "select_all_bookmarks" },
+
+ { "keys": ["ctrl+shift+k"], "command": "run_macro_file", "args": {"file": "Packages/Default/Delete Line.sublime-macro"} },
+
+ { "keys": ["alt+q"], "command": "wrap_lines" },
+
+ { "keys": ["ctrl+k", "ctrl+u"], "command": "upper_case" },
+ { "keys": ["ctrl+k", "ctrl+l"], "command": "lower_case" },
+
+ { "keys": ["ctrl+k", "ctrl+space"], "command": "set_mark" },
+ { "keys": ["ctrl+k", "ctrl+a"], "command": "select_to_mark" },
+ { "keys": ["ctrl+k", "ctrl+w"], "command": "delete_to_mark" },
+ { "keys": ["ctrl+k", "ctrl+x"], "command": "swap_with_mark" },
+ { "keys": ["ctrl+k", "ctrl+y"], "command": "yank" },
+ { "keys": ["ctrl+k", "ctrl+k"], "command": "run_macro_file", "args": {"file": "Packages/Default/Delete to Hard EOL.sublime-macro"} },
+ { "keys": ["ctrl+k", "ctrl+backspace"], "command": "run_macro_file", "args": {"file": "Packages/Default/Delete to Hard BOL.sublime-macro"} },
+ { "keys": ["ctrl+k", "ctrl+g"], "command": "clear_bookmarks", "args": {"name": "mark"} },
+ { "keys": ["ctrl+k", "ctrl+c"], "command": "show_at_center" },
+
+ { "keys": ["ctrl++"], "command": "increase_font_size" },
+ { "keys": ["ctrl+="], "command": "increase_font_size" },
+ { "keys": ["ctrl+keypad_plus"], "command": "increase_font_size" },
+ { "keys": ["ctrl+-"], "command": "decrease_font_size" },
+ { "keys": ["ctrl+keypad_minus"], "command": "decrease_font_size" },
+
+ { "keys": ["alt+shift+w"], "command": "insert_snippet", "args": { "name": "Packages/XML/long-tag.sublime-snippet" } },
+
+ { "keys": ["ctrl+shift+["], "command": "fold" },
+ { "keys": ["ctrl+shift+]"], "command": "unfold" },
+ { "keys": ["ctrl+k", "ctrl+1"], "command": "fold_by_level", "args": {"level": 1} },
+ { "keys": ["ctrl+k", "ctrl+2"], "command": "fold_by_level", "args": {"level": 2} },
+ { "keys": ["ctrl+k", "ctrl+3"], "command": "fold_by_level", "args": {"level": 3} },
+ { "keys": ["ctrl+k", "ctrl+4"], "command": "fold_by_level", "args": {"level": 4} },
+ { "keys": ["ctrl+k", "ctrl+5"], "command": "fold_by_level", "args": {"level": 5} },
+ { "keys": ["ctrl+k", "ctrl+6"], "command": "fold_by_level", "args": {"level": 6} },
+ { "keys": ["ctrl+k", "ctrl+7"], "command": "fold_by_level", "args": {"level": 7} },
+ { "keys": ["ctrl+k", "ctrl+8"], "command": "fold_by_level", "args": {"level": 8} },
+ { "keys": ["ctrl+k", "ctrl+9"], "command": "fold_by_level", "args": {"level": 9} },
+ { "keys": ["ctrl+k", "ctrl+0"], "command": "unfold_all" },
+ { "keys": ["ctrl+k", "ctrl+j"], "command": "unfold_all" },
+ { "keys": ["ctrl+k", "ctrl+t"], "command": "fold_tag_attributes" },
+
+ { "keys": ["context_menu"], "command": "context_menu" },
+
+ { "keys": ["alt+c"], "command": "toggle_case_sensitive", "context":
+ [
+ { "key": "setting.is_widget", "operator": "equal", "operand": true }
+ ]
+ },
+ { "keys": ["alt+r"], "command": "toggle_regex", "context":
+ [
+ { "key": "setting.is_widget", "operator": "equal", "operand": true }
+ ]
+ },
+ { "keys": ["alt+w"], "command": "toggle_whole_word", "context":
+ [
+ { "key": "setting.is_widget", "operator": "equal", "operand": true }
+ ]
+ },
+ { "keys": ["alt+a"], "command": "toggle_preserve_case", "context":
+ [
+ { "key": "setting.is_widget", "operator": "equal", "operand": true }
+ ]
+ },
+
+ // Find panel key bindings
+ { "keys": ["enter"], "command": "find_next", "context":
+ [{"key": "panel", "operand": "find"}, {"key": "panel_has_focus"}]
+ },
+ { "keys": ["shift+enter"], "command": "find_prev", "context":
+ [{"key": "panel", "operand": "find"}, {"key": "panel_has_focus"}]
+ },
+ { "keys": ["alt+enter"], "command": "find_all", "args": {"close_panel": true},
+ "context": [{"key": "panel", "operand": "find"}, {"key": "panel_has_focus"}]
+ },
+
+ // Replace panel key bindings
+ { "keys": ["enter"], "command": "find_next", "context":
+ [{"key": "panel", "operand": "replace"}, {"key": "panel_has_focus"}]
+ },
+ { "keys": ["shift+enter"], "command": "find_prev", "context":
+ [{"key": "panel", "operand": "replace"}, {"key": "panel_has_focus"}]
+ },
+ { "keys": ["alt+enter"], "command": "find_all", "args": {"close_panel": true},
+ "context": [{"key": "panel", "operand": "replace"}, {"key": "panel_has_focus"}]
+ },
+ { "keys": ["ctrl+alt+enter"], "command": "replace_all", "args": {"close_panel": true},
+ "context": [{"key": "panel", "operand": "replace"}, {"key": "panel_has_focus"}]
+ },
+
+ // Incremental find panel key bindings
+ { "keys": ["enter"], "command": "hide_panel", "context":
+ [{"key": "panel", "operand": "incremental_find"}, {"key": "panel_has_focus"}]
+ },
+ { "keys": ["shift+enter"], "command": "find_prev", "context":
+ [{"key": "panel", "operand": "incremental_find"}, {"key": "panel_has_focus"}]
+ },
+ { "keys": ["alt+enter"], "command": "find_all", "args": {"close_panel": true},
+ "context": [{"key": "panel", "operand": "incremental_find"}, {"key": "panel_has_focus"}]
+ }
+]
diff --git a/sublime/Packages/Default/Default (Windows).sublime-mousemap b/sublime/Packages/Default/Default (Windows).sublime-mousemap
new file mode 100644
index 0000000..748418e
--- /dev/null
+++ b/sublime/Packages/Default/Default (Windows).sublime-mousemap
@@ -0,0 +1,131 @@
+[
+ // Basic drag select
+ {
+ "button": "button1", "count": 1,
+ "press_command": "drag_select"
+ },
+ {
+ "button": "button1", "count": 1, "modifiers": ["ctrl"],
+ "press_command": "drag_select",
+ "press_args": {"additive": true}
+ },
+ {
+ "button": "button1", "count": 1, "modifiers": ["alt"],
+ "press_command": "drag_select",
+ "press_args": {"subtractive": true}
+ },
+
+ // Select between selection and click location
+ {
+ "button": "button1", "modifiers": ["shift"],
+ "press_command": "drag_select",
+ "press_args": {"extend": true}
+ },
+ {
+ "button": "button1", "modifiers": ["shift", "ctrl"],
+ "press_command": "drag_select",
+ "press_args": {"additive": true, "extend": true}
+ },
+ {
+ "button": "button1", "modifiers": ["shift", "alt"],
+ "press_command": "drag_select",
+ "press_args": {"subtractive": true, "extend": true}
+ },
+
+ // Drag select by words
+ {
+ "button": "button1", "count": 2,
+ "press_command": "drag_select",
+ "press_args": {"by": "words"}
+ },
+ {
+ "button": "button1", "count": 2, "modifiers": ["ctrl"],
+ "press_command": "drag_select",
+ "press_args": {"by": "words", "additive": true}
+ },
+ {
+ "button": "button1", "count": 2, "modifiers": ["alt"],
+ "press_command": "drag_select",
+ "press_args": {"by": "words", "subtractive": true}
+ },
+
+ // Drag select by lines
+ {
+ "button": "button1", "count": 3,
+ "press_command": "drag_select",
+ "press_args": {"by": "lines"}
+ },
+ {
+ "button": "button1", "count": 3, "modifiers": ["ctrl"],
+ "press_command": "drag_select",
+ "press_args": {"by": "lines", "additive": true}
+ },
+ {
+ "button": "button1", "count": 3, "modifiers": ["alt"],
+ "press_command": "drag_select",
+ "press_args": {"by": "lines", "subtractive": true}
+ },
+
+ // Shift + Mouse 2 Column select
+ {
+ "button": "button2", "modifiers": ["shift"],
+ "press_command": "drag_select",
+ "press_args": {"by": "columns"}
+ },
+ {
+ "button": "button2", "modifiers": ["shift", "ctrl"],
+ "press_command": "drag_select",
+ "press_args": {"by": "columns", "additive": true}
+ },
+ {
+ "button": "button2", "modifiers": ["shift", "alt"],
+ "press_command": "drag_select",
+ "press_args": {"by": "columns", "subtractive": true}
+ },
+
+ // Mouse 3 column select
+ {
+ "button": "button3",
+ "press_command": "drag_select",
+ "press_args": {"by": "columns"}
+ },
+ {
+ "button": "button3", "modifiers": ["ctrl"],
+ "press_command": "drag_select",
+ "press_args": {"by": "columns", "additive": true}
+ },
+ {
+ "button": "button3", "modifiers": ["alt"],
+ "press_command": "drag_select",
+ "press_args": {"by": "columns", "subtractive": true}
+ },
+
+ // Simple chording: hold down mouse 2, and click mouse 1
+ {
+ "button": "button1", "count": 1, "modifiers": ["button2"],
+ "command": "expand_selection", "args": {"to": "line"},
+ "press_command": "drag_select"
+ },
+ {
+ "button": "button1", "count": 2, "modifiers": ["button2"],
+ "command": "expand_selection_to_paragraph"
+ },
+ {
+ "button": "button1", "count": 3, "modifiers": ["button2"],
+ "command": "select_all"
+ },
+
+ // Switch files with buttons 4 and 5
+ { "button": "button4", "modifiers": [], "command": "prev_view" },
+ { "button": "button5", "modifiers": [], "command": "next_view" },
+
+ // Switch files by holding down button 2, and using the scroll wheel
+ { "button": "scroll_down", "modifiers": ["button2"], "command": "next_view" },
+ { "button": "scroll_up", "modifiers": ["button2"], "command": "prev_view" },
+
+ // Change font size with ctrl+scroll wheel
+ { "button": "scroll_down", "modifiers": ["ctrl"], "command": "decrease_font_size" },
+ { "button": "scroll_up", "modifiers": ["ctrl"], "command": "increase_font_size" },
+
+ { "button": "button2", "modifiers": [], "command": "context_menu" }
+]
diff --git a/sublime/Packages/Default/Default.sublime-commands b/sublime/Packages/Default/Default.sublime-commands
new file mode 100644
index 0000000..88e3318
--- /dev/null
+++ b/sublime/Packages/Default/Default.sublime-commands
@@ -0,0 +1,118 @@
+[
+ {
+ "caption": "Word Wrap: Toggle",
+ "command": "toggle_setting",
+ "args": {"setting": "word_wrap"}
+ },
+ {
+ "caption": "Convert Case: Upper Case",
+ "command": "upper_case"
+ },
+ {
+ "caption": "Convert Case: Lower Case",
+ "command": "lower_case"
+ },
+ {
+ "caption": "Convert Case: Title Case",
+ "command": "title_case"
+ },
+ {
+ "caption": "Convert Case: Swap Case",
+ "command": "swap_case"
+ },
+
+ { "command": "toggle_comment", "args": {"block": false}, "caption": "Toggle Comment" },
+ { "command": "toggle_comment", "args": {"block": true}, "caption": "Toggle Block Comment" },
+
+ { "command": "toggle_bookmark", "caption": "Bookmarks: Toggle" },
+ { "command": "next_bookmark", "caption": "Bookmarks: Select Next" },
+ { "command": "prev_bookmark", "caption": "Bookmarks: Select Previous" },
+ { "command": "clear_bookmarks", "caption": "Bookmarks: Clear All" },
+ { "command": "select_all_bookmarks", "caption": "Bookmarks: Select All" },
+
+ { "caption": "Indentation: Convert to Tabs", "command": "unexpand_tabs", "args": {"set_translate_tabs": true} },
+ { "caption": "Indentation: Convert to Spaces", "command": "expand_tabs", "args": {"set_translate_tabs": true} },
+ { "caption": "Indentation: Reindent Lines", "command": "reindent", "args": {"single_line": false} },
+
+ { "caption": "View: Toggle Side Bar", "command": "toggle_side_bar" },
+ { "caption": "View: Toggle Open Files in Side Bar", "command": "toggle_show_open_files" },
+ { "caption": "View: Toggle Minimap", "command": "toggle_minimap" },
+ { "caption": "View: Toggle Tabs", "command": "toggle_tabs" },
+ { "caption": "View: Toggle Status Bar", "command": "toggle_status_bar" },
+ { "caption": "View: Toggle Menu", "command": "toggle_menu" },
+
+ { "caption": "Project: Save As", "command": "save_project_as" },
+ { "caption": "Project: Close", "command": "close_project" },
+ { "caption": "Project: Add Folder", "command": "prompt_add_folder" },
+
+ { "caption": "Preferences: Settings - Default", "command": "open_file", "args": {"file": "${packages}/Default/Preferences.sublime-settings"} },
+ { "caption": "Preferences: Settings - User", "command": "open_file", "args": {"file": "${packages}/User/Preferences.sublime-settings"} },
+ { "caption": "Preferences: Browse Packages", "command": "open_dir", "args": {"dir": "$packages"} },
+
+ {
+ "caption": "Preferences: Key Bindings - Default",
+ "command": "open_file", "args":
+ {
+ "file": "${packages}/Default/Default (Windows).sublime-keymap",
+ "platform": "Windows"
+ }
+ },
+ {
+ "caption": "Preferences: Key Bindings - Default",
+ "command": "open_file", "args":
+ {
+ "file": "${packages}/Default/Default (OSX).sublime-keymap",
+ "platform": "OSX"
+ }
+ },
+ {
+ "caption": "Preferences: Key Bindings - Default",
+ "command": "open_file", "args":
+ {
+ "file": "${packages}/Default/Default (Linux).sublime-keymap",
+ "platform": "Linux"
+ }
+ },
+ {
+ "caption": "Preferences: Key Bindings - User",
+ "command": "open_file", "args":
+ {
+ "file": "${packages}/User/Default (Windows).sublime-keymap",
+ "platform": "Windows"
+ }
+ },
+ {
+ "caption": "Preferences: Key Bindings - User",
+ "command": "open_file", "args":
+ {
+ "file": "${packages}/User/Default (OSX).sublime-keymap",
+ "platform": "OSX"
+ }
+ },
+ {
+ "caption": "Preferences: Key Bindings - User",
+ "command": "open_file", "args":
+ {
+ "file": "${packages}/User/Default (Linux).sublime-keymap",
+ "platform": "Linux"
+ }
+ },
+
+ { "caption": "File: Save All", "command": "save_all" },
+ { "caption": "File: Revert", "command": "revert" },
+ { "caption": "File: New View into File", "command": "clone_file" },
+ { "caption": "File: Close All", "command": "close_all" },
+
+ { "caption": "HTML: Wrap Selection With Tag", "command": "insert_snippet", "args": { "name": "Packages/XML/long-tag.sublime-snippet" } },
+ { "caption": "HTML: Encode Special Characters", "command": "encode_html_entities" },
+
+ { "caption": "Rot13 Selection", "command": "rot13" },
+
+ { "caption": "Sort Lines", "command": "sort_lines", "args": {"case_sensitive": false} },
+ { "caption": "Sort Lines (Case Sensitive)", "command": "sort_lines", "args": {"case_sensitive": true} },
+
+ { "caption": "Code Folding: Unfold All", "command": "unfold_all" },
+ { "caption": "Code Folding: Fold Tag Attributes", "command": "fold_tag_attributes" },
+
+ { "caption": "About", "command": "show_about_window" }
+]
diff --git a/sublime/Packages/Default/Delete Left Right.sublime-macro b/sublime/Packages/Default/Delete Left Right.sublime-macro
new file mode 100644
index 0000000..e6946e6
--- /dev/null
+++ b/sublime/Packages/Default/Delete Left Right.sublime-macro
@@ -0,0 +1,4 @@
+[
+ {"command": "left_delete" },
+ {"command": "right_delete" }
+]
diff --git a/sublime/Packages/Default/Delete Line.sublime-macro b/sublime/Packages/Default/Delete Line.sublime-macro
new file mode 100644
index 0000000..5fecdcb
--- /dev/null
+++ b/sublime/Packages/Default/Delete Line.sublime-macro
@@ -0,0 +1,5 @@
+[
+ {"command": "expand_selection", "args": {"to": "line"}},
+ {"command": "add_to_kill_ring", "args": {"forward": true}},
+ {"command": "left_delete"}
+]
diff --git a/sublime/Packages/Default/Delete to BOL.sublime-macro b/sublime/Packages/Default/Delete to BOL.sublime-macro
new file mode 100644
index 0000000..9697284
--- /dev/null
+++ b/sublime/Packages/Default/Delete to BOL.sublime-macro
@@ -0,0 +1,5 @@
+[
+ {"command": "move_to", "args": {"to": "bol", "extend": true}},
+ {"command": "add_to_kill_ring", "args": {"forward": false}},
+ {"command": "left_delete"}
+]
diff --git a/sublime/Packages/Default/Delete to EOL.sublime-macro b/sublime/Packages/Default/Delete to EOL.sublime-macro
new file mode 100644
index 0000000..3af8234
--- /dev/null
+++ b/sublime/Packages/Default/Delete to EOL.sublime-macro
@@ -0,0 +1,5 @@
+[
+ {"command": "move_to", "args": {"to": "eol", "extend": true}},
+ {"command": "add_to_kill_ring", "args": {"forward": true}},
+ {"command": "right_delete"}
+]
diff --git a/sublime/Packages/Default/Delete to Hard BOL.sublime-macro b/sublime/Packages/Default/Delete to Hard BOL.sublime-macro
new file mode 100644
index 0000000..947de20
--- /dev/null
+++ b/sublime/Packages/Default/Delete to Hard BOL.sublime-macro
@@ -0,0 +1,5 @@
+[
+ {"command": "move_to", "args": {"to": "hardbol", "extend": true}},
+ {"command": "add_to_kill_ring", "args": {"forward": false}},
+ {"command": "left_delete"}
+]
diff --git a/sublime/Packages/Default/Delete to Hard EOL.sublime-macro b/sublime/Packages/Default/Delete to Hard EOL.sublime-macro
new file mode 100644
index 0000000..153395f
--- /dev/null
+++ b/sublime/Packages/Default/Delete to Hard EOL.sublime-macro
@@ -0,0 +1,5 @@
+[
+ {"command": "move_to", "args": {"to": "hardeol", "extend": true}},
+ {"command": "add_to_kill_ring", "args": {"forward": true}},
+ {"command": "right_delete"}
+]
diff --git a/sublime/Packages/Default/Distraction Free.sublime-settings b/sublime/Packages/Default/Distraction Free.sublime-settings
new file mode 100644
index 0000000..ddbae8d
--- /dev/null
+++ b/sublime/Packages/Default/Distraction Free.sublime-settings
@@ -0,0 +1,8 @@
+{
+ "line_numbers": false,
+ "gutter": false,
+ "draw_centered": true,
+ "wrap_width": 80,
+ "word_wrap": true,
+ "scroll_past_end": true
+}
diff --git a/sublime/Packages/Default/Find Results.hidden-tmLanguage b/sublime/Packages/Default/Find Results.hidden-tmLanguage
new file mode 100644
index 0000000..4488707
--- /dev/null
+++ b/sublime/Packages/Default/Find Results.hidden-tmLanguage
@@ -0,0 +1,50 @@
+
+
+
+
+ name
+ Find Results
+
+ patterns
+
+
+ match
+ ^([^ ].*):$
+ captures
+
+ 1
+
+ name
+ entity.name.filename.find-in-files
+
+
+
+
+ match
+ ^ +([0-9]+)
+ captures
+
+ 1
+
+ name
+ constant.numeric.line-number.find-in-files
+
+
+
+
+ match
+ ^ +([0-9]+):
+ captures
+
+ 1
+
+ name
+ constant.numeric.line-number.match.find-in-files
+
+
+
+
+ scopeName
+ text.find-in-files
+
+
diff --git a/sublime/Packages/Default/Find Results.hidden-tmLanguage.cache b/sublime/Packages/Default/Find Results.hidden-tmLanguage.cache
new file mode 100644
index 0000000..311c3c3
Binary files /dev/null and b/sublime/Packages/Default/Find Results.hidden-tmLanguage.cache differ
diff --git a/sublime/Packages/Default/Find in Files.sublime-menu b/sublime/Packages/Default/Find in Files.sublime-menu
new file mode 100644
index 0000000..2101553
--- /dev/null
+++ b/sublime/Packages/Default/Find in Files.sublime-menu
@@ -0,0 +1,8 @@
+[
+ { "command": "clear_location", "caption": "Clear" },
+ { "command": "add_directory", "caption": "Add Folder" },
+ { "command": "add_where_snippet", "args": {"snippet": "*.${0:txt}"}, "caption": "Add Include Filter" },
+ { "command": "add_where_snippet", "args": {"snippet": "-*.${0:txt}"}, "caption": "Add Exclude Filter" },
+ { "command": "add_where_snippet", "args": {"snippet": ""}, "caption": "Add Open Folders" },
+ { "command": "add_where_snippet", "args": {"snippet": ""}, "caption": "Add Open Files" }
+]
diff --git a/sublime/Packages/Default/Icon.png b/sublime/Packages/Default/Icon.png
new file mode 100644
index 0000000..82d904c
Binary files /dev/null and b/sublime/Packages/Default/Icon.png differ
diff --git a/sublime/Packages/Default/Ignored Packages.cache b/sublime/Packages/Default/Ignored Packages.cache
new file mode 100644
index 0000000..27b92a5
--- /dev/null
+++ b/sublime/Packages/Default/Ignored Packages.cache
@@ -0,0 +1 @@
+["Vintage"]
\ No newline at end of file
diff --git a/sublime/Packages/Default/Indentation Rules - Comments.tmPreferences b/sublime/Packages/Default/Indentation Rules - Comments.tmPreferences
new file mode 100644
index 0000000..8cb6749
--- /dev/null
+++ b/sublime/Packages/Default/Indentation Rules - Comments.tmPreferences
@@ -0,0 +1,13 @@
+
+
+
+
+ scope
+ comment
+ settings
+
+ preserveIndent
+
+
+
+
diff --git a/sublime/Packages/Default/Indentation Rules - Comments.tmPreferences.cache b/sublime/Packages/Default/Indentation Rules - Comments.tmPreferences.cache
new file mode 100644
index 0000000..fa56901
Binary files /dev/null and b/sublime/Packages/Default/Indentation Rules - Comments.tmPreferences.cache differ
diff --git a/sublime/Packages/Default/Indentation Rules.tmPreferences b/sublime/Packages/Default/Indentation Rules.tmPreferences
new file mode 100644
index 0000000..1688681
--- /dev/null
+++ b/sublime/Packages/Default/Indentation Rules.tmPreferences
@@ -0,0 +1,19 @@
+
+
+
+
+ scope
+ source
+ settings
+
+ decreaseIndentPattern
+ ^(.*\*/)?\s*\}[;\s]*$
+ increaseIndentPattern
+ ^.*(\{[^}"']*)$
+ disableIndentNextLinePattern
+ ^\s*\{[\]})]*\s*$
+ indentParens
+
+
+
+
diff --git a/sublime/Packages/Default/Indentation Rules.tmPreferences.cache b/sublime/Packages/Default/Indentation Rules.tmPreferences.cache
new file mode 100644
index 0000000..6b34a51
Binary files /dev/null and b/sublime/Packages/Default/Indentation Rules.tmPreferences.cache differ
diff --git a/sublime/Packages/Default/Indentation.sublime-menu b/sublime/Packages/Default/Indentation.sublime-menu
new file mode 100644
index 0000000..9c49375
--- /dev/null
+++ b/sublime/Packages/Default/Indentation.sublime-menu
@@ -0,0 +1,17 @@
+[
+{ "command": "toggle_setting", "args": {"setting": "translate_tabs_to_spaces"}, "caption": "Indent Using Spaces", "checkbox": true },
+ { "caption": "-" },
+ { "command": "set_setting", "args": {"setting": "tab_size", "value": 1}, "caption": "Tab Width: 1", "checkbox": true },
+ { "command": "set_setting", "args": {"setting": "tab_size", "value": 2}, "caption": "Tab Width: 2", "checkbox": true },
+ { "command": "set_setting", "args": {"setting": "tab_size", "value": 3}, "caption": "Tab Width: 3", "checkbox": true },
+ { "command": "set_setting", "args": {"setting": "tab_size", "value": 4}, "caption": "Tab Width: 4", "checkbox": true },
+ { "command": "set_setting", "args": {"setting": "tab_size", "value": 5}, "caption": "Tab Width: 5", "checkbox": true },
+ { "command": "set_setting", "args": {"setting": "tab_size", "value": 6}, "caption": "Tab Width: 6", "checkbox": true },
+ { "command": "set_setting", "args": {"setting": "tab_size", "value": 7}, "caption": "Tab Width: 7", "checkbox": true },
+ { "command": "set_setting", "args": {"setting": "tab_size", "value": 8}, "caption": "Tab Width: 8", "checkbox": true },
+ { "caption": "-" },
+ { "command": "detect_indentation", "caption": "Guess Settings From Buffer" },
+ { "caption": "-" },
+ { "command": "expand_tabs", "caption": "Convert Indentation to Spaces", "args": {"set_translate_tabs": true} },
+ { "command": "unexpand_tabs", "caption": "Convert Indentation to Tabs", "args": {"set_translate_tabs": true} }
+ ]
diff --git a/sublime/Packages/Default/Main.sublime-menu b/sublime/Packages/Default/Main.sublime-menu
new file mode 100644
index 0000000..459abe7
--- /dev/null
+++ b/sublime/Packages/Default/Main.sublime-menu
@@ -0,0 +1,809 @@
+[
+ {
+ "caption": "File",
+ "mnemonic": "F",
+ "id": "file",
+ "children":
+ [
+ { "command": "new_file", "caption": "New File", "mnemonic": "N" },
+
+ { "command": "prompt_open_file", "caption": "Open File…", "mnemonic": "O", "platform": "!OSX" },
+ { "command": "prompt_open_folder", "caption": "Open Folder…", "platform": "!OSX" },
+ { "command": "prompt_open", "caption": "Open…", "platform": "OSX" },
+
+ {
+ "caption": "Open Recent",
+ "mnemonic": "R",
+ "children":
+ [
+ { "command": "reopen_last_file", "caption": "Reopen Closed File" },
+ { "caption": "-" },
+ { "command": "open_recent_file", "args": {"index": 0 } },
+ { "command": "open_recent_file", "args": {"index": 1 } },
+ { "command": "open_recent_file", "args": {"index": 2 } },
+ { "command": "open_recent_file", "args": {"index": 3 } },
+ { "command": "open_recent_file", "args": {"index": 4 } },
+ { "command": "open_recent_file", "args": {"index": 5 } },
+ { "command": "open_recent_file", "args": {"index": 6 } },
+ { "command": "open_recent_file", "args": {"index": 7 } },
+ { "caption": "-" },
+ { "command": "open_recent_folder", "args": {"index": 0 } },
+ { "command": "open_recent_folder", "args": {"index": 1 } },
+ { "command": "open_recent_folder", "args": {"index": 2 } },
+ { "command": "open_recent_folder", "args": {"index": 3 } },
+ { "command": "open_recent_folder", "args": {"index": 4 } },
+ { "command": "open_recent_folder", "args": {"index": 5 } },
+ { "command": "open_recent_folder", "args": {"index": 6 } },
+ { "command": "open_recent_folder", "args": {"index": 7 } },
+ { "caption": "-" },
+ { "command": "clear_recent_files", "caption": "Clear Items" }
+ ]
+ },
+ {
+ "caption": "Reopen with Encoding",
+ "children":
+ [
+ { "caption": "UTF-8", "command": "reopen", "args": {"encoding": "utf-8" } },
+ { "caption": "UTF-16 LE", "command": "reopen", "args": {"encoding": "utf-16 le" } },
+ { "caption": "UTF-16 BE", "command": "reopen", "args": {"encoding": "utf-16 be" } },
+ { "caption": "-" },
+ { "caption": "Western (Windows 1252)", "command": "reopen", "args": {"encoding": "Western (Windows 1252)" } },
+ { "caption": "Western (ISO 8859-1)", "command": "reopen", "args": {"encoding": "Western (ISO 8859-1)" } },
+ { "caption": "Western (ISO 8859-3)", "command": "reopen", "args": {"encoding": "Western (ISO 8859-3)" } },
+ { "caption": "Western (ISO 8859-15)", "command": "reopen", "args": {"encoding": "Western (ISO 8859-15)" } },
+ { "caption": "Western (Mac Roman)", "command": "reopen", "args": {"encoding": "Western (Mac Roman)" } },
+ { "caption": "DOS (CP 437)", "command": "reopen", "args": {"encoding": "DOS (CP 437)" } },
+ { "caption": "Arabic (Windows 1256)", "command": "reopen", "args": {"encoding": "Arabic (Windows 1256)" } },
+ { "caption": "Arabic (ISO 8859-6)", "command": "reopen", "args": {"encoding": "Arabic (ISO 8859-6)" } },
+ { "caption": "Baltic (Windows 1257)", "command": "reopen", "args": {"encoding": "Baltic (Windows 1257)" } },
+ { "caption": "Baltic (ISO 8859-4)", "command": "reopen", "args": {"encoding": "Baltic (ISO 8859-4)" } },
+ { "caption": "Celtic (ISO 8859-14)", "command": "reopen", "args": {"encoding": "Celtic (ISO 8859-14)" } },
+ { "caption": "Central European (Windows 1250)", "command": "reopen", "args": {"encoding": "Central European (Windows 1250)" } },
+ { "caption": "Central European (ISO 8859-2)", "command": "reopen", "args": {"encoding": "Central European (ISO 8859-2)" } },
+ { "caption": "Cyrillic (Windows 1251)", "command": "reopen", "args": {"encoding": "Cyrillic (Windows 1251)" } },
+ { "caption": "Cyrillic (Windows 866)", "command": "reopen", "args": {"encoding": "Cyrillic (Windows 866)" } },
+ { "caption": "Cyrillic (ISO 8859-5)", "command": "reopen", "args": {"encoding": "Cyrillic (ISO 8859-5)" } },
+ { "caption": "Cyrillic (KOI8-R)", "command": "reopen", "args": {"encoding": "Cyrillic (KOI8-R)" } },
+ { "caption": "Cyrillic (KOI8-U)", "command": "reopen", "args": {"encoding": "Cyrillic (KOI8-U)" } },
+ { "caption": "Estonian (ISO 8859-13)", "command": "reopen", "args": {"encoding": "Estonian (ISO 8859-13)" } },
+ { "caption": "Greek (Windows 1253)", "command": "reopen", "args": {"encoding": "Greek (Windows 1253)" } },
+ { "caption": "Greek (ISO 8859-7)", "command": "reopen", "args": {"encoding": "Greek (ISO 8859-7)" } },
+ { "caption": "Hebrew (Windows 1255)", "command": "reopen", "args": {"encoding": "Hebrew (Windows 1255)" } },
+ { "caption": "Hebrew (ISO 8859-8)", "command": "reopen", "args": {"encoding": "Hebrew (ISO 8859-8)" } },
+ { "caption": "Nordic (ISO 8859-10)", "command": "reopen", "args": {"encoding": "Nordic (ISO 8859-10)" } },
+ { "caption": "Romanian (ISO 8859-16)", "command": "reopen", "args": {"encoding": "Romanian (ISO 8859-16)" } },
+ { "caption": "Turkish (Windows 1254)", "command": "reopen", "args": {"encoding": "Turkish (Windows 1254)" } },
+ { "caption": "Turkish (ISO 8859-9)", "command": "reopen", "args": {"encoding": "Turkish (ISO 8859-9)" } },
+ { "caption": "Vietnamese (Windows 1258)", "command": "reopen", "args": {"encoding": "Vietnamese (Windows 1258)" } },
+ { "caption": "-" },
+ { "caption": "Hexadecimal", "command": "reopen", "args": {"encoding": "Hexadecimal" } }
+ ]
+ },
+ { "command": "clone_file", "caption": "New View into File", "mnemonic": "e" },
+ { "command": "save", "caption": "Save", "mnemonic": "S" },
+ {
+ "caption": "Save with Encoding",
+ "children":
+ [
+ { "caption": "UTF-8", "command": "save", "args": {"encoding": "utf-8" } },
+ { "caption": "UTF-8 with BOM", "command": "save", "args": {"encoding": "utf-8 with bom" } },
+ { "caption": "UTF-16 LE", "command": "save", "args": {"encoding": "utf-16 le" } },
+ { "caption": "UTF-16 LE with BOM", "command": "save", "args": {"encoding": "utf-16 le with bom" } },
+ { "caption": "UTF-16 BE", "command": "save", "args": {"encoding": "utf-16 be" } },
+ { "caption": "UTF-16 BE with BOM", "command": "save", "args": {"encoding": "utf-16 be with bom" } },
+ { "caption": "-" },
+ { "caption": "Western (Windows 1252)", "command": "save", "args": {"encoding": "Western (Windows 1252)" } },
+ { "caption": "Western (ISO 8859-1)", "command": "save", "args": {"encoding": "Western (ISO 8859-1)" } },
+ { "caption": "Western (ISO 8859-3)", "command": "save", "args": {"encoding": "Western (ISO 8859-3)" } },
+ { "caption": "Western (ISO 8859-15)", "command": "save", "args": {"encoding": "Western (ISO 8859-15)" } },
+ { "caption": "Western (Mac Roman)", "command": "save", "args": {"encoding": "Western (Mac Roman)" } },
+ { "caption": "DOS (CP 437)", "command": "save", "args": {"encoding": "DOS (CP 437)" } },
+ { "caption": "Arabic (Windows 1256)", "command": "save", "args": {"encoding": "Arabic (Windows 1256)" } },
+ { "caption": "Arabic (ISO 8859-6)", "command": "save", "args": {"encoding": "Arabic (ISO 8859-6)" } },
+ { "caption": "Baltic (Windows 1257)", "command": "save", "args": {"encoding": "Baltic (Windows 1257)" } },
+ { "caption": "Baltic (ISO 8859-4)", "command": "save", "args": {"encoding": "Baltic (ISO 8859-4)" } },
+ { "caption": "Celtic (ISO 8859-14)", "command": "save", "args": {"encoding": "Celtic (ISO 8859-14)" } },
+ { "caption": "Central European (Windows 1250)", "command": "save", "args": {"encoding": "Central European (Windows 1250)" } },
+ { "caption": "Central European (ISO 8859-2)", "command": "save", "args": {"encoding": "Central European (ISO 8859-2)" } },
+ { "caption": "Cyrillic (Windows 1251)", "command": "save", "args": {"encoding": "Cyrillic (Windows 1251)" } },
+ { "caption": "Cyrillic (Windows 866)", "command": "save", "args": {"encoding": "Cyrillic (Windows 866)" } },
+ { "caption": "Cyrillic (ISO 8859-5)", "command": "save", "args": {"encoding": "Cyrillic (ISO 8859-5)" } },
+ { "caption": "Cyrillic (KOI8-R)", "command": "save", "args": {"encoding": "Cyrillic (KOI8-R)" } },
+ { "caption": "Cyrillic (KOI8-U)", "command": "save", "args": {"encoding": "Cyrillic (KOI8-U)" } },
+ { "caption": "Estonian (ISO 8859-13)", "command": "save", "args": {"encoding": "Estonian (ISO 8859-13)" } },
+ { "caption": "Greek (Windows 1253)", "command": "save", "args": {"encoding": "Greek (Windows 1253)" } },
+ { "caption": "Greek (ISO 8859-7)", "command": "save", "args": {"encoding": "Greek (ISO 8859-7)" } },
+ { "caption": "Hebrew (Windows 1255)", "command": "save", "args": {"encoding": "Hebrew (Windows 1255)" } },
+ { "caption": "Hebrew (ISO 8859-8)", "command": "save", "args": {"encoding": "Hebrew (ISO 8859-8)" } },
+ { "caption": "Nordic (ISO 8859-10)", "command": "save", "args": {"encoding": "Nordic (ISO 8859-10)" } },
+ { "caption": "Romanian (ISO 8859-16)", "command": "save", "args": {"encoding": "Romanian (ISO 8859-16)" } },
+ { "caption": "Turkish (Windows 1254)", "command": "save", "args": {"encoding": "Turkish (Windows 1254)" } },
+ { "caption": "Turkish (ISO 8859-9)", "command": "save", "args": {"encoding": "Turkish (ISO 8859-9)" } },
+ { "caption": "Vietnamese (Windows 1258)", "command": "save", "args": {"encoding": "Vietnamese (Windows 1258)" } },
+ { "caption": "-" },
+ { "caption": "Hexadecimal", "command": "save", "args": {"encoding": "Hexadecimal" } }
+ ]
+ },
+ { "command": "prompt_save_as", "caption": "Save As…", "mnemonic": "A" },
+ { "command": "save_all", "caption": "Save All", "mnemonic": "l" },
+ { "caption": "-", "id": "window" },
+ { "command": "new_window", "caption": "New Window", "mnemonic": "W" },
+ { "command": "close_window", "caption": "Close Window" },
+ { "caption": "-", "id": "close" },
+ { "command": "close", "caption": "Close File", "mnemonic": "C" },
+ { "command": "revert", "caption": "Revert File", "mnemonic": "v" },
+ { "command": "close_all", "caption": "Close All Files" },
+ { "caption": "-", "id": "exit" },
+ { "command": "exit", "mnemonic": "x" }
+ ]
+ },
+ {
+ "caption": "Edit",
+ "mnemonic": "E",
+ "id": "edit",
+ "children":
+ [
+ { "command": "undo", "mnemonic": "U" },
+ { "command": "redo_or_repeat", "mnemonic": "R" },
+ {
+ "caption": "Undo Selection",
+ "children":
+ [
+ { "command": "soft_undo" },
+ { "command": "soft_redo" }
+ ]
+ },
+ { "caption": "-", "id": "clipboard" },
+ { "command": "copy", "mnemonic": "C" },
+ { "command": "cut", "mnemonic": "n" },
+ { "command": "paste", "mnemonic": "P" },
+ { "command": "paste_and_indent", "mnemonic": "I" },
+ { "caption": "-" },
+ {
+ "caption": "Line", "mnemonic": "L",
+ "id": "line",
+ "children":
+ [
+ { "command": "indent" },
+ { "command": "unindent" },
+ { "command": "reindent", "args": {"single_line": true} },
+ { "command": "swap_line_up" },
+ { "command": "swap_line_down" },
+ { "command": "duplicate_line" },
+ { "command": "run_macro_file", "args": {"file": "Packages/Default/Delete Line.sublime-macro"}, "caption": "Delete Line" },
+ { "command": "join_lines" }
+ ]
+ },
+ {
+ "caption": "Comment", "mnemonic": "m",
+ "id": "comment",
+ "children":
+ [
+ { "command": "toggle_comment", "args": {"block": false}, "caption": "Toggle Comment" },
+ { "command": "toggle_comment", "args": {"block": true}, "caption": "Toggle Block Comment" }
+ ]
+ },
+ {
+ "caption": "Text", "mnemonic": "T",
+ "id": "text",
+ "children":
+ [
+ { "command": "run_macro_file", "args": {"file": "Packages/Default/Add Line Before.sublime-macro"}, "caption": "Insert Line Before" },
+ { "command": "run_macro_file", "args": {"file": "Packages/Default/Add Line.sublime-macro"}, "caption": "Insert Line After" },
+ { "caption": "-" },
+ { "command": "delete_word", "args": { "forward": true }, "caption": "Delete Word Forward" },
+ { "command": "delete_word", "args": { "forward": false }, "caption": "Delete Word Backward" },
+ { "command": "run_macro_file", "args": {"file": "Packages/Default/Delete Line.sublime-macro"}, "caption": "Delete Line" },
+ { "command": "run_macro_file", "args": {"file": "Packages/Default/Delete to Hard EOL.sublime-macro"}, "caption": "Delete to End" },
+ { "command": "run_macro_file", "args": {"file": "Packages/Default/Delete to Hard BOL.sublime-macro"}, "caption": "Delete to Beginning" },
+ { "caption": "-" },
+ { "command": "transpose" }
+ ]
+ },
+ {
+ "caption": "Tag",
+ "id": "tag",
+ "children":
+ [
+ { "command": "close_tag" },
+ { "command": "expand_selection", "args": {"to": "tag"}, "caption": "Expand Selection to Tag" },
+ { "command": "insert_snippet", "args": { "name": "Packages/XML/long-tag.sublime-snippet" }, "caption": "Wrap Selection With Tag" }
+ ]
+ },
+ {
+ "caption": "Mark",
+ "id": "mark",
+ "children":
+ [
+ { "command": "set_mark" },
+ { "command": "select_to_mark" },
+ { "command": "delete_to_mark" },
+ { "command": "swap_with_mark" },
+ { "command": "clear_bookmarks", "args": {"name": "mark"}, "caption": "Clear Mark" },
+ { "caption": "-" },
+ { "command": "yank" }
+ ]
+ },
+ {
+ "caption": "Code Folding",
+ "id": "fold",
+ "children":
+ [
+ { "command": "fold" },
+ { "command": "unfold" },
+ { "command": "unfold_all", "caption": "Unfold All" },
+ { "caption": "-" },
+ { "caption": "Fold All", "command": "fold_by_level", "args": {"level": 1} },
+ { "caption": "Fold Level 2", "command": "fold_by_level", "args": {"level": 2} },
+ { "caption": "Fold Level 3", "command": "fold_by_level", "args": {"level": 3} },
+ { "caption": "Fold Level 4", "command": "fold_by_level", "args": {"level": 4} },
+ { "caption": "Fold Level 5", "command": "fold_by_level", "args": {"level": 5} },
+ { "caption": "Fold Level 6", "command": "fold_by_level", "args": {"level": 6} },
+ { "caption": "Fold Level 7", "command": "fold_by_level", "args": {"level": 7} },
+ { "caption": "Fold Level 8", "command": "fold_by_level", "args": {"level": 8} },
+ { "caption": "Fold Level 9", "command": "fold_by_level", "args": {"level": 9} },
+ { "caption": "-" },
+ { "command": "fold_tag_attributes", "caption": "Fold Tag Attributes" }
+ ]
+ },
+ {
+ "caption": "Convert Case", "mnemonic": "a",
+ "id": "convert_case",
+ "children":
+ [
+ { "command": "title_case", "caption": "Title Case" },
+ { "command": "upper_case", "caption": "Upper Case" },
+ { "command": "lower_case", "caption": "Lower Case" },
+ { "command": "swap_case", "caption": "Swap Case" }
+ ]
+ },
+ {
+ "caption": "Wrap",
+ "id": "wrap",
+ "children":
+ [
+ { "command": "wrap_lines", "caption": "Wrap Paragraph at Ruler" },
+ { "command": "wrap_lines", "args": {"width": 70}, "caption": "Wrap paragraph at 70 characters" },
+ { "command": "wrap_lines", "args": {"width": 78}, "caption": "Wrap paragraph at 78 characters" },
+ { "command": "wrap_lines", "args": {"width": 80}, "caption": "Wrap paragraph at 80 characters" },
+ { "command": "wrap_lines", "args": {"width": 100}, "caption": "Wrap paragraph at 100 characters" },
+ { "command": "wrap_lines", "args": {"width": 120}, "caption": "Wrap paragraph at 120 characters" }
+ ]
+ },
+ { "command": "auto_complete", "caption": "Show Completions" },
+ { "caption": "-", "id": "permute" },
+
+ { "command": "sort_lines", "args": {"case_sensitive": false}, "caption": "Sort Lines", "mnemonic": "S" },
+ { "command": "sort_lines", "args": {"case_sensitive": true}, "caption": "Sort Lines (Case Sensitive)" },
+ {
+ "caption": "Permute Lines",
+ "children":
+ [
+ { "command": "permute_lines", "args": {"operation": "reverse"}, "caption": "Reverse" },
+ { "command": "permute_lines", "args": {"operation": "unique"}, "caption": "Unique" },
+ { "command": "permute_lines", "args": {"operation": "shuffle"}, "caption": "Shuffle" }
+ ]
+ },
+ {
+ "caption": "Permute Selections",
+ "children":
+ [
+ { "command": "sort_selection", "args": {"case_sensitive": false}, "caption": "Sort" },
+ { "command": "sort_selection", "args": {"case_sensitive": true}, "caption": "Sort (Case Sensitive)" },
+ { "command": "permute_selection", "args": {"operation": "reverse"}, "caption": "Reverse" },
+ { "command": "permute_selection", "args": {"operation": "unique"}, "caption": "Unique" },
+ { "command": "permute_selection", "args": {"operation": "shuffle"}, "caption": "Shuffle" }
+ ]
+ },
+ { "caption": "-", "id": "end" }
+ ]
+ },
+ {
+ "caption": "Selection",
+ "mnemonic": "S",
+ "id": "selection",
+ "children":
+ [
+ { "command": "split_selection_into_lines", "caption": "Split into Lines" },
+ { "command": "select_lines", "args": {"forward": false}, "caption": "Add Previous Line" },
+ { "command": "select_lines", "args": {"forward": true}, "caption": "Add Next Line" },
+ { "command": "single_selection" },
+ { "caption": "-" },
+ { "command": "select_all" },
+ { "command": "expand_selection", "args": {"to": "line"}, "caption": "Expand Selection to Line" },
+ { "command": "find_under_expand", "caption": "Expand Selection to Word" },
+ { "command": "expand_selection_to_paragraph", "caption": "Expand Selection to Paragraph" },
+ { "command": "expand_selection", "args": {"to": "scope"}, "caption": "Expand Selection to Scope" },
+ { "command": "expand_selection", "args": {"to": "brackets"}, "caption": "Expand Selection to Brackets" },
+ { "command": "expand_selection", "args": {"to": "indentation"}, "caption": "Expand Selection to Indentation" },
+ { "command": "expand_selection", "args": {"to": "tag"}, "caption": "Expand Selection to Tag" }
+ ]
+ },
+ {
+ "caption": "Find",
+ "mnemonic": "i",
+ "id": "find",
+ "children":
+ [
+ { "command": "show_panel", "args": {"panel": "find"}, "caption": "Find…" },
+ { "command": "find_next" },
+ { "command": "find_prev", "caption": "Find Previous" },
+ { "command": "show_panel", "args": {"panel": "incremental_find", "reverse": false}, "caption": "Incremental Find" },
+ { "caption": "-" },
+ { "command": "show_panel", "args": {"panel": "replace"}, "caption": "Replace…" },
+ { "command": "replace_next" },
+ { "caption": "-" },
+ { "command": "find_under", "caption": "Quick Find" },
+ { "command": "find_all_under", "caption": "Quick Find All" },
+ { "command": "find_under_expand", "caption": "Quick Add Next" },
+ { "command": "find_under_expand_skip", "caption": "Quick Skip Next", "platform": "!OSX" },
+ { "caption": "-" },
+ { "command": "slurp_find_string", "caption": "Use Selection for Find" },
+ { "command": "slurp_replace_string", "caption": "Use Selection for Replace" },
+ { "caption": "-" },
+ { "command": "show_panel", "args": {"panel": "find_in_files"}, "caption": "Find in Files…" },
+ {
+ "caption": "Find Results",
+ "mnemonic": "R",
+ "children":
+ [
+ { "command": "show_panel", "args": {"panel": "output.find_results"}, "caption": "Show Results Panel" },
+ { "command": "next_result" },
+ { "command": "prev_result", "caption": "Previous Result" }
+ ]
+ }
+ ]
+ },
+ {
+ "caption": "View",
+ "mnemonic": "V",
+ "id": "view",
+ "children":
+ [
+ {
+ "caption": "Side Bar",
+ "id": "side_bar",
+ "children":
+ [
+ { "command": "toggle_side_bar" },
+ { "caption": "-" },
+ { "command": "toggle_show_open_files" }
+ ]
+ },
+ { "command": "toggle_minimap" },
+ { "command": "toggle_tabs" },
+ { "command": "toggle_status_bar" },
+ { "command": "toggle_menu" },
+ { "command": "show_panel", "args": {"panel": "console", "toggle": true} },
+ { "caption": "-", "id": "full_screen" },
+ { "command": "toggle_full_screen" },
+ { "command": "toggle_distraction_free" },
+ { "caption": "-", "id": "groups" },
+ {
+ "caption": "Layout",
+ "mnemonic": "L",
+ "id": "layout",
+ "children":
+ [
+ {
+ "caption": "Single",
+ "command": "set_layout",
+ "args":
+ {
+ "cols": [0.0, 1.0],
+ "rows": [0.0, 1.0],
+ "cells": [[0, 0, 1, 1]]
+ }
+ },
+ {
+ "caption": "Columns: 2",
+ "command": "set_layout",
+ "args":
+ {
+ "cols": [0.0, 0.5, 1.0],
+ "rows": [0.0, 1.0],
+ "cells": [[0, 0, 1, 1], [1, 0, 2, 1]]
+ }
+ },
+ {
+ "caption": "Columns: 3",
+ "command": "set_layout",
+ "args":
+ {
+ "cols": [0.0, 0.33, 0.66, 1.0],
+ "rows": [0.0, 1.0],
+ "cells": [[0, 0, 1, 1], [1, 0, 2, 1], [2, 0, 3, 1]]
+ }
+ },
+ {
+ "caption": "Columns: 4",
+ "command": "set_layout",
+ "args":
+ {
+ "cols": [0.0, 0.25, 0.5, 0.75, 1.0],
+ "rows": [0.0, 1.0],
+ "cells": [[0, 0, 1, 1], [1, 0, 2, 1], [2, 0, 3, 1], [3, 0, 4, 1]]
+ }
+ },
+ {
+ "caption": "Rows: 2",
+ "command": "set_layout",
+ "args":
+ {
+ "cols": [0.0, 1.0],
+ "rows": [0.0, 0.5, 1.0],
+ "cells": [[0, 0, 1, 1], [0, 1, 1, 2]]
+ }
+ },
+ {
+ "caption": "Rows: 3",
+ "command": "set_layout",
+ "args":
+ {
+ "cols": [0.0, 1.0],
+ "rows": [0.0, 0.33, 0.66, 1.0],
+ "cells": [[0, 0, 1, 1], [0, 1, 1, 2], [0, 2, 1, 3]]
+ }
+ },
+ {
+ "caption": "Grid: 4",
+ "command": "set_layout",
+ "args":
+ {
+ "cols": [0.0, 0.5, 1.0],
+ "rows": [0.0, 0.5, 1.0],
+ "cells":
+ [
+ [0, 0, 1, 1], [1, 0, 2, 1],
+ [0, 1, 1, 2], [1, 1, 2, 2]
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "caption": "Focus Group",
+ "mnemonic": "F",
+ "children":
+ [
+ { "command": "focus_group", "args": {"group": 0}, "caption": "Group 1" },
+ { "command": "focus_group", "args": {"group": 1}, "caption": "Group 2" },
+ { "command": "focus_group", "args": {"group": 2}, "caption": "Group 3" },
+ { "command": "focus_group", "args": {"group": 3}, "caption": "Group 4" }
+ ]
+ },
+ {
+ "caption": "Move File To Group",
+ "mnemonic": "M",
+ "children":
+ [
+ { "command": "move_to_group", "args": {"group": 0}, "caption": "Group 1" },
+ { "command": "move_to_group", "args": {"group": 1}, "caption": "Group 2" },
+ { "command": "move_to_group", "args": {"group": 2}, "caption": "Group 3" },
+ { "command": "move_to_group", "args": {"group": 3}, "caption": "Group 4" }
+ ]
+ },
+ { "caption": "-" },
+ {
+ "caption": "Syntax",
+ "mnemonic": "S",
+ "id": "syntax",
+ "children": [ { "command": "$file_types" } ]
+ },
+ {
+ "caption": "Indentation",
+ "mnemonic": "I",
+ "id": "indentation",
+ "children":
+ [
+ { "command": "toggle_setting", "args": {"setting": "translate_tabs_to_spaces"}, "caption": "Indent Using Spaces", "checkbox": true },
+ { "caption": "-" },
+ { "command": "set_setting", "args": {"setting": "tab_size", "value": 1}, "caption": "Tab Width: 1", "checkbox": true },
+ { "command": "set_setting", "args": {"setting": "tab_size", "value": 2}, "caption": "Tab Width: 2", "checkbox": true },
+ { "command": "set_setting", "args": {"setting": "tab_size", "value": 3}, "caption": "Tab Width: 3", "checkbox": true },
+ { "command": "set_setting", "args": {"setting": "tab_size", "value": 4}, "caption": "Tab Width: 4", "checkbox": true },
+ { "command": "set_setting", "args": {"setting": "tab_size", "value": 5}, "caption": "Tab Width: 5", "checkbox": true },
+ { "command": "set_setting", "args": {"setting": "tab_size", "value": 6}, "caption": "Tab Width: 6", "checkbox": true },
+ { "command": "set_setting", "args": {"setting": "tab_size", "value": 7}, "caption": "Tab Width: 7", "checkbox": true },
+ { "command": "set_setting", "args": {"setting": "tab_size", "value": 8}, "caption": "Tab Width: 8", "checkbox": true },
+ { "caption": "-" },
+ { "command": "detect_indentation", "caption": "Guess Settings From Buffer" },
+ { "caption": "-" },
+ { "command": "expand_tabs", "caption": "Convert Indentation to Spaces", "args": {"set_translate_tabs": true} },
+ { "command": "unexpand_tabs", "caption": "Convert Indentation to Tabs", "args": {"set_translate_tabs": true} }
+ ]
+ },
+ {
+ "caption": "Line Endings",
+ "mnemonic": "n",
+ "id": "line_endings",
+ "children":
+ [
+ { "command": "set_line_ending", "args": {"type": "windows"}, "caption": "Windows", "checkbox": true },
+ { "command": "set_line_ending", "args": {"type": "unix"}, "caption": "Unix", "checkbox": true },
+ { "command": "set_line_ending", "args": {"type": "cr"}, "caption": "Mac OS 9", "checkbox": true }
+ ]
+ },
+ { "caption": "-", "id": "settings" },
+ { "command": "toggle_setting", "args": {"setting": "word_wrap"}, "caption": "Word Wrap", "mnemonic": "w", "checkbox": true },
+ {
+ "caption": "Word Wrap Column",
+ "children":
+ [
+ { "command": "set_setting", "args": {"setting": "wrap_width", "value": 0}, "caption": "Automatic", "checkbox": true },
+ { "caption": "-" },
+ { "command": "set_setting", "args": {"setting": "wrap_width", "value": 70}, "caption": "70", "checkbox": true },
+ { "command": "set_setting", "args": {"setting": "wrap_width", "value": 78}, "caption": "78", "checkbox": true },
+ { "command": "set_setting", "args": {"setting": "wrap_width", "value": 80}, "caption": "80", "checkbox": true },
+ { "command": "set_setting", "args": {"setting": "wrap_width", "value": 100}, "caption": "100", "checkbox": true },
+ { "command": "set_setting", "args": {"setting": "wrap_width", "value": 120}, "caption": "120", "checkbox": true }
+ ]
+ },
+ {
+ "caption": "Ruler",
+ "children":
+ [
+ { "command": "set_setting", "args": {"setting": "rulers", "value": []}, "caption": "None", "checkbox": true },
+ { "caption": "-" },
+ { "command": "set_setting", "args": {"setting": "rulers", "value": [70]}, "caption": "70", "checkbox": true },
+ { "command": "set_setting", "args": {"setting": "rulers", "value": [78]}, "caption": "78", "checkbox": true },
+ { "command": "set_setting", "args": {"setting": "rulers", "value": [80]}, "caption": "80", "checkbox": true },
+ { "command": "set_setting", "args": {"setting": "rulers", "value": [100]}, "caption": "100", "checkbox": true },
+ { "command": "set_setting", "args": {"setting": "rulers", "value": [120]}, "caption": "120", "checkbox": true }
+ ]
+ },
+ { "caption": "-" },
+ { "command": "toggle_setting", "args": {"setting": "spell_check"}, "caption": "Spell Check", "checkbox": true },
+ { "command": "next_misspelling" },
+ { "command": "prev_misspelling" },
+ {
+ "caption": "Dictionary",
+ "children": [ { "command": "$dictionaries" } ]
+ }
+ ]
+ },
+ {
+ "caption": "Goto",
+ "mnemonic": "G",
+ "id": "goto",
+ "children":
+ [
+ { "command": "show_overlay", "args": {"overlay": "goto", "show_files": true}, "caption": "Goto Anything…", "mnemonic": "A" },
+ { "caption": "-" },
+ { "command": "show_overlay", "args": {"overlay": "goto", "text": "@"}, "caption": "Goto Symbol…" },
+ // { "command": "show_overlay", "args": {"overlay": "goto", "text": "#"}, "caption": "Goto Word…" },
+ { "command": "show_overlay", "args": {"overlay": "goto", "text": ":"}, "caption": "Goto Line…" },
+ { "caption": "-" },
+ {
+ "caption": "Switch File",
+ "mnemonic": "t",
+ "id": "switch_file",
+ "children":
+ [
+ { "command": "next_view", "caption": "Next File" },
+ { "command": "prev_view", "caption": "Previous File" },
+ { "caption": "-" },
+ { "command": "next_view_in_stack", "caption": "Next File in Stack" },
+ { "command": "prev_view_in_stack", "caption": "Previous File in Stack" },
+ { "caption": "-" },
+ { "command": "switch_file", "args": {"extensions": ["cpp", "cxx", "cc", "c", "hpp", "hxx", "h", "ipp", "inl", "m", "mm"]}, "caption": "Switch Header/Implementation", "mnemonic": "H" },
+ { "caption": "-" },
+ { "command": "select_by_index", "args": { "index": 0 } },
+ { "command": "select_by_index", "args": { "index": 1 } },
+ { "command": "select_by_index", "args": { "index": 2 } },
+ { "command": "select_by_index", "args": { "index": 3 } },
+ { "command": "select_by_index", "args": { "index": 4 } },
+ { "command": "select_by_index", "args": { "index": 5 } },
+ { "command": "select_by_index", "args": { "index": 6 } },
+ { "command": "select_by_index", "args": { "index": 7 } },
+ { "command": "select_by_index", "args": { "index": 8 } },
+ { "command": "select_by_index", "args": { "index": 9 } }
+ ]
+ },
+ { "caption": "-" },
+ {
+ "caption": "Scroll",
+ "mnemonic": "S",
+ "id": "scroll",
+ "children":
+ [
+ { "command": "show_at_center", "caption": "Scroll to Selection" },
+ { "command": "scroll_lines", "args": {"amount": 1.0 }, "caption": "Line Up" },
+ { "command": "scroll_lines", "args": {"amount": -1.0 }, "caption": "Line Down" }
+ ]
+ },
+ {
+ "caption": "Bookmarks",
+ "mnemonic": "b",
+ "id": "bookmarks",
+ "children":
+ [
+ { "command": "toggle_bookmark" },
+ { "command": "next_bookmark" },
+ { "command": "prev_bookmark" },
+ { "command": "clear_bookmarks" },
+ { "command": "select_all_bookmarks" },
+ { "caption": "-" },
+ { "command": "select_bookmark", "args": {"index": 0} },
+ { "command": "select_bookmark", "args": {"index": 1} },
+ { "command": "select_bookmark", "args": {"index": 2} },
+ { "command": "select_bookmark", "args": {"index": 3} },
+ { "command": "select_bookmark", "args": {"index": 4} },
+ { "command": "select_bookmark", "args": {"index": 5} },
+ { "command": "select_bookmark", "args": {"index": 6} },
+ { "command": "select_bookmark", "args": {"index": 7} },
+ { "command": "select_bookmark", "args": {"index": 8} },
+ { "command": "select_bookmark", "args": {"index": 9} },
+ { "command": "select_bookmark", "args": {"index": 10} },
+ { "command": "select_bookmark", "args": {"index": 11} },
+ { "command": "select_bookmark", "args": {"index": 12} },
+ { "command": "select_bookmark", "args": {"index": 13} },
+ { "command": "select_bookmark", "args": {"index": 14} },
+ { "command": "select_bookmark", "args": {"index": 15} }
+ ]
+ },
+ { "caption": "-" },
+ { "command": "move_to", "args": {"to": "brackets"}, "caption": "Jump to Matching Bracket" }
+ ]
+ },
+ {
+ "caption": "Tools",
+ "mnemonic": "T",
+ "id": "tools",
+ "children":
+ [
+ { "command": "show_overlay", "args": {"overlay": "command_palette"}, "caption": "Command Palette…" },
+ { "command": "show_overlay", "args": {"overlay": "command_palette", "text": "Snippet: "}, "caption": "Snippets…" },
+ { "caption": "-", "id": "build" },
+ {
+ "caption": "Build System",
+ "mnemonic": "u",
+ "children":
+ [
+ { "command": "set_build_system", "args": { "file": "" }, "caption": "Automatic", "checkbox": true },
+ { "caption": "-" },
+ { "command": "set_build_system", "args": {"index": 0}, "checkbox": true },
+ { "command": "set_build_system", "args": {"index": 1}, "checkbox": true },
+ { "command": "set_build_system", "args": {"index": 2}, "checkbox": true },
+ { "command": "set_build_system", "args": {"index": 3}, "checkbox": true },
+ { "command": "set_build_system", "args": {"index": 4}, "checkbox": true },
+ { "command": "set_build_system", "args": {"index": 5}, "checkbox": true },
+ { "command": "set_build_system", "args": {"index": 6}, "checkbox": true },
+ { "command": "set_build_system", "args": {"index": 7}, "checkbox": true },
+ { "command": "$build_systems" },
+ { "caption": "-" },
+ { "command": "new_build_system", "caption": "New Build System…" }
+ ]
+ },
+ { "command": "build", "mnemonic": "B" },
+ { "command": "build", "args": {"variant": "Run"}, "mnemonic": "R" },
+ { "command": "exec", "args": {"kill": true}, "caption": "Cancel Build", "mnemonic": "C" },
+ {
+ "caption": "Build Results",
+ "mnemonic": "R",
+ "children":
+ [
+ { "command": "show_panel", "args": {"panel": "output.exec"}, "caption": "Show Build Results", "mnemonic": "S" },
+ { "command": "next_result", "mnemonic": "N" },
+ { "command": "prev_result", "caption": "Previous Result", "mnemonic": "P" }
+ ]
+ },
+ { "command": "toggle_save_all_on_build", "caption": "Save All on Build", "mnemonic": "A", "checkbox": true },
+ { "caption": "-", "id": "macros" },
+ { "command": "toggle_record_macro", "mnemonic": "M" },
+ { "command": "run_macro", "caption": "Playback Macro", "mnemonic": "P" },
+ { "command": "save_macro", "caption": "Save Macro…", "mnemonic": "v" },
+ {
+ "caption": "Macros",
+ "children": [ { "command": "$macros" } ]
+ },
+ { "caption": "-" },
+ { "command": "new_plugin", "caption": "New Plugin…" },
+ { "command": "new_snippet", "caption": "New Snippet…" },
+ { "caption": "-", "id": "end" }
+ ]
+ },
+ {
+ "caption": "Project",
+ "mnemonic": "P",
+ "id": "project",
+ "children":
+ [
+ { "command": "prompt_open_project", "caption": "Open Project…", "mnemonic": "O" },
+ {
+ "caption": "Recent Projects",
+ "mnemonic": "R",
+ "children":
+ [
+ { "command": "open_recent_project", "args": {"index": 0 } },
+ { "command": "open_recent_project", "args": {"index": 1 } },
+ { "command": "open_recent_project", "args": {"index": 2 } },
+ { "command": "open_recent_project", "args": {"index": 3 } },
+ { "command": "open_recent_project", "args": {"index": 4 } },
+ { "command": "open_recent_project", "args": {"index": 5 } },
+ { "command": "open_recent_project", "args": {"index": 6 } },
+ { "command": "open_recent_project", "args": {"index": 7 } },
+ { "caption": "-" },
+ { "command": "clear_recent_projects", "caption": "Clear Items" }
+ ]
+ },
+ { "caption": "-" },
+ { "command": "prompt_select_project", "caption": "Switch Project in Window…", "mnemonic": "S" },
+ { "command": "save_project_as", "caption": "Save Project As…", "mnemonic": "A" },
+ { "command": "close_project", "mnemonic": "C" },
+ { "command": "open_file", "args": {"file": "${project}"}, "caption": "Edit Project" },
+ { "caption": "-" },
+ { "command": "prompt_add_folder", "caption": "Add Folder to Project…", "mnemonic": "d" },
+ { "command": "close_folder_list", "caption": "Remove all Folders from Project", "mnemonic": "m" },
+ { "command": "refresh_folder_list", "caption": "Refresh Folders", "mnemonic": "e" },
+ { "caption": "-" },
+ { "caption": "-", "id": "end" }
+ ]
+ },
+ {
+ "caption": "Preferences",
+ "mnemonic": "n",
+ "id": "preferences",
+ "children":
+ [
+ { "command": "open_dir", "args": {"dir": "$packages"}, "caption": "Browse Packages…", "mnemonic": "B" },
+ { "caption": "-" },
+ { "command": "open_file", "args": {"file": "${packages}/Default/Preferences.sublime-settings"}, "caption": "Settings – Default" },
+ { "command": "open_file", "args": {"file": "${packages}/User/Preferences.sublime-settings"}, "caption": "Settings – User" },
+ {
+ "caption": "Settings – More",
+ "children":
+ [
+ { "command": "open_file_settings", "caption": "Syntax Specific – User" },
+ { "command": "open_file", "args": {"file": "${packages}/User/Distraction Free.sublime-settings"}, "caption": "Distraction Free – User" }
+ ]
+ },
+ { "caption": "-" },
+ {
+ "command": "open_file", "args":
+ {
+ "file": "${packages}/Default/Default ($platform).sublime-keymap"
+ },
+ "caption": "Key Bindings – Default"
+ },
+ {
+ "command": "open_file", "args":
+ {
+ "file": "${packages}/User/Default ($platform).sublime-keymap"
+ },
+ "caption": "Key Bindings – User"
+ },
+ { "caption": "-" },
+ {
+ "caption": "Font",
+ "children":
+ [
+ { "command": "increase_font_size", "caption": "Larger" },
+ { "command": "decrease_font_size", "caption": "Smaller" },
+ { "caption": "-" },
+ { "command": "reset_font_size", "caption": "Reset" }
+ ]
+ },
+ {
+ "caption": "Color Scheme",
+ "children": [ { "command": "$color_schemes" } ]
+ }
+ ]
+ },
+ {
+ "caption": "Help",
+ "mnemonic": "H",
+ "id": "help",
+ "children":
+ [
+ { "command": "open_url", "args": {"url": "http://www.sublimetext.com/docs/2/"}, "caption": "Documentation" },
+ { "command": "open_url", "args": {"url": "http://twitter.com/sublimehq"}, "caption": "Twitter" },
+ { "caption": "-" },
+ { "command": "purchase_license"},
+ { "command": "show_license_window", "caption": "Enter License" },
+ { "command": "remove_license"},
+ { "caption": "-" },
+ { "command": "show_about_window", "caption": "About Sublime Text 2", "mnemonic": "A" }
+ ]
+ }
+]
diff --git a/sublime/Packages/Default/Meta Info Summary (Hackintosh's conflicted copy 2012-07-24).cache b/sublime/Packages/Default/Meta Info Summary (Hackintosh's conflicted copy 2012-07-24).cache
new file mode 100644
index 0000000..d552982
Binary files /dev/null and b/sublime/Packages/Default/Meta Info Summary (Hackintosh's conflicted copy 2012-07-24).cache differ
diff --git a/sublime/Packages/Default/Meta Info Summary (Ruxton's conflicted copy 2012-07-23).cache b/sublime/Packages/Default/Meta Info Summary (Ruxton's conflicted copy 2012-07-23).cache
new file mode 100644
index 0000000..fd370d3
Binary files /dev/null and b/sublime/Packages/Default/Meta Info Summary (Ruxton's conflicted copy 2012-07-23).cache differ
diff --git a/sublime/Packages/Default/Meta Info Summary.cache b/sublime/Packages/Default/Meta Info Summary.cache
new file mode 100644
index 0000000..5c5990c
Binary files /dev/null and b/sublime/Packages/Default/Meta Info Summary.cache differ
diff --git a/sublime/Packages/Default/Minimap.sublime-settings b/sublime/Packages/Default/Minimap.sublime-settings
new file mode 100644
index 0000000..2e03071
--- /dev/null
+++ b/sublime/Packages/Default/Minimap.sublime-settings
@@ -0,0 +1,5 @@
+{
+ "rulers": [],
+ "gutter": false,
+ "draw_indent_guides": false
+}
diff --git a/sublime/Packages/Default/Miscellaneous.tmPreferences.cache b/sublime/Packages/Default/Miscellaneous.tmPreferences.cache
new file mode 100644
index 0000000..e94d1ca
Binary files /dev/null and b/sublime/Packages/Default/Miscellaneous.tmPreferences.cache differ
diff --git a/sublime/Packages/Default/Preferences (Linux).sublime-settings b/sublime/Packages/Default/Preferences (Linux).sublime-settings
new file mode 100644
index 0000000..f3e8ca1
--- /dev/null
+++ b/sublime/Packages/Default/Preferences (Linux).sublime-settings
@@ -0,0 +1,5 @@
+{
+ "font_face": "Monospace",
+ "font_size": 10,
+ "mouse_wheel_switches_tabs": true
+}
diff --git a/sublime/Packages/Default/Preferences (OSX).sublime-settings b/sublime/Packages/Default/Preferences (OSX).sublime-settings
new file mode 100644
index 0000000..5480b8a
--- /dev/null
+++ b/sublime/Packages/Default/Preferences (OSX).sublime-settings
@@ -0,0 +1,9 @@
+{
+ "font_face": "Menlo Regular",
+ "font_size": 12,
+ "scroll_past_end": false,
+ "find_selected_text": false,
+ "move_to_limit_on_up_down": true,
+ "close_windows_when_empty": true,
+ "show_full_path": false
+}
diff --git a/sublime/Packages/Default/Preferences (Windows).sublime-settings b/sublime/Packages/Default/Preferences (Windows).sublime-settings
new file mode 100644
index 0000000..0eeb1f9
--- /dev/null
+++ b/sublime/Packages/Default/Preferences (Windows).sublime-settings
@@ -0,0 +1,4 @@
+{
+ "font_face": "Consolas",
+ "font_size": 10
+}
diff --git a/sublime/Packages/Default/Preferences.sublime-settings b/sublime/Packages/Default/Preferences.sublime-settings
new file mode 100644
index 0000000..bf86fc6
--- /dev/null
+++ b/sublime/Packages/Default/Preferences.sublime-settings
@@ -0,0 +1,325 @@
+// While you can edit this file, it's best to put your changes in
+// "User/Preferences.sublime-settings", which overrides the settings in here.
+//
+// Settings may also be placed in file type specific options files, for
+// example, in Packages/Python/Python.sublime-settings for python files.
+{
+ // Sets the colors used within the text area
+ "color_scheme": "Packages/Color Scheme - Default/Monokai.tmTheme",
+
+ // Note that the font_face and font_size are overriden in the platform
+ // specific settings file, for example, "Preferences (Linux).sublime-settings".
+ // Because of this, setting them here will have no effect: you must set them
+ // in your User File Preferences.
+ "font_face": "",
+ "font_size": 10,
+
+ // Valid options are "no_bold", "no_italic", "no_antialias", "gray_antialias",
+ // "subpixel_antialias", "no_round" (OS X only) and "directwrite" (Windows only)
+ "font_options": [],
+
+ // Characters that are considered to separate words
+ "word_separators": "./\\()\"'-:,.;<>~!@#$%^&*|+=[]{}`~?",
+
+ // Set to false to prevent line numbers being drawn in the gutter
+ "line_numbers": true,
+
+ // Set to false to hide the gutter altogether
+ "gutter": true,
+
+ // Spacing between the gutter and the text
+ "margin": 4,
+
+ // Fold buttons are the triangles shown in the gutter to fold regions of text
+ "fold_buttons": true,
+
+ // Hides the fold buttons unless the mouse is over the gutter
+ "fade_fold_buttons": true,
+
+ // Columns in which to display vertical rulers
+ "rulers": [],
+
+ // Set to true to turn spell checking on by default
+ "spell_check": false,
+
+ // The number of spaces a tab is considered equal to
+ "tab_size": 4,
+
+ // Set to true to insert spaces when tab is pressed
+ "translate_tabs_to_spaces": false,
+
+ // If translate_tabs_to_spaces is true, use_tab_stops will make tab and
+ // backspace insert/delete up to the next tabstop
+ "use_tab_stops": true,
+
+ // Set to false to disable detection of tabs vs. spaces on load
+ "detect_indentation": true,
+
+ // Calculates indentation automatically when pressing enter
+ "auto_indent": true,
+
+ // Makes auto indent a little smarter, e.g., by indenting the next line
+ // after an if statement in C. Requires auto_indent to be enabled.
+ "smart_indent": true,
+
+ // Adds whitespace up to the first open bracket when indenting. Requires
+ // auto_indent to be enabled.
+ "indent_to_bracket": false,
+
+ // Trims white space added by auto_indent when moving the caret off the
+ // line.
+ "trim_automatic_white_space": true,
+
+ // Disables horizontal scrolling if enabled.
+ // May be set to true, false, or "auto", where it will be disabled for
+ // source code, and otherwise enabled.
+ "word_wrap": "auto",
+
+ // Set to a value other than 0 to force wrapping at that column rather than the
+ // window width
+ "wrap_width": 0,
+
+ // Set to false to prevent word wrapped lines from being indented to the same
+ // level
+ "indent_subsequent_lines": true,
+
+ // Draws text centered in the window rather than left aligned
+ "draw_centered": false,
+
+ // Controls auto pairing of quotes, brackets etc
+ "auto_match_enabled": true,
+
+ // Word list to use for spell checking
+ "dictionary": "Packages/Language - English/en_US.dic",
+
+ // Set to true to draw a border around the visible rectangle on the minimap.
+ // The color of the border will be determined by the "minimapBorder" key in
+ // the color scheme
+ "draw_minimap_border": false,
+
+ // If enabled, will highlight any line with a caret
+ "highlight_line": false,
+
+ // Valid values are "smooth", "phase", "blink", "wide" and "solid".
+ "caret_style": "smooth",
+
+ // Set to false to disable underlining the brackets surrounding the caret
+ "match_brackets": true,
+
+ // Set to false if you'd rather only highlight the brackets when the caret is
+ // next to one
+ "match_brackets_content": true,
+
+ // Set to false to not highlight square brackets. This only takes effect if
+ // match_brackets is true
+ "match_brackets_square": true,
+
+ // Set to false to not highlight curly brackets. This only takes effect if
+ // match_brackets is true
+ "match_brackets_braces": true,
+
+ // Set to false to not highlight angle brackets. This only takes effect if
+ // match_brackets is true
+ "match_brackets_angle": false,
+
+ // Enable visualization of the matching tag in HTML and XML
+ "match_tags": true,
+
+ // Highlights other occurrences of the currently selected text
+ "match_selection": true,
+
+ // Additional spacing at the top of each line, in pixels
+ "line_padding_top": 0,
+
+ // Additional spacing at the bottom of each line, in pixels
+ "line_padding_bottom": 0,
+
+ // Set to false to disable scrolling past the end of the buffer.
+ // On OS X, this value is overridden in the platform specific settings, so
+ // you'll need to place this line in your user settings to override it.
+ "scroll_past_end": true,
+
+ // This controls what happens when pressing up or down when on the first
+ // or last line.
+ // On OS X, this value is overridden in the platform specific settings, so
+ // you'll need to place this line in your user settings to override it.
+ "move_to_limit_on_up_down": false,
+
+ // Set to "none" to turn off drawing white space, "selection" to draw only the
+ // white space within the selection, and "all" to draw all white space
+ "draw_white_space": "selection",
+
+ // Set to false to turn off the indentation guides.
+ // The color and width of the indent guides may be customized by editing
+ // the corresponding .tmTheme file, and specifying the colors "guide",
+ // "activeGuide" and "stackGuide"
+ "draw_indent_guides": true,
+
+ // Controls how the indent guides are drawn, valid options are
+ // "draw_normal" and "draw_active". draw_active will draw the indent
+ // guides containing the caret in a different color.
+ "indent_guide_options": ["draw_normal"],
+
+ // Set to true to removing trailing white space on save
+ "trim_trailing_white_space_on_save": false,
+
+ // Set to true to ensure the last line of the file ends in a newline
+ // character when saving
+ "ensure_newline_at_eof_on_save": false,
+
+ // Set to true to automatically save files when switching to a different file
+ // or application
+ "save_on_focus_lost": false,
+
+ // The encoding to use when the encoding can't be determined automatically.
+ // ASCII, UTF-8 and UTF-16 encodings will be automatically detected.
+ "fallback_encoding": "Western (Windows 1252)",
+
+ // Encoding used when saving new files, and files opened with an undefined
+ // encoding (e.g., plain ascii files). If a file is opened with a specific
+ // encoding (either detected or given explicitly), this setting will be
+ // ignored, and the file will be saved with the encoding it was opened
+ // with.
+ "default_encoding": "UTF-8",
+
+ // Files containing null bytes are opened as hexadecimal by default
+ "enable_hexadecimal_encoding": true,
+
+ // Determines what character(s) are used to terminate each line in new files.
+ // Valid values are 'system' (whatever the OS uses), 'windows' (CRLF) and
+ // 'unix' (LF only).
+ "default_line_ending": "system",
+
+ // When enabled, pressing tab will insert the best matching completion.
+ // When disabled, tab will only trigger snippets or insert a tab.
+ // Shift+tab can be used to insert an explicit tab when tab_completion is
+ // enabled.
+ "tab_completion": true,
+
+ // Enable auto complete to be triggered automatically when typing.
+ "auto_complete": true,
+
+ // The maximum file size where auto complete will be automatically triggered.
+ "auto_complete_size_limit": 4194304,
+
+ // The delay, in ms, before the auto complete window is shown after typing
+ "auto_complete_delay": 50,
+
+ // Controls what scopes auto complete will be triggered in
+ "auto_complete_selector": "source - comment",
+
+ // Additional situations to trigger auto complete
+ "auto_complete_triggers": [ {"selector": "text.html", "characters": "<"} ],
+
+ // By default, auto complete will commit the current completion on enter.
+ // This setting can be used to make it complete on tab instead.
+ // Completing on tab is generally a superior option, as it removes
+ // ambiguity between committing the completion and inserting a newline.
+ "auto_complete_commit_on_tab": false,
+
+ // Controls if auto complete is shown when snippet fields are active.
+ // Only relevant if auto_complete_commit_on_tab is true.
+ "auto_complete_with_fields": false,
+
+ // By default, shift+tab will only unindent if the selection spans
+ // multiple lines. When pressing shift+tab at other times, it'll insert a
+ // tab character - this allows tabs to be inserted when tab_completion is
+ // enabled. Set this to true to make shift+tab always unindent, instead of
+ // inserting tabs.
+ "shift_tab_unindent": false,
+
+ // If true, the selected text will be copied into the find panel when it's
+ // shown.
+ // On OS X, this value is overridden in the platform specific settings, so
+ // you'll need to place this line in your user settings to override it.
+ "find_selected_text": true,
+
+ // When drag_text is enabled, clicking on selected text will begin a
+ // drag-drop operation
+ "drag_text": true,
+
+ //
+ // User Interface Settings
+ //
+
+ // The theme controls the look of Sublime Text's UI (buttons, tabs, scroll bars, etc)
+ "theme": "Default.sublime-theme",
+
+ // Set to 0 to disable smooth scrolling. Set to a value between 0 and 1 to
+ // scroll slower, or set to larger than 1 to scroll faster
+ "scroll_speed": 1.0,
+
+ // Controls side bar animation when expanding or collapsing folders
+ "tree_animation_enabled": true,
+
+ // Makes tabs with modified files more visible
+ "highlight_modified_tabs": false,
+
+ "show_tab_close_buttons": true,
+
+ // Show folders in the side bar in bold
+ "bold_folder_labels": false,
+
+ // OS X 10.7 only: Set to true to disable Lion style full screen support.
+ // Sublime Text must be restarted for this to take effect.
+ "use_simple_full_screen": false,
+
+ // Valid values are "system", "enabled" and "disabled"
+ "overlay_scroll_bars": "system",
+
+ //
+ // Application Behavior Settings
+ //
+
+ // Exiting the application with hot_exit enabled will cause it to close
+ // immediately without prompting. Unsaved modifications and open files will
+ // be preserved and restored when next starting.
+ //
+ // Closing a window with an associated project will also close the window
+ // without prompting, preserving unsaved changes in the workspace file
+ // alongside the project.
+ "hot_exit": true,
+
+ // remember_open_files makes the application start up with the last set of
+ // open files. Changing this to false will have no effect if hot_exit is
+ // true
+ "remember_open_files": true,
+
+ // OS X only: When files are opened from finder, or by dragging onto the
+ // dock icon, this controls if a new window is created or not.
+ "open_files_in_new_window": true,
+
+ // OS X only: This controls if an empty window is created at startup or not.
+ "create_window_at_startup": true,
+
+ // Set to true to close windows as soon as the last file is closed, unless
+ // there's a folder open within the window. This is always enabled on OS X,
+ // changing it here won't modify the behavior.
+ "close_windows_when_empty": false,
+
+ // Show the full path to files in the title bar.
+ // On OS X, this value is overridden in the platform specific settings, so
+ // you'll need to place this line in your user settings to override it.
+ "show_full_path": true,
+
+ // Shows the Build Results panel when building. If set to false, the Build
+ // Results can be shown via the Tools/Build Results menu.
+ "show_panel_on_build": true,
+
+ // Preview file contents when clicking on a file in the side bar. Double
+ // clicking or editing the preview will open the file and assign it a tab.
+ "preview_on_click": true,
+
+ // folder_exclude_patterns and file_exclude_patterns control which files
+ // are listed in folders on the side bar. These can also be set on a per-
+ // project basis.
+ "folder_exclude_patterns": [".svn", ".git", ".hg", "CVS"],
+ "file_exclude_patterns": ["*.pyc", "*.pyo", "*.exe", "*.dll", "*.obj","*.o", "*.a", "*.lib", "*.so", "*.dylib", "*.ncb", "*.sdf", "*.suo", "*.pdb", "*.idb", ".DS_Store", "*.class", "*.psd", "*.db"],
+ // These files will still show up in the side bar, but won't be included in
+ // Goto Anything or Find in Files
+ "binary_file_patterns": ["*.jpg", "*.jpeg", "*.png", "*.gif", "*.ttf", "*.tga", "*.dds", "*.ico", "*.eot", "*.pdf", "*.swf", "*.jar", "*.zip"],
+
+ // List any packages to ignore here. When removing entries from this list,
+ // a restart may be required if the package contains plugins.
+ "ignored_packages": ["Vintage"]
+}
diff --git a/sublime/Packages/Default/Regex Format Widget.sublime-settings b/sublime/Packages/Default/Regex Format Widget.sublime-settings
new file mode 100644
index 0000000..e69de29
diff --git a/sublime/Packages/Default/Regex Widget.sublime-settings b/sublime/Packages/Default/Regex Widget.sublime-settings
new file mode 100644
index 0000000..cf1b634
--- /dev/null
+++ b/sublime/Packages/Default/Regex Widget.sublime-settings
@@ -0,0 +1,3 @@
+{
+ "syntax": "Packages/Regular Expressions/RegExp.tmLanguage"
+}
diff --git a/sublime/Packages/Default/Side Bar Mount Point.sublime-menu b/sublime/Packages/Default/Side Bar Mount Point.sublime-menu
new file mode 100644
index 0000000..3411b67
--- /dev/null
+++ b/sublime/Packages/Default/Side Bar Mount Point.sublime-menu
@@ -0,0 +1,4 @@
+[
+ { "caption": "-", "id": "folder_commands" },
+ { "caption": "Remove Folder from Project", "command": "remove_folder", "args": { "dirs": []} }
+]
diff --git a/sublime/Packages/Default/Side Bar.sublime-menu b/sublime/Packages/Default/Side Bar.sublime-menu
new file mode 100644
index 0000000..3d308b9
--- /dev/null
+++ b/sublime/Packages/Default/Side Bar.sublime-menu
@@ -0,0 +1,11 @@
+[
+ { "caption": "New File", "command": "new_file_at", "args": {"dirs": []} },
+ { "caption": "Rename…", "command": "rename_path", "args": {"paths": []} },
+ { "caption": "Delete File", "command": "delete_file", "args": {"files": []} },
+ { "caption": "Open Containing Folder…", "command": "open_containing_folder", "args": {"files": []} },
+ { "caption": "-", "id": "folder_commands" },
+ { "caption": "New Folder…", "command": "new_folder", "args": {"dirs": []} },
+ { "caption": "Delete Folder", "command": "delete_folder", "args": {"dirs": []} },
+ { "caption": "Find in Folder…", "command": "find_in_folder", "args": {"dirs": []} },
+ { "caption": "-", "id": "end" }
+]
diff --git a/sublime/Packages/Default/Startup (Hackintosh's conflicted copy 2012-07-23).cache b/sublime/Packages/Default/Startup (Hackintosh's conflicted copy 2012-07-23).cache
new file mode 100644
index 0000000..2195ace
Binary files /dev/null and b/sublime/Packages/Default/Startup (Hackintosh's conflicted copy 2012-07-23).cache differ
diff --git a/sublime/Packages/Default/Startup (Hackintosh's conflicted copy 2012-07-24).cache b/sublime/Packages/Default/Startup (Hackintosh's conflicted copy 2012-07-24).cache
new file mode 100644
index 0000000..521394d
Binary files /dev/null and b/sublime/Packages/Default/Startup (Hackintosh's conflicted copy 2012-07-24).cache differ
diff --git a/sublime/Packages/Default/Startup.cache b/sublime/Packages/Default/Startup.cache
new file mode 100644
index 0000000..9021f6d
Binary files /dev/null and b/sublime/Packages/Default/Startup.cache differ
diff --git a/sublime/Packages/Default/Symbol List.tmPreferences b/sublime/Packages/Default/Symbol List.tmPreferences
new file mode 100644
index 0000000..0eeaf41
--- /dev/null
+++ b/sublime/Packages/Default/Symbol List.tmPreferences
@@ -0,0 +1,17 @@
+
+
+
+
+ name
+ Symbol List
+ scope
+ entity.name.function, entity.name.type, meta.toc-list
+ settings
+
+ showInSymbolList
+ 1
+
+ uuid
+ 0A0DA1FC-59DE-4FD9-9A2C-63C6811A3C39
+
+
diff --git a/sublime/Packages/Default/Symbol List.tmPreferences.cache b/sublime/Packages/Default/Symbol List.tmPreferences.cache
new file mode 100644
index 0000000..4290a12
Binary files /dev/null and b/sublime/Packages/Default/Symbol List.tmPreferences.cache differ
diff --git a/sublime/Packages/Default/Syntax Summary (Hackintosh's conflicted copy 2012-07-23).cache b/sublime/Packages/Default/Syntax Summary (Hackintosh's conflicted copy 2012-07-23).cache
new file mode 100644
index 0000000..49d62d8
Binary files /dev/null and b/sublime/Packages/Default/Syntax Summary (Hackintosh's conflicted copy 2012-07-23).cache differ
diff --git a/sublime/Packages/Default/Syntax Summary (Hackintosh's conflicted copy 2012-07-24).cache b/sublime/Packages/Default/Syntax Summary (Hackintosh's conflicted copy 2012-07-24).cache
new file mode 100644
index 0000000..cdec137
Binary files /dev/null and b/sublime/Packages/Default/Syntax Summary (Hackintosh's conflicted copy 2012-07-24).cache differ
diff --git a/sublime/Packages/Default/Syntax Summary.cache b/sublime/Packages/Default/Syntax Summary.cache
new file mode 100644
index 0000000..b0cc1e9
Binary files /dev/null and b/sublime/Packages/Default/Syntax Summary.cache differ
diff --git a/sublime/Packages/Default/Syntax.sublime-menu b/sublime/Packages/Default/Syntax.sublime-menu
new file mode 100644
index 0000000..b555b7b
--- /dev/null
+++ b/sublime/Packages/Default/Syntax.sublime-menu
@@ -0,0 +1,6 @@
+[
+ {
+ "caption": "Syntax",
+ "children": [ { "command": "$file_types" } ]
+ }
+]
diff --git a/sublime/Packages/Default/Tab Context.sublime-menu b/sublime/Packages/Default/Tab Context.sublime-menu
new file mode 100644
index 0000000..b5781f0
--- /dev/null
+++ b/sublime/Packages/Default/Tab Context.sublime-menu
@@ -0,0 +1,8 @@
+[
+ { "command": "close_by_index", "args": { "group": -1, "index": -1 }, "caption": "Close" },
+ { "command": "close_others_by_index", "args": { "group": -1, "index": -1 }, "caption": "Close others" },
+ { "command": "close_to_right_by_index", "args": { "group": -1, "index": -1 }, "caption": "Close tabs to the right" },
+ { "caption": "-" },
+ { "command": "new_file" },
+ { "command": "prompt_open_file", "caption": "Open file" }
+]
diff --git a/sublime/Packages/Default/Widget Context.sublime-menu b/sublime/Packages/Default/Widget Context.sublime-menu
new file mode 100644
index 0000000..971328a
--- /dev/null
+++ b/sublime/Packages/Default/Widget Context.sublime-menu
@@ -0,0 +1,7 @@
+[
+ { "command": "copy" },
+ { "command": "cut" },
+ { "command": "paste" },
+ { "caption": "-" },
+ { "command": "select_all" }
+]
diff --git a/sublime/Packages/Default/Widget.sublime-settings b/sublime/Packages/Default/Widget.sublime-settings
new file mode 100644
index 0000000..fe8c1fa
--- /dev/null
+++ b/sublime/Packages/Default/Widget.sublime-settings
@@ -0,0 +1,15 @@
+{
+ "rulers": [],
+ "translate_tabs_to_spaces": false,
+ "gutter": false,
+ "margin": 1,
+ "syntax": "Packages/Text/Plain text.tmLanguage",
+ "is_widget": true,
+ "word_wrap": false,
+ "auto_match_enabled": false,
+ "scroll_past_end": false,
+ "draw_indent_guides": false,
+ "draw_centered": false,
+ "auto_complete": false,
+ "match_selection": false
+}
diff --git a/sublime/Packages/Default/comment (Hackintosh's conflicted copy 2012-07-24).pyc b/sublime/Packages/Default/comment (Hackintosh's conflicted copy 2012-07-24).pyc
new file mode 100644
index 0000000..d9752f3
Binary files /dev/null and b/sublime/Packages/Default/comment (Hackintosh's conflicted copy 2012-07-24).pyc differ
diff --git a/sublime/Packages/Default/comment (Ruxton's conflicted copy 2012-07-23).pyc b/sublime/Packages/Default/comment (Ruxton's conflicted copy 2012-07-23).pyc
new file mode 100644
index 0000000..d4082df
Binary files /dev/null and b/sublime/Packages/Default/comment (Ruxton's conflicted copy 2012-07-23).pyc differ
diff --git a/sublime/Packages/Default/comment.py b/sublime/Packages/Default/comment.py
new file mode 100644
index 0000000..b967afc
--- /dev/null
+++ b/sublime/Packages/Default/comment.py
@@ -0,0 +1,233 @@
+import sublime, sublime_plugin
+
+def advance_to_first_non_white_space_on_line(view, pt):
+ while True:
+ c = view.substr(sublime.Region(pt, pt + 1))
+ if c == " " or c == "\t":
+ pt += 1
+ else:
+ break
+
+ return pt
+
+def has_non_white_space_on_line(view, pt):
+ while True:
+ c = view.substr(sublime.Region(pt, pt + 1))
+ if c == " " or c == "\t":
+ pt += 1
+ else:
+ return c != "\n"
+
+def build_comment_data(view, pt):
+ shell_vars = view.meta_info("shellVariables", pt)
+ if not shell_vars:
+ return ([], [])
+
+ # transform the list of dicts into a single dict
+ all_vars = {}
+ for v in shell_vars:
+ if 'name' in v and 'value' in v:
+ all_vars[v['name']] = v['value']
+
+ line_comments = []
+ block_comments = []
+
+ # transform the dict into a single array of valid comments
+ suffixes = [""] + ["_" + str(i) for i in xrange(1, 10)]
+ for suffix in suffixes:
+ start = all_vars.setdefault("TM_COMMENT_START" + suffix)
+ end = all_vars.setdefault("TM_COMMENT_END" + suffix)
+ mode = all_vars.setdefault("TM_COMMENT_MODE" + suffix)
+ disable_indent = all_vars.setdefault("TM_COMMENT_DISABLE_INDENT" + suffix)
+
+ if start and end:
+ block_comments.append((start, end, disable_indent == 'yes'))
+ block_comments.append((start.strip(), end.strip(), disable_indent == 'yes'))
+ elif start:
+ line_comments.append((start, disable_indent == 'yes'))
+ line_comments.append((start.strip(), disable_indent == 'yes'))
+
+ return (line_comments, block_comments)
+
+class ToggleCommentCommand(sublime_plugin.TextCommand):
+
+ def remove_block_comment(self, view, edit, comment_data, region):
+ (line_comments, block_comments) = comment_data
+
+ # Call extract_scope from the midpoint of the region, as calling it
+ # from the start can give false results if the block comment begin/end
+ # markers are assigned their own scope, as is done in HTML.
+ whole_region = view.extract_scope(region.begin() + region.size() / 2)
+
+ for c in block_comments:
+ (start, end, disable_indent) = c
+ start_region = sublime.Region(whole_region.begin(),
+ whole_region.begin() + len(start))
+ end_region = sublime.Region(whole_region.end() - len(end),
+ whole_region.end())
+
+ if view.substr(start_region) == start and view.substr(end_region) == end:
+ # It's faster to erase the start region first
+ view.erase(edit, start_region)
+
+ end_region = sublime.Region(
+ end_region.begin() - start_region.size(),
+ end_region.end() - start_region.size())
+
+ view.erase(edit, end_region)
+ return True
+
+ return False
+
+ def remove_line_comment(self, view, edit, comment_data, region):
+ (line_comments, block_comments) = comment_data
+
+ found_line_comment = False
+
+ start_positions = [advance_to_first_non_white_space_on_line(view, r.begin())
+ for r in view.lines(region)]
+
+ start_positions.reverse()
+
+ for pos in start_positions:
+ for c in line_comments:
+ (start, disable_indent) = c
+ comment_region = sublime.Region(pos,
+ pos + len(start))
+ if view.substr(comment_region) == start:
+ view.erase(edit, comment_region)
+ found_line_comment = True
+ break
+
+ return found_line_comment
+
+ def is_entirely_line_commented(self, view, comment_data, region):
+ (line_comments, block_comments) = comment_data
+
+ start_positions = [advance_to_first_non_white_space_on_line(view, r.begin())
+ for r in view.lines(region)]
+
+ start_positions = filter(lambda p: has_non_white_space_on_line(view, p),
+ start_positions)
+
+ if len(start_positions) == 0:
+ return False
+
+ for pos in start_positions:
+ found_line_comment = False
+ for c in line_comments:
+ (start, disable_indent) = c
+ comment_region = sublime.Region(pos,
+ pos + len(start))
+ if view.substr(comment_region) == start:
+ found_line_comment = True
+ if not found_line_comment:
+ return False
+
+ return True
+
+ def block_comment_region(self, view, edit, block_comment_data, region):
+ (start, end, disable_indent) = block_comment_data
+
+ if region.empty():
+ # Silly buggers to ensure the cursor doesn't end up after the end
+ # comment token
+ view.replace(edit, sublime.Region(region.end()), 'x')
+ view.insert(edit, region.end() + 1, end)
+ view.replace(edit, sublime.Region(region.end(), region.end() + 1), '')
+ view.insert(edit, region.begin(), start)
+ else:
+ view.insert(edit, region.end(), end)
+ view.insert(edit, region.begin(), start)
+
+ def line_comment_region(self, view, edit, line_comment_data, region):
+ (start, disable_indent) = line_comment_data
+
+ start_positions = [r.begin() for r in view.lines(region)]
+ start_positions.reverse()
+
+ # Remove any blank lines from consideration, they make getting the
+ # comment start markers to line up challenging
+ non_empty_start_positions = filter(lambda p: has_non_white_space_on_line(view, p),
+ start_positions)
+
+ # If all the lines are blank however, just comment away
+ if len(non_empty_start_positions) != 0:
+ start_positions = non_empty_start_positions
+
+ if not disable_indent:
+ min_indent = None
+
+ # This won't work well with mixed spaces and tabs, but really,
+ # don't do that!
+ for pos in start_positions:
+ indent = advance_to_first_non_white_space_on_line(view, pos) - pos
+ if min_indent == None or indent < min_indent:
+ min_indent = indent
+
+ if min_indent != None and min_indent > 0:
+ start_positions = [r + min_indent for r in start_positions]
+
+ for pos in start_positions:
+ view.insert(edit, pos, start)
+
+ def add_comment(self, view, edit, comment_data, prefer_block, region):
+ (line_comments, block_comments) = comment_data
+
+ if len(line_comments) == 0 and len(block_comments) == 0:
+ return
+
+ if len(block_comments) == 0:
+ prefer_block = False
+
+ if len(line_comments) == 0:
+ prefer_block = True
+
+ if region.empty():
+ if prefer_block:
+ # add the block comment
+ self.block_comment_region(view, edit, block_comments[0], region)
+ else:
+ # comment out the line
+ self.line_comment_region(view, edit, line_comments[0], region)
+ else:
+ if prefer_block:
+ # add the block comment
+ self.block_comment_region(view, edit, block_comments[0], region)
+ else:
+ # add a line comment to each line
+ self.line_comment_region(view, edit, line_comments[0], region)
+
+ def run(self, edit, block=False):
+ for region in self.view.sel():
+ comment_data = build_comment_data(self.view, region.begin())
+ if (region.end() != self.view.size() and
+ build_comment_data(self.view, region.end()) != comment_data):
+ # region spans languages, nothing we can do
+ continue
+
+ if self.remove_block_comment(self.view, edit, comment_data, region):
+ continue
+
+ if self.is_entirely_line_commented(self.view, comment_data, region):
+ self.remove_line_comment(self.view, edit, comment_data, region)
+ continue
+
+ has_line_comment = len(comment_data[0]) > 0
+
+ if not has_line_comment and not block and region.empty():
+ # Use block comments to comment out the line
+ line = self.view.line(region.a)
+ line = sublime.Region(
+ advance_to_first_non_white_space_on_line(self.view, line.a),
+ line.b)
+
+ # Try and remove any existing block comment now
+ if self.remove_block_comment(self.view, edit, comment_data, line):
+ continue
+
+ self.add_comment(self.view, edit, comment_data, block, line)
+ continue
+
+ # Add a comment instead
+ self.add_comment(self.view, edit, comment_data, block, region)
diff --git a/sublime/Packages/Default/comment.pyc b/sublime/Packages/Default/comment.pyc
new file mode 100644
index 0000000..d4082df
Binary files /dev/null and b/sublime/Packages/Default/comment.pyc differ
diff --git a/sublime/Packages/Default/copy_path (Hackintosh's conflicted copy 2012-07-23).pyc b/sublime/Packages/Default/copy_path (Hackintosh's conflicted copy 2012-07-23).pyc
new file mode 100644
index 0000000..bcff622
Binary files /dev/null and b/sublime/Packages/Default/copy_path (Hackintosh's conflicted copy 2012-07-23).pyc differ
diff --git a/sublime/Packages/Default/copy_path (Hackintosh's conflicted copy 2012-07-24).pyc b/sublime/Packages/Default/copy_path (Hackintosh's conflicted copy 2012-07-24).pyc
new file mode 100644
index 0000000..bcff622
Binary files /dev/null and b/sublime/Packages/Default/copy_path (Hackintosh's conflicted copy 2012-07-24).pyc differ
diff --git a/sublime/Packages/Default/copy_path.py b/sublime/Packages/Default/copy_path.py
new file mode 100644
index 0000000..fd324c7
--- /dev/null
+++ b/sublime/Packages/Default/copy_path.py
@@ -0,0 +1,10 @@
+import sublime, sublime_plugin
+
+class CopyPathCommand(sublime_plugin.TextCommand):
+ def run(self, edit):
+ if len(self.view.file_name()) > 0:
+ sublime.set_clipboard(self.view.file_name())
+ sublime.status_message("Copied file path")
+
+ def is_enabled(self):
+ return self.view.file_name() and len(self.view.file_name()) > 0
diff --git a/sublime/Packages/Default/copy_path.pyc b/sublime/Packages/Default/copy_path.pyc
new file mode 100644
index 0000000..c26bee9
Binary files /dev/null and b/sublime/Packages/Default/copy_path.pyc differ
diff --git a/sublime/Packages/Default/delete_word (Hackintosh's conflicted copy 2012-07-23).pyc b/sublime/Packages/Default/delete_word (Hackintosh's conflicted copy 2012-07-23).pyc
new file mode 100644
index 0000000..df44ed0
Binary files /dev/null and b/sublime/Packages/Default/delete_word (Hackintosh's conflicted copy 2012-07-23).pyc differ
diff --git a/sublime/Packages/Default/delete_word (Hackintosh's conflicted copy 2012-07-24).pyc b/sublime/Packages/Default/delete_word (Hackintosh's conflicted copy 2012-07-24).pyc
new file mode 100644
index 0000000..df44ed0
Binary files /dev/null and b/sublime/Packages/Default/delete_word (Hackintosh's conflicted copy 2012-07-24).pyc differ
diff --git a/sublime/Packages/Default/delete_word.py b/sublime/Packages/Default/delete_word.py
new file mode 100644
index 0000000..f881038
--- /dev/null
+++ b/sublime/Packages/Default/delete_word.py
@@ -0,0 +1,73 @@
+import sublime, sublime_plugin
+
+def clamp(xmin, x, xmax):
+ if x < xmin:
+ return xmin
+ if x > xmax:
+ return xmax
+ return x;
+
+class DeleteWordCommand(sublime_plugin.TextCommand):
+
+ def find_by_class(self, pt, classes, forward):
+ if forward:
+ delta = 1
+ end_position = self.view.size()
+ if pt > end_position:
+ pt = end_position
+ else:
+ delta = -1
+ end_position = 0
+ if pt < end_position:
+ pt = end_position
+
+ while pt != end_position:
+ if self.view.classify(pt) & classes != 0:
+ return pt
+ pt += delta
+
+ return pt
+
+ def expand_word(self, view, pos, classes, forward):
+ if forward:
+ delta = 1
+ else:
+ delta = -1
+ ws = ["\t", " "]
+
+ if forward:
+ if view.substr(pos) in ws and view.substr(pos + 1) in ws:
+ classes = sublime.CLASS_WORD_START | sublime.CLASS_PUNCTUATION_START | sublime.CLASS_LINE_END
+ else:
+ if view.substr(pos - 1) in ws and view.substr(pos - 2) in ws:
+ classes = sublime.CLASS_WORD_END | sublime.CLASS_PUNCTUATION_END | sublime.CLASS_LINE_START
+
+ return sublime.Region(pos, self.find_by_class(pos + delta, classes, forward))
+
+ def run(self, edit, forward = True, sub_words = False):
+
+ if forward:
+ classes = sublime.CLASS_WORD_END | sublime.CLASS_PUNCTUATION_END | sublime.CLASS_LINE_START
+ if sub_words:
+ classes |= sublime.CLASS_SUB_WORD_END
+ else:
+ classes = sublime.CLASS_WORD_START | sublime.CLASS_PUNCTUATION_START | sublime.CLASS_LINE_END
+ if sub_words:
+ classes |= sublime.CLASS_SUB_WORD_START
+
+ new_sels = []
+ for s in reversed(self.view.sel()):
+ if s.empty():
+ new_sels.append(self.expand_word(self.view, s.b, classes, forward))
+
+ sz = self.view.size()
+ for s in new_sels:
+ self.view.sel().add(sublime.Region(clamp(0, s.a, sz),
+ clamp(0, s.b, sz)))
+
+ self.view.run_command("add_to_kill_ring", {"forward": forward})
+
+ if forward:
+ self.view.run_command('right_delete')
+ else:
+ self.view.run_command('left_delete')
diff --git a/sublime/Packages/Default/delete_word.pyc b/sublime/Packages/Default/delete_word.pyc
new file mode 100644
index 0000000..97034cd
Binary files /dev/null and b/sublime/Packages/Default/delete_word.pyc differ
diff --git a/sublime/Packages/Default/detect_indentation (Hackintosh's conflicted copy 2012-07-23).pyc b/sublime/Packages/Default/detect_indentation (Hackintosh's conflicted copy 2012-07-23).pyc
new file mode 100644
index 0000000..ea50b1e
Binary files /dev/null and b/sublime/Packages/Default/detect_indentation (Hackintosh's conflicted copy 2012-07-23).pyc differ
diff --git a/sublime/Packages/Default/detect_indentation (Hackintosh's conflicted copy 2012-07-24).pyc b/sublime/Packages/Default/detect_indentation (Hackintosh's conflicted copy 2012-07-24).pyc
new file mode 100644
index 0000000..ea50b1e
Binary files /dev/null and b/sublime/Packages/Default/detect_indentation (Hackintosh's conflicted copy 2012-07-24).pyc differ
diff --git a/sublime/Packages/Default/detect_indentation.py b/sublime/Packages/Default/detect_indentation.py
new file mode 100644
index 0000000..9f6ae1d
--- /dev/null
+++ b/sublime/Packages/Default/detect_indentation.py
@@ -0,0 +1,62 @@
+import sublime, sublime_plugin
+from functools import partial
+
+class DetectIndentationCommand(sublime_plugin.TextCommand):
+ """Examines the contents of the buffer to determine the indentation
+ settings."""
+
+ def run(self, edit, show_message = True, threshold = 10):
+ sample = self.view.substr(sublime.Region(0, min(self.view.size(), 2**14)))
+
+ starts_with_tab = 0
+ spaces_list = []
+ indented_lines = 0
+
+ for line in sample.split("\n"):
+ if not line: continue
+ if line[0] == "\t":
+ starts_with_tab += 1
+ indented_lines += 1
+ elif line.startswith(' '):
+ spaces = 0
+ for ch in line:
+ if ch == ' ': spaces += 1
+ else: break
+ if spaces > 1 and spaces != len(line):
+ indented_lines += 1
+ spaces_list.append(spaces)
+
+ evidence = [1.0, 1.0, 0.8, 0.9, 0.8, 0.9, 0.9, 0.95, 1.0]
+
+ if indented_lines >= threshold:
+ if len(spaces_list) > starts_with_tab:
+ for indent in xrange(8, 1, -1):
+ same_indent = filter(lambda x: x % indent == 0, spaces_list)
+ if len(same_indent) >= evidence[indent] * len(spaces_list):
+ if show_message:
+ sublime.status_message("Detect Indentation: Setting indentation to "
+ + str(indent) + " spaces")
+ self.view.settings().set('translate_tabs_to_spaces', True)
+ self.view.settings().set('tab_size', indent)
+ return
+
+ for indent in xrange(8, 1, -2):
+ same_indent = filter(lambda x: x % indent == 0 or x % indent == 1, spaces_list)
+ if len(same_indent) >= evidence[indent] * len(spaces_list):
+ if show_message:
+ sublime.status_message("Detect Indentation: Setting indentation to "
+ + str(indent) + " spaces")
+ self.view.settings().set('translate_tabs_to_spaces', True)
+ self.view.settings().set('tab_size', indent)
+ return
+
+ elif starts_with_tab >= 0.8 * indented_lines:
+ if show_message:
+ sublime.status_message("Detect Indentation: Setting indentation to tabs")
+ self.view.settings().set('translate_tabs_to_spaces', False)
+
+class DetectIndentationEventListener(sublime_plugin.EventListener):
+ def on_load(self, view):
+ if view.settings().get('detect_indentation'):
+ is_at_front = view.window() != None
+ view.run_command('detect_indentation', {'show_message': is_at_front})
diff --git a/sublime/Packages/Default/detect_indentation.pyc b/sublime/Packages/Default/detect_indentation.pyc
new file mode 100644
index 0000000..d123205
Binary files /dev/null and b/sublime/Packages/Default/detect_indentation.pyc differ
diff --git a/sublime/Packages/Default/duplicate_line (Hackintosh's conflicted copy 2012-07-23).pyc b/sublime/Packages/Default/duplicate_line (Hackintosh's conflicted copy 2012-07-23).pyc
new file mode 100644
index 0000000..4b561a5
Binary files /dev/null and b/sublime/Packages/Default/duplicate_line (Hackintosh's conflicted copy 2012-07-23).pyc differ
diff --git a/sublime/Packages/Default/duplicate_line (Hackintosh's conflicted copy 2012-07-24).pyc b/sublime/Packages/Default/duplicate_line (Hackintosh's conflicted copy 2012-07-24).pyc
new file mode 100644
index 0000000..4b561a5
Binary files /dev/null and b/sublime/Packages/Default/duplicate_line (Hackintosh's conflicted copy 2012-07-24).pyc differ
diff --git a/sublime/Packages/Default/duplicate_line.py b/sublime/Packages/Default/duplicate_line.py
new file mode 100644
index 0000000..3a8d37f
--- /dev/null
+++ b/sublime/Packages/Default/duplicate_line.py
@@ -0,0 +1,11 @@
+import sublime, sublime_plugin
+
+class DuplicateLineCommand(sublime_plugin.TextCommand):
+ def run(self, edit):
+ for region in self.view.sel():
+ if region.empty():
+ line = self.view.line(region)
+ line_contents = self.view.substr(line) + '\n'
+ self.view.insert(edit, line.begin(), line_contents)
+ else:
+ self.view.insert(edit, region.begin(), self.view.substr(region))
diff --git a/sublime/Packages/Default/duplicate_line.pyc b/sublime/Packages/Default/duplicate_line.pyc
new file mode 100644
index 0000000..11deddb
Binary files /dev/null and b/sublime/Packages/Default/duplicate_line.pyc differ
diff --git a/sublime/Packages/Default/echo (Hackintosh's conflicted copy 2012-07-23).pyc b/sublime/Packages/Default/echo (Hackintosh's conflicted copy 2012-07-23).pyc
new file mode 100644
index 0000000..567f536
Binary files /dev/null and b/sublime/Packages/Default/echo (Hackintosh's conflicted copy 2012-07-23).pyc differ
diff --git a/sublime/Packages/Default/echo (Hackintosh's conflicted copy 2012-07-24).pyc b/sublime/Packages/Default/echo (Hackintosh's conflicted copy 2012-07-24).pyc
new file mode 100644
index 0000000..567f536
Binary files /dev/null and b/sublime/Packages/Default/echo (Hackintosh's conflicted copy 2012-07-24).pyc differ
diff --git a/sublime/Packages/Default/echo.py b/sublime/Packages/Default/echo.py
new file mode 100644
index 0000000..dc7d730
--- /dev/null
+++ b/sublime/Packages/Default/echo.py
@@ -0,0 +1,5 @@
+import sublime, sublime_plugin
+
+class EchoCommand(sublime_plugin.ApplicationCommand):
+ def run(self, **kwargs):
+ print kwargs
diff --git a/sublime/Packages/Default/echo.pyc b/sublime/Packages/Default/echo.pyc
new file mode 100644
index 0000000..ed182f0
Binary files /dev/null and b/sublime/Packages/Default/echo.pyc differ
diff --git a/sublime/Packages/Default/exec (Hackintosh's conflicted copy 2012-07-24).pyc b/sublime/Packages/Default/exec (Hackintosh's conflicted copy 2012-07-24).pyc
new file mode 100644
index 0000000..7948afe
Binary files /dev/null and b/sublime/Packages/Default/exec (Hackintosh's conflicted copy 2012-07-24).pyc differ
diff --git a/sublime/Packages/Default/exec (Ruxton's conflicted copy 2012-07-23).pyc b/sublime/Packages/Default/exec (Ruxton's conflicted copy 2012-07-23).pyc
new file mode 100644
index 0000000..320eb4d
Binary files /dev/null and b/sublime/Packages/Default/exec (Ruxton's conflicted copy 2012-07-23).pyc differ
diff --git a/sublime/Packages/Default/exec.py b/sublime/Packages/Default/exec.py
new file mode 100644
index 0000000..f51f775
--- /dev/null
+++ b/sublime/Packages/Default/exec.py
@@ -0,0 +1,229 @@
+import sublime, sublime_plugin
+import os, sys
+import thread
+import subprocess
+import functools
+import time
+
+class ProcessListener(object):
+ def on_data(self, proc, data):
+ pass
+
+ def on_finished(self, proc):
+ pass
+
+# Encapsulates subprocess.Popen, forwarding stdout to a supplied
+# ProcessListener (on a separate thread)
+class AsyncProcess(object):
+ def __init__(self, arg_list, env, listener,
+ # "path" is an option in build systems
+ path="",
+ # "shell" is an options in build systems
+ shell=False):
+
+ self.listener = listener
+ self.killed = False
+
+ self.start_time = time.time()
+
+ # Hide the console window on Windows
+ startupinfo = None
+ if os.name == "nt":
+ startupinfo = subprocess.STARTUPINFO()
+ startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
+
+ # Set temporary PATH to locate executable in arg_list
+ if path:
+ old_path = os.environ["PATH"]
+ # The user decides in the build system whether he wants to append $PATH
+ # or tuck it at the front: "$PATH;C:\\new\\path", "C:\\new\\path;$PATH"
+ os.environ["PATH"] = os.path.expandvars(path).encode(sys.getfilesystemencoding())
+
+ proc_env = os.environ.copy()
+ proc_env.update(env)
+ for k, v in proc_env.iteritems():
+ proc_env[k] = os.path.expandvars(v).encode(sys.getfilesystemencoding())
+
+ self.proc = subprocess.Popen(arg_list, stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE, startupinfo=startupinfo, env=proc_env, shell=shell)
+
+ if path:
+ os.environ["PATH"] = old_path
+
+ if self.proc.stdout:
+ thread.start_new_thread(self.read_stdout, ())
+
+ if self.proc.stderr:
+ thread.start_new_thread(self.read_stderr, ())
+
+ def kill(self):
+ if not self.killed:
+ self.killed = True
+ self.proc.terminate()
+ self.listener = None
+
+ def poll(self):
+ return self.proc.poll() == None
+
+ def exit_code(self):
+ return self.proc.poll()
+
+ def read_stdout(self):
+ while True:
+ data = os.read(self.proc.stdout.fileno(), 2**15)
+
+ if data != "":
+ if self.listener:
+ self.listener.on_data(self, data)
+ else:
+ self.proc.stdout.close()
+ if self.listener:
+ self.listener.on_finished(self)
+ break
+
+ def read_stderr(self):
+ while True:
+ data = os.read(self.proc.stderr.fileno(), 2**15)
+
+ if data != "":
+ if self.listener:
+ self.listener.on_data(self, data)
+ else:
+ self.proc.stderr.close()
+ break
+
+class ExecCommand(sublime_plugin.WindowCommand, ProcessListener):
+ def run(self, cmd = [], file_regex = "", line_regex = "", working_dir = "",
+ encoding = "utf-8", env = {}, quiet = False, kill = False,
+ # Catches "path" and "shell"
+ **kwargs):
+
+ if kill:
+ if self.proc:
+ self.proc.kill()
+ self.proc = None
+ self.append_data(None, "[Cancelled]")
+ return
+
+ if not hasattr(self, 'output_view'):
+ # Try not to call get_output_panel until the regexes are assigned
+ self.output_view = self.window.get_output_panel("exec")
+
+ # Default the to the current files directory if no working directory was given
+ if (working_dir == "" and self.window.active_view()
+ and self.window.active_view().file_name()):
+ working_dir = os.path.dirname(self.window.active_view().file_name())
+
+ self.output_view.settings().set("result_file_regex", file_regex)
+ self.output_view.settings().set("result_line_regex", line_regex)
+ self.output_view.settings().set("result_base_dir", working_dir)
+
+ # Call get_output_panel a second time after assigning the above
+ # settings, so that it'll be picked up as a result buffer
+ self.window.get_output_panel("exec")
+
+ self.encoding = encoding
+ self.quiet = quiet
+
+ self.proc = None
+ if not self.quiet:
+ print "Running " + " ".join(cmd)
+ sublime.status_message("Building")
+
+ show_panel_on_build = sublime.load_settings("Preferences.sublime-settings").get("show_panel_on_build", True)
+ if show_panel_on_build:
+ self.window.run_command("show_panel", {"panel": "output.exec"})
+
+ merged_env = env.copy()
+ if self.window.active_view():
+ user_env = self.window.active_view().settings().get('build_env')
+ if user_env:
+ merged_env.update(user_env)
+
+ # Change to the working dir, rather than spawning the process with it,
+ # so that emitted working dir relative path names make sense
+ if working_dir != "":
+ os.chdir(working_dir)
+
+ err_type = OSError
+ if os.name == "nt":
+ err_type = WindowsError
+
+ try:
+ # Forward kwargs to AsyncProcess
+ self.proc = AsyncProcess(cmd, merged_env, self, **kwargs)
+ except err_type as e:
+ self.append_data(None, str(e) + "\n")
+ self.append_data(None, "[cmd: " + str(cmd) + "]\n")
+ self.append_data(None, "[dir: " + str(os.getcwdu()) + "]\n")
+ if "PATH" in merged_env:
+ self.append_data(None, "[path: " + str(merged_env["PATH"]) + "]\n")
+ else:
+ self.append_data(None, "[path: " + str(os.environ["PATH"]) + "]\n")
+ if not self.quiet:
+ self.append_data(None, "[Finished]")
+
+ def is_enabled(self, kill = False):
+ if kill:
+ return hasattr(self, 'proc') and self.proc and self.proc.poll()
+ else:
+ return True
+
+ def append_data(self, proc, data):
+ if proc != self.proc:
+ # a second call to exec has been made before the first one
+ # finished, ignore it instead of intermingling the output.
+ if proc:
+ proc.kill()
+ return
+
+ try:
+ str = data.decode(self.encoding)
+ except:
+ str = "[Decode error - output not " + self.encoding + "]\n"
+ proc = None
+
+ # Normalize newlines, Sublime Text always uses a single \n separator
+ # in memory.
+ str = str.replace('\r\n', '\n').replace('\r', '\n')
+
+ selection_was_at_end = (len(self.output_view.sel()) == 1
+ and self.output_view.sel()[0]
+ == sublime.Region(self.output_view.size()))
+ self.output_view.set_read_only(False)
+ edit = self.output_view.begin_edit()
+ self.output_view.insert(edit, self.output_view.size(), str)
+ if selection_was_at_end:
+ self.output_view.show(self.output_view.size())
+ self.output_view.end_edit(edit)
+ self.output_view.set_read_only(True)
+
+ def finish(self, proc):
+ if not self.quiet:
+ elapsed = time.time() - proc.start_time
+ exit_code = proc.exit_code()
+ if exit_code == 0 or exit_code == None:
+ self.append_data(proc, ("[Finished in %.1fs]") % (elapsed))
+ else:
+ self.append_data(proc, ("[Finished in %.1fs with exit code %d]") % (elapsed, exit_code))
+
+ if proc != self.proc:
+ return
+
+ errs = self.output_view.find_all_results()
+ if len(errs) == 0:
+ sublime.status_message("Build finished")
+ else:
+ sublime.status_message(("Build finished with %d errors") % len(errs))
+
+ # Set the selection to the start, so that next_result will work as expected
+ edit = self.output_view.begin_edit()
+ self.output_view.sel().clear()
+ self.output_view.sel().add(sublime.Region(0))
+ self.output_view.end_edit(edit)
+
+ def on_data(self, proc, data):
+ sublime.set_timeout(functools.partial(self.append_data, proc, data), 0)
+
+ def on_finished(self, proc):
+ sublime.set_timeout(functools.partial(self.finish, proc), 0)
diff --git a/sublime/Packages/Default/exec.pyc b/sublime/Packages/Default/exec.pyc
new file mode 100644
index 0000000..320eb4d
Binary files /dev/null and b/sublime/Packages/Default/exec.pyc differ
diff --git a/sublime/Packages/Default/find_under_expand.pyc b/sublime/Packages/Default/find_under_expand.pyc
new file mode 100644
index 0000000..7b94fed
Binary files /dev/null and b/sublime/Packages/Default/find_under_expand.pyc differ
diff --git a/sublime/Packages/Default/fold (Hackintosh's conflicted copy 2012-07-23).pyc b/sublime/Packages/Default/fold (Hackintosh's conflicted copy 2012-07-23).pyc
new file mode 100644
index 0000000..694fe37
Binary files /dev/null and b/sublime/Packages/Default/fold (Hackintosh's conflicted copy 2012-07-23).pyc differ
diff --git a/sublime/Packages/Default/fold (Hackintosh's conflicted copy 2012-07-24).pyc b/sublime/Packages/Default/fold (Hackintosh's conflicted copy 2012-07-24).pyc
new file mode 100644
index 0000000..694fe37
Binary files /dev/null and b/sublime/Packages/Default/fold (Hackintosh's conflicted copy 2012-07-24).pyc differ
diff --git a/sublime/Packages/Default/fold.py b/sublime/Packages/Default/fold.py
new file mode 100644
index 0000000..6747e5d
--- /dev/null
+++ b/sublime/Packages/Default/fold.py
@@ -0,0 +1,125 @@
+import sublime, sublime_plugin
+
+def fold_region_from_indent(view, r):
+ if r.b == view.size():
+ return sublime.Region(r.a - 1, r.b)
+ else:
+ return sublime.Region(r.a - 1, r.b - 1)
+
+class FoldUnfoldCommand(sublime_plugin.TextCommand):
+ def run(self, edit):
+ new_sel = []
+ for s in self.view.sel():
+ r = s
+ empty_region = r.empty()
+ if empty_region:
+ r = sublime.Region(r.a - 1, r.a + 1)
+
+ unfolded = self.view.unfold(r)
+ if len(unfolded) == 0:
+ self.view.fold(s)
+ elif empty_region:
+ for r in unfolded:
+ new_sel.append(r)
+
+ if len(new_sel) > 0:
+ self.view.sel().clear()
+ for r in new_sel:
+ self.view.sel().add(r)
+
+class FoldCommand(sublime_plugin.TextCommand):
+ def run(self, edit):
+ new_sel = []
+ for s in self.view.sel():
+ if s.empty():
+ r = self.view.indented_region(s.a)
+ if not r.empty():
+ r = fold_region_from_indent(self.view, r)
+ self.view.fold(r)
+ new_sel.append(r)
+ else:
+ new_sel.append(s)
+ else:
+ if self.view.fold(s):
+ new_sel.append(s)
+ else:
+ r = self.view.indented_region(s.a)
+ if not r.empty():
+ r = fold_region_from_indent(self.view, r)
+ self.view.fold(r)
+ new_sel.append(r)
+ else:
+ new_sel.append(s)
+
+ self.view.sel().clear()
+ for r in new_sel:
+ self.view.sel().add(r)
+
+class FoldAllCommand(sublime_plugin.TextCommand):
+ def run(self, edit):
+ folds = []
+ tp = 0
+ size = self.view.size()
+ while tp < size:
+ s = self.view.indented_region(tp)
+ if not s.empty():
+ r = fold_region_from_indent(self.view, s)
+ folds.append(r)
+ tp = s.b
+ else:
+ tp = self.view.full_line(tp).b
+
+ self.view.fold(folds)
+ self.view.show(self.view.sel())
+
+ sublime.status_message("Folded " + str(len(folds)) + " regions")
+
+class FoldByLevelCommand(sublime_plugin.TextCommand):
+ def run(self, edit, level):
+ level = int(level)
+ folds = []
+ tp = 0
+ size = self.view.size()
+ while tp < size:
+ if self.view.indentation_level(tp) == level:
+ s = self.view.indented_region(tp)
+ if not s.empty():
+ r = fold_region_from_indent(self.view, s)
+ folds.append(r)
+ tp = s.b
+ continue;
+
+ tp = self.view.full_line(tp).b
+
+ self.view.fold(folds)
+ self.view.show(self.view.sel())
+
+ sublime.status_message("Folded " + str(len(folds)) + " regions")
+
+class UnfoldCommand(sublime_plugin.TextCommand):
+ def run(self, edit):
+ new_sel = []
+ for s in self.view.sel():
+ unfold = s
+ if s.empty():
+ unfold = sublime.Region(s.a - 1, s.a + 1)
+
+ unfolded = self.view.unfold(unfold)
+ if len(unfolded) == 0 and s.empty():
+ unfolded = self.view.unfold(self.view.full_line(s.b))
+
+ if len(unfolded) == 0:
+ new_sel.append(s)
+ else:
+ for r in unfolded:
+ new_sel.append(r)
+
+ if len(new_sel) > 0:
+ self.view.sel().clear()
+ for r in new_sel:
+ self.view.sel().add(r)
+
+class UnfoldAllCommand(sublime_plugin.TextCommand):
+ def run(self, edit):
+ self.view.unfold(sublime.Region(0, self.view.size()))
+ self.view.show(self.view.sel())
diff --git a/sublime/Packages/Default/fold.pyc b/sublime/Packages/Default/fold.pyc
new file mode 100644
index 0000000..2f3feb2
Binary files /dev/null and b/sublime/Packages/Default/fold.pyc differ
diff --git a/sublime/Packages/Default/font (Hackintosh's conflicted copy 2012-07-23).pyc b/sublime/Packages/Default/font (Hackintosh's conflicted copy 2012-07-23).pyc
new file mode 100644
index 0000000..01e7efb
Binary files /dev/null and b/sublime/Packages/Default/font (Hackintosh's conflicted copy 2012-07-23).pyc differ
diff --git a/sublime/Packages/Default/font (Hackintosh's conflicted copy 2012-07-24).pyc b/sublime/Packages/Default/font (Hackintosh's conflicted copy 2012-07-24).pyc
new file mode 100644
index 0000000..01e7efb
Binary files /dev/null and b/sublime/Packages/Default/font (Hackintosh's conflicted copy 2012-07-24).pyc differ
diff --git a/sublime/Packages/Default/font.py b/sublime/Packages/Default/font.py
new file mode 100644
index 0000000..b9b5173
--- /dev/null
+++ b/sublime/Packages/Default/font.py
@@ -0,0 +1,45 @@
+import sublime, sublime_plugin
+
+class IncreaseFontSizeCommand(sublime_plugin.ApplicationCommand):
+ def run(self):
+ s = sublime.load_settings("Preferences.sublime-settings")
+ current = s.get("font_size", 10)
+
+ if current >= 36:
+ current += 4
+ elif current >= 24:
+ current += 2
+ else:
+ current += 1
+
+ if current > 128:
+ current = 128
+ s.set("font_size", current)
+
+ sublime.save_settings("Preferences.sublime-settings")
+
+class DecreaseFontSizeCommand(sublime_plugin.ApplicationCommand):
+ def run(self):
+ s = sublime.load_settings("Preferences.sublime-settings")
+ current = s.get("font_size", 10)
+ # current -= 1
+
+ if current >= 40:
+ current -= 4
+ elif current >= 26:
+ current -= 2
+ else:
+ current -= 1
+
+ if current < 8:
+ current = 8
+ s.set("font_size", current)
+
+ sublime.save_settings("Preferences.sublime-settings")
+
+class ResetFontSizeCommand(sublime_plugin.ApplicationCommand):
+ def run(self):
+ s = sublime.load_settings("Preferences.sublime-settings")
+ s.erase("font_size")
+
+ sublime.save_settings("Preferences.sublime-settings")
diff --git a/sublime/Packages/Default/font.pyc b/sublime/Packages/Default/font.pyc
new file mode 100644
index 0000000..2ca9dd7
Binary files /dev/null and b/sublime/Packages/Default/font.pyc differ
diff --git a/sublime/Packages/Default/goto_line (Hackintosh's conflicted copy 2012-07-23).pyc b/sublime/Packages/Default/goto_line (Hackintosh's conflicted copy 2012-07-23).pyc
new file mode 100644
index 0000000..ed176ef
Binary files /dev/null and b/sublime/Packages/Default/goto_line (Hackintosh's conflicted copy 2012-07-23).pyc differ
diff --git a/sublime/Packages/Default/goto_line (Hackintosh's conflicted copy 2012-07-24).pyc b/sublime/Packages/Default/goto_line (Hackintosh's conflicted copy 2012-07-24).pyc
new file mode 100644
index 0000000..ed176ef
Binary files /dev/null and b/sublime/Packages/Default/goto_line (Hackintosh's conflicted copy 2012-07-24).pyc differ
diff --git a/sublime/Packages/Default/goto_line.py b/sublime/Packages/Default/goto_line.py
new file mode 100644
index 0000000..2ec2ea2
--- /dev/null
+++ b/sublime/Packages/Default/goto_line.py
@@ -0,0 +1,33 @@
+import sublime, sublime_plugin
+
+class PromptGotoLineCommand(sublime_plugin.WindowCommand):
+
+ def run(self):
+ self.window.show_input_panel("Goto Line:", "", self.on_done, None, None)
+ pass
+
+ def on_done(self, text):
+ try:
+ line = int(text)
+ if self.window.active_view():
+ self.window.active_view().run_command("goto_line", {"line": line} )
+ except ValueError:
+ pass
+
+class GotoLineCommand(sublime_plugin.TextCommand):
+
+ def run(self, edit, line):
+ # Convert from 1 based to a 0 based line number
+ line = int(line) - 1
+
+ # Negative line numbers count from the end of the buffer
+ if line < 0:
+ lines, _ = self.view.rowcol(self.view.size())
+ line = lines + line + 1
+
+ pt = self.view.text_point(line, 0)
+
+ self.view.sel().clear()
+ self.view.sel().add(sublime.Region(pt))
+
+ self.view.show(pt)
diff --git a/sublime/Packages/Default/goto_line.pyc b/sublime/Packages/Default/goto_line.pyc
new file mode 100644
index 0000000..46c7787
Binary files /dev/null and b/sublime/Packages/Default/goto_line.pyc differ
diff --git a/sublime/Packages/Default/indentation (Hackintosh's conflicted copy 2012-07-23).pyc b/sublime/Packages/Default/indentation (Hackintosh's conflicted copy 2012-07-23).pyc
new file mode 100644
index 0000000..0e4dd5c
Binary files /dev/null and b/sublime/Packages/Default/indentation (Hackintosh's conflicted copy 2012-07-23).pyc differ
diff --git a/sublime/Packages/Default/indentation (Hackintosh's conflicted copy 2012-07-24).pyc b/sublime/Packages/Default/indentation (Hackintosh's conflicted copy 2012-07-24).pyc
new file mode 100644
index 0000000..0e4dd5c
Binary files /dev/null and b/sublime/Packages/Default/indentation (Hackintosh's conflicted copy 2012-07-24).pyc differ
diff --git a/sublime/Packages/Default/indentation.py b/sublime/Packages/Default/indentation.py
new file mode 100644
index 0000000..dac7aba
--- /dev/null
+++ b/sublime/Packages/Default/indentation.py
@@ -0,0 +1,168 @@
+import re
+import os
+import textwrap
+import sublime
+import sublime_plugin
+
+def get_tab_size(view):
+ return int(view.settings().get('tab_size', 8))
+
+def normed_indentation_pt(view, sel, non_space=False):
+ """
+ Calculates tab normed `visual` position of sel.begin() relative "
+ to start of line
+
+ \n\t\t\t => normed_indentation_pt => 12
+ \n \t\t\t => normed_indentation_pt => 12
+
+ Different amount of characters, same visual indentation.
+ """
+
+ tab_size = get_tab_size(view)
+ pos = 0
+ ln = view.line(sel)
+
+ for pt in xrange(ln.begin(), ln.end() if non_space else sel.begin()):
+ ch = view.substr(pt)
+
+ if ch == '\t':
+ pos += tab_size - (pos % tab_size)
+
+ elif ch.isspace():
+ pos += 1
+
+ elif non_space:
+ break
+ else:
+ pos+=1
+
+ return pos
+
+def compress_column(column):
+ # "SS\T"
+ if all(c.isspace() for c in column):
+ column = '\t'
+
+ # "CCSS"
+ elif column[-1] == ' ':
+ while column and column[-1] == ' ':
+ column.pop()
+ column.append('\t')
+
+ # "CC\T"
+ return column
+
+def line_and_normed_pt(view, pt):
+ return ( view.rowcol(pt)[0],
+ normed_indentation_pt(view, sublime.Region(pt)) )
+
+def pt_from_line_and_normed_pt(view, (ln, pt)):
+ i = start_pt = view.text_point(ln, 0)
+ tab_size = get_tab_size(view)
+
+ pos = 0
+
+ for i in xrange(start_pt, start_pt + pt):
+ ch = view.substr(i)
+
+ if ch == '\t':
+ pos += tab_size - (pos % tab_size)
+ else:
+ pos += 1
+
+ i += 1
+ if pos == pt: break
+
+ return i
+
+def save_selections(view, selections=None):
+ return [ [line_and_normed_pt(view, p) for p in (sel.a, sel.b)]
+ for sel in selections or view.sel() ]
+
+def region_from_stored_selection(view, stored):
+ return sublime.Region(*[pt_from_line_and_normed_pt(view, p) for p in stored])
+
+def restore_selections(view, lines_and_pts):
+ view.sel().clear()
+
+ for stored in lines_and_pts:
+ view.sel().add(region_from_stored_selection(view, stored))
+
+def unexpand(the_string, tab_size, first_line_offset = 0, only_leading=True):
+ lines = the_string.split('\n')
+ compressed = []
+
+ for li, line in enumerate(lines):
+ pos = 0
+
+ if not li: pos += first_line_offset
+
+ rebuilt_line = []
+ column = []
+
+ for i, char in enumerate(line):
+ if only_leading and not char.isspace():
+ column.extend(list(line[i:]))
+ break
+
+ column.append(char)
+ pos += 1
+
+ if char == '\t':
+ pos += tab_size - (pos % tab_size)
+
+ if pos % tab_size == 0:
+ rebuilt_line.extend(compress_column(column))
+ column = []
+
+ rebuilt_line.extend(column)
+ compressed.append(''.join(rebuilt_line))
+
+ return '\n'.join(compressed)
+
+class TabCommand(sublime_plugin.TextCommand):
+ translate = False
+
+ def run(self, edit, set_translate_tabs=False, whole_buffer=True, **kw):
+ view = self.view
+
+ if set_translate_tabs or not self.translate:
+ view.settings().set('translate_tabs_to_spaces', self.translate)
+
+ if whole_buffer or not view.has_non_empty_selection_region():
+ self.operation_regions = [sublime.Region(0, view.size())]
+ else:
+ self.operation_regions = view.sel()
+
+ sels = save_selections(view)
+ visible, = save_selections(view, [view.visible_region()])
+ self.do(edit, **kw)
+ restore_selections(view, sels)
+ visible = region_from_stored_selection(view, visible)
+ view.show(visible, False)
+ view.run_command("scroll_lines", {"amount": 1.0 })
+
+class ExpandTabs(TabCommand):
+ translate = True
+
+ def do(self, edit, **kw):
+ view = self.view
+ tab_size = get_tab_size(view)
+
+ for sel in self.operation_regions:
+ sel = view.line(sel) # TODO: expand tabs with non regular offsets
+ view.replace(edit, sel, view.substr(sel).expandtabs(tab_size))
+
+class UnexpandTabs(TabCommand):
+ def do(self, edit, only_leading = True, **kw):
+ view = self.view
+ tab_size = get_tab_size(view)
+
+ for sel in self.operation_regions:
+ the_string = view.substr(sel)
+ first_line_off_set = normed_indentation_pt( view, sel ) % tab_size
+
+ compressed = unexpand( the_string, tab_size, first_line_off_set,
+ only_leading = only_leading )
+
+ view.replace(edit, sel, compressed)
diff --git a/sublime/Packages/Default/indentation.pyc b/sublime/Packages/Default/indentation.pyc
new file mode 100644
index 0000000..e9506c4
Binary files /dev/null and b/sublime/Packages/Default/indentation.pyc differ
diff --git a/sublime/Packages/Default/kill_ring (Hackintosh's conflicted copy 2012-07-23).pyc b/sublime/Packages/Default/kill_ring (Hackintosh's conflicted copy 2012-07-23).pyc
new file mode 100644
index 0000000..2382394
Binary files /dev/null and b/sublime/Packages/Default/kill_ring (Hackintosh's conflicted copy 2012-07-23).pyc differ
diff --git a/sublime/Packages/Default/kill_ring (Hackintosh's conflicted copy 2012-07-24).pyc b/sublime/Packages/Default/kill_ring (Hackintosh's conflicted copy 2012-07-24).pyc
new file mode 100644
index 0000000..2382394
Binary files /dev/null and b/sublime/Packages/Default/kill_ring (Hackintosh's conflicted copy 2012-07-24).pyc differ
diff --git a/sublime/Packages/Default/kill_ring.py b/sublime/Packages/Default/kill_ring.py
new file mode 100644
index 0000000..d47639f
--- /dev/null
+++ b/sublime/Packages/Default/kill_ring.py
@@ -0,0 +1,107 @@
+import sublime_plugin, sublime
+
+class KillRing:
+ def __init__(self):
+ self.limit = 16
+ self.buffer = [None for i in xrange(self.limit)]
+ self.head = 0
+ self.len = 0
+ self.kill_points = []
+ self.kill_id = 0
+
+ def top(self):
+ return self.buffer[self.head]
+
+ def seal(self):
+ self.kill_points = []
+ self.kill_id = 0
+
+ def push(self, text):
+ self.head = (self.head + 1) % self.limit
+ self.buffer[self.head] = text
+ if self.len < self.limit:
+ self.len += 1
+
+ def add(self, view_id, text, regions, forward):
+ if view_id != self.kill_id:
+ # view has changed, ensure the last kill ring entry will not be
+ # appended to
+ self.seal()
+
+ begin_points = []
+ end_points = []
+ for r in regions:
+ begin_points.append(r.begin())
+ end_points.append(r.end())
+
+ if forward:
+ compare_points = begin_points
+ else:
+ compare_points = end_points
+
+ if compare_points == self.kill_points:
+ # Selection hasn't moved since the last kill, append/prepend the
+ # text to the current entry
+ if forward:
+ self.buffer[self.head] = self.buffer[self.head] + text
+ else:
+ self.buffer[self.head] = text + self.buffer[self.head]
+ else:
+ # Create a new entry in the kill ring for this text
+ self.push(text)
+
+ self.kill_points = begin_points
+ self.kill_id = view_id
+
+ def get(self, index):
+ return self.buffer[(self.head + index) % self.limit]
+
+ def __len__(self):
+ return self.len
+
+kill_ring = KillRing()
+
+class YankCommand(sublime_plugin.TextCommand):
+ def run(self, edit):
+ kill_ring.seal()
+ text = kill_ring.top()
+
+ lines = text.splitlines()
+
+ regions = [r for r in self.view.sel()]
+ regions.reverse()
+
+ if len(regions) > 1 and len(regions) == len(lines):
+ # insert one line from the top of the kill ring at each
+ # corresponding selection
+ for i in xrange(len(regions)):
+ s = regions[i]
+ line = lines[i]
+ num = self.view.insert(edit, s.begin(), line)
+ self.view.erase(edit, sublime.Region(s.begin() + num,
+ s.end() + num))
+ else:
+ # insert the top of the kill ring at each selection
+ for s in regions:
+ num = self.view.insert(edit, s.begin(), text)
+ self.view.erase(edit, sublime.Region(s.begin() + num,
+ s.end() + num))
+
+ def is_enabled(self):
+ return len(kill_ring) > 0
+
+class AddToKillRingCommand(sublime_plugin.TextCommand):
+ def run(self, edit, forward):
+ delta = 1
+ if not forward:
+ delta = -1
+
+ text = []
+ regions = []
+ for s in self.view.sel():
+ if s.empty():
+ s = sublime.Region(s.a, s.a + delta)
+ text.append(self.view.substr(s))
+ regions.append(s)
+
+ kill_ring.add(self.view.id(), "\n".join(text), regions, forward)
diff --git a/sublime/Packages/Default/kill_ring.pyc b/sublime/Packages/Default/kill_ring.pyc
new file mode 100644
index 0000000..5072ccf
Binary files /dev/null and b/sublime/Packages/Default/kill_ring.pyc differ
diff --git a/sublime/Packages/Default/mark (Hackintosh's conflicted copy 2012-07-23).pyc b/sublime/Packages/Default/mark (Hackintosh's conflicted copy 2012-07-23).pyc
new file mode 100644
index 0000000..f56509a
Binary files /dev/null and b/sublime/Packages/Default/mark (Hackintosh's conflicted copy 2012-07-23).pyc differ
diff --git a/sublime/Packages/Default/mark (Hackintosh's conflicted copy 2012-07-24).pyc b/sublime/Packages/Default/mark (Hackintosh's conflicted copy 2012-07-24).pyc
new file mode 100644
index 0000000..f56509a
Binary files /dev/null and b/sublime/Packages/Default/mark (Hackintosh's conflicted copy 2012-07-24).pyc differ
diff --git a/sublime/Packages/Default/mark.py b/sublime/Packages/Default/mark.py
new file mode 100644
index 0000000..284b52c
--- /dev/null
+++ b/sublime/Packages/Default/mark.py
@@ -0,0 +1,43 @@
+import sublime, sublime_plugin
+
+class SetMarkCommand(sublime_plugin.TextCommand):
+ def run(self, edit):
+ mark = [s for s in self.view.sel()]
+ self.view.add_regions("mark", mark, "mark", "dot",
+ sublime.HIDDEN | sublime.PERSISTENT)
+
+class SwapWithMarkCommand(sublime_plugin.TextCommand):
+ def run(self, edit):
+ old_mark = self.view.get_regions("mark")
+
+ mark = [s for s in self.view.sel()]
+ self.view.add_regions("mark", mark, "mark", "dot",
+ sublime.HIDDEN | sublime.PERSISTENT)
+
+ if len(old_mark):
+ self.view.sel().clear()
+ for r in old_mark:
+ self.view.sel().add(r)
+
+class SelectToMarkCommand(sublime_plugin.TextCommand):
+ def run(self, edit):
+ mark = self.view.get_regions("mark")
+
+ num = min(len(mark), len(self.view.sel()))
+
+ regions = []
+ for i in xrange(num):
+ regions.append(self.view.sel()[i].cover(mark[i]))
+
+ for i in xrange(num, len(self.view.sel())):
+ regions.append(self.view.sel()[i])
+
+ self.view.sel().clear()
+ for r in regions:
+ self.view.sel().add(r)
+
+class DeleteToMark(sublime_plugin.TextCommand):
+ def run(self, edit):
+ self.view.run_command("select_to_mark")
+ self.view.run_command("add_to_kill_ring", {"forward": False})
+ self.view.run_command("left_delete")
diff --git a/sublime/Packages/Default/mark.pyc b/sublime/Packages/Default/mark.pyc
new file mode 100644
index 0000000..e9095c7
Binary files /dev/null and b/sublime/Packages/Default/mark.pyc differ
diff --git a/sublime/Packages/Default/new_templates (Hackintosh's conflicted copy 2012-07-23).pyc b/sublime/Packages/Default/new_templates (Hackintosh's conflicted copy 2012-07-23).pyc
new file mode 100644
index 0000000..9e3c512
Binary files /dev/null and b/sublime/Packages/Default/new_templates (Hackintosh's conflicted copy 2012-07-23).pyc differ
diff --git a/sublime/Packages/Default/new_templates (Hackintosh's conflicted copy 2012-07-24).pyc b/sublime/Packages/Default/new_templates (Hackintosh's conflicted copy 2012-07-24).pyc
new file mode 100644
index 0000000..9e3c512
Binary files /dev/null and b/sublime/Packages/Default/new_templates (Hackintosh's conflicted copy 2012-07-24).pyc differ
diff --git a/sublime/Packages/Default/new_templates.py b/sublime/Packages/Default/new_templates.py
new file mode 100644
index 0000000..f288b7b
--- /dev/null
+++ b/sublime/Packages/Default/new_templates.py
@@ -0,0 +1,53 @@
+import sublime, sublime_plugin
+import os
+
+class NewBuildSystemCommand(sublime_plugin.WindowCommand):
+ def run(self):
+ v = self.window.new_file()
+ v.settings().set('default_dir',
+ os.path.join(sublime.packages_path(), 'User'))
+ v.set_syntax_file('Packages/JavaScript/JSON.tmLanguage')
+ v.set_name('untitled.sublime-build')
+
+ template = """{
+ "cmd": ["${0:make}"]
+}
+"""
+ v.run_command("insert_snippet", {"contents": template})
+
+
+class NewPluginCommand(sublime_plugin.WindowCommand):
+ def run(self):
+ v = self.window.new_file()
+ v.settings().set('default_dir',
+ os.path.join(sublime.packages_path(), 'User'))
+ v.set_syntax_file('Packages/Python/Python.tmLanguage')
+
+ template = """import sublime, sublime_plugin
+
+class ExampleCommand(sublime_plugin.TextCommand):
+ def run(self, edit):
+ $0self.view.insert(edit, 0, "Hello, World!")
+"""
+ v.run_command("insert_snippet", {"contents": template})
+
+
+class NewSnippetCommand(sublime_plugin.WindowCommand):
+ def run(self):
+ v = self.window.new_file()
+ v.settings().set('default_dir',
+ os.path.join(sublime.packages_path(), 'User'))
+ v.settings().set('default_extension', 'sublime-snippet')
+ v.set_syntax_file('Packages/XML/XML.tmLanguage')
+
+ template = """
+
+
+
+
+
+
+"""
+ v.run_command("insert_snippet", {"contents": template})
diff --git a/sublime/Packages/Default/new_templates.pyc b/sublime/Packages/Default/new_templates.pyc
new file mode 100644
index 0000000..358678a
Binary files /dev/null and b/sublime/Packages/Default/new_templates.pyc differ
diff --git a/sublime/Packages/Default/open_file_settings (Hackintosh's conflicted copy 2012-07-23).pyc b/sublime/Packages/Default/open_file_settings (Hackintosh's conflicted copy 2012-07-23).pyc
new file mode 100644
index 0000000..56de618
Binary files /dev/null and b/sublime/Packages/Default/open_file_settings (Hackintosh's conflicted copy 2012-07-23).pyc differ
diff --git a/sublime/Packages/Default/open_file_settings (Hackintosh's conflicted copy 2012-07-24).pyc b/sublime/Packages/Default/open_file_settings (Hackintosh's conflicted copy 2012-07-24).pyc
new file mode 100644
index 0000000..56de618
Binary files /dev/null and b/sublime/Packages/Default/open_file_settings (Hackintosh's conflicted copy 2012-07-24).pyc differ
diff --git a/sublime/Packages/Default/open_file_settings.py b/sublime/Packages/Default/open_file_settings.py
new file mode 100644
index 0000000..c701d94
--- /dev/null
+++ b/sublime/Packages/Default/open_file_settings.py
@@ -0,0 +1,12 @@
+import sublime, sublime_plugin
+import os.path
+
+class OpenFileSettingsCommand(sublime_plugin.WindowCommand):
+ def run(self):
+ view = self.window.active_view()
+ settings_name, _ = os.path.splitext(os.path.basename(view.settings().get('syntax')))
+ dir_name = os.path.join(sublime.packages_path(), 'User')
+ self.window.open_file(os.path.join(dir_name, settings_name + ".sublime-settings"))
+
+ def is_enabled(self):
+ return self.window.active_view() != None
diff --git a/sublime/Packages/Default/open_file_settings.pyc b/sublime/Packages/Default/open_file_settings.pyc
new file mode 100644
index 0000000..878cdaf
Binary files /dev/null and b/sublime/Packages/Default/open_file_settings.pyc differ
diff --git a/sublime/Packages/Default/open_in_browser (Hackintosh's conflicted copy 2012-07-23).pyc b/sublime/Packages/Default/open_in_browser (Hackintosh's conflicted copy 2012-07-23).pyc
new file mode 100644
index 0000000..d168bd6
Binary files /dev/null and b/sublime/Packages/Default/open_in_browser (Hackintosh's conflicted copy 2012-07-23).pyc differ
diff --git a/sublime/Packages/Default/open_in_browser (Hackintosh's conflicted copy 2012-07-24).pyc b/sublime/Packages/Default/open_in_browser (Hackintosh's conflicted copy 2012-07-24).pyc
new file mode 100644
index 0000000..d168bd6
Binary files /dev/null and b/sublime/Packages/Default/open_in_browser (Hackintosh's conflicted copy 2012-07-24).pyc differ
diff --git a/sublime/Packages/Default/open_in_browser.py b/sublime/Packages/Default/open_in_browser.py
new file mode 100644
index 0000000..042f141
--- /dev/null
+++ b/sublime/Packages/Default/open_in_browser.py
@@ -0,0 +1,13 @@
+import sublime, sublime_plugin
+import webbrowser
+
+class OpenInBrowserCommand(sublime_plugin.TextCommand):
+ def run(self, edit):
+ if self.view.file_name():
+ webbrowser.open_new_tab("file://" + self.view.file_name())
+
+ def is_visible(self):
+ return self.view.file_name() and (self.view.file_name()[-5:] == ".html" or
+ self.view.file_name()[-5:] == ".HTML" or
+ self.view.file_name()[-4:] == ".htm" or
+ self.view.file_name()[-4:] == ".HTM")
diff --git a/sublime/Packages/Default/open_in_browser.pyc b/sublime/Packages/Default/open_in_browser.pyc
new file mode 100644
index 0000000..c3956b3
Binary files /dev/null and b/sublime/Packages/Default/open_in_browser.pyc differ
diff --git a/sublime/Packages/Default/paragraph (Hackintosh's conflicted copy 2012-07-23).pyc b/sublime/Packages/Default/paragraph (Hackintosh's conflicted copy 2012-07-23).pyc
new file mode 100644
index 0000000..be31abf
Binary files /dev/null and b/sublime/Packages/Default/paragraph (Hackintosh's conflicted copy 2012-07-23).pyc differ
diff --git a/sublime/Packages/Default/paragraph (Hackintosh's conflicted copy 2012-07-24).pyc b/sublime/Packages/Default/paragraph (Hackintosh's conflicted copy 2012-07-24).pyc
new file mode 100644
index 0000000..be31abf
Binary files /dev/null and b/sublime/Packages/Default/paragraph (Hackintosh's conflicted copy 2012-07-24).pyc differ
diff --git a/sublime/Packages/Default/paragraph.py b/sublime/Packages/Default/paragraph.py
new file mode 100644
index 0000000..bb5fb22
--- /dev/null
+++ b/sublime/Packages/Default/paragraph.py
@@ -0,0 +1,211 @@
+import sublime, sublime_plugin
+import string
+import textwrap
+import re
+import comment
+
+def previous_line(view, sr):
+ """sr should be a Region covering the entire hard line"""
+ if sr.begin() == 0:
+ return None
+ else:
+ return view.full_line(sr.begin() - 1)
+
+def next_line(view, sr):
+ """sr should be a Region covering the entire hard line, including
+ the newline"""
+ if sr.end() == view.size():
+ return None
+ else:
+ return view.full_line(sr.end())
+
+
+separating_line_pattern = re.compile("^[\\t ]*\\n?$")
+
+def is_paragraph_separating_line(view, sr):
+ return separating_line_pattern.match(view.substr(sr)) != None
+
+def has_prefix(view, line, prefix):
+ if not prefix:
+ return True
+
+ line_start = view.substr(sublime.Region(line.begin(),
+ line.begin() + len(prefix)))
+
+ return line_start == prefix
+
+def expand_to_paragraph(view, tp):
+ sr = view.full_line(tp)
+ if is_paragraph_separating_line(view, sr):
+ return sublime.Region(tp, tp)
+
+ required_prefix = None
+
+ # If the current line starts with a comment, only select lines that are also
+ # commented
+ (line_comments, block_comments) = comment.build_comment_data(view, tp)
+ dataStart = comment.advance_to_first_non_white_space_on_line(view, sr.begin())
+ for c in line_comments:
+ (start, disable_indent) = c
+ comment_region = sublime.Region(dataStart,
+ dataStart + len(start))
+ if view.substr(comment_region) == start:
+ required_prefix = view.substr(sublime.Region(sr.begin(), comment_region.end()))
+ break
+
+ first = sr.begin()
+ prev = sr
+ while True:
+ prev = previous_line(view, prev)
+ if (prev == None or is_paragraph_separating_line(view, prev) or
+ not has_prefix(view, prev, required_prefix)):
+ break
+ else:
+ first = prev.begin()
+
+ last = sr.end()
+ next = sr
+ while True:
+ next = next_line(view, next)
+ if (next == None or is_paragraph_separating_line(view, next) or
+ not has_prefix(view, next, required_prefix)):
+ break
+ else:
+ last = next.end()
+
+ return sublime.Region(first, last)
+
+def all_paragraphs_intersecting_selection(view, sr):
+ paragraphs = []
+
+ para = expand_to_paragraph(view, sr.begin())
+ if not para.empty():
+ paragraphs.append(para)
+
+ while True:
+ line = next_line(view, para)
+ if line == None or line.begin() >= sr.end():
+ break;
+
+ if not is_paragraph_separating_line(view, line):
+ para = expand_to_paragraph(view, line.begin())
+ paragraphs.append(para)
+ else:
+ para = line
+
+ return paragraphs
+
+
+class ExpandSelectionToParagraphCommand(sublime_plugin.TextCommand):
+ def run(self, edit):
+ regions = []
+
+ for s in self.view.sel():
+ regions.append(sublime.Region(
+ expand_to_paragraph(self.view, s.begin()).begin(),
+ expand_to_paragraph(self.view, s.end()).end()))
+
+ for r in regions:
+ self.view.sel().add(r)
+
+
+class WrapLinesCommand(sublime_plugin.TextCommand):
+ line_prefix_pattern = re.compile("^\W+")
+
+ def extract_prefix(self, sr):
+ lines = self.view.split_by_newlines(sr)
+ if len(lines) == 0:
+ return None
+
+ initial_prefix_match = self.line_prefix_pattern.match(self.view.substr(
+ lines[0]))
+ if not initial_prefix_match:
+ return None
+
+ prefix = self.view.substr(sublime.Region(lines[0].begin(),
+ lines[0].begin() + initial_prefix_match.end()))
+
+ for line in lines[1:]:
+ if self.view.substr(sublime.Region(line.begin(),
+ line.begin() + len(prefix))) != prefix:
+ return None
+
+ return prefix
+
+ def width_in_spaces(self, str, tab_width):
+ sum = 0;
+ for c in str:
+ if c == '\t':
+ sum += tab_width - 1
+ return sum
+
+ def run(self, edit, width=0):
+ if width == 0 and self.view.settings().get("wrap_width"):
+ try:
+ width = int(self.view.settings().get("wrap_width"))
+ except TypeError:
+ pass
+
+ if width == 0 and self.view.settings().get("rulers"):
+ # try and guess the wrap width from the ruler, if any
+ try:
+ width = int(self.view.settings().get("rulers")[0])
+ except ValueError:
+ pass
+ except TypeError:
+ pass
+
+ if width == 0:
+ width = 78
+
+ # Make sure tabs are handled as per the current buffer
+ tab_width = 8
+ if self.view.settings().get("tab_size"):
+ try:
+ tab_width = int(self.view.settings().get("tab_size"))
+ except TypeError:
+ pass
+
+ if tab_width == 0:
+ tab_width == 8
+
+ paragraphs = []
+ for s in self.view.sel():
+ paragraphs.extend(all_paragraphs_intersecting_selection(self.view, s))
+
+ if len(paragraphs) > 0:
+ self.view.sel().clear()
+ for p in paragraphs:
+ self.view.sel().add(p)
+
+ # This isn't an ideal way to do it, as we loose the position of the
+ # cursor within the paragraph: hence why the paragraph is selected
+ # at the end.
+ for s in self.view.sel():
+ wrapper = textwrap.TextWrapper()
+ wrapper.expand_tabs = False
+ wrapper.width = width
+ prefix = self.extract_prefix(s)
+ if prefix:
+ wrapper.initial_indent = prefix
+ wrapper.subsequent_indent = prefix
+ wrapper.width -= self.width_in_spaces(prefix, tab_width)
+
+ if wrapper.width < 0:
+ continue
+
+ txt = self.view.substr(s)
+ if prefix:
+ txt = txt.replace(prefix, u"")
+
+ txt = string.expandtabs(txt, tab_width)
+
+ txt = wrapper.fill(txt) + u"\n"
+ self.view.replace(edit, s, txt)
+
+ # It's unhelpful to have the entire paragraph selected, just leave the
+ # selection at the end
+ ends = [s.end() - 1 for s in self.view.sel()]
+ self.view.sel().clear()
+ for pt in ends:
+ self.view.sel().add(sublime.Region(pt))
diff --git a/sublime/Packages/Default/paragraph.pyc b/sublime/Packages/Default/paragraph.pyc
new file mode 100644
index 0000000..cec7a97
Binary files /dev/null and b/sublime/Packages/Default/paragraph.pyc differ
diff --git a/sublime/Packages/Default/save_on_focus_lost (Hackintosh's conflicted copy 2012-07-23).pyc b/sublime/Packages/Default/save_on_focus_lost (Hackintosh's conflicted copy 2012-07-23).pyc
new file mode 100644
index 0000000..b0ed0b5
Binary files /dev/null and b/sublime/Packages/Default/save_on_focus_lost (Hackintosh's conflicted copy 2012-07-23).pyc differ
diff --git a/sublime/Packages/Default/save_on_focus_lost (Hackintosh's conflicted copy 2012-07-24).pyc b/sublime/Packages/Default/save_on_focus_lost (Hackintosh's conflicted copy 2012-07-24).pyc
new file mode 100644
index 0000000..b0ed0b5
Binary files /dev/null and b/sublime/Packages/Default/save_on_focus_lost (Hackintosh's conflicted copy 2012-07-24).pyc differ
diff --git a/sublime/Packages/Default/save_on_focus_lost.py b/sublime/Packages/Default/save_on_focus_lost.py
new file mode 100644
index 0000000..939259c
--- /dev/null
+++ b/sublime/Packages/Default/save_on_focus_lost.py
@@ -0,0 +1,10 @@
+import sublime, sublime_plugin
+import os.path
+
+class SaveOnFocusLost(sublime_plugin.EventListener):
+ def on_deactivated(self, view):
+ # The check for os.path.exists ensures that deleted files won't be resurrected
+ if (view.file_name() and view.is_dirty() and
+ view.settings().get('save_on_focus_lost') == True and
+ os.path.exists(view.file_name())):
+ view.run_command('save');
diff --git a/sublime/Packages/Default/save_on_focus_lost.pyc b/sublime/Packages/Default/save_on_focus_lost.pyc
new file mode 100644
index 0000000..42ea983
Binary files /dev/null and b/sublime/Packages/Default/save_on_focus_lost.pyc differ
diff --git a/sublime/Packages/Default/scroll (Hackintosh's conflicted copy 2012-07-23).pyc b/sublime/Packages/Default/scroll (Hackintosh's conflicted copy 2012-07-23).pyc
new file mode 100644
index 0000000..a93efba
Binary files /dev/null and b/sublime/Packages/Default/scroll (Hackintosh's conflicted copy 2012-07-23).pyc differ
diff --git a/sublime/Packages/Default/scroll (Hackintosh's conflicted copy 2012-07-24).pyc b/sublime/Packages/Default/scroll (Hackintosh's conflicted copy 2012-07-24).pyc
new file mode 100644
index 0000000..a93efba
Binary files /dev/null and b/sublime/Packages/Default/scroll (Hackintosh's conflicted copy 2012-07-24).pyc differ
diff --git a/sublime/Packages/Default/scroll.py b/sublime/Packages/Default/scroll.py
new file mode 100644
index 0000000..1d9dcaa
--- /dev/null
+++ b/sublime/Packages/Default/scroll.py
@@ -0,0 +1,13 @@
+import sublime, sublime_plugin
+
+class ScrollToBof(sublime_plugin.TextCommand):
+ def run(self, edit):
+ self.view.show(0)
+
+class ScrollToEof(sublime_plugin.TextCommand):
+ def run(self, edit):
+ self.view.show(self.view.size())
+
+class ShowAtCenter(sublime_plugin.TextCommand):
+ def run(self, edit):
+ self.view.show_at_center(self.view.sel()[0])
diff --git a/sublime/Packages/Default/scroll.pyc b/sublime/Packages/Default/scroll.pyc
new file mode 100644
index 0000000..5e8e7e3
Binary files /dev/null and b/sublime/Packages/Default/scroll.pyc differ
diff --git a/sublime/Packages/Default/send2trash/__init__ (Hackintosh's conflicted copy 2012-07-23).pyc b/sublime/Packages/Default/send2trash/__init__ (Hackintosh's conflicted copy 2012-07-23).pyc
new file mode 100644
index 0000000..e116a0c
Binary files /dev/null and b/sublime/Packages/Default/send2trash/__init__ (Hackintosh's conflicted copy 2012-07-23).pyc differ
diff --git a/sublime/Packages/Default/send2trash/__init__ (Hackintosh's conflicted copy 2012-07-24).pyc b/sublime/Packages/Default/send2trash/__init__ (Hackintosh's conflicted copy 2012-07-24).pyc
new file mode 100644
index 0000000..e116a0c
Binary files /dev/null and b/sublime/Packages/Default/send2trash/__init__ (Hackintosh's conflicted copy 2012-07-24).pyc differ
diff --git a/sublime/Packages/Default/send2trash/__init__.py b/sublime/Packages/Default/send2trash/__init__.py
new file mode 100644
index 0000000..d6fa7f0
--- /dev/null
+++ b/sublime/Packages/Default/send2trash/__init__.py
@@ -0,0 +1,14 @@
+# Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
+
+# This software is licensed under the "BSD" License as described in the "LICENSE" file,
+# which should be included with this package. The terms are also available at
+# http://www.hardcoded.net/licenses/bsd_license
+
+import sys
+
+if sys.platform == 'darwin':
+ from .plat_osx import send2trash
+elif sys.platform == 'win32':
+ from .plat_win import send2trash
+else:
+ from .plat_other import send2trash
diff --git a/sublime/Packages/Default/send2trash/__init__.pyc b/sublime/Packages/Default/send2trash/__init__.pyc
new file mode 100644
index 0000000..595d66f
Binary files /dev/null and b/sublime/Packages/Default/send2trash/__init__.pyc differ
diff --git a/sublime/Packages/Default/send2trash/plat_osx (Hackintosh's conflicted copy 2012-07-23).pyc b/sublime/Packages/Default/send2trash/plat_osx (Hackintosh's conflicted copy 2012-07-23).pyc
new file mode 100644
index 0000000..918daa5
Binary files /dev/null and b/sublime/Packages/Default/send2trash/plat_osx (Hackintosh's conflicted copy 2012-07-23).pyc differ
diff --git a/sublime/Packages/Default/send2trash/plat_osx (Hackintosh's conflicted copy 2012-07-24).pyc b/sublime/Packages/Default/send2trash/plat_osx (Hackintosh's conflicted copy 2012-07-24).pyc
new file mode 100644
index 0000000..918daa5
Binary files /dev/null and b/sublime/Packages/Default/send2trash/plat_osx (Hackintosh's conflicted copy 2012-07-24).pyc differ
diff --git a/sublime/Packages/Default/send2trash/plat_osx.py b/sublime/Packages/Default/send2trash/plat_osx.py
new file mode 100644
index 0000000..ba58b6f
--- /dev/null
+++ b/sublime/Packages/Default/send2trash/plat_osx.py
@@ -0,0 +1,44 @@
+# Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
+
+# This software is licensed under the "BSD" License as described in the "LICENSE" file,
+# which should be included with this package. The terms are also available at
+# http://www.hardcoded.net/licenses/bsd_license
+
+from ctypes import cdll, byref, Structure, c_char, c_char_p
+from ctypes.util import find_library
+
+Foundation = cdll.LoadLibrary(find_library('Foundation'))
+CoreServices = cdll.LoadLibrary(find_library('CoreServices'))
+
+GetMacOSStatusCommentString = Foundation.GetMacOSStatusCommentString
+GetMacOSStatusCommentString.restype = c_char_p
+FSPathMakeRefWithOptions = CoreServices.FSPathMakeRefWithOptions
+FSMoveObjectToTrashSync = CoreServices.FSMoveObjectToTrashSync
+
+kFSPathMakeRefDefaultOptions = 0
+kFSPathMakeRefDoNotFollowLeafSymlink = 0x01
+
+kFSFileOperationDefaultOptions = 0
+kFSFileOperationOverwrite = 0x01
+kFSFileOperationSkipSourcePermissionErrors = 0x02
+kFSFileOperationDoNotMoveAcrossVolumes = 0x04
+kFSFileOperationSkipPreflight = 0x08
+
+class FSRef(Structure):
+ _fields_ = [('hidden', c_char * 80)]
+
+def check_op_result(op_result):
+ if op_result:
+ msg = GetMacOSStatusCommentString(op_result).decode('utf-8')
+ raise OSError(msg)
+
+def send2trash(path):
+ if not isinstance(path, bytes):
+ path = path.encode('utf-8')
+ fp = FSRef()
+ opts = kFSPathMakeRefDoNotFollowLeafSymlink
+ op_result = FSPathMakeRefWithOptions(path, opts, byref(fp), None)
+ check_op_result(op_result)
+ opts = kFSFileOperationDefaultOptions
+ op_result = FSMoveObjectToTrashSync(byref(fp), None, opts)
+ check_op_result(op_result)
diff --git a/sublime/Packages/Default/send2trash/plat_osx.pyc b/sublime/Packages/Default/send2trash/plat_osx.pyc
new file mode 100644
index 0000000..301ef69
Binary files /dev/null and b/sublime/Packages/Default/send2trash/plat_osx.pyc differ
diff --git a/sublime/Packages/Default/send2trash/plat_other.py b/sublime/Packages/Default/send2trash/plat_other.py
new file mode 100644
index 0000000..ee1479b
--- /dev/null
+++ b/sublime/Packages/Default/send2trash/plat_other.py
@@ -0,0 +1,154 @@
+# Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
+
+# This software is licensed under the "BSD" License as described in the "LICENSE" file,
+# which should be included with this package. The terms are also available at
+# http://www.hardcoded.net/licenses/bsd_license
+
+# This is a reimplementation of plat_other.py with reference to the
+# freedesktop.org trash specification:
+# [1] http://www.freedesktop.org/wiki/Specifications/trash-spec
+# [2] http://www.ramendik.ru/docs/trashspec.html
+# See also:
+# [3] http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html
+#
+# For external volumes this implementation will raise an exception if it can't
+# find or create the user's trash directory.
+
+import sys
+import os
+import os.path as op
+from datetime import datetime
+import stat
+from urllib import quote
+
+FILES_DIR = 'files'
+INFO_DIR = 'info'
+INFO_SUFFIX = '.trashinfo'
+
+# Default of ~/.local/share [3]
+XDG_DATA_HOME = op.expanduser(os.environ.get('XDG_DATA_HOME', '~/.local/share'))
+HOMETRASH = op.join(XDG_DATA_HOME, 'Trash')
+
+uid = os.getuid()
+TOPDIR_TRASH = '.Trash'
+TOPDIR_FALLBACK = '.Trash-' + str(uid)
+
+def is_parent(parent, path):
+ path = op.realpath(path) # In case it's a symlink
+ parent = op.realpath(parent)
+ return path.startswith(parent)
+
+def format_date(date):
+ return date.strftime("%Y-%m-%dT%H:%M:%S")
+
+def info_for(src, topdir):
+ # ...it MUST not include a ".."" directory, and for files not "under" that
+ # directory, absolute pathnames must be used. [2]
+ if topdir is None or not is_parent(topdir, src):
+ src = op.abspath(src)
+ else:
+ src = op.relpath(src, topdir)
+
+ info = "[Trash Info]\n"
+ info += "Path=" + quote(src) + "\n"
+ info += "DeletionDate=" + format_date(datetime.now()) + "\n"
+ return info
+
+def check_create(dir):
+ # use 0700 for paths [3]
+ if not op.exists(dir):
+ os.makedirs(dir, 0o700)
+
+def trash_move(src, dst, topdir=None):
+ filename = op.basename(src)
+ filespath = op.join(dst, FILES_DIR)
+ infopath = op.join(dst, INFO_DIR)
+ base_name, ext = op.splitext(filename)
+
+ counter = 0
+ destname = filename
+ while op.exists(op.join(filespath, destname)) or op.exists(op.join(infopath, destname + INFO_SUFFIX)):
+ counter += 1
+ destname = '%s %s%s' % (base_name, counter, ext)
+
+ check_create(filespath)
+ check_create(infopath)
+
+ os.rename(src, op.join(filespath, destname))
+ f = open(op.join(infopath, destname + INFO_SUFFIX), 'w')
+ f.write(info_for(src, topdir))
+ f.close()
+
+def find_mount_point(path):
+ # Even if something's wrong, "/" is a mount point, so the loop will exit.
+ # Use realpath in case it's a symlink
+ path = op.realpath(path) # Required to avoid infinite loop
+ while not op.ismount(path):
+ path = op.split(path)[0]
+ return path
+
+def find_ext_volume_global_trash(volume_root):
+ # from [2] Trash directories (1) check for a .Trash dir with the right
+ # permissions set.
+ trash_dir = op.join(volume_root, TOPDIR_TRASH)
+ if not op.exists(trash_dir):
+ return None
+
+ mode = os.lstat(trash_dir).st_mode
+ # vol/.Trash must be a directory, cannot be a symlink, and must have the
+ # sticky bit set.
+ if not op.isdir(trash_dir) or op.islink(trash_dir) or not (mode & stat.S_ISVTX):
+ return None
+
+ trash_dir = op.join(trash_dir, str(uid))
+ try:
+ check_create(trash_dir)
+ except OSError:
+ return None
+ return trash_dir
+
+def find_ext_volume_fallback_trash(volume_root):
+ # from [2] Trash directories (1) create a .Trash-$uid dir.
+ trash_dir = op.join(volume_root, TOPDIR_FALLBACK)
+ # Try to make the directory, if we can't the OSError exception will escape
+ # be thrown out of send2trash.
+ check_create(trash_dir)
+ return trash_dir
+
+def find_ext_volume_trash(volume_root):
+ trash_dir = find_ext_volume_global_trash(volume_root)
+ if trash_dir is None:
+ trash_dir = find_ext_volume_fallback_trash(volume_root)
+ return trash_dir
+
+# Pull this out so it's easy to stub (to avoid stubbing lstat itself)
+def get_dev(path):
+ return os.lstat(path).st_dev
+
+def send2trash(path):
+ # if not isinstance(path, str):
+ # path = str(path, sys.getfilesystemencoding())
+ if not op.exists(path):
+ raise OSError("File not found: %s" % path)
+ # ...should check whether the user has the necessary permissions to delete
+ # it, before starting the trashing operation itself. [2]
+ if not os.access(path, os.W_OK):
+ raise OSError("Permission denied: %s" % path)
+ # if the file to be trashed is on the same device as HOMETRASH we
+ # want to move it there.
+ path_dev = get_dev(path)
+
+ # If XDG_DATA_HOME or HOMETRASH do not yet exist we need to stat the
+ # home directory, and these paths will be created further on if needed.
+ trash_dev = get_dev(op.expanduser('~'))
+
+ if path_dev == trash_dev:
+ topdir = XDG_DATA_HOME
+ dest_trash = HOMETRASH
+ else:
+ topdir = find_mount_point(path)
+ trash_dev = get_dev(topdir)
+ if trash_dev != path_dev:
+ raise OSError("Couldn't find mount point for %s" % path)
+ dest_trash = find_ext_volume_trash(topdir)
+ trash_move(path, dest_trash, topdir)
diff --git a/sublime/Packages/Default/send2trash/plat_win.py b/sublime/Packages/Default/send2trash/plat_win.py
new file mode 100644
index 0000000..b437174
--- /dev/null
+++ b/sublime/Packages/Default/send2trash/plat_win.py
@@ -0,0 +1,55 @@
+# Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
+
+# This software is licensed under the "BSD" License as described in the "LICENSE" file,
+# which should be included with this package. The terms are also available at
+# http://www.hardcoded.net/licenses/bsd_license
+
+from ctypes import windll, Structure, byref, c_uint
+from ctypes.wintypes import HWND, UINT, LPCWSTR, BOOL
+import os.path as op
+
+shell32 = windll.shell32
+SHFileOperationW = shell32.SHFileOperationW
+
+class SHFILEOPSTRUCTW(Structure):
+ _fields_ = [
+ ("hwnd", HWND),
+ ("wFunc", UINT),
+ ("pFrom", LPCWSTR),
+ ("pTo", LPCWSTR),
+ ("fFlags", c_uint),
+ ("fAnyOperationsAborted", BOOL),
+ ("hNameMappings", c_uint),
+ ("lpszProgressTitle", LPCWSTR),
+ ]
+
+FO_MOVE = 1
+FO_COPY = 2
+FO_DELETE = 3
+FO_RENAME = 4
+
+FOF_MULTIDESTFILES = 1
+FOF_SILENT = 4
+FOF_NOCONFIRMATION = 16
+FOF_ALLOWUNDO = 64
+FOF_NOERRORUI = 1024
+
+def send2trash(path):
+ # if not isinstance(path, str):
+ # path = str(path, 'mbcs')
+ if not op.isabs(path):
+ path = op.abspath(path)
+ fileop = SHFILEOPSTRUCTW()
+ fileop.hwnd = 0
+ fileop.wFunc = FO_DELETE
+ fileop.pFrom = LPCWSTR(path + '\0')
+ fileop.pTo = None
+ fileop.fFlags = FOF_ALLOWUNDO | FOF_NOCONFIRMATION | FOF_NOERRORUI | FOF_SILENT
+ fileop.fAnyOperationsAborted = 0
+ fileop.hNameMappings = 0
+ fileop.lpszProgressTitle = None
+ result = SHFileOperationW(byref(fileop))
+ if result:
+ msg = "Couldn't perform operation. Error code: %d" % result
+ raise OSError(msg)
+
diff --git a/sublime/Packages/Default/set_unsaved_view_name (Hackintosh's conflicted copy 2012-07-23).pyc b/sublime/Packages/Default/set_unsaved_view_name (Hackintosh's conflicted copy 2012-07-23).pyc
new file mode 100644
index 0000000..99fb214
Binary files /dev/null and b/sublime/Packages/Default/set_unsaved_view_name (Hackintosh's conflicted copy 2012-07-23).pyc differ
diff --git a/sublime/Packages/Default/set_unsaved_view_name (Hackintosh's conflicted copy 2012-07-24).pyc b/sublime/Packages/Default/set_unsaved_view_name (Hackintosh's conflicted copy 2012-07-24).pyc
new file mode 100644
index 0000000..99fb214
Binary files /dev/null and b/sublime/Packages/Default/set_unsaved_view_name (Hackintosh's conflicted copy 2012-07-24).pyc differ
diff --git a/sublime/Packages/Default/set_unsaved_view_name.py b/sublime/Packages/Default/set_unsaved_view_name.py
new file mode 100644
index 0000000..57d4228
--- /dev/null
+++ b/sublime/Packages/Default/set_unsaved_view_name.py
@@ -0,0 +1,70 @@
+import sublime, sublime_plugin
+import os.path
+import string
+import functools
+
+class SetUnsavedViewName(sublime_plugin.EventListener):
+ setting_name = False
+
+ dropped_chars = string.whitespace
+
+ pending = 0
+
+ def on_modified(self, view):
+ if view.file_name() or view.is_loading():
+ return
+
+ if self.setting_name:
+ return
+
+ self.pending += 1
+ sublime.set_timeout(functools.partial(self.update_title, view), 20)
+
+ def update_title(self, view):
+ self.pending -= 1
+ if self.pending != 0:
+ return
+
+ if view.settings().get('set_unsaved_view_name') == False:
+ return
+
+ cur_name = view.settings().get('auto_name')
+ view_name = view.name()
+
+ # Only set the name for plain text files
+ syntax = view.settings().get('syntax')
+ if syntax != 'Packages/Text/Plain text.tmLanguage':
+ if cur_name:
+ # Undo any previous name that was set
+ view.settings().erase('auto_name')
+ if cur_name == view_name:
+ view.set_name("")
+ return
+
+ # Name has been explicitly set, don't override it
+ if not cur_name and view_name:
+ return
+
+ # Name has been explicitly changed, don't override it
+ if cur_name and cur_name != view.name():
+ view.settings().erase('auto_name')
+ return
+
+ # Don't set the names on widgets, it'll just trigger spurious
+ # on_modified callbacks
+ if view.settings().get('is_widget'):
+ return
+
+ line = view.line(0)
+ if line.size() > 50:
+ line = sublime.Region(0, 50)
+
+ first_line = view.substr(line)
+
+ first_line = first_line.strip(self.dropped_chars)
+
+ self.setting_name = True
+ view.set_name(first_line)
+ self.setting_name = False
+
+ view.settings().set('auto_name', first_line)
diff --git a/sublime/Packages/Default/set_unsaved_view_name.pyc b/sublime/Packages/Default/set_unsaved_view_name.pyc
new file mode 100644
index 0000000..1537981
Binary files /dev/null and b/sublime/Packages/Default/set_unsaved_view_name.pyc differ
diff --git a/sublime/Packages/Default/side_bar (Hackintosh's conflicted copy 2012-07-23).pyc b/sublime/Packages/Default/side_bar (Hackintosh's conflicted copy 2012-07-23).pyc
new file mode 100644
index 0000000..2824c50
Binary files /dev/null and b/sublime/Packages/Default/side_bar (Hackintosh's conflicted copy 2012-07-23).pyc differ
diff --git a/sublime/Packages/Default/side_bar (Hackintosh's conflicted copy 2012-07-24).pyc b/sublime/Packages/Default/side_bar (Hackintosh's conflicted copy 2012-07-24).pyc
new file mode 100644
index 0000000..2824c50
Binary files /dev/null and b/sublime/Packages/Default/side_bar (Hackintosh's conflicted copy 2012-07-24).pyc differ
diff --git a/sublime/Packages/Default/side_bar.py b/sublime/Packages/Default/side_bar.py
new file mode 100644
index 0000000..6c17cfb
--- /dev/null
+++ b/sublime/Packages/Default/side_bar.py
@@ -0,0 +1,84 @@
+import sublime, sublime_plugin
+import os
+import functools
+import send2trash
+
+class NewFileAtCommand(sublime_plugin.WindowCommand):
+ def run(self, dirs):
+ v = self.window.new_file()
+
+ if len(dirs) == 1:
+ v.settings().set('default_dir', dirs[0])
+
+ def is_visible(self, dirs):
+ return len(dirs) == 1
+
+class DeleteFileCommand(sublime_plugin.WindowCommand):
+ def run(self, files):
+ for f in files:
+ send2trash.send2trash(f)
+
+ def is_visible(self, files):
+ return len(files) > 0
+
+class NewFolderCommand(sublime_plugin.WindowCommand):
+ def run(self, dirs):
+ self.window.show_input_panel("Folder Name:", "", functools.partial(self.on_done, dirs[0]), None, None)
+
+ def on_done(self, dir, name):
+ os.makedirs(os.path.join(dir, name))
+
+ def is_visible(self, dirs):
+ return len(dirs) == 1
+
+class DeleteFolderCommand(sublime_plugin.WindowCommand):
+ def run(self, dirs):
+ if sublime.ok_cancel_dialog("Delete Folder?", "Delete"):
+ try:
+ for d in dirs:
+ send2trash.send2trash(d)
+ except:
+ sublime.status_message("Unable to delete folder")
+
+ def is_visible(self, dirs):
+ return len(dirs) > 0
+
+class RenamePathCommand(sublime_plugin.WindowCommand):
+ def run(self, paths):
+ branch, leaf = os.path.split(paths[0])
+ v = self.window.show_input_panel("New Name:", leaf, functools.partial(self.on_done, paths[0], branch), None, None)
+ name, ext = os.path.splitext(leaf)
+
+ v.sel().clear()
+ v.sel().add(sublime.Region(0, len(name)))
+
+ def on_done(self, old, branch, leaf):
+ new = os.path.join(branch, leaf)
+
+ try:
+ os.rename(old, new)
+
+ v = self.window.find_open_file(old)
+ if v:
+ v.retarget(new)
+ except:
+ sublime.status_message("Unable to rename")
+
+ def is_visible(self, paths):
+ return len(paths) == 1
+
+class OpenContainingFolderCommand(sublime_plugin.WindowCommand):
+ def run(self, files):
+ branch,leaf = os.path.split(files[0])
+ self.window.run_command("open_dir", {"dir": branch, "file": leaf})
+
+ def is_visible(self, files):
+ return len(files) > 0
+
+class FindInFolderCommand(sublime_plugin.WindowCommand):
+ def run(self, dirs):
+ self.window.run_command("show_panel", {"panel": "find_in_files",
+ "where": ",".join(dirs)})
+
+ def is_visible(self, dirs):
+ return len(dirs) > 0
diff --git a/sublime/Packages/Default/side_bar.pyc b/sublime/Packages/Default/side_bar.pyc
new file mode 100644
index 0000000..5c35ff5
Binary files /dev/null and b/sublime/Packages/Default/side_bar.pyc differ
diff --git a/sublime/Packages/Default/sort (Hackintosh's conflicted copy 2012-07-23).pyc b/sublime/Packages/Default/sort (Hackintosh's conflicted copy 2012-07-23).pyc
new file mode 100644
index 0000000..37e8c45
Binary files /dev/null and b/sublime/Packages/Default/sort (Hackintosh's conflicted copy 2012-07-23).pyc differ
diff --git a/sublime/Packages/Default/sort (Hackintosh's conflicted copy 2012-07-24).pyc b/sublime/Packages/Default/sort (Hackintosh's conflicted copy 2012-07-24).pyc
new file mode 100644
index 0000000..37e8c45
Binary files /dev/null and b/sublime/Packages/Default/sort (Hackintosh's conflicted copy 2012-07-24).pyc differ
diff --git a/sublime/Packages/Default/sort.py b/sublime/Packages/Default/sort.py
new file mode 100644
index 0000000..812b0f5
--- /dev/null
+++ b/sublime/Packages/Default/sort.py
@@ -0,0 +1,184 @@
+import sublime, sublime_plugin
+import random
+
+# Uglyness needed until SelectionRegions will happily compare themselves
+def srcmp(a, b):
+ aa = a.begin();
+ ba = b.begin();
+
+ if aa < ba:
+ return -1;
+ elif aa == ba:
+ return cmp(a.end(), b.end())
+ else:
+ return 1;
+
+def srtcmp(ta, tb):
+ return srcmp(ta[0], tb[0])
+
+def permute_selection(f, v, e):
+ regions = [s for s in v.sel() if not s.empty()]
+ regions.sort(srcmp)
+ txt = [v.substr(s) for s in regions]
+ txt = f(txt)
+
+ # no sane way to handle this case
+ if len(txt) != len(regions):
+ return
+
+ # Do the replacement in reverse order, so the character offsets don't get
+ # invalidated
+ combined = zip(regions, txt)
+ combined.sort(srtcmp, reverse=True)
+
+ for x in combined:
+ [r, t] = x
+ v.replace(e, r, t)
+
+def case_insensitive_sort(txt):
+ txt.sort(lambda a, b: cmp(a.lower(), b.lower()))
+ return txt
+
+def case_sensitive_sort(txt):
+ txt.sort(lambda a, b: cmp(a, b))
+ return txt
+
+def reverse_list(l):
+ l.reverse()
+ return l
+
+def shuffle_list(l):
+ random.shuffle(l)
+ return l
+
+def uniquealise_list(l):
+ table = {}
+ res = []
+ for x in l:
+ if x not in table:
+ table[x] = x
+ res.append(x)
+ return res
+
+permute_funcs = { "reverse" : reverse_list,
+ "shuffle" : shuffle_list,
+ "unique" : uniquealise_list }
+
+def unique_selection(v):
+ regions = [s for s in v.sel() if not s.empty()]
+ regions.sort(srcmp)
+
+ dupregions = []
+ table = {}
+ for r in regions:
+ txt = v.substr(r)
+ if txt not in table:
+ table[txt] = r
+ else:
+ dupregions.append(r)
+
+ dupregions.reverse()
+ for r in dupregions:
+ v.erase(e, r)
+
+def shrink_wrap_region( view, region ):
+ a, b = region.begin(), region.end()
+
+ for a in xrange(a, b):
+ if not view.substr(a).isspace():
+ break
+
+ for b in xrange(b-1, a, -1):
+ if not view.substr(b).isspace():
+ b += 1
+ break
+
+ return sublime.Region(a, b)
+
+def shrinkwrap_and_expand_non_empty_selections_to_entire_line(v):
+ sw = shrink_wrap_region
+ regions = []
+
+ for sel in v.sel():
+ if not sel.empty():
+ regions.append(v.line(sw(v, v.line(sel))))
+ v.sel().subtract(sel)
+
+ for r in regions:
+ v.sel().add(r)
+
+def permute_lines(f, v, e):
+ shrinkwrap_and_expand_non_empty_selections_to_entire_line(v)
+
+ regions = [s for s in v.sel() if not s.empty()]
+ if not regions:
+ regions = [sublime.Region(0, v.size())]
+
+ regions.sort(srcmp, reverse=True)
+
+ for r in regions:
+ txt = v.substr(r)
+ lines = txt.splitlines()
+ lines = f(lines)
+
+ v.replace(e, r, u"\n".join(lines))
+
+def has_multiple_non_empty_selection_region(v):
+ return len([s for s in v.sel() if not s.empty()]) > 1
+
+class SortLinesCommand(sublime_plugin.TextCommand):
+ def run(self, edit, case_sensitive=False,
+ reverse=False,
+ remove_duplicates=False):
+ view = self.view
+
+ if case_sensitive:
+ permute_lines(case_sensitive_sort, view, edit)
+ else:
+ permute_lines(case_insensitive_sort, view, edit)
+
+ if reverse:
+ permute_lines(reverse_list, view, edit)
+
+ if remove_duplicates:
+ permute_lines(uniquealise_list, view, edit)
+
+class SortSelectionCommand(sublime_plugin.TextCommand):
+ def run(self, edit, case_sensitive=False,
+ reverse=False,
+ remove_duplicates=False):
+
+ view = self.view
+
+ permute_selection(
+ case_sensitive_sort if case_sensitive else case_insensitive_sort,
+ view, edit)
+
+ if reverse:
+ permute_selection(reverse_list, view, edit)
+
+ if remove_duplicates:
+ unique_selection(view, edit)
+
+ def is_enabled(self, **kw):
+ return has_multiple_non_empty_selection_region(self.view)
+
+class PermuteLinesCommand(sublime_plugin.TextCommand):
+ def run(self, edit, operation='shuffle'):
+ permute_lines(permute_funcs[operation], self.view, edit)
+
+class PermuteSelectionCommand(sublime_plugin.TextCommand):
+ def run(self, edit, operation='shuffle'):
+ view = self.view
+
+ if operation == "reverse":
+ permute_selection(reverse_list, view, edit)
+
+ elif operation == "shuffle":
+ permute_selection(shuffle_list, view, edit)
+
+ elif operation == "unique":
+ unique_selection(view, edit)
+
+ def is_enabled(self, **kw):
+ return has_multiple_non_empty_selection_region(self.view)
diff --git a/sublime/Packages/Default/sort.pyc b/sublime/Packages/Default/sort.pyc
new file mode 100644
index 0000000..ddeb60b
Binary files /dev/null and b/sublime/Packages/Default/sort.pyc differ
diff --git a/sublime/Packages/Default/swap_line (Hackintosh's conflicted copy 2012-07-23).pyc b/sublime/Packages/Default/swap_line (Hackintosh's conflicted copy 2012-07-23).pyc
new file mode 100644
index 0000000..3151553
Binary files /dev/null and b/sublime/Packages/Default/swap_line (Hackintosh's conflicted copy 2012-07-23).pyc differ
diff --git a/sublime/Packages/Default/swap_line (Hackintosh's conflicted copy 2012-07-24).pyc b/sublime/Packages/Default/swap_line (Hackintosh's conflicted copy 2012-07-24).pyc
new file mode 100644
index 0000000..3151553
Binary files /dev/null and b/sublime/Packages/Default/swap_line (Hackintosh's conflicted copy 2012-07-24).pyc differ
diff --git a/sublime/Packages/Default/swap_line.py b/sublime/Packages/Default/swap_line.py
new file mode 100644
index 0000000..97841ee
--- /dev/null
+++ b/sublime/Packages/Default/swap_line.py
@@ -0,0 +1,110 @@
+import sublime, sublime_plugin
+
+
+def expand_to_line(view, region):
+ """
+ As view.full_line, but doesn't expand to the next line if a full line is
+ already selected
+ """
+ if not (region.a == region.b) and view.substr(region.end() - 1) == '\n':
+ return sublime.Region(view.line(region).begin(), region.end())
+ else:
+ return view.full_line(region)
+
+
+def extract_line_blocks(view):
+ blocks = [expand_to_line(view, s) for s in view.sel()]
+ if len(blocks) == 0:
+ return blocks
+
+ # merge any adjacent blocks
+ merged_blocks = [blocks[0]]
+ for block in blocks[1:]:
+ last_block = merged_blocks[-1]
+ if block.begin() <= last_block.end():
+ merged_blocks[-1] = sublime.Region(last_block.begin(), block.end())
+ else:
+ merged_blocks.append(block)
+
+ return merged_blocks
+
+class SwapLineUpCommand(sublime_plugin.TextCommand):
+
+ def run(self, edit):
+ blocks = extract_line_blocks(self.view)
+
+ # No selection
+ if len(blocks) == 0:
+ return
+
+ # Already at BOF
+ if blocks[0].begin() == 0:
+ return
+
+ # Add a trailing newline if required, the logic is simpler if every line
+ # ends with a newline
+ add_trailing_newline = (self.view.substr(self.view.size() - 1) != '\n') and blocks[-1].b == self.view.size()
+ if add_trailing_newline:
+ # The insert can cause the selection to move. This isn't wanted, so
+ # reset the selection if it has moved to EOF
+ sel = [r for r in self.view.sel()]
+ self.view.insert(edit, self.view.size(), '\n')
+ if self.view.sel()[-1].end() == self.view.size():
+ # Selection has moved, restore the previous selection
+ self.view.sel().clear()
+ for r in sel:
+ self.view.sel().add(r)
+
+ # Fix up any block that should now include this newline
+ blocks[-1] = sublime.Region(blocks[-1].a, blocks[-1].b + 1)
+
+ # Process in reverse order
+ blocks.reverse()
+ for b in blocks:
+ prev_line = self.view.full_line(b.begin() - 1)
+ self.view.insert(edit, b.end(), self.view.substr(prev_line))
+ self.view.erase(edit, prev_line)
+
+ if add_trailing_newline:
+ # Remove the added newline
+ self.view.erase(edit, sublime.Region(self.view.size() - 1, self.view.size()))
+
+ # Ensure the selection is visible
+ self.view.show(self.view.sel(), False)
+
+class SwapLineDownCommand(sublime_plugin.TextCommand):
+
+ def run(self, edit):
+ blocks = extract_line_blocks(self.view)
+
+ # No selection
+ if len(blocks) == 0:
+ return
+
+ # Already at EOF
+ if blocks[-1].end() == self.view.size():
+ return
+
+ # Add a trailing newline if required, the logic is simpler if every line
+ # ends with a newline
+ add_trailing_newline = (self.view.substr(self.view.size() - 1) != '\n')
+ if add_trailing_newline:
+ # No block can be at EOF (checked above), so no need to fix up the
+ # blocks
+ self.view.insert(edit, self.view.size(), '\n')
+
+ # Process in reverse order
+ blocks.reverse()
+ for b in blocks:
+ next_line = self.view.full_line(b.end())
+ contents = self.view.substr(next_line)
+
+ self.view.erase(edit, next_line)
+ self.view.insert(edit, b.begin(), contents)
+
+ if add_trailing_newline:
+ # Remove the added newline
+ self.view.erase(edit, sublime.Region(self.view.size() - 1, self.view.size()))
+
+ # Ensure the selection is visible
+ self.view.show(self.view.sel(), False)
diff --git a/sublime/Packages/Default/swap_line.pyc b/sublime/Packages/Default/swap_line.pyc
new file mode 100644
index 0000000..6dc443e
Binary files /dev/null and b/sublime/Packages/Default/swap_line.pyc differ
diff --git a/sublime/Packages/Default/switch_file (Hackintosh's conflicted copy 2012-07-23).pyc b/sublime/Packages/Default/switch_file (Hackintosh's conflicted copy 2012-07-23).pyc
new file mode 100644
index 0000000..6d9e022
Binary files /dev/null and b/sublime/Packages/Default/switch_file (Hackintosh's conflicted copy 2012-07-23).pyc differ
diff --git a/sublime/Packages/Default/switch_file (Hackintosh's conflicted copy 2012-07-24).pyc b/sublime/Packages/Default/switch_file (Hackintosh's conflicted copy 2012-07-24).pyc
new file mode 100644
index 0000000..6d9e022
Binary files /dev/null and b/sublime/Packages/Default/switch_file (Hackintosh's conflicted copy 2012-07-24).pyc differ
diff --git a/sublime/Packages/Default/switch_file.py b/sublime/Packages/Default/switch_file.py
new file mode 100644
index 0000000..60fa7e3
--- /dev/null
+++ b/sublime/Packages/Default/switch_file.py
@@ -0,0 +1,42 @@
+import sublime, sublime_plugin
+import os.path
+import platform
+
+def compare_file_names(x, y):
+ if platform.system() == 'Windows' or platform.system() == 'Darwin':
+ return x.lower() == y.lower()
+ else:
+ return x == y
+
+class SwitchFileCommand(sublime_plugin.WindowCommand):
+ def run(self, extensions=[]):
+ if not self.window.active_view():
+ return
+
+ fname = self.window.active_view().file_name()
+ if not fname:
+ return
+
+ path = os.path.dirname(fname)
+ base, ext = os.path.splitext(fname)
+
+ start = 0
+ count = len(extensions)
+
+ if ext != "":
+ ext = ext[1:]
+
+ for i in xrange(0, len(extensions)):
+ if compare_file_names(extensions[i], ext):
+ start = i + 1
+ count -= 1
+ break
+
+ for i in xrange(0, count):
+ idx = (start + i) % len(extensions)
+
+ new_path = base + '.' + extensions[idx]
+
+ if os.path.exists(new_path):
+ self.window.open_file(new_path)
+ break
diff --git a/sublime/Packages/Default/switch_file.pyc b/sublime/Packages/Default/switch_file.pyc
new file mode 100644
index 0000000..c7b8b07
Binary files /dev/null and b/sublime/Packages/Default/switch_file.pyc differ
diff --git a/sublime/Packages/Default/transform (Hackintosh's conflicted copy 2012-07-23).pyc b/sublime/Packages/Default/transform (Hackintosh's conflicted copy 2012-07-23).pyc
new file mode 100644
index 0000000..2471eef
Binary files /dev/null and b/sublime/Packages/Default/transform (Hackintosh's conflicted copy 2012-07-23).pyc differ
diff --git a/sublime/Packages/Default/transform (Hackintosh's conflicted copy 2012-07-24).pyc b/sublime/Packages/Default/transform (Hackintosh's conflicted copy 2012-07-24).pyc
new file mode 100644
index 0000000..2471eef
Binary files /dev/null and b/sublime/Packages/Default/transform (Hackintosh's conflicted copy 2012-07-24).pyc differ
diff --git a/sublime/Packages/Default/transform.py b/sublime/Packages/Default/transform.py
new file mode 100644
index 0000000..a194513
--- /dev/null
+++ b/sublime/Packages/Default/transform.py
@@ -0,0 +1,38 @@
+import string
+import sublime
+import sublime_plugin
+
+class Transformer(sublime_plugin.TextCommand):
+ def run(self, edit):
+ self.transform(self.transformer[0], self.view, edit)
+
+ def transform(self, f, view, edit):
+ for s in view.sel():
+ if s.empty():
+ s = view.word(s)
+
+ txt = f(view.substr(s))
+ view.replace(edit, s, txt)
+
+class SwapCaseCommand(Transformer):
+ transformer = string.swapcase,
+
+class UpperCaseCommand(Transformer):
+ transformer = string.upper,
+
+class LowerCaseCommand(Transformer):
+ transformer = string.lower,
+
+class TitleCaseCommand(Transformer):
+ transformer = lambda s: string.capwords(s, " "),
+
+def rot13(ch):
+ o = ord(ch)
+ if o >= ord('a') and o <= ord('z'):
+ return unichr((o - ord('a') + 13) % 26 + ord('a'))
+ if o >= ord('A') and o <= ord('Z'):
+ return unichr((o - ord('A') + 13) % 26 + ord('A'))
+ return ch
+
+class Rot13Command(Transformer):
+ transformer = lambda s: "".join([rot13(ch) for ch in s]),
diff --git a/sublime/Packages/Default/transform.pyc b/sublime/Packages/Default/transform.pyc
new file mode 100644
index 0000000..ead4028
Binary files /dev/null and b/sublime/Packages/Default/transform.pyc differ
diff --git a/sublime/Packages/Default/transpose (Hackintosh's conflicted copy 2012-07-23).pyc b/sublime/Packages/Default/transpose (Hackintosh's conflicted copy 2012-07-23).pyc
new file mode 100644
index 0000000..2509a6b
Binary files /dev/null and b/sublime/Packages/Default/transpose (Hackintosh's conflicted copy 2012-07-23).pyc differ
diff --git a/sublime/Packages/Default/transpose (Hackintosh's conflicted copy 2012-07-24).pyc b/sublime/Packages/Default/transpose (Hackintosh's conflicted copy 2012-07-24).pyc
new file mode 100644
index 0000000..2509a6b
Binary files /dev/null and b/sublime/Packages/Default/transpose (Hackintosh's conflicted copy 2012-07-24).pyc differ
diff --git a/sublime/Packages/Default/transpose.py b/sublime/Packages/Default/transpose.py
new file mode 100644
index 0000000..e3a8a4d
--- /dev/null
+++ b/sublime/Packages/Default/transpose.py
@@ -0,0 +1,102 @@
+#!/usr/bin/env python
+#coding: utf8
+#################################### IMPORTS ###################################
+
+# Std Libs
+import re
+
+try:
+ from itertools import izip
+except ImportError: # Python 3 coming Feb?
+ from itertools import zip as izip
+
+# Sublime Libs
+import sublime
+import sublime_plugin
+
+#################################### HELPERS ###################################
+
+def notify_nothing():
+ sublime.status_message('Nothing to transpose')
+
+def full_region(region):
+ return ( sublime.Region(region.begin(), region.begin() + 1)
+ if region.empty() else region )
+
+def perform_transposition(edit, view, trans, init_sel):
+ " assumes trans is already reverse sorted sequence of regions"
+ view.sel().subtract(init_sel)
+
+ for i, (sel, substr) in enumerate(izip(trans,
+ reversed([view.substr(s) for s in trans])) ):
+ view.replace(edit, sel, substr)
+ if not i: view.sel().add(init_sel)
+
+def transpose_selections(edit, view):
+ for sel in view.sel():
+ word_sel = view.word(sel)
+ word_extents = (wb, we) = (word_sel.begin(), word_sel.end())
+ transpose_words = sel.end() in word_extents
+
+ #" wora! arst"
+ if transpose_words:
+ if sel.end() == we:
+ next = view.find('\w', word_sel.end())
+ if next is None: continue
+ trans = [ view.word(next), word_sel ]
+ else:
+ if wb == 0: continue
+ for pt in xrange(wb-1, -1, -1):
+ if re.match('\w', view.substr(pt)): break
+ trans = [ word_sel, view.word(pt) ]
+ else:
+ p1 = max(0, sel.begin() -1)
+ character_behind_region = sublime.Region(p1)
+ #" a!a"
+ trans = [ full_region(sel), full_region(character_behind_region)]
+
+ perform_transposition(edit, view, trans, sel)
+
+def rotate_selections(edit, view):
+ # TODO: ???
+ for sel in view.sel():
+ if sel.empty(): view.sel().add(view.word(sel))
+
+ sels = list(reversed(view.sel()))
+
+ strings = [ view.substr(s) for s in sels ]
+ strings.append(strings.pop(0))
+
+ for sel, substr in izip(sels, strings):
+ view.replace(edit, sel, substr)
+
+################################### COMMANDS ###################################
+
+class Transpose(sublime_plugin.TextCommand):
+ """
+ - empty selection, cursor within a word: transpose characters
+ - empty selection, cursor at the end of a word: transpose words
+ - multiple selections, all empty: as above
+
+ - multiple selections, at least one non-empty: rotate contents of selections
+ (i.e., each selection takes on the contents of the selection before it)
+
+ - single non-empty selection: do nothing
+
+ """
+
+ def run(self, edit, **kw):
+ if not self.enabled(): return notify_nothing()
+
+ view = self.view
+ sels = view.sel()
+ nsels = len(sels)
+
+ if nsels > 1 and view.has_non_empty_selection_region():
+ rotate_selections(edit, view)
+ else:
+ transpose_selections(edit, view)
+
+ def enabled(self):
+ sels = self.view.sel()
+ return not (len(sels) == 1 and not sels[0].empty())
\ No newline at end of file
diff --git a/sublime/Packages/Default/transpose.pyc b/sublime/Packages/Default/transpose.pyc
new file mode 100644
index 0000000..1a1a826
Binary files /dev/null and b/sublime/Packages/Default/transpose.pyc differ
diff --git a/sublime/Packages/Default/trim_trailing_white_space (Hackintosh's conflicted copy 2012-07-23).pyc b/sublime/Packages/Default/trim_trailing_white_space (Hackintosh's conflicted copy 2012-07-23).pyc
new file mode 100644
index 0000000..18cd417
Binary files /dev/null and b/sublime/Packages/Default/trim_trailing_white_space (Hackintosh's conflicted copy 2012-07-23).pyc differ
diff --git a/sublime/Packages/Default/trim_trailing_white_space (Hackintosh's conflicted copy 2012-07-24).pyc b/sublime/Packages/Default/trim_trailing_white_space (Hackintosh's conflicted copy 2012-07-24).pyc
new file mode 100644
index 0000000..18cd417
Binary files /dev/null and b/sublime/Packages/Default/trim_trailing_white_space (Hackintosh's conflicted copy 2012-07-24).pyc differ
diff --git a/sublime/Packages/Default/trim_trailing_white_space.py b/sublime/Packages/Default/trim_trailing_white_space.py
new file mode 100644
index 0000000..96aa0ec
--- /dev/null
+++ b/sublime/Packages/Default/trim_trailing_white_space.py
@@ -0,0 +1,19 @@
+import sublime, sublime_plugin
+
+class TrimTrailingWhiteSpace(sublime_plugin.EventListener):
+ def on_pre_save(self, view):
+ if view.settings().get("trim_trailing_white_space_on_save") == True:
+ trailing_white_space = view.find_all("[\t ]+$")
+ trailing_white_space.reverse()
+ edit = view.begin_edit()
+ for r in trailing_white_space:
+ view.erase(edit, r)
+ view.end_edit(edit)
+
+class EnsureNewlineAtEof(sublime_plugin.EventListener):
+ def on_pre_save(self, view):
+ if view.settings().get("ensure_newline_at_eof_on_save") == True:
+ if view.size() > 0 and view.substr(view.size() - 1) != '\n':
+ edit = view.begin_edit()
+ view.insert(edit, view.size(), "\n")
+ view.end_edit(edit)
diff --git a/sublime/Packages/Default/trim_trailing_white_space.pyc b/sublime/Packages/Default/trim_trailing_white_space.pyc
new file mode 100644
index 0000000..6165b1a
Binary files /dev/null and b/sublime/Packages/Default/trim_trailing_white_space.pyc differ
diff --git a/sublime/Packages/Diff/Context.sublime-menu b/sublime/Packages/Diff/Context.sublime-menu
new file mode 100644
index 0000000..38afeca
--- /dev/null
+++ b/sublime/Packages/Diff/Context.sublime-menu
@@ -0,0 +1,4 @@
+[
+ { "caption": "-" },
+ { "caption": "Show Unsaved Changes…", "command": "diff_changes" }
+]
diff --git a/sublime/Packages/Diff/Diff.tmLanguage b/sublime/Packages/Diff/Diff.tmLanguage
new file mode 100644
index 0000000..601dde1
--- /dev/null
+++ b/sublime/Packages/Diff/Diff.tmLanguage
@@ -0,0 +1,229 @@
+
+
+
+
+ fileTypes
+
+ diff
+ patch
+
+ firstLineMatch
+ (?x)^
+ (===\ modified\ file
+ |==== \s* // .+ \s - \s .+ \s+ ====
+ |Index:[ ]
+ |---\ [^%]
+ |\*\*\*.*\d{4}\s*$
+ |\d+(,\d+)* (a|d|c) \d+(,\d+)* $
+ |diff\ --git[ ]
+ )
+
+ foldingStartMarker
+ ^\+\+\+
+ foldingStopMarker
+ ^---|^$
+ keyEquivalent
+ ^~D
+ name
+ Diff
+ patterns
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.definition.separator.diff
+
+
+ match
+ ^((\*{15})|(={67})|(-{3}))$\n?
+ name
+ meta.separator.diff
+
+
+ match
+ ^\d+(,\d+)*(a|d|c)\d+(,\d+)*$\n?
+ name
+ meta.diff.range.normal
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.definition.range.diff
+
+ 2
+
+ name
+ meta.toc-list.line-number.diff
+
+ 3
+
+ name
+ punctuation.definition.range.diff
+
+
+ match
+ ^(@@)\s*(.+?)\s*(@@)($\n?)?
+ name
+ meta.diff.range.unified
+
+
+ captures
+
+ 3
+
+ name
+ punctuation.definition.range.diff
+
+ 4
+
+ name
+ punctuation.definition.range.diff
+
+ 6
+
+ name
+ punctuation.definition.range.diff
+
+ 7
+
+ name
+ punctuation.definition.range.diff
+
+
+ match
+ ^(((\-{3}) .+ (\-{4}))|((\*{3}) .+ (\*{4})))$\n?
+ name
+ meta.diff.range.context
+
+
+ captures
+
+ 4
+
+ name
+ punctuation.definition.from-file.diff
+
+ 6
+
+ name
+ punctuation.definition.from-file.diff
+
+ 7
+
+ name
+ punctuation.definition.from-file.diff
+
+
+ match
+ (^(((-{3}) .+)|((\*{3}) .+))$\n?|^(={4}) .+(?= - ))
+ name
+ meta.diff.header.from-file
+
+
+ captures
+
+ 2
+
+ name
+ punctuation.definition.to-file.diff
+
+ 3
+
+ name
+ punctuation.definition.to-file.diff
+
+ 4
+
+ name
+ punctuation.definition.to-file.diff
+
+
+ match
+ (^(\+{3}) .+$\n?| (-) .* (={4})$\n?)
+ name
+ meta.diff.header.to-file
+
+
+ captures
+
+ 3
+
+ name
+ punctuation.definition.inserted.diff
+
+ 6
+
+ name
+ punctuation.definition.inserted.diff
+
+
+ match
+ ^(((>)( .*)?)|((\+).*))$\n?
+ name
+ markup.inserted.diff
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.definition.inserted.diff
+
+
+ match
+ ^(!).*$\n?
+ name
+ markup.changed.diff
+
+
+ captures
+
+ 3
+
+ name
+ punctuation.definition.inserted.diff
+
+ 6
+
+ name
+ punctuation.definition.inserted.diff
+
+
+ match
+ ^(((<)( .*)?)|((-).*))$\n?
+ name
+ markup.deleted.diff
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.separator.key-value.diff
+
+ 2
+
+ name
+ meta.toc-list.file-name.diff
+
+
+ match
+ ^Index(:) (.+)$\n?
+ name
+ meta.diff.index
+
+
+ scopeName
+ source.diff
+ uuid
+ 7E848FF4-708E-11D9-97B4-0011242E4184
+
+
diff --git a/sublime/Packages/Diff/Diff.tmLanguage.cache b/sublime/Packages/Diff/Diff.tmLanguage.cache
new file mode 100644
index 0000000..8d21815
Binary files /dev/null and b/sublime/Packages/Diff/Diff.tmLanguage.cache differ
diff --git a/sublime/Packages/Diff/Side Bar.sublime-menu b/sublime/Packages/Diff/Side Bar.sublime-menu
new file mode 100644
index 0000000..030ce8a
--- /dev/null
+++ b/sublime/Packages/Diff/Side Bar.sublime-menu
@@ -0,0 +1,3 @@
+[
+ { "caption": "Diff Files…", "command": "diff_files", "args": {"files": []} }
+]
diff --git a/sublime/Packages/Diff/diff.py b/sublime/Packages/Diff/diff.py
new file mode 100644
index 0000000..df45883
--- /dev/null
+++ b/sublime/Packages/Diff/diff.py
@@ -0,0 +1,83 @@
+import sublime, sublime_plugin
+import difflib
+import time
+import os.path
+import codecs
+
+class DiffFilesCommand(sublime_plugin.WindowCommand):
+ def run(self, files):
+ if len(files) != 2:
+ return
+
+ try:
+ a = codecs.open(files[1], "r", "utf-8").readlines()
+ b = codecs.open(files[0], "r", "utf-8").readlines()
+ except UnicodeDecodeError:
+ sublime.status_message("Diff only works with UTF-8 files")
+ return
+
+ adate = time.ctime(os.stat(files[1]).st_mtime)
+ bdate = time.ctime(os.stat(files[0]).st_mtime)
+
+ diff = difflib.unified_diff(a, b, files[1], files[0], adate, bdate)
+
+ difftxt = u"".join(line for line in diff)
+
+ if difftxt == "":
+ sublime.status_message("Files are identical")
+ else:
+ v = self.window.new_file()
+ v.set_name(os.path.basename(files[1]) + " -> " + os.path.basename(files[0]))
+ v.set_scratch(True)
+ v.set_syntax_file('Packages/Diff/Diff.tmLanguage')
+ edit = v.begin_edit()
+ v.insert(edit, 0, difftxt)
+ v.end_edit(edit)
+
+ def is_visible(self, files):
+ return len(files) == 2
+
+class DiffChangesCommand(sublime_plugin.TextCommand):
+ def run(self, edit):
+
+ fname = self.view.file_name();
+
+ try:
+ a = codecs.open(fname, "r", "utf-8").read().splitlines()
+ b = self.view.substr(sublime.Region(0, self.view.size())).splitlines()
+ except UnicodeDecodeError:
+ sublime.status_message("Diff only works with UTF-8 files")
+ return
+
+ adate = time.ctime(os.stat(fname).st_mtime)
+ bdate = time.ctime()
+
+ diff = difflib.unified_diff(a, b, fname, fname, adate, bdate,lineterm='')
+ difftxt = u"\n".join(line for line in diff)
+
+ if difftxt == "":
+ sublime.status_message("No changes")
+ return
+
+ use_buffer = self.view.settings().get('diff_changes_to_buffer')
+
+ if use_buffer:
+ v = self.view.window().new_file()
+ v.set_name("Unsaved Changes: " + os.path.basename(self.view.file_name()))
+ v.set_scratch(True)
+ v.set_syntax_file('Packages/Diff/Diff.tmLanguage')
+ else:
+ win = self.view.window()
+ v = win.get_output_panel('unsaved_changes')
+ v.set_syntax_file('Packages/Diff/Diff.tmLanguage')
+ v.settings().set('word_wrap', self.view.settings().get('word_wrap'))
+
+ edit = v.begin_edit()
+ v.insert(edit, 0, difftxt)
+ v.end_edit(edit)
+
+ if not use_buffer:
+ win.run_command("show_panel", {"panel": "output.unsaved_changes"})
+
+ def is_enabled(self):
+ return self.view.is_dirty() and self.view.file_name()
diff --git a/sublime/Packages/Diff/diff.pyc b/sublime/Packages/Diff/diff.pyc
new file mode 100644
index 0000000..172f903
Binary files /dev/null and b/sublime/Packages/Diff/diff.pyc differ
diff --git a/sublime/Packages/Erlang/Behaviour-Directive.sublime-snippet b/sublime/Packages/Erlang/Behaviour-Directive.sublime-snippet
new file mode 100644
index 0000000..4748c03
--- /dev/null
+++ b/sublime/Packages/Erlang/Behaviour-Directive.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ beh
+ source.erlang
+ Behaviour Directive
+
diff --git a/sublime/Packages/Erlang/Case-Expression.sublime-snippet b/sublime/Packages/Erlang/Case-Expression.sublime-snippet
new file mode 100644
index 0000000..109c4a2
--- /dev/null
+++ b/sublime/Packages/Erlang/Case-Expression.sublime-snippet
@@ -0,0 +1,9 @@
+
+
+ ${5:body}
+end]]>
+ case
+ source.erlang
+ Case Expression
+
diff --git a/sublime/Packages/Erlang/Comments.tmPreferences b/sublime/Packages/Erlang/Comments.tmPreferences
new file mode 100644
index 0000000..1a18f62
--- /dev/null
+++ b/sublime/Packages/Erlang/Comments.tmPreferences
@@ -0,0 +1,30 @@
+
+
+
+
+ name
+ Comments
+ scope
+ source.erlang
+ settings
+
+ shellVariables
+
+
+ name
+ TM_COMMENT_START
+ value
+ %
+
+
+ name
+ TM_COMMENT_MODE
+ value
+ line
+
+
+
+ uuid
+ 08AFD8DA-AEFF-4979-98BA-21D5B0A59D33
+
+
diff --git a/sublime/Packages/Erlang/Comments.tmPreferences.cache b/sublime/Packages/Erlang/Comments.tmPreferences.cache
new file mode 100644
index 0000000..629cb90
Binary files /dev/null and b/sublime/Packages/Erlang/Comments.tmPreferences.cache differ
diff --git a/sublime/Packages/Erlang/Define-Directive.sublime-snippet b/sublime/Packages/Erlang/Define-Directive.sublime-snippet
new file mode 100644
index 0000000..4a1fb00
--- /dev/null
+++ b/sublime/Packages/Erlang/Define-Directive.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ def
+ source.erlang
+ Define Directive
+
diff --git a/sublime/Packages/Erlang/Erlang.sublime-build b/sublime/Packages/Erlang/Erlang.sublime-build
new file mode 100644
index 0000000..6aaf47f
--- /dev/null
+++ b/sublime/Packages/Erlang/Erlang.sublime-build
@@ -0,0 +1,5 @@
+{
+ "cmd": ["erl", "-compile", "$file"],
+ "file_regex":"^([^:]+):([0-9]*):?(.*):?(.*)",
+ "selector": "source.erl"
+}
diff --git a/sublime/Packages/Erlang/Erlang.tmLanguage b/sublime/Packages/Erlang/Erlang.tmLanguage
new file mode 100644
index 0000000..ceb3b63
--- /dev/null
+++ b/sublime/Packages/Erlang/Erlang.tmLanguage
@@ -0,0 +1,2562 @@
+
+
+
+
+ comment
+ The recognition of function definitions and compiler directives (such as module, record and macro definitions) requires that each of the aforementioned constructs must be the first string inside a line (except for whitespace). Also, the function/module/record/macro names must be given unquoted. -- desp
+ fileTypes
+
+ erl
+ hrl
+ Emakefile
+ emakefile
+
+ keyEquivalent
+ ^~E
+ name
+ Erlang
+ patterns
+
+
+ include
+ #module-directive
+
+
+ include
+ #import-export-directive
+
+
+ include
+ #record-directive
+
+
+ include
+ #define-directive
+
+
+ include
+ #macro-directive
+
+
+ include
+ #directive
+
+
+ include
+ #function
+
+
+ include
+ #everything-else
+
+
+ repository
+
+ atom
+
+ patterns
+
+
+ begin
+ (')
+ beginCaptures
+
+ 1
+
+ name
+ punctuation.definition.symbol.begin.erlang
+
+
+ end
+ (')
+ endCaptures
+
+ 1
+
+ name
+ punctuation.definition.symbol.end.erlang
+
+
+ name
+ constant.other.symbol.quoted.single.erlang
+ patterns
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.definition.escape.erlang
+
+ 3
+
+ name
+ punctuation.definition.escape.erlang
+
+
+ match
+ (\\)([bdefnrstv\\'"]|(\^)[@-_]|[0-7]{1,3})
+ name
+ constant.other.symbol.escape.erlang
+
+
+ match
+ \\\^?.?
+ name
+ invalid.illegal.atom.erlang
+
+
+
+
+ match
+ [a-z][a-zA-Z\d@_]*+
+ name
+ constant.other.symbol.unquoted.erlang
+
+
+
+ binary
+
+ begin
+ (<<)
+ beginCaptures
+
+ 1
+
+ name
+ punctuation.definition.binary.begin.erlang
+
+
+ end
+ (>>)
+ endCaptures
+
+ 1
+
+ name
+ punctuation.definition.binary.end.erlang
+
+
+ name
+ meta.structure.binary.erlang
+ patterns
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.separator.binary.erlang
+
+ 2
+
+ name
+ punctuation.separator.value-size.erlang
+
+
+ match
+ (,)|(:)
+
+
+ include
+ #internal-type-specifiers
+
+
+ include
+ #everything-else
+
+
+
+ character
+
+ patterns
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.definition.character.erlang
+
+ 2
+
+ name
+ constant.character.escape.erlang
+
+ 3
+
+ name
+ punctuation.definition.escape.erlang
+
+ 5
+
+ name
+ punctuation.definition.escape.erlang
+
+
+ match
+ (\$)((\\)([bdefnrstv\\'"]|(\^)[@-_]|[0-7]{1,3}))
+ name
+ constant.character.erlang
+
+
+ match
+ \$\\\^?.?
+ name
+ invalid.illegal.character.erlang
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.definition.character.erlang
+
+
+ match
+ (\$)\S
+ name
+ constant.character.erlang
+
+
+ match
+ \$.?
+ name
+ invalid.illegal.character.erlang
+
+
+
+ comment
+
+ begin
+ (%)
+ beginCaptures
+
+ 1
+
+ name
+ punctuation.definition.comment.erlang
+
+
+ end
+ $\n?
+ name
+ comment.line.erlang
+
+ define-directive
+
+ patterns
+
+
+ begin
+ ^\s*+(-)\s*+(define)\s*+(\()\s*+([a-zA-Z\d@_]++)\s*+(,)
+ beginCaptures
+
+ 1
+
+ name
+ punctuation.section.directive.begin.erlang
+
+ 2
+
+ name
+ keyword.control.directive.define.erlang
+
+ 3
+
+ name
+ punctuation.definition.parameters.begin.erlang
+
+ 4
+
+ name
+ entity.name.function.macro.definition.erlang
+
+ 5
+
+ name
+ punctuation.separator.parameters.erlang
+
+
+ end
+ (\))\s*+(\.)
+ endCaptures
+
+ 1
+
+ name
+ punctuation.definition.parameters.end.erlang
+
+ 2
+
+ name
+ punctuation.section.directive.end.erlang
+
+
+ name
+ meta.directive.define.erlang
+ patterns
+
+
+ include
+ #everything-else
+
+
+
+
+ begin
+ (?=^\s*+-\s*+define\s*+\(\s*+[a-zA-Z\d@_]++\s*+\()
+ end
+ (\))\s*+(\.)
+ endCaptures
+
+ 1
+
+ name
+ punctuation.definition.parameters.end.erlang
+
+ 2
+
+ name
+ punctuation.section.directive.end.erlang
+
+
+ name
+ meta.directive.define.erlang
+ patterns
+
+
+ begin
+ ^\s*+(-)\s*+(define)\s*+(\()\s*+([a-zA-Z\d@_]++)\s*+(\()
+ beginCaptures
+
+ 1
+
+ name
+ punctuation.section.directive.begin.erlang
+
+ 2
+
+ name
+ keyword.control.directive.define.erlang
+
+ 3
+
+ name
+ punctuation.definition.parameters.begin.erlang
+
+ 4
+
+ name
+ entity.name.function.macro.definition.erlang
+
+ 5
+
+ name
+ punctuation.definition.parameters.begin.erlang
+
+
+ end
+ (\))\s*(,)
+ endCaptures
+
+ 1
+
+ name
+ punctuation.definition.parameters.end.erlang
+
+ 2
+
+ name
+ punctuation.separator.parameters.erlang
+
+
+ patterns
+
+
+ match
+ ,
+ name
+ punctuation.separator.parameters.erlang
+
+
+ include
+ #everything-else
+
+
+
+
+ match
+ \|\||\||:|;|,|\.|->
+ name
+ punctuation.separator.define.erlang
+
+
+ include
+ #everything-else
+
+
+
+
+
+ directive
+
+ patterns
+
+
+ begin
+ ^\s*+(-)\s*+([a-z][a-zA-Z\d@_]*+)\s*+(\()
+ beginCaptures
+
+ 1
+
+ name
+ punctuation.section.directive.begin.erlang
+
+ 2
+
+ name
+ keyword.control.directive.erlang
+
+ 3
+
+ name
+ punctuation.definition.parameters.begin.erlang
+
+
+ end
+ (\))\s*+(\.)
+ endCaptures
+
+ 1
+
+ name
+ punctuation.definition.parameters.end.erlang
+
+ 2
+
+ name
+ punctuation.section.directive.end.erlang
+
+
+ name
+ meta.directive.erlang
+ patterns
+
+
+ include
+ #everything-else
+
+
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.section.directive.begin.erlang
+
+ 2
+
+ name
+ keyword.control.directive.erlang
+
+ 3
+
+ name
+ punctuation.section.directive.end.erlang
+
+
+ match
+ ^\s*+(-)\s*+([a-z][a-zA-Z\d@_]*+)\s*+(\.)
+ name
+ meta.directive.erlang
+
+
+
+ everything-else
+
+ patterns
+
+
+ include
+ #comment
+
+
+ include
+ #record-usage
+
+
+ include
+ #macro-usage
+
+
+ include
+ #expression
+
+
+ include
+ #keyword
+
+
+ include
+ #textual-operator
+
+
+ include
+ #function-call
+
+
+ include
+ #tuple
+
+
+ include
+ #list
+
+
+ include
+ #binary
+
+
+ include
+ #parenthesized-expression
+
+
+ include
+ #character
+
+
+ include
+ #number
+
+
+ include
+ #atom
+
+
+ include
+ #string
+
+
+ include
+ #symbolic-operator
+
+
+ include
+ #variable
+
+
+
+ expression
+
+ patterns
+
+
+ begin
+ \b(if)\b
+ beginCaptures
+
+ 1
+
+ name
+ keyword.control.if.erlang
+
+
+ end
+ \b(end)\b
+ endCaptures
+
+ 1
+
+ name
+ keyword.control.end.erlang
+
+
+ name
+ meta.expression.if.erlang
+ patterns
+
+
+ include
+ #internal-expression-punctuation
+
+
+ include
+ #everything-else
+
+
+
+
+ begin
+ \b(case)\b
+ beginCaptures
+
+ 1
+
+ name
+ keyword.control.case.erlang
+
+
+ end
+ \b(end)\b
+ endCaptures
+
+ 1
+
+ name
+ keyword.control.end.erlang
+
+
+ name
+ meta.expression.case.erlang
+ patterns
+
+
+ include
+ #internal-expression-punctuation
+
+
+ include
+ #everything-else
+
+
+
+
+ begin
+ \b(receive)\b
+ beginCaptures
+
+ 1
+
+ name
+ keyword.control.receive.erlang
+
+
+ end
+ \b(end)\b
+ endCaptures
+
+ 1
+
+ name
+ keyword.control.end.erlang
+
+
+ name
+ meta.expression.receive.erlang
+ patterns
+
+
+ include
+ #internal-expression-punctuation
+
+
+ include
+ #everything-else
+
+
+
+
+ captures
+
+ 1
+
+ name
+ keyword.control.fun.erlang
+
+ 3
+
+ name
+ entity.name.type.class.module.erlang
+
+ 4
+
+ name
+ punctuation.separator.module-function.erlang
+
+ 5
+
+ name
+ entity.name.function.erlang
+
+ 6
+
+ name
+ punctuation.separator.function-arity.erlang
+
+
+ match
+ \b(fun)\s*+(([a-z][a-zA-Z\d@_]*+)\s*+(:)\s*+)?([a-z][a-zA-Z\d@_]*+)\s*(/)
+
+
+ begin
+ \b(fun)\b
+ beginCaptures
+
+ 1
+
+ name
+ keyword.control.fun.erlang
+
+
+ end
+ \b(end)\b
+ endCaptures
+
+ 1
+
+ name
+ keyword.control.end.erlang
+
+
+ name
+ meta.expression.fun.erlang
+ patterns
+
+
+ begin
+ (?=\()
+ end
+ (;)|(?=\bend\b)
+ endCaptures
+
+ 1
+
+ name
+ punctuation.separator.clauses.erlang
+
+
+ patterns
+
+
+ include
+ #internal-function-parts
+
+
+
+
+ include
+ #everything-else
+
+
+
+
+ begin
+ \b(try)\b
+ beginCaptures
+
+ 1
+
+ name
+ keyword.control.try.erlang
+
+
+ end
+ \b(end)\b
+ endCaptures
+
+ 1
+
+ name
+ keyword.control.end.erlang
+
+
+ name
+ meta.expression.try.erlang
+ patterns
+
+
+ include
+ #internal-expression-punctuation
+
+
+ include
+ #everything-else
+
+
+
+
+ begin
+ \b(begin)\b
+ beginCaptures
+
+ 1
+
+ name
+ keyword.control.begin.erlang
+
+
+ end
+ \b(end)\b
+ endCaptures
+
+ 1
+
+ name
+ keyword.control.end.erlang
+
+
+ name
+ meta.expression.begin.erlang
+ patterns
+
+
+ include
+ #internal-expression-punctuation
+
+
+ include
+ #everything-else
+
+
+
+
+ begin
+ \b(query)\b
+ beginCaptures
+
+ 1
+
+ name
+ keyword.control.query.erlang
+
+
+ end
+ \b(end)\b
+ endCaptures
+
+ 1
+
+ name
+ keyword.control.end.erlang
+
+
+ name
+ meta.expression.query.erlang
+ patterns
+
+
+ include
+ #everything-else
+
+
+
+
+
+ function
+
+ begin
+ ^\s*+([a-z][a-zA-Z\d@_]*+)\s*+(?=\()
+ beginCaptures
+
+ 1
+
+ name
+ entity.name.function.definition.erlang
+
+
+ end
+ (\.)
+ endCaptures
+
+ 1
+
+ name
+ punctuation.terminator.function.erlang
+
+
+ name
+ meta.function.erlang
+ patterns
+
+
+ captures
+
+ 1
+
+ name
+ entity.name.function.erlang
+
+
+ match
+ ^\s*+([a-z][a-zA-Z\d@_]*+)\s*+(?=\()
+
+
+ begin
+ (?=\()
+ end
+ (;)|(?=\.)
+ endCaptures
+
+ 1
+
+ name
+ punctuation.separator.clauses.erlang
+
+
+ patterns
+
+
+ include
+ #parenthesized-expression
+
+
+ include
+ #internal-function-parts
+
+
+
+
+ include
+ #everything-else
+
+
+
+ function-call
+
+ begin
+ (?=[a-z][a-zA-Z\d@_]*+\s*+(\(|:\s*+[a-z][a-zA-Z\d@_]*+\s*+\())
+ end
+ (\))
+ endCaptures
+
+ 1
+
+ name
+ punctuation.definition.parameters.end.erlang
+
+
+ name
+ meta.function-call.erlang
+ patterns
+
+
+ begin
+ ((erlang)\s*+(:)\s*+)?(is_atom|is_binary|is_constant|is_float|is_function|is_integer|is_list|is_number|is_pid|is_port|is_reference|is_tuple|is_record|abs|element|hd|length|node|round|self|size|tl|trunc)\s*+(\()
+ beginCaptures
+
+ 2
+
+ name
+ entity.name.type.class.module.erlang
+
+ 3
+
+ name
+ punctuation.separator.module-function.erlang
+
+ 4
+
+ name
+ entity.name.function.guard.erlang
+
+ 5
+
+ name
+ punctuation.definition.parameters.begin.erlang
+
+
+ end
+ (?=\))
+ patterns
+
+
+ match
+ ,
+ name
+ punctuation.separator.parameters.erlang
+
+
+ include
+ #everything-else
+
+
+
+
+ begin
+ (([a-z][a-zA-Z\d@_]*+)\s*+(:)\s*+)?([a-z][a-zA-Z\d@_]*+)\s*+(\()
+ beginCaptures
+
+ 2
+
+ name
+ entity.name.type.class.module.erlang
+
+ 3
+
+ name
+ punctuation.separator.module-function.erlang
+
+ 4
+
+ name
+ entity.name.function.erlang
+
+ 5
+
+ name
+ punctuation.definition.parameters.begin.erlang
+
+
+ end
+ (?=\))
+ patterns
+
+
+ match
+ ,
+ name
+ punctuation.separator.parameters.erlang
+
+
+ include
+ #everything-else
+
+
+
+
+
+ import-export-directive
+
+ patterns
+
+
+ begin
+ ^\s*+(-)\s*+(import)\s*+(\()\s*+([a-z][a-zA-Z\d@_]*+)\s*+(,)
+ beginCaptures
+
+ 1
+
+ name
+ punctuation.section.directive.begin.erlang
+
+ 2
+
+ name
+ keyword.control.directive.import.erlang
+
+ 3
+
+ name
+ punctuation.definition.parameters.begin.erlang
+
+ 4
+
+ name
+ entity.name.type.class.module.erlang
+
+ 5
+
+ name
+ punctuation.separator.parameters.erlang
+
+
+ end
+ (\))\s*+(\.)
+ endCaptures
+
+ 1
+
+ name
+ punctuation.definition.parameters.end.erlang
+
+ 2
+
+ name
+ punctuation.section.directive.end.erlang
+
+
+ name
+ meta.directive.import.erlang
+ patterns
+
+
+ include
+ #internal-function-list
+
+
+
+
+ begin
+ ^\s*+(-)\s*+(export)\s*+(\()
+ beginCaptures
+
+ 1
+
+ name
+ punctuation.section.directive.begin.erlang
+
+ 2
+
+ name
+ keyword.control.directive.export.erlang
+
+ 3
+
+ name
+ punctuation.definition.parameters.begin.erlang
+
+
+ end
+ (\))\s*+(\.)
+ endCaptures
+
+ 1
+
+ name
+ punctuation.definition.parameters.end.erlang
+
+ 2
+
+ name
+ punctuation.section.directive.end.erlang
+
+
+ name
+ meta.directive.export.erlang
+ patterns
+
+
+ include
+ #internal-function-list
+
+
+
+
+
+ internal-expression-punctuation
+
+ captures
+
+ 1
+
+ name
+ punctuation.separator.clause-head-body.erlang
+
+ 2
+
+ name
+ punctuation.separator.clauses.erlang
+
+ 3
+
+ name
+ punctuation.separator.expressions.erlang
+
+
+ match
+ (->)|(;)|(,)
+
+ internal-function-list
+
+ begin
+ (\[)
+ beginCaptures
+
+ 1
+
+ name
+ punctuation.definition.list.begin.erlang
+
+
+ end
+ (\])
+ endCaptures
+
+ 1
+
+ name
+ punctuation.definition.list.end.erlang
+
+
+ name
+ meta.structure.list.function.erlang
+ patterns
+
+
+ begin
+ ([a-z][a-zA-Z\d@_]*+)\s*+(/)
+ beginCaptures
+
+ 1
+
+ name
+ entity.name.function.erlang
+
+ 2
+
+ name
+ punctuation.separator.function-arity.erlang
+
+
+ end
+ (,)|(?=\])
+ endCaptures
+
+ 1
+
+ name
+ punctuation.separator.list.erlang
+
+
+ patterns
+
+
+ include
+ #everything-else
+
+
+
+
+ include
+ #everything-else
+
+
+
+ internal-function-parts
+
+ patterns
+
+
+ begin
+ (?=\()
+ end
+ (->)
+ endCaptures
+
+ 1
+
+ name
+ punctuation.separator.clause-head-body.erlang
+
+
+ patterns
+
+
+ begin
+ (\()
+ beginCaptures
+
+ 1
+
+ name
+ punctuation.definition.parameters.begin.erlang
+
+
+ end
+ (\))
+ endCaptures
+
+ 1
+
+ name
+ punctuation.definition.parameters.end.erlang
+
+
+ patterns
+
+
+ match
+ ,
+ name
+ punctuation.separator.parameters.erlang
+
+
+ include
+ #everything-else
+
+
+
+
+ match
+ ,|;
+ name
+ punctuation.separator.guards.erlang
+
+
+ include
+ #everything-else
+
+
+
+
+ match
+ ,
+ name
+ punctuation.separator.expressions.erlang
+
+
+ include
+ #everything-else
+
+
+
+ internal-record-body
+
+ begin
+ (\{)
+ beginCaptures
+
+ 1
+
+ name
+ punctuation.definition.class.record.begin.erlang
+
+
+ end
+ (?=\})
+ name
+ meta.structure.record.erlang
+ patterns
+
+
+ begin
+ (([a-z][a-zA-Z\d@_]*+)|(_))\s*+(=)
+ beginCaptures
+
+ 2
+
+ name
+ variable.other.field.erlang
+
+ 3
+
+ name
+ variable.language.omitted.field.erlang
+
+ 4
+
+ name
+ keyword.operator.assignment.erlang
+
+
+ end
+ (,)|(?=\})
+ endCaptures
+
+ 1
+
+ name
+ punctuation.separator.class.record.erlang
+
+
+ patterns
+
+
+ include
+ #everything-else
+
+
+
+
+ captures
+
+ 1
+
+ name
+ variable.other.field.erlang
+
+ 2
+
+ name
+ punctuation.separator.class.record.erlang
+
+
+ match
+ ([a-z][a-zA-Z\d@_]*+)\s*+(,)?
+
+
+ include
+ #everything-else
+
+
+
+ internal-type-specifiers
+
+ begin
+ (/)
+ beginCaptures
+
+ 1
+
+ name
+ punctuation.separator.value-type.erlang
+
+
+ end
+ (?=,|:|>>)
+ patterns
+
+
+ captures
+
+ 1
+
+ name
+ storage.type.erlang
+
+ 2
+
+ name
+ storage.modifier.signedness.erlang
+
+ 3
+
+ name
+ storage.modifier.endianness.erlang
+
+ 4
+
+ name
+ storage.modifier.unit.erlang
+
+ 5
+
+ name
+ punctuation.separator.type-specifiers.erlang
+
+
+ match
+ (integer|float|binary)|(signed|unsigned)|(big|little|native)|(unit)|(-)
+
+
+
+ keyword
+
+ match
+ \b(after|begin|case|catch|cond|end|fun|if|let|of|query|try|receive|when)\b
+ name
+ keyword.control.erlang
+
+ list
+
+ begin
+ (\[)
+ beginCaptures
+
+ 1
+
+ name
+ punctuation.definition.list.begin.erlang
+
+
+ end
+ (\])
+ endCaptures
+
+ 1
+
+ name
+ punctuation.definition.list.end.erlang
+
+
+ name
+ meta.structure.list.erlang
+ patterns
+
+
+ match
+ \||\|\||,
+ name
+ punctuation.separator.list.erlang
+
+
+ include
+ #everything-else
+
+
+
+ macro-directive
+
+ patterns
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.section.directive.begin.erlang
+
+ 2
+
+ name
+ keyword.control.directive.ifdef.erlang
+
+ 3
+
+ name
+ punctuation.definition.parameters.begin.erlang
+
+ 4
+
+ name
+ entity.name.function.macro.erlang
+
+ 5
+
+ name
+ punctuation.definition.parameters.end.erlang
+
+ 6
+
+ name
+ punctuation.section.directive.end.erlang
+
+
+ match
+ ^\s*+(-)\s*+(ifdef)\s*+(\()\s*+([a-zA-z\d@_]++)\s*+(\))\s*+(\.)
+ name
+ meta.directive.ifdef.erlang
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.section.directive.begin.erlang
+
+ 2
+
+ name
+ keyword.control.directive.ifndef.erlang
+
+ 3
+
+ name
+ punctuation.definition.parameters.begin.erlang
+
+ 4
+
+ name
+ entity.name.function.macro.erlang
+
+ 5
+
+ name
+ punctuation.definition.parameters.end.erlang
+
+ 6
+
+ name
+ punctuation.section.directive.end.erlang
+
+
+ match
+ ^\s*+(-)\s*+(ifndef)\s*+(\()\s*+([a-zA-z\d@_]++)\s*+(\))\s*+(\.)
+ name
+ meta.directive.ifndef.erlang
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.section.directive.begin.erlang
+
+ 2
+
+ name
+ keyword.control.directive.undef.erlang
+
+ 3
+
+ name
+ punctuation.definition.parameters.begin.erlang
+
+ 4
+
+ name
+ entity.name.function.macro.erlang
+
+ 5
+
+ name
+ punctuation.definition.parameters.end.erlang
+
+ 6
+
+ name
+ punctuation.section.directive.end.erlang
+
+
+ match
+ ^\s*+(-)\s*+(undef)\s*+(\()\s*+([a-zA-z\d@_]++)\s*+(\))\s*+(\.)
+ name
+ meta.directive.undef.erlang
+
+
+
+ macro-usage
+
+ captures
+
+ 1
+
+ name
+ keyword.operator.macro.erlang
+
+ 2
+
+ name
+ entity.name.function.macro.erlang
+
+
+ match
+ (\?\??)\s*+([a-zA-Z\d@_]++)
+ name
+ meta.macro-usage.erlang
+
+ module-directive
+
+ captures
+
+ 1
+
+ name
+ punctuation.section.directive.begin.erlang
+
+ 2
+
+ name
+ keyword.control.directive.module.erlang
+
+ 3
+
+ name
+ punctuation.definition.parameters.begin.erlang
+
+ 4
+
+ name
+ entity.name.type.class.module.definition.erlang
+
+ 5
+
+ name
+ punctuation.definition.parameters.end.erlang
+
+ 6
+
+ name
+ punctuation.section.directive.end.erlang
+
+
+ match
+ ^\s*+(-)\s*+(module)\s*+(\()\s*+([a-z][a-zA-Z\d@_]*+)\s*+(\))\s*+(\.)
+ name
+ meta.directive.module.erlang
+
+ number
+
+ begin
+ (?=\d)
+ end
+ (?!\d)
+ patterns
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.separator.integer-float.erlang
+
+ 3
+
+ name
+ punctuation.separator.float-exponent.erlang
+
+
+ match
+ \d++(\.)\d++(([eE][\+\-])?\d++)?
+ name
+ constant.numeric.float.erlang
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.separator.base-integer.erlang
+
+
+ match
+ 2(#)[0-1]++
+ name
+ constant.numeric.integer.binary.erlang
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.separator.base-integer.erlang
+
+
+ match
+ 3(#)[0-2]++
+ name
+ constant.numeric.integer.base-3.erlang
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.separator.base-integer.erlang
+
+
+ match
+ 4(#)[0-3]++
+ name
+ constant.numeric.integer.base-4.erlang
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.separator.base-integer.erlang
+
+
+ match
+ 5(#)[0-4]++
+ name
+ constant.numeric.integer.base-5.erlang
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.separator.base-integer.erlang
+
+
+ match
+ 6(#)[0-5]++
+ name
+ constant.numeric.integer.base-6.erlang
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.separator.base-integer.erlang
+
+
+ match
+ 7(#)[0-6]++
+ name
+ constant.numeric.integer.base-7.erlang
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.separator.base-integer.erlang
+
+
+ match
+ 8(#)[0-7]++
+ name
+ constant.numeric.integer.octal.erlang
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.separator.base-integer.erlang
+
+
+ match
+ 9(#)[0-8]++
+ name
+ constant.numeric.integer.base-9.erlang
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.separator.base-integer.erlang
+
+
+ match
+ 10(#)\d++
+ name
+ constant.numeric.integer.decimal.erlang
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.separator.base-integer.erlang
+
+
+ match
+ 11(#)[\daA]++
+ name
+ constant.numeric.integer.base-11.erlang
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.separator.base-integer.erlang
+
+
+ match
+ 12(#)[\da-bA-B]++
+ name
+ constant.numeric.integer.base-12.erlang
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.separator.base-integer.erlang
+
+
+ match
+ 13(#)[\da-cA-C]++
+ name
+ constant.numeric.integer.base-13.erlang
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.separator.base-integer.erlang
+
+
+ match
+ 14(#)[\da-dA-D]++
+ name
+ constant.numeric.integer.base-14.erlang
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.separator.base-integer.erlang
+
+
+ match
+ 15(#)[\da-eA-E]++
+ name
+ constant.numeric.integer.base-15.erlang
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.separator.base-integer.erlang
+
+
+ match
+ 16(#)\h++
+ name
+ constant.numeric.integer.hexadecimal.erlang
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.separator.base-integer.erlang
+
+
+ match
+ 17(#)[\da-gA-G]++
+ name
+ constant.numeric.integer.base-17.erlang
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.separator.base-integer.erlang
+
+
+ match
+ 18(#)[\da-hA-H]++
+ name
+ constant.numeric.integer.base-18.erlang
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.separator.base-integer.erlang
+
+
+ match
+ 19(#)[\da-iA-I]++
+ name
+ constant.numeric.integer.base-19.erlang
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.separator.base-integer.erlang
+
+
+ match
+ 20(#)[\da-jA-J]++
+ name
+ constant.numeric.integer.base-20.erlang
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.separator.base-integer.erlang
+
+
+ match
+ 21(#)[\da-kA-K]++
+ name
+ constant.numeric.integer.base-21.erlang
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.separator.base-integer.erlang
+
+
+ match
+ 22(#)[\da-lA-L]++
+ name
+ constant.numeric.integer.base-22.erlang
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.separator.base-integer.erlang
+
+
+ match
+ 23(#)[\da-mA-M]++
+ name
+ constant.numeric.integer.base-23.erlang
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.separator.base-integer.erlang
+
+
+ match
+ 24(#)[\da-nA-N]++
+ name
+ constant.numeric.integer.base-24.erlang
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.separator.base-integer.erlang
+
+
+ match
+ 25(#)[\da-oA-O]++
+ name
+ constant.numeric.integer.base-25.erlang
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.separator.base-integer.erlang
+
+
+ match
+ 26(#)[\da-pA-P]++
+ name
+ constant.numeric.integer.base-26.erlang
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.separator.base-integer.erlang
+
+
+ match
+ 27(#)[\da-qA-Q]++
+ name
+ constant.numeric.integer.base-27.erlang
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.separator.base-integer.erlang
+
+
+ match
+ 28(#)[\da-rA-R]++
+ name
+ constant.numeric.integer.base-28.erlang
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.separator.base-integer.erlang
+
+
+ match
+ 29(#)[\da-sA-S]++
+ name
+ constant.numeric.integer.base-29.erlang
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.separator.base-integer.erlang
+
+
+ match
+ 30(#)[\da-tA-T]++
+ name
+ constant.numeric.integer.base-30.erlang
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.separator.base-integer.erlang
+
+
+ match
+ 31(#)[\da-uA-U]++
+ name
+ constant.numeric.integer.base-31.erlang
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.separator.base-integer.erlang
+
+
+ match
+ 32(#)[\da-vA-V]++
+ name
+ constant.numeric.integer.base-32.erlang
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.separator.base-integer.erlang
+
+
+ match
+ 33(#)[\da-wA-W]++
+ name
+ constant.numeric.integer.base-33.erlang
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.separator.base-integer.erlang
+
+
+ match
+ 34(#)[\da-xA-X]++
+ name
+ constant.numeric.integer.base-34.erlang
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.separator.base-integer.erlang
+
+
+ match
+ 35(#)[\da-yA-Y]++
+ name
+ constant.numeric.integer.base-35.erlang
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.separator.base-integer.erlang
+
+
+ match
+ 36(#)[\da-zA-Z]++
+ name
+ constant.numeric.integer.base-36.erlang
+
+
+ match
+ \d++#[\da-zA-Z]++
+ name
+ invalid.illegal.integer.erlang
+
+
+ match
+ \d++
+ name
+ constant.numeric.integer.decimal.erlang
+
+
+
+ parenthesized-expression
+
+ begin
+ (\()
+ beginCaptures
+
+ 1
+
+ name
+ punctuation.section.expression.begin.erlang
+
+
+ end
+ (\))
+ endCaptures
+
+ 1
+
+ name
+ punctuation.section.expression.end.erlang
+
+
+ name
+ meta.expression.parenthesized
+ patterns
+
+
+ include
+ #everything-else
+
+
+
+ record-directive
+
+ begin
+ ^\s*+(-)\s*+(record)\s*+(\()\s*+([a-z][a-zA-Z\d@_]*+)\s*+(,)
+ beginCaptures
+
+ 1
+
+ name
+ punctuation.section.directive.begin.erlang
+
+ 2
+
+ name
+ keyword.control.directive.import.erlang
+
+ 3
+
+ name
+ punctuation.definition.parameters.begin.erlang
+
+ 4
+
+ name
+ entity.name.type.class.record.definition.erlang
+
+ 5
+
+ name
+ punctuation.separator.parameters.erlang
+
+
+ end
+ ((\}))\s*+(\))\s*+(\.)
+ endCaptures
+
+ 1
+
+ name
+ meta.structure.record.erlang
+
+ 2
+
+ name
+ punctuation.definition.class.record.end.erlang
+
+ 3
+
+ name
+ punctuation.definition.parameters.end.erlang
+
+ 4
+
+ name
+ punctuation.section.directive.end.erlang
+
+
+ name
+ meta.directive.record.erlang
+ patterns
+
+
+ include
+ #internal-record-body
+
+
+
+ record-usage
+
+ patterns
+
+
+ captures
+
+ 1
+
+ name
+ keyword.operator.record.erlang
+
+ 2
+
+ name
+ entity.name.type.class.record.erlang
+
+ 3
+
+ name
+ punctuation.separator.record-field.erlang
+
+ 4
+
+ name
+ variable.other.field.erlang
+
+
+ match
+ (#)\s*+([a-z][a-zA-Z\d@_]*+)\s*+(\.)\s*+([a-z][a-zA-Z\d@_]*+)
+ name
+ meta.record-usage.erlang
+
+
+ begin
+ (#)\s*+([a-z][a-zA-Z\d@_]*+)
+ beginCaptures
+
+ 1
+
+ name
+ keyword.operator.record.erlang
+
+ 2
+
+ name
+ entity.name.type.class.record.erlang
+
+
+ end
+ ((\}))
+ endCaptures
+
+ 1
+
+ name
+ meta.structure.record.erlang
+
+ 2
+
+ name
+ punctuation.definition.class.record.end.erlang
+
+
+ name
+ meta.record-usage.erlang
+ patterns
+
+
+ include
+ #internal-record-body
+
+
+
+
+
+ string
+
+ begin
+ (")
+ beginCaptures
+
+ 1
+
+ name
+ punctuation.definition.string.begin.erlang
+
+
+ end
+ (")
+ endCaptures
+
+ 1
+
+ name
+ punctuation.definition.string.end.erlang
+
+
+ name
+ string.quoted.double.erlang
+ patterns
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.definition.escape.erlang
+
+ 3
+
+ name
+ punctuation.definition.escape.erlang
+
+
+ match
+ (\\)([bdefnrstv\\'"]|(\^)[@-_]|[0-7]{1,3})
+ name
+ constant.character.escape.erlang
+
+
+ match
+ \\\^?.?
+ name
+ invalid.illegal.string.erlang
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.definition.placeholder.erlang
+
+ 10
+
+ name
+ punctuation.separator.placeholder-parts.erlang
+
+ 12
+
+ name
+ punctuation.separator.placeholder-parts.erlang
+
+ 3
+
+ name
+ punctuation.separator.placeholder-parts.erlang
+
+ 4
+
+ name
+ punctuation.separator.placeholder-parts.erlang
+
+ 6
+
+ name
+ punctuation.separator.placeholder-parts.erlang
+
+ 8
+
+ name
+ punctuation.separator.placeholder-parts.erlang
+
+
+ match
+ (~)((\-)?\d++|(\*))?((\.)(\d++|(\*)))?((\.)((\*)|.))?[~cfegswpWPBX#bx\+ni]
+ name
+ constant.other.placeholder.erlang
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.definition.placeholder.erlang
+
+ 2
+
+ name
+ punctuation.separator.placeholder-parts.erlang
+
+
+ match
+ (~)(\*)?(\d++)?[~du\-#fsacl]
+ name
+ constant.other.placeholder.erlang
+
+
+ match
+ ~.?
+ name
+ invalid.illegal.string.erlang
+
+
+
+ symbolic-operator
+
+ match
+ \+\+|\+|--|-|\*|/=|/|=/=|=:=|==|=<|=|<-|<|>=|>|!
+ name
+ keyword.operator.symbolic.erlang
+
+ textual-operator
+
+ match
+ \b(andalso|band|and|bxor|xor|bor|orelse|or|bnot|not|bsl|bsr|div|rem)\b
+ name
+ keyword.operator.textual.erlang
+
+ tuple
+
+ begin
+ (\{)
+ beginCaptures
+
+ 1
+
+ name
+ punctuation.definition.tuple.begin.erlang
+
+
+ end
+ (\})
+ endCaptures
+
+ 1
+
+ name
+ punctuation.definition.tuple.end.erlang
+
+
+ name
+ meta.structure.tuple.erlang
+ patterns
+
+
+ match
+ ,
+ name
+ punctuation.separator.tuple.erlang
+
+
+ include
+ #everything-else
+
+
+
+ variable
+
+ captures
+
+ 1
+
+ name
+ variable.other.erlang
+
+ 2
+
+ name
+ variable.language.omitted.erlang
+
+
+ match
+ (_[a-zA-Z\d@_]++|[A-Z][a-zA-Z\d@_]*+)|(_)
+
+
+ scopeName
+ source.erlang
+ uuid
+ 58EA597D-5158-4BF7-9FB2-B05135D1E166
+
+
diff --git a/sublime/Packages/Erlang/Erlang.tmLanguage (Hackintosh's conflicted copy 2012-07-23).cache b/sublime/Packages/Erlang/Erlang.tmLanguage (Hackintosh's conflicted copy 2012-07-23).cache
new file mode 100644
index 0000000..748ed71
Binary files /dev/null and b/sublime/Packages/Erlang/Erlang.tmLanguage (Hackintosh's conflicted copy 2012-07-23).cache differ
diff --git a/sublime/Packages/Erlang/Erlang.tmLanguage.cache b/sublime/Packages/Erlang/Erlang.tmLanguage.cache
new file mode 100644
index 0000000..748ed71
Binary files /dev/null and b/sublime/Packages/Erlang/Erlang.tmLanguage.cache differ
diff --git a/sublime/Packages/Erlang/Export-Directive.sublime-snippet b/sublime/Packages/Erlang/Export-Directive.sublime-snippet
new file mode 100644
index 0000000..40e0ac3
--- /dev/null
+++ b/sublime/Packages/Erlang/Export-Directive.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ exp
+ source.erlang
+ Export Directive
+
diff --git a/sublime/Packages/Erlang/Fun-Expression.sublime-snippet b/sublime/Packages/Erlang/Fun-Expression.sublime-snippet
new file mode 100644
index 0000000..9c22700
--- /dev/null
+++ b/sublime/Packages/Erlang/Fun-Expression.sublime-snippet
@@ -0,0 +1,9 @@
+
+
+ ${4:body}
+end]]>
+ fun
+ source.erlang
+ Fun Expression
+
diff --git a/sublime/Packages/Erlang/Function Symbols.tmPreferences b/sublime/Packages/Erlang/Function Symbols.tmPreferences
new file mode 100644
index 0000000..c7ee2b8
--- /dev/null
+++ b/sublime/Packages/Erlang/Function Symbols.tmPreferences
@@ -0,0 +1,19 @@
+
+
+
+
+ name
+ Function Symbols
+ scope
+ source.erlang entity.name.function.definition
+ settings
+
+ showInSymbolList
+ 1
+ symbolTransformation
+ s,$,/,
+
+ uuid
+ 7D7FE91B-0543-4F95-8D99-AF393226415C
+
+
diff --git a/sublime/Packages/Erlang/Function Symbols.tmPreferences.cache b/sublime/Packages/Erlang/Function Symbols.tmPreferences.cache
new file mode 100644
index 0000000..78ac7d2
Binary files /dev/null and b/sublime/Packages/Erlang/Function Symbols.tmPreferences.cache differ
diff --git a/sublime/Packages/Erlang/HTML (Erlang).tmLanguage b/sublime/Packages/Erlang/HTML (Erlang).tmLanguage
new file mode 100644
index 0000000..47d7bf6
--- /dev/null
+++ b/sublime/Packages/Erlang/HTML (Erlang).tmLanguage
@@ -0,0 +1,60 @@
+
+
+
+
+ fileTypes
+
+ yaws
+
+ foldingStartMarker
+ (?x)
+ (<(?i:head|body|table|thead|tbody|tfoot|tr|div|select|fieldset|style|script|ul|ol|form|dl|erl)\b.*?>
+ |<!--(?!.*-->)
+ |\{\s*($|\?>\s*$|//|/\*(.*\*/\s*$|(?!.*?\*/)))
+ )
+ foldingStopMarker
+ (?x)
+ (</(?i:head|body|table|thead|tbody|tfoot|tr|div|select|fieldset|style|script|ul|ol|form|dl|erl)>
+ |^\s*-->
+ |(^|\s)\}
+ )
+ keyEquivalent
+ ^~E
+ name
+ HTML (Erlang)
+ patterns
+
+
+ begin
+ <erl>
+ captures
+
+ 0
+
+ name
+ punctuation.section.embedded.erlang
+
+
+ end
+ </erl>
+ name
+ source.erlang.embedded.html
+ patterns
+
+
+ include
+ source.erlang
+
+
+
+
+ include
+ text.html.basic
+
+
+ scopeName
+ text.html.erlang.yaws
+ uuid
+ 3FBFF015-B650-4734-848C-47B53ACD5E32
+
+
diff --git a/sublime/Packages/Erlang/HTML (Erlang).tmLanguage (Hackintosh's conflicted copy 2012-07-23).cache b/sublime/Packages/Erlang/HTML (Erlang).tmLanguage (Hackintosh's conflicted copy 2012-07-23).cache
new file mode 100644
index 0000000..61ac390
Binary files /dev/null and b/sublime/Packages/Erlang/HTML (Erlang).tmLanguage (Hackintosh's conflicted copy 2012-07-23).cache differ
diff --git a/sublime/Packages/Erlang/HTML (Erlang).tmLanguage.cache b/sublime/Packages/Erlang/HTML (Erlang).tmLanguage.cache
new file mode 100644
index 0000000..61ac390
Binary files /dev/null and b/sublime/Packages/Erlang/HTML (Erlang).tmLanguage.cache differ
diff --git a/sublime/Packages/Erlang/If-Expression.sublime-snippet b/sublime/Packages/Erlang/If-Expression.sublime-snippet
new file mode 100644
index 0000000..6a7ebc8
--- /dev/null
+++ b/sublime/Packages/Erlang/If-Expression.sublime-snippet
@@ -0,0 +1,9 @@
+
+
+ ${2:body}
+end]]>
+ if
+ source.erlang
+ If Expression
+
diff --git a/sublime/Packages/Erlang/Ifdef-Directive.sublime-snippet b/sublime/Packages/Erlang/Ifdef-Directive.sublime-snippet
new file mode 100644
index 0000000..1046768
--- /dev/null
+++ b/sublime/Packages/Erlang/Ifdef-Directive.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ ifdef
+ source.erlang
+ Ifdef Directive
+
diff --git a/sublime/Packages/Erlang/Ifndef-Directive.sublime-snippet b/sublime/Packages/Erlang/Ifndef-Directive.sublime-snippet
new file mode 100644
index 0000000..71d2395
--- /dev/null
+++ b/sublime/Packages/Erlang/Ifndef-Directive.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ ifndef
+ source.erlang
+ Ifndef Directive
+
diff --git a/sublime/Packages/Erlang/Import-Directive.sublime-snippet b/sublime/Packages/Erlang/Import-Directive.sublime-snippet
new file mode 100644
index 0000000..0f1ca8d
--- /dev/null
+++ b/sublime/Packages/Erlang/Import-Directive.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ imp
+ source.erlang
+ Import Directive
+
diff --git a/sublime/Packages/Erlang/Include-Directive.sublime-snippet b/sublime/Packages/Erlang/Include-Directive.sublime-snippet
new file mode 100644
index 0000000..21076d1
--- /dev/null
+++ b/sublime/Packages/Erlang/Include-Directive.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ inc
+ source.erlang
+ Include Directive
+
diff --git a/sublime/Packages/Erlang/Indentation Rules.tmPreferences b/sublime/Packages/Erlang/Indentation Rules.tmPreferences
new file mode 100644
index 0000000..b6733c5
--- /dev/null
+++ b/sublime/Packages/Erlang/Indentation Rules.tmPreferences
@@ -0,0 +1,19 @@
+
+
+
+
+ name
+ Indentation Rules
+ scope
+ source.erlang
+ settings
+
+ decreaseIndentPattern
+ ^\s*\b(end)\b
+ increaseIndentPattern
+ ^[^%]*(\b(if|case|receive|after|fun|try|catch|begin|query)\b(?!.*\b(end)\b.*))|(->(\s*%.*)?$)
+
+ uuid
+ 34E0D602-ADAE-43F9-A661-0323A821AB75
+
+
diff --git a/sublime/Packages/Erlang/Indentation Rules.tmPreferences (Hackintosh's conflicted copy 2012-07-23).cache b/sublime/Packages/Erlang/Indentation Rules.tmPreferences (Hackintosh's conflicted copy 2012-07-23).cache
new file mode 100644
index 0000000..80f2c32
Binary files /dev/null and b/sublime/Packages/Erlang/Indentation Rules.tmPreferences (Hackintosh's conflicted copy 2012-07-23).cache differ
diff --git a/sublime/Packages/Erlang/Indentation Rules.tmPreferences.cache b/sublime/Packages/Erlang/Indentation Rules.tmPreferences.cache
new file mode 100644
index 0000000..2c65bce
Binary files /dev/null and b/sublime/Packages/Erlang/Indentation Rules.tmPreferences.cache differ
diff --git a/sublime/Packages/Erlang/Macro Symbols.tmPreferences b/sublime/Packages/Erlang/Macro Symbols.tmPreferences
new file mode 100644
index 0000000..8c5fe92
--- /dev/null
+++ b/sublime/Packages/Erlang/Macro Symbols.tmPreferences
@@ -0,0 +1,19 @@
+
+
+
+
+ name
+ Macro Symbols
+ scope
+ source.erlang entity.name.function.macro.definition
+ settings
+
+ showInSymbolList
+ 1
+ symbolTransformation
+ s/^/?/
+
+ uuid
+ 5EEC72E3-EEA9-4C53-8D70-3903EF1D84E2
+
+
diff --git a/sublime/Packages/Erlang/Macro Symbols.tmPreferences.cache b/sublime/Packages/Erlang/Macro Symbols.tmPreferences.cache
new file mode 100644
index 0000000..2ad8d6c
Binary files /dev/null and b/sublime/Packages/Erlang/Macro Symbols.tmPreferences.cache differ
diff --git a/sublime/Packages/Erlang/Module Symbols.tmPreferences b/sublime/Packages/Erlang/Module Symbols.tmPreferences
new file mode 100644
index 0000000..36b15de
--- /dev/null
+++ b/sublime/Packages/Erlang/Module Symbols.tmPreferences
@@ -0,0 +1,19 @@
+
+
+
+
+ name
+ Module Symbols
+ scope
+ source.erlang entity.name.type.class.module.definition.erlang
+ settings
+
+ showInSymbolList
+ 1
+ symbolTransformation
+ s/^/-/
+
+ uuid
+ 1250456F-9F83-4BAA-B338-5C9E86E89DD9
+
+
diff --git a/sublime/Packages/Erlang/Module Symbols.tmPreferences.cache b/sublime/Packages/Erlang/Module Symbols.tmPreferences.cache
new file mode 100644
index 0000000..6f44602
Binary files /dev/null and b/sublime/Packages/Erlang/Module Symbols.tmPreferences.cache differ
diff --git a/sublime/Packages/Erlang/Module-Directive.sublime-snippet b/sublime/Packages/Erlang/Module-Directive.sublime-snippet
new file mode 100644
index 0000000..e50c641
--- /dev/null
+++ b/sublime/Packages/Erlang/Module-Directive.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ mod
+ source.erlang
+ Module Directive
+
diff --git a/sublime/Packages/Erlang/Receive-Expression.sublime-snippet b/sublime/Packages/Erlang/Receive-Expression.sublime-snippet
new file mode 100644
index 0000000..b88a12b
--- /dev/null
+++ b/sublime/Packages/Erlang/Receive-Expression.sublime-snippet
@@ -0,0 +1,12 @@
+
+
+ ${5:body}
+}${6:after
+ ${7:expression} ->
+ ${8:body}
+}end]]>
+ rcv
+ source.erlang
+ Receive Expression
+
diff --git a/sublime/Packages/Erlang/Record Symbols.tmPreferences b/sublime/Packages/Erlang/Record Symbols.tmPreferences
new file mode 100644
index 0000000..7ad1dbd
--- /dev/null
+++ b/sublime/Packages/Erlang/Record Symbols.tmPreferences
@@ -0,0 +1,19 @@
+
+
+
+
+ name
+ Record Symbols
+ scope
+ source.erlang entity.name.type.class.record.definition
+ settings
+
+ showInSymbolList
+ 1
+ symbolTransformation
+ s/^/#/
+
+ uuid
+ 31DB728C-AC89-4DF0-A2B9-9D3D3A7552A9
+
+
diff --git a/sublime/Packages/Erlang/Record Symbols.tmPreferences.cache b/sublime/Packages/Erlang/Record Symbols.tmPreferences.cache
new file mode 100644
index 0000000..b01e1ab
Binary files /dev/null and b/sublime/Packages/Erlang/Record Symbols.tmPreferences.cache differ
diff --git a/sublime/Packages/Erlang/Record-Directive.sublime-snippet b/sublime/Packages/Erlang/Record-Directive.sublime-snippet
new file mode 100644
index 0000000..9ddcc0c
--- /dev/null
+++ b/sublime/Packages/Erlang/Record-Directive.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ rec
+ source.erlang
+ Record Directive
+
diff --git a/sublime/Packages/Erlang/Symbol Overrides.tmPreferences b/sublime/Packages/Erlang/Symbol Overrides.tmPreferences
new file mode 100644
index 0000000..327c16c
--- /dev/null
+++ b/sublime/Packages/Erlang/Symbol Overrides.tmPreferences
@@ -0,0 +1,17 @@
+
+
+
+
+ name
+ Symbol Overrides
+ scope
+ source.erlang entity.name.function, source.erlang entity.name.type.class
+ settings
+
+ showInSymbolList
+ 0
+
+ uuid
+ AE84FFDF-2D5A-4331-A301-6CF34CF26CD8
+
+
diff --git a/sublime/Packages/Erlang/Symbol Overrides.tmPreferences.cache b/sublime/Packages/Erlang/Symbol Overrides.tmPreferences.cache
new file mode 100644
index 0000000..ebc8cef
Binary files /dev/null and b/sublime/Packages/Erlang/Symbol Overrides.tmPreferences.cache differ
diff --git a/sublime/Packages/Erlang/Try-Expression.sublime-snippet b/sublime/Packages/Erlang/Try-Expression.sublime-snippet
new file mode 100644
index 0000000..ecd7f85
--- /dev/null
+++ b/sublime/Packages/Erlang/Try-Expression.sublime-snippet
@@ -0,0 +1,14 @@
+
+
+ ${7:body}}}
+${8:catch
+ ${9:pattern}${10: when ${11:guard}} ->
+ ${12:body}}
+${13:after
+ ${14:body}}
+end]]>
+ try
+ source.erlang
+ Try Expression
+
diff --git a/sublime/Packages/Erlang/Undef-Directive.sublime-snippet b/sublime/Packages/Erlang/Undef-Directive.sublime-snippet
new file mode 100644
index 0000000..09454fd
--- /dev/null
+++ b/sublime/Packages/Erlang/Undef-Directive.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ undef
+ source.erlang
+ Undef Directive
+
diff --git a/sublime/Packages/Go/Comments.tmPreferences b/sublime/Packages/Go/Comments.tmPreferences
new file mode 100644
index 0000000..1ac0b41
--- /dev/null
+++ b/sublime/Packages/Go/Comments.tmPreferences
@@ -0,0 +1,42 @@
+
+
+
+
+ name
+ Comments
+ scope
+ source.go
+ settings
+
+ shellVariables
+
+
+ name
+ TM_COMMENT_START
+ value
+ //
+
+
+ name
+ TM_COMMENT_START_2
+ value
+ /*
+
+
+ name
+ TM_COMMENT_END_2
+ value
+ */
+
+
+ name
+ TM_COMMENT_DISABLE_INDENT_2
+ value
+ yes
+
+
+
+ uuid
+ 05400837-EE8F-44D1-A636-3EEB0E82FFF5
+
+
diff --git a/sublime/Packages/Go/Comments.tmPreferences.cache b/sublime/Packages/Go/Comments.tmPreferences.cache
new file mode 100644
index 0000000..7c1f458
Binary files /dev/null and b/sublime/Packages/Go/Comments.tmPreferences.cache differ
diff --git a/sublime/Packages/Go/Empty ().tmSnippet b/sublime/Packages/Go/Empty ().tmSnippet
new file mode 100644
index 0000000..1d325c4
--- /dev/null
+++ b/sublime/Packages/Go/Empty ().tmSnippet
@@ -0,0 +1,18 @@
+
+
+
+
+ content
+
+ $0
+
+ keyEquivalent
+
+ name
+ Empty ()
+ scope
+ meta.parens.empty.go
+ uuid
+ 214A69FB-0168-465E-AB51-D8C6C46BCF61
+
+
diff --git a/sublime/Packages/Go/For Loop.tmSnippet b/sublime/Packages/Go/For Loop.tmSnippet
new file mode 100644
index 0000000..0b36e88
--- /dev/null
+++ b/sublime/Packages/Go/For Loop.tmSnippet
@@ -0,0 +1,18 @@
+
+
+
+
+ content
+ for ${2:i} := 0; $2 < ${1:count}; ${3:$2++} {
+ $0
+}
+ name
+ For Loop
+ scope
+ source.go
+ tabTrigger
+ for
+ uuid
+ 7DA0072A-BF35-413B-B4D9-B5C2B4D20FF2
+
+
diff --git a/sublime/Packages/Go/Go.tmLanguage b/sublime/Packages/Go/Go.tmLanguage
new file mode 100644
index 0000000..07fec9a
--- /dev/null
+++ b/sublime/Packages/Go/Go.tmLanguage
@@ -0,0 +1,764 @@
+
+
+
+
+ comment
+ Go allows any Unicode character to be used in identifiers, so our identifier regex is: \b([[:alpha:]_]+[[:alnum:]_]*)\b
+ fileTypes
+
+ go
+
+ firstLineMatch
+ -[*]-( Mode:)? Go -[*]-
+ foldingStartMarker
+ (?x)
+ /\*\*(?!\*) # opening C-style comment with 2 asterisks but no third later on
+ | # OR
+ ^ # start of line...
+ (?! # ...which does NOT contain...
+ [^{(]*?// # ...a possible bunch of non-opening-braces, followed by a C++ comment
+ | # OR
+ [^{(]*?/\*(?!.*?\*/.*?[{(]) # ...a possible bunch of non-opening-braces, followed by a C comment with no ending
+ )
+ .*? # ...any characters (or none)...
+ [{(]\s* # ...followed by an open brace and zero or more whitespace...
+ ( # ...followed by...
+ $ # ...a dollar...
+ | # OR
+ // # ...a C++ comment...
+ | # OR
+ /\*(?!.*?\*/.*\S) # ...a C comment, so long as no non-whitespace chars follow it..
+ )
+
+ foldingStopMarker
+ (?<!\*)\*\*/|^\s*[})]
+ keyEquivalent
+ ^~G
+ name
+ Go
+ patterns
+
+
+ include
+ #receiver_function_declaration
+
+
+ include
+ #plain_function_declaration
+
+
+ include
+ #basic_things
+
+
+ include
+ #exported_variables
+
+
+ begin
+ ^[[:blank:]]*(import)\b\s+
+ beginCaptures
+
+ 1
+
+ name
+ keyword.control.import.go
+
+
+ end
+ (?=(?://|/\*))|$
+ name
+ meta.preprocessor.go.import
+ patterns
+
+
+ begin
+ "
+ beginCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.begin.go
+
+
+ end
+ "
+ endCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.end.go
+
+
+ name
+ string.quoted.double.import.go
+
+
+
+
+ include
+ #block
+
+
+ include
+ #root_parens
+
+
+ include
+ #function_calls
+
+
+ repository
+
+ access
+
+ match
+ (?<=\.)[[:alpha:]_][[:alnum:]_]*\b(?!\s*\()
+ name
+ variable.other.dot-access.go
+
+ basic_things
+
+ patterns
+
+
+ include
+ #comments
+
+
+ include
+ #initializers
+
+
+ include
+ #access
+
+
+ include
+ #strings
+
+
+ include
+ #keywords
+
+
+
+ block
+
+ begin
+ \{
+ end
+ \}
+ name
+ meta.block.go
+ patterns
+
+
+ include
+ #block_innards
+
+
+
+ block_innards
+
+ patterns
+
+
+ include
+ #function_block_innards
+
+
+ include
+ #exported_variables
+
+
+
+ comments
+
+ patterns
+
+
+ captures
+
+ 1
+
+ name
+ meta.toc-list.banner.block.go
+
+
+ match
+ ^/\* =(\s*.*?)\s*= \*/$\n?
+ name
+ comment.block.go
+
+
+ begin
+ /\*
+ captures
+
+ 0
+
+ name
+ punctuation.definition.comment.go
+
+
+ end
+ \*/
+ name
+ comment.block.go
+
+
+ match
+ \*/.*\n
+ name
+ invalid.illegal.stray-commend-end.go
+
+
+ captures
+
+ 1
+
+ name
+ meta.toc-list.banner.line.go
+
+
+ match
+ ^// =(\s*.*?)\s*=\s*$\n?
+ name
+ comment.line.double-slash.banner.go
+
+
+ begin
+ //
+ beginCaptures
+
+ 0
+
+ name
+ punctuation.definition.comment.go
+
+
+ end
+ $\n?
+ name
+ comment.line.double-slash.go
+ patterns
+
+
+ match
+ (?>\\\s*\n)
+ name
+ punctuation.separator.continuation.go
+
+
+
+
+
+ exported_variables
+
+ comment
+ This is kinda hacky, in order to get the 'var' scoped the right way again.
+ match
+ (?<=\s|\[\])([[:upper:]][[:alnum:]_]*)(?=\W+)
+ name
+ variable.exported.go
+
+ fn_parens
+
+ begin
+ \(
+ end
+ \)
+ name
+ meta.parens.go
+ patterns
+
+
+ include
+ #basic_things
+
+
+ include
+ #function_calls
+
+
+
+ function_block
+
+ begin
+ \{
+ end
+ \}
+ name
+ meta.block.go
+ patterns
+
+
+ include
+ #function_block_innards
+
+
+
+ function_block_innards
+
+ patterns
+
+
+ include
+ #basic_things
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.whitespace.support.function.leading.go
+
+ 2
+
+ name
+ support.function.builtin.go
+
+
+ match
+ (\s*)\b(new|c(lose(d)?|ap)|p(anic(ln)?|rint(ln)?)|len|make)(?:\b|\()
+
+
+ include
+ #function_block
+
+
+ include
+ #function_calls
+
+
+ include
+ #fn_parens
+
+
+
+ function_calls
+
+ captures
+
+ 1
+
+ name
+ punctuation.whitespace.function-call.leading.go
+
+ 2
+
+ name
+ support.function.any-method.go
+
+ 3
+
+ name
+ punctuation.definition.parameters.go
+
+
+ match
+ (?x)
+ (?: (?= \s ) (?:(?<=else|new|return) | (?<!\w)) (\s+) )?
+ (\b
+ (?!(for|if|else|switch|return)\s*\()
+ (?:[[:alpha:]_][[:alnum:]_]*+\b) # method name
+ )
+ \s*(\()
+
+ name
+ meta.function-call.go
+
+ initializers
+
+ patterns
+
+
+ captures
+
+ 0
+
+ name
+ variable.other.go
+
+ 1
+
+ name
+ keyword.control.go
+
+
+ comment
+ This matches the 'var x int = 0' style of variable declaration.
+ match
+ ^[[:blank:]]*(var)\s+(?:[[:alpha:]_][[:alnum:]_]*)(?:,\s+[[:alpha:]_][[:alnum:]_]*)*
+ name
+ meta.initialization.explicit.go
+
+
+ captures
+
+ 0
+
+ name
+ variable.other.go
+
+ 1
+
+ name
+ keyword.operator.initialize.go
+
+
+ comment
+ This matches the 'x := 0' style of variable declaration.
+ match
+ (?:[[:alpha:]_][[:alnum:]_]*)(?:,\s+[[:alpha:]_][[:alnum:]_]*)*\s*(:=)
+ name
+ meta.initialization.short.go
+
+
+
+ keywords
+
+ patterns
+
+
+ match
+ \b(s(truct|elect|witch)|c(ontinue|ase)|type|i(nterface|f|mport)|def(er|ault)|package|else|var|f(or|unc|allthrough)|r(eturn|ange)|go(to)?|map|break)\b
+ name
+ keyword.control.go
+
+
+ match
+ (\b|(?<=\]))(int(16|8|32|64)?|uint(16|8|32|ptr|64)?|float(32|64)?|b(yte|ool)|string)\b
+ name
+ storage.type.go
+
+
+ match
+ \b(const|chan)\b
+ name
+ storage.modifier.go
+
+
+ match
+ \b(nil|true|false|iota)\b
+ name
+ constant.language.go
+
+
+ match
+ \b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)\b
+ name
+ constant.numeric.go
+
+
+ match
+ (\<\-)|(\-\>)
+ name
+ support.channel-operator.go
+
+
+
+ plain_function_declaration
+
+ begin
+ (?x)
+ ^[[:blank:]]*(func)\s*
+ (?: ([[:alpha:]_][[:alnum:]_]*)? ) # name of function is optional
+ (?: \( ((?:[\[\]\w\d\s\/,._*&<>-]|(?:interface\{\}))*)? \) ) # required braces for parameters (even if empty)
+ \s*
+ (?: \(? ((?:[\[\]\w\d\s,._*&<>-]|(?:interface\{\}))*) \)? )? # optional return types, optionally within braces
+
+ beginCaptures
+
+ 1
+
+ name
+ keyword.control.go
+
+ 2
+
+ name
+ entity.name.function.go
+
+ 3
+
+ name
+ variable.parameters.go
+
+ 4
+
+ name
+ variable.return-types.go
+
+
+ end
+ (?<=\})
+ name
+ meta.function.plain.go
+ patterns
+
+
+ include
+ #comments
+
+
+
+ include
+ #function_block
+
+
+
+ receiver_function_declaration
+
+ begin
+ (?x)
+ (func)\s*
+ (?: \( ((?:[\[\]\w\d\s,._*&<>-]|(?:interface\{\}))*) \)\s+ ) # receiver variable declarations, in brackets
+ (?: ([[:alpha:]_][[:alnum:]_]*)? ) # name of function is optional
+ (?: \( ((?:[\[\]\w\d\s,._*&<>-]|(?:interface\{\}))*)? \) ) # required braces for parameters (even if empty)
+ \s*
+ (?: \(? ((?:[\[\]\w\d\s,._*&<>-]|(?:interface\{\}))*) \)? )? # optional return types, optionally within braces
+
+ beginCaptures
+
+ 1
+
+ name
+ keyword.control.go
+
+ 2
+
+ name
+ variable.receiver.go
+
+ 3
+
+ name
+ entity.name.function.go
+
+ 4
+
+ name
+ variable.parameters.go
+
+ 5
+
+ name
+ variable.return-types.go
+
+
+ comment
+ Version of above with support for declaring a receiver variable.
+ end
+ (?<=\})
+ name
+ meta.function.receiver.go
+ patterns
+
+
+ include
+ #comments
+
+
+
+
+ include
+ #function_block
+
+
+
+ root_parens
+
+ begin
+ \(
+ end
+ (?<=\()(\))?|(?:\))
+ endCaptures
+
+ 1
+
+ name
+ meta.parens.empty.go
+
+
+ name
+ meta.parens.go
+ patterns
+
+
+ include
+ #basic_things
+
+
+ include
+ #exported_variables
+
+
+ include
+ #function_calls
+
+
+
+ string_escaped_char
+
+ patterns
+
+
+ match
+ \\(\\|[abfnrutv'"]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8}|[0-7]{3})
+ name
+ constant.character.escape.go
+
+
+ match
+ \\.
+ name
+ invalid.illegal.unknown-escape.go
+
+
+
+ string_placeholder
+
+ patterns
+
+
+ match
+ (?x)%
+ (\d+\$)? # field (argument #)
+ [#0\- +']* # flags
+ [,;:_]? # separator character (AltiVec)
+ ((-?\d+)|\*(-?\d+\$)?)? # minimum field width
+ (\.((-?\d+)|\*(-?\d+\$)?)?)? # precision
+ [diouxXDOUeEfFgGaAcCsSpnvtTbyYhHmMzZ%] # conversion type
+
+ name
+ constant.other.placeholder.go
+
+
+ match
+ %
+ name
+ invalid.illegal.placeholder.go
+
+
+
+ strings
+
+ patterns
+
+
+ begin
+ "
+ beginCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.begin.go
+
+
+ end
+ "
+ endCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.end.go
+
+
+ name
+ string.quoted.double.go
+ patterns
+
+
+ include
+ #string_placeholder
+
+
+ include
+ #string_escaped_char
+
+
+
+
+ begin
+ '
+ beginCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.begin.go
+
+
+ end
+ '
+ endCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.end.go
+
+
+ name
+ string.quoted.single.go
+ patterns
+
+
+ include
+ #string_escaped_char
+
+
+
+
+ begin
+ `
+ beginCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.begin.go
+
+
+ end
+ `
+ endCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.end.go
+
+
+ name
+ string.quoted.raw.go
+
+
+
+
+ scopeName
+ source.go
+ uuid
+ 33100200-8916-4F78-8522-4362628C6889
+
+
diff --git a/sublime/Packages/Go/Go.tmLanguage.cache b/sublime/Packages/Go/Go.tmLanguage.cache
new file mode 100644
index 0000000..71a9ea3
Binary files /dev/null and b/sublime/Packages/Go/Go.tmLanguage.cache differ
diff --git a/sublime/Packages/Go/If Statement.tmSnippet b/sublime/Packages/Go/If Statement.tmSnippet
new file mode 100644
index 0000000..d420f0f
--- /dev/null
+++ b/sublime/Packages/Go/If Statement.tmSnippet
@@ -0,0 +1,18 @@
+
+
+
+
+ content
+ if ${1:condition} {
+ $0
+}
+ name
+ If Statement
+ scope
+ source.go
+ tabTrigger
+ if
+ uuid
+ AF797914-E5F7-4F2B-866B-852889C6A925
+
+
diff --git a/sublime/Packages/Go/Indentation Rules.tmPreferences b/sublime/Packages/Go/Indentation Rules.tmPreferences
new file mode 100644
index 0000000..549f561
--- /dev/null
+++ b/sublime/Packages/Go/Indentation Rules.tmPreferences
@@ -0,0 +1,57 @@
+
+
+
+
+ name
+ Indentation Rules
+ scope
+ source.go
+ settings
+
+ decreaseIndentPattern
+ (?x)
+ ^ # start of line
+ (.*\*/)? # skip comments if present
+ ( # three possibilities
+ \s* \} # whitespace and a closing curly brace
+ ( # capture:
+ [^}{"']* \{ # anything other than curly braces or quotes, then open curly
+ )? # (optional)
+ [;\s]*? # any whitespace or semicolons
+ |
+ (?:\s* (case|default).*:) # case statements pop back one indent
+ |
+ (?: \) (?<! \( ) ) # closing braces not preceded by opening braces
+ )
+ (//.*|/\*.*\*/\s*)? # skip any comments (optional)
+ $ # end of line
+
+ increaseIndentPattern
+ (?x)
+ ^
+ (?: .* \*/ )? # skip any comments
+ (?:
+ (.* \{ [^}"'\n]*) # lines containing an open curly but no quotes or close curly
+ | # OR
+ (?:\s* (case|default).*:) # case statements
+ | # OR
+ (.* \( [^)"'\n]*) # lines containing an open brace but no quotes or close brace
+ )
+ (//.*|/\*.*\*/\s*)? # skip any comments (optional)
+ $
+
+
+ unIndentedLinePattern
+ ^\s*((/\*|\*/|//|import\b.*|package\b.*).*)?$
+
+ uuid
+ 160118A4-208D-4422-AFF0-0C21B5B78AAF
+
+
diff --git a/sublime/Packages/Go/Indentation Rules.tmPreferences.cache b/sublime/Packages/Go/Indentation Rules.tmPreferences.cache
new file mode 100644
index 0000000..21d0a36
Binary files /dev/null and b/sublime/Packages/Go/Indentation Rules.tmPreferences.cache differ
diff --git a/sublime/Packages/Go/Struct.tmSnippet b/sublime/Packages/Go/Struct.tmSnippet
new file mode 100644
index 0000000..b06ddfe
--- /dev/null
+++ b/sublime/Packages/Go/Struct.tmSnippet
@@ -0,0 +1,18 @@
+
+
+
+
+ content
+ struct {
+ ${0:var vartype;}
+}
+ name
+ Struct
+ scope
+ source.go
+ tabTrigger
+ st
+ uuid
+ CC5D7F66-6BBC-4D9C-BC32-D569238523EB
+
+
diff --git a/sublime/Packages/Go/Type Function.tmSnippet b/sublime/Packages/Go/Type Function.tmSnippet
new file mode 100644
index 0000000..4d20882
--- /dev/null
+++ b/sublime/Packages/Go/Type Function.tmSnippet
@@ -0,0 +1,18 @@
+
+
+
+
+ content
+ func (${1:varname typename}) ${2:func_name}($3)$4 {
+ $0
+}
+ name
+ Type Function
+ scope
+ source.go
+ tabTrigger
+ tfunc
+ uuid
+ D8CF6ACF-85BB-4AAD-BFDE-DFD9D075FCF2
+
+
diff --git a/sublime/Packages/Go/func.tmSnippet b/sublime/Packages/Go/func.tmSnippet
new file mode 100644
index 0000000..93c318c
--- /dev/null
+++ b/sublime/Packages/Go/func.tmSnippet
@@ -0,0 +1,18 @@
+
+
+
+
+ content
+ func ${1:func_name}($2)$3 {
+ $0
+}
+ name
+ Function
+ scope
+ source.go
+ tabTrigger
+ func
+ uuid
+ E9B44CC5-B004-4793-B125-7E429FDCCE32
+
+
diff --git a/sublime/Packages/Go/go func().tmSnippet b/sublime/Packages/Go/go func().tmSnippet
new file mode 100644
index 0000000..04a53a1
--- /dev/null
+++ b/sublime/Packages/Go/go func().tmSnippet
@@ -0,0 +1,18 @@
+
+
+
+
+ content
+ go func($1) {
+ $0
+}${2:($3)}
+ name
+ go func()
+ scope
+ source.go
+ tabTrigger
+ gfn
+ uuid
+ 6B01E886-4CFA-476E-AE01-EFF406116978
+
+
diff --git a/sublime/Packages/Go/import.tmSnippet b/sublime/Packages/Go/import.tmSnippet
new file mode 100644
index 0000000..b8e974e
--- /dev/null
+++ b/sublime/Packages/Go/import.tmSnippet
@@ -0,0 +1,16 @@
+
+
+
+
+ content
+ import $2"${1:name}"
+ name
+ Import
+ scope
+ source.go
+ tabTrigger
+ imp
+ uuid
+ 2DFA9510-6F88-4BC6-A409-DA4075DEA8FF
+
+
diff --git a/sublime/Packages/Go/main().tmSnippet b/sublime/Packages/Go/main().tmSnippet
new file mode 100644
index 0000000..76a2d5a
--- /dev/null
+++ b/sublime/Packages/Go/main().tmSnippet
@@ -0,0 +1,18 @@
+
+
+
+
+ content
+ func main() {
+ $0
+}
+ name
+ main()
+ scope
+ source.go
+ tabTrigger
+ main
+ uuid
+ 18A04BC9-D37A-46B9-8C92-4E8D287A46E4
+
+
diff --git a/sublime/Packages/Go/type.tmSnippet b/sublime/Packages/Go/type.tmSnippet
new file mode 100644
index 0000000..cc8ca42
--- /dev/null
+++ b/sublime/Packages/Go/type.tmSnippet
@@ -0,0 +1,16 @@
+
+
+
+
+ content
+ type ${1:name} ${2:int8}
+ name
+ Type
+ scope
+ source.go
+ tabTrigger
+ type
+ uuid
+ 9E325583-D146-41A4-BA94-0B5BF91DEBF8
+
+
diff --git a/sublime/Packages/Graphviz/DOT.tmLanguage b/sublime/Packages/Graphviz/DOT.tmLanguage
new file mode 100644
index 0000000..d9a9c66
--- /dev/null
+++ b/sublime/Packages/Graphviz/DOT.tmLanguage
@@ -0,0 +1,127 @@
+
+
+
+
+ fileTypes
+
+ dot
+ DOT
+
+ foldingStartMarker
+ \{
+ foldingStopMarker
+ \}
+ keyEquivalent
+ ^~G
+ name
+ Graphviz (DOT)
+ patterns
+
+
+ match
+ \b(node|edge|graph|digraph|subgraph|strict)\b
+ name
+ storage.type.dot
+
+
+ match
+ \b(bottomlabel|color|comment|distortion|fillcolor|fixedsize|fontcolor|fontname|fontsize|group|height|label|layer|orientation|peripheries|regular|shape|shapefile|sides|skew|style|toplabel|URL|width|z)\b
+ name
+ support.constant.attribute.node.dot
+
+
+ match
+ \b(arrowhead|arrowsize|arrowtail|color|comment|constraint|decorate|dir|fontcolor|fontname|fontsize|headlabel|headport|headURL|label|labelangle|labeldistance|labelfloat|labelcolor|labelfontname|labelfontsize|layer|lhead|ltail|minlen|samehead|sametail|style|taillabel|tailport|tailURL|weight)\b
+ name
+ support.constant.attribute.edge.dot
+
+
+ match
+ \b(bgcolor|center|clusterrank|color|comment|compound|concentrate|fillcolor|fontname|fontpath|fontsize|label|labeljust|labelloc|layers|margin|mclimit|nodesep|nslimit|nslimit1|ordering|orientation|page|pagedir|quantum|rank|rankdir|ranksep|ratio|remincross|rotate|samplepoints|searchsize|size|style|URL)\b
+ name
+ support.constant.attribute.graph.dot
+
+
+ begin
+ "
+ beginCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.begin.dot
+
+
+ end
+ "
+ endCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.end.dot
+
+
+ name
+ string.quoted.double.dot
+ patterns
+
+
+ match
+ \\.
+ name
+ constant.character.escape.dot
+
+
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.definition.comment.dot
+
+
+ match
+ (//).*$\n?
+ name
+ comment.line.double-slash.dot
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.definition.comment.dot
+
+
+ match
+ (#).*$\n?
+ name
+ comment.line.number-sign.dot
+
+
+ begin
+ /\*
+ captures
+
+ 0
+
+ name
+ punctuation.definition.comment.dot
+
+
+ end
+ \*/
+ name
+ comment.block.dot
+
+
+ scopeName
+ source.dot
+ uuid
+ 1A53D54E-6B1D-11D9-A006-000D93589AF6
+
+
diff --git a/sublime/Packages/Graphviz/DOT.tmLanguage.cache b/sublime/Packages/Graphviz/DOT.tmLanguage.cache
new file mode 100644
index 0000000..81f6642
Binary files /dev/null and b/sublime/Packages/Graphviz/DOT.tmLanguage.cache differ
diff --git a/sublime/Packages/Groovy/#!-usr-local-bin-groovy-w.sublime-snippet b/sublime/Packages/Groovy/#!-usr-local-bin-groovy-w.sublime-snippet
new file mode 100644
index 0000000..2d4d306
--- /dev/null
+++ b/sublime/Packages/Groovy/#!-usr-local-bin-groovy-w.sublime-snippet
@@ -0,0 +1,8 @@
+
+
+ #!
+ source.groovy
+ #!/usr/bin/env groovy -w
+
diff --git a/sublime/Packages/Groovy/Ant-__-replace.sublime-snippet b/sublime/Packages/Groovy/Ant-__-replace.sublime-snippet
new file mode 100644
index 0000000..12792e1
--- /dev/null
+++ b/sublime/Packages/Groovy/Ant-__-replace.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ replace
+ source.groovy
+ replace(dir: …, includes: …, token: …, value: …)
+
diff --git a/sublime/Packages/Groovy/Block-Comment.sublime-snippet b/sublime/Packages/Groovy/Block-Comment.sublime-snippet
new file mode 100644
index 0000000..10925f0
--- /dev/null
+++ b/sublime/Packages/Groovy/Block-Comment.sublime-snippet
@@ -0,0 +1,8 @@
+
+
+ doc
+ source.groovy
+ Doc Block
+
diff --git a/sublime/Packages/Groovy/Constructor.sublime-snippet b/sublime/Packages/Groovy/Constructor.sublime-snippet
new file mode 100644
index 0000000..cf8267f
--- /dev/null
+++ b/sublime/Packages/Groovy/Constructor.sublime-snippet
@@ -0,0 +1,8 @@
+
+
+ con
+ source.groovy
+ constructor() { … }
+
diff --git a/sublime/Packages/Groovy/Groovy.tmLanguage b/sublime/Packages/Groovy/Groovy.tmLanguage
new file mode 100644
index 0000000..2bb658d
--- /dev/null
+++ b/sublime/Packages/Groovy/Groovy.tmLanguage
@@ -0,0 +1,1356 @@
+
+
+
+
+ fileTypes
+
+ groovy
+ gvy
+
+ foldingStartMarker
+ (\{\s*$|^\s*// \{\{\{)
+ foldingStopMarker
+ ^\s*(\}|// \}\}\}$)
+ keyEquivalent
+ ^~G
+ name
+ Groovy
+ patterns
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.definition.comment.groovy
+
+
+ match
+ ^(#!).+$\n
+ name
+ comment.line.hashbang.groovy
+
+
+ captures
+
+ 1
+
+ name
+ keyword.other.package.groovy
+
+ 2
+
+ name
+ storage.type.package.groovy
+
+
+ match
+ ^\s*(package)\s+([^ ;]+)
+ name
+ meta.package.groovy
+
+
+ captures
+
+ 1
+
+ name
+ keyword.other.import.groovy
+
+ 2
+
+ name
+ storage.type.import.groovy
+
+
+ match
+ ^\s*(import)\s+([^ ;$]+);?
+ name
+ meta.import.groovy
+
+
+ include
+ #groovy
+
+
+ repository
+
+ class-object
+
+ patterns
+
+
+ match
+ (?x)
+ \b(
+ (?:[a-z]\w*\.)* # Optional package specification
+ [A-Z]\w+\b # Class name
+ (?:<(?:[\w, ]*)>)? # Optional Generics
+ (?:\[\s*\])* # Optional brackets (array)
+ )\b
+
+ name
+ storage.type.class.groovy
+
+
+
+ classes
+
+ begin
+ (?x)^\s*
+ (?:(?:\b(?:(public|private|protected)|(static)|(final)|(native|synchronized|abstract|threadsafe|transient))\b\s*)*) # modifier
+ (class)\s+
+ (\w+)\s* # identifier
+ captures
+
+ 1
+
+ name
+ storage.modifier.access-control.groovy
+
+ 2
+
+ name
+ storage.modifier.static.groovy
+
+ 3
+
+ name
+ storage.modifier.final.groovy
+
+ 4
+
+ name
+ storage.modifier.other.groovy
+
+ 5
+
+ name
+ storage.type.class.groovy
+
+ 6
+
+ name
+ entity.name.type.class.groovy
+
+
+ end
+ $
+ name
+ meta.definition.class.groovy
+ patterns
+
+
+ captures
+
+ 1
+
+ name
+ storage.modifier.extends.groovy
+
+ 2
+
+ name
+ entity.other.inherited-class.groovy
+
+
+ match
+ (extends)\s+([a-zA-Z0-9_\.]+(?:<(?:[a-zA-Z0-9_, ])+>)?)\s*
+ name
+ meta.definition.class.inherited.classes.groovy
+
+
+ begin
+ (implements)\s
+ beginCaptures
+
+ 1
+
+ name
+ storage.modifier.implements.groovy
+
+
+ end
+ (?=\s*extends|$|\{)
+ name
+ meta.definition.class.implemented.interfaces.groovy
+ patterns
+
+
+ captures
+
+ 1
+
+ name
+ entity.other.inherited-class.interface.groovy
+
+ 2
+
+ name
+ punctuation.definition.implemented.interfaces.separator.groovy
+
+
+ match
+ ((?:[a-z]\w*.)*[A-Z]\w*)\s*(?:(,)|$|\{)
+
+
+
+
+
+ comment-block
+
+ begin
+ /\*
+ captures
+
+ 0
+
+ name
+ punctuation.definition.comment.groovy
+
+
+ end
+ \*/
+ name
+ comment.block.groovy
+
+ comments
+
+ patterns
+
+
+ captures
+
+ 0
+
+ name
+ punctuation.definition.comment.groovy
+
+
+ match
+ /\*\*/
+ name
+ comment.block.empty.groovy
+
+
+ include
+ text.html.javadoc
+
+
+ include
+ #comment-block
+
+
+ captures
+
+ 1
+
+ name
+ punctuation.definition.comment.groovy
+
+
+ match
+ (//).*$\n?
+ name
+ comment.line.double-slash.groovy
+
+
+
+ constants
+
+ patterns
+
+
+ match
+ \b([A-Z][A-Z0-9_]+)\b
+ name
+ constant.other.groovy
+
+
+ match
+ \b(true|false|null)\b
+ name
+ constant.language.groovy
+
+
+
+ groovy
+
+ patterns
+
+
+ include
+ #classes
+
+
+ include
+ #methods
+
+
+ include
+ #groovy-code
+
+
+
+ groovy-code
+
+ patterns
+
+
+ include
+ #groovy-code-minus-map-keys
+
+
+ include
+ #map-keys
+
+
+
+ groovy-code-minus-map-keys
+
+ comment
+ In some situations, maps can't be declared without enclosing []'s,
+ therefore we create a collection of everything but that
+ patterns
+
+
+ include
+ #comments
+
+
+ include
+ #support-functions
+
+
+ include
+ #keyword-language
+
+
+ include
+ #values
+
+
+ include
+ #keyword-operator
+
+
+ include
+ #storage-types
+
+
+ include
+ #storage-modifiers
+
+
+
+ keyword
+
+ patterns
+
+
+ include
+ #keyword-operator
+
+
+ include
+ #keyword-language
+
+
+
+ keyword-language
+
+ patterns
+
+
+ match
+ \b(try|catch|finally|throw)\b
+ name
+ keyword.control.exception.groovy
+
+
+ match
+ \b(return|break|continue|default|do|while|for|switch|if|else)\b
+ name
+ keyword.control.groovy
+
+
+ begin
+ \bcase\b
+ beginCaptures
+
+ 0
+
+ name
+ keyword.control.groovy
+
+
+ end
+ :
+ endCaptures
+
+ 0
+
+ name
+ punctuation.definition.case-terminator.groovy
+
+
+ name
+ meta.case.groovy
+ patterns
+
+
+ include
+ #groovy-code-minus-map-keys
+
+
+
+
+ match
+ \b(new)\b
+ name
+ keyword.other.new.groovy
+
+
+ begin
+ \b(assert)\s
+ beginCaptures
+
+ 1
+
+ name
+ keyword.control.assert.groovy
+
+
+ end
+ $
+ name
+ meta.declaration.assertion.groovy
+ patterns
+
+
+ match
+ :
+ name
+ keyword.operator.assert.expression-seperator.groovy
+
+
+ include
+ #groovy-code-minus-map-keys
+
+
+
+
+ match
+ \b(throws)\b
+ name
+ keyword.other.throws.groovy
+
+
+
+ keyword-operator
+
+ patterns
+
+
+ match
+ \b(as)\b
+ name
+ keyword.operator.as.groovy
+
+
+ match
+ \b(is)\b
+ name
+ keyword.operator.is.groovy
+
+
+ match
+ \?\:
+ name
+ keyword.operator.elvis.groovy
+
+
+ match
+ \.\.
+ name
+ keyword.operator.range.groovy
+
+
+ match
+ \->
+ name
+ keyword.operator.arrow.groovy
+
+
+ match
+ <<
+ name
+ keyword.operator.leftshift.groovy
+
+
+ match
+ (?<=\S)\.(?=\S)
+ name
+ keyword.operator.navigation.groovy
+
+
+ match
+ (?<=\S)\?\.(?=\S)
+ name
+ keyword.operator.safe-navigation.groovy
+
+
+ begin
+ \?
+ beginCaptures
+
+ 0
+
+ name
+ keyword.operator.ternary.groovy
+
+
+ end
+ $
+ name
+ meta.evaluation.ternary.groovy
+ patterns
+
+
+ match
+ :
+ name
+ keyword.operator.ternary.expression-seperator.groovy
+
+
+ include
+ #groovy-code-minus-map-keys
+
+
+
+
+ match
+ ==~
+ name
+ keyword.operator.match.groovy
+
+
+ match
+ =~
+ name
+ keyword.operator.find.groovy
+
+
+ match
+ \b(instanceof)\b
+ name
+ keyword.operator.instanceof.groovy
+
+
+ match
+ (===|==|!=|<=|>=|<=>|<>|<|>|<<)
+ name
+ keyword.operator.comparison.groovy
+
+
+ match
+ =
+ name
+ keyword.operator.assignment.groovy
+
+
+ match
+ (\-\-|\+\+)
+ name
+ keyword.operator.increment-decrement.groovy
+
+
+ match
+ (\-|\+|\*|\/|%)
+ name
+ keyword.operator.arithmetic.groovy
+
+
+ match
+ (!|&&|\|\|)
+ name
+ keyword.operator.logical.groovy
+
+
+
+ map-keys
+
+ patterns
+
+
+ captures
+
+ 1
+
+ name
+ constant.other.key.groovy
+
+ 2
+
+ name
+ punctuation.definition.seperator.key-value.groovy
+
+
+ match
+ (\w+)\s*(:)
+
+
+
+ method-call
+
+ begin
+ (\w+)(\()
+ beginCaptures
+
+ 1
+
+ name
+ meta.method.groovy
+
+ 2
+
+ name
+ punctuation.definition.method-parameters.begin.groovy
+
+
+ end
+ \)
+ endCaptures
+
+ 0
+
+ name
+ punctuation.definition.method-parameters.end.groovy
+
+
+ name
+ meta.method-call.groovy
+ patterns
+
+
+ match
+ ,
+ name
+ punctuation.definition.seperator.parameter.groovy
+
+
+ include
+ #groovy-code
+
+
+
+ method-declaration-remainder
+
+ patterns
+
+
+ begin
+ \(
+ beginCaptures
+
+ 0
+
+ name
+ punctuation.definition.parameters.begin.groovy
+
+
+ contentName
+ meta.definition.method.parameters.groovy
+ end
+ \)
+ endCaptures
+
+ 0
+
+ name
+ punctuation.definition.parameters.end.groovy
+
+
+ patterns
+
+
+ captures
+
+ 1
+
+ name
+ storage.type.parameter.groovy
+
+ 2
+
+ name
+ variable.parameter.groovy
+
+
+ match
+ (?x)\s*
+ (
+ (?:boolean|byte|char|short|int|float|long|double|(?:\w+\.)*[A-Z]\w*\b(?:<(?:[\w, ]*)>)?(?:\[\s*\])*)
+ )?
+ \s*
+ ([a-z_][A-Za-z0-9_]*) # variable
+
+ name
+ meta.definition.method.parameter.groovy
+
+
+ captures
+
+ 1
+
+ name
+ storage.type.parameter.groovy
+
+
+ match
+ (boolean|byte|char|short|int|float|long|double|(?:\w+\.)*[A-Z]\w*\b(?:<(?:[\w, ]*)>)?(?:\[\s*\])*)
+ name
+ meta.definition.method.parameter.groovy
+
+
+ match
+ ,
+ name
+ punctuation.definition.parameters.seperator.groovy
+
+
+ include
+ #comment-block
+
+
+
+
+ begin
+ (?<=\))\s*(throws)\s
+ captures
+
+ 1
+
+ name
+ storage.modifier.throws.groovy
+
+
+ end
+ (?=$|\{)
+ name
+ meta.definition.method.throwables.groovy
+ patterns
+
+
+ captures
+
+ 1
+
+ name
+ storage.type.throwable.groovy
+
+ 2
+
+ name
+ punctuation.definition.throwables.seperator.groovy
+
+
+ match
+ ((?:[a-z]\w*.)*[A-Z]\w*)\s*(?:(,)|$|\{)
+
+
+
+
+
+ methods
+
+ patterns
+
+
+ begin
+ (?x)^\s*
+ (?: # zero or more modifiers
+ (?:
+ (public|private|protected)|(final)|(native|synchronized|abstract|threadsafe|transient)
+ )
+ \s+
+ )?
+ \s*
+ ([A-Z](?:[a-zA-Z0-9_])+) # constructor/class name
+ \s*
+ (?=\()
+
+ beginCaptures
+
+ 1
+
+ name
+ storage.modifier.access-control.groovy
+
+ 2
+
+ name
+ storage.modifier.final.groovy
+
+ 3
+
+ name
+ storage.modifier.other.groovy
+
+ 4
+
+ name
+ entity.name.function.constructor.groovy
+
+ 5
+
+ name
+ punctuation.definition.parameters.begin.groovy
+
+
+ end
+ {|$\n?
+ name
+ meta.definition.constructor.groovy
+ patterns
+
+
+ include
+ #method-declaration-remainder
+
+
+
+
+ begin
+ (?x)^\s*
+ (?:
+ (?: # or modifier and optional type
+ (?:(?:\b(public|private|protected)|(static)|(final)|(native|synchronized|abstract|threadsafe|transient))\b\s+)+\s* # modifier
+ (?:\b
+ (void)
+ |
+ (boolean|byte|char|short|int|float|long|double) # primitive
+ |
+ ( # or class type
+ (?:\w+\.)*[A-Z]\w+\b # Class name
+ (?:<(?:[\w, ]*)>)? # optional Generic type
+ (?:\[\s*\])* # zero or more square brackets (array)
+ )
+ )?
+ )
+ |
+ (?:\b # or type by itself
+ (def)
+ |
+ (void)
+ |
+ (boolean|byte|char|short|int|float|long|double) # primitive
+ |
+ ( # or class type
+ (?:\w+\.)*[A-Z]\w+\b # Class name
+ (?:<(?:[\w, ]*)>)? # optional generics info
+ (?:\[\s*\])* # zero or more square brackets (array)
+ )
+ )
+ )
+ \s*
+ (\w+) # method name
+ \s*
+ (?=\() # opening parens
+
+ beginCaptures
+
+ 1
+
+ name
+ storage.modifier.access-control.groovy
+
+ 10
+
+ name
+ storage.type.return-type.primitive.groovy
+
+ 11
+
+ name
+ storage.type.return-type.class.groovy
+
+ 12
+
+ name
+ entity.name.function.groovy
+
+ 2
+
+ name
+ storage.modifier.static.groovy
+
+ 3
+
+ name
+ storage.modifier.final.groovy
+
+ 4
+
+ name
+ storage.modifier.other.groovy
+
+ 5
+
+ name
+ storage.type.return-type.void.groovy
+
+ 6
+
+ name
+ storage.type.return-type.primitive.groovy
+
+ 7
+
+ name
+ storage.type.return-type.class.groovy
+
+ 8
+
+ name
+ storage.type.return-type.def.groovy
+
+ 9
+
+ name
+ storage.type.return-type.void.groovy
+
+
+ end
+ {|$\n?
+ name
+ meta.definition.method.groovy
+ patterns
+
+
+ include
+ #method-declaration-remainder
+
+
+
+
+
+ nest_curly
+
+ begin
+ \{
+ captures
+
+ 0
+
+ name
+ punctuation.section.scope.groovy
+
+
+ end
+ \}
+ patterns
+
+
+ include
+ #nest_curly
+
+
+
+ numbers
+
+ patterns
+
+
+ match
+ ((0(x|X)[0-9a-fA-F]*)|(\+|-)?\b(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)([LlFfUuDd]|UL|ul)?\b
+ name
+ constant.numeric.groovy
+
+
+
+ regexp
+
+ patterns
+
+
+ begin
+ /(?=[^/]+/)
+ beginCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.regexp.begin.groovy
+
+
+ end
+ /
+ endCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.regexp.end.groovy
+
+
+ name
+ string.regexp.groovy
+ patterns
+
+
+ match
+ \\.
+ name
+ constant.character.escape.groovy
+
+
+
+
+
+ storage-modifiers
+
+ patterns
+
+
+ match
+ \b(private|protected|public)\b
+ name
+ storage.modifier.access-control.groovy
+
+
+ match
+ \b(static)\b
+ name
+ storage.modifier.static.groovy
+
+
+ match
+ \b(final)\b
+ name
+ storage.modifier.final.groovy
+
+
+ match
+ \b(native|synchronized|abstract|threadsafe|transient)\b
+ name
+ storage.modifier.other.groovy
+
+
+
+ storage-types
+
+ patterns
+
+
+ begin
+ (@[^ (]+)(\()
+ beginCaptures
+
+ 1
+
+ name
+ storage.type.annotation.groovy
+
+ 2
+
+ name
+ punctuation.definition.annotation-arguments.begin.groovy
+
+
+ end
+ (\))
+ endCaptures
+
+ 1
+
+ name
+ punctuation.definition.annotation-arguments.end.groovy
+
+
+ name
+ meta.declaration.annotation.groovy
+ patterns
+
+
+ captures
+
+ 1
+
+ name
+ constant.other.key.groovy
+
+ 2
+
+ name
+ keyword.operator.assignment.groovy
+
+
+ match
+ (\w*)\s*(=)
+
+
+ include
+ #values
+
+
+ match
+ ,
+ name
+ punctuation.definition.seperator.groovy
+
+
+
+
+ match
+ @\S+
+ name
+ storage.type.annotation.groovy
+
+
+ match
+ \b(def)\b
+ name
+ storage.type.def.groovy
+
+
+ match
+ \b(boolean|byte|char|short|int|float|long|double)(?:\[\s*\])*\b
+ name
+ storage.type.primitive.groovy
+
+
+
+ string-quoted-double
+
+ begin
+ "
+ beginCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.begin.groovy
+
+
+ end
+ "
+ endCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.end.groovy
+
+
+ name
+ string.quoted.double.groovy
+ patterns
+
+
+ match
+ \\.
+ name
+ constant.character.escape.groovy
+
+
+ match
+ \$\w+
+ name
+ variable.other.interpolated.groovy
+
+
+ begin
+ \$\{
+ captures
+
+ 0
+
+ name
+ punctuation.section.embedded.groovy
+
+
+ end
+ \}
+ name
+ source.groovy.embedded.source
+ patterns
+
+
+ include
+ #nest_curly
+
+
+
+
+
+ string-quoted-single
+
+ begin
+ '
+ beginCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.begin.groovy
+
+
+ end
+ '
+ endCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.end.groovy
+
+
+ name
+ string.quoted.single.groovy
+ patterns
+
+
+ match
+ \\.
+ name
+ constant.character.escape.groovy
+
+
+
+ strings
+
+ patterns
+
+
+ include
+ #string-quoted-double
+
+
+ include
+ #string-quoted-single
+
+
+ include
+ #regexp
+
+
+
+ structures
+
+ begin
+ \[
+ beginCaptures
+
+ 0
+
+ name
+ punctuation.definition.structure.begin.groovy
+
+
+ end
+ \]
+ endCaptures
+
+ 0
+
+ name
+ punctuation.definition.structure.end.groovy
+
+
+ name
+ meta.structure.groovy
+ patterns
+
+
+ include
+ #groovy-code
+
+
+ match
+ ,
+ name
+ punctuation.definition.separator.groovy
+
+
+
+ support-functions
+
+ patterns
+
+
+ match
+ (?x)\b(?:sprintf|print(?:f|ln)?)\b
+ name
+ support.function.print.groovy
+
+
+ match
+ (?x)\b(?:shouldFail|fail(?:NotEquals)?|ass(?:ume|ert(?:S(?:cript|ame)|N(?:ot(?:Same|
+ Null)|ull)|Contains|T(?:hat|oString|rue)|Inspect|Equals|False|Length|
+ ArrayEquals)))\b
+ name
+ support.function.testing.groovy
+
+
+ match
+ (?x)\b(?:sleep|inspect|dump|use|with)\b
+ name
+ support.function.other.groovy
+
+
+
+ values
+
+ patterns
+
+
+ include
+ #variables
+
+
+ include
+ #strings
+
+
+ include
+ #numbers
+
+
+ include
+ #constants
+
+
+ include
+ #class-object
+
+
+ include
+ #structures
+
+
+ include
+ #method-call
+
+
+
+ variables
+
+ patterns
+
+
+ match
+ \b(this|super)\b
+ name
+ variable.language.groovy
+
+
+
+
+ scopeName
+ source.groovy
+ uuid
+ B3A64888-EBBB-4436-8D9E-F1169C5D7613
+
+
diff --git a/sublime/Packages/Groovy/Groovy.tmLanguage (Hackintosh's conflicted copy 2012-07-23).cache b/sublime/Packages/Groovy/Groovy.tmLanguage (Hackintosh's conflicted copy 2012-07-23).cache
new file mode 100644
index 0000000..3883ef8
Binary files /dev/null and b/sublime/Packages/Groovy/Groovy.tmLanguage (Hackintosh's conflicted copy 2012-07-23).cache differ
diff --git a/sublime/Packages/Groovy/Groovy.tmLanguage.cache b/sublime/Packages/Groovy/Groovy.tmLanguage.cache
new file mode 100644
index 0000000..3883ef8
Binary files /dev/null and b/sublime/Packages/Groovy/Groovy.tmLanguage.cache differ
diff --git a/sublime/Packages/Groovy/Hash-Pair.sublime-snippet b/sublime/Packages/Groovy/Hash-Pair.sublime-snippet
new file mode 100644
index 0000000..95aaef7
--- /dev/null
+++ b/sublime/Packages/Groovy/Hash-Pair.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ :
+ source.groovy
+ key: "value" (Hash Pair)
+
diff --git a/sublime/Packages/Groovy/Symbol List%3A Class Variables.tmPreferences b/sublime/Packages/Groovy/Symbol List%3A Class Variables.tmPreferences
new file mode 100644
index 0000000..a553104
--- /dev/null
+++ b/sublime/Packages/Groovy/Symbol List%3A Class Variables.tmPreferences
@@ -0,0 +1,21 @@
+
+
+
+
+ name
+ Symbol List: Class Variables
+ scope
+ source.groovy meta.definition.class meta.definition.class-variable.name
+ settings
+
+ showInSymbolList
+ 1
+ symbolTransformation
+
+ s/.+/ $0/g
+
+
+ uuid
+ AAC3FB7F-5428-4B6A-B43E-62E4C6677E1F
+
+
diff --git a/sublime/Packages/Groovy/Symbol List%3A Class Variables.tmPreferences.cache b/sublime/Packages/Groovy/Symbol List%3A Class Variables.tmPreferences.cache
new file mode 100644
index 0000000..070609a
Binary files /dev/null and b/sublime/Packages/Groovy/Symbol List%3A Class Variables.tmPreferences.cache differ
diff --git a/sublime/Packages/Groovy/Symbol List%3A Classes.tmPreferences b/sublime/Packages/Groovy/Symbol List%3A Classes.tmPreferences
new file mode 100644
index 0000000..2cfbc95
--- /dev/null
+++ b/sublime/Packages/Groovy/Symbol List%3A Classes.tmPreferences
@@ -0,0 +1,17 @@
+
+
+
+
+ name
+ Symbol List: Classes
+ scope
+ source.groovy entity.name.type.class
+ settings
+
+ showInSymbolList
+ 1
+
+ uuid
+ 6201F313-C9FB-4D7E-9D01-FB85287BE21C
+
+
diff --git a/sublime/Packages/Groovy/Symbol List%3A Classes.tmPreferences.cache b/sublime/Packages/Groovy/Symbol List%3A Classes.tmPreferences.cache
new file mode 100644
index 0000000..d8ee68b
Binary files /dev/null and b/sublime/Packages/Groovy/Symbol List%3A Classes.tmPreferences.cache differ
diff --git a/sublime/Packages/Groovy/Symbol List%3A Methods.tmPreferences b/sublime/Packages/Groovy/Symbol List%3A Methods.tmPreferences
new file mode 100644
index 0000000..fb52dd2
--- /dev/null
+++ b/sublime/Packages/Groovy/Symbol List%3A Methods.tmPreferences
@@ -0,0 +1,21 @@
+
+
+
+
+ name
+ Symbol List: Methods
+ scope
+ source.groovy meta.definition.method.signature
+ settings
+
+ showInSymbolList
+ 1
+ symbolTransformation
+
+ s/\s*.*\s+(\w+)\s*(\(.*\)).*/ $1$2/g
+
+
+ uuid
+ 6AF1B177-1700-478F-808B-78D85403FC19
+
+
diff --git a/sublime/Packages/Groovy/Symbol List%3A Methods.tmPreferences.cache b/sublime/Packages/Groovy/Symbol List%3A Methods.tmPreferences.cache
new file mode 100644
index 0000000..8f3009a
Binary files /dev/null and b/sublime/Packages/Groovy/Symbol List%3A Methods.tmPreferences.cache differ
diff --git a/sublime/Packages/Groovy/Symbol List%3A Variables.tmPreferences b/sublime/Packages/Groovy/Symbol List%3A Variables.tmPreferences
new file mode 100644
index 0000000..0583a06
--- /dev/null
+++ b/sublime/Packages/Groovy/Symbol List%3A Variables.tmPreferences
@@ -0,0 +1,21 @@
+
+
+
+
+ name
+ Symbol List: Variables
+ scope
+ source.groovy meta.definition.class-variable.name
+ settings
+
+ showInSymbolList
+ 1
+ symbolTransformation
+
+ s/.+/$0/g
+
+
+ uuid
+ CF622434-558B-4333-8B57-76576354D6DC
+
+
diff --git a/sublime/Packages/Groovy/Symbol List%3A Variables.tmPreferences.cache b/sublime/Packages/Groovy/Symbol List%3A Variables.tmPreferences.cache
new file mode 100644
index 0000000..d98a64a
Binary files /dev/null and b/sublime/Packages/Groovy/Symbol List%3A Variables.tmPreferences.cache differ
diff --git a/sublime/Packages/Groovy/Thread_start-{-__-}.sublime-snippet b/sublime/Packages/Groovy/Thread_start-{-__-}.sublime-snippet
new file mode 100644
index 0000000..d74afc4
--- /dev/null
+++ b/sublime/Packages/Groovy/Thread_start-{-__-}.sublime-snippet
@@ -0,0 +1,8 @@
+
+
+ thread
+ source.groovy
+ Thread.start { … }
+
diff --git a/sublime/Packages/Groovy/Thread_startDaemon-{-__-}.sublime-snippet b/sublime/Packages/Groovy/Thread_startDaemon-{-__-}.sublime-snippet
new file mode 100644
index 0000000..2f5c7c4
--- /dev/null
+++ b/sublime/Packages/Groovy/Thread_startDaemon-{-__-}.sublime-snippet
@@ -0,0 +1,8 @@
+
+
+ thread
+ source.groovy
+ Thread.startDaemon { … }
+
diff --git a/sublime/Packages/Groovy/all{-e-__-}.sublime-snippet b/sublime/Packages/Groovy/all{-e-__-}.sublime-snippet
new file mode 100644
index 0000000..eab6e09
--- /dev/null
+++ b/sublime/Packages/Groovy/all{-e-__-}.sublime-snippet
@@ -0,0 +1,8 @@
+
+ )/}
+ $0
+}]]>
+ all
+ source.groovy
+ all { … }
+
diff --git a/sublime/Packages/Groovy/any{-e-__-}.sublime-snippet b/sublime/Packages/Groovy/any{-e-__-}.sublime-snippet
new file mode 100644
index 0000000..fe86c68
--- /dev/null
+++ b/sublime/Packages/Groovy/any{-e-__-}.sublime-snippet
@@ -0,0 +1,8 @@
+
+ )/}
+ $0
+}]]>
+ any
+ source.groovy
+ any { … }
+
diff --git a/sublime/Packages/Groovy/as-BigDecimal.sublime-snippet b/sublime/Packages/Groovy/as-BigDecimal.sublime-snippet
new file mode 100644
index 0000000..02658b0
--- /dev/null
+++ b/sublime/Packages/Groovy/as-BigDecimal.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ as
+ source.groovy
+ as BigDecimal
+
diff --git a/sublime/Packages/Groovy/as-BigInteger.sublime-snippet b/sublime/Packages/Groovy/as-BigInteger.sublime-snippet
new file mode 100644
index 0000000..13698c7
--- /dev/null
+++ b/sublime/Packages/Groovy/as-BigInteger.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ as
+ source.groovy
+ as BigInteger
+
diff --git a/sublime/Packages/Groovy/as-Double.sublime-snippet b/sublime/Packages/Groovy/as-Double.sublime-snippet
new file mode 100644
index 0000000..3d9ac60
--- /dev/null
+++ b/sublime/Packages/Groovy/as-Double.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ as
+ source.groovy
+ as Double
+
diff --git a/sublime/Packages/Groovy/as-Float.sublime-snippet b/sublime/Packages/Groovy/as-Float.sublime-snippet
new file mode 100644
index 0000000..be64fa6
--- /dev/null
+++ b/sublime/Packages/Groovy/as-Float.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ as
+ source.groovy
+ as Float
+
diff --git a/sublime/Packages/Groovy/as-Immutable.sublime-snippet b/sublime/Packages/Groovy/as-Immutable.sublime-snippet
new file mode 100644
index 0000000..f785d06
--- /dev/null
+++ b/sublime/Packages/Groovy/as-Immutable.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ .as
+ source.groovy
+ asImmutable()
+
diff --git a/sublime/Packages/Groovy/as-Set.sublime-snippet b/sublime/Packages/Groovy/as-Set.sublime-snippet
new file mode 100644
index 0000000..09a8d6d
--- /dev/null
+++ b/sublime/Packages/Groovy/as-Set.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ as
+ source.groovy
+ as Set
+
diff --git a/sublime/Packages/Groovy/as-String.sublime-snippet b/sublime/Packages/Groovy/as-String.sublime-snippet
new file mode 100644
index 0000000..e9ff514
--- /dev/null
+++ b/sublime/Packages/Groovy/as-String.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ as
+ source.groovy
+ as String
+
diff --git a/sublime/Packages/Groovy/as-Synchronized.sublime-snippet b/sublime/Packages/Groovy/as-Synchronized.sublime-snippet
new file mode 100644
index 0000000..f012910
--- /dev/null
+++ b/sublime/Packages/Groovy/as-Synchronized.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ .as
+ source.groovy
+ asSynchronized()
+
diff --git a/sublime/Packages/Groovy/as-Writable.sublime-snippet b/sublime/Packages/Groovy/as-Writable.sublime-snippet
new file mode 100644
index 0000000..3b634f4
--- /dev/null
+++ b/sublime/Packages/Groovy/as-Writable.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ as
+ source.groovy
+ as Writable
+
diff --git a/sublime/Packages/Groovy/assert(__).sublime-snippet b/sublime/Packages/Groovy/assert(__).sublime-snippet
new file mode 100644
index 0000000..37069d1
--- /dev/null
+++ b/sublime/Packages/Groovy/assert(__).sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ !
+ source.groovy
+ assert
+
diff --git a/sublime/Packages/Groovy/assertEquals(__).sublime-snippet b/sublime/Packages/Groovy/assertEquals(__).sublime-snippet
new file mode 100644
index 0000000..f1cbfae
--- /dev/null
+++ b/sublime/Packages/Groovy/assertEquals(__).sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ ase
+ source.groovy
+ assertEquals
+
diff --git a/sublime/Packages/Groovy/assertFalse.sublime-snippet b/sublime/Packages/Groovy/assertFalse.sublime-snippet
new file mode 100644
index 0000000..9d3fe8c
--- /dev/null
+++ b/sublime/Packages/Groovy/assertFalse.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ asf
+ source.groovy
+ assertFalse
+
diff --git a/sublime/Packages/Groovy/assertNotEquals(__).sublime-snippet b/sublime/Packages/Groovy/assertNotEquals(__).sublime-snippet
new file mode 100644
index 0000000..e7c2d3e
--- /dev/null
+++ b/sublime/Packages/Groovy/assertNotEquals(__).sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ asne
+ source.groovy
+ assertNotEquals
+
diff --git a/sublime/Packages/Groovy/assertNotNull(__).sublime-snippet b/sublime/Packages/Groovy/assertNotNull(__).sublime-snippet
new file mode 100644
index 0000000..1894c63
--- /dev/null
+++ b/sublime/Packages/Groovy/assertNotNull(__).sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ asnn
+ source.groovy
+ assertNotNull
+
diff --git a/sublime/Packages/Groovy/assertNull(__).sublime-snippet b/sublime/Packages/Groovy/assertNull(__).sublime-snippet
new file mode 100644
index 0000000..e6d0024
--- /dev/null
+++ b/sublime/Packages/Groovy/assertNull(__).sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ asn
+ source.groovy
+ assertNull
+
diff --git a/sublime/Packages/Groovy/assertSame.sublime-snippet b/sublime/Packages/Groovy/assertSame.sublime-snippet
new file mode 100644
index 0000000..6ed0be7
--- /dev/null
+++ b/sublime/Packages/Groovy/assertSame.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ ass
+ source.groovy
+ assertSame
+
diff --git a/sublime/Packages/Groovy/assertTrue.sublime-snippet b/sublime/Packages/Groovy/assertTrue.sublime-snippet
new file mode 100644
index 0000000..f5bd131
--- /dev/null
+++ b/sublime/Packages/Groovy/assertTrue.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ ast
+ source.groovy
+ assertTrue
+
diff --git a/sublime/Packages/Groovy/case.sublime-snippet b/sublime/Packages/Groovy/case.sublime-snippet
new file mode 100644
index 0000000..4902144
--- /dev/null
+++ b/sublime/Packages/Groovy/case.sublime-snippet
@@ -0,0 +1,8 @@
+
+
+ case
+ source.groovy
+ case … break
+
diff --git a/sublime/Packages/Groovy/class-__-singleton.sublime-snippet b/sublime/Packages/Groovy/class-__-singleton.sublime-snippet
new file mode 100644
index 0000000..a38a49c
--- /dev/null
+++ b/sublime/Packages/Groovy/class-__-singleton.sublime-snippet
@@ -0,0 +1,11 @@
+
+
+ instance
+ source.groovy
+ instance … (Singleton)
+
diff --git a/sublime/Packages/Groovy/class-__.sublime-snippet b/sublime/Packages/Groovy/class-__.sublime-snippet
new file mode 100644
index 0000000..1bcf4cf
--- /dev/null
+++ b/sublime/Packages/Groovy/class-__.sublime-snippet
@@ -0,0 +1,10 @@
+
+
+ cl
+ source.groovy
+ class { … }
+
diff --git a/sublime/Packages/Groovy/class-___-TestCase.sublime-snippet b/sublime/Packages/Groovy/class-___-TestCase.sublime-snippet
new file mode 100644
index 0000000..1c65f99
--- /dev/null
+++ b/sublime/Packages/Groovy/class-___-TestCase.sublime-snippet
@@ -0,0 +1,9 @@
+
+
+ tc
+ source.groovy
+ class … extends GroovyTestCase { … }
+
diff --git a/sublime/Packages/Groovy/collect-{-e-__-}.sublime-snippet b/sublime/Packages/Groovy/collect-{-e-__-}.sublime-snippet
new file mode 100644
index 0000000..5c3d5cc
--- /dev/null
+++ b/sublime/Packages/Groovy/collect-{-e-__-}.sublime-snippet
@@ -0,0 +1,8 @@
+
+ )/}
+ $0
+}]]>
+ col
+ source.groovy
+ collect { … }
+
diff --git a/sublime/Packages/Groovy/copy__-file.sublime-snippet b/sublime/Packages/Groovy/copy__-file.sublime-snippet
new file mode 100644
index 0000000..d56501c
--- /dev/null
+++ b/sublime/Packages/Groovy/copy__-file.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ copy
+ source.groovy
+ copy(file: …, tofile: …)
+
diff --git a/sublime/Packages/Groovy/copy__-fileset-include-exclude.sublime-snippet b/sublime/Packages/Groovy/copy__-fileset-include-exclude.sublime-snippet
new file mode 100644
index 0000000..de56a91
--- /dev/null
+++ b/sublime/Packages/Groovy/copy__-fileset-include-exclude.sublime-snippet
@@ -0,0 +1,11 @@
+
+
+ copy
+ source.groovy
+ copy(todir: …) { fileset(dir: …) { include … exclude }
+
diff --git a/sublime/Packages/Groovy/copy__-fileset.sublime-snippet b/sublime/Packages/Groovy/copy__-fileset.sublime-snippet
new file mode 100644
index 0000000..fc73ca4
--- /dev/null
+++ b/sublime/Packages/Groovy/copy__-fileset.sublime-snippet
@@ -0,0 +1,8 @@
+
+
+ copy
+ source.groovy
+ copy(todir: …) { fileset:dir …) }
+
diff --git a/sublime/Packages/Groovy/def-__-closure-=-{__}.sublime-snippet b/sublime/Packages/Groovy/def-__-closure-=-{__}.sublime-snippet
new file mode 100644
index 0000000..c8a6d2d
--- /dev/null
+++ b/sublime/Packages/Groovy/def-__-closure-=-{__}.sublime-snippet
@@ -0,0 +1,8 @@
+
+
+ $0
+}]]>
+ cv
+ source.groovy
+ closure = { … }
+
diff --git a/sublime/Packages/Groovy/def-__-method()-{__}.sublime-snippet b/sublime/Packages/Groovy/def-__-method()-{__}.sublime-snippet
new file mode 100644
index 0000000..fbe20d9
--- /dev/null
+++ b/sublime/Packages/Groovy/def-__-method()-{__}.sublime-snippet
@@ -0,0 +1,8 @@
+
+
+ m
+ source.groovy
+ method() { … }
+
diff --git a/sublime/Packages/Groovy/downto(num)-{-n-__-}.sublime-snippet b/sublime/Packages/Groovy/downto(num)-{-n-__-}.sublime-snippet
new file mode 100644
index 0000000..5c03659
--- /dev/null
+++ b/sublime/Packages/Groovy/downto(num)-{-n-__-}.sublime-snippet
@@ -0,0 +1,8 @@
+
+ )/}
+ $0
+}]]>
+ dt
+ source.groovy
+ downto() { … }
+
diff --git a/sublime/Packages/Groovy/each-{-e-__-}.sublime-snippet b/sublime/Packages/Groovy/each-{-e-__-}.sublime-snippet
new file mode 100644
index 0000000..c0eac3b
--- /dev/null
+++ b/sublime/Packages/Groovy/each-{-e-__-}.sublime-snippet
@@ -0,0 +1,8 @@
+
+ )/}
+ $0
+}]]>
+ ea
+ source.groovy
+ each { … }
+
diff --git a/sublime/Packages/Groovy/eachByte-{-byte-__-}.sublime-snippet b/sublime/Packages/Groovy/eachByte-{-byte-__-}.sublime-snippet
new file mode 100644
index 0000000..16337e2
--- /dev/null
+++ b/sublime/Packages/Groovy/eachByte-{-byte-__-}.sublime-snippet
@@ -0,0 +1,8 @@
+
+ )/}
+ $0
+}]]>
+ eab
+ source.groovy
+ eachByte { … }
+
diff --git a/sublime/Packages/Groovy/eachDir-{-dir-__-}.sublime-snippet b/sublime/Packages/Groovy/eachDir-{-dir-__-}.sublime-snippet
new file mode 100644
index 0000000..fd40234
--- /dev/null
+++ b/sublime/Packages/Groovy/eachDir-{-dir-__-}.sublime-snippet
@@ -0,0 +1,8 @@
+
+ )/}
+ $0
+}]]>
+ ead
+ source.groovy
+ eachDir { … }
+
diff --git a/sublime/Packages/Groovy/eachDirMatch.sublime-snippet b/sublime/Packages/Groovy/eachDirMatch.sublime-snippet
new file mode 100644
index 0000000..34c659e
--- /dev/null
+++ b/sublime/Packages/Groovy/eachDirMatch.sublime-snippet
@@ -0,0 +1,8 @@
+
+ )/}
+ $0
+}]]>
+ eadm
+ source.groovy
+ eachDirMatch { … }
+
diff --git a/sublime/Packages/Groovy/eachDirRecurse.sublime-snippet b/sublime/Packages/Groovy/eachDirRecurse.sublime-snippet
new file mode 100644
index 0000000..881b010
--- /dev/null
+++ b/sublime/Packages/Groovy/eachDirRecurse.sublime-snippet
@@ -0,0 +1,8 @@
+
+ )/}
+ $0
+}]]>
+ eadr
+ source.groovy
+ eachDirRecurse { … }
+
diff --git a/sublime/Packages/Groovy/eachFile-{-file-__-}.sublime-snippet b/sublime/Packages/Groovy/eachFile-{-file-__-}.sublime-snippet
new file mode 100644
index 0000000..0cadbe7
--- /dev/null
+++ b/sublime/Packages/Groovy/eachFile-{-file-__-}.sublime-snippet
@@ -0,0 +1,8 @@
+
+ )/}
+ $0
+}]]>
+ eaf
+ source.groovy
+ eachFile { … }
+
diff --git a/sublime/Packages/Groovy/eachFileMatch-{-file-__-}.sublime-snippet b/sublime/Packages/Groovy/eachFileMatch-{-file-__-}.sublime-snippet
new file mode 100644
index 0000000..fde3301
--- /dev/null
+++ b/sublime/Packages/Groovy/eachFileMatch-{-file-__-}.sublime-snippet
@@ -0,0 +1,8 @@
+
+ )/}
+ $0
+}]]>
+ eafm
+ source.groovy
+ eachFileMatch { … }
+
diff --git a/sublime/Packages/Groovy/eachFileRecurse-{-file-__-}.sublime-snippet b/sublime/Packages/Groovy/eachFileRecurse-{-file-__-}.sublime-snippet
new file mode 100644
index 0000000..73fc6d0
--- /dev/null
+++ b/sublime/Packages/Groovy/eachFileRecurse-{-file-__-}.sublime-snippet
@@ -0,0 +1,8 @@
+
+ )/}
+ $0
+}]]>
+ eafr
+ source.groovy
+ eachFileRecurse { … }
+
diff --git a/sublime/Packages/Groovy/eachKey-{-key-__-}.sublime-snippet b/sublime/Packages/Groovy/eachKey-{-key-__-}.sublime-snippet
new file mode 100644
index 0000000..02e7377
--- /dev/null
+++ b/sublime/Packages/Groovy/eachKey-{-key-__-}.sublime-snippet
@@ -0,0 +1,8 @@
+
+ )/}
+ $0
+}]]>
+ eak
+ source.groovy
+ eachKey { … }
+
diff --git a/sublime/Packages/Groovy/eachLine-{-line-__-}.sublime-snippet b/sublime/Packages/Groovy/eachLine-{-line-__-}.sublime-snippet
new file mode 100644
index 0000000..0172baf
--- /dev/null
+++ b/sublime/Packages/Groovy/eachLine-{-line-__-}.sublime-snippet
@@ -0,0 +1,8 @@
+
+ )/}
+ $0
+}]]>
+ eal
+ source.groovy
+ eachLine { … }
+
diff --git a/sublime/Packages/Groovy/eachMatch(regex)-{-match-__-}.sublime-snippet b/sublime/Packages/Groovy/eachMatch(regex)-{-match-__-}.sublime-snippet
new file mode 100644
index 0000000..3008883
--- /dev/null
+++ b/sublime/Packages/Groovy/eachMatch(regex)-{-match-__-}.sublime-snippet
@@ -0,0 +1,8 @@
+
+ )/}
+ $0
+}]]>
+ eam
+ source.groovy
+ eachMatch(regex) { … }
+
diff --git a/sublime/Packages/Groovy/eachObject-{-obj-__-}.sublime-snippet b/sublime/Packages/Groovy/eachObject-{-obj-__-}.sublime-snippet
new file mode 100644
index 0000000..6645b4a
--- /dev/null
+++ b/sublime/Packages/Groovy/eachObject-{-obj-__-}.sublime-snippet
@@ -0,0 +1,8 @@
+
+ )/}
+ $0
+}]]>
+ eao
+ source.groovy
+ eachObject { … }
+
diff --git a/sublime/Packages/Groovy/eachValue-{-val-__-}.sublime-snippet b/sublime/Packages/Groovy/eachValue-{-val-__-}.sublime-snippet
new file mode 100644
index 0000000..a83bd89
--- /dev/null
+++ b/sublime/Packages/Groovy/eachValue-{-val-__-}.sublime-snippet
@@ -0,0 +1,8 @@
+
+ )/}
+ $0
+}]]>
+ eav
+ source.groovy
+ eachValue { … }
+
diff --git a/sublime/Packages/Groovy/eachWithIndex-{-e-i-__-}.sublime-snippet b/sublime/Packages/Groovy/eachWithIndex-{-e-i-__-}.sublime-snippet
new file mode 100644
index 0000000..caeab11
--- /dev/null
+++ b/sublime/Packages/Groovy/eachWithIndex-{-e-i-__-}.sublime-snippet
@@ -0,0 +1,8 @@
+
+
+ $0
+}]]>
+ eawi
+ source.groovy
+ eachWithIndex { … }
+
diff --git a/sublime/Packages/Groovy/else.sublime-snippet b/sublime/Packages/Groovy/else.sublime-snippet
new file mode 100644
index 0000000..d926f97
--- /dev/null
+++ b/sublime/Packages/Groovy/else.sublime-snippet
@@ -0,0 +1,8 @@
+
+
+ el
+ source.groovy
+ else
+
diff --git a/sublime/Packages/Groovy/elseif-___.sublime-snippet b/sublime/Packages/Groovy/elseif-___.sublime-snippet
new file mode 100644
index 0000000..80e9dea
--- /dev/null
+++ b/sublime/Packages/Groovy/elseif-___.sublime-snippet
@@ -0,0 +1,8 @@
+
+
+ elif
+ source.groovy
+ elseif
+
diff --git a/sublime/Packages/Groovy/every-{-e-__-}.sublime-snippet b/sublime/Packages/Groovy/every-{-e-__-}.sublime-snippet
new file mode 100644
index 0000000..b90daf9
--- /dev/null
+++ b/sublime/Packages/Groovy/every-{-e-__-}.sublime-snippet
@@ -0,0 +1,8 @@
+
+ )/}
+ $0
+}]]>
+ every
+ source.groovy
+ every { … }
+
diff --git a/sublime/Packages/Groovy/final-method.sublime-snippet b/sublime/Packages/Groovy/final-method.sublime-snippet
new file mode 100644
index 0000000..2857d04
--- /dev/null
+++ b/sublime/Packages/Groovy/final-method.sublime-snippet
@@ -0,0 +1,8 @@
+
+
+ fm
+ source.groovy
+ final method() { … }
+
diff --git a/sublime/Packages/Groovy/final-var.sublime-snippet b/sublime/Packages/Groovy/final-var.sublime-snippet
new file mode 100644
index 0000000..cd0b036
--- /dev/null
+++ b/sublime/Packages/Groovy/final-var.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ fv
+ source.groovy
+ final var
+
diff --git a/sublime/Packages/Groovy/find-{-e-__-}.sublime-snippet b/sublime/Packages/Groovy/find-{-e-__-}.sublime-snippet
new file mode 100644
index 0000000..381239e
--- /dev/null
+++ b/sublime/Packages/Groovy/find-{-e-__-}.sublime-snippet
@@ -0,0 +1,8 @@
+
+ )/}
+ $0
+}]]>
+ find
+ source.groovy
+ find { … }
+
diff --git a/sublime/Packages/Groovy/findAll-{-e-__-}.sublime-snippet b/sublime/Packages/Groovy/findAll-{-e-__-}.sublime-snippet
new file mode 100644
index 0000000..a623315
--- /dev/null
+++ b/sublime/Packages/Groovy/findAll-{-e-__-}.sublime-snippet
@@ -0,0 +1,8 @@
+
+ )/}
+ $0
+}]]>
+ finda
+ source.groovy
+ findAll { … }
+
diff --git a/sublime/Packages/Groovy/for-in.sublime-snippet b/sublime/Packages/Groovy/for-in.sublime-snippet
new file mode 100644
index 0000000..22f6ac9
--- /dev/null
+++ b/sublime/Packages/Groovy/for-in.sublime-snippet
@@ -0,0 +1,8 @@
+
+
+ forin
+ source.groovy
+ for(… in …) { … }
+
diff --git a/sublime/Packages/Groovy/grep(-pattern-)-{-match-__-}.sublime-snippet b/sublime/Packages/Groovy/grep(-pattern-)-{-match-__-}.sublime-snippet
new file mode 100644
index 0000000..3dfb77e
--- /dev/null
+++ b/sublime/Packages/Groovy/grep(-pattern-)-{-match-__-}.sublime-snippet
@@ -0,0 +1,8 @@
+
+ )/}
+ $0
+}]]>
+ grep
+ source.groovy
+ grep(filter) { … }
+
diff --git a/sublime/Packages/Groovy/if-else.sublime-snippet b/sublime/Packages/Groovy/if-else.sublime-snippet
new file mode 100644
index 0000000..6e6d96a
--- /dev/null
+++ b/sublime/Packages/Groovy/if-else.sublime-snippet
@@ -0,0 +1,10 @@
+
+
+ ifel
+ source.groovy
+ if … else
+
diff --git a/sublime/Packages/Groovy/if.sublime-snippet b/sublime/Packages/Groovy/if.sublime-snippet
new file mode 100644
index 0000000..7a46cc0
--- /dev/null
+++ b/sublime/Packages/Groovy/if.sublime-snippet
@@ -0,0 +1,8 @@
+
+
+ if
+ source.groovy
+ if
+
diff --git a/sublime/Packages/Groovy/import.sublime-snippet b/sublime/Packages/Groovy/import.sublime-snippet
new file mode 100644
index 0000000..036716f
--- /dev/null
+++ b/sublime/Packages/Groovy/import.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ im
+ source.groovy
+ import
+
diff --git a/sublime/Packages/Groovy/mkdir.sublime-snippet b/sublime/Packages/Groovy/mkdir.sublime-snippet
new file mode 100644
index 0000000..e54ae02
--- /dev/null
+++ b/sublime/Packages/Groovy/mkdir.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ mkdir
+ source.groovy
+ mkdir(dir: …)
+
diff --git a/sublime/Packages/Groovy/new-File(__)_eachLine-{-__-}.sublime-snippet b/sublime/Packages/Groovy/new-File(__)_eachLine-{-__-}.sublime-snippet
new file mode 100644
index 0000000..1d2523b
--- /dev/null
+++ b/sublime/Packages/Groovy/new-File(__)_eachLine-{-__-}.sublime-snippet
@@ -0,0 +1,8 @@
+
+ )/}
+ $0
+}]]>
+ File
+ source.groovy
+ new File(…).eachLine { … }
+
diff --git a/sublime/Packages/Groovy/package.sublime-snippet b/sublime/Packages/Groovy/package.sublime-snippet
new file mode 100644
index 0000000..8fcf411
--- /dev/null
+++ b/sublime/Packages/Groovy/package.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ pa
+ source.groovy
+ package
+
diff --git a/sublime/Packages/Groovy/print.sublime-snippet b/sublime/Packages/Groovy/print.sublime-snippet
new file mode 100644
index 0000000..ef2e80c
--- /dev/null
+++ b/sublime/Packages/Groovy/print.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ p
+ source.groovy
+ print
+
diff --git a/sublime/Packages/Groovy/println.sublime-snippet b/sublime/Packages/Groovy/println.sublime-snippet
new file mode 100644
index 0000000..4f86af7
--- /dev/null
+++ b/sublime/Packages/Groovy/println.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ pl
+ source.groovy
+ println
+
diff --git a/sublime/Packages/Groovy/private-final-method.sublime-snippet b/sublime/Packages/Groovy/private-final-method.sublime-snippet
new file mode 100644
index 0000000..dfff5ed
--- /dev/null
+++ b/sublime/Packages/Groovy/private-final-method.sublime-snippet
@@ -0,0 +1,8 @@
+
+
+ pfm
+ source.groovy
+ private final method() { … }
+
diff --git a/sublime/Packages/Groovy/private-final-var.sublime-snippet b/sublime/Packages/Groovy/private-final-var.sublime-snippet
new file mode 100644
index 0000000..7df5f46
--- /dev/null
+++ b/sublime/Packages/Groovy/private-final-var.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ pfv
+ source.groovy
+ private final var
+
diff --git a/sublime/Packages/Groovy/private-method.sublime-snippet b/sublime/Packages/Groovy/private-method.sublime-snippet
new file mode 100644
index 0000000..03406b5
--- /dev/null
+++ b/sublime/Packages/Groovy/private-method.sublime-snippet
@@ -0,0 +1,8 @@
+
+
+ pm
+ source.groovy
+ private method() { … }
+
diff --git a/sublime/Packages/Groovy/private-static-final-String.sublime-snippet b/sublime/Packages/Groovy/private-static-final-String.sublime-snippet
new file mode 100644
index 0000000..03b3a17
--- /dev/null
+++ b/sublime/Packages/Groovy/private-static-final-String.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ psfv
+ source.groovy
+ private static final var
+
diff --git a/sublime/Packages/Groovy/private-static-final-method.sublime-snippet b/sublime/Packages/Groovy/private-static-final-method.sublime-snippet
new file mode 100644
index 0000000..6199a84
--- /dev/null
+++ b/sublime/Packages/Groovy/private-static-final-method.sublime-snippet
@@ -0,0 +1,8 @@
+
+
+ psfm
+ source.groovy
+ private static final method() { … }
+
diff --git a/sublime/Packages/Groovy/private-static-method.sublime-snippet b/sublime/Packages/Groovy/private-static-method.sublime-snippet
new file mode 100644
index 0000000..5a85cbb
--- /dev/null
+++ b/sublime/Packages/Groovy/private-static-method.sublime-snippet
@@ -0,0 +1,8 @@
+
+
+ psm
+ source.groovy
+ private static method() { … }
+
diff --git a/sublime/Packages/Groovy/private-static-var.sublime-snippet b/sublime/Packages/Groovy/private-static-var.sublime-snippet
new file mode 100644
index 0000000..a1a0293
--- /dev/null
+++ b/sublime/Packages/Groovy/private-static-var.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ psv
+ source.groovy
+ private static var
+
diff --git a/sublime/Packages/Groovy/private-var.sublime-snippet b/sublime/Packages/Groovy/private-var.sublime-snippet
new file mode 100644
index 0000000..8d1bad7
--- /dev/null
+++ b/sublime/Packages/Groovy/private-var.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ pv
+ source.groovy
+ private var
+
diff --git a/sublime/Packages/Groovy/replaceAll(regex)-{-match-__}.sublime-snippet b/sublime/Packages/Groovy/replaceAll(regex)-{-match-__}.sublime-snippet
new file mode 100644
index 0000000..697c0f8
--- /dev/null
+++ b/sublime/Packages/Groovy/replaceAll(regex)-{-match-__}.sublime-snippet
@@ -0,0 +1,8 @@
+
+ )/}
+ $0
+}]]>
+ replace
+ source.groovy
+ replaceAll(regex) { … }
+
diff --git a/sublime/Packages/Groovy/reverseEach-{-e-__-}.sublime-snippet b/sublime/Packages/Groovy/reverseEach-{-e-__-}.sublime-snippet
new file mode 100644
index 0000000..5eeb41b
--- /dev/null
+++ b/sublime/Packages/Groovy/reverseEach-{-e-__-}.sublime-snippet
@@ -0,0 +1,8 @@
+
+ )/}
+ $0
+}]]>
+ rea
+ source.groovy
+ reverseEach { … }
+
diff --git a/sublime/Packages/Groovy/run-after.sublime-snippet b/sublime/Packages/Groovy/run-after.sublime-snippet
new file mode 100644
index 0000000..9909550
--- /dev/null
+++ b/sublime/Packages/Groovy/run-after.sublime-snippet
@@ -0,0 +1,8 @@
+
+
+ runa
+ source.groovy
+ runAfter() { … }
+
diff --git a/sublime/Packages/Groovy/setUp().sublime-snippet b/sublime/Packages/Groovy/setUp().sublime-snippet
new file mode 100644
index 0000000..aa1d72c
--- /dev/null
+++ b/sublime/Packages/Groovy/setUp().sublime-snippet
@@ -0,0 +1,8 @@
+
+
+ setup
+ source.groovy
+ setUp() { … }
+
diff --git a/sublime/Packages/Groovy/shouldFail(__)-{-__-}.sublime-snippet b/sublime/Packages/Groovy/shouldFail(__)-{-__-}.sublime-snippet
new file mode 100644
index 0000000..c42167f
--- /dev/null
+++ b/sublime/Packages/Groovy/shouldFail(__)-{-__-}.sublime-snippet
@@ -0,0 +1,8 @@
+
+
+ sf
+ source.groovy
+ shouldFail { … }
+
diff --git a/sublime/Packages/Groovy/sleep(secs)-{-__-on-interrupt-}.sublime-snippet b/sublime/Packages/Groovy/sleep(secs)-{-__-on-interrupt-}.sublime-snippet
new file mode 100644
index 0000000..9122e3f
--- /dev/null
+++ b/sublime/Packages/Groovy/sleep(secs)-{-__-on-interrupt-}.sublime-snippet
@@ -0,0 +1,8 @@
+
+
+ sleep
+ source.groovy
+ sleep(secs) { … // on interrupt do }
+
diff --git a/sublime/Packages/Groovy/sleep(secs).sublime-snippet b/sublime/Packages/Groovy/sleep(secs).sublime-snippet
new file mode 100644
index 0000000..4fe6431
--- /dev/null
+++ b/sublime/Packages/Groovy/sleep(secs).sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ sleep
+ source.groovy
+ sleep(secs)
+
diff --git a/sublime/Packages/Groovy/sort-{-__-}.sublime-snippet b/sublime/Packages/Groovy/sort-{-__-}.sublime-snippet
new file mode 100644
index 0000000..a53ca16
--- /dev/null
+++ b/sublime/Packages/Groovy/sort-{-__-}.sublime-snippet
@@ -0,0 +1,8 @@
+
+
+ sort
+ source.groovy
+ sort { … }
+
diff --git a/sublime/Packages/Groovy/splitEachLine(separator)-{-line-__-}-copy.sublime-snippet b/sublime/Packages/Groovy/splitEachLine(separator)-{-line-__-}-copy.sublime-snippet
new file mode 100644
index 0000000..e030f80
--- /dev/null
+++ b/sublime/Packages/Groovy/splitEachLine(separator)-{-line-__-}-copy.sublime-snippet
@@ -0,0 +1,8 @@
+
+ )/}
+ $0
+}]]>
+ sel
+ source.groovy
+ splitEachLine(separator) { … }
+
diff --git a/sublime/Packages/Groovy/static-final-method.sublime-snippet b/sublime/Packages/Groovy/static-final-method.sublime-snippet
new file mode 100644
index 0000000..60412f8
--- /dev/null
+++ b/sublime/Packages/Groovy/static-final-method.sublime-snippet
@@ -0,0 +1,8 @@
+
+
+ sfm
+ source.groovy
+ static final method() { … }
+
diff --git a/sublime/Packages/Groovy/static-final-var.sublime-snippet b/sublime/Packages/Groovy/static-final-var.sublime-snippet
new file mode 100644
index 0000000..a54ba67
--- /dev/null
+++ b/sublime/Packages/Groovy/static-final-var.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ sfv
+ source.groovy
+ static final var
+
diff --git a/sublime/Packages/Groovy/static-main-method.sublime-snippet b/sublime/Packages/Groovy/static-main-method.sublime-snippet
new file mode 100644
index 0000000..564e3e4
--- /dev/null
+++ b/sublime/Packages/Groovy/static-main-method.sublime-snippet
@@ -0,0 +1,8 @@
+
+
+ main
+ source.groovy
+ static main() { … }
+
diff --git a/sublime/Packages/Groovy/static-method.sublime-snippet b/sublime/Packages/Groovy/static-method.sublime-snippet
new file mode 100644
index 0000000..ed7c5c7
--- /dev/null
+++ b/sublime/Packages/Groovy/static-method.sublime-snippet
@@ -0,0 +1,8 @@
+
+
+ sm
+ source.groovy
+ static method() { … }
+
diff --git a/sublime/Packages/Groovy/static-var.sublime-snippet b/sublime/Packages/Groovy/static-var.sublime-snippet
new file mode 100644
index 0000000..46b56fd
--- /dev/null
+++ b/sublime/Packages/Groovy/static-var.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ sv
+ source.groovy
+ static var
+
diff --git a/sublime/Packages/Groovy/step(to-amount)-{-n-__-}.sublime-snippet b/sublime/Packages/Groovy/step(to-amount)-{-n-__-}.sublime-snippet
new file mode 100644
index 0000000..beb45d3
--- /dev/null
+++ b/sublime/Packages/Groovy/step(to-amount)-{-n-__-}.sublime-snippet
@@ -0,0 +1,8 @@
+
+ )/}
+ $0
+}]]>
+ step
+ source.groovy
+ step(to,amount) { … }
+
diff --git a/sublime/Packages/Groovy/switch__case.sublime-snippet b/sublime/Packages/Groovy/switch__case.sublime-snippet
new file mode 100644
index 0000000..92edd63
--- /dev/null
+++ b/sublime/Packages/Groovy/switch__case.sublime-snippet
@@ -0,0 +1,10 @@
+
+
+ switch
+ source.groovy
+ switch … case
+
diff --git a/sublime/Packages/Groovy/switch__case__default.sublime-snippet b/sublime/Packages/Groovy/switch__case__default.sublime-snippet
new file mode 100644
index 0000000..57181ab
--- /dev/null
+++ b/sublime/Packages/Groovy/switch__case__default.sublime-snippet
@@ -0,0 +1,13 @@
+
+
+ switch
+ source.groovy
+ switch … case … default
+
diff --git a/sublime/Packages/Groovy/tearDown().sublime-snippet b/sublime/Packages/Groovy/tearDown().sublime-snippet
new file mode 100644
index 0000000..6f71842
--- /dev/null
+++ b/sublime/Packages/Groovy/tearDown().sublime-snippet
@@ -0,0 +1,8 @@
+
+
+ tear
+ source.groovy
+ tearDown() { … }
+
diff --git a/sublime/Packages/Groovy/test-case.sublime-snippet b/sublime/Packages/Groovy/test-case.sublime-snippet
new file mode 100644
index 0000000..733cf36
--- /dev/null
+++ b/sublime/Packages/Groovy/test-case.sublime-snippet
@@ -0,0 +1,8 @@
+
+
+ t
+ source.groovy
+ test()
+
diff --git a/sublime/Packages/Groovy/times-{-n-__-}.sublime-snippet b/sublime/Packages/Groovy/times-{-n-__-}.sublime-snippet
new file mode 100644
index 0000000..d94f5ad
--- /dev/null
+++ b/sublime/Packages/Groovy/times-{-n-__-}.sublime-snippet
@@ -0,0 +1,8 @@
+
+ )/}
+ $0
+}]]>
+ times
+ source.groovy
+ times { … }
+
diff --git a/sublime/Packages/Groovy/to-Array.sublime-snippet b/sublime/Packages/Groovy/to-Array.sublime-snippet
new file mode 100644
index 0000000..6f8a63d
--- /dev/null
+++ b/sublime/Packages/Groovy/to-Array.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ to
+ source.groovy
+ to Array
+
diff --git a/sublime/Packages/Groovy/to-BigDecimal.sublime-snippet b/sublime/Packages/Groovy/to-BigDecimal.sublime-snippet
new file mode 100644
index 0000000..4c67653
--- /dev/null
+++ b/sublime/Packages/Groovy/to-BigDecimal.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ to
+ source.groovy
+ to BigDecimal
+
diff --git a/sublime/Packages/Groovy/to-BigInteger.sublime-snippet b/sublime/Packages/Groovy/to-BigInteger.sublime-snippet
new file mode 100644
index 0000000..22ca6e3
--- /dev/null
+++ b/sublime/Packages/Groovy/to-BigInteger.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ to
+ source.groovy
+ to BigInteger
+
diff --git a/sublime/Packages/Groovy/to-Boolean.sublime-snippet b/sublime/Packages/Groovy/to-Boolean.sublime-snippet
new file mode 100644
index 0000000..dc7fda6
--- /dev/null
+++ b/sublime/Packages/Groovy/to-Boolean.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ to
+ source.groovy
+ to Boolean
+
diff --git a/sublime/Packages/Groovy/to-Character.sublime-snippet b/sublime/Packages/Groovy/to-Character.sublime-snippet
new file mode 100644
index 0000000..04ec98e
--- /dev/null
+++ b/sublime/Packages/Groovy/to-Character.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ to
+ source.groovy
+ to Character
+
diff --git a/sublime/Packages/Groovy/to-Double.sublime-snippet b/sublime/Packages/Groovy/to-Double.sublime-snippet
new file mode 100644
index 0000000..b50281f
--- /dev/null
+++ b/sublime/Packages/Groovy/to-Double.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ to
+ source.groovy
+ to Double
+
diff --git a/sublime/Packages/Groovy/to-Float.sublime-snippet b/sublime/Packages/Groovy/to-Float.sublime-snippet
new file mode 100644
index 0000000..08a5cea
--- /dev/null
+++ b/sublime/Packages/Groovy/to-Float.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ to
+ source.groovy
+ to Float
+
diff --git a/sublime/Packages/Groovy/to-Integer.sublime-snippet b/sublime/Packages/Groovy/to-Integer.sublime-snippet
new file mode 100644
index 0000000..13e639f
--- /dev/null
+++ b/sublime/Packages/Groovy/to-Integer.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ to
+ source.groovy
+ to Integer
+
diff --git a/sublime/Packages/Groovy/to-List.sublime-snippet b/sublime/Packages/Groovy/to-List.sublime-snippet
new file mode 100644
index 0000000..5c61ebc
--- /dev/null
+++ b/sublime/Packages/Groovy/to-List.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ to
+ source.groovy
+ to List
+
diff --git a/sublime/Packages/Groovy/to-String.sublime-snippet b/sublime/Packages/Groovy/to-String.sublime-snippet
new file mode 100644
index 0000000..26ce9ce
--- /dev/null
+++ b/sublime/Packages/Groovy/to-String.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ to
+ source.groovy
+ to String
+
diff --git a/sublime/Packages/Groovy/to-URI.sublime-snippet b/sublime/Packages/Groovy/to-URI.sublime-snippet
new file mode 100644
index 0000000..4fb2b0d
--- /dev/null
+++ b/sublime/Packages/Groovy/to-URI.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ to
+ source.groovy
+ to URI
+
diff --git a/sublime/Packages/Groovy/to-URL.sublime-snippet b/sublime/Packages/Groovy/to-URL.sublime-snippet
new file mode 100644
index 0000000..dcc7d35
--- /dev/null
+++ b/sublime/Packages/Groovy/to-URL.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ to
+ source.groovy
+ to URL
+
diff --git a/sublime/Packages/Groovy/try-__-catch__-finally.sublime-snippet b/sublime/Packages/Groovy/try-__-catch__-finally.sublime-snippet
new file mode 100644
index 0000000..767e544
--- /dev/null
+++ b/sublime/Packages/Groovy/try-__-catch__-finally.sublime-snippet
@@ -0,0 +1,16 @@
+
+
+ try
+ source.groovy
+ try … catch … finally
+
diff --git a/sublime/Packages/Groovy/try-__-catch__.sublime-snippet b/sublime/Packages/Groovy/try-__-catch__.sublime-snippet
new file mode 100644
index 0000000..fe2bd13
--- /dev/null
+++ b/sublime/Packages/Groovy/try-__-catch__.sublime-snippet
@@ -0,0 +1,13 @@
+
+
+ try
+ source.groovy
+ try … catch
+
diff --git a/sublime/Packages/Groovy/upto(num)-{-n-__-}.sublime-snippet b/sublime/Packages/Groovy/upto(num)-{-n-__-}.sublime-snippet
new file mode 100644
index 0000000..a84892f
--- /dev/null
+++ b/sublime/Packages/Groovy/upto(num)-{-n-__-}.sublime-snippet
@@ -0,0 +1,8 @@
+
+ )/}
+ $0
+}]]>
+ ut
+ source.groovy
+ upto() { … }
+
diff --git a/sublime/Packages/Groovy/var.sublime-snippet b/sublime/Packages/Groovy/var.sublime-snippet
new file mode 100644
index 0000000..58a2ea5
--- /dev/null
+++ b/sublime/Packages/Groovy/var.sublime-snippet
@@ -0,0 +1,6 @@
+
+
+ v
+ source.groovy
+ var
+
diff --git a/sublime/Packages/Groovy/while-___-{___}.sublime-snippet b/sublime/Packages/Groovy/while-___-{___}.sublime-snippet
new file mode 100644
index 0000000..24d7e78
--- /dev/null
+++ b/sublime/Packages/Groovy/while-___-{___}.sublime-snippet
@@ -0,0 +1,8 @@
+
+
+ while
+ source.groovy
+ while() { … }
+
diff --git a/sublime/Packages/Groovy/withInputStream-{-in-__-}.sublime-snippet b/sublime/Packages/Groovy/withInputStream-{-in-__-}.sublime-snippet
new file mode 100644
index 0000000..b632907
--- /dev/null
+++ b/sublime/Packages/Groovy/withInputStream-{-in-__-}.sublime-snippet
@@ -0,0 +1,8 @@
+
+ )/}
+ $0
+}]]>
+ with
+ source.groovy
+ withInputStream { … }
+
diff --git a/sublime/Packages/Groovy/withOutputStream-{-out-__-}.sublime-snippet b/sublime/Packages/Groovy/withOutputStream-{-out-__-}.sublime-snippet
new file mode 100644
index 0000000..9c39d94
--- /dev/null
+++ b/sublime/Packages/Groovy/withOutputStream-{-out-__-}.sublime-snippet
@@ -0,0 +1,8 @@
+
+ )/}
+ $0
+}]]>
+ with
+ source.groovy
+ withOutputStream { … }
+
diff --git a/sublime/Packages/Groovy/withPrintWriter-{-pw-__}.sublime-snippet b/sublime/Packages/Groovy/withPrintWriter-{-pw-__}.sublime-snippet
new file mode 100644
index 0000000..f06f2ea
--- /dev/null
+++ b/sublime/Packages/Groovy/withPrintWriter-{-pw-__}.sublime-snippet
@@ -0,0 +1,8 @@
+
+ )/}
+ $0
+}]]>
+ with
+ source.groovy
+ withPrintWriter { … }
+
diff --git a/sublime/Packages/Groovy/withReader-{-r-__-}.sublime-snippet b/sublime/Packages/Groovy/withReader-{-r-__-}.sublime-snippet
new file mode 100644
index 0000000..7172d94
--- /dev/null
+++ b/sublime/Packages/Groovy/withReader-{-r-__-}.sublime-snippet
@@ -0,0 +1,8 @@
+
+ )/}
+ $0
+}]]>
+ with
+ source.groovy
+ withReader { … }
+
diff --git a/sublime/Packages/Groovy/withStream-{-in-__-}.sublime-snippet b/sublime/Packages/Groovy/withStream-{-in-__-}.sublime-snippet
new file mode 100644
index 0000000..9e293bb
--- /dev/null
+++ b/sublime/Packages/Groovy/withStream-{-in-__-}.sublime-snippet
@@ -0,0 +1,8 @@
+
+ )/}
+ $0
+}]]>
+ with
+ source.groovy
+ withStream { … }
+
diff --git a/sublime/Packages/Groovy/withStreams-{-Socket-s-__}.sublime-snippet b/sublime/Packages/Groovy/withStreams-{-Socket-s-__}.sublime-snippet
new file mode 100644
index 0000000..4ae6143
--- /dev/null
+++ b/sublime/Packages/Groovy/withStreams-{-Socket-s-__}.sublime-snippet
@@ -0,0 +1,8 @@
+
+ )/}
+ $0
+}]]>
+ with
+ source.groovy
+ withStreams { … }
+
diff --git a/sublime/Packages/Groovy/withWriter(charset)-{-w-__-}.sublime-snippet b/sublime/Packages/Groovy/withWriter(charset)-{-w-__-}.sublime-snippet
new file mode 100644
index 0000000..f043169
--- /dev/null
+++ b/sublime/Packages/Groovy/withWriter(charset)-{-w-__-}.sublime-snippet
@@ -0,0 +1,8 @@
+
+ )/}
+ $0
+}]]>
+ with
+ source.groovy
+ withWriter(charset) { … }
+
diff --git a/sublime/Packages/Groovy/withWriter-{-w-__}.sublime-snippet b/sublime/Packages/Groovy/withWriter-{-w-__}.sublime-snippet
new file mode 100644
index 0000000..d0a0cdf
--- /dev/null
+++ b/sublime/Packages/Groovy/withWriter-{-w-__}.sublime-snippet
@@ -0,0 +1,8 @@
+
+ )/}
+ $0
+}]]>
+ with
+ source.groovy
+ withWriter { … }
+
diff --git a/sublime/Packages/Groovy/withWriterAppend(charset)-{-__-}.sublime-snippet b/sublime/Packages/Groovy/withWriterAppend(charset)-{-__-}.sublime-snippet
new file mode 100644
index 0000000..9ff78d3
--- /dev/null
+++ b/sublime/Packages/Groovy/withWriterAppend(charset)-{-__-}.sublime-snippet
@@ -0,0 +1,8 @@
+
+ )/}
+ $0
+}]]>
+ with
+ source.groovy
+ withWriterAppend(charset) { … }
+
diff --git a/sublime/Packages/HTML/Comments.tmPreferences b/sublime/Packages/HTML/Comments.tmPreferences
new file mode 100644
index 0000000..ad25a4e
--- /dev/null
+++ b/sublime/Packages/HTML/Comments.tmPreferences
@@ -0,0 +1,30 @@
+
+
+
+
+ name
+ Comments
+ scope
+ text.html
+ settings
+
+ shellVariables
+
+
+ name
+ TM_COMMENT_START
+ value
+ <!--
+
+
+ name
+ TM_COMMENT_END
+ value
+ -->
+
+
+
+ uuid
+ B79BDBCF-D0C9-468E-BE62-744074D7825F
+
+
diff --git a/sublime/Packages/HTML/Comments.tmPreferences.cache b/sublime/Packages/HTML/Comments.tmPreferences.cache
new file mode 100644
index 0000000..c0c1816
Binary files /dev/null and b/sublime/Packages/HTML/Comments.tmPreferences.cache differ
diff --git a/sublime/Packages/HTML/HTML.sublime-completions b/sublime/Packages/HTML/HTML.sublime-completions
new file mode 100644
index 0000000..a10ea2a
--- /dev/null
+++ b/sublime/Packages/HTML/HTML.sublime-completions
@@ -0,0 +1,197 @@
+{
+ "scope": "text.html - source - meta.tag, punctuation.definition.tag.begin",
+
+ "completions":
+ [
+ { "trigger": "a", "contents": "$2" },
+ { "trigger": "abbr", "contents": "$1" },
+ { "trigger": "acronym", "contents": "$1" },
+ { "trigger": "address", "contents": "$1" },
+ { "trigger": "applet", "contents": "" },
+ { "trigger": "area", "contents": "$1" },
+ { "trigger": "b", "contents": "$1" },
+ { "trigger": "base", "contents": "$1" },
+ { "trigger": "big", "contents": "$1" },
+ { "trigger": "blockquote", "contents": "$1
" },
+ { "trigger": "body", "contents": "$1" },
+ { "trigger": "button", "contents": "" },
+ { "trigger": "center", "contents": "$1" },
+ { "trigger": "caption", "contents": "$1" },
+ { "trigger": "cdata", "contents": "$1" },
+ { "trigger": "cite", "contents": "$1" },
+ { "trigger": "col", "contents": "$1" },
+ { "trigger": "colgroup", "contents": "$1" },
+ { "trigger": "code", "contents": "$1" },
+ { "trigger": "div", "contents": "$1
" },
+ { "trigger": "dd", "contents": "$1" },
+ { "trigger": "del", "contents": "$1" },
+ { "trigger": "dfn", "contents": "$1" },
+ { "trigger": "dl", "contents": "$1
" },
+ { "trigger": "dt", "contents": "$1" },
+ { "trigger": "em", "contents": "$1" },
+ { "trigger": "fieldset", "contents": "" },
+ { "trigger": "font", "contents": "$1" },
+ { "trigger": "form", "contents": "" },
+ { "trigger": "frame", "contents": "$1" },
+ { "trigger": "frameset", "contents": "" },
+ { "trigger": "head", "contents": "$1" },
+ { "trigger": "h1", "contents": "$1
" },
+ { "trigger": "h2", "contents": "$1
" },
+ { "trigger": "h3", "contents": "$1
" },
+ { "trigger": "h4", "contents": "$1
" },
+ { "trigger": "h5", "contents": "$1
" },
+ { "trigger": "h6", "contents": "$1
" },
+ { "trigger": "i", "contents": "$1" },
+ { "trigger": "iframe", "contents": "" },
+ { "trigger": "ins", "contents": "$1" },
+ { "trigger": "kbd", "contents": "$1" },
+ { "trigger": "li", "contents": "$1" },
+ { "trigger": "label", "contents": "" },
+ { "trigger": "legend", "contents": "" },
+ { "trigger": "link", "contents": "" },
+ { "trigger": "map", "contents": "" },
+ { "trigger": "noframes", "contents": "$1" },
+ { "trigger": "object", "contents": "" },
+ { "trigger": "ol", "contents": "$1
" },
+ { "trigger": "optgroup", "contents": "" },
+ { "trigger": "option", "contents": "" },
+ { "trigger": "p", "contents": "$1
" },
+ { "trigger": "pre", "contents": "$1
" },
+ { "trigger": "span", "contents": "$1" },
+ { "trigger": "samp", "contents": "$1" },
+ { "trigger": "script", "contents": "" },
+ { "trigger": "style", "contents": "" },
+ { "trigger": "select", "contents": "" },
+ { "trigger": "small", "contents": "$1" },
+ { "trigger": "strong", "contents": "$1" },
+ { "trigger": "sub", "contents": "$1" },
+ { "trigger": "sup", "contents": "$1" },
+ { "trigger": "table", "contents": "" },
+ { "trigger": "tbody", "contents": "$1" },
+ { "trigger": "td", "contents": "$1 | " },
+ { "trigger": "textarea", "contents": "" },
+ { "trigger": "tfoot", "contents": "$1" },
+ { "trigger": "th", "contents": "$1 | " },
+ { "trigger": "thead", "contents": "$1" },
+ { "trigger": "title", "contents": "$1" },
+ { "trigger": "tr", "contents": "$1
" },
+ { "trigger": "tt", "contents": "$1" },
+ { "trigger": "u", "contents": "$1" },
+ { "trigger": "ul", "contents": "" },
+ { "trigger": "var", "contents": "$1" },
+
+ { "trigger": "br", "contents": "
" },
+ { "trigger": "embed", "contents": "