diff --git a/ASP/ASP.tmLanguage b/ASP/ASP.tmLanguage new file mode 100644 index 0000000..b519757 --- /dev/null +++ b/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/ASP/ASP.tmLanguage.cache b/ASP/ASP.tmLanguage.cache new file mode 100644 index 0000000..36f24d8 Binary files /dev/null and b/ASP/ASP.tmLanguage.cache differ diff --git a/ASP/HTML-ASP.tmLanguage b/ASP/HTML-ASP.tmLanguage new file mode 100644 index 0000000..b2b8aa8 --- /dev/null +++ b/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/ASP/HTML-ASP.tmLanguage.cache b/ASP/HTML-ASP.tmLanguage.cache new file mode 100644 index 0000000..1468442 Binary files /dev/null and b/ASP/HTML-ASP.tmLanguage.cache differ diff --git a/ActionScript/ActionScript.tmLanguage b/ActionScript/ActionScript.tmLanguage new file mode 100644 index 0000000..a407771 --- /dev/null +++ b/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/ActionScript/ActionScript.tmLanguage.cache b/ActionScript/ActionScript.tmLanguage.cache new file mode 100644 index 0000000..2362757 Binary files /dev/null and b/ActionScript/ActionScript.tmLanguage.cache differ diff --git a/AppleScript/AppleScript.tmLanguage b/AppleScript/AppleScript.tmLanguage new file mode 100644 index 0000000..cc8123d --- /dev/null +++ b/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/AppleScript/AppleScript.tmLanguage.cache b/AppleScript/AppleScript.tmLanguage.cache new file mode 100644 index 0000000..f8402af Binary files /dev/null and b/AppleScript/AppleScript.tmLanguage.cache differ diff --git a/Batch File/Batch File.tmLanguage b/Batch File/Batch File.tmLanguage new file mode 100644 index 0000000..2a7752e --- /dev/null +++ b/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/Batch File/Batch File.tmLanguage.cache b/Batch File/Batch File.tmLanguage.cache new file mode 100644 index 0000000..1f6790a Binary files /dev/null and b/Batch File/Batch File.tmLanguage.cache differ diff --git a/C#/Build.tmLanguage b/C#/Build.tmLanguage new file mode 100644 index 0000000..55191b4 --- /dev/null +++ b/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/C#/Build.tmLanguage.cache b/C#/Build.tmLanguage.cache new file mode 100644 index 0000000..e59ca49 Binary files /dev/null and b/C#/Build.tmLanguage.cache differ diff --git a/C#/C#.tmLanguage b/C#/C#.tmLanguage new file mode 100644 index 0000000..4d6bd9b --- /dev/null +++ b/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/C#/C#.tmLanguage.cache b/C#/C#.tmLanguage.cache new file mode 100644 index 0000000..20c4f2f Binary files /dev/null and b/C#/C#.tmLanguage.cache differ diff --git a/C++/#ifndef-#define-#endif.sublime-snippet b/C++/#ifndef-#define-#endif.sublime-snippet new file mode 100644 index 0000000..bdf483b --- /dev/null +++ b/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/C++/#include-(inc angle).sublime-snippet b/C++/#include-(inc angle).sublime-snippet new file mode 100644 index 0000000..27b9b75 --- /dev/null +++ b/C++/#include-(inc angle).sublime-snippet @@ -0,0 +1,6 @@ + + #include <…> + ]]> + Inc + source.c, source.objc, source.c++, source.objc++ + diff --git a/C++/#include-(inc).sublime-snippet b/C++/#include-(inc).sublime-snippet new file mode 100644 index 0000000..098dde9 --- /dev/null +++ b/C++/#include-(inc).sublime-snippet @@ -0,0 +1,6 @@ + + #include "…" + + inc + source.c, source.objc, source.c++, source.objc++ + diff --git a/C++/$1.begin()-$1.end()-(beginend).sublime-snippet b/C++/$1.begin()-$1.end()-(beginend).sublime-snippet new file mode 100644 index 0000000..a5bb6c3 --- /dev/null +++ b/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/C++/010-main()-(main).sublime-snippet b/C++/010-main()-(main).sublime-snippet new file mode 100644 index 0000000..511c95c --- /dev/null +++ b/C++/010-main()-(main).sublime-snippet @@ -0,0 +1,10 @@ + + main() + + main + source.c, source.objc, source.c++, source.objc++ + diff --git a/C++/030-for-int-loop-(fori).sublime-snippet b/C++/030-for-int-loop-(fori).sublime-snippet new file mode 100644 index 0000000..30a674b --- /dev/null +++ b/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/C++/C++.sublime-build b/C++/C++.sublime-build new file mode 100644 index 0000000..f4f7d4f --- /dev/null +++ b/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/C++/C++.sublime-settings b/C++/C++.sublime-settings new file mode 100644 index 0000000..d78414e --- /dev/null +++ b/C++/C++.sublime-settings @@ -0,0 +1,3 @@ +{ + "extensions": ["cpp", "cc", "cxx", "c++", "h", "hpp", "hxx", "h++", "inl", "ipp"] +} diff --git a/C++/C++.tmLanguage b/C++/C++.tmLanguage new file mode 100644 index 0000000..e6647c1 --- /dev/null +++ b/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/C++/C++.tmLanguage.cache b/C++/C++.tmLanguage.cache new file mode 100644 index 0000000..0f736c2 Binary files /dev/null and b/C++/C++.tmLanguage.cache differ diff --git a/C++/C.tmLanguage b/C++/C.tmLanguage new file mode 100644 index 0000000..925a864 --- /dev/null +++ b/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/C++/C.tmLanguage.cache b/C++/C.tmLanguage.cache new file mode 100644 index 0000000..7be32fd Binary files /dev/null and b/C++/C.tmLanguage.cache differ diff --git a/C++/Comments (C++).tmPreferences b/C++/Comments (C++).tmPreferences new file mode 100644 index 0000000..c0a43b9 --- /dev/null +++ b/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/C++/Comments (C++).tmPreferences.cache b/C++/Comments (C++).tmPreferences.cache new file mode 100644 index 0000000..e7560eb Binary files /dev/null and b/C++/Comments (C++).tmPreferences.cache differ diff --git a/C++/Completion Rules.tmPreferences b/C++/Completion Rules.tmPreferences new file mode 100644 index 0000000..1e9bb1e --- /dev/null +++ b/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/C++/Completion Rules.tmPreferences.cache b/C++/Completion Rules.tmPreferences.cache new file mode 100644 index 0000000..8cda632 Binary files /dev/null and b/C++/Completion Rules.tmPreferences.cache differ diff --git a/C++/Enumeration.sublime-snippet b/C++/Enumeration.sublime-snippet new file mode 100644 index 0000000..c5357ec --- /dev/null +++ b/C++/Enumeration.sublime-snippet @@ -0,0 +1,6 @@ + + Enumeration + + enum + source.c++, source.objc++ + diff --git a/C++/Indentation Rules.tmPreferences b/C++/Indentation Rules.tmPreferences new file mode 100644 index 0000000..3543cd3 --- /dev/null +++ b/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/C++/Indentation Rules.tmPreferences.cache b/C++/Indentation Rules.tmPreferences.cache new file mode 100644 index 0000000..1011e1a Binary files /dev/null and b/C++/Indentation Rules.tmPreferences.cache differ diff --git a/C++/Symbol List - Indent Class Methods.tmPreferences b/C++/Symbol List - Indent Class Methods.tmPreferences new file mode 100644 index 0000000..45f2a4c --- /dev/null +++ b/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/C++/Symbol List - Indent Class Methods.tmPreferences.cache b/C++/Symbol List - Indent Class Methods.tmPreferences.cache new file mode 100644 index 0000000..c1d1400 Binary files /dev/null and b/C++/Symbol List - Indent Class Methods.tmPreferences.cache differ diff --git a/C++/Symbol List - Prefix Banner Items.tmPreferences b/C++/Symbol List - Prefix Banner Items.tmPreferences new file mode 100644 index 0000000..9fef596 --- /dev/null +++ b/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/C++/Symbol List - Prefix Banner Items.tmPreferences.cache b/C++/Symbol List - Prefix Banner Items.tmPreferences.cache new file mode 100644 index 0000000..9d8799e Binary files /dev/null and b/C++/Symbol List - Prefix Banner Items.tmPreferences.cache differ diff --git a/C++/Typedef.sublime-snippet b/C++/Typedef.sublime-snippet new file mode 100644 index 0000000..351bea3 --- /dev/null +++ b/C++/Typedef.sublime-snippet @@ -0,0 +1,6 @@ + + Typedef + + td + source.c, source.objc, source.c++, source.objc++ + diff --git a/C++/class-..-(class).sublime-snippet b/C++/class-..-(class).sublime-snippet new file mode 100644 index 0000000..64a09f2 --- /dev/null +++ b/C++/class-..-(class).sublime-snippet @@ -0,0 +1,13 @@ + + Class + + class + source.c++, source.objc++ + diff --git a/C++/do...while-loop-(do).sublime-snippet b/C++/do...while-loop-(do).sublime-snippet new file mode 100644 index 0000000..01dddb4 --- /dev/null +++ b/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/C++/forv.sublime-snippet b/C++/forv.sublime-snippet new file mode 100644 index 0000000..4a15023 --- /dev/null +++ b/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/C++/fprintf.sublime-snippet b/C++/fprintf.sublime-snippet new file mode 100644 index 0000000..983dee0 --- /dev/null +++ b/C++/fprintf.sublime-snippet @@ -0,0 +1,6 @@ + + fprintf … + + fprintf + source.c, source.objc, source.c++, source.objc++ + diff --git a/C++/if-..-(if).sublime-snippet b/C++/if-..-(if).sublime-snippet new file mode 100644 index 0000000..18830ee --- /dev/null +++ b/C++/if-..-(if).sublime-snippet @@ -0,0 +1,9 @@ + + If Condition + + if + source.c, source.objc, source.c++, source.objc++ + diff --git a/C++/namespace-..-(namespace).sublime-snippet b/C++/namespace-..-(namespace).sublime-snippet new file mode 100644 index 0000000..2029803 --- /dev/null +++ b/C++/namespace-..-(namespace).sublime-snippet @@ -0,0 +1,10 @@ + + Namespace + + ns + source.c++, source.objc++ + diff --git a/C++/printf-..-(printf).sublime-snippet b/C++/printf-..-(printf).sublime-snippet new file mode 100644 index 0000000..5f8bb28 --- /dev/null +++ b/C++/printf-..-(printf).sublime-snippet @@ -0,0 +1,6 @@ + + printf … + + printf + source.c, source.objc, source.c++, source.objc++ + diff --git a/C++/read-file-(readF).sublime-snippet b/C++/read-file-(readF).sublime-snippet new file mode 100644 index 0000000..9023c5a --- /dev/null +++ b/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/C++/std-map-(map).sublime-snippet b/C++/std-map-(map).sublime-snippet new file mode 100644 index 0000000..3848a74 --- /dev/null +++ b/C++/std-map-(map).sublime-snippet @@ -0,0 +1,6 @@ + + std::map + map$0;]]> + map + source.c++, source.objc++ + diff --git a/C++/std-vector-(v).sublime-snippet b/C++/std-vector-(v).sublime-snippet new file mode 100644 index 0000000..ff9663f --- /dev/null +++ b/C++/std-vector-(v).sublime-snippet @@ -0,0 +1,6 @@ + + std::vector + v$0;]]> + vector + source.c++, source.objc++ + diff --git a/C++/struct.sublime-snippet b/C++/struct.sublime-snippet new file mode 100644 index 0000000..8ead93b --- /dev/null +++ b/C++/struct.sublime-snippet @@ -0,0 +1,9 @@ + + Struct + + struct + source.c, source.objc, source.c++, source.objc++ + diff --git a/C++/template-typename-..-(template).sublime-snippet b/C++/template-typename-..-(template).sublime-snippet new file mode 100644 index 0000000..ed28d46 --- /dev/null +++ b/C++/template-typename-..-(template).sublime-snippet @@ -0,0 +1,6 @@ + + template <typename ${1:_InputIter}> + ]]> + tp + source.c++, source.objc++ + diff --git a/CSS/CSS.tmLanguage b/CSS/CSS.tmLanguage new file mode 100644 index 0000000..926773c --- /dev/null +++ b/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/CSS/CSS.tmLanguage.cache b/CSS/CSS.tmLanguage.cache new file mode 100644 index 0000000..2b0351b Binary files /dev/null and b/CSS/CSS.tmLanguage.cache differ diff --git a/CSS/Comments.tmPreferences b/CSS/Comments.tmPreferences new file mode 100644 index 0000000..6de289f --- /dev/null +++ b/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/CSS/Comments.tmPreferences.cache b/CSS/Comments.tmPreferences.cache new file mode 100644 index 0000000..a427449 Binary files /dev/null and b/CSS/Comments.tmPreferences.cache differ diff --git a/CSS/Default (Linux).sublime-keymap b/CSS/Default (Linux).sublime-keymap new file mode 100644 index 0000000..7c840ea --- /dev/null +++ b/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/CSS/Default (OSX).sublime-keymap b/CSS/Default (OSX).sublime-keymap new file mode 100644 index 0000000..7c840ea --- /dev/null +++ b/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/CSS/Default (Windows).sublime-keymap b/CSS/Default (Windows).sublime-keymap new file mode 100644 index 0000000..7c840ea --- /dev/null +++ b/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/CSS/Symbol List Group.tmPreferences b/CSS/Symbol List Group.tmPreferences new file mode 100644 index 0000000..82ef163 --- /dev/null +++ b/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/CSS/Symbol List Group.tmPreferences.cache b/CSS/Symbol List Group.tmPreferences.cache new file mode 100644 index 0000000..aa5b5c7 Binary files /dev/null and b/CSS/Symbol List Group.tmPreferences.cache differ diff --git a/CSS/Symbol List.tmPreferences b/CSS/Symbol List.tmPreferences new file mode 100644 index 0000000..3aa3c7f --- /dev/null +++ b/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/CSS/Symbol List.tmPreferences.cache b/CSS/Symbol List.tmPreferences.cache new file mode 100644 index 0000000..8433e12 Binary files /dev/null and b/CSS/Symbol List.tmPreferences.cache differ diff --git a/CSS/css_completions.py b/CSS/css_completions.py new file mode 100644 index 0000000..94bc668 --- /dev/null +++ b/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/CSS/css_completions.pyc b/CSS/css_completions.pyc new file mode 100644 index 0000000..5cb4634 Binary files /dev/null and b/CSS/css_completions.pyc differ diff --git a/Clojure/Clojure.tmLanguage b/Clojure/Clojure.tmLanguage new file mode 100644 index 0000000..8cb89e7 --- /dev/null +++ b/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/Clojure/Clojure.tmLanguage.cache b/Clojure/Clojure.tmLanguage.cache new file mode 100644 index 0000000..ef0def6 Binary files /dev/null and b/Clojure/Clojure.tmLanguage.cache differ diff --git a/Clojure/Comment.tmPreferences b/Clojure/Comment.tmPreferences new file mode 100644 index 0000000..0623946 --- /dev/null +++ b/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/Clojure/Comment.tmPreferences.cache b/Clojure/Comment.tmPreferences.cache new file mode 100644 index 0000000..cd17b91 Binary files /dev/null and b/Clojure/Comment.tmPreferences.cache differ diff --git a/Clojure/Symbol List.tmPreferences b/Clojure/Symbol List.tmPreferences new file mode 100644 index 0000000..0b69f1c --- /dev/null +++ b/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/Clojure/Symbol List.tmPreferences.cache b/Clojure/Symbol List.tmPreferences.cache new file mode 100644 index 0000000..768595b Binary files /dev/null and b/Clojure/Symbol List.tmPreferences.cache differ diff --git a/Color Scheme - Default/All Hallow's Eve.tmTheme b/Color Scheme - Default/All Hallow's Eve.tmTheme new file mode 100644 index 0000000..47a6797 --- /dev/null +++ b/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/Color Scheme - Default/All Hallow's Eve.tmTheme.cache b/Color Scheme - Default/All Hallow's Eve.tmTheme.cache new file mode 100644 index 0000000..abb927d Binary files /dev/null and b/Color Scheme - Default/All Hallow's Eve.tmTheme.cache differ diff --git a/Color Scheme - Default/Amy.tmTheme b/Color Scheme - Default/Amy.tmTheme new file mode 100644 index 0000000..b3258c4 --- /dev/null +++ b/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/Color Scheme - Default/Amy.tmTheme.cache b/Color Scheme - Default/Amy.tmTheme.cache new file mode 100644 index 0000000..0d2a4a7 Binary files /dev/null and b/Color Scheme - Default/Amy.tmTheme.cache differ diff --git a/Color Scheme - Default/Blackboard.tmTheme b/Color Scheme - Default/Blackboard.tmTheme new file mode 100644 index 0000000..18bb72e --- /dev/null +++ b/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/Color Scheme - Default/Blackboard.tmTheme.cache b/Color Scheme - Default/Blackboard.tmTheme.cache new file mode 100644 index 0000000..00a892e Binary files /dev/null and b/Color Scheme - Default/Blackboard.tmTheme.cache differ diff --git a/Color Scheme - Default/Cobalt.tmTheme b/Color Scheme - Default/Cobalt.tmTheme new file mode 100644 index 0000000..9790358 --- /dev/null +++ b/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/Color Scheme - Default/Cobalt.tmTheme.cache b/Color Scheme - Default/Cobalt.tmTheme.cache new file mode 100644 index 0000000..564dd66 Binary files /dev/null and b/Color Scheme - Default/Cobalt.tmTheme.cache differ diff --git a/Color Scheme - Default/Dawn.tmTheme b/Color Scheme - Default/Dawn.tmTheme new file mode 100644 index 0000000..a09a3bf --- /dev/null +++ b/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/Color Scheme - Default/Dawn.tmTheme.cache b/Color Scheme - Default/Dawn.tmTheme.cache new file mode 100644 index 0000000..178612f Binary files /dev/null and b/Color Scheme - Default/Dawn.tmTheme.cache differ diff --git a/Color Scheme - Default/Eiffel.tmTheme b/Color Scheme - Default/Eiffel.tmTheme new file mode 100644 index 0000000..1e8160c --- /dev/null +++ b/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/Color Scheme - Default/Espresso Libre.tmTheme b/Color Scheme - Default/Espresso Libre.tmTheme new file mode 100644 index 0000000..2ccae64 --- /dev/null +++ b/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/Color Scheme - Default/IDLE.tmTheme b/Color Scheme - Default/IDLE.tmTheme new file mode 100644 index 0000000..704296f --- /dev/null +++ b/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/Color Scheme - Default/LAZY.tmTheme b/Color Scheme - Default/LAZY.tmTheme new file mode 100644 index 0000000..09ff511 --- /dev/null +++ b/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/Color Scheme - Default/Mac Classic.tmTheme b/Color Scheme - Default/Mac Classic.tmTheme new file mode 100644 index 0000000..4b789df --- /dev/null +++ b/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/Color Scheme - Default/Mac Classic.tmTheme.cache b/Color Scheme - Default/Mac Classic.tmTheme.cache new file mode 100644 index 0000000..0645345 Binary files /dev/null and b/Color Scheme - Default/Mac Classic.tmTheme.cache differ diff --git a/Color Scheme - Default/MagicWB (Amiga).tmTheme b/Color Scheme - Default/MagicWB (Amiga).tmTheme new file mode 100644 index 0000000..7897886 --- /dev/null +++ b/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/Color Scheme - Default/Monokai Bright.tmTheme b/Color Scheme - Default/Monokai Bright.tmTheme new file mode 100644 index 0000000..3b53e4e --- /dev/null +++ b/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/Color Scheme - Default/Monokai.tmTheme b/Color Scheme - Default/Monokai.tmTheme new file mode 100644 index 0000000..c179cbe --- /dev/null +++ b/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/Color Scheme - Default/Monokai.tmTheme.cache b/Color Scheme - Default/Monokai.tmTheme.cache new file mode 100644 index 0000000..ee41eb2 Binary files /dev/null and b/Color Scheme - Default/Monokai.tmTheme.cache differ diff --git a/Color Scheme - Default/Pastels on Dark.tmTheme b/Color Scheme - Default/Pastels on Dark.tmTheme new file mode 100644 index 0000000..e392860 --- /dev/null +++ b/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/Color Scheme - Default/Slush & Poppies.tmTheme b/Color Scheme - Default/Slush & Poppies.tmTheme new file mode 100644 index 0000000..02ecbcb --- /dev/null +++ b/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/Color Scheme - Default/Solarized (Dark).tmTheme b/Color Scheme - Default/Solarized (Dark).tmTheme new file mode 100644 index 0000000..51aa484 --- /dev/null +++ b/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/Color Scheme - Default/Solarized (Light).tmTheme b/Color Scheme - Default/Solarized (Light).tmTheme new file mode 100644 index 0000000..a34bef0 --- /dev/null +++ b/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/Color Scheme - Default/Solarized (Light).tmTheme.cache b/Color Scheme - Default/Solarized (Light).tmTheme.cache new file mode 100644 index 0000000..decab86 Binary files /dev/null and b/Color Scheme - Default/Solarized (Light).tmTheme.cache differ diff --git a/Color Scheme - Default/SpaceCadet.tmTheme b/Color Scheme - Default/SpaceCadet.tmTheme new file mode 100644 index 0000000..156f43d --- /dev/null +++ b/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/Color Scheme - Default/Sunburst.tmTheme b/Color Scheme - Default/Sunburst.tmTheme new file mode 100644 index 0000000..c48337b --- /dev/null +++ b/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/Color Scheme - Default/Twilight.tmTheme b/Color Scheme - Default/Twilight.tmTheme new file mode 100644 index 0000000..a83f7ec --- /dev/null +++ b/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/Color Scheme - Default/Zenburnesque.tmTheme b/Color Scheme - Default/Zenburnesque.tmTheme new file mode 100644 index 0000000..8631f98 --- /dev/null +++ b/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/Color Scheme - Default/iPlastic.tmTheme b/Color Scheme - Default/iPlastic.tmTheme new file mode 100644 index 0000000..7253df6 --- /dev/null +++ b/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/D/Comments.tmPreferences b/D/Comments.tmPreferences new file mode 100644 index 0000000..768d055 --- /dev/null +++ b/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/D/Comments.tmPreferences.cache b/D/Comments.tmPreferences.cache new file mode 100644 index 0000000..1cf889a Binary files /dev/null and b/D/Comments.tmPreferences.cache differ diff --git a/D/D.sublime-build b/D/D.sublime-build new file mode 100644 index 0000000..19f3835 --- /dev/null +++ b/D/D.sublime-build @@ -0,0 +1,5 @@ +{ + "cmd": ["dmd", "$file"], + "file_regex": "^(.*?)\\(([0-9]+)\\)", + "selector": "source.d" +} diff --git a/D/D.tmLanguage b/D/D.tmLanguage new file mode 100644 index 0000000..c7233a2 --- /dev/null +++ b/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/D/D.tmLanguage.cache b/D/D.tmLanguage.cache new file mode 100644 index 0000000..b7c7618 Binary files /dev/null and b/D/D.tmLanguage.cache differ diff --git a/D/Indentation Rules.tmPreferences b/D/Indentation Rules.tmPreferences new file mode 100644 index 0000000..38675e4 --- /dev/null +++ b/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/D/Indentation Rules.tmPreferences.cache b/D/Indentation Rules.tmPreferences.cache new file mode 100644 index 0000000..353f5f7 Binary files /dev/null and b/D/Indentation Rules.tmPreferences.cache differ diff --git a/D/Symbol List-Method-Constructor.tmPreferences b/D/Symbol List-Method-Constructor.tmPreferences new file mode 100644 index 0000000..c4e34d6 --- /dev/null +++ b/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/D/Symbol List-Method-Constructor.tmPreferences.cache b/D/Symbol List-Method-Constructor.tmPreferences.cache new file mode 100644 index 0000000..73b4f15 Binary files /dev/null and b/D/Symbol List-Method-Constructor.tmPreferences.cache differ diff --git a/D/class.sublime-snippet b/D/class.sublime-snippet new file mode 100644 index 0000000..0e09406 --- /dev/null +++ b/D/class.sublime-snippet @@ -0,0 +1,11 @@ + + + class + source.d + class … { … } + diff --git a/D/constant.sublime-snippet b/D/constant.sublime-snippet new file mode 100644 index 0000000..54e771d --- /dev/null +++ b/D/constant.sublime-snippet @@ -0,0 +1,6 @@ + + + ps + source.d + constant (private static final) + diff --git a/D/debug.sublime-snippet b/D/debug.sublime-snippet new file mode 100644 index 0000000..3080cda --- /dev/null +++ b/D/debug.sublime-snippet @@ -0,0 +1,8 @@ + + + debug + source.d + debug { … } + diff --git a/D/debugm.sublime-snippet b/D/debugm.sublime-snippet new file mode 100644 index 0000000..999e21b --- /dev/null +++ b/D/debugm.sublime-snippet @@ -0,0 +1,8 @@ + + + debugm + source.d + debug(module) { … } + diff --git a/D/enum.sublime-snippet b/D/enum.sublime-snippet new file mode 100644 index 0000000..2881392 --- /dev/null +++ b/D/enum.sublime-snippet @@ -0,0 +1,6 @@ + + + en + source.d + enum … { … } + diff --git a/D/err-format.sublime-snippet b/D/err-format.sublime-snippet new file mode 100644 index 0000000..5fa0b09 --- /dev/null +++ b/D/err-format.sublime-snippet @@ -0,0 +1,6 @@ + + + errf + source.d + Stderr(format, …) + diff --git a/D/err.sublime-snippet b/D/err.sublime-snippet new file mode 100644 index 0000000..0d14ec4 --- /dev/null +++ b/D/err.sublime-snippet @@ -0,0 +1,6 @@ + + + err + source.d + Stderr(…) + diff --git a/D/foreach-reverse.sublime-snippet b/D/foreach-reverse.sublime-snippet new file mode 100644 index 0000000..c1540f6 --- /dev/null +++ b/D/foreach-reverse.sublime-snippet @@ -0,0 +1,8 @@ + + + fer + source.d + foreach_reverse(e; …) { … } + diff --git a/D/foreach.sublime-snippet b/D/foreach.sublime-snippet new file mode 100644 index 0000000..fb27ed6 --- /dev/null +++ b/D/foreach.sublime-snippet @@ -0,0 +1,8 @@ + + + fe + source.d + foreach(e; …) { … } + diff --git a/D/if-else.sublime-snippet b/D/if-else.sublime-snippet new file mode 100644 index 0000000..35c46d2 --- /dev/null +++ b/D/if-else.sublime-snippet @@ -0,0 +1,11 @@ + + + ife + source.d + if … else + diff --git a/D/if.sublime-snippet b/D/if.sublime-snippet new file mode 100644 index 0000000..d4ae982 --- /dev/null +++ b/D/if.sublime-snippet @@ -0,0 +1,8 @@ + + + if + source.d + if … + diff --git a/D/import.sublime-snippet b/D/import.sublime-snippet new file mode 100644 index 0000000..af96748 --- /dev/null +++ b/D/import.sublime-snippet @@ -0,0 +1,6 @@ + + + im + source.d + import … + diff --git a/D/log-error.sublime-snippet b/D/log-error.sublime-snippet new file mode 100644 index 0000000..11259e1 --- /dev/null +++ b/D/log-error.sublime-snippet @@ -0,0 +1,6 @@ + + + loge + source.d + log.error(…) + diff --git a/D/log-fatal.sublime-snippet b/D/log-fatal.sublime-snippet new file mode 100644 index 0000000..4a07803 --- /dev/null +++ b/D/log-fatal.sublime-snippet @@ -0,0 +1,6 @@ + + + logf + source.d + log.fatal(…) + diff --git a/D/log-info.sublime-snippet b/D/log-info.sublime-snippet new file mode 100644 index 0000000..99c8604 --- /dev/null +++ b/D/log-info.sublime-snippet @@ -0,0 +1,6 @@ + + + log + source.d + log.info(…) + diff --git a/D/log-trace.sublime-snippet b/D/log-trace.sublime-snippet new file mode 100644 index 0000000..aecb1df --- /dev/null +++ b/D/log-trace.sublime-snippet @@ -0,0 +1,6 @@ + + + logt + source.d + log.trace(…) + diff --git a/D/log-warn.sublime-snippet b/D/log-warn.sublime-snippet new file mode 100644 index 0000000..facb866 --- /dev/null +++ b/D/log-warn.sublime-snippet @@ -0,0 +1,6 @@ + + + logw + source.d + log.warn(…) + diff --git a/D/logger.sublime-snippet b/D/logger.sublime-snippet new file mode 100644 index 0000000..718f184 --- /dev/null +++ b/D/logger.sublime-snippet @@ -0,0 +1,12 @@ + + + logger + source.d + Logger for Module + diff --git a/D/main-with-args.sublime-snippet b/D/main-with-args.sublime-snippet new file mode 100644 index 0000000..5e3c44a --- /dev/null +++ b/D/main-with-args.sublime-snippet @@ -0,0 +1,9 @@ + + + maina + source.d + int main(char[][] args) { … } + diff --git a/D/main.sublime-snippet b/D/main.sublime-snippet new file mode 100644 index 0000000..d0a6e06 --- /dev/null +++ b/D/main.sublime-snippet @@ -0,0 +1,8 @@ + + + main + source.d + void main() { … } + diff --git a/D/method.sublime-snippet b/D/method.sublime-snippet new file mode 100644 index 0000000..8aa4bc2 --- /dev/null +++ b/D/method.sublime-snippet @@ -0,0 +1,11 @@ + + + me + source.d + method … { … } + diff --git a/D/out-format.sublime-snippet b/D/out-format.sublime-snippet new file mode 100644 index 0000000..11f0902 --- /dev/null +++ b/D/out-format.sublime-snippet @@ -0,0 +1,6 @@ + + + outf + source.d + Stdout(format, …) + diff --git a/D/out.sublime-snippet b/D/out.sublime-snippet new file mode 100644 index 0000000..a7ce510 --- /dev/null +++ b/D/out.sublime-snippet @@ -0,0 +1,6 @@ + + + out + source.d + Stdout(…) + diff --git a/D/return.sublime-snippet b/D/return.sublime-snippet new file mode 100644 index 0000000..de39779 --- /dev/null +++ b/D/return.sublime-snippet @@ -0,0 +1,6 @@ + + + r + source.d + return … + diff --git a/D/struct.sublime-snippet b/D/struct.sublime-snippet new file mode 100644 index 0000000..662b953 --- /dev/null +++ b/D/struct.sublime-snippet @@ -0,0 +1,11 @@ + + + st + source.d + struct … { … } + diff --git a/D/try-catch-finally.sublime-snippet b/D/try-catch-finally.sublime-snippet new file mode 100644 index 0000000..867aeb6 --- /dev/null +++ b/D/try-catch-finally.sublime-snippet @@ -0,0 +1,12 @@ + + + tcf + source.d + try … catch … finally + diff --git a/D/try-catch.sublime-snippet b/D/try-catch.sublime-snippet new file mode 100644 index 0000000..7aeb61e --- /dev/null +++ b/D/try-catch.sublime-snippet @@ -0,0 +1,10 @@ + + + tc + source.d + try … catch + diff --git a/D/try-finally.sublime-snippet b/D/try-finally.sublime-snippet new file mode 100644 index 0000000..f2b1a2e --- /dev/null +++ b/D/try-finally.sublime-snippet @@ -0,0 +1,10 @@ + + + tf + source.d + try … finally + diff --git a/D/unittest.sublime-snippet b/D/unittest.sublime-snippet new file mode 100644 index 0000000..3826af1 --- /dev/null +++ b/D/unittest.sublime-snippet @@ -0,0 +1,8 @@ + + + unit + source.d + unittest { … } + diff --git a/D/version.sublime-snippet b/D/version.sublime-snippet new file mode 100644 index 0000000..f0c9b7a --- /dev/null +++ b/D/version.sublime-snippet @@ -0,0 +1,8 @@ + + + ver + source.d + version(ident) { … } + diff --git a/D/while.sublime-snippet b/D/while.sublime-snippet new file mode 100644 index 0000000..5210951 --- /dev/null +++ b/D/while.sublime-snippet @@ -0,0 +1,8 @@ + + + while + source.d + while(…) { … } + diff --git a/Default/Add Line Before.sublime-macro b/Default/Add Line Before.sublime-macro new file mode 100644 index 0000000..a1164e7 --- /dev/null +++ b/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/Default/Add Line in Braces.sublime-macro b/Default/Add Line in Braces.sublime-macro new file mode 100644 index 0000000..aaf8218 --- /dev/null +++ b/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/Default/Add Line.sublime-macro b/Default/Add Line.sublime-macro new file mode 100644 index 0000000..6d746e7 --- /dev/null +++ b/Default/Add Line.sublime-macro @@ -0,0 +1,4 @@ +[ + {"command": "move_to", "args": {"to": "hardeol"}}, + {"command": "insert", "args": {"characters": "\n"}} +] diff --git a/Default/Context.sublime-menu b/Default/Context.sublime-menu new file mode 100644 index 0000000..61a9de2 --- /dev/null +++ b/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/Default/Default (Linux).sublime-keymap b/Default/Default (Linux).sublime-keymap new file mode 100644 index 0000000..0903204 --- /dev/null +++ b/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/Default/Default (Linux).sublime-mousemap b/Default/Default (Linux).sublime-mousemap new file mode 100644 index 0000000..44bed1f --- /dev/null +++ b/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/Default/Default (OSX).sublime-keymap b/Default/Default (OSX).sublime-keymap new file mode 100644 index 0000000..52cecb5 --- /dev/null +++ b/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/Default/Default (OSX).sublime-mousemap b/Default/Default (OSX).sublime-mousemap new file mode 100644 index 0000000..d08b14d --- /dev/null +++ b/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/Default/Default (Windows).sublime-keymap b/Default/Default (Windows).sublime-keymap new file mode 100644 index 0000000..5bde08e --- /dev/null +++ b/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/Default/Default (Windows).sublime-mousemap b/Default/Default (Windows).sublime-mousemap new file mode 100644 index 0000000..748418e --- /dev/null +++ b/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/Default/Default.sublime-commands b/Default/Default.sublime-commands new file mode 100644 index 0000000..88e3318 --- /dev/null +++ b/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/Default/Delete Left Right.sublime-macro b/Default/Delete Left Right.sublime-macro new file mode 100644 index 0000000..e6946e6 --- /dev/null +++ b/Default/Delete Left Right.sublime-macro @@ -0,0 +1,4 @@ +[ + {"command": "left_delete" }, + {"command": "right_delete" } +] diff --git a/Default/Delete Line.sublime-macro b/Default/Delete Line.sublime-macro new file mode 100644 index 0000000..5fecdcb --- /dev/null +++ b/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/Default/Delete to BOL.sublime-macro b/Default/Delete to BOL.sublime-macro new file mode 100644 index 0000000..9697284 --- /dev/null +++ b/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/Default/Delete to EOL.sublime-macro b/Default/Delete to EOL.sublime-macro new file mode 100644 index 0000000..3af8234 --- /dev/null +++ b/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/Default/Delete to Hard BOL.sublime-macro b/Default/Delete to Hard BOL.sublime-macro new file mode 100644 index 0000000..947de20 --- /dev/null +++ b/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/Default/Delete to Hard EOL.sublime-macro b/Default/Delete to Hard EOL.sublime-macro new file mode 100644 index 0000000..153395f --- /dev/null +++ b/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/Default/Distraction Free.sublime-settings b/Default/Distraction Free.sublime-settings new file mode 100644 index 0000000..ddbae8d --- /dev/null +++ b/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/Default/Find Results.hidden-tmLanguage b/Default/Find Results.hidden-tmLanguage new file mode 100644 index 0000000..4488707 --- /dev/null +++ b/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/Default/Find Results.hidden-tmLanguage.cache b/Default/Find Results.hidden-tmLanguage.cache new file mode 100644 index 0000000..ca64c3e Binary files /dev/null and b/Default/Find Results.hidden-tmLanguage.cache differ diff --git a/Default/Find in Files.sublime-menu b/Default/Find in Files.sublime-menu new file mode 100644 index 0000000..2101553 --- /dev/null +++ b/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/Default/Icon.png b/Default/Icon.png new file mode 100644 index 0000000..82d904c Binary files /dev/null and b/Default/Icon.png differ diff --git a/Default/Ignored Packages.cache b/Default/Ignored Packages.cache new file mode 100644 index 0000000..27b92a5 --- /dev/null +++ b/Default/Ignored Packages.cache @@ -0,0 +1 @@ +["Vintage"] \ No newline at end of file diff --git a/Default/Indentation Rules - Comments.tmPreferences b/Default/Indentation Rules - Comments.tmPreferences new file mode 100644 index 0000000..8cb6749 --- /dev/null +++ b/Default/Indentation Rules - Comments.tmPreferences @@ -0,0 +1,13 @@ + + + + + scope + comment + settings + + preserveIndent + + + + diff --git a/Default/Indentation Rules - Comments.tmPreferences.cache b/Default/Indentation Rules - Comments.tmPreferences.cache new file mode 100644 index 0000000..fa56901 Binary files /dev/null and b/Default/Indentation Rules - Comments.tmPreferences.cache differ diff --git a/Default/Indentation Rules.tmPreferences b/Default/Indentation Rules.tmPreferences new file mode 100644 index 0000000..1688681 --- /dev/null +++ b/Default/Indentation Rules.tmPreferences @@ -0,0 +1,19 @@ + + + + + scope + source + settings + + decreaseIndentPattern + ^(.*\*/)?\s*\}[;\s]*$ + increaseIndentPattern + ^.*(\{[^}"']*)$ + disableIndentNextLinePattern + ^\s*\{[\]})]*\s*$ + indentParens + + + + diff --git a/Default/Indentation Rules.tmPreferences.cache b/Default/Indentation Rules.tmPreferences.cache new file mode 100644 index 0000000..6b34a51 Binary files /dev/null and b/Default/Indentation Rules.tmPreferences.cache differ diff --git a/Default/Indentation.sublime-menu b/Default/Indentation.sublime-menu new file mode 100644 index 0000000..9c49375 --- /dev/null +++ b/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/Default/Main.sublime-menu b/Default/Main.sublime-menu new file mode 100644 index 0000000..459abe7 --- /dev/null +++ b/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/Default/Meta Info Summary.cache b/Default/Meta Info Summary.cache new file mode 100644 index 0000000..c219223 Binary files /dev/null and b/Default/Meta Info Summary.cache differ diff --git a/Default/Minimap.sublime-settings b/Default/Minimap.sublime-settings new file mode 100644 index 0000000..2e03071 --- /dev/null +++ b/Default/Minimap.sublime-settings @@ -0,0 +1,5 @@ +{ + "rulers": [], + "gutter": false, + "draw_indent_guides": false +} diff --git a/Default/Miscellaneous.tmPreferences.cache b/Default/Miscellaneous.tmPreferences.cache new file mode 100644 index 0000000..e94d1ca Binary files /dev/null and b/Default/Miscellaneous.tmPreferences.cache differ diff --git a/Default/Preferences (Linux).sublime-settings b/Default/Preferences (Linux).sublime-settings new file mode 100644 index 0000000..f3e8ca1 --- /dev/null +++ b/Default/Preferences (Linux).sublime-settings @@ -0,0 +1,5 @@ +{ + "font_face": "Monospace", + "font_size": 10, + "mouse_wheel_switches_tabs": true +} diff --git a/Default/Preferences (OSX).sublime-settings b/Default/Preferences (OSX).sublime-settings new file mode 100644 index 0000000..5480b8a --- /dev/null +++ b/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/Default/Preferences (Windows).sublime-settings b/Default/Preferences (Windows).sublime-settings new file mode 100644 index 0000000..0eeb1f9 --- /dev/null +++ b/Default/Preferences (Windows).sublime-settings @@ -0,0 +1,4 @@ +{ + "font_face": "Consolas", + "font_size": 10 +} diff --git a/Default/Preferences.sublime-settings b/Default/Preferences.sublime-settings new file mode 100644 index 0000000..bf86fc6 --- /dev/null +++ b/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/Default/Regex Format Widget.sublime-settings b/Default/Regex Format Widget.sublime-settings new file mode 100644 index 0000000..e69de29 diff --git a/Default/Regex Widget.sublime-settings b/Default/Regex Widget.sublime-settings new file mode 100644 index 0000000..cf1b634 --- /dev/null +++ b/Default/Regex Widget.sublime-settings @@ -0,0 +1,3 @@ +{ + "syntax": "Packages/Regular Expressions/RegExp.tmLanguage" +} diff --git a/Default/Side Bar Mount Point.sublime-menu b/Default/Side Bar Mount Point.sublime-menu new file mode 100644 index 0000000..3411b67 --- /dev/null +++ b/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/Default/Side Bar.sublime-menu b/Default/Side Bar.sublime-menu new file mode 100644 index 0000000..3d308b9 --- /dev/null +++ b/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/Default/Startup.cache b/Default/Startup.cache new file mode 100644 index 0000000..94b7c96 Binary files /dev/null and b/Default/Startup.cache differ diff --git a/Default/Symbol List.tmPreferences b/Default/Symbol List.tmPreferences new file mode 100644 index 0000000..0eeaf41 --- /dev/null +++ b/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/Default/Symbol List.tmPreferences.cache b/Default/Symbol List.tmPreferences.cache new file mode 100644 index 0000000..186d223 Binary files /dev/null and b/Default/Symbol List.tmPreferences.cache differ diff --git a/Default/Syntax Summary.cache b/Default/Syntax Summary.cache new file mode 100644 index 0000000..f0ee828 Binary files /dev/null and b/Default/Syntax Summary.cache differ diff --git a/Default/Syntax.sublime-menu b/Default/Syntax.sublime-menu new file mode 100644 index 0000000..b555b7b --- /dev/null +++ b/Default/Syntax.sublime-menu @@ -0,0 +1,6 @@ +[ + { + "caption": "Syntax", + "children": [ { "command": "$file_types" } ] + } +] diff --git a/Default/Tab Context.sublime-menu b/Default/Tab Context.sublime-menu new file mode 100644 index 0000000..b5781f0 --- /dev/null +++ b/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/Default/Widget Context.sublime-menu b/Default/Widget Context.sublime-menu new file mode 100644 index 0000000..971328a --- /dev/null +++ b/Default/Widget Context.sublime-menu @@ -0,0 +1,7 @@ +[ + { "command": "copy" }, + { "command": "cut" }, + { "command": "paste" }, + { "caption": "-" }, + { "command": "select_all" } +] diff --git a/Default/Widget.sublime-settings b/Default/Widget.sublime-settings new file mode 100644 index 0000000..fe8c1fa --- /dev/null +++ b/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/Default/comment.py b/Default/comment.py new file mode 100644 index 0000000..b967afc --- /dev/null +++ b/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/Default/comment.pyc b/Default/comment.pyc new file mode 100644 index 0000000..54b1abc Binary files /dev/null and b/Default/comment.pyc differ diff --git a/Default/copy_path.py b/Default/copy_path.py new file mode 100644 index 0000000..fd324c7 --- /dev/null +++ b/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/Default/copy_path.pyc b/Default/copy_path.pyc new file mode 100644 index 0000000..732831a Binary files /dev/null and b/Default/copy_path.pyc differ diff --git a/Default/delete_word.py b/Default/delete_word.py new file mode 100644 index 0000000..f881038 --- /dev/null +++ b/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/Default/delete_word.pyc b/Default/delete_word.pyc new file mode 100644 index 0000000..9757240 Binary files /dev/null and b/Default/delete_word.pyc differ diff --git a/Default/detect_indentation.py b/Default/detect_indentation.py new file mode 100644 index 0000000..9f6ae1d --- /dev/null +++ b/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/Default/detect_indentation.pyc b/Default/detect_indentation.pyc new file mode 100644 index 0000000..5c0fab5 Binary files /dev/null and b/Default/detect_indentation.pyc differ diff --git a/Default/duplicate_line.py b/Default/duplicate_line.py new file mode 100644 index 0000000..3a8d37f --- /dev/null +++ b/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/Default/duplicate_line.pyc b/Default/duplicate_line.pyc new file mode 100644 index 0000000..4da9c8b Binary files /dev/null and b/Default/duplicate_line.pyc differ diff --git a/Default/echo.py b/Default/echo.py new file mode 100644 index 0000000..dc7d730 --- /dev/null +++ b/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/Default/echo.pyc b/Default/echo.pyc new file mode 100644 index 0000000..c4a9afc Binary files /dev/null and b/Default/echo.pyc differ diff --git a/Default/exec.py b/Default/exec.py new file mode 100644 index 0000000..f51f775 --- /dev/null +++ b/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/Default/exec.pyc b/Default/exec.pyc new file mode 100644 index 0000000..f5c5e46 Binary files /dev/null and b/Default/exec.pyc differ diff --git a/Default/fold.py b/Default/fold.py new file mode 100644 index 0000000..6747e5d --- /dev/null +++ b/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/Default/fold.pyc b/Default/fold.pyc new file mode 100644 index 0000000..26fafc0 Binary files /dev/null and b/Default/fold.pyc differ diff --git a/Default/font.py b/Default/font.py new file mode 100644 index 0000000..b9b5173 --- /dev/null +++ b/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/Default/font.pyc b/Default/font.pyc new file mode 100644 index 0000000..30448c4 Binary files /dev/null and b/Default/font.pyc differ diff --git a/Default/goto_line.py b/Default/goto_line.py new file mode 100644 index 0000000..2ec2ea2 --- /dev/null +++ b/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/Default/goto_line.pyc b/Default/goto_line.pyc new file mode 100644 index 0000000..54cfac2 Binary files /dev/null and b/Default/goto_line.pyc differ diff --git a/Default/indentation.py b/Default/indentation.py new file mode 100644 index 0000000..dac7aba --- /dev/null +++ b/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/Default/indentation.pyc b/Default/indentation.pyc new file mode 100644 index 0000000..2d4de0a Binary files /dev/null and b/Default/indentation.pyc differ diff --git a/Default/kill_ring.py b/Default/kill_ring.py new file mode 100644 index 0000000..d47639f --- /dev/null +++ b/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/Default/kill_ring.pyc b/Default/kill_ring.pyc new file mode 100644 index 0000000..8567f2c Binary files /dev/null and b/Default/kill_ring.pyc differ diff --git a/Default/mark.py b/Default/mark.py new file mode 100644 index 0000000..284b52c --- /dev/null +++ b/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/Default/mark.pyc b/Default/mark.pyc new file mode 100644 index 0000000..4408bf4 Binary files /dev/null and b/Default/mark.pyc differ diff --git a/Default/new_templates.py b/Default/new_templates.py new file mode 100644 index 0000000..f288b7b --- /dev/null +++ b/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/Default/new_templates.pyc b/Default/new_templates.pyc new file mode 100644 index 0000000..9357441 Binary files /dev/null and b/Default/new_templates.pyc differ diff --git a/Default/open_file_settings.py b/Default/open_file_settings.py new file mode 100644 index 0000000..c701d94 --- /dev/null +++ b/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/Default/open_file_settings.pyc b/Default/open_file_settings.pyc new file mode 100644 index 0000000..cbd901c Binary files /dev/null and b/Default/open_file_settings.pyc differ diff --git a/Default/open_in_browser.py b/Default/open_in_browser.py new file mode 100644 index 0000000..042f141 --- /dev/null +++ b/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/Default/open_in_browser.pyc b/Default/open_in_browser.pyc new file mode 100644 index 0000000..b399d1a Binary files /dev/null and b/Default/open_in_browser.pyc differ diff --git a/Default/paragraph.py b/Default/paragraph.py new file mode 100644 index 0000000..bb5fb22 --- /dev/null +++ b/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/Default/paragraph.pyc b/Default/paragraph.pyc new file mode 100644 index 0000000..0e65dd9 Binary files /dev/null and b/Default/paragraph.pyc differ diff --git a/Default/save_on_focus_lost.py b/Default/save_on_focus_lost.py new file mode 100644 index 0000000..939259c --- /dev/null +++ b/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/Default/save_on_focus_lost.pyc b/Default/save_on_focus_lost.pyc new file mode 100644 index 0000000..b3fdcae Binary files /dev/null and b/Default/save_on_focus_lost.pyc differ diff --git a/Default/scroll.py b/Default/scroll.py new file mode 100644 index 0000000..1d9dcaa --- /dev/null +++ b/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/Default/scroll.pyc b/Default/scroll.pyc new file mode 100644 index 0000000..21691d8 Binary files /dev/null and b/Default/scroll.pyc differ diff --git a/Default/send2trash/__init__.py b/Default/send2trash/__init__.py new file mode 100644 index 0000000..d6fa7f0 --- /dev/null +++ b/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/Default/send2trash/__init__.pyc b/Default/send2trash/__init__.pyc new file mode 100644 index 0000000..73f114b Binary files /dev/null and b/Default/send2trash/__init__.pyc differ diff --git a/Default/send2trash/plat_osx.py b/Default/send2trash/plat_osx.py new file mode 100644 index 0000000..ba58b6f --- /dev/null +++ b/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/Default/send2trash/plat_osx.pyc b/Default/send2trash/plat_osx.pyc new file mode 100644 index 0000000..41c1882 Binary files /dev/null and b/Default/send2trash/plat_osx.pyc differ diff --git a/Default/send2trash/plat_other.py b/Default/send2trash/plat_other.py new file mode 100644 index 0000000..ee1479b --- /dev/null +++ b/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/Default/send2trash/plat_win.py b/Default/send2trash/plat_win.py new file mode 100644 index 0000000..b437174 --- /dev/null +++ b/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/Default/set_unsaved_view_name.py b/Default/set_unsaved_view_name.py new file mode 100644 index 0000000..57d4228 --- /dev/null +++ b/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/Default/set_unsaved_view_name.pyc b/Default/set_unsaved_view_name.pyc new file mode 100644 index 0000000..2a43a04 Binary files /dev/null and b/Default/set_unsaved_view_name.pyc differ diff --git a/Default/side_bar.py b/Default/side_bar.py new file mode 100644 index 0000000..6c17cfb --- /dev/null +++ b/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/Default/side_bar.pyc b/Default/side_bar.pyc new file mode 100644 index 0000000..b4b21c7 Binary files /dev/null and b/Default/side_bar.pyc differ diff --git a/Default/sort.py b/Default/sort.py new file mode 100644 index 0000000..812b0f5 --- /dev/null +++ b/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/Default/sort.pyc b/Default/sort.pyc new file mode 100644 index 0000000..7fcbd5a Binary files /dev/null and b/Default/sort.pyc differ diff --git a/Default/swap_line.py b/Default/swap_line.py new file mode 100644 index 0000000..97841ee --- /dev/null +++ b/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/Default/swap_line.pyc b/Default/swap_line.pyc new file mode 100644 index 0000000..58fbfcb Binary files /dev/null and b/Default/swap_line.pyc differ diff --git a/Default/switch_file.py b/Default/switch_file.py new file mode 100644 index 0000000..60fa7e3 --- /dev/null +++ b/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/Default/switch_file.pyc b/Default/switch_file.pyc new file mode 100644 index 0000000..374150f Binary files /dev/null and b/Default/switch_file.pyc differ diff --git a/Default/transform.py b/Default/transform.py new file mode 100644 index 0000000..a194513 --- /dev/null +++ b/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/Default/transform.pyc b/Default/transform.pyc new file mode 100644 index 0000000..b9c2a3a Binary files /dev/null and b/Default/transform.pyc differ diff --git a/Default/transpose.py b/Default/transpose.py new file mode 100644 index 0000000..e3a8a4d --- /dev/null +++ b/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/Default/transpose.pyc b/Default/transpose.pyc new file mode 100644 index 0000000..f172508 Binary files /dev/null and b/Default/transpose.pyc differ diff --git a/Default/trim_trailing_white_space.py b/Default/trim_trailing_white_space.py new file mode 100644 index 0000000..96aa0ec --- /dev/null +++ b/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/Default/trim_trailing_white_space.pyc b/Default/trim_trailing_white_space.pyc new file mode 100644 index 0000000..c5de455 Binary files /dev/null and b/Default/trim_trailing_white_space.pyc differ diff --git a/Diff/Context.sublime-menu b/Diff/Context.sublime-menu new file mode 100644 index 0000000..38afeca --- /dev/null +++ b/Diff/Context.sublime-menu @@ -0,0 +1,4 @@ +[ + { "caption": "-" }, + { "caption": "Show Unsaved Changes…", "command": "diff_changes" } +] diff --git a/Diff/Diff.tmLanguage b/Diff/Diff.tmLanguage new file mode 100644 index 0000000..601dde1 --- /dev/null +++ b/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/Diff/Diff.tmLanguage.cache b/Diff/Diff.tmLanguage.cache new file mode 100644 index 0000000..8d21815 Binary files /dev/null and b/Diff/Diff.tmLanguage.cache differ diff --git a/Diff/Side Bar.sublime-menu b/Diff/Side Bar.sublime-menu new file mode 100644 index 0000000..030ce8a --- /dev/null +++ b/Diff/Side Bar.sublime-menu @@ -0,0 +1,3 @@ +[ + { "caption": "Diff Files…", "command": "diff_files", "args": {"files": []} } +] diff --git a/Diff/diff.py b/Diff/diff.py new file mode 100644 index 0000000..df45883 --- /dev/null +++ b/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/Diff/diff.pyc b/Diff/diff.pyc new file mode 100644 index 0000000..2378e25 Binary files /dev/null and b/Diff/diff.pyc differ diff --git a/Erlang/Behaviour-Directive.sublime-snippet b/Erlang/Behaviour-Directive.sublime-snippet new file mode 100644 index 0000000..4748c03 --- /dev/null +++ b/Erlang/Behaviour-Directive.sublime-snippet @@ -0,0 +1,6 @@ + + + beh + source.erlang + Behaviour Directive + diff --git a/Erlang/Case-Expression.sublime-snippet b/Erlang/Case-Expression.sublime-snippet new file mode 100644 index 0000000..109c4a2 --- /dev/null +++ b/Erlang/Case-Expression.sublime-snippet @@ -0,0 +1,9 @@ + + + ${5:body} +end]]> + case + source.erlang + Case Expression + diff --git a/Erlang/Comments.tmPreferences b/Erlang/Comments.tmPreferences new file mode 100644 index 0000000..1a18f62 --- /dev/null +++ b/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/Erlang/Comments.tmPreferences.cache b/Erlang/Comments.tmPreferences.cache new file mode 100644 index 0000000..3d0ca39 Binary files /dev/null and b/Erlang/Comments.tmPreferences.cache differ diff --git a/Erlang/Define-Directive.sublime-snippet b/Erlang/Define-Directive.sublime-snippet new file mode 100644 index 0000000..4a1fb00 --- /dev/null +++ b/Erlang/Define-Directive.sublime-snippet @@ -0,0 +1,6 @@ + + + def + source.erlang + Define Directive + diff --git a/Erlang/Erlang.sublime-build b/Erlang/Erlang.sublime-build new file mode 100644 index 0000000..6aaf47f --- /dev/null +++ b/Erlang/Erlang.sublime-build @@ -0,0 +1,5 @@ +{ + "cmd": ["erl", "-compile", "$file"], + "file_regex":"^([^:]+):([0-9]*):?(.*):?(.*)", + "selector": "source.erl" +} diff --git a/Erlang/Erlang.tmLanguage b/Erlang/Erlang.tmLanguage new file mode 100644 index 0000000..ceb3b63 --- /dev/null +++ b/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/Erlang/Erlang.tmLanguage.cache b/Erlang/Erlang.tmLanguage.cache new file mode 100644 index 0000000..71c0222 Binary files /dev/null and b/Erlang/Erlang.tmLanguage.cache differ diff --git a/Erlang/Export-Directive.sublime-snippet b/Erlang/Export-Directive.sublime-snippet new file mode 100644 index 0000000..40e0ac3 --- /dev/null +++ b/Erlang/Export-Directive.sublime-snippet @@ -0,0 +1,6 @@ + + + exp + source.erlang + Export Directive + diff --git a/Erlang/Fun-Expression.sublime-snippet b/Erlang/Fun-Expression.sublime-snippet new file mode 100644 index 0000000..9c22700 --- /dev/null +++ b/Erlang/Fun-Expression.sublime-snippet @@ -0,0 +1,9 @@ + + + ${4:body} +end]]> + fun + source.erlang + Fun Expression + diff --git a/Erlang/Function Symbols.tmPreferences b/Erlang/Function Symbols.tmPreferences new file mode 100644 index 0000000..c7ee2b8 --- /dev/null +++ b/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/Erlang/Function Symbols.tmPreferences.cache b/Erlang/Function Symbols.tmPreferences.cache new file mode 100644 index 0000000..42ae1b0 Binary files /dev/null and b/Erlang/Function Symbols.tmPreferences.cache differ diff --git a/Erlang/HTML (Erlang).tmLanguage b/Erlang/HTML (Erlang).tmLanguage new file mode 100644 index 0000000..47d7bf6 --- /dev/null +++ b/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/Erlang/HTML (Erlang).tmLanguage.cache b/Erlang/HTML (Erlang).tmLanguage.cache new file mode 100644 index 0000000..80c26eb Binary files /dev/null and b/Erlang/HTML (Erlang).tmLanguage.cache differ diff --git a/Erlang/If-Expression.sublime-snippet b/Erlang/If-Expression.sublime-snippet new file mode 100644 index 0000000..6a7ebc8 --- /dev/null +++ b/Erlang/If-Expression.sublime-snippet @@ -0,0 +1,9 @@ + + + ${2:body} +end]]> + if + source.erlang + If Expression + diff --git a/Erlang/Ifdef-Directive.sublime-snippet b/Erlang/Ifdef-Directive.sublime-snippet new file mode 100644 index 0000000..1046768 --- /dev/null +++ b/Erlang/Ifdef-Directive.sublime-snippet @@ -0,0 +1,6 @@ + + + ifdef + source.erlang + Ifdef Directive + diff --git a/Erlang/Ifndef-Directive.sublime-snippet b/Erlang/Ifndef-Directive.sublime-snippet new file mode 100644 index 0000000..71d2395 --- /dev/null +++ b/Erlang/Ifndef-Directive.sublime-snippet @@ -0,0 +1,6 @@ + + + ifndef + source.erlang + Ifndef Directive + diff --git a/Erlang/Import-Directive.sublime-snippet b/Erlang/Import-Directive.sublime-snippet new file mode 100644 index 0000000..0f1ca8d --- /dev/null +++ b/Erlang/Import-Directive.sublime-snippet @@ -0,0 +1,6 @@ + + + imp + source.erlang + Import Directive + diff --git a/Erlang/Include-Directive.sublime-snippet b/Erlang/Include-Directive.sublime-snippet new file mode 100644 index 0000000..21076d1 --- /dev/null +++ b/Erlang/Include-Directive.sublime-snippet @@ -0,0 +1,6 @@ + + + inc + source.erlang + Include Directive + diff --git a/Erlang/Indentation Rules.tmPreferences b/Erlang/Indentation Rules.tmPreferences new file mode 100644 index 0000000..b6733c5 --- /dev/null +++ b/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/Erlang/Indentation Rules.tmPreferences.cache b/Erlang/Indentation Rules.tmPreferences.cache new file mode 100644 index 0000000..ff7da37 Binary files /dev/null and b/Erlang/Indentation Rules.tmPreferences.cache differ diff --git a/Erlang/Macro Symbols.tmPreferences b/Erlang/Macro Symbols.tmPreferences new file mode 100644 index 0000000..8c5fe92 --- /dev/null +++ b/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/Erlang/Macro Symbols.tmPreferences.cache b/Erlang/Macro Symbols.tmPreferences.cache new file mode 100644 index 0000000..cbc336c Binary files /dev/null and b/Erlang/Macro Symbols.tmPreferences.cache differ diff --git a/Erlang/Module Symbols.tmPreferences b/Erlang/Module Symbols.tmPreferences new file mode 100644 index 0000000..36b15de --- /dev/null +++ b/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/Erlang/Module Symbols.tmPreferences.cache b/Erlang/Module Symbols.tmPreferences.cache new file mode 100644 index 0000000..228b097 Binary files /dev/null and b/Erlang/Module Symbols.tmPreferences.cache differ diff --git a/Erlang/Module-Directive.sublime-snippet b/Erlang/Module-Directive.sublime-snippet new file mode 100644 index 0000000..e50c641 --- /dev/null +++ b/Erlang/Module-Directive.sublime-snippet @@ -0,0 +1,6 @@ + + + mod + source.erlang + Module Directive + diff --git a/Erlang/Receive-Expression.sublime-snippet b/Erlang/Receive-Expression.sublime-snippet new file mode 100644 index 0000000..b88a12b --- /dev/null +++ b/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/Erlang/Record Symbols.tmPreferences b/Erlang/Record Symbols.tmPreferences new file mode 100644 index 0000000..7ad1dbd --- /dev/null +++ b/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/Erlang/Record Symbols.tmPreferences.cache b/Erlang/Record Symbols.tmPreferences.cache new file mode 100644 index 0000000..4c617b7 Binary files /dev/null and b/Erlang/Record Symbols.tmPreferences.cache differ diff --git a/Erlang/Record-Directive.sublime-snippet b/Erlang/Record-Directive.sublime-snippet new file mode 100644 index 0000000..9ddcc0c --- /dev/null +++ b/Erlang/Record-Directive.sublime-snippet @@ -0,0 +1,6 @@ + + + rec + source.erlang + Record Directive + diff --git a/Erlang/Symbol Overrides.tmPreferences b/Erlang/Symbol Overrides.tmPreferences new file mode 100644 index 0000000..327c16c --- /dev/null +++ b/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/Erlang/Symbol Overrides.tmPreferences.cache b/Erlang/Symbol Overrides.tmPreferences.cache new file mode 100644 index 0000000..b44f362 Binary files /dev/null and b/Erlang/Symbol Overrides.tmPreferences.cache differ diff --git a/Erlang/Try-Expression.sublime-snippet b/Erlang/Try-Expression.sublime-snippet new file mode 100644 index 0000000..ecd7f85 --- /dev/null +++ b/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/Erlang/Undef-Directive.sublime-snippet b/Erlang/Undef-Directive.sublime-snippet new file mode 100644 index 0000000..09454fd --- /dev/null +++ b/Erlang/Undef-Directive.sublime-snippet @@ -0,0 +1,6 @@ + + + undef + source.erlang + Undef Directive + diff --git a/Git/.gitignore b/Git/.gitignore new file mode 100644 index 0000000..b591a13 --- /dev/null +++ b/Git/.gitignore @@ -0,0 +1,4 @@ +*.pyc +*.tmLanguage.cache +.DS_Store +package-metadata.json \ No newline at end of file diff --git a/Git/CONTRIBUTORS b/Git/CONTRIBUTORS new file mode 100644 index 0000000..90be6f7 --- /dev/null +++ b/Git/CONTRIBUTORS @@ -0,0 +1,28 @@ +These are the people who helped make this plugin: + +David Lynch +Sheldon Els +Nick Fisher +Can Yilmaz +Stefan Buhrmester +Rafal Chlodnicki +Daniël de Kok +David Baumgold +Iuri de Silvio +joshuacc +misfo +Kevin Smith +Κώστας Καραχάλιος +Dominique Wahli +Fraser Graham +Hamid Nazari +Jeff Sandberg +Joshua Clanton +Maxim Sukharev +Niklas Hambüchen +Patrik Ring +Scott Bowers +Weslly Honorato +brcooley +jdc0589 +Adam Venturella diff --git a/Git/Default.sublime-commands b/Git/Default.sublime-commands new file mode 100644 index 0000000..1000593 --- /dev/null +++ b/Git/Default.sublime-commands @@ -0,0 +1,209 @@ +[ + { "caption": "Git: Init", + "command": "git_init" + } + ,{ + "caption": "Git: Blame", + "command": "git_blame" + } + ,{ + "caption": "Git: New Tag", + "command": "git_new_tag" + } + ,{ + "caption": "Git: Show Tags", + "command": "git_show_tags" + } + ,{ + "caption": "Git Push Tags", + "command": "git_push_tags" + } + ,{ + "caption": "Git: Log Current File", + "command": "git_log" + } + ,{ + "caption": "Git: Log All", + "command": "git_log_all" + } + ,{ + "caption": "Git: Graph Current File", + "command": "git_graph" + } + ,{ + "caption": "Git: Graph All", + "command": "git_graph_all" + } + ,{ + "caption": "Git: Diff Current File", + "command": "git_diff" + } + ,{ + "caption": "Git: Diff All", + "command": "git_diff_all" + } + ,{ + "caption": "Git: Diff Staged", + "command": "git_diff_commit" + } + ,{ + "caption": "Git: Diff Tool", + "command": "git_diff_tool" + } + ,{ + "caption": "Git: Commit", + "command": "git_commit" + } + ,{ + "caption": "Git: Amend Commit", + "command": "git_commit_amend" + } + ,{ + "caption": "Git: Quick Commit", + "command": "git_quick_commit" + } + ,{ + "caption": "Git: Status", + "command": "git_status" + } + ,{ + "caption": "Git: Open Modified Files", + "command": "git_open_modified_files" + } + ,{ + "caption": "Git: New Branch", + "command": "git_new_branch" + } + ,{ + "caption": "Git: Change Branch", + "command": "git_branch" + } + ,{ + "caption": "Git: Merge Branch", + "command": "git_merge" + } + ,{ + "caption": "Git: Delete Branch", + "command": "git_delete_branch" + } + ,{ + "caption": "Git: Stash Changes", + "command": "git_stash" + } + ,{ + "caption": "Git: Stash Pop", + "command": "git_stash_pop" + } + ,{ + "caption": "Git: Stash Apply", + "command": "git_stash_apply" + } + ,{ + "caption": "Git: Stash Drop", + "command": "git_stash_drop" + } + ,{ + "caption": "Git: Add Current File", + "command": "git_add" + } + ,{ + "caption": "Git: Add...", + "command": "git_add_choice" + } + ,{ + "caption": "Git: Checkout Current File", + "command": "git_checkout" + } + ,{ + "caption": "Git: Fetch", + "command": "git_fetch" + } + ,{ + "caption": "Git: Pull", + "command": "git_pull" + } + ,{ + "caption": "Git: Pull Current Branch", + "command": "git_pull_current_branch" + } + ,{ + "caption": "Git: Push", + "command": "git_push" + } + ,{ + "caption": "Git: Push Current Branch", + "command": "git_push_current_branch" + } + ,{ + "caption": "Git: Show Current File", + "command": "git_show" + } + ,{ + "caption": "Git: Toggle Annotations", + "command": "git_toggle_annotations" + } + ,{ + "caption": "Git: Custom Command", + "command": "git_custom" + } + ,{ + "caption": "Git Flow: Feature Start", + "command": "git_flow_feature_start" + } + ,{ + "caption": "Git Flow: Feature Finish", + "command": "git_flow_feature_finish" + } + ,{ + "caption": "Git Flow: Release Start", + "command": "git_flow_release_start" + } + ,{ + "caption": "Git Flow: Release Finish", + "command": "git_flow_release_finish" + } + ,{ + "caption": "Git Flow: Hotfix Start", + "command": "git_flow_hotfix_start" + } + ,{ + "caption": "Git Flow: Hotfix Finish", + "command": "git_flow_hotfix_finish" + } + ,{ + "caption": "Git: Open...", + "command": "git_open_file" + } + ,{ + "caption": "Git: Reset (unstage) Current File", + "command": "git_reset_head" + } + ,{ + "caption": "Git: Reset (unstage) All", + "command": "git_reset_head_all" + } + ,{ + "caption": "Git: Reset (hard) HEAD", + "command": "git_reset_hard_head" + } + ,{ + "caption": "Git: Add Selected Hunk", + "command": "git_add_selected_hunk" + } + ,{ + "caption": "Git: Commit Selected Hunk", + "command": "git_commit_selected_hunk" + } + ,{ + "caption": "Git: Gui", + "command": "git_gui" + } + ,{ + "caption": "Git: Gitk", + "command": "git_gitk" + } + ,{ + "caption": "Git: Commit history", + "command": "git_commit_history" + } +] diff --git a/Git/Git Blame.JSON-tmLanguage b/Git/Git Blame.JSON-tmLanguage new file mode 100644 index 0000000..d0b4322 --- /dev/null +++ b/Git/Git Blame.JSON-tmLanguage @@ -0,0 +1,18 @@ +{ "name": "Git Blame", + "scopeName": "text.git-blame", + "fileTypes": ["git-blame"], + "patterns": [ + { + "match": "^(\\^?[a-f0-9]+)\\s+([\\w\\-\\d\\.\\/]*)\\s*\\((.*?)\\s+(\\d{4}-\\d\\d-\\d\\d \\d\\d:\\d\\d:\\d\\d [+-]\\d{4})\\s+(\\d+)\\)", + "name": "line.comment.git-blame", + "captures": { + "1": {"name": "string.sha.git-blame"}, + "2": {"name": "string.path.git-blame"}, + "3": {"name": "support.function.author.git-blame"}, + "4": {"name": "constant.numeric.date.git-blame"}, + "5": {"name": "variable.parameter.line-number.git-blame"} + } + } + ], + "uuid": "5d37add9-889e-4174-b232-4bd423b84c0a" +} diff --git a/Git/Git Blame.tmLanguage b/Git/Git Blame.tmLanguage new file mode 100644 index 0000000..d909cbb --- /dev/null +++ b/Git/Git Blame.tmLanguage @@ -0,0 +1,53 @@ + + + + + fileTypes + + git-blame + + name + Git Blame + patterns + + + captures + + 1 + + name + string.sha.git-blame + + 2 + + name + string.path.git-blame + + 3 + + name + support.function.author.git-blame + + 4 + + name + constant.numeric.date.git-blame + + 5 + + name + variable.parameter.line-number.git-blame + + + match + ^(\^?[a-f0-9]+)\s+([\w\-\d\.\/]*)\s*\((.*?)\s+(\d{4}-\d\d-\d\d \d\d:\d\d:\d\d [+-]\d{4})\s+(\d+)\) + name + line.comment.git-blame + + + scopeName + text.git-blame + uuid + 5d37add9-889e-4174-b232-4bd423b84c0a + + diff --git a/Git/Git Commit Message.JSON-tmLanguage b/Git/Git Commit Message.JSON-tmLanguage new file mode 100644 index 0000000..d287027 --- /dev/null +++ b/Git/Git Commit Message.JSON-tmLanguage @@ -0,0 +1,21 @@ +{ "name": "Git Commit Message", + "scopeName": "text.git-commit", + "fileTypes": ["COMMIT_EDITMSG"], + "patterns": [ + { "name": "comment.line.number-sign.git-commit", + "match": "^\\s*(#).*$\n?", + "captures": { + "1": { "name": "punctuation.definition.comment.git-commit" } + } + }, + { "name": "meta.diff.git-commit", + "comment": "diff at the end of the commit message when using commit -v, or viewing a log. End pattern is just something to be never matched so that the meta continues untill the end of the file.", + "begin": "diff\\ \\-\\-git", + "end": "(?=xxxxxx)123457", + "patterns": [ + { "include": "source.diff" } + ] + } + ], + "uuid": "de3fb2fc-e564-4a31-9813-5ee26967c5c8" +} \ No newline at end of file diff --git a/Git/Git Commit Message.sublime-settings b/Git/Git Commit Message.sublime-settings new file mode 100644 index 0000000..7bbc12b --- /dev/null +++ b/Git/Git Commit Message.sublime-settings @@ -0,0 +1,5 @@ +{ + "rulers": [70], + "word_wrap": true, + "wrap_width": 69 +} diff --git a/Git/Git Commit Message.tmLanguage b/Git/Git Commit Message.tmLanguage new file mode 100644 index 0000000..1b46130 --- /dev/null +++ b/Git/Git Commit Message.tmLanguage @@ -0,0 +1,51 @@ + + + + + fileTypes + + COMMIT_EDITMSG + + name + Git Commit Message + patterns + + + captures + + 1 + + name + punctuation.definition.comment.git-commit + + + match + ^\s*(#).*$ +? + name + comment.line.number-sign.git-commit + + + begin + diff\ \-\-git + comment + diff at the end of the commit message when using commit -v, or viewing a log. End pattern is just something to be never matched so that the meta continues untill the end of the file. + end + (?=xxxxxx)123457 + name + meta.diff.git-commit + patterns + + + include + source.diff + + + + + scopeName + text.git-commit + uuid + de3fb2fc-e564-4a31-9813-5ee26967c5c8 + + diff --git a/Git/Git Graph.JSON-tmLanguage b/Git/Git Graph.JSON-tmLanguage new file mode 100644 index 0000000..926b3d6 --- /dev/null +++ b/Git/Git Graph.JSON-tmLanguage @@ -0,0 +1,31 @@ +{ "name": "Git Graph", + "scopeName": "text.git-graph", + "fileTypes": ["git-graph"], + "patterns": [ + { "match": "^([| *\\\\]+)([0-9a-f]{4,40}) (.*?) (\\d{4}-\\d\\d-\\d\\d \\d\\d:\\d\\d:\\d\\d [+-]\\d{4}) (?:\\(((?:[a-zA-Z0-9._\\-\\/]+(?:, )?)+)\\) )?", + "name": "log-entry.git-graph", + "captures": { + "1": {"name": "comment.git-graph" }, + "2": {"name": "string.git-graph" }, + "3": {"name": "support.function.git-graph" }, + "4": {"name": "constant.numeric.git-graph" }, + "5": {"name": "variable.parameter.git-graph" } + } + }, + { "match": "^\\|[\\|_\\/\\\\ ]+\n?$", + "name": "comment.git-graph", + "comment": "lines with no commit details" + }, + { "match": "(?:[Ff]ix(?:e[ds])?|[Rr]esolve[ds]?|[Cc]lose[ds]?)?\\s*(?:#\\d+|\\[.*?\\])", + "name": "keyword.git-graph", + "comment": "issue numbers" + }, + { "match": "Merge branch '(.*?)' of .*?\n?$", + "name": "comment.git-graph", + "captures": { + "1": {"name": "variable.parameter.git-graph"} + } + } + ], + "uuid": "b900521e-af64-471b-aec8-1ecf88aab595" +} diff --git a/Git/Git Graph.tmLanguage b/Git/Git Graph.tmLanguage new file mode 100644 index 0000000..4c19eec --- /dev/null +++ b/Git/Git Graph.tmLanguage @@ -0,0 +1,90 @@ + + + + + fileTypes + + git-graph + + name + Git Graph + patterns + + + captures + + 1 + + name + comment.git-graph + + 2 + + name + string.git-graph + + 3 + + name + support.function.git-graph + + 4 + + name + constant.numeric.git-graph + + 5 + + name + variable.parameter.git-graph + + 6 + + name + keyword.git-graph + + + match + ^([| *\\]+)([0-9a-f]{4,40}) -( \(.*?\))? (.*) (\(.*) (<.*>) .* + name + log-entry.git-graph + + + comment + lines with no commit details + match + ^\|[\|_\/\\ ]+ +?$ + name + comment.git-graph + + + comment + issue numbers + match + (?:[Ff]ix(?:e[ds])?|[Rr]esolve[ds]?|[Cc]lose[ds]?)?\s*(?:#\d+|\[.*?\]) + name + keyword.git-graph + + + captures + + 1 + + name + variable.parameter.git-graph + + + match + Merge branch '(.*?)' of .*? +?$ + name + comment.git-graph + + + scopeName + text.git-graph + uuid + b900521e-af64-471b-aec8-1ecf88aab595 + + diff --git a/Git/Git.sublime-settings b/Git/Git.sublime-settings new file mode 100644 index 0000000..c9d69ea --- /dev/null +++ b/Git/Git.sublime-settings @@ -0,0 +1,36 @@ +{ + // save before running commands + "save_first": true + + // if present, use this command instead of plain "git" + // e.g. "/Users/kemayo/bin/git" or "C:\bin\git.exe" + ,"git_command": false + + // point this the installation location of git-flow + ,"git_flow_command": "/usr/local/bin/git-flow" + + // use the panel for diff output, rather than a new scratch window (new tab) + ,"diff_panel": false + + // affects blame command when no selection is made + // true: blame whole file + // false: blame only current line + ,"blame_whole_file": true + + // If you'd rather have your status command open files instead of show you a + // diff, set this to true. You can still do `Git: Status` followed by + // 'Git: Diff Current File' to get a file diff + ,"status_opens_file": false + + // Use --verbose flag for commit messages + ,"verbose_commits": true + + // How many commit messages to store in the history. Set to 0 to disable. + ,"history_size": 5 + + // Show git flow commands + ,"flow": false + + // Annotations default to being on for all files. Can be slow in some cases. + ,"annotations": false +} diff --git a/Git/Main.sublime-menu b/Git/Main.sublime-menu new file mode 100644 index 0000000..a674d35 --- /dev/null +++ b/Git/Main.sublime-menu @@ -0,0 +1,124 @@ +[ + { + "id": "tools", + "children": + [ + { + "caption": "Git", + "children": + [ + { + "caption": "This file", + "children": + [ + { "caption": "Log", "command": "git_log" } + ,{ "caption": "Graph", "command": "git_graph" } + ,{ "caption": "-" } + ,{ "caption": "Diff", "command": "git_diff" } + ,{ "caption": "-" } + ,{ "caption": "Add", "command": "git_add" } + ,{ "caption": "Add Selected Hunk", "command": "git_add_selected_hunk" } + ,{ "caption": "-" } + ,{ "caption": "Reset", "command": "git_reset_head" } + ,{ "caption": "Checkout (Discard Changes)", "command": "git_checkout" } + ,{ "caption": "-" } + ,{ "caption": "Quick Commit Current File", "command": "git_quick_commit" } + ,{ "caption": "Commit Selected Hunk", "command": "git_commit_selected_hunk" } + ,{ "caption": "-" } + ,{ "caption": "Blame", "command": "git_blame" } + ,{ "caption": "-" } + ,{ "caption": "Toggle Annotations", "command": "git_toggle_annotations" } + ] + } + ,{ + "caption": "Whole repo", + "children": + [ + { "caption": "Log", "command": "git_log_all" } + ,{ "caption": "Graph", "command": "git_graph_all" } + ,{ "caption": "-" } + ,{ "caption": "Diff", "command": "git_diff_all" } + ,{ "caption": "Diff Staged", "command": "git_diff_commit" } + ,{ "caption": "Diff Tool", "command": "git_diff_tool" } + ,{ "caption": "Reset Hard", "command": "git_reset_hard_head" } + ,{ "caption": "-" } + ,{ "caption": "Add...", "command": "git_add_choice" } + ,{ "caption": "-" } + ,{ "caption": "Reset", "command": "git_reset_head_all" } + ,{ "caption": "-" } + ,{ "caption": "Commit", "command": "git_commit" } + ,{ "caption": "Amend Last Commit", "command": "git_commit_amend" } + ,{ "caption": "-" } + ,{ "caption": "Open...", "command": "git_open_file" } + ] + } + ,{ + "caption": "Stash", + "children": + [ + { "caption": "Save", "command": "git_stash" } + ,{ "caption": "Pop", "command": "git_stash_pop" } + ,{ "caption": "Apply", "command": "git_stash_apply" } + ,{ "caption": "Drop", "command": "git_stash_drop" } + ] + } + ,{ "caption": "-" } + ,{ + "caption": "Flow", + "children": + [ + { "caption": "Feature Start", "command": "git_flow_feature_start"} + ,{ "caption": "Feature Finish", "command": "git_flow_feature_finish"} + ,{ "caption": "-"} + ,{ "caption": "Release Start", "command": "git_flow_release_start"} + ,{ "caption": "Release Finish", "command": "git_flow_release_finish"} + ,{ "caption": "-"} + ,{ "caption": "Hotfix Start", "command": "git_flow_hotfix_start"} + ,{ "caption": "Hotfix Finish", "command": "git_flow_hotfix_finish"} + ] + } + ,{ "caption": "-" } + ,{ "caption": "Init", "command": "git_init"} + ,{ "caption": "Status...", "command": "git_status" } + ,{ "caption": "Branches...", "command": "git_branch" } + ,{ "caption": "Merge...", "command": "git_merge" } + ,{ "caption": "See commit history...", "command": "git_commit_history"} + ] + } + ] + } + + ,{ + "caption": "Preferences", + "mnemonic": "n", + "id": "preferences", + "children": + [ + { + "caption": "Package Settings", + "mnemonic": "P", + "id": "package-settings", + "children": + [ + { + "caption": "Git", + "children": + [ + { + "command": "open_file", + "args": {"file": "${packages}/Git/Git.sublime-settings"}, + "caption": "Settings – Default" + }, + { + "command": "open_file", + "args": {"file": "${packages}/User/Git.sublime-settings"}, + "caption": "Settings – User" + }, + { "caption": "-" } + ] + } + ] + } + ] + } +] diff --git a/Git/README.markdown b/Git/README.markdown new file mode 100644 index 0000000..908e756 --- /dev/null +++ b/Git/README.markdown @@ -0,0 +1,22 @@ +# Sublime Text 2 plugin: git + +Git integration: it's pretty handy. Who knew, right? + +For more information about what's supported, and how to install this, [check the wiki](https://github.com/kemayo/sublime-text-2-git/wiki). + +## Install + +### Package Control + +The easiest way to install this is with [Package Control](http://wbond.net/sublime\_packages/package\_control). + + * If you just went and installed Package Control, you probably need to restart Sublime Text 2 before doing this next bit. + * Bring up the Command Palette (Command+Shift+p on OS X, Control+Shift+p on Linux/Windows). + * Select "Package Control: Install Package" (it'll take a few seconds) + * Select Git when the list appears. + +Package Control will automatically keep Git up to date with the latest version. + +### The rest + +If you don't want to use Package Control, [check the wiki](https://github.com/kemayo/sublime-text-2-git/wiki) for other installation methods on various platforms. diff --git a/Git/git.py b/Git/git.py new file mode 100644 index 0000000..3f59c9d --- /dev/null +++ b/Git/git.py @@ -0,0 +1,1292 @@ +import os +import sublime +import sublime_plugin +import threading +import subprocess +import functools +import tempfile +import os.path +import re +import time + +# when sublime loads a plugin it's cd'd into the plugin directory. Thus +# __file__ is useless for my purposes. What I want is "Packages/Git", but +# allowing for the possibility that someone has renamed the file. +# Fun discovery: Sublime on windows still requires posix path separators. +PLUGIN_DIRECTORY = os.getcwd().replace(os.path.normpath(os.path.join(os.getcwd(), '..', '..')) + os.path.sep, '').replace(os.path.sep, '/') + +history = [] + + +def main_thread(callback, *args, **kwargs): + # sublime.set_timeout gets used to send things onto the main thread + # most sublime.[something] calls need to be on the main thread + sublime.set_timeout(functools.partial(callback, *args, **kwargs), 0) + + +def open_url(url): + sublime.active_window().run_command('open_url', {"url": url}) + + +git_root_cache = {} +def git_root(directory): + global git_root_cache + + retval = False + leaf_dir = directory + + if leaf_dir in git_root_cache and git_root_cache[leaf_dir]['expires'] > time.time(): + return git_root_cache[leaf_dir]['retval'] + + while directory: + if os.path.exists(os.path.join(directory, '.git')): + retval = directory + break + parent = os.path.realpath(os.path.join(directory, os.path.pardir)) + if parent == directory: + # /.. == / + retval = False + break + directory = parent + + git_root_cache[leaf_dir] = { 'retval': retval, 'expires': time.time() + 5 } + + return retval + + +# for readability code +def git_root_exist(directory): + return git_root(directory) + + +def view_contents(view): + region = sublime.Region(0, view.size()) + return view.substr(region) + + +def plugin_file(name): + return os.path.join(PLUGIN_DIRECTORY, name) + + +def do_when(conditional, callback, *args, **kwargs): + if conditional(): + return callback(*args, **kwargs) + sublime.set_timeout(functools.partial(do_when, conditional, callback, *args, **kwargs), 50) + + +def _make_text_safeish(text, fallback_encoding, method='decode'): + # The unicode decode here is because sublime converts to unicode inside + # insert in such a way that unknown characters will cause errors, which is + # distinctly non-ideal... and there's no way to tell what's coming out of + # git in output. So... + try: + unitext = getattr(text, method)('utf-8') + except (UnicodeEncodeError, UnicodeDecodeError): + unitext = getattr(text, method)(fallback_encoding) + return unitext + + +class CommandThread(threading.Thread): + def __init__(self, command, on_done, working_dir="", fallback_encoding="", **kwargs): + threading.Thread.__init__(self) + self.command = command + self.on_done = on_done + self.working_dir = working_dir + if "stdin" in kwargs: + self.stdin = kwargs["stdin"] + else: + self.stdin = None + if "stdout" in kwargs: + self.stdout = kwargs["stdout"] + else: + self.stdout = subprocess.PIPE + self.fallback_encoding = fallback_encoding + self.kwargs = kwargs + + def run(self): + try: + # Per http://bugs.python.org/issue8557 shell=True is required to + # get $PATH on Windows. Yay portable code. + shell = os.name == 'nt' + if self.working_dir != "": + os.chdir(self.working_dir) + + proc = subprocess.Popen(self.command, + stdout=self.stdout, stderr=subprocess.STDOUT, + stdin=subprocess.PIPE, + shell=shell, universal_newlines=True) + output = proc.communicate(self.stdin)[0] + if not output: + output = '' + # if sublime's python gets bumped to 2.7 we can just do: + # output = subprocess.check_output(self.command) + main_thread(self.on_done, + _make_text_safeish(output, self.fallback_encoding), **self.kwargs) + except subprocess.CalledProcessError, e: + main_thread(self.on_done, e.returncode) + except OSError, e: + if e.errno == 2: + main_thread(sublime.error_message, "Git binary could not be found in PATH\n\nConsider using the git_command setting for the Git plugin\n\nPATH is: %s" % os.environ['PATH']) + else: + raise e + + +# A base for all commands +class GitCommand(object): + may_change_files = False + + def run_command(self, command, callback=None, show_status=True, + filter_empty_args=True, no_save=False, **kwargs): + if filter_empty_args: + command = [arg for arg in command if arg] + if 'working_dir' not in kwargs: + kwargs['working_dir'] = self.get_working_dir() + if 'fallback_encoding' not in kwargs and self.active_view() and self.active_view().settings().get('fallback_encoding'): + kwargs['fallback_encoding'] = self.active_view().settings().get('fallback_encoding').rpartition('(')[2].rpartition(')')[0] + + s = sublime.load_settings("Git.sublime-settings") + if s.get('save_first') and self.active_view() and self.active_view().is_dirty() and not no_save: + self.active_view().run_command('save') + if command[0] == 'git' and s.get('git_command'): + command[0] = s.get('git_command') + if command[0] == 'git-flow' and s.get('git_flow_command'): + command[0] = s.get('git_flow_command') + if not callback: + callback = self.generic_done + + thread = CommandThread(command, callback, **kwargs) + thread.start() + + if show_status: + message = kwargs.get('status_message', False) or ' '.join(command) + sublime.status_message(message) + + def generic_done(self, result): + if self.may_change_files and self.active_view() and self.active_view().file_name(): + if self.active_view().is_dirty(): + result = "WARNING: Current view is dirty.\n\n" + else: + # just asking the current file to be re-opened doesn't do anything + print "reverting" + position = self.active_view().viewport_position() + self.active_view().run_command('revert') + do_when(lambda: not self.active_view().is_loading(), lambda: self.active_view().set_viewport_position(position, False)) + # self.active_view().show(position) + + view = self.active_view() + if view and view.settings().get('live_git_annotations'): + self.view.run_command('git_annotate') + + if not result.strip(): + return + self.panel(result) + + def _output_to_view(self, output_file, output, clear=False, + syntax="Packages/Diff/Diff.tmLanguage", **kwargs): + output_file.set_syntax_file(syntax) + edit = output_file.begin_edit() + if clear: + region = sublime.Region(0, self.output_view.size()) + output_file.erase(edit, region) + output_file.insert(edit, 0, output) + output_file.end_edit(edit) + + def scratch(self, output, title=False, position=None, **kwargs): + scratch_file = self.get_window().new_file() + if title: + scratch_file.set_name(title) + scratch_file.set_scratch(True) + self._output_to_view(scratch_file, output, **kwargs) + scratch_file.set_read_only(True) + if position: + sublime.set_timeout(lambda: scratch_file.set_viewport_position(position), 0) + return scratch_file + + def panel(self, output, **kwargs): + if not hasattr(self, 'output_view'): + self.output_view = self.get_window().get_output_panel("git") + self.output_view.set_read_only(False) + self._output_to_view(self.output_view, output, clear=True, **kwargs) + self.output_view.set_read_only(True) + self.get_window().run_command("show_panel", {"panel": "output.git"}) + + def quick_panel(self, *args, **kwargs): + self.get_window().show_quick_panel(*args, **kwargs) + + +# A base for all git commands that work with the entire repository +class GitWindowCommand(GitCommand, sublime_plugin.WindowCommand): + def active_view(self): + return self.window.active_view() + + def _active_file_name(self): + view = self.active_view() + if view and view.file_name() and len(view.file_name()) > 0: + return view.file_name() + + @property + def fallback_encoding(self): + if self.active_view() and self.active_view().settings().get('fallback_encoding'): + return self.active_view().settings().get('fallback_encoding').rpartition('(')[2].rpartition(')')[0] + + # If there's no active view or the active view is not a file on the + # filesystem (e.g. a search results view), we can infer the folder + # that the user intends Git commands to run against when there's only + # only one. + def is_enabled(self): + if self._active_file_name() or len(self.window.folders()) == 1: + return git_root(self.get_working_dir()) + + def get_file_name(self): + return '' + + # If there is a file in the active view use that file's directory to + # search for the Git root. Otherwise, use the only folder that is + # open. + def get_working_dir(self): + file_name = self._active_file_name() + if file_name: + return os.path.realpath(os.path.dirname(file_name)) + else: + try: # handle case with no open folder + return self.window.folders()[0] + except IndexError: + return '' + + def get_window(self): + return self.window + + +# A base for all git commands that work with the file in the active view +class GitTextCommand(GitCommand, sublime_plugin.TextCommand): + def active_view(self): + return self.view + + def is_enabled(self): + # First, is this actually a file on the file system? + if self.view.file_name() and len(self.view.file_name()) > 0: + return git_root(self.get_working_dir()) + + def get_file_name(self): + return os.path.basename(self.view.file_name()) + + def get_working_dir(self): + return os.path.realpath(os.path.dirname(self.view.file_name())) + + def get_window(self): + # Fun discovery: if you switch tabs while a command is working, + # self.view.window() is None. (Admittedly this is a consequence + # of my deciding to do async command processing... but, hey, + # got to live with that now.) + # I did try tracking the window used at the start of the command + # and using it instead of view.window() later, but that results + # panels on a non-visible window, which is especially useless in + # the case of the quick panel. + # So, this is not necessarily ideal, but it does work. + return self.view.window() or sublime.active_window() + + +class GitInit(object): + def git_init(self, directory): + if os.path.exists(directory): + self.run_command(['git', 'init'], self.git_inited, working_dir = directory) + else: + sublime.status_message("Directory does not exist.") + + def git_inited(self, result): + sublime.status_message(result) + + +class GitInitCommand(GitInit, GitWindowCommand): + def run(self): + self.get_window().show_input_panel("Git directory", self.get_working_dir(), self.git_init, None, None) + + def is_enabled(self): + if not git_root_exist(self.get_working_dir()): + return True + else: + return False + + +class GitBlameCommand(GitTextCommand): + def run(self, edit): + # somewhat custom blame command: + # -w: ignore whitespace changes + # -M: retain blame when moving lines + # -C: retain blame when copying lines between files + command = ['git', 'blame', '-w', '-M', '-C'] + + s = sublime.load_settings("Git.sublime-settings") + selection = self.view.sel()[0] # todo: multi-select support? + if not selection.empty() or not s.get('blame_whole_file'): + # just the lines we have a selection on + begin_line, begin_column = self.view.rowcol(selection.begin()) + end_line, end_column = self.view.rowcol(selection.end()) + # blame will fail if last line is empty and is included in the selection + if end_line > begin_line and end_column == 0: + end_line -= 1 + lines = str(begin_line + 1) + ',' + str(end_line + 1) + command.extend(('-L', lines)) + callback = self.blame_done + else: + callback = functools.partial(self.blame_done, + position=self.view.viewport_position()) + + command.append(self.get_file_name()) + self.run_command(command, callback) + + def blame_done(self, result, position=None): + self.scratch(result, title="Git Blame", position=position, + syntax=plugin_file("Git Blame.tmLanguage")) + + +class GitLog(object): + def run(self, edit=None): + return self.run_log('--', self.get_file_name()) + + def run_log(self, *args): + # the ASCII bell (\a) is just a convenient character I'm pretty sure + # won't ever come up in the subject of the commit (and if it does then + # you positively deserve broken output...) + # 9000 is a pretty arbitrarily chosen limit; picked entirely because + # it's about the size of the largest repo I've tested this on... and + # there's a definite hiccup when it's loading that + command = ['git', 'log', '--pretty=%s\a%h %an <%aE>\a%ad (%ar)', + '--date=local', '--max-count=9000', '--follow' if args[1] else None] + command.extend(args) + self.run_command( + command, + self.log_done) + + def log_done(self, result): + self.results = [r.split('\a', 2) for r in result.strip().split('\n')] + self.quick_panel(self.results, self.log_panel_done) + + def log_panel_done(self, picked): + if 0 > picked < len(self.results): + return + item = self.results[picked] + # the commit hash is the first thing on the second line + self.log_result(item[1].split(' ')[0]) + + def log_result(self, ref): + # I'm not certain I should have the file name here; it restricts the + # details to just the current file. Depends on what the user expects... + # which I'm not sure of. + self.run_command( + ['git', 'log', '-p', '-1', ref, '--', self.get_file_name()], + self.details_done) + + def details_done(self, result): + self.scratch(result, title="Git Commit Details", syntax=plugin_file("Git Commit Message.tmLanguage")) + + +class GitLogCommand(GitLog, GitTextCommand): + pass + + +class GitLogAllCommand(GitLog, GitWindowCommand): + pass + + +class GitShow(object): + def run(self, edit=None): + # GitLog Copy-Past + self.run_command( + ['git', 'log', '--pretty=%s\a%h %an <%aE>\a%ad (%ar)', + '--date=local', '--max-count=9000', '--', self.get_file_name()], + self.show_done) + + def show_done(self, result): + # GitLog Copy-Past + self.results = [r.split('\a', 2) for r in result.strip().split('\n')] + self.quick_panel(self.results, self.panel_done) + + def panel_done(self, picked): + if 0 > picked < len(self.results): + return + item = self.results[picked] + # the commit hash is the first thing on the second line + ref = item[1].split(' ')[0] + # Make full file name + working_dir = self.get_working_dir() + file_path = working_dir.replace(git_root(working_dir), '')[1:] + file_name = os.path.join(file_path, self.get_file_name()) + self.run_command( + ['git', 'show', '%s:%s' % (ref, file_name)], + self.details_done, + ref=ref) + + def details_done(self, result, ref): + syntax = self.view.settings().get('syntax') + self.scratch(result, title="%s:%s" % (ref, self.get_file_name()), syntax=syntax) + + +class GitShowCommand(GitShow, GitTextCommand): + pass + + +class GitShowAllCommand(GitShow, GitWindowCommand): + pass + + +class GitGraph(object): + def run(self, edit=None): + filename = self.get_file_name() + self.run_command( + ['git', 'log', '--graph', '--pretty=%h -%d (%cr) (%ci) <%an> %s', '--abbrev-commit', '--no-color', '--decorate', '--date=relative', '--follow' if filename else None, '--', filename], + self.log_done + ) + + def log_done(self, result): + self.scratch(result, title="Git Log Graph", syntax=plugin_file("Git Graph.tmLanguage")) + + +class GitGraphCommand(GitGraph, GitTextCommand): + pass + +class GitGraphAllCommand(GitGraph, GitWindowCommand): + pass + +class GitDiff (object): + def run(self, edit=None): + self.run_command(['git', 'diff', '--no-color', '--', self.get_file_name()], + self.diff_done) + + def diff_done(self, result): + if not result.strip(): + self.panel("No output") + return + s = sublime.load_settings("Git.sublime-settings") + if s.get('diff_panel'): + view = self.panel(result) + else: + view = self.scratch(result, title="Git Diff") + + lines_inserted = view.find_all(r'^\+[^+]{2} ') + lines_deleted = view.find_all(r'^-[^-]{2} ') + + view.add_regions("inserted", lines_inserted, "markup.inserted.diff", "dot", sublime.HIDDEN) + view.add_regions("deleted", lines_deleted, "markup.deleted.diff", "dot", sublime.HIDDEN) + + +class GitDiffCommit (object): + def run(self, edit=None): + self.run_command(['git', 'diff', '--cached', '--no-color'], + self.diff_done) + + def diff_done(self, result): + if not result.strip(): + self.panel("No output") + return + self.scratch(result, title="Git Diff") + + +class GitDiffCommand(GitDiff, GitTextCommand): + pass + + +class GitDiffAllCommand(GitDiff, GitWindowCommand): + pass + + +class GitDiffCommitCommand(GitDiffCommit, GitWindowCommand): + pass + + +class GitDiffTool(GitWindowCommand): + def run(self): + self.run_command(['git', 'difftool']) + + +class GitQuickCommitCommand(GitTextCommand): + def run(self, edit): + self.get_window().show_input_panel("Message", "", + self.on_input, None, None) + + def on_input(self, message): + if message.strip() == "": + self.panel("No commit message provided") + return + self.run_command(['git', 'add', self.get_file_name()], + functools.partial(self.add_done, message)) + + def add_done(self, message, result): + if result.strip(): + sublime.error_message("Error adding file:\n" + result) + return + self.run_command(['git', 'commit', '-m', message]) + + +# Commit is complicated. It'd be easy if I just wanted to let it run +# on OSX, and assume that subl was in the $PATH. However... I can't do +# that. Second choice was to set $GIT_EDITOR to sublime text for the call +# to commit, and let that Just Work. However, on Windows you can't pass +# -w to sublime, which means the editor won't wait, and so the commit will fail +# with an empty message. +# Thus this flow: +# 1. `status --porcelain --untracked-files=no` to know whether files need +# to be committed +# 2. `status` to get a template commit message (not the exact one git uses; I +# can't see a way to ask it to output that, which is not quite ideal) +# 3. Create a scratch buffer containing the template +# 4. When this buffer is closed, get its contents with an event handler and +# pass execution back to the original command. (I feel that the way this +# is done is a total hack. Unfortunately, I cannot see a better way right +# now.) +# 5. Strip lines beginning with # from the message, and save in a temporary +# file +# 6. `commit -F [tempfile]` +class GitCommitCommand(GitWindowCommand): + active_message = False + extra_options = "" + + def run(self): + self.lines = [] + self.working_dir = self.get_working_dir() + self.run_command( + ['git', 'status', '--untracked-files=no', '--porcelain'], + self.porcelain_status_done + ) + + def porcelain_status_done(self, result): + # todo: split out these status-parsing things... asdf + has_staged_files = False + result_lines = result.rstrip().split('\n') + for line in result_lines: + if line and not line[0].isspace(): + has_staged_files = True + break + if not has_staged_files: + self.panel("Nothing to commit") + return + # Okay, get the template! + s = sublime.load_settings("Git.sublime-settings") + if s.get("verbose_commits"): + self.run_command(['git', 'diff', '--staged', '--no-color'], self.diff_done) + else: + self.run_command(['git', 'status'], self.diff_done) + + def diff_done(self, result): + settings = sublime.load_settings("Git.sublime-settings") + historySize = settings.get('history_size') + + def format(line): + return '# ' + line.replace("\n", " ") + + if not len(self.lines): + self.lines = ["", ""] + + self.lines.extend(map(format, history[:historySize])) + self.lines.extend([ + "# --------------", + "# Please enter the commit message for your changes. Everything below", + "# this paragraph is ignored, and an empty message aborts the commit.", + "# Just close the window to accept your message.", + result.strip() + ]) + template = "\n".join(self.lines) + msg = self.window.new_file() + msg.set_scratch(True) + msg.set_name("COMMIT_EDITMSG") + self._output_to_view(msg, template, syntax=plugin_file("Git Commit Message.tmLanguage")) + msg.sel().clear() + msg.sel().add(sublime.Region(0, 0)) + GitCommitCommand.active_message = self + + def message_done(self, message): + # filter out the comments (git commit doesn't do this automatically) + settings = sublime.load_settings("Git.sublime-settings") + historySize = settings.get('history_size') + lines = [line for line in message.split("\n# --------------")[0].split("\n") + if not line.lstrip().startswith('#')] + message = '\n'.join(lines).strip() + + if len(message) and historySize: + history.insert(0, message) + # write the temp file + message_file = tempfile.NamedTemporaryFile(delete=False) + message_file.write(_make_text_safeish(message, self.fallback_encoding, 'encode')) + message_file.close() + self.message_file = message_file + # and actually commit + self.run_command(['git', 'commit', '-F', message_file.name, self.extra_options], + self.commit_done, working_dir=self.working_dir) + + def commit_done(self, result): + os.remove(self.message_file.name) + self.panel(result) + +class GitCommitAmendCommand(GitCommitCommand): + extra_options = "--amend" + + def diff_done(self, result): + self.after_show = result + self.run_command(['git','log','-n','1','--format=format:%B'], self.amend_diff_done) + + def amend_diff_done(self, result): + self.lines = result.split("\n") + super(GitCommitAmendCommand, self).diff_done(self.after_show) + +class GitCommitMessageListener(sublime_plugin.EventListener): + def on_close(self, view): + if view.name() != "COMMIT_EDITMSG": + return + command = GitCommitCommand.active_message + if not command: + return + message = view_contents(view) + command.message_done(message) + + +class GitCommitHistoryCommand(sublime_plugin.TextCommand): + def run(self, edit): + self.edit = edit + self.view.window().show_quick_panel(history, self.panel_done, sublime.MONOSPACE_FONT) + + def panel_done(self, index): + if index > -1: + self.view.replace(self.edit, self.view.sel()[0], history[index] + '\n') + + +class GitStatusCommand(GitWindowCommand): + force_open = False + + def run(self): + self.run_command(['git', 'status', '--porcelain'], self.status_done) + + def status_done(self, result): + self.results = filter(self.status_filter, result.rstrip().split('\n')) + if len(self.results): + self.show_status_list() + else: + sublime.status_message("Nothing to show") + + def show_status_list(self): + self.quick_panel(self.results, self.panel_done, + sublime.MONOSPACE_FONT) + + def status_filter(self, item): + # for this class we don't actually care + return len(item) > 0 + + def panel_done(self, picked): + if 0 > picked < len(self.results): + return + picked_file = self.results[picked] + # first 2 characters are status codes, the third is a space + picked_status = picked_file[:2] + picked_file = picked_file[3:] + self.panel_followup(picked_status, picked_file, picked) + + def panel_followup(self, picked_status, picked_file, picked_index): + # split out solely so I can override it for laughs + + s = sublime.load_settings("Git.sublime-settings") + root = git_root(self.get_working_dir()) + if picked_status == '??' or s.get('status_opens_file') or self.force_open: + if(os.path.isfile(os.path.join(root, picked_file))): self.window.open_file(os.path.join(root, picked_file)) + else: + self.run_command(['git', 'diff', '--no-color', '--', picked_file.strip('"')], + self.diff_done, working_dir=root) + + def diff_done(self, result): + if not result.strip(): + return + self.scratch(result, title="Git Diff") + +class GitOpenModifiedFilesCommand(GitStatusCommand): + force_open = True + + def show_status_list(self): + for line_index in range(0, len(self.results)): + self.panel_done(line_index) + +class GitAddChoiceCommand(GitStatusCommand): + def status_filter(self, item): + return not item[1].isspace() + + def show_status_list(self): + self.results = [[" + All Files", "apart from untracked files"], [" + All Files", "including untracked files"]] + self.results + self.quick_panel(self.results, self.panel_done, + sublime.MONOSPACE_FONT) + + def panel_followup(self, picked_status, picked_file, picked_index): + working_dir=git_root(self.get_working_dir()) + + if picked_index == 0: + command = ['git', 'add', '--update'] + elif picked_index == 1: + command = ['git', 'add', '--all'] + else: + command = ['git'] + picked_file = picked_file.strip('"') + if os.path.isfile(working_dir+"/"+picked_file): + command += ['add'] + else: + command += ['rm'] + command += ['--', picked_file] + + self.run_command(command, self.rerun, + working_dir=working_dir) + + def rerun(self, result): + self.run() + + +class GitAdd(GitTextCommand): + def run(self, edit): + self.run_command(['git', 'add', self.get_file_name()]) + + +class GitStashCommand(GitWindowCommand): + may_change_files = True + + def run(self): + self.run_command(['git', 'stash']) + + +class GitStashPopCommand(GitWindowCommand): + def run(self): + self.run_command(['git', 'stash', 'pop']) + + +class GitStashApplyCommand(GitWindowCommand): + may_change_files = True + command_to_run_after_list = 'apply' + + def run(self): + self.run_command(['git', 'stash', 'list'], self.stash_list_done) + + def stash_list_done(self, result): + # No stash list at all + if not result: + self.panel('No stash found') + return + + self.results = result.rstrip().split('\n') + + # If there is only one, apply it + if len(self.results) == 1: + self.stash_list_panel_done() + else: + self.quick_panel(self.results, self.stash_list_panel_done) + + def stash_list_panel_done(self, picked=0): + if 0 > picked < len(self.results): + return + + # get the stash ref (e.g. stash@{3}) + self.stash = self.results[picked].split(':')[0] + self.run_command(['git', 'stash', self.command_to_run_after_list, self.stash]) + + +class GitStashDropCommand(GitStashApplyCommand): + command_to_run_after_list = 'drop' + + +class GitOpenFileCommand(GitLog, GitWindowCommand): + def run(self): + self.run_command(['git', 'branch', '-a', '--no-color'], self.branch_done) + + def branch_done(self, result): + self.results = result.rstrip().split('\n') + self.quick_panel(self.results, self.branch_panel_done, + sublime.MONOSPACE_FONT) + + def branch_panel_done(self, picked): + if 0 > picked < len(self.results): + return + self.branch = self.results[picked].split(' ')[-1] + self.run_log(self.branch) + + def log_result(self, result_hash): + # the commit hash is the first thing on the second line + self.ref = result_hash + self.run_command( + ['git', 'ls-tree', '-r', '--full-tree', self.ref], + self.ls_done) + + def ls_done(self, result): + # Last two items are the ref and the file name + # p.s. has to be a list of lists; tuples cause errors later + self.results = [[match.group(2), match.group(1)] for match in re.finditer(r"\S+\s(\S+)\t(.+)", result)] + + self.quick_panel(self.results, self.ls_panel_done) + + def ls_panel_done(self, picked): + if 0 > picked < len(self.results): + return + item = self.results[picked] + + self.filename = item[0] + self.fileRef = item[1] + + self.run_command( + ['git', 'show', self.fileRef], + self.show_done) + + def show_done(self, result): + self.scratch(result, title="%s:%s" % (self.fileRef, self.filename)) + + +class GitBranchCommand(GitWindowCommand): + may_change_files = True + command_to_run_after_branch = ['checkout'] + extra_flags = [] + + def run(self): + self.run_command(['git', 'branch', '--no-color'] + self.extra_flags, self.branch_done) + + def branch_done(self, result): + self.results = result.rstrip().split('\n') + self.quick_panel(self.results, self.panel_done, + sublime.MONOSPACE_FONT) + + def panel_done(self, picked): + if 0 > picked < len(self.results): + return + picked_branch = self.results[picked] + if picked_branch.startswith("*"): + return + picked_branch = picked_branch.strip() + self.run_command(['git'] + self.command_to_run_after_branch + [picked_branch], self.update_status) + + def update_status(self, result): + global branch + branch = "" + for view in self.window.views(): + view.run_command("git_branch_status") + +class GitMergeCommand(GitBranchCommand): + command_to_run_after_branch = ['merge'] + extra_flags = ['--no-merge'] + +class GitDeleteBranchCommand(GitBranchCommand): + command_to_run_after_branch = ['branch', '-d'] + +class GitNewBranchCommand(GitWindowCommand): + def run(self): + self.get_window().show_input_panel("Branch name", "", + self.on_input, None, None) + + def on_input(self, branchname): + if branchname.strip() == "": + self.panel("No branch name provided") + return + self.run_command(['git', 'checkout', '-b', branchname]) + + +class GitNewTagCommand(GitWindowCommand): + def run(self): + self.get_window().show_input_panel("Tag name", "", self.on_input, None, None) + + def on_input(self, tagname): + if not tagname.strip(): + self.panel("No branch name provided") + return + self.run_command(['git', 'tag', tagname]) + +class GitShowTagsCommand(GitWindowCommand): + def run(self): + self.run_command(['git', 'tag'], self.fetch_tag) + + def fetch_tag(self, result): + self.results = result.rstrip().split('\n') + self.quick_panel(self.results, self.panel_done) + + def panel_done(self, picked): + if 0 > picked < len(self.results): + return + picked_tag = self.results[picked] + picked_tag = picked_tag.strip() + self.run_command(['git', 'show', picked_tag]) + +class GitPushTagsCommand(GitWindowCommand): + def run(self): + self.run_command(['git', 'push', '--tags']) + + +class GitCheckoutCommand(GitTextCommand): + may_change_files = True + + def run(self, edit): + self.run_command(['git', 'checkout', self.get_file_name()]) + + +class GitFetchCommand(GitWindowCommand): + def run(self): + self.run_command(['git', 'fetch'], callback=self.panel) + + +class GitPullCommand(GitWindowCommand): + def run(self): + self.run_command(['git', 'pull'], callback=self.panel) + + +class GitPullCurrentBranchCommand(GitWindowCommand): + command_to_run_after_describe = 'pull' + + def run(self): + self.run_command(['git', 'describe', '--contains', '--all', 'HEAD'], callback=self.describe_done) + + def describe_done(self, result): + self.current_branch = result.strip() + self.run_command(['git', 'remote'], callback=self.remote_done) + + def remote_done(self, result): + self.remotes = result.rstrip().split('\n') + if len(self.remotes) == 1: + self.panel_done() + else: + self.quick_panel(self.remotes, self.panel_done, sublime.MONOSPACE_FONT) + + def panel_done(self, picked=0): + if picked < 0 or picked >= len(self.remotes): + return + self.picked_remote = self.remotes[picked] + self.picked_remote = self.picked_remote.strip() + self.run_command(['git', self.command_to_run_after_describe, self.picked_remote, self.current_branch]) + + +class GitPushCommand(GitWindowCommand): + def run(self): + self.run_command(['git', 'push'], callback=self.panel) + + +class GitPushCurrentBranchCommand(GitPullCurrentBranchCommand): + command_to_run_after_describe = 'push' + + +class GitCustomCommand(GitWindowCommand): + may_change_files = True + + def run(self): + self.get_window().show_input_panel("Git command", "", + self.on_input, None, None) + + def on_input(self, command): + command = str(command) # avoiding unicode + if command.strip() == "": + self.panel("No git command provided") + return + import shlex + command_splitted = ['git'] + shlex.split(command) + print command_splitted + self.run_command(command_splitted) + +class GitFlowCommand(GitWindowCommand): + def is_visible(self): + s = sublime.load_settings("Git.sublime-settings") + if s.get('flow'): + return True + +class GitFlowFeatureStartCommand(GitFlowCommand): + def run(self): + self.get_window().show_input_panel('Enter Feature Name:', '', self.on_done, None, None) + + def on_done(self, feature_name): + self.run_command(['git-flow', 'feature', 'start', feature_name]) + + +class GitFlowFeatureFinishCommand(GitFlowCommand): + def run(self): + self.run_command(['git-flow', 'feature'], self.feature_done) + + def feature_done(self, result): + self.results = result.rstrip().split('\n') + self.quick_panel(self.results, self.panel_done, + sublime.MONOSPACE_FONT) + + def panel_done(self, picked): + if 0 > picked < len(self.results): + return + picked_feature = self.results[picked] + if picked_feature.startswith("*"): + picked_feature = picked_feature.strip("*") + picked_feature = picked_feature.strip() + self.run_command(['git-flow', 'feature', 'finish', picked_feature]) + + +class GitFlowReleaseStartCommand(GitFlowCommand): + def run(self): + self.get_window().show_input_panel('Enter Version Number:', '', self.on_done, None, None) + + def on_done(self, release_name): + self.run_command(['git-flow', 'release', 'start', release_name]) + + +class GitFlowReleaseFinishCommand(GitFlowCommand): + def run(self): + self.run_command(['git-flow', 'release'], self.release_done) + + def release_done(self, result): + self.results = result.rstrip().split('\n') + self.quick_panel(self.results, self.panel_done, + sublime.MONOSPACE_FONT) + + def panel_done(self, picked): + if 0 > picked < len(self.results): + return + picked_release = self.results[picked] + if picked_release.startswith("*"): + picked_release = picked_release.strip("*") + picked_release = picked_release.strip() + self.run_command(['git-flow', 'release', 'finish', picked_release]) + + +class GitFlowHotfixStartCommand(GitFlowCommand): + def run(self): + self.get_window().show_input_panel('Enter hotfix name:', '', self.on_done, None, None) + + def on_done(self, hotfix_name): + self.run_command(['git-flow', 'hotfix', 'start', hotfix_name]) + + +class GitFlowHotfixFinishCommand(GitFlowCommand): + def run(self): + self.run_command(['git-flow', 'hotfix'], self.hotfix_done) + + def hotfix_done(self, result): + self.results = result.rstrip().split('\n') + self.quick_panel(self.results, self.panel_done, + sublime.MONOSPACE_FONT) + + def panel_done(self, picked): + if 0 > picked < len(self.results): + return + picked_hotfix = self.results[picked] + if picked_hotfix.startswith("*"): + picked_hotfix = picked_hotfix.strip("*") + picked_hotfix = picked_hotfix.strip() + self.run_command(['git-flow', 'hotfix', 'finish', picked_hotfix]) + +class GitResetHead(object): + def run(self, edit=None): + self.run_command(['git', 'reset', 'HEAD', self.get_file_name()]) + + def generic_done(self, result): + pass + + +class GitResetHeadCommand(GitResetHead, GitTextCommand): + pass + + +class GitResetHeadAllCommand(GitResetHead, GitWindowCommand): + pass + + +class GitResetHardHeadCommand(GitWindowCommand): + may_change_files = True + + def run(self): + if sublime.ok_cancel_dialog("Warning: this will reset your index and revert all files, throwing away all your uncommitted changes with no way to recover. Consider stashing your changes instead if you'd like to set them aside safely.", "Continue"): + self.run_command(['git', 'reset', '--hard', 'HEAD']) + + +class GitClearAnnotationCommand(GitTextCommand): + def run(self, view): + self.active_view().settings().set('live_git_annotations', False) + self.view.erase_regions('git.changes.x') + self.view.erase_regions('git.changes.+') + self.view.erase_regions('git.changes.-') + + +class GitToggleAnnotationsCommand(GitTextCommand): + def run(self, view): + if self.active_view().settings().get('live_git_annotations'): + self.view.run_command('git_clear_annotation') + else: + self.view.run_command('git_annotate') + + +class GitAnnotationListener(sublime_plugin.EventListener): + def on_modified(self, view): + if not view.settings().get('live_git_annotations'): + return + view.run_command('git_annotate') + def on_load(self, view): + s = sublime.load_settings("Git.sublime-settings") + if s.get('annotations'): + view.run_command('git_annotate') + + +class GitAnnotateCommand(GitTextCommand): + # Unfortunately, git diff does not support text from stdin, making a *live* annotation + # difficult. Therefore I had to resort to the system diff command. (Problems on win?) + # This works as follows: + # 1. When the command is run for the first time for this file, a temporary file with the + # current state of the HEAD is being pulled from git. + # 2. All consecutive runs will pass the current buffer into diffs stdin. The resulting + # output is then parsed and regions are set accordingly. + def run(self, view): + # If the annotations are already running, we dont have to create a new tmpfile + if hasattr(self, "tmp"): + self.compare_tmp(None) + return + self.tmp = tempfile.NamedTemporaryFile() + self.active_view().settings().set('live_git_annotations', True) + root = git_root(self.get_working_dir()) + repo_file = os.path.relpath(self.view.file_name(), root) + self.run_command(['git', 'show', 'HEAD:{0}'.format(repo_file)], show_status=False, no_save=True, callback=self.compare_tmp, stdout=self.tmp) + + def compare_tmp(self, result, stdout=None): + all_text = self.view.substr(sublime.Region(0, self.view.size())).encode("utf-8") + self.run_command(['diff', '--no-color', '-u', self.tmp.name, '-'], stdin=all_text, no_save=True, show_status=False, callback=self.parse_diff) + + # This is where the magic happens. At the moment, only one chunk format is supported. While + # the unified diff format theoritaclly supports more, I don't think git diff creates them. + def parse_diff(self, result, stdin=None): + lines = result.splitlines() + matcher = re.compile('^@@ -([0-9]*),([0-9]*) \+([0-9]*),([0-9]*) @@') + diff = [] + for line_index in range(0, len(lines)): + line = lines[line_index] + if not line.startswith('@'): + continue + match = matcher.match(line) + if not match: + continue + line_before, len_before, line_after, len_after = [int(match.group(x)) for x in [1, 2, 3, 4]] + chunk_index = line_index + 1 + tracked_line_index = line_after - 1 + deletion = False + insertion = False + while True: + line = lines[chunk_index] + if line.startswith('@'): + break + elif line.startswith('-'): + if not line.strip() == '-': + deletion = True + tracked_line_index -= 1 + elif line.startswith('+'): + if deletion and not line.strip() == '+': + diff.append(['x', tracked_line_index]) + insertion = True + elif not deletion: + insertion = True + diff.append(['+', tracked_line_index]) + else: + if not insertion and deletion: + diff.append(['-', tracked_line_index]) + insertion = deletion = False + tracked_line_index += 1 + chunk_index += 1 + if chunk_index >= len(lines): + break + + self.annotate(diff) + + # Once we got all lines with their specific change types (either x, +, or - for + # modified, added, or removed) we can create our regions and do the actual annotation. + def annotate(self, diff): + self.view.erase_regions('git.changes.x') + self.view.erase_regions('git.changes.+') + self.view.erase_regions('git.changes.-') + typed_diff = {'x': [], '+': [], '-': []} + for change_type, line in diff: + if change_type == '-': + full_region = self.view.full_line(self.view.text_point(line - 1, 0)) + position = full_region.begin() + for i in xrange(full_region.size()): + typed_diff[change_type].append(sublime.Region(position + i)) + else: + point = self.view.text_point(line, 0) + region = self.view.full_line(point) + if change_type == '-': + region = sublime.Region(point, point + 5) + typed_diff[change_type].append(region) + + for change in ['x', '+']: + self.view.add_regions("git.changes.{0}".format(change), typed_diff[change], 'git.changes.{0}'.format(change), 'dot', sublime.HIDDEN) + + self.view.add_regions("git.changes.-", typed_diff['-'], 'git.changes.-', 'dot', sublime.DRAW_EMPTY_AS_OVERWRITE) + + +class GitAddSelectedHunkCommand(GitTextCommand): + def run(self, edit): + self.run_command(['git', 'diff', '--no-color', '-U1', self.get_file_name()], self.cull_diff) + + def cull_diff(self, result): + selection = [] + for sel in self.view.sel(): + selection.append({ + "start": self.view.rowcol(sel.begin())[0] + 1, + "end": self.view.rowcol(sel.end())[0] + 1, + }) + + hunks = [{"diff":""}] + i = 0 + matcher = re.compile('^@@ -([0-9]*)(?:,([0-9]*))? \+([0-9]*)(?:,([0-9]*))? @@') + for line in result.splitlines(): + if line.startswith('@@'): + i += 1 + match = matcher.match(line) + start = int(match.group(3)) + end = match.group(4) + if end: + end = start + int(end) + else: + end = start + hunks.append({"diff": "", "start": start, "end": end}) + hunks[i]["diff"] += line + "\n" + + diffs = hunks[0]["diff"] + hunks.pop(0) + selection_is_hunky = False + for hunk in hunks: + for sel in selection: + if sel["end"] < hunk["start"]: + continue + if sel["start"] > hunk["end"]: + continue + diffs += hunk["diff"] # + "\n\nEND OF HUNK\n\n" + selection_is_hunky = True + + if selection_is_hunky: + self.run_command(['git', 'apply', '--cached'], stdin=diffs) + else: + sublime.status_message("No selected hunk") + + +class GitCommitSelectedHunk(GitAddSelectedHunkCommand): + def run(self, edit): + self.run_command(['git', 'diff', '--no-color', self.get_file_name()], self.cull_diff) + self.get_window().run_command('git_commit') + + + +class GitGuiCommand(GitTextCommand): + def run(self, edit): + command = ['git', 'gui'] + self.run_command(command) + + +class GitGitkCommand(GitTextCommand): + def run(self, edit): + command = ['gitk'] + self.run_command(command) + +class GitBranchStatusListener(sublime_plugin.EventListener): + def on_load(self, view): + view.run_command("git_branch_status") + +branch = "" +class GitBranchStatusCommand(GitTextCommand): + def run(self, view): + global branch + + if branch: + self.set_status(branch) + else: + self.run_command(['git','rev-parse','--abbrev-ref','HEAD'], self.branch_done, show_status=False) + + def branch_done(self, result): + global branch + branch = result.strip() + self.set_status(branch) + + def set_status(self, branch): + self.view.set_status("git-branch", "git branch: " + branch) diff --git a/Go/Comments.tmPreferences b/Go/Comments.tmPreferences new file mode 100644 index 0000000..1ac0b41 --- /dev/null +++ b/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/Go/Comments.tmPreferences.cache b/Go/Comments.tmPreferences.cache new file mode 100644 index 0000000..47ee97e Binary files /dev/null and b/Go/Comments.tmPreferences.cache differ diff --git a/Go/Empty ().tmSnippet b/Go/Empty ().tmSnippet new file mode 100644 index 0000000..1d325c4 --- /dev/null +++ b/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/Go/For Loop.tmSnippet b/Go/For Loop.tmSnippet new file mode 100644 index 0000000..0b36e88 --- /dev/null +++ b/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/Go/Go.tmLanguage b/Go/Go.tmLanguage new file mode 100644 index 0000000..07fec9a --- /dev/null +++ b/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/Go/Go.tmLanguage.cache b/Go/Go.tmLanguage.cache new file mode 100644 index 0000000..cf33cf7 Binary files /dev/null and b/Go/Go.tmLanguage.cache differ diff --git a/Go/If Statement.tmSnippet b/Go/If Statement.tmSnippet new file mode 100644 index 0000000..d420f0f --- /dev/null +++ b/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/Go/Indentation Rules.tmPreferences b/Go/Indentation Rules.tmPreferences new file mode 100644 index 0000000..549f561 --- /dev/null +++ b/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/Go/Indentation Rules.tmPreferences.cache b/Go/Indentation Rules.tmPreferences.cache new file mode 100644 index 0000000..21d0a36 Binary files /dev/null and b/Go/Indentation Rules.tmPreferences.cache differ diff --git a/Go/Struct.tmSnippet b/Go/Struct.tmSnippet new file mode 100644 index 0000000..b06ddfe --- /dev/null +++ b/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/Go/Type Function.tmSnippet b/Go/Type Function.tmSnippet new file mode 100644 index 0000000..4d20882 --- /dev/null +++ b/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/Go/func.tmSnippet b/Go/func.tmSnippet new file mode 100644 index 0000000..93c318c --- /dev/null +++ b/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/Go/go func().tmSnippet b/Go/go func().tmSnippet new file mode 100644 index 0000000..04a53a1 --- /dev/null +++ b/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/Go/import.tmSnippet b/Go/import.tmSnippet new file mode 100644 index 0000000..b8e974e --- /dev/null +++ b/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/Go/main().tmSnippet b/Go/main().tmSnippet new file mode 100644 index 0000000..76a2d5a --- /dev/null +++ b/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/Go/type.tmSnippet b/Go/type.tmSnippet new file mode 100644 index 0000000..cc8ca42 --- /dev/null +++ b/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/Graphviz/DOT.tmLanguage b/Graphviz/DOT.tmLanguage new file mode 100644 index 0000000..d9a9c66 --- /dev/null +++ b/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/Graphviz/DOT.tmLanguage.cache b/Graphviz/DOT.tmLanguage.cache new file mode 100644 index 0000000..81f6642 Binary files /dev/null and b/Graphviz/DOT.tmLanguage.cache differ diff --git a/Groovy/#!-usr-local-bin-groovy-w.sublime-snippet b/Groovy/#!-usr-local-bin-groovy-w.sublime-snippet new file mode 100644 index 0000000..2d4d306 --- /dev/null +++ b/Groovy/#!-usr-local-bin-groovy-w.sublime-snippet @@ -0,0 +1,8 @@ + + + #! + source.groovy + #!/usr/bin/env groovy -w + diff --git a/Groovy/Ant-__-replace.sublime-snippet b/Groovy/Ant-__-replace.sublime-snippet new file mode 100644 index 0000000..12792e1 --- /dev/null +++ b/Groovy/Ant-__-replace.sublime-snippet @@ -0,0 +1,6 @@ + + + replace + source.groovy + replace(dir: …, includes: …, token: …, value: …) + diff --git a/Groovy/Block-Comment.sublime-snippet b/Groovy/Block-Comment.sublime-snippet new file mode 100644 index 0000000..10925f0 --- /dev/null +++ b/Groovy/Block-Comment.sublime-snippet @@ -0,0 +1,8 @@ + + + doc + source.groovy + Doc Block + diff --git a/Groovy/Constructor.sublime-snippet b/Groovy/Constructor.sublime-snippet new file mode 100644 index 0000000..cf8267f --- /dev/null +++ b/Groovy/Constructor.sublime-snippet @@ -0,0 +1,8 @@ + + + con + source.groovy + constructor() { … } + diff --git a/Groovy/Groovy.tmLanguage b/Groovy/Groovy.tmLanguage new file mode 100644 index 0000000..2bb658d --- /dev/null +++ b/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/Groovy/Groovy.tmLanguage.cache b/Groovy/Groovy.tmLanguage.cache new file mode 100644 index 0000000..e89f7a8 Binary files /dev/null and b/Groovy/Groovy.tmLanguage.cache differ diff --git a/Groovy/Hash-Pair.sublime-snippet b/Groovy/Hash-Pair.sublime-snippet new file mode 100644 index 0000000..95aaef7 --- /dev/null +++ b/Groovy/Hash-Pair.sublime-snippet @@ -0,0 +1,6 @@ + + + : + source.groovy + key: "value" (Hash Pair) + diff --git a/Groovy/Symbol List%3A Class Variables.tmPreferences b/Groovy/Symbol List%3A Class Variables.tmPreferences new file mode 100644 index 0000000..a553104 --- /dev/null +++ b/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/Groovy/Symbol List%3A Class Variables.tmPreferences.cache b/Groovy/Symbol List%3A Class Variables.tmPreferences.cache new file mode 100644 index 0000000..7f311eb Binary files /dev/null and b/Groovy/Symbol List%3A Class Variables.tmPreferences.cache differ diff --git a/Groovy/Symbol List%3A Classes.tmPreferences b/Groovy/Symbol List%3A Classes.tmPreferences new file mode 100644 index 0000000..2cfbc95 --- /dev/null +++ b/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/Groovy/Symbol List%3A Classes.tmPreferences.cache b/Groovy/Symbol List%3A Classes.tmPreferences.cache new file mode 100644 index 0000000..eb1afa7 Binary files /dev/null and b/Groovy/Symbol List%3A Classes.tmPreferences.cache differ diff --git a/Groovy/Symbol List%3A Methods.tmPreferences b/Groovy/Symbol List%3A Methods.tmPreferences new file mode 100644 index 0000000..fb52dd2 --- /dev/null +++ b/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/Groovy/Symbol List%3A Methods.tmPreferences.cache b/Groovy/Symbol List%3A Methods.tmPreferences.cache new file mode 100644 index 0000000..6e920f6 Binary files /dev/null and b/Groovy/Symbol List%3A Methods.tmPreferences.cache differ diff --git a/Groovy/Symbol List%3A Variables.tmPreferences b/Groovy/Symbol List%3A Variables.tmPreferences new file mode 100644 index 0000000..0583a06 --- /dev/null +++ b/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/Groovy/Symbol List%3A Variables.tmPreferences.cache b/Groovy/Symbol List%3A Variables.tmPreferences.cache new file mode 100644 index 0000000..dd2953b Binary files /dev/null and b/Groovy/Symbol List%3A Variables.tmPreferences.cache differ diff --git a/Groovy/Thread_start-{-__-}.sublime-snippet b/Groovy/Thread_start-{-__-}.sublime-snippet new file mode 100644 index 0000000..d74afc4 --- /dev/null +++ b/Groovy/Thread_start-{-__-}.sublime-snippet @@ -0,0 +1,8 @@ + + + thread + source.groovy + Thread.start { … } + diff --git a/Groovy/Thread_startDaemon-{-__-}.sublime-snippet b/Groovy/Thread_startDaemon-{-__-}.sublime-snippet new file mode 100644 index 0000000..2f5c7c4 --- /dev/null +++ b/Groovy/Thread_startDaemon-{-__-}.sublime-snippet @@ -0,0 +1,8 @@ + + + thread + source.groovy + Thread.startDaemon { … } + diff --git a/Groovy/all{-e-__-}.sublime-snippet b/Groovy/all{-e-__-}.sublime-snippet new file mode 100644 index 0000000..eab6e09 --- /dev/null +++ b/Groovy/all{-e-__-}.sublime-snippet @@ -0,0 +1,8 @@ + + )/} + $0 +}]]> + all + source.groovy + all { … } + diff --git a/Groovy/any{-e-__-}.sublime-snippet b/Groovy/any{-e-__-}.sublime-snippet new file mode 100644 index 0000000..fe86c68 --- /dev/null +++ b/Groovy/any{-e-__-}.sublime-snippet @@ -0,0 +1,8 @@ + + )/} + $0 +}]]> + any + source.groovy + any { … } + diff --git a/Groovy/as-BigDecimal.sublime-snippet b/Groovy/as-BigDecimal.sublime-snippet new file mode 100644 index 0000000..02658b0 --- /dev/null +++ b/Groovy/as-BigDecimal.sublime-snippet @@ -0,0 +1,6 @@ + + + as + source.groovy + as BigDecimal + diff --git a/Groovy/as-BigInteger.sublime-snippet b/Groovy/as-BigInteger.sublime-snippet new file mode 100644 index 0000000..13698c7 --- /dev/null +++ b/Groovy/as-BigInteger.sublime-snippet @@ -0,0 +1,6 @@ + + + as + source.groovy + as BigInteger + diff --git a/Groovy/as-Double.sublime-snippet b/Groovy/as-Double.sublime-snippet new file mode 100644 index 0000000..3d9ac60 --- /dev/null +++ b/Groovy/as-Double.sublime-snippet @@ -0,0 +1,6 @@ + + + as + source.groovy + as Double + diff --git a/Groovy/as-Float.sublime-snippet b/Groovy/as-Float.sublime-snippet new file mode 100644 index 0000000..be64fa6 --- /dev/null +++ b/Groovy/as-Float.sublime-snippet @@ -0,0 +1,6 @@ + + + as + source.groovy + as Float + diff --git a/Groovy/as-Immutable.sublime-snippet b/Groovy/as-Immutable.sublime-snippet new file mode 100644 index 0000000..f785d06 --- /dev/null +++ b/Groovy/as-Immutable.sublime-snippet @@ -0,0 +1,6 @@ + + + .as + source.groovy + asImmutable() + diff --git a/Groovy/as-Set.sublime-snippet b/Groovy/as-Set.sublime-snippet new file mode 100644 index 0000000..09a8d6d --- /dev/null +++ b/Groovy/as-Set.sublime-snippet @@ -0,0 +1,6 @@ + + + as + source.groovy + as Set + diff --git a/Groovy/as-String.sublime-snippet b/Groovy/as-String.sublime-snippet new file mode 100644 index 0000000..e9ff514 --- /dev/null +++ b/Groovy/as-String.sublime-snippet @@ -0,0 +1,6 @@ + + + as + source.groovy + as String + diff --git a/Groovy/as-Synchronized.sublime-snippet b/Groovy/as-Synchronized.sublime-snippet new file mode 100644 index 0000000..f012910 --- /dev/null +++ b/Groovy/as-Synchronized.sublime-snippet @@ -0,0 +1,6 @@ + + + .as + source.groovy + asSynchronized() + diff --git a/Groovy/as-Writable.sublime-snippet b/Groovy/as-Writable.sublime-snippet new file mode 100644 index 0000000..3b634f4 --- /dev/null +++ b/Groovy/as-Writable.sublime-snippet @@ -0,0 +1,6 @@ + + + as + source.groovy + as Writable + diff --git a/Groovy/assert(__).sublime-snippet b/Groovy/assert(__).sublime-snippet new file mode 100644 index 0000000..37069d1 --- /dev/null +++ b/Groovy/assert(__).sublime-snippet @@ -0,0 +1,6 @@ + + + ! + source.groovy + assert + diff --git a/Groovy/assertEquals(__).sublime-snippet b/Groovy/assertEquals(__).sublime-snippet new file mode 100644 index 0000000..f1cbfae --- /dev/null +++ b/Groovy/assertEquals(__).sublime-snippet @@ -0,0 +1,6 @@ + + + ase + source.groovy + assertEquals + diff --git a/Groovy/assertFalse.sublime-snippet b/Groovy/assertFalse.sublime-snippet new file mode 100644 index 0000000..9d3fe8c --- /dev/null +++ b/Groovy/assertFalse.sublime-snippet @@ -0,0 +1,6 @@ + + + asf + source.groovy + assertFalse + diff --git a/Groovy/assertNotEquals(__).sublime-snippet b/Groovy/assertNotEquals(__).sublime-snippet new file mode 100644 index 0000000..e7c2d3e --- /dev/null +++ b/Groovy/assertNotEquals(__).sublime-snippet @@ -0,0 +1,6 @@ + + + asne + source.groovy + assertNotEquals + diff --git a/Groovy/assertNotNull(__).sublime-snippet b/Groovy/assertNotNull(__).sublime-snippet new file mode 100644 index 0000000..1894c63 --- /dev/null +++ b/Groovy/assertNotNull(__).sublime-snippet @@ -0,0 +1,6 @@ + + + asnn + source.groovy + assertNotNull + diff --git a/Groovy/assertNull(__).sublime-snippet b/Groovy/assertNull(__).sublime-snippet new file mode 100644 index 0000000..e6d0024 --- /dev/null +++ b/Groovy/assertNull(__).sublime-snippet @@ -0,0 +1,6 @@ + + + asn + source.groovy + assertNull + diff --git a/Groovy/assertSame.sublime-snippet b/Groovy/assertSame.sublime-snippet new file mode 100644 index 0000000..6ed0be7 --- /dev/null +++ b/Groovy/assertSame.sublime-snippet @@ -0,0 +1,6 @@ + + + ass + source.groovy + assertSame + diff --git a/Groovy/assertTrue.sublime-snippet b/Groovy/assertTrue.sublime-snippet new file mode 100644 index 0000000..f5bd131 --- /dev/null +++ b/Groovy/assertTrue.sublime-snippet @@ -0,0 +1,6 @@ + + + ast + source.groovy + assertTrue + diff --git a/Groovy/case.sublime-snippet b/Groovy/case.sublime-snippet new file mode 100644 index 0000000..4902144 --- /dev/null +++ b/Groovy/case.sublime-snippet @@ -0,0 +1,8 @@ + + + case + source.groovy + case … break + diff --git a/Groovy/class-__-singleton.sublime-snippet b/Groovy/class-__-singleton.sublime-snippet new file mode 100644 index 0000000..a38a49c --- /dev/null +++ b/Groovy/class-__-singleton.sublime-snippet @@ -0,0 +1,11 @@ + + + instance + source.groovy + instance … (Singleton) + diff --git a/Groovy/class-__.sublime-snippet b/Groovy/class-__.sublime-snippet new file mode 100644 index 0000000..1bcf4cf --- /dev/null +++ b/Groovy/class-__.sublime-snippet @@ -0,0 +1,10 @@ + + + cl + source.groovy + class { … } + diff --git a/Groovy/class-___-TestCase.sublime-snippet b/Groovy/class-___-TestCase.sublime-snippet new file mode 100644 index 0000000..1c65f99 --- /dev/null +++ b/Groovy/class-___-TestCase.sublime-snippet @@ -0,0 +1,9 @@ + + + tc + source.groovy + class … extends GroovyTestCase { … } + diff --git a/Groovy/collect-{-e-__-}.sublime-snippet b/Groovy/collect-{-e-__-}.sublime-snippet new file mode 100644 index 0000000..5c3d5cc --- /dev/null +++ b/Groovy/collect-{-e-__-}.sublime-snippet @@ -0,0 +1,8 @@ + + )/} + $0 +}]]> + col + source.groovy + collect { … } + diff --git a/Groovy/copy__-file.sublime-snippet b/Groovy/copy__-file.sublime-snippet new file mode 100644 index 0000000..d56501c --- /dev/null +++ b/Groovy/copy__-file.sublime-snippet @@ -0,0 +1,6 @@ + + + copy + source.groovy + copy(file: …, tofile: …) + diff --git a/Groovy/copy__-fileset-include-exclude.sublime-snippet b/Groovy/copy__-fileset-include-exclude.sublime-snippet new file mode 100644 index 0000000..de56a91 --- /dev/null +++ b/Groovy/copy__-fileset-include-exclude.sublime-snippet @@ -0,0 +1,11 @@ + + + copy + source.groovy + copy(todir: …) { fileset(dir: …) { include … exclude } + diff --git a/Groovy/copy__-fileset.sublime-snippet b/Groovy/copy__-fileset.sublime-snippet new file mode 100644 index 0000000..fc73ca4 --- /dev/null +++ b/Groovy/copy__-fileset.sublime-snippet @@ -0,0 +1,8 @@ + + + copy + source.groovy + copy(todir: …) { fileset:dir …) } + diff --git a/Groovy/def-__-closure-=-{__}.sublime-snippet b/Groovy/def-__-closure-=-{__}.sublime-snippet new file mode 100644 index 0000000..c8a6d2d --- /dev/null +++ b/Groovy/def-__-closure-=-{__}.sublime-snippet @@ -0,0 +1,8 @@ + + + $0 +}]]> + cv + source.groovy + closure = { … } + diff --git a/Groovy/def-__-method()-{__}.sublime-snippet b/Groovy/def-__-method()-{__}.sublime-snippet new file mode 100644 index 0000000..fbe20d9 --- /dev/null +++ b/Groovy/def-__-method()-{__}.sublime-snippet @@ -0,0 +1,8 @@ + + + m + source.groovy + method() { … } + diff --git a/Groovy/downto(num)-{-n-__-}.sublime-snippet b/Groovy/downto(num)-{-n-__-}.sublime-snippet new file mode 100644 index 0000000..5c03659 --- /dev/null +++ b/Groovy/downto(num)-{-n-__-}.sublime-snippet @@ -0,0 +1,8 @@ + + )/} + $0 +}]]> + dt + source.groovy + downto() { … } + diff --git a/Groovy/each-{-e-__-}.sublime-snippet b/Groovy/each-{-e-__-}.sublime-snippet new file mode 100644 index 0000000..c0eac3b --- /dev/null +++ b/Groovy/each-{-e-__-}.sublime-snippet @@ -0,0 +1,8 @@ + + )/} + $0 +}]]> + ea + source.groovy + each { … } + diff --git a/Groovy/eachByte-{-byte-__-}.sublime-snippet b/Groovy/eachByte-{-byte-__-}.sublime-snippet new file mode 100644 index 0000000..16337e2 --- /dev/null +++ b/Groovy/eachByte-{-byte-__-}.sublime-snippet @@ -0,0 +1,8 @@ + + )/} + $0 +}]]> + eab + source.groovy + eachByte { … } + diff --git a/Groovy/eachDir-{-dir-__-}.sublime-snippet b/Groovy/eachDir-{-dir-__-}.sublime-snippet new file mode 100644 index 0000000..fd40234 --- /dev/null +++ b/Groovy/eachDir-{-dir-__-}.sublime-snippet @@ -0,0 +1,8 @@ + + )/} + $0 +}]]> + ead + source.groovy + eachDir { … } + diff --git a/Groovy/eachDirMatch.sublime-snippet b/Groovy/eachDirMatch.sublime-snippet new file mode 100644 index 0000000..34c659e --- /dev/null +++ b/Groovy/eachDirMatch.sublime-snippet @@ -0,0 +1,8 @@ + + )/} + $0 +}]]> + eadm + source.groovy + eachDirMatch { … } + diff --git a/Groovy/eachDirRecurse.sublime-snippet b/Groovy/eachDirRecurse.sublime-snippet new file mode 100644 index 0000000..881b010 --- /dev/null +++ b/Groovy/eachDirRecurse.sublime-snippet @@ -0,0 +1,8 @@ + + )/} + $0 +}]]> + eadr + source.groovy + eachDirRecurse { … } + diff --git a/Groovy/eachFile-{-file-__-}.sublime-snippet b/Groovy/eachFile-{-file-__-}.sublime-snippet new file mode 100644 index 0000000..0cadbe7 --- /dev/null +++ b/Groovy/eachFile-{-file-__-}.sublime-snippet @@ -0,0 +1,8 @@ + + )/} + $0 +}]]> + eaf + source.groovy + eachFile { … } + diff --git a/Groovy/eachFileMatch-{-file-__-}.sublime-snippet b/Groovy/eachFileMatch-{-file-__-}.sublime-snippet new file mode 100644 index 0000000..fde3301 --- /dev/null +++ b/Groovy/eachFileMatch-{-file-__-}.sublime-snippet @@ -0,0 +1,8 @@ + + )/} + $0 +}]]> + eafm + source.groovy + eachFileMatch { … } + diff --git a/Groovy/eachFileRecurse-{-file-__-}.sublime-snippet b/Groovy/eachFileRecurse-{-file-__-}.sublime-snippet new file mode 100644 index 0000000..73fc6d0 --- /dev/null +++ b/Groovy/eachFileRecurse-{-file-__-}.sublime-snippet @@ -0,0 +1,8 @@ + + )/} + $0 +}]]> + eafr + source.groovy + eachFileRecurse { … } + diff --git a/Groovy/eachKey-{-key-__-}.sublime-snippet b/Groovy/eachKey-{-key-__-}.sublime-snippet new file mode 100644 index 0000000..02e7377 --- /dev/null +++ b/Groovy/eachKey-{-key-__-}.sublime-snippet @@ -0,0 +1,8 @@ + + )/} + $0 +}]]> + eak + source.groovy + eachKey { … } + diff --git a/Groovy/eachLine-{-line-__-}.sublime-snippet b/Groovy/eachLine-{-line-__-}.sublime-snippet new file mode 100644 index 0000000..0172baf --- /dev/null +++ b/Groovy/eachLine-{-line-__-}.sublime-snippet @@ -0,0 +1,8 @@ + + )/} + $0 +}]]> + eal + source.groovy + eachLine { … } + diff --git a/Groovy/eachMatch(regex)-{-match-__-}.sublime-snippet b/Groovy/eachMatch(regex)-{-match-__-}.sublime-snippet new file mode 100644 index 0000000..3008883 --- /dev/null +++ b/Groovy/eachMatch(regex)-{-match-__-}.sublime-snippet @@ -0,0 +1,8 @@ + + )/} + $0 +}]]> + eam + source.groovy + eachMatch(regex) { … } + diff --git a/Groovy/eachObject-{-obj-__-}.sublime-snippet b/Groovy/eachObject-{-obj-__-}.sublime-snippet new file mode 100644 index 0000000..6645b4a --- /dev/null +++ b/Groovy/eachObject-{-obj-__-}.sublime-snippet @@ -0,0 +1,8 @@ + + )/} + $0 +}]]> + eao + source.groovy + eachObject { … } + diff --git a/Groovy/eachValue-{-val-__-}.sublime-snippet b/Groovy/eachValue-{-val-__-}.sublime-snippet new file mode 100644 index 0000000..a83bd89 --- /dev/null +++ b/Groovy/eachValue-{-val-__-}.sublime-snippet @@ -0,0 +1,8 @@ + + )/} + $0 +}]]> + eav + source.groovy + eachValue { … } + diff --git a/Groovy/eachWithIndex-{-e-i-__-}.sublime-snippet b/Groovy/eachWithIndex-{-e-i-__-}.sublime-snippet new file mode 100644 index 0000000..caeab11 --- /dev/null +++ b/Groovy/eachWithIndex-{-e-i-__-}.sublime-snippet @@ -0,0 +1,8 @@ + + + $0 +}]]> + eawi + source.groovy + eachWithIndex { … } + diff --git a/Groovy/else.sublime-snippet b/Groovy/else.sublime-snippet new file mode 100644 index 0000000..d926f97 --- /dev/null +++ b/Groovy/else.sublime-snippet @@ -0,0 +1,8 @@ + + + el + source.groovy + else + diff --git a/Groovy/elseif-___.sublime-snippet b/Groovy/elseif-___.sublime-snippet new file mode 100644 index 0000000..80e9dea --- /dev/null +++ b/Groovy/elseif-___.sublime-snippet @@ -0,0 +1,8 @@ + + + elif + source.groovy + elseif + diff --git a/Groovy/every-{-e-__-}.sublime-snippet b/Groovy/every-{-e-__-}.sublime-snippet new file mode 100644 index 0000000..b90daf9 --- /dev/null +++ b/Groovy/every-{-e-__-}.sublime-snippet @@ -0,0 +1,8 @@ + + )/} + $0 +}]]> + every + source.groovy + every { … } + diff --git a/Groovy/final-method.sublime-snippet b/Groovy/final-method.sublime-snippet new file mode 100644 index 0000000..2857d04 --- /dev/null +++ b/Groovy/final-method.sublime-snippet @@ -0,0 +1,8 @@ + + + fm + source.groovy + final method() { … } + diff --git a/Groovy/final-var.sublime-snippet b/Groovy/final-var.sublime-snippet new file mode 100644 index 0000000..cd0b036 --- /dev/null +++ b/Groovy/final-var.sublime-snippet @@ -0,0 +1,6 @@ + + + fv + source.groovy + final var + diff --git a/Groovy/find-{-e-__-}.sublime-snippet b/Groovy/find-{-e-__-}.sublime-snippet new file mode 100644 index 0000000..381239e --- /dev/null +++ b/Groovy/find-{-e-__-}.sublime-snippet @@ -0,0 +1,8 @@ + + )/} + $0 +}]]> + find + source.groovy + find { … } + diff --git a/Groovy/findAll-{-e-__-}.sublime-snippet b/Groovy/findAll-{-e-__-}.sublime-snippet new file mode 100644 index 0000000..a623315 --- /dev/null +++ b/Groovy/findAll-{-e-__-}.sublime-snippet @@ -0,0 +1,8 @@ + + )/} + $0 +}]]> + finda + source.groovy + findAll { … } + diff --git a/Groovy/for-in.sublime-snippet b/Groovy/for-in.sublime-snippet new file mode 100644 index 0000000..22f6ac9 --- /dev/null +++ b/Groovy/for-in.sublime-snippet @@ -0,0 +1,8 @@ + + + forin + source.groovy + for(… in …) { … } + diff --git a/Groovy/grep(-pattern-)-{-match-__-}.sublime-snippet b/Groovy/grep(-pattern-)-{-match-__-}.sublime-snippet new file mode 100644 index 0000000..3dfb77e --- /dev/null +++ b/Groovy/grep(-pattern-)-{-match-__-}.sublime-snippet @@ -0,0 +1,8 @@ + + )/} + $0 +}]]> + grep + source.groovy + grep(filter) { … } + diff --git a/Groovy/if-else.sublime-snippet b/Groovy/if-else.sublime-snippet new file mode 100644 index 0000000..6e6d96a --- /dev/null +++ b/Groovy/if-else.sublime-snippet @@ -0,0 +1,10 @@ + + + ifel + source.groovy + if … else + diff --git a/Groovy/if.sublime-snippet b/Groovy/if.sublime-snippet new file mode 100644 index 0000000..7a46cc0 --- /dev/null +++ b/Groovy/if.sublime-snippet @@ -0,0 +1,8 @@ + + + if + source.groovy + if + diff --git a/Groovy/import.sublime-snippet b/Groovy/import.sublime-snippet new file mode 100644 index 0000000..036716f --- /dev/null +++ b/Groovy/import.sublime-snippet @@ -0,0 +1,6 @@ + + + im + source.groovy + import + diff --git a/Groovy/mkdir.sublime-snippet b/Groovy/mkdir.sublime-snippet new file mode 100644 index 0000000..e54ae02 --- /dev/null +++ b/Groovy/mkdir.sublime-snippet @@ -0,0 +1,6 @@ + + + mkdir + source.groovy + mkdir(dir: …) + diff --git a/Groovy/new-File(__)_eachLine-{-__-}.sublime-snippet b/Groovy/new-File(__)_eachLine-{-__-}.sublime-snippet new file mode 100644 index 0000000..1d2523b --- /dev/null +++ b/Groovy/new-File(__)_eachLine-{-__-}.sublime-snippet @@ -0,0 +1,8 @@ + + )/} + $0 +}]]> + File + source.groovy + new File(…).eachLine { … } + diff --git a/Groovy/package.sublime-snippet b/Groovy/package.sublime-snippet new file mode 100644 index 0000000..8fcf411 --- /dev/null +++ b/Groovy/package.sublime-snippet @@ -0,0 +1,6 @@ + + + pa + source.groovy + package + diff --git a/Groovy/print.sublime-snippet b/Groovy/print.sublime-snippet new file mode 100644 index 0000000..ef2e80c --- /dev/null +++ b/Groovy/print.sublime-snippet @@ -0,0 +1,6 @@ + + + p + source.groovy + print + diff --git a/Groovy/println.sublime-snippet b/Groovy/println.sublime-snippet new file mode 100644 index 0000000..4f86af7 --- /dev/null +++ b/Groovy/println.sublime-snippet @@ -0,0 +1,6 @@ + + + pl + source.groovy + println + diff --git a/Groovy/private-final-method.sublime-snippet b/Groovy/private-final-method.sublime-snippet new file mode 100644 index 0000000..dfff5ed --- /dev/null +++ b/Groovy/private-final-method.sublime-snippet @@ -0,0 +1,8 @@ + + + pfm + source.groovy + private final method() { … } + diff --git a/Groovy/private-final-var.sublime-snippet b/Groovy/private-final-var.sublime-snippet new file mode 100644 index 0000000..7df5f46 --- /dev/null +++ b/Groovy/private-final-var.sublime-snippet @@ -0,0 +1,6 @@ + + + pfv + source.groovy + private final var + diff --git a/Groovy/private-method.sublime-snippet b/Groovy/private-method.sublime-snippet new file mode 100644 index 0000000..03406b5 --- /dev/null +++ b/Groovy/private-method.sublime-snippet @@ -0,0 +1,8 @@ + + + pm + source.groovy + private method() { … } + diff --git a/Groovy/private-static-final-String.sublime-snippet b/Groovy/private-static-final-String.sublime-snippet new file mode 100644 index 0000000..03b3a17 --- /dev/null +++ b/Groovy/private-static-final-String.sublime-snippet @@ -0,0 +1,6 @@ + + + psfv + source.groovy + private static final var + diff --git a/Groovy/private-static-final-method.sublime-snippet b/Groovy/private-static-final-method.sublime-snippet new file mode 100644 index 0000000..6199a84 --- /dev/null +++ b/Groovy/private-static-final-method.sublime-snippet @@ -0,0 +1,8 @@ + + + psfm + source.groovy + private static final method() { … } + diff --git a/Groovy/private-static-method.sublime-snippet b/Groovy/private-static-method.sublime-snippet new file mode 100644 index 0000000..5a85cbb --- /dev/null +++ b/Groovy/private-static-method.sublime-snippet @@ -0,0 +1,8 @@ + + + psm + source.groovy + private static method() { … } + diff --git a/Groovy/private-static-var.sublime-snippet b/Groovy/private-static-var.sublime-snippet new file mode 100644 index 0000000..a1a0293 --- /dev/null +++ b/Groovy/private-static-var.sublime-snippet @@ -0,0 +1,6 @@ + + + psv + source.groovy + private static var + diff --git a/Groovy/private-var.sublime-snippet b/Groovy/private-var.sublime-snippet new file mode 100644 index 0000000..8d1bad7 --- /dev/null +++ b/Groovy/private-var.sublime-snippet @@ -0,0 +1,6 @@ + + + pv + source.groovy + private var + diff --git a/Groovy/replaceAll(regex)-{-match-__}.sublime-snippet b/Groovy/replaceAll(regex)-{-match-__}.sublime-snippet new file mode 100644 index 0000000..697c0f8 --- /dev/null +++ b/Groovy/replaceAll(regex)-{-match-__}.sublime-snippet @@ -0,0 +1,8 @@ + + )/} + $0 +}]]> + replace + source.groovy + replaceAll(regex) { … } + diff --git a/Groovy/reverseEach-{-e-__-}.sublime-snippet b/Groovy/reverseEach-{-e-__-}.sublime-snippet new file mode 100644 index 0000000..5eeb41b --- /dev/null +++ b/Groovy/reverseEach-{-e-__-}.sublime-snippet @@ -0,0 +1,8 @@ + + )/} + $0 +}]]> + rea + source.groovy + reverseEach { … } + diff --git a/Groovy/run-after.sublime-snippet b/Groovy/run-after.sublime-snippet new file mode 100644 index 0000000..9909550 --- /dev/null +++ b/Groovy/run-after.sublime-snippet @@ -0,0 +1,8 @@ + + + runa + source.groovy + runAfter() { … } + diff --git a/Groovy/setUp().sublime-snippet b/Groovy/setUp().sublime-snippet new file mode 100644 index 0000000..aa1d72c --- /dev/null +++ b/Groovy/setUp().sublime-snippet @@ -0,0 +1,8 @@ + + + setup + source.groovy + setUp() { … } + diff --git a/Groovy/shouldFail(__)-{-__-}.sublime-snippet b/Groovy/shouldFail(__)-{-__-}.sublime-snippet new file mode 100644 index 0000000..c42167f --- /dev/null +++ b/Groovy/shouldFail(__)-{-__-}.sublime-snippet @@ -0,0 +1,8 @@ + + + sf + source.groovy + shouldFail { … } + diff --git a/Groovy/sleep(secs)-{-__-on-interrupt-}.sublime-snippet b/Groovy/sleep(secs)-{-__-on-interrupt-}.sublime-snippet new file mode 100644 index 0000000..9122e3f --- /dev/null +++ b/Groovy/sleep(secs)-{-__-on-interrupt-}.sublime-snippet @@ -0,0 +1,8 @@ + + + sleep + source.groovy + sleep(secs) { … // on interrupt do } + diff --git a/Groovy/sleep(secs).sublime-snippet b/Groovy/sleep(secs).sublime-snippet new file mode 100644 index 0000000..4fe6431 --- /dev/null +++ b/Groovy/sleep(secs).sublime-snippet @@ -0,0 +1,6 @@ + + + sleep + source.groovy + sleep(secs) + diff --git a/Groovy/sort-{-__-}.sublime-snippet b/Groovy/sort-{-__-}.sublime-snippet new file mode 100644 index 0000000..a53ca16 --- /dev/null +++ b/Groovy/sort-{-__-}.sublime-snippet @@ -0,0 +1,8 @@ + + + sort + source.groovy + sort { … } + diff --git a/Groovy/splitEachLine(separator)-{-line-__-}-copy.sublime-snippet b/Groovy/splitEachLine(separator)-{-line-__-}-copy.sublime-snippet new file mode 100644 index 0000000..e030f80 --- /dev/null +++ b/Groovy/splitEachLine(separator)-{-line-__-}-copy.sublime-snippet @@ -0,0 +1,8 @@ + + )/} + $0 +}]]> + sel + source.groovy + splitEachLine(separator) { … } + diff --git a/Groovy/static-final-method.sublime-snippet b/Groovy/static-final-method.sublime-snippet new file mode 100644 index 0000000..60412f8 --- /dev/null +++ b/Groovy/static-final-method.sublime-snippet @@ -0,0 +1,8 @@ + + + sfm + source.groovy + static final method() { … } + diff --git a/Groovy/static-final-var.sublime-snippet b/Groovy/static-final-var.sublime-snippet new file mode 100644 index 0000000..a54ba67 --- /dev/null +++ b/Groovy/static-final-var.sublime-snippet @@ -0,0 +1,6 @@ + + + sfv + source.groovy + static final var + diff --git a/Groovy/static-main-method.sublime-snippet b/Groovy/static-main-method.sublime-snippet new file mode 100644 index 0000000..564e3e4 --- /dev/null +++ b/Groovy/static-main-method.sublime-snippet @@ -0,0 +1,8 @@ + + + main + source.groovy + static main() { … } + diff --git a/Groovy/static-method.sublime-snippet b/Groovy/static-method.sublime-snippet new file mode 100644 index 0000000..ed7c5c7 --- /dev/null +++ b/Groovy/static-method.sublime-snippet @@ -0,0 +1,8 @@ + + + sm + source.groovy + static method() { … } + diff --git a/Groovy/static-var.sublime-snippet b/Groovy/static-var.sublime-snippet new file mode 100644 index 0000000..46b56fd --- /dev/null +++ b/Groovy/static-var.sublime-snippet @@ -0,0 +1,6 @@ + + + sv + source.groovy + static var + diff --git a/Groovy/step(to-amount)-{-n-__-}.sublime-snippet b/Groovy/step(to-amount)-{-n-__-}.sublime-snippet new file mode 100644 index 0000000..beb45d3 --- /dev/null +++ b/Groovy/step(to-amount)-{-n-__-}.sublime-snippet @@ -0,0 +1,8 @@ + + )/} + $0 +}]]> + step + source.groovy + step(to,amount) { … } + diff --git a/Groovy/switch__case.sublime-snippet b/Groovy/switch__case.sublime-snippet new file mode 100644 index 0000000..92edd63 --- /dev/null +++ b/Groovy/switch__case.sublime-snippet @@ -0,0 +1,10 @@ + + + switch + source.groovy + switch … case + diff --git a/Groovy/switch__case__default.sublime-snippet b/Groovy/switch__case__default.sublime-snippet new file mode 100644 index 0000000..57181ab --- /dev/null +++ b/Groovy/switch__case__default.sublime-snippet @@ -0,0 +1,13 @@ + + + switch + source.groovy + switch … case … default + diff --git a/Groovy/tearDown().sublime-snippet b/Groovy/tearDown().sublime-snippet new file mode 100644 index 0000000..6f71842 --- /dev/null +++ b/Groovy/tearDown().sublime-snippet @@ -0,0 +1,8 @@ + + + tear + source.groovy + tearDown() { … } + diff --git a/Groovy/test-case.sublime-snippet b/Groovy/test-case.sublime-snippet new file mode 100644 index 0000000..733cf36 --- /dev/null +++ b/Groovy/test-case.sublime-snippet @@ -0,0 +1,8 @@ + + + t + source.groovy + test() + diff --git a/Groovy/times-{-n-__-}.sublime-snippet b/Groovy/times-{-n-__-}.sublime-snippet new file mode 100644 index 0000000..d94f5ad --- /dev/null +++ b/Groovy/times-{-n-__-}.sublime-snippet @@ -0,0 +1,8 @@ + + )/} + $0 +}]]> + times + source.groovy + times { … } + diff --git a/Groovy/to-Array.sublime-snippet b/Groovy/to-Array.sublime-snippet new file mode 100644 index 0000000..6f8a63d --- /dev/null +++ b/Groovy/to-Array.sublime-snippet @@ -0,0 +1,6 @@ + + + to + source.groovy + to Array + diff --git a/Groovy/to-BigDecimal.sublime-snippet b/Groovy/to-BigDecimal.sublime-snippet new file mode 100644 index 0000000..4c67653 --- /dev/null +++ b/Groovy/to-BigDecimal.sublime-snippet @@ -0,0 +1,6 @@ + + + to + source.groovy + to BigDecimal + diff --git a/Groovy/to-BigInteger.sublime-snippet b/Groovy/to-BigInteger.sublime-snippet new file mode 100644 index 0000000..22ca6e3 --- /dev/null +++ b/Groovy/to-BigInteger.sublime-snippet @@ -0,0 +1,6 @@ + + + to + source.groovy + to BigInteger + diff --git a/Groovy/to-Boolean.sublime-snippet b/Groovy/to-Boolean.sublime-snippet new file mode 100644 index 0000000..dc7fda6 --- /dev/null +++ b/Groovy/to-Boolean.sublime-snippet @@ -0,0 +1,6 @@ + + + to + source.groovy + to Boolean + diff --git a/Groovy/to-Character.sublime-snippet b/Groovy/to-Character.sublime-snippet new file mode 100644 index 0000000..04ec98e --- /dev/null +++ b/Groovy/to-Character.sublime-snippet @@ -0,0 +1,6 @@ + + + to + source.groovy + to Character + diff --git a/Groovy/to-Double.sublime-snippet b/Groovy/to-Double.sublime-snippet new file mode 100644 index 0000000..b50281f --- /dev/null +++ b/Groovy/to-Double.sublime-snippet @@ -0,0 +1,6 @@ + + + to + source.groovy + to Double + diff --git a/Groovy/to-Float.sublime-snippet b/Groovy/to-Float.sublime-snippet new file mode 100644 index 0000000..08a5cea --- /dev/null +++ b/Groovy/to-Float.sublime-snippet @@ -0,0 +1,6 @@ + + + to + source.groovy + to Float + diff --git a/Groovy/to-Integer.sublime-snippet b/Groovy/to-Integer.sublime-snippet new file mode 100644 index 0000000..13e639f --- /dev/null +++ b/Groovy/to-Integer.sublime-snippet @@ -0,0 +1,6 @@ + + + to + source.groovy + to Integer + diff --git a/Groovy/to-List.sublime-snippet b/Groovy/to-List.sublime-snippet new file mode 100644 index 0000000..5c61ebc --- /dev/null +++ b/Groovy/to-List.sublime-snippet @@ -0,0 +1,6 @@ + + + to + source.groovy + to List + diff --git a/Groovy/to-String.sublime-snippet b/Groovy/to-String.sublime-snippet new file mode 100644 index 0000000..26ce9ce --- /dev/null +++ b/Groovy/to-String.sublime-snippet @@ -0,0 +1,6 @@ + + + to + source.groovy + to String + diff --git a/Groovy/to-URI.sublime-snippet b/Groovy/to-URI.sublime-snippet new file mode 100644 index 0000000..4fb2b0d --- /dev/null +++ b/Groovy/to-URI.sublime-snippet @@ -0,0 +1,6 @@ + + + to + source.groovy + to URI + diff --git a/Groovy/to-URL.sublime-snippet b/Groovy/to-URL.sublime-snippet new file mode 100644 index 0000000..dcc7d35 --- /dev/null +++ b/Groovy/to-URL.sublime-snippet @@ -0,0 +1,6 @@ + + + to + source.groovy + to URL + diff --git a/Groovy/try-__-catch__-finally.sublime-snippet b/Groovy/try-__-catch__-finally.sublime-snippet new file mode 100644 index 0000000..767e544 --- /dev/null +++ b/Groovy/try-__-catch__-finally.sublime-snippet @@ -0,0 +1,16 @@ + + + try + source.groovy + try … catch … finally + diff --git a/Groovy/try-__-catch__.sublime-snippet b/Groovy/try-__-catch__.sublime-snippet new file mode 100644 index 0000000..fe2bd13 --- /dev/null +++ b/Groovy/try-__-catch__.sublime-snippet @@ -0,0 +1,13 @@ + + + try + source.groovy + try … catch + diff --git a/Groovy/upto(num)-{-n-__-}.sublime-snippet b/Groovy/upto(num)-{-n-__-}.sublime-snippet new file mode 100644 index 0000000..a84892f --- /dev/null +++ b/Groovy/upto(num)-{-n-__-}.sublime-snippet @@ -0,0 +1,8 @@ + + )/} + $0 +}]]> + ut + source.groovy + upto() { … } + diff --git a/Groovy/var.sublime-snippet b/Groovy/var.sublime-snippet new file mode 100644 index 0000000..58a2ea5 --- /dev/null +++ b/Groovy/var.sublime-snippet @@ -0,0 +1,6 @@ + + + v + source.groovy + var + diff --git a/Groovy/while-___-{___}.sublime-snippet b/Groovy/while-___-{___}.sublime-snippet new file mode 100644 index 0000000..24d7e78 --- /dev/null +++ b/Groovy/while-___-{___}.sublime-snippet @@ -0,0 +1,8 @@ + + + while + source.groovy + while() { … } + diff --git a/Groovy/withInputStream-{-in-__-}.sublime-snippet b/Groovy/withInputStream-{-in-__-}.sublime-snippet new file mode 100644 index 0000000..b632907 --- /dev/null +++ b/Groovy/withInputStream-{-in-__-}.sublime-snippet @@ -0,0 +1,8 @@ + + )/} + $0 +}]]> + with + source.groovy + withInputStream { … } + diff --git a/Groovy/withOutputStream-{-out-__-}.sublime-snippet b/Groovy/withOutputStream-{-out-__-}.sublime-snippet new file mode 100644 index 0000000..9c39d94 --- /dev/null +++ b/Groovy/withOutputStream-{-out-__-}.sublime-snippet @@ -0,0 +1,8 @@ + + )/} + $0 +}]]> + with + source.groovy + withOutputStream { … } + diff --git a/Groovy/withPrintWriter-{-pw-__}.sublime-snippet b/Groovy/withPrintWriter-{-pw-__}.sublime-snippet new file mode 100644 index 0000000..f06f2ea --- /dev/null +++ b/Groovy/withPrintWriter-{-pw-__}.sublime-snippet @@ -0,0 +1,8 @@ + + )/} + $0 +}]]> + with + source.groovy + withPrintWriter { … } + diff --git a/Groovy/withReader-{-r-__-}.sublime-snippet b/Groovy/withReader-{-r-__-}.sublime-snippet new file mode 100644 index 0000000..7172d94 --- /dev/null +++ b/Groovy/withReader-{-r-__-}.sublime-snippet @@ -0,0 +1,8 @@ + + )/} + $0 +}]]> + with + source.groovy + withReader { … } + diff --git a/Groovy/withStream-{-in-__-}.sublime-snippet b/Groovy/withStream-{-in-__-}.sublime-snippet new file mode 100644 index 0000000..9e293bb --- /dev/null +++ b/Groovy/withStream-{-in-__-}.sublime-snippet @@ -0,0 +1,8 @@ + + )/} + $0 +}]]> + with + source.groovy + withStream { … } + diff --git a/Groovy/withStreams-{-Socket-s-__}.sublime-snippet b/Groovy/withStreams-{-Socket-s-__}.sublime-snippet new file mode 100644 index 0000000..4ae6143 --- /dev/null +++ b/Groovy/withStreams-{-Socket-s-__}.sublime-snippet @@ -0,0 +1,8 @@ + + )/} + $0 +}]]> + with + source.groovy + withStreams { … } + diff --git a/Groovy/withWriter(charset)-{-w-__-}.sublime-snippet b/Groovy/withWriter(charset)-{-w-__-}.sublime-snippet new file mode 100644 index 0000000..f043169 --- /dev/null +++ b/Groovy/withWriter(charset)-{-w-__-}.sublime-snippet @@ -0,0 +1,8 @@ + + )/} + $0 +}]]> + with + source.groovy + withWriter(charset) { … } + diff --git a/Groovy/withWriter-{-w-__}.sublime-snippet b/Groovy/withWriter-{-w-__}.sublime-snippet new file mode 100644 index 0000000..d0a0cdf --- /dev/null +++ b/Groovy/withWriter-{-w-__}.sublime-snippet @@ -0,0 +1,8 @@ + + )/} + $0 +}]]> + with + source.groovy + withWriter { … } + diff --git a/Groovy/withWriterAppend(charset)-{-__-}.sublime-snippet b/Groovy/withWriterAppend(charset)-{-__-}.sublime-snippet new file mode 100644 index 0000000..9ff78d3 --- /dev/null +++ b/Groovy/withWriterAppend(charset)-{-__-}.sublime-snippet @@ -0,0 +1,8 @@ + + )/} + $0 +}]]> + with + source.groovy + withWriterAppend(charset) { … } + diff --git a/HTML/Comments.tmPreferences b/HTML/Comments.tmPreferences new file mode 100644 index 0000000..ad25a4e --- /dev/null +++ b/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/HTML/Comments.tmPreferences.cache b/HTML/Comments.tmPreferences.cache new file mode 100644 index 0000000..0452a71 Binary files /dev/null and b/HTML/Comments.tmPreferences.cache differ diff --git a/HTML/HTML.sublime-completions b/HTML/HTML.sublime-completions new file mode 100644 index 0000000..a10ea2a --- /dev/null +++ b/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": "$1" }, + { "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": "
$1
" }, + { "trigger": "font", "contents": "$1" }, + { "trigger": "form", "contents": "
$1
" }, + { "trigger": "frame", "contents": "$1" }, + { "trigger": "frameset", "contents": "$1" }, + { "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": "$1" }, + { "trigger": "link", "contents": "" }, + { "trigger": "map", "contents": "$1" }, + { "trigger": "noframes", "contents": "$1" }, + { "trigger": "object", "contents": "$1" }, + { "trigger": "ol", "contents": "
      $1
    " }, + { "trigger": "optgroup", "contents": "$1" }, + { "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": "$1
    " }, + { "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": "
      $1
    " }, + { "trigger": "var", "contents": "$1" }, + + { "trigger": "br", "contents": "
    " }, + { "trigger": "embed", "contents": "" }, + { "trigger": "hr", "contents": "
    " }, + { "trigger": "img", "contents": "" }, + { "trigger": "input", "contents": "" }, + { "trigger": "meta", "contents": "" }, + { "trigger": "param", "contents": "" }, + + { "trigger": "article", "contents": "
    $1
    " }, + { "trigger": "aside", "contents": "" }, + { "trigger": "audio", "contents": "" }, + { "trigger": "canvas", "contents": "$1" }, + { "trigger": "footer", "contents": "
    $1
    " }, + { "trigger": "header", "contents": "
    $1
    " }, + { "trigger": "nav", "contents": "" }, + { "trigger": "section", "contents": "
    $1
    " }, + { "trigger": "video", "contents": "" }, + + + { "trigger": "A", "contents": "$2" }, + { "trigger": "ABBR", "contents": "$1" }, + { "trigger": "ACRONYM", "contents": "$1" }, + { "trigger": "ADDRESS", "contents": "
    $1
    " }, + { "trigger": "APPLET", "contents": "$1" }, + { "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": "
    $1
    " }, + { "trigger": "FONT", "contents": "$1" }, + { "trigger": "FORM", "contents": "
    $1
    " }, + { "trigger": "FRAME", "contents": "$1" }, + { "trigger": "FRAMESET", "contents": "$1" }, + { "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": "$1" }, + { "trigger": "LINK", "contents": "$1" }, + { "trigger": "MAP", "contents": "$1" }, + { "trigger": "NOFRAMES", "contents": "$1" }, + { "trigger": "OBJECT", "contents": "$1" }, + { "trigger": "OL", "contents": "
      $1
    " }, + { "trigger": "OPTGROUP", "contents": "$1" }, + { "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": "$1
    " }, + { "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": "
      $1
    " }, + { "trigger": "VAR", "contents": "$1" }, + + { "trigger": "BR", "contents": "
    " }, + { "trigger": "EMBED", "contents": "" }, + { "trigger": "HR", "contents": "
    " }, + { "trigger": "IMG", "contents": "" }, + { "trigger": "INPUT", "contents": "" }, + { "trigger": "META", "contents": "" }, + { "trigger": "PARAM", "contents": "" }, + + { "trigger": "ARTICLE", "contents": "
    $1
    " }, + { "trigger": "ASIDE", "contents": "" }, + { "trigger": "AUDIO", "contents": "" }, + { "trigger": "CANVAS", "contents": "$1" }, + { "trigger": "FOOTER", "contents": "
    $1
    " }, + { "trigger": "HEADER", "contents": "
    $1
    " }, + { "trigger": "NAV", "contents": "" }, + { "trigger": "SECTION", "contents": "
    $1
    " }, + { "trigger": "VIDEO", "contents": "" } + ] +} diff --git a/HTML/HTML.tmLanguage b/HTML/HTML.tmLanguage new file mode 100644 index 0000000..b1b4b4b --- /dev/null +++ b/HTML/HTML.tmLanguage @@ -0,0 +1,978 @@ + + + + + fileTypes + + html + htm + shtml + xhtml + phtml + inc + tmpl + tpl + ctp + + firstLineMatch + <!(?i:DOCTYPE)|<(?i:html)|<\?(?i:php) + foldingStartMarker + (?x) + (<(?i:head|body|table|thead|tbody|tfoot|tr|div|select|fieldset|style|script|ul|ol|li|form|dl)\b.*?> + |<!--(?!.*--\s*>) + |^<!--\ \#tminclude\ (?>.*?-->)$ + |<\?(?:php)?.*\b(if|for(each)?|while)\b.+: + |\{\{?(if|foreach|capture|literal|foreach|php|section|strip) + |\{\s*($|\?>\s*$|//|/\*(.*\*/\s*$|(?!.*?\*/))) + ) + foldingStopMarker + (?x) + (</(?i:head|body|table|thead|tbody|tfoot|tr|div|select|fieldset|style|script|ul|ol|li|form|dl)> + |^(?!.*?<!--).*?--\s*> + |^<!--\ end\ tminclude\ -->$ + |<\?(?:php)?.*\bend(if|for(each)?|while)\b + |\{\{?/(if|foreach|capture|literal|foreach|php|section|strip) + |^[^{]*\} + ) + keyEquivalent + ^~H + name + HTML + patterns + + + begin + (<)([a-zA-Z0-9:]++)(?=[^>]*></\2>) + beginCaptures + + 1 + + name + punctuation.definition.tag.begin.html + + 2 + + name + entity.name.tag.html + + + end + (>)(<)(/)(\2)(>) + endCaptures + + 1 + + name + punctuation.definition.tag.end.html + + 2 + + name + punctuation.definition.tag.begin.html meta.scope.between-tag-pair.html + + 3 + + name + punctuation.definition.tag.begin.html + + 4 + + name + entity.name.tag.html + + 5 + + name + punctuation.definition.tag.end.html + + + name + meta.tag.any.html + patterns + + + include + #tag-stuff + + + + + begin + (<\?)(xml) + captures + + 1 + + name + punctuation.definition.tag.html + + 2 + + name + entity.name.tag.xml.html + + + end + (\?>) + name + meta.tag.preprocessor.xml.html + patterns + + + include + #tag-generic-attribute + + + include + #string-double-quoted + + + include + #string-single-quoted + + + + + begin + <!-- + captures + + 0 + + name + punctuation.definition.comment.html + + + end + --\s*> + name + comment.block.html + patterns + + + match + -- + name + invalid.illegal.bad-comments-or-CDATA.html + + + include + #embedded-code + + + + + begin + <! + captures + + 0 + + name + punctuation.definition.tag.html + + + end + > + name + meta.tag.sgml.html + patterns + + + begin + (?i:DOCTYPE) + captures + + 1 + + name + entity.name.tag.doctype.html + + + end + (?=>) + name + meta.tag.sgml.doctype.html + patterns + + + match + "[^">]*" + name + string.quoted.double.doctype.identifiers-and-DTDs.html + + + + + begin + \[CDATA\[ + end + ]](?=>) + name + constant.other.inline-data.html + + + match + (\s*)(?!--|>)\S(\s*) + name + invalid.illegal.bad-comments-or-CDATA.html + + + + + include + #embedded-code + + + begin + (?:^\s+)?(<)((?i:style))\b(?![^>]*/>) + captures + + 1 + + name + punctuation.definition.tag.html + + 2 + + name + entity.name.tag.style.html + + 3 + + name + punctuation.definition.tag.html + + + end + (</)((?i:style))(>)(?:\s*\n)? + name + source.css.embedded.html + patterns + + + include + #tag-stuff + + + begin + (>) + beginCaptures + + 1 + + name + punctuation.definition.tag.html + + + end + (?=</(?i:style)) + patterns + + + include + #embedded-code + + + include + source.css + + + + + + + begin + (?:^\s+)?(<)((?i:script))\b(?![^>]*/>) + beginCaptures + + 1 + + name + punctuation.definition.tag.html + + 2 + + name + entity.name.tag.script.html + + + end + (?<=</(script|SCRIPT))(>)(?:\s*\n)? + endCaptures + + 2 + + name + punctuation.definition.tag.html + + + name + source.js.embedded.html + patterns + + + include + #tag-stuff + + + begin + (?<!</(?:script|SCRIPT))(>) + captures + + 1 + + name + punctuation.definition.tag.html + + 2 + + name + entity.name.tag.script.html + + + end + (</)((?i:script)) + patterns + + + captures + + 1 + + name + punctuation.definition.comment.js + + + match + (//).*?((?=</script)|$\n?) + name + comment.line.double-slash.js + + + begin + /\* + captures + + 0 + + name + punctuation.definition.comment.js + + + end + \*/|(?=</script) + name + comment.block.js + + + include + #php + + + include + source.js + + + + + + + begin + (</?)((?i:body|head|html)\b) + captures + + 1 + + name + punctuation.definition.tag.begin.html + + 2 + + name + entity.name.tag.structure.any.html + + + end + (>) + endCaptures + + 1 + + name + punctuation.definition.tag.end.html + + + name + meta.tag.structure.any.html + patterns + + + include + #tag-stuff + + + + + begin + (</?)((?i:address|blockquote|dd|div|dl|dt|fieldset|form|frame|frameset|h1|h2|h3|h4|h5|h6|iframe|noframes|object|ol|p|ul|applet|center|dir|hr|menu|pre)\b) + beginCaptures + + 1 + + name + punctuation.definition.tag.begin.html + + 2 + + name + entity.name.tag.block.any.html + + + end + (>) + endCaptures + + 1 + + name + punctuation.definition.tag.end.html + + + name + meta.tag.block.any.html + patterns + + + include + #tag-stuff + + + + + begin + (</?)((?i:a|abbr|acronym|area|b|base|basefont|bdo|big|br|button|caption|cite|code|col|colgroup|del|dfn|em|font|head|html|i|img|input|ins|isindex|kbd|label|legend|li|link|map|meta|noscript|optgroup|option|param|q|s|samp|script|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|title|tr|tt|u|var)\b) + beginCaptures + + 1 + + name + punctuation.definition.tag.begin.html + + 2 + + name + entity.name.tag.inline.any.html + + + end + ((?: ?/)?>) + endCaptures + + 1 + + name + punctuation.definition.tag.end.html + + + name + meta.tag.inline.any.html + patterns + + + include + #tag-stuff + + + + + begin + (</?)([a-zA-Z0-9:]+) + beginCaptures + + 1 + + name + punctuation.definition.tag.begin.html + + 2 + + name + entity.name.tag.other.html + + + end + (>) + endCaptures + + 1 + + name + punctuation.definition.tag.end.html + + + name + meta.tag.other.html + patterns + + + include + #tag-stuff + + + + + include + #entities + + + match + <> + name + invalid.illegal.incomplete.html + + + match + < + name + invalid.illegal.bad-angle-bracket.html + + + repository + + embedded-code + + patterns + + + include + #ruby + + + include + #php + + + + include + #python + + + + entities + + patterns + + + captures + + 1 + + name + punctuation.definition.entity.html + + 3 + + name + punctuation.definition.entity.html + + + match + (&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;) + name + constant.character.entity.html + + + match + & + name + invalid.illegal.bad-ampersand.html + + + + php + + begin + (?=(^\s*)?<\?) + end + (?!(^\s*)?<\?) + patterns + + + include + source.php + + + + python + + begin + (?:^\s*)<\?python(?!.*\?>) + end + \?>(?:\s*$\n)? + name + source.python.embedded.html + patterns + + + include + source.python + + + + ruby + + patterns + + + begin + <%+# + captures + + 0 + + name + punctuation.definition.comment.erb + + + end + %> + name + comment.block.erb + + + begin + <%+(?!>)=? + captures + + 0 + + name + punctuation.section.embedded.ruby + + + end + -?%> + name + source.ruby.embedded.html + patterns + + + captures + + 1 + + name + punctuation.definition.comment.ruby + + + match + (#).*?(?=-?%>) + name + comment.line.number-sign.ruby + + + include + source.ruby + + + + + begin + <\?r(?!>)=? + captures + + 0 + + name + punctuation.section.embedded.ruby.nitro + + + end + -?\?> + name + source.ruby.nitro.embedded.html + patterns + + + captures + + 1 + + name + punctuation.definition.comment.ruby.nitro + + + match + (#).*?(?=-?\?>) + name + comment.line.number-sign.ruby.nitro + + + include + source.ruby + + + + + + + string-double-quoted + + begin + " + beginCaptures + + 0 + + name + punctuation.definition.string.begin.html + + + end + " + endCaptures + + 0 + + name + punctuation.definition.string.end.html + + + name + string.quoted.double.html + patterns + + + include + #embedded-code + + + include + #entities + + + + string-single-quoted + + begin + ' + beginCaptures + + 0 + + name + punctuation.definition.string.begin.html + + + end + ' + endCaptures + + 0 + + name + punctuation.definition.string.end.html + + + name + string.quoted.single.html + patterns + + + include + #embedded-code + + + include + #entities + + + + tag-generic-attribute + + match + \b([a-zA-Z\-:]+) + name + entity.other.attribute-name.html + + tag-id-attribute + + begin + \b(id)\b\s*(=) + captures + + 1 + + name + entity.other.attribute-name.id.html + + 2 + + name + punctuation.separator.key-value.html + + + end + (?<='|") + name + meta.attribute-with-value.id.html + patterns + + + begin + " + beginCaptures + + 0 + + name + punctuation.definition.string.begin.html + + + contentName + meta.toc-list.id.html + end + " + endCaptures + + 0 + + name + punctuation.definition.string.end.html + + + name + string.quoted.double.html + patterns + + + include + #embedded-code + + + include + #entities + + + + + begin + ' + beginCaptures + + 0 + + name + punctuation.definition.string.begin.html + + + contentName + meta.toc-list.id.html + end + ' + endCaptures + + 0 + + name + punctuation.definition.string.end.html + + + name + string.quoted.single.html + patterns + + + include + #embedded-code + + + include + #entities + + + + + + tag-stuff + + patterns + + + include + #tag-id-attribute + + + include + #tag-generic-attribute + + + include + #string-double-quoted + + + include + #string-single-quoted + + + include + #embedded-code + + + + + scopeName + text.html.basic + uuid + 17994EC8-6B1D-11D9-AC3A-000D93589AF6 + + diff --git a/HTML/HTML.tmLanguage.cache b/HTML/HTML.tmLanguage.cache new file mode 100644 index 0000000..ce6b94c Binary files /dev/null and b/HTML/HTML.tmLanguage.cache differ diff --git a/HTML/Miscellaneous.tmPreferences b/HTML/Miscellaneous.tmPreferences new file mode 100644 index 0000000..3618186 --- /dev/null +++ b/HTML/Miscellaneous.tmPreferences @@ -0,0 +1,33 @@ + + + + + name + Miscellaneous + scope + text.html + settings + + decreaseIndentPattern + (?x) + ^\s* + (</(?!html) + [A-Za-z0-9]+\b[^>]*> + |--> + |<\?(php)?\s+(else(if)?|end(if|for(each)?|while)) + |\} + ) + increaseIndentPattern + (?x) + ^\s* + <(?!\?|area|base|br|col|frame|hr|html|img|input|link|meta|param|[^>]*/>) + ([A-Za-z0-9]+)(?=\s|>)\b[^>]*>(?!.*</\1>) + |<!--(?!.*-->) + |<\?php.+?\b(if|else(?:if)?|for(?:each)?|while)\b.*:(?!.*end\1) + |\{[^}"']*$ + + bracketIndentNextLinePattern + <!DOCTYPE(?!.*>) + + + \ No newline at end of file diff --git a/HTML/Miscellaneous.tmPreferences.cache b/HTML/Miscellaneous.tmPreferences.cache new file mode 100644 index 0000000..68f2a80 Binary files /dev/null and b/HTML/Miscellaneous.tmPreferences.cache differ diff --git a/HTML/Symbol List - ID.tmPreferences b/HTML/Symbol List - ID.tmPreferences new file mode 100644 index 0000000..d3cf923 --- /dev/null +++ b/HTML/Symbol List - ID.tmPreferences @@ -0,0 +1,17 @@ + + + + + name + Symbol List: ID + scope + text.html meta.toc-list.id.html + settings + + symbolTransformation + s/^/ID: / + + uuid + E7C5859E-122D-4382-84BE-5AB584DC2409 + + diff --git a/HTML/Symbol List - ID.tmPreferences.cache b/HTML/Symbol List - ID.tmPreferences.cache new file mode 100644 index 0000000..8512683 Binary files /dev/null and b/HTML/Symbol List - ID.tmPreferences.cache differ diff --git a/HTML/encode_html_entities.py b/HTML/encode_html_entities.py new file mode 100644 index 0000000..222fc14 --- /dev/null +++ b/HTML/encode_html_entities.py @@ -0,0 +1,27 @@ +#!/usr/bin/env python + +import sublime +import sublime_plugin + +from htmlentitydefs import codepoint2name as cp2n + +class EncodeHtmlEntities(sublime_plugin.TextCommand): + def run(self, edit, **args): + view = self.view + + for sel in view.sel(): + buf = [] + + for pt in xrange(sel.begin(), sel.end()): + ch = view.substr(pt) + ch_ord = ord(ch) + + if (not view.match_selector(pt, ('meta.tag - string, constant.character.entity')) + and ch_ord in cp2n + and not (ch in ('"', "'") + and view.match_selector(pt, 'string'))): + ch = '&%s;' % cp2n[ch_ord] + + buf.append(ch) + + view.replace(edit, sel, ''.join(buf)) diff --git a/HTML/encode_html_entities.pyc b/HTML/encode_html_entities.pyc new file mode 100644 index 0000000..4fecaf3 Binary files /dev/null and b/HTML/encode_html_entities.pyc differ diff --git a/HTML/html.sublime-snippet b/HTML/html.sublime-snippet new file mode 100644 index 0000000..a57e890 --- /dev/null +++ b/HTML/html.sublime-snippet @@ -0,0 +1,12 @@ + + + + $1 + + +$0 + +]]> + html + text.html + \ No newline at end of file diff --git a/HTML/html_completions.py b/HTML/html_completions.py new file mode 100644 index 0000000..ab0b392 --- /dev/null +++ b/HTML/html_completions.py @@ -0,0 +1,263 @@ +import sublime, sublime_plugin +import re + +def match(rex, str): + m = rex.match(str) + if m: + return m.group(0) + else: + return None + +# This responds to on_query_completions, but conceptually it's expanding +# expressions, rather than completing words. +# +# It expands these simple expressions: +# tag.class +# tag#id +class HtmlCompletions(sublime_plugin.EventListener): + def on_query_completions(self, view, prefix, locations): + # Only trigger within HTML + if not view.match_selector(locations[0], + "text.html - source - meta.tag, punctuation.definition.tag.begin"): + return [] + + # Get the contents of each line, from the beginning of the line to + # each point + lines = [view.substr(sublime.Region(view.line(l).a, l)) + for l in locations] + + # Reverse the contents of each line, to simulate having the regex + # match backwards + lines = [l[::-1] for l in lines] + + # Check the first location looks like an expression + rex = re.compile("([\w-]+)([.#])(\w+)") + expr = match(rex, lines[0]) + if not expr: + return [] + + # Ensure that all other lines have identical expressions + for i in xrange(1, len(lines)): + ex = match(rex, lines[i]) + if ex != expr: + return [] + + # Return the completions + arg, op, tag = rex.match(expr).groups() + + arg = arg[::-1] + tag = tag[::-1] + expr = expr[::-1] + + if op == '.': + snippet = "<{0} class=\"{1}\">$1$0".format(tag, arg) + else: + snippet = "<{0} id=\"{1}\">$1$0".format(tag, arg) + + return [(expr, snippet)] + + +# Provide completions that match just after typing an opening angle bracket +class TagCompletions(sublime_plugin.EventListener): + def on_query_completions(self, view, prefix, locations): + # Only trigger within HTML + if not view.match_selector(locations[0], + "text.html - source"): + return [] + + pt = locations[0] - len(prefix) - 1 + ch = view.substr(sublime.Region(pt, pt + 1)) + if ch != '<': + return [] + + return ([ + ("a\tTag", "a href=\"$1\">$2"), + ("abbr\tTag", "abbr>$1"), + ("acronym\tTag", "acronym>$1"), + ("address\tTag", "address>$1"), + ("applet\tTag", "applet>$1"), + ("area\tTag", "area>$1"), + ("b\tTag", "b>$1"), + ("base\tTag", "base>$1"), + ("big\tTag", "big>$1"), + ("blockquote\tTag", "blockquote>$1"), + ("body\tTag", "body>$1"), + ("button\tTag", "button>$1"), + ("center\tTag", "center>$1"), + ("caption\tTag", "caption>$1"), + ("cdata\tTag", "cdata>$1"), + ("cite\tTag", "cite>$1"), + ("col\tTag", "col>$1"), + ("colgroup\tTag", "colgroup>$1"), + ("code\tTag", "code>$1"), + ("div\tTag", "div>$1"), + ("dd\tTag", "dd>$1"), + ("del\tTag", "del>$1"), + ("dfn\tTag", "dfn>$1"), + ("dl\tTag", "dl>$1"), + ("dt\tTag", "dt>$1"), + ("em\tTag", "em>$1"), + ("fieldset\tTag", "fieldset>$1"), + ("font\tTag", "font>$1"), + ("form\tTag", "form>$1"), + ("frame\tTag", "frame>$1"), + ("frameset\tTag", "frameset>$1"), + ("head\tTag", "head>$1"), + ("h1\tTag", "h1>$1"), + ("h2\tTag", "h2>$1"), + ("h3\tTag", "h3>$1"), + ("h4\tTag", "h4>$1"), + ("h5\tTag", "h5>$1"), + ("h6\tTag", "h6>$1"), + ("i\tTag", "i>$1"), + ("iframe\tTag", "iframe src=\"$1\">"), + ("ins\tTag", "ins>$1"), + ("kbd\tTag", "kbd>$1"), + ("li\tTag", "li>$1"), + ("label\tTag", "label>$1"), + ("legend\tTag", "legend>$1"), + ("link\tTag", "link rel=\"stylesheet\" type=\"text/css\" href=\"$1\">"), + ("map\tTag", "map>$1"), + ("noframes\tTag", "noframes>$1"), + ("object\tTag", "object>$1"), + ("ol\tTag", "ol>$1"), + ("optgroup\tTag", "optgroup>$1"), + ("option\tTag", "option>$0"), + ("p\tTag", "p>$1

    "), + ("pre\tTag", "pre>$1"), + ("span\tTag", "span>$1"), + ("samp\tTag", "samp>$1"), + ("script\tTag", "script type=\"${1:text/javascript}\">$0"), + ("style\tTag", "style type=\"${1:text/css}\">$0"), + ("select\tTag", "select>$1"), + ("small\tTag", "small>$1"), + ("strong\tTag", "strong>$1"), + ("sub\tTag", "sub>$1"), + ("sup\tTag", "sup>$1"), + ("table\tTag", "table>$1"), + ("tbody\tTag", "tbody>$1"), + ("td\tTag", "td>$1"), + ("textarea\tTag", "textarea>$1"), + ("tfoot\tTag", "tfoot>$1"), + ("th\tTag", "th>$1"), + ("thead\tTag", "thead>$1"), + ("title\tTag", "title>$1"), + ("tr\tTag", "tr>$1"), + ("tt\tTag", "tt>$1"), + ("u\tTag", "u>$1"), + ("ul\tTag", "ul>$1"), + ("var\tTag", "var>$1"), + + ("br\tTag", "br>"), + ("embed\tTag", "embed>"), + ("hr\tTag", "hr>"), + ("img\tTag", "img src=\"$1\">"), + ("input\tTag", "input>"), + ("meta\tTag", "meta>"), + ("param\tTag", "param name=\"$1\" value=\"$2\">"), + + ("article\tTag", "article>$1"), + ("aside\tTag", "aside>$1"), + ("audio\tTag", "audio>$1"), + ("canvas\tTag", "canvas>$1"), + ("footer\tTag", "footer>$1"), + ("header\tTag", "header>$1"), + ("nav\tTag", "nav>$1"), + ("section\tTag", "section>$1"), + ("video\tTag", "video>$1"), + + ("A\tTag", "A HREF=\"$1\">$2"), + ("ABBR\tTag", "ABBR>$1"), + ("ACRONYM\tTag", "ACRONYM>$1"), + ("ADDRESS\tTag", "ADDRESS>$1"), + ("APPLET\tTag", "APPLET>$1"), + ("AREA\tTag", "AREA>$1"), + ("B\tTag", "B>$1"), + ("BASE\tTag", "BASE>$1"), + ("BIG\tTag", "BIG>$1"), + ("BLOCKQUOTE\tTag", "BLOCKQUOTE>$1"), + ("BODY\tTag", "BODY>$1"), + ("BUTTON\tTag", "BUTTON>$1"), + ("CENTER\tTag", "CENTER>$1"), + ("CAPTION\tTag", "CAPTION>$1"), + ("CDATA\tTag", "CDATA>$1"), + ("CITE\tTag", "CITE>$1"), + ("COL\tTag", "COL>$1"), + ("COLGROUP\tTag", "COLGROUP>$1"), + ("CODE\tTag", "CODE>$1"), + ("DIV\tTag", "DIV>$1"), + ("DD\tTag", "DD>$1"), + ("DEL\tTag", "DEL>$1"), + ("DFN\tTag", "DFN>$1"), + ("DL\tTag", "DL>$1"), + ("DT\tTag", "DT>$1"), + ("EM\tTag", "EM>$1"), + ("FIELDSET\tTag", "FIELDSET>$1"), + ("FONT\tTag", "FONT>$1"), + ("FORM\tTag", "FORM>$1"), + ("FRAME\tTag", "FRAME>$1"), + ("FRAMESET\tTag", "FRAMESET>$1"), + ("HEAD\tTag", "HEAD>$1"), + ("H1\tTag", "H1>$1"), + ("H2\tTag", "H2>$1"), + ("H3\tTag", "H3>$1"), + ("H4\tTag", "H4>$1"), + ("H5\tTag", "H5>$1"), + ("H6\tTag", "H6>$1"), + ("I\tTag", "I>$1"), + ("IFRAME\tTag", "IFRAME src=\"$1\">"), + ("INS\tTag", "INS>$1"), + ("KBD\tTag", "KBD>$1"), + ("LI\tTag", "LI>$1"), + ("LABEL\tTag", "LABEL>$1"), + ("LEGEND\tTag", "LEGEND>$1"), + ("LINK\tTag", "LINK>$1"), + ("MAP\tTag", "MAP>$1"), + ("NOFRAMES\tTag", "NOFRAMES>$1"), + ("OBJECT\tTag", "OBJECT>$1"), + ("OL\tTag", "OL>$1"), + ("OPTGROUP\tTag", "OPTGROUP>$1"), + ("OPTION\tTag", "OPTION>$1"), + ("P\tTag", "P>$1

    "), + ("PRE\tTag", "PRE>$1"), + ("SPAN\tTag", "SPAN>$1"), + ("SAMP\tTag", "SAMP>$1"), + ("SCRIPT\tTag", "SCRIPT TYPE=\"${1:text/javascript}\">$0"), + ("STYLE\tTag", "STYLE TYPE=\"${1:text/css}\">$0"), + ("SELECT\tTag", "SELECT>$1"), + ("SMALL\tTag", "SMALL>$1"), + ("STRONG\tTag", "STRONG>$1"), + ("SUB\tTag", "SUB>$1"), + ("SUP\tTag", "SUP>$1"), + ("TABLE\tTag", "TABLE>$1"), + ("TBODY\tTag", "TBODY>$1"), + ("TD\tTag", "TD>$1"), + ("TEXTAREA\tTag", "TEXTAREA>$1"), + ("TFOOT\tTag", "TFOOT>$1"), + ("TH\tTag", "TH>$1"), + ("THEAD\tTag", "THEAD>$1"), + ("TITLE\tTag", "TITLE>$1"), + ("TR\tTag", "TR>$1"), + ("TT\tTag", "TT>$1"), + ("U\tTag", "U>$1"), + ("UL\tTag", "UL>$1"), + ("VAR\tTag", "VAR>$1"), + + ("BR\tTag", "BR>"), + ("EMBED\tTag", "EMBED>"), + ("HR\tTag", "HR>"), + ("IMG\tTag", "IMG SRC=\"$1\">"), + ("INPUT\tTag", "INPUT>"), + ("META\tTag", "META>"), + ("PARAM\tTag", "PARAM NAME=\"$1\" VALUE=\"$2\">)"), + + ("ARTICLE\tTag", "ARTICLE>$1"), + ("ASIDE\tTag", "ASIDE>$1"), + ("AUDIO\tTag", "AUDIO>$1"), + ("CANVAS\tTag", "CANVAS>$1"), + ("FOOTER\tTag", "FOOTER>$1"), + ("HEADER\tTag", "HEADER>$1"), + ("NAV\tTag", "NAV>$1"), + ("SECTION\tTag", "SECTION>$1"), + ("VIDEO\tTag", "VIDEO>$1") + ], sublime.INHIBIT_WORD_COMPLETIONS | sublime.INHIBIT_EXPLICIT_COMPLETIONS) diff --git a/HTML/html_completions.pyc b/HTML/html_completions.pyc new file mode 100644 index 0000000..4a18656 Binary files /dev/null and b/HTML/html_completions.pyc differ diff --git a/Haskell/Case.sublime-snippet b/Haskell/Case.sublime-snippet new file mode 100644 index 0000000..d91e5a0 --- /dev/null +++ b/Haskell/Case.sublime-snippet @@ -0,0 +1,7 @@ + + ${3:$1} + ${1/./ /g} ${4:otherwise} -> ${0:$1}]]> + case + source.haskell + Case + diff --git a/Haskell/Comments.tmPreferences b/Haskell/Comments.tmPreferences new file mode 100644 index 0000000..b32d46f --- /dev/null +++ b/Haskell/Comments.tmPreferences @@ -0,0 +1,36 @@ + + + + + name + Comments + scope + source.haskell + settings + + shellVariables + + + name + TM_COMMENT_START_2 + value + {- + + + name + TM_COMMENT_END_2 + value + -} + + + name + TM_COMMENT_START + value + -- + + + + uuid + E3994307-4D9E-44D6-832E-52C244F1CDF3 + + diff --git a/Haskell/Comments.tmPreferences.cache b/Haskell/Comments.tmPreferences.cache new file mode 100644 index 0000000..15b4e4d Binary files /dev/null and b/Haskell/Comments.tmPreferences.cache differ diff --git a/Haskell/Haskell.sublime-build b/Haskell/Haskell.sublime-build new file mode 100644 index 0000000..33a3110 --- /dev/null +++ b/Haskell/Haskell.sublime-build @@ -0,0 +1,5 @@ +{ + "cmd": ["runhaskell", "$file"], + "file_regex": "^(...*?):([0-9]*):?([0-9]*)", + "selector": "source.haskell" +} diff --git a/Haskell/Haskell.tmLanguage b/Haskell/Haskell.tmLanguage new file mode 100644 index 0000000..b0bf1ea --- /dev/null +++ b/Haskell/Haskell.tmLanguage @@ -0,0 +1,646 @@ + + + + + fileTypes + + hs + + keyEquivalent + ^~H + name + Haskell + patterns + + + captures + + 1 + + name + punctuation.definition.entity.haskell + + 2 + + name + punctuation.definition.entity.haskell + + + comment + In case this regex seems unusual for an infix operator, note that Haskell allows any ordinary function application (elem 4 [1..10]) to be rewritten as an infix expression (4 `elem` [1..10]). + match + (`)[a-zA-Z_']*?(`) + name + keyword.operator.function.infix.haskell + + + match + \(\) + name + constant.language.unit.haskell + + + match + \[\] + name + constant.language.empty-list.haskell + + + begin + (module) + beginCaptures + + 1 + + name + keyword.other.haskell + + + end + (where) + endCaptures + + 1 + + name + keyword.other.haskell + + + name + meta.declaration.module.haskell + patterns + + + include + #module_name + + + include + #module_exports + + + match + [a-z]+ + name + invalid + + + + + begin + \b(class)\b + beginCaptures + + 1 + + name + keyword.other.haskell + + + end + \b(where)\b + endCaptures + + 1 + + name + keyword.other.haskell + + + name + meta.declaration.class.haskell + patterns + + + match + \b(Monad|Functor|Eq|Ord|Read|Show|Num|(Frac|Ra)tional|Enum|Bounded|Real(Frac|Float)?|Integral|Floating)\b + name + support.class.prelude.haskell + + + match + [A-Z][A-Za-z_']* + name + entity.other.inherited-class.haskell + + + match + \b[a-z][a-zA-Z0-9_']*\b + name + variable.other.generic-type.haskell + + + + + begin + \b(instance)\b + beginCaptures + + 1 + + name + keyword.other.haskell + + + end + \b(where)\b|$ + endCaptures + + 1 + + name + keyword.other.haskell + + + name + meta.declaration.instance.haskell + patterns + + + include + #type_signature + + + + + begin + (import) + beginCaptures + + 1 + + name + keyword.other.haskell + + + end + ($|;) + name + meta.import.haskell + patterns + + + match + (qualified|as|hiding) + name + keyword.other.haskell + + + include + #module_name + + + include + #module_exports + + + + + begin + (deriving)\s*\( + beginCaptures + + 1 + + name + keyword.other.haskell + + + end + \) + name + meta.deriving.haskell + patterns + + + match + \b[A-Z][a-zA-Z_']* + name + entity.other.inherited-class.haskell + + + + + match + \b(deriving|where|data|type|case|of|let|in|newtype|default)\b + name + keyword.other.haskell + + + match + \binfix[lr]?\b + name + keyword.operator.haskell + + + match + \b(do|if|then|else)\b + name + keyword.control.haskell + + + comment + Floats are always decimal + match + \b([0-9]+\.[0-9]+([eE][+-]?[0-9]+)?|[0-9]+[eE][+-]?[0-9]+)\b + name + constant.numeric.float.haskell + + + match + \b([0-9]+|0([xX][0-9a-fA-F]+|[oO][0-7]+))\b + name + constant.numeric.haskell + + + captures + + 1 + + name + punctuation.definition.preprocessor.c + + + comment + In addition to Haskell's "native" syntax, GHC permits the C preprocessor to be run on a source file. + match + ^\s*(#)\s*\w+ + name + meta.preprocessor.c + + + include + #pragma + + + begin + " + beginCaptures + + 0 + + name + punctuation.definition.string.begin.haskell + + + end + " + endCaptures + + 0 + + name + punctuation.definition.string.end.haskell + + + name + string.quoted.double.haskell + patterns + + + match + \\(NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\"'\&]) + name + constant.character.escape.haskell + + + match + \\o[0-7]+|\\x[0-9A-Fa-f]+|\\[0-9]+ + name + constant.character.escape.octal.haskell + + + match + \^[A-Z@\[\]\\\^_] + name + constant.character.escape.control.haskell + + + + + captures + + 1 + + name + punctuation.definition.string.begin.haskell + + 2 + + name + constant.character.escape.haskell + + 3 + + name + constant.character.escape.octal.haskell + + 4 + + name + constant.character.escape.hexadecimal.haskell + + 5 + + name + constant.character.escape.control.haskell + + 6 + + name + punctuation.definition.string.end.haskell + + + match + (?x) + (') + (?: + [\ -\[\]-~] # Basic Char + | (\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE + |DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS + |US|SP|DEL|[abfnrtv\\\"'\&])) # Escapes + | (\\o[0-7]+) # Octal Escapes + | (\\x[0-9A-Fa-f]+) # Hexadecimal Escapes + | (\^[A-Z@\[\]\\\^_]) # Control Chars + ) + (') + + name + string.quoted.single.haskell + + + begin + ^\s*([a-z_][a-zA-Z0-9_']*|\([|!%$+\-.,=</>]+\))\s*(::) + beginCaptures + + 1 + + name + entity.name.function.haskell + + 2 + + name + keyword.other.double-colon.haskell + + + end + $\n? + name + meta.function.type-declaration.haskell + patterns + + + include + #type_signature + + + + + match + \b(Just|Nothing|Left|Right|True|False|LT|EQ|GT|\(\)|\[\])\b + name + support.constant.haskell + + + match + \b[A-Z]\w*\b + name + constant.other.haskell + + + include + #comments + + + match + \b(abs|acos|acosh|all|and|any|appendFile|applyM|asTypeOf|asin|asinh|atan|atan2|atanh|break|catch|ceiling|compare|concat|concatMap|const|cos|cosh|curry|cycle|decodeFloat|div|divMod|drop|dropWhile|elem|encodeFloat|enumFrom|enumFromThen|enumFromThenTo|enumFromTo|error|even|exp|exponent|fail|filter|flip|floatDigits|floatRadix|floatRange|floor|fmap|foldl|foldl1|foldr|foldr1|fromEnum|fromInteger|fromIntegral|fromRational|fst|gcd|getChar|getContents|getLine|head|id|init|interact|ioError|isDenormalized|isIEEE|isInfinite|isNaN|isNegativeZero|iterate|last|lcm|length|lex|lines|log|logBase|lookup|map|mapM|mapM_|max|maxBound|maximum|maybe|min|minBound|minimum|mod|negate|not|notElem|null|odd|or|otherwise|pi|pred|print|product|properFraction|putChar|putStr|putStrLn|quot|quotRem|read|readFile|readIO|readList|readLn|readParen|reads|readsPrec|realToFrac|recip|rem|repeat|replicate|return|reverse|round|scaleFloat|scanl|scanl1|scanr|scanr1|seq|sequence|sequence_|show|showChar|showList|showParen|showString|shows|showsPrec|significand|signum|sin|sinh|snd|span|splitAt|sqrt|subtract|succ|sum|tail|take|takeWhile|tan|tanh|toEnum|toInteger|toRational|truncate|uncurry|undefined|unlines|until|unwords|unzip|unzip3|userError|words|writeFile|zip|zip3|zipWith|zipWith3)\b + name + support.function.prelude.haskell + + + include + #infix_op + + + comment + In case this regex seems overly general, note that Haskell permits the definition of new operators which can be nearly any string of punctuation characters, such as $%^&*. + match + [|!%$?~+:\-.=</>\\]+ + name + keyword.operator.haskell + + + match + , + name + punctuation.separator.comma.haskell + + + repository + + block_comment + + applyEndPatternLast + 1 + begin + \{-(?!#) + captures + + 0 + + name + punctuation.definition.comment.haskell + + + end + -\} + name + comment.block.haskell + patterns + + + include + #block_comment + + + + comments + + patterns + + + captures + + 1 + + name + punctuation.definition.comment.haskell + + + match + (--).*$\n? + name + comment.line.double-dash.haskell + + + include + #block_comment + + + + infix_op + + match + (\([|!%$+:\-.=</>]+\)|\(,+\)) + name + entity.name.function.infix.haskell + + module_exports + + begin + \( + end + \) + name + meta.declaration.exports.haskell + patterns + + + match + \b[a-z][a-zA-Z_'0-9]* + name + entity.name.function.haskell + + + match + \b[A-Z][A-Za-z_'0-9]* + name + storage.type.haskell + + + match + , + name + punctuation.separator.comma.haskell + + + include + #infix_op + + + comment + So named because I don't know what to call this. + match + \(.*?\) + name + meta.other.unknown.haskell + + + + module_name + + match + [A-Z][A-Za-z._']* + name + support.other.module.haskell + + pragma + + begin + \{-# + end + #-\} + name + meta.preprocessor.haskell + patterns + + + match + \b(LANGUAGE|UNPACK|INLINE)\b + name + keyword.other.preprocessor.haskell + + + + type_signature + + patterns + + + captures + + 1 + + name + entity.other.inherited-class.haskell + + 2 + + name + variable.other.generic-type.haskell + + 3 + + name + keyword.other.big-arrow.haskell + + + match + \(\s*([A-Z][A-Za-z]*)\s+([a-z][A-Za-z_']*)\)\s*(=>) + name + meta.class-constraint.haskell + + + include + #pragma + + + match + -> + name + keyword.other.arrow.haskell + + + match + => + name + keyword.other.big-arrow.haskell + + + match + \b(Int(eger)?|Maybe|Either|Bool|Float|Double|Char|String|Ordering|ShowS|ReadS|FilePath|IO(Error)?)\b + name + support.type.prelude.haskell + + + match + \b[a-z][a-zA-Z0-9_']*\b + name + variable.other.generic-type.haskell + + + match + \b[A-Z][a-zA-Z0-9_']*\b + name + storage.type.haskell + + + match + \(\) + name + support.constant.unit.haskell + + + include + #comments + + + + + scopeName + source.haskell + uuid + 5C034675-1F6D-497E-8073-369D37E2FD7D + + diff --git a/Haskell/Haskell.tmLanguage.cache b/Haskell/Haskell.tmLanguage.cache new file mode 100644 index 0000000..1c90079 Binary files /dev/null and b/Haskell/Haskell.tmLanguage.cache differ diff --git a/Haskell/Indent Patterns.tmPreferences b/Haskell/Indent Patterns.tmPreferences new file mode 100644 index 0000000..daedfba --- /dev/null +++ b/Haskell/Indent Patterns.tmPreferences @@ -0,0 +1,17 @@ + + + + + name + Indent Patterns + scope + source.haskell + settings + + increaseIndentPattern + ((^.*(=|\bdo|\bwhere|\bthen|\belse|\bof)\s*$)|(^.*\bif(?!.*\bthen\b.*\belse\b.*).*$)) + + uuid + 39417FB9-B85C-4213-BB1D-C19BCDD4E487 + + diff --git a/Haskell/Indent Patterns.tmPreferences.cache b/Haskell/Indent Patterns.tmPreferences.cache new file mode 100644 index 0000000..b07e6ef Binary files /dev/null and b/Haskell/Indent Patterns.tmPreferences.cache differ diff --git a/Haskell/Instance.sublime-snippet b/Haskell/Instance.sublime-snippet new file mode 100644 index 0000000..a45c091 --- /dev/null +++ b/Haskell/Instance.sublime-snippet @@ -0,0 +1,7 @@ + + + instance + source.haskell + Instance + diff --git a/Haskell/Lambda.sublime-snippet b/Haskell/Lambda.sublime-snippet new file mode 100644 index 0000000..e56b467 --- /dev/null +++ b/Haskell/Lambda.sublime-snippet @@ -0,0 +1,6 @@ + + ${0:f t}]]> + \ + source.haskell + \t -> f t + diff --git a/Haskell/Literate Haskell.tmLanguage b/Haskell/Literate Haskell.tmLanguage new file mode 100644 index 0000000..fdc3059 --- /dev/null +++ b/Haskell/Literate Haskell.tmLanguage @@ -0,0 +1,65 @@ + + + + + fileTypes + + lhs + + keyEquivalent + ^~H + name + Literate Haskell + patterns + + + begin + ^((\\)begin)({)code(})(\s*\n)? + captures + + 1 + + name + support.function.be.latex + + 2 + + name + punctuation.definition.function.latex + + 3 + + name + punctuation.definition.arguments.begin.latex + + 4 + + name + punctuation.definition.arguments.end.latex + + + contentName + source.haskell.embedded.latex + end + ^((\\)end)({)code(}) + name + meta.function.embedded.haskell.latex + patterns + + + include + source.haskell + + + + + include + text.tex.latex + + + scopeName + text.tex.latex.haskell + uuid + 439807F5-7129-487D-B5DC-95D5272B43DD + + diff --git a/Haskell/Literate Haskell.tmLanguage.cache b/Haskell/Literate Haskell.tmLanguage.cache new file mode 100644 index 0000000..9ff3b36 Binary files /dev/null and b/Haskell/Literate Haskell.tmLanguage.cache differ diff --git a/Haskell/Main.sublime-snippet b/Haskell/Main.sublime-snippet new file mode 100644 index 0000000..cc04ae3 --- /dev/null +++ b/Haskell/Main.sublime-snippet @@ -0,0 +1,8 @@ + + + main + source.haskell + Main + diff --git a/Haskell/Symbol List.tmPreferences b/Haskell/Symbol List.tmPreferences new file mode 100644 index 0000000..e6aaa75 --- /dev/null +++ b/Haskell/Symbol List.tmPreferences @@ -0,0 +1,17 @@ + + + + + name + Symbol List + scope + source.haskell entity.name.function - entity.name.function.infix + settings + + showInSymbolList + 1 + + uuid + 0C39B945-E2C0-4E43-8A5B-332F6FA73C67 + + diff --git a/Haskell/Symbol List.tmPreferences.cache b/Haskell/Symbol List.tmPreferences.cache new file mode 100644 index 0000000..af0a337 Binary files /dev/null and b/Haskell/Symbol List.tmPreferences.cache differ diff --git a/Haskell/module.sublime-snippet b/Haskell/module.sublime-snippet new file mode 100644 index 0000000..76ee8d3 --- /dev/null +++ b/Haskell/module.sublime-snippet @@ -0,0 +1,8 @@ + + + mod + source.haskell + Module + diff --git a/Jasmine/Commands/Run Examples.tmCommand b/Jasmine/Commands/Run Examples.tmCommand new file mode 100644 index 0000000..b8d5cd7 --- /dev/null +++ b/Jasmine/Commands/Run Examples.tmCommand @@ -0,0 +1,24 @@ + + + + + beforeRunningCommand + nop + command + #!/usr/bin/env sh + +open "http://localhost:8888/" + input + none + keyEquivalent + @r + name + Run Examples + output + showAsTooltip + scope + source.js.jasmine + uuid + EC249A94-DCB0-4A31-903E-408C40F18C11 + + diff --git a/Jasmine/Commands/alternate file.tmCommand b/Jasmine/Commands/alternate file.tmCommand new file mode 100644 index 0000000..5ae1db6 --- /dev/null +++ b/Jasmine/Commands/alternate file.tmCommand @@ -0,0 +1,30 @@ + + + + + beforeRunningCommand + nop + command + #!/usr/bin/env sh +cat <<'RUBYEOF' > /tmp/textmate-command-$$.rb + +require ENV['TM_BUNDLE_SUPPORT'] + "/lib/jasmine/switch_command" +Jasmine::SwitchCommand.new.go_to_twin(ENV['TM_PROJECT_DIRECTORY'], ENV['TM_FILEPATH']) + +RUBYEOF + +${TM_RUBY:-ruby} /tmp/textmate-command-$$.rb; exit_status=$?; rm /tmp/textmate-command-$$.rb; exit $exit_status + input + none + keyEquivalent + ^$ + name + Alternate File + output + showAsTooltip + scope + source.js + uuid + 319E1B7D-8394-4CF1-8039-761704C21E45 + + diff --git a/Jasmine/Commands/update bundle.tmCommand b/Jasmine/Commands/update bundle.tmCommand new file mode 100644 index 0000000..95290aa --- /dev/null +++ b/Jasmine/Commands/update bundle.tmCommand @@ -0,0 +1,27 @@ + + + + + beforeRunningCommand + nop + command + cd "$TM_BUNDLE_PATH" + +echo "<pre>" +[ -d ".svn" ] && svn up +[ -d ".git" ] && git pull +[ ! -d .svn ] && [ ! -d .git ] && echo "You must install the Jasmine bundle using Subversion or Git in order to update via this command." + +osascript -e 'tell app "TextMate" to reload bundles' + +echo "</pre>" + input + selection + name + Update Bundle + output + showAsHTML + uuid + C7E8B28E-012E-4772-B4B3-A83F7B4C8A31 + + diff --git a/Jasmine/Default (Linux).sublime-keymap b/Jasmine/Default (Linux).sublime-keymap new file mode 100644 index 0000000..b389f42 --- /dev/null +++ b/Jasmine/Default (Linux).sublime-keymap @@ -0,0 +1,5 @@ +[ + { "keys": ["ctrl+period"], "command": "jasmine_switch_between_code_and_spec", "context" : [ + { "key": "selector", "operator": "equal", "operand": "source.js", "match_all": true } + ]} // switch between code and test +] diff --git a/Jasmine/Default (OSX).sublime-keymap b/Jasmine/Default (OSX).sublime-keymap new file mode 100644 index 0000000..09dac1f --- /dev/null +++ b/Jasmine/Default (OSX).sublime-keymap @@ -0,0 +1,5 @@ +[ + { "keys": ["super+period"], "command": "jasmine_switch_between_code_and_spec", "context" : [ + { "key": "selector", "operator": "equal", "operand": "source.js", "match_all": true } + ]} // switch between code and test +] diff --git a/Jasmine/Default (Windows).sublime-keymap b/Jasmine/Default (Windows).sublime-keymap new file mode 100644 index 0000000..b389f42 --- /dev/null +++ b/Jasmine/Default (Windows).sublime-keymap @@ -0,0 +1,5 @@ +[ + { "keys": ["ctrl+period"], "command": "jasmine_switch_between_code_and_spec", "context" : [ + { "key": "selector", "operator": "equal", "operand": "source.js", "match_all": true } + ]} // switch between code and test +] diff --git a/Jasmine/Default.sublime-commands b/Jasmine/Default.sublime-commands new file mode 100644 index 0000000..aa71081 --- /dev/null +++ b/Jasmine/Default.sublime-commands @@ -0,0 +1,3 @@ +[ + { "caption": "Jasmine: Switch between code and spec", "command": "jasmine_switch_between_code_and_spec" } +] diff --git a/Jasmine/README.md b/Jasmine/README.md new file mode 100644 index 0000000..03f720f --- /dev/null +++ b/Jasmine/README.md @@ -0,0 +1,22 @@ +A TextMate bundle for the Jasmine JavaScript BDD Framework. + +# About + +Jasmine is a behavior-driven testing framework for Javascript. This is a TextMate bundle for working with Jasmine. + + +# More + + * [Jasmine](http://github.com/pivotal/jasmine) + + +# Bundle Installation + + $ cd ~/Library/Application\ Support/TextMate/Bundles/ + $ git clone git://github.com/pivotal/jasmine-tmbundle.git Jasmine.tmbundle + $ osascript -e 'tell app "TextMate" to reload bundles' + + # or + + $ [sudo] gem install textmate + $ textmate install Jasmine diff --git a/Jasmine/Snippets/after each.tmSnippet b/Jasmine/Snippets/after each.tmSnippet new file mode 100644 index 0000000..4796055 --- /dev/null +++ b/Jasmine/Snippets/after each.tmSnippet @@ -0,0 +1,18 @@ + + + + + content + afterEach(function() { + $0 +}); + name + after each + scope + source.js.jasmine + tabTrigger + aft + uuid + AE19C012-687A-43C5-B1B3-A9DF55CE2E02 + + diff --git a/Jasmine/Snippets/any.tmSnippet b/Jasmine/Snippets/any.tmSnippet new file mode 100644 index 0000000..34c7bca --- /dev/null +++ b/Jasmine/Snippets/any.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + jasmine.any($1) + name + any + scope + source.js.jasmine + tabTrigger + any + uuid + FBE3DE6C-DC75-4224-B26E-B4EA6FE4C38E + + diff --git a/Jasmine/Snippets/before each.tmSnippet b/Jasmine/Snippets/before each.tmSnippet new file mode 100644 index 0000000..a1316b2 --- /dev/null +++ b/Jasmine/Snippets/before each.tmSnippet @@ -0,0 +1,18 @@ + + + + + content + beforeEach(function() { + $0 +}); + name + before each + scope + source.js.jasmine + tabTrigger + bef + uuid + C32FD427-4E1F-4BBC-A9FF-023DA465629F + + diff --git a/Jasmine/Snippets/describe.tmSnippet b/Jasmine/Snippets/describe.tmSnippet new file mode 100644 index 0000000..958f987 --- /dev/null +++ b/Jasmine/Snippets/describe.tmSnippet @@ -0,0 +1,18 @@ + + + + + content + describe("${1:description}", function() { + $0 +}); + name + describe + scope + source.js.jasmine + tabTrigger + des + uuid + 04750DD6-B123-4121-8C14-361322874BDF + + diff --git a/Jasmine/Snippets/expect not to be defined.tmSnippet b/Jasmine/Snippets/expect not to be defined.tmSnippet new file mode 100644 index 0000000..f63585e --- /dev/null +++ b/Jasmine/Snippets/expect not to be defined.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + expect(${1:target}).not.toBeDefined(); + name + expect not to be defined + scope + source.js.jasmine + tabTrigger + notd + uuid + E86E40FA-0964-4CA6-A35E-E562FF9788B8 + + diff --git a/Jasmine/Snippets/expect not to be falsy.tmSnippet b/Jasmine/Snippets/expect not to be falsy.tmSnippet new file mode 100644 index 0000000..fe532e5 --- /dev/null +++ b/Jasmine/Snippets/expect not to be falsy.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + expect(${1:target}).not.toBeFalsy(); + name + expect not to be falsy + scope + source.js.jasmine + tabTrigger + notf + uuid + 95461AC7-0F0F-4D76-8EA2-5AA4E1FBC2A7 + + diff --git a/Jasmine/Snippets/expect not to be null.tmSnippet b/Jasmine/Snippets/expect not to be null.tmSnippet new file mode 100644 index 0000000..1077361 --- /dev/null +++ b/Jasmine/Snippets/expect not to be null.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + expect(${1:target}).not.toBeNull(); + name + expect not to be null + scope + source.js.jasmine + tabTrigger + notn + uuid + 51A4FC2F-7EAE-4153-9BEA-3771F1EEAF69 + + diff --git a/Jasmine/Snippets/expect not to be truthy.tmSnippet b/Jasmine/Snippets/expect not to be truthy.tmSnippet new file mode 100644 index 0000000..7f43c47 --- /dev/null +++ b/Jasmine/Snippets/expect not to be truthy.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + expect(${1:target}).not.toBeTruthy(); + name + expect not to be truthy + scope + source.js.jasmine + tabTrigger + nott + uuid + E8AAF148-4084-42C2-B5AC-FCB969B9732A + + diff --git a/Jasmine/Snippets/expect not to contain.tmSnippet b/Jasmine/Snippets/expect not to contain.tmSnippet new file mode 100644 index 0000000..839ce51 --- /dev/null +++ b/Jasmine/Snippets/expect not to contain.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + expect(${1:target}).not.toContain(${2:value}); + name + expect not to contain + scope + source.js.jasmine + tabTrigger + notc + uuid + 04643901-054A-4C97-9F26-E7704C75D1A3 + + diff --git a/Jasmine/Snippets/expect not to equal.tmSnippet b/Jasmine/Snippets/expect not to equal.tmSnippet new file mode 100644 index 0000000..cb9c7aa --- /dev/null +++ b/Jasmine/Snippets/expect not to equal.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + expect(${1:target}).not.toEqual(${2:value}); + name + expect not to equal + scope + source.js.jasmine + tabTrigger + note + uuid + 881E3CF0-0D58-4AEE-851B-16AB65875AA1 + + diff --git a/Jasmine/Snippets/expect not to match.tmSnippet b/Jasmine/Snippets/expect not to match.tmSnippet new file mode 100644 index 0000000..3c3ec77 --- /dev/null +++ b/Jasmine/Snippets/expect not to match.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + expect(${1:target}).not.toMatch(${2:pattern}); + name + expect not to match + scope + source.js.jasmine + tabTrigger + notm + uuid + 2B416A23-4DD1-4E11-AA8F-030CB5DD4316 + + diff --git a/Jasmine/Snippets/expect not.tmSnippet b/Jasmine/Snippets/expect not.tmSnippet new file mode 100644 index 0000000..c93207b --- /dev/null +++ b/Jasmine/Snippets/expect not.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + expect(${1:target}).not$0; + name + expect not + scope + source.js.jasmine + tabTrigger + notx + uuid + B4EB994B-A5CA-4B78-BAE9-A81BB4EF6204 + + diff --git a/Jasmine/Snippets/expect to be defined.tmSnippet b/Jasmine/Snippets/expect to be defined.tmSnippet new file mode 100644 index 0000000..413132b --- /dev/null +++ b/Jasmine/Snippets/expect to be defined.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + expect(${1:target}).toBeDefined(); + name + expect to be defined + scope + source.js.jasmine + tabTrigger + ed + uuid + 0A88A2A1-3A5A-4F3E-AE9A-D924275ADB3D + + diff --git a/Jasmine/Snippets/expect to be falsy.tmSnippet b/Jasmine/Snippets/expect to be falsy.tmSnippet new file mode 100644 index 0000000..d95b6fb --- /dev/null +++ b/Jasmine/Snippets/expect to be falsy.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + expect(${1:target}).toBeFalsy(); + name + expect to be falsy + scope + source.js.jasmine + tabTrigger + ef + uuid + 00F58D6A-507D-4ED2-94C7-DEEE38DB5DCD + + diff --git a/Jasmine/Snippets/expect to be null.tmSnippet b/Jasmine/Snippets/expect to be null.tmSnippet new file mode 100644 index 0000000..e477716 --- /dev/null +++ b/Jasmine/Snippets/expect to be null.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + expect(${1:target}).toBeNull(); + name + expect to be null + scope + source.js.jasmine + tabTrigger + en + uuid + F0DF1C99-CB9E-4366-B6B1-D19DE58CDDA4 + + diff --git a/Jasmine/Snippets/expect to be truthy.tmSnippet b/Jasmine/Snippets/expect to be truthy.tmSnippet new file mode 100644 index 0000000..c99ebbf --- /dev/null +++ b/Jasmine/Snippets/expect to be truthy.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + expect(${1:target}).toBeTruthy(); + name + expect to be truthy + scope + source.js.jasmine + tabTrigger + et + uuid + CC612FA5-51EC-48D0-96C9-C39E61F9DD06 + + diff --git a/Jasmine/Snippets/expect to contain.tmSnippet b/Jasmine/Snippets/expect to contain.tmSnippet new file mode 100644 index 0000000..dbd52ea --- /dev/null +++ b/Jasmine/Snippets/expect to contain.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + expect(${1:target}).toContain(${2:value}); + name + expect to contain + scope + source.js.jasmine + tabTrigger + ec + uuid + BA6991F2-7A1F-4F40-A016-9A967A96546F + + diff --git a/Jasmine/Snippets/expect to equal.tmSnippet b/Jasmine/Snippets/expect to equal.tmSnippet new file mode 100644 index 0000000..c93ba9b --- /dev/null +++ b/Jasmine/Snippets/expect to equal.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + expect(${1:target}).toEqual(${2:value}); + name + expect to equal + scope + source.js.jasmine + tabTrigger + ee + uuid + CB33CF32-BBFB-443E-BAA1-0DB331108AED + + diff --git a/Jasmine/Snippets/expect to match.tmSnippet b/Jasmine/Snippets/expect to match.tmSnippet new file mode 100644 index 0000000..497eead --- /dev/null +++ b/Jasmine/Snippets/expect to match.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + expect(${1:target}).toMatch(${2:pattern}); + name + expect to match + scope + source.js.jasmine + tabTrigger + em + uuid + 36859208-CA4C-4F0C-B988-D1DF5F6336B2 + + diff --git a/Jasmine/Snippets/expect was called with.tmSnippet b/Jasmine/Snippets/expect was called with.tmSnippet new file mode 100644 index 0000000..3382e0c --- /dev/null +++ b/Jasmine/Snippets/expect was called with.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + expect(${1:target}).wasCalledWith(${2:arguments}); + name + expect was called with + scope + source.js.jasmine + tabTrigger + escw + uuid + 09DDCEC4-5548-4926-81D0-0B89F36E5780 + + diff --git a/Jasmine/Snippets/expect was called.tmSnippet b/Jasmine/Snippets/expect was called.tmSnippet new file mode 100644 index 0000000..d3fa2b6 --- /dev/null +++ b/Jasmine/Snippets/expect was called.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + expect(${1:target}).wasCalled(); + name + expect was called + scope + source.js.jasmine + tabTrigger + esc + uuid + BC047A82-18B3-4330-B73A-723B55BC0708 + + diff --git a/Jasmine/Snippets/expect was not called with.tmSnippet b/Jasmine/Snippets/expect was not called with.tmSnippet new file mode 100644 index 0000000..474e8ab --- /dev/null +++ b/Jasmine/Snippets/expect was not called with.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + expect(${1:target}).wasNotCalledWith(${2:arguments}); + name + expect was not called with + scope + source.js.jasmine + tabTrigger + notscw + uuid + 121D8CB2-87C8-4FAC-AA4C-E825845CDDE5 + + diff --git a/Jasmine/Snippets/expect was not called.tmSnippet b/Jasmine/Snippets/expect was not called.tmSnippet new file mode 100644 index 0000000..d4c0c3f --- /dev/null +++ b/Jasmine/Snippets/expect was not called.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + expect(${1:target}).wasNotCalled(); + name + expect was not called + scope + source.js.jasmine + tabTrigger + notsc + uuid + 1E81D6CD-F292-4861-A474-AF30836F60EF + + diff --git a/Jasmine/Snippets/expect.tmSnippet b/Jasmine/Snippets/expect.tmSnippet new file mode 100644 index 0000000..4c05604 --- /dev/null +++ b/Jasmine/Snippets/expect.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + expect(${1:target})$0; + name + expect + scope + source.js.jasmine + tabTrigger + ex + uuid + 5397251E-A718-4631-9C17-A8937A2662DD + + diff --git a/Jasmine/Snippets/it.tmSnippet b/Jasmine/Snippets/it.tmSnippet new file mode 100644 index 0000000..aab5ebc --- /dev/null +++ b/Jasmine/Snippets/it.tmSnippet @@ -0,0 +1,18 @@ + + + + + content + it("${1:description}", function() { + $0 +}); + name + it + scope + source.js.jasmine + tabTrigger + it + uuid + 60F4EFEE-FF5D-412A-88A6-9C833541302A + + diff --git a/Jasmine/Snippets/runs.tmSnippet b/Jasmine/Snippets/runs.tmSnippet new file mode 100644 index 0000000..b225c9e --- /dev/null +++ b/Jasmine/Snippets/runs.tmSnippet @@ -0,0 +1,18 @@ + + + + + content + runs(function() { + $0 +}); + name + runs + scope + source.js.jasmine + tabTrigger + ru + uuid + F035C4FB-441F-42F6-BEA1-EE6C89323139 + + diff --git a/Jasmine/Snippets/spy on and call fake.tmSnippet b/Jasmine/Snippets/spy on and call fake.tmSnippet new file mode 100644 index 0000000..1fc515a --- /dev/null +++ b/Jasmine/Snippets/spy on and call fake.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + spyOn(${1:object}, "${2:method}").andCallFake(${3:function}); + name + spy on and call fake + scope + source.js.jasmine + tabTrigger + scf + uuid + 418017C9-A1A8-418B-BDDF-39B77633D579 + + diff --git a/Jasmine/Snippets/spy on and call through.tmSnippet b/Jasmine/Snippets/spy on and call through.tmSnippet new file mode 100644 index 0000000..b0f7bcb --- /dev/null +++ b/Jasmine/Snippets/spy on and call through.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + spyOn(${1:object}, "${2:method}").andCallThrough(); + name + spy on and call through + scope + source.js.jasmine + tabTrigger + sct + uuid + 0D5D467D-3123-4980-81CD-1D06D8FED689 + + diff --git a/Jasmine/Snippets/spy on and return.tmSnippet b/Jasmine/Snippets/spy on and return.tmSnippet new file mode 100644 index 0000000..bc93490 --- /dev/null +++ b/Jasmine/Snippets/spy on and return.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + spyOn(${1:object}, "${2:method}").andReturn(${3:arguments}); + name + spy on and return + scope + source.js.jasmine + tabTrigger + sr + uuid + EA1984D8-7FCC-4C48-8212-A82A5D26180C + + diff --git a/Jasmine/Snippets/spy on and throw.tmSnippet b/Jasmine/Snippets/spy on and throw.tmSnippet new file mode 100644 index 0000000..0bfb49c --- /dev/null +++ b/Jasmine/Snippets/spy on and throw.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + spyOn(${1:object}, "${2:method}").andThrow(${3:exception}); + name + spy on and throw + scope + source.js.jasmine + tabTrigger + st + uuid + 99B1336F-2A05-49FB-8DBF-1F6E5C622A43 + + diff --git a/Jasmine/Snippets/spy on.tmSnippet b/Jasmine/Snippets/spy on.tmSnippet new file mode 100644 index 0000000..6a8c98e --- /dev/null +++ b/Jasmine/Snippets/spy on.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + spyOn(${1:object}, "${2:method}")$0; + name + spy on + scope + source.js.jasmine + tabTrigger + s + uuid + 7C9BE4CF-4BFB-423A-B5BC-E42B1104E645 + + diff --git a/Jasmine/Snippets/waits.tmSnippet b/Jasmine/Snippets/waits.tmSnippet new file mode 100644 index 0000000..51540bd --- /dev/null +++ b/Jasmine/Snippets/waits.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + waits($1); + name + waits + scope + source.js.jasmine + tabTrigger + wa + uuid + B38098FA-11FA-4002-BB35-71B05EE2DEDC + + diff --git a/Jasmine/Support/lib/jasmine/switch_command.rb b/Jasmine/Support/lib/jasmine/switch_command.rb new file mode 100644 index 0000000..747359a --- /dev/null +++ b/Jasmine/Support/lib/jasmine/switch_command.rb @@ -0,0 +1,117 @@ +module Jasmine + # This is based on Ruy Asan's initial code: + # http://ruy.ca/posts/6-A-simple-switch-between-source-and-spec-file-command-for-textmate-with-auto-creation- + class SwitchCommand + def go_to_twin(project_directory, filepath) + other = twin(filepath) + if File.file?(other) + %x{ "$TM_SUPPORT_PATH/bin/mate" "#{other}" } + else + raise "NOT IMPLEMENTED" + # relative = other[project_directory.length+1..-1] + # file_type = file_type(other) + # if create?(relative, file_type) + # content = content_for(file_type, relative) + # write_and_open(other, content) + # end + end + end + + def twin(path) + if path =~ /^(.*?)\/(public|spec)\/(.*?)$/ + framework, parent, rest = $1, $2, $3 + + case parent + when 'public' then + path = path.gsub(/\/public\//, "/spec/") + path = path.gsub(/\.js$/, "_spec.js") + when 'spec' then + path = path.gsub(/_spec\.js$/, ".js") + path = path.gsub(/\/spec\//, "/public/") + end + return path + end + end + + + + + + # NOT IMPLEMENTED (copied from RSpec.tmbundle).................... + + + def file_type(path) + if path =~ /^(.*?)\/(spec)\/(controllers|helpers|models|views)\/(.*?)$/ + return "#{$3[0..-2]} spec" + end + if path =~ /^(.*?)\/(app)\/(controllers|helpers|models|views)\/(.*?)$/ + return $3[0..-2] + end + if path =~ /_spec\.rb$/ + return "spec" + end + "file" + end + + def create?(relative_twin, file_type) + answer = `#{ ENV['TM_SUPPORT_PATH'] }/bin/CocoaDialog.app/Contents/MacOS/CocoaDialog yesno-msgbox --no-cancel --icon document --informative-text "#{relative_twin}" --text "Create missing #{file_type}?"` + answer.to_s.chomp == "1" + end + + def content_for(file_type, relative_path) + case file_type + when /spec$/ then + spec(relative_path) + else + klass(relative_path) + end + end + + # Extracts the snippet text + def snippet(snippet_name) + snippet_file = File.expand_path(File.dirname(__FILE__) + "/../../../../Snippets/#{snippet_name}") + xml = File.open(snippet_file).read + xml.match(/content<\/key>\s*([^<]*)<\/string>/m)[1] + end + + def spec(path) + depth = "/.." * (path.split('/').length - 2) + header = "require File.dirname(__FILE__) + '#{depth}/spec_helper'" + snippet_name = "Describe_type.tmSnippet" + content = <<-SPEC +#{header} + +#{snippet(snippet_name)} +SPEC + end + + def klass(relative_path) + parts = relative_path.split('/') + lib_index = parts.index('lib') + parts = parts[lib_index+1..-1] + lines = Array.new(parts.length*2) + parts.each_with_index do |part, n| + part = part.capitalize + indent = " " * n + line = if part =~ /(.*)\.rb/ + part = $1 + "#{indent}class #{part}" + else + "#{indent}module #{part}" + end + lines[n] = line + lines[lines.length-(n+1)] = "#{indent}end" + end + lines.join("\n") + "\n" + end + + def write_and_open(path, content) + `mkdir -p "#{File.dirname(path)}"` + `touch "#{path}"` + `osascript &>/dev/null -e 'tell app "SystemUIServer" to activate' -e 'tell app "TextMate" to activate'` + `"$TM_SUPPORT_PATH/bin/mate" "#{path}"` + escaped_content = content.gsub("\n","\\n").gsub('$','\\$').gsub('"','\\\\\\\\\\\\"') + `osascript &>/dev/null -e "tell app \\"TextMate\\" to insert \\"#{escaped_content}\\" as snippet true"` + end + end +end diff --git a/Jasmine/Syntaxes/Jasmine.tmLanguage b/Jasmine/Syntaxes/Jasmine.tmLanguage new file mode 100644 index 0000000..b8c2d30 --- /dev/null +++ b/Jasmine/Syntaxes/Jasmine.tmLanguage @@ -0,0 +1,29 @@ + + + + + fileTypes + + spec.js + + foldingStartMarker + ^.*\bfunction\s*(\w+\s*)?\([^\)]*\)(\s*\{[^\}]*)?\s*$ + foldingStopMarker + ^\s*\} + keyEquivalent + ^~J + name + Jasmine + patterns + + + include + source.js + + + scopeName + source.js.jasmine + uuid + EE325085-860E-4442-AE0C-643F6ACEF009 + + diff --git a/Jasmine/Syntaxes/Jasmine.tmLanguage.cache b/Jasmine/Syntaxes/Jasmine.tmLanguage.cache new file mode 100644 index 0000000..cebcc97 Binary files /dev/null and b/Jasmine/Syntaxes/Jasmine.tmLanguage.cache differ diff --git a/Jasmine/info.plist b/Jasmine/info.plist new file mode 100644 index 0000000..de9d973 --- /dev/null +++ b/Jasmine/info.plist @@ -0,0 +1,95 @@ + + + + + mainMenu + + items + + 04750DD6-B123-4121-8C14-361322874BDF + 60F4EFEE-FF5D-412A-88A6-9C833541302A + C32FD427-4E1F-4BBC-A9FF-023DA465629F + AE19C012-687A-43C5-B1B3-A9DF55CE2E02 + FBE3DE6C-DC75-4224-B26E-B4EA6FE4C38E + F035C4FB-441F-42F6-BEA1-EE6C89323139 + B38098FA-11FA-4002-BB35-71B05EE2DEDC + ------------------------------------ + 5397251E-A718-4631-9C17-A8937A2662DD + CB33CF32-BBFB-443E-BAA1-0DB331108AED + 36859208-CA4C-4F0C-B988-D1DF5F6336B2 + CC612FA5-51EC-48D0-96C9-C39E61F9DD06 + 00F58D6A-507D-4ED2-94C7-DEEE38DB5DCD + 0A88A2A1-3A5A-4F3E-AE9A-D924275ADB3D + F0DF1C99-CB9E-4366-B6B1-D19DE58CDDA4 + BA6991F2-7A1F-4F40-A016-9A967A96546F + ------------------------------------ + B4EB994B-A5CA-4B78-BAE9-A81BB4EF6204 + 881E3CF0-0D58-4AEE-851B-16AB65875AA1 + 2B416A23-4DD1-4E11-AA8F-030CB5DD4316 + E8AAF148-4084-42C2-B5AC-FCB969B9732A + 95461AC7-0F0F-4D76-8EA2-5AA4E1FBC2A7 + E86E40FA-0964-4CA6-A35E-E562FF9788B8 + 51A4FC2F-7EAE-4153-9BEA-3771F1EEAF69 + 04643901-054A-4C97-9F26-E7704C75D1A3 + ------------------------------------ + 7C9BE4CF-4BFB-423A-B5BC-E42B1104E645 + EA1984D8-7FCC-4C48-8212-A82A5D26180C + 99B1336F-2A05-49FB-8DBF-1F6E5C622A43 + 0D5D467D-3123-4980-81CD-1D06D8FED689 + 418017C9-A1A8-418B-BDDF-39B77633D579 + BC047A82-18B3-4330-B73A-723B55BC0708 + 09DDCEC4-5548-4926-81D0-0B89F36E5780 + 1E81D6CD-F292-4861-A474-AF30836F60EF + 121D8CB2-87C8-4FAC-AA4C-E825845CDDE5 + ------------------------------------ + 319E1B7D-8394-4CF1-8039-761704C21E45 + C7E8B28E-012E-4772-B4B3-A83F7B4C8A31 + + submenus + + + name + Jasmine + ordering + + EE325085-860E-4442-AE0C-643F6ACEF009 + 04750DD6-B123-4121-8C14-361322874BDF + 60F4EFEE-FF5D-412A-88A6-9C833541302A + C32FD427-4E1F-4BBC-A9FF-023DA465629F + AE19C012-687A-43C5-B1B3-A9DF55CE2E02 + FBE3DE6C-DC75-4224-B26E-B4EA6FE4C38E + F035C4FB-441F-42F6-BEA1-EE6C89323139 + B38098FA-11FA-4002-BB35-71B05EE2DEDC + 5397251E-A718-4631-9C17-A8937A2662DD + CB33CF32-BBFB-443E-BAA1-0DB331108AED + 36859208-CA4C-4F0C-B988-D1DF5F6336B2 + CC612FA5-51EC-48D0-96C9-C39E61F9DD06 + 00F58D6A-507D-4ED2-94C7-DEEE38DB5DCD + 0A88A2A1-3A5A-4F3E-AE9A-D924275ADB3D + F0DF1C99-CB9E-4366-B6B1-D19DE58CDDA4 + BA6991F2-7A1F-4F40-A016-9A967A96546F + B4EB994B-A5CA-4B78-BAE9-A81BB4EF6204 + 881E3CF0-0D58-4AEE-851B-16AB65875AA1 + 2B416A23-4DD1-4E11-AA8F-030CB5DD4316 + E8AAF148-4084-42C2-B5AC-FCB969B9732A + 95461AC7-0F0F-4D76-8EA2-5AA4E1FBC2A7 + E86E40FA-0964-4CA6-A35E-E562FF9788B8 + 51A4FC2F-7EAE-4153-9BEA-3771F1EEAF69 + 04643901-054A-4C97-9F26-E7704C75D1A3 + 7C9BE4CF-4BFB-423A-B5BC-E42B1104E645 + EA1984D8-7FCC-4C48-8212-A82A5D26180C + 99B1336F-2A05-49FB-8DBF-1F6E5C622A43 + 0D5D467D-3123-4980-81CD-1D06D8FED689 + 418017C9-A1A8-418B-BDDF-39B77633D579 + BC047A82-18B3-4330-B73A-723B55BC0708 + 09DDCEC4-5548-4926-81D0-0B89F36E5780 + 1E81D6CD-F292-4861-A474-AF30836F60EF + 121D8CB2-87C8-4FAC-AA4C-E825845CDDE5 + 319E1B7D-8394-4CF1-8039-761704C21E45 + EC249A94-DCB0-4A31-903E-408C40F18C11 + C7E8B28E-012E-4772-B4B3-A83F7B4C8A31 + + uuid + 514DB601-FE57-48B2-85E0-30A411EA7EDD + + diff --git a/Jasmine/package-metadata.json b/Jasmine/package-metadata.json new file mode 100644 index 0000000..c8ec75b --- /dev/null +++ b/Jasmine/package-metadata.json @@ -0,0 +1 @@ +{"url": "http://pivotallabs.com", "version": "2011.12.17.13.03.39", "description": "TextMate Bundle for Jasmine JavaScript Specs"} \ No newline at end of file diff --git a/Jasmine/run_jasmine.py b/Jasmine/run_jasmine.py new file mode 100644 index 0000000..1fce9ee --- /dev/null +++ b/Jasmine/run_jasmine.py @@ -0,0 +1,52 @@ +import os +import re +import thread +import subprocess +import functools +import time +import sublime +import sublime_plugin + +class JasmineSwitchBetweenCodeAndSpec(sublime_plugin.TextCommand): + def window(self): + return self.view.window() + + class BaseFile(object): + def __init__(self, file_name): self.folder_name, self.file_name = os.path.split(file_name) + def possible_alternate_files(self): return [] + + class JavascriptFile(BaseFile): + def possible_alternate_files(self): return [self.file_name.replace(".js", "_spec.js")] + + class JasmineFile(BaseFile): + def possible_alternate_files(self): return [self.file_name.replace("_spec.js", ".js")] + + def current_file(self): + file_name = self.view.file_name() + if re.search('\w+\_spec.js', file_name): + return JasmineSwitchBetweenCodeAndSpec.JasmineFile(file_name) + elif re.search('\w+\.js', file_name): + return JasmineSwitchBetweenCodeAndSpec.JavascriptFile(file_name) + else: + return JasmineSwitchBetweenCodeAndSpec.BaseFile(file_name) + + def is_enabled(self): + return self.current_file().possible_alternate_files() + + def run(self, args): + possible_alternates = self.current_file().possible_alternate_files() + alternates = self.project_files(lambda(file): file in possible_alternates) + if alternates: + self.window().open_file(alternates.pop()) + else: + sublime.error_message("could not find " + str(possible_alternates)) + + def walk(self, directory, ignored_directories = []): + ignored_directories = ['.git', 'vendor'] # Move this into config + for dir, dirnames, files in os.walk(directory): + dirnames[:] = [dirname for dirname in dirnames if dirname not in ignored_directories] + yield dir, dirnames, files + + def project_files(self, file_matcher): + directories = self.window().folders() + return [os.path.join(dirname, file) for directory in directories for dirname, _, files in self.walk(directory) for file in filter(file_matcher, files)] diff --git a/Jasmine/run_jasmine.pyc b/Jasmine/run_jasmine.pyc new file mode 100644 index 0000000..9528bb2 Binary files /dev/null and b/Jasmine/run_jasmine.pyc differ diff --git a/Java/Ant.sublime-build b/Java/Ant.sublime-build new file mode 100644 index 0000000..666b42a --- /dev/null +++ b/Java/Ant.sublime-build @@ -0,0 +1,11 @@ +{ + "cmd": ["ant"], + "file_regex": "^ *\\[javac\\] (.+):([0-9]+):() (.*)$", + "working_dir": "${project_path:${folder}}", + "selector": "source.java", + + "windows": + { + "cmd": ["ant.bat"] + } +} diff --git a/Java/Comments.tmPreferences b/Java/Comments.tmPreferences new file mode 100644 index 0000000..77147a7 --- /dev/null +++ b/Java/Comments.tmPreferences @@ -0,0 +1,36 @@ + + + + + name + Comments + scope + source.java + settings + + shellVariables + + + name + TM_COMMENT_START + value + // + + + name + TM_COMMENT_START_2 + value + /* + + + name + TM_COMMENT_END_2 + value + */ + + + + uuid + FBA964F9-EA31-44D1-A5FD-AE8AB3FF8954 + + diff --git a/Java/Comments.tmPreferences.cache b/Java/Comments.tmPreferences.cache new file mode 100644 index 0000000..f8b4f25 Binary files /dev/null and b/Java/Comments.tmPreferences.cache differ diff --git a/Java/Completion Rules.tmPreferences b/Java/Completion Rules.tmPreferences new file mode 100644 index 0000000..cb24983 --- /dev/null +++ b/Java/Completion Rules.tmPreferences @@ -0,0 +1,13 @@ + + + + + scope + source.java + settings + + cancelCompletion + ^\s*(\}?\s*(else|try|do|finally)|(class|package|enum)\s*[a-zA-Z_0-9]+*)$ + + + diff --git a/Java/Completion Rules.tmPreferences.cache b/Java/Completion Rules.tmPreferences.cache new file mode 100644 index 0000000..4b9dba1 Binary files /dev/null and b/Java/Completion Rules.tmPreferences.cache differ diff --git a/Java/Indentation Rules Annex.tmPreferences b/Java/Indentation Rules Annex.tmPreferences new file mode 100644 index 0000000..59bfc0e --- /dev/null +++ b/Java/Indentation Rules Annex.tmPreferences @@ -0,0 +1,15 @@ + + + + + name + Indentation Rules Annex + scope + source.java + settings + + unIndentedLinePattern + ^\s*((\*/|//| \*).*)?$ + + + diff --git a/Java/Indentation Rules Annex.tmPreferences.cache b/Java/Indentation Rules Annex.tmPreferences.cache new file mode 100644 index 0000000..728dbd3 Binary files /dev/null and b/Java/Indentation Rules Annex.tmPreferences.cache differ diff --git a/Java/Indentation Rules.tmPreferences b/Java/Indentation Rules.tmPreferences new file mode 100644 index 0000000..8caf8a3 --- /dev/null +++ b/Java/Indentation Rules.tmPreferences @@ -0,0 +1,26 @@ + + + + + name + Indentation Rules + scope + source.java - comment + settings + + decreaseIndentPattern + ^(.*\*/)?\s*\}.*$|^\s*(public|private|protected):\s*$ + increaseIndentPattern + ^.*\{[^}"']*$|^\s*(public|private|protected):\s*$ + + bracketIndentNextLinePattern + (?x) + ^ \s* \b(if|while|else)\b [^;]* $ + | ^ \s* \b(for)\b .* $ + + + + uuid + 20E93106-18CF-4BA3-9DA3-8F0C955DB774 + + diff --git a/Java/Indentation Rules.tmPreferences.cache b/Java/Indentation Rules.tmPreferences.cache new file mode 100644 index 0000000..9619cbe Binary files /dev/null and b/Java/Indentation Rules.tmPreferences.cache differ diff --git a/Java/Java Server Pages (JSP).tmLanguage b/Java/Java Server Pages (JSP).tmLanguage new file mode 100644 index 0000000..b829659 --- /dev/null +++ b/Java/Java Server Pages (JSP).tmLanguage @@ -0,0 +1,256 @@ + + + + + fileTypes + + jsp + + foldingStartMarker + /\*\*|\{\s*$ + foldingStopMarker + \*\*/|^\s*\} + keyEquivalent + ^~J + name + Java Server Page (JSP) + patterns + + + begin + <%-- + captures + + 0 + + name + punctuation.definition.comment.jsp + + + end + --%> + name + comment.block.jsp + + + begin + <%@ + captures + + 0 + + name + punctuation.section.directive.jsp + + + end + %> + name + meta.directive.jsp + patterns + + + begin + \w+ + beginCaptures + + 0 + + name + keyword.other.directive.jsp + + + end + (?=%>) + patterns + + + match + \w+ + name + constant.other.directive.attribute.jsp + + + match + = + name + keyword.operator.assignment.jsp + + + begin + " + beginCaptures + + 0 + + name + punctuation.definition.string.begin.jsp + + + end + " + endCaptures + + 0 + + name + punctuation.definition.string.end.jsp + + + name + string.quoted.double.jsp + patterns + + + match + \\. + name + constant.character.escape.jsp + + + + + begin + ' + beginCaptures + + 0 + + name + punctuation.definition.string.begin.jsp + + + end + ' + endCaptures + + 0 + + name + punctuation.definition.string.end.jsp + + + name + string.quoted.single.jsp + patterns + + + match + \\. + name + constant.character.escape.jsp + + + + + + + + + begin + (<%[!=]?)|(<jsp:scriptlet>|<jsp:expression>|<jsp:declaration>) + beginCaptures + + 1 + + name + punctuation.section.embedded.jsp + + 2 + + name + meta.tag.block.jsp + + + end + (?<=</jsp:scriptlet>|</jsp:expression>|</jsp:declaration>|%>) + patterns + + + captures + + 1 + + name + meta.tag.block.jsp + + 2 + + name + punctuation.section.embedded.jsp + + + match + (</jsp:scriptlet>|</jsp:expression>|</jsp:declaration>)|(%>) + + + begin + (?<!\n)(?!</jsp:scriptlet>|</jsp:expression>|</jsp:declaration>|%>|\{|\}) + end + (?=</jsp:scriptlet>|</jsp:expression>|</jsp:declaration>|%>|\{|\})|\n + name + source.java.embedded.html + patterns + + + include + source.java + + + + + begin + { + end + } + patterns + + + begin + (</jsp:scriptlet>|</jsp:expression>|</jsp:declaration>)|(%>) + captures + + 1 + + name + meta.tag.block.jsp + + 2 + + name + punctuation.section.embedded.jsp + + + end + (<jsp:scriptlet>|<jsp:expression>|<jsp:declaration>)|(<%[!=]?) + patterns + + + include + text.html.jsp + + + + + include + source.java + + + + + include + source.java + + + + + include + text.html.basic + + + scopeName + text.html.jsp + uuid + ACB58B55-9437-4AE6-AF42-854995CF51DF + + diff --git a/Java/Java Server Pages (JSP).tmLanguage.cache b/Java/Java Server Pages (JSP).tmLanguage.cache new file mode 100644 index 0000000..1d67e81 Binary files /dev/null and b/Java/Java Server Pages (JSP).tmLanguage.cache differ diff --git a/Java/Java.tmLanguage b/Java/Java.tmLanguage new file mode 100644 index 0000000..dcdbbae --- /dev/null +++ b/Java/Java.tmLanguage @@ -0,0 +1,1129 @@ + + + + + fileTypes + + java + bsh + + foldingStartMarker + (\{\s*(//.*)?$|^\s*// \{\{\{) + foldingStopMarker + ^\s*(\}|// \}\}\}$) + keyEquivalent + ^~J + name + Java + patterns + + + captures + + 1 + + name + keyword.other.package.java + + 2 + + name + storage.modifier.package.java + + 3 + + name + punctuation.terminator.java + + + match + ^\s*(package)\b(?:\s*([^ ;$]+)\s*(;)?)? + name + meta.package.java + + + captures + + 1 + + name + keyword.other.import.java + + 2 + + name + storage.modifier.import.java + + 3 + + name + punctuation.terminator.java + + + match + ^\s*(import)\b(?:\s*([^ ;$]+)\s*(;)?)? + name + meta.import.java + + + include + #code + + + repository + + all-types + + patterns + + + include + #primitive-arrays + + + include + #primitive-types + + + include + #object-types + + + + annotations + + patterns + + + begin + (@[^ (]+)(\() + beginCaptures + + 1 + + name + storage.type.annotation.java + + 2 + + name + punctuation.definition.annotation-arguments.begin.java + + + end + (\)) + endCaptures + + 1 + + name + punctuation.definition.annotation-arguments.end.java + + + name + meta.declaration.annotation.java + patterns + + + captures + + 1 + + name + constant.other.key.java + + 2 + + name + keyword.operator.assignment.java + + + match + (\w*)\s*(=) + + + include + #code + + + match + , + name + punctuation.seperator.property.java + + + + + match + @\w* + name + storage.type.annotation.java + + + + anonymous-classes-and-new + + begin + \bnew\b + beginCaptures + + 0 + + name + keyword.control.new.java + + + end + (?<=\)|\])(?!\s*{)|(?<=})|(?=;) + patterns + + + begin + (\w+)\s*(?=\[) + beginCaptures + + 1 + + name + storage.type.java + + + end + }|(?=;|\)) + patterns + + + begin + \[ + end + \] + patterns + + + include + #code + + + + + begin + { + end + (?=}) + patterns + + + include + #code + + + + + + + begin + (?=\w.*\() + end + (?<=\)) + patterns + + + include + #object-types + + + begin + \( + beginCaptures + + 1 + + name + storage.type.java + + + end + \) + patterns + + + include + #code + + + + + + + begin + { + end + } + name + meta.inner-class.java + patterns + + + include + #class-body + + + + + + assertions + + patterns + + + begin + \b(assert)\s + beginCaptures + + 1 + + name + keyword.control.assert.java + + + end + $ + name + meta.declaration.assertion.java + patterns + + + match + : + name + keyword.operator.assert.expression-seperator.java + + + include + #code + + + + + + class + + begin + (?=\w?[\w\s]*(?:class|(?:@)?interface|enum)\s+\w+) + end + } + endCaptures + + 0 + + name + punctuation.section.class.end.java + + + name + meta.class.java + patterns + + + include + #storage-modifiers + + + include + #comments + + + captures + + 1 + + name + storage.modifier.java + + 2 + + name + entity.name.type.class.java + + + match + (class|(?:@)?interface|enum)\s+(\w+) + name + meta.class.identifier.java + + + begin + extends + beginCaptures + + 0 + + name + storage.modifier.extends.java + + + end + (?={|implements) + name + meta.definition.class.inherited.classes.java + patterns + + + include + #object-types-inherited + + + include + #comments + + + + + begin + (implements)\s + beginCaptures + + 1 + + name + storage.modifier.implements.java + + + end + (?=\s*extends|\{) + name + meta.definition.class.implemented.interfaces.java + patterns + + + include + #object-types-inherited + + + include + #comments + + + + + begin + { + end + (?=}) + name + meta.class.body.java + patterns + + + include + #class-body + + + + + + class-body + + patterns + + + include + #comments + + + include + #class + + + include + #enums + + + include + #methods + + + include + #annotations + + + include + #storage-modifiers + + + include + #code + + + + code + + patterns + + + include + #comments + + + include + #class + + + begin + { + end + } + patterns + + + include + #code + + + + + include + #assertions + + + include + #parens + + + include + #constants-and-special-vars + + + include + #anonymous-classes-and-new + + + include + #keywords + + + include + #storage-modifiers + + + include + #strings + + + include + #all-types + + + + comments + + patterns + + + captures + + 0 + + name + punctuation.definition.comment.java + + + match + /\*\*/ + name + comment.block.empty.java + + + include + text.html.javadoc + + + include + #comments-inline + + + + comments-inline + + patterns + + + begin + /\* + captures + + 0 + + name + punctuation.definition.comment.java + + + end + \*/ + name + comment.block.java + + + captures + + 1 + + name + comment.line.double-slash.java + + 2 + + name + punctuation.definition.comment.java + + + match + \s*((//).*$\n?) + + + + constants-and-special-vars + + patterns + + + match + \b(true|false|null)\b + name + constant.language.java + + + match + \b(this|super)\b + name + variable.language.java + + + 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.java + + + captures + + 1 + + name + keyword.operator.dereference.java + + + match + (\.)?\b([A-Z][A-Z0-9_]+)(?!<|\.class|\s*\w+\s*=)\b + name + constant.other.java + + + + enums + + begin + ^(?=\s*[A-Z0-9_]+\s*({|\(|,)) + end + (?=;|}) + patterns + + + begin + \w+ + beginCaptures + + 0 + + name + constant.other.enum.java + + + end + (?=,|;|}) + name + meta.enum.java + patterns + + + include + #parens + + + begin + { + end + } + patterns + + + include + #class-body + + + + + + + + keywords + + patterns + + + match + \b(try|catch|finally|throw)\b + name + keyword.control.catch-exception.java + + + match + \?|: + name + keyword.control.java + + + match + \b(return|break|case|continue|default|do|while|for|switch|if|else)\b + name + keyword.control.java + + + match + \b(instanceof)\b + name + keyword.operator.java + + + match + (==|!=|<=|>=|<>|<|>) + name + keyword.operator.comparison.java + + + match + (=) + name + keyword.operator.assignment.java + + + match + (\-\-|\+\+) + name + keyword.operator.increment-decrement.java + + + match + (\-|\+|\*|\/|%) + name + keyword.operator.arithmetic.java + + + match + (!|&&|\|\|) + name + keyword.operator.logical.java + + + match + (?<=\S)\.(?=\S) + name + keyword.operator.dereference.java + + + match + ; + name + punctuation.terminator.java + + + + methods + + begin + (?!new)(?=\w.*\s+)(?=[^=]+\() + end + }|(?=;) + name + meta.method.java + patterns + + + include + #storage-modifiers + + + begin + (\w+)\s*\( + beginCaptures + + 1 + + name + entity.name.function.java + + + end + \) + name + meta.method.identifier.java + patterns + + + include + #parameters + + + + + begin + (?=\w.*\s+\w+\s*\() + end + (?=\w+\s*\() + name + meta.method.return-type.java + patterns + + + include + #all-types + + + + + include + #throws + + + begin + { + end + (?=}) + name + meta.method.body.java + patterns + + + include + #code + + + + + + object-types + + patterns + + + begin + \b((?:[a-z]\w*\.)*[A-Z]+\w*)< + end + >|[^\w\s,\?<\[\]] + name + storage.type.generic.java + patterns + + + include + #object-types + + + begin + < + comment + This is just to support <>'s with no actual type prefix + end + >|[^\w\s,\[\]<] + name + storage.type.generic.java + + + + + begin + \b((?:[a-z]\w*\.)*[A-Z]+\w*)(?=\[) + end + (?=[^\]\s]) + name + storage.type.object.array.java + patterns + + + begin + \[ + end + \] + patterns + + + include + #code + + + + + + + captures + + 1 + + name + keyword.operator.dereference.java + + + match + \b(?:[a-z]\w*(\.))*[A-Z]+\w*\b + name + storage.type.java + + + + object-types-inherited + + patterns + + + begin + \b((?:[a-z]\w*\.)*[A-Z]+\w*)< + end + >|[^\w\s,<] + name + entity.other.inherited-class.java + patterns + + + include + #object-types + + + begin + < + comment + This is just to support <>'s with no actual type prefix + end + >|[^\w\s,<] + name + storage.type.generic.java + + + + + captures + + 1 + + name + keyword.operator.dereference.java + + + match + \b(?:[a-z]\w*(\.))*[A-Z]+\w* + name + entity.other.inherited-class.java + + + + parameters + + patterns + + + match + final + name + storage.modifier.java + + + include + #primitive-arrays + + + include + #primitive-types + + + include + #object-types + + + match + \w+ + name + variable.parameter.java + + + + parens + + begin + \( + end + \) + patterns + + + include + #code + + + + primitive-arrays + + patterns + + + match + \b(?:void|boolean|byte|char|short|int|float|long|double)(\[\])*\b + name + storage.type.primitive.array.java + + + + primitive-types + + patterns + + + match + \b(?:void|boolean|byte|char|short|int|float|long|double)\b + name + storage.type.primitive.java + + + + storage-modifiers + + captures + + 1 + + name + storage.modifier.java + + + match + \b(public|private|protected|static|final|native|synchronized|abstract|threadsafe|transient)\b + + strings + + patterns + + + begin + " + beginCaptures + + 0 + + name + punctuation.definition.string.begin.java + + + end + " + endCaptures + + 0 + + name + punctuation.definition.string.end.java + + + name + string.quoted.double.java + patterns + + + match + \\. + name + constant.character.escape.java + + + + + begin + ' + beginCaptures + + 0 + + name + punctuation.definition.string.begin.java + + + end + ' + endCaptures + + 0 + + name + punctuation.definition.string.end.java + + + name + string.quoted.single.java + patterns + + + match + \\. + name + constant.character.escape.java + + + + + + throws + + begin + throws + beginCaptures + + 0 + + name + storage.modifier.java + + + end + (?={|;) + name + meta.throwables.java + patterns + + + include + #object-types + + + + values + + patterns + + + include + #strings + + + include + #object-types + + + include + #constants-and-special-vars + + + + + scopeName + source.java + uuid + 2B449DF6-6B1D-11D9-94EC-000D93589AF6 + + diff --git a/Java/Java.tmLanguage.cache b/Java/Java.tmLanguage.cache new file mode 100644 index 0000000..a7ac6fc Binary files /dev/null and b/Java/Java.tmLanguage.cache differ diff --git a/Java/JavaC.sublime-build b/Java/JavaC.sublime-build new file mode 100644 index 0000000..0b19c03 --- /dev/null +++ b/Java/JavaC.sublime-build @@ -0,0 +1,5 @@ +{ + "cmd": ["javac", "$file"], + "file_regex": "^(...*?):([0-9]*):?([0-9]*)", + "selector": "source.java" +} diff --git a/Java/JavaDoc.tmLanguage b/Java/JavaDoc.tmLanguage new file mode 100644 index 0000000..dc572e5 --- /dev/null +++ b/Java/JavaDoc.tmLanguage @@ -0,0 +1,737 @@ + + + + + fileTypes + + foldingStartMarker + /\*\* + foldingStopMarker + \*\*/ + name + JavaDoc + patterns + + + begin + (/\*\*)\s*$ + beginCaptures + + 1 + + name + punctuation.definition.comment.begin.javadoc + + + end + \*/ + endCaptures + + 0 + + name + punctuation.definition.comment.javadoc + + + name + comment.block.documentation.javadoc + patterns + + + include + #invalid + + + begin + \*\s*(?=\w) + contentName + text.html + end + (?=\s*\*\s*@)|(?=\s*\*\s*/) + name + meta.documentation.comment.javadoc + patterns + + + include + #inline + + + + + begin + \*\s*((\@)param) + beginCaptures + + 1 + + name + keyword.other.documentation.param.javadoc + + 2 + + name + punctuation.definition.keyword.javadoc + + + contentName + text.html + end + (?=\s*\*\s*@)|(?=\s*\*\s*/) + name + meta.documentation.tag.param.javadoc + patterns + + + include + #inline + + + + + begin + \*\s*((\@)return) + beginCaptures + + 1 + + name + keyword.other.documentation.return.javadoc + + 2 + + name + punctuation.definition.keyword.javadoc + + + contentName + text.html + end + (?=\s*\*\s*@)|(?=\s*\*\s*/) + name + meta.documentation.tag.return.javadoc + patterns + + + include + #inline + + + + + begin + \*\s*((\@)throws) + beginCaptures + + 1 + + name + keyword.other.documentation.throws.javadoc + + 2 + + name + punctuation.definition.keyword.javadoc + + + contentName + text.html + end + (?=\s*\*\s*@)|(?=\s*\*\s*/) + name + meta.documentation.tag.throws.javadoc + patterns + + + include + #inline + + + + + begin + \*\s*((\@)exception) + beginCaptures + + 1 + + name + keyword.other.documentation.exception.javadoc + + 2 + + name + punctuation.definition.keyword.javadoc + + + contentName + text.html + end + (?=\s*\*\s*@)|(?=\s*\*\s*/) + name + meta.documentation.tag.exception.javadoc + patterns + + + include + #inline + + + + + begin + \*\s*((\@)author) + beginCaptures + + 1 + + name + keyword.other.documentation.author.javadoc + + 2 + + name + punctuation.definition.keyword.javadoc + + + contentName + text.html + end + (?=\s*\*\s*@)|(?=\s*\*\s*/) + name + meta.documentation.tag.author.javadoc + patterns + + + include + #inline + + + + + begin + \*\s*((\@)version) + beginCaptures + + 1 + + name + keyword.other.documentation.version.javadoc + + 2 + + name + punctuation.definition.keyword.javadoc + + + contentName + text.html + end + (?=\s*\*\s*@)|(?=\s*\*\s*/) + name + meta.documentation.tag.version.javadoc + patterns + + + include + #inline + + + + + begin + \*\s*((\@)see) + beginCaptures + + 1 + + name + keyword.other.documentation.see.javadoc + + 2 + + name + punctuation.definition.keyword.javadoc + + + contentName + text.html + end + (?=\s*\*\s*@)|(?=\s*\*\s*/) + name + meta.documentation.tag.see.javadoc + patterns + + + include + #inline + + + + + begin + \*\s*((\@)since) + beginCaptures + + 1 + + name + keyword.other.documentation.since.javadoc + + 2 + + name + punctuation.definition.keyword.javadoc + + + contentName + text.html + end + (?=\s*\*\s*@)|(?=\s*\*\s*/) + name + meta.documentation.tag.since.javadoc + patterns + + + include + #inline + + + + + begin + \*\s*((\@)serial) + beginCaptures + + 1 + + name + keyword.other.documentation.serial.javadoc + + 2 + + name + punctuation.definition.keyword.javadoc + + + contentName + text.html + end + (?=\s*\*\s*@)|(?=\s*\*\s*/) + name + meta.documentation.tag.serial.javadoc + patterns + + + include + #inline + + + + + begin + \*\s*((\@)serialField) + beginCaptures + + 1 + + name + keyword.other.documentation.serialField.javadoc + + 2 + + name + punctuation.definition.keyword.javadoc + + + contentName + text.html + end + (?=\s*\*\s*@)|(?=\s*\*\s*/) + name + meta.documentation.tag.serialField.javadoc + patterns + + + include + #inline + + + + + begin + \*\s*((\@)serialData) + beginCaptures + + 1 + + name + keyword.other.documentation.serialData.javadoc + + 2 + + name + punctuation.definition.keyword.javadoc + + + contentName + text.html + end + (?=\s*\*\s*@)|(?=\s*\*\s*/) + name + meta.documentation.tag.serialData.javadoc + patterns + + + include + #inline + + + + + begin + \*\s*((\@)deprecated) + beginCaptures + + 1 + + name + keyword.other.documentation.deprecated.javadoc + + 2 + + name + punctuation.definition.keyword.javadoc + + + contentName + text.html + end + (?=\s*\*\s*@)|(?=\s*\*\s*/) + name + meta.documentation.tag.deprecated.javadoc + patterns + + + include + #inline + + + + + captures + + 1 + + name + keyword.other.documentation.custom.javadoc + + 2 + + name + punctuation.definition.keyword.javadoc + + + match + \*\s*((\@)\S+)\s + + + + + repository + + inline + + patterns + + + include + #invalid + + + include + #inline-formatting + + + include + text.html.basic + + + match + ((https?|s?ftp|ftps|file|smb|afp|nfs|(x-)?man|gopher|txmt)://|mailto:)[-:@a-zA-Z0-9_.~%+/?=&#]+(?<![.?:]) + name + markup.underline.link + + + + inline-formatting + + patterns + + + begin + (\{)((\@)code) + beginCaptures + + 1 + + name + punctuation.definition.directive.begin.javadoc + + 2 + + name + keyword.other.documentation.directive.code.javadoc + + 3 + + name + punctuation.definition.keyword.javadoc + + + contentName + markup.raw.code.javadoc + end + \} + endCaptures + + 0 + + name + punctuation.definition.directive.end.javadoc + + + name + meta.directive.code.javadoc + patterns + + + + begin + (\{)((\@)literal) + beginCaptures + + 1 + + name + punctuation.definition.directive.begin.javadoc + + 2 + + name + keyword.other.documentation.directive.literal.javadoc + + 3 + + name + punctuation.definition.keyword.javadoc + + + contentName + markup.raw.literal.javadoc + end + \} + endCaptures + + 0 + + name + punctuation.definition.directive.end.javadoc + + + name + meta.directive.literal.javadoc + patterns + + + + captures + + 1 + + name + punctuation.definition.directive.begin.javadoc + + 2 + + name + keyword.other.documentation.directive.docRoot.javadoc + + 3 + + name + punctuation.definition.keyword.javadoc + + 4 + + name + punctuation.definition.directive.end.javadoc + + + match + (\{)((\@)docRoot)(\}) + name + meta.directive.docRoot.javadoc + + + captures + + 1 + + name + punctuation.definition.directive.begin.javadoc + + 2 + + name + keyword.other.documentation.directive.inheritDoc.javadoc + + 3 + + name + punctuation.definition.keyword.javadoc + + 4 + + name + punctuation.definition.directive.end.javadoc + + + match + (\{)((\@)inheritDoc)(\}) + name + meta.directive.inheritDoc.javadoc + + + captures + + 1 + + name + punctuation.definition.directive.begin.javadoc + + 2 + + name + keyword.other.documentation.directive.link.javadoc + + 3 + + name + punctuation.definition.keyword.javadoc + + 4 + + name + markup.underline.link.javadoc + + 5 + + name + string.other.link.title.javadoc + + 6 + + name + punctuation.definition.directive.end.javadoc + + + match + (\{)((\@)link)(?:\s+(\S+?))?(?:\s+(.+?))?\s*(\}) + name + meta.directive.link.javadoc + + + captures + + 1 + + name + punctuation.definition.directive.begin.javadoc + + 2 + + name + keyword.other.documentation.directive.linkplain.javadoc + + 3 + + name + punctuation.definition.keyword.javadoc + + 4 + + name + markup.underline.linkplain.javadoc + + 5 + + name + string.other.link.title.javadoc + + 6 + + name + punctuation.definition.directive.end.javadoc + + + match + (\{)((\@)linkplain)(?:\s+(\S+?))?(?:\s+(.+?))?\s*(\}) + name + meta.directive.linkplain.javadoc + + + captures + + 1 + + name + punctuation.definition.directive.begin.javadoc + + 2 + + name + keyword.other.documentation.directive.value.javadoc + + 3 + + name + punctuation.definition.keyword.javadoc + + 4 + + name + variable.other.javadoc + + 5 + + name + punctuation.definition.directive.end.javadoc + + + match + (\{)((\@)value)\s*(\S+?)?\s*(\}) + name + meta.directive.value.javadoc + + + + invalid + + patterns + + + match + ^(?!\s*\*).*$\n? + name + invalid.illegal.missing-asterisk.javadoc + + + + + scopeName + text.html.javadoc + uuid + 64BB98A4-59D4-474E-9091-C1E1D04BDD03 + + diff --git a/Java/JavaDoc.tmLanguage.cache b/Java/JavaDoc.tmLanguage.cache new file mode 100644 index 0000000..427dcf0 Binary files /dev/null and b/Java/JavaDoc.tmLanguage.cache differ diff --git a/Java/JavaProperties.tmLanguage b/Java/JavaProperties.tmLanguage new file mode 100644 index 0000000..8648918 --- /dev/null +++ b/Java/JavaProperties.tmLanguage @@ -0,0 +1,70 @@ + + + + + fileTypes + + properties + + keyEquivalent + ^~J + name + Java Properties + patterns + + + captures + + 1 + + name + punctuation.definition.comment.java-props + + + match + ([#!])(.+)?$\n? + name + comment.line.number-sign.java-props + + + begin + /\* + captures + + 0 + + name + punctuation.definition.comment.java-props + + + end + \*/ + name + comment.block.java-props + + + captures + + 1 + + name + keyword.other.java-props + + 2 + + name + punctuation.separator.key-value.java-props + + + comment + Not compliant with the properties file spec, but this works for me, and I'm the one who counts around here. + match + ^([^:=]+)([:=])(.*)$ + + + scopeName + source.java-props + uuid + 2A28E50A-6B1D-11D9-8689-000D93589AF6 + + diff --git a/Java/JavaProperties.tmLanguage.cache b/Java/JavaProperties.tmLanguage.cache new file mode 100644 index 0000000..6ac2c32 Binary files /dev/null and b/Java/JavaProperties.tmLanguage.cache differ diff --git a/Java/Symbol List%3A Classes.tmPreferences b/Java/Symbol List%3A Classes.tmPreferences new file mode 100644 index 0000000..f1e4832 --- /dev/null +++ b/Java/Symbol List%3A Classes.tmPreferences @@ -0,0 +1,17 @@ + + + + + name + Symbol List: Classes + scope + source.java meta.class meta.class.identifier + settings + + showInSymbolList + 1 + + uuid + 22E489AE-989E-4A76-9C18-89944CF5013D + + diff --git a/Java/Symbol List%3A Classes.tmPreferences.cache b/Java/Symbol List%3A Classes.tmPreferences.cache new file mode 100644 index 0000000..146e602 Binary files /dev/null and b/Java/Symbol List%3A Classes.tmPreferences.cache differ diff --git a/Java/Symbol List%3A Inner Class Methods.tmPreferences b/Java/Symbol List%3A Inner Class Methods.tmPreferences new file mode 100644 index 0000000..0d9bc06 --- /dev/null +++ b/Java/Symbol List%3A Inner Class Methods.tmPreferences @@ -0,0 +1,22 @@ + + + + + name + Symbol List: Inner Class Methods + scope + source.java meta.class.body meta.class.body meta.method.identifier + settings + + showInSymbolList + 1 + symbolTransformation + + s/\s{2,}/ /g; + s/.*/ $0/g; + + + uuid + 11D7DA6F-1AE7-4BC7-BB5E-8DF05984FEEE + + diff --git a/Java/Symbol List%3A Inner Class Methods.tmPreferences.cache b/Java/Symbol List%3A Inner Class Methods.tmPreferences.cache new file mode 100644 index 0000000..9535936 Binary files /dev/null and b/Java/Symbol List%3A Inner Class Methods.tmPreferences.cache differ diff --git a/Java/Symbol List%3A Inner Classes.tmPreferences b/Java/Symbol List%3A Inner Classes.tmPreferences new file mode 100644 index 0000000..3c0397c --- /dev/null +++ b/Java/Symbol List%3A Inner Classes.tmPreferences @@ -0,0 +1,19 @@ + + + + + name + Symbol List: Inner Classes + scope + source.java meta.class.body meta.class.identifier + settings + + showInSymbolList + 1 + symbolTransformation + s/.*/ $0/g + + uuid + 7A55A2BC-CD9D-4EBF-ABF4-3401AA64B7B3 + + diff --git a/Java/Symbol List%3A Inner Classes.tmPreferences.cache b/Java/Symbol List%3A Inner Classes.tmPreferences.cache new file mode 100644 index 0000000..bf58b01 Binary files /dev/null and b/Java/Symbol List%3A Inner Classes.tmPreferences.cache differ diff --git a/Java/Symbol List%3A Inner Inner Class Methods.tmPreferences b/Java/Symbol List%3A Inner Inner Class Methods.tmPreferences new file mode 100644 index 0000000..4498b57 --- /dev/null +++ b/Java/Symbol List%3A Inner Inner Class Methods.tmPreferences @@ -0,0 +1,22 @@ + + + + + name + Symbol List: Inner Inner Class Methods + scope + source.java meta.class.body meta.class.body meta.class.body meta.method.identifier + settings + + showInSymbolList + 1 + symbolTransformation + + s/\s{2,}/ /g; + s/.*/ $0/g; + + + uuid + FD0CE2DC-6D44-4E22-B4E5-C47C57F5B677 + + diff --git a/Java/Symbol List%3A Inner Inner Class Methods.tmPreferences.cache b/Java/Symbol List%3A Inner Inner Class Methods.tmPreferences.cache new file mode 100644 index 0000000..dd52208 Binary files /dev/null and b/Java/Symbol List%3A Inner Inner Class Methods.tmPreferences.cache differ diff --git a/Java/Symbol List%3A Inner Inner Classes.tmPreferences b/Java/Symbol List%3A Inner Inner Classes.tmPreferences new file mode 100644 index 0000000..69b4fd4 --- /dev/null +++ b/Java/Symbol List%3A Inner Inner Classes.tmPreferences @@ -0,0 +1,19 @@ + + + + + name + Symbol List: Inner Inner Classes + scope + source.java meta.class.body meta.class.body meta.class.identifier + settings + + showInSymbolList + 1 + symbolTransformation + s/.*/ $0/g + + uuid + C80430E0-F37F-448F-ACAE-D590C96C4EAD + + diff --git a/Java/Symbol List%3A Inner Inner Classes.tmPreferences.cache b/Java/Symbol List%3A Inner Inner Classes.tmPreferences.cache new file mode 100644 index 0000000..0a71640 Binary files /dev/null and b/Java/Symbol List%3A Inner Inner Classes.tmPreferences.cache differ diff --git a/Java/Symbol List%3A Method.tmPreferences b/Java/Symbol List%3A Method.tmPreferences new file mode 100644 index 0000000..7252560 --- /dev/null +++ b/Java/Symbol List%3A Method.tmPreferences @@ -0,0 +1,22 @@ + + + + + name + Symbol List: Methods + scope + source.java meta.class.body meta.method.identifier + settings + + showInSymbolList + 1 + symbolTransformation + + s/\s{2,}/ /g; + s/.*/ $0/g; + + + uuid + FA4CD3FA-A79B-43E3-A432-DA53DA4A060D + + diff --git a/Java/Symbol List%3A Method.tmPreferences.cache b/Java/Symbol List%3A Method.tmPreferences.cache new file mode 100644 index 0000000..662c0ec Binary files /dev/null and b/Java/Symbol List%3A Method.tmPreferences.cache differ diff --git a/Java/abstract.sublime-snippet b/Java/abstract.sublime-snippet new file mode 100644 index 0000000..899f784 --- /dev/null +++ b/Java/abstract.sublime-snippet @@ -0,0 +1,6 @@ + + + ab + source.java + abstract + diff --git a/Java/assert.sublime-snippet b/Java/assert.sublime-snippet new file mode 100644 index 0000000..b57949b --- /dev/null +++ b/Java/assert.sublime-snippet @@ -0,0 +1,6 @@ + + + as + source.java + assert + diff --git a/Java/break.sublime-snippet b/Java/break.sublime-snippet new file mode 100644 index 0000000..2089e4b --- /dev/null +++ b/Java/break.sublime-snippet @@ -0,0 +1,7 @@ + + + br + source.java + break + diff --git a/Java/case.sublime-snippet b/Java/case.sublime-snippet new file mode 100644 index 0000000..c2b04ea --- /dev/null +++ b/Java/case.sublime-snippet @@ -0,0 +1,8 @@ + + + cs + source.java + case + diff --git a/Java/catch.sublime-snippet b/Java/catch.sublime-snippet new file mode 100644 index 0000000..117e4e8 --- /dev/null +++ b/Java/catch.sublime-snippet @@ -0,0 +1,8 @@ + + + ca + source.java + catch + diff --git a/Java/class.sublime-snippet b/Java/class.sublime-snippet new file mode 100644 index 0000000..e62d4fd --- /dev/null +++ b/Java/class.sublime-snippet @@ -0,0 +1,8 @@ + + + cl + source.java + class + diff --git a/Java/constant-string.sublime-snippet b/Java/constant-string.sublime-snippet new file mode 100644 index 0000000..8b32cfc --- /dev/null +++ b/Java/constant-string.sublime-snippet @@ -0,0 +1,6 @@ + + + cos + source.java + constant string + diff --git a/Java/constant.sublime-snippet b/Java/constant.sublime-snippet new file mode 100644 index 0000000..d9544f7 --- /dev/null +++ b/Java/constant.sublime-snippet @@ -0,0 +1,6 @@ + + + co + source.java + constant + diff --git a/Java/default.sublime-snippet b/Java/default.sublime-snippet new file mode 100644 index 0000000..1f239e9 --- /dev/null +++ b/Java/default.sublime-snippet @@ -0,0 +1,7 @@ + + + de + source.java + default + diff --git a/Java/else-if.sublime-snippet b/Java/else-if.sublime-snippet new file mode 100644 index 0000000..a91716a --- /dev/null +++ b/Java/else-if.sublime-snippet @@ -0,0 +1,8 @@ + + + elif + source.java + else if + diff --git a/Java/else.sublime-snippet b/Java/else.sublime-snippet new file mode 100644 index 0000000..cfdf5c4 --- /dev/null +++ b/Java/else.sublime-snippet @@ -0,0 +1,8 @@ + + + el + source.java + else + diff --git a/Java/final.sublime-snippet b/Java/final.sublime-snippet new file mode 100644 index 0000000..3743aff --- /dev/null +++ b/Java/final.sublime-snippet @@ -0,0 +1,6 @@ + + + fi + source.java + final + diff --git a/Java/for-(each).sublime-snippet b/Java/for-(each).sublime-snippet new file mode 100644 index 0000000..db57e78 --- /dev/null +++ b/Java/for-(each).sublime-snippet @@ -0,0 +1,8 @@ + + + fore + source.java + for (each) + diff --git a/Java/for.sublime-snippet b/Java/for.sublime-snippet new file mode 100644 index 0000000..ce2bc58 --- /dev/null +++ b/Java/for.sublime-snippet @@ -0,0 +1,8 @@ + + + for + source.java + for + diff --git a/Java/if.sublime-snippet b/Java/if.sublime-snippet new file mode 100644 index 0000000..75571db --- /dev/null +++ b/Java/if.sublime-snippet @@ -0,0 +1,8 @@ + + + if + source.java + if + diff --git a/Java/import-junit_framework_TestCase;.sublime-snippet b/Java/import-junit_framework_TestCase;.sublime-snippet new file mode 100644 index 0000000..3b2c4f7 --- /dev/null +++ b/Java/import-junit_framework_TestCase;.sublime-snippet @@ -0,0 +1,7 @@ + + + imt + source.java + import junit.framework.TestCase; + diff --git a/Java/import.sublime-snippet b/Java/import.sublime-snippet new file mode 100644 index 0000000..0541c50 --- /dev/null +++ b/Java/import.sublime-snippet @@ -0,0 +1,6 @@ + + + im + source.java + import + diff --git a/Java/interface.sublime-snippet b/Java/interface.sublime-snippet new file mode 100644 index 0000000..8b54feb --- /dev/null +++ b/Java/interface.sublime-snippet @@ -0,0 +1,8 @@ + + + in + source.java + interface + diff --git a/Java/java_beans_.sublime-snippet b/Java/java_beans_.sublime-snippet new file mode 100644 index 0000000..a2e942d --- /dev/null +++ b/Java/java_beans_.sublime-snippet @@ -0,0 +1,6 @@ + + + j.b + source.java + java.beans. + diff --git a/Java/java_io.sublime-snippet b/Java/java_io.sublime-snippet new file mode 100644 index 0000000..7df5643 --- /dev/null +++ b/Java/java_io.sublime-snippet @@ -0,0 +1,6 @@ + + + j.i + source.java + java.io. + diff --git a/Java/java_math.sublime-snippet b/Java/java_math.sublime-snippet new file mode 100644 index 0000000..6e1b277 --- /dev/null +++ b/Java/java_math.sublime-snippet @@ -0,0 +1,6 @@ + + + j.m + source.java + java.math. + diff --git a/Java/java_net_.sublime-snippet b/Java/java_net_.sublime-snippet new file mode 100644 index 0000000..255d50c --- /dev/null +++ b/Java/java_net_.sublime-snippet @@ -0,0 +1,6 @@ + + + j.n + source.java + java.net. + diff --git a/Java/java_util_.sublime-snippet b/Java/java_util_.sublime-snippet new file mode 100644 index 0000000..bbc617e --- /dev/null +++ b/Java/java_util_.sublime-snippet @@ -0,0 +1,6 @@ + + + j.u + source.java + java.util. + diff --git a/Java/method-(main).sublime-snippet b/Java/method-(main).sublime-snippet new file mode 100644 index 0000000..a427544 --- /dev/null +++ b/Java/method-(main).sublime-snippet @@ -0,0 +1,8 @@ + + + main + source.java + method (main) + diff --git a/Java/method.sublime-snippet b/Java/method.sublime-snippet new file mode 100644 index 0000000..0aceecd --- /dev/null +++ b/Java/method.sublime-snippet @@ -0,0 +1,9 @@ + + + m + source.java + method + diff --git a/Java/package.sublime-snippet b/Java/package.sublime-snippet new file mode 100644 index 0000000..712ee1c --- /dev/null +++ b/Java/package.sublime-snippet @@ -0,0 +1,6 @@ + + + pa + source.java + package + diff --git a/Java/print.sublime-snippet b/Java/print.sublime-snippet new file mode 100644 index 0000000..431b8aa --- /dev/null +++ b/Java/print.sublime-snippet @@ -0,0 +1,6 @@ + + + p + source.java + print + diff --git a/Java/println.sublime-snippet b/Java/println.sublime-snippet new file mode 100644 index 0000000..6d7eafd --- /dev/null +++ b/Java/println.sublime-snippet @@ -0,0 +1,6 @@ + + + pl + source.java + println + diff --git a/Java/private.sublime-snippet b/Java/private.sublime-snippet new file mode 100644 index 0000000..83359d0 --- /dev/null +++ b/Java/private.sublime-snippet @@ -0,0 +1,6 @@ + + + pr + source.java + private + diff --git a/Java/protected.sublime-snippet b/Java/protected.sublime-snippet new file mode 100644 index 0000000..3a5a546 --- /dev/null +++ b/Java/protected.sublime-snippet @@ -0,0 +1,6 @@ + + + po + source.java + protected + diff --git a/Java/public.sublime-snippet b/Java/public.sublime-snippet new file mode 100644 index 0000000..06a7071 --- /dev/null +++ b/Java/public.sublime-snippet @@ -0,0 +1,6 @@ + + + pu + source.java + public + diff --git a/Java/return.sublime-snippet b/Java/return.sublime-snippet new file mode 100644 index 0000000..8a835e2 --- /dev/null +++ b/Java/return.sublime-snippet @@ -0,0 +1,6 @@ + + + re + source.java + return + diff --git a/Java/static.sublime-snippet b/Java/static.sublime-snippet new file mode 100644 index 0000000..2197eb3 --- /dev/null +++ b/Java/static.sublime-snippet @@ -0,0 +1,6 @@ + + + st + source.java + static + diff --git a/Java/switch.sublime-snippet b/Java/switch.sublime-snippet new file mode 100644 index 0000000..436ed1d --- /dev/null +++ b/Java/switch.sublime-snippet @@ -0,0 +1,8 @@ + + + sw + source.java + switch + diff --git a/Java/synchronized.sublime-snippet b/Java/synchronized.sublime-snippet new file mode 100644 index 0000000..56f917d --- /dev/null +++ b/Java/synchronized.sublime-snippet @@ -0,0 +1,6 @@ + + + sy + source.java + synchronized + diff --git a/Java/test-case.sublime-snippet b/Java/test-case.sublime-snippet new file mode 100644 index 0000000..096734d --- /dev/null +++ b/Java/test-case.sublime-snippet @@ -0,0 +1,8 @@ + + + tc + source.java + test case + diff --git a/Java/test.sublime-snippet b/Java/test.sublime-snippet new file mode 100644 index 0000000..e3e87a4 --- /dev/null +++ b/Java/test.sublime-snippet @@ -0,0 +1,8 @@ + + + t + source.java + test + diff --git a/Java/throw.sublime-snippet b/Java/throw.sublime-snippet new file mode 100644 index 0000000..60cce57 --- /dev/null +++ b/Java/throw.sublime-snippet @@ -0,0 +1,6 @@ + + + th + source.java + throw + diff --git a/Java/variable.sublime-snippet b/Java/variable.sublime-snippet new file mode 100644 index 0000000..0f68f63 --- /dev/null +++ b/Java/variable.sublime-snippet @@ -0,0 +1,6 @@ + + + v + source.java + variable + diff --git a/Java/while.sublime-snippet b/Java/while.sublime-snippet new file mode 100644 index 0000000..1fdb8cd --- /dev/null +++ b/Java/while.sublime-snippet @@ -0,0 +1,8 @@ + + + wh + source.java + while + diff --git a/JavaScript/Comments.tmPreferences b/JavaScript/Comments.tmPreferences new file mode 100644 index 0000000..b26c1f9 --- /dev/null +++ b/JavaScript/Comments.tmPreferences @@ -0,0 +1,36 @@ + + + + + name + Comments + scope + source.js, source.json + settings + + shellVariables + + + name + TM_COMMENT_START + value + // + + + name + TM_COMMENT_START_2 + value + /* + + + name + TM_COMMENT_END_2 + value + */ + + + + uuid + A67A8BD9-A951-406F-9175-018DD4B52FD1 + + diff --git a/JavaScript/Comments.tmPreferences.cache b/JavaScript/Comments.tmPreferences.cache new file mode 100644 index 0000000..1065fab Binary files /dev/null and b/JavaScript/Comments.tmPreferences.cache differ diff --git a/JavaScript/Completion Rules.tmPreferences b/JavaScript/Completion Rules.tmPreferences new file mode 100644 index 0000000..31c5587 --- /dev/null +++ b/JavaScript/Completion Rules.tmPreferences @@ -0,0 +1,13 @@ + + + + + scope + source.js + settings + + cancelCompletion + ^\s*(\{?\s*(else|return|do)|(function)\s*[a-zA-Z_0-9]+)$ + + + diff --git a/JavaScript/Completion Rules.tmPreferences.cache b/JavaScript/Completion Rules.tmPreferences.cache new file mode 100644 index 0000000..9a52232 Binary files /dev/null and b/JavaScript/Completion Rules.tmPreferences.cache differ diff --git a/JavaScript/Get-Elements.sublime-snippet b/JavaScript/Get-Elements.sublime-snippet new file mode 100644 index 0000000..e34c223 --- /dev/null +++ b/JavaScript/Get-Elements.sublime-snippet @@ -0,0 +1,6 @@ + + + get + source.js + Get Elements + diff --git a/JavaScript/JSON.tmLanguage b/JavaScript/JSON.tmLanguage new file mode 100644 index 0000000..24f44c2 --- /dev/null +++ b/JavaScript/JSON.tmLanguage @@ -0,0 +1,356 @@ + + + + + fileTypes + + json + sublime-settings + sublime-menu + sublime-keymap + sublime-mousemap + sublime-theme + sublime-build + sublime-project + sublime-completions + + foldingStartMarker + (?x: # turn on extended mode + ^ # a line beginning with + \s* # some optional space + [{\[] # the start of an object or array + (?! # but not followed by + .* # whatever + [}\]] # and the close of an object or array + ,? # an optional comma + \s* # some optional space + $ # at the end of the line + ) + | # ...or... + [{\[] # the start of an object or array + \s* # some optional space + $ # at the end of the line + ) + foldingStopMarker + (?x: # turn on extended mode + ^ # a line beginning with + \s* # some optional space + [}\]] # and the close of an object or array + ) + keyEquivalent + ^~J + name + JSON + patterns + + + include + #value + + + repository + + array + + begin + \[ + beginCaptures + + 0 + + name + punctuation.definition.array.begin.json + + + end + \] + endCaptures + + 0 + + name + punctuation.definition.array.end.json + + + name + meta.structure.array.json + patterns + + + include + #value + + + match + , + name + punctuation.separator.array.json + + + match + [^\s\]] + name + invalid.illegal.expected-array-separator.json + + + + constant + + match + \b(?:true|false|null)\b + name + constant.language.json + + number + + comment + handles integer and decimal numbers + match + (?x: # turn on extended mode + -? # an optional minus + (?: + 0 # a zero + | # ...or... + [1-9] # a 1-9 character + \d* # followed by zero or more digits + ) + (?: + (?: + \. # a period + \d+ # followed by one or more digits + )? + (?: + [eE] # an e character + [+-]? # followed by an option +/- + \d+ # followed by one or more digits + )? # make exponent optional + )? # make decimal portion optional + ) + name + constant.numeric.json + + object + + begin + \{ + beginCaptures + + 0 + + name + punctuation.definition.dictionary.begin.json + + + comment + a JSON object + end + \} + endCaptures + + 0 + + name + punctuation.definition.dictionary.end.json + + + name + meta.structure.dictionary.json + patterns + + + comment + the JSON object key + include + #string + + + include + #comments + + + begin + : + beginCaptures + + 0 + + name + punctuation.separator.dictionary.key-value.json + + + end + (,)|(?=\}) + endCaptures + + 1 + + name + punctuation.separator.dictionary.pair.json + + + name + meta.structure.dictionary.value.json + patterns + + + comment + the JSON object value + include + #value + + + match + [^\s,] + name + invalid.illegal.expected-dictionary-separator.json + + + + + match + [^\s\}] + name + invalid.illegal.expected-dictionary-separator.json + + + + string + + begin + " + beginCaptures + + 0 + + name + punctuation.definition.string.begin.json + + + end + " + endCaptures + + 0 + + name + punctuation.definition.string.end.json + + + name + string.quoted.double.json + patterns + + + match + (?x: # turn on extended mode + \\ # a literal backslash + (?: # ...followed by... + ["\\/bfnrt] # one of these characters + | # ...or... + u # a u + [0-9a-fA-F]{4} # and four hex digits + ) + ) + name + constant.character.escape.json + + + match + \\. + name + invalid.illegal.unrecognized-string-escape.json + + + + value + + comment + the 'value' diagram at http://json.org + patterns + + + include + #constant + + + include + #number + + + include + #string + + + include + #array + + + include + #object + + + include + #comments + + + + + comments + + patterns + + + begin + /\*\* + captures + + 0 + + name + punctuation.definition.comment.json + + + end + \*/ + name + comment.block.documentation.json + + + begin + /\* + captures + + 0 + + name + punctuation.definition.comment.json + + + end + \*/ + name + comment.block.json + + + captures + + 1 + + name + punctuation.definition.comment.json + + + match + (//).*$\n? + name + comment.line.double-slash.js + + + + + scopeName + source.json + uuid + 0C3868E4-F96B-4E55-B204-1DCB5A20748B + + diff --git a/JavaScript/JSON.tmLanguage.cache b/JavaScript/JSON.tmLanguage.cache new file mode 100644 index 0000000..7119ba6 Binary files /dev/null and b/JavaScript/JSON.tmLanguage.cache differ diff --git a/JavaScript/JavaScript Indent.tmPreferences b/JavaScript/JavaScript Indent.tmPreferences new file mode 100644 index 0000000..c2806a9 --- /dev/null +++ b/JavaScript/JavaScript Indent.tmPreferences @@ -0,0 +1,26 @@ + + + + + name + JavaScript Indent + scope + source.js + settings + + decreaseIndentPattern + ^(.*\*/)?\s*\}.*$ + increaseIndentPattern + ^.*\{[^}"']*$ + + bracketIndentNextLinePattern + (?x) + ^ \s* \b(if|while|else)\b [^;]* $ + | ^ \s* \b(for)\b .* $ + + + + uuid + BC062860-3346-4D3B-8421-C5543F83D11F + + diff --git a/JavaScript/JavaScript Indent.tmPreferences.cache b/JavaScript/JavaScript Indent.tmPreferences.cache new file mode 100644 index 0000000..550dedc Binary files /dev/null and b/JavaScript/JavaScript Indent.tmPreferences.cache differ diff --git a/JavaScript/JavaScript.tmLanguage b/JavaScript/JavaScript.tmLanguage new file mode 100644 index 0000000..e4bb3bc --- /dev/null +++ b/JavaScript/JavaScript.tmLanguage @@ -0,0 +1,723 @@ + + + + + comment + JavaScript Syntax: version 2.0 + fileTypes + + js + htc + jsx + + firstLineMatch + ^#!/usr/bin/env node + foldingStartMarker + ^.*\bfunction\s*(\w+\s*)?\([^\)]*\)(\s*\{[^\}]*)?\s*$ + foldingStopMarker + ^\s*\} + keyEquivalent + ^~J + name + JavaScript + patterns + + + comment + node.js shebang + match + ^#!/usr/bin/env node + name + comment.line.js + + + captures + + 1 + + name + support.class.js + + 2 + + name + support.constant.js + + 3 + + name + keyword.operator.js + + + comment + match stuff like: Sound.prototype = { … } when extending an object + match + ([a-zA-Z_?.$][\w?.$]*)\.(prototype)\s*(=)\s* + name + meta.class.js + + + captures + + 1 + + name + support.class.js + + 2 + + name + support.constant.js + + 3 + + name + entity.name.function.js + + 4 + + name + keyword.operator.js + + 5 + + name + storage.type.function.js + + 6 + + name + punctuation.definition.parameters.begin.js + + 7 + + name + variable.parameter.function.js + + 8 + + name + punctuation.definition.parameters.end.js + + + comment + match stuff like: Sound.prototype.play = function() { … } + match + ([a-zA-Z_?.$][\w?.$]*)\.(prototype)\.([a-zA-Z_?.$][\w?.$]*)\s*(=)\s*(function)?\s*(\()(.*?)(\)) + name + meta.function.prototype.js + + + captures + + 1 + + name + support.class.js + + 2 + + name + support.constant.js + + 3 + + name + entity.name.function.js + + 4 + + name + keyword.operator.js + + + comment + match stuff like: Sound.prototype.play = myfunc + match + ([a-zA-Z_?.$][\w?.$]*)\.(prototype)\.([a-zA-Z_?.$][\w?.$]*)\s*(=)\s* + name + meta.function.js + + + captures + + 1 + + name + support.class.js + + 2 + + name + entity.name.function.js + + 3 + + name + keyword.operator.js + + 4 + + name + storage.type.function.js + + 5 + + name + punctuation.definition.parameters.begin.js + + 6 + + name + variable.parameter.function.js + + 7 + + name + punctuation.definition.parameters.end.js + + + comment + match stuff like: Sound.play = function() { … } + match + ([a-zA-Z_?.$][\w?.$]*)\.([a-zA-Z_?.$][\w?.$]*)\s*(=)\s*(function)\s*(\()(.*?)(\)) + name + meta.function.js + + + captures + + 1 + + name + entity.name.function.js + + 2 + + name + keyword.operator.js + + 3 + + name + storage.type.function.js + + 4 + + name + punctuation.definition.parameters.begin.js + + 5 + + name + variable.parameter.function.js + + 6 + + name + punctuation.definition.parameters.end.js + + + comment + match stuff like: play = function() { … } + match + ([a-zA-Z_?$][\w?$]*)\s*(=)\s*(function)\s*(\()(.*?)(\)) + name + meta.function.js + + + captures + + 1 + + name + storage.type.function.js + + 2 + + name + entity.name.function.js + + 3 + + name + punctuation.definition.parameters.begin.js + + 4 + + name + variable.parameter.function.js + + 5 + + name + punctuation.definition.parameters.end.js + + + comment + match regular function like: function myFunc(arg) { … } + match + \b(function)\s+([a-zA-Z_$]\w*)?\s*(\()(.*?)(\)) + name + meta.function.js + + + captures + + 1 + + name + entity.name.function.js + + 2 + + name + storage.type.function.js + + 3 + + name + punctuation.definition.parameters.begin.js + + 4 + + name + variable.parameter.function.js + + 5 + + name + punctuation.definition.parameters.end.js + + + comment + match stuff like: foobar: function() { … } + match + \b([a-zA-Z_?.$][\w?.$]*)\s*:\s*\b(function)?\s*(\()(.*?)(\)) + name + meta.function.json.js + + + captures + + 1 + + name + string.quoted.single.js + + 10 + + name + punctuation.definition.parameters.begin.js + + 11 + + name + variable.parameter.function.js + + 12 + + name + punctuation.definition.parameters.end.js + + 2 + + name + punctuation.definition.string.begin.js + + 3 + + name + entity.name.function.js + + 4 + + name + punctuation.definition.string.end.js + + 5 + + name + string.quoted.double.js + + 6 + + name + punctuation.definition.string.begin.js + + 7 + + name + entity.name.function.js + + 8 + + name + punctuation.definition.string.end.js + + 9 + + name + entity.name.function.js + + + comment + Attempt to match "foo": function + match + (?:((')([^']*)('))|((")([^"]*)(")))\s*:\s*\b(function)?\s*(\()([^)]*)(\)) + + name + meta.function.json.js + + + captures + + 1 + + name + keyword.operator.new.js + + 2 + + name + entity.name.type.instance.js + + + match + (new)\s+(\w+(?:\.\w*)?) + name + meta.class.instance.constructor + + + match + \b(console)\b + name + entity.name.type.object.js.firebug + + + match + \.(warn|info|log|error|time|timeEnd|assert)\b + name + support.function.js.firebug + + + match + \b((0(x|X)[0-9a-fA-F]+)|([0-9]+(\.[0-9]+)?))\b + name + constant.numeric.js + + + begin + ' + beginCaptures + + 0 + + name + punctuation.definition.string.begin.js + + + end + ' + endCaptures + + 0 + + name + punctuation.definition.string.end.js + + + name + string.quoted.single.js + patterns + + + match + \\(x\h{2}|[0-2][0-7]{,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.) + name + constant.character.escape.js + + + + + begin + " + beginCaptures + + 0 + + name + punctuation.definition.string.begin.js + + + end + " + endCaptures + + 0 + + name + punctuation.definition.string.end.js + + + name + string.quoted.double.js + patterns + + + match + \\(x\h{2}|[0-2][0-7]{,2}|3[0-6][0-7]|37[0-7]?|[4-7][0-7]?|.) + name + constant.character.escape.js + + + + + begin + /\*\*(?!/) + captures + + 0 + + name + punctuation.definition.comment.js + + + end + \*/ + name + comment.block.documentation.js + + + begin + /\* + captures + + 0 + + name + punctuation.definition.comment.js + + + end + \*/ + name + comment.block.js + + + captures + + 1 + + name + punctuation.definition.comment.js + + + match + (//).*$\n? + name + comment.line.double-slash.js + + + captures + + 0 + + name + punctuation.definition.comment.html.js + + 2 + + name + punctuation.definition.comment.html.js + + + match + (<!--|-->) + name + comment.block.html.js + + + match + \b(boolean|byte|char|class|double|enum|float|function|int|interface|long|short|var|void)\b + name + storage.type.js + + + match + \b(const|export|extends|final|implements|native|private|protected|public|static|synchronized|throws|transient|volatile)\b + name + storage.modifier.js + + + match + \b(break|case|catch|continue|default|do|else|finally|for|goto|if|import|package|return|switch|throw|try|while)\b + name + keyword.control.js + + + match + \b(delete|in|instanceof|new|typeof|with)\b + name + keyword.operator.js + + + match + \btrue\b + name + constant.language.boolean.true.js + + + match + \bfalse\b + name + constant.language.boolean.false.js + + + match + \bnull\b + name + constant.language.null.js + + + match + \b(super|this)\b + name + variable.language.js + + + match + \b(debugger)\b + name + keyword.other.js + + + match + \b(Anchor|Applet|Area|Array|Boolean|Button|Checkbox|Date|document|event|FileUpload|Form|Frame|Function|Hidden|History|Image|JavaArray|JavaClass|JavaObject|JavaPackage|java|Layer|Link|Location|Math|MimeType|Number|navigator|netscape|Object|Option|Packages|Password|Plugin|Radio|RegExp|Reset|Select|String|Style|Submit|screen|sun|Text|Textarea|window|XMLHttpRequest)\b + name + support.class.js + + + match + \b(s(h(ift|ow(Mod(elessDialog|alDialog)|Help))|croll(X|By(Pages|Lines)?|Y|To)?|t(op|rike)|i(n|zeToContent|debar|gnText)|ort|u(p|b(str(ing)?)?)|pli(ce|t)|e(nd|t(Re(sizable|questHeader)|M(i(nutes|lliseconds)|onth)|Seconds|Ho(tKeys|urs)|Year|Cursor|Time(out)?|Interval|ZOptions|Date|UTC(M(i(nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(ome|andleEvent)|navigate|c(har(CodeAt|At)|o(s|n(cat|textual|firm)|mpile)|eil|lear(Timeout|Interval)?|a(ptureEvents|ll)|reate(StyleSheet|Popup|EventObject))|t(o(GMTString|S(tring|ource)|U(TCString|pperCase)|Lo(caleString|werCase))|est|a(n|int(Enabled)?))|i(s(NaN|Finite)|ndexOf|talics)|d(isableExternalCapture|ump|etachEvent)|u(n(shift|taint|escape|watch)|pdateCommands)|j(oin|avaEnabled)|p(o(p|w)|ush|lugins.refresh|a(ddings|rse(Int|Float)?)|r(int|ompt|eference))|e(scape|nableExternalCapture|val|lementFromPoint|x(p|ec(Script|Command)?))|valueOf|UTC|queryCommand(State|Indeterm|Enabled|Value)|f(i(nd|le(ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(nt(size|color)|rward)|loor|romCharCode)|watch|l(ink|o(ad|g)|astIndexOf)|a(sin|nchor|cos|t(tachEvent|ob|an(2)?)|pply|lert|b(s|ort))|r(ou(nd|teEvents)|e(size(By|To)|calc|turnValue|place|verse|l(oad|ease(Capture|Events)))|andom)|g(o|et(ResponseHeader|M(i(nutes|lliseconds)|onth)|Se(conds|lection)|Hours|Year|Time(zoneOffset)?|Da(y|te)|UTC(M(i(nutes|lliseconds)|onth)|Seconds|Hours|Da(y|te)|FullYear)|FullYear|A(ttention|llResponseHeaders)))|m(in|ove(B(y|elow)|To(Absolute)?|Above)|ergeAttributes|a(tch|rgins|x))|b(toa|ig|o(ld|rderWidths)|link|ack))\b(?=\() + name + support.function.js + + + match + \b(s(ub(stringData|mit)|plitText|e(t(NamedItem|Attribute(Node)?)|lect))|has(ChildNodes|Feature)|namedItem|c(l(ick|o(se|neNode))|reate(C(omment|DATASection|aption)|T(Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(ntityReference|lement)|Attribute))|tabIndex|i(nsert(Row|Before|Cell|Data)|tem)|open|delete(Row|C(ell|aption)|T(Head|Foot)|Data)|focus|write(ln)?|a(dd|ppend(Child|Data))|re(set|place(Child|Data)|move(NamedItem|Child|Attribute(Node)?)?)|get(NamedItem|Element(sBy(Name|TagName)|ById)|Attribute(Node)?)|blur)\b(?=\() + name + support.function.dom.js + + + match + (?<=\.)(s(ystemLanguage|cr(ipts|ollbars|een(X|Y|Top|Left))|t(yle(Sheets)?|atus(Text|bar)?)|ibling(Below|Above)|ource|uffixes|e(curity(Policy)?|l(ection|f)))|h(istory|ost(name)?|as(h|Focus))|y|X(MLDocument|SLDocument)|n(ext|ame(space(s|URI)|Prop))|M(IN_VALUE|AX_VALUE)|c(haracterSet|o(n(structor|trollers)|okieEnabled|lorDepth|mp(onents|lete))|urrent|puClass|l(i(p(boardData)?|entInformation)|osed|asses)|alle(e|r)|rypto)|t(o(olbar|p)|ext(Transform|Indent|Decoration|Align)|ags)|SQRT(1_2|2)|i(n(ner(Height|Width)|put)|ds|gnoreCase)|zIndex|o(scpu|n(readystatechange|Line)|uter(Height|Width)|p(sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(i(splay|alog(Height|Top|Width|Left|Arguments)|rectories)|e(scription|fault(Status|Ch(ecked|arset)|View)))|u(ser(Profile|Language|Agent)|n(iqueID|defined)|pdateInterval)|_content|p(ixelDepth|ort|ersonalbar|kcs11|l(ugins|atform)|a(thname|dding(Right|Bottom|Top|Left)|rent(Window|Layer)?|ge(X(Offset)?|Y(Offset)?))|r(o(to(col|type)|duct(Sub)?|mpter)|e(vious|fix)))|e(n(coding|abledPlugin)|x(ternal|pando)|mbeds)|v(isibility|endor(Sub)?|Linkcolor)|URLUnencoded|P(I|OSITIVE_INFINITY)|f(ilename|o(nt(Size|Family|Weight)|rmName)|rame(s|Element)|gColor)|E|whiteSpace|l(i(stStyleType|n(eHeight|kColor))|o(ca(tion(bar)?|lName)|wsrc)|e(ngth|ft(Context)?)|a(st(M(odified|atch)|Index|Paren)|yer(s|X)|nguage))|a(pp(MinorVersion|Name|Co(deName|re)|Version)|vail(Height|Top|Width|Left)|ll|r(ity|guments)|Linkcolor|bove)|r(ight(Context)?|e(sponse(XML|Text)|adyState))|global|x|m(imeTypes|ultiline|enubar|argin(Right|Bottom|Top|Left))|L(N(10|2)|OG(10E|2E))|b(o(ttom|rder(Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(Color|Image)))\b + name + support.constant.js + + + match + (?<=\.)(s(hape|ystemId|c(heme|ope|rolling)|ta(ndby|rt)|ize|ummary|pecified|e(ctionRowIndex|lected(Index)?)|rc)|h(space|t(tpEquiv|mlFor)|e(ight|aders)|ref(lang)?)|n(o(Resize|tation(s|Name)|Shade|Href|de(Name|Type|Value)|Wrap)|extSibling|ame)|c(h(ildNodes|Off|ecked|arset)?|ite|o(ntent|o(kie|rds)|de(Base|Type)?|l(s|Span|or)|mpact)|ell(s|Spacing|Padding)|l(ear|assName)|aption)|t(ype|Bodies|itle|Head|ext|a(rget|gName)|Foot)|i(sMap|ndex|d|m(plementation|ages))|o(ptions|wnerDocument|bject)|d(i(sabled|r)|o(c(type|umentElement)|main)|e(clare|f(er|ault(Selected|Checked|Value)))|at(eTime|a))|useMap|p(ublicId|arentNode|r(o(file|mpt)|eviousSibling))|e(n(ctype|tities)|vent|lements)|v(space|ersion|alue(Type)?|Link|Align)|URL|f(irstChild|orm(s)?|ace|rame(Border)?)|width|l(ink(s)?|o(ngDesc|wSrc)|a(stChild|ng|bel))|a(nchors|c(ce(ssKey|pt(Charset)?)|tion)|ttributes|pplets|l(t|ign)|r(chive|eas)|xis|Link|bbr)|r(ow(s|Span|Index)|ules|e(v|ferrer|l|adOnly))|m(ultiple|e(thod|dia)|a(rgin(Height|Width)|xLength))|b(o(dy|rder)|ackground|gColor))\b + name + support.constant.dom.js + + + match + \b(ELEMENT_NODE|ATTRIBUTE_NODE|TEXT_NODE|CDATA_SECTION_NODE|ENTITY_REFERENCE_NODE|ENTITY_NODE|PROCESSING_INSTRUCTION_NODE|COMMENT_NODE|DOCUMENT_NODE|DOCUMENT_TYPE_NODE|DOCUMENT_FRAGMENT_NODE|NOTATION_NODE|INDEX_SIZE_ERR|DOMSTRING_SIZE_ERR|HIERARCHY_REQUEST_ERR|WRONG_DOCUMENT_ERR|INVALID_CHARACTER_ERR|NO_DATA_ALLOWED_ERR|NO_MODIFICATION_ALLOWED_ERR|NOT_FOUND_ERR|NOT_SUPPORTED_ERR|INUSE_ATTRIBUTE_ERR)\b + name + support.constant.dom.js + + + match + \bon(R(ow(s(inserted|delete)|e(nter|xit))|e(s(ize(start|end)?|et)|adystatechange))|Mouse(o(ut|ver)|down|up|move)|B(efore(cut|deactivate|u(nload|pdate)|p(aste|rint)|editfocus|activate)|lur)|S(croll|top|ubmit|elect(start|ionchange)?)|H(over|elp)|C(hange|ont(extmenu|rolselect)|ut|ellchange|l(ick|ose))|D(eactivate|ata(setc(hanged|omplete)|available)|r(op|ag(start|over|drop|en(ter|d)|leave)?)|blclick)|Unload|P(aste|ropertychange)|Error(update)?|Key(down|up|press)|Focus|Load|A(ctivate|fter(update|print)|bort))\b + name + support.function.event-handler.js + + + match + !|\$|%|&|\*|\-\-|\-|\+\+|\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|\*=|(?<!\()/=|%=|\+=|\-=|&=|\^=|\b(in|instanceof|new|delete|typeof|void)\b + name + keyword.operator.js + + + match + \b(Infinity|NaN|undefined)\b + name + constant.language.js + + + begin + (?<=[=(:]|^|return|&&|\|\||!)\s*(/)(?![/*+{}?]) + beginCaptures + + 1 + + name + punctuation.definition.string.begin.js + + + end + (/)[igm]* + endCaptures + + 1 + + name + punctuation.definition.string.end.js + + + name + string.regexp.js + patterns + + + match + \\. + name + constant.character.escape.js + + + + + match + \; + name + punctuation.terminator.statement.js + + + match + ,[ |\t]* + name + meta.delimiter.object.comma.js + + + match + \. + name + meta.delimiter.method.period.js + + + match + \{|\} + name + meta.brace.curly.js + + + match + \(|\) + name + meta.brace.round.js + + + match + \[|\] + name + meta.brace.square.js + + + scopeName + source.js + uuid + 93E017CC-6F27-11D9-90EB-000D93589AF6 + + diff --git a/JavaScript/JavaScript.tmLanguage.cache b/JavaScript/JavaScript.tmLanguage.cache new file mode 100644 index 0000000..ea3d998 Binary files /dev/null and b/JavaScript/JavaScript.tmLanguage.cache differ diff --git a/JavaScript/Object-Method.sublime-snippet b/JavaScript/Object-Method.sublime-snippet new file mode 100644 index 0000000..3543a65 --- /dev/null +++ b/JavaScript/Object-Method.sublime-snippet @@ -0,0 +1,8 @@ + + + :f + source.js + Object Method + diff --git a/JavaScript/Object-Value-JS.sublime-snippet b/JavaScript/Object-Value-JS.sublime-snippet new file mode 100644 index 0000000..66b5e59 --- /dev/null +++ b/JavaScript/Object-Value-JS.sublime-snippet @@ -0,0 +1,6 @@ + + + :, + source.js + Object Value JS + diff --git a/JavaScript/Object-key-key-value.sublime-snippet b/JavaScript/Object-key-key-value.sublime-snippet new file mode 100644 index 0000000..420d2a3 --- /dev/null +++ b/JavaScript/Object-key-key-value.sublime-snippet @@ -0,0 +1,6 @@ + + + : + source.js + Object key — key: "value" + diff --git a/JavaScript/Prototype-(proto).sublime-snippet b/JavaScript/Prototype-(proto).sublime-snippet new file mode 100644 index 0000000..05db306 --- /dev/null +++ b/JavaScript/Prototype-(proto).sublime-snippet @@ -0,0 +1,9 @@ + + + proto + source.js + Prototype + diff --git a/JavaScript/Symbol List Banned.tmPreferences b/JavaScript/Symbol List Banned.tmPreferences new file mode 100644 index 0000000..c51de2a --- /dev/null +++ b/JavaScript/Symbol List Banned.tmPreferences @@ -0,0 +1,17 @@ + + + + + name + Symbol List Banned + scope + source.js meta.property.function entity.name.function + settings + + showInSymbolList + 0 + + uuid + 834BC727-6B31-4073-A161-4823227219EF + + diff --git a/JavaScript/Symbol List Banned.tmPreferences.cache b/JavaScript/Symbol List Banned.tmPreferences.cache new file mode 100644 index 0000000..cbf2147 Binary files /dev/null and b/JavaScript/Symbol List Banned.tmPreferences.cache differ diff --git a/JavaScript/Symbol List Class.tmPreferences b/JavaScript/Symbol List Class.tmPreferences new file mode 100644 index 0000000..34da1b4 --- /dev/null +++ b/JavaScript/Symbol List Class.tmPreferences @@ -0,0 +1,21 @@ + + + + + name + Symbol List Class + scope + source.js entity.name.type.class + settings + + showInSymbolList + 1 + symbolTransformation + + s/^/• /g; + + + uuid + 3CEA49B2-A5C5-405C-82E2-B8B668877C37 + + diff --git a/JavaScript/Symbol List Class.tmPreferences.cache b/JavaScript/Symbol List Class.tmPreferences.cache new file mode 100644 index 0000000..7a3c382 Binary files /dev/null and b/JavaScript/Symbol List Class.tmPreferences.cache differ diff --git a/JavaScript/Symbol List Function.tmPreferences b/JavaScript/Symbol List Function.tmPreferences new file mode 100644 index 0000000..ecbc0bc --- /dev/null +++ b/JavaScript/Symbol List Function.tmPreferences @@ -0,0 +1,17 @@ + + + + + name + Symbol List Function + scope + source.js meta.function.js, source.js meta.function.json.js + settings + + showInSymbolList + 1 + + uuid + 3CEA49B2-A5C5-405C-82E2-B8B668877C38 + + diff --git a/JavaScript/Symbol List Function.tmPreferences.cache b/JavaScript/Symbol List Function.tmPreferences.cache new file mode 100644 index 0000000..80011e7 Binary files /dev/null and b/JavaScript/Symbol List Function.tmPreferences.cache differ diff --git a/JavaScript/Symbol List Instance.tmPreferences b/JavaScript/Symbol List Instance.tmPreferences new file mode 100644 index 0000000..55ebd5f --- /dev/null +++ b/JavaScript/Symbol List Instance.tmPreferences @@ -0,0 +1,21 @@ + + + + + name + Symbol List Instance + scope + source.js entity.name.instance + settings + + showInSymbolList + 1 + symbolTransformation + + s/^/\t/g; + + + uuid + E6EB7CC8-04E8-43A9-93B2-BC9EF5BA862B + + diff --git a/JavaScript/Symbol List Instance.tmPreferences.cache b/JavaScript/Symbol List Instance.tmPreferences.cache new file mode 100644 index 0000000..fbb9748 Binary files /dev/null and b/JavaScript/Symbol List Instance.tmPreferences.cache differ diff --git a/JavaScript/Symbol List Sub 1.tmPreferences b/JavaScript/Symbol List Sub 1.tmPreferences new file mode 100644 index 0000000..28acc13 --- /dev/null +++ b/JavaScript/Symbol List Sub 1.tmPreferences @@ -0,0 +1,21 @@ + + + + + name + Symbol List Sub 1 + scope + source.js object.property.function -(meta.group meta.group) + settings + + showInSymbolList + 1 + symbolTransformation + + s/^/ :/g; + + + uuid + 73557394-4F0F-4DD3-8029-EEE8201AC7F5 + + diff --git a/JavaScript/Symbol List Sub 1.tmPreferences.cache b/JavaScript/Symbol List Sub 1.tmPreferences.cache new file mode 100644 index 0000000..52ca8fa Binary files /dev/null and b/JavaScript/Symbol List Sub 1.tmPreferences.cache differ diff --git a/JavaScript/Symbol List Sub 2.tmPreferences b/JavaScript/Symbol List Sub 2.tmPreferences new file mode 100644 index 0000000..be4beb8 --- /dev/null +++ b/JavaScript/Symbol List Sub 2.tmPreferences @@ -0,0 +1,21 @@ + + + + + name + Symbol List Sub 2 + scope + source.js meta.group meta.group object.property.function + settings + + showInSymbolList + 1 + symbolTransformation + + s/^/  :/g; + + + uuid + 51841DDB-C2A4-461C-A8AB-6C124AD50EAE + + diff --git a/JavaScript/Symbol List Sub 2.tmPreferences.cache b/JavaScript/Symbol List Sub 2.tmPreferences.cache new file mode 100644 index 0000000..5bb25b2 Binary files /dev/null and b/JavaScript/Symbol List Sub 2.tmPreferences.cache differ diff --git a/JavaScript/for-()-{}-(faster).sublime-snippet b/JavaScript/for-()-{}-(faster).sublime-snippet new file mode 100644 index 0000000..b952d9d --- /dev/null +++ b/JavaScript/for-()-{}-(faster).sublime-snippet @@ -0,0 +1,8 @@ + + = 0; ${20:i}--) { + ${100:${1:Things}[${20:i}]}$0 +};]]> + for + source.js + for (…) {…} (Improved Native For-Loop) + diff --git a/JavaScript/for-()-{}.sublime-snippet b/JavaScript/for-()-{}.sublime-snippet new file mode 100644 index 0000000..0145a13 --- /dev/null +++ b/JavaScript/for-()-{}.sublime-snippet @@ -0,0 +1,8 @@ + + + for + source.js + for (…) {…} + diff --git a/JavaScript/function-(fun).sublime-snippet b/JavaScript/function-(fun).sublime-snippet new file mode 100644 index 0000000..c834932 --- /dev/null +++ b/JavaScript/function-(fun).sublime-snippet @@ -0,0 +1,8 @@ + + + fun + source.js + Function + diff --git a/JavaScript/function.sublime-snippet b/JavaScript/function.sublime-snippet new file mode 100644 index 0000000..b4edd7f --- /dev/null +++ b/JavaScript/function.sublime-snippet @@ -0,0 +1,6 @@ + + + f + source.js + Anonymous Function + diff --git a/JavaScript/if-___-else.sublime-snippet b/JavaScript/if-___-else.sublime-snippet new file mode 100644 index 0000000..34ef402 --- /dev/null +++ b/JavaScript/if-___-else.sublime-snippet @@ -0,0 +1,6 @@ + + + ife + source.js + if … else + diff --git a/JavaScript/if.sublime-snippet b/JavaScript/if.sublime-snippet new file mode 100644 index 0000000..ce94fc0 --- /dev/null +++ b/JavaScript/if.sublime-snippet @@ -0,0 +1,6 @@ + + + if + source.js + if + diff --git a/JavaScript/setTimeout-function.sublime-snippet b/JavaScript/setTimeout-function.sublime-snippet new file mode 100644 index 0000000..4f9fc9e --- /dev/null +++ b/JavaScript/setTimeout-function.sublime-snippet @@ -0,0 +1,6 @@ + + + timeout + source.js + setTimeout function + diff --git a/LaTeX/Bibtex.tmLanguage b/LaTeX/Bibtex.tmLanguage new file mode 100644 index 0000000..211aedd --- /dev/null +++ b/LaTeX/Bibtex.tmLanguage @@ -0,0 +1,406 @@ + + + + + comment + Grammar based on description from http://artis.imag.fr/~Xavier.Decoret/resources/xdkbibtex/bibtex_summary.html#comment + + TODO: Does not support @preamble + + fileTypes + + bib + + foldingStartMarker + \@[a-zA-Z]+\s*[{(].+, + foldingStopMarker + ^\s*[)}]\s*$ + name + BibTeX + patterns + + + begin + @Comment + beginCaptures + + 0 + + name + punctuation.definition.comment.bibtex + + + end + $\n? + name + comment.line.at-sign.bibtex + + + begin + ((@)String)\s*(\{)\s*([a-zA-Z]*) + beginCaptures + + 1 + + name + keyword.other.string-constant.bibtex + + 2 + + name + punctuation.definition.keyword.bibtex + + 3 + + name + punctuation.section.string-constant.begin.bibtex + + 4 + + name + variable.other.bibtex + + + end + \} + endCaptures + + 0 + + name + punctuation.section.string-constant.end.bibtex + + + name + meta.string-constant.braces.bibtex + patterns + + + include + #string_content + + + + + begin + ((@)String)\s*(\()\s*([a-zA-Z]*) + beginCaptures + + 1 + + name + keyword.other.string-constant.bibtex + + 2 + + name + punctuation.definition.keyword.bibtex + + 3 + + name + punctuation.section.string-constant.begin.bibtex + + 4 + + name + variable.other.bibtex + + + end + \) + endCaptures + + 0 + + name + punctuation.section.string-constant.end.bibtex + + + name + meta.string-constant.parenthesis.bibtex + patterns + + + include + #string_content + + + + + begin + ((@)[a-zA-Z]+)\s*(\{)\s*([^\s,]*) + beginCaptures + + 1 + + name + keyword.other.entry-type.bibtex + + 2 + + name + punctuation.definition.keyword.bibtex + + 3 + + name + punctuation.section.entry.begin.bibtex + + 4 + + name + entity.name.type.entry-key.bibtex + + + end + \} + endCaptures + + 0 + + name + punctuation.section.entry.end.bibtex + + + name + meta.entry.braces.bibtex + patterns + + + begin + ([a-zA-Z]+)\s*(\=) + beginCaptures + + 1 + + name + string.unquoted.key.bibtex + + 2 + + name + punctuation.separator.key-value.bibtex + + + end + (?=[,}]) + name + meta.key-assignment.bibtex + patterns + + + include + #string_content + + + include + #integer + + + + + + + begin + ((@)[a-zA-Z]+)\s*(\()\s*([^\s,]*) + beginCaptures + + 1 + + name + keyword.other.entry-type.bibtex + + 2 + + name + punctuation.definition.keyword.bibtex + + 3 + + name + punctuation.section.entry.begin.bibtex + + 4 + + name + entity.name.type.entry-key.bibtex + + + end + \) + endCaptures + + 0 + + name + punctuation.section.entry.end.bibtex + + + name + meta.entry.parenthesis.bibtex + patterns + + + begin + ([a-zA-Z]+)\s*(\=) + beginCaptures + + 1 + + name + string.unquoted.key.bibtex + + 2 + + name + punctuation.separator.key-value.bibtex + + + end + (?=[,)]) + name + meta.key-assignment.bibtex + patterns + + + include + #string_content + + + include + #integer + + + + + + + begin + [^@\n] + end + (?=@) + name + comment.block.bibtex + + + repository + + integer + + match + \d+ + name + constant.numeric.bibtex + + nested_braces + + begin + \{ + beginCaptures + + 0 + + name + punctuation.definition.group.begin.bibtex + + + end + \} + endCaptures + + 0 + + name + punctuation.definition.group.end.bibtex + + + patterns + + + include + #nested_braces + + + + string_content + + patterns + + + begin + " + beginCaptures + + 0 + + name + punctuation.definition.string.begin.bibtex + + + end + " + endCaptures + + 0 + + name + punctuation.definition.string.end.bibtex + + + name + string.quoted.double.bibtex + patterns + + + include + #nested_braces + + + + + begin + \{ + beginCaptures + + 0 + + name + punctuation.definition.string.begin.bibtex + + + end + \} + endCaptures + + 0 + + name + punctuation.definition.string.end.bibtex + + + name + string.quoted.other.braces.bibtex + patterns + + + match + @ + name + invalid.illegal.at-sign.bibtex + + + include + #nested_braces + + + + + + + scopeName + text.bibtex + uuid + 47F30BA1-6B1D-11D9-9A60-000D93589AF6 + + diff --git a/LaTeX/Bibtex.tmLanguage.cache b/LaTeX/Bibtex.tmLanguage.cache new file mode 100644 index 0000000..55a29e4 Binary files /dev/null and b/LaTeX/Bibtex.tmLanguage.cache differ diff --git a/LaTeX/Cases.sublime-snippet b/LaTeX/Cases.sublime-snippet new file mode 100644 index 0000000..a24b814 --- /dev/null +++ b/LaTeX/Cases.sublime-snippet @@ -0,0 +1,9 @@ + + + cas + text.tex.latex + Cases + diff --git a/LaTeX/Chapter.sublime-snippet b/LaTeX/Chapter.sublime-snippet new file mode 100644 index 0000000..e0c31b7 --- /dev/null +++ b/LaTeX/Chapter.sublime-snippet @@ -0,0 +1,9 @@ + + + cha + text.tex.latex + Chapter + diff --git a/LaTeX/Comments.tmPreferences b/LaTeX/Comments.tmPreferences new file mode 100644 index 0000000..0578ca1 --- /dev/null +++ b/LaTeX/Comments.tmPreferences @@ -0,0 +1,24 @@ + + + + + name + Comments + scope + text.tex.latex + settings + + shellVariables + + + name + TM_COMMENT_START + value + % + + + + uuid + 678850E6-C630-4EEF-B307-14ADEE2B2994 + + diff --git a/LaTeX/Comments.tmPreferences.cache b/LaTeX/Comments.tmPreferences.cache new file mode 100644 index 0000000..16fb1a1 Binary files /dev/null and b/LaTeX/Comments.tmPreferences.cache differ diff --git a/LaTeX/Description.sublime-snippet b/LaTeX/Description.sublime-snippet new file mode 100644 index 0000000..1c474e9 --- /dev/null +++ b/LaTeX/Description.sublime-snippet @@ -0,0 +1,8 @@ + + + desc + text.tex.latex + Description + diff --git a/LaTeX/Displaymath-($$).sublime-snippet b/LaTeX/Displaymath-($$).sublime-snippet new file mode 100644 index 0000000..349bd4b --- /dev/null +++ b/LaTeX/Displaymath-($$).sublime-snippet @@ -0,0 +1,8 @@ + + + $$ + text.tex.latex + Display Math — \[ … \] + diff --git a/LaTeX/Enumerate.sublime-snippet b/LaTeX/Enumerate.sublime-snippet new file mode 100644 index 0000000..629e1fb --- /dev/null +++ b/LaTeX/Enumerate.sublime-snippet @@ -0,0 +1,8 @@ + + + enum + text.tex.latex + Enumerate + diff --git a/LaTeX/Equation.sublime-snippet b/LaTeX/Equation.sublime-snippet new file mode 100644 index 0000000..38c8c16 --- /dev/null +++ b/LaTeX/Equation.sublime-snippet @@ -0,0 +1,8 @@ + + + eq + text.tex.latex + Equation + diff --git a/LaTeX/Figure.sublime-snippet b/LaTeX/Figure.sublime-snippet new file mode 100644 index 0000000..afd6707 --- /dev/null +++ b/LaTeX/Figure.sublime-snippet @@ -0,0 +1,6 @@ + + + figure + text.tex.latex + Figure + diff --git a/LaTeX/Item[description].sublime-snippet b/LaTeX/Item[description].sublime-snippet new file mode 100644 index 0000000..132d6d2 --- /dev/null +++ b/LaTeX/Item[description].sublime-snippet @@ -0,0 +1,6 @@ + + + itd + text.tex.latex meta.function.environment.list + \item[description] + diff --git a/LaTeX/Itemize.sublime-snippet b/LaTeX/Itemize.sublime-snippet new file mode 100644 index 0000000..ca92960 --- /dev/null +++ b/LaTeX/Itemize.sublime-snippet @@ -0,0 +1,8 @@ + + + item + text.tex.latex + Itemize + diff --git a/LaTeX/LaTeX Beamer.tmLanguage b/LaTeX/LaTeX Beamer.tmLanguage new file mode 100644 index 0000000..33176c9 --- /dev/null +++ b/LaTeX/LaTeX Beamer.tmLanguage @@ -0,0 +1,106 @@ + + + + + fileTypes + + firstLineMatch + ^\\documentclass(\[.*\])?\{beamer\} + foldingStartMarker + \\begin\{.*\}|%.*\(fold\)\s*$ + foldingStopMarker + \\end\{.*\}|%.*\(end\)\s*$ + keyEquivalent + ^~B + name + LaTeX Beamer + patterns + + + begin + (?:\s*)((\\)begin)(\{)(frame)(\}) + captures + + 1 + + name + support.function.be.latex + + 2 + + name + punctuation.definition.function.latex + + 3 + + name + punctuation.definition.arguments.begin.latex + + 4 + + name + variable.parameter.function.latex + + 5 + + name + punctuation.definition.arguments.end.latex + + + end + ((\\)end)(\{)(frame)(\}) + name + meta.function.environment.frame.latex + patterns + + + include + $self + + + + + captures + + 1 + + name + support.function.frametitle.latex + + 2 + + name + punctuation.definition.function.latex + + 3 + + name + punctuation.definition.arguments.begin.latex + + 4 + + name + entity.name.function.frame.latex + + 5 + + name + punctuation.definition.arguments.end.latex + + + match + ((\\)frametitle)(\{)(.*)(\}) + name + meta.function.frametitle.latex + + + include + text.tex.latex + + + scopeName + text.tex.latex.beamer + uuid + 2ACA20AA-B008-469B-A04A-6DE232973ED8 + + diff --git a/LaTeX/LaTeX Beamer.tmLanguage.cache b/LaTeX/LaTeX Beamer.tmLanguage.cache new file mode 100644 index 0000000..8f2e071 Binary files /dev/null and b/LaTeX/LaTeX Beamer.tmLanguage.cache differ diff --git a/LaTeX/LaTeX Log.tmLanguage b/LaTeX/LaTeX Log.tmLanguage new file mode 100644 index 0000000..c2600f3 --- /dev/null +++ b/LaTeX/LaTeX Log.tmLanguage @@ -0,0 +1,141 @@ + + + + + firstLineMatch + This is (pdf|pdfe)?TeXk?, Version + foldingStartMarker + /\*\*|\(\s*$ + foldingStopMarker + \*\*/|^\s*\) + name + LaTeX Log + patterns + + + match + .*Warning: + name + invalid.deprecated + + + match + [^:]*:\d*:.* + name + invalid.deprecated + + + match + .*Error|^!.* + name + invalid.illegal + + + match + .*\.sty + name + entity.name.function + + + match + .*\.cls + name + entity.name.type.class + + + match + .*\.cfg + name + entity.name.tag.configuration + + + match + .*\.def + name + entity.name.tag.definition + + + match + .*Info.* + name + comment.block.documentation + + + match + .*FiXme: + name + meta.log.latex.fixme + + + begin + (Overfull|Underfull) + captures + + 1 + + name + keyword.control.hyphenation.latex + + + end + (\[\]\n) + name + meta.log.latex.hyphenation + patterns + + + match + [0-9]+\-\-[0-9]+ + name + variable.parameter.hyphenation.latex2 + + + + + begin + (<) + beginCaptures + + 0 + + name + punctuation.definition.string.begin.log.latex + + + end + (>) + endCaptures + + 0 + + name + punctuation.definition.string.end.log.latex + + + name + string.unquoted.other.filename.log.latex + patterns + + + captures + + 1 + + name + entity.name.function.filename.latex + + + match + (.*/.*\.pdf) + name + support.function.with-arg.latex + + + + + scopeName + text.log.latex + uuid + F68ACE95-7DB3-4DFB-AA8A-89988B116B5C + + diff --git a/LaTeX/LaTeX Log.tmLanguage.cache b/LaTeX/LaTeX Log.tmLanguage.cache new file mode 100644 index 0000000..fdd5ebf Binary files /dev/null and b/LaTeX/LaTeX Log.tmLanguage.cache differ diff --git a/LaTeX/LaTeX Memoir.tmLanguage b/LaTeX/LaTeX Memoir.tmLanguage new file mode 100644 index 0000000..13f9292 --- /dev/null +++ b/LaTeX/LaTeX Memoir.tmLanguage @@ -0,0 +1,165 @@ + + + + + fileTypes + + firstLineMatch + ^\\documentclass(\[.*\])?\{memoir\} + foldingStartMarker + \\begin\{.*\}|%.*\(fold\)\s*$ + foldingStopMarker + \\end\{.*\}|%.*\(end\)\s*$ + keyEquivalent + ^~M + name + LaTeX Memoir + patterns + + + begin + (?:\s*)((\\)begin)(\{)(framed|shaded|leftbar)(\}) + captures + + 1 + + name + support.function.be.latex + + 2 + + name + punctuation.definition.function.latex + + 3 + + name + punctuation.definition.arguments.begin.latex + + 4 + + name + variable.parameter.function.latex + + 5 + + name + punctuation.definition.arguments.end.latex + + + end + ((\\)end)(\{)(\4)(\}) + name + meta.function.memoir-fbox.latex + patterns + + + include + $self + + + + + begin + (?:\s*)((\\)begin)(\{)((?:fboxv|boxedv|V)erbatim)(\}) + captures + + 1 + + name + support.function.be.latex + + 2 + + name + punctuation.definition.function.latex + + 3 + + name + punctuation.definition.arguments.begin.latex + + 4 + + name + variable.parameter.function.latex + + 5 + + name + punctuation.definition.arguments.end.latex + + + contentName + markup.raw.verbatim.latex + end + ((\\)end)(\{)(\4)(\}) + name + meta.function.memoir-verbatim.latex + + + begin + (?:\s*)((\\)begin)(\{)(alltt)(\}) + captures + + 1 + + name + support.function.be.latex + + 2 + + name + punctuation.definition.function.latex + + 3 + + name + punctuation.definition.arguments.begin.latex + + 4 + + name + variable.parameter.function.latex + + 5 + + name + punctuation.definition.arguments.end.latex + + + contentName + markup.raw.verbatim.latex + end + ((\\)end)(\{)(alltt)(\}) + name + meta.function.memoir-alltt.latex + patterns + + + captures + + 1 + + name + punctuation.definition.function.tex + + + match + (\\)[A-Za-z]+ + name + support.function.general.tex + + + + + include + text.tex.latex + + + scopeName + text.tex.latex.memoir + uuid + D0853B20-ABFF-48AB-8AB9-3D8BA0755C05 + + diff --git a/LaTeX/LaTeX Memoir.tmLanguage.cache b/LaTeX/LaTeX Memoir.tmLanguage.cache new file mode 100644 index 0000000..5b86d1d Binary files /dev/null and b/LaTeX/LaTeX Memoir.tmLanguage.cache differ diff --git a/LaTeX/LaTeX.tmLanguage b/LaTeX/LaTeX.tmLanguage new file mode 100644 index 0000000..8055dcb --- /dev/null +++ b/LaTeX/LaTeX.tmLanguage @@ -0,0 +1,1554 @@ + + + + + fileTypes + + tex + + firstLineMatch + ^\\documentclass(?!.*\{beamer\}) + foldingStartMarker + \\begin\{.*\}|%.*\(fold\)\s*$ + foldingStopMarker + \\end\{.*\}|%.*\(end\)\s*$ + keyEquivalent + ^~L + name + LaTeX + patterns + + + match + (?=\s)(?<=\\[\w@]|\\[\w@]{2}|\\[\w@]{3}|\\[\w@]{4}|\\[\w@]{5}|\\[\w@]{6})\s + name + meta.space-after-command.latex + + + begin + ((\\)(?:usepackage|documentclass))(?:(\[)([^\]]*)(\]))?(\{) + beginCaptures + + 1 + + name + keyword.control.preamble.latex + + 2 + + name + punctuation.definition.function.latex + + 3 + + name + punctuation.definition.arguments.begin.latex + + 4 + + name + variable.parameter.latex + + 5 + + name + punctuation.definition.arguments.end.latex + + 6 + + name + punctuation.definition.arguments.begin.latex + + + contentName + support.class.latex + end + \} + endCaptures + + 0 + + name + punctuation.definition.arguments.end.latex + + + name + meta.preamble.latex + patterns + + + include + $self + + + + + begin + ((\\)(?:include|input))(\{) + beginCaptures + + 1 + + name + keyword.control.include.latex + + 2 + + name + punctuation.definition.function.latex + + 3 + + name + punctuation.definition.arguments.begin.latex + + + contentName + support.class.latex + end + \} + endCaptures + + 0 + + name + punctuation.definition.arguments.end.latex + + + name + meta.include.latex + patterns + + + include + $self + + + + + begin + (?x) + ( # Capture 1 + (\\) # Marker + (?: + (?:sub){0,2}section # Functions + | (?:sub)?paragraph + | chapter|part|addpart + | addchap|addsec|minisec + ) + (?:\*)? # Optional Unnumbered + ) + (?: + (\[)([^\[]*?)(\]) # Optional Title + )?? + (\{) # Opening Bracket + + beginCaptures + + 1 + + name + support.function.section.latex + + 2 + + name + punctuation.definition.function.latex + + 3 + + name + punctuation.definition.arguments.optional.begin.latex + + 4 + + name + entity.name.section.latex + + 5 + + name + punctuation.definition.arguments.optional.end.latex + + 6 + + name + punctuation.definition.arguments.begin.latex + + + comment + this works OK with all kinds of crazy stuff as long as section is one line + contentName + entity.name.section.latex + end + \} + endCaptures + + 0 + + name + punctuation.definition.arguments.end.latex + + + name + meta.function.section.latex + patterns + + + include + $self + + + + + begin + (?:\s*)((\\)begin)(\{)(lstlisting)(\})(?:(\[).*(\]))?(\s*%\s*(?i:Java)\n?) + captures + + 1 + + name + support.function.be.latex + + 2 + + name + punctuation.definition.function.latex + + 3 + + name + punctuation.definition.arguments.begin.latex + + 4 + + name + variable.parameter.function.latex + + 5 + + name + punctuation.definition.arguments.end.latex + + 6 + + name + punctuation.definition.arguments.optional.begin.latex + + 7 + + name + punctuation.definition.arguments.optional.end.latex + + 8 + + name + comment.line.percentage.latex + + + contentName + source.java.embedded + end + ((\\)end)(\{)(lstlisting)(\}) + name + meta.function.embedded.java.latex + patterns + + + include + source.java + + + + + begin + (?:\s*)((\\)begin)(\{)(lstlisting)(\})(?:(\[).*(\]))?(\s*%\s*(?i:Python)\n?) + captures + + 1 + + name + support.function.be.latex + + 2 + + name + punctuation.definition.function.latex + + 3 + + name + punctuation.definition.arguments.begin.latex + + 4 + + name + variable.parameter.function.latex + + 5 + + name + punctuation.definition.arguments.end.latex + + 6 + + name + punctuation.definition.arguments.optional.begin.latex + + 7 + + name + punctuation.definition.arguments.optional.end.latex + + 8 + + name + comment.line.percentage.latex + + + comment + Put the lstlisting match before the more general environment listing. Someday it would be nice to make this rule general enough to figure out which language is inside the lstlisting environment rather than my own personal use for python. --Brad + contentName + source.python.embedded + end + ((\\)end)(\{)(lstlisting)(\}) + name + meta.function.embedded.python.latex + patterns + + + include + source.python + + + + + begin + (?:\s*)((\\)begin)(\{)(lstlisting)(\})(?:(\[).*(\]))?(\s*%.*\n?)? + captures + + 1 + + name + support.function.be.latex + + 2 + + name + punctuation.definition.function.latex + + 3 + + name + punctuation.definition.arguments.begin.latex + + 4 + + name + variable.parameter.function.latex + + 5 + + name + punctuation.definition.arguments.end.latex + + 6 + + name + punctuation.definition.arguments.optional.begin.latex + + 7 + + name + punctuation.definition.arguments.optional.end.latex + + 8 + + name + comment.line.percentage.latex + + + comment + Put the lstlisting match before the more general environment listing. Someday it would be nice to make this rule general enough to figure out which language is inside the lstlisting environment rather than my own personal use for python. --Brad + contentName + source.generic.embedded + end + ((\\)end)(\{)(lstlisting)(\}) + name + meta.function.embedded.generic.latex + + + begin + (?:\s*)((\\)begin)(\{)((?:V|v)erbatim|alltt)(\}) + captures + + 1 + + name + support.function.be.latex + + 2 + + name + punctuation.definition.function.latex + + 3 + + name + punctuation.definition.arguments.begin.latex + + 4 + + name + variable.parameter.function.latex + + 5 + + name + punctuation.definition.arguments.end.latex + + + contentName + markup.raw.verbatim.latex + end + ((\\)end)(\{)(\4)(\}) + name + meta.function.verbatim.latex + + + captures + + 1 + + name + support.function.url.latex + + 2 + + name + punctuation.definition.function.latex + + 3 + + name + punctuation.definition.arguments.begin.latex + + 4 + + name + markup.underline.link.latex + + 5 + + name + punctuation.definition.arguments.end.latex + + + match + (?:\s*)((\\)(?:url|href))(\{)([^}]*)(\}) + name + meta.function.link.url.latex + + + captures + + 1 + + name + support.function.be.latex + + 2 + + name + punctuation.definition.function.latex + + 3 + + name + punctuation.definition.arguments.begin.latex + + 4 + + name + variable.parameter.function.latex + + 5 + + name + punctuation.definition.arguments.end.latex + + + comment + These two patterns match the \begin{document} and \end{document} commands, so that the environment matching pattern following them will ignore those commands. + match + (?:\s*)((\\)begin)(\{)(document)(\}) + name + meta.function.begin-document.latex + + + captures + + 1 + + name + support.function.be.latex + + 2 + + name + punctuation.definition.function.latex + + 3 + + name + punctuation.definition.arguments.begin.latex + + 4 + + name + variable.parameter.function.latex + + 5 + + name + punctuation.definition.arguments.end.latex + + + match + (?:\s*)((\\)end)(\{)(document)(\}) + name + meta.function.end-document.latex + + + begin + (?x) + (?:\s*) # Optional whitespace + ((\\)begin) # Marker - Function + (\{) # Open Bracket + ( + (?: + align|equation|eqnarray # Argument + | multline|aligned|alignat + | split|gather|gathered + ) + (?:\*)? # Optional Unnumbered + ) + (\}) # Close Bracket + (\s*\n)? # Match to end of line absent of content + + captures + + 1 + + name + support.function.be.latex + + 2 + + name + punctuation.definition.function.latex + + 3 + + name + punctuation.definition.arguments.begin.latex + + 4 + + name + variable.parameter.function.latex + + 5 + + name + punctuation.definition.arguments.end.latex + + + contentName + string.other.math.block.environment.latex + end + (?x) + (?:\s*) # Optional whitespace + ((\\)end) # Marker - Function + (\{) # Open Bracket + (\4) # Previous capture from begin + (\}) # Close Bracket + (?:\s*\n)? # Match to end of line absent of content + + name + meta.function.environment.math.latex + patterns + + + include + $base + + + + + begin + (?x) + (?:\s*) # Optional whitespace + ((\\)begin) # Marker - Function + (\{) # Open Bracket + (array|tabular[xy*]?) + (\}) # Close Bracket + (\s*\n)? # Match to end of line absent of content + + captures + + 1 + + name + support.function.be.latex + + 2 + + name + punctuation.definition.function.latex + + 3 + + name + punctuation.definition.arguments.begin.latex + + 4 + + name + variable.parameter.function.latex + + 5 + + name + punctuation.definition.arguments.end.latex + + + contentName + meta.data.environment.tabular.latex + end + (?x) + (?:\s*) # Optional whitespace + ((\\)end) # Marker - Function + (\{) # Open Bracket + (\4) # Previous capture from begin + (\}) # Close Bracket + (?:\s*\n)? # Match to end of line absent of content + + name + meta.function.environment.tabular.latex + patterns + + + match + \\ + name + punctuation.definition.table.row.latex + + + begin + (?:^|(?<=\\\\))(?!\\\\|\s*\\end\{(?:tabular|array)) + end + (?=\\\\|\s*\\end\{(?:tabular|array)) + name + meta.row.environment.tabular.latex + patterns + + + match + & + name + punctuation.definition.table.cell.latex + + + begin + (?:^|(?<=&))((?!&|\\\\|$)) + end + (?=&|\\\\|\s*\\end\{(?:tabular|array)) + name + meta.cell.environment.tabular.latex + patterns + + + include + $base + + + + + include + $base + + + + + include + $base + + + + + begin + (?:\s*)((\\)begin)(\{)(itemize|enumerate|description|list)(\}) + captures + + 1 + + name + support.function.be.latex + + 2 + + name + punctuation.definition.function.latex + + 3 + + name + punctuation.definition.arguments.latex + + 4 + + name + variable.parameter.function.latex + + 5 + + name + punctuation.definition.arguments.latex + + + end + ((\\)end)(\{)(\4)(\})(?:\s*\n)? + name + meta.function.environment.list.latex + patterns + + + include + $base + + + + + begin + (?:\s*)((\\)begin)(\{)(\w+[*]?)(\}) + captures + + 1 + + name + support.function.be.latex + + 2 + + name + punctuation.definition.function.latex + + 3 + + name + punctuation.definition.arguments.latex + + 4 + + name + variable.parameter.function.latex + + 5 + + name + punctuation.definition.arguments.latex + + + end + ((\\)end)(\{)(\4)(\})(?:\s*\n)? + name + meta.function.environment.general.latex + patterns + + + include + $base + + + + + captures + + 1 + + name + punctuation.definition.function.latex + + + match + (\\)(newcommand|renewcommand)\b + name + storage.type.function.latex + + + begin + ((\\)marginpar)(\{) + beginCaptures + + 1 + + name + support.function.marginpar.latex + + 2 + + name + punctuation.definition.function.latex + + 3 + + name + punctuation.definition.marginpar.begin.latex + + + contentName + meta.paragraph.margin.latex + end + \} + endCaptures + + 0 + + name + punctuation.definition.marginpar.end.latex + + + patterns + + + include + $base + + + + + begin + ((\\)footnote)(\{) + beginCaptures + + 1 + + name + support.function.footnote.latex + + 2 + + name + punctuation.definition.function.latex + + 3 + + name + punctuation.definition.footnote.begin.latex + + + contentName + meta.footnote.latex + end + \} + endCaptures + + 0 + + name + punctuation.definition.footnote.end.latex + + + patterns + + + include + $base + + + + + begin + ((\\)emph)(\{) + beginCaptures + + 1 + + name + support.function.emph.latex + + 2 + + name + punctuation.definition.function.latex + + 3 + + name + punctuation.definition.emph.begin.latex + + + contentName + markup.italic.emph.latex + end + \} + endCaptures + + 0 + + name + punctuation.definition.emph.end.latex + + + name + meta.function.emph.latex + patterns + + + include + $base + + + + + begin + ((\\)textit)(\{) + captures + + 1 + + name + support.function.textit.latex + + 2 + + name + punctuation.definition.function.latex + + 3 + + name + punctuation.definition.textit.begin.latex + + + comment + We put the keyword in a capture and name this capture, so that disabling spell checking for “keyword” won't be inherited by the argument to \textit{...}. + +Put specific matches for particular LaTeX keyword.functions before the last two more general functions + contentName + markup.italic.textit.latex + end + \} + endCaptures + + 0 + + name + punctuation.definition.textit.end.latex + + + name + meta.function.textit.latex + patterns + + + include + $base + + + + + begin + ((\\)textbf)(\{) + captures + + 1 + + name + support.function.textbf.latex + + 2 + + name + punctuation.definition.function.latex + + 3 + + name + punctuation.definition.textbf.begin.latex + + + contentName + markup.bold.textbf.latex + end + \} + endCaptures + + 0 + + name + punctuation.definition.textbf.end.latex + + + name + meta.function.textbf.latex + patterns + + + include + $base + + + + + begin + ((\\)texttt)(\{) + captures + + 1 + + name + support.function.texttt.latex + + 2 + + name + punctuation.definition.function.latex + + 3 + + name + punctuation.definition.texttt.begin.latex + + + contentName + markup.raw.texttt.latex + end + \} + endCaptures + + 0 + + name + punctuation.definition.texttt.end.latex + + + name + meta.function.texttt.latex + patterns + + + include + $base + + + + + captures + + 0 + + name + keyword.other.item.latex + + 1 + + name + punctuation.definition.keyword.latex + + + match + (\\)item\b + name + meta.scope.item.latex + + + begin + (?x) + ( + (\\) # Marker + (?:foot)?(?:full)?(?:no)?(?:short)? # Function Name + [cC]ite + (?:al)?(?:t|p|author|year(?:par)?|title)?[ANP]* + \*? # Optional Unabreviated + ) + (?:(\[)[^\]]*(\]))? # Optional + (?:(\[)[^\]]*(\]))? # Arguments + (\{) # Opening Bracket + + captures + + 1 + + name + keyword.control.cite.latex + + 2 + + name + punctuation.definition.keyword.latex + + 3 + + name + punctuation.definition.arguments.optional.begin.latex + + 4 + + name + punctuation.definition.arguments.optional.end.latex + + 5 + + name + punctuation.definition.arguments.optional.begin.latex + + 6 + + name + punctuation.definition.arguments.optional.end.latex + + 7 + + name + punctuation.definition.arguments.latex + + + end + \} + endCaptures + + 0 + + name + punctuation.definition.arguments.latex + + + name + meta.citation.latex + patterns + + + match + [\w:.]+ + name + constant.other.reference.citation.latex + + + + + begin + ((\\)(?:\w*[r|R]ef\*?))(\{) + beginCaptures + + 1 + + name + keyword.control.ref.latex + + 2 + + name + punctuation.definition.keyword.latex + + 3 + + name + punctuation.definition.arguments.begin.latex + + + end + \} + endCaptures + + 0 + + name + punctuation.definition.arguments.begin.latex + + + name + meta.reference.label.latex + patterns + + + match + [a-zA-Z0-9\.,:/*!^_-] + name + constant.other.reference.label.latex + + + + + begin + ((\\)label)(\{) + beginCaptures + + 1 + + name + keyword.control.label.latex + + 2 + + name + punctuation.definition.keyword.latex + + 3 + + name + punctuation.definition.arguments.begin.latex + + + end + \} + endCaptures + + 0 + + name + punctuation.definition.arguments.end.latex + + + name + meta.definition.label.latex + patterns + + + match + [a-zA-Z0-9\.,:/*!^_-] + name + variable.parameter.definition.label.latex + + + + + begin + ((\\)verb[\*]?)\s*((\\)scantokens)(\{) + beginCaptures + + 1 + + name + support.function.verb.latex + + 2 + + name + punctuation.definition.function.latex + + 3 + + name + support.function.verb.latex + + 4 + + name + punctuation.definition.verb.latex + + 5 + + name + punctuation.definition.begin.latex + + + contentName + markup.raw.verb.latex + end + (\}) + endCaptures + + 1 + + name + punctuation.definition.end.latex + + + name + meta.function.verb.latex + patterns + + + include + $self + + + + + captures + + 1 + + name + support.function.verb.latex + + 2 + + name + punctuation.definition.function.latex + + 3 + + name + punctuation.definition.verb.latex + + 4 + + name + markup.raw.verb.latex + + 5 + + name + punctuation.definition.verb.latex + + + match + ((\\)verb[\*]?)\s*((?<=\s)\S|[^a-zA-Z])(.*?)(\3|$) + name + meta.function.verb.latex + + + begin + "` + beginCaptures + + 0 + + name + punctuation.definition.string.begin.latex + + + end + "' + endCaptures + + 0 + + name + punctuation.definition.string.end.latex + + + name + string.quoted.double.european.latex + patterns + + + include + $base + + + + + begin + `` + beginCaptures + + 0 + + name + punctuation.definition.string.begin.latex + + + end + ''|" + endCaptures + + 0 + + name + punctuation.definition.string.end.latex + + + name + string.quoted.double.latex + patterns + + + include + $base + + + + + begin + "> + beginCaptures + + 0 + + name + punctuation.definition.string.begin.latex + + + end + "< + endCaptures + + 0 + + name + punctuation.definition.string.end.latex + + + name + string.quoted.double.guillemot.latex + patterns + + + include + $base + + + + + begin + "< + beginCaptures + + 0 + + name + punctuation.definition.string.begin.latex + + + end + "> + endCaptures + + 0 + + name + punctuation.definition.string.end.latex + + + name + string.quoted.double.guillemot.latex + patterns + + + include + $base + + + + + begin + \\\( + beginCaptures + + 0 + + name + punctuation.definition.string.begin.latex + + + end + \\\) + endCaptures + + 0 + + name + punctuation.definition.string.end.latex + + + name + string.other.math.latex + patterns + + + include + $base + + + + + begin + \\\[ + beginCaptures + + 0 + + name + punctuation.definition.string.begin.latex + + + end + \\\] + endCaptures + + 0 + + name + punctuation.definition.string.end.latex + + + name + string.other.math.latex + patterns + + + include + $base + + + + + match + (?<!\S)'.*?' + name + invalid.illegal.string.quoted.single.latex + + + match + (?<!\S)".*?" + name + invalid.illegal.string.quoted.double.latex + + + captures + + 1 + + name + punctuation.definition.constant.latex + + + match + (\\)(text(s(terling|ixoldstyle|urd|e(ction|venoldstyle|rvicemark))|yen|n(ineoldstyle|umero|aira)|c(ircledP|o(py(left|right)|lonmonetary)|urrency|e(nt(oldstyle)?|lsius))|t(hree(superior|oldstyle|quarters(emdash)?)|i(ldelow|mes)|w(o(superior|oldstyle)|elveudash)|rademark)|interrobang(down)?|zerooldstyle|o(hm|ne(superior|half|oldstyle|quarter)|penbullet|rd(feminine|masculine))|d(i(scount|ed|v(orced)?)|o(ng|wnarrow|llar(oldstyle)?)|egree|agger(dbl)?|blhyphen(char)?)|uparrow|p(ilcrow|e(so|r(t(housand|enthousand)|iodcentered))|aragraph|m)|e(stimated|ightoldstyle|uro)|quotes(traight(dblbase|base)|ingle)|f(iveoldstyle|ouroldstyle|lorin|ractionsolidus)|won|l(not|ira|e(ftarrow|af)|quill|angle|brackdbl)|a(s(cii(caron|dieresis|acute|grave|macron|breve)|teriskcentered)|cutedbl)|r(ightarrow|e(cipe|ferencemark|gistered)|quill|angle|brackdbl)|g(uarani|ravedbl)|m(ho|inus|u(sicalnote)?|arried)|b(igcircle|orn|ullet|lank|a(ht|rdbl)|rokenbar)))\b + name + constant.character.latex + + + captures + + 1 + + name + punctuation.definition.column-specials.begin.latex + + 2 + + name + punctuation.definition.column-specials.end.latex + + + match + (?:<|>)(\{)\$(\}) + name + meta.column-specials.latex + + + include + text.tex + + + scopeName + text.tex.latex + uuid + 3BEEA00C-6B1D-11D9-B8AD-000D93589AF6 + + diff --git a/LaTeX/LaTeX.tmLanguage.cache b/LaTeX/LaTeX.tmLanguage.cache new file mode 100644 index 0000000..d3c6db0 Binary files /dev/null and b/LaTeX/LaTeX.tmLanguage.cache differ diff --git a/LaTeX/Listing.sublime-snippet b/LaTeX/Listing.sublime-snippet new file mode 100644 index 0000000..e8b480c --- /dev/null +++ b/LaTeX/Listing.sublime-snippet @@ -0,0 +1,7 @@ + + + listing + text.tex.latex + Listing + diff --git a/LaTeX/Matrix.sublime-snippet b/LaTeX/Matrix.sublime-snippet new file mode 100644 index 0000000..0f96aa8 --- /dev/null +++ b/LaTeX/Matrix.sublime-snippet @@ -0,0 +1,8 @@ + + + mat + text.tex.latex + Matrix + diff --git a/LaTeX/Page.sublime-snippet b/LaTeX/Page.sublime-snippet new file mode 100644 index 0000000..35d855c --- /dev/null +++ b/LaTeX/Page.sublime-snippet @@ -0,0 +1,7 @@ + + + page + text.tex.latex + Page + diff --git a/LaTeX/Paragraph.sublime-snippet b/LaTeX/Paragraph.sublime-snippet new file mode 100644 index 0000000..a92db4f --- /dev/null +++ b/LaTeX/Paragraph.sublime-snippet @@ -0,0 +1,9 @@ + + + par + text.tex.latex + Paragraph + diff --git a/LaTeX/Part.sublime-snippet b/LaTeX/Part.sublime-snippet new file mode 100644 index 0000000..8d128c0 --- /dev/null +++ b/LaTeX/Part.sublime-snippet @@ -0,0 +1,9 @@ + + + part + text.tex.latex + Part + diff --git a/LaTeX/Section.sublime-snippet b/LaTeX/Section.sublime-snippet new file mode 100644 index 0000000..50cbf22 --- /dev/null +++ b/LaTeX/Section.sublime-snippet @@ -0,0 +1,7 @@ + + + section + text.tex.latex + Section + diff --git a/LaTeX/Split.sublime-snippet b/LaTeX/Split.sublime-snippet new file mode 100644 index 0000000..43d910c --- /dev/null +++ b/LaTeX/Split.sublime-snippet @@ -0,0 +1,8 @@ + + + spl + text.tex.latex + Split + diff --git a/LaTeX/Sub-Paragraph.sublime-snippet b/LaTeX/Sub-Paragraph.sublime-snippet new file mode 100644 index 0000000..82da65f --- /dev/null +++ b/LaTeX/Sub-Paragraph.sublime-snippet @@ -0,0 +1,9 @@ + + + subp + text.tex.latex + Sub Paragraph + diff --git a/LaTeX/Table.sublime-snippet b/LaTeX/Table.sublime-snippet new file mode 100644 index 0000000..202ecd2 --- /dev/null +++ b/LaTeX/Table.sublime-snippet @@ -0,0 +1,6 @@ + + + table + text.tex.latex + Table + diff --git a/LaTeX/Tabular.sublime-snippet b/LaTeX/Tabular.sublime-snippet new file mode 100644 index 0000000..d4c0fc4 --- /dev/null +++ b/LaTeX/Tabular.sublime-snippet @@ -0,0 +1,8 @@ + + + tab + text.tex.latex + Tabular + diff --git a/LaTeX/TeX Math.tmLanguage b/LaTeX/TeX Math.tmLanguage new file mode 100644 index 0000000..811ad49 --- /dev/null +++ b/LaTeX/TeX Math.tmLanguage @@ -0,0 +1,132 @@ + + + + + fileTypes + + foldingStartMarker + /\*\*|\{\s*$ + foldingStopMarker + \*\*/|^\s*\} + name + TeX Math + patterns + + + captures + + 1 + + name + punctuation.definition.constant.math.tex + + + match + (\\)(s(s(earrow|warrow|lash)|h(ort(downarrow|uparrow|parallel|leftarrow|rightarrow|mid)|arp)|tar|i(gma|m(eq)?)|u(cc(sim|n(sim|approx)|curlyeq|eq|approx)?|pset(neq(q)?|plus(eq)?|eq(q)?)?|rd|m|bset(neq(q)?|plus(eq)?|eq(q)?)?)|p(hericalangle|adesuit)|e(tminus|arrow)|q(su(pset(eq)?|bset(eq)?)|c(up|ap)|uare)|warrow|m(ile|all(s(etminus|mile)|frown)))|h(slash|ook(leftarrow|rightarrow)|eartsuit|bar)|R(sh|ightarrow|e|bag)|Gam(e|ma)|n(s(hort(parallel|mid)|im|u(cc(eq)?|pseteq(q)?|bseteq))|Rightarrow|n(earrow|warrow)|cong|triangle(left(eq(slant)?)?|right(eq(slant)?)?)|i(plus)?|u|p(lus|arallel|rec(eq)?)|e(q|arrow|g|xists)|v(dash|Dash)|warrow|le(ss|q(slant|q)?|ft(arrow|rightarrow))|a(tural|bla)|VDash|rightarrow|g(tr|eq(slant|q)?)|mid|Left(arrow|rightarrow))|c(hi|irc(eq|le(d(circ|S|dash|ast)|arrow(left|right)))?|o(ng|prod|lon|mplement)|dot(s|p)?|u(p|r(vearrow(left|right)|ly(eq(succ|prec)|vee(downarrow|uparrow)?|wedge(downarrow|uparrow)?)))|enterdot|lubsuit|ap)|Xi|Maps(to(char)?|from(char)?)|B(ox|umpeq|bbk)|t(h(ick(sim|approx)|e(ta|refore))|imes|op|wohead(leftarrow|rightarrow)|a(u|lloblong)|riangle(down|q|left(eq(slant)?)?|right(eq(slant)?)?)?)|i(n(t(er(cal|leave))?|plus|fty)?|ota|math)|S(igma|u(pset|bset))|zeta|o(slash|times|int|dot|plus|vee|wedge|lessthan|greaterthan|m(inus|ega)|b(slash|long|ar))|d(i(v(ideontimes)?|a(g(down|up)|mond(suit)?)|gamma)|o(t(plus|eq(dot)?)|ublebarwedge|wn(harpoon(left|right)|downarrows|arrow))|d(ots|agger)|elta|a(sh(v|leftarrow|rightarrow)|leth|gger))|Y(down|up|left|right)|C(up|ap)|u(n(lhd|rhd)|p(silon|harpoon(left|right)|downarrow|uparrows|lus|arrow)|lcorner|rcorner)|jmath|Theta|Im|p(si|hi|i(tchfork)?|erp|ar(tial|allel)|r(ime|o(d|pto)|ec(sim|n(sim|approx)|curlyeq|eq|approx)?)|m)|e(t(h|a)|psilon|q(slant(less|gtr)|circ|uiv)|ll|xists|mptyset)|Omega|D(iamond|ownarrow|elta)|v(d(ots|ash)|ee(bar)?|Dash|ar(s(igma|u(psetneq(q)?|bsetneq(q)?))|nothing|curly(vee|wedge)|t(heta|imes|riangle(left|right)?)|o(slash|circle|times|dot|plus|vee|wedge|lessthan|ast|greaterthan|minus|b(slash|ar))|p(hi|i|ropto)|epsilon|kappa|rho|bigcirc))|kappa|Up(silon|downarrow|arrow)|Join|f(orall|lat|a(t(s(emi|lash)|bslash)|llingdotseq)|rown)|P(si|hi|i)|w(p|edge|r)|l(hd|n(sim|eq(q)?|approx)|ceil|times|ightning|o(ng(left(arrow|rightarrow)|rightarrow|maps(to|from))|zenge|oparrow(left|right))|dot(s|p)|e(ss(sim|dot|eq(qgtr|gtr)|approx|gtr)|q(slant|q)?|ft(slice|harpoon(down|up)|threetimes|leftarrows|arrow(t(ail|riangle))?|right(squigarrow|harpoons|arrow(s|triangle|eq)?))|adsto)|vertneqq|floor|l(c(orner|eil)|floor|l|bracket)?|a(ngle|mbda)|rcorner|bag)|a(s(ymp|t)|ngle|pprox(eq)?|l(pha|eph)|rrownot|malg)|V(dash|vdash)|r(h(o|d)|ceil|times|i(singdotseq|ght(s(quigarrow|lice)|harpoon(down|up)|threetimes|left(harpoons|arrows)|arrow(t(ail|riangle))?|rightarrows))|floor|angle|r(ceil|parenthesis|floor|bracket)|bag)|g(n(sim|eq(q)?|approx)|tr(sim|dot|eq(qless|less)|less|approx)|imel|eq(slant|q)?|vertneqq|amma|g(g)?)|Finv|xi|m(ho|i(nuso|d)|o(o|dels)|u(ltimap)?|p|e(asuredangle|rge)|aps(to|from(char)?))|b(i(n(dnasrepma|ampersand)|g(s(tar|qc(up|ap))|nplus|c(irc|u(p|rly(vee|wedge))|ap)|triangle(down|up)|interleave|o(times|dot|plus)|uplus|parallel|vee|wedge|box))|o(t|wtie|x(slash|circle|times|dot|plus|empty|ast|minus|b(slash|ox|ar)))|u(llet|mpeq)|e(cause|t(h|ween|a))|lack(square|triangle(down|left|right)?|lozenge)|a(ck(s(im(eq)?|lash)|prime|epsilon)|r(o|wedge))|bslash)|L(sh|ong(left(arrow|rightarrow)|rightarrow|maps(to|from))|eft(arrow|rightarrow)|leftarrow|ambda|bag)|Arrownot)\b + name + constant.character.math.tex + + + captures + + 1 + + name + punctuation.definition.constant.math.tex + + + match + (\\)(sum|prod|coprod|int|oint|bigcap|bigcup|bigsqcup|bigvee|bigwedge|bigodot|bigotimes|bogoplus|biguplus)\b + name + constant.character.math.tex + + + captures + + 1 + + name + punctuation.definition.constant.math.tex + + + match + (\\)(arccos|arcsin|arctan|arg|cos|cosh|cot|coth|csc|deg|det|dim|exp|gcd|hom|inf|ker|lg|lim|liminf|limsup|ln|log|max|min|pr|sec|sin|sinh|sup|tan|tanh)\b + name + constant.other.math.tex + + + begin + ((\\)Sexpr)(\{) + beginCaptures + + 1 + + name + support.function.sexpr.math.tex + + 2 + + name + punctuation.definition.function.math.tex + + 3 + + name + punctuation.section.embedded.begin.math.tex + + + contentName + source.r.embedded.math.tex + end + (\}) + endCaptures + + 1 + + name + punctuation.section.embedded.end.math.tex + + + name + meta.function.sexpr.math.tex + patterns + + + include + source.r + + + + + captures + + 1 + + name + punctuation.definition.constant.math.tex + + + match + (\\)([^a-zA-Z]|[A-Za-z]+)(?=\b|\}|\]|\^|\_) + name + constant.other.general.math.tex + + + match + (([0-9]*[\.][0-9]+)|[0-9]+) + name + constant.numeric.math.tex + + + match + «press a-z and space for greek letter»[a-zA-Z]* + name + meta.placeholder.greek.math.tex + + + scopeName + text.tex.math + uuid + 027D6AF4-E9D3-4250-82A1-8A42EEFE4F76 + + diff --git a/LaTeX/TeX Math.tmLanguage.cache b/LaTeX/TeX Math.tmLanguage.cache new file mode 100644 index 0000000..0700cbe Binary files /dev/null and b/LaTeX/TeX Math.tmLanguage.cache differ diff --git a/LaTeX/TeX.tmLanguage b/LaTeX/TeX.tmLanguage new file mode 100644 index 0000000..d0b2c09 --- /dev/null +++ b/LaTeX/TeX.tmLanguage @@ -0,0 +1,246 @@ + + + + + fileTypes + + sty + cls + + foldingStartMarker + /\*\*|\{\s*$ + foldingStopMarker + \*\*/|^\s*\} + name + TeX + patterns + + + captures + + 1 + + name + punctuation.definition.keyword.tex + + + match + (\\)(backmatter|else|fi|frontmatter|ftrue|mainmatter|if(case|cat|dim|eof|false|hbox|hmode|inner|mmode|num|odd|undefined|vbox|vmode|void|x)?)\b + name + keyword.control.tex + + + captures + + 1 + + name + keyword.control.catcode.tex + + 2 + + name + punctuation.definition.keyword.tex + + 3 + + name + punctuation.separator.key-value.tex + + 4 + + name + constant.numeric.category.tex + + + match + ((\\)catcode)`(?:\\)?.(=)(\d+) + name + meta.catcode.tex + + + captures + + 1 + + name + punctuation.definition.comment.tex + + + match + (%:).*$\n? + name + comment.line.percentage.semicolon.texshop.tex + + + match + ^%!TEX (\S*) =\s*(.*)\s*$ + name + comment.line.percentage.directive.texshop.tex + + + captures + + 1 + + name + punctuation.definition.comment.tex + + + match + (%).*$\n? + name + comment.line.percentage.tex + + + begin + \{ + captures + + 0 + + name + punctuation.section.group.tex + + + end + \} + name + meta.group.braces.tex + patterns + + + include + $base + + + + + match + [\[\]] + name + punctuation.definition.brackets.tex + + + begin + \$\$ + beginCaptures + + 0 + + name + punctuation.definition.string.begin.tex + + + end + \$\$ + endCaptures + + 0 + + name + punctuation.definition.string.end.tex + + + name + string.other.math.block.tex + patterns + + + include + text.tex.math + + + include + $self + + + + + match + \\\\ + name + constant.character.newline.tex + + + begin + \$ + beginCaptures + + 0 + + name + punctuation.definition.string.begin.tex + + + end + \$ + endCaptures + + 0 + + name + punctuation.definition.string.end.tex + + + name + string.other.math.tex + patterns + + + match + \\\$ + name + constant.character.escape.tex + + + include + text.tex.math + + + include + $self + + + + + captures + + 1 + + name + punctuation.definition.function.tex + + + match + (\\)[A-Za-z@]+ + name + support.function.general.tex + + + captures + + 1 + + name + punctuation.definition.keyword.tex + + + match + (\\)[^a-zA-Z@] + name + constant.character.escape.tex + + + match + «press a-z and space for greek letter»[a-zA-Z]* + name + meta.placeholder.greek.tex + + + scopeName + text.tex + uuid + 6BC8DE6F-9360-4C7E-AC3C-971385945346 + + diff --git a/LaTeX/TeX.tmLanguage.cache b/LaTeX/TeX.tmLanguage.cache new file mode 100644 index 0000000..ef573b4 Binary files /dev/null and b/LaTeX/TeX.tmLanguage.cache differ diff --git a/LaTeX/begin{}-end{}.sublime-snippet b/LaTeX/begin{}-end{}.sublime-snippet new file mode 100644 index 0000000..dc09523 --- /dev/null +++ b/LaTeX/begin{}-end{}.sublime-snippet @@ -0,0 +1,8 @@ + + + begin + text.tex.latex + \begin{}…\end{} + diff --git a/LaTeX/section-..-(section).sublime-snippet b/LaTeX/section-..-(section).sublime-snippet new file mode 100644 index 0000000..610010e --- /dev/null +++ b/LaTeX/section-..-(section).sublime-snippet @@ -0,0 +1,9 @@ + + + sec + text.tex.latex + Section + diff --git a/LaTeX/subsection-..-(sub).sublime-snippet b/LaTeX/subsection-..-(sub).sublime-snippet new file mode 100644 index 0000000..2231f12 --- /dev/null +++ b/LaTeX/subsection-..-(sub).sublime-snippet @@ -0,0 +1,9 @@ + + + sub + text.tex.latex + Sub Section + diff --git a/LaTeX/subsubsection-..-(ssub).sublime-snippet b/LaTeX/subsubsection-..-(ssub).sublime-snippet new file mode 100644 index 0000000..8389ea6 --- /dev/null +++ b/LaTeX/subsubsection-..-(ssub).sublime-snippet @@ -0,0 +1,9 @@ + + + subs + text.tex.latex + Sub Sub Section + diff --git a/Language - English/README_en_GB.txt b/Language - English/README_en_GB.txt new file mode 100644 index 0000000..5f77036 --- /dev/null +++ b/Language - English/README_en_GB.txt @@ -0,0 +1,37 @@ +This dictionary was initially based on a subset of the +original English wordlist created by Kevin Atkinson for +Pspell and Aspell and thus is covered by his original +LGPL licence. + +It has been extensively updated by David Bartlett, Brian Kelk +and Andrew Brown: +- numerous Americanism have been removed +- numerous American spellings have been corrected +- missing words have been added +- many errors have been corrected +- compound hyphenated words have been added where appropriate + +Valuable inputs to this process were received from many other +people - far too numerous to name. Serious thanks to you all +for your greatly appreciated help. + +This word list is intended to be a good representation of +current modern British English and thus it should be a good +basis for Commonwealth English in most countries of the world +outside North America. + +The affix file has been created completely from scratch +by David Bartlett and Andrew Brown, based on the published +rules for MySpell and is also provided under the LGPL. + +In creating the affix rules an attempt has been made to +reproduce the most general rules for English word +formation, rather than merely use it as a means to +compress the size of the dictionary. It is hoped that this +will facilitate future localisation to other variants of +English. + +Please let David Bartlett know of any +errors that you find. + +The current release is R 1.18, 11/04/05 diff --git a/Language - English/README_en_US.txt b/Language - English/README_en_US.txt new file mode 100644 index 0000000..b06ad96 --- /dev/null +++ b/Language - English/README_en_US.txt @@ -0,0 +1,29 @@ +2006-02-07 release. +-- +This dictionary is based on a subset of the original +English wordlist created by Kevin Atkinson for Pspell +and Aspell and thus is covered by his original +LGPL license. The affix file is a heavily modified +version of the original english.aff file which was +released as part of Geoff Kuenning's Ispell and as +such is covered by his BSD license. + +Thanks to both authors for there wonderful work. + +ChangeLog + +2006-02-07 nemeth AT OOo + +Issue 48060 - add ordinal numbers with COMPOUNDRULE (1st, 11th, 101st etc.) +Issue 29112, 55498 - add NOSUGGEST flags to taboo words +Issue 56755 - add sequitor (non sequitor) +Issue 50616 - add open source words (GNOME, KDE, OOo, OpenOffice.org) +Issue 56389 - add Mozilla words (Mozilla, Firefox, Thunderbird) +Issue 29110 - add okay +Issue 58468 - add advisors +Issue 58708 - add hiragana & katakana +Issue 60240 - add arginine, histidine, monovalent, polymorphism, pyroelectric, pyroelectricity + +2005-11-01 dnaber AT OOo + +Issue 25797 - add proven, advisor, etc. diff --git a/Language - English/en_GB.aff b/Language - English/en_GB.aff new file mode 100644 index 0000000..dc71ace --- /dev/null +++ b/Language - English/en_GB.aff @@ -0,0 +1,1150 @@ +# Affix file for British English MySpell dictionary +# Also suitable as basis for Commonwealth and European English. +# Built from scratch for MySpell. Released under LGPL. +# +# David Bartlett, Andrew Brown. +# R 1.18, 11/04/05 +SET ISO8859-1 +TRY esianrtolcdugmfphbyvkw-'.zqjxSNRTLCGDMFPHBEAUYOIVKWZQJX +REP 27 +REP f ph +REP ph f +REP f gh +REP f ugh +REP gh f +REP ff ugh +REP uf ough +REP uff ough +REP k ch +REP ch k +REP dg j +REP j dg +REP w ugh +REP ness ity +REP leness ility +REP ness ivity +REP eness ity +REP og ogue +REP ck qu +REP ck que +REP eg e.g. +REP ie i.e. +REP t ght +REP ght t +REP ok OK +REP ts ce +REP ce ts +PFX A Y 2 +PFX A 0 re [^e] +PFX A 0 re- e +PFX a Y 1 +PFX a 0 mis . +PFX I Y 4 +PFX I 0 il l +PFX I 0 ir r +PFX I 0 im [bmp] +PFX I 0 in [^blmpr] +PFX c Y 1 +PFX c 0 over . +PFX U Y 1 +PFX U 0 un . +PFX C Y 2 +PFX C 0 de [^e] +PFX C 0 de- e +PFX E Y 1 +PFX E 0 dis . +PFX F Y 5 +PFX F 0 com [bmp] +PFX F 0 co [aeiouh] +PFX F 0 cor r +PFX F 0 col l +PFX F 0 con [^abehilmopru]. +PFX K Y 1 +PFX K 0 pre . +PFX e Y 1 +PFX e 0 out . +PFX f Y 2 +PFX f 0 under [^r] +PFX f 0 under- r +PFX O Y 1 +PFX O 0 non- . +PFX 4 Y 1 +PFX 4 0 trans . +SFX V Y 15 +SFX V 0 tive [aio] +SFX V b ptive b +SFX V d sive d +SFX V be ptive be +SFX V e tive ce +SFX V de sive de +SFX V ke cative ke +SFX V e ptive me +SFX V e ive [st]e +SFX V e ative [^bcdkmst]e +SFX V 0 lative [aeiou]l +SFX V 0 ative [^aeiou]l +SFX V 0 ive [st] +SFX V y icative y +SFX V 0 ative [^abdeilosty] +SFX v Y 15 +SFX v 0 tively [aio] +SFX v b ptively b +SFX v d sively d +SFX v be ptively be +SFX v e tively ce +SFX v de sively de +SFX v ke catively ke +SFX v e ptively me +SFX v e ively [st]e +SFX v e atively [^bcdkmst]e +SFX v 0 latively [aeiou]l +SFX v 0 atively [^aeiou]l +SFX v 0 ively [st] +SFX v y icatively y +SFX v 0 atively [^abdeilosty] +SFX u Y 15 +SFX u 0 tiveness [aio] +SFX u b ptiveness b +SFX u d siveness d +SFX u be ptiveness be +SFX u e tiveness ce +SFX u de siveness de +SFX u ke cativeness ke +SFX u e ptiveness me +SFX u e iveness [st]e +SFX u e ativeness [^bcdkmst]e +SFX u 0 lativeness [aeiou]l +SFX u 0 ativeness [^aeiou]l +SFX u 0 iveness [st] +SFX u y icativeness y +SFX u 0 ativeness [^abdeilosty] +SFX N Y 26 +SFX N b ption b +SFX N d sion d +SFX N be ption be +SFX N e tion ce +SFX N de sion de +SFX N ke cation ke +SFX N e ption ume +SFX N e mation [^u]me +SFX N e ion [^o]se +SFX N e ition ose +SFX N e ation [iou]te +SFX N e ion [^iou]te +SFX N e ation [^bcdkmst]e +SFX N el ulsion el +SFX N 0 lation [aiou]l +SFX N 0 ation [^aeiou]l +SFX N 0 mation [aeiou]m +SFX N 0 ation [^aeiou]m +SFX N er ration er +SFX N 0 ation [^e]r +SFX N 0 ion [sx] +SFX N t ssion mit +SFX N 0 ion [^m]it +SFX N 0 ation [^i]t +SFX N y ication y +SFX N 0 ation [^bdelmrstxy] +SFX n Y 28 +SFX n 0 tion a +SFX n e tion ce +SFX n ke cation ke +SFX n e ation [iou]te +SFX n e ion [^iou]te +SFX n e ation [^ckt]e +SFX n el ulsion el +SFX n 0 lation [aiou]l +SFX n 0 ation [^aeiou]l +SFX n er ration er +SFX n 0 ation [^e]r +SFX n y ation py +SFX n y ication [^p]y +SFX n 0 ation [^aelry] +SFX n 0 tions a +SFX n e tions ce +SFX n ke cations ke +SFX n e ations [iou]te +SFX n e ions [^iou]te +SFX n e ations [^ckt]e +SFX n el ulsions el +SFX n 0 lations [aiou]l +SFX n 0 ations [^aeiou]l +SFX n er rations er +SFX n 0 ations [^e]r +SFX n y ations py +SFX n y ications [^p]y +SFX n 0 ations [^aelry] +SFX X Y 26 +SFX X b ptions b +SFX X d sions d +SFX X be ptions be +SFX X e tions ce +SFX X ke cations ke +SFX X de sions de +SFX X e ptions ume +SFX X e mations [^u]me +SFX X e ions [^o]se +SFX X e itions ose +SFX X e ations [iou]te +SFX X e ions [^iou]te +SFX X e ations [^bcdkmst]e +SFX X el ulsions el +SFX X 0 lations [aiou]l +SFX X 0 ations [^aeiou]l +SFX X 0 mations [aeiou]m +SFX X 0 ations [^aeiou]m +SFX X er rations er +SFX X 0 ations [^e]r +SFX X 0 ions [sx] +SFX X t ssions mit +SFX X 0 ions [^m]it +SFX X 0 ations [^i]t +SFX X y ications y +SFX X 0 ations [^bdelmrstxy] +SFX x Y 40 +SFX x b ptional b +SFX x d sional d +SFX x be ptional be +SFX x e tional ce +SFX x ke cational ke +SFX x de sional de +SFX x e ional [^o]se +SFX x e itional ose +SFX x e ional te +SFX x e ational [^bcdkst]e +SFX x el ulsional el +SFX x 0 lational [aiou]l +SFX x 0 ational [^aeiou]l +SFX x er rational er +SFX x 0 ational [^e]r +SFX x 0 ional [sx] +SFX x 0 ional [^n]t +SFX x 0 ational nt +SFX x y icational y +SFX x 0 ational [^bdelrstxy] +SFX x b ptionally b +SFX x d sionally d +SFX x be ptionally be +SFX x e tionally ce +SFX x ke cationally ke +SFX x de sionally de +SFX x e ionally [^o]se +SFX x e itionally ose +SFX x e ionally te +SFX x e ationally [^bcdkst]e +SFX x el ulsionally el +SFX x 0 lationally [aiou]l +SFX x 0 ationally [^aeiou]l +SFX x er rationally er +SFX x 0 ationally [^e]r +SFX x 0 ionally [sx] +SFX x 0 ionally [^n]t +SFX x 0 ationally nt +SFX x y icationally y +SFX x 0 ationally [^bdelrstxy] +SFX H N 13 +SFX H y ieth y +SFX H ree ird ree +SFX H ve fth ve +SFX H e th [^ev]e +SFX H 0 h t +SFX H 0 th [^ety] +SFX H y ieths y +SFX H ree irds ree +SFX H ve fths ve +SFX H e ths [^ev]e +SFX H 0 hs t +SFX H 0 ths [^ety] +SFX H 0 fold . +SFX Y Y 9 +SFX Y 0 ally ic +SFX Y 0 ly [^i]c +SFX Y e y [^aeiou]le +SFX Y 0 ly [aeiou]le +SFX Y 0 ly [^l]e +SFX Y 0 y [^aeiou]l +SFX Y y ily [^aeiou]y +SFX Y 0 ly [aeiou][ly] +SFX Y 0 ly [^cely] +SFX G Y 24 +SFX G e ing [^eioy]e +SFX G 0 ing [eoy]e +SFX G ie ying ie +SFX G 0 bing [^aeio][aeiou]b +SFX G 0 king [^aeio][aeiou]c +SFX G 0 ding [^aeio][aeiou]d +SFX G 0 fing [^aeio][aeiou]f +SFX G 0 ging [^aeio][aeiou]g +SFX G 0 king [^aeio][aeiou]k +SFX G 0 ling [^aeio][eiou]l +SFX G 0 ing [aeio][eiou]l +SFX G 0 ling [^aeo]al +SFX G 0 ing [aeo]al +SFX G 0 ming [^aeio][aeiou]m +SFX G 0 ning [^aeio][aeiou]n +SFX G 0 ping [^aeio][aeiou]p +SFX G 0 ring [^aeio][aeiou]r +SFX G 0 sing [^aeio][aeiou]s +SFX G 0 ting [^aeio][aeiou]t +SFX G 0 ving [^aeio][aeiou]v +SFX G 0 zing [^aeio][aeiou]z +SFX G 0 ing [aeio][aeiou][bcdfgkmnprstvz] +SFX G 0 ing [^aeiou][bcdfgklmnprstvz] +SFX G 0 ing [^ebcdfgklmnprstvz] +SFX J Y 25 +SFX J e ings [^eioy]e +SFX J 0 ings [eoy]e +SFX J ie yings ie +SFX J 0 bings [^aeio][aeiou]b +SFX J 0 king [^aeio][aeiou]c +SFX J 0 dings [^aeio][aeiou]d +SFX J 0 fings [^aeio][aeiou]f +SFX J 0 gings [^aeio][aeiou]g +SFX J 0 kings [^aeio][aeiou]k +SFX J 0 lings [^aeio][eiou]l +SFX J 0 ings [aeio][eiou]l +SFX J 0 lings [^aeo]al +SFX J 0 ings [aeo]al +SFX J 0 mings [^aeio][aeiou]m +SFX J 0 nings [^aeio][aiou]n +SFX J 0 pings [^aeio][aeiou]p +SFX J 0 rings [^aeio][aiou]r +SFX J 0 sings [^aeio][aeiou]s +SFX J 0 tings [^aeio][aiou]t +SFX J 0 vings [^aeio][aeiou]v +SFX J 0 zings [^aeio][aeiou]z +SFX J 0 ings [^aeio]e[nrt] +SFX J 0 ings [aeio][aeiou][bcdfgkmnprstvz] +SFX J 0 ings [^aeiou][bcdfgklmnprstvz] +SFX J 0 ings [^ebcdfgklmnprstvz] +SFX k Y 8 +SFX k e ingly [^eioy]e +SFX k 0 ingly [eoy]e +SFX k ie yingly ie +SFX k 0 kingly [^aeio][aeiou]c +SFX k 0 lingly [^aeio][aeiou]l +SFX k 0 ingly [aeio][aeiou][cl] +SFX k 0 ingly [^aeiou][cl] +SFX k 0 ingly [^ecl] +SFX D Y 25 +SFX D 0 d [^e]e +SFX D e d ee +SFX D 0 bed [^aeio][aeiou]b +SFX D 0 ked [^aeio][aeiou]c +SFX D 0 ded [^aeio][aeiou]d +SFX D 0 fed [^aeio][aeiou]f +SFX D 0 ged [^aeio][aeiou]g +SFX D 0 ked [^aeio][aeiou]k +SFX D 0 led [^aeio][eiou]l +SFX D 0 ed [aeio][eiou]l +SFX D 0 led [^aeo]al +SFX D 0 ed [aeo]al +SFX D 0 med [^aeio][aeiou]m +SFX D 0 ned [^aeio][aeiou]n +SFX D 0 ped [^aeio][aeiou]p +SFX D 0 red [^aeio][aeiou]r +SFX D 0 sed [^aeio][aeiou]s +SFX D 0 ted [^aeio][aeiou]t +SFX D 0 ved [^aeio][aeiou]v +SFX D 0 zed [^aeio][aeiou]z +SFX D y ied [^aeiou]y +SFX D 0 ed [aeiou]y +SFX D 0 ed [aeio][aeiou][bcdfgkmnprstvz] +SFX D 0 ed [^aeiou][bcdfgklmnprstvz] +SFX D 0 ed [^ebcdfgklmnprstvyz] +SFX d Y 16 +SFX d 0 d e +SFX d 0 ked [^aeio][aeiou]c +SFX d 0 led [^aeio][aeiou]l +SFX d y ied [^aeiou]y +SFX d 0 ed [aeiou]y +SFX d 0 ed [aeio][aeiou][cl] +SFX d 0 ed [^aeiou][cl] +SFX d 0 ed [^ecly] +SFX d e ing [^eioy]e +SFX d 0 ing [eoy]e +SFX d ie ying ie +SFX d 0 king [^aeio][aeiou]c +SFX d 0 ling [^aeio][aeiou]l +SFX d 0 ing [aeio][aeiou][cl] +SFX d 0 ing [^aeiou][cl] +SFX d 0 ing [^ecl] +SFX h Y 22 +SFX h 0 dly e +SFX h 0 bedly [^aeio][aeiou]b +SFX h 0 kedly [^aeio][aeiou]c +SFX h 0 dedly [^aeio][aeiou]d +SFX h 0 fedly [^aeio][aeiou]f +SFX h 0 gedly [^aeio][aeiou]g +SFX h 0 kedly [^aeio][aeiou]k +SFX h 0 ledly [^aeio][aeiou]l +SFX h 0 medly [^aeio][aeiou]m +SFX h 0 nedly [^aeio][aiou]n +SFX h 0 pedly [^aeio][aeiou]p +SFX h 0 redly [^aeio][aiou]r +SFX h 0 sedly [^aeio][aeiou]s +SFX h 0 tedly [^aeio][aiou]t +SFX h 0 vedly [^aeio][aeiou]v +SFX h 0 zedly [^aeio][aeiou]z +SFX h 0 edly [^aeio]e[nrt] +SFX h y iedly [^aeiou]y +SFX h 0 edly [aeiou]y +SFX h 0 edly [aeio][aeiou][bcdfgklmnprstvz] +SFX h 0 edly [^aeiou][bcdfgklmnprstvz] +SFX h 0 edly [^ebcdfgklmnprstvyz] +SFX i Y 22 +SFX i 0 dness e +SFX i 0 bedness [^aeio][aeiou]b +SFX i 0 kedness [^aeio][aeiou]c +SFX i 0 dedness [^aeio][aeiou]d +SFX i 0 fedness [^aeio][aeiou]f +SFX i 0 gedness [^aeio][aeiou]g +SFX i 0 kedness [^aeio][aeiou]k +SFX i 0 ledness [^aeio][aeiou]l +SFX i 0 medness [^aeio][aeiou]m +SFX i 0 nedness [^aeio][aiou]n +SFX i 0 pedness [^aeio][aeiou]p +SFX i 0 redness [^aeio][aiou]r +SFX i 0 sedness [^aeio][aeiou]s +SFX i 0 tedness [^aeio][aiou]t +SFX i 0 vedness [^aeio][aeiou]v +SFX i 0 zedness [^aeio][aeiou]z +SFX i 0 edness [^aeio]e[nrt] +SFX i y iedness [^aeiou]y +SFX i 0 edness [aeiou]y +SFX i 0 edness [aeio][aeiou][bcdfgklmnprstvz] +SFX i 0 edness [^aeiou][bcdfgklmnprstvz] +SFX i 0 edness [^ebcdfgklmnprstvyz] +SFX T Y 42 +SFX T 0 r e +SFX T 0 st e +SFX T 0 ber [^aeio][aeiou]b +SFX T 0 best [^aeio][aeiou]b +SFX T 0 ker [^aeio][aeiou]c +SFX T 0 kest [^aeio][aeiou]c +SFX T 0 der [^aeio][aeiou]d +SFX T 0 dest [^aeio][aeiou]d +SFX T 0 fer [^aeio][aeiou]f +SFX T 0 fest [^aeio][aeiou]f +SFX T 0 ger [^aeio][aeiou]g +SFX T 0 gest [^aeio][aeiou]g +SFX T 0 ker [^aeio][aeiou]k +SFX T 0 kest [^aeio][aeiou]k +SFX T 0 ler [^aeio][aeiou]l +SFX T 0 lest [^aeio][aeiou]l +SFX T 0 mer [^aeio][aeiou]m +SFX T 0 mest [^aeio][aeiou]m +SFX T 0 ner [^aeio][aeiou]n +SFX T 0 nest [^aeio][aeiou]n +SFX T 0 per [^aeio][aeiou]p +SFX T 0 pest [^aeio][aeiou]p +SFX T 0 rer [^aeio][aeiou]r +SFX T 0 rest [^aeio][aeiou]r +SFX T 0 ser [^aeio][aeiou]s +SFX T 0 sest [^aeio][aeiou]s +SFX T 0 ter [^aeio][aeiou]t +SFX T 0 test [^aeio][aeiou]t +SFX T 0 ver [^aeio][aeiou]v +SFX T 0 vest [^aeio][aeiou]v +SFX T 0 zer [^aeio][aeiou]z +SFX T 0 zest [^aeio][aeiou]z +SFX T y ier [^aeiou]y +SFX T y iest [^aeiou]y +SFX T 0 er [aeiou]y +SFX T 0 est [aeiou]y +SFX T 0 er [aeio][aeiou][bcdfgklmnprstvz] +SFX T 0 er [^aeiou][bcdfgklmnprstvz] +SFX T 0 er [^ebcdfgklmnprstvyz] +SFX T 0 est [aeio][aeiou][bcdfgklmnprstvz] +SFX T 0 est [^aeiou][bcdfgklmnprstvz] +SFX T 0 est [^ebcdfgklmnprstvyz] +SFX R Y 72 +SFX R 0 r e +SFX R 0 rs e +SFX R 0 ber [^aeio][aeiou]b +SFX R 0 bers [^aeio][aeiou]b +SFX R 0 ker [^aeio][aeiou]c +SFX R 0 kers [^aeio][aeiou]c +SFX R 0 der [^aeio][aeiou]d +SFX R 0 ders [^aeio][aeiou]d +SFX R 0 fer [^aeio][aeiou]f +SFX R 0 fers [^aeio][aeiou]f +SFX R 0 ger [^aeio][aeiou]g +SFX R 0 gers [^aeio][aeiou]g +SFX R 0 ker [^aeio][aeiou]k +SFX R 0 kers [^aeio][aeiou]k +SFX R 0 ler [^aeio][eiou]l +SFX R 0 er [aeio][eiou]l +SFX R 0 ler [^aeo]al +SFX R 0 er [aeo]al +SFX R 0 lers [^aeio][eiou]l +SFX R 0 ers [aeio][eiou]l +SFX R 0 lers [^aeo]al +SFX R 0 ers [aeo]al +SFX R 0 mer [^aeio][aeiou]m +SFX R 0 mers [^aeio][aeiou]m +SFX R 0 ner [^aeio][aeiou]n +SFX R 0 ners [^aeio][aeiou]n +SFX R 0 per [^aeio][aeiou]p +SFX R 0 pers [^aeio][aeiou]p +SFX R 0 rer [^aeio][aeiou]r +SFX R 0 rers [^aeio][aeiou]r +SFX R 0 ser [^aeio][aeiou]s +SFX R 0 sers [^aeio][aeiou]s +SFX R 0 ter [^aeio][aeiou]t +SFX R 0 ters [^aeio][aeiou]t +SFX R 0 ver [^aeio][aeiou]v +SFX R 0 vers [^aeio][aeiou]v +SFX R 0 zer [^aeio][aeiou]z +SFX R 0 zers [^aeio][aeiou]z +SFX R y ier [^aeiou]y +SFX R y iers [^aeiou]y +SFX R 0 er [aeiou]y +SFX R 0 ers [aeiou]y +SFX R 0 er [aeio][aeiou][bcdfgkmnprstvz] +SFX R 0 ers [aeio][aeiou][bcdfgkmnprstvz] +SFX R 0 er [^aeiou][bcdfgklmnprstvz] +SFX R 0 ers [^aeiou][bcdfgklmnprstvz] +SFX R 0 er [^ebcdfgklmnprstvyz] +SFX R 0 ers [^ebcdfgklmnprstvyz] +SFX R 0 r's e +SFX R 0 ber's [^aeio][aeiou]b +SFX R 0 ker's [^aeio][aeiou]c +SFX R 0 der's [^aeio][aeiou]d +SFX R 0 fer's [^aeio][aeiou]f +SFX R 0 ger's [^aeio][aeiou]g +SFX R 0 ker's [^aeio][aeiou]k +SFX R 0 ler's [^aeio][eiou]l +SFX R 0 er's [aeio][eiou]l +SFX R 0 ler's [^aeo]al +SFX R 0 er's [aeo]al +SFX R 0 mer's [^aeio][aeiou]m +SFX R 0 ner's [^aeio][aeiou]n +SFX R 0 per's [^aeio][aeiou]p +SFX R 0 rer's [^aeio][aeiou]r +SFX R 0 ser's [^aeio][aeiou]s +SFX R 0 ter's [^aeio][aeiou]t +SFX R 0 ver's [^aeio][aeiou]v +SFX R 0 zer's [^aeio][aeiou]z +SFX R y ier's [^aeiou]y +SFX R 0 er's [aeiou]y +SFX R 0 er's [aeio][aeiou][bcdfgkmnprstvz] +SFX R 0 er's [^aeiou][bcdfgklmnprstvz] +SFX R 0 er's [^ebcdfgklmnprstvyz] +SFX r Y 24 +SFX r 0 r e +SFX r 0 ler [^aeio][aeiou]l +SFX r 0 ker [^aeio][aeiou]c +SFX r y ier [^aeiou]y +SFX r 0 er [aeiou]y +SFX r 0 er [aeio][aeiou][cl] +SFX r 0 er [^aeiou][cl] +SFX r 0 er [^ecly] +SFX r 0 rs e +SFX r 0 lers [^aeio][aeiou]l +SFX r 0 kers [^aeio][aeiou]c +SFX r y iers [^aeiou]y +SFX r 0 ers [aeiou]y +SFX r 0 ers [aeio][aeiou][cl] +SFX r 0 ers [^aeiou][cl] +SFX r 0 ers [^ecly] +SFX r 0 r's e +SFX r 0 ler's [^aeio][aeiou]l +SFX r 0 ker's [^aeio][aeiou]c +SFX r y ier's [^aeiou]y +SFX r 0 er's [aeiou]y +SFX r 0 er's [aeio][aeiou][cl] +SFX r 0 er's [^aeiou][cl] +SFX r 0 er's [^ecly] +SFX S Y 9 +SFX S y ies [^aeiou]y +SFX S 0 s [aeiou]y +SFX S 0 es [sxz] +SFX S 0 es [cs]h +SFX S 0 s [^cs]h +SFX S 0 s [ae]u +SFX S 0 x [ae]u +SFX S 0 s [^ae]u +SFX S 0 s [^hsuxyz] +SFX P Y 6 +SFX P y iness [^aeiou]y +SFX P 0 ness [aeiou]y +SFX P 0 ness [^y] +SFX P y iness's [^aeiou]y +SFX P 0 ness's [aeiou]y +SFX P 0 ness's [^y] +SFX m Y 20 +SFX m 0 sman [bdknmt] +SFX m 0 sman [aeiou][bdklmnt]e +SFX m 0 man [^aeiou][bdklmnt]e +SFX m 0 man [^bdklmnt]e +SFX m 0 man [^bdeknmt] +SFX m 0 smen [bdknmt] +SFX m 0 smen [aeiou][bdklmnt]e +SFX m 0 men [^aeiou][bdklmnt]e +SFX m 0 men [^bdklmnt]e +SFX m 0 men [^bdeknmt] +SFX m 0 sman's [bdknmt] +SFX m 0 sman's [aeiou][bdklmnt]e +SFX m 0 man's [^aeiou][bdklmnt]e +SFX m 0 man's [^bdklmnt]e +SFX m 0 man's [^bdeknmt] +SFX m 0 smen's [bdknmt] +SFX m 0 smen's [aeiou][bdklmnt]e +SFX m 0 men's [^aeiou][bdklmnt]e +SFX m 0 men's [^bdklmnt]e +SFX m 0 men's [^bdeknmt] +SFX 5 Y 15 +SFX 5 0 swoman [bdknmt] +SFX 5 0 swoman [aeiou][bdklmnt]e +SFX 5 0 woman [^aeiou][bdklmnt]e +SFX 5 0 woman [^bdklmnt]e +SFX 5 0 woman [^bdeknmt] +SFX 5 0 swomen [bdknmt] +SFX 5 0 swomen [aeiou][bdklmnt]e +SFX 5 0 women [^aeiou][bdklmnt]e +SFX 5 0 women [^bdklmnt]e +SFX 5 0 women [^bdeknmt] +SFX 5 0 swoman's [bdknmt] +SFX 5 0 swoman's [aeiou][bdklmnt]e +SFX 5 0 woman's [^aeiou][bdklmnt]e +SFX 5 0 woman's [^bdklmnt]e +SFX 5 0 woman's [^bdeknmt] +SFX 6 Y 3 +SFX 6 y iful [^aeiou]y +SFX 6 0 ful [aeiou]y +SFX 6 0 ful [^y] +SFX j Y 3 +SFX j y ifully [^aeiou]y +SFX j 0 fully [aeiou]y +SFX j 0 fully [^y] +SFX p Y 5 +SFX p y iless [^aeiou]y +SFX p 0 less [aeiou]y +SFX p 0 ess ll +SFX p 0 less [^l]l +SFX p 0 less [^ly] +SFX Q Y 44 +SFX Q 0 tise a +SFX Q e ise [^l]e +SFX Q le ilise [^aeiou]le +SFX Q e ise [aeiou]le +SFX Q um ise um +SFX Q 0 ise [^u]m +SFX Q s se is +SFX Q 0 ise [^i]s +SFX Q y ise [^aeiou]y +SFX Q 0 ise [aeiou]y +SFX Q 0 ise [^aemsy] +SFX Q 0 tises a +SFX Q e ises [^l]e +SFX Q le ilises [^aeiou]le +SFX Q e ises [aeiou]le +SFX Q um ises um +SFX Q 0 ises [^u]m +SFX Q s ses is +SFX Q 0 ises [^i]s +SFX Q y ises [^aeiou]y +SFX Q 0 ises [aeiou]y +SFX Q 0 ises [^aemsy] +SFX Q 0 tised a +SFX Q e ised [^l]e +SFX Q le ilised [^aeiou]le +SFX Q e ised [aeiou]le +SFX Q um ised um +SFX Q 0 ised [^u]m +SFX Q s sed is +SFX Q 0 ised [^i]s +SFX Q y ised [^aeiou]y +SFX Q 0 ised [aeiou]y +SFX Q 0 ised [^aemsy] +SFX Q 0 tising a +SFX Q e ising [^l]e +SFX Q le ilising [^aeiou]le +SFX Q e ising [aeiou]le +SFX Q um ising um +SFX Q 0 ising [^u]m +SFX Q s sing is +SFX Q 0 ising [^i]s +SFX Q y ising [^aeiou]y +SFX Q 0 ising [aeiou]y +SFX Q 0 ising [^aemsy] +SFX 8 Y 44 +SFX 8 0 tize a +SFX 8 e ize [^l]e +SFX 8 le ilize [^aeiou]le +SFX 8 e ize [aeiou]le +SFX 8 um ize um +SFX 8 0 ize [^u]m +SFX 8 s ze is +SFX 8 0 ize [^i]s +SFX 8 y ize [^aeiou]y +SFX 8 0 ize [aeiou]y +SFX 8 0 ize [^aemsy] +SFX 8 0 tizes a +SFX 8 e izes [^l]e +SFX 8 le ilizes [^aeiou]le +SFX 8 e izes [aeiou]le +SFX 8 um izes um +SFX 8 0 izes [^u]m +SFX 8 s zes is +SFX 8 0 izes [^i]s +SFX 8 y izes [^aeiou]y +SFX 8 0 izes [aeiou]y +SFX 8 0 izes [^aemsy] +SFX 8 0 tized a +SFX 8 e ized [^l]e +SFX 8 le ilized [^aeiou]le +SFX 8 e ized [aeiou]le +SFX 8 um ized um +SFX 8 0 ized [^u]m +SFX 8 s zed is +SFX 8 0 ized [^i]s +SFX 8 y ized [^aeiou]y +SFX 8 0 ized [aeiou]y +SFX 8 0 ized [^aemsy] +SFX 8 0 tizing a +SFX 8 e izing [^l]e +SFX 8 le ilizing [^aeiou]le +SFX 8 e izing [aeiou]le +SFX 8 um izing um +SFX 8 0 izing [^u]m +SFX 8 s zing is +SFX 8 0 izing [^i]s +SFX 8 y izing [^aeiou]y +SFX 8 0 izing [aeiou]y +SFX 8 0 izing [^aemsy] +SFX q Y 22 +SFX q 0 tisation a +SFX q e isation [^l]e +SFX q le ilisation [^aeiou]le +SFX q e isation [aeiou]le +SFX q um isation um +SFX q 0 isation [^u]m +SFX q s sation is +SFX q 0 isation [^i]s +SFX q y isation [^aeiou]y +SFX q 0 isation [aeiou]y +SFX q 0 isation [^aemsy] +SFX q 0 tisations a +SFX q e isations [^l]e +SFX q le ilisations [^aeiou]le +SFX q e isations [aeiou]le +SFX q um isations um +SFX q 0 isations [^u]m +SFX q s sations is +SFX q 0 isations [^i]s +SFX q y isations [^aeiou]y +SFX q 0 isations [aeiou]y +SFX q 0 isations [^aemsy] +SFX - Y 22 +SFX - 0 tization a +SFX - e ization [^l]e +SFX - le ilization [^aeiou]le +SFX - e ization [aeiou]le +SFX - um ization um +SFX - 0 ization [^u]m +SFX - s zation is +SFX - 0 ization [^i]s +SFX - y ization [^aeiou]y +SFX - 0 ization [aeiou]y +SFX - 0 ization [^aemsy] +SFX - 0 tizations a +SFX - e izations [^l]e +SFX - le ilizations [^aeiou]le +SFX - e izations [aeiou]le +SFX - um izations um +SFX - 0 izations [^u]m +SFX - s zations is +SFX - 0 izations [^i]s +SFX - y izations [^aeiou]y +SFX - 0 izations [aeiou]y +SFX - 0 izations [^aemsy] +SFX s Y 33 +SFX s 0 tiser a +SFX s e iser [^l]e +SFX s le iliser [^aeiou]le +SFX s e iser [aeiou]le +SFX s um iser um +SFX s 0 iser [^u]m +SFX s s ser is +SFX s 0 iser [^i]s +SFX s y iser [^aeiou]y +SFX s 0 iser [aeiou]y +SFX s 0 iser [^aemsy] +SFX s 0 tisers a +SFX s e isers [^l]e +SFX s le ilisers [^aeiou]le +SFX s e isers [aeiou]le +SFX s um isers um +SFX s 0 isers [^u]m +SFX s s sers is +SFX s 0 isers [^i]s +SFX s y isers [^aeiou]y +SFX s 0 isers [aeiou]y +SFX s 0 isers [^aemsy] +SFX s 0 tiser's a +SFX s e iser's [^l]e +SFX s le iliser's [^aeiou]le +SFX s e iser's [aeiou]le +SFX s um iser's um +SFX s 0 iser's [^u]m +SFX s s ser's is +SFX s 0 iser's [^i]s +SFX s y iser's [^aeiou]y +SFX s 0 iser's [aeiou]y +SFX s 0 iser's [^aemsy] +SFX 9 Y 33 +SFX 9 0 tizer a +SFX 9 e izer [^l]e +SFX 9 le ilizer [^aeiou]le +SFX 9 e izer [aeiou]le +SFX 9 um izer um +SFX 9 0 izer [^u]m +SFX 9 s zer is +SFX 9 0 izer [^i]s +SFX 9 y izer [^aeiou]y +SFX 9 0 izer [aeiou]y +SFX 9 0 izer [^aemsy] +SFX 9 0 tizers a +SFX 9 e izers [^l]e +SFX 9 le ilizers [^aeiou]le +SFX 9 e izers [aeiou]le +SFX 9 um izers um +SFX 9 0 izers [^u]m +SFX 9 s zers is +SFX 9 0 izers [^i]s +SFX 9 y izers [^aeiou]y +SFX 9 0 izers [aeiou]y +SFX 9 0 izers [^aemsy] +SFX 9 0 tizer's a +SFX 9 e izer's [^l]e +SFX 9 le ilizer's [^aeiou]le +SFX 9 e izer's [aeiou]le +SFX 9 um izer's um +SFX 9 0 izer's [^u]m +SFX 9 s zer's is +SFX 9 0 izer's [^i]s +SFX 9 y izer's [^aeiou]y +SFX 9 0 izer's [aeiou]y +SFX 9 0 izer's [^aemsy] +SFX t Y 22 +SFX t 0 tisable a +SFX t e isable [^l]e +SFX t le ilisable [^aeiou]le +SFX t e isable [aeiou]le +SFX t um isable um +SFX t 0 isable [^u]m +SFX t s sable is +SFX t 0 isable [^i]s +SFX t y isable [^aeiou]y +SFX t 0 isable [aeiou]y +SFX t 0 isable [^aemsy] +SFX t 0 tisability a +SFX t e isability [^l]e +SFX t le ilisability [^aeiou]le +SFX t e isability [aeiou]le +SFX t um isability um +SFX t 0 isability [^u]m +SFX t s sability is +SFX t 0 isability [^i]s +SFX t y isability [^aeiou]y +SFX t 0 isability [aeiou]y +SFX t 0 isability [^aemsy] +SFX + Y 22 +SFX + 0 tizable a +SFX + e izable [^l]e +SFX + le ilizable [^aeiou]le +SFX + e izable [aeiou]le +SFX + um izable um +SFX + 0 izable [^u]m +SFX + s zable is +SFX + 0 izable [^i]s +SFX + y izable [^aeiou]y +SFX + 0 izable [aeiou]y +SFX + 0 izable [^aemsy] +SFX + 0 tizability a +SFX + e izability [^l]e +SFX + le ilizability [^aeiou]le +SFX + e izability [aeiou]le +SFX + um izability um +SFX + 0 izability [^u]m +SFX + s zability is +SFX + 0 izability [^i]s +SFX + y izability [^aeiou]y +SFX + 0 izability [aeiou]y +SFX + 0 izability [^aemsy] +SFX M Y 1 +SFX M 0 's . +SFX B Y 48 +SFX B e able [^acegilotu]e +SFX B 0 able [acegilou]e +SFX B te ble ate +SFX B e able [^a]te +SFX B 0 bable [^aeio][aeiou]b +SFX B 0 kable [^aeio][aeiou]c +SFX B 0 dable [^aeio][aeiou]d +SFX B 0 fable [^aeio][aeiou]f +SFX B 0 gable [^aeio][aeiou]g +SFX B 0 kable [^aeio][aeiou]k +SFX B 0 lable [^aeio][aeiou]l +SFX B 0 mable [^aeio][aeiou]m +SFX B 0 nable [^aeio][aeiou]n +SFX B 0 pable [^aeio][aeiou]p +SFX B 0 rable [^aeio][aeiou]r +SFX B 0 sable [^aeio][aeiou]s +SFX B 0 table [^aeio][aeiou]t +SFX B 0 vable [^aeio][aeiou]v +SFX B 0 zable [^aeio][aeiou]z +SFX B 0 able [aeio][aeiou][bcdfgklmnprstvz] +SFX B 0 able [^aeiou][bcdfgklmnprstvz] +SFX B y iable [^aeiou]y +SFX B 0 able [aeiou]y +SFX B 0 able [^ebcdfgklmnprstvzy] +SFX B e ability [^acegilotu]e +SFX B 0 ability [acegilou]e +SFX B te bility ate +SFX B e ability [^a]te +SFX B 0 bability [^aeio][aeiou]b +SFX B 0 kability [^aeio][aeiou]c +SFX B 0 dability [^aeio][aeiou]d +SFX B 0 fability [^aeio][aeiou]f +SFX B 0 gability [^aeio][aeiou]g +SFX B 0 kability [^aeio][aeiou]k +SFX B 0 lability [^aeio][aeiou]l +SFX B 0 mability [^aeio][aeiou]m +SFX B 0 nability [^aeio][aeiou]n +SFX B 0 pability [^aeio][aeiou]p +SFX B 0 rability [^aeio][aeiou]r +SFX B 0 sability [^aeio][aeiou]s +SFX B 0 tability [^aeio][aeiou]t +SFX B 0 vability [^aeio][aeiou]v +SFX B 0 zability [^aeio][aeiou]z +SFX B 0 ability [aeio][aeiou][bcdfgklmnprstvz] +SFX B 0 ability [^aeiou][bcdfgklmnprstvz] +SFX B y iability [^aeiou]y +SFX B 0 ability [aeiou]y +SFX B 0 ability [^ebcdfgklmnprstvzy] +SFX 7 Y 9 +SFX 7 e able [acegilou]e +SFX 7 0 able [^acegilou]e +SFX 7 0 kable [^aeio][aeiou]c +SFX 7 0 lable [^aeio][aeiou]l +SFX 7 0 able [aeio][aeiou][cl] +SFX 7 0 able [^aeiou][cl] +SFX 7 y iable [^aeiou]y +SFX 7 0 able [aeiou]y +SFX 7 0 able [^cely] +SFX g Y 9 +SFX g e ability [^acegilou]e +SFX g 0 ability [acegilou]e +SFX g 0 kability [^aeio][aeiou]c +SFX g 0 lability [^aeio][aeiou]l +SFX g 0 ability [aeio][aeiou][cl] +SFX g 0 ability [^aeiou][cl] +SFX g y iability [^aeiou]y +SFX g 0 ability [aeiou]y +SFX g 0 ability [^cely] +SFX l Y 9 +SFX l e ably [^acegilou]e +SFX l 0 ably [acegilou]e +SFX l 0 kably [^aeio][aeiou]c +SFX l 0 lably [^aeio][aeiou]l +SFX l 0 ably [aeio][aeiou][cl] +SFX l 0 ably [^aeiou][cl] +SFX l y iably [^aeiou]y +SFX l 0 ably [aeiou]y +SFX l 0 ably [^cely] +SFX b Y 3 +SFX b e ible [^aeiou]e +SFX b 0 ible [aeiou]e +SFX b 0 ible [^e] +SFX L Y 12 +SFX L 0 ament m +SFX L y iment [^aeiou]y +SFX L 0 ment [aeiou]y +SFX L 0 ment [^my] +SFX L 0 aments m +SFX L y iments [^aeiou]y +SFX L 0 ments [aeiou]y +SFX L 0 ments [^my] +SFX L 0 ament's m +SFX L y iment's [^aeiou]y +SFX L 0 ment's [aeiou]y +SFX L 0 ment's [^my] +SFX Z Y 22 +SFX Z e y [^aeiouy]e +SFX Z 0 y [aeiouy]e +SFX Z 0 ey [aiouy] +SFX Z 0 by [^aeio][aeiou]b +SFX Z 0 ky [^aeio][aeiou]c +SFX Z 0 dy [^aeio][aeiou]d +SFX Z 0 fy [^aeio][aeiou]f +SFX Z 0 gy [^aeio][aeiou]g +SFX Z 0 ky [^aeio][aeiou]k +SFX Z 0 ly [^aeio][aeiou]l +SFX Z 0 my [^aeio][aeiou]m +SFX Z 0 ny [^aeio][aiou]n +SFX Z 0 py [^aeio][aeiou]p +SFX Z 0 ry [^aeio][aiou]r +SFX Z 0 sy [^aeio][aeiou]s +SFX Z 0 ty [^aeio][aiou]t +SFX Z 0 vy [^aeio][aeiou]v +SFX Z 0 zy [^aeio][aeiou]z +SFX Z 0 y [^aeio]e[nrt] +SFX Z 0 y [aeio][aeiou][bcdfgklmnprstvz] +SFX Z 0 y [^aeiou][bcdfgklmnprstvz] +SFX Z 0 y [^aebcdfgiklmnoprstuvyz] +SFX 2 Y 21 +SFX 2 e iness [^aeiouy]e +SFX 2 0 iness [aeiouy]e +SFX 2 0 biness [^aeio][aeiou]b +SFX 2 0 kiness [^aeio][aeiou]c +SFX 2 0 diness [^aeio][aeiou]d +SFX 2 0 finess [^aeio][aeiou]f +SFX 2 0 giness [^aeio][aeiou]g +SFX 2 0 kiness [^aeio][aeiou]k +SFX 2 0 liness [^aeio][aeiou]l +SFX 2 0 miness [^aeio][aeiou]m +SFX 2 0 niness [^aeio][aiou]n +SFX 2 0 piness [^aeio][aeiou]p +SFX 2 0 riness [^aeio][aiou]r +SFX 2 0 siness [^aeio][aeiou]s +SFX 2 0 tiness [^aeio][aiou]t +SFX 2 0 viness [^aeio][aeiou]v +SFX 2 0 ziness [^aeio][aeiou]z +SFX 2 0 iness [^aeio]e[nrt] +SFX 2 0 iness [aeio][aeiou][bcdfgklmnprstvz] +SFX 2 0 iness [^aeiou][bcdfgklmnprstvz] +SFX 2 0 iness [^ebcdfgklmnprstvz] +SFX z Y 24 +SFX z e ily [^aeiouy]e +SFX z 0 ily [aeiouy]e +SFX z 0 ily [aiou]y +SFX z ey ily ey +SFX z y ily [^aeiou]y +SFX z 0 bily [^aeio][aeiou]b +SFX z 0 kily [^aeio][aeiou]c +SFX z 0 dily [^aeio][aeiou]d +SFX z 0 fily [^aeio][aeiou]f +SFX z 0 gily [^aeio][aeiou]g +SFX z 0 kily [^aeio][aeiou]k +SFX z 0 lily [^aeio][aeiou]l +SFX z 0 mily [^aeio][aeiou]m +SFX z 0 nily [^aeio][aiou]n +SFX z 0 pily [^aeio][aeiou]p +SFX z 0 rily [^aeio][aiou]r +SFX z 0 sily [^aeio][aeiou]s +SFX z 0 tily [^aeio][aiou]t +SFX z 0 vily [^aeio][aeiou]v +SFX z 0 zily [^aeio][aeiou]z +SFX z 0 ily [^aeio]e[nrt] +SFX z 0 ily [aeio][aeiou][bcdfgklmnprstvyz] +SFX z 0 ily [^aeiou][bcdfgklmnprstvyz] +SFX z 0 ily [^ebcdfgklmnprstvyz] +SFX y Y 15 +SFX y e ory te +SFX y e atory [mr]e +SFX y e ary se +SFX y 0 ry [^mrst]e +SFX y 0 ory [^aeous]t +SFX y 0 ry [aeous]t +SFX y 0 ery h +SFX y 0 atory [^i]m +SFX y im matory im +SFX y 0 ory s +SFX y 0 ary ion +SFX y 0 ry [^i]on +SFX y 0 nery [aiu]n +SFX y 0 ry [^aiou]n +SFX y 0 ry [^ehmstn] +SFX O Y 12 +SFX O 0 l a +SFX O e al [^bcgv]e +SFX O e ial [bcgv]e +SFX O 0 ial [bcrx] +SFX O um al um +SFX O 0 al [^u]m +SFX O y al ty +SFX O y ial [^t]y +SFX O 0 ual [px]t +SFX O 0 tal [iu]t +SFX O 0 al [^ipux]t +SFX O 0 al [^aebcrtxmy] +SFX o Y 12 +SFX o 0 lly a +SFX o e ally [^bcgv]e +SFX o e ially [bcgv]e +SFX o 0 ially [bcrx] +SFX o um ally um +SFX o 0 ally [^u]m +SFX o y ally ty +SFX o y ially [^t]y +SFX o 0 ually [px]t +SFX o 0 tally [iu]t +SFX o 0 ally [^ipux]t +SFX o 0 ally [^aebcrtxmy] +SFX W Y 21 +SFX W ce tific ce +SFX W e atic me +SFX W se tic se +SFX W le ic ble +SFX W e ic [^b]le +SFX W e ic [^clms]e +SFX W 0 lic [ay]l +SFX W 0 ic [^ay]l +SFX W us ic us +SFX W 0 tic [^u]s +SFX W er ric er +SFX W 0 ic [^e]r +SFX W 0 atic [aeiou]m +SFX W 0 ic [^aeiou]m +SFX W 0 tic ma +SFX W a ic [^m]a +SFX W y etic thy +SFX W y ic [^t]hy +SFX W y tic sy +SFX W y ic [^hs]y +SFX W 0 ic [^aelmrsy] +SFX w Y 9 +SFX w e ical e +SFX w er rical er +SFX w 0 ical [^e]r +SFX w 0 atical [aeiou]m +SFX w 0 ical [^aeiou]m +SFX w 0 tical ma +SFX w a ical [^m]a +SFX w y ical y +SFX w 0 ical [^aemry] +SFX 1 Y 9 +SFX 1 e ically e +SFX 1 er rically er +SFX 1 0 ically [^e]r +SFX 1 0 atically [aeiou]m +SFX 1 0 ically [^aeiou]m +SFX 1 0 tically ma +SFX 1 a ically [^m]a +SFX 1 y ically y +SFX 1 0 ically [^aemry] +SFX 3 Y 21 +SFX 3 e ist [^aceiou]e +SFX 3 ce tist ce +SFX 3 0 ist [aeiou]e +SFX 3 y ist [^aeioubp]y +SFX 3 0 ist [aeioubp]y +SFX 3 o ist o +SFX 3 0 ists [^eoy] +SFX 3 e ists [^aceiou]e +SFX 3 ce tists ce +SFX 3 0 ists [aeiou]e +SFX 3 y ists [^aeioubp]y +SFX 3 0 ists [aeioubp]y +SFX 3 o ists o +SFX 3 0 ists [^eoy] +SFX 3 e ist's [^aceiou]e +SFX 3 ce tist's ce +SFX 3 0 ist's [aeiou]e +SFX 3 y ist's [^aeioubp]y +SFX 3 0 ist's [aeioubp]y +SFX 3 o ist's o +SFX 3 0 ist's [^eoy] diff --git a/Language - English/en_GB.dic b/Language - English/en_GB.dic new file mode 100644 index 0000000..d002789 --- /dev/null +++ b/Language - English/en_GB.dic @@ -0,0 +1,46281 @@ +46280 +abaft +abbreviation/M +abdicate/DNGSn +Abelard/M +abider/M +Abidjan +ablaze +abloom +aboveground +abrader/M +Abram/M +abreaction/MS +abrogator/MS +abscond/DRSG +absinthe/MS +absoluteness/S +absorbency/SM +abstract/ShTVDPiGY +absurdness/S +Abuja/M +Abyssinia/M +Acadia +accede/SDG +accept/BDSRVGkhl +acceptable/P +accepted/U +accommodate/DGnkSNVu +accommodating/U +accompanier/M +accomplish/RLSGD +accordion/MS3 +accost/DSG +accountant/SM +accrual/MS +accurately/I +accusal/M +achene/SM +achievable/U +achieves/c +acidification/M +acidulous +acoustical +acquaintance/SM +acquisition/MA +acridity/SM +acrobatics/M +actinic +actinide/MS +actively/IA +activity/SMI +Acton/M +actual/q8YSQ- +adagio/S +adaptation/M +add/RDGS7 +additivity +Adele/M +adhere/DGRS +adherence/MS +adjudicator/MS +adjunct/SYMV +adjuration/M +adjust/RLDlGS7V +Adler/M +administratrix/M +admiralty/SM +admiration/M +adobe/NvVSMX +adopted/AU +adoption/M +adorned/U +adrenal/Y +adrift +adumbrate/VSGnvDN +Adventist's +adverse/yTDYGP +advertise/LJ +adze/DMSG +Aegean/M +Aeneas +aerialist +aerodrome/SM +aerodynamic/SY +aero-engine/MS +affectedly/U +affective/M +affinity/MS +affirmed/A +affix/DSG +affray/MSDG +affricative/M +aforesaid +after/S +age's/e +agility/MS +agitator/MS +agnostic/MS +agnosticism/SM +agreeableness/ES +agriculturalist +Agrippa/M +AI +Aiken/M +ain't +airflow/MS +airsick/P +airtime +airway/MS +ajar +alabaster/SM +Alamo/S +alanine/M +Alaric/M +alarm/3DGkS +albacore/SM +albedo/M +albeit +album/MS +Aldridge/M +alewife/M +Alexia/M +Alexis +Alfonso/M +Alger/M +Algiers +alienation/M +alinement's +alkyd/S +Allah/M +all-day +allegation/M +allergen/MSW +alleyway/MS +allies/M +allocator/KSC +allots/A +allowable/P +all-star +Allstate +alms/m +alnico +aloft +along +alpine/S +al-Qa'ida/M +Alsace/M +alternation/M +Alton/M +alumni +alundum +alveolus/M +AMA +amanuenses +Amazonian +ambergris/MS +Amdahl/M +Amherst/M +amide/MS +amir's +Amish/M +amoral +amorphous/PY +amortise/nSGD +amortize/nNSGD +amour/MS +amphibian/MS +amphibology/M +ample/PT +amplification/M +anarchy/3Ww1SM +anastigmatic +Andaman/M +aneroid +Anglican/MS +Anglicanism/M +Anglicise/nSGD +Anglicize/nNSGD +Anglophobia/M +angularity/MS +anhydrous/Y +animate/DnASNG +animated/Y +anisette/SM +annalen +annihilator/SM +anorak/SM +anorexia/MS +antediluvian/S +anthem/MdS +anthropometric/S +anthropometry/WM +antibody/MS +anticompetitive +antidemocratic +antiformant +antigenicity/SM +Antigua/M +Antioch/M +antipasti +antipodal/S +antiquarian/MS +antiquarianism/MS +antisepses +antisocial/Y +antitrust/M +antral +anyway +apace +aphasic/S +aphid/MS +apiece +apocrypha/oM +apogee/SM +Apollo/M +apology/SQ8s9M3 +apostle/MS +apotheoses +Appian +appliqud +apply/vnNRGDSV +appraisal/AMS +appraise/AGSD +appreciate/vyGVDNnuS +apprehended/a +approbation/MES +Apr +apsis/M +aptness/IS +aquaria +aquiculture's +aquiline +Arabia/M +Arafat/M +arbutus/MS +arcane/Y +arcaneness +arch/yTDRYSPGM +archaist/MS +archery/M +Archimedes +Argentine/SM +argon/M +arguable/YIU +argumentativeness/S +ark/MS +armour-plate/D +armpit/MS +Arne/M +around +array/EGMSD +arrhythmia/SM +arrowhead/SM +arsenate/M +arsine/MS +arsonist +art/6MjZ32pS +arteriolar +artesian +Artie/M +artifice/oMRS +artillery/3mSM +artist/W1y +asbestos/SM +ascertain/L7SDG +ASCII +ascription/M +Asiatic/MS +asp/MWS +aspect/MS +asphyxiate/SDG +asplenium +assail/7DSG +assassination/M +assembles/A +assembling/A +assignee/MS +assignor/SM +associate/EDSGnN +associativity/S +assurance/SAM +Assyria/M +Assyriology +Astana/M +asterisk/SDGM +astigmatism/MS +astride +astrophysicist/SM +at/F +atelier/SM +Atlanta/MW +Atman/M +atoll/MS +atomic/Y +atonal +atonality/SM +atrial +attaches/A +attend/SRGD +attendance/MS +attentional/Y +attentive/PIY +attenuate/GnSDN +attic/MS +attorney/MS +attractive/UY +attractiveness/SM +attribute/xGVvDS +attrition/SM +aubergine/MS +Auckland/M +audaciousness/S +audibly/I +audio/M +audiometry/M +audited/U +auditorium/SM +Aug +augment/NnDRGS +augmentation/M +augury/SM +Augusta/M +Augusts +Australasia/M +Australia/M +authorised/AU +authoritative/YP +autocrat/MWS1 +autodialler +automata +automotive +autoregressive +avalanche/GSMD +avaunt/S +avitaminoses +aweigh +awes/c +awfulness/S +axe/DmMGS +axial/FY +Ayr/M +babble/RGDS +babysit/RSG +bacchanal/SM +Bacchanalian/S +backfield/MS +backfill/SGD +backlasher +backscatter/dMS +backslapper/SM +backstop/MSGD +backward/PSY +bade +bail/7MDGS +bailey/S +bailiff/MS +balanced/cAeU +balboa/MS +Balearic/M +ballistics/M +balloon/3RSMDG +balsa/SM +balsam/dMS +banality/SM +Banbridge/M +bandeaux +banded/E +Bangkok/M +banish/GSLD +bannister/SM +banquette/MS +bans/U +banshee/SM +banter/kdS +banterer/M +baptism/oSM +bar/CDESUG +barbarous/YP +barbell/MS +bareback +bargepole/M +barley/MS +Barrett/M +Barrow-in-Furness +barycentre/MW +baryon/MS +baseball/SM +baseband +Basel/M +bases/C +bash/Sj6DG +basilar +basin/6MS +basinful/S +basing/C +Basingstoke/M +basswood/SM +baste/nSN +batcher +bathtub/SM +bathwater +Bator/M +battleship/SM +baulky/TP +bayonet/dMS +bayou/SM +Bea/M +beady/T +beagle/DGSM +bearish/YP +Beaujolais +beautify/WNRSDnG +because +bedazzle/DLSG +bedbug/SM +bedrock/SM +bedspread/MS +Bedworth/M +Beethoven/M +befuddle/LSDG +begonia/SM +begrime/SDG +begrudge/GDSk +Beijing/M +being/SM +belabour/DGSM +belate/Dih +belief's/U +believing/U +belittle/GLDS +bellboy/SM +bell-hop's +bell-ringer/S +bellwether/MS +Belmont/M +belted/U +Belton/M +beltway/SM +benedictory +benefactor/SM +benignant +beribboned +Berman/M +Bernard/M +Bernhard/M +berserk/S +Berwick/M +beryl/MS +beryllium/M +bespatter/dS +bespeak/GS +bestial/Y +bestride/SG +bet/MRGSD +Beth/M +Bethany/M +Betsey/M +between/PS +bewigged +bicarbonate/MS +bid/RMZdGJS +bidet/SM +bifocal/S +biggish +bigot/ydSM +bilge/DGMS +bilingualism/MS +billboard/SGDM +Billie/M +biophysics/M +birdhouse/SM +birdieing +birdseed/SM +Birgit/M +Biro/M +Biscay/M +biserial +Bishkek/M +bishop/dSM +Bismarck/M +bitch/GZDSz2M +BITNET +bitten +biweekly/S +biyearly +blabber/d +black-hearted +blackjack/MSDG +blameworthiness/S +blank/PDGSTY +blasting/M +blastoff/SM +blatant/Y +bleater/M +blend/RGSD +blessing/M +blew +Bligh/M +blip/DGMS +blithe/YTP +blitz/GSDM +blitzkrieg/SM +blockbusting/M +Bloemfontein/M +blood-letting/SM +bloodstain/DMS +bloodstream/SM +blossomy +blow-up/SM +bluffness/S +boar/MS +board/RMGDSJ +boastfulness/S +bobtail/SMGD +bodkin/MS +body-colour +body-piercing +bog/GDMZS +bohemian/S +bola/SM +bolero/MS +bolter/M +Boltzmann/M +bondage/MS +Boniface/M +boniness/S +bonsai/M +booking/M +bookshop/MS +booth/MS +Bootle/M +bootlegging/M +boozy/T +bop/RGDS +Borealis +Boris/M +born-again +borosilicate/M +Bose/M +Botham/M +bottommost +botulinus/M +boudoir/MS +boutonnire/SM +boxy/T +boy/MS +brachia +bract/MS +Braille/M +brain-dead +brambling/M +Brannon/M +brassiness/S +bravado +brave/DYyTGPS +bravery/SM +bravest/M +breakage/MS +breakthrough/MS +break-up/S +breakwater/SM +breastbone/SM +brecciated +breech-loaded +Breton/M +bride/SM +Bridget/M +Bridgnorth/M +bridle/MGSD +brigade/GDSM +brigandage/SM +brigantine/SM +Brighton/M +brinkmanship/MS +broadcast/SARG +broadloom/MS +broadness/S +broil/GRSD +broker/d +brokerage/MS +bromide/SMW +bronchus/M +brood/GM2ZRSDk +brougham/SM +brownish +brows/SDRBG +bruit/S +brusqueness/S +Bryn/M +buccaneer/GDSM +bucker/M +buckminsterfullerene +bucksaw/MS +bucolic/YS +buffer/rd +bufflehead/M +buffoonish +build/RGJS +Bulgarian/MS +bulgy/T +bulker +bumpkin/MS +bunion/SM +buoyant/Y +burdened/Uc +burdock/MS +burg/RSM +burgle/SDG +burial/SAM +Burlington/M +burned/U +burnish/RSGD +burntness +burp/MDSG +bury/ADSG +bus/MAS +Busch/M +bushiness/S +bushland +bushwhacking/M +business/m5S +businesslike +businessperson/S +busywork/SM +buttonholer/M +Buxtehude/M +buzzword/SM +by +by-election/S +Byrne/M +c/nN +cab/GMDXVSN +cablegram/SM +cactus/MS +caecum/M +Caesar +cagiest +cahoot/MS +Caisos +cajole/RLyDSG +calcite/SM +CALCOMP +Calder +caldera/SM +caldron's +calender/dMS +calibrate/SAGDN +calibrater's +calico/M +calla/SM +callback/S +calliper/SM +callowness/S +calls/aA +calorie/SM +calorific +calyces's +Camberley/M +Camden/M +camelhair's +Campbellsport +camp-site/SM +campus/MS +Canaan/M +caning/M +canniness/S +cannon/dSM +canonical/Q8q- +can't +canted/AI +canvas/MRGDS +capon/SM +cappuccino/SM +caps/8 +capsular +captaincy/MS +captioner +captivate/SDG +carboy/MS +carbuncle/DSM +card-carrying +cardioid/M +caribou/M +Carmen/M +carnal/Y +carnival/SM +carol-singing +Carpathian/S +carpentry/SM +carrageen/M +carried/a +carrot/MS +carsick/P +Carson +cart/RMD6GS +cartload/MS +caryatid/SM +Carys +cased/U +Casey/M +Cassels +caster/nN +casts/aAe +casualness/S +cat/M2ZzDGS +catalepsy/MS +catch-all/SM +catchphrase/S +catechism/MS +catharsis/M +cathedral/SM +Catherine +Cathy +Caucasoid +cavil/SDRGJ +cc +celandine/SM +celebratedness/M +cellar/dMS +celluloid/MS +centaur/MS +centime/SM +centurion/SM +Cephalochordata +Cephalopoda +ceramic/3MS +cerebellar +cerebra/no +cerise/MS +cerium/M +cermet/SM +certification/MCA +certiorari/M +cession/FMAK +CFO +cha/Wy +chalkboard/MS +chammy's +Chancellorship/S +chances/a +chanciness/S +chandelier/MS +chanson/SM +chapbook/MS +Chapman +character/sQ98t+dpq6-MS +charitable/UY +charlatanism/SM +chasm/SM +chtelaine/MS +chauffeur/DSMG +checkmate/MDSG +checkout/S +checksum/GMSD +cheek/2GMzDZS +cheekiness/S +cheerleader/SM +chelate/DnMNG +chemosynthesis +chemurgy/SM +cheque/RSM +chert/SM +cherub/SMW +Cheryl/M +chevalier/MS +chew/GRZ2S7D +chickenfeed +chickenpox/SM +child/pM +childlike/P +China/Mm +chine/SM +chip/GMJZDS +choir/GSDM +cholera/MSW +chomp/SDG +Chopin +choppiness/S +choppy/TP +chorale/MS +choreography/MS +chose +Christ/M +chromatics/M +chromatograph/ZW +chromium/SM +chromosomal +chronograph/ZSM +Chrysler +chum/2DzMZSG +chunky/TP +churchgoing/SM +cinchona/SM +circler/M +circuit/MdS +circuital +circuitry/MS +circuity/SM +circulant +circumcised/U +circumciser/M +circumflex/DSGM +cl/GJ +clairvoyant/SY +clang/DRGS +Clara +Clarence +classiness/S +classing/e +claustrophobic +clearance/MS +Clement/SM +Cline +clinometer/SIM +cliometrician/S +clipboard/SM +Cliveden +cloak-and-dagger +cloaked/U +cloister/MdS +close-cropped +closer/ESM +clothesline/SGDM +clothesman +cloudless/PY +cloudy/TP +clown/SDGM +clubbing/M +clubhouse/MS +clunk/DRM2GzZS +coachloads +coaler/M +coal-fired +coalitionist +coarse/TPY +coastal +coastline/MS +cocaine/SM +cock-a-hoop +cockatoo/SM +cockpit/MS +cockroach/SM +cock-shy +code/CDaAGS +codebook/S +codebreak +codebreaker +codename/D +codpiece/MS +coeval/SY +cogent/Y +cogitation/M +cognition/AMKS +cognoscenti +coil/USADG +Cointreau +coital/Y +cold-bloodedness +coldish +coldness/S +Cole/M +coleus/MS +collaborative/S +collectible/S +collegial +colloquium/SM +colloquy/Mo +coloratura/SM +Colosseum +colostomy/SM +colour-code/D +comae +combat/vVu +combed/U +combustibility/SM +come/RIGJS +comedian/SM +comfortableness/S +comfy/T +commemorate/NDvSVGn +commemorator/S +commercial/qQ8S- +commercialness +commiserate/VNnDGS +commission/CRDSG +commonly/U +commonplace/P +commons/M +common-sense +communicability/SM +communicable/I +communicated/a +companion/DG7lMS +compendia +compensated/U +compensator/M +complainant/SM +compliance/SM +complicator/MS +composition/CM +comprehension/IMS +comprehensiveness/S +compress/XvNVhxb +computed/AK +computing/A +concede/Rh +conceiver/M +conceptuality/M +concerto/SM +conchs +conciliar +conclusion/M +concordant/Y +concrete/GPYNDSnM +concubinage/SM +concupiscent +concussion/M +condescend/NXk +conditionally/U +condition's/K +condolence/MS +conducive/P +conductance/4 +conductibility/MS +conductor/SM +conductress/MS +coney's +confabulation/M +confederate/M +conferee/MS +confidential/PY +confiner/M +confirmed/PY +conflagration/SM +confrre/SM +confront/NRnx +Confucian +confusable +confutation/M +confuter/M +congested/U +congregate/GNnSD +conjugacy +conjugateness +conjunctive/S +conjuration/M +connectivity/SM +consent/SRGkD +conservative/PS +consigns/A +consist/SGD +consistent/IY +console/RNkn7 +consonance/IM +conspiracy/SM +constant/IY +constellation/MS +constituency/MS +constitute/DASG +consulship/SM +consultees' +consumable/S +consumer/3 +consummated/U +consumptive/S +contaminate/NVGDnS +contamination/MCS +contemporaneous/PY +contemptible/Y +continence/IMS +contort/VDG +contradict/SGyD +contralto/SM +contrapositive/S +contrapuntal/Y +contrariwise +controllability/M +convenient/YI +conventionalist +conversant/Y +conversazione/M +convert/RSbDG +convex/Y +conviction/MS +convincing/UY +convolution/C +co-operant +co-operative/SP +cootie/MS +copay/S +coplanar +Copland +coprolite/M +coralline +Corbie +cordage/MS +cordon/dSM +co-religionist +Corfu/M +corked/U +cornfield/MS +cornflour/M +cornmeal +corollary/SM +coronary/S +coroner/MS +corps/SM +Corrigan +corruption's/I +corsage/MS +corset/dSM +cortge/SM +cortex/M +Costa +cotangent/SM +Cotswold/M +cottonwood/SM +cottony +Coulthard +counsel/MDJGS +countenancer/M +counterargument/SM +counter-espionage/SM +counterforce/M +counter-offensive/MS +counter-revolution/ySM +counter-revolutionary/MS +counter-tenor/SM +counterweight/GMSD +counting/Ea +counts/AaEf +coupled/U +courier/MGDS +courtliness/S +cove/RDGMS +covenanter/M +coverage/SM +covetousness/S +cow-pat/SM +crackpot/MS +crafter +craftspeople +craftspersons +Cranfield/M +craver/M +craw/YSM +crawl/SRDG +crayfish/SGDM +cream/ZDRS2zMG +creamy/PT +creativeness/S +creator/SM +credibly/I +credo/MS +creed/SM +creedal +crenelation/M +creole/MS +crpey +crept +crescent/MS +Crestview +Crete +criminology/3wMS +crimson/SMd +cringe/GSD +criss +critique/MGSD +crochet/dJSZr +crocodile/MS +crocus/MS +croissant/SM +croquette/MS +crossfire/MS +crossing/MS +crosspoint +cross-sectional +croton/SM +crowbait +crowd/cSDG +crowfeet +crudeness/S +crudits +crumbly/TP +crutch/SDGM +crux/M +crybaby/MS +cryogenic/S +cryptography/W1SM +Cryptozoic +crystalline/S +cubic/S +cubit/SM +cul/DG +cull/S +Cullen/M +culmination/M +culpa/SM +culpable/YP +cultivable +cultivatable +cumbersomeness/S +cumbrous +cumin/SM +Cummings +cumulus/M +cupboard/MS +cupola/DSGM +curatorships +curiosity/SM +curiousness/S +curlew/SM +curlicue/SDMG +curly/PT +Curran/M +cursory/K +curve/SZGDM +cushy/T +cussed/EF +cutlery/MS +cyanide/SMGD +cyclohexanol +cylinder/wS1M +cynical +cypher/dSM +czarevitch/M +dad/MZS +daffodil/SM +Daguerre +dainty/TSYP +dairyland +dais/SZM +Daley/M +dam/MDGS +damageable +Darcy/M +darkness/S +Darlene +darling/PMS +darnedest +Daryl/M +database/DMGS +daughter/YMS +daughters-in-law +Davie +daycare/S +day-to-day +daze/DiSGh +DCB +deaconess/SM +deadbolt/S +deadlock/MGSD +deafening/M +dean/MGD +deanery/SM +Dearing/M +death-knell +deathless/Y +death-toll/M +debauchery/SM +debilitation/M +debonair/PY +Debussy/M +decade/SM +decadent/Y +December/SM +decilitre/MS +decimetre/MS +decision-making +declarator/SM +dclasse +decomposable/I +decoration/ASM +decorative/P +dedication/M +dedicator/MS +deejay/GDSM +deep/TPYS +deep-frozen +deep-rooted +defend/Vuv +define/KSDAG +definitive/SP +deform/xnR7GN +deformity/SM +deftness/S +DeKalb +delegable +delete/NDnSG +deletion/M +deliberateness/S +delightful/P +delinquent/YSM +delirious/PY +delusion/M +delve/RSDG +demeanour +dmod +demonology/M +demonstrativeness/MS +demureness/S +denominate/x +densitometry/M +dentist/MSy +deny/DR7kGS +deoxyribonucleic +department/o +departure/SM +dpays +dependability/MS +dependable/P +deplorer/M +depraved/P +depressant/S +depressor/MS +derision/M +dermatitis/MS +derogation/M +Derry +descendent +description/M +descriptor/SM +desertification +designation/M +desire/BRl +Desmond/M +desolation/M +despatch/GDS +despondence/SZ +destructible/I +desultory/YP +detach/GRSiLhD7 +detected/U +detector/SM +deterioration/M +determinacy/I +determinant/MS +determined/P +determiner/KMS +detonated/U +detox/SGD +detritus/M +Deutsch +devastate/DNSnkVG +devastation/M +deviance/MSZ +deviation/M +devilish/PY +devious/YP +Dewey +dewy/TP +Dhaka/M +dhoti/MS +diabetes/M +diagnose/DGaS +diagnosis/a +dialect/wWSo1M +diam +diarrhoea/SMW +diaspora +dice/DnSGN +dichotomous/Y +Dictaphone +didactic/SY +didactics/M +Diderot +Dido/M +differ/Sd +diffidence/MS +digestibility/SM +digit/q-s9SQ8M +dignified/U +digraph/SM +digress/uNvDSGXV +diktat/SM +dilemma/SM +dimension/DGpMoS +diminuendo/MS +dinghy/MS +dioptre/SM +dioxide/SM +dioxin/S +diplomat/3MS +dipstick/MS +dirndl/SM +disbursal/S +disciplinary +disclaim/7 +discothque/MS +discreet/PIY +discuss/N7X +disfigure/L +dishcloth/MS +disillusion/LDG +disinterested/P +Disneyland +dispersive/P +dispirited/Y +disputably/I +disputant/MS +disruptor/M +dissent/RGDS +dissoluble/I +dissolve/AGDS +dissolved/U +distastefulness/S +distend/XN +distillation/M +distraught/Y +distributable +distribution/ASM +distributional +disturbed/U +diva/SM +divalent/S +divergence/MS +divers/NX +diversion/My +dividable +divisiveness/S +dobbin/MS +documentation/M +dodder/dSZ +dodecahedra +dodgy/T +dog-clutch +dog-collar/SM +dogged/P +dogmatics's +dogs/f +doing/aS +domain/MS +dominate/KNDSG +Dominica/M +Dominican/SM +don't +dopa/SM +Dorian +dork/ZS +dormancy/SM +dormitory/SM +Dorset/M +doss-house +dot/M2ZdDkrGS +double-glazed +doubleness +doubles/A +doubloon/MS +dowager/MS +dowel/DSGM +downfall/SM +downplay/DGS +downrange +dozer/M +drabness/S +dragger/M +drainage/SM +draining-board/SM +drainpipe/MS +dram/w1SMW +dramatics/M +drape/RSDGy +draughtsperson +drawback/SM +drawee/MS +draws/ecA +dreamland/SM +dressy/TP +drip-dry +drizzle/GDSMkY +drogue/MS +dromedary/SM +drudge/kyMSDG +drumstick/SM +Dryden +duchy/MS +duck/GDZSMJ +duct/CDISGF +due/MoPS +duel/RMDGJS +dugout/SM +dumbfound/SGD +Dumont +dump/DR2GZS +dun/TDGS +dunce/SM +dunderhead/SM +durability/SM +Durex +dustiness/S +duxes +dwelling/M +dwindle/SGD +dybbuk/SM +dyeing/M +dyke/SM +dyslexia/SM +dyspepsia/SM +dyspeptic/S +earache/MS +earnestness/S +earning/M +earthquake/MS +earth-shattering +ease/EDMSG +EastEnders +easterly/S +eavesdrop/RDSG +ebb/GDS +eccentric/MSY +Echinodermata +clat/M +ectopic +ecumenical/Y +edge/DZMGRpSJ +Edgewood +edict/SM +edifice/SM +Edison +editor/FMS +Eduard +educ/nNxV +educated/cfU +educe/DNG7S +effendi/SM +effeteness/S +efflorescence/SM +effrontery/MS +effulgence/MS +Egerton +eggplant/SM +egocentric/YS +egregious/YP +egret/SM +Egyptian/S +Egyptology +eiderdown/SM +eigenvector/MS +eighty-seven/H +eighty-three/H +eisteddfodau +elaborateness/S +elastic/SQ8Y +Elba +elbowroom/MS +elder/SY +elected/U +election/SM +electrical/P +electrocardiograph/MSZ +electrolyse/GWSD +electrolysis/M +electromyographic/Y +electron/SW1M +electronegative +electroweak +elegance/ISM +elephantiasis/M +Elgar/M +eliminate/SVnNDG +eliteness +elixir/MS +Elmsford +elongate/GnSND +Elroy +elsewhere +elude/DuVGvS +elution/M +elver/MS +Elyse/M +Elysium +em/M +embank/GLSD +embarcadero +embassy/MS +embed/SDGJ +embedder +embellished/U +embellisher/M +emeriti +Emerson +Emilio/M +Emory +emotionalism/SM +emperor/MS +empiricism/MS +empiricist +employed/fUA +employing/A +employs/A +empress/SM +empty/SGDTP +emu/MS +emulate/nDVGSvN +encase/GDLS +enchain/DGS +encipher/Sd +enclosure/MS +encomium/SM +encyst/GLDS +endocrine/S +endorphins +enduring/P +enforcible/U +Englander/S +engraving/M +Enid/M +enjambment/MS +enlightened/U +enliven/LSd +enormous/PY +enshroud/SDG +entente/MS +entomb/DLGS +enunciable +enunciate/GSnDN +environ/LdS +environmental/3 +Ephesus +epic/MSY +epigenetic +epinephrine/SM +Epping +equipage/SM +equipped/UA +equiv +era/MS +erasure/SM +ergo +Eric/M +Eriksson/M +erode/VDuNGxXSb +erosive/P +escadrille/M +espionage/SM +espousal/MS +Essex/M +Esterhzy/M +etch/RGSDJ +ethanol/M +ether/MQ8S +Ethernet/MS +ethnocentric +ethylene/M +Etruscan +ETSI +euphemism/SM +euphoria/MS +Euphrates +eureka/S +Europe/M +euthanasia/SM +evadable +evangelic/Y +Evangeline +evenly/U +evensong/MS +eventfulness/S +everyday/P +evict/SGD +evolute/SM +exact/PSGYTDk +exactitude/ISM +exactness/IS +example/MDGS +exceptionable/U +exceptional/UY +excretory/S +exculpate/SDNnyG +excusable/IP +excuse/RlGDS +executive/MS +exempt/DGS +exertion/SMc +exhaustible/I +exhortation/M +exigency/SM +existent/F +Exmoor/M +exocrine +exogamy/M +exonerate/nSNVDG +exotica +expand/BDRXVNvGSu +expediently/I +expel/DSn7GN +expended/U +expender/M +expenditure/MS +expensiveness/IS +explain/AGDS +explanation/SM +explicable/I +exploit/RVM7GnDS +expressibility/I +expression/Mp +expurgate/SDNGn +extemporaneous/YP +extempore/Qs89q-S +extendedness/M +extinct/V +extort/GDVS +extracellular/Y +extra-curricular +extramarital +extraordinary/PYS +extrasolar +extraterrestrial/S +extraterritoriality/SM +extravaganza/MS +extremeness/S +extremism/MS +extrusion/M +exurbia/SM +eyedropper/MS +eye-level +Ezra +fable/MSDG +face/CGKDASe +faceless +facelift +face's/K +face-saver +facetiousness/S +facilitate/yDGSNnV +facing/MS +facsimileing +factionalism/SM +facto +factorial/SM +Fagin +Fairfax +fair-weather +fairy/MS +Falkner +fallibility/ISM +fallible/PY +fall's/ce +falsify/RBGnDSN +falter/rJdSk +falutin +fanatical/P +fantasy/Q8Ws9DSGM +fanzine/S +farina/MS +farmworker/S +far-reaching +fascicle/DSM +fast-forward +fatalism/MS +fathom/7dMpS +fathomable/U +fatuity/SM +fault-finding +faultless/YP +faulty/PTY +faun/SM +feathered/U +feather-edge +featherweight/SM +feckless/YP +fecund/ng +fecundity/SM +federalist +feeding/M +felicitously/I +Felipe +felony/SM +felt-tip/S +feminism/MS +fences/C +Fermanagh/M +ferret/rdSM +ferrite/M +ferrule/DMSG +ferryboat/MS +fetlock/MS +feud/DMSoG +feudalism/SM +fiat/MS +fibrosis/M +Fidel/M +Fife/M +fifty-twofold +fightback +fights/e +fill/JDRYGS7 +filter-tipped +filthiness/S +finance/ASGD +find/JRGS7 +fineness/SM +finger/prdSMJ +fingerprint/DGSM +fingertip/MS +finial/SM +finite/CPYI +finny/T +fiord/MS +fireplace/MS +Firestone +fire-storm/MS +firewood/M +fish-bowl/MS +fished/c +fisher/m +fishmonger/SM +fishy/PT +fist/DMGS6 +fixity/MS +flabby/TP +flack/SDMG +flagrant/Y +flaker/M +flaky/T +flamb/GSD +flame/pGZRSMDkJ +flamen/M +flammable/IS +flapjack/MS +flash-pan +flattop/SM +flawlessness/S +flea/MS +fleabites +fleawort/M +fleetingly/M +fleshly/T +flexibility/MIS +flightpath +flights/c +flinty/TP +flirtation/M +floodlight/GSM +floorspace +florescence/MIS +florist/SM +floweriness/S +flowstone +fluency/SM +fluoroscope/SGDMW +flush/7DPTGS +fly-fishing +flywheel/MS +foamer +foamy/TP +fo'c'sle +focus/CdGDAS +focusable +focus's +foeticide +fogydom +fogyish +foldaway +folklore/3WSM +folly/MS +fondle/GDS +fondler/M +Fontaine/M +fool/GDMS +footman/M +footprint/SM +footsie/MS +forbidding/PY +forced/U +forcer/M +foreclosure/MS +forefront/MS +forehead/SM +foreknow/SG +foreknown +forensics/M +forequarters +forerunner/MS +foresaw +foreword/SM +forfeit/DRMSG +forgave +forget-me-not/S +forging/MS +formality/SMI +formate/MS +formulate/DAGSNn +formulated/U +Forster +forswear/GS +forthwith +fortified/U +fortissimo/S +forty-onefold +forty-three/H +forum/MS +Foss +foster/dS +fought/e +founded/FU +Fourier/M +four-leaved +four-square +fox/MDzZG2S +foxhound/MS +fr +Francesca +franchiser/SM +Franoise/M +Frankfurt +frankness/S +fraud's +Freddie +Fredrick +free-born +freedmen/M +freemasonry +Freeport +freight/SMRDG +Frentzen +fresh-faced +Freud/M +friction/oMSp +friend/DGYMpS +frieze/MGSD +frigate/SM +fright/DGMjS6 +frighteners +frigidity/SM +Frisian +frisk/ZGSDz2 +frivolity/SM +frivolousness/S +fronter/F +frothy/TP +frown/DGSk +frowner/M +frumpy/T +fulcrum/SM +fulfilled/U +fulfiller +Fullerton +full-length +fulsome/YP +fume/GkDZS +fundamentalist +fundholding +fund-raiser/SM +funeral/MS +fur/GM2JZSD +furl/UGDS +furring/M +furtherance/SM +fuselage/SM +fuses/CA +fusilier/SM +fusspot/SM +futurist/W +fuzzy/TP +gaberdine/M +gadabout/MS +Gail +galen +galley/MS +gallstone/MS +galvanic +gamesmen +Ganges +gantry/MS +gaper/M +Garfunkel/M +garnish/LSDG +garnishee/GMS +gas/FC +gasoline/M +gasometer/M +gastronomy/MWS +gastropod/SM +gasworks/M +Gateshead/M +gather/drSJ +gaucherie/MS +gavel/DSMG +gawker +gazillion/S +gee-gee/SM +geezer/MS +gel/DMGS +gelable +Gemini +gender/MSp +gendered +generate/AnVCGDSN +generator/AMS +generous/YP +generously/U +Genevieve/M +genie/oSM +genocidal +genotype/MS +genuflection/SM +Geoff/M +geomagnetic/Y +geomagnetism/MS +geophysical/Y +geopolitic/YS +George/SM +Georgetown/M +Georgian/S +Gerald +geranium/SM +Gerard +Gerber +germination/M +ghillie/MS +ghostlike +ghost-written +giant/MS +giantess/MS +giber/M +giddy/PGYTDS +Gideon +gigacycle/MS +Gilbert/M +gilt/S +gimcrack/S +gimp/DMGZS +gin/MDSG +ginkgoes +girlfriend/SM +giveth +gizmo's +glac/DGS +glacial/Y +Gladys +glasnost +glean/DRSGJ +Gleason +Glenda +Glendale +glib/TPY +gloaming/MS +global/3Y +globularity/M +Gloria +glossy/TSP +glow/GRDkSM +glycogen/MS +Glyndebourne/M +Glynn +gnarl/GSMD +gnat/MS +gnomic +gnu/MS +goad/GDMS +go-ahead +goalie/MS +goalpost/S +go-between +godchildren +god-damn/D +godhead/S +Goering +Goethe/M +goitrous +Golding +gold-plated +gonococcal +good-humoured/Y +good-looking +good-natured/Y +Goran +Gordon/M +gotten +gourmandise +gouty/T +grce +graced/E +graceless/YP +gradate/DSG +grade/nRCSDG +gradient/SM +gradualism/SM +graduation/M +graffiti +grampus/MS +grandniece/MS +grant/DRMGS +granulate/SDG +granulocytic +gratitude/SIM +gravitation/M +Grayson +graze/RSGD +greasepaint/SM +greenery/SM +greenfield +greenfinch/SM +greet/DRGSJ +grenadier/SM +gridiron/MS +gridlock/DSG +grimy/TP +grin/DGS +grind/RGJSk +gristle/SM +grittiness/S +groat/MS +groin/SMGD +groom/SDGM +Groot +grotesqueness/S +grovel/DSGR +grub/zRMZ2DGS +grudger/M +grumble/GRJkSD +GU +guanine/SM +Guardia +guardianship/SM +Guenther/M +guerrillas +guerrilla's +guess/DRG7S +guessed/e +guildhall/SM +guilefulness +guilty/TP +Guinea-Bissau/M +Guinness +gumboot/S +gumption/SM +Gunderson +gunmen/M +gunnery/SM +gunning/M +gunnysack/MS +guppy/MS +Gus +gusset/SM +gusts/E +gut/MRGpDS +Gwangju +gym/MS +gypsite +gyroscope/SMW +ha +Haag/M +habitable/P +habitation/IMF +habituation/M +Hackett +hadj's +haem/SM +haematoma/M +haemolytic +haemophiliac/SM +Hague +ha-ha +haiku/M +hair-drier +hairless/P +hairlike +hair-raising +halcyon/S +half-deck +half-hour/YS +halfpence +half-sister/SM +half-sovereign +halfwit/hiSMD +halibut/M +halite/MS +hall/SM +hallelujah/S +Halley/M +hallow/DGS +Halloween +hallucinate/nyNVGDS +hallway/SM +halter-neck +halvers +hammerhead/SM +hammering/M +hand/h6RzZSipMGD2 +handbill/SM +handedly/f +handful/MS +handgun/MS +handling/M +handstand/SM +hangnail/SM +hanker/Jd +hankerer/M +Hanoverian +Hansen +ha'penny +haphazardness/S +haplessness/S +harbourage +hard-line/R +hardshell +hardy/TP +harken/S +harlotry/SM +harpsichord/M3S +Harrison +Harrisonburg +harshen/d +harvest/MRGDS +harvestmen/M +hassock/MS +hast/zZ2D +hatchet/dMS +hatchway/MS +hatefulness/S +haughty/YPT +haul/cDSG +have-not/MS +havoc/SDMG +Hawaiian/S +hawkishness/S +headmen/M +headteacher/SM +headway/SM +health/M6jzS2Z +healthcare +hearing/SM +hearsay/SM +heartburn/GSM +heartlessness/S +heartstrings +heath/RSyM +Heathkit +heaven/MSY +Hebrew/SM +heck +hectogram/SM +hedonist/WMS +heel/pRSGMD +Heidfeld +Helena/M +helix/M +hellebore/SM +Hellenic +helpfulness/U +helplessness/S +Helsinki/M +hemp/SM +hen/yMS +Henley/M +Hennessey/M +Henri/M +herald/WGSMDy +herbalist +Herbert/M +here/FI +hereabout/S +herein +heretofore +heritable/I +Hermes +Hertfordshire/M +hesitance/ZS +heterosexual/MYS +Hettie/M +Heuser/M +hew/RGSD +Hewett/M +hexagram/SM +heyday/MS +hgwy +Hiawatha +hiccough +hideaway/MS +hideout/MS +hieroglyph/SW +high-hat +high-jump +highland/RSM +high-spiritedness +high-stepper +hike/RSGD +Hilbert +hilliness/S +Hinckley +Hindemith +Hindi +hindsight/SM +Hinduism +hint/RSGMD +hip/TZMDSG +hipbone/SM +hiring/S +Hirsch +histology/3MSw +historian/SM +history/SK1MW +histrionic/SY +histrionics/M +hitch/RDSG +HIV +hoard/MSRDJG +hobgoblin/SM +Hoff/M +hogback/SM +hoist/SDG +hold/RSGJ7 +Holden +Holstein +homecoming/SM +homeland/MS +home-making/M +homesickness/S +homiletic/S +homoeotherm/ZW +homogamy/M +homogeneousness +homogenize/DRGnSN +Hondo +hone/STGDM +honester +honey/SMD +hooded/P +hoofer/M +hookup/MS +horned/P +horse-trading +horsier +horsing/M +hos/Sd +ho's/F +hospitably/I +hostility/MS +hotness/S +hounding/M +houseboy/MS +housebreak/SRJG +house's/e +house-to-house +house-warming/SM +Hove/M +hover/dS +hovercraft/M +Hoyt/M +HQ +Huffman/M +huffy/TP +Huguenot/SM +Hull/M +hum/RSDG +human/sQ8Y3-q9PS +humaneness/I +humanist/W +humanize/CRDnSNG +humanly/I +humerus/M +humidification/CM +Hummel/M +humorousness/S +Hungary/M +Huntley/M +hurriedness/M +hurter/M +husband/DYyGSM +hussy/SM +hybridism/MS +Hyderabad +hydrangea/MS +hydrochloride/M +hydrogenates/C +hydrostatics/M +Hyman +hymnal/MS +hyperbola/MS +hyperboloidal +hyperplane/MS +hypertrophy/DGSM +hypotenuse/SM +hypothalami +hypotheses +hysterectomy/SM +Hyundai/M +ICC/M +icebox/SM +icicle/SM +iconoclasm/MS +iconography/WMS +ICU +Ida/M +idealist/W1 +idealogical +identical/PY +idiocy/SM +idiomatic/U +idolatress/S +idyllist +if/FS +ignitable +ignorance/SM +iguana/SM +iii +Ikea/M +ill-behaved +ill-defined +ill-equipped +ill-tempered +illume/GD +illuminable +illustrate/NnGDvSV +illustration/M +illustrious/YP +ilmenite +imaginably/U +imagine/lnSVuNJDvG +imaginer/M +imbibe/RSDG +immanency/SM +immensity/SM +immerse/SNbDGX +immerser +immolate/DGnSN +immortal/Q8 +imped/d +impeder/M +imperial/3SY +imperturbability/MS +impetuous/PY +impishness/S +impresario/MS +imprint/M +imprison/L +improver/M +impudent/Y +inalterableness +inappropriate/P +inbound +in-car +incarnadine/DSG +inception/MS +incipience/MSZ +incise/XVGvDNSu +incommode/GD +inconceivability/SM +inconceivable/P +incontrovertible/Y +incorporated/EU +increase/Jk +incriminate/SDNnyG +incubation/M +indemnity/MS +indentation/M +indication/M +indicator/MS +indices/M +indigent/YS +indissoluble/YP +indistinct/P +indistinguishable/P +indoctrination/M +industrialist +industriousness/S +inebriation/M +ineffable/PY +inertness/S +inexplicable/PY +inexplicit +infantry/mMS +infatuate/DSGnN +inferential/Y +inflate/DSGNn +inflated/c +inflater/M +inflect/GxSVD +in-flight +infraction +infrastructural +ingenuously/E +ingot/SM +ingratiate/nGDSkN +inhibit/SVdyXN +inhibitor/MS +in-house +initialised/U +initialized/U +injunctive +inlay/GS +innermost +innovate/NVnGuDSyv +innovation/M +innovator/SM +inoculate/VGNDSn +inordinate/YP +inquisitive/PY +inscribe/RNX +insert/DGAS +insidiousness/S +insinuate/DGknNSV +insolence/SM +insolent/Y +insomnia/SM +inspired/U +inspirer/M +instanter +instigate/SVnDNG +instituted/A +insult/DGkS +insupportable/P +insurrectionist +intensiveness/S +intention/DSoM +intentionality/M +interaction/SM +intercept/GSD +intercessor/SM +interchange/SlGBD +interfacing/M +interfere/kRSGD +intergeneration/oM +interject/xGSD +intermarry/SGD +intermezzi +intermodule/Nn +internationalism/MS +interplanetary +interplay/MGDS +interposition/M +interpret/daNAnS +interprocess +intersect/GSD +interstate/S +intersurvey +interurban/S +intervocalic +intimidation/M +intradepartmental +in-tray/S +intrude/RuNXSDGVv +intrusiveness/S +inure/GDS +invective/YPMS +inventiveness/S +inventress/MS +invincible/PY +inviting/U +invokable +involve/LGhSD +iodide/MS +ion's/U +Irani +Ireland/M +iridescent/Y +Irishwomen/M +irksome/PY +Irma +ironer/S +ironwood's +ironworker/M +irrepressible/Y +irrigable +Irvine +Irwin/M +Isaacson +Isis +Islamabad/M +Islamic +island/RSM +Islay/M +Islington/M +isn't +isocline/M +isopleth/SM +Italian/SM +Ithacan +its +ix +jackknife/DGMS +Jacqueline +Jaeger/M +jag/ZDhGiS +jaggy/T +Jaipur +Jakarta +Jamaican/S +Jameson +janitorial +Jardine +jasper/MS +javelin/MS +jawline +jay/MS +jazz/S2GMDZ +Jeanie +Jehoshaphat +Jesse/M +jetty/MS +jib/DMGS +jihad/MS +jingoist/WSM +Joanne/M +Joaquin +jock/MS +John/S +johnny/SM +join/FRSDG +joins/A +jointures +jolt/DSRG +Jonathan +Jorge +Jorgenson +Joshua/M +joss/M +jowl/YSM +joyless/PY +Juanita +jubilant/Y +judgemental +juicy/YPT +julep/SM +jump-start/G +juncture/FMS +jungle/SM +junket/SdM +junta/MS +jurist/W +juster/M +juvenile/SM +kaiser/SM +Kano +kappa/M +katydid/MS +kcal/M +Kearney +Keats/M +keener/M +keening/M +keepsake/MS +Keith +Kendal +Kenyan/S +Kepler/M +kerb/SM +kerchief/SDM +kerned +keyclick/MS +keyhole/SM +kg +Khmer +kickballs +kicky/T +kid/RDMSGp +kiddish +Kiev/M +kif-gloves +Kilimanjaro/M +killjoy/S +kills/c +kilowatt-hour +Kimberly/M +kinda +kindness/S +Kingsbury +Kiowa +Kirby +Kirkpatrick +Kitakyushu/M +kitbag/M +kitsch/ZSM +kittiwakes +Klondike +knack/SRM +kneecap/SGMD +knick-knackery +knight/GMDYS +knit/RGSDJ +knitting/M +knotty/TP +know/GJk7S +knowing/T +knowledge/SlM +Knowles +Kodachrome/M +kola/SM +Kong +kook's +kooky/T +Kremlin/M +Kronecker/M +Kuenning/M +kumquat/SM +KwaZulu +l/3 +lab/oMS +label/aGDSA +labiodental +laboratory/SM +laburnum/MS +labyrinth/SM +laceration/M +lachrymose +lackadaisicalness +lactation/M +lacunae +laddie/MS +ladybug/SM +laevorotatory +Lamaism +Lamellibranchia +lamina/Mn +laminate/DGS +Lancaster/M +Lancelot/M +landforms +land-use +lantern/MS +Laos/M +laps/SGD +lapse's +larboard/SM +larcenist/S +larcenous +larceny/SM +lark/MGDS +larkspur/SM +lasciviousness/S +latching/M +latticing/M +Latvia/M +laudanum/MS +lauds/M +laughable/P +Launceston +lavatory/SM +lawgiver/SM +lawlessness/S +lawmaking/M +lawnmower/S +lawrencium/M +layette/SM +laying/ca +lays/faAec +Lazar +Lazarus +lazybones/M +leading/a +leaf/pSD2GMZ +leafstalk/MS +leasing/M +Leatherdale +leavening/M +Leavenworth +lectureship/SM +led/a +lefty/S3M +legally/I +legislator/MS +legitimately/I +legitimating/I +legitimization/M +Leiden +Leif +Leigh +Lenten +leper/SM +lettered/U +level/SDTPRGY +Lewes +lexeme/MS +Libby/M +liberalism/MS +libertarian/SM +libertarianism/M +Libra +Libya/M +lichen/SM +Lieberman/M +lieder +lifetaking +light-heartedness/S +lignite/SM +liking/MS +limb/SDMWp +limestone/MS +limpid/YP +Limpopo +Lin/M +Lindbergh/M +linen/SM +lines/eAf +ling/f +lingua/Mo +linguini's +linkage/SM +linseed/MS +lionizer/M +lip-synch +liquefy/DRSG +liqueur/MS +liquorish +Lisa +listed/U +listing/M +literalism/M +lithology/Mw +Lithuania/M +litigiousness/S +litre/SM +little/TP +liturgics's +livelong/S +liverwurst's +ll/C +loads/AUc +loansharkings +loathsomeness/S +loaves/M +loci/M +Locke +locks/UA +lode/MS +lodestar/SM +Logan +logia +login/S +Loki/M +loneliness/S +lonesomeness/S +long-ago +long-distance +longhair/SM +longing/M +long-lived +long-range +long-time +loose-leaf +Lorraine +lotto/SM +loudspeaker/SM +Loughborough/M +Louisa/M +lour/SDG +louse/CDSG +love/pMk7RSYlDG +loveless/PY +Lowell +lowliness/S +loyalty/ESM +Lucia/M +Lucretia +Ludwig +luge/CM +lukewarm/PY +lull/GSD +lulu/M +luminance/M +luminescence/MS +luminous/YP +lumpish/YP +luncheonette/MS +luncher/M +lunger/M +lupus/MS +lust/GZSDjz62M +lye/M +lymphatic/S +lyre/MSwW1 +Mabel/M +Macedon +Macedonia/M +macintosh/SM +MacIntyre +Mackenzie +Mackie +Macmillan/M +macram/S +macro/SM +macrosimulation +mad/RTYPGD +madden/dkS +madhouse/MS +Magellan +magi +magisterial/Y +magnanimous/Y +magnetic/S +magnolia/SM +maidenhead/SM +maidenliness +Maier +mainstreamer +major/MS +making/MS +Malagasy/M +maleficence/SM +maleness/S +mallard/SM +Mallory +malnutrition/SM +malocclusion/MS +Malta/M +Mammalia +mammography/S +mandate/SMGyD +mange/SGD +Manhattan/M +manhole/SM +manikin/MS +manoeuvres/e +mansard/MS +mantilla/MS +mantis/MS +manure/RMGDS +manuscript/MS +man-year/S +Maoism +mapping/M +maraca/MS +margin/oMdS +mariachi's +marijuana/SM +Marin +marina/nMS +Marjory/M +marketability/MS +marketable/U +Marlowe/M +Marquess/M +marriage/MBS +marrow/MS +marsupial/MS +Martel +marten/MS +Marvin +Marx/3M +marzipan/SM +Masai +master-work/S +matchlock/MS +matchplay +matchwood/SM +maternal/Y +mating/M +matriarchs +matron/MSY +matt/M +matter/d +maturely/KI +maturity/KMI +Maurice +maverick/MS +Mavis +maxilla/yM +maze/SZMGD +McCracken/M +McDonald/M +McDowell/M +McGill/M +McGovern/M +McGregor/M +McKesson/M +McLeod/M +McMahon/M +McNeil/M +mealtime/MS +mealy/TPS +mean/CSG +meanest +meaninglessness/S +measurement/A +mechanism/MS +mechanochemically +media/oMn +mediaevalism +mediaevalist +medicament/SM +medication/M +meditative/P +megacycle/MS +megalith/SWM +Meister +melamine/MS +Melanesian +Melbourne +melted/A +melts/A +Melvyn +memorable/PY +memoriam +mendacity/MS +mendicancy/MS +mendicant/S +mending/SM +Mendip +menopause/SM +menstrual/K +menswear/M +mentality/MS +menthol/MS +merchant/BSM +merchantman/M +mercilessness/S +merited/U +mescal/SM +mesdames/M +mesdemoiselles/M +meta +metabolism/SM +metabolize +metacarpus/M +metastable +metempsychoses +meteor/WS1M +Metford +method/1SMw +metre/S1Ww +mettlesome +Mexican/S +MGM +miasma/MS +mice/M +Michelson +micra's +microdensitometer +microdot/SM +microelectronic/S +microfossils +microlevel +micrometeorite/SWM +microprocessing +microscope/SMWw1Z +Microsoft/M +microstore +mid-band/M +midfield/M +Midlands +mid-life +milch/M +mile/SM +Millie +millimetre/S +milliner/ZSM +millisecond/SM +Milne +mimesis/M +mindless/YP +mindset/S +Minerva +minesweeper/SM +minimax/M +minnow/MS +minor/SM +Minotaur/M +Minsk/MZ +minuscule/SM +minutia/M +minx/MS +mischance +misfeasance/SM +mislay +misprision/SM +missive/4 +Missouri +misty/T +mistype/J +misunderstand/R +mizzen/SM +mizzenmast/MS +mnemonic/YMS +mob/CSDG +moccasin/MS +mockery/SM +modification/M +modulation/MCS +moduli +Moen/M +mogul/MS +molal +molecular/Y +molecule/MS +mollycoddle/SGD +molybdenite/M +momenta/y +momentary/PY +mom's +moneymaker/MS +mongoloid/S +monodist/S +monody/MWS +monolingualism +monopoly/SM +monotone/WMS1Z +Montclair +Monza +mooch/RGDS +moon/DSpMG +moorland/SM +moped/MS +moppet/SM +Moran/M +Moray/M +Mordecai +morning/M +Morpeth +morphophonemics/M +morris +mortality/IMS +Moslem/M +motel/MS +motherhood/MS +motionless/Y +motorboat/MS +motorway/MS +mouldiness/S +mound/MDGS +mountaintop/MS +mounted/U +Moussorgsky/M +moustache/MDS +Moyer/M +Moyra/M +Mozambican/S +mpg +MPV +Ms +much-needed +muck/DGMZS +mudslide/S +mufti/SM +mugginess/S +mulatto/M +Muller/M +multi-access +multichannel/M +multicolumn +multicomponent +Multics/M +multidimensionality +multifunctional +multilateral/Y +multiplex's +multi-purpose +multiracial +mumble/RSDGJ +mumbo-jumbo +Mumford/M +Muse's +mushy/TP +Muslim/SM +mutable/FI4 +mutest +muttonchops +muzzle-loader +myrrh/MS +mystic/YMS +nabob/MS +nacelle/MS +Nagasaki/M +nailer/M +Nairobi/M +naked/PY +namby-pamby +namelessness +nanometre/SM +naphthalene/SM +narcosis/M +Narragansett/M +narrow-minded +Nassau/M +Nathalie/M +naturally/U +nature/ohMDS +navvy/MS +Nazi/SM +N'Djamena/M +Neanderthal/S +near-sighted/PY +near-sightedness/S +necktie's +necromantic +necropsy/M +necrotic +needle/D5GRSM +needy/TP +Neely/M +nefariousness/S +neglectful/P +neglectfulness/S +neglige/SM +negligent/Y +neighbourliness/S +neoclassic/M +neocolonialism/SM +neologism/MS +Nepal/M +nephrite/MWS +Neptune/M +nestle/DSG +neural/Y +neuritides +neuritis/M +neuroscience +neurosurgeon/SM +neutralise/M +nevus's +Newmarket/M +newsflash/S +newsroom/S +news-stand/MS +newsy/TS +next +NFS +nicety/MS +niche/GMSD +Nicholson/M +Nielson/M +nightclothes +nightdress/MS +night-long +nightmare/MS +nightstand's +night-watchman +nimble/TPY +Nina/M +nine/SMH +ninepence/M +ninety-onefold +Nintendo/M +Nipponese +nitrous +nm +Nobel/M +nobelium/M +Noble's +nocturnal/S +nocturne/SoM +nod/oDMGZS +nodule/MS +nohow +noire/S +noiseless/YP +Noll/M +nominal/SY +non-abrasive +non-absorbent +non-active +non-athletic +non-basic +non-belligerency +non-belligerent/S +non-business +nonchalant/Y +non-compliance/MS +non-conducting +non-conductor/SM +nonconformist/SM +non-corrosive +non-crystalline +nondescript/YS +non-disclosure/S +non-dramatic +non-exclusive +non-functional/Y +non-hereditary +non-literary +non-member/MS +non-metal/SWM +non-metropolitan +non-military +non-negative +non-operational/Y +non-orthogonal +non-orthogonality +non-partisan/S +non-paying +non-peak +non-performance/SM +non-porous +non-recognition/S +non-redeemable +non-reducing +non-representational/Y +non-resident/SM +non-residential +non-scientific +nonsense/1SMw +non-sexist +non-slip +non-staining +non-swimmer +non-tenured +non-union/S +non-verbal/Y +non-voter/SM +noontide/SM +noontime/SM +noradrenalin +noradrenaline/M +normalizes/A +north/MSG +north-east/M +northern/RS +north-West/M +notarial +notation's/F +noticeable/U +Nottinghamshire/M +nourished/fU +nourishment/f +nouveau +novel/-MQ3S +novena/MS +Novocaine +NT +nuclear-free +nucleation/M +nudge/GSD +Nugent/M +nuke/SGMD +numberplate/M +numbers/Ae +nursemaid/SM +nutriment/MS +nutritiousness/S +nutshell/MS +nuttiness/S +nymphomaniac/S +Oakland/M +ob. +obeyer/EM +obfuscation/M +objurgate/GSDnN +obligation/M +obliging/YP +obliteration/M +oblong/PS +obnoxiousness/S +oboist/S +observability/M +observe/BxkNRlnSDG +obstacle/SM +obstetric/S +obstructer's +O'Connor/M +octavo/SM +octennial +odalisque/SM +ode/MS +Odis/M +Odom/M +oestrous +off/RGMJ +offhandedness/S +officiation/M +off-licence/MS +ogress/S +oil/m2RZGMSD +oilcloth/SM +Ojibwa/SM +okra/MS +oleaginous +O'Leary/M +oles +oligarchs +Olivia/M +Olympian/S +Omagh/M +Oneida/SM +one-off +on-line +onomatopoeia/MS +Onondaga/SM +ons +on-screen +ontology/1wMS +onyx/SM +oodles +opalescence/S +open-handedness/S +open-plan +opera/nSvuMV +operate/DSGFN +oppressive/P +opprobrium/SM +opt/1xwGWSD +optimized/U +opulence/MS +or/NMn +orderly/S +ordination's/F +oregano/SM +organic/S +orientation/EMA +orient's +originality/MS +origination/M +orneriness's +orographic/M +orography/WM +Ortiz/M +Orwell/M +Osborn/M +oscillation/M +osmium/M +ostensible/Y +osteoarthritis/M +osteoporoses +ought +oughtn't +our/S +overbuild/G +overburden/k +overflight +overhand +over-ride/GS +over-the-counter +over-the-top +overtone +oviform +ownership/MS +oxide/Q-nSMs +oxymoron/M +ozone-friendly +paced/e +pacesetting +pacifist/W +Packard/M +packing/MS +Paddington/M +paediatrics/M +pageboy/SM +Pahaji +paint/DRSGMJ +painted/AU +painter/Y +paints/A +pairwise +palaeoecologist +paled/I +Paleozoic +paler/I +palfrey/SM +palladia +palliation/M +palm/DMG3SZ +palmist/y +palpably/I +palsy/DMSG +pamphlet/SM +panchromatic +pancreatic +pane/MDS +panellist/MS +panic/GMSZD +panky +panorama/MS +pantechnicon +pantihose +pantiles +pantomime/3SMDG +pants/f +paparazzi +Papeete/M +paperweight/SM +parade/RMGDS +paragliding +paragon/MS +paragraph/DMSG +Paraguay/M +paralegals +paralyse/RShGWDk +paramagnet/MW +paramoecia +paramoecium/M +paraplegic/S +parapsychologist/S +parapsychology/SM +parasitism/SM +parasitology/M +parenthesise/D +parenthesize/D +parenthetical +paresis/M +parimutuel/S +parka/MS +Parker/M +parody/G3DMS +paroxysmal +parricide/MS +parse +partake/RSG +partials +particle/SM +particularism +partisan/MS +parvenu/MS +pas/GRDJ +passable/I +passband +pass/M +passe +passes/IcFf +passing/Fc +passionate/FEY +passiveness/SI +password/SMD +pastoralism +past's/A +patch/DESG +patcher/EM +patellate +path/pSM +pathlessness +pathogenesis/M +patio/MS +patriarchate/MS +Patrice +patrol/MDGS +pawn/SGDM +pawnbroker/SM +payee/MS +PC/M +peaceable/P +peak/DM2SiGZ +peat/ZSM +peaty/T +pebbly/T +peccadilloes +peccary/MS +pedestal/DGMS +pedology +peeled/U +peignoir/MS +pell +Pembrokeshire +pencil/MGDJS +pending +Pendle +pendulous +penetrator/SM +peninsular +penitence/SIM +penmanship/MS +pen-name/S +pentatonic +perceiver/SM +perchlorination +percolation/M +percutaneous/Y +perdition/MS +perfectibility/MS +perfectionist/SM +perfidy/SM +perfusion/M +Pericles +perigee/MS +perinatal +peripatetic/S +perjure/DRSGZ +permalloy/M +permeability/SIM +permissiveness/S +permittivity +peroration/SM +peroxidase/M +persistent/Y +person/7oSM +personable/P +perspicacious/YP +peruse/DRGS +pervasiveness/S +perverseness/S +pest/SM +pesticide/SM +pewit/SM +phalanges +pharynges +phi/MS +philology/M13wS +philosopher/MS +phlebotomy +phlegm/SM +phobic/S +phoneme/MS1 +phoney +phonics/M +phosphoresce +photoengraver/SM +photogenic/Y +photomicrograph/ZM +photorealism +physiology/WM1Sw3 +physiotherapist/SM +picaresque +pick/DRSGZJ +pickerel/MS +pictogram +pictograph/SMW +picture-writing +pidgin/SM +pie/MS +piecemeal +piezoelectric +piggish/YP +piggyback/GDS +pikestaff/MS +piling/MS +pimento/SM +pimp/YSDMG +pimply/MT +pin/MGdDJS +pinkie +pinkness/S +pinna +pinnace/SM +pion/S +piousness/IS +pipit/SM +pippin/SM +piss/DSG +pit-a-pat +Pitcairn +pitman/M +placed/aUA +placekick/SGD +placemen +placket/SM +plagiarism/SM +plaice/M +planarity +plankton/MS +planned/KU +plant/IGSDA4 +plasterboard/SM +plateful/S +platen/MS +plausible/IY +play/eGADESacf +playing/S +playwriting/M +plead/SDRGJk +pleater/M +plenipotentiary/S +plethora/MS +pliable/P +pliancy/MS +pliantness/M +plughole +plumage/SDM +plumpness/S +plutonium/M +pneumatics/M +pocketknife/M +podgy/TP +podiatry/3SM +poikilothermic +point-duty +poisonousness +polarimeter/SM +polarise/CRnSGD +pole/MDS +poliomyelitides +polish/RDJGS +poltergeist/SM +polyandrous +polyether/S +polygynous +polyhedron/SM +polyisocyanates +polymorphic +polyphony/SMW +polystyrene/MS +polytopes +polyunsaturated +polyunsaturates +polyurethane/SM +polyvinyl/M +pomposity/SM +poorhouse/MS +popcorn/SM +poppy/MS +porch/SM +porphyry/SM +portcullis/MS +portentous/PY +portire/SM +posed/4AI +poser/IMS +posit/vuSVd +position/CGADKS +positionable +positiveness/S +posits/C +possessiveness/S +possible/SIY +postage/SM +postbag/M +posterior/SY +posteriori +post-feminist +post-free +postillion +postmark/MSGD +post-orbit +postscript/SM +post-structural +postulation/M +posturer/M +potage/M +pot-belly/DSM +potion/SM +pouffe/S +POW +powerboat/SM +powerful/P +ppm +PPS +practiser/M +Praia/M +prance/RGSDk +prank/SM +prattle/DRSGk +pre/Q8s +preamble/M +preceptor/MS +preciousness/S +precipitous/YP +precision/IM +predatory +predicable/S +predicted/U +predominate/Y +pre-elect +pre-existence/SM +prefab/DSMG +prefix/M +prehensile +premed/wS +premiership/SM +premium/SM +preparative/SM +preponderance/MS +pre-programmed +present/NnLYRS7xlDG +presentation/MAo +presidential/Y +press-up/S +pressure/M8q-9GQsDS +pressure-cooker +presto/S +Preston/M +presumable +pretzel/SM +priapic +priestess/MS +primacy/SM +prime/PS +princedom/SM +princely/PT +Pringle/M +priori +prismatic +pristine/Y +prithee/S +private/nYTQ8SN-qPVv +privateer/MGS +privilege/SDMG +prizewinner/S +probable/I +procaine/SM +pro-choice +procrastination/M +prodigal/SY +produced/e +producer/AMS +producible +profaner +professionalism/MS +professor/oSM +professorial +programme/WSM +programming/C +projectile/SM +Prokofiev/M +prolapse/GSDM +prolate +proletarian/Q8-qS +prologise +prologize +promethium/M +promising/UY +promissory +promotion/MS +promulgate/GSNnD +pronounced/U +propagation/M +propagator/SM +propane/SM +prophecy/SM +proportionality/M +proportioner/M +propose/DRGSNxX +proprioception +pro-Republican +proscribe/DSXVGN +prosodic/S +protactinium/M +protections +protoplasm/SWM +Protozoa +protozoan/SM +protrude/XSVuvDGN +protuberant +proves/AI +provision/GMD +provocative/PS +provocativeness/S +prudish/PY +psittacoses +psyche/M +psychocultural +psycholinguistics/M +psychoneurosis/M +psychos/S +psychotherapeutic/S +psychotherapy/SM +psychotic/SY +pub/MWSDG +puberty/MS +publication/KMA +public's/A +pucker/dS +puddling/M +puffer/Z +pugnacity/SM +pulchritudinous/M +pulley/SM +pullover/SM +pumping/M +pumpkin/MS +punctuality/UM +punished/U +Punjabi +pupa/M +pupil/SM +puppetry/SM +purblind +purchasable +purdah/SM +pureness/S +purlieus +pursuance/MS +purview/MS +put/DRGZS +putted/e +pyromaniac/MS +pyrotechnic/S +pyruvic +Pythagorean +q.t. +quack/DGS +quadriceps/SM +quadrille/SM +quadrillion/HMS +quaffer/M +quantifiable/U +quantify/7NRDGnS +quantity/MS +quarterdeck/SM +quash/SGD +quaternary/S +Quayle +quincentenary/M +quisling/SM +quoit/GDSM +quorum/SM +quota/MSn +quoted/U +quoth +rabble-rousing +racialism/M +rack/SDGM +racquet/SM +radiance/MS +radiant/Y +radioactivity/M +radiocarbon/MS +radio-telegraph/SZ +radio-telephone/MS +radish/SM +radium/M +Raikkonen +rain/DMGSpZ +raincoat/SM +Raith +rajah/MS +ramp/DMSG +rampant/Y +ramshackle +ran/Aec +rancorous/Y +Rangoon/M +rapeseed/M +rapier/MS +rapport/MS +rare/YGTP +rarebit/MS +ratatouille +rationalist/W +ratline/MS +rattle/RGYJDS +ravish/DRGLSk +raw/YTP +reactive/Nn +readdress/G +realisable/U +reappoint/LG +rear/DRMGS +Reba/M +rebroadcast/M +recalcitrant +recitalist +reckoner/M +reclamation/MS +recluse/MSVN +recombinant +recompile/Nn +rectify/GN7nDRS +recusance/Z +redeclare/N +red-eye +Redford/M +red-hot +redo/G +reductionism/M +reek/SDG +re-enumerate/N +re-equip/G +re-establish +referential/Y +referral/SM +reflation/y +reflexivity/M +refluence +refraction +refractometry +refractoriness +refurnish/G +refutation/M +reg/o +regale/DG +Reggie/M +rehearsed/Uf +rehearser/M +Reilly/M +releasable +relentless/Y +relevance/MIZ +reliability/UM +relief/M +relight/G +religion/3SM +religiosity/M +reliquary/SM +remembrance/MS +renaissance/S +renal +rent/DMRSG +rep/MS +repair's/E +repast +repeatable/U +repenter +repetitious/Y +replace/L +reply/NRnGV +repression/M +reproach/kDS6G7j +reprogram/GRD +republic/nNS +reputably/E +requestion/G +requital/SM +rerecord/G +resemble/DSG +reserve/nNih3 +reservoir/MS +reset/G +reside/DG +resign/inhN +resistibly/I +resolve/B +responder/MS +responsible/PIY +restaurateur/SM +retardant/SM +retardation/M +retention/SM +reticulum/M +retinue/MS +retrench/L +retrievable/I +revel/nRJSDGyN +reverberate/NDGSn +reverberation/M +reverenced +reverse/GbY +revise/NX +revitalise/Rn +Revlon/M +revolvable +rewritable +Rex/M +Rh +rheology/w3M +rheumatic/SZ +rheumy-eyed +rhinestone/MS +rhinoceros/SM +Rhodesia/M +Rhonda/M +rhythm/1MwSW +ribosomal +Richardo/M +Rickard/M +rickety/T +ride/GCRS +rider's/ce +ridiculous/YP +riding/M +riff/MS +riffle/DSG +riff-raff/M +rifle/mGSMD +rifle-fire +rifling/M +right-angled +rightist +rightmost +rigidify/S +rigour/SM +rime/SM +ring-pull +ringside/MRS +rinser +ripen/dS +ripple/GMYDS +ritzy/T +Riva/MS +rive/RGDS +Riviera/M +riving/C +riyal/SM +Roarke/M +robbery/SM +Roberson/M +Robespierre/M +Robinson/M +robotic/S +Robson/M +rock-climber/S +rocketry/SM +Rockingham +Rockland/M +Rodolfo/M +roll/GUSD +roll-back/SM +Rollin/MS +Rollo/M +Romero/M +rooibos +rootstock/M +rope/GRD7SM +Roquefort/M +Roscoe/M +Rosebery/M +rose-coloured +Roselle/M +Rosenthal/M +rose-red +Rostov/M +rotary/S +rotation/M +rough/GSDPTY +rough-hewn +roughshod +roundelay/SM +roundish +rowdy/PTSY +Roxie/M +royalist +Rs. +RSPCA +Ruben/MS +rubicund +rubout +Rudy/M +Ruhr/M +rumble/SGDJ +rumen/MS +rummy/TM +rumour/DGSM +rumple/SGD +Rundle/M +rung/SM +runnable +runner/SM +run-through +ruse/SM +rush-hour +Ruskin/M +Russ +Russian/SM +rustication/M +Ruthie/M +RV +Sabin/M +Sabrina/M +sackcloth/M +sacred/Y +sag/GDSZ +sahara +said/U +saintliness +saintly/T +sake/S +saleable/U +sallow/T +Salo +Saltley +saltly +saltness +salubriousness +salvo/M +samarium/M +Samuelson/M +sandbank/MS +sandbox/MS +sanely/I +saneness +sanguinary +sank +Santo/SM +sap/DMRZG2pS +sarcoma/MS +sarcophagi +sartorial/Y +Saskatchewan/M +sate/S +satiate/GnDSN +satisfied/EU +saturnalia +saunterer +savable +savoury/U +sawbones/M +Saxon/MS +say/RGJS +scad/M +scalability +scald/GSD +scam/MDGS +scans/NX +scarecrow/MS +scaremongering +scarification/M +scarify/NGDS +scarlet/M +schist/M +Schneider/M +Schoenberg/M +scholarship/MS +school-age +sciatic +science/M3SW +science's/FK +scion/SM +Scorpio/MS +scot +scot-free +scour/SDRG +scoutmaster/SM +scowl/GSD +scrawl/SDGY +screed/SM +screening/M +scribble/RSGDJ +scrivener/MS +scrofulous +scrutineers +scurrility/MS +scurrilous/YP +seaboard/M +seaquake/M +searchable/U +seasonableness/U +seasoning/M +seawall/S +seaweed/SM +secateurs +seceder +secondary/Y +section's/E +Seder/MS +sedimentary +seditiousness +seduce/RDNVvuGSn +sedulous/Y +seemly/TP +sees/c +segregated/U +Seidel/M +seizable +Selassie/M +selectiveness +Selena/M +selenium/M +Seleucid/M +self-aware +self-awareness +self-censorship +self-confident/Y +self-contradiction +self-deception +self-interest/D +self-satisfied +self-taught +Selkirk/M +sell-by +sell-out +seltzer/S +semiarid +semi-duplex +semi-infinite +seminal/Y +semi-rigid +semi-skilled +Semite/WSM +semi-tone/MS +semitransparent +Senegalese +senescent +sensitising/C +sensitivity/IMS +sensitizing/C +sentence/MGDS +sepal/SM +separability/I +separableness +separatism/MS +Sephardic +sept/NWM +seraph/W1SM +serene/TY +serology/w1M +serve/AGCSKDF +server/CKSM +serving/CS +servitude/SM +seventy-eight/H +seventy-six/H +seventy-twofold +severe/oTY +sexuality/MS +Sgt. +shabbiness +shadowed/c +shadower/M +shadowing/c +Shaftesbury/M +shaky/YT +shalom +shamanism +shame/6MjpS +Shamus/M +shapeless/PY +shareholder/MS +shark/SM +sharpener/S +sheepwalk/MS +sheik/SM +shellfire/M +shellfish/M +shelter/drSM +sheltered/U +shepherd/GMSD +Sheridan/M +Shetland/S +shingle/DMSG +Shintoism/S +shoelace/MS +shoemaking +shop-boy/MS +shop-floor +shopping/M +shortage/MS +shortcrust +short-sighted/Y +shoulder/d +shoulder-length +shove/DSG +showing/M +show-place/MS +shrank/K +shriek/DRSMG +shrubbery/MS +shrubby/T +shrug/SDG +shush/DSG +shutter/dp +shyest +sickish +sick-list +side-by-side +side-chapel +sided/Y +sidedness +sidelight/MS +side's/f +sidestep/GDS +side-table/S +Sidney/M +Siegel/M +sifter/SM +significance/ISM +signor/MF +signorina/SM +Sikh/SM +silent/Y +silverfish/SM +Silverman/M +Simmons/M +simplicity/MS +since +single-handed/Y +siren/SM +Sisyphus/M +sit/RGSJ +sixty-six/H +skating-rink +skill/DSM +skilled/U +skin-tight +skivvy/DMSG +skiwear +skulk/RGSD +sky-blue +Skylab/M +skyline/MS +slam/RGSD +slanderous/Y +slap-up +sleazy/PTY +sleeve/SMGDp +sleuth/GMDS +slob/SM +slot/DGSM +slouch/DSGZ +Slough/M +Slovak/S +Slovakia/M +slowdown/MS +slue/DSG +slumber/MdS +slyness/M +Sm +smack/GSMDR +small/ST +smallholding/SM +small-minded +small-mindedness +small-time +small-town +smash/RkSGD +smash-and-grab +smattering/SM +smilax/MS +smilies +smocking/M +smokescreen/S +smoke-stone +smoking-jacket +smoothish +smug/PTY +snake/GZDMS +snappy/TP +snare/GDMS +snarer/M +snarl/SDGkY +snicker/d +snitch/GDS +snobbish/Y +snobbishness +Snodgrass/M +snooker/d +snoot/SzM2Z +snowdrift/SM +snowfield/SM +snub-nosed +soapsuds +sociometry/MW +sock/DMSG +socket/dMS +soever +soign +solely +solicited/U +solid-state +Solis/M +somalia +someone/M +son/MW1SZ +sore/TSY +sorrel/SM +sorrower/M +sorry/TPY +sorter/SM +sorts/K +soulless/Y +sound/GJSTMDRYp +sounding/M +sounds/A +sow/RGDS +spa/MS +spaciest +spadework/M +sparest +sparseness +speaking/Ua +spearhead/GSMD +specialise/cnGDS +specifies/A +specimen/SM +specious/PY +spectrograph/Z1M +spectrophotometer/MWS +speculator/SM +speechless/PY +speedboater +Spencer/M +spew/DRSG +spider/MZS +Spielberg/M +spiller +spine-chilling +spinet/SM +spinneret/SM +spiraea/MS +spiritualness +splashdown/SM +splendiferousness +split/SRGM +spoil/CSRDG +spokespeople +spoonbill/MS +spoor/SM +sporran/SM +spouse/SM +sprang +spread/CGcSe +spread-eagled +spreadsheet/S +springy/TP +spry +spud/SDGM +spurn/DSG +spurner +sputa +squeegee/MSG +squeezable +Squibb/M +squiredom +squireship +squirrel/YMGSD +squirter/M +stab/RYDJSG +stability/MSI +Staffordshire/M +stallholders +stalwart/YS +stalwartness +stand/SfGJ +stand-off/S +staphylococcal +staphylococcus +star-spangled +start/RSDG +starts/A +statistical +statistician/SM +stator/SM +stealer/M +steam/zR2DGMZS +steed/SM +steel-clad +steer/GSD7 +stegosaurus/S +stem/pGMDS +stentorian +stepchildren +stepladder/SM +sterilise/ADSG +stern/SYT +stevedore/SM +stick/RZS2GzM +sticky/PT +stiffen/rSd +stigmatised/U +stile/MS +still/SDPTG +stimuli/M +stinting/U +Stirling/M +stirrup/SM +stochastic/Y +stocking/MSD +stocktaking/M +Stoddard/M +stodge/2MZ +stolid/Y +stolidity +stomach/R6pDMG +stonemason/SM +stonewort/M +stopoff +stopover/SM +storey/S +stork's-bill +storm-cock/MS +storm-door/SM +Stornoway/M +Stourbridge +Strachan +strafe/SGD +straggly/T +straight-eight +strait/SMY +strait-laced +strategic/S +strayer/M +stressed/U +stressfulness +stretchy/T +stridden +strikebreak/RG +strike-breaking +string/AGS +stringent/Y +strobe/SM +stroke/SGDM +struck +struggler/M +strum/DGS +strumpet/MS +stuffy/YTP +stumble/GSDRk +stumpy/T +suavity/M +sub-aqua +sub-basement/MS +subcontractor/SM +subdirectory/S +subdivide/XSDGN +sub-edit/d +subfamily/MS +subfusc +subgenera/W +subject/vGSDuMV +subjectivism +subjectivist/S +subjectivity/SM +sublet/SG +submerse/SbXGDN +submit/ANSGDX +suborn/NGDS +subscript/DGS +subsidised/U +subsist/GSD +subspecies/M +substation/SM +substratum/M +substructure/MS +subsume/GSD +subtend/SDG +subtitle/MSGD +subvert/SDG +succour/SGMDp +suds/Z +suffix/nSGDM +suffusion/M +suicide/SoM +sulky/T +Sumatra/M +summation/FMS +sunburn/MSD +sunglasses +Sunni/MS +Sunnyvale/M +sunroof/S +sunshade/SM +superabundance/M +supercilious/YP +supercooled +superficiality/S +superfine +superintend/DSG +supernatant +supernatural/PY +superstar/SM +superstition/SM +superstructure/SM +supervised/U +supine/PY +supplementary/S +suppression/M +supra +Supt. +Surabaya/M +sure-footed/Y +sure-footedness +surface-active +surface-to-air +surface-to-surface +surfboard/MGS +surfeit/MGSD +surgical/Y +Surinamese +surmise/DGS +surreal +Surrey/M +susceptibility/MSI +Suzanne/M +suzerain/SM +swashbuckler/SM +sweatshirt/S +sweaty/PT +sweepstake/MS +swineherd/SM +swingeing/Y +switch/DMRGS +switch-over/M +swoosh/DSG +sword/SmM +swung +sycamore/SM +syllabary +symptomatology/M +synaesthetic +synchronized/CU +synchronizer/CSM +syndicalist +synonymity +synopsis/M +synthesis/rQ9S8dM +synthetic/SY +syphilitic/S +systematise/nRSGD +systematize/NRSGnD +tabbouleh/S +tablespoonful/MS +Taft/M +taiga/SM +tail/AMCDSG +tailgate/G +take-off/SM +taker/cS +Talbot/M +Taliesin/M +talkie +tame/RTGDYS7 +tamper/rdS +Tanaka/M +tandoori/S +tangy/T +Tania/M +tans/Z +Taoism/MS +tap-dance/G +tar/DMZGS +tarantula/SM +Tarawa/M +tarsus/M +tartan/MS +Tashkent/M +Tasmania/M +tasteless/PY +taverna/S +tawny/TM +tax-deductible +Tchaikovsky/M +TCP +teaching/M +teacloth +tear-off +tease +teasel/MS +teazel +teddy/MS +teeter/dS +teetotal/R +Teignbridge +Tel. +telefacsimile +telemeter/WSM +telemetry/MS +telepathic +teletext +temperamental +temperateness +temperature/MS +tempt/SRnGDkN +tenacious/Y +tenet/SM +tensioner/S +tentativeness +tenter/M +tepidness +tercentennial/S +termini +term-time +ternary/S +terrestrial/YSM +Terrill/M +tertiary/S +Tessa/M +tessellation/M +testimony/MS +test's/F +test-tube +tethered/U +textile/SM +Thai/S +Thames +thane/SM +thanklessness +Thatcher/M +that'll +thermionics/M +thermochemical +thermoplastic/S +thesaurus/SM +Thespian/S +Thessaly/M +thicken/Sdr +thieve/GyDS +thimbleful/MS +thingamabob/MS +third-class +thirty-eight/H +thoracic +Thornton/M +threadbare +threat/SM +three-cornered +three-handed +threepence/M +threnody/SM +thrombosis/M +Thule/M +thumbnail/SM +thunderstruck +Thurman/M +thwart/SDG +thyroid/S +Ti +ticklish/P +tiddlywinks +tight-arsed +tilde/SM +tilters +time-and-motion +timeless/Y +timeslot/MS +timestamped +Timmy/M +timpanist/S +Timur/M +tingle/GDS +Tioga/M +Tipton +tiredness +tithe/SMDG +T-junction/S +Tobin/M +tog/MGSD +Tokyo/M +tolerance/ISM +toleration/M +toll-gate/SM +Tolstoy/M +Tompkins/M +tonal +tonality/SM +tone-deaf +tonguing/M +tonsillitis/M +Tony/M +toolbox/MS +toothbrush/SM +tootsie/M +top/MWwGpR1JDS +top-notch +Toronto/M +torrential +torrid/Y +torture/RDGS +torus/SM +Tosca/M +tote/GS +toupee/MS +tow-bar/MS +tow-head/SMD +townspeople/M +toxicology/3Mw +toy/MDSG +toymaker +track/GMRSDp +track-laying +tractably/I +tractor/FSMCA +tract's/F +trade-in/S +traducement +traffic-calmed +tragic/Y +train/ADGS +train-spotting +trample/DSG +transcendent/oY +transgression/M +translatable/U +translated/aU +transmission/AM +transponder/M +trapshooting/M +trash/SGD2MZ +travelled/U +treadle/DSGM +treatise/MS +treatment/KSM +trenchant/Y +Trescothick +triangulation/M +tribalism/M +tribe/SmM5 +trichina/M +trichloroethane +trigger/d +trigger-happy +trimonthly +tripe/M +tripwire/SM +trisect/SGD +trisector +trod/A +Trondheim/M +troopship/MS +troth/S +trouble/DGSM +troublemaker/MS +trousseau/M +trousseaux +trueness +Trujillo/M +trump/SDGM +truss/GSD +trusted/U +trustful/P +trusting/Y +try-out/MS +T-shirt/S +tubing/M +tubule/SM +Tuck's +Tully/M +tumblerful/S +tumbrils +tune/ACSGD +tunic/SM +Tupperware +turbinate +turbojet/SM +turboprop/SM +Turing/M +turn-buckle/SM +turnover/MS +turpitude/MS +tutorial/MS +Tuttle/M +tweet/SRGD +twenty-first/S +twenty-three/H +twenty-two +Twickenham +twiddly/T +twit/DGSM +'twixt +two-wheeler/MS +type/aASGD +tyrannosaurus/S +tyro/SM +UFO/S +Ukrainian/S +ulcerate/SGNDn +ulcerous +Ulrika/M +ultra/S +ultraconservative/S +ultra-high +ultramarine/SM +umbrage/SM +unable +unaccustomed/Y +unalterable/Y +unanimity/SM +unavailable +unbelieving/Y +unchristian +unconfirmed +uncork/G +uncouple/G +unctuousness +uncut +understandability +undertaking/M +unending/Y +unessential +unfair +unfit/DG +ungainly +unguent/S +ungulate/S +unilateralism/M +Uniondale +union's/EA +unipolar +Unix/M +unlike +unload/G +unmanly +unmarried +unmovable +unpopular +unprovable +unread/2B +unselfconsciousness +unsettle/ki +unsolder +unsound +unstable +unstinting/Y +unsure +unsuspecting/Y +untouchable/MS +unutterable/Y +Upanishads +uplift/SDG +upped +upper/S +uppermost +Uranus/M +urbanite/SZM +URL +user/aM +USSR +utensil/SM +utmost +utopian +Utrecht/M +uvula/SM +Uzi/M +vacant/Y +vacuity/MS +vacuolated +vacuum/MS +vainglorious/Y +Val/M +Valentino/M +Valenzuela/M +Valparaiso/M +valuably/I +value-added +valueless +values/fc +Vance/M +vandal/Q8MS +vanquish/RGDS +variegate/SnDGN +various/Y +varsity/SM +vascular +Vaseline/M +Vatican/M +vaunt/DGS +Vegemite +veggie/SM +vehicular +velocity/SM +velour/MS +velum/M +Venables +vendetta/MS +venomous/Y +ventilation/M +ventricular +ventriloquies +venturesome/Y +Verdi/M +veridical +verifiable/U +Vern/M +versatility/SM +versify/GNRSnD +version/MIFAS +vertebrate/SIM +vertices +vesicle/MS +vesiculate/NGS +Vesta/M +vestibular +vestry/mSM +vests/I +vex/F +vexatious/Y +VF +vibrational +vice/CSM +Vicente/M +vicissitude/MS +Victoria/M +Vidal/M +Viennese/M +Viet +viewpoint/SM +vigilantism/SM +vigorous/Y +Vila/M +vile/PYT +villa/SM +villus/M +vinaigrette/SM +vino/M +violinist +Virgil/M +virile +virtuoso/SM +viscosity/MS +visit/AdS +vista/SM +vitalized/C +vitrification/M +viva/S +vivisect/xGDS +vixen/MS +vocabulary/SM +vocation's/IFA +vocoder +voice-over/S +voltmeter/SM +voluble/Y +voluntarily/I +vomit/Sd +voracious/Y +vouch/GSRD +Vreeland/M +vulnerability/SI +vulva/M +WAC +wagon/SM +waitress/MS +Waldemar/M +Walt/MR +Walther/M +warble/GRDS +warden/MS +warmonger/MS +warning/M +Warsaw/M +washbasin/SM +washhouse/S +Washington/M +waste/Sj6 +watchword/SM +watermark/MDGS +water-resistant +Watford/M +wattage/MS +Watusi/M +wax/GMZDS +weaners +Wear +Wear-Tees +weathercock/SM +Weatherford/M +weds/A +weft/SM +weightless/Y +weightlifter/S +Weiss/M +Weldon/M +well-deserved +wellness +well-thought-of +Welshwoman/M +Wentworth/M +westbound +Western +wetland/S +wet-nurse/S +Weymouth/M +Whatley/M +Wheatstone/M +wheelbarrow/MS +wheelbase/MS +whelk/SM +whereat +where'd +whims/1Zw +whipper-snapper/SM +whiskey/MS +whistle-blower/S +white/PSTGMY +white-collar +white-out/S +Whitfield/M +Whitney/M +Whitsuntide +whoever +whore/SDGM +who're +whorehouse/MS +whorl/SMD +wickerwork/M +wide-angle +wide-ranging +wifeliness +Wigan/M +Wiggins +wild/TYPSG +wildfowl/M +Wiley/M +wilful/YP +Willamette/M +Willem +willing/UY +Willy +Wiltshire/M +wimple/MDSG +windburn/SM +Windhoek/M +winding/SM +window-shop +windowsill/SM +wine/ZMS +Winthrop +wiry/T +wisdom/MS +Wiseman +wishing-well +witch/MyDSG +with +withdrew +withstood +Witwatersrand +wizard/ySYM +wizen +woebegone +woken +Woking +Wolff/M +wolverine/MS +wonderer/M +wonderland/SM +wood/mZDS2M +woodchuck/SM +woody/T +woolliness +woozy/TYP +wordbook/SM +workfare/S +workman/M +workmanship/MS +workout/MS +WorldCom +world-view/S +worn-out +worst/D +would-be +wrap's +wreathe/S +wren/SM +wriggly/T +wrinkle/GDSMY +wristwatch/SM +write-off/S +wrought/Ic +WWW +Wylie/M +Xerxes +Xi'an/M +xylophone/SM +Yakutsk +Yalta +Yankee/S +Yankeeism +Yarborough +Yashmak +yawn/kGRDS +ye +yell/SGD +Yid +yin +yokel/SM +yo-yo +ytterbium/M +Zadie +Zaire/M +zaniness +zealously +zebra/MS +zeroes +Zetland +zip/UGDS +zircon/M +zone/ASDG +Zulu/MS +AA +Ababa/M +abaser/M +abated/U +abbot/SM +Abbott/M +abbreviated/U +abdication/M +abhor/SGD +abhorrent/Y +abjectness/S +abnormality/SM +aborter +abortive/P +aboveboard +abrade/DGVXvuNS +abrasive/MS +abreast +abrogation/M +abstracter/M +abstraction/3SM +Abu/M +abusable +acceleration/M +accelerometer/MS +accession/MDG +acculturation/M +accuracy/ISM +achieve/RSfDG +acoustician/M +acquit/DGS +acrobat/M1SW +action/IMS4A +actionable +actuation/M +acuity/MS +adaptor/S +addend/SM +addict/DSGVu +additional +additive/YSM +add-on/S +addressed/Aa +adductor/M +Aden/M +adjective/SM +admission/AM +admixture/MS +adolescence/SK +adolescent/MYS +Adolph/M +adorn/DLSG +adsorbate/M +adulate/SDNnGy +adulation/M +adulthood/SM +adventitious/PY +adventure's/a +adventurous/U +adventurousness/SM +adversarial +adversity/SM +advisability/I +advise/BLRSGDlh +advocacy/MS +aerodynamics/M +aestivate/N +AFC +affability/SM +affect/hVvNnkDiSG +affliction/SM +affluent/Y +aforementioned +Afrikaans +Afrikaner/SM +afro +agency/SM +aggressor/MS +agile/TY +aglow +agoraphobic/S +agree/dESLlG +agronomy/3SMW +ague/MS +Ahab/M +Aida/M +aide/MS +aide-mmoire +ail/LSDG +airborne +airframe/MS +airfreight/DSG +airhead/SM +airing/M +airsickness/S +airtight/P +air-to-air +aisle/DGSM +Ajax +al/AFC +Alabamian/M +Aladdin/M +alba/M +Alberta/M +Alden/M +Alec/M +ALGOL +Al-Haili +aligner/MS +aliquot/S +alkyl/M +Allegheny/S +allegory/1MWS3w +allegretto/MS +allier +allocation's/CKA +all-time +almost +aloha/MS +Alpert/M +alphabet/sQ-SW89q1Mw +alphanumerical +al-Qaeda/M +al-Sharif +altar/SM +although +altogether +alumna/M +Alvarez +amalgamate/SDG +ambassadorship/MS +ambience/M +ambivalent/Y +ambulance/MS +Amelia/M +amener +amenorrhoea/M +ammoniac +ammunition/SM +amniocenteses +amoeboid +Amos +amputee/SM +anagram/GMDS +Anaheim/M +analgesic/S +anarchist/W +anastomoses +ancestral/Y +ancestress/SM +andiron/MS +androgyny/MS +anecdotal +anemometer/SM +Anglicism/S +Anglophile/SM +angst/MS +anhydrite/M +aniline/MS +animalcule/S +animately/I +anklet/MS +Annie/M +annihilation/M +anniversary/SM +annoy/DkRSG +anonymous/Y +another/M +ans/M +answerable/U +answered/U +ante/MW +anthracite/MS +anthropomorphism/SM +anthropomorphous +antibiotic/MS +anticipation/M +anticoagulant/S +antimacassar/MS +antipathy/SMW +antiphonal/S +antiquity/SM +antiresonance/M +antislavery +antisymmetry/W +antiterrorism +Antoinette/M +anus/MS +anybody/SM +anyhow +aorta/WSM +apart/PL +apex/SM +aphrodisiac/SM +apish/YP +apophthegm/SM +apparatus/SM +appealing/U +appeased/U +appellation/M +appellative/M +applicator/SM +appoints/EA +apposite/Yx +apprehender/M +apprentice/DSGM +appropriator/SM +appurtenant +apt/TPY +Arabian/SM +arable/S +Arapaho/M +arbitrariness/S +arbour/MDS +Arbroath/M +arc/SMDG +archaeopteryx +archdiocesan +archipelago/SM +Arcturus +ardent/Y +Ards/M +arduous/YP +area/MS +aren't +Aretha/M +arguably/IU +argued/e +argument/SnMN +ariser +Aristophanes +Aristotelian/M +Aristotle/M +arithmetical +Arizona/M +armada/SM +Armagnac +Armenia/M +armlet/SM +Armstrong/M +aroma/WSM1 +aromatic/PS +arras/M +arrears +arrogate/DNGnS +arsenide/M +arterial +arteriole/SM +artful/P +arthritis/M +Arthurian +articulateness/S +artificiality/SM +artistic/IY +ascetic/MYS +ascorbic +asexual/Y +ash/SMDGZ +Ashland/M +Asia/M +asked/U +asocial +asparagus/SM +aspartame/S +asperity/SM +aspirate/SGD +aspirer/M +aspirin/SM +Assad/M +assay/GDRS +assertiveness/S +assessor/SM +asseverate/SGnDN +assigned/KACU +assigns/KCA +assimilate/DSVGnN +assimilationist +assister/M +associative/Y +assonant/S +assuming/U +assumption/M +asthmatic/S +astonish/SLkDG +Astoria/M +astronomer/SM +astrophysical +asymptomatic/Y +asymptote/1MSW +Atari/M +attached/AU +attainably/U +attained/AU +attempted/A +attenuator/SM +attitudinal/Y +attract/VuS7DGv +au +audible/YI +Augustinian +auricle/SM +Australasian/S +authenticator/MS +authenticities +authorial +authorizes/A +authorship/MS +autocross +autogyro/MS +available/P +avant-gardism +avarice/MS +ave/S +aver/DG +aviary/SM +avionic/S +avocation/MoS +avoidance/MS +avow/GSED +awestruck +awhile +axed/F +axillary +axolotl/MS +baa/GSD +Babcock/M +babe/SZM +baccalaureate/SM +backache/MS +backer/SM +backing/SM +backlash/SDGM +backlit +backplate/MS +backstairs +backtrack/RGSD +Backus +backwater/MS +badge/SRGMD +badger/d +bagginess/S +baggy/TPS +bagpipe/MRS +baguette/MS +bake/RGSDy +baking/M +baksheesh/MS +baldric/M +ballast/SMGD +ball-bearing/S +ballgame/S +ballyhoo/MDGS +balun +balustrade/MS +bandmaster/MS +bandstop +banisher/M +banjoist/MS +bank/S7RGJMD +Bantu/M +baptise/DRSG +baptistery/SM +barbarian/SM +barbarianism/MS +barbershop/SM +barcarole/SM +bard/MSDGW +Barents +barkeep/RS +barmaid/SM +Barnet/M +baronage/MS +baronet/SM +Barr/MZ +bar-room/MS +bar's +Bartley/M +bas/Sd1o +baseplate/M +basetting +basket/6SMy +Basque/MS +bassinet/MS +bate/CDASG +bater/C +batted +battle/RDLMSG +bauble/MS +BBC/M +beachcomber/SM +beard/pSGiDM +beatably/U +beaten/U +beating/M +beatitude/MS +beatnik/MS +became +beckon/Sd +bedchamber/M +bedim/GSD +bedlam/SM +bedridden +beech/SM +beefeater +beermat/S +Beersheba/M +beeves/M +befit/SGDM +befitting/Y +befriend/DGS +behaviour/aSM +behest/MS +behold/GSR +bejewel/DGS +Belarus/M +belated/P +belief/SME +believably/U +bellow/SDG +Bellwood +belonging/M +bemoan/SGD +bench/GSDM +Benedict/M +benevolent/YP +Benghazi/M +Bentley/MS +berkelium/M +beside/S +besot/SDG +bespangle/DSG +bespoken +bestir/SDG +bestow/DSG +betake/SG +bte/S +bethought +betwixt +biased/U +bicameral +bicentennial/S +bier/M +biggie/M +bikini/SMD +biliary +bimodal +bin/DGSM +binder/Z +binomial/SYM +bioengineering/M +biotechnology/w3SM +biplane/SM +birthrate/MS +bisyllabic +bitterer +Blackadder/M +blackbodies +blackmail/RGMDS +Blackshirt/SM +blacksmith/GSM +Blackwell/M +blameworthy/P +bland/TPY +blankness/S +blarney/GSMD +blaspheme/RDSZG +blatherer +blatting +bleed/RSG +blight/DGMS +blighter/M +blimey/S +blinker/d +blinks/M +bliss/6jS +blissful/P +blizzard/SM +blob/SMDG +Bloch/M +blockbuster/MS +blonde/SM +blondish +blood-brother +blood-heat +bloodline/MS +blood-money +bloodroot/M +bloodstone/M +bloodymindedness +Bloomington/M +blot/GMRSD +blotto +blow-dry/GD +blubber/dSZ +blue/TZGSYPDMJ +bluejeans +bluer/M +bluestocking/SM +bluing/M +boasted/e +boat-hook/S +boatyard/SM +bock/SGD +bodhisattva +body/pDMSYG +bodywork/MS +boggle/DGSk +boilerplate/SM +Bois/M +boisterous/YP +boldness/S +Bolivia/M +bolt/UGSD +bombast/WMS1 +bombed-out +bonfire/SM +bongo/MS +bonhomie/SM +bonny/T +boohoo/SDG +bookbindery/MS +bookcase/SM +booked/cA +bookmaker/MS +bookshelf/M +bootie's +bootleg/GSRD +borate/DMS +borderland/SM +bore/RGSkDW +boring/M +born/AU +boss/SzG2MDZ +bossism/SM +bosun/M +bouffant +bouillon/MS +bouncy/YT +bounded/P +bountiful/P +bout/MS +Bowery +bowl/R6MSDG +bow-saw/MS +boyfriend/SM +bracket/dSM +bracketing/M +Brady +brag/TSDRG +brain/GD2pMZS +brainchildren +brainwash/SGD +brainwave/S +brambly/T +bravura/MS +bray/SGD +Brazzaville/M +bread-and-butter +breadboard/DGMS +breadwinner/SM +break/eMS +breeching/M +Brett/M +bridegroom/MS +bridleway/S +briefs/C +Brigadoon/M +brighten/drS +brilliancy/SM +brink/MS +briquette/SM +Bristol/M +Britain/M +Britten/M +brittlely +brochette/SM +brogue/SM +bronchiole/MS +brooklet/SM +Bros. +brow/SM +Brubeck/M +brush/ZGSDM +brushlike +brush-off/S +Brussels/M +brutal/qQ8- +Bryce/M +BSkyB/M +BTU +Budapest/M +budgie/MS +Buena +bug-eyed +Buick/M +building/MeS +build-up/SM +Bulawayo/M +bulldoze/RGDS +bullfight/RSMG +bully/DGTMS +bumble/DRkSG +bunchy/T +bunkhouse/MS +burdening/c +burdens/cU +burgess/MS +burglarious +Burgoyne/M +burlap/MS +burler/M +burliness/S +bursa/yM +bursar/MS +bursty +busher +bushwhack/GRSD +busty/T +busyness +but/DAGS +Bute/M +butterfat/MS +butterfingers/M +buzzard/SM +byliner/M +bypath/SM +byword/SM +Byzantine +Byzantium +cabal/GDSM +caballero/SM +cabbage/DGSM +cabochon +cabstand/SM +cackle/DRSYG +Caddick/M +caddie +caeca +caecitis +caffeine/SM +cageyness +cagoule/S +calcification/M +calcimine/DSMG +Caledonia/M +calfskin/SM +call-boy +calling/a +callisthenic/S +callisthenics/M +Calvert/M +Calvin/3M +cambial +came/c +cameo/MSDG +Canaveral +cancerous/Y +candelabrum/M +candidness/S +candour/SM +cannabis/MS +canyon/SM +capable/IP +capaciousness/S +capacity/SMI +capillarity/MS +capital/-qMQs893S +capped/U +caprice/SM +captor/SM +captured/A +carbohydrate/SM +carbon/sQ9S8W-NqMn +Carbondale +carcinogenesis +card-index +cardiogram/SM +careerism/M +caresser/M +cargo/M +Caribbean +carious/K +car-jack/SDJRG +Carlin/M +Carline +Carney/M +Carnot +carny/G +Carolingian +Carolyn +carpet/dJSM +carpeting/M +carries/a +cartridge/MS +cash/DGSpM +cash-book/MS +cashew/SM +cassette/MS +casting/Mc +Castro +casual/PY +cataclysm/WSM +catacomb/MS +catamaran/MS +Catawba +catcall/DGSM +catchword/MS +catkin/SM +catlike +cattiness/S +catty/TP +caucus/S +caught/U +cauldron/SM +cause/GnDMoRSp +cautiousness/I +cavalier/YPSDG +cave/mRSMDG +caver/F +Caxton +CB +CDs +Cedric/M +Celanese +celebrant/SM +celery/SM +centenarian/SM +centreboard/SM +centrepiece/SM +centring/M +century/SM +cephalic/S +cerebral/S +cert/SF +cesspool/MS +chador +chafer/M +chagrin/MS +chain-smoke/GD +chairmanship/MS +chalcedony/SM +chalk/MGZ2SD +challenge/RDGSk +championship/SM +chancellery/SM +chance's/a +changeover/SM +Channing +chanticleer/SM +chaos/MS +charisma/M1W +Charleston +chart/RDG73MJS +charter/dr +chastity/SM +chateaubriand +Chattahoochee +cheap/TY +checkpoint/MS +cheesy/PT +chef/SM +chemistry/SM +cheroot/MS +chestful/S +chevron/SM +chicer +chicken-livered +chilblain/SM +childrearing +Chilean/S +chill/TDk2PRGMYS +Chiltern/S +chinchilla/MS +Chinese/M +chinstrap/S +chipping/M +chivalrous/PY +chlorination/M +chocoholic/S +chocolatey +choice/TSPYM +chokeberry/M +cholinesterase/M +chopstick/SM +chording/M +Chorley +chortle/RGDS +chosen +christening/MS +Christie +Christmastime +chromatogram/MS +chumminess/S +Churchillian +churlish/YP +churn/RDGSM +chutney/SM +chyme/MS +ciao/S +CID +cilium/M +Cinerama +cinnamon/SM +circa +Circe +circle/GDSM +circulating/A +circumference/SM +circumspect/Y +cissy +cistern/SM +citadel/SM +civil/s9qQ-8Y +civility/ISM +clairvoyance/MS +clamour/GMDRS +clarification/M +clarify/NDGSn +clarity/SM +Clarke/M +clasper/M +class-conciousness +classicism/SM +classicist +Claudio +clavichord/SM +clavier/MS +clean-cut +cleanlinesses +clearness/S +Cleopatra/M +clericalism/MS +clew/SMDG +click/RSGDM +cliffhanger/SM +climacteric/MS +clime/WSM +clinical/K +cliometric/S +clip/RGSDJM +cliquish/YP +clitorides +cloaca/M +cloisonn +close-hauled +closure/GDSM +clothbound +clothes-peg/SM +cloudiness/S +clouds/c +cloudscape/SM +clownishness/S +clubroom/SM +clued-up +cluster/MdSJ +cm +Co +coagulator/S +cobblestone/SDM +coca/SM +coccyx/M +cockade/MS +cockney/MS +coded/K4 +codeine/MS +coding/4 +Coelenterata +coelenterate/MS +coffee-cup/SM +coffer-dam/MS +cognisance +cognizance/AMS +cogwheel/SM +coherence/SIMZ +cohesive/YP +coke/SMDG +cokey +cola/SM +Colby +Coldfield +collide/XDGxNS +collimate/SCNDG +colonel/SM +colonialness +colonised/U +colorimeter/SMW +colourant/SM +Columbia/M +column/D3SQ8M +combustive +cometary +comfits/E +comfortably/U +comforter/SM +comic/YMS +coming/c +Commander +commando/SM +commender/AM +commensurably +commenting +commits/A +committable +commode/ESI +communicate/BDxSVvGnNu +communicates/a +communicative/P +commutable/I +Compaq/M +comparator/MS +compatible/SIY +compel/7NGSDnk +compendium/MS +compensable +compiles/A +complex/GxDYTPNXS +complexity/cM +complicate/GcDS +complicit +complicity/MS +complimentary/U +compose/CRDSXGN +composing/EA +comprehensibility/IMS +compulsive/YSP +compulsory/YS +Comte +conceitedness/S +conceive/KSDaG +conciliator/SM +conclave/S +condemn/Nn7RGDS +condemnation/M +conditioning/M +conduction/M +confab/DSMG +confectioner/Z +confessor/SM +confident/cY +configuration/AM +Cong +congener/SM +congenial/U +Congo/M +Congolese +congress/mxM5GSD +congruency/M +conk/RSD +connection/MES +connection's/A +conscious/YU +consequential/IY +consequently/I +consequentness +conservatism/SM +considerate/YnN +consignment/A +consistence/ZS +consolatory +consolidator/MS +consonant/YSM +conspirator/SoM +conspire/G +constipate/NGDSn +constipation/M +constructibility +construe/DS7G +construed/a +construes/a +cont +contemplative/PS +contemporaneity/MS +contra/yS +contraceptive/S +contrite/P +conundrum/MS +convalesce/DSG +convene/GADS +convention/SoM +convergence/SM +converts/A +conveyor/MS +convince/RGDSk +convinced/U +convoke/GDNnS +Conway/M +cooker/SMZ +cooled/c +coop/RDGM +co-operate/VSDGuNv +coordinate/DGV +Copernican +copious/YP +copula/nMSV +coracle/SM +coral/SM +cord/EGSAMD +cordial/PYS +coriander/MS +corm/SM +corncrake/M +cornstalk/MS +coronate +corporal/MS +correction/SM +corroborated/U +corrugate/DSNnG +corundum/M +cos/S +cosmic/Y +cosset/Sd +costly/TP +cote/SM +couch/DGSM +councilperson/S +countably/U +counterbalance/MSDG +counterexample/S +counterfeit/GRSD +counter-intelligence/MS +counterpoise/DMGS +counter-productive +countervail/SGD +Couperin +courgette/SM +courser/ESM +courtesied +courtesy/ESM +couscous/MS +coverlet/SM +coveter/M +cowardice/SM +cowardliness/S +cow-parsley/M +co-written +CPU/SM +crab-apple/SM +crabbiness/S +crabbing/M +crabgrass/S +cradler/M +craftiness/S +Craig +cramper/M +crane/MDSG +cranial +Cranleigh +crash-land/GD +crawdad/S +crawly/ST +crazy/YSPT +creaky/PT +creamer/Z +crease/GISCD +creating/A +credential/MS +credibility/ISM +creditor/MS +credit's +creditworthy +creel/DGMS +Creighton +crme +crescendos/C +cress/S +cretinous +crevice/MS +Crichton +crispness/S +criticism/MS +Croatian +crooked/P +cross-check/DGS +crossly +crossness/MS +cross-section/oS +crotchet/MSZ2 +crucifix/XNMS +crucifixion/M +cruise/RSDG +crumble/SJDG +crummy/T +crumple/SDG +crusade/MRSDG +crustacean/MS +cry/CRSGD +cryptanalytic +crystallographer/MS +crystallography/WM +CSEU +cu. +cuckold/MDGyS +cud/SM +cudgel/DSGMJ +culotte/S +cultivation/M +culvert/MS +cum/S +cumber/Sd +cummerbund/SM +cunning/TYP +cupful/MS +cupidity/SM +curability/SM +curator/SM +curbside +curettage/SM +curium/M +curled/U +curling/M +curls/U +curmudgeon/MYS +Currie +curry/DGMS +currycomb/SMDG +curvature/MS +curvilinearity/M +cuspate +Custer/M +customhouse/S +customised/C +custom-made +cutaway/SM +cutlet/MS +cut-off/SM +cut-out/SM +cutup/MS +cyanate/M +cycloidal +cynosure/MS +Cyrus +cyst/SWM +czarina/MS +czarist +d/to +damaged/U +Damascus/M +dancelike +Dane/S +dangerous/YP +danseuse/SM +dark/PSDTGY +dart/MGSRD +Darwin +DAT +dative/S +daughter-in-law +daunted/U +dauntlessness/S +Davison/M +deadbeat/SM +deadliness/S +deadwood/SM +deaf/PYT +deaf-and-dumb +deafness/S +death/pYMS +deathblow/MS +Debbie/M +debt/MS +Decalogue +decimation/M +declination/M +dcollet +decorum/SM +decoupage/DGSM +dcoupage +decree/SMdG +decry/J +dedicative +deeds/a +deepen/dS +defecation/M +defenceless/Y +defended/U +defiance/SM +deficient/Y +deficit/SM +defile/L +defined/U +Defoe +deg +deification/M +Deighton/M +deign/DGS +de-industrialization +deleterious/PY +deliciousness/S +delicti +delighted/P +demean/D +demented/PY +demist/G +demonstrableness/M +demonstrably/I +demur/GDS +demurral/MS +dengue/SM +deniable/U +denial/MS +denoter +density/SM +depend/BSDGl +dependently/I +depicter/M +deploy/LD7G +deployed/A +deportation/M +depreciate/DnvGkSVN +Derby/M +dereference/R +derivative/MPS +descendant/SM +descriptivism +deserve/kih +desiccator/SM +designator/SM +desired/U +Desiree +despise/SRGD +dessert/SM +destructor/M +detonator/SM +detract/DGVv +deuteron/M +Deuteronomy +develop/cdAS +deviant/MYS +devil/DLyMGS +devitalize +devolution/SM +devotee/SM +devotion/SM +dewclaw/SM +dexterous/PY +diagnosed/U +diagonal/tQ+8SY +diamondback/SM +Diane +diapason/SM +Dibley +dibs +dichloride/M +dicta/nM +dictate/DGS +dictator/MoS +die-hard/S +Dieppe +dietician/MS +Dietz +difference/IMS +digest/SKGD +digestion's/I +dilapidate/DGSNn +dilator/MS +dildo/SM +dimethylglyoxime +dimorphic +ding/zDG2Z +dingle/SM +dinky/ST +dinnertime/S +dinosaur/SM +diphtheria/SM +directional/S +director/MAS +directors' +disadvantage/i +discern/LbkSGD +discernible/I +discipline/GDSM +disconnectedness/S +disconsolate/Y +discotheque/SM +discriminate/SnNDVGky +disguise/GRDh +disjointedness/S +disjointness +disorderly/P +dispatch/R +dispensate +disproportion/N +disproportionation/M +dissatisfy +dissociation/M +dissoluteness/S +distil/NS7VnG +distributorship/M +disulphide/M +ditch/DSMG +ditherer/S +dive-bombing +diversifier/M +diversify/SGNDn +diversity/SM +divertimento/M +divide/RuDSGxVXvN +divided/AU +divides/A +divvy/DSMG +dizziness/S +DMZ +doc/RSMDG +document/NMRDGSn +Dodoma/M +does/ecUA +doff/SDG +doggerel/SM +dog-paddle +dome/SMGD +domination/KM +Dominic +Dominique/M +dona/SM +donation/M +Doncaster +Donnelly +doorpost +doorstop/SM +doorway/SM +Doreen/M +Doris +dormant +dotty/T +double-edged +doubtful/YP +doubtless/PY +dour/PTY +douse/SGD +dove/SM +doveish +downhearted/PY +downhiller +downlink/SGD +downpour/SM +downstage/S +down-to-earth +draggy/T +Dramamine +draw/SRG7J +dreaminess/S +dreariness/S +dreg/SM +dressiness/S +dressmaker/SM +Drew's +Drexel +driblet/SM +drinkable/U +drive-ins +Druidical +Druid's +Drummond/M +DTP +duality/MS +Dubuque +dull/PYGSDT +dullard/MS +dumbness/S +Dunbar/M +Dunfermline/M +dunghill/SM +duo/SM +duologue/M +duopoly/3M +dupe/RSMGD +duplexer/M +duplicability/M +duration/MS +Durham/M +dusk/GSDM2Z +Dsseldorf +dust/2MZGSzRDp +dustcart/M +Dutchwomen/M +duty/6jMS7 +Duxford/M +dwarfism/MS +dwell/GRJS +Dwight +dynasty/SMW +eagerly/c +eaglet/SM +Ealham +earful/SM +ear-splitting +earthmover/M +earthy/PT +East/RM +eastward/S +Ebrahim +EC +ecclesiology/3w +clair/SM +ecocide/SM +ectoplasm/M +Ecuadorian +ed. +Edgerton +edibleness/S +Edith +Editor-At-Large +Edmundsbury +Edna +educatedness +educationalist +eelgrass/M +e'er +EFT +egalitarian/S +Egan/M +egomania/SM +eight/HMZS +eighty-five/H +ejaculate/nDGSNy +ejector/MS +elapse/SGD +elastodynamics +electability +electrologist/SM +electroluminescent +electromagnetism/SM +electrostatics/M +elegy/MS +elephant/SM +elephantine +elfish +elicitation/M +elision/M +Ellen/M +Ellie +ellipsoidal +Ellwood/M +eloquence/SM +elucidate/VNDSGn +elucidation/M +elves/M +Ely/M +email/MDGS +emanate/DnVGSN +emancipation/M +embarkation/MSE +emboss/GDRS +embryology/S3wM +emendation/M +emerald/MS +emerita +Emil/M +Emile/MZ +emirate/MS +Emirates/M +emissary/SM +emollient/S +emphasized/c +employ/DGLSRB +employments/f +empower/LSd +empty-handed +en/7M +enable/RDGS +enact/GLSD +enacting/A +enactment/A +enamel/GMRDJS +encapsulation/M +encompass/DGS +encounter/Sd +encyclical/SM +endothelial +endpapers +endurable/U +enfeeble/LSDG +England/M +English-speaker +engrosser/M +enjoinder +enlarge/RLDSG +ennui/MS +enormousness/S +enqueue/SD +enquiry/S +enrobed +enrollee/MS +ensign/SM +entirety/SM +entitle/SDLG +entity/SM +entranceway/M +environment/o +envoy/MS +epicentre/MS +epicurean/S +episode/W1SM +epitaph/MS +epithelium/SM +equability/MS +equable/YP +equality/IMS +equilibration/M +equinox/MS +equipoise/MSDG +equiproportional/Y +equips/A +equispaced +equivalent/YS +equivocate/GDNSn +Erickson +erk +ermine/SDM +Erwin +escalator/MS +escallop/SM +escapade/MS +escapee/SM +esp/Z +espalier/SDGM +especial/Y +established/A +esteem/EDGS +Ethan +Ethel +EU +euclidean +Euston/M +evaluate/xNVDGSn +evangelist/WSM +Evansville +even/YdSPJ +even-handed/Y +evening/M +eventful/P +evocative/P +evoke/VGuvSnDN +evolutionary/Y +Ewing +exacerbation/M +exacting/P +exampled/U +Excalibur +excavation/M +excel/DGS +exchangeable +excitatory +excite/lknGNLRDSBh +exciting/Uc +exciton/M +exclamation/MS +excremental +excrete/ynDGSN +excruciate/DSNkG +excruciation/M +excursion/3MS +excursiveness/S +excusably/I +exemption/MS +exercises/c +exhale/GNDSn +exhibitionism/MS +exhibitionist +exhilarate/DSVNGkn +exhume/GDSn +exit/dSM +exorbitant/Y +expatiate/GNDSn +expedient/YS +expend/Du7VSGv +experiences +experimentalist +experimentation/M +exploded/U +exploitative +explorable +exponential/YS +exported/A +exporting/A +exposit/yXN +expunge/SGD +exquisite/YP +extended/c +extensibility/M +extensive/FY +extermination/M +extinction/SM +extragalactic +extravehicular +extremal +extricate/GnDSN +exultation/M +eye-catching +eyeglass/SM +eyelid/SM +eye-shadow +eye-teeth +eyrie's +fa/M +Fabians +faade/SM +face-saving +facilitator/SM +fading/M +Faeroe/M +faery/SM +faint/RGSPYTD +fair/DTZPSGpJY +Fairview +faithful/UY +Falk +fallen +falsifiability/M +Falstaff +familiar/9Qsq8-SY +familiarise/k +famously/I +fanatic/MYS +fang/SDM +fantastic/Y +far/d +Farmington +farmstead/MS +farrier/SM +far-sighted/YP +farthest +fascia/MS +fascinate/DGSnkN +fashions/A +fasten/dASU +fatherland/SM +faultiness/S +fauvism/S +faux +Fayetteville +feature/DMGSp +feature's/a +federate/FNGnSD +federative/Y +feeling/PM +feldspar/SM +felicitate/DGSNn +fellahin +fellate +fellatio/MS +fellator +felting/M +feminise/nSGD +feminize/nSNGD +fenced/U +Ferguson/M +Ferreira +fervent/Y +fte/SM +fetishism/MS +feverish/YP +fewness/S +FIA +fiance/MS +fibrillate/SGD +fiche/SM +fidget/SdZ +fiducial/Y +fiefdom/S +fierce/TPY +fifth-generation +film/ZS2DMG +filmy/TP +fine/CFSDAG +finer/FCA +fingering/M +fingernail/MS +firebrand/SM +fire-break/SM +fire-eater +fireside/M +fire-water +firmest +firmly/I +firmness/SM +first-born/S +first-class +first-day +Fishguard/M +fishing/M +fissionable/S +fistulous +fitness/S +Fitzgerald +fixative/S +flaccid/Y +flagellate/DSG +flagship/SM +flair/SM +flammability/ISM +flank's +flattery/SM +flattest/M +flaunt/DkGS +flaxen +Fledermaus +fledged/U +fleet/DkGSTYPM +fleeting/P +fleshpot/SM +flexes/A +flexural +flibbertigibbet/SM +flighty/TP +flinger/M +flintlock/SM +Flintshire/M +flip-flop/S +flirt/NDGZSn +float/DGZSRN +flock/DMJGS +flog/DSGJR +flogging/M +floodlit +floorboard/SM +flop/2DGSzZ +floppiness/S +flowerbed/MS +Floyd +fluffy/PT +fluid/Q8s9PSYM +fluke/SGDMZ +flung +fluoride/nMS +flyleaves +flysheet/SM +focussed/U +fog/CGDS +fhn +fold-out/SM +foliate/CGSnDN +fondness/S +fontanelle/SM +food/SM +footlocker/SM +footmarks +footwear/M +fop/GSMD +fora +foray/DSGM +forbear/MSG +foregather +foregathered +foreignness/S +forensic/SY +foreseen/U +foreshorten/dS +foresight/SMiDh +forestall/GRSD +forewent +forger/SZM +forgettably/U +forgiveness/S +forgoes +formidable/PY +form's +forsooth +forsworn +fortify/DAGS +fortuitous/YP +fortunateness/M +fortune-teller/SM +fortuning +forward/DYSTPRG +fouls/M +foundational +founding/F +foundling/SM +fourpence/M +four-wheel +foveate +foxtail/M +fragmentation/M +fragrant/Y +frail/PTY +Francesco +frangibility/SM +frangible +frankincense/MS +Fraser/M +Frazer +frazzle/GDS +free/mTSYPdG +freebase/DSG +frequented/U +frequently/I +Fresnel +fricassee/GSM +fries/M +frig/SJGD +Fritz +frogmarched +froid +frolic/SRDMG +froufrou/SM +fructose/SM +frugal/Y +frustration/M +frustum/MS +fudge/MSDG +Fujitsu/M +Fukuoka +full-blown +fulness's +functionary/MS +fungible/M +fungoid/S +fungus/M +funk/S2DGMZ +fun-loving +furious/YP +furnish/RSGDJ +furnishes/A +furniture/SM +furtive/YP +fusible +fuzz/DZMGz2S +FYI +gab/GZSD2 +gabardine/MS +gabby/T +gabler +Gabrielle +gadget/SMy +Gagarin +gaiety/SM +galactic +Galahad +galaxy/SM +gale/AS +gallant/SGDY +gallon/SM +gallonage/M +Gallup +galumph/SGD +Galveston +Gambian/S +gambol/SGD +ganglion/MW +gangrenous +gangway/MS +garble/GDS +Garbo/M +garon/SM +garden/dSrM +gargantuan +garments/f +garment's/f +garrulity/MS +garrulousness/S +Garry +garter/dSM +gasohol/S +Gaspar +gas's +gastroenteritides +Gatsby +Gaylord +gelatine +geld/SGJD +gem/SZMDG +gemmology/3M +gendarme/SM +gene/SM +general/Q8Ptq93+s-SM +generalist +generality/SM +generation/CMA +genital/YF +genius/MS +Genoa/M +gentian/SM +genus +geodesic/S +germander +germanium/M +germicidal +germinal/Y +Gershwin +gestation/M +gesundheit +Gethsemane +getup/MS +Gewrztraminer +ghostliness/S +gibbet/SMd +giddiness/S +gill/MSGD +girdler/M +giro/M +girth/GDSM +gist/M +gladness/S +glamorous/UY +glass/2D6MGZzSp +glassiness/S +glass-making +glimmer/dJS +glueing +gluon/M +glyph/MS +go/fGe +goalmouth +goalscorer/S +gobbledegook/M +godfather/SdM +godliness/S +godsend/MS +goggle-box/SM +goings-on +goldenseal/M +goldsmith/SM +golf/MRSGD +gollywog +gong/SDMG +goniometry +Gonville +Goober +Goodman +good-oh +good-tempered +googly/S +gooseberry/SM +goosebumps +gorgeous/YP +Gorham +gorse/MS +gosling/M +gouge/DRGS +Gough +gourdful/S +gourmandism +grab/RSJDG +grace/DpG6MjS +gracing/E +graciousness/MS +graduand/SM +grainer/M +granddaughter/MS +granite/MWS +Grantham +grantor's +granularity/MS +granule/nNMVS +grapefruit/M +graph/MWGwD1S +graphite/MS +grasp/Gk7DS +grassland/SM +grassy/T +gravamen/MS +graveside/S +graveyard/MS +gravid/YP +gravity/SM +gravy/MS +Gray +greasiness/S +greatness/S +Greenberg +greengage/MS +greensward/SM +Gregorian +grenadine/MS +Gretchen +griffon/M +Grimaldi/M +grimness/S +grindstone/MS +gringo/SM +grisly/PT +groove/GSDMZ +Grosz +grotto/SM +grouchy/T +ground-plan +ground's/f +groundwork/M +groups/A +grout/MGDS +growth/eSAIMcf +grunge/SZ +grunter/M +Guam/M +guard/RmGDhMiS +gudgeon/M +guessing/e +guff/MS +GUI +Guildford +guru/SM +gush/GZRSD +gutta-percha +guttering/M +Guyana/M +Gwynedd +gyps/Z +gypsum/SM +gyromagnetic +haberdasher/ZMS +Habib/M +hackle/DSMG +had +hadji's +Hadley/M +haematite/SM +haggard/PY +haggardness/S +hairpiece/SM +hairspray +Hal/M +halberd/SM +half-blood/D +halfbreed +half-century +half-cut +half-eaten +half-hardy +half-seas-over +half-term/S +halfway +halfword/SM +halide/SM +hallo/GSD +hallowed/U +hallucination/M +halve/DSG +ham/DGSRZM +hamburger/SM +Hamish +Hampshire +hamstring/SGM +Hancock/M +handbarrow/SM +handicraft/SM +handmaid/SM +handshake/SMG +handsomeness/S +handwriting/M +handy/mPT +Haney/M +hangar/SdM +hankie/M +Hanna/M +Hans +happy-go-lucky +Hapsburg/M +Harbin/M +hardboard/M +hard-hearted/PY +hard-heartedness/S +hardship/MS +hard-wire/SDG +hard-working +harebrained +harmer/M +harmless/PY +harmonica/SM +harmonics/M +harnesser/M +harp/RMDG3ZJS +harpist +harpoon/RSDGM +harrogate/M +hash's +Haskell +hasn't +hassle/DMGS +hastener/M +hasty/TP +hatchback/SM +hatred/SM +haughtiness/S +Hauptmann +Hawkins/M +hawthorn/SM +haycock/SM +Haydn/M +hazel/SM +hdqrs +heading/M +headquarters +headship/SM +headstrong +headwall/S +healthfulness/S +heard/UacA +hearted/P +heartedness/S +heartfelt +heart-to-heart +heat/RJ7MGDSh +heathendom/SM +heavenward/S +heavier-than-air +heavy-handed +hectare/SM +hectic/Y +heed/6MGDjpS +heinous/PY +heiress/MS +helicopter/dSM +heliocentric +heliport/MS +hell/MS +hell-raiser +helluva +helpfully/U +helpline/S +hemline/MS +henchman/M +henna/DMGS +heptane/M +heptathlon/S +Herculaneum +herculean +hereat +hero/W1M +Herrington +Herzegovina/M +hesitancy/SM +hesitation/M +Hewitt/M +hex/DSG +Heywood +HGV +Hickey/S +Higgins/M +high-falutin +high-risk +high-sounding +highway/mMS +hilt/GMDS +Himalayas +Hindu/MS +Hinkle +hipness/S +hire/GADS +hiss/SM +histogram/MS +hoarse/PYT +hob/SZGMD +Hoboken +hogwash/MS +Holbrook +Holcomb/M +hole/GDSM +Hollister +hollyhock/SM +holmium/M +holograph/DSZGWM +Holst +home-builder/S +homeless/P +homelike +homely/TP +home-made +home-maker/SM +homepage +homeyness/S +homicidal +homing/M +homoeostases +homogenisation +homosexual/SMY +homozygous/Y +Honecker +honorary/SY +hoofmark/S +hook/RGSMD +hooray/S +hoot/RMDGS +Hoover's +hopeful/SP +horde/MS +Horgan +horoscope/SM +horror/SM +horse/YmG5DMSp +horseflesh/M +horsefly/SM +horselike +horseradish/SM +horticulture/3SM +hosepipe +hostile/Y +hot/PDSYGT +hothead/SDihM +hotpot/M +hotspot/S +Houdini +houseful/SM +housemaid/SM +houses/eA +Houston +however +hue/SM +Hugo +humanity/SMI +humid/Y +hummable +hummingbird/SM +humus/SM +Huron +hurray/S +hurt/kjG6S +husbander/M +hydrating/CA +hydrocephali +hydrofluoric +hydrogenate/SMGD +hydrophilic +hydroponic/SY +hydrostatic/S +hydroxylate +hymnographer +hyperactivity/SM +hyperglycaemia +hyperventilate/GSnDN +hypoactive +hypophyseal +hypoxic +hysteria/MS +I +Ian/M +iatrogenic +ibex/SM +Ibiza +icecap/MS +ICM +icy/TPY +Idaho +idea/MoS +idealization/M +identifiable/U +ideograph/WMS +ides +idiolect/M +idiomaticness +idyll/SMW1 +IEE +IEEE +iffiness/S +Ignatius +ignorant/SY +ignore/GDS +ilia +ill-assorted +ill-bred +illimitable/P +illuminated/U +Imagen/M +imaginable/U +imbecile/MWS +imitate/DVGvNunS +imitative/P +imitator/SM +immanence/ZS +immunodeficient +impactor/SM +impair/LG +impart/GN +impassioned/U +impel/NRSGnD +imperil/LGD +imping/G +implausibility/M +implode/SNDGX +implore/SkDG +implosion/M +imprimatur/MS +improbable/P +impulsion/M +inauthentic +inborn +incapacitation/M +incentive/ESM +incident/Fo +incineration/M +incognito/S +income/M +incommunicado +incontinent +inconvenience/DG +increment/NMSDGo +incumbency/MS +indeed +indemnification/M +indented/U +indenter/M +indeterminable/Y +indeterminacy/SM +indicative/S +indict/LSD7G +indigenous/YP +indigo/SM +indisputable/P +individuality/MS +Indochina +industrialised/U +industrious/PY +industry/oMS +infancy/M +infectiousness/S +infer/DS7G +infest/nSDGNR +infirmity/SM +inflame/XN +infra +infrasonic +infrequent +ingenious/YP +ingeniousness/S +ingenuity/MS +Ingham +inguinal +inhalation/M +initialler +initiation/M +in-law/S +innumerable/PY +inquisitorial +inscrutable/YP +inseminate/NnDSG +insemination/M +inseparability/MS +inside-out +insidious/PY +inspectorate/MS +inspectors' +inspiration/M +instant/SYM +instantness +in-store +instructor/SM +instrument/GNoSDnM +instrumentality/SM +insularity/MS +insulated/U +insurrection/3MS +integrability/M +integrate/EADSGN +intellectuality/M +intercalate/DGVSN +intercase +interchanger/M +interconnectivity +intergovernmental +interim/S +interindex +interlayer +interleave/CGDS +interlobular +intermeshed +internet +internuclear +interpersonal/Y +inter-personal +Interpol/M +interposer/M +interpretable +interpretation/AMa +interquartile +interrupted/U +interruptibility +interstellar +intertidal +intertwine/DSG +intestinal +intestine/SoM +intractability/SM +intransigent/SY +intransitive/S +intrasectoral +intrigue/RSkDG +intro/S +introduction/MA +intrusion/M +invariant/MY +investigatory +investor/SM +inviolate/PYB +Iolanthe/M +Iona +ionosphere/SMW +Iowa +Iran/M +iridium/M +ironmongery/M +irreproachable/PY +irresolute/P +irresponsible/S +irrigate/GDNnS +irritability/SM +isolationism/SM +isolationist/W +Isolde/M +isometrics/M +itemised/U +it'll +IUD/S +I've +ivory/SM +jabber/SdrJ +jack/MDRSJG +Jacobi/M +Jacobson/M +jacquard/MS +jadedness/S +Jaime/M +jalopy/SM +Jamaica/M +jamboree/SM +James +Janeiro +jangle/DRSGY +janissary/SM +Jansen +January/SM +jato/MS +Jean +Jeep/SM +Jekyll +jenny/SM +jeopardy/MQ8S +Jeremy/M +Jericho/M +jerker/M +jersey/MS +Jerusalem/M +Jessica +jetliner's +jettison/dS +jewel/RGSMD +Jewish +Jewishness +jiff/ZS +jigging/M +jimmied +jingly/T +jinni's +jinrikisha's +jitsu +jiu +jive/MDGS +jnr. +jocosity/SM +jocund/Y +Joe/M +Johannesburg/M +jointed/EPY +joist/SMD +joky/YT +jolliness/S +Jon/MZ +Joplin +Jovanovich +jowly/T +joyride/RGMS +joystick/S +ju/y +judicious/IYP +Judy/M +jugful/SM +jugglery/SM +jujitsu/MS +ju-ju/M +jujube/MS +Julius +junco/MS +juniper/SM +jussive +Juvenal +kaboom +kaput/M +Kaufman/M +Kellogg +Kelsey/M +kept +Kermit +kernel/SM +kerosene/MS +Kesteven +kestrel/SM +ketch/MS +Keynesian +keynote/SRGMD +K-factor +khan/MS +kick-off/MS +Kidderminster +Kikuyu/M +kilohertz/M +kilowatt/SM +kiloword +Kim +kin/5SmM +kinesics +kingship/SM +Kinsey +kirk/SM +kite-flying +kitten/MdS +kitty/MS +kiwi/SM +klystron/SM +knees-up +knobby/T +knock/RDJSG +knock-out +knockwurst's +Knutsen +Konrad/M +kowtow/GDS +kraal/MS +Kremlinology +krill/MS +Krishna +krone/M +Krueger +Kurd/SM +kV +Lab +labium/M +lac/DGSM +lace-ups +lactic +lade/ZG +Laden's +lagoon/SM +laity/MS +Lakehurst +Lakeland +Lamar/M +Lambert +lame/YDPT +lamination/M +lampooner/MZ +Lancashire/M +lance/DRGMS +landowning/M +Langford +languidness/S +lapel/MS +Laphroaig +Lapp +lapwing/SM +largehearted +large-scale +largish +larva/M +lasagne/M +lash/SDMJG +lashed/U +lasher/M +latch/GMDS +latices/M +laudatory +laughter/SM +Laura/M +Laurence +lave/DSG +lavish/DPTSGY +laxes/A +lay-bys +layering/M +layover/MS +layup/MS +Lazio +lazy/GDTPY +leads/a +leap/DGS +leaper/M +learning/SM +Lebanon/M +lebensraum +lecher/SMZ +lechery/SM +LEDs +lee/SyM +leer/DGkS2 +leeway/SM +leftism/MS +leftmost +leftover/MS +legatee/MS +legendary/YS +Lego/M +legwork/MS +Lehman/M +lengthy/TP +Lenin +Leningrad +lenitive/S +Leona +Leopold +Leopoldville +Leroy +Lesotho/M +let-down/SM +lethal/Y +let's/e +lettering/M +Lev +Levi/S +lexical/Y +libel/DRSMG +liberals +Liberian/S +Lib-Lab +Lichtenstein +lier's/F +lifeboatmen +lifebuoy/S +life-force +lifelong +life-size/D +LIFO +lift-off/MS +ligation/M +light-fingered +lighthouse/SM +likeability/SM +likelihood/UM +likest +lily/SDM +Limerick/M +limitless/PY +Lincoln/M +Lind/M +Linda/M +linden/MS +linebacker/MS +links/U +Linotype/M +lip/pSDZGM +liposuction/S +Lipscomb/M +lip-service +lipstick/MS +liquidation/M +lira/M +listen/rdS +listeria +literati +litter/d +littoral/S +liveability/SM +livery/DmMS +livestock/MS +Lloyd/M +loath/JGDPR +loathsome/PY +lobe/DSM +lodges/E +logging/M +loincloth/MS +lollipop/SM +Lomb/M +longer-term +Longfellow +longitudinal/Y +long-playing +long-sightedness +longsword +long-tailed +longways +lookahead +looking/c +loop/DMZSG +looper/M +loophole/SMGD +lord/DcSMG +Lorentz +Lori/M +Louie/M +Louth/M +Lovejoy +lovestruck +loyalism/SM +Lubbock +lucid/YP +lucubrate/GnSND +luggage/MS +lugsail/MS +lugubriousness/S +lumbering/M +luminescent +Luna/M +lunacy/SM +lunchroom's +lune/NM +lunge/SM +luridness/S +lusty/TP +lutetium/M +Lutheran/MS +Luxembourg/RM +luxuriation/M +luxury/SM +Luzon/M +lyce +Lyn +lynch/GRDSJ +Lynchburg +Lyon/MS +lyrist +ma'am +macadam/QMS +Macao +macaronic +macer/M +Machiavellian +machinate/GSD +machinelike +macron/SM +Madagascar/M +Maddox +Madeline/M +Madonna/M +maestri +magazine/MGDS +magenta/MS +magistracy/SM +magnesium/M +magnet/WqQ8-SMt+1 +magnetodynamics +magnetron/M +magniloquence/SM +maharani/SM +Maidstone/M +maillot/SM +mail-order +mainstream/SM +majolica/MS +malathion/S +Malawi/M +Malcolm/M +malfeasance/MS +malice/SM +malign/YRSDG +malodorous +maltreat/LDSG +Mammon/M +mammoth/SM +man/61YRGDMjW +Managua +Manasseh +Mandelbrot/M +maniac/SM +manifest/DYSGNn +Manitoba +Manitowoc +Mann/M +mannerism/SM +mannerist/M +mannerly/P +mannish/PY +manoeuvrability/SM +manoeuvre/SBMGDJ +man-of-war +manometer/SM +manqu/M +mantelpiece/SM +manufacture/RBSGJD +Manville +maps/A +marabout's +maraschino/MS +marbler/M +Marcel +Marilyn +marimba/MS +marjoram/MS +mark/RmDJhGSM7 +markdown/MS +marlinespike/SM +Marmite +marmoreal +Marrakesh +marriage's/A +Marriott +Marseilles +marsh/MZS2 +marshland/MS +marshy/PT +mart/MGSD +martyrdom/MS +Mary/M +Marylebone/M +Maseru/M +massage/DMSG +masseur/SM +mass-producing +mastoid/S +matching/c +matchless/Y +Mateo/M +materialist/W1 +materiality/IM +Mathis +Matsushita +mattress/MS +maturer/M +Maud +Mauritania/M +maw/DSGM +Maxtor/M +Maxwellian +Mayan/S +mayflower/SM +mayfly/MS +mayhem/MS +Mayo/M +mayoral +mayoress/SM +McConnell/M +McDougall/M +McFarland/M +McKinney/M +meadow/SM +meaning/M6jpS +meantime +mechanise/BnRSDG +mechanize/nBDNG +mediaeval/3MYS +medial/S +Medici +medico/SM +medico-legal +meditate/VSGDvuNn +meerschaum/MS +meeter/M +megavolt/M +megawatt/SM +mle/MS +melodic/S +melodramatic/S +Melvin +memoires +Mendelssohn +menfolk/M +meningeal +meningitis/M +Mensa +mensuration/SM +mentalist +mentionable/U +menu-driven +Menuhin/M +Mercedes +merchandise/RSDGJM +merciful/P +mercifully/U +mercurial/S +meringue/MS +meritocratic +Merrill +Merritt/M +mesmerized +Mesopotamia/M +mesozoic +messiness/S +metalinguistic +metalworking/M +metatarsal/S +metatarsi +metavariable +methodicalness/S +Methodism +methyl/SM +metropolis/SM +Mexico/M +Meyer/S +Meyerbeer +mezzo/S +mi/C +Michael/SM +Michaelmas +Mick/M +micro/S +microanalyses +microanalytic +microprocessor/MS +microvolt/MS +midday/SM +middlebrow/SM +middle-class +middle-of-the-road +middler +Middletown +midmost/S +midterm/MS +midtowns +midwife/My +migraine/MS +milkiness/S +milky/TP +millennialism +Millgarth +millibar/S +millinery/SM +million/MHS +Millward +MIMD +Mindanao/M +mind-reader +minds/A +mingle/FGDS +minidress's +minimalism/S +minimalist/W +ministration/M +mintage/MS +Miocene +MIPS +miracle/MS +Miranda +Miriam +mirror/dMS +mirth/6SpMj +misbehaver/M +misfeature +mishap/M +mishmash/MS +missions/4 +mission's/A4 +mistiness/S +mistral/SM +mistruster/M +mists/C +mitigated/U +mitigation/M +mks +mobber +mobile/IQ-+9stq8 +mode/FMS +models/A +modernness/S +modi vivendi +Mogadishu/M +Mohawk/M +moil/GSD +Moldova/M +Molokai +momentousness/S +momma/S +monastery/MS +monaural/Y +Monmouthshire/M +monochrome/MSW +monoclinic +monogamous/Y +monolith/S1MW +monomaniac/SM +monotheism/MS +Monsieur/M +Monsignori +monstrosity/MS +Montevideo/M +Montezuma +Montmartre/M +moonrise +mopish +Morant/M +Moravia +morgue/MS +Moriarty +moron/WM1S +morphia/S +Morrison/M +mortgagor/MS +Mortimer/M +mosque/MS +Mossberg/M +motherliness/S +motile/S +mottler/M +mould/2MZJDRGS +mouldy/TP +mournful/T +mouth/M6ZDGS2 +mouthful/SM +mouthwatering +mouthy/PT +move/ARSDG +Mozart/M +Mozes/M +MP3 +mph +MST +Mt +mudslinging/M +Mueller/M +Muenster +muesli/M +mugshot/S +mulberry/SM +mull/SDG +mullet/SM +multicellular +multidimensional/Y +multiform +multilingualism/S +multimedia +multiplex/CGDRS +multiplicand/MS +multi-site +multitudinous/PY +multi-user +mumbo +mummer/Z +munch/DMRGS +munition/DSG +murky/T +Murphy/M +murrain/SM +Murrow/M +muscle-bound +muscular/Y +musk/ZM2 +Muskegon/M +musket-ball +must/zZS2 +mustang/MS +mustard/SM +must-have +mutilate/GnSND +mutineer/MS +muumuu/SM +muzzle/DGUS +mW +Mycenaean +myelitides +Myra/M +Myrna/M +nadir/MS +nag/RDSGM +Nakamura/M +Nancy/M +nap/pRSZGMD +Napier/M +narrator/MS +Nasser/M +Natasha/M +nation/M +navigable/P +nay/SM +Nazareth/M +nebular +necroses +needed/U +needer/M +needlepoint/SM +needlework/MS +negativeness/S +Negev/M +Negroes +Nehru/M +neighbourly/P +neonatal +neoprene/SM +Nepalese +nepenthe/SM +nester/M +netball/M +nethermost +nettle/MSGD +neurasthenia/MS +neurology/13MSw +neurone/S +neurotransmitter/S +neutral/Q8-SsY +neutralism/MS +Nevis/M +newbie/S +new-found +Newfoundland/RM +newish +new-laid +newline/SM +Newry/M +newsboy/SM +newsdealer's +Nguyen/M +NHL +niacin/MS +nib/SGMD +nice/TPY +nickname/MGDS +nighthawk/MS +nightspot/SM +nightwear/M +NIH +nihilism/MS +Nike/M +Nils +ninepins/M +nineteen/HSM +ninety-four/H +Nineveh/M +nit/SM +nitre/MNSnW +nitride/SM +nitroglycerin/M +Nixon/M +Nkrumah/M +Nomi/M +non +non-agricultural +non-aligned +non-allergic +non-competing +non-contagious +non-critical +non-cumulative +non-custodial +non-destructive/Y +non-discriminatory +non-drying +non-executive +non-exempt +non-intellectual/S +non-linear/Y +non-logical +non-magnetic +non-person/S +non-professional/SY +non-profit-making +non-proliferation/S +non-racial +non-resistant/S +non-response +non-scoring +non-singing +non-singular +non-smoking +non-specializing +non-starter/S +non-successive +non-sympathiser/M +non-tarnishable +noon/SM +noonday/SM +Nordstrom/M +normalize/CGSD +normalizer/S +Northfield/M +north-north-east +Northumbria +north-west's +no-show/S +nostalgic/YS +nosy/TYP +noteworthy/P +nothing/PS +nourisher/M +nouvelle +Nov +novelette/SM +now +noway +Np +nubile +nuclease/M +numismatics/M +numismatist/MS +Nunavut +nuptial/S +Nyquist/M +oar/DSM +oarlock/SM +Oberon/M +obfuscate/DNnyGS +obit/MS +obliqueness/S +obliviousness/S +obloquy/M +oboe/SM +obscure/NSDTGYP +obsequies +observance/MS +obsession/M +obtrusive/UY +occasional +occupational/Y +occupied/U +ocean/MWS +ocean-going +Oceania/M +o'Clock +octet/MS +octoroon/M +oculist/SM +odorous/Y +oedematous +off-air +officeholder/SM +officer/d +offish +Ogden/M +O'Hara +oilseed/SM +okay/DMG +old-age +olden +old-fashioned +oleomargarine/SM +oligarchy/SM +olive/MS +Olivier/M +Ollie/M +ombudsman/M +omega/MS +omnivorous/YP +once +oncogene/S +oncologist/S +one-half +oneself +one-sidedness +on-street +ooze/DZSG +OPEC +open-and-shut +open-eyed +openness/S +opportunity/MS +opposition/M +optician/MS +optionality/M +optometry/SMW +oral/S +orangery/SM +orang-outang/S +oration/M +oratory/SM +orbiter/S +orchid/SM +ordains/K +Oregon/M +Oregonian/S +Orestes +organdie/MS +organelle/SM +organisation/oM +organism/MWS +organization/oM +organometallic +orig +Orlando/M +Orpington +orthodontic/S +orthodoxy/SM +orthogonal/Q8q-Y +orthorhombic +OTB +otherwise +OTT +outboast +outcry/M +outdo/G +outermost +outfox/G +outline +outpace +outpoint/DG +overbid/G +overdraw/G +overgraze +overgrow +overlier +overshoe +overtime +overwhelm/k +owlet/MS +oxidizing +Oxonian +oxygenate/DMGS +oxygenation/M +pace/DRMSG +pacemaker/SM +package/JRGDMS +packer/SM +packsaddle/SM +Padraig/M +paean/MS +paediatric/S +pagoda/SM +paid-up +painkilling +Pakistani/S +palace/SM +palaeobotanist +palaeobotany/w +palaeography/MSw1W +Palau/M +pale/DTSYG +pales/I +palliative/S +palmetto/MS +paltry/TP +panacea/MS +panama/S +Panamanian/S +pancreas/SM +pan-European +pangolin/M +panjandrum/M +panther/SM +pantograph/SM +Panza/M +Paolo/M +papilla/yM +papyri +papyrus/M +paradisal +parallel/S +paralleled/U +paramour/MS +parathion/SM +paratroop/RS +paring/M +parishioner/MS +Parisian/S +parliament/MS +paroxysm/MS +parrakeet's +parricidal +parsec/SM +parsonage/MS +partaken +participation/M +particleboard/S +partition/MGDS +partizan's +partly +partook +paschal/S +passage/DMSG +passenger-mile +passim +passivity/IS +passmark +paste/SM +pastrami/MS +pasts/A +pat/DSMZG +patriarch/ZM +patriarchal +patronize/k +pay-bed +peal/SAGD +Pearson/M +peashooter/SM +pecuniary +pederasty/SM +pediment/ISM +peeling/M +peen/SGDM +peerless/PY +pelagic +pelican/SM +pellucid +pendulum/SM +penetration/M +penguin/SM +penile +penitent/ISY +penny-pinching +pentecostal +pepperoni/S +peppy/PT +perambulator/SM +percentage/SM +perch/DGMS +percuss/DNvuSGXV +percussion/3M +percussion's/A +perfidious/PY +perforate/SNDGn +perforation/M +perfumer/Z +perhaps +perils/I +peristalses +peristyle/MS +peritoneal +periwinkle/MS +permafrost/MS +permissibility/M +perpetuate/GnSDN +perpetuity/SM +perquisite/MS +persecution/SM +persistence/SM +personality/SM +pertness/S +Peru/M +pessary/S +pestiferous +Peterhead/M +petite/PS +petrel/SM +petrographic +petroleum/M +pettifog/RGDS +petunia/SM +pewee/SM +phaeton/MS +phagocyte/MS +phantasy's +Pharisaic +philodendron/MS +philosophy/w1sWQ8S9M +phlebitides +phoenix/MS +phonemic/S +phonology/13wSM +phosphine/M +photochemistry/M +photoengraving/MS +photograph/R1GZDWSM +photolytic +photoreceptor +phrasal +pianoforte/MS +pibrochs +picked/U +Pickering +pickle/DSMG +picoseconds +pictorial/YPS +piffle/DSMG +pigeon-fancier/MS +pigment/DNnG +pigmentation/M +pikemen +pilaster/MS +pilau's +pilgrim/MS +pilgrimage/MSDG +pill/SM +pillbox/MS +pillion/MS +pillow/GDMS +pilothouse/SM +pimiento/MS +pimpernel/MS +pince-nez +pincered +pincher/M +pineapple/SM +pinfeather/SM +pinhead/SDiM +pinky/S +pinning/fS +pinstripe/DSM +pipe/MS +pistol/SDGM +pistole/M +pitch/RGDS +pitch-and-toss +pithiness/S +pithy/TP +piton/MS +pittance/MS +pity/SGMRjpklD76 +pivoting/M +pix +pixie/SM +place/EDRSLG +placental/S +plainchant +plainness/S +planting/S +plantlike +plant's +plasm/M +platitude/MS +platoon/GMDS +plaudit/MS +play-acting/M +playgoer/SM +plea/MS +pleading/M +pleas/SkDGJ +please/EGDS +plenty/M6j +plied/AIF +plight/DGMS +plighter +plodding/Y +plumpish +plunderer/S +plunk/RGDS +plushy/T +plywood/SM +PM/M +po/QY +pocketknives +podium/SM +poetic/S +poignant/Y +pointillist/MS +polariscope/M +politicking/MS +polka/DGSM +pollinator/MS +polo/MS +polonaise/SM +polonium/M +polyethylene/SM +polymer/Q8-qMS +polynomial/MSY +pomegranate/MS +pompadour/SMD +pompousness/S +poncho/SM +ponderer/SM +pong/D +pony/SM +pool/GSDM +popgun/SM +popularities +population/CMc +populist/SM +porcupine/SM +portage's +ported/A4EFCI +porticoes +port's/A +pose/FNCRxDGSEX +poses/IA4 +post-doctoral +post-horn/MS +postilion/MS +post-impressionist/W +postprandial +post-town/MS +potent/YIS +potful/SM +pothole/SMGD +pot-pourri/SM +pots/C +pottery/SM +potty/TS +Poulenc/M +powderpuff +powered/cf +powerhouse/SM +powering/c +praiseworthy/P +praxes +prayerful/P +PRC +prebendary/M +precariousness/S +precept/VvMS +precise/NPIXY +preciseness/IS +prefect/MS +prejudice/SDMG +preliterate +premeditated/U +premier/MS +pre-process/G +presbyter/MZS +presbyterial +prescriptivism +presser/MS +presser's/I +pressing/YS +pressmen/M +prestidigitate/Nn +prestidigitator/M +presumer/M +pre-teen/S +pretentiousness/U +preterite/M +prevaricator/MS +pre-war +pricer/MS +prickly/T +pride/DGj6SM +Priestley/M +primitivism/M +primp/GSD +principality/SM +print/IDAGSaKc +printout/S +prise/FSAGD +prissiness/S +prize/M +prizefight/RJSMG +pro/SM +pro-American +probably/I +probe/BnDGlS +proboscis/SM +procession/M +procrastinate/SNGDn +prodigy/SM +produces/e +producing/e +productive/UY +proffer/dS +proficiency/SM +programs/A +prolonger/M +promise/FRkDGS +prophesy/RDSG +prophet/1WSwM +propulsive +propylene/M +prosody/WSM +prospectus/MS +prostate/SM +prostitute/MGDS +prostration/M +protectionism/SM +protective/SY +proteolytic +protozoon's +protraction/MS +provenance/SM +proverbial +providence/SIM +provost/SM +prudishness/S +prune/DGRSM +psych/1GSWDw +psycho/SM +psychophysical/Y +psychotropic/S +publicised/U +publicized/U +public-spirited +pudenda +Pudsey +puerile/Y +puff/RSZD2MG +puffery/M +pulsation/M +pummel/DGS +punditry/S +punster/SM +pure/DMS +purer/I +purge/DRSGNV +puritan/wS1M +purl/GSDM +purloin/SDG +purloiner/M +purplish +purposefulness/S +pursuant +pursue/DRSG +push/SR72GzDZ +pushcart/MS +push-pull +putrid/PY +pyaemia +pygmy/MS +pyramidal +pyrimidine/SM +pyrolyse/SW +pyroxene/MS +Qa'ida/M +qt +quadrangle/MS +quadrilateral/S +quadriplegia/SM +quadruped/SM +quaff/DSG +quagmire/SM +quake/SGZD +qualification/EM +qualm/SM +quarterer/M +quarterstaff/SM +quartic/S +quasi +quaternion/MS +quay/SM +queasiness/S +quest/ADSRGM +questioned/AU +quiescence/SM +quietness/S +quintet/SM +quit/RSGD +quoin/DSMG +quorate/I +quotable +rabbinic/Y +rabid/PY +RAC +radar/MS +radical/SQ +radiochemistry/M +ragamuffin/SM +rage/eSMGD +railer/M +railing/M +raillery +rain-shadow/SM +raise/RGDS +ramble/kJDRSG +ramekin/MS +ramify/nSDGN +ramjet/SM +rampart/SM +Ramsay/M +Ranchi +rand/2ZM +rapacious/YP +rape/SM3 +Raphaelite/SM +rapprochement/MS +raspberry/MS +ratio/SM +rational/s8-39Qq +rattletrap/MS +raunchy/TY +razorback/MS +razorbills +readout/MS +realness +Realpolitik/M +rearguard/MS +reasonably/U +reassemble/Y +receipt/GMDS +receive/DRGS +received/U +recessional/S +reciprocation/M +recite/R +recompose/D +recompute +reconcilable/UI +reconsign/G +record/RJ37 +recouple +recreate/x +recrudescent +recto/SyM +rector/SMF +rectory/SM +recyclable/S +redecorate +redeemed/U +red-faced +redirection +redolent +redound/GDS +reedy/PT +reel/SRGDM +refectory/MS +reference/CDSG +reflate/N +reflexiveness/M +reflexology +reformism/M +regalia/M +regicide/SM +regimen/SM +Regina/M +register/KdNSn +registrar/SM +regress/XGVDvSuN +regularity/IMS +rehabilitate/DNVGSn +rehearsal/SM +rehouse +rein/GDM +reinforced/U +relater/SM +relationship/MS +reliably/U +remind/G +remobilise/B +remorsefulness +remorseless/YP +remunerated/U +Renfrewshire/M +rennet/M +renouncement +renumber/d +repairs/E +reparation/SM +repatriate/GnDNS +repeat/BRDGh +repent/SDG +repletion/M +reported/faU +repository/SM +reprehensible/Y +represent/anNGSD +representable +repress/NuvXV +reprisal/SM +reproacher/M +reprobate/GD +reproducible/U +repudiator/S +repulsion/M +re-release/DGS +resection/G +residence/MZS +residue/SM +resiny +resistible/YI +re-site/SDG +resolute/IY +resonant/Y +resourceful/P +respectfulness +restive/P +restraint/MS +reticulation/M +retract/DG +retreat/G +retrofire/SM +retrofit/GSD +retrospect/MvV +return/7 +reunion +reveal/RSD7Gk +reverential/Y +revocable/I +rewarding/U +rewed/GD +rework/7 +Rhee/M +rhenium/M +rheostat/MS +rhetorical +Rhine/M +Rhinelander/M +Rhode/S +rhombus/SWM +Rhum/M +rhymester/SM +riboflavin/M +Ricardo/M +Richardson/M +rickshaw/MS +Rico/M +ridiculer/M +righteous/UY +rightish +right-wing +Rinaldo/M +ringworm/SM +rink/MS +riper +ripping/Y +Rita/M +rite/SM +ritual/QS8YM +RMI +roadblock/SM +road-hog/S +road-test +roadwork/SM +rockfall/S +Rockford/M +Rockwell/M +rocky/T +rod/SM +Rodrigo/M +rollick/SGkD +romantic/8Q3MYS +Rome/M +Rona/M +Ronan +Rontgen +room-mate/MS +roomy/PT +rootlet/MS +rosemary/M +rostrum/SM +rottenness +rotunda/SM +roughen/dS +roughneck/SM +roundworm/MS +route/aDSA +routing/M +Rowan/M +rowdyism/SM +rowel/MGDS +RPO +RSC +rubber-stamp/DG +rubdown/SM +ruction/SM +ruddy/PT +Rudolf/M +Rudolph/M +Rudyard/M +ruffian/SM +ruffled/U +Rufus/M +rug/hSMDi +runaway/S +runners-up +rural/Y +rurality +russet/MS +rusticity/S +Rutland/M +Rwanda/M +SA +sabbatical/S +saboteur/SM +sabra/S +saccharin +sachet/SM +Sachs/M +sack/M6JS +sacramental +sacrilege/MS +sacristan/SM +saddlebag/MS +SAE +safekeeping +safflower/SM +sailborders +sailing-ship/SM +Salas/M +salient/Y +salinity/SM +salivate/NDSG +sally/DMSG +saloon/SM +salt/CSDG +salter/SM +salt-spoon/MS +salve/RMSNnG +sampled/c +Sampson/M +Sanborn/M +sanctimony/SM +sanctioned/U +sandbar/S +Sandusky/M +sandy/T +sangria/MS +sanitary/UI +sapience/M +Sara/M +Saran/M +sarong/SM +Sasha/M +satanic +satchel/SM +satire/WQ8wM1S3 +saturnine/Y +sauna/MS +sawdust/M +sawn-off +saw-pit +Saxony/M +SBA +Scala/M +scale/DAGS +scaled/U +scallywag/SM +scan/ADSG +scansion/M +scarceness +scarer/M +Scarlatti/M +scatterbrain/MDS +scenarist/MS +scented/U +scentless +sch. +scheduled/UA +scheduling/A +schemata +schismatic +schlep/GDS +schoolbook/MS +Schumann/M +Schwartzkopf/M +scissoring +scold/DRJSG +scoliosis +scone/SM +scorch/RSkGD +scoreless +scorn/jDRMG6S +scornfulness +scourge/SDMG +scramble/UGCSD +scratch/D2zJZRSG +scratched/U +screechy/T +screwdriver/MS +scribe's +Scripps/M +scriptwriter/MS +scrotum/M +sculler/Z +sculpture/GDoSM +Se +sea/cS +seabed +sea-chest +seagull/S +seahorse/S +seamier +seamlessness +Sean/M +seaport/MS +sear/GSDk +seasonal/UY +seat's +Seattle/M +secant/MS +seclusion/M +second/RGLSYD +second-hand +second-rate +sectarianism/MS +sectary/SM +sedan/SM +Sedgefield/M +seedbed/MS +seedling/SM +seek/GRS +segment/GonNMSD +segue/DSG +Seiko/M +selenography/M +self-closing +self-consistent +self-control +self-correcting +self-determined +self-esteem +self-evident/Y +self-feeding +self-governing +self-immolation +self-important +selfish/UY +self-knowledge +self-locking +selfness +self-restraint +self-revelation +sell-off +selvage/SM +semblance/AMES +semi-annual/Y +semi-automatic +semi-conscious +semiquavers +semisweet +semi-weekly +sempre +Semtex +send-off/S +senescence/M +seniority/SM +senna/M +sensational/Q83 +sensibleness +sensualist/MS +sent/FEKUA +sentience/IM +sentimentalist +septa/M +sepulchral +sequences/FA +sequestrate/SDG +Sergio/M +Seri/M +sermon/Q8SM +settable/A +seventy-five/H +seventy-seven/H +sex-linked +sexpot/SM +sextillion/M +sexy/T3 +sforzandi +shade/MDpJSZG2 +shaded/U +Shaffer/M +shaggy/T +shakeable/YU +shaman/MS +Sharon/M +sharpness +Shasta/M +shatter-proof +Shavian +shear/RDGS +sheathing/M +sheave/DSG +sheeplike +sheepshank/SM +sheet/DSMG +Shelagh/M +shelf/6M +shelflike +Shem/M +Shenandoah/M +sheriff/SM +Sherpa/SM +Sherwood/M +shiatsu +shiftlessness/S +shifty/TP +shin-pad/SM +ship-fever +shipowner/MS +shipwreck/GMDS +shirt/DpSMG +shitty/T +shiverer/M +Shockley/M +shod/zZ2 +shoemaker/SM +shoestring/SM +shooting-break +short-range +short-winded +shorty/M +Shostakovich/M +shotgun/MS +shot-put +showroom/SM +shrapnel/M +shrike/SM +shrimp/SM +Shropshire/M +shunter/M +shy/DTSG +Siam/M +Sib/M +sibilance/MZ +sic/TDG +siccative +sickbay/M +sick-benefit/SM +side/ISAKef +sidebar/MS +side-bet +side-door +side-on +side-stroke/SDMG +sidle/DSG +sightliness/U +Sihanouk/M +siltation/M +Silurian +silver/dMZS2 +silversmith/SM +Simla +Simms/M +Simone/M +Singaporean/S +singlet/SM +sing-song +sinless/Y +sins/A +Siobhan/M +Sisyphean +Siva/M +sixth-former/S +sixty-nine/H +sizzler/M +skein/MS +skeleton/MS +skew/DPRGS +skew-eyed +skiff/MS +skip/RSDG +skyless +sky-writing/SM +slack/DGTRPYS +Slade/M +slain +slapstick/M +slash/SDGR +slave-bangle +sleep/R2MZGSzp +sleepwear/M +slenderer +Sligo/M +slink/GZS +slippered +slipshod +sliver/dSM +slobber/ZdS +Slocum/M +sloth/6Mj +Slovene/S +Slovenian/S +slovenly/TP +sludge/ZM +sluggard/SM +slump/GDS +smallish +smarty-pants +smearer/M +smiter/M +smock/DGSM +smother/Sd +smoulder/Skd +smuggle/RSGJD +Sn +snafu/MS +snail/SM +snakebite/SM +snaps/U +snatch/GDRS +Sneed/M +snoopy/T +snore/GDRS +snowbound +snowfall/MS +snowstorm/SM +snowy/T +Snyder/M +soak/DGJS +so-and-so/M +soberer +soberest +social/Q8s39Sq-Y +socialite/ZSM +Sofia/M +softly-softly +soft-spoken +Soho/M +sojourn/RMDGS +solenoidal +sol-fa +solicitousness +solicitude/MS +solider +solidest +Sol's +solutes/E +solute's +solution/ASME +Somalia/M +somebody/SM +somebody'll +sometime/S +somewhat +somewhere +sommelier/SM +sonatina/SM +songster/SM +sonnet/MS +sophist/S1yMWw +sorcerer/MS +sottish +souffl/SM +sought-after +soul/pS6Mj +soundness/U +soundproofing/M +south/M +south-east +south-Easterly +Southend-on-Sea +southward/S +south-West/M +spaceship/SM +space-time +Spackle +Spain/M +spam/RDG +Spaniard/SM +spark/DYGZSM +sparling/SM +spate/SM +spatio +speakership/M +special/Q-8q3S +specialism/MS +specialist/W +specialness +specificity/S +specify/SBl1nRDWNG +spectacle/DSM +spectral +specular +speculate/NDnSvVG +speculation/M +speedy/TP +speleologist/S +spent/Ufcea +spermatozoon/M +spermicidal +spheroid/oMS +spice/DGSZM +spiderwort/M +spillover/SM +spilt +spiracle/SM +spiritualism/MS +spirituality/SM +spiteful/PY +splenetic +splutter/dS +spool/MRSDG +spoonerism/SM +spoon-feed/SG +sportive/P +sportsman/Y +sportsmanship/M +spot/2GDRSZzMp +spotted/U +springbok/MS +spring-clean/D +spring-loaded +sprout/DGS +spun +squadron/MS +squalid/YP +squander/dS +square/PMTDSYG +squashy/TP +squawk/RMDSG +squeaky/T +squid/MGDS +squinter/M +squireling +SS +SSE +SSW +st. +stabling +stably/U +stadium/SM +Stafford/M +stage/SZBM2 +stagnancy/MS +stagnate/nNDSG +stalagmite/MS +Staley/M +Stamford/M +staminate +stanchion/SM +stand-in/S +Stanley/M +Stanton/M +Stanwood/M +starch/SzMGD2Z +stationariness +stationery/MS +status/MWS +statutory/Y +steadfast/PY +steady-going +steamboat/MS +steel/DMGZ2S +Stefanie/M +stein/MS +stellated +stepchild/M +step's/aI +steradians +stereography/MW +stereoscopy/M +Stevenson/M +stew/DMGS +stiff/YPTS +stigmata +stinky/T +stipend/MS +stirring/Y +stocked/f +stockinet's +stockpile/DSG +stock's +STOL +stomachful/S +stomachs +stonecutter/MS +stoner/M +stopgap/MS +storehouse/MS +stowaway/SM +strangulate/GnSND +stratagem/MS +Stratford/M +strawberry/SM +stray/GDSM +streamline/GDS +strenuous/YP +stress/cD +stressing +stretched/c +stride/MSG +strident/Y +stringency/S +striper/M +strive/DSGJ +Strolz/M +structuralist +Stuart/MS +stubby/T +stud/DSMG +studied/U +stuffs +stupidest +stupor/MS +stutterer/S +styli +stylish/Y +subaltern/MS +subcultural +subcutaneous/Y +sublunary +submerge/GDS +submersible/S +submicroscopic +suborbital +sub-Saharan +subservience/M +subsoil/MS +subtenancy/SM +subtype/SM +suburb/SM +suburbanite/MS +subversive/PSY +successive/P +successor/SM +Sudanese/M +suffocate/SGkDnN +suffragette/MS +sugar/dMpS +suggestive/P +Sukarno/M +sultan/SM +summer/dZ +summons/SGDM +sunbonnet/MS +sunburnt +sun-dried +sunflower/SM +sung/U +sunlamp/S +sunlit +Sunnite/MS +sunset/SM +supercomputer/MS +supercomputing +superior/SMY +superiority/SM +supermodel/S +superstore/S +supposed/Y +supremo/M +surcharge/GDSM +Surinam/M +surrender/Sd +survival/SM +Susan/M +Susanne/M +suspecting/U +suspense/M6 +suspension/M +Susquehanna/M +Suzette/M +Sven/M +swaddle/DGS +SWAK +swampy/T +swank/GDT2ZSz +Swanson/M +swarm/MDSG +swatch/MS +swearword/MS +Swedish +sweetbread/SM +sweetened/U +sweptback +swim/SRG +swinishness +swoon/DSG +swore +Sydney/M +syllabification/M +symbiosis/M +symbiotic/Y +symbol/13WQ8-qSwM +synclinal +syndrome/SM +synonymousness +synonymy/SM +syntax/SM +synthesise/ADGS +syrupy +system/W1SM +systematic/S +systemic/Y +Ta +table/MSGD +tablecloth/SM +tabloid/SM +tabular/Y +tactile/Y +tactility +taffeta/MS +Tagalog/M +tailor/dSM +Taipei/M +take/RfGSJ +takeaway/S +takes/IacA +taking/Aac +talebearer/MS +tally-ho's +Talmud/W3M +tamarack/MS +tank/GMR6DS +tantalum/sQ-98qM +Tantalus/M +tantamount +taper/d +taramasalata +tardiness +target/dSM +tarragon/MS +tarry/DTSG +Tarrytown/M +tasting/S +Taunton +tauten/dS +tawdry/PTY +taxies +taximeter/SM +Taylor/M +TDD +tea-leaves +tearaway +teaspoonful/MS +teazle +technocrat/WS +Teledyne/M +telefax +telegraph/WZD1GSM3R +telegraphy/3M +telephony/M +telephoto/S +telex/SDGM +Telford/M +tell-tale/SM +tempestuous/Y +temporary/FS +tempts/F +tenant/MGSD +tendentious/PY +tenderfoot/MS +tendinitis +tens/xNTSDXG +tensioned +termagant/SM +terns/I +terrapin/MS +territorial +territory/MSo +tertian +testate/I +testicle/MS +tetanus/M +tte +tetrachord/SM +tetraplegia +tetravalent +than +thaw/DGS +Theadora/M +theft/MS +their/S +Theodore/M +Theodosius/M +theory/Qs-89q3MS +therapist/SM +Theravada/M +there/M +thereby +thereto +therewith +thermoelectric +thermopile/M +thermostat/1MSW +they +thicket/MS +thievish +thigh-bone/MS +Thimphu/M +think/RJ7GS +thirty/HMS +thirty-onefold +Thoreau/M +thorn/M2ZS +thoroughfare/MS +Thorpe/M +thou +thought's +thrash/RJSDG +three-phase +thrice-married +thrive/DSkG +throws/c +thuggish +thumb/DGMS +thump/MGSD +Thurrock/M +thyrotrophic +ticket/SMdZ +tickety-boo +tie/RSMDG +tie-break +tier/D +Tijuana/M +Tim/ZSM +timely/TP +time-spans +time-work +timpani +tin/DGZSMz2 +tincture/DSMG +tinker/dMS +tinkle/DSGY +tinny/TP +Tipperary/M +tippet/SM +tips/zZ2 +tobacconist/MS +Tobago/M +toboggan/S3rMd +tock/GMDS +today/M +together +toiletry/MS +tolerate/NDGBSn +tomboyish +tom-tom +tonelessness +Tonga/M +tonight/M +tonne/MS +top-heavy +topic/MS +topping/M +tore +Torfaen/M +torn +tornadoes +toroid/oSM +torrent/SM +Trshavn/M +torsion/MSo +tortilla/MS +tortoise/MS +tortoiseshell/SM +toss/GRSD +toss-up/SM +totality/SM +totter/Sdk +tough/GYPTSD +tourmaline/SM +tout/DSG +tower/dk +Towsley/M +tracheae +traffic/DRMGS +trampoline/SM +transcendental/3 +transform/R7 +transformed/U +transgress/NSDVGX +translatability/M +translation/aSM +translator/MS +transmogrify/nSDNG +transposed/U +transsexualism/MS +Transvaal/M +transvestite/SM +Transylvania/M +trap/JSRDMG +Trappist/SM +tray/SM +treachery/MS +treasonous +treatable/U +trenchancy/SM +trendsetting +trendy/T +Trevino/M +Trevor/M +trialling +triangle/SM +triceps/M +trichinoses +trickle/DSG +tricolour/SDM +trident/SM +trimmed/U +trimming/M +trinket/SM +triode/SM +triphthong/S +triple/SGD +tripodal +tripping/Y +triumphalism +triumvirate/MS +troika/SM +Trojan/MS +troll/DGMS +trolled/F +trousered +truce/SM +trudge/SDG +Trudi/M +truffle/MS +Trumann/M +trusty/TMS +tsar/S +tsarina's +TTL +tub/drSMZ +tuberculin/M +tuberculoses +Tudor/SM +tuft/DSGZM +tularaemic +tulle/MS +tumble-drier +tumidity/SM +tummy/MS +tuneless/Y +Tunisian/S +turbocharger/SM +turbofan/MS +Turkic/M +Turkmenistan/M +Turks/M +turn-down +Turpin/M +turret/MS +turvy +Tuskegee/M +tut/SGD +tutor/dSM +Tuvalu/M +twang/DGZSM +twenty-eight/H +twenty-twenty +twiddle/YGDS +twine/SM +twinkle/YGDS +two-sided +Tyler/M +typeset/RSG +typewriter/MS +typo/3MS +tyranny/8SQ1Mw +Tyrone/M +tzarina/MS +UAR +Ugandan/S +ugliness +UK/M +ulster/MS +ultralight/S +ultramontane +ululation/M +Ulysses +um +unaffected +unbeknownst +uncloak/G +uncompress/G +uncouthness +uncover/d +undaunted/Y +undercount +underdog +undergone +underneath/S +undersea +understandable/Y +understanding/aM +understudy/M +uneatable +unenviable +uneven +unfeminine +unhappiness +unhurt +unicast +unisex +unit/d +universal/8QS +unmistakable/Y +unmistakeable/Y +unprofessional +unrelated +untidy/T +unwieldy +UPC +upland/SM +uppercut/S +uppish +uprising/SM +upstream +urbanism/M +urbanity/MS +Uriah +urinal/SM +urinalyses +useless/Y +usherette/SM +usurp/DRNSnG +usurpation/M +utile/-8qQ +utterance/SM +uttered/U +Uzbekistan/M +v +vacation/M +vaccine/NnMS +vacuousness +Vader/M +Vaduz/M +vaginal +vainglory/SM +valediction/SM +valency/SM +Valerian/M +valet/SMd +valorous/Y +valuation/f +valued/Ufc +valuer/SM +van/SM +Vandyke/M +Vanessa/M +varicoloured +vaudeville/SM +vault/RSGMD +VAXes +vectors +veg +vehement/Y +vendor/SM +Venezuela/M +venial/Y +venous/Y +ventriloquist/MS +veracities/I +veracity's/I +verifiability/M +vermouth/MS +Vernen/M +verse's +versification/M +vessel/SM +VG +VHS +viable/Y +vibrate/DGnyNS +vibrator/SM +vice-like +vice-President/SM +viceroy/MS +vicious/Y +Vick/M +victor/MS +videodisc/MS +vii +viii +vilification/M +villi +Villiers +Vince +Vincent/M +vinyl/M +viol/MS73 +violates +virago/MS +Virginian/S +Virgo/SM +virologist/S +virtuosity/SM +viscid/Y +viscous/Y +viscus +visible/IY +vision/yGM +visionary/S +visioning/K +visitor/SM +vita/oM +vitae +vital/Q8S-q +vituperate/DnNSVvG +viz. +Vlei +vocative/YS +voiceless/Y +voil +vol-au-vent +volition/oMS +volitional +volitionality +Volkswagen/SM +voltaic +voraciousness +VP +VPN +vulpine +waddle/DSG +wag/DdrSMG +waggishness +waggle/DSG +wakefulness +Walbridge/M +walkway/MS +wall-to-wall +Wally's +Walsall/M +wander/JSdr +wanderlust/MS +warmed/A +warm-heartedness +warmongering/M +warmth/M +wars/C +Wartburg/M +washboard/MS +wastrel/SM +watched/U +Waterhouse/M +Watson/M +watt/SM +Wausau/M +wavelike +waver/dkS +way/SM +we/GzJ +wean/SDG +weanling/M +weathervane/SM +Webber/M +Wedgwood/M +wed's +weep/SZG +weighty/YT +weir/SM +well-earned +Weller/M +Wellesley/M +well-founded +well-structured +well-tried +welter/d +Wembley/M +wench/MS +Wensleydale/M +werewolves +Werther/M +Westhampton/M +wetness +wharves +what/M +wheat/M +Wheaton/M +wherefore/S +whereon +whetstone/MS +Whiggery +whimsy/S +whippet/MS +whisper/kdrJS +whitefly +white-hot +Whitlock/M +who/M +who'd +wholeness +whomever +whoopee/S +whoosh/GMDS +wickedest +widen/rdS +Wilde/M +wile/DSMG +Willa/M +Williamsburg/M +Willis +Winchester/S +Winckelmann +windburnt +windedness +windjammer/MS +windowpane/SM +wind's +Winnipeg +wino/MS +winter/cdS +Wirral +wishy-washy +wistfulness +wit/zSM2pPGZD +WNO +woe/jSM6 +Wolcott +Wolfgang +wombat/MS +womenfolk/M +won +wontedly/U +Woodberry +woodblock/S +woodcock/SM +woodlice +woodpecker/MS +woodworm/M +woollen/S +Worcester +word-blindness +work/ADeScG +workably +workaround/MS +workbench/SM +workhorse/MS +working-class +work's/e +workspace/S +worm-eaten +worst-case +wouldn't +wow/GSD +WRAF +wretch/MiDhS +wriggle/YRDSG +Wrigley +wring/RGS +written/fUcaA +xiv +Yahweh +yak/M +yardage/MS +yearlong +year-round +yeast/SM2Z +yippee +yo +yoke's +Yorktown +youngish +youth/jSM6 +Yule +yum-yum +Zadie' +Zeitgeist +Zellick'sF +Zen +zero/GSDM +zest/6Mj +Zimmerman/M +zinc/M +zirconium/M +Zoroaster +Zoroastrian/S +A +abalone/MS +abdomen/MS +Aberdeenshire/M +abettor/SM +abidance/MS +abide/kGDS +able/nVvYNT +abnegation/M +abominable/Y +absentia/M +absent-minded/Y +absent-mindedness/S +absolutism/SM +abstention/MS +abstracted/P +abstractness/S +absurdity/MS +abundant/Y +abyss/SM +acceptableness/S +acceptant +acclaim/DSG +accredit/Snd +accreted +acerbic/Y +acetate/SM +ache/DGkZSM +ached/FKA +acknowledge/LRGShD +acorn/MS +acquaint/ASDG +acquaintanceship/S +across +acrylate/M +activate/SINnDCG +activation/IMCA +actuality/SM +ad/AC +Adam/SM +adapted/P +ADC +addenda +addressee/MS +adeptness/S +adequate/IYP +adiabatic/Y +adieu/S +administrate/DGSvV +administration/M +admit/SANDGX +admonition/SM +ado/M +adopts/A +adrenalin +adventist/S +adversary/MS +advice/MS +Aeneid +aeolian +Aeolus +aeration/M +aetiology/W1wM +AFAIK +affectation/M +affection/EMS +affine +aflame +afraid/U +afterlives +Agaa/M +agglomerate/nVDNSG +aggression/MS +aggressiveness/S +Agnes/M +agriculture/M3oS +aid/RGDS +Aidan/M +aim/RGDpSy +airbase/S +aircraft/M +airfare/S +airfield/SM +airline/RMS +airmail/DMG +alack +Alameda +Albanian/MS +Albrecht/M +albumen/SM +Alderney/M +algaecide +algebraist +Algeria/M +Ali/M +alienist +alimony/SM +aliphatic +al-Jazeera +all-clear +allot/SLGD +alluvia +alluvions +ally/SGD +almighty/P +aloofness/S +alphanumeric/YS +Al-Qa'ida/M +Alsatian/S +also +alternative/PMS +aluminium/M +alveolar/Y +alveoli +am/A +Amalie/M +amanuensis/M +amaretto/S +Amarillo/M +amaze/LDhkGS +amber/MS +ambidexterity/SM +ambrosia/MSo +ambulation/M +ambulatory/S +ambuscade/SMDG +Amerada +Americana +amicable/PY +amidst +amity/MS +amnesiac/SM +Amoco/M +amorousness/S +amorphousness/S +amphora/M +amphorae +amt. +analects +analysable +analysand/MS +analytical +anaphora/1WM +Anatolian +anchor/m5dSM +Andes +Andrew/MS +Angelo/M +anger/MdS +Angola/M +Anheuser/M +anhydride/M +animateness/I +anim +anisotropy/MWS +annal/3SM +annexation/M +announced/U +annual/Q8YS +annuitant/SM +annuity/SM +anode/8MQSW +ant/E +anterior/SY +anthology/Q8SM3 +anthropic/a +anti-aircraft +anti-Americanism +anti-apartheid +anticancer +anticommunist/MS +antidote/SDMG +anti-heroes +antiparticle/SM +antiperspirant/SM +antiquary/SM +antitheses +Antrim/M +anxiety/SM +anxiousness/S +anything +apartheid/M +aperiodicity/M +aperture/DMS +aplomb/SM +apparatchik/S +appearance/AMES +appendices +appendix/MS +applause/MS +application/AM +applying/a +Appomattox +appreciably/I +appreciator/MS +apprehensible +apprehension/aMS +apprise/kSGD +appropriable +apricot/MS +apse/SM +aquifer/MS +Arabic/M +arachnoid/M +arbitrageur/S +archaic/Y +archaism/MS +archduke/MS +archetypal +archiepiscopal +architectonic/S +arenaceous +arid/PY +arithmetic/YM +Arkansas/M +Arkwright/M +Arlen/M +arm/RELGDS +armature/DMGS +armchair/SM +Armco +arraign/LGDS +arranges/AEK +arrestee/SM +arrival/MS +arrive/GSD +arrogation/M +arrow/MGSD +arroyo/MS +Artemis +arterioscleroses +artificial/P +ascendency +Asheville/M +Ashford/M +Ashton/M +ashtray/SM +Asian/SM +Asimov/M +askew +asphalter +aspic/MS +assen +assent/GMSD +assertion/MAS +assessed/A +asst +Assyrian/M +astern +Aston/M +astraddle +astral/Y +astringency/SM +astronautic/S +asylum-seeker/S +ate/c +Athena/M +Athens/M +athletics/M +atomicity/M +attainable/P +attar/MS +attendant/MS +attested/U +attester/M +Aubrey/M +auctioneer/DSMG +audiophile/MS +august/YPT +Augustan +aura/WSMo +aureole/MDSG +auricular +auscultation/M +auspice/SM +austere/YPT +Austin/M +Austrian/MS +authentication/M +author/Qs-9d8qSM +authoress/S +authoritarian/S +authorization/M +authorize/KA +autistic +autograph/GMSD +autoloader +automation/M +autorepeat/GS +auto-suggestibility/M +auxiliary/S +avant +aviatrices +avocado/MS +avouch/DSG +avowed/Y +awakened/A +awkward/YPT +Azores +Babbage/M +back/eM +backbone/MS +backdrop/DSMG +backhoe/S +backrest/SM +backspace/DGS +back-up/S +backyard/SM +bad-egg +badminton/M +bad-tempered +Bahamas/M +Bahrain/M +bailer +baldness/S +baleful/TP +balefulness/S +ballad/MyS +balladry/SM +Ballard/M +balloonist +ballot/dMS +Ballymoney/M +banal +Banbury/M +banking/M +banner/d +Bannerman/M +bannock/MS +baptist/SM +barbarism/SM +barbarize/DSG +barbiturate/SM +bare/YPDTSG +barehanded +bareheaded +bargain-basement +barge/DmMSZG +barked/C +barleycorn/SM +Barlow/M +barmen/M +barn/MDS6G +Barnum/M +baronetcy/SM +Barrichello/M +barrier/MS +barrio/MS +Barron/M +bartender/SM +baselessness +basher +basis/M +bass/S3M +Basseterre/M +bat/FdMS +battleaxe +bauxite/M +bawl/DGS +bazaar/MS +beach/GSDM +bear/JlRSG7 +beastly/TP +beaux/M +Beaverton/M +bche +bed/F +bedder/SM +bedsit/S +bedsore/SM +bed-wetting +beehive/SM +Beelzebub/M +beet/MS +beetle/DMSG +befall/GS +before +beginning/M +begrudger +behavioural/Y +behove/DS +believable/YU +bellicose/YP +belligerent/YSM +bellybutton/SM +belting/M +bemuse/DLhSG +bent/U +Benton/M +bequest/SM +bereave/LGDS +Bergerac/M +berm/MS +Bernadette/M +Berne/M +berrylike +Bertha/M +betide/DGS +btise +betoken/dS +Bette/MZ +better-off +bi/M +bibliography/Ww1MS +bibulous +bicycle/RG3SMD +biddy/SM +bide/S +bighead/MS +bigotry/SM +billion/MHS +biochemist/SyM +biodegradability/S +biofeedback/SM +biography/SM +biology/w3MW1S +biomass/MS +biometric/S +biometry/WM +bionics/M +biotin/MS +bipartite/Y +bipedalism +biretta/MS +Birmingham/M +bisect/GSD +bison/M +biter/SM +bitmap/MS +bitter/YPSd +bitterest +bitwise +blackberry/MSG +blackener/M +Blackfoot/M +blackhead/SM +blackish +blackness/S +Blanche/M +blandish/DGLS +blandness/S +blazon/Sd +bless/hGSDiJ +blitheness/S +blithering +bloc/GDMSR +blockade/DMGRS +Blomberg/M +blond/PMST +blood-lust +bloodsucker/MS +bloodthirsty/PTY +blotch/SGMZD +blowpipe/MS +bluebill/M +bluebonnet/SM +bluesy/T +blunder/dkrJMS +blurring/Y +blurter +blushing/UY +BMW/M +boast/DRG6jJS +boasting/e +boat/MDRGS +bobble/SGMD +boccie/SM +body-blow +Boer/SM +boll/MS +bollard/SM +Bologna/M +bolometer/WSM +Bolshevism/M +Bolshevist/WMS +Bolshoi/M +bolt's +bombproof +bond/MmDJRGS +bonemeal +bonito/MS +bonus/MS +bookbind/RGJ +bookbinding/M +bookkeep/RGJ +bookmarker +boolean +boonies +boor/MS +bootprints +Borden/M +border/dMS +borderline/MS +borrowing/M +borstal/MS +Bosnia-Herzegovina/M +Boston/M +bothersome +Botswana/M +bougainvillea/M +boulevard/MS +bound/ADSG +bourgeoisie/MS +bourses +bower/d +bow-legs +bowlful/S +bowstring/DMGS +boyscout +BP +bracelet/SM +bracer/M +Brachiopoda +bracken/SM +bracteal +Bradley/M +Bragg/M +braggadocio/MS +Brahmanism +braider/M +braiding/M +bramble/GMYDS +Brandenburg/M +Braun/M +braveness/S +braze/DSG +bread/HDMSG +breakout/MS +breastfed +breasting/M +breastwork/MS +breezy/TPY +Brentwood/M +Brest/M +brevet/MGDS +brewer/Z +bric/DG +bricklaying/SM +brickmason/S +brickyard/M +Briggs/M +brilliance/SMZ +brindle/MDS +briner/M +bristly/T +bristols +bro +broaden/Srd +broad-mindedness +broadside/SMGD +Bromley/M +Bromwich/M +brontosaurus/SM +broom/GMSD +browbeaten +Bruce/M +brucellosis/M +Bruckner/M +brusque/PTY +brutish/PY +bucket/Sd6M +Buckingham/M +buckling/M +buck-passing +budget/rSdM +Budweiser/M +buffalo/M +buffet/SdJM +Bulawayo'sc +bulky/TP +bullfinch/MS +bullheaded/P +bullied/M +bullshit/RSDMG +bullying/M +bummed/M +bung/GMDS +bunghole/SM +bunker/d +bunting/M +burgeon/SDG +burier/M +burlesque/DYRMSG +burnout/MS +burr/MS +bursting +Burundi/M +busmen +butterfingered +buttoner/M +bye/MS +byname +Byrd/M +byroad/MS +CAA +cabdriver/MS +cabinet/MyS +cachet/MdS +cad/MZS +cadenza/MS +cafeteria/MS +cairn/DSM +cajolery/SM +cake/MDGS +calamitous/PY +calculated/aA +callous/PDYSG +calmness/S +calumet/MS +cam/MSD +camber/dMWS +Cambridge/M +Cambridgeshire/M +Camino +camisole/MS +camphor/SM +canard/MS +cancel/RDGS +Candace +candelabra/S +candidacy/MS +candy-striped +cannier +canny/UPY +canst +cant/DCRGS +cantabile +cantaloupe/SM +capability/ISM +capacitance/SM +capitalised/Uc +Capote +capricious/YP +Capricorn +cap's +carapace/MS +carbonyl/M +carburettor/SM +carcase/MS +carcass/MS +carcinoma/SM +card/DERGS +cardiac/S +cardinality/MS +cardsharp/RMS +caregiver/S +carillon/MS +Carlton +carol/DRGSM +carotene/SM +carousal/SM +carouse/RGDS +carpentering/M +Carr/M +Carrie +carry-on +carthorse/MS +Cartier +carton/dMS +cartoon/G3DMS +cartoonist +Cartwright +carve/RSJGDy +carven +casaba/SM +casbah/M +cascade/GDSM +cashier/GMDS +cassia/SM +castanet/SM +Castlereagh/M +castrato +cast's/e +casualty/SM +casuist/SMWy +catafalque/SM +catalyse/SDWG +Cauchy +causality/MS +causative/S +Cavan/M +cayenne/MS +cease/CDSG +ceaselessness/S +cede/FKAGDS +ceiling/MSD +celebration/M +celesta/SM +celestial/Y +cement/RGDSM +censor/dSM +censorious/PY +censure/GRMSD +Centralia +centre/GDRMJ3WoS +centripetal/Y +cerebration/M +ceremoniousness/SM +ceremony/SMo +CERN +certain/UY +certainty/USM +Chablis +chain's +chairperson/SM +chalet/SM +chamberpot/S +chamomile/MS +chancy/T +changeability/MS +changeably/U +change-ringing +Chantilly +characteristic/UY +characteristics +Chardonnay/S +charming/T +charted/U +chasing/M +chteau/SM +chattiness/S +chauvinism/MS +cheapish +cheddar/S +cheerio/S +cheesecloth/MS +cheetah/SM +Chelmsleywood +chemiluminescent +chemotherapeutic/S +chequebook/MS +cherry/MS +chess/mSM +Cheviot/SM +chiaroscuro/MS +chief/SMa +chigger/SM +childproof/GD +chipmunk/MS +chiral +chirography/SM +chiropody/3SM +chiropractic/MS +chiropractor/SM +chisel/RDSGJM +chivalry/WSM +chloroform/GDSM +choirmaster/SM +choosiness/S +chorion/M +chorister/SM +Christendom +christened/U +Christmastide +chuck/SDGM +chukka/S +chute/SGMD +cicerone/SM +cider/CMS +cinch/DSGM +Cincinnati +cinema/WMS +circumpolar +cirrhoses +citation/MA +citing/I +citizen/MYyS +Citroen/M +clad/JGS +claim/ERSGCAD +clam/GMzZD2S +clammy/TP +clamshell/SM +claptrap/MS +clarinet/MS +clarinettist/MS +clarion/MDSG +clasp-knife +classicality +classy/TP +clatter/dSZk +Clausen +claustrophobia/SM +clave/FM +clayiest +cleanse +clearway/M +cleat/GMDS +clef/SM +Cleveland/M +clich/MS +clichd +cliff/SM +climatology/S3Mw1 +clinch/SRGkD +clipping/M +clique/DMGSZ +close-fitting +clot/GDMS +clothe/UGD +clotheshorse/SM +clouded/cU +clue/pMDGS +Clwyd +Clyde +CMG +CNAA +coagulate/nGSDN +coalescence/SM +coarsen/dS +coast-to-coast +coater/S +coating's/c +cob/GMSD +Cobb/M +cobweb/MZSGD +cobwebby/T +cocci/MS +co-channel +cochlea/MS +cochlear +cock/zGMDZS2 +cock-and-bull +cockneyism +cock-of-the-walk +cocktail/GDSM +cocoon/MGSD +codicil/SM +coequal +coffee/SM +coffee-house/SM +Cohn +coin/RMDG +Colbert +collagen/M +collate/GSD +collect/bSivDV7hG +collectivism/SM +collector/MS +collects/A +collegian/MS +Colombo/M +colonelcy/SM +colonial/S3 +colophon/SM +colour-fast/P +colt/MS +coltish/PY +combinator/oWSM +combustion/MS +Comdex/M +comeliness/S +comely/PT +comes's +comicality/SM +commemoration/M +commendation/AM +commiseration/M +commitment/cS +commodious/PIY +commonness/U +communion/MS +commutator/M +commute/R +Comoros/M +comp/DGS +compaction/M +companionship/SM +comparabilities +compartmental/-8qQ +compassionate/P +compatriot +compete/SDG +competency/IS +complacent/Y +complement/DMGSRN +composed/PY +compressibility/MI +compression/MC +compulsion/M +computerese +concerns +concerted/E +concierge/SM +conciousness +conclude/RNGXDSvVu +concoct/SDGV +concordance/MS +Concordia +concurrence/SM +condemnatory +condescension/M +condom/SM +conductance's +confabulate/NSnDG +confidant/SM +confirm/nANGSD +confiscation/M +conflate/GnDSN +conflictual +confound/h +congruence/ZMS +congruent/Y +conical/P +conifer/MS +coniferous +conjectural +conjugal/Y +conjunctivitis/SM +connective/MS +connector/SM +connexion/SM +connive/RSDG +conscience/p +consecrated/U +consecration/MA +consequentiality/SM +consistory/MS +consolation/EM +consolidated/AU +consolidation/M +conspectus/MS +conspicuousness/SI +constancy/IMS +consternate/DnNGS +constraint/SM +constructionist/SM +constructor/SM +contaminator/SM +contemplate/VNDvuGn +content/LEDhGMS +contested/U +continent/oYSM +contingency/MS +continua/on +continuousness/E +contract/GbD +contrail/M +contrariness/S +contrary/PSY +contravener/M +contribute/DvGVy +contribution/SM +contrive/RDSG +control/BRMSlG +controlled/U +convenor +conventionalism/M +conversation/Mo +conversationalist +converser +convolution's +Cooke/M +cookery/M +Coolidge +cooling-off +cooperage/MS +coordinated/U +coper/M +coquetry/SM +cordite/MS +core/MDRGS +Corey/M +coriaceous +corn/R2ZSMzDG +cornea/SM +Coronado +coronation/M +corporates/I +corporeal/IY +corpuscle/MS +correctness/S +corrigendum/M +corrigible/I +corroborate/DSnVvGyN +corrupt/VPTbvSDGY +corrupter/M +corruption/MS +corticosteroid/MS +cosiness/S +cosmology/1S3Mw +cosponsor/Sd +cost-effective +cost-effectiveness +Costello +costliness/S +cot/RMSD +cottered +cougher/M +councillor/MS +countdown/MS +counter-claim/GSMD +counter-culture/SM +countermand/SGD +counterpoint/DSMG +countersunk +countess/SM +country/5mMS +couplet/MS +course/SMFE +courteous/YEP +court-martial +covalent/Y +covariate/SN +covered/EAU +covert/PY +covertness/S +cover-up/S +cowl/DGMS +cowrie/SM +coxcomb/MS +coyote/SM +cozenage/SM +crag/MZS2 +crane-flies +Cranford +cranky/TP +crap/GDMZS +crash/RSDGk +crass/TYP +crayon/MdS +creaminess/S +creature/YSM +creaturely/P +credulous/PY +creekside +creep/RZSG2z +creepy/PTS +crenellated +cretonne/MS +crevasse/MGDS +crib/DRGSM +criminalise/CnDSG +criminalize/CGNnDS +criterion/M +criticise/k +criticize/k +croaky/T +Croat +crone/SZM +crookeder +crosier/SM +crossbow/mSM +cross-bred/S +cross-grained +cross-refer/S +crow/MDSG +crozier/SM +crude/PTY +cruelty-free +crumby/T +crump +crunch/RSDZG2 +cruse/SM +Crustacea +crustal +cryostat/M +cryptanalysis/M +crystallise/AnDSG +CSA +cue/DaMSG +cuisine/MS +Culloden +Cully +cultivator/MS +culture/SMoDG +cumbersome/PY +cumulate/DNvGnSV +cumulation/M +curfew/SM +curio/SM +currently/AF +curse/M +Curtis +cussedness/M +cw +cybernetic/S +cycled/A +cyclopaedia/MS +cyclotron/MS +cynic/SMY +Czechoslovakia/M +Czechoslovakian +dachshund/SM +Dacron +Dada +daddy/SM +Dahl/M +dalliance/MS +dame/MS +dammit/S +damn/lDGkNS7n +damneder +damnedest +dampen/drS +Dan/ZM +dance/SDRG +dapperest +darken/rdS +darning/M +Dartford +dash/GRSDk +dastardliness/S +dateline/SMDG +dauphin/MS +Daventry +Davidson +davit/SM +dazzle/SRGkD +dBm +DCM +deathly/T +death-roll +debaucher/M +debouch/DGS +debtor/SM +decapitator/MS +decayer +decease's +deceitfulness/S +deceptiveness/S +decide/DBGVivhNxXuS +decided/U +decisioning +decking/M +declaim/y +declared/KUA +dcollete +dedicatory +deduce/DGnbNVvS +deep-fried +deep-laid +deer/M +defalcate/GDSNn +defalcation/M +defeated/U +defectiveness/S +defiant/Y +deflatable +Deirdre/M +deist/WMS +DeKastere +Delaney/M +delectation/SM +delicateness/S +delicatessen/MS +deliquesce/GDS +deliverance/SM +Delphi +Delport +demagoguery/SM +demagogy/MW +demander/M +demarcate/SNGnD +demarcation/M +democratic/UY +demolish/DSG +demoniac/S +demonstrative/UY +demount/7 +demythologise/n +dental/Y +dentifrice/MS +dependency/MS +deprecation/M +Derbyshire/M +dereliction/MS +dermis/SM +derogate/NVSGnyD +descend/FSGD +desert/RGMDS +deservedness/M +designs/A +desirability/UM +desorption/M +despair/SkDG +despot/1W +deterers +determinable/IP +determining/KA +determinism/SM +determinism's/I +deterrence/SM +dethrone/LG +detonation/M +d'tre +deviousness/S +devoid +devotional/S +dewar +dexter +Dhabi/M +diabolic/Y +diacritic/MSY +diagnosable +dialectal +dialectic/MS +dials/A +diamond/MSDG +diary/3MS +diastole/WSM +diathermy/MS +diatribe/MS +dickiest +die-cast +differentiator/MS +difficulty/MS +digestion/MS +digitalis/M +digression/M +Dillon +dilute/PYVGDS +dinette/MS +dipterous +directivity/M +directness/IS +directorate/SM +dis/M +disagreeable/S +disallow +discipleship/SM +disciplined/UI +disclosed/U +discography/MS +discoloured/M +discomfit/d +discontinue/nN +discourage/LDGk +discrepancy/MS +discrimination/MI +disgracer/M +disjunctive/S +dismalness +dismay/DSk +disparate/PSY +dispel/DGS +dispensary/SM +dispersion/M +disposable/S +disposition/KMI +disputable/I +disrepute/M +dissimilar/S +distancing/e +distinctive/P +distortion/SM +distract/GhikD +distributive/YPS +dither/Sd +dividing/A +divisive/P +Dixieland +dizzy/PTYDSGk +docile/Y +dockyard/SM +Dodgson/M +dodo/MS +doesn't +d'oeuvre +dog-box +dog-eared +doggy-paddle +dog-leg/D +dogmatism/SM +dog's/f +dogtooth/M +dog-tooth +dogtrot/GSDM +doily/SM +do-it-yourself +dolomite/SWM +domes/W +Domesday +domesticate/SGD +dominator/M +Domingo/M +Donovan +doodle/SRGD +Dooley/M +dopiness/S +dorm/RMS +Dorothea/M +dote/S +double/SRDGY +double-dealing +doublespeak/S +doubletalk +doubting/Y +doughnut/GMDS +dourness/S +dovecot +dovecote/MS +downgrade/SGD +downriver +downy/T +dozenth +dragon/MS +drain/GRSMD +dreadful/P +dreadnought/SM +dredge/GRMSD +driftwood/SM +drilling/M +drink/7SGR +drivenness +driveway/SM +droner +drool/DRSG +drop-in +drove/GSDR +drowsy/PTY +drug/DMGS +druggie/TS +drumhead/M +drunkenness/S +Drury +drywall/GDS +Du +dual/S +ductility/MS +duct's/F +duffel/M +dug/S +Duisburg +dumbbell/SM +dumpiness/S +Dumpty +dune/MS +Dunkirk/M +Dunstable +duplicator/MS +durum/MS +dustbin/SM +dustman/M +dusty/TP +duteous/Y +dutiful/U +dynamo/MS +dysfunctional +DZ +e +each +earliness/S +earthbound +earthly/PT +earthwork/SM +easel/SM +easier +Eastbourne/M +eastern/R +Eastertide +Eastwood +easy/UY +Ebola +Ecclesiastes +ecclesiastical +eclectic/SY +econometrics/M +Ecuador/M +Eddie +edgy/TPY +edification/M +Edinburgh/M +Editor +editorial/s3Q89SY +EDT +Edward/MS +EEG +efferent/YS +effervesce/SGD +effusion/M +egger/M +egocentricity/MS +Egypt/M +eidetic +eightpence +eighty/HMS +eighty-eight/H +eighty-four/H +Eire/M +lan/M +elater/M +elderflower +elect/DAGS7 +electrocution/SM +electrodynamic/SY +electroencephalogram/SM +electromagnet/W1MS +electronics/M +electrotherapy +element/SMo +elephantiases +elevate/DSnGN +Elgin +eligibility/IMS +Eliot +Elisha/M +elite/S3M +ellipse/SMW +Ellsworth +Elmira +eloquent/IY +Elton/M +elusiveness/S +Elvira +emasculate/DSGNn +embroider/rZdS +embroil/DLSG +emergent/S +emeritae +emery/MS +Emmanuel +empanelled +emphases/c +emulator/SM +enchilada/MS +encircle/DGSL +enclosed/U +encrypt/GSD +endemic/SY +endless/PY +endlessness/S +endoscope/MSWZ +endure/SGklD +end-user/S +energetic/YS +energised/U +enfranchise/EDLSG +enfranchiser/SM +engorge/LDSG +engrained +engram/M +enhanceable +enigma/SWM1 +enjoyable/P +enlargeable +enlighten/dSL +enormity/SM +enough +entanglers +enterprise/RSGMk +entice/SRLkJGD +entrust/DGS +enumerating/A +enuresis/M +envelop/LrdS +enzymatic/Y +epidemic/MYS +epidemiology/SM31w +episcopacy/SM +episcopate/SM +Epstein +equally/UF +equiangular +equip/LDSG +equiproportionate +equivocator/SM +eradicator/SM +Eratosthenes +erecter +erectile +erection/SM +ergosterol/MS +Erie +Erika/M +Erin +Erlang/M +Ernest +Esau +escaper/M +escapology +Eskimo/S +ETA +etalon +ethane/M +Ethiopia/M +ethnic/SY +Eugenia +eugenicist +eunuchs +euphony/SM +evacuation/M +eve/yMS +evenest +even-handedness +Everett +evergreen/S +Everhart/M +ever-increasing +everliving +evermore +everybody/M +ex +exactly/I +exceeder/M +excision/M +exclusion/My +excommunication/M +exculpation/M +excursionist +exemplify/SGRnND +Exeter/M +exhalation/M +exhibit/XVdSN +exhibitor/SM +exhorter/M +exigent/SY +exiguity/MS +existentialist/W +exogamous +exoskeleton/MS +exoticism/SM +expandability/M +expanded/U +ex-partners +expectancy/MS +expectoration/M +expendable/S +expense/MGSD +expensive/IPY +experimental/3 +experts +expiate/GyNnSD +expired/U +expiry/MS +explainer/SM +explanatory +explored/U +exponent/SM +exposed/U +ex-president +expressible/IY +expressiveness/SI +extol/SDG +extorter/M +extortionate/Y +extradition/SM +extrapolate/SDnGNV +extruder/M +eyebrow/SM +eyesight/MS +Faberg/M +fabrication/MK +facelessness +facial/YS +faculty/SM +fadeout +faeces +faerie/M +fail-safe +failure/MS +Fairchild +Fairfield +fairground/SM +Fairmont +falsity/SM +familiarize/k +fantasia/MS +farad/MS +farce/w1MS +far-flung +Fargo +Farrell +farther +fas +fatten/drS +fatuous/PY +fatwa/MS +faze/DGS +fearful/TP +feather-head/D +Feb +feebleness/S +feeds/c +feelingly/U +feign/RGSD +feisty/T +Felixstowe/M +feminine/PYS +feminist/SM +femur/MS +fencepost/M +fermentation/M +ferociousness/S +Ferrari/MS +Ferris +ferroelectric +festering +festiveness/S +feta/MS +fetish/M3S +fettuccine/S +fiasco/SM +fibre/MSD +fibreboard/SM +fibrous/PY +fibula/M +fiction/MSOo +fictitious/YP +fictive/Y +fiddle/RGYMJDS +fidelity/IMS +fie/y +fief/MS +fiery/TYP +fiesta/MS +fifty-nine/H +fifty-second/S +Figaro +figurations/4 +figuring/S +Fiji/M +file/CaSAGD +filet's +Fillmore +film-maker/S +filth/2ZSMz +fin/DZGowMdS +finality/SM +financier/SDGM +Finnegan +fire-fighter/SM +fire's +firewall/S +firing/MS +firmer +fishnet/SM +fish-plate/S +fissure/GDSM +fixable +fixture/MS +flagellum/M +flagging/YU +flagstone/SM +flamboyant/Y +flank/eSDG +flaps/M +flashback/MS +flashcard/S +flashgun/S +flat-head/M +flatware/MS +fleabag/SM +flecker +flexure/M +flightiness/S +flincher/M +flirtatiousness/S +flora/MSo +floridness/S +flotation/SM +flotsam/SM +flout/GRDS +flt +fluorite/MS +fluster/dS +flutelike +flux's/I +flyblown +flyer/SM +flyhalf +fo'c's'le +focused/U +foetid/Y +foetus/MS +foist/DSG +folio/SGMD +folks/Z2 +folk-ways +fondant/MS +Foote +footing/M +footmen/M +footrace/S +footsore +foppishness/S +forbore +foregoes +foremost +forepeople +foresee/BGRS +foreseeable/U +forested/AC +forests/AC +foretaste/MGSD +forgery/SM +forge's +forgo/RG +forgotten/U +fork/D6GSM +forker +formal/qsQ89P3- +Formica +formula/MSn +Forrester +forsaken +fort/MZS +forthcoming/U +fortunate/UYS +forty-second/S +forward-looking +fount/MS +fountain/SDMG +fountain-head/SM +fourpenny +foursome/MS +foveae +fowler/M +fowl-run +foxed/e +foxhole/MS +fox-hunting +foxtrot/DMGS +fractionation/M +fragment/NGMSnD +frailty/SM +francium/M +Franck +frantic/YP +fratricide/SM +fraudulent/Y +freedom/SM +freehold/RSM +free-standing +Freetown/M +free-wheel/DGS +freeze-dried +frenetic/Y +frescoes +fretboard +fretsaw/S +friary/MS +friendliness/SM +friendly/TU +friendship/MS +frightfulness/S +frigid/PY +fringe/IDGS +Frisbee +frisky/TP +fritterer/M +frontrunning +front's +frost/CSGD +frowziness/S +fructify/DSG +fruit/X6jNdpSM +frustrater/M +f-stop/S +ft/C +FTC +fuck/DRSMGJ +fuel/MRGDS +fullest +full-wave +fully-fledged +fumy/T +function/SMyGopD +functor/SM +fundamentalism/MS +fundholders +funicular/SM +furnishing/M +furthermost +fuss/SD2ZMGz +fusser/M +fut +Gaborone/M +Gael/W +gaggle/SGD +gal/GkDM +Galatians +Galilee +Gallicism +gallows/M +galvanise/nSDG +galvanize/NnSDG +galvanometer/MSW +gander/dMS +gang/DMGSY +gangland/MS +ganglia/M +gannet/MS +gaol/RDGMS +Garcia/M +Gardner/M +Gareth/M +garland/SDMG +gaseous/YP +gassy/PT +gastritides +gastroenteritis/M +gastronome/Z1SwM +gateway/MS +gathered/AI +gathering/M +gaucheness/S +gaucho/MS +gauntness/S +gawkiness/S +gearbox/MS +gee/dGMS +geisha/M +gelatin/MS +gelatinous/PY +gen/GD +genera/onWM1Vv +generic/S +generousness/S +Geneva/M +genially/F +genocide/SM +genteel/PY +gentleness/S +Geoffrey/M +geographer/MS +geometrician/M +Geraldine +geriatrics/M +Germantown +Germany/M +gerontology/3SMw +gerund/MS +geyser/dMS +ghost-wrote +GHQ +Gifford +gig/GMSD +gild/RJGDS +gimlet/MS +Gina/M +gingerly/P +girlie/M +girlish/PY +giving/aY +gladiator/SM +glamour/GMDS +glanders/M +glare/kSDG +glassful/MS +glass-maker/MS +glass-paper +glaucoma/MS +glim/M +gloater/M +globular/YP +globule/SM +gloss/DMZGSz2 +glottalization/M +glow-worm/SM +glue-sniffing +gluier +glumness/S +gluteus +glycerolized/C +glycine/M +GMO +gneiss/MS +gnomelike +gnostic +goatherd/SM +godchild/M +God-forsaken +godlessness/S +godson/MS +goldbrick/MDRSG +goldfish/SM +Golgotha +Goliath/M +gonadal +Gondwanaland +gonococcus +gonorrhoea/M +good/YPZS +GOP +Goren/M +Gorgonzola +goshawk/SM +gourd/M6S +government/a +GPSS +grades/A +gradual/YP3 +gradualist +gradualness/S +grammarian/MS +grand/TYSP +grandmaster/SM +grantsmanship/S +grapheme/M +graphic/PS +graphics/M +grapnel/SM +grasping/P +grassers +gratefully/U +gratuitous/PY +gravitas +grazes/c +grease's +greathearted +greed/2ZSzM +greediness/S +Greeley +Greene/M +greenhorn/MS +greening/M +Greenwich +Greer/M +Greig +Grenadian/S +Grenoble +grew/cAe +greybeard/M +grill/GSD +grimace/RMDSG +Grimm +grinner/M +grip/rRdGMDS +grisaille +grizzly/TS +groggy/TP +Grosvenor +Grumman +grumpiness/S +Gruyre +g's +guacamole/SM +Guadalupe +Guerre +Guerrero +guesstimate/GDS +guest/DGMS +Guggenheim +guidance/MaS +Guido +guilelessness/S +guitar/3MS +gum/G2DZMS +gumboil/SM +gunfight/RMS +gunk/MZS +gunman/M +gunny/MS +gunrunner/MS +gunship/S +gushy/T +gusted/E +gutsy/PT +gutta +gutter/d +guttersnipe/SM +gymnosperm/SM +gynaecological/MS +gynaecology/S3wM +gypping +habeas +habiliment/MS +habitat/MS +habited/IF +habitualness/S +habituate/NnSDG +haemophilia/MS +haemorrhoid/MS +hafnium/M +haft/MDGS +Haili +hailstorm/SM +hajjes +hale/SIDG +half-baked +half-breed/SM +half-mast +half-moon +halfness +half-timbered +half-yearly +hall-stand/S +handbook/SM +handrail/MS +hands/Uc +handshaker/M +handsomely/U +handspring/SM +hangout/SM +Hanover +haploid/S +happy/TUY +harden/rdS +hardiness/S +hardness/S +hard-on +hard-pressed +harebell/SM +harem/MS +Hargreaves +harmlessness/S +Harold/M +harrow/MGDS +Harvard +harvestman/M +Harwell +Harwich +Hattie +hauler/c +Hauser +Havana/M +haven't +haw/GMDS +Hawley +Hayden/M +hayer +Haynes +haystack/MS +Hayward +haywire +head-hunt/DGSR +headlight/MS +headline/DSMG +headphone/SM +headrest/MS +headroom/SM +headstall/MS +headwater/S +heal/DGRS +healed/U +heartache/SM +heartland/MS +hearty/TSP +heatproof +heatwave +heave/RSGZD +heavy-duty +Hebraism +hectometre/SM +heedful/P +Hegelian +Heidelberg +heigh +held +Helen/SM +helium/M +he'll +Hellenise/DGnS +Hellenize/DGS +Heller +helm/mSGMD +Helmholtz +helter +henceforth +henry/M +hep +hepatitis/M +herbalism +herbicide/SM +herbivore/SM +Hercules +heresy/SM +heritability +heritor/IM +hermaphroditism +Hermaphroditus +hermitage/SM +heroes +heroic/S +heroine/MS +Herschel +Hester/M +heterosexuality/SM +hewn +hexagonal +hey +Hialeah +hidden/U +hideousness/S +high-born +highfalutin +high-flyer/S +high-handed/PY +high-level +highness/S +hill/2MGYS +hillwalker +hilly/PT +Hillyer +Hilton +hind/R +Hindenburg +Hindustan/M +hinge/USGD +Hippocratic +hippodrome/SM +hirsute/P +hist +histochemic +hitherto +hoary/TP +Hobbs +hoity-toity +holdall/SM +Holland/M +hollow/PDTGSY +Holman/M +Holt +homily/SM +hominid/SM +homology/SMw +homotopy +homunculus +Honda/M +honer/S +honeybee/SM +honorific +honour/E7MRlDGS +hooey/MS +Hoosier +hoppled +Horace +horribleness/S +horrify/1SWGDk +Horsham +horsiest +hortatory +hose/M +hospitable/YI +hotel/mSM +hound/GSMD +houser +housing's +Howard +Howell +hoyden/dMS +html +hubbub/M +hubris/MS +Hudson +huff/GMZDSz2 +hulling/M +humanitarian/S +humiliation/M +hummus/S +humourlessness/S +Hun/S +Huntingdon/M +Huntingdonshire/M +huntress/SM +hurl/DYSGR +hurly-burly +hurrier +husbandry/MS +hush/DGS +Huxley +hydrated/AC +hydrogen/nMN +hydrogenating/C +hydrometer/SM +hydrotherapy/MS +hygienic/U +hypercellularity +hypersensitive/P +hypersensitivity/MS +hyphenate/SGD +hypnosis/M +hypothalamic/Y +hypothesis/d8rM9QS +hypoxaemia +Iberian/SM +icebound +icon/SWM +iconoclast/MWS +ictus/SM +I'd +idealism/SM +idiosyncrasy/SM +Igor/M +illumination/M +illusionary +illusive/PY +I'm +imaginative/UY +imaginativeness/U +immanent/Y +immediateness/S +immense/YPT +immersion/M +immunoassay/M +immutable/P +impala/M +impaler/M +impassibility/SM +impeached/U +impeccability/SM +impecuniousness/S +imperialism/SM +impermeable/Y +implementation/SM +imply/VuGNvnh +imposing/Y +impregnable/PY +impressed/U +impressive/U +improvisational +impulsive/P +impunity/SM +inbreed/SGJ +incantation/M +incantatory +inclination/EM +incongruence +inconsolable/PY +incontestability/MS +incorruptible/SY +increasable +incubate/DNSGVn +incubus/M +incurious +incurs/XN +Ind. +indebtedness/S +indefinable/PS +indemnify/NDnSG +Indiana/M +Indianapolis +indigence/SM +indignant/Y +indignation/SM +indirect/GP +indiscriminate/PY +indoctrinator/SM +ineptitude/MS +inevitable/YP +inexact/P +inexhaustible/YP +inexpedience/M +inexpressible/SP +infallible +infect/EDGAS +infected/U +infecter +infectious/YP +inferno/MS +infirmary/SM +infix/M +influential/Y +influenza/MS +inform/aNGDS +infra-red/M +infringe/L +Ingersoll +ingest/DGbVS +inhabitance +inherent/Y +inheritor/S +inhibiting/U +inhold/JG +initialness +initiated/U +inkiness/S +inky/TP +inmate/SM +innocent/TYS +innocuous/PY +innuendo/DGMS +innuendoes +inoperative +inquest +inquire/kRDGZ +inquisition/SoM +insatiable/PY +insecticidal +inside/R +insight/6j +insinuator/SM +insistent/Y +insomuch +inspector/SM +inst/g +instalment/MS +instead +instep +insulate/DSnNG +insurmountable/Y +intangible/M +intelligencer's +intelligentsia/MS +intelligible/UY +intemperate/P +intensification/M +inter/ELDG +interaxial +interbred +intercede/GSD +intercensal +intercommunicate/DGnNS +interconnect/GDiS +interferometry/M +interleukin/S +interlock/GSD +interlocker/M +interlude/MS +intermediary/MS +intermediation/M +inter-modal +intermodulate/SD +internecine +internee/SM +internist's +interoffice +interpenetrates +interpolation/M +interpretative/Y +interspecies +interventionist/S +interview's/K +interweave/SG +intestate/S +intra +intraline +intramuscular/Y +intransigence/MS +intrauterine +intrinsic/YS +inundation/M +inventive/P +inventory/MDSG +invests/A +inveteracy/SM +invidious/YP +invigoration/MA +inviter/M +invulnerability/M +ion/s9MWqQ8-S +ipecac/SM +ipso +Ira +Irene +irk/DSG +ironwork/MS +irremediable/PY +irritate/BnSkNhVDG +irrupt/DGVS +Irving +Isabel/M +islet/MS +isomer/MS +isothermal +Israelite/SM +ISSN +issuance/SM +issuing/A +iteration/M +Ivan/M +J +jackpot/MS +Jackson/MS +Jacksonville +jaded/P +Jagger +jaguar/MS +jambalaya/SM +jape/GSMD +jar/MG6JSD +jarring/Y +Jayasuriya +jerky/TP +jerry/M +jerry-built +jess/M +jet/MDGS +jetsam/MS +jet-setted +jibe/S +jitterbug/RGSDM +Jo/M +jobless/P +jocundity/MS +Jodie +jog/RJDSG +jointing/E +jounce/SGD +journalism/SM +journalist/W +Jove +joy/pMDG6jS +joyous/YP +jubilee/SM +judgement/o +judgement-seat +juggle/RySDG +juiciness/S +Juliana +julienne/S +jumpsuit/S +Jupiter/M +justifiably/U +Kafka +kaftan +Kahn/M +Kalamazoo +Kannada +Kanoa/M +Kasprowicz +kazoo/SM +KDE +Kenneth +Kenny +Kenosha +kerning +Kerr/MZ +ketone/M +ketosis/M +Kewaskum +keyboardist/S +KGB +Khabarovsk +kickback/MS +kiddie/S +Kieffer/M +kif +kilogramme/S +kindler/M +kingbird/M +king-size/D +Kingstown +Kingwood +kinkiness/S +Kiwanis +kleptomaniac/SM +knee-jerk +knuckleduster/S +Koch +Kodak/M +Kodiak +kookiness/S +Korea/M +Kowloon +Krebs +Krugman +kudos/M +kurtosis/M +kW +kyle/SM +Kyushu/M +labelled/U +lacteal +lacuna/SM +lad/MRDJSG +ladle/GSMD +laggard/PYMS +lagniappe's +Lagos/M +Lagrangian/M +laid/Aacf +lake/SM +Lalo +lam/GSD +lambkin/SM +lampoon/SDGM +lancet/MS +landward/S +Lang/M +languisher/M +lank/T2PYZ +lankiness/S +lanolin/SM +lapdog/S +lappet/MS +lard/FMS +lardy/T +large/TPY +Larine +Larsen +larynx/M +lassitude/MS +Laszlo/M +late/PTY +latex/SM +LaTeX/M +lather/d +latherer/M +latitudinarian/S +latitudinary +Latrobe/M +latte/S +lauder/M +launching/S +lavage/SM +lawbreaker/SM +lawfulness/MS +Lawson +lawyer/YMdS +laxness/S +laymen/M +laziness/S +le/Gz3 +league/FMDGS +leapt +leathern +Leda +Lee +leftward/S +legacy/SM +legality/ISM +legate's/C +Legendre/M +legible/IY +legislative/S +legroom/SM +Leighton +leisureliness/S +leitmotif/MS +Leland/M +lemme/JG +lemur/SM +Len/M +lengthiness/S +lengthwise +leniency/SM +Leno +Lenore/M +lens/SDGM +lenser/S +Leominster +leopard/SM +leopardess/MS +lessor/MS +letterpress/MS +level-headedness/S +Lewis/M +Lexington +liability/SAM +libation/M +Liberace +liberality/SIM +liberalization/M +liberalness/SM +liberator/MCS +library/SM +Libreville/M +licence/SM +licensable +licensor/M +lichenology +Lichfield +licit/IY +lickerish +life/RpM +life-and-death +lifespan/S +ligand/MS +lightening/M +light-headed +lightship/SM +Lilliput +limber/dUS +limeade/MS +limper/M +lineage/MS +linefeed +link-up/S +Linn/M +Linton +lion/QSM-s +lipase/M +Lipschitz/M +liq +liquidity/SM +lisp/RMSGD +Lister/SM +listlessness/S +litany/MS +lithography/MS +Lithuanian +litigant/MS +liverwort/MS +living/eA +Livingston +Livonia +Ljubljana/M +llama/MS +LLB +loaded/AKcU +lob/MRDGSZ +lobular/Y +lobularity +locative +locator/SM +lock/RSDGM7 +locked/UA +locksmith/SMG +locomotion/MS +locomotive/YMS +lodged/E +lofter/M +loganberry/MS +logic/IMSY +loin/SM +Lois +Londonderry/M +long-awaited +Longbridge +long-faced +longhorn/SM +long-sighted/Y +long-standing +longueur/SM +long-waisted +lookup/MS +loosing/U +lore/SM +lorn +lorry/MS +losable +loss/SpMZ +lot/MS +lotion/MS +Louisville/M +lout/MS +low-born +lower-case +low-income +lowlight/MS +lowly/PT +lubrication/M +lucidity/MS +Lucille +lucky/TUY +Ludmilla +luger +lugubrious/PY +Luke/M +Lumire/M +lunchpack +lunch-time +lurcher/M +luxuriant/Y +Lyman/M +Lyme +lynching/M +lyrical/P +lyricist +ma/FMS +macabre/Y +machine-readable +macromolecule/SM +macroscopic/Y +made/AU +Madrid/M +Madsen/M +madwoman/M +Mae/M +Mafioso/M +Magdalene +maggoty/T +magnification/SM +magpie/SM +Maguire +mahatma/MS +Mahayana +maidservant/MS +mail/RS7GDMJ +mailshot +Maine +mainframe/SM +mainland/RMS +mainmast/MS +mains/M +mainspring/MS +majorette/MS +makeshift +Malabo/M +malachite/SM +malaria/SM +malarkey/SM +Malay +Malayan/MS +Male +malignant/Y +mallet/MS +managed/U +manager/oSM +managerial +managership/M +Manama/M +Manchester/M +mandarin/SM +mango/MS +mangold-wurzel/S +mangy/T +manhunt/SM +manifolder/M +manipulatable +manliness/S +man-sized +mantelshelf +Manton +mantra/SM +manumit/XNSGD +Manx +mappable +march/DRSG +margarine/SM +Marge/y +Marianne/M +Marina +Marjorie +marked/AU +markka/M +marl/SGDM +Marlborough/M +Marline/M +marmalade/SM +marquetry/MS +marriageability/SM +marriages/A +married/S +Marshall/M +Martha +martinique +Martinson +Marty +marvel/GDS +marvellous/Y +Marxism +Maryland/M +mascara/DGSM +mash/RJSGDM +masquerade/MRSDG +masseuse/SM +Massey/M +mastectomy/SM +masterliness +matchbook's +Mathematica +mathematician/MS +Mathias +Mathieu +matriarch/MZ +matriculate/NSGDn +Matsumoto/M +Mattel +maturate/SGD +matzo/MS +Maureen +Mauricio +Mauritanian/S +Maxwell/M +Mayfair/M +mayhap +mayoralty/MS +mayorship/M +Mayotte/M +maypole/MS +Mazda +mazer +mazy/T +Mbabane/M +McCarty/M +McCormick/M +McIntosh/M +McLaren/M +McLaughlin/M +McMillan/M +McPherson/M +mdse +measurer/M +meatball/SM +meatloaves +mechanizer/M +mediated +mediator/SM +medic/NYVnMS +medical/S +medicine/MoS +mediocre +Medway/M +meeting/M +Meg/M +mega +megabuck/S +megabyte/S +megalomania/MS +megalomaniac/SM +mlange +Melanie +membranous +memoir/SM +mendacious/PY +menial/YS +mensurable/F +mentholated +meow/DSG +Mercedes-Benz/M +merchantmen/M +meromorphic +merrymaker/SM +Merthyr +meshes +mesmerizing +messianic +mestizo/SM +metabolic/Y +metacentre/W +metallic/S +metallurgy/1MSwW +metamorphic +metaphysical +metastases +metatarsus/M +metempsychosis/M +metropolitan/S +mgr +micelles +microbicide/M +microeconomic/S +microeconomics/M +microfiche/M +microfilm/GDMS +micro-organism/SM +microword/S +mid-air/SM +Middlesex +midland +midlander +midlives +midway +midyear/SM +MIG/S +might/S2Zz +mightiness/S +Mignon +Mikhail +milepost/SM +miler/M +milestone/MS +militarisation +militate/SGD +militia/mSM +millenarianism/M +milligram/S +millilitre/S +millivoltmeter/SM +millstone/SM +Millwall +Milquetoast/S +Milwaukee +mincemeat/SM +mind-numbing/Y +mined/f +mineral/Qq8-SM +mineralisation/CS +mineralogy/Mw3S +miniature/GQ3S8M-qD +minicam/MS +ministerial +minke +minnesinger/MS +minority/SM +minstrelsy/SM +misbrand +miscall +misclassified +miscommunicate +miscreant/SM +misery/MS +misgiving/SM +misguided/P +mishandle/G +misnomer/SM +misogamy/M3S +misplace/L +missal/MSE +mistime/G +mitosis/M +mitt/SM +mobility/SMI +Mobutu +mocha/SM +mock-up/S +mod/oS +modal +modality/SM +moderation/MI +modify/NnRSBGD +Mohamed/M +Mohammedanism +Mojave +molestation/M +momentariness/S +Monaco/M +monastic/YS +monetarism/S +monetary/3Y +money-changer/S +Mongolian/S +'mongst +monitor/MSd +monk/SM +monkeyshine/S +monogamousness +monomaniacal +monomial/MS +Monongahela/M +mononucleoses +monopolist/W +Monrovia/M +monster/MS +montage/SMDG +moonbeam/MS +moonlighting/M +moonstruck +Moore +moose/M +moralist/W1 +morally/I +Moreen +moribund/Y +moroseness/S +morph/SDJG +Morpheus/M +morphogenesis +morrow/MS +mortal/IYS +mortar/dMS +mortgagee/SM7 +mortifier/M +mortify/GhnSND +mortuary/SM +mosaic/MS +mote/SMV +motes/C +motherboard/MS +mothers-in-law +motocross/MS +motorcycle/3GSM +motorised/U +mottle/SGD +mottoes +mouldboard/MS +mountain/SM +mournfulness/S +mousiness/S +movably/I +moveable/PSY +movement/SM +MPs +ms +mucous +muddlehead's +mug/2JMRGZSD +Muire/M +mukluk's +Mullen/M +multicultural +multilateralists +multilevel/D +multilingual +multiplexor/SM +multiversity/M +mummification/M +mummify/SNDGn +mumps/M +mundaneness +municipality/SM +Munroe/M +murder/rdSM +Murillo/M +murmuring/S +murmurous +Muscat/M +muscularity/SM +mushiness/S +musician/MSY +musketeer/SM +mutability/IMS +muted/Y +mutely +muteness/S +mutiny/DSGM +myopia/SM +mystery/SM +mythologise/CSGD +mythology/SQM31w +n/NnxVvu +nacho/S +nacre/MS +naffness +naiveness +naivete/Z +Nakayama/M +namely +nark/SMZ +narrowband +nascences/A +natch +nationalism/SM +nationally/4 +nationwide +natl +naught/z2MZ +navigation/M +naysayer/S +NBA +NBS +NCO +necessitous +necessity/MS +neckerchief/MS +necropolis/MS +nectarine/SM +needless/Y +needn't +ne'er-do-wells +negation/M +neglect/6jSDG +negotiability/MS +negotiable/A +negotiation/MA +neither +Nell/MY +neoclassicism/MS +Nepali/M +nephritis/M +Nero/M +nervousness/S +netherworld/S +nett/SJ +netter +neutralization/M +Nevada/M +nevermore +Newark/M +newfangled +Newnham +newsagent/SM +newscast/RSM +news-gathering +newsgroup/MS +Newsweekly/M +NFC +NFL +Nicholas +Nicky/M +Nicola/MS +nicotine/SM +Niger/M +niggard/YMS +niggardly/P +nigh +nightie/SM +night-life/M +nightshirt/MS +nightstick/S +Nikki/M +Nikon/M +nil/MGY +nimbi +nimbused +Nimrod/MS +ninety/HMS +ninety-seven/H +ninety-three/H +ninety-two +nitration/M +nitrite/MS +no/Q +NOAA +node/SM +noes +Nolan/M +nominee/SM +non-acid/S +non-adhesive +non-adjustable +non-complying/S +non-conservative +non-constructive +non-deductible +non-deterministic/Y +non-discrimination/S +non-enforceable +non-equivalent/S +non-factual +non-governmental +non-granular +non-interchangeable +non-interference +non-intervention/S +non-ionic +non-ionising +non-judicial +non-natural +non-nuclear +non-obligatory +non-operative +non-parametric +non-payment/SM +non-physical/Y +non-prescription +non-productive +non-reciprocating +non-recurring +non-returnable/S +nonsuch +non-surgical +non-taxable/S +non-trunk +non-user/SM +non-violent/Y +non-white/SM +Norbert/M +Nordic/S +normalcy/SM +normalise/CGASD +Normandy/M +Norris +north-eastward/S +Northrop/M +Northumberland/M +north-Westward/S +nosh/SDMG +nostril/SM +noticeboard/S +notion's +Nova +nubbin's +nubby/T +nugatory +nuisance/MS +null/S +nullify/DRSnNG +numberer/M +numbering/e +numbskull/M +nurture/MRDSG +nutate/GSD +nylon/SM +nympholepsy/M +oafishness/S +oakwood +OAP +oars/m5 +obdurate/YS +obdurateness/S +obligate/SNxyGnD +oblige/EGDS +observation/M +observatory/MS +obstetrics/M +obstreperous/PY +obstruct/GSvDuV +obstructionism/SM +obtain/SGD7 +obtrusiveness/SM +obtuseness/S +obviate/DnNSG +occipital/Y +occlusive/S +occurrence/SM +oceanic/4 +Oceanside/M +octal/S +October/SM +odious/PY +oenophile/S +o'er +oesophageal +oesophagus/M +Ofelia/M +Offaly/M +offensive/IYP +offertory/MS +officership/S +officious/PY +offprint/GMSD +offshoot/MS +oftener +oftenest +oiliness/S +Okamoto/M +Okinawa/M +Oktoberfest +Oldbury +old-time/R +old-world +Oliver/M +Olson/M +omen/SMd +omnidirectional +on-board +oneness/S +one-piece +one-third +one-track +one-way +onlooker/SM +onlooking +onward/S +ooh/DSG +oops/S +open-air +opened/AU +open-heart/D +open-top +openwork/SM +operand/SM +opine/GSD +Oporto +opossum/SM +Oppenheimer/M +opposite/YPS +oppression/M +optional/S +opus/SM +ordered/AU +orderer +ordinands +ordinary/TSY +ordination/SM +ore/MySo +O'Reilly +organise/EnADGS +organize/AnSEGDN +organza/MS +orgy/MS +orient/ENSADnG +oriental/SY +orienteering/M +origami/MS +original/U +Oriya/M +Orleans +ornament/nMDGNSo +ornithology/3wSM +Orpheus/M +Orrin/M +orthography/w1SMW +osmosis/M +osteoporosis/M +Oswald/M +OTC +other/SPM +OTOH +out/MDSGJ +outgrip +outgrow +outland +outlandishness/S +outlaw/DyG +oval/MSP +oven/SM +over-abundance/SM +over-abundant +overbook/G +overbuy +overcloud +over-delicate +overeducate +overload/G +overnight/G +overpressure +over-sensitiveness/S +oversize +overtake +overweening +overwrite/G +ovulate/GySD +ovum/SM +owl/MS +owner/SM +oxalic +oxaloacetic +oxbow/MS +Oxfordshire +oxidation/M +Paarl +Pablo/M +pacesetter/SM +pachyderm/MS +pacific/4 +pacification/M +packaging/M +paddy/MS +paeony/M +paganism/SM +painterliness +painting/M +pair/ADMSG +paired/UI +pal/MS +Palaeocene +palate/SgoM +Palestine/M +pallor/MS +Palmyra/M +palpitation/M +panache/MS +pandemic/S +pang/SM +parabola/MWS +paradigmatic +paraffin/SM +paralinguistic +Paramaribo/M +paramedical/S +paramount +paraphraser/M +paraquat/S +parasite/MwWS1 +parasitic/S +pardon/rgl7dS +pardonableness/M +parentage/MS +parfait/SM +Paris/M +parkland/M +parlourmaid +parquetry/MS +parson/MS +partial/IY +particularity/SM +partitive/S +part-timer/S +parturition/MS +partway +party/DMSG +pascal/MS +passbook/MS +passive/IY +passkey/SM +passover +pastiness/S +pastis +pastor/dMS +pasturage/SM +patchable +patellae +patency +paternalist/W +paternity/MS +patient/eMS +patisserie +patriotic/U +patron/98Q-YMqsS +patronise/k +patroon/MS +patten/MS +paunch/S2GMZD +pauperism/MS +paved/U +paver/M +pawner/M +pcm +PE +peacetime/SM +pearler/M +peasanthood +pebbling/M +pecan/MS +pectoral/S +pedagogics/M +pedestrian/Q-8qMS +peduncle/MS +pee/RGS +peekaboo/SM +peers/F +pell-mell +pen/oGDMS +peninsula/SM +penknife/M +penknives +pennon/SM +pennyworth/M +pensiveness/S +penultimate/SY +Penzance/M +people/DMGS +peopled/U +peptide/MS +perchance +percolate/NnDSG +perestroika/S +perfectionism/SM +perform/eDGS +performance/MS +performer/MS +perfused +periastron +perihelia +peril/MSDG +period/Mw1WS +periodontal/Y +periphrasis/M +periphrastic +perish/7RGDkS +perishable/IS +permanence's/I +permanent/PY +permit/GXDMNS +perpetrate/SGDNn +persevere/kGDS +Persia/M +person-to-person +persuasive/P +Perthshire/M +pervasion/M +perverse/PXVYN +pessimal/Y +petal/MSD +Pete +petitioner/SM +petitioning +petrodollar/SM +petrology/MS3w +petticoat/SDM +petty/TSY +pew/MS +peyote/MS +phantasm/SM +phantom/SM +Phelps +Philippines/M +philtre/SM +phoebe/MS +phone-in/S +phonemics/M +phony/TSP +phooey/S +phosphate/MS +phosphorescence/MS +phosphorous +phosphorus/M +photocell/SM +photojournalism/MS +photojournalist/MS +photolysis/M +photosphere/M +photosyntheses +phrasing/MS +phrenology/1w3MS +phylum/M +picador/MS +picot/SM +piecework/MRS +pieing +pig/LGZDMS +pillowcase/SM +pilot/SdM +pinafore/MS +pine/AGSD +pinged/I +pinned/f +pintail/SM +pip/drDkMGS +pique/SMDG +piste/SM +pistil/MS +pitfall/SM +pith/z2ZDMGS +pitiless/PY +pizzeria/SM +pl. +placeable/A +placebo/SM +placement/eMS +placenta/MS +plagiarist/SM +plaining/F +plain-spoken +plaints/F +plangency/S +planking/M +plantain/MS +plaster/rMdS +platitudinous/Y +Plato/M +plausibleness +plausibly/I +played/U +playmate/SM +pleasure/GDSlM +pleb/ZS +plenum/M +pleurisy/MS +plies/FAI +plop/GDMS +plough/mRGSMD +ploy/CS +plucky/TP +plumelike +plunder/dS +pluralism/SM +plus/S +poach/RDSG +poetess/SM +poeticalness +poetics/M +points/e +poker-face/D +polar/Q-8qSs +pole-axed +polemic/YS +polemicist/S +pole-vaulting +policyholder/MS +politest +politic/Q8-GDSq +pollinate/DNGSn +pollination/M +Pollock/M +polychemicals +polymath/SM +Polynesia/M +polypeptide/S +pondering +pooh-pooh/D +poolside +popinjay/MS +populated/UfA +Porifera +porousness/S +porringer/MS +portal/MS +porterage/M +portraitist +positioned/a +positions/4I +posses/GhDi +possessor/SM +post-classical +post-colonial +posted/AFI +posterity/MS +post-feminism +postfix/DSG +postgraduate/MS +post-industrial +postnatal +post-natal +post-nuptial +post-operative/Y +post's/IeF +postulate/NSnDG +potable/PS +potential/YS +potherb/MS +pot-hunter +potsherd/SM +poundage/MS +pourer's +pouring/e +poverty-stricken +powerless/PY +power-sharing +pp +Pr +practicals +practitioner/MS +Praesidium/M +prate/SRkDG +precarious/PY +precess/GDS +preciosity/MS +precociousness/S +predicament/MS +pre-echo +pre-eclamptic +pre-embryo/S +pre-employment/SM +preener/M +pre-exist/DGS +pre-existant +pregnancy/MS +pre-ignition +premire/SDGM +prenatal/Y +prenuptial +preoperative +preordain +prepack +pre-paid +prepay/L +preposterous/PY +preprint/M +presents/A +preservation/M +preservative/SM +preserve/nNV +preside/DG +press/FIGSADC +presumptuousness/S +pre-tax +pretending/U +previous/Y +price/SADcG +prickle/MDS2G +priest/MDSGY +prig/SM +primordial/YS +printable/U +prism/SM +privacy/SM +privileged/Uf +privy/YM +probational +probity/SM +proclivity/MS +procreativity +production's/Af +profess/DNxXhSG +profiteer/DGSM +profligate/SY +profoundness/S +profuseness/S +prognathous +prognosis/M +programmable/S +progressivism +project/SDVvMG +promenade/RMSGD +prominent/Y +promiscuity/MS +promo/SVu +proneness/S +pronunciation/aSM +proofing/M +prophylactic/S +propulsion/M +prorogue/DGS +pros/S +prosecutable +proser/M +protectedly +proteolysis/M +protestation/M +prove/EBSGD +providable +provide/NDRXSxG +provocation/M +prudence/ISM +prurience/SM +pry/TkDRGS +pseudo +psychobiology/M +psychokinesis/M +psycholinguistic/S +psychometric/S +psychoneuroses +psychopathy/SM +psychosomatics/M +psychotherapist/MS +public/N3MQ8n +publican/ASM +publishable/U +publishes/A +puckish/Y +puke/GDS +pukka +pulchritude/SM +pull-back/S +pull-down +pulser +pulverizer/M +punchline/S +punctilio/SM +puniness/S +punitive/PY +punk/T2SMZ +punt/RGDMS +pupillage/M +puppet/ySM +pure-bred/S +purity/ISM +purpose/6MvpVDjuSGY +purposeless/PY +purposive/P +pushiness/S +put-down +putrefaction/SM +puzzle/LRSkJDG +PW +python/MWS +pyx/SM +quadruple/SYDG +quadrupole +quail/DGMS +qualify/NEnDGS +quality/SM +quarrier/M +quarterback/SM +quartet/SM +quarto/SM +quasilinear +quatrain/SM +queenly/T +quenched/U +questions/A +quests/FI +quicklime/SM +quieter/E +quietus/MS +Quinton +quirk/ZM2S +quite/A +quiver/dZkS +quizzy/w1 +quondam +Ra +raccoon/MS +raceway/SM +racism/S +racket/MdZS +radiator/SM +radii/M +radiocommunications +rag/diGkMSDh +rags-to-riches +raiment/M +ramrod/MS +rancid/P +ransack/GSD +rap/d3RDGS +Raphael/M +rapid/YS +rapidness +rather +rating/MS +ratiocinate/DVGSNn +rationality/IM +rattlesnake/MS +raven/dSM +ravine/SMD +ray/DMSG +rayon/M +razzmatazz +RDS +readjust/LG +ready/TSDPG +Reagan/M +realised/U +realism/SM +realistic/UY +realized/U +rearmost +reason/rlp7dSM +Rebecca/M +recension/M +reception/MS3 +recession/y +recherch +reckon/dS +recognisable/U +recoil/p +reconcile/7SGD +reconfigure/B +recontamination +recordist +records/A +recreancy +recrudesce/DSG +rectal/Y +recursion/M +reddish +redeemable/UI +redemptive +redeploy/LG +redial/DG +Redondo/M +reducible/YI +redundancy/MS +reed/ZGDMS2 +Reese/M +refashion/G +referenced/U +referendum/SM +refine/LR +refined/cU +reflectance/M +reflexives +reforest/nGN +refractors +region/oSM +regional +registered/U +registration/MK +regrow/G +regular/q8Q-YS +regularly/I +regulate/CNGSDny +regulative +reheat/G +reinstitution +reissue +rejoin/G +relic/MS +religious/PY +relive/S +remainder/dMS +remark/Gl7 +rematch +remember/ad +remittance/SM +remitting/U +remobilize/B +remonstrate/nDVNvSG +remould/G +removal/SM +remuneration/M +Renaissance's +Renault/SM +rend/GS +render/rdJS +renunciant +renunciative +renunciatory +repertoire/SM +replenish/SDG +replicable +representation/f +reptile/MS +repudiation/M +repulsive/P +reputes/E +requite/DS +re-radiated +rescind/GDS +resentful/P +reserved/UY +residency/SM +residential/Y +resit/G +resolved/U +resonator/SM +resow/G +respecify/G +respect/ED6GSMj +respectability/MS +respell/G +respiration/M +respirator/SM +resplendent/Y +responsibility/ISM +responsive/UY +rest/6VjpvGuDMS +restart/G +restroom/SM +resultant/YS +resurface +retake +retard/nRDGS +retouch/R +retrogress/XDGSVNv +reverify/NG +reverse-charge +reversibility/I +revision/3y +revoke/DNGnRS +rewind/7 +Reyes +rhea/MS +rhizome/SM +rho/M +rib/GDMS +rice-paper +Richfield/M +Richmond/M +rick/MS +Ridgefield/M +Riesling/SM +righten +rigidity/S +Riley/M +ring-fence/GD +riotous/PY +risibility/M +risotto/SM +risqu +Ritalin +rivet/drSMk +Riyadh/M +road/MS +roam/GDRS +Roanoke/M +rocker/Z +rodent/MS +Rodney/M +roe/MS +Roger's +role/MZS +role-play/GD +roller-coaster +rolling-stock +roll-over/S +romance/RSDMG +Romanov/M +Romeo/MS +Romney/M +Romulus/M +Ronnie/M +rook/MS +root/RipDMGS +Rosalind/M +Roseland/M +Rosicrucian/M +rosin/dSM +Rossini/M +rotate/SxGDy +Rotavator/SM +rottener +rouble/SM +Roundhead/MS +round-the-clock +Rourke/M +rouse/SDG +row/DRMSG +Rowena/M +RPG +RSM +RSV +rubato/SM +Rubin/M +rudder/pMS +ruination/M +ruinous/Y +ruling/SM +Rumanian/M +Runamia +runty/T +rupiah/SM +rustic/S +rusticate/SGD +Rutgers +Ruth/M +ruthless/PY +Ryder/M +Ryedale +Ryukyu/M +Sabbath/MS +Sabina/M +sacristy/SM +Sadducee/M +sadomasochism/SM +sadomasochist/WMS +sagacious/Y +sagaciousness +sage/KMS +sagely +Saginaw/M +sahib/SM +sailboarder +sailor/MSY +salacious/Y +Salle/M +Salomon/M +saltless +salute/SnGND +Salvador/M +Salvadoran/S +salvoes +sameness +Sammie/M +sampan/MS +sand/ZMDG2S +Sanskritise/M +Santana/M +sappy/T +Saratoga/M +Sardinia/M +Sargent/M +Sassoon/M +Satanism/M +satinwood/SM +satori/M +Saturnalia's +satyriasis/M +Sauber/M +saucer/S +Saukville/M +Savoyard/M +savvied +sawfly/MS +saw-horse +sawtooth +saxifrage/SM +Saxton/M +Sayre/M +scalder +scalene +scallion/MS +scallop/dSM +scalloper/M +scalp/RSMDG +scanty/T +scapegoat/SM +scare/S2Z +scathed/U +scepticism/MS +Schafer/M +schedules/A +scherzo/SM +schism/MS +schmooze +schooling/M +schooner/SM +Schubert/M +Schulz/M +Schuster/M +sciatica/M +scleroses +scoot/RSDG +scorbutic +Scotland/M +scouting/M +scowler/M +scraggly/T +scrapyard/SM +scream/kRGSD +screenwriter/SM +screwy/T +scrim/SM +scrimmager/M +scrip/M +scrupulosity/SM +scuba/SM +scullery/SM +sculptural +scuppered +scythe/GSMD +Sea +Seagate/M +searched/A +searchlight/SM +sea's +sect/ISE +sectionalism/SM +secular/Q3-8qY +security/SMI +sedateness +sediment/SnNM +sedition/SM +seditious/Y +seed-bed/SM +seeded/UA +segmental +seigniory/S +seismogram +seismology/M3w1 +seismometer/S +selectivity/M +self-absorption +self-analysis +self-assertive +self-confidence +self-defeating +self-destruct/DVGS +self-discipline +self-expression +self-indulgent +self-propelled +self-regulation +Selfridge/M +self-sacrifice/G +selfsame +self-surrender +self-sustained +selves +semantic/3SY +semeiology/3 +semiconducting +semiprecious +semi-solid +semolina/M +seores +sensate/x +sensory +sensual/FY +sensuality/MS +septennial/Y +septillion/HS +septuagenarian/SM +Serbian/S +sere +servomechanism/MS +set/eMS +setback/S +settee/MS +seventy-one +several +Severn/M +sewerage/SM +sextuplet/SM +shackle's +Shafer/M +shag/ZDSG2M +shaken/U +shake-out +shallow/YSDT +shammy's +shan't +share-out +Sharpe/M +Shawano/M +sheen/ZSM +sheeny/T +sheepdog/SM +sheepish/PY +sheepskin/MS +Shelley/M +shelve/DSG +sherds +Shevardnadze/M +shielded/U +shimmy/MDSG +shindig/SM +shine/SeG +Shintoist/MS +shipload/SM +ship-rigged +ship's +Shirley/M +shit/ZGS +shockproof +shoe/pGSM +shooting-coat/S +shop-girl/SM +shout/eDGS +show/GJmR2zSDZ +shower/Zd +shown +shred/DRSMG +shrewd/TYP +shrink/KSG +shrinkage/SM +shrink-wrapped +shut-off/M +shuttle/MGSD +Shylock/M +shyly +shyness/M +Siamese/M +Siberian/S +sibilancy/M +Sibyl/M +Sicilian/S +sickbed/S +sickie/MS +sickle-cell +sickroom/MS +sideburns +sideshow/SM +side-slip +siege/SM +Siemens/M +Siena/M +sienna/M +sight/cMSI +sightedness +sightless/Y +signal/-MqRQ8GDmSY +signification/M +Silas/M +silkscreen +silkworm/SM +silly/TPS +Silva/M +simile/MS +simon +simon-pure +simony/MS +simple/TY +simplex/S +simulcast/S +Sinai/M +sincerely/I +sincerity/MSI +singe/S +singleton/MS +sink/RG7S +sinkable/U +sink-hole/SM +sinus/SM +Sioux/M +Sirius/M +sisal/SM +sitarist +site/DSM +situate/GnDN +sixty-first/S +sixty-onefold +skeletal/Y +skerries +sketch/SzRMDGZ2 +ski'd +skillet/MS +skinhead/MS +skipper/d +skydive/SRDG +sky-high +Skype/M +skyscape/S +slake/SGD +slanderer/S +slapper +slattern/YSM +slave-drive +slaver/d +Slavonic/M +sleety/T +slingshot/SM +Sloan/M +slosh/DGS +slowcoach/MS +slug/RSGDM +slung/U +Smethwick +smiling/UY +smirk/SMDG +smite/SG +smithy/SM +smoke/SR2GZDpM7 +smoothie/MS +smooth-tongued +SMSA/SM +snapshot/MS +Snell/M +snide/PTY +snifter/SM +snood/SM +snowblower/S +snow-white +snub/DGS +soapbox/SM +sociability's +sociality/M +socio-economic/YS +sociolinguistics/M +sodomy/Q8SM +sofa/SM +soft-boiled +softie's +softness/S +soire/MS +sold/AfecU +soldiery/SM +solenoid/SM +soles/I +Solzhenitsyn/M +sombreness +Sondheim/M +sop/DMGZS +Sophocles/M +sorbet/MS +sorcery/SM +sorghum/MS +sortie/SMD +sorting/K +sought/U +soundboard/MS +sourpuss/MS +southbound +south-Eastern +southpaw/SM +Southport +southwester/MS +south-westerlies +south-west's +sown/A +soy +space-saving +spade/SGMD6 +spadices +span/GDRMS +spaniel/MS +SPARCstation/M +spatula/SM +spavined +spawn/MGSD +speaking-tube +spear/MGSD +spectra/oM +spectrography/M +spectrophotometry/M +speech/pSM +spelt/a +spender/SM +spherule/MS +Spiegel/M +spin-drier/S +spineless/YP +spin-off/S +spinster/MS +spirochaete/SM +splatter/dS +splay/SDG +splayfoot/DM +splint/RDSGM +splinter/dZ +splodge/MS +splurge/MDSG +splutterer/M +spoilage/MS +spokeshave/SM +spongy/T +sponsorship/S +spontaneous/YP +spooky/TP +spotlight/SMGD +spots/C +spouter/M +sprayer/MS +spring/RZSz2G +springboard/SM +sprinkle/RJSDG +sprite/SM +Sputnik/MS +sputum/M +spyhole +sqrt +squash/ZGDS2 +squiggly/T +squirt/SGD +squishy/T +SRA/M +stable-lad/SM +stack/7GSDM +stagecoach/MS +stain/SpDG +stale/PTYDG +stall/SGID +stamen/MS +standard/s9qQ-8S +standardised/U +stand-offish +starling/SM +starry/T +starstruck +started/A +stash/GSD +stateroom/SM +states/5m +statesmanlike +static/YS +stationary +statuary/SM +statuette/SM +statute/SyM +staunchness +steadying +steak/SM +Stearns +steep/TSGDY +steers/m +stencil/DSMGJ +Stepney/M +sterile/Q8q-s9 +sternness +stickleback/MS +stigmatization/CS +Stillwell/M +stink/GZSRk +stippler/M +stockpot/SM +Stockwell/M +stolon/MS +stoma +stomata +stone/pSMZDG +stonework/M +stoppage/SM +storer/A +storm-bird/SM +Stradivarius/M +straight/STPY +straighten/rSd +straight-faced +straitness +strange/PTYR +Strasbourg/M +strata/M +stratosphere/SWM1 +stressful/Y +stretchable +strewer +stricter/F +strictness +strife/M +stringed +stringer/MS +stringy/TP +stripe/SMDZG +structure/ASGD +stubborn/TYP +stump/ZSDGM +stun/GSD +stunner/M +stunning/Y +stunt/iSDGM +stuntman/M +stupefy/SkGD +stupider +sturdy/TYP +stutter/dS +stymie/SD +Styrofoam +sub-clause/S +subcommand/S +subcontinental +sub-editorial +submarine/RSM +subordinate/ISNYDGn +subrogation/M +subservient/Y +subsidence/M +subsidy/SM +substantial/YI +substrate/MS +subtrahend/SM +subtropics +succeed/DSG +succinct/PY +suffragan/S +Sufi/M +sugar-daddy/SM +suggest/RGuVvSDb +suicidal +suitableness +suitably/U +suited/U +Sukkoth's +sulphur/MdSW +sultanate/MS +Sumatran/S +summertime/M +summit/SpM +sunny/TP +superb/PY +superconductor/MS +supererogatory +superfluousness +supernal +supersonic/YS +supervision/M +supplicant/SM +supply/ASDGc +supposable +suppress/NXVGDSb +supreme/YP +sure-fire +surfaces/A +surge's +surly/PTY +surpass/GkSD +surprise/kSMDG +susceptible/I +Susette/M +suspicion/SM +sustainable/U +swampland/SM +swanlike +Swansea/M +swayback/DS +sweat/RZSGMD2z +sweetening/M +sweetheart/SM +swimsuit/MS +swishier +switchback/MS +Switzer/M +swizz/S +swordfish/SM +swordplay/M +swordtail/M +syllabi +Sylvania/M +Sylvie/M +symbiont/M +symbolism/SM +symbolist +symmetry/Q8SWM1w +sympathetic/UY +synchrotron/M +syncopal +syncopator/SM +synopses +syntactical +synthesize/ADGS +Syrian/MS +tab/GMZSD +Tabb/M +tablespoon/6SM +tachograph/S +tacit/PY +tack/SM +tact/jWM6p1w +taffrail/MS +Tahoe/M +taint/SGD +Taiwanese +Talbert/M +talent/pMDS +talented/U +talk/RDvSuZVG +tallish +Tallulah/M +talus/SM +Tamil/SM +tamp/DGS +Tamworth +tanager/SM +Tandy/M +tangential/Y +tangibly/I +tangle's +Tara/M +tare/SM +tarn/MS +tassel/GMDS +tasteful/EP +tat/rSGDZ +taut/TY +tautologous +Tb +Tbilisi/M +teacake/SM +teaches/A +teacupful/SM +teamwork/M +tear/6pMGSj +teaspoon/6MS +technician/SM +technophiles +technophobic +teens/Z +teeny-bopper/MS +teeth/DGM +teethe +telecast/RSG +Telecom +telekinesis/M +telephone/G3ZMSDW +teleprinter/SM +TelePrompTers +telly/MS +temperament/o +tempo/SM +tenaciousness +tendency/SM +tenderest +Tenneco/M +tenner +tensile +tension/KMS +tensor/SM +tent/DFMGS +tentative/Y +tenth/Y +terbium/M +Teri/M +term/GDSM +terminator/SM +terminology/SMw1 +Terrence/M +Terrie/M +terrine/M +testimonial/MS +testis/M +testy/TY +tetra/SM +textual/FY +Thailand/M +theism/MS +theoretic/Y +thereabout/S +theretofore +thereunder +therm/oSM +thesauri +Thessalonian +they'd +thigh/MS +thirteen/HM +thirty-five/H +this +thole/M +Thor/M +though +thoughts +Thracian/M +thread's +threaten/dSk +three-fold +three-wheeler +thresh/SDRG +threshold/MS +throe/SM +thug/SM +thuggery/M +thunderflash/S +Thurston/M +thyristor/SM +thyrotropin +tick-tock/GSDM +tide/ZD2SoJG +tidewater/SM +tidily/U +Tienanmen +ties/AU +tiff/MS +tiger/MS +timbre/MS +time/pYRDSJMG +timepiece/SM +Timothy/M +tingeing +tinnitus/M +tin-pan +tin-plate/M +tinsel/MGSDY +tipsy/TP +Tirane +Tiree/M +titillate/SnDGkN +title/SGAD +titled/U +toady/SDGM +toadyism/M +Todd/M +to-do +TOEFL +toilette/SM +Tokyoite/MS +toll/DGS +tomfool +tones/fc +tongue-tied +tongue-twister/S +Toni/M +tonnage/SM +tonsorial +topcoat/MS +tor/M +torch/SMDG +toreador/SM +torsional +torsion's/I +torturous +touchdown/MS +touching/Y +touchy/TPY +tough-minded +tourism/MS +towel/SMDG +tow-line/SM +townsfolk +tow-rope/SM +Toyota/M +traceable/U +Tracey/M +tracing/MS +traction/FCESMA +Trafalgar/M +Trafford +tragedy/SM +trail/GRSD +trails/F +trainable/U +tranche/MS +tranquil/Y +transcriptional +transformational +transiency/S +transient/SY +translational +translucence/ZM +transmittal/MS +transposable +travelogue/MS +traverse/DSG +Travis/M +treason/S7M +trembly/T +Trenton/M +trialled +tribal/Y +tricycle/SM +triennial/YS +trifle/GRMSD +trilogy/SM +triplane +triplex/S +triptychs +trite/YF +triumph/SDGM +trolleybus/S +trollop/SM +tropic/SM +troubled/U +troubleshoot/GRS +trumpery/SM +truncheon/MS +trustiness +trustworthiness/U +trying/Y +tuba/SM +tuberous +tumultuous/PY +tunable/C +tunnel/JSRGDM +tupelo/M +turbid +turbocharged +turfy/T +turgidity/SM +turnabout/MS +turnkey/M +turn-up/S +turquoise/MS +turreted +tussle/SDG +TWA/M +tweed/MS2Z +Tweedledee/M +Tweedledum/M +twelve/H +twenty/SH +twenty-second/S +twilit +twill/DSG +twitch/SGDZ +two-edged +two-step +two-tone +Tydfil/M +Tylenol/M +tympani +tympanum/SM +typhoon/SM +typify/DGS +UDP +UL +ultracentrifuge/M +ultramodern +ululate/NnSGD +umber/SM +Umberto/M +umbilicus/M +umbrae +unappeasable +unceasing/Y +unchanging/Y +unclear +uncommon +uncomprehending/Y +unconfused +unconstitutional +uncouth/Y +uncurl/G +undercover +underemphasis +underground +underrate/GSD +under-report +understandingly +undramatic +unfeeling +unflappable/Y +unfold/G +unfussy +ungodly +ungrateful +UNICEF +unicorn/SM +unidirectionality +unification/MA +unilateralist/S +unimpeachable/Y +uniprocessor +unitary +unite/AGEDS +unmanageable/Y +unmannered/Y +unmeaning +unnatural +unpleasantness +unreasoning/Y +unrest +unromantic/Y +unsnap/GD +unsubtle +unwound +upcoming +updraught/SM +upgrade/DSG7 +upriver +uproot/SGD +upsilon/MS +upstairs +upturn/SGD +Ural/S +ureter/MS +urine/nMNS +USA +usable/UA +USS +usuriousness +uterus/M +utilize/fnDSNG +vacuole/SM +vague/TY +vagueness +valour/M +valvular +vandalism/MS +vanguard/MS +vanity/MS +variable/IS +variableness +variate/MnxNS +varnish/SDMG +Vassar/M +Vaughan/M +vectoring +Vedanta/M +veer/DGS +veldt/M +venal/Y +veniality/S +Venn/M +ventilated/U +ventriloquy +venturi +verb/SM +verbena/MS +verboseness +verboten +verdant/Y +verge/GFSD +Verna/M +vertebral +vertex/MS +veterinarian/SM +vexation/SM +vexing +via +viaduct/MS +vibrato/SM +viburnum/SM +vicar/SM +vice-chancellorship/S +Vichy/M +vicinity/MS +viciousness/S +Vickers/M +Vickie/M +victim/s9Q8-MqpS +vigilante/SM +vigour/M +village/RSM +Villainage +villeinage/M +Vilnius/M +VIP/S +virgule/MS +virology/M +virulent/Y +vis/bNX +viscountess/MS +visored +vitalizing/C +vitamin/MS +vitrify/NGSnD +vivisectionist +Vladimir/M +V-neck +VOA +vocable/AI +vociferate/GSNDn +Voetstoots +Vogel/M +voice's/I +void/GD7S +voile/SM +VoIP +volunteer/MGSD +vorticity/M +votary/MS +vote/CDGeS +vote's +voyage/SMRGD +voyeur/MS +Vulcan/M +vulgar/Q-8Yq +wage-earning +Wagner/M +Waikato/M +wait/RDSG +Waite/M +Walcott/M +walk-on +walkover/MS +wallow/GDS +Waltham/M +Walvis/M +Warburton +warhorse/SM +wart/MS +warthog/S +wasp/MS +waxwork/MS +Wayne/M +wearer/SM +weaverbird +webbing/M +we'd +weekday/SM +weeny +weigh/eSADG +weightlifting/M +Weiner/M +Weissman/M +Welch/M +welcome/UG +welcomes +we'll +well-defined +well-disciplined +well-endowed +well-equipped +Wellington/M +well-known +well-loved +well-made +well-meant +well-thought-out +Welshwomen +werewolf/M +Werner/M +West/M +westernmost +Westmeath/M +Weston/M +westward/S +Wharton/M +whatever +what're +whatsoever +wheelchair/SM +wheelie/SM +when +whence +whereof +whew +whip/MJGSD +whisker/Z +whistle/DRSG +Whitefield/M +whitewash/DGMS +whoa +wholegrain +why +Wichita +widgeon/M +widow/RMSDG +width/SM +Wilberforce/M +Willie/M +willingness/M +Wilton +Wimbledon/M +wince/SDG +wincher/M +Windsor/M +wineglass/SM +wineries +wing/pmRGDM +winter's +wise/TYS +wispy/T +wistful/Y +withdraw/SG +withdrawer/M +withered +withheld +wits/e +WNP +wobbly/T +wolfram/MS +woman/MsQY +wondrousness +woo/DRGS +woodbine/SM +woodcarving/SM +woodlander +woof/DRGMS +Woonsocket +word's +Wordsworth/M +workhouse/SM +workmanlike +workplace/SM +worldwide +wormer/M +worried/U +worry/RDkSGh +worsen/dS +wound/MDJSG +wounded/U +wove/A +wrestle/DRGS +Wright +wrinkled/U +wrong-headedness +wrote/fAc +wrought-iron +WV +Wykeham +Xenia +Xenix/M +xenophobe/MWS +Xerox/SDGM +yacht/5mMSDG +Yakima +yammerer/S +yang +yen/DSGM +yeti/SM +yew/SM +yield/DSG +yogi/SM +Yorker/S +Yorkshireman +Yost/M +Youngberry +yourself +youthfulness +Yuan +Yuba +Yucatan +Yugoslavia/M +yum/Z +yuppie/SM +Yuri +Zambian/S +Zanzibar +Zawahiri +zeal/M +ziggurat/SM +Zion/3M +Zionism +zoophyte/SM +aback +abate/DLGS +abbess/SM +Abe/M +Abel/M +ablate/SDG +abomination/M +above +abridged/U +abridger/M +absence/SM +absolute/PTY3S +absolve/GSD +absorbed/UA +abstain/RGSD +abstractedness/S +abstractionism/M +abuser/MS +abusive/YP +abuzz +AC +academic/S +academicianship +accelerate/NVDSnGk +accent/GMDS +accented/U +accentuation/M +accident/oMS +accidental/SP +accomplice/SM +accountability/SM +accountable/P +Accra/M +accreditation/M +accumulation/M +accurateness/S +accusation/M +accusatory +accustomedness/M +acer +acerbity/SM +acetic +Achaean/M +aching/KY +acidophiles +acoustic/SY +acoustics/M +acquiescent/Y +acquirable +act/cS4GAD +actioned +activated/A +actuarial +acupressure/S +addendum/M +addle/DSG +Adenauer/M +adhesive/PMSY +adjoin/SDG +adjourn/SLDG +adman/M +admonish/SkGLD +admonisher/M +adoration/M +Adriatic/M +adulterated/U +adulterous/Y +advantage/MEDGS +advantageous/EY +adventurism +adverb/SoM +aerate/NSnDG +aerial/M3S +aero +aeroacoustic +aeronautic/SY +aeronautical +aerospace/SM +affair/SM +affiance/SDG +affrication/M +affright +affront/GDMS +Afghan/SM +aficionado/MS +afire +aforethought +aftermost +aftershock/MS +afterword/SM +Ag +age-old +ageratum/M +Aggie/M +agglutinate/nVGNDS +aggregation/E +agleam +Agnatha +agoraphobia/SM +agrarianism/MS +aide-de-camp +aigrette/SM +aileron/MS +airship/MS +airspeed/SM +airstrip/SM +Alabamans +Alastair/M +Albania/M +Alberto/M +Albion/M +Albuquerque/M +alcohol/MW1S +Aldus +aleph/M +Aleppo/M +Alfa/M +alfresco +alga/M +Algonquin/M +alibi/GSMD +aliveness/S +Al-Jazeera +allay/GSD +allege/NShnDG +allegoricalness +alleviate/SVDnGN +all-inclusive +all-in-one +alliteration/M +allocate/CDnAGSKN +allotting/A +allowed/E +allows/E +all-pervading +all-round +allusive/P +allusiveness/S +almond/SM +aloe/SM +aloof/PY +alpaca/SM +alpha/SM +Al-Sharif +alter/dS7 +altercation/M +altered/U +altimeter/MS +Alvin/M +amalgamation/M +Amanda/M +amateurish/PY +Amazon/MS +ambassador/SM +ambient +ambler/MS +ambling +ambulant/S +amelioration/M +amend/LDSG7 +amid +amine/S +ammo/SM +amniocentesis/M +amoeba/MSW +amorality/SM +amp/SYGMD +amphetamine/MS +ampoule/MS +amyl/M +an/CS +anabolic +anaconda/SM +analgesia/MS +analogous/PY +analyse/GWDS +analytic/Y +anaplasmosis/M +anarchism/SM +Anastasia/M +anatomy/Q813wSWM +ancestry/SM +anchorage/MS +anchoress +ancillary/S +Andersen/M +Andover/M +anemone/MS +aneurysm/SM +angina/MS +angleworm/MS +Anglophobe/M +angry/PTY +angstroms +animadvert/GDS +animism/MS +animosity/MS +annotator/SM +announce/RDSLG +annoyance/MS +annul/GLDS +annulus/M +annunciate/NDnSG +annunciation/M +anointer/M +anomic +Anselm/M +antacid/SM +Antarctica/M +anteroom/MS +anthraces +anthropoid/S +anthropology/31wMS +anti-abortion/3 +anti-abortionist +antibacterial/S +anticline/MS +antigen/MSW +antinomy/M +antisepsis/M +antiserum/SM +Antonio/M +antonym/SM +antonymous +Antwerp/M +aphorism/MS +apices's +apolar +appearer/SM +appendage/SM +appendectomy/SM +appetizer/SM +apple-cart/M +apple-pie +appliance/SM +applicable/Y +applied/Aa +applier/aM +apposition/M +appraising/Y +appreciative/IYP +apprehend/DvNVSGuX +apprehensive/P +approbate/Nn +appropriately/I +appropriation/M +approval/MES +appurtenance/MS +aqualung/MS +arability/MS +Ararat/M +arbitrary/PY +arboretum/SM +arborvitae/SM +archaise/RDSG +archdiocese/MS +architectural +ardour/SM +are/B +arena/MS +argosy/MS +argue/7DRSG +Argus +Arian/SM +Ariel/M +aristocracy/SM +Arlene/M +Armageddon/M +armband/MS +armful/SM +armhole/SM +armload/M +armour/SRDGMZ +army/MS +aromaticity/M +Arpanet/M +arrack/M +arranged/EKA +arrested/A +arrogance/SM +arrogant/Y +artfulness/S +arthritic/S +arthroscope/SW +ascaris +ascended/A +asceticism/SM +ashore +aside/S +aslant +Asmara/M +asphodel/SM +Asquith/M +ass/S8M +assailable/U +Assam/M +assembly/m5SM +assenter +assiduousness/S +assist/SGD +assonance/SM +assuaged/U +assume/GNXBSDV +assure/GASkD +asthma/WSM +astray +astrologer/MS +astronomy/1MWSw +astrophysics/M +astute/TPY +Aswan/M +asynchronism/M +asynchronous/Y +ataxia/MS +ATC +atheism/MS +atheist/M1SW +atilt +atomics's +atria +attach/SDRL7GM +attention/ISM +attentionality +Attica/M +attitude/MS +attraction/MS +attune/DSG +Audi/M +audit/dXyMVSN +augur/dMS +auk/SM +aural +aureomycin +Auschwitz +australites +authenticate/DSG +authenticity's +authorise/KA +autism/MS +autobahn/MS +autodidact/SMW +autoimmunity/S +autonomic/S +auxin/MS +availabilities +availability/UM +avaricious/YP +avenged/U +average/GMDSY +aversion/M +avert/GbSD +avid/Y +avitaminosis/M +avoirdupois/M +avowal/SEM +awed/c +awe-inspiring/Y +awesome/YP +awl/SM +axle/SM +ayatollah/S +Ayers +Azeri/M +Aziz/M +Aztecan +baboon/SM +babushka/MS +baby/DTMSG +babyish +Babylonia +baccarat/MS +Bach/M +back-door +backlog/DGMS +backwood/mS +badmouth/DGS +bagatelle/SM +bailiwick/SM +bakehouse/M +Baku/M +balancedness +balder/W +baleen/SM +ball/DRGSM +ballcock/S +ballsy/T +balminess/S +baloney/SM +Baluchistan/M +bamboozle/GDS +band/DmGZSM +bandage/SDMG +bandeau/M +banding/E +bandpass +bandwagon/SM +bandy/DTSG +baneful/T +Bangui/M +bankbook/MS +banyan/SM +barbarise/GDS +barber/dy +barberry/SM +Barbette/M +barbital/M +Barbour/M +barefaced/YP +bare-foot/D +barf/SYGD +barfly/SM +bargain/DGRSM +barhop/GSD +Barnstaple/M +barrel/GMDS +barrister/MS +Barry/M +Bart/M +basal +bask/GSD +basset/MS +Basse-Terre/M +bast/DRGM +bastard/Q8q-MSYZ +basting/M +bathhouse/MS +baton/SM +batterer/S +battlement/D +Bausch/M +bawd/2ZSMz +bawdiness/S +bawdy/TP +Baxter/M +bazillion/S +beadle/MS +beadworker +beano +beast/YSMJ +Beatrice/M +beck/SMDG +Becket/M +Becquerel +bedraggle/DSG +bedside/MS +bedspring/SM +bee/RSyM +beebread/MS +beechnut/MS +beefburger/SM +beefiness/S +beefsteak/SM +beetroot/M +befallen +befell +behaviourist/WMS +behemoth/SM +Belfast/M +Belgium/M +Belgrade/M +believe/GERDS +bellhop/MS +bellied +bellyacher/M +belt/DGSM +Beltsville/M +bender/SM +benefaction/SM +benefactress/S +beneficial/P +benefit/rMdS +Bengali/M +benighted/PY +benign/Y +Benz/M +Benzedrine/M +benzine/SM +Berber/M +Bergman/M +Berlin/Mr +Berlitz/M +Bernadine/M +Bernhardt/M +Bernie/M +Bernstein/M +berry/SDGM +Bertram/M +bester +bestiary/SM +bestrew/DGS +bestridden +betaken +betel/SM +betrothal/SM +bevy/MS +beware/GSD +bewhiskered +bezique +biannual/Y +bibliophile/SM +bicentenary/S +bickering/M +biconnected +bidding/M +big/TGDP +bigamous +bijection/SM +bijoux +bike/RMSGD +bilateral/YP +billet/SdM +billiard/MS +billposters +bimetallic +binaural/Y +biochemical/SY +biog/S +biophysicist +biopsy/DGMS +biosphere/SM +biracial +bird/DRGSM +birdbrain/SMD +Birkenhead/M +birth/ASM +birthday/SM +birthright/SM +birthstone/SM +biscuit/MS +bistate +bistro/SM +bite/cS +bitternut/M +bitumen/MS +Bizet/M +bizzes +blackball/DGSM +blackboard/MS +blacken/Sd +blackly/3 +Blackstone/M +blamelessness/S +blanketing/M +Blanton/M +blasphemy/MS +blear/SD2GzZ +bleep/MDGSR +blench/DGS +blissfulness/S +blockhouse/MS +blockier +bloodless/PY +bloodshot +blow-by-blow +blubberer +Bluebeard/M +bluebird/MS +blueness/S +bluff/PSDRGTY +blunt/DSTGPY +blurry/T +bluster/rSZdk +boa/SM +Boadicea/M +boastful/P +boatman/M +bobbin/SM +bob-sleigh/RSDMG +bockwurst +boisterousness/S +bold/PYT +bolt-on +bombard/GLDS +bombshell/SM +bonbon/SM +bondholder/SM +bondwomen +bone/pRMSZGD +Bonham/M +bonkers +boodle/DMSG +bookish/YP +bookkeeping/M +booklet/SM +boomer/M +boomerang/GSDM +boorish/YP +boost/RGSMD +bootless +borehole/S +boron/M +bosser +botany/3WSMw1 +botch/SRGD +both/Z +bothy/M +bottle/RDGSM +bottle-feed +bottle-green +botulin/M +botulism/SM +boucl +boulder/dMS +boundless/PY +bourbon/MS +bovine/Y +bowdlerise/nDGS +bow-legged +brace/SkGDM +brackishness/S +Bradshaw/M +braggart/MS +Brahman/M +brainchild/M +brainteasing +brainwashing/M +Branchville/M +Brandt/M +Brasilia/M +brasserie/SM +bratty/T +bravo/GDS +brazenness/S +breadcrumb/S +breadth/M +breathless/YP +breathtaking/Y +breathy/T +bremsstrahlung/M +Brendan/M +Brentford/M +brewery/SM +bricker +bridal +Bridewell/M +brim/DGMSp6 +brine/SGDZM +bristle/SMYGD +BRM +broad-brush +broadcasting/S +broad-minded/Y +bronc/S +bronchial +bronchiolitis +bronze/SMGD +bronzing/M +brooch/SM +brookside +brose +brother-in-law +brotherliness/S +brought +brownie/SMT +brownout/SM +Broxbourne/M +Broxtowe/M +Brunel/M +brushfire/SM +bruter +brutishness/S +Brutus/M +BTW +bu. +bubbly/T +buckles/U +buckteeth +bud/SGDMZ +Buddha/M +buffoonery/MS +buffs/A +bugger/dZ +built-up +bullseye +bullyboy/SM +bum/SDRGTM +bumptious/PY +bunch/ZSDGM +burbler/M +burglarproof/GD +burnable/S +bursitis/SM +burst/eS +burster/M +bushfire +bushing/M +buskin/SM +butchery/SM +butler/dSM +butt/RSM +butterball/MS +buttock/DSMG +buttonweed +bxs +byers +cabinetry/SM +cable/DGSM +cache/DGSM +CACM +cacophonous +cacophony/3SM +Cadillac/S +caenorhabditis +cakewalk/SDGM +Calais +calamari/S +calamine/MDGS +calcareous/YP +calciferous +calculates/Aa +calculating/aA +Calcutta/M +calibrator/MS +Californian/SM +callosity/SM +calorimeter/SMW +calumniate/nDSGN +calumnious +calypso/MS +camp/RGZSM2Dz +campanile/SM +campy/T +can/dz2SDRZrGyM +Canberra/M +candid/PY +cannibalistic +canoe/GD3SM +can-opener +canopy/DGMS +cantankerousness/S +cantata/SM +canteen/MS +capacity's/c +capeskin/SM +capitalise/ADGnS +capitalize/AGnSDN +capitol/SM +capitulate/ASDGNn +captain/GDSM +captivation/M +capture/RDGS +capturing/A +Caputo +carat/MS +caravel/MS +carbide/SM +carbonaceous +carbon-paper +carbuncular +carding/M +care/6jSp +careerer +careful/TP +cares/DG +careworn +caricaturisation +Carmarthen/M +carmine/SM +carnivorousness/S +Caroline/M +carom/S +carpenter/dSM +carpetbag/RMSDG +Carroll/M +carry/DRSG +car-sick/P +carte/M +Carthaginian +cartilaginous +cartography/WSM +Casanova/M +Cassandra +catalytic/Y +cataract/MS +catatonia/MS +catbird/MS +catchy/T +catecholamine/SM +categorise/AGSD +catharses +catholicity/MS +Catholics +cation/MW +catnap/DMSG +caulk/GDRJS +Cavendish +cavernous/Y +caw/GSMD +Cayenne/M +CD/M +ceilidh/M +c.Elegans +celerity/SM +Celia/M +celibacy/SM +cellphone/SM +cemetery/SM +censorial +censorship/SM +cent/SM +central/qsQ89-3 +centralise/CDnSAG +centreline/MS +centrifuge/MGNDS +cereal/MS +cerebrum/MS +certified/UAC +certitude/MIS +Cervantes +cesspit/M +chalice/MDS +chalky/T +challenged/U +Chamberlain/M +chamois/MDSG +champaign/M +Champlain +chancing/M +changeable/U +channel/qs-9JSQ8RGDM +chaotic/Y +chapeau/MS +Chaplin +charabanc/SM +characterised/U +chard/MS +charger/ESM +charioteer/DSMG +charlady/M +charlatanry/SM +Charlemagne/M +Charley +chasuble/SM +chatelaine/MS +chatty/PT +Chautauqua +cheapen/dS +cheapskate/SM +checker/S +cheep/MGDS +cheerless/YP +cheesiness/S +chelation/M +Cheltenham +chemotherapist/SM +cherisher/M +chesterfield/SM +chesty/T +Chevrolet +chewy/T +Chiba +chickpea/SM +childish/PY +chilliness/S +chillness/S +chino/SM +Chinook +chin-strap/MS +Chippenham +chippy/S +chirp/GDZS +chlamydia/S +chm +chophouse/SM +Chordata +chordate/SM +choreograph/ZGRS1DW +Chris +Christchurch +Christine +Christlike +chromic +chrysalids +chuff/MD +chug/DSGM +chump/MGDS +Chung +churchwarden/SM +churning/M +cilia/M +cinematographer/SM +ciphered/C +cir +circlet/MS +circulation/MA +circumcision/M +circumnavigation/M +circumscribe/SXDNG +circumstantial/Y +circus/SM +cirrhotic/S +cited/I +citizenry/SM +citrate/DM +citron/MS +civvies +clack/DGS +claimant/SM +clamber/dSr +clamorous/YP +clamper/M +clan/mSM +clangorous/Y +clangour/SGDM +claque/SM +Clark/M +classed/e +classifiable/U +classmark/SM +Claude +Claudius +claver +claw/DSGM +clean-living +clean-shaven +clearer/M +clematis/MS +clemency/MIS +Clemens +clergy/5mSM +cleverest +cliffhanging +Clifford +climbed/U +clink/DGSR +cliquier +cloakroom/MS +cloche/SM +clockmaker/M +clockwise +clogs/U +closed-circuit +close-knit +closet/SdM +close-up/S +closish +clothier/SM +clothing/Mf +cloudlet +clove/RMS +Clovis +club-class +clutch/SDG +clutter/dS +co/EDS +coadjutor/SM +coagulant/SM +coalescent +coat/cMSf +Coates +coating/SM +coattail/S +coattest +cobra/SM +coccus/M +cockle/GDMS +cock-of-the-wood +coconut/MS +Cocos/M +coddler/M +coed/M +coeducational +coercible/I +co-founder +cogitate/SNVnGD +cognomen/SM +cognoscente +cohort/SM +coif/M +coiffure/SDMG +coinage/MS +col/SNVnW +Colchester/M +cold-blooded/Y +Colgate +coll +collaborate/VGDNSvn +collectedness/M +collogue/DSG +colloquia +colloquies +colossal/Y +colouration/EM +colourless/Y +columnist +combinational +comedown/MS +comeuppance/SM +commentary/SM +commissar/MS +commissionaire +commission's/A +comparer/M +compelling/M +compensate/DcSnGN +complain/Rk +complaint +complaisant/Y +completable +comply/LRnJN +component/SM +compressor/MS +computation/oM +computational +concealed/U +Concepcin/M +concert/DiGhM +concerting/E +concocter/M +concord +condign +condiment/SM +condo/SM +condominium/SM +conduce/nNvDGVS +conduit/SM +coneflower/M +confection/R3SGDM +conferral/MS +confessional/S +confetti/M +confide/kDRGS +conformable/U +confrontation/M +congeal/DLGS +congestion/SM +conglomerate/DMSGnVN +congrats +congressperson/S +conic/S +conjuring/M +Connelly +connoisseur/SM +Connors +connotative/Y +conquerable/U +conqueror/MS +conquest/ASM +conquistadores +consanguinity/MS +consecutive/PY +consequence +conservator/SM +considerably/I +considerer/M +consign/L +consigned/A +consistency/SMI +conspicuous/PIY +conspirational +Constantinople +constitution/AMS +construction/CMAS +construction's/a +constructive/YP3 +constructiveness/S +contaminating/C +contemn/SGD +contemplation/M +contention/SM +contently +contest/7 +continently/I +continuer/M +contradictory/PY +contrast/GvZSDkV +controllable/U +contumacious/Y +contumely/MS +conurbation/SM +convalescence/MS +convalescent/S +convenience/ISM +convoy/GDMS +cookie/MS +cookware/SM +cooperant +co-option +co-ordinate/GDSNV +cope/SZ +Copenhagen/M +copied/A +copyable +copying/a +coquette/SMGD +Cordoba +cords/F +corf/M +Coriolis +corkscrew/DSMG +corner/d +cornice/DSMG +corpulence/SM +corpulent/Y +corpuscular +corral/GDMS +correct/TxvPSDuGY7V +corrugation/M +corruptible/I +Corsica/M +cortisol +coruscation/M +cosmical +cosmogony/3MS +cosmonaut/SM +cossacks +cost/YGvSMJuDpV +cost-cutting +cottage/DMRSG +cotyledon/MS +cough/GDS +could've +council/SmM5 +counted/AUEa +countryside/MS +couples/U +coupling/MC +courtly/PT +covariant/S +covenant/DSGM +coverable/E +cozen/dS +Crabbe/M +crackling/M +crackup/S +craft/Dm52MGzZS +Cranston +Crawford +crawlspace/S +creased/U +creaser/I +credenza/MS +credulousness/S +cremate/SyGnND +crematoria +crematorium/MS +crepe/GDMS +crpe/SM +crest/DMGpS +crestfallen/PY +cresting/M +Creutzfeldt-Jakob +Crewe +crewel/SM +cribbing/M +cricket/rdMS +criminal/qQ8-SMY +crisper/M +critic/YQ8Ss9M +criticality +crockery/SM +Croix +Cromwell/M +cropper/MS +cross/GASUD +crossable +crosscurrent/MS +cross-cut/SMG +crosser/S +cross-examine/NDSG +cross-eyed +crosswind/SM +crotch/DSpM +croup/DMGZS +croutons +Crowley +crown/MSGD +cruet/MS +crumbliness/S +crystallize/NRnDGS +CTOL +cuddle/D2GYS +cultism/MS +cultist +cultural/4 +Cumbria/M +cuneiform/S +cupid/S +curable/PI +curacy/SM +curate/DGMS +curia/M +curiae +curlycue's +current/PYS +currents/f +cursiveness/E +cursiveness's +cursives +curtain/DMGS +curvaceousness/S +curvy/T +cusses/FE +custodian/SM +cut-and-paste +cutlass/MS +cuts/f +cutting/MY +cuttlebone/MS +CV +cyanogen/M +Cybele/M +cybersquatting +Cyclades +cycleway/S +Cyclopean +Cyclops +Cynon/M +cytoplasm/SWM +dacha/MS +dado/MS +daintiness/S +daisy/MS +Damocles +Damon/M +damson/SM +dandruff/MS +Daniel/S +dank/YPT +Danny/M +Danville +Daphne +dartboard/SM +dastardly/P +date/MGVRSiphD +day/SM +daydream/SRMDG +daylight/GSDM +daysack +Dayton +d'Azur +DBMS +deacon/SdM +deaden/Sdk +dealing/a +deanship/SM +deassign/G +deathlike +death-warrant/MS +debase/RL +debauch/yGhSiD +debit/d +de-brief +Decatur/M +Decca +deceive/UGDS +decency/SIM +deciduous/YP +decisive/PIY +declare/vnRDNVGyS +dclass +declassify/DGNn +decontaminate +decorating/Ac +decorator/SM +decoy/GMS +decrepitude/SM +deductibility/M +deductible/S +deep-sea +defame/yRGn +defeatism/SM +defecate/SNGnD +defect/GuSDMVv +defence/p +defensibility/M +deference/SM +definitely/I +deflate/GnDNS +defuse +degraded/P +dehydrate +deicide +dejection/SM +Delaware/M +Delgado +deli/M +deliberate/PuvYV +Delibes +Delilah +demesne/MS +Demeter +demigoddess/MS +democracy/SM +demographic/S +demoralise/n +demotivate +demythologize/nDGNS +dendrite/SM +Denis +dens/T +dentistry/MS +dent's +denudation/M +dependence/ISM +deplorable/P +deploys/A +deponent/S +depositor/SM +depository/SM +depravity/MS +depreciable +depress/bvkVXN +deprive/SGnND +drailleur/MS +Derek/M +derisory +describe/NVvuRX +descriptive/SP +desecrater/M +desecration/M +deserving/U +desiderata +desperado/M +despicable/Y +despond +destiny/SM +destruction/MS +destructive/P +desuetude/MS +detain/DGSL +d'etat +detergent/SM +deteriorate/DNSnGV +determinate/IPYN +deuce/DGhMS +developer/SAM +devilishness/S +devour/DRSG +diachronic +diachronicness +dialyse/SGD +diaper +Dickensian +Dickinson +Dickson +dictum/M +diddle/RDSG +Diego +diesel/SM +dietetic/S +diethyl +dietitian/SM +differenced +differential/MSY +differentiate/SGnBDN +difficult/YZ +diffident/Y +diffractometer/MS +diffuse/PSvYRDGubNxXV +digested/U +digestible/I +digestiveness +Digimon +Dijkstra/M +diker/M +dilithium +DiMaggio +dimethyl/M +dimply/T +Dionysian +dipsomania/SM +diptychs +directed/aUIA +directions/A +dirk/MS +dirt/zZ2SM +dirty/TDSGP +disaffect +disambiguate/NSDGn +disappoint/Lhk +disbelieve/k +discernibility +discernibly +discrete/nYPN +discus/SMG +discussion/M +dishabille/MS +disharmoniousness +dishwasher/SM +dishwater/M +disinterestedness/S +disjoin +disjunct/Vv +dismayed/U +disordered/P +dispensable/I +dispense/RyGnDS +displeasure +disport +disproportional +disputation/M +disputed/U +disrobe/G +dissension/SM +dissertation/MS +dissimilitude/S +dissipation/M +dissociable/I +dissonance/SM +dissonant/Y +distant/PY +distinctly/I +distinguishable/IU +distribute/ASVGD +dived/M +divergent/Y +diversification/M +divert/SDG +divestiture/SM +divination/M +divorce/SM +Dnieper/M +DOB +dock/MS +doctrinaire/S +doe/SM +doggedness/S +dogma/1MSW +dogy's +doing's +dole's +dollar/SM +dollop/dSM +dolt/SM +Dom +domicile/GSDM +domino/M +don/NSGnVD +Donaldson +doom-laden +dopiest +Dora/MW +Dorchester +dorky/T +doss +double-cross/G +Doubleday +doublethink +doubted/U +Doug +dower/MdS +downbeat/SM +downright/YP +downs/8 +downstairs +drag/DMZSG +Drakensberg/M +drastic/Y +drawler/M +drawn-out +dray/MSDG +dread/S6GDj +dreamt +dresses/AUc +droop/S2GZDk +droopiness/S +drop-head +drowsiness/S +druid/S +drumbeat/MSG +drunken/PY +dry-cleaning +dubbing/M +dubiety/SM +Dublin/M +ducat/SM +ducker/M +duckweed/MS +ducky/TSM +duh +dulcet/Y +Duluth +dumbstruck +dumdum/SM +Dumfries/M +dungeon/GSMD +Dunwoody +duodenal +duplicable +duplicative +Dupont +durance/M +duress/MS +Dusenberg +dusting/M +Dutch/5m +dynamical +dynamics/M +dyne/M +ear/6SYMD +earl/2MS +early/PTS +ear-piercing +earplug/SM +earthiness/S +ease's/U +easiest +Eastern +eatery/SM +eave/SM +ebullient/Y +Eccles +ecclesiasticism +ECG +echelon/dSM +echoes/A +eclecticism/MS +eclogue/SM +e.coli +e-commerce +economical/U +editable/U +eduction/M +Edwardian/MS +effect/DuGvVSM +effectiveness/SI +effeminate/SY +effete/PY +efficacy/ISM +effuse/NDvuVSGX +egoism/MS +Ehrlich/M +eider/SM +eighty-six/H +eighty-twofold +Eileen +Einstein/M +eke/GSD +Elaine +elans +elated/P +electable/U +Electra +electress/M +electrician/SM +electrocardiogram/SM +electrode/MS +electroencephalograph/ZWMS +electromechanics +electromotive +electroplate/SGD +electroshock/MGDS +eleemosynary +elegiacal +elementary/YP +eleven/HMS +Eli +elicit/dSn +elide/NSDGX +Elizabethan/S +Elliot +ellipticity/M +elope/LSDG +elusive/P +emaciate/SGnND +e-mail/MSGD +embody/AEGDS +embosom +embower/Sd +embrittle +emcee/MGS +emerge/ASGD +emf/S +emigrant/SM +eminence/SM +emir/SM +empathetic/Y +emphatic/Y +emulsify/nRSNGD +encamp/DLSG +encapsulate/SNDnG +encipherer/M +encode/JDRSBG +encore/DSG +encumbered/U +endgame/M +endosperm/M +endue/GSD +endways +energy/qSQMs8-9 +Enfield +enfold/DGS +enforceable/U +enfranchize/LDGRS +engage/AGESD +engender/dS +enhance/GRLDS +enmity/SM +ennobler/M +entangle/EDLSG +enter/AdS +enteritis/MS +enthusiastic/UY +entomology/S3Mw +entrench/LDSG +entrepreneurship/M +entry's +enumerate/VnGDNS +enviable/P +enviousness/S +environmentalism/MS +envisage/SGD +enzymology/M +epaulette/MS +Ephesian/S +epicure/MS +epiphany/MS +epitome/s-9qQ8MS +equals/F +equator/SM +equestrienne/MS +erosion/M +errantry/M +errata/SWM1 +erratum/MS +Erskine/M +erstwhile +erysipelas/SM +escalate/CDGNnS +escalation/CM +escritoire/MS +essay/DRMG3S +essence/MS +establish/ELDGS +Estelle +Esther +estimable/P +estimableness/I +estimation/MSc +estoppal +etcetera/MS +etching/M +eternalness/S +ethnography/MW +Euler/M +eulogist/W +eulogy/Q9s38SM +eurhythmics +Eurocentric +Euroscepticism +Eurostar +eustatic +evacuee/SM +evaluator/SM +evasion/M +evener +event/6SjGM +eventide/MS +eventuality/SM +everything +evisceration/M +evolve/SGD +exacter/M +exaction/SM +exaggeration/M +exaggerator/SM +exalt/RnhSNDG +examined/U +examiner/SM +excelsior/S +excitation/M +excursus/MS +executor/MS +exert/cGDS +exhaustion/SM +exhaustive/P +exhilaration/M +exhumer/M +exoneration/M +exorbitance/MS +exorcist/MS +exosphere/SM +exp +expatiation/M +expectational +expected/UY +expediency/IMS +experimentalism/M +expiation/M +explainable/U +explicit/PY +exponentiate/GnDSN +expressed/U +expressionist/WS +expunger/M +extemporaneousness/S +exterminate/DnSNG +extinguish/GR7SD +extinguishable/I +extract/G7VDSv +exuberance/SM +exudate/M +exurban +exurbanite/SM +ex-wives +eyeful/SM +eyewash/SM +f/F7 +fabricator/SM +factual/YP +factuality/M +faggot/dSM +faint-hearted/Y +fairgoer/S +fairing/M +fairish +Fairport +Faisal +faithfulness/SM +fallopian +famed/C +familiarness +famous/YP +fanlight/MS +FAQ/SM +Faraday +faraway +farmland/MS +fart/SDGM +farthing/SM +fascism/SM +fashioned/A +fat/SoYPTMGZD2 +fatefulness/S +favourably/U +favoured/SYM +Fayette/M +feasibly/I +feathering/M +feathery/T +fed/Ufc +federal/q-Q83Y +fedora/MS +Felicia +felicity/ISM +fellow/MS +felon/SM +fem +fennel/SM +ferny/T +ferocity/SM +fetter's +feudatory/M +fever/SdM +fibroblast/MS +fibroses +fickleness/S +fiduciary/MS +fierceness/S +fifty-first/S +figuration/MK4F +filamentary +filled/cAU +filleting/M +filtered/U +fingerling/M +finger-plate +finish/ASGD +finisher/SM +finishing/S +firearm/SM +firebox/MS +fire-brick/MS +fire-bug +fire-guard/M +fireless +fire-trap/SM +firmament/SM +first-hand +fish-hook/SM +fish-tanks +fistfight/MS +fits/Aae +fitting/PY +five-finger +fix/KDS4G +fixer/SM +fizzy/T +flab/ZSz2M +flaccidity/SM +flagpole/SM +flak/dSM +flamenco/SM +flame-thrower/MS +flaming/I +flamingoes +flashbulb/SM +flashy/TP +flat/PTSYGMD +flatfish/SM +flatmate/SM +flatness/S +flatter/SdkZr +flattish +flautist/SM +fledgling/SM +flexitime/M +flight/GSZ2pMD +flight's/cK +flimflam/SDGM +flimsy/TPY +floor/SGJDM +flooring/M +florescent/I +florid/PY +flounce/DGSZ +flowerless +flu/M +fluoridate/GSD +fly-by-night +flyover/MS +flyswatter/MS +foaminess/S +foci/M +fog's +foil/SDG +foliar +folklike +folksy/TP +folk-tale/S +follow-on/S +follow-up/SM +foment/RGSnDN +foolery/SM +football/RDSGM +footling +for +forage/RDGSM +forbade +forborne +Fordham +forecastle/MS +forefather/SM +foregoer/M +foretell/GRS +forewarn/SDJG +forfeiture/MS +forfend/SGD +forget/jGS6 +forkful/S +formaldehyde/SM +format/RMGuSDvV +formic +formulae/W +forswore +forthright/PY +fortitude/MS +forty-nine/H +forty-one +forwarding/M +fosterer/M +foulard/SM +four/HSM +four-eyes +fovea/M +fractionate/DG +fractious/PY +fragmentary/PY +frame/RMSDG +framed/U +France/SM +franchise/ESDG +franchisee/MS +Franciscan/S +francophone/M +Frankel/M +franker/M +franklin/M +fraternal/Y +fraternity/SMF +fratricidal +freak/GSMDZ +freakish/PY +Freda +Fredericton/M +free-living +Freemason/SM +freezable +freon/S +fretwork/SM +Freudian +frier's +fro/S +frontier/SM +frostbiting/M +froward/P +Fruehauf/M +fruitful/TP +ftp +Fulani +full/c +full-scale +full-timer/S +fully +fulminate/SNDGn +fumigant/MS +Funafuti/M +fund/ASDGM +fund-raising +funereal/Y +funkiness/S +furbisher/MS +Furness/M +furthermore +furtiveness/S +fusillade/SMDG +fusion/IM4F +fussiness/S +fusty/TP +futon/S +fwd +Ga/y +gabble/GDS +gad/RSDG +Gadsden +gainer/SM +Gainsborough +gaitered +Galilean +Galileo/M +Gallagher/M +gallery/DSM +Galois +galvanism/MS +gamekeeper/MS +gangrene/DSMG +Ganymede +gap-toothed +garbler/M +Gardiner/M +garishness/S +garlic/DSGZM +garner/Sd +Garnett +gasify/SRnGDN +Gaston +gastric +Gatling +Gaul +Gaulish +gaunt/PYT +gauze/DMZSG +Gaza +gaze/RGSD +gazelle/SM +GDP +gearwheel/MS +geese/M +Geiger +gelcap +gemlike +geneticist +genitourinary +gentile/S +genuine/YP +genuineness/S +geocentric/Y +geochronology/M +geography/SM1Ww +Geordie +geostationary +German/MSW +gerontocracy/M +gesture/SMDG +get-out/S +gettable +gewgaw/SM +ghat/SM +gherkin/MS +ghettoes +gift/hGDSMi +gigawatt/M +gigolo/SM +Gilchrist/M +gingerbread/SM +Giovanni +girdle/DSGM +given +glacier/SM +glaciology/M3w +gladsome/T +glandular/Y +Glasgow/M +glass-blower/S +glasshouse/SM +gleaning/M +glister/Sd +globulin/SM +gloominess/S +glorification/M +glower/d +glut/SMGD +gluttony/SM +glycerine/M +gnaw/JSGD +gnawing/M +gob/SGDM +gobbledygook/S +Godspeed +goer/SM +Goldberg +goldmine/S +gonad/SM +gondola/MS +Gonzalez +goodhearted +goodie's +goofiness/S +goon/SM +gorgeousness/S +gossamer/MS +gossiper/S +got/I +Goth/1W +gov. +governable/U +governess/MS +government's +grading/A +graduate's/f +Graeme +graffito/M +gram/MS +gramme/SM +granary/SM +grandiloquence/MS +grandiloquent/Y +grandiosity/MS +Granger +grant-maintained +granulation/M +grapple/SGD +graticule/M +gratuitousness/S +gravestone/MS +grazing/c +great-grandfather +great-grandmother/S +greedy/PT +greengrocer/SZM +greenmail/SGD +greeting/M +gregariousness/S +Grenville +greyish +greyness/S +grief/MS +Grimsby +grinds/A +Griswold/M +grizzle/SYGD +grok/SDG +grossness/S +grottoes +grouch/2ZDSzG +groundnut +growl/2GSkDR +grubby/TP +gruesome/YPT +gruffness/S +GSA +G-string/SM +guano/MS +guarantee/GdSM +gubernatorial +Gucci +guernsey/S +guffaw/GDSM +Guiana/M +guideline/SM +guileless/YP +Gujarati +gulden/MS +gun/yGSZRMD +gunboat/MS +gunshot/MS +Gunther/M +gurgle/DGS +gurnard +gybe/S +gyp/S +haberdashery/MS +habitability/MS +hackler/M +haematin +haemorrhoidal +hahnium/S +hair/p2ZSMD +hairball/SM +haircut/SMG +hairdo/SM +hairnet/SM +hair-slide +hair-splitter/SM +hair-splitting +haler/MI +half/M +half-light +half-marathon/MS +halfpennyworth +Halifax/M +halo/MDSG +Hammersmith/M +Hammond +handcart/MS +hand-held +handhold/MS +handicap/GDRMS +handsome/PTY +handwoven +hang/7RmDJSG +happen/SJd +happing +harangue/DGS +Harare/M +Harbhajan/M +hardback/SM +hardwood/M +Harlem +harlequin/SM +Harmon/M +harmonic/YS +harmonium/MS +Harrington/M +Harry's +harsh/PTY +Harvey +hassler +Hathaway/M +havering +hawkish +Hawthorne +head/DRzGm2pihMZJS +headdress/SM +headgear/MS +headmaster/MS +hearer/SM +Hearst +heart-warming +heating/Kc +heaves/M +hectolitre/S +heeding/U +heft/DzG2ZS +heh +Heidi/M +heigh-ho +heliography/M +hell-cat/MS +Hellenism +Hellenist/SMW +helpless/PY +helpmate/MS +hemstitch/DSGM +henchmen/M +Henrietta +hepatitides +herbal/3S +herbivorous/Y +hereupon +heritage/MS +herniate/GDS +herringbone/SMGD +Hertzog/M +hesitater/M +heterogamous +heuristic/SMY +hexachloride/M +hexafluoride/M +hexagon/oSM +hieroglyphics/M +higgledy +high-mindedness +high-resolution +hijackers' +Hillsdale +hinderer/M +Hines +hippo/MS +hippy/TMS +his/JDG +hisser/M +historical/P +historicism/M +historicist/M +historiographer/MS +hitched/U +hitches/U +hittable +hoariness/S +hoax/DRGSM +hobnail/DMS +hod/SM +hodge/SM +Hodgkin/M +hoecake/MS +hogan/MS +hogger +hoity +hokey +holidaymaker/S +holiness/S +hollandaise +hollow-eyed +Hollywood/M +Holocene +holy/PST +homager/M +homelessness/S +homestretch/MS +homeward/S +homework/RM +homicide/SoM +homiest +hominess's +homoeostasis/M +homogenate/SM +homograph/SM +homomorph/WZM1 +homomorphism/SM +homopolymers +Hon. +honesty/SME +hood/DGMiS +hooves/M +Hopkins +Horatius +horizon/SM +horizontal/SY +hormonal +Hormuz +hornblende/MS +Horowitz +horrible/PY +horse-drawn +horseplay +horse-race/SMG +hosanna/GSD +hosier/SMZ +hosiery/SM +hospice/MS +hospitality/SM +hostage/MS +hostess/GMDS +hothouse/MSGD +hotplate/MS +hounder/M +housebroken +housecleaning/M +house-hunting +housekeep/GR +housetop/SM +howitzer/SM +HUD +Huddersfield +huddle/DSMG +Huey +hug/SDG +hugeness/S +Huggins +Hugh +Hughie +hula/MDGS +humane/P3Y +humbleness/S +humeral/S +humorist/WSM +humorous/PY +hunch/GSDM +hunk/MZS +hunt/DmGRJS +hurricane/SM +hurry/iSGhD +hurtfulness/S +hurtle/DGS +Huston/M +Hutchins +hydrochloric +hydrology/M31Sw +hydrolysis/M +hydromagnetic +hydrometry/MS +hydroplane/DMSG +hydroponics/M +hydrothermal/Y +hydroxyzine/M +hymn/WSGMD +hymnody +hypersensitiveness/S +hypocaust +iambi +Iberia/M +ibis/SM +Iceland/MRW +identify/BRnDlNSG +identity/MS +ideology/M31wS +idiopathic +igloo/MS +igneous +ignorable +ignorantness's +ii +ilea +ill-conceived +ill-humoured +illuminant +illusionist/MS +imagery/SM +imbecility/SM +imbruing +imitable/I +immoral +immoveable +impaired/U +impede/S +impedimenta +imperious/YP +imperturbable/Y +impinge/LS +implacability/MS +implementability +implemented/U +implicate/SDG +implicit/YP +imponderable/SP +impressionability/SM +imprest/SM +impulsiveness/S +imputation/M +inane/TY +inapplicable +inasmuch +in-between +inboard +incapacitate/SNDG +incarceration/M +incense/GMDS +incept/DVSGv +incestuous/PY +incisive/P +incisor/MS +incite/LRX +inclusion/M +incompetent/SM +incorporate/DANGS +incredulous/c +incrustation/MS +incur/GS7lD +incurable/S +incursion/M +India/M +Indian/SM +indiscipline +indubitable/YP +inductor/MS +inert/PY +inessential +inexorability/M +inexorable/YP +infantile +infatuation/M +inference/GSM +inferencer +infidel/MS +infill/GM +influx +information/ES +Inglis +ingrate/M +ingress/SNM +inhabitable/U +inhale/NnR +inheritable/P +inheritance/EMS +inheritress/SM +inhibiter's +inimitable/YP +initiator/SM +in-joke/S +injured/U +innate/PY +innateness/S +innkeeper/MS +inoculating/A +ins +insalubrious +inserter/M +inset/G +insistence/MS +insole +insomniac/S +instate/ALSDG +institution/SM +instruction/SM +instructive/P +insulter/M +insurance/FMSA +insured/U +insurgent/SM +intake/M +integer/MSNn +Intel/M +intenseness/S +intensive/PS +interbreed/GS +interclass +intercom/MS +intercommunication/M +interfaith +interindustry +interior/YMS +intermarriage/MS +interocular +interpreter/aMS +interregional/Y +interrogation/M +interviewee/MS +interwoven +intifada +intimidate/NDSkGyn +intone/xnN +intoxicant/SM +intracellular +intraindustry +intransitiveness/S +intraprocess +intricate/PY +introductory +introit/SM +introvert/GSDM +intuitionist/M +intuitive/P +invade/RXVuDGSN +invaluable/P +inveigher/M +inventor/SM +invert/RGSDb +investigate/AGDSN +inviolable/Y +invisible/PS +invitational +invoke/RnDGNS +involution/SM +iota/SM +IOU +IP +irksomeness/S +Irkutsk +ironical/P +irony/MS +irredentism/M +irresistibility/M +irritation/M +Ishmael +isle/SM +isobar/SWM +isolate/SnNDG +isolation/3M +isomerism/SM +isometric/YS +isostatic +Itanagar +itchiness/S +itchy/TP +it'd +Ithaca +itinerant/SY +jackdaw/MS +jackknives +Jacques +jacuzzi +jailbreak/SM +Jakob +jalousie/SM +Jana +jardinire/MS +jct +Jeannie +jeans +jejune/PY +jell/DYGS +jellyfish/MS +Jenson +Jerome +jerry-builder/S +Jersey/M +Jessie +jest/kMDRGS +jet-setter/SM +jet-setting +jewellery/M +jiggly/T +jilt/DGS +Jim/ZM +jiu-jitsu +jobber/Z +jobbery/M +jobbing/M +jobholder/SM +Jo'burg +jocose/PY +jocular/Y +jodhpurs +Johnstone +Jolla/M +jonquil/SM +Josephine +Josephson +Josephus +Josiah +joule/SM +jovial/Y +Jowell/M +Joyce +joyed/c +joyfulness/S +jubilate/GDNnS +judicial/KY +Judson/M +Julie/M +jumpiness/S +June/M +Juneau +Jungfrau +jurisprudence/MS +justifiability/M +justifiable/U +justified/U +justify/RlBDNSGn +Justin +jut/SGD +K +Kafkaesque +Kalahari +kaleidoscope/SWM1 +karmic +Katrina/M +Kauai +kebab/SM +kedgeree/S +keel/DGMS +keelhaul/GDS +keeping/M +Kelley +ken/GSMD +Kenton/M +Kerry/M +Kevin +Keynes +keyword/SM +Khachaturian +kibbutzim +kick-start/SDG +kilobuck +kilogram/SM +kilojoule/SM +kilter +Kimball/M +Kimberley +kindergarten/SM +kindliness/S +kingdom/SM +kingpin/MS +kink/2MGDZSz +kip/SDGMR +kite/MS +kludgey +knead/RDGS +knelt +knickerbocker/S +knickers +knight-errantry +knothole/MS +know-how +knowledgeable/P +knuckle/SDMG +Knudson +knurl/DS +kookaburra/SM +Korean/S +Kosciusko +Kraemer +Kramer +kronor +Ku +Kublai +Kumar +Kuwaiti/S +KwaNdebele +label's +labile +lacerate/NGDnS +lack/MS +laconic/Y +lacrosse/MS +lactate/SNMnDxG +ladder/d +lady/MS +lain/fc +lambaste/GSD +lambency/MS +lamed/M +lamented/U +lamp/GDSM +Lanai +landownership/M +Langer +language/SM +Lansing +lanthanide/M +laptop/MS +Lara +largemouth +Larry/M +Lars +lass/MS +last-ditch +last-minute +latchkey/SM +later/A +lathing/M +latticework/SM +Lauderdale +laundrette/S +Lauren +Laurent/M +Lausanne/M +lavatorial +law/eSM +law-abiding +lawbreaking/SM +lawsuit/SM +laywoman/M +lbs +Leakey +leaning/M +learner/SM +leash/GSUD +leather/SMZd +Leblanc +lecherous/YP +leech/GSM +leek/MS +leg/omDSbM2pNGJZn +leg-bye +legginess/S +legion/SMy +legislate/vVSGnDN +leg-spinner/MS +Lemke +lenient/Y +lent/A +lentil/SM +Leo +Leonardo +leonine +lepta +lesson/dMS +Letitia/M +letter/drmJ +leukaemia/M +levelness/S +lever/dMS +levity/SM +Lhasa +liberal/IY +liberate/CnDNG +liberation/CM +Liberia/M +libero +librarian/MS +libretti +license/SGD +Liddell/M +lies/A +lieut +life-preserver +lighted/CU +light-pen/MS +likelihoods +liken/dS +Lilongwe/M +liltingness +Lima/M +lime/GMDZS +limitation/MC +limn/DSG +Lindberg/M +Lindsay/M +lineal/Y +linguine +linguistics/M +lining/feA +lining's +lintel/SM +linty/T +lipid/MS +liplike +Lisburn/M +literal/YSP +literalistic +literariness/S +literature/MS +litigation/M +littrateur/S +litterer/S +littleneck/M +littleness/S +live/yRGTDPJY7S +liveries/C +Liz/MZ +lo +loanword/S +loathing/M +locality/SM +lockjaw/SM +locust/SM +lodestone/SM +loge/MS +logical/P +logistical +Loire +loll/DGYS +longevity/MS +long-term +long-windedness +lookout/SM +loony/TS +lope/S +lordliness/S +Lorenz/M +Loretta +lost +loud-mouth/MDS +Louisianan +lousy/TPY +lovely/TSP +lovemaking/M +lowland/MRS +loyal/3Y +loyally/E +lozenge/DSM +lubber/MSY +lubricator/SM +lubricious/Y +lucidness/S +Ludovic +lukewarmness/S +luminosity/SM +lummox's +lung/DMGS6 +lungfish/MS +lupin/S +lutenist/SM +Luther +luting/M +lymphoid +lynx/SM +MacArthur/M +macaw/MS +Macclesfield +machete/SM +macrobiotics/M +macroeconomic/S +macromolecular +madcap/S +mademoiselle/SM +madness/S +maelstrom/MS +Maggie +magic/MYGD +magistrate/SM +magma/WMS +magnanimity/SM +magnetometer/MS +mah-jongg/M +mahout/SM +maid/MS +mailbox/MS +maim/RGSD +Majorca/M +majority/SM +make/GASU +make-believe +Malaprop +malapropism/MS +malevolencies +malfunction/GSD +malinger/drS +malleable/P +malting/M +malty/T +mambo/MGSD +manacle/SDMG +manageable/U +maana/M +Mandalay +Mandel's +mandrel/SM +Manet +manhandle/DGS +manhood/SM +manifestness +manioc/SM +manly/PT +manna/MS +Mannheim +mannikin's +manoeuvring/e +manpower/MS +mantel/SM +mantle/ESDG +Mao +map/GRSMDJ +Marcellus +Marco/MS +Margery/M +marginalia +marginality +marinade/DMGS +marketplace/MS +marking/M +Markov/M +Marley/M +marquise/M +marquisette/MS +marry/DGSA +Marta +Martinique/M +Marxian +masked/U +masonry/SM +massacre/MGDS +mass-produced +mastic/NSnM +mastication/M +mate/MzJS +mathematics/M +Mathews +matriculation/M +matrimony/oMS +Matthau +Matthew/S +Matthias +maturities/I +mawkishness/S +maxillae +maxima/M +maximal/S +maximum/YMS +may/EG +Maynard/M +mayor/SM +Mbps +McCall/M +McClain/M +McFadden/M +McGuire/M +McKnight/M +meagre/Y +meander/SJd +meaningful/P +meaningfulness/S +meanwhile +measures/A +Meath/M +medal/MSD +median/YSM +mediate/IPY +mediating +meditates/K +medley/MS +megaphone/MDSG +megaword/S +Melanesia +melange +Melba +mellowness/S +melody/SWM1 +membrane/MSD +memorandum/SM +menagerie/SM +Menlo +menopausal +menservants/M +mental/Y3 +mercantile +mercury/oMW +merge/RGSD +meridian/SM +meritorious/U +meritoriousness/MS +merlin/M +Merrimack +mesh/UD +meshing +message/SMDG +Messrs +metalsmith/MS +metamorphism/SM +metathesized +meteorologist/S +methane/M +methanol/M +methionine/M +methylated +metrics/M +metro/MS +metropolitanization +mews/MS +Michele/M +Mickelson +microchemistry/M +microchip/S +microfarad +micros/M +microsecond/SM +microsurgery/MS +middle/mDSGkJ +Middlesbrough/M +middleweight/MS +midfielder +mid-flight +midget/SM +mid-off +midpoint/MS +midrange +midspan +midst/MS +Midwest +midwicket +midwinter/MYS +migration/MI +milady/MS +Milan +militancy/SM +militarise/CSDG +Mimi +Minardi +mindlessness/S +minefield/SM +mini/S +minibus/SM +minimal/S3 +minimality +minimum/SM +miniskirt/MS +minster/MS +minuteness/S +Mirrlees +mirthful/P +MIRV +misanthropist/S +miscellanea +mischief-making +mischievousness/S +misdemeanant/SM +misdirect +misfield +misidentify/N +misogynist/W +misreport +missive's +Missoula +Mitch/M +Mitchell/M +mobcap/SM +mock/RGSkD7 +modem/MS +moderate/YIPN +moderateness/S +modulate/CGANDS +modulus/M +mohair/SM +Moines +molar/SK +molehill/MS +Moliere +Moline +molly/MS +monad/SMW +monarch/3wWMZ +Monegasque +monetize/nCGNADS +monies/M +monism/MS +monocotyledonous +monoculture +monogamy/3SM +monopolization/M +monotheist/WS +Monseigneur/S +monsoon/SM +Monte/Z +Monterey +Montrachet/M +moodiness/S +moonshine/MS +Mora +moral/-Qs83SM +moratorium/SM +morbidness/S +more/oS +Moresby/M +morn/GMSJ +Moroccan/S +Morse/M +mosaicked +Moscow/M +moss/MS +MOT/M +motherland/MS +motif/SM +motion's/FC +motivating/C +motive/DnSNxMVpG +motoring/M +motorist +Mott/M +moulded/A +mountable/U +mousing/M +moustachio/DSM +moved/U +mow/RSDG +Mowgli/M +Moyle/M +Mrs +M.Sc. +mucilaginous +mucker/M +muffin/MS +muffle/DGRS +Muhammad/M +Muhammadanism +mulattoes +mule/MGDS +mulish/PY +mulishness/S +mulligatawny/SM +multi +multicollinearity/M +multiculturalism/S +multi-ethnic +multinomial/M +multiphase +multiplication/M +multiplicity/MS +multitude/MS +multivalued +Mumbai +mummy/MS +Mnchhausen/M +mundane/Y +munificent/Y +Munoz/M +Muscovite/MS +museum/MS +mushroom/DGMS +musicality/SM +musicianship/MS +musicology/M3wS +muskeg/MS +muskellunge/SM +musky/TP +mussel/SM +Mussorgsky/M +mutational/Y +mutual/YS +mutuality/S +myrmidon/S +myth/MW1wS +Nada/M +naff +Nagoya/M +Nagy/M +naiad/SM +naifs +nail/DMGS +naivet/SM +Naku'alofa/M +name/aDASG +Naomi/M +narrow/DGPSTY +NASA/SM +nasturtium/MS +Natalie/M +nationalise/CnAGSD +NATO/MS +nattiness/S +naughtiness/S +nauseate/GDSk +naval/Y +nave/ZMS +navigator/MS +Neal/M +neap +Neapolitan/SM +nearside/M +nebulousness/S +necessary/UY +necessitation/M +necromancer/MS +necrosis/M +nectary/SM +nglig +negotiator/MS +nemeses +neocortex/M +neodymium/M +neon/MS +neophyte/SM +nepotist/S +nerve/UGSD +net/SMDG +netting/M +neurosurgery/MS +neuter/dS +neutralist/S +neutrino/MS +never-ending +Newbury/M +newel/SM +newsprint/SM +newsreel/SM +new-style +Newsweek/YM +newton/MS +Ni/M +Niagara/M +Nice's +Nichole/M +Nicodemus/M +niece/SM +night-soil +nighty's +nihilist/MSW +ninety-nine/H +ninety-one +nipping/Y +nipple/SM +nitrogenous +no-ball/SD +noble/mPT5S +nobody/SM +no-claims +noddle/DMSG +nominate/CGASnDN +non-administrative +non-assignable +non-attendance/SM +non-availability/SM +non-burnable +non-caloric +non-clinical +non-communicable +non-comprehending +non-detachable +non-determinacy +non-driver +non-durable +non-equivalence +non-existence/SM +non-fattening +non-inflationary +non-legal +non-negotiable +non-numerical/S +non-observant +non-party +non-prejudicial +non-random +non-refundable +non-resistance/S +non-restrictive +non-scientist/S +non-speaking +non-specific +non-striking +non-thinking/S +non-venomous +non-vocal +non-yielding +non-zero +norm/VDGMoSvu +Norma/M +normative/P +north-Easterly +northward/S +Norwich/M +nosegay/MS +nostalgia/SM +notable/C +notables +notation/MCo +note/FDCGSNn +noticed/U +notion/CS +notwithstanding +nounal +nous/M +novelty/SM +novitiate/MS +nowt +NRA +NSF +nuclear +nucleon/SM +nucleotide/SM +nugget/MS +numerology/wSM +nutcracker/SM +oak/SM +oat/SM +oatmeal/MS +obelisk/MS +oblivious/PY +obnoxious/YP +O'Brien/M +obscurity/MS +obsolescent/Y +occasion/SMJoDG +occupant/MS +O'Connell/M +OCR +Oct +octane/SM +octogenarian/MS +octopus/MS +oddness/S +O'Dell/M +Odessa/M +odiousness/S +off-drive/S +Offenbach/M +offend/DRVuGSv +offer/rJd +officialism/MS +off-putting +off-stage/S +Ofsted/M +often +oft-times +ogre/MS +O'Higgins +ohs +oilskin/MS +OJ +Oklahoman/MS +olefin/M +Olga/M +Olivetti/M +Olympiad/SM +Olympic/S +Omar/M +omnipotence/SM +onanism/M +oncology/SM +one-man +ongoing/S +onion/MS +only-begotten +onrush/GMS +oozy/T +opacity/SM +operable/I +operational +operation's/F +operativeness/I +opiate/MGDS +opium/SM +opportune/IY +opportunism/SM +opportunist/SMW1 +oppressiveness/S +Oprah/M +optimism/cMS +optimist/SW1M +option/GDSM +orchestrator/M +ordinal/S +ordure/SM +organiser/ASM +organizer/AM +oriel/MS +orientable +Orin/M +Orion/M +ormolu/SM +orphan/SMd +orphanhood/M +orthodoxes +OS/M +Osaka/M +Osborne/M +oscillate/NynSDG +osculation/M +O'Shea/M +osteopathy/MS +Ottoman/SM +oust/RGDS +outage +outbacker +outcrop/J +outdoor +out-of-phase +outr +outsize +ovarian +ovary/MS +ovate/S +over-activity +over-anxiety +overarching +overarm +overbearing/P +overboard +overbold +overcomits +overcommit +overcorrection +overdecorate +overeager +overemotional +overemphasize +overfill/G +overheat +over-long +over-nice +over-nicety +overnighter +overpass/M +overpay +oversimple +overspill/M +oversubtle +overtax +overview +Ovid/M +ovoid/S +ovular +ovule/NSMn +owlish/YP +own-brand +Oxbridge +Oxford/MS +oxidant/SM +oxidise/J +oxygen/NnM +oxyhydroxides +pabulum/SM +Pacific's +packaged/AU +packet/dSM +packhorse/M +pad/SZJGMD +Paddie/M +paedophilia/M +Paganini/M +painless/Y +painlessness/S +pairing/S +palaeoanthropologist +palaeoclimatologist +palaeoclimatology/w +palaeontology/wMS +paleness/S +Palestinian/S +palindrome/MS +palindromic +palisade/MGDS +pall-bearers +palpate/SGDnN +paltriness/S +pamphleteer/DGSM +Panama/M +pancake/SDMG +Pandora/M +Panis +panpipes +pantaloons +pantheism/MS +pantheist/SW +pantry/MS +papaw/MS +papered/A +papery/P +para/SM +parachuter/M +Paramecium/M +parameter/W1pMS +paranoiac/S +paraprofessional/SM +parasitologist/M +parasol/MS +parathyroid/S +PARC/M +pardonably/U +pared/KF +paregoric/SM +parenthood/SM +parer/F +parity/EMS +parking/M +parochialism/MS +parole/DSMG +pars/RDGJS +parthenogenesis/M +participant/SM +partisanship/SM +passenger/MS +passion/FM +pastern/MS +Patel +patentor/MS +paterfamilias/MS +paternal/Y +pathname/MS +pathogen/WSM +pathology/SM3w1 +patriarchy/SM +patrician/MS +patricide/SM +patrimony/MS +patriots/F +patterer/M +Paul/M +payable/S +payroll/SM +PBX +PCB +PDP +peacemaker/SM +peach/IDSG +peachy/T +peacock/SM +pearl/GDSM +pearly/TS +peasant/MS +pedagogue/SM +pedicab/SM +pedicure/GS3DM +Pedro +peep/DSRGZ +peep-show/MS +peevishness/S +pegboard/SM +pejorative/Y +Peking/M +pelf/M +pen-and-ink +penis/MS +penmen/M +penny/pMS +pension/7GMRD +pentameter/MS +pentathlete/S +pent-up +penury/SM +pepperer/M +peradventure/S +perchlorate/M +perdurable +peremptory/Y +perfection/ISM +perfectly/I +pericardium/M +perilous/PY +periodical/SM +periodontist/S +peripheral/SY +perishable's +permutation/M +perpetual/SY +perplexity/MS +persist/DSG +personae +personal/Qq8- +personality's/I +personally/I +personify/SnDGN +perspicacity/S +perspire/DGnNS +pervasive/P +perversity/SM +pervert/DhSiG +peskiness/S +pester/dS +petard/MS +peter/dS +Peterborough/M +Petronas +pettiness/S +petulant/Y +phalli +phantasmal +pharyngitis/M +pheasant/MS +phenol/SWM +phenyl/M +phenylalanine/M +philanthropy/1MSW +philistine/S +phlebitis/M +phlogiston +phonic/S +phoniness/S +photo/MS +photocopy/DRGSM +photofinishing/MS +physicist +pianism/M +pibroch/M +pickaxe/SM +piece/MDSG +piezoelectricity/M +pigeonry/S +piggy/TMS +pig-headed +pigsty/MS +pigtail/SMD +pile/GFSD +pilfer/drS +pillar/MS +pillowslip/S +pimplike +pinball/SM +pince +ping-pong +pinkishness +pinnae +pin-wheel/SM +pirouette/SGMD +piscatorial +Pisces +piston/MS +pitchstone/M +pizza/MS +placater +placentae +place's +plained/F +plaintiff/MS +plait/DMSG +plane/SM +planeload +plantar +plantation/IMS +plasterwork/M +plastic/YQ8s9MS +plating/M +Platyhelminthes +playback/SM +playfulness/S +playground/SM +playroom/SM +pleasantly/U +pleasurable/P +plectra +plucker/M +pluggable +plumbago/M +plumbed/U +plume/pSM +plunge/RSDG +pluperfect/S +plutocracy/MS +Plymouth/M +PO +pocketful/MS +po-faced +poisoning/SM +polarimetry +pole-axes +poliomyelitis/M +polished/U +politer +politicly/I +pollen/SM +pollster/MS +pollution/SM +polycarbonate +polygamy/3SM +polyisobutylene +polysaccharides +polytonal/Y +ponderous/YP +pontiff/SM +pontificate/NnDGS +pooch/SM +poodle/MS +poppycock/SM +popular/qQ8Ys9- +popularism +pop-up +pork/RSZM +porky/TS +pornography/MS1W +porosity/SM +port/lDMYSBRG +portend/GSD +porthole/SM +portly/PT +ports/ACFEI4 +positive/TS +possibility/IMS +postal +posthumous/PY +post-impressionism +postman/M +post-millennial +post-millennialist +post-structuralism +post-structuralist +postwar +posy/SM +pot/RG6SZ7DgM +pot-boiler/M +potentate/SM +potentiality/SM +potentiating +potentiometer/MS +pot-shot/S +pound/FGISD +poverty/SM +practicableness +pragmatics/M +pragmatism/SM +praiseworthiness/S +praising/Y +pram/SM +prawn/DMGS +prayerbook +precedence/MS +pre-Christian +precinct/MS +preclude/DSXNG +precocious/YP +predator/SM +predecessor/SM +pref +prefecture/SM +preferable/P +preliminary/YS +premeditate/h +preprepared +pre-privatisation +prequel/S +Presbyterian/M +presbytery/SM +prescriptivist +presence/SM +presentable/P +presentational/A +preservable +presider/M +press-stud/S +pretentious/YU +prevalent/Y +price's +priesthood/MS +primary/YMS +primitiveness/S +primness +printmaker/SM +prioress/SM +priority/Q8q-s9SM +prisoner/SM +prissy/TPY +privation/MC +probability/MIS +proceed/DJGS +proclaim/DRS7G +profession/M +professional/Q8S +professionally/U +proficient/Y +proforma/S +profusion/M +progesterone/SM +prohibit/dvuSVyNX +projection/3SM +proletariat/SM +prolificness +prologue/SMGD +promote/SRxBGD +promptitude/MS +pronounceable/U +proofed +proofer +proofread/SGR +propellent +propensity/SM +proprietary/S +prosecutor/SM +prosthetic/S +protease/M +protein/MS +protract/DSG +provincial/S +provincialism/MS +provoke/VuSNRGknvD +prurient/Y +psalter/Z +psephology/w1 +pseudo-science/WS +psychoacoustics/M +psychodrama/SM +psychokinetic +psycholinguists +psychometrics/M +psychophysiology/M +psychosis/M +psychosomatic/S +PTO +Puccini/M +puck/SM +pudding/SM +pudgy/TP +pueblo/SM +Puerto +puffin/MS +puffy/T +pugnaciousness/S +pulpiness/S +pulse's/I +pulverisation +pulverization/M +pumice/DSMG +pump/GDMS +pun/SGDM +puncheon/SM +punctilious/PY +punnet +puppy/MS +pure/P3TY +purvey/DGS +purveyance/MS +push-bike/SM +pushover/MS +push-up/S +pusillanimity/SM +pusillanimous/Y +puss/S +pussy/MS +pustular +putsch/S +PX +pyaemic +pyjama/MS +pyrometry/M +pyxidium +pyxis +quackish +quadrivium/M +quaint/TPY +qualifiedly +quantified/U +quarterly/S +quaver/dkSZ +queller/M +query/GMSD +questionableness/M +quickie/SM +quickness/S +quid/SM +quint/WMS +quintessence/MS +quintuplet/SM +quire's +quotidian/S +rabies +race/RDSGJZoM +raceme/MS +racial/3 +raconteur/SM +radiate/SnIVDGN +radiochemical +radiometry/M +raffish/PY +raft/RSDMG +raggedy +raindrop/SM +rainstorm/MS +Raipur +raison +randomiser +ransacker/M +rascal/YMS +rasper/M +raspy/T +rate-cap/G +rationally/I +ravenous/Y +Raymond/M +Rb +reabsorb/G +reaction/cMS +reading/aS +readopt/G +reafforest/N +real/Tts3+9q-Q8Y +realise/l +realize/l +rear-view +rearward/S +reasonable/U +reasoning's +rebelliousness +rebuttal/SM +recess/GMNuSXDVv +recidivism/SM +recidivist/SM +recipe/MS +recital/3SM +reclaim/7 +recognisances +recognise/RBGDlS +recognize/RBGDlS +recommit/GNXD +recondite/PY +reconsideration/M +recopy/G +record-breaking +recovery/S +recurs/NXvV +redbrick +redcurrant/SM +redelivery/M +redesign/G +redivide +redlining +reduced/U +reducibility/MI +Reece/M +re-election +re-employ/7 +re-enact +Rees +refer/RSDG7 +refill/G7 +refit/GD +reflectivity/M +re-form/N +refract/DyvGVS +refresh/DLGS7k +refrigerate/NDSG +refrigerator/MS +refulgence/M +re-fund +refurbishment/S +regather/d +regimental/S +regionalism/MS +registrable +regressive/P +regulated/U +rehabilitation/M +Reinhold/M +reinstitute/S +rejuvenate/SnNDG +relativeness/M +relentlessness +reliance/M +remorse/pMj6 +Rena/M +Renaldo/M +Renate/M +rendezvous/SDGM +renovate/DSNGn +renovation/M +repair/Rm7 +repartition/G +repchage +repercussion +replenisher +replica/MS +report/h7G +reporting/af +reports/a +reprehensibility/M +reprieve/SDG +Reptilia +repugnance/M +repugnant/Y +reputability/M +requisition/GMDS +requited/U +resale/7 +rescission/MS +resettle/L +resignal/GD +resin/d +resoluteness +resolvability/M +resolvable/IU +resolvent +resonance/SM +resonate/DSG +resorption/M +resorptive +resource/6jp +resourcelessness +respectable/Y +respire/nNyG +restless/PY +restore/gRnVNv +restricted/UY +resume/GSNDX +retail/R +retina/SM +retire/kL +retrovirus/S +returnee/SM +Reuben/M +reveille/SM +reversibly/I +revert/DSGb +revive/GSD +reviver/M +revolt/DGk +revolution/Q8My3S +revolutionary/SM +RFU/M +rhesus +rheumatism/SM +rheumatoid +rhinitis/M +rhodium/M +rhomboidal +rhubarb/SM +ribald/y +ribaldry/SM +ribbing/M +Rican/SM +rickets +Ricky/M +riddle/DSMG +Riga/M +right-minded +right-winger/S +rigid/Y +rigorousness +rill/SM +rind/SDM +ringleader/SM +ringlet/SM +rinse/GDS +ripe/YP +riposte/DMSG +risk/GSZz2DM +risky/TP +Ritchie/M +Ritter/M +rival/SMyGD +riven +Riverview/M +roach/SM +roadie/S +roan/S +Robert/SM +Robertson/M +Rob's +rock-bottom +rock-climbing +rococo/M +Rodriguez/M +roebuck/SM +Rogelio/M +rle/MS +roller-coast +rolling-pin/SM +Rolodex +Ron/MZ +Roosevelt/M +root-mean-square +Rosa/M +Rosanna/M +rose/SZyM +Roseanne/M +Rosemarie/M +Rosemonde/M +Ross +rota/yvSVM +rotifer +rotisserie/SM +rotogravure/SM +rough-and-ready +Rousseau/M +routine/QSYM +royal/3SY +RP +rt. +rubber/QZ +rude/TYP +rudimentary +ruff/SGDM +ruffle/DGS +Ruiz/M +rulebook/S +rumbustious +rumpus/SM +run-of-the-mill +rush/RDZGS +Russia/M +rusty/NPTn +sachem/S +sackful/S +sacking/M +sacra/L +sacral +Sacramento/M +Saddam/M +saddle/GUDS +sadness/S +safer +Sagittarius/M +sago/SM +sailborder's +sailing-master/SM +sainthood/SM +saki's +salacity/M +salami/MS +salary/DMS +saleability/M +Salem/M +Salerno/M +sale's/A +salesgirl/SM +saleslady/S +Salina/MS +salmonella/M +salmonellae +salsify/M +salt-and-pepper +salt-pan/MS +salt-water +salutatory +Salzburg/M +Samara/M +Sammy/M +Samoa/M +samovar/MS +Samuel/SM +sanctum/SM +Sander's +sandmen/M +Sandra/M +sane/YT +sang-froid +sanguine/Y +sanguineness +Sanhedrin/M +Santiago/M +sapient +Sapporo/M +Sarasota/M +Sarawak/M +Sargasso/M +SASE +satisfaction/SEM +satrap/MS +saut/SGD +savannah/M +sawn +saying/M +scabby/T +Scandinavia/M +scape/M +Scaramouch/M +scaremonger/SM +scarp/DGSM +SCCS +schedule/RDMGS +schematic/S +scheme/SDRWGM +schilling/SM +Schlitz/M +schnapps +schnitzel/SM +school/GMDJS +schooled/U +schoolfellow/S +school-leaving +school-time +Schumacher/M +Schwartz/M +scintillation/M +scissor/S +scoff/RGDS +sconce/M +score/eDfGS +score's +Scottie/SM +scoundrel/YSM +scrag-end +scraggy/T +scramblers/C +scrapie +screen/GJSMD +screener +screws/U +scrimshaw/GSMD +scripting/F +scruff/2ZSMz +scruffy/T +scrummage/DMGS +scruple/DMSG +scrupulousness/M +SCSI +scummy/T +scurf/ZM +sea-green +Sears's +seascape/SM +seasonably/U +seat/UGDSA +seaway/MS +Sebastian/M +sec +second-best +second-class +second-degree +secrecy/SM +sectarian/S +sectioned/A +sections/EA +sect's/I +secure/SYDG +securer +sedative/S +sedentary +seduction/M +seductive/P +seed/MD2GSRZp +seeds/A +seem/YSkGD +seersucker/SM +see-through +segregable +segregationist +seigneur/MS +select/KSGCDA +selenographer/MS +self-appointed +self-assertion +self-congratulation +self-conscious/Y +self-contradictory +self-denial +self-determination +self-government +self-improvement +selfless/Y +selflessness +self-parody +self-portrait/S +self-reliant +self-righteous/Y +self-seeker/S +self-seeking +self-sufficiency +self-tapping +self-torture +Seljuk/M +sell/ASceGf +semen/M +semicircle/SM +semifinal/3MS +semiotician +semi-skimmed +Semitic/SM +send/ASG +seorita/SM +sense/DGnSpMb +sensibly/I +sensor/SM +sensuousness +sentient/I +sentiment/SKM +sentimentalism/MS +sentinel/DGSM +Seoul/M +sequel/MS +sequence/RSMGD +sequin/MSD +Serafin/M +serape/S +Serb/MS +serenity +serf/SM +serfdom/SM +sergeant/MS +serial/qQ-8SY +series +serotonin +serrate/NnD +serration/M +serviceability/M +serviceableness +servile/Y +sesame/SM +set-aside +settle/RLGSD +settling/UA +seven/HMS +seventeen/H +seventy-nine/H +severity/SM +sewage/M +sexual/Y +shah/MS +shakeably/U +Shakespeare/M +shamble/DSG +shamefulness +shapeliness +sharkskin/M +shaven/U +shawl/MDS +shchi +sheer/GYTDS +sheikh/SM +Sheldon/M +Shelford/M +Shelly/M +sherbet/SM +Sherri/M +Sherrie/M +sherry/MS +shield/SDMG +Shikoku/M +shin-guard +shininess +ship-broker/SM +shipping/M +Shiraz/M +shirr/GDS +shirtsleeve/MS +shirt-tail/S +shiver/dkZS +shoetree/SM +shoo/SDG +shook +shooting/S +shoot-out/SM +shorebird/S +shortish +short-term +Shoshone/SM +shout's +show-off/S +shrewish/YP +Shrewsbury/M +shrivel/GSD +shrub/ZMS +shudder/dSZ +shuffle/ASGD +sibilant/YS +Sibley/M +sick/PY +sickle-feather +Sid/M +side-band/SM +side-car/MS +side-splitting +side-street/SM +sidetrack/SGD +sidewise +signature/MS +signify/nNDSG +silence/SRMGD +Silesia/M +silhouette/GDSM +silicate/MS +silk/SzZ2M +silky/TP +silt/NMDGSZ +Simeon/M +simoniacal +simpleness +simplistic/Y +simultaneity/MS +sin/pRSj6GDM +sincere/TY +single-minded +sinister/Y +sinuosity +sinusitis/M +siphon/dMS +sire/CDGS +sissy/MS +sitar/M3S +six-fold +six-pack/S +sixty/HMS +sixty-one +sixty-second/S +sixty-two +sixty-twofold +sizzle/DSG +skelter +sketchpad +ski-jump/RGD +ski-plane +Skippy/M +skol +skylark/GDSM +skyward/S +slag/SMDG +slander/dSM +slantwise +slap/MGSD +slavery/SM +slay/RSG +sledge/SGDM +sleek/TGYD +sleepyhead/SM +sleigh/SRMDG +slenderest +slime/2MSZ +slip-ons +slit/MRSDG +sloe/SM +slothful/P +slow/TSPDGY +slowish +slummy/T +slyer +smallholder/S +smallpox/M +smartest +smegma/W +smeller/M +smelly/PT +smidgeon +Smithfield/M +smog/MZ +smoking-room +SMTP +snaffle/GDSM +snaky/T +snazzy/TY +sneezer +snowboard/GRDS +snowline +snuffbox/MS +soapy/T +societal +socio +sociobiology/M +Socratic/S +soda/SM +Sodom/M +SOE +soft/cP +softest +soft-heartedness +soggy/TY +soiled/U +soldering +sole/FADGS +solid/YS +solidness +solitary/S +solved/U +soma/M +someday +Somme/M +somnambulist/SM +somnolence/M +sonar/M +Sonja/M +sonorous/YP +soot/MZ +soothsayer/SM +soothsaying +Sophoclean +sortieing +soubriquet/M +sounded/A +soundproof/DGS +sourish +south-eastern +south-eastward/S +southernmost +space/DmRM5SGJ +spandrels +spanned/U +spareribs +sparers +sparer's +sparkle/GRkDS +spasm/MS +spathe/MS +spatial/Y +spatter/dS +specie/MoS +spelling/MaS +spend/eScaG +sphere/M1WwS +sphincter/MS +sphinx/SM +spine/pMS2Z +spinnaker/SM +spinsterish +spiritedness +spirit's +splendid/PY +spline/MDS +Spock/M +spoken/Uea +sporting/U +sportsmanlike/U +sportswear/M +spotty/TP +spout/DGS +spreadable +spreader/SM +Springfield/M +springtime/M +sprucer +sprue/M +spunk/MZ +squally/T +squarish +squaw/MS +squelchy/T +squib/DGMS +squire/YGMDS +squirearch/Zw +squirmy/T +stabled +stableful/S +stablish +stacked/U +staff/ADGS +stage-hand/SM +stagnant/Y +staid/PY +stained-glass +stair/MS +stake/MDSG +stakeholder/S +Stalingrad/M +stance/ISM +standard-bearer/SM +standee/MS +Standish/M +standoffish/Y +standpoint/SM +Stansted/M +staphylococci +stapled/U +stare/S +starfish/MS +Starkey/M +startle/GkDS +starveling/M +stately/TP +stater/Ma +stationmaster/M +stature/MS +staunch/DTSGY +steadiest +steamship/MS +Steele/M +steelwork/RSM +Steen/M +steeplechase/GSM +steepness +Steinberg/M +Steinmetz/M +stemmed/U +step/cDGS +stepfather/SM +Stephenson/M +steps/aI +stereotype/ZMDGSWw1 +sterling/PMY +steroid/MS +Steven/MS +stewardship/SM +stickler/SM +Stilton/M +stimulant/SM +stimulation/MS +Stine/M +stingy/PT +stinkpot/M +stir/GSJDR +stirred/U +stock/GcDAS +stockbroking +stockpiler/M +stodgy/TY +Stoke-on-Trent/M +stole/MS +stopwatch/MS +storeroom/MS +storyline +storyteller/MS +stoup/SM +stout-hearted/Y +strati +stratify/NGnDS +Strauss +Stravinsky/M +straw/MZS +straw-colour/D +street/MS +streetwalking +streetwise +streptococci +streptomycin/M +'strewth +stridency/S +strikeout/S +strim/RGD +strip/eDGS +strip-searched +strontium/M +Stroud +strung/cUA +strutter/M +stubbly/T +studbook/SM +student/SM +stuffer +stumper/M +stung +Sturm/M +stymieing +styrene/M +sub/SGDM +subaquatic +Subaru/M +subcategory/SM +subconsciousness/S +subcontinent/SM +subgenus +sub-head/J +subjugate/DnGSN +sublease/DMGS +sublimity/SM +sub-machine-gun +submergence/SM +subpoena/DGSM +subscribe/AGcSD +subscriber/SM +subsection/SM +subside/qQ-8DZGs9S +subsidiary/MS +subsonic +subspace/SM +substantiation/FMS +substitutional +subtest +subtract/RvVGDS +subtraction/SM +subunit/MS +suburbia/M +subzero +succeeder/M +succession/M +such +such-and-such +suchlike +sucker/d +suffer/drJS +Suffolk/M +suit/MldSg7 +suite/MS +suitor/MS +Sullivan/M +sultana/MS +Sumter/M +sunbath/GRDS +sunbeds +sunblock/S +Sundanese/M +Sunderland/M +sundry/S +sunfish/MS +suntan/DMSG +super/5m +supercargoes +supercritical +supernormal +superscript/GSD +superset/SM +superstitious/Y +supervisor/MS +supervisory +support/vRDkSBGV +supported/U +suppurate/NDSnG +suppuration/M +surface/RSGMD +surmount/G7DS +surmountable/I +surreptitiousness +surveyor/SM +survivability/M +suspect/GSD +suspended/U +suspensory +sustain/lGBLDS +suture/DGMS +Suzie/M +Svalbard/M +svelte/Y +swab/SMDG +Swahili/MS +Swale +swallower/M +swastika/SM +swat/SRGD +swede/SM +sweetish +sweetshop/SM +sweet-talking +Swenson/M +swing/RkZSG +swingier +Swithin/M +swizzler +sybarite/MWS +sycophancy/S +syllable/WSM +syllogism/SM +sylvan +symposia +synchronism/M +syngamous +synonym/SZWM +syntheses +syphilis/M +systole/WSM +T +ta/o +taboo/DGMS +tabor/SM +tac/D2ZG +taciturn/Y +taciturnity/M +tackle/DRMGS +tactual/Y +Taffy/MS +tailgater/M +Tait/M +talc/M +tall/T +Talmudist +tamarind/SM +tambourine/MS +Tammany/M +tankard/SM +tankful/SM +Tannhuser/M +tannin/SM +tantrum/SM +tape/Sp7M +tapir/SM +tapped/U +tarnished/U +taro/SM +tarpon/SM +tarsal +Tarzan/M +task/SDMG +taskmaster/MS +taste/EM6jS +Tatar/SM +tattooist/SM +tau/M +Taurus/M +taxation/M +taxi/DSGM +taxpayer/MS +Tc +teacup/6SM +team-mate/S +teapot/SM +tearfulness +teas/RSDkG +technical/Y +technology/3wSM1 +Ted/M +tee/SGdM +TEirtza/M +tellurium/M +temp/GMRSTD +tempera/MLS +ten/lSHg7M +tenability/SM +tenable/U +tenacity/S +tenderer +tender-hearted/YP +tendon/SM +tendril/MS +tenebrous +TENEX/M +tensionless +ten-year +terminable/I +terminated +termite/SM +tern/SM +Terpsichorean +Terra/M +terrace/GSMD +Terrell/M +terrorist +terror-stricken +terseness +TESL +testament/MS +test-drive/G +testify/RDSG +tether/dMS +tetracyclic +tetragonal +tetrapod +Tewkesbury +TeX's +textural +thalami +thalamus/M +thallium/M +thank/D6jGpS +theatrics +Thebes +Thelma/M +thematic/S +theoretical +theoretician/SM +therapeutic/YS +thereat +Therese/M +thereunto +thereupon +thermosetting +thimble/6MS +thirty-four/H +thirty-seven/H +thirty-twofold +thistledown/M +Thomas +thoughtful/Y +thoughtfulness +thoughtless/YP +three-dimensional/Y +three-pronged +three-quarter/S +throb/SGD +thromboses +thrombus/M +throne/CSD +thrown/c +thunder/SZkMd +thunderclap/MS +thunderstorm/MS +thymus/SM +thyroxine/M +Tibet/M +Tibetan/S +tilled/E +tiller/EMS +tilth/M +time-consuming +time-honoured +time-server/SM +time-serving/S +timetable/SDGM +timorousness +tinder/M +tinfoil/M +tint/MSDG +tip/RSGMD +tip-top +tirade/SM +tireless/Y +titanium/M +titbit/SM +titivation/M +titre/MSN +tizz/Z +TNT +token/SQM8 +told/AU +Tomas +tomfoolery/MS +Tommy/MS +tomtit/SM +tone/IRDGS +Tonya/M +tooth/zMpDZ +toothpaste/MS +tootsy/SM +topdressing/S +topgallant/M +topography/S1WMw +topsail/MS +topside/SM +topspin/MS +topsy-turvy +Torbay +tormentor/SM +Torres +tort's +tortuous/Y +total/s9MDGS +totting-up +touched/U +tourney/DGSM +town/SmM5 +townie/SM +toxaemic +toxicity/SM +Toyoda/M +tract/E7ASF +tractability/I +trade-off/S +trainee/SM +traipse/SGD +tramcar/S +tramlines +tranny/S +tranquillity/S +transcode +transcontinental +transept/SM +transgenic +transience/ZSM +translating/a +transmissible +transmitter/MS +transplant/7Nn +transubstantiation/SM +transuranic +transverse/Yo +transvestitism +trapdoor/S +Travers +traversal/SM +treasure/DRSZMG +treat/LM7ZDSG +Treblinka/M +treetop/MS +trek/SRDGM +tremble/SGYkD +tremendous/Y +tribunal/SM +tribute's +tricentennial +Tricia/M +trilingual +trim/DTGJSRY +tripartite +triplication/M +triptych/M +trireme/SM +Trish/M +Trisha/M +trisyllable +triteness +tritium/M +triumvir/MS +trivial/Q8q- +trojan +trope/WMSw1 +troublesome/PY +troy +truckload/SM +trust's +truth/MUSj6 +try/ADGS +trypsin/M +tsarevich +tsetse +Tuareg/M +tubercular +tugboat/MS +tum/Z +tumbrel/MS +tumour/MS +tumulus/M +tune's +tuning/SM +Tunis/M +turbot/SM +turbulence/MS +turmoil/M +turning/SM +turnip/SM +TVs +twenty-five/H +twenty-four/H +twenty-onefold +twenty-six/H +twice-married +twiggy/T +twilight/SM +twin/DSdGM +Twinkie +twirl/DRGYS +twists/U +twofold +type's +typicality/M +typography/SWMw1 +typology/wSM1 +Tyrolean/S +Tyrol's +ubiquitous/Y +ubiquitousness +UCL/M +Uganda/M +ugh/F +ukulele/SM +umbel/SM +umbilici +unattractiveness +unbalance +unbecomingness +unbelief +unbind/G +uncial/S +unclad +unconnected +uncool +underclass +undercurrent/M +underflow/M +underfoot +underlay +underpass/M +undershot +undersigned/M +undetermined +undo/G +unease/2 +uneventful +unexacting +unfashionable +unfavourable +unflinching/Y +unfrozen +Unicode/M +unifiable +unifier/MS +unilateral/Y +unimportance +unintelligibility +unison/S +univalve/SM +unkind/Y +unkindness +unlap +unlawfulness +unlit +unlooked-for +unloose +unmanliness +unmannerly +unmemorable +unmet +unmissable +unneighbourliness +unobliging +unobservable +unpin/GD +unpleasant +unprepared +unquote +unseeing/Y +unstuffy +unthinkable/Y +untiring/Y +untrue +unwell +unworldly +unyielding/Y +upbeat/MS +update/DGS +upfront +uphold/RGS +upright/YS +upside/MS +upside-down +upstanding +upstroke/MS +urban/qQ8- +urea/M +uric +urinalysis/M +Urochordata +urology/wM +usage/SM +use/cEDSAa +user-friendliness +usualness/U +usury/MS +Utah/M +utilise/fSGD +utopia/M +UV +vacuous/Y +vagabondage/MS +Valencia/M +Valeria/M +valiant/Y +valuator/MS +value/CnASNGD +value-for-money +value's +vamp's +vapidity/SM +vaporise/RnSGD +vaporize/nRSGND +var. +varistor/M +vasomotor +Vax/M +vector/FM +vectored +vectorial +Veda/MS +veil/DUSG +vellum/MS +velvet/SZM +Venetian/MS +vengeful/Y +vent's/F +venue/SMA +veracious/Y +verbosity/MS +Verde/M +versa +vertebra/M +Vertebrata +vertical/YS +vesper/S +vestibule/MS +veterinary/S +VI +vialful/S +vice-Chancellorship/S +victual/RSGD +videotape/SDMG +Vietminh/M +Vietnam/M +viewed/KA +viewer/AKSM +vindicate/SDNGn +vintner/MS +violator/SM +Violette/M +viper/SM +virginal/S +virginity/MS +visibility/ISM +Visigoth/S +visor/SM +vitiation/M +vitreous/Y +vitro +vituperation/M +vivaciousness +VMS/M +volatile/qQ8-S +volt/AMS +Volta/M +volte +volte-face +voluminous/Y +voluntary/YS +voluptuous/Y +vortices +votive/Y +vow/SDGM +vowel/SM +voyeurism/SM +vulvae +wade/S +waggish/Y +wail/SGD +waistband/SM +waistcoat/SM +Wallachia/M +Walloon/M +wampum/M +wantonness +Waqar/M +war/pSDGM +wardress/MS +warhead/MS +warlike +warmish +warpath/MS +warrantable/U +warranty/SM +wartime/SM +wash/AGDS +washing-up +washout/MS +wasn't +waspish/Y +Watergate/M +waterlogged +watermill/S +water-table +Watkins +wattle/SM +Waukesha/M +wave/DSZG2 +wavering/UY +weakness/S +weatherboard/G +weather-bound +weaver/SM +web/DSGM +weekend/MS +week-long +weenie +weighting/SM +weirdness +well-beloved +well-built +well-disposed +Wellman +well-mannered +well-trained +Welshman/M +Welwitschia/M +we're +Westchester/M +westerly/S +Westinghouse/M +Westphalia/M +wet/TSDYG +wetsuit/S +wham/SDGM +what's-his-name +wheelwright/MS +whereto +whichever +whimper/dS +whinny/DSG +whisky/S +whistle-stop +whitebait/M +Whitehaven/M +Whitman/M +Whitsun/M +Whittington/M +whiz/GD +wholehearted/Y +wholemeal +whoop/DGS +whoso +wicked/P +wickeder +Wicklow/M +wide-eyed +Widnes +wigwam/SM +Wilkes +Wilkins +Wilkinson/M +Willenstad/M +Williamson/M +wily/PYT +windblown +windflower/SM +windless +windpipe/SM +winegrower/SM +wing-tip/S +winning/Y +Winooski +wintriness +wired/A +wirer/M +Wisconsin/M +wisely/U +wishbone/MS +witchcraft/MS +witchdoctor/S +wives +woke +Wolfe/M +wonder/jLSdkM6 +Wong/M +wonky/T +wont/hDG +woodcutting/M +Woodlawn +woodruff/M +woodwork/RMG +wop/SM +word/ADJGS +wordage +wordplay/MS +workshop/MS +worktable/MS +worm/GSDZM +worse +Worthington/M +worthless/PY +worthy/TPS +would +wrench/DGkSM +wrester/M +wrestling/M +write-up/S +WRNS +wryly +x +x-axis +xenon/M +xenophobia/M +xiii +yam/SM +yardstick/SM +yearbook/SM +year-end +Yeovil +yob/S +yobbism +yoga/M +Yoruba +you've +yummy/T +Yves +Yvette +zany/T +Zeus/M +Ziegler/M +zither/MS +zloty/M +zodiacal +zoom/DGS +3GPP's +abacus/SM +abase/SGLD +abbey/SM +Aberdeen/M +abeyant +abjection/MS +ablution/SM +abnegate/NGnDS +abolish/DGLRS +abominate/DnNSG +abortionist +abruptness/S +absolution/MS +abstemious/YP +abstemiousness/S +abstinence/MS +abysmal/Y +academy/MWS +ACAS +acceptability/MS +acceptance/SM +acceptingness +accessibility/ISM +accidence/M +acclaimer/M +acclamation/MS +accompanied/U +accordant/Y +account/MBlDSG +accountably/U +accountancy/SM +accounted/U +accumulate/DSGNVnvu +accumulator/SM +accurate/YP +achieved/Uc +achy/TK +acidoses +acme/MS +activator/SM +actuary/SMo +acyclic/Y +Adamson/M +addition/oMS +adducer/M +adduct/GDS +adduction/M +adept/TPYS +adequateness/SI +adhesiveness/S +adjudge/DSG +adjusted/UA +admissibility/MSI +admonitory +adulteress/MS +adventure/RMSGD +adventuresome +advert/QsS +advisable/I +aeronautics/M +Aesculapius +affectionate/U +afford/SGBD +afforest/GnDNS +Afghani/SM +afoul +afterburner/MS +after-hours +afterlife/M +aftermath/MS +aftershave/S +after-taste/SM +agar-agar +age/MihpSD +ageism/S +ageist/M +ageless/YP +agented +agentive +aggregate/vNnVDYSG +agonize/hk +agreer/SM +agricultural/3 +aha/S +ahoy/S +aides-de-camp +Airbus/SM +aircraft-carrier/SM +aircrew/MS +airlessness/S +airlock/MS +airplay/S +airspace/MS +airwaves +airwomen +airworthiness/S +aitch/MS +alcove/DSM +alert/PhSDRTYG +A-levels +alewives +Alex/M +algebraical +Alicia/M +all/MSc +allegiance/SM +allegri +alleluia/S +Allendale +allergy/3W1SM +Allis +allocated/U +allocation/c +allocator's/C +allotted/A +allotter/M +allowance/MS +allowing/E +all-powerful +allude/vDGVuXSN +allure/LDkGS +Alma +almagest +almoner/MS +Alofi/M +alongshore +Altaic/M +alumina/SM +Alva/M +al-Zawahiri +ambassadress/SM +ambition/M +ambuscader/M +amenability/SM +Americanism/S +Amerindian +amiable/YTP +amidships +amiss +ammonia/SM +ammonites +amnesic +amnesty/DSGM +amontillado/SM +amorallym +amorous/PY +Amphibia +amphitheatre/SM +amplify/NDRGSn +amputate/DNSGn +Amy/M +anaerobe/MW1S +anaesthesia/MS +anal/Y +analysis/M +anastomotic +anchorperson/S +ancientness/S +and/DG +andante/S +anders +androgen/MSW +androgynous +android/SM +anechoic +anew +Angeles +angelfish/SM +angiography +Anglesey/M +Anglo-French +Anglomania +Anglo-Norman +angora/MS +animal/Q8S-qM +animalcular +aniseed/SM +ankh/SM +Anna/M +annihilate/NSnVDG +annuli +annum +anomaly/SM +anopheles/M +Antananarivo/M +antecedent/YMS +antennae +anthropomorphic/Y +anticlimactic/Y +antihistamine/MS +anti-nuclear +antiquate/GSD +antiredeposition +antistatic +antitank +antivenin/SM +Antoine/M +anvil/DGSM +anyone/M +aorist +Apache/SM +ape/M1GwSD +aper/A +aperitif/S +Aphrodite/M +apiary/S3M +apolitical/Y +apologetic/SY +apologetics/M +apoplectic +apostleship/MS +apostrophe/Q8SM +apothecary/MS +appal/DSGk +apparent/PY +appear/GADSE +appetizing/UY +applaud/RSDG +applicabilities +applicability/MI +applies/Aa +appointed/EA +appraiser/MS +apprenticeship/SM +approachability/M +approximation/M +aptitude/SM +aqua/MS +aquamarine/SM +aquavit/SM +aqueduct/SM +Aquinas +aquittal +Arachnida +arbitrament/MS +arcana/M +arch-enemy/SM +Archibald/M +archness/S +Arden/M +arduousness/S +areawide +areolae +argent/M +Argentina/M +argot/SM +argues/e +argy-bargy/SD +Argyll/M +aright +arise/SGJ +armadillo/SM +Armenian/M +Arnold/M +aromatherapist/MS +aromatherapy/S +arrayer +arrearage +artichoke/SM +articulate/nPSGyYDNV +arty/3TP +ascent/MS +asexuality/SM +Ashley/M +asimilar +ask/DRSG +askance +askewness +asphalt/SGDM +asphyxia/MSn +assassin/NSnM +assault/GSVuMvD +asserts/A +asses/GD +asseveration/M +assignation/M +assimilable +assistance/MS +assistant/MS +assort/GDLS +assumer/M +assured/PY +assurer/MS +astatine/SM +Astor/M +Astrakhan +astronautics/M +astuteness/S +asymmetry/WwS1M +athwart +ATM/M +atom/Qs-98MqS +atrociousness/S +atrocity/SM +attack/RSDG7M +attempt/DRGS +attentiveness/IS +atwitter +audiology/S3Mw +audiometer/SWM +audiotape/S +Audrey/M +auger/MS +augite +Augustus +aunty/MS +aurorae +auroral +authenticated/U +authoritativeness/S +authorized/AU +autobahnen +autoclave/MDSG +autocracy/SM +autoignition/M +automatism/SM +autotransformer/M +AV +avant-garde/3 +avenge/DGRS +avenue/SM +avian/S +aviator/MS +avidness +Avis/M +avuncular +AWACS +await/SDG +awareness/U +awarenesses +awesomeness/S +awing/c +awoken +AWOL +awry/T +Axel/M +axiology/M1w +aye/MS +Azikiwe/M +babyhood/MS +babysat +bacchanalia +Bacchus +bachelor/MS +backbite/RS +backboard/SM +backbreaking +backchaining +backhand/hRMSGD +backless +backorder +backstabber/M +backstreet/M +back-to-back +bad/PY +Baffin/M +baiter/M +Bakelite/M +balance/DMIS +balancer/SM +bald/PGYTDZ +Bali/M +balladeer/MS +ballerina/MS +ballpoint/MS +balls/Z +balm/M2ZS +Baltic/M +Baltimore/M +Balzac/M +bands/E +bane/M6j +Bangalore/M +Bangladeshi/M +banjo/SM +baobab/MS +Barbados/M +barbaric/Y +Barclay/M +barelegged +barman/M +Barnett/M +barnstorm/GRDS +baroque/SYM +barracuda/SM +barrage/SMDG +barre/SMJ +barter/rdS +baseboard/MS +based/C +bashfulness/S +basic/S +basketball/MS +basso/S3M +Bateman/M +bath/SRGMD +batmen +batten/MdS +baud/M +bazooka/SM +bdrm +beak/MDRS +bearably/U +Beardsley/M +beastliness/S +beat/SlRG7J +beatify/WDGnS1N +beautician/MS +beautification/M +bedaub/DSG +Bedford/M +Bedfordshire/M +bedroom/SDM +bedsheets +bedstead/MS +beecher +bee-keeping/M +beeline/GSD +beery/T +began +beggar/dMSY +begot +begum/SM +behave/SaGD +beheld +behind/S +belier/M +bell/SGmMDY +belletrist/SMW +belligerency/SM +beloved/S +bemire/SDG +Ben/M +bencher/M +bend/SUG +beneath +benignity/SM +Bennett/M +benzene/SM +Bergen/M +Berk +Berlioz/M +Bernardino/M +Bert/M +beseech/RDkSGJ +bespoke +best/SGD +bethink/SG +betrayal/SM +better/dL +Beulah/M +Beverly +bewhisker +bewitch/LDSkG +bias/MDSG +bibliographer/SM +bidiagonal +bighearted +bight/MGDS +bigmouth/MS +bilayer/S +bilberry/SM +bi-level +bilingual/YS +bilious/P +bilk/DRGS +billowy/T +billy/MS +billy-goat +bimetallism/SM +bimonthly/S +bindery/SM +binge/DGMS +Bingham/M +bioethics +biomorph +biophysic/S3Y +biopic/S +bioscience/S +bipedal +birdcage/MS +birefringent +bisexual/MSY +bishopric/SM +Bismark/M +bisque/MS +bitblt/S +bitchy/TP +bittern/MS +bituminous +bivariate +biz/M +bk +blackbird/GSMD +blackguard/SDYGM +blacking/M +blacklister +Blair/M +blanket/dSM +blare/GDS +blemished/U +Blevins +blindfold/DSG +blindness/S +blinking/U +blockhead/SM +block's +bloodbath/S +bloodiness/S +Bloomfield/M +blow/RGZS +blow-drier +blowfish/M +blown/c +blowtorch/MS +Blucher/M +bluebook/M +blue-green +blueprint/GSMD +Blum/M +blurb/GSDM +blvd +boarding/M +boardroom/SM +bob/MDGSZ +bobcat/SM +Boca/M +bodice/SM +bodied/M +body-building +Bohemia/M +boiler/MS +bole/MS +bollocking +bollocks +Bolton/M +bona fide +boob/MDZGS +book/7GMDRJS +bookend/DSG +bookmaking/M +bookstall/SM +booksy +bookworm/MS +Boone/M +boorishness/S +boosterism +boot/SAGD +bootblack/SM +boredom/MS +borough/MS +Bosnia/M +Bosnian/SM +bosom/UdS +Boswell/M +bot/S +bottomer +bounteousness/S +bounty/6DjSM +bouquet/MS +bowdlerize/NnDSG +Boyce/M +boycotter/M +boyhood/SM +boyish/PY +BR/M +Brahma/M +Brahmaputra/M +Brahms +brainstormer +Braintree/M +branchlike +brand/MRGZSD +bras/2GzZD +brassy/TSP +Bratislava/M +brawl/MRGSD +brayer/M +brazen/dYP +Brazilian/SM +breach/DRSGM +breadbox/S +bream/DSG +breast/DGMS +breastfeed/G +breathe/S +breech-loader +breed/MRGS +Brenda/M +Brenner/M +brevity/MS +brewing/M +brickbat/MS +bridgeable/U +Bridgend/M +Bridgeport/M +bridging/M +briefcase/MS +brilliant/PSY +Brit. +British/RY +Briton/SM +brittleness/S +broad/TYS +broadsheet/SM +brochure/SM +bromine/M +Bronx/M +bronzed/M +bronzer +broody/TP +brother/dY +brotherhood/MS +browbeat/GS +Brunswick/M +brush-up +brushwork/SM +Bryan/M +BSA +bucketful/SM +buckeye/MS +buckhorn/M +Buckinghamshire/M +buckle/RGSMD +buckshot/MS +buckwheat/SM +Buddhism/M +buffaloes +buffed/A +Bugatti/M +bugbear/MS +bug's +bulimic +bulldog/MS +bulletin/MdS +bullfrog/SM +bullhide +bullish/PY +bullring/SM +bulwark/MGDS +bumptiousness/S +bun/MZS +bunco's +bundler/M +bungee/SM +bunny/MS +Bunsen/M +Burberry/M +bureau/MS +burgh/RMS +burgomaster/SM +Burlingame/M +burly/TP +Burne/M +burnoose/SM +burrow/DMGSR +bursae +bushmaster/MS +bushy/TP +busman/M +bustard/MS +busy/PSYTGD +butt-end/S +Butterfield/M +buttress/SGDM +buxomness +Buxton/M +buyback/S +buys/c +bypass/MDSG +by-product/SM +cabriolet/SM +cacciatore +cadent/C +cadet/MS +cadmium/M +caecal +cage/GDzR2MS +calabash/SM +calcium/M +calculability/IM +calculate/iVDSGkBhNn +Calgary +calibre/MnSN +California/M +caliphate/SM +call/RSGDJ7 +callee/M +call-girl/S +camaraderie/SM +camel-hair +Camilla +camouflage/GDRSM +camps/C +canary/MS +candider +candlelight/SM +cannelloni +canniest +cannonade/MGDS +cannot +cannula +canonist +canter/d +Cantonese +capabler +capacitative +caparison/SM +cape/BDRMlS +capitalism/SM +capitalist/1W +Capitan +capsicum/MS +Capt. +captiousness/S +captivity/SM +captures/A +carafe/SM +caramel/Q8SM +carapaxes +cardigan/MS +cardiopulmonary +caring/U +Carlisle/M +Carmichael +carnelian/MS +carnet/SM +carnivore/MS +carousel/SM +carpel/SM +carpool/DSG +carriageway/MS +carroty/T +Cartesian +cartful/S +Casablanca +case-harden/dS +casein/MS +casework/RSM +cask/SMGD +cast/RSGJM +castigate/SnDNG +Castillo/M +cast-off/S +castor/MS +Catalonia +catch/LRGZ7S +catchup/SM +categorize/AGSD +category/wq8W9Qs-SM1 +cathodal +catholicly +cauliflower/SM +causate/vV +cauterize/NSDGn +cautiousnesses +cave-in +cavity/FMS +CCTV +cedar/MS +celebrated/U +c.elegans +cellarer/M +cello/S3M +cellophane/SM +cellulite +Celsius +cenotaph/SM +centennial/Y +centimetre/MS +centralism/M +centralize/CDNSAnG +centric/F +centrifugation/M +Ceres +certainest +certificate/SDM +Cessna +Chadwick/M +chaffer/rd +chagrined +chainsaw/DSG +chaise/MS +chalkiness/S +chalkline +chamberlain/SM +chamfer/dSM +chancellor/MS +chap/SDMG +chaperone/SM +charged/U +charismata +charismatic/U +Charlottesville +chasten/Sd +chattel/SM +chatter/dSr +chatterbox/SM +chauvinist/MSW1 +checkable +checked/U +cheerful/TP +cheerfulness/S +cheeseboard +cheesecake/SM +cheeseparing/S +Chen +chequer/d +cherish/GDS +cherubim/S +chest/6ZSDM +Chevy +chewiness/S +Chicago/M +chicane/MDGSy +Chicano/SM +chichi/TS +chiffonier/MS +chignon/SM +childes +childminders +chimaera/Mw +chimney/DMS +china/SM +Chippewa +chippie +Chirac/M +Chisholm +chit/SM +chitchat/DSMG +chive/SM +chloride/SM +chock-a-block +choler/SM +chord/GSDM +chow/GSMD +chrism/MS +Chrissie +Christensen/M +Christoph/M +chromatography/M +chrome/MWGD +chronology/13SMw +chuckle/DkGS +chunk/ZSGM2D +chunkiness/S +churchgoer/MS +Churchill/M +churchyard/MS +churlishness/S +cincture/MGDS +cinematography/WSM +circuitousness/S +circularity/MS +circulated/A +circumlocutory +cite/nAGNDS +claimable +clamp/SGMD +clannish/YP +Clapton +Clare/MZ +Clarendon/M +clarifier/M +clasher/M +classic/3S +classical/3 +classics/M +classified/S +classifies/CA +classlessness +class-list +clatterer/M +clavicle/SM +clearing-house/S +clerestory/SM +clevis/SM +Clifton/M +climbdown +Clio +cliquiest +Clive +clock/SDMRGJ +clod/SMGD +closable +cloud-cuckoo-land +clouding/c +clownish/PY +clubbed/M +clung +CNN +coal/SGMD +coalesce/GDS +coarseness/S +coat-hanger +cobalt/M +cock-eyed/Y +cock-of-the-rock +cocky/TP +cod/rMdSDG +codex/M +coercive/PY +coffin/dMS +Coffman +cogitator/SM +cognac/MS +cognitive/SY +cohabit/nd +cohabitation/o +coincident/Y +colander/SM +cold/TPSY +Colette/M +coliseum/MS +collaboration/3M +collaborator/MS +collapse/b +collapsibility/M +collar/pdMS +collation/M +collie/MRyD +collimation/M +collusion/M +cologne/SMD +Colombian/S +colonnade/DSM +colossi +colourfulness/S +colouring/M +colourlessness +colours/AE +colter/M +Colwyn/M +comatose +combination's/A +combinatorial +combinatoric/S +combiner/SM +comestible/MS +comfort/EGMSDk +commend/AnS7DG +comment's +commercialism/SM +commissariat/MS +committed/cU +common-law +commonwealth/SM +communism/MS +communist/W +community/SM +commutate/Vv +compact/TRPDYG +compactness/S +companionable/P +company/SMDG +comparative/PS +compare/uVvGBl +compass/M +compeer +competence/MSZI +competency's +competitiveness/S +competitor/SM +completer/M +completing +complicatedly +complicatedness/M +compliment/RGD +compost/G +composure/MES +compote/SM +comprehend/NuXSDvGV +Compton/M +compunction/SM +computer/Q8q- +computer-literate +concentrator/MS +concept/xSVoM +conceptual/-Q8q +concerning +concession/yo +concessioner +concise/TYPNX +concreteness/S +concreter +concretion/M +concuss/NXV +conductivity/SM +cone/MZS +confect/S +confectionery/SM +confess/GXxhDN +configured/K +confirmatory +conformism/SM +confuse/kRhi +congest/DVSG +congruence's/I +conjecturer/M +conjunctiva/MS +conjure/NRGSnD +Conley/M +Connecticut +connecting/E +Conrail/M +conscience-stricken +conscientiousness/S +consecrative +consensus/SM +considered/U +considering/S +consignee/SM +consiprationally +consolidate/DNGnS +constabulary/SM +constance/Z +consternation/M +constitutional/3YS +constrict/SDVG +constructable +consular/S +consumerist +consumption/Mc +contempt/bM +contemptuousness/S +contented/P +conterminous/Y +contestable/I +contestant/SM +contingent/MYS +continued/E +continues/E +contrariety/SM +controversial/UY +controversy/SMo +contuse/XGSND +conversion's/A +conveyance/DRSGM +convivial/Y +conviviality/MS +convulsive/P +co-occurrence +cookbook/MS +cook's +co-op +coping/M +copra/SM +copse/M +copulative/S +copywriter/MS +Corbett/M +Corby +cordillera/MS +cordovan/MS +Cornell/M +cornflower/SM +cornucopia/SM +corolla/yMS +corona/ySnM +corporatism/M +corporealness/M +corpse/M +correspond/k +corridor/SM +corruptness/S +corsair/SM +cortisone/SM +corves +cosignatory/SM +cottagey +couching/M +couldn't +counter-attack/SRMDG +countermeasure/SM +countersink/SG +courage's +coursework +courteousness/SE +courtesan/MS +coven/SM +covering/E +coward/SMY +cowardly/P +cowbell/SM +Cowes +cowgirl/SM +Cowley +cowling/M +crackly/T +craggy/TP +Craigavon/M +crape/SM +creatable +creates/A +creation/MAS +creationism/SM +crche/MS +creditability/M +credulously/I +crescendo's/C +crick/DSMG +cries/e +crime/DGSM +criminality/MS +crinkly/TS +crinoline/MS +crispy/TP +critical/UY +critter/SM +Croatia/M +crocker/Z +croft/MGSR +Cromwellian +crook/DSiMhG +crop/GSeMD +crossbeam/MS +cross-breed/GS +cross-ply +cross-polar +crossproduct/S +crotchety/P +crowbar/SMGD +cruciform/S +crucify/DGRS7 +cruelty/SM +crumpet/MS +Crusoe +cryogenics/M +crypt/MW1S +cryptogram/MS +crypts/C +crystal/MS +crystal-clear +crystalliser/SM +crystallized/A +CSU +cuber/M +cubism/SM +Culbertson/M +cul-de-sac +culprit/SM +cup/DM6GS +Cupertino/M +curare/MS +currant/MS +curricular +curriculum/M +curs/GyihSD +curvaceous/Y +curving/M +Cushman +cusser/FE +custom-built +cyan/MWS +cyborg/S +cycloid/SM +cyclopaedic +cyder/SM +cypress/SM +cystitis +cytology/3wSM +Dag +Dagenham +dairymaid/MS +dally/RGDS +Daly +damask/DMGS +Damien +damner +damp/SDTRPGY +Dana +dandy/TYMS +Danish +dankness/S +Dante +dapper/PY +dapple/DSG +dare/RDkGS +d'Arezzo +Dario +darn/DRGS +Darren +Dartmoor/M +Datamation +datedness/e +daub/DRGS +Davenport/MS +daybed/S +daytime/SM +DDT +deadening/M +deadpan +dear/TPYZS +dearness/S +deathbed/MS +debarkation/M +debatable +decal/SM +deceleration/M +deceptive/PY +decidedness/M +decisioned +declension/SM +Deco +decolletes +dcor/SM +decorous/IPY +decrease/k +deepness/S +deep-seated +deerskin/SM +defeat/RG3D +defector/SM +definiteness/IS +deflect/GSVD +defoliant/MS +defy/RSkDG +degauss/GD +degradable +deletable +delftware/S +delicious/PY +deliriousness/S +delirium/MS +delivered/U +deliverer/SM +deltoid/SM +deluder/M +demi-monde/SM +demisemiquaver/S +demo/GDM +demolition/MS +demon/SWM +demoniacal/Y +demoralize/R +DeMorgan/M +demotion +Denbighshire/M +denigration/M +denim/MS +denouement/SM +densitometer/MWS +dent/SIGD +deodorant/MS +departmental/Q8-q +dpayse +depiction/SM +depraver/M +depth/SM +deputation/M +derisive/P +derisiveness/S +desalinate/SNnGD +Descartes +descriptiveness/S +desertion/MS +desirous/PY +desperateness/S +dessicate/ND +destructiveness/S +detainer/M +detectability/U +deterred/U +detestable/P +detestation/M +detriment/SoM +detrimental +Dettingen +devastator/SM +deviating/U +diabetic/S +diabolical/P +diagnostics/M +diagrammaticality +diamant +diaphragm/MS +diatonic +dibble/MGDS +dicotyledon/SM +dicotyledonous +dies/U +dietary/S +Dietrich +differentiated/U +differentiation/M +diffract/DGS +diffuseness/S +diffusivity/M +digerati +digram +dihedral +dilettantish +diligence/SM +diluent +dime/MS +dimensionality/M +diminished/U +diminution/SM +dimwit/DMS +Dinah +dinnerware/SM +diocese/SM +diode/MS +diplexers +diplomata +direct/TxPDGySYV +directing/a +directionality +directrix/M +dirge/MSDG +dirtiness/S +disarm/k +disclose +discolour/NniGJ +discompose/D +discretionary +discriminant/SM +disdain/jMDG6S +disgrace +dish/SDMG +disloyal +dismember/dL +Disney/M +dispensation/M +dispersant/M +disposal/SM +Dispur +disquiet/kM +disquisition/MS +disrupted/U +disrupter/M +dissidence/MS +dissipated/P +dissolute/PY +distillate/MS +distiller/Z +distillery/MS +distorted/U +distributor/MS +district/SM +divan/SM +dive/RJDTGS +diverse/YP +divestment +dividend/MS +divisibility/IMS +divot/SM +DJ/M +dockland/MS +dockside/M +Dodecanese +dodgem/S +doge/MS +dogfought +doghouse/MS +do-gooder/S +doll/SDMGY +dolmen/MS +domestic/SnNY +domiciliary +dominations +dominative +dominatrix +Donizetti +donkey/SM +door/DmGMS +doorkeep/R +doorknob/SM +doorplate/SM +dope/R2DMGS +Doppler +Dorado +dormice +dost +dotard/SM +double-blind +double-decker/S +double-jointed +double-sided +doubt/MAS7 +doughty/T +doughy/T +Douglas-Home/M +Dow +downheartedness/S +downhill +downturn/MS +downward/PYS +dowry/MS +doyenne/MS +dragoon/MDSG +dramatist/SM +drank +draughtiness/S +draughtsmanship/MS +dreamless/YP +dressed/cAU +dresser/AM +Dreyfuss +dribble/RGDS +drippy/T +drivable +drollery/MS +droplet/MS +dropsy/M +drudgery/SM +Druidism/SM +drunkard/MS +drupe/MS +dryer/SM +dry-eyed +dryish +dryly +dubiousness/S +duckpins +duckpond +ductwork/M +dulcimer/SM +dumb/DTPGY +Duncan/M +dung/DGSM +dungaree/MS +durst +Dustin +dustmen/M +dwarf/GSMD +dwarfish +DWP/M +dyad/SMW +dybbukim +Dyfed +dynamic/YS +dynamite/MGRDS +dysentery/M +dyslectic/S +dystopia/M +eagerer +earmark/GDJS +earnest/PY +earphone/MS +earthshaking +easing/M +Easthampton +easting/M +Eaton/M +ebony/SM +econometric/S +economic/UY +ecstasy/MS +ecstatic/YS +ecumenist/MS +eczematous +edging/M +edify/RNSnDG +editing/F +eel/MS +effectuate/DGSN +Effie/M +effigy/SM +efflux/MN +effort/SMp +EGA/M +eggcup/SM +egotism/MS +eh +eighteen/HMS +eject/VGSD +ejection/MS +Ektachrome +elate/iSDGnhN +Elbe +Eleanor +electrify/nRDGSN +electro/M +electrocardiography/SM +electronic/S +electrostatic/S +elegant/IY +elimination/M +elk/MS +Ella +elliptical/S +Ellison +elocutionist +Eloise +emaciation/M +emasculation/M +embalm/RGDS +embargoes +ember/SM +emblem/WSM +embryonic +emergence/SMZ +migr/S +emote/SvDxVG +emotional/Q8 +emotionality/M +emphysema/SM +emplane/GDS +employment/fMU +emption/SM +emulsification/M +emulsion/SM +enc +encephalopathy/M +enchantress/MS +enclose/DSG +encroacher/M +encrypted/U +endanger/LSd +endear/LkDGS +endemicity +endmost +endogamy/M +endungeoned +enemy/MS +enforced/AU +enforcer/AS +enforcing/A +Englewood +engrammatic +engulf/LGDS +enjoy/GLBSDl +enrapture/GDS +enrich/GSDL +enricher/M +enshrine/GDLS +enslave/RGLSD +entangler/EM +enterprising/U +entrails +entrance/LMSGDk +entrant/A +entreaty/MS +entry/AS +enumerated/A +envied/U +EPA +ephemeris/M +epiphenomenon +epistemic +epithet/SWM +epochal +Epsom +equalized/U +equation/M +equidistant/Y +equilibrate/DNSG +equitable/PY +equivocation/M +eradicate/VNSDGn +eradication/M +ere +ergophobia +Ericsson/M +Eros +erotica/M +erudite/Y +Es +escudo/MS +esoteric/Y +Esperanto +esprit/MS +essential/P3SY +Estes +estimative +Estonia/M +Estonian +ethnicity/SM +ethology/3wMS +ethos/SM +eucalyptus/SM +eulogized/U +Eunice +eunuch/M +euphonious/Y +Europa +European/Q8Mq-S +Eurythmics +evacuate/VNnDSG +evade/SvRDNVGuX +evaluation/A +evaluation's +evasive/P +evenness/S +eventuate/DSG +Eveready +everywhere +eviction/SM +evidential/Y +evildoing/MS +evilness/S +examination/SM +examine/ASGDN +exasperate/DhGnSkN +excavate/DNSGn +excellency/MS +excellent/Y +excerpt/MSDG +excess/DSuVvMG +exchequer/MS +excited/Uc +excites/c +excluder/M +excrescent +exec/MS +executrix/M +exemplar/SM +exemplification/M +exercising/c +exile/GSDM +exodus/SM +expansion/y3M +expatriate/DnSNG +expect/nShGDi7kN +expectedness/U +expedience/SIZ +expeditious/PY +experience/IMD +experted +expertness/S +exploration/M +expos/SM +expostulate/nDGNS +expostulation/M +expound/SRDG +expressionless/Y +expurgated/U +expurgation/M +extending/c +extension/M +extensor/SM +extenuate/nGSDN +extirpate/GSnDNV +extra/S +extrasensory +extraterritorial +extreme/PTY3S +extremity/SM +ex-wife +eye-opener/SM +facecloth/S +facility/SM +facsimile/MDS +factor/Q8t+d-MqS +factory/SM +factotum/SM +faddist/MS +fade/hS +faff/GDS +fail/SDGkJ +Fairbanks +faith/6DjpMGS +fame/MDSz +familiarity/MS +fancy-free +Farley +far-off +farrago/MS +fasciculation/M +fastener/SM +fastening/MS +fatalist/W1 +fathers-in-law +faultlessness/S +favour/ERSMDG +favourable/SYM +Fawlty +fearless/PY +feasibility/I +feather-bedding/M +fee/GMYSd +feedback/SM +feedstock +felicitation/M +fellah +femaleness/S +femme/S +fen/MS +fenland/M +Ferdinand +fermenter +ferrous +fess's +fettling/M +few/TP +Fibonacci/M +fibroid/S +fictional/Q8q- +fiddlestick/SM +Fidelio/M +fiendish/PY +FIFO +fifty-eight/H +fifty-five/H +fifty-four/H +fifty-one +fifty-onefold +fifty-three/H +fig/LMDGS +fighter/IMS +figurine/MS +filch/DSG +filminess/S +filtration/MI +finale/M3S +finely +finis/SM +fireball/SM +fireproof/GD +firework/MS +firm's +first-floor +fishiness/S +fish-meal +fish-pond/SM +fishwife/M +Fisk +Fiske/M +fissile +fitful/P +fitted/e +fitter/eMS +five-a-side +fixatifs +fixes/I +flagrancy +flamboyancy/SM +flare-up/S +flatcar/SM +flatfoot/MS +flatulence/SM +flatus/SM +flatworm/SM +flavoured/U +fledge/DSG +flee/DGS +Fleming +flesh/pY2MDGZS +flew/c +flex's/A +flicker/dSkZ +fling/GSM +flip/RSTGD +flirter +flocculation/M +Florence +Floridian/S +flounder/dS +flowing/c +fluidity/SM +fluky/T +flume/GMSD +flute/GMSZDJ +fluting/M +flutter/rSZd +flyby/M +fly-by-wire +flycatcher/SM +flyleaf/M +Flynn +fly-paper/M +flyweight/SM +focal/FY +fogginess/S +foliage/SMD +folk-dance/MGS +Folkstone/M +Folsom +font/S +Fontana +Fontenoy +foolhardiness/S +foothold/MS +footlights +footpath/MS +footsoldier/SM +footstep/MS +foppery/SM +force-feed/G +forceful/P +ford/SDGM7 +forearm/GMDS +foreknew +foreknowledge/MS +foresightedness/S +forethought/MS +forever +forewarner/M +forlorn/TPY +form/FoSIGNnD +formability/M +formalist/W +formats/A +formerly +Formosan +forsake/GS +forte/MS +fortifier/SM +forty-first/S +forty-six/H +forty-twofold +fossil/Q-SMq8 +Foster's +found/DRGynS +founder/d +fountain-pen/MS +four-in-hand +fourteen/HSM +foveal +foxy/TP +franc/SM +Francisco/M +Frankie +fraternizer/M +fraudulentness +fraught +Frazier +Fred/Z +Frederic/M +Frederick/S +freeborn +free-kick +free-range +freezes/AU +freq +frequency/MSI +frication/M +Friedman +Friedrich/M +frisker/M +frizzly/T +frock/CGSDU +frock-coat/S +from +frontiers/m +frontward/S +frostbite/MGS +frosting/MS +frothiness/S +frowzy/TPY +fruition/M +fry/GSND7V +Frye/M +fhrer/MS +full-dress +full-grown +fullword/MS +fulmination/M +funfair/M +funnel/MDGS +funniness/S +furbish/ASGD +furore/MS +fury/MS +fused/CA +fussy/PT +futility/SM +future/M3S +futuristic/S +g/7 +gabbiness/S +gadfly/MS +gadgetry/SM +Gaelic-speaking +gaga +gaily +Gaines +Gainesville +gainsay/RGS +gait/SRM +Gaithersburg +gale's +gallbladder/MS +galleon/SM +Gallic +gallop/Srd +galore +Gambia/M +gamecock/SM +gamin/SM +gamine/SM +gammon/dMS +gangsterism +garb/DMSG +gargle/DSG +garment/DSMG +garotte/SMDG +garrotte/MRGSD +Gary/M +gasp/SRDGk +gas-permeable +Gatwick/M +gaugeable +Gazza +gearing/M +gelid +gemstone/SM +general-purpose +generalship/SM +Genghis +genitalia +genome/SM +genteelest +geom +geophysicist/SM +gestalt/M +gettered +Getty +Ghana/M +Ghent +ghoulish/PY +ghoulishness/S +giblets +Gibraltar/M +gifted/P +Gilbertson +gilding/M +ginger/ZYSdM +ginmill +Gioconda +Giorgio +Glamorgan/M +glance/kDSG +glans/M +glassware/MS +glassy/PT +Glastonbury/M +glaucous +glide/GSRDJ +glint/DGS +glissandi +globe/SMD +globe-trotting +gloomy/TP +glued/U +gluiest +gnome/MS +goalkeeper/MS +goal-line/S +goatee/SM +Gobi/M +godforsaken +godhood/SM +Godwin/M +goes/ef +goggle/SRDG +goggle-eyed +Goldman +Gomez +goodbye/MS +good-for-nothing/S +goodly/T +goof/GD2MZS +gooiest +goose/M +gorge/MSDG +gorges/E +gorgon/S +goring/M +gormless +gosh/S +Gosport +Gteborg/M +Gothic/Q8 +Gothicism +GOTO +goulash/MS +governance/SM +Govt. +GP +gr +graceful/EPY +gracefullest +grace's/E +Gracie +grackle/SM +graded/UA +Graff/M +graininess/S +grain's +grainy/TP +grammaticality/U +Grampian/M +grandchild/M +granddad/SMZ +grandee/SM +grandioseness +granduncle/SM +Granville +grass/ZSDGM +gratis +gravel/DYGMS +graviton/MS +grazed/c +greatcoat/SDM +great-grandparents +great-uncle +greenbelt/S +greenfly/M +greengrocery/M +greenkeeper/SM +greenness/S +grenade/MS +Gresham/M +grey/PGYDS +greylag +grievous/PY +griffin/SM +grilse +grinning/Y +gripe/S +grisliness/S +grist/MY +grizzling/M +grocer/ZSM +grocery/SM +grommet/dMS +grosbeak/MS +Grossman +Groton +groundwater +grown-up/MS +grubbiness/S +grudge/DkMGS +gruesomeness/S +gruff/DTPGY +grump/2MZSz +grumpy/PT +grunt/DGS +guarani/SM +guarded/P +guardedly/U +guardrail/MS +Guatemala/M +guesswork/SM +guestimate/DSG +guide/aDSG +guillotine/DSMG +guiltiness/S +guise/EMS +Gujarat +gull/SDMbGY +gullet/MS +gullibility/SM +gumdrop/SM +gunky/T +gusseted +gust/SD2MGzZ +gustatory +Gustavo +Guthrie +Gutierrez +habitant/IFSM +habit-forming +habits/FI +habitu/MS +hades +hadn't +hadst +haemoglobin/SM +hag/MS +haggle/DRSG +hagiographer/SM +hagiography/MS +hailstone/MS +hairdressing/MS +hairiness/S +hairspring/SM +hair-trigger +halest +half-finished +half-lives +half-pay +halitosis/M +hallmark/SMDG +halogen/SM +halter/d +halyard/MS +Hamal/M +Hamlin/M +hamper/dS +handbag/SMDG +handbasin +handedness/SM +handkerchief/SM +handleable +Handley +handspike/MS +hangers-on +hangover/MS +hankering/M +Hanson +hap/aS +hapless/PY +happiness/SM +hara +Harald +Harcourt +hardening/M +hardpan +hardware/M +Harlan/M +harmful/P +harping/M +harridan/SM +hateful/P +Hatfield +Haugen/M +haulier/MS +haven/SM +hawking/M +hay/GMSD +haze/DMRSGZ +he/M +headiness/S +headless/P +headmastership/M +headscarf/M +headshrinker/MS +headstand/MS +headstone/MS +hearken/dS +hears/SA +hearse's +hearthrug +heartiness/S +heartthrob/SM +heated/cKUA +heathenish/Y +heat-resistant +heavyweight/MS +hedge/DRGSMk +hedgehop/SDG +heeded/U +heedlessness/S +heeling/M +hegemony/SWM +heir/SFM +Helene +hell-bent +helmet/dMS +helpmeet's +Helvetian +Hemichordata +hence +henpeck/DGS +her/GS +herbicidal +Hereford/M +hereinafter +heretic/SM +hereto +Herman +heron/MS +herring/SM +hesitant/Y +Hess +heterodoxy/SM +heterogamy/M +hexane +Hg +hicks +hidebound +hidey +hiding/M +higgledy-piggledy +high-class +high-flown +high-flying +high-grade +high-heeled +high-pitched +high-ranking +high-stepping +hight +Hilary +Hilliard +hillwalking +hindrance/MS +hinger +hippie/M +Hispanic/SM +historicity/MS +hit/pRMSG +hmm +HMS +hobbit +hobnob/DGS +hodgepodge/MS +hoe/GMS +ho-hum +holdover/MS +holeable +holiday/GSMD +Hollerith +hollowware/M +Holm/M +hologram/SM +holography/SM +holster/MdS +Holyhead/M +homebuilt +home-ownership +Homeric +home-schooling +homespun/S +homoeothermal +homophobes +homosexuality/SM +honeycomb/GDSM +Honiara/M +honourableness +honourably/S +hoodoo/MGDS +hookah/SM +Hooke +hooks/U +hooligan/SM +hootch's +hoover/d +hornpipe/SM +horror-stricken +horse-cloth +horsepower +horsey +Horst +hosp +hospital/Qq8SM- +hotline +hotshot/S +Hounslow +housebuilding +housefly/SM +house-proud +housewares +housewives +how/MS +Howe/S +HRH +hrs. +hub-cap/SM +Huber/M +Hubert +huckster/MSd +huh/S +hulk/GMDS +humanely/I +humdrum +humeri +humility/SM +hump/GSMD +Humpty +hunchback/SMD +hunky/T +hunting/M +hurrah +hustle/RGSD +Hutchison +hyacinth/MS +hyaena/SM +Hyatt +hydrant/MS +hydrocarbon/SM +hydrodynamics/M +hydrogenous +hydrolyse/DSG +hydrous +hygroscopic +hymeneal/S +hyperbole/M1SW +hyperboloid/MS +hypercritical/Y +hypersphere/M +hyphenated/U +hypnoses +hypnotist/MS +hypothermia/MS +hypothetical/Y +hypothyroid +hysterical +Iain +iamb/SMW +Ibrahim +ideal/SqQ-8s93M +idem +identified/Ua +idleness/S +idolatrous +idolatry/MS +i.e. +ignite/DASG +ileitides +ileitis/M +ilium/M +I'll +ill-considered +ill-disposed +illegal +illiterate/P +ill-omened +illumine/DSNVGn +illustrator/MS +image/SMyDG +imagination/M +imitation/M +imitativeness/S +immeasurable/P +immunity/SM +immunodeficiency/S +immure/GDS +impassable/P +impeachable/U +impenetrable/PY +impetuosity/SM +impetuousness/S +impetus/SM +impish/PY +implacable/YP +implant/N7n +implement/ADGSN +implicant/MS +impolitic/P +importation/SM +importune/GDRS +impossible/P +impost/G +impoverish/GLSD +impoverisher/M +imprecation/M +impression/MB3 +improvable +impugn/RBGSLD +inaugurate/SDGNn +inbred +inbreeding/M +Inca/S +incarnate/DGANSn +incarnation/AM +incestuousness/S +incidentals +incredible/P +incumbent/S +incunabula +indefinite/SP +indelible/Y +indention/SM +indestructible/YP +indicter/M +indispensability/MS +indite/SGD +inductance/SM +indulgent/c +inept/PY +ineptness/S +inequitable +inevitability/MS +inexpense +infanticide/SM +infarction/SM +infelicitous +inflammatory +influenced/U +infringer/M +ingrain/h +inhalant/S +inhibited/U +inhomogeneous +initial/Qs-89qDSY +initialise/ASKDG +initialize/ASnDGN +injection/MS +ink/GR2ZMSD +innumerate/B +inorganic/Y +inrush/GSM +ins. +insane +insigne's +insignia/MS +insolubility/S +installable +installant +installer/MS +instigation/M +instilment +institutional/Q8-q +institutionalist/M +instrumentalist +insufficiency/S +insulin/MS +insuperable/Y +intaglio/SMGD +integrable +integration/AME +integrations/E +intelligence/MS +intelligent/UY +intelligibility's/U +intendant/MS +interchangeability/M +intercollegiate +interconnected/P +intercontinental +interdependence/SMZ +interdict/DGMVS +interested/UY +interesting/UY +interferon/SM +intergenerational +intergroup +interlinear/S +interlining/M +interlink/DSG +intermission/SM +intermittent/Y +intermix/GSD +intern/GLDxo +internal/s9SQ8q- +international/3Q8-qS +internationalist +internetwork +interoperate/BDNSG +interpretive/Y +interrelation/M +interrogatory/S +intersession/SM +interstage +interstice/SM +inter-urban +intervener/M +intimacy/MS +intoxicate/GDhnNS +intratissue +introduce/DSAnNG +introspection/SM +introversion/SM +intubation/M +Inuit +investee/MS +investigation's/A +inviolability/MS +invitation/oM +invite/GSkNnD +involuntary/P +involute +iodine/M +IPR +IQ +Iraq/M +irascible/Y +irate/TY +ironmonger/ZSM +irreconcilable/PYS +irresistible/P +irresoluteness/S +irritant/S +IRS +is +Isaiah/M +ISO +isodine +isolator/SM +issued/A +itch/GM2ZzDS +iterative/Y +ITT +jab/GMDS +jackal/SM +Jacobian +Jacobin +jagged/P +Jake/S +jams +Janesville +Japan/M +jarful/S +jargon/M +jaundice/SMGD +Javanese +Jaycee/S +jean's +Jeff/M +jellybean's +jemmy/M +Jenkins +Jennie +jet-black +jetting/M +jiffy/MS +jigsaw/MS +Jimenez +Joel +joey/M +Johannes +Johnstown +joiner/Z +joint/FYE +joint-stock +jokey +jong/M +Jorgensen +joviality/SM +joyful/PT +joyousness/S +joyrode +judiciary/S +jumbo/SM +jumpy/TP +Juno +juridical/Y +jury's/I +justification/M +Jutland/M +juxtaposition/M +Kali +kamikaze/SM +Kansas +kapok/M +Karl +Katherine +kayo/MSDG +kb +Kenyatta +Kessler/M +kettledrum/MS +Kewell +keyboard/GMDRS +keystroke/MDS +Khyber +kick/ZRSDG +kickball's +kickstand/SM +kiddy's +kidney/MS +Kilkenny/M +killing/c +kilobit/S +kilogauss/M +kilt/SMD +kindergrtner/SM +kinetics/M +kinked/U +kinky/TP +Kirghiz +Kiribati/M +kismet/MS +kiss/DGRSJ7 +kitchener's +klutz's +knick-knack/SM +knighthood/SM +knock-kneed +knowingly/U +knowingness +Kobe +Koenigsberg +Koertzen +kosher +Kosovo/M +Kowalski/M +kraft/M +Krakatoa +Krieger/M +Kris +Kuwait/M +kWh +labia/M +labour-intensive +labour-saving +laevulose +Lagrange +lampshade/MS +land/mJDRGSMp +lander/eMS +landing/M +landscape/GRMSD +languid/PY +lanthanum/M +lapboard/MS +Laplace +Lapland/RM +lapse/FDAGS +Laramie +laryngeal/SY +laryngitides +lasso/MSDG +lassoer/M +last/YDGSkJ +lasted/e +lasting/P +lasts/e +latent/Y +Latinate +latrine/SM +launch/GADS +laundress/SM +Laurie/M +lawless/PY +Lawley/M +Lawrenceville +lax/vuTYSPV +layabout/MS +lay-by +layer/dC +layman/M +La'youn/M +laypeople +LCD +leach/SDG +Leadenhall +leakage/SM +leaner/M +leas/GRSD +leave/GSJDR +leavened/U +leaving/M +leery/TP +legal/Q8q-S +legalistic +legals/I +legation/AMC +leghorn/MS +legionnaire/SM +legitimated/I +Lehigh +leisurewear +leitmotiv/SM +Leitrim/M +lemony +lengthen/Sd +leprosy/SM +lepton/SM +lesbian/MS +Leslie/M +less/U +Lester +lettuce/MS +Levine +levitate/DGNSn +levy/SDRG +lexicography/1WwMS +lexicon/SM +Lexis +lg +Li +liar/SM +libellous/Y +libidinal +libido/MS +licensed/U +licentiousness/S +lichened +licorice +lido/SM +lie-down +liege/S +lieutenancy/SM +lifeless/PY +lifelike/P +lifesaver/SM +life-support +ligature/MDGS +lighten/drS +light-headedness +like/DGE7S +likely/TU +like-minded +liker/M +likewise +lilly +limit/rndpMSgl +limits/C +limo/S +limpet/MS +limpidity/SM +linear/tYQ +line's/e +lingual/S +linguistic/S +link/7RSMJDG +lint/ZSM +Linus +Linux/M +Lipton/M +liquefaction/MS +liquor/MS +literary/P +litheness/S +litotes/M +liturgy/S3M1w +lived/Ae +livelihood/SM +Livingstone +Llanelli/M +LLD +loading/M +loadstar's +lobotomist +local/qYQs8S9- +locale/SM +locational/Y +locket/SM +lock-up/MS +lodging/E +lodging's +loftiness/S +logician/MS +logistic/MYS +logjam/SM +logo/SM +logotype/SM +logrolling/SM +London/rM +lone/PRY +lonely/TP +longboat/MS +long-drawn-out +longeing +Longyearbyen/M +looker-on +looming/M +Lorenzo/M +loris/M +Lothian/M +Lou/M +loud/YTP +Louise/M +loutish/YP +lovelorn/P +lovingness/M +lowbrow/SM +lower/Sd +lower-class +lowermost +lowish +low-key +low-spirited +Loyola +Lubumbashi +lucent/4Y +Lucifer +Luddite +Ludhiana +ludicrous/PY +ludicrousness/S +Ludlow/M +lug/DRGS +lumen/M +lunatic/S +lunation/M +Lund/M +lurch/GSD +lurid/PY +lustful/P +lustiness/S +Luxenbourg/M +Lycra +Lydian +lymph/SM +MA +macaque/MS +macaroon/MS +MacDonald/M +mace-bearer/S +macerate/DGSnN +Machiavelli +machine/DM3SGNyn +machismo/SM +mack/M +macrophage/MS +macrosocio-economic +Madagascan/MS +madame/M +madmen/M +madwomen +Mafia/M +magnanimosity +magnanimousness +magnate/MS +magneto/SM +magnetohydrodynamical +magniloquent +magnitude/SM +Magog/M +mah +maimedness's +main/SA +mainsail/MS +mainstay/MS +maintenance/MS +maize +majesty/WSM1 +Majuro/M +makefile/S +makeover/S +maladjust/LDV +maladministration +maladroit/YP +Malawian/S +Malaysian/S +malefic +malfeasant +malposed +malt/DGMZS +Malthusian +Malvern +mamba/SM +mammal/SM +mammary/S +mamma's +mammogram/S +Manchuria/M +mandibular +manganese/M +manilla/S +mannered/U +Mansfield +mantissa/MS +mantle's +manumission/M +Maori +maple/SM +Maputo/M +Mara +marabou/SM +Marathi +maraud/SRDG +marbling/M +Marcie/M +mare/SM +Margaret/M +Margate +Marguerite +marigold/SM +marinate/SGD +market/g7rSMdJ +marks/A +mark's/A +marksmanship/S +marquess/MS +marquis/MS +Mars +marshmallow/MS +Martinez +martingale/MS +martyr/MGDS +Marxist +Mascagni +masculine/YP +mass/pSVvu +massager/M +massive/P +mass-market +mastership/M +masthead/GSDM +mastodon/SM +matchable/U +matched/AU +matcher/MS +material/qs39S-MPQ8 +matriel/SM +Matilda +Matisse +matricide/SM +Matterhorn +maximality +Maxine +maxing +MBA +McCabe/M +McCartney +McCoy/M +McDonnell/M +McGowan/M +McKee/M +McLean/M +McNaughton/M +MDT +meanly +meant/U +measure/LSpMhlGD +meaty/TP +mechanical/S +Medicaid +medievalist/S +Medina +meditating/K +Medusa/M +meek/YPT +meet/GJSY +megahertz/M +megalopolis/SM +meiosis/M +melanoma/SM +Melville +member's +membership/SM +memo/SyM +memoranda +memory/s9Q8oq-SM +Menominee +mentioned/fU +Mephistopheles +Merck/M +mercy/S6jpM +meretriciousness/S +merino/MS +meritoriously +merrymaking/SM +Merton +mes/2DZzG +meson/MS +Messina/M +messmate/SM +metacircular +metalanguage/MS +metamorphosis/M +metastability/M +mete/S +meteoritics/M +meteoroid/MS +meter/d +methinks +Methuselah +Metzler/M +MHz +miasmal +microamp +microbe/MS +microcosm/WSM +microgroove/MS +Micronesia/M +microscopist +midnight/SM +midscale +midsection/M +midweek/YSM +midwives +mid-year +miff/DSG +mightn't +milden +militarism/SM +militarist/W +milkmen/M +Millard +millennial +milliampere/S +millionaire/SM +millstream/SM +mime/DSMG +mimer/M +mimetic/Y +minatory +minder/AS +mindful/U +minim/s9Q8S-qMo +minion/SM +miniver/M +Minos +Minsky/M +minuet/MS +minus/S +minute/PMGTDSY +Mirabeau +misanthropy/MS +miscalculate +miscegenation/SM +miscellaneous/Y +mischievous/PY +misconstrue +miscount +miserly/P +misguide/hi +misleader +misogyny/3SM +misshapenness/S +missile/SMy +mister/CMS +mistreat/L +mitochondrial +mixed/U +ml +Mn +moat/DMGS +mobiles +mobilize/ADSCNnG +model/RSMJDG +moderates +modernist/WS +modernity/MS +modernization/M +Moe/M +Moffitt/M +Mohammed/M +moire/SM +moistness/S +molecularity/SM +molest/SnNRGD +molested/U +moll/MYS +Mollusca +mollycoddler/M +moment/YSM +momentous/PY +Mon +monarchism/SM +monarchist/W +Monash +monasticism/MS +Mondeo +Mondrian +monetise/CnADSG +Mongol/W +monkey/DSMG +monkish +mononucleosis/M +monopole/Q8Zs3-S +Montague +Montaigne +Montana/M +Montenegrin +Monteverdi/M +Monticello +Montreal +monument/oMS +moo/SGD +moonshiner's +moonshot/MS +moor/DSMGJ +mope/SZ +moraine/MS +moray/SM +morbidity/MS +mordant/GDYS +Mordred +Morgan +Mormonism/M +morose/YP +morphemic/S +Mort/M +Morten/M +mortice/MS +mortification/M +mossy/T +most/Y +motherly/P +motional +motions/CF +motivate/SGD +motivated/CU +motorbike/DSMG +moulding/M +moulds/A +mountaineering/M +mountainous/PY +mountainside/MS +mounter/SM +mounties +mourning/M +mousey +mouthorgan +mouth-to-mouth +mouthwash/MS +moving/U +mozzarella/MS +MPhil +MRI +MTS +mu +muckrake/DRSMG +muddiness/S +muddy/GTSDP +mudflat/S +mudlarks +mudroom/S +mudsling/RGJ +Mugabe/M +muggy/T +mullah/MS +mullion/GMSD +multidisciplinary +multifaceted +multifariousness/S +multilayer +multiplicative/S +multiply/RvSNVD7nG +multi-track +Munich/M +muscat/SM +muscatel/SM +muse/J +muser/M +musher's +musket/SMy +mustn't +mutilation/M +Myers +myopic/YS +Myron/M +myrtle/SM +mysteriousness/S +mystical +mysticism/SM +mystique/SM +Na/M +NAACP +nagging/Y +named/M +NaN +Nanette/M +napkin/MS +narcoleptic +narcotise/DSG +narwhal/SM +nasty/PYTS +Nathan/M +nationalist/1W +nationalize/CSGnNDR +native/PS +natter/dS +natural/qS38Q- +naturalness/U +NatWest +Nauru/M +nautical/Y +Navajo/S +Navarro/M +navigability/SM +NBC +neaten/dS +neatness/S +Nebraskan/MS +necessaries +neckband/M +necklace/DSMG +neckline/SM +ne +neediness/S +needlecraft/M +negativism/MS +negativity/SM +negator/MS +negligibility/M +Negro/M +neighbourhood/MS +Nelsen/M +Nembutal/M +neolithic +neomycin/M +nerveless/YP +nerving/M +Netscape/M +neurobiology/M +neuron/SM +neuronal +neurophysiology/M +neurotic/SY +neuterer/S +neutrality/SM +Neva/M +never +Neville/M +newly +news/Zm5p +Niall/M +Nicaraguan/S +nicknamer/M +nightcap/SM +nightfall/SM +nightmarish/Y +nippiness/S +Nippon/M +nitrate/SMDG +nitrification/SM +nitrocellulose/SM +nobleness/S +noise/pMZ +noisiness/S +nomenclature/MS +nomination/MCA +non-academic/S +non-addictive +nonage/SM +non-blocking +non-chargeable +non-combustible/S +nonconforming +non-consecutive +non-contributory +non-cooperation/S +non-criminal/S +non-cyclic +non-delivery/S +non-departmental +non-determinate/Y +non-effective/S +non-electric/S +non-electrical +nones/M +non-exchangeable +non-ferrous +non-flowering +non-fluctuating +non-inflammatory +non-intoxicating +non-lethal +non-living +non-narcotic/S +non-performing +non-programmable +non-salaried +non-skid +non-smoker/SM +non-specialist/SM +non-strategic +non-structural +non-terminating +non-uniform +non-virulent +non-vocational/Y +non-voting +non-working +Nora/M +NORAD/M +normality/SM +north-westerly +north-Western +Norton/M +nosebleed/MS +nosedive/DSG +nosey +nosing/M +notational/C +notepaper/SM +notoriety/S +nougat/SM +nought/S +Nouma/M +nowhere +Noyes/M +nuance/SMD +nub/ZMS +nuclide/M +nudism/SM +Nuku'alofa +nullity/MS +number/pdJ +numbness/S +numerable/IC +numeracy/SI +nursery/mSM +nursling/M +nut/2GDMZNS +nutmeg/MSDG +nutritious/PY +nutty/TP +nuzzle/RSDG +nymphomania/SM +NYSE +Oahu/M +oakum/SM +Oates/M +obbligato/S +obduracy/S +obedient/EY +obeisant/Y +Oberlin/M +obituary/SM +object/DSGvuVM +objectify/DSnNG +objectivity/SM +oblate/YSnN +obligatory/Y +obscurantism/SM +obsessive/S +obstetrical +obstreperousness/S +obtainer +obverse/SY +occult/DGSY +occupation/MKA +occupy/ADSKnG +octahedron/M +oddity/SM +Odell/M +Odin/M +odometer/SM +odoriferous +odour/SpM +ODs +O'Dwyer/M +Odysseus/M +Oedipus/M +oestrogen/SM +offbeat/SM +offensiveness/SI +officemate/S +officials +official's +officiate/NnSDG +off-screen +off-season +offset/SGM +offshore +oilfield/MS +oily/TP +OK/GDM +Oklahoma/M +old/T +Olmsted/M +omelette/MS +omnipresence/SM +once-over +oncoming/S +one/PMS +one-liner +oner/M +onerousness/S +onionskin/MS +onshore +on-stage +opaque/PTSY +opencast +open-mouthed +opinionated/PY +optics/M +optima/o +optimal +optimise/M +optimised/U +optimization/M +optimum/qs8Q-9SM +optoelectronic +opulent/Y +oracle/MS +orang +orange/yMS +oratorio/SM +orbital/YSM +orchestration/M +ordainment/K +ordering/S +orderless +ordinance/SM +ordinate/FNS +ordinator/SF +Orientalist +Orland/M +orthophosphate's +Osceola/M +Oshkosh/M +osmoses +osteoarthritides +OT +Othello/M +otherworldly +Otis/M +Ottawa/M +ourselves +outboard +outburst/M +outcast/G +outerwear/M +outfight/G +outgo/J +outlawry/M +outlook/M +outnumber +out-of-court +outpost +outspoken/PY +outward/PY +overachieve +overage +overattentive +overcapitalise +overcareful +overcautious +overconscientious +over-delicacy +overexcite +overexercise +overextend/N +overgenerous +overhasty +overland +over-many +over-much +over-niceness +over-particular +over-ridden +overrider +oversee +oversleep +overtness +overvalue +owe/S +Owen/M +own/GESD +Oxnard +oyster/MS +ozone/M +p/AYFI +p.a. +pacey +pacing/e +paddock/SGDM +padre/SM +paedophile/S +painkiller/SM +paintwork +palatability/M +palaver/dSM +paling/M +pallidness/S +palpable/YI +Pam/M +pamperer/M +pan/WGSDM +Panasonic/M +panel's +panicky/T +pannier/MS +pansy/MS +panties +pantiled +papa/MS +papaya/SM +paperback/MS +paper-girl/SM +paperwork/MS +parable/SM +Paraguayan/S +parakeet/MS +paralleling +parallelogram/MS +paranoid +pardonable/U +parentheses +pares/FK +pariah/SM +parish/MS +park/DGMSZ +parsed/U +parsimony/MS +part/fICS +parter/S +participator/S +particoloured +passer-by +passivated +pastoral/YS +pasty/TSP +patentee/SM +path-loss +patiently/I +patriarchs +paw/DSGM +pay-claim +pays/fcK +Pb +PDQ +peafowl/MS +pectic +peerage/SM +peeve/MSGD +peg/GSDM +pellagra/SM +penalisation +penalization/M +pendent/C +Penelope +penetrability/IMS +Pennine/S +pentacle/MS +pentagonal/S +pentathlon/SM +penthouse/SM +pentium +penumbrae +peonage/SM +pep/ZD2SGRM +perambulate/DGnSN +percent/M +percentile/MS +perceptibility/I +perceptible/YI +perceptive/P +percolator/MS +percussionist +pres/F +performable +periglacial +perihelion/M +periphery/SM +periscope/SM +peristalsis/M +peristaltic +periwig/SM +perky/T +perniciousness/S +peroxide/SDMG +perpetrator/SM +persona/M +personalise/CnSGD +perspicuous/YP +persuadable +persuasion/M +Perth +pertinence/IS +perturbation/M +pertussis/M +peseta/SM +peso/MS +pestilence/SM +pethidine/M +petition/FSAM +PG +Pharisaism +phase/SRGDM +Ph.D. +phenolphthalein/M +phenomenon/SM +phew/S +phial/SM +Philadelphia/M +philander/drS +philippic/MS +Philippine/S +phonetician/SM +phonetics/M +phosphorescent/Y +photoelectronic +photoelectrons +photometry/M +photomicrography/M +photon/SM +phototypesetting/M +physique/MS +pi/DR +pickoff/S +picnic/MRGSD +pico +picojoule +picture/DMSG +piddle/GYDS +piebald/S +piety/IMS +piggledy +pig-sticker +pillar-box +Pimms +ping/GDM +pinkish +pinpoint/GDS +pinprick/SDGM +pin-up/MS +piny/T +pipework +piping/M +pirate/1MGDSw +Pisa/M +pita/M +pitch-dark +pitchfork/SMDG +pitching/M +piteous/PY +piteousness/S +pithead +pitilessness/S +pivot/dSMo +Pk +placard/GSMD +places/aA +plain/mPGDTSY +plains/F +plaint's/F +planetarium/MS +planetesimal/MS +planoconcave +planter's/I +plash/DMGSZ +plasma/SM +plasticine +plat/rdR +plausibility/IS +playgirl/SM +playpen/SM +playtime/MS +plaza/SM +PLC +pleasant/TYP +plectrum/MS +plenteous/YP +plentiful/P +pleonasm/MS +pliant/FY +plover/MS +plug-in +plug's +plumb/MDJSRG +plump/TYZ +pockmark/DSMG +pocus +poetaster/MS +point/RhSpGiMDZ +pointless/YP +point-to-point +poise/M +poison/dMrS +poler/M +poleward/S +policy-making +polycyclic +polygamous/Y +polygon/oMS +polysyllable/WSM +polytechnic/MS +pommel/SGDM +pons/M +pontifical/YS +poof/SM +poorness/S +poplar/MS +populace/SM +populating/A +populous/PY +porphyritic +portable/S +portage/A +portion/SDGM +portliness/S +portmanteau/SM +Port-of-Spain/M +portraiture/SM +Portsmouth/M +poseur/MS +posh/T +posing/AI4 +positing/F +position's/EI4FCK +possessive/PMYS +possum/SM +postbox/MS +postcard/SM +postcondition/S +posthypnotic +posting/M +post-modernism +post-modernist +post-mortem/SM +post-traumatic +posture/IMS +posturing/S +potato/M +potlatch/MS +pour/7GSD +practicability/I +practical/IPY +practice/S7M +practician +praetor/MS +pragmatical +prairie/SM +praline/SM +prayer/j6 +preach/RJL +precancel +precipitable +precocity/MS +precode +preconscious +precursor +predecline +predestine/SG +predetermine/NnD +predicator +predictabilities +predilection/SM +pre-election +pre-eminence/MS +preen/DSG +pregnant/Y +prelate/MS +premature +prep/SM +preparedness/S +prepends +preponderant/Y +prerequisite/M +presbytership +prescience +prescient/Y +Prescott/M +Presidential +Presley/M +pressure-cook/G +prestidigitation/M +pretence/MS +preternatural/Y +prevent/lu7vV +preventative/S +prevention/MS +prey/DMGS +priggish/MY +primogenitor/SM +printing/IM +prizewinning +probables +procedural/S +processes/A +prodigality/S +production/Kf +profanity/SM +professorship/SM +profile/RGDSM +progenitor/SM +progeny/SM +prognostication/M +prognosticator/S +programmed/KC +progress/GMuSDNXVv +progressiveness/S +prolegomena +pro-life +pronghorn/MS +pronoun/SM +pronounce/aGDS +propellant/MS +prophetess/S +propinquity/SM +proponent/MS +proposition/GDM +proprietor/SM +proprietorial +proprietorship/SM +propriety/SMI +proscriber/M +prose/DZM +prosecute/GDS +proselytism/SM +prosthesis/M +proteas/S +protection/cM +protozoa/W +provident/IY +providential/Y +proximity/MS +PST +psychoactive +pubescent/K +pudendum/M +puerility/MS +puffiness/S +pull/RDGS +pulpy/T +pulsar/SM +pulse/ADSIG +punch/RGSD7JZ +pundit/MS +punisher/M +puppyish +Purcell/M +purify/SnRNDG +pursuit/MS +purulent +purveyor/MS +push-button/S +pussyfoot/GDS +putrescent +putty/MSDG +put-up +pvt +pyknic +pylori +pyramid/SMo +pyre/MS +pyrolysis/M +pyrotechnics/M +pyrrhic +pyxidia +QC +quadrophonic +quadruply/Nn +quaky/T +qualified/Uc +quandary/MS +quanta/M +quark/SM +quarter-final/SM +quartermaster/SM +Queensland +queerness/S +querier +question/RDJS7kMGl +questionable/U +questionnaire/MS +quest's/FI +quibble/RSDG +quicken/dS +quickener/S +quicksilver/dMS +quiet/PTYDGS +quilt/RDMGS +quinine/SM +quinquennial/Y +quintillion/HS +quittance/SM +quotation/aM +quoter/M +quotient/MS +rabbit/SdM +racoon's +radial/SY +radiately +radicalism/MS +radio-controlled +radiogram/SM +radiology/W13Mw +radionics +radiosonde/MS +radio-telegraphy/M +radiotherapy/SM +radius/M +RAF +raffle/DSMG +railhead/MS +raisin/MS +rang/RGDZ +rarity/MS +raster/MS +ratepayer/SM +rattly/T +raunchiness +ravel/UGDS +raw-boned +Rea/M +reach/eGcDS +read/2JlZRzGB +re-adapt/SDG +reaffirm/GNn +realist/W1 +realm/SM +ream/RGDMS +reapply/nNG +reassign/LG +reassuringly/U +reattain/G +rebalance +rebuild/G +recency/M +recentre +receptacle/SM +receptiveness +recipiency +reciprocity/SM +recognised/U +recommission/G +reconciler/M +reconstructed/U +recrystallize/Nn +rectilinear/Y +recuperation/M +recusant/M +recycle/7R +redaction/SM +red-bloodedness +redcoat/SM +red-handed +redraw/G +redress/G +reduce/SbDGRnNV +reductionist/W +Reedville/M +reef/DMRSG +reflect/GuvSVD +reflex/Y +refluent +reform/BRnNVy3G +refrain/DGS +refuge/SM +refugee/SM +refulgent/Y +refuser/M +regal +regalement +regardless +rgime/MS +Reginald/M +Regis/M +register's +regret/GDj6S +regretful/P +rehang/G +rehears/DG +rehydratable +Reid/M +reignition +reinvest/G +relational/Y +relative/SF +relaxed/P +relieved/U +religionist +relock/G +Rembrandt/M +remediable/I +reminiscence/SM +reminiscent/Y +remodel/GD +remonstrant +renascence +rendition/MS +renegade/MS +rennin/M +renounce/GDS +rental/MS +reopen/d +repackage/G +repaper/d +repetitiousness +replicate/DGS +repopulate +reprehension/M +representative/U +representatively +represented/fUc +reprimand/DSGM +reproachful/P +reprogramme +reproof/G +reprover +reptilian/S +reputation/M +reschedule +research/M7G +reseed/G +resemblant +resent/6LjDGS +reservation/M +residual/S +resiliency/S +resinlike +resistance/MS +resistant +resistivity/M +resound/kG +respective/IY +resplendence/M +respondent/FSM +response/bvVSuM +restfulness +restrain/Gh +restrained/UY +restrict/SDvhuVG +resumption/M +resurrection/SM +retentiveness +reticence +reticular +retiral +retractile +retributive +retrieve/RSGD +retroflex/DN +retroflexion/M +retrograde/SDG +returned/U +revenger/M +revere/SDG +reverencing +reversible/YI +revisionism/MS +revival/3MS +revivify/n +rhapsody/QSMwW +rhetoric/MY +Rhone +rial/MS +ribbon/SM +ribcage +Rickie/M +rid/rS7G +rider/p +ridge/DGSMZ +Riemann/M +rigatoni/M +rightfulness +right-on +rim/GpSDM +Riordan/M +riparian/S +ripcord/SM +Ripley/M +ripply/T +rip-roaring/Y +rissole/SM +rivalry/SM +rived/C +road-based +roadhouse/SM +roadster/MS +roadworthy +roast/RGDSJ +Roberta/M +robes/E +robin/MS +robot/WQMS +robust/YPT +Roby/M +Rochdale +Rochester/M +rocket/dySM +Rockies +Rockville/M +Rodger/MS +roger +rogue/ySM +roguery/MS +roister/drS +Roland/M +Rolland/M +Rollerblade/S +roll-off +roll-out +ROM +Romania/M +rood/MS +rookery/MS +room/Z6M2S +roomful/SM +Rooney/M +Rosalyn/M +rosebush/MS +Rosella/M +Rosen/M +Rosetta/M +Rossetti/M +Rotarian/SM +Rotherham/M +rotundity/S +roughish +round/TRYPDSiG +roundel/S +round-shouldered +rouser/M +roustabout/MS +routeing/A +route's +RPI +Rt. +rte +Ru/M +rubbing/M +rubella +rucksack/SM +rugby/M +Ruggiero/M +ruminant/SM +rumply/T +runt/MZS +runway/SM +Rushmore/M +Russo/M +rustre/MS +Ruthann/M +ruthenium/M +Rutherford/M +Saar/M +sacker +sacredness +sacrificial +saddler/M +saddle's +safes +safety/S +sagacity +sailing-vessel +Sakai/M +saker/M +salaciousness +salad/SM +sale/BMm5S +Salford +Salisbury/M +saliva/My +sallowness +sanctimoniousness +sanction/GDSM +sandbag/SMDG +sandwich/MSDG +sanity/ISM +Sankara/M +sarcophagus/M +sarsaparilla/MS +Saskatoon/M +sat/d +satiable/I +satisfactory/YU +sauce/SGMZ2 +Saudi/SM +Saunders +saurian/S +sausage/SM +Sauternes +savage/DPSYGy +savant/SM +sawmill/SM +scabrousness +scaly/T +scampi/M +scantness +scapulae +Scargill +scholar/SYM +school-day/S +schoolmarm +Schroedinger/M +Schultz/M +Schwab/M +sciences/FK +scientific/UY +scoopful/S +scope/SMGD +scoreline +Scot/M5Sm +scrabble/SGD +scrag/GMZSD +Scranton/M +scrape/SJ +scratchy/T +screech/SZDMG +screw/MZS2GD +scripture/oSM +scrofula/M +Scrooge/SM +scrota +scrubbier +scrutinised/U +scullion/SM +scupper/MS +Scylla/M +seafood/M +seafront/SM +sea-girt +seal/DUAGS +sealer/M +seamstress/MS +search/BRDJkSG +seasoned/U +sec. +secondariness +secretariat/SM +sectional/Q8S +secularity/M +sedge/SMZ +sedimentation/M +seed-vessel +seen/Uc +seepage/SM +see-saw/DSMG +segregation/3M +seigniorial +Seinfeld/M +Selby/M +selected/U +selector/MS +self-abasement +self-abuse +self-assurance +self-command +self-confessed +self-criticism +self-defence +self-denying +self-evidence +self-hate +self-involved +self-perpetuating +self-preservation +self-referential +self-respect/G +self-satisfaction +self-selecting +self-sufficient +self-support/G +self-sustaining +semi/MS +semiconductor/SM +Seminole/SM +semi-permanent/Y +senator/MS +sensation/M +senselessness +sensibility/IMS +sentiently +septicaemia +sequoia/SM +Sequoya/M +serendipity/MS +serious/Y +Serrano/M +service/mB5DMSG +serviced/U +servility/MS +serving's +sessile +session/MS +settles/UA +Seuss/M +seventy/HS +seventy-three/H +seventy-two +sever/dES +sewn +sexagenarian/SM +sf +sforzando/S +shady/YT +Shalom's +shamanistic +shamefaced/Y +shammer +shantung/M +shanty/MS +sharpshooting +Shaw/M +shawm/SM +Shawnee/MS +sheep-dip +sheerness +shekel/MS +shelfful/S +shell/SDGM +shellac/DSG +shelled/U +Shellie/M +shibboleth/MS +shift/RzZ2SDGp +shim/DZGMS +shipboard/M +shipbuilder/MS +shire/SM +shoal/SM +shoddy/TP +shogunate/SM +Shoji/M +shooting-jacket/SM +shop/GRDSM +shop-window/SM +short/YZSTDGP +short-change/GSD +shortfall/MS +short-handed +short-list/DG +shortstop/MS +should/R +shovelful/SM +showgirl/MS +shrine/MS +shuffler/SM +shut-eye +Sibelius/M +sickle-bill +side-trip +SIDS +SIGGRAPH/M +sighting/S +sigmoid +sign/FRSCAGD +significant/IY +signifier +siliceous +sill/2YSM +silvery/T +Silvester/M +simoom +simultaneousness +sinful/P +sinusoid/oMS +sister/MAS +sisterhood/SM +sit-in/S +six/HSM +sixer +six-shooter/S +sixth/Y +sixty-eight/H +skewer/d +skinny/PT +Skopje/M +sky/S7RGDZM +Skye/M +slapdash +Slav/SMW +slave/SRMyDG +slavish/YP +sleepover/S +sleepwalk/RDGSJ +sleepy/PT +slide/SG +slightish +slope/S +slouchy/T +SLR +sludgy/T +slur/GDSZM +sluttish +Smallwood/M +smithereens +smithery/S +Smithsonian/M +Smithtown/M +smoke-dried +smorgasbord/SM +smut/2GDZSM +sneaky/TP +snip/DrGZS +snobbery/SM +snoop/ZSRDG +snooze/SGD +snotty/TP +snowdrop/MS +snowmobile/SM +snuff/RYGSD +snuffle/GSD +so/M +soaker/M +soarer/M +soccer/M +sociability/U +sociably/U +sociolinguists +Socorro/M +soft-paste +soft-pedal/GD +softwood/MS +soi +solarium/M +soldered +solecism/SM +solemness +solicitous/Y +solidification/M +soliloquies +soliloquise/SDG +solipsism/M +solipsist/S +solo/GDMS +solute/AE +solvating +Somali/SM +sombrero/SM +song/MS +songbird/MS +songwriter/SM +son-in-law +Sonora/M +soonish +soothe/S +Sophie/M +sophistry/SM +soporific/SMY +Sopwith/M +Sorbonne/M +sorceress/S +soreness +Sorenson/M +sorrow/DGM6jS +Sosa/M +soulful/P +source/SeDGA +Southey/M +spacey +Sparta/M +spatio-temporal/Y +spay/DSG +SPCA +speaks/a +speckle/DGSM +spectroscope/M1ZSW +speculum +speed/DRJZSG2Mz +speedboat/MS +spellbind/SRG +spellbound +Spenser/M +sphagna +spicy/TYP +spiderish +spiel/DSGM +spill/cGDS +spindly/T +spindrift +spiritual/3YS +spit/RGS +spitfire/MS +Spitz/M +splayfeet +spleen/SM +splendour/SM +splice/GDRSJ +splotch/MGDSZ +spoilt/U +spokesperson/S +spook/MGZSD2 +spoonful/MS +spotlit +spot-weld/DG +spree/MGS +sprig/MSDG +spruce/YMDPSG +spryest +spurious/YP +sputter/dS +squamous +squanderer +squat/YTRSPDG +squeak/RZSGMD2z +squeeze/SRDG +squirm/ZSDG +squish/2DGZS +SSH +stable-boy/SM +stable-girl/MS +Stacie/M +staffers +stagy/T +Stahl/M +stainer/M +Stallone/M +stampede/MS +stampeder/M +stand-alone +stand-up +stank +stardom/MS +start-up/MS +starvation/M +statehouse/S +Staten/M +state's +STD +steadiness/M +stealth/M2zZ +stealthy/TP +steely/PT +steerage/SM +Stefano/M +Steinway/M +stench/SM +Stengel/M +Stephen/MS +stepsister/SM +stepson/MS +stepwise +sternum/SM +steward/GMDS +stickup/SM +stitch's +Stockton/M +stoicism/MS +stoke/SRGD +stone-cold +stoneware/M +stool-pigeon +stop-go +store/SAGD +Stouffer/M +straiten/dS +straitjacket/dMS +strait-jacket/dSM +Stratford-upon-Avon +stratum/M +streak/RSDZGM +streaky/T +strength/SM +strengthen/AdS +streptococcus/M +stretchability/M +strike/RGSk +stroll/SRGD +strop/SMDG +structureless +stubble/YSM +stultify/nSGND +stuntmen/M +sty/SM +stylistic/S +Suarez/M +suave/Y +Sub +subcommittee/SM +subcontract/SGDM +subinterval/SM +sublimate/DSG +sublimation/M +submission/MA +submissive/PY +submittal +subnet/MS +subordinator +subsistence/M +subtenant/SM +subtext/SM +subtle/PTY +successful/P +successfully/U +successfulness/U +sufferance/M +suffice/SGD +sufficient/IY +suggestibility/M +suitability/U +sullied/U +sunbathe +sundae/SM +sunken +sunlight/M +sunrise/SM +sunshine/ZM +sunstroke/M +superconducting +superficial/Y +superfluity/MS +superfluous/Y +superheat/D +superheroes +supernovae +superordinate +supersaturation/M +supersede/GSD +supply's/c +supportability/M +supportable/IU +suppository/SM +suppressed/U +surgeon/SM +surplice/MS +surround/DSJG +surveillance/MS +survive/BGDS +sushi/M +Sussex/M +Suva/M +Suzuki/M +swallow/DGS +swamp/DGZS2M +Swarthmore/M +swathe/S +swear/RSG +sweatshop/SM +sweet/STY +sweetmeat/MS +sweetness +swerve/DGS +swig/MSDG +swimming/Y +Swinburne/M +Swindon/M +Switzerland/M +swizzle/MGD +swizzle-stick/SM +swoop/DGS +swordsmanship/M +swum +Sykes/M +syllabify/GNSnD +syllabub/M +syllogistic +symbioses +synchronise/CSAGD +synchronised/U +synchroniser/CSM +synchrony/89sqQ- +syncline/MS +syndic/nNMS +synodal +synoptic +syphon/d +syrup/SM +tabulation/M +tactic/MS +tact's/F +Taff/MZ +Tahiti/M +tailboard +tail-end +tail-ender/S +tailing/SM +Taiwan/M +takeover/MS +take-up +talon/MS +tamazepam +tamed/U +T'ang +tangent/MS +tangle/DSUG +tanned/U +tannery/SM +tanning/M +tantra/S +Taoist/SWM +tape-record/G +tapeworm/MS +tariff/MGDS +tarpaulin/SM +tattered +tautology/MS1w +teak/MS +tearless/Y +teat/MS +technique/SM +technophobia +tectonic/YS +tedium/M +teem/DGS +teetotalism/MS +Tegucigalpa/M +Teheran's +tektite/MS +Tektronix/M +telecommunicate/nN +telegram/SGDM +telekinetic +telemarketing +telescope/MGS1DW +telethon/MS +television/M +tell/RYkGS +Telugu/M +temerity/SM +tempest/SM +tenancy/SM +tench/M +tend/FRKSIGD +tenon/SM +tenuousness +tepidity/S +tercel/M +termination/MC +terminus/M +termism +terrain/SM +terrazzo/M +Terri/M +terrify/1SWGDk +territoriality/M +terror/qs9Q83-SM +Tesla/M +TESOL +tessellate/NDGSn +test/KFDCGSA +testable +testamentary +testes +testosterone/SM +tetrachloride/M +tetrarch +tetrode +Thad/M +Thaddeus/M +thanksgiving/MS +that'd +Thayer/M +theme/MSD +themselves +Theo/M +theologian/MS +therapy/SM +there'll +thermionic/S +thermoelastic +thermoformed +they're +Thierry +thievery/SM +thievishness +thingamajig/SM +third-party +third-rate +thirty-second/S +thirty-two +thither +thoroughbred/S +thought-provoking +Thrace/M +thrall/SM +thrashing/M +three-line +threw/c +throaty/TP +thrombi +throughout +throughput/SM +throwaway/MS +throwback/MS +thrust/GRS +thuggishness +thulium/M +thundercloud/SM +tibiae +tick/MS +ticket-day +Ticonderoga/M +tidal +tidy/GYSDT +Tierney/M +tigress/MS +Tillman/M +tilt/DGS +timekeeper/SM +time-lapse +time-out/S +time-worn +Timex/M +tiptop +tire/cAGDS +tiring/U +Titian/M +titleholder/MS +titmouse/M +titter/d +tittle/MS +tizzy/MS +TKO +Tm +toad/MZS +toffee/SM +togetherness +tokenism/SM +Tokugawa/M +tolerability/MI +tolerably/I +tollbooth/MS +toll-house/M +toll-road/MS +tomato/M +tomatoes +tomblike +tomboy/SM +tomography/MW +toneless/Y +tongue/GSMD +tongue-in-cheek +Tonia/M +took/afcA +toot/GRDS +toothy/T +topaz/MS +top-down +topflight +top-level +topmast/SM +torch-bearer/SM +torment/GDkS +torpor/MS +Torrance/M +tortuousness +Toscanini/M +tot/DSoMG +touch-tone +tournament/MS +Townley/M +townscape +Townsend/M +toxin/MS +traceability +traced/U +tracer/ZSM +tracery/SM +tracheotomy/MS +traditionalism/MS +traditionalist/W +trailblazing +trained/U +trainer/MS +tramway/SM +Tranmere +transalpine +transcendentalist +transitivity/M +translate/DgNGnS +translates/a +transnational +transom/SM +transparency/SM +transparent/Y +transpiration/M +transputer/M +treasury/SM +treaty/MS +trellis-work +tremor/SM +trencher/mSM +trepidation/MS +tress/aMS +triad/WSM +trice +triceratops/M +trichinosis/M +trichromatic +trilby/MS +trimaran/SM +Trimble/M +trinitrotoluene/M +triphthongal +triplicate/S +trisodium +triumphant/Y +trompe +troublemaking +trounce/GDS +trove/SM +trowel/MS +truck/DRGMS +Trude/MZ +true-born +truism/MS +Trumbull/M +truthfulness/U +TRW +T's +tsunami/SM +tubby/T +tubercle/SM +Tucson/M +tulip/MS +tumbler/6 +tumescent +tumid/Y +tumorous +tun/W7rdSZ +tuppence/M +tureen/SM +turkey/MS +Turmenistan +turnout/MS +turpentine/M +tutu/MS +twain +twangy/T +'twas +tweak/DSRG +tweeness +twist/RZGSD +two/SM +two-stroke/MS +two-thirds +Tylor/M +Tyneside/M +typed/U +typeface/MS +tyrant/SM +Tyree/M +tzatziki +U +ufologist/S +ufology/M +Ulrich/M +ultrasonic/SY +umbrageous +UN +unaccountability +unavailing/Y +unchallengeable +uncivil +uncle/MS +unclean +uncomfortable +unconditional +uncontrollability +undependable +under-age +underarm +undercoat/G +under-investment +understand/aJSG +undertow/M +underwater +underweight +Underwood/M +undress/G +ungrammatical +unhelpful +unhook/G +unicellular +unicycle/DMG3S +unimportant +uninterrupted/Y +unintuitive +unions/EA +Unitarian/SM +univalent +universe/oMS +university/MS +unobtrusiveness +unpick/G +unpunctual +unrealism +unripe +unscrupulousness +unseemly +unselfconscious/Y +unsellable +unshod +unsteadiness +unstoppable/Y +unswerving/Y +unthoughtful +untie +until +untrustworthy +unwieldiness +unwillingness +unworthy +up/MFS +upend/SGD +upmarket +uppity +uproar/SM +upset/SG +uptight +uptime +Ur/M +uraemia/M +Urbana/M +urethral +Uri/M +Uruguay/M +USC/M +USDA +used/fU +Usenet/M +uterine +utter/YdS +uttermost +uucp/M +vaccination/M +vacillate/SDkGNn +vacillator/MS +vagarious +vagrancy/MS +vain/TY +valence/MKS +validate/IDASGN +valley/SM +valuable/YS +vamp/AGSD +Vanderbilt/M +vanilla/SM +vapid/Y +variability/SIM +varicose +varied/U +varnished/U +vasectomy/MS +Vasili/SM +vastness/S +vaudevillian/SM +VDT +vegan/MS +vegetarian/SM +vegetarianism/SM +Velsquez/M +Velma/M +velocipede/MS +Velveeta/M +velveted +vengefulness/A +vent/IGFSK +Ventura/M +verandah/MS +verbatim +verbiage/SM +verdigris/M +verge's +verified/AU +verity/SM +vermiculite/SM +vermin/M +verminous +vernacular/YS +veronica/SM +verrucae +Versailles/M +vertebrae +verticality +vested/I +vestigial +vesting/I +vexatiousness +Viagra/M +vicarage/SM +vicarious/Y +vichyssoise/MS +victory/SM +Vida/M +viewgraph/SM +viler/A +Villanovan/M +Villeneuve/M +Vincennes +vinegar/MS +vintage/SM +violable/I +virgin/MoS +viscera/o +Vishnu/M +viticulture/M +vivace +VJ +VLF +vocalism/M +voltage/SM +voluntarism/SM +Von +Vries +VTOL +vu +vulcanise/GDnS +vulcanize/GDNSn +wacky/T +Waco/M +wagtail/MS +Waikiki/M +wainscot/DGdS +wake/j6MGDS +walkabout/MS +walkie +walkie-talkie/S +wallet/SM +wall-eye/DSM +wallpaper/dSM +Walpole/M +walrus/MS +waltz/DSGM +Wandsworth/M +Wang/M +wannabe/S +want/DGS +ward/MAGSD +Wareham/M +warm/TRJDSGY +Warner/M +Warrington/M +Warwickshire/M +was +washday/M +washerwomen/M +wastage/SM +Watanabe/M +watchfulness +water-bed/S +water-borne +Waterbury/M +Waterford/M +watering-hole +water-soluble +waterwheel/S +waveform/MS +waxen +waxy/T +wayfaring +waylaid +Wayland/M +Weald/M +weaponry/SM +weatherperson/S +weather-worn +weave/AGS +weaved +web-footed +website/MS +Wednesday/MS +weighbridge +weigh-in +well-adjusted +well-balanced +well-behaved +well-bred +well-connected +well-formed +well-marked +well-prepared +wellspring/SM +well-supported +Wendy/M +wept +Wesleyan +Westernism/M +Wexford/M +whaleboat/SM +whatnot/SM +Wheatland +wheel-clamp/GD +wherein +whether +whey/M +whilst +whine/SRGDMZk +whipsaw/SMGD +whir/DGS +whirligig/SM +whirlwind/MS +whisk/GRDZS +whiteboard/S +Whitley/M +whittle/RDGSJ +wholly +whose +wicket-gate +wicket-keeper/SM +widthways +wield/SRDG +Wiesbaden/M +wife/MpY +wiggly/T +wigwag/GSD +wilder/P +wildlife/M +Wilhelm/M +Willcox/M +Willoughby/M +willy/S +Wilmette +win/RGdSJ +windfall/MS +windlass/SDMG +windmill/MS +windsurf/SGDR +windy/PYT +winemaker/SM +winnow/DGRS +winsomeness +wintergreen/SM +wire-haired +wireless/MS +wires/A +wisp/MZS +witch-hunt/S +wither/k +withhold/SRJG +without +wizardry/SM +WO +wobble/SY2DG +Wolfson +wolf-whistles +womanhood/SM +womanish +women/M +Woodard +woodcarver/S +Worcestershire/M +wore/e +workability/M +workableness +workbook/MS +workroom/SM +worksheet/S +Worksop/M +worm-casts +wormhole/SM +worn/eU +worrisome/Y +worshipfulness +Worthing/M +wouldst +woven/UA +wpm +wrap/cU +wraparound/S +wrasse/MS +wreckage/MS +Wrekin/M +wristband/MS +writ/MrS +writes/c +writing/AS +wrong/j6GYSD +wrongdoer/MS +Wyatt/M +xerography/MW +Xhosa +Xmas +xv +xvi +xylem/SM +y/K +Yamaha/M +yaw/DSG +yellow/GDSMZ +yellow-bellied +Yellowknife/M +yelp/DGS +yesteryear/SM +yikes +yodel/RDGS +yoghurt/M +Yokohama +Yonkers +you +you'd +you-know-what +your/S +Yousuf +Ypsilanti +yr +yucca/MS +Yuga +Yuletide/M +Zagreb/M +zap/DRGS +Zealand/M +zealot/MS +zealous/cP +Zeebrugge +Zellick +Zeppelin/MS +zeta/S +Ziegfeld/SM +zillion/S +Zionist +zip's +zonked +Zukerman +zygote/SWM +abater/M +abduct/SDG +abductor/MS +Aberconwy/M +Abernathy/M +Aberystwyth/M +abeyance/SM +abhorrence/SM +abhorrer/M +Abigail/M +Abilene/M +ability/ESIM +ablation/M +able-bodied +abode/MS +abolitionism/SM +Aboriginals +abortion/3SM +about +abscissae +abseil/SDG +absentee/MS +absolver/M +absorption/M +absorptivity/M +abstruse/TYP +abstruseness/S +academia/MS +acanthus/SM +Acapulco/M +accessors +acclimatise/ADSG +acclimatize/ADSG +acclivity/SM +accomplished/U +accoutre/LDSG +accumulative/P +acerbate/GDS +achromatic +acid/YPWSM +acknowledgeable +acquiescence/SM +acquittance/M +acrimony/SM +acrobatic/S +actinium/M +activeness/S +activism/MS +acupuncture/MS3 +acuteness/S +adage/SM +adapt/NRvuDBinSVG +adaptability/MS +Addis +Addison/M +address/RDMBGS +addressing/a +adduce/bGVNSD +adequacy/ISM +adjacent/Y +adjectival/Y +Adkins +admen +administer/dNSn +admiral/SM +admitted/Y +adrenaline/MS +adsorbent +adultery/SM +adventuress/SM +adverbial/M +advisability's +advisor/M +aegis/SM +aerie/oSM +Aesop/M +aesthete/1WS +affected/EPY +affecter/M +affectionately +affiliation/ME +affirms/A +afflatus/SM +afflict/VvGDS +affluence/SM +afloat +afoot +afternoon/SM +against +Agamemnon/M +agape +age-long +agenting +ages/e +agglomeration/M +aggravate/GkDSnN +aggressively +aghast +aglitter +ago +agonise/kh +Aileen/M +aimlessness/S +airiness/S +airy/TP +Alabama/M +Alamogordo +Alan/M +Albany +albatross/MS +Albert/M +albino/SM +Alcoa +aldehyde/M +Aleutian/M +Alexandria/M +algorithm/SWM1 +alienate/SGD +aliment/DGMS +Alistair/M +alkalinity/MS +alkaloid/SM +allegiant +allele/SMW +allemande/M +all-embracing +Allentown +alley/MS +Allison/M +all-night +allocative +allow/7DSGhl +Al-Qaeda/M +Alsation/SM +alterable/UI +alteration/SM +alternate/NVvuSDGYn +altruism/SM +altruist/1MSW +alumnae +Al-Zawahiri +amaranth/SM +amasser/M +amateurishness/S +ambiguity/SM +ambitiousness/SM +ambivalence/SM +ambrosial +amends/M +amenity/SM +American/Qq-8MS +aminobenzoic +Amit/M +ammeter/SM +amount/MSGD +amperage/SM +amphibious/PY +amputation/M +Amsterdam/M +anachronism/SM +anaesthetic/YMS +anaesthetist/MS +anapaest/WSM +anchorpeople +anchovy/MS +Andorra/M +Andrei/M +Angela/M +Angie/M +Angkor/M +Anguilla/M +animator/SM +animus/SM +annelid/MS +anonymity/SM +Anson/M +answer/7drSM +antelope/MS +antenatal +anti/S +Antichrist +anticyclone/SMW +Antigone +antihistorical +antimicrobial/S +antinomian +antioxidant/MS +antiquation/M +antique/MSDNG +anti-racist +antithesis/M +antivivisectionist/S +ant's +antsiest +apatite/SM +aperiodic/Y +aphoristic/Y +aplenty +apnoea +apologia/SM +apostate/QMS8 +appaloosa/S +apparently/I +appealer/M +appellate/NVvn +appendicitis/MS +appertain/SDG +appetite/VSM +applet/S +appointee/SM +apportion/LADSG +apprehends/a +appropriate/GnaDNS +appropriateness/ISM +aquarium/SM +Aquarius/M +arbiter/MNnS +arbitrage/DGRSM +arcade/SDGM +archbishopric/SM +archdeacon/yMS +archetype/wMS +archfiend/MS +Archie/M +arching/M +architecture/oSM +ARCO +Arctic/M +areola +areolar +Ares +arte/MS +arguing/e +aridity/SM +arithmetician/MS +Arlington/M +arming/M +armistice/MS +arm's +arousal/SM +arrangeable +arrant/Y +arsenal/SM +arsenic/SM +arteriosclerosis/M +Arthur/M +articulable/I +articulacy/I +articular +articulately/I +artiste/MS +arum/MS +ashamed/UY +asininity/SM +aspen/MS +aspersion/SM +aspirator/SM +Assamese +assemblage/SM +assesses/A +assiduity/SM +assiduous/PY +assign/RL7DSNGn +assigning/K +Assisi/M +assize/M +assn +associational +assuage/DSG +aster/FSEM +astound/kGSD +Asuncin/M +asunder +asynchrony +ataxic +athleticism/M +Atkinson/M +Atlantis +atlas/MS +atmosphere/MS1DW +atrium/M +atrophy/MDWGS +attainder/MS +attire/DGS +attitudinise/GDS +attractant/SM +auburn/SM +audacious/PY +aught +Augustine +augustness/S +aunt/ZSM +Aussie/MS +austerity/MS +Australian/SM +Australis +Australopithecus +authorising/A +autofluorescence +automate/D8NQWGSn1 +automatic/S +automorphism/SM +autonomous/Y +autopilot/MS +autumn/MoS +availing/U +Avalon/M +Avery/M +avocational +Avon/M +award/DRGS +awash +awe/SMDG +awful/TPY +awkwardness/S +awn/SMDJG +axehead/S +axis/M +ayah/SM +Azov +BA +Babbitt/M +bacillary +backbench/SR +backed +backfire/GDS +backplane/MS +backs +backslid/r +backstage +backtalk/S +bacon/SM +baconer/M +baddie/MS +baddish +Baedeker/M +baffle/RDLGkS +Baghdad/M +bailee/MS +Bakersfield/M +balalaika/MS +balances/cAeU +balderdash/SM +Baldwin/M +bale/R6GjSMD +Balfour/M +ballistic/S +ballpark/MS +Bambi/M +ban/SoRMDG +banana/MS +Bancroft/M +Bandar/M +bander/M +bandit/MS +banditry/SM +bankruptcy/SM +barbarity/MS +barbecuer +barbedwire/MS +bargy/DS +Barnabas +Baroda/M +barometer/MS1W +baroness/SM +barren/P +barrow/SM +Barrymore/M +Bartlett/M +basalt/WSM +bashful/P +basilisk/SM +bathe/S +bathetic +battery/MS +battledress +batty/T +baulker/M +Bavarian/SM +beachhead/MS +Beale/M +beanbag/SM +bearishness/S +bearlike +beasties +beastings/M +beatable/U +beau/SM +Beaufort/M +Beckham/M +Becky/M +becloud/SDG +becoming/UY +bedding/SM +Bede/M +bedpan/MS +bedpost/SM +bed's +bedstraw/M +beechen +beechwood +beefcake/SM +been +beg/SGD +Begawan/M +begotten/a +begun +behalf/M +behavioured +behead/DSG +beholden +beleaguer/Sd +Belgrano/M +Bella/M +belle/SM +bellicosity/SM +bellyache/MSGD +Belmopan/M +belong/GSDJ +belt-fed +beluga/SM +belvedere/M +benchmark/DSGM +bendable +Benedictine/M +benevolence/SM +Bengal/M +beret/MS +berg/SM +Berkeley/M +Bermuda/M +Bernice/M +Bertrand/M +Berwick-upon-Tweed/M +beseem/DGS +besom/SdM +bestrode +bestubble/D +Betelgeuse +betook +beverage/SM +Beverley/M +biassed +biasses +biassing +biathlon/MS +bichromate/MD +biconcave +biconvex +bicuspid/S +bigoted/Y +biharmonic +bijective/Y +bill/RM7YDJSG +binary/S +bind/kRJSG +bindle/M +binds/AU +bingen +binocular/SY +binuclear +biodegradable +biomedical +biomedicine/M +biometrics/M +biomolecule/S +biophysical +bipolar +bipolarity/SM +birch/SM +birchen +birdbath/MS +Biscayne/M +bisector/SM +bitterness/S +bitter-sweetness +bittiness +Blackburn/M +blackcurrant/SM +blah/MDSG +Blanchard/M +blancher/M +blast/GRSMD +blatantness +bleakness/S +bleeding-heart +bloke/MS +bloodlessness/S +blood-red +bloodshed/SM +blotchy/T +blouse/SMGD +blowing/M +blowy/T +blowzy/T +bluebell/SM +blueberry/MS +bluebottle/SM +bluefish/SM +blueish +bluejacket/SM +bluenose/MS +bluepoint/SM +blur/hGDZSM2 +blurt/SGD +Blythe/M +BNFL/M +boardgames +boards/e +boatclubs +boating/M +boatmen/M +bobbing/M +bobs/M +boding/M +body-check +boggy/T +Bohr/M +boldface/MGDS +bomb/RSMDGJ +bombardier/SM +bonanza/SM +Bonaparte/M +bondwoman/M +bong/SMDG +bonnie +bony/PT +booby-trap/S +boogeyman's +bookshelves +boot's +Bordeaux +bosomy/T +boson/SM +bossiness/S +bother/dS +bottle-fed +bottom-up +bouillabaisse/M +boundary/MS +bounder/SM +bountifulness/S +boure +Bournemouth/M +Bowen/M +Bowie +bowyer/SM +box-office +boxtops +Boyd/M +boysenberry/MS +brachium/M +Bracknell/M +Bradbury/M +brain-damaged +braininess/S +brainless/PY +Brampton/M +branch/SMGD +branding/a +brandywine +brat/MZS +bratwurst/MS +brawny/TP +breadbasket/MS +breadline/MS +breaking/M +breakup/SM +breathable/U +bred +breech/SGMD +breeding/M +breeziness/S +Bremen/M +Brennan/M +Brent/M +Brewster/M +briar/M +bric-a-brac +Brice/M +bricklayer/SM +brief/TJSYDPG +briefed/C +briefer/C +brigand/SM +brim-full +brimstone/SM +bring/RSG +brio +Brit/S +Britannic +Britannica +Britishness +Brittany/M +brittle/DTGPS +broach/SGD +broadsword/MS +Broadway/M +brokenness/M +bronchitic/S +brothel/SM +brownness/S +brr +bruin/SM +bruise/RGSDJ +brunette/MS +brusher/M +brute/GSMoD +B.Sc. +bubblegum/S +Buchenwald/M +buff/RSMDG +builds/Ac +built-in +Bujumbura/M +bulletproof/DG +bullhorn/SM +bullion/SM +bullpen/SM +bull's-eye +bullwhackers +bumblebee/SM +bumpy/TP +Bundestag/M +bundles +bungle/GkDRS +bunko's +bunk's +bunkum/M +buoyancy/MS +burl/2MDS +Burma/M +Burmese +Burnett/M +Burnley/M +bush/S2mGMJZD +butane/MS +butter/drZ +butterfly/MS +butterscotch/M +butting/M +buttonwood/SM +buying/c +Byronismyah +Ca/y +Cabernet/M +cacti +cadencing +caesura/SM +cagier +caginess/MS +Caicos/M +caiman's +calcine/SDG +calculable/I +calculableness +calculation/aSAM +calculus/M +called/AUa +calliope/MS +calm/YTGPSkD +Calvary +calves/M +Cambodia/M +Cambrian +cambric/MS +Camembert +camera/MmS5 +camion/M +campanology/3wSM +canasta/SM +cancellate/DnN +cancer/SM +candle/RMDSG +candlelit +cane/SMJ +cannery/SM +cannister/SM +Cannock +canon/wMW-1qQ8S3 +cantaloup +canticle/SM +cantilever/dSM +canvaser +cap/SADG +capablest +capacitate/I +capitation/CMS +capo/SM +captive/NSMn +Caracas/M +carcinogen/WMS +cardamom/SM +Cardiff/M +cardiomegaly/M +careen/DGS +careless/YP +carelessness/S +caress/SvVMk +caret/SM +caretaker/MS +Carl/MG +carp/GMDkRS +carpus/M +carrion/SM +cartage/MS +cartel/SM +cartilage/SM +case-load/SM +casing/M +Caspian +Cassius +caste/MS +castigation/M +castle/GMDS +castrate/GDS +Castries/M +cataleptic/S +catalogue/GRDS +catalyst/SM +cat-and-dog +catarrh/MS +catatonic/S +catchpenny/S +catechist/SM +catering/M +catgut/SM +Cathay +catheter/8QMS +Catskill/S +causeway/GMSD +causticity/SM +cauterise/DnGS +caution/KSGyDM +cavalcade/MS +cavern/DSGM +cay/SCM +Cayman/M +cedilla/MS +celebrate/inNSDyG +Celeste +celibate/SM +cell/MDS3G +censored/U +census/SdM +centavo/SM +centigrade/S +centilitre/SM +centipede/SM +centrality/SM +CEO +Cerberus +cetacean/S +CfIT/M +Chad/M +chaetognath +chaffinch/SM +challenging/U +challis/SM +chamber/rdMS +chameleon/MS +Chancellor/SM +chancre/SM +changeling/M +chanteuse/SM +chapelry/SM +chaplaincy/MS +chaplet/SM +characteristic's +chargeableness/M +chariot/SGMD +Charlie +charm/MRGkDpS +chaste/sQTYP +chastely/U +chastise/L +cheapness +cheekbone/SM +cheer/RDp6G2ZjSz +cheeriness/S +chemical/MSY +chemise/SM +chenille/SM +chequeing +chequerboard/MS +chervil/SM +Chesapeake +Chester/M +Chester-le-Street +Chiang/M +chicanery/SM +chicest +Chichester +chick/MS +Chickasaw/S +chiefly +chiffon/MS +childbearing/M +childbirth/SM +childcare +childhood/SM +childlessness/S +Chile/MS +Chilton/M +chime/RMDSG +chimpanzee/MS +Chinatown/M +chipboard/M +chivvy/SGD +Chloe +chloral/M +chlorinate/CGSDN +choke/RkDSG +choose/GR2SZ +chore/MoDSG +chorines +Christian/Q8MS +Christianity +chromatic/SP +chromosphere/M +chronic/Y +chuntering +cicatrice/MS +ciceroni +cigarette/MS +cilantro/S +cinder/SdM +Cinderella +Cindy/M +circadian +circulates/A +circumlocution/SM +circumnavigate/DNnSxG +circumscription/M +circumstance/GSDM +circumvent/DGS7 +circumvention/SM +cirrus/M +civet/SM +civilised/U +civilized/U +CJD +Clackmannanshire/M +Claire +clank/DMkGS +clannishness/S +clap/RGDS +claret/dSM +clasp/SUGD +clasp-knives +clasp's +class-concious +classificatory +classifying/a +classwork/M +clause/SM +clawer/M +clay/ZSMDG +clayier +clear-cut +clear-headed/PY +cleric/SYM +climactic +climate/M1S +clinician/SM +Clinton/M +clip-on +clitoris/MS +cloacae +cloak/DMGS +clobber/Sd +cloddish/P +clomp/SMDG +clonal +close/TRJPDYGS +closed/UE +close-down +close-fisted +closures/E +clothes/f +clout/SMDG +cloverleaf/SM +clubfeet +clumpy/T +Clydesdale +coacher/M +coachwork/M +coagulable +Cobol/M +coccyges +Cochin +cockatrice/MS +Cockburn/M +cockerel/SM +cocklebur/M +coda/SM +coder/4SCM +code's +codetermine/S +coefficient/SM +coerce/RDbGS +cofactor/MS +coffee-table/MS +cognation/M +coherent/IY +cohesion/MS +coiffed +coincide/SGD +coliform +collateral/M +collection/AMS +colleen/M +colleges +collegiality/S +collegiate/Y +colliery/SM +collimated/U +collimator/M +collision/M +colon/9MWQsq3-8S +colonialist +colonize/AGCDSNn +colorimetry +colostrum/SM +colour-sergeant +columbine/SM +Columbus +coma/SM +combative/P +combustible/IS +comer/cM +comforted/U +command/RkGDLMS +commandant/SM +commandeer/DGS +Commander-in-Chief +commencer/M +commendatory/A +commentate/SGD +commerce/GoSDM +commissary/SM +committee/mSM5 +commonest +commonsensical +communality/M +communicator/SM +commutativity +companionway/MS +comparability/MI +comparison/SM +compatibility/SMI +compensatory +compiled/A +complete/IYP +completeness/IS +completes +complexion/DM +complicated/U +compositor/MS +comprehended/a +compromise/M +computes/A +con/SwMW1DG +Conakry/M +conceited/P +conceivable/IY +concentration/M +concertmaster/MS +conch/MDG +condensate/MS +condensation/M +condense/DRSGbn +conditional/S +condonable +condoner/M +confederacy/SM +conference/GMDS +configure/NADGSn +confined/U +confirmation/MA +confiscate/yNnSGD +confluence/MS +conform/7R3x +conformities +Confucius +Congleton +congregation/M +Congregationalism/MS +Congregationalist +conics/M +conjugate/DVGnSNY +conmen/M +connect/viVbGhDS +connoisseurship +conquer/AdS +Conrad/M +consciousness/SM +conservationist +conserve/VnvNu +considerateness/I +consortia +constituent/YSM +constitutionalities/U +constitutionality/SM +constriction/SM +constructional/Y +constructivism +construing/a +consult/nDNGS +consultant/SM +consumed/U +contact/G7DS +contagious/YP +container/Q-8q +contaminated/UC +cont'd +contemporary/P +continuant/M +continuousness's +contortion/M3S +contortionist +contractile +contraindication/M +contraption/MS +contrivance/SM +conventicle/SM +conventionality/MUS +conventionally/U +convergent +converse/GnY +convertible/PS +convict/GVDS +convincingness/M +convolutions +convulse/GXDSVuNv +cook/KGADcS +Cooley/M +coot/MS +co-owners +coppice/DMSG +Coptic +copy/3DRGMS +cording/AM +Corinth/M +cornball/MS +corneal +Cornelia/M +corniness/S +Cornish +cornrow/GSD +cornstarch/MS +corny/T +corrected/U +correspondence/MS +corrode/DvbGuSXNV +corrosion/M +corruptions/I +cortical/Y +Corvallis +cosine/MS +cosmetology/3MS +cosmos/MS +cost-efficient +counsellor/SM +count/GSlDRBpZ +counterproposal/M +courage/ES +courageous/U +courageously +courageousness/SM +courtier/SM +couturier/SM +covariance/MS +covary +Coventry +cover/Jd7 +covey/MS +cow/ShGMDm +cowshed/SM +cps +crabbed/P +crackle/DSGJ +crammer/M +Crandall +crankcase/SM +crankshaft/SM +cranny/DSGM +crassness/S +crater/d +cravat/SMGD +crave/DJSG +Crawley +create/uGnSNDVv +created/UA +creativity/SM +creditable/P +credulity/IMS +creepiness/S +cremation/M +crenelate/SNGDn +crenellation/S +Crimea +crimp/SGD +crimper/M +crinkle/DGSY +crispiness/S +crony/MS +crossways +crosswise +crossword/SM +crouch/SGD +crunchy/TP +crusty/TPS +crystallizing/A +Cs +Cuban/S +culminate/NSGnD +culpability/MS +cumuli +cumulonimbi +cunnilingus/MS +cupping/M +curatorial +curb/MDSG +curial +curliness/S +curricula +Currier +cursive/EY +curt/YTP +curtail/RLSDG +curtsey/DSMG +curtsy/DGSM +cusp/MDS +cussing/F +custodial +customary/YP +cutesy/T +cut-price +cuttle/M +cybernate/N +cycad/SM +cyclamen/SM +cycles/A +cycling/A +cyclometer/MS +Cygnus +cymbalist +Cynthia +cytochemistry/M +cytochrome/M +daffy/T +Dakar/M +Dakota +dampness/S +damselfly/SM +danceable +danger/SdM +dangle/RGkDS +Danzig +Darby +darkroom/SM +Darwinian +dashiki/MS +Davis +Dawes +day-boys +day-long +dead-end +deadhead/SM +dead-heat +deadline/MGSD +dealership/MS +Deane/M +Deanna/M +death-trap/MS +deb/SM +debar/L +debark/NnG +Debby +debenture/SM +Deborah/M +Debra +dbut/S +decaf/S +decaffeinate/DGS +decertify/NGn +deck/DRGSJM +declamation/SM +declivity/SM +decomposability/M +decompress/NXG +decremental +decrepit +decrypt/GD +dedicate/NASnDG +deduct/b +deerstalking/M +default/R +deferential/Y +deferrable +deferral/SM +definable/UI +definite/xVuv +deflation/My +DEFRA +defraud/RGD +defrost/R +degrade/hki +degree/SM +dehydrator/MS +de-industrialisation +deja +dejected/P +delectable/PSY +Delhi/M +delicacy/IMS +delinquency/MS +deliquescent +deliverable/S +Delmarva +delta/SM +delude/NXvkxSGVDu +demilitarise/n +demilitarize/nNSG +demi-mondaine/SM +demography/1WwSM +demolisher/M +demoness +demonstrator/SM +dentition/MS +depersonzlized +depict/GSD +depilatory/S +depolarize/R +deport/nLNG +deportee/SM +depot +deprave/DhSiG +depreciation/M +depressive/S +Dept. +deputy/SM +derby/MS +derogatory/Y +derrire/S +descant/SM +design/NhJ7Vxn +designed/A +desirableness/S +desolate/YNPkGnDS +detective/MS +detonate/DVNGSn +d'etre +deviancy/S +devilry/SM +devout/TYP +dexterity/MS +dextrose/SM +dhow/SM +diabolism/M +diacritical/S +diaeresis/M +diagrammatic/Y +diaphanous/PY +diathesis/M +dicer/M +dicey +dichotomy/qQS-8M +dicier +dickey/SM +dictatorial/P +dictionary/MS +did/AecU +diesel-electric +diet/MGSRD +dietetics/M +different/IY +diffraction/SM +digestifs +dignify/DSG +dike/SMGD +dilapidation/M +diligent/YP +dilly-dally/GDS +dilogarithm +diluter +dim/rSRPYDTG +dint/MGSD +Dionysus +dipole/SM +dipsomaniac/SM +Dirac +directory/MS +disaggregate +disband/L +disbar/L +discerning/U +disciplinarian/SM +disconcert/k +disconnect +discordance/MS +discorporate/D +discovered/U +discoverer/S +discreetness/S +discriminator/MS +discussant/SM +discusser/M +disguised/U +dismal/Y +dismantle/L +disperse/LXVubNvDhRGS +disruption/SM +dissection +disseminate/DSNnG +dissident/MS +dissuade/VDGS +distal/Y +distance/MGDS +distinguished/U +distress/GkD6 +distributed/U +distributivity +disturb/DRkGS +disuse/M +diuretic/S +diverge/DGS +divine/YTNDSGnR +divisor/MS +divulge/DGS +Dixie +djellaba/S +DJs +Doberman +doctrine/oMS +docudrama/S +documentary/MS +documented/U +DOD +dodecahedral +dodecahedron/M +dog/DSMiGZh +dog-star +dolerite +doltishness/S +domesticity/SM +dominant/KY +dominatrices +Donald/M +donate/DSG +done/fUeAcF +doodlebug/MS +dooper +doorbell/SM +do-or-die +doornail/M +doorstep/DSGM +door-to-door +dooryard/SM +doppelgnger +dory/MS +dosage/MS +dosimeter/MS +doth +double-breasted +double-headed +doubles's +Douglas +down/MGZRSD +downcast +downdraught/M +Downey +dowse/SDRG +doxology/SM +drachma/SM +draconian +draftee/SMD +dragging/Y +drawbridge/MS +drawing/M +drawl/SGDk +drawstring/SM +dreadfulness/S +dream/SM2GpZDRzk +dreamlike +dream-world/S +drill/SGDRM +drop/DRMJGS +drop-out/SM +dropping/M +drops/Zw +drop-shot/MS +Drottningholm/M +drowner/M +drowse/ZGSD +dryness/SM +dualism/MS +Dubai/M +Dubrovnik +dukedom/MS +duly/U +dumpling/MS +dung-beetle +dunker/M +dunno/M +Dushanbe/M +duty-bound +eagerest +eagerness/cM +eagernesses +eagle/MSGD +eardrum/MS +earn/GRSTDJ +earned/U +earring/SM +earthed/U +earthenware/MS +earthworm/SM +easer/M +easiness/SM +Easter/Y +Eastland +eat/ScG +eating/M +eccentricity/SM +eclipse/SGMDW +Ecole +ecumenicism/SM +Eden/M +Edgewater +edible/PS +edit/A7dNS +editorialist +edits/F +Edmund +education/FSMo +educator/MS +eerily +effervescence/SM +efficient/IF +effluent/SM +egad +Egbert +eggbeater/SM +eggnog/MS +egress/DMSG +eighty-one +eighty-second/S +Eisenhower +ejaculation/M +elasticated +elastomer/M +elbow/GSDM +elderberry/SM +electrochemical/Y +electrocute/SDG +electrodynamics/M +electroencephalography/MS +electromechanical +elevator/SM +elfin/S +Elias +eligible/SYI +elitism/MS +ell/SM +ellipsometry +Elmer +else/M +eluate/SM +Emacs/M +emancipate/DSNnGy +embargo/MGD +embark/EGSAD +embarrassed/U +embeddable +embellish/DSGL +embitter/LdS +embracive +emend/7nGDS +emeritus +emetic/S +e.m.f. +emigration/M +emit/RXSNDG +empathetical +emphasize/CRGDS +emphysematous +employable/US +empty-headed +enacts/A +enchanter/MS +enclave/MS +encryption/MS +end/SRpMDJG +ending/U +endnote/SM +endogamous +endomorphism/SM +endoplasmic +endurably/U +endurance/SM +enema/MS +enervate/GDnVSN +enervation/M +enfilade/SMGD +enforces/A +Engel/S +engrave/GRDJS +enjoin/SDG +enlightening/U +enlist/AGDS +enlister/M +enlistments +Enoch +enquire/GZSDRk +enrage/DSG +Enron +ensemble/MS +entertain/GRLSkD +enthrone/DLGS +enthuse/SDG +entourage/MS +entrainer/M +entrap/LGSD +entrepreneur/MS +entwine/SDG +enumeration/M +enureses +envelope/SM +eolith/W +ephedrine/SM +ephemerides +Ephraim +Epicurus +epidermal +epidermic +epidural +epigraphy/SM +episcopal/Y +epistemology/1wM +epistle/SM +equanimity/MS +equatorial/S +equilibria +equilibrium/ESM +equine/S +equity/MSI +equivalence/GDSM +Equuleus +er/ae +erect/DA +erector/MS +Erlenmeyer/M +errand/SM +erratic/S +eructation/MS +escapism/MS +espadrille/MS +Espagnol +espouse/GDRS +est/R +establishes/A +estate/SM +estimations/f +estrange/DGLS +estranger/M +etc. +eternal/PY +ethereal/PY +ethic/3MSY +ethical/UY +ethnology/3SwM +ethnomethodology +Etna +etymology/31SMw +Eucharist/MWS +euphonium/MS +Eurasia +evanescent +Evelyn +ever +everlasting/PY +evolution/3MyS +evolutionism +examinees +excellence/MZS +except/xDGS +excessive/P +excitability/SM +exclusiveness/S +excommunicate/SNnVDG +ex-communist/MS +excoriate/SGDNn +excoriation/M +excrescence/MS +excreta +excursive/PY +execration/M +execute/SVRxGD +exegetic/S +exemplary/P +exeunt +exhauster/M +exorcism/MS +exothermic/Y +exotic/PSY +expatriation/M +expectorant/S +expedite/RSDG +expedition/SyM +expletive/SM +explication/M +explicitly/I +exploitation's +explosiveness/S +exponentiation/M +export/DRGBnMSN +exports/A +exposited +expressionism/SM +expropriator/MS +exquisiteness/S +extend/iDRVvhGNSxubX +extendibility/M +extends/c +extensiveness/SM +exterior/MYS +exterminator/SM +externalities +extirpation/M +extortion/MSR3 +extortionist +extractor/SM +extralegal/Y +extramural +extravagance/SM +exudation/M +eye/RSpMD6iG +eyelet/MdS +Ezekiel +FAA +facer/KMC +fad/rSdM +failing/M +faintness/S +fake/RSDG +fakir/SM +fallacious/PY +fallibly/I +fallow/DPSG +falsetto/MS +faluting +familial +fandango/MS +fanfold/M +farewell/MDGS +farinaceous +farm/SDRGM +fascist/WSM +fashionably/U +fastidious/YP +fastidiousness/S +fatale/3S +fatality/SM +fate/jS6DM +father/dpSYM +fatherly/P +Faulkner +fauna/SM +Fauntleroy +favouring/SMY +favouritism/MS +fealty/SM +feast/RDMGS +feather/drpSZM +feather-bed/GD +feather-brain/MD +feather-stitch +febrile +Feds +feedstuffs +Felder +Feldman +feline/YS +female/PSM +ferro +ferry/SGmWDM +fertility/ISM +fervency/SM +fester/IS +festered +feverishness/S +fianc/SM +fibrefill/S +fibreglass/M +fibular +fielded +fielding +fiend/MS +Fifa/M +fife/RSDMG +fifteen/SHM +fifty-two +fighting/IS +figural +Fijian/SM +file's +filing/S +fillet/SdM +filter/7SrndMN +filtrate's +final/Q83q-S +finance's +finites +Finley/M +Finn/MS +fired/U +fire-walking +firmware/SM +firth/MS +fishtail/DMSG +Fitchburg +fitfulness/S +fitments +fittingly/U +flames/I +flamingo/SM +flanker/SM +flannelette/MS +flash/MDRZS2GzJ +flat-footed/Y +flatland/S +flatten/Srd +flatulent/Y +flavouring/M +flaxseed/M +fleetingness/S +fletcher/M +flex/SGDMb +fliest +flinch/DSG +flirtatious/PY +floating-point +floozy/SM +floppy/TSPM +flossy/TS +flouncing/M +flourish/SDkG +flourisher/M +flowchart/GS +flue/SM +flue-cured +fluff/DMZSG2 +flummox/DSG +flunky/SM +fluorescence/SM +fluorescent/S +flurry/GSDM +fly-drive +flypaper/M +flypast/M +fob/DSMG +foetidness +Foley/M +foliaceous +folk/SM +follicular +Folstone/M +foolishness/S +footrest/MS +forayer/M +forbearance/MS +forbearer/M +forbid/GS +forcible/YP +fore/5m +foreboding/PM +foreclose/SGD +forecourt/SM +forefoot/M +foreground/GMSD +foreleg/SM +forelimb/SM +forepaws +foreshadow/GSD +foreshore/SM +forestland/S +forestry/SM +forgather/dS +forgetful/P +forgivably/U +forgone +forklift/GDMS +formatted/U +formless/PY +fornicate/SNDGn +fornication/M +forsythia/MS +fortification/MS +fortnightly/S +Fortran/M +foulness/S +fowl/DMGS +fowling/M +foxing/M +fracas/SM +fractal/SM +fractions/IA +fractiousness/S +framework/SM +franchise's +franchisor/SM +Francine/M +Franois +frank/PYSDTG +Frankish +Frank's +franticly +frap/GSD +Frau +fray/CDGS +Fredrickson +freebie/SM +freelance/SDRGM +freestyle/SM +freeze/RSG +French/m5M +fresher/AMS +fretful/P +fretfulness/S +Friday/SM +fridge/SM +fried/A +friendless/P +fringe's +fritter/dS +frizzle/DGS +front/FDGS +frontage/SM +frontispiece/MS +frontrunner/MS +frostbitten +froze/AU +fruiterer/M +fruitfulness/U +fruitlessness/S +frustrate/hNDSknG +fryer/SM +FSA +fuddle/GDS +Fuji +Fulham/M +full-blooded +full-frontal +fullish +full-time +fumarole/S +fumigator/MS +fun/Mz2Z +fungous +furiouser +furlong/MS +furnished/UA +fusee/MS +fusibility/SM +futurism/MS +gable/SDGM +Gabon/M +gadolinium/M +gaff/RMSGD +gagwriter/S +Galapagos +Galen's +gallantly/U +gallantry/SM +gallimaufry/MS +Gallipoli +galosh/S +gambit/MS +gamble/RDSG +game/JYPTSMGRZD +gamesmanship/MS +gamut/SM +gangplank/SM +gardenia/SM +gardening/M +Garfield/M +Garibaldi/M +garrison/dSM +garrulous/PY +Garth/M +Garvey +gasbag/SM +gash/DMGTS +gateau/SM +gatecrash/DRSG +gatepost/MS +gathers/A +gaudiness/S +Gauguin +Gaulle/M +gauziness/S +gave +gazette/DGMS +gazpacho/SM +GCSE/MS +generalissimo/SM +geniality/FSM +genii/M +genomic +genteelism +genteelness/S +gentle/5PYmTGD +geode/SM +geometry/SM +Georgia/M +Gerhard +germicide/MS +gesticulate/VDNSGnv +gesticulation/M +gestural +Gettysburg +ghastliness/S +ghetto/QSDGM +ghoul/MS +Gibson/M +Giddings +gigahertz/M +giggly/T +gillie/SM +Gillingham +Giraud +Giusto +glaciation/M +Gladstone/M +glass-blowing/MS +Glaswegian/S +glazier/SM +glee/jSM6 +glen/MS +Glenn +glimmering/M +glimpse/MGRDS +glisten/Sd +glitter/dSZkJ +globalisation +globalization +globetrotter/MS +glossolalia/SM +glottal +Gloucester/M +glove/SRGDMp +glum/TYP +gluttonous/Y +glycerol/SM +glycol/SM +goal-kick/S +gobble/RDGS +goblin/SM +god/SMYp +god-daughter/MS +Gdel/M +Godfrey/M +Godzilla/M +go-kart +goldfinch/SM +Goleta/M +golly/S +Gonzales +gooder/S +Goodyear +gorger/EM +gorilla/SM +Gorky +go-slow +gospel/SM +gossip/dSM +Gould/M +gourmand/SM +gourmet/SM +govern/GaSD +governmental/Y +Gower/M +GPO +gracefully/U +gracefulness/SE +graft/SMRGD +Graham/M +grammatical/PY +grandeur/SM +grandfather/MdSY +grandma/SM +grandness/S +grandparent/SM +granular/Y +grapeshot/M +gratifying/U +grating/M +gravedigger/SM +gravimeter/SWM +greaseproof +grebe/SM +green/TPMGYDS +green-eyed +greenish +Greenland/M +greenstick +greenwood/SM +gremlin/MS +greyer +griddle/DGSM +grille/SM +griller/M +griseofulvin +groan/MGRDS +gross/YSDTPG +groundsheet/M +ground-squirrel +group/SMRJGD +groupie/SM +grouse/RGSDM +grown/ceIA +grunion/SM +G-suit +Guadeloupe/M +guidebook/MS +guider/aM +guiders +Guillaume +guilt/ZS2zMp +gummy/TP +gumtree/MS +gunpowder/MS +Gutenberg +guy/RSMDG +Guyanese +guzzle/DRGS +Gwen +gypped +gypster/S +gyrfalcon/MS +h/E +habitual/YP +hackney/SDM +Haddad/M +Hadrian +Hagar +Hagen/M +Haifa +hairbrush/SM +haircloth/SM +hairdresser/SM +hair-dryer/S +hairy/TP +hajji/SM +half-back/SM +half-beak +half-blue/S +half-caste/S +half-heartedness/S +half-inch +half-length +half-step +half-time/S +half-track +hallucinogen/SWM +halon/M +Hambleton +Hamburg/M +hamlet/MS +hammer/dpr +hamstrung +handcuff/DSG +handing/c +handle/RMGDS +handled/a +handmade +hand-to-hand +hand-to-mouth +hang-glide/RG +hangs/cA +hangup/S +Hanukkah +haphazard/PY +happening/M +harbour/pRGSDM +harbourmaster's +hardcore +hardtop/SM +hark/GSD +harlot/ySM +harmed/U +harmoniously/E +harrumph/DGS +harry/RDSG +hart/SM +hasp/GSMD +hastiness/S +hatching/M +hatstands +hauler's +haunt/kDRJGS +hauteur +Havant +haver/S +hayloft/MS +hazard/DGSM +headedness/S +headlong +headnote +head-on +headpiece/SM +headwind/SM +headword/SM +healthful/P +hearer's/c +heartbreak/SkGM +hearth/MS +heathen/SM +heaven-sent +heaviness/S +heavy/TPSY +he'd +hedgerow/MS +heedless/YP +heftiness/S +height/MS +helical/Y +helices/M +Helmut +helot/S +help/RSjpD6JG +helter-skelter +hemlock/SM +heparin/MS +heptagon/MS +heretical +hereunder +Heriot-Watt +hermaphrodite/SMW +hermetical +hermitian +Herod/M +Hewlett/M +hexer/M +hgt +hiatus/SM +hibernate/GSnDN +Hibernian +Hick +hieing +hieratic +high/STPY +highbrow/MS +high-handedness/S +high-income +highish +high-octane +high-powered +high-spirited +high-street +hijack/GRSDJ +Hildebrand/M +Hillcrest +hindquarters +Hinsdale +hippopotamus/MS +Hiram +histamine/MS +histochemistry/M +Hitachi +hit-and-miss +hit-and-run +hither +hitherto-unseen +HMSO +ho/MRYD +Hobbes +hobby/3MS +hockey/SM +hocus +hoes/F +Hoffman +Hogg +holey +holly/MS +Holyoke +home/RpYGzDMS +home-brew/SDM +home-building +Homerton +home-shopper +homogeneity/ISM +homophobic +honestest +honourable/MS +Honshu/M +hoof/MDGS +hook-nosed +hookworm/SM +hopples +Hornblower +horner +hornlike +horology/W3wSM +horseback +horse-doctor +horsehair/SM +horsewhip/GDSM +Horton +hot-blooded +hotbox/SM +hotchpotch/M +hotheaded/P +hot-tempered +hour/MYS +hourglass/SM +hourly/S +household/RSM +house-mother/SM +house-parent/SM +house-train/D +hove +howbeit +howdah/SM +Hoyle +huge/PTY +Hughes +hull/SRGMD +humankind/M +humanness/S +Humber +Humberside +humidify/CnGNRDS +humidity/SM +humongous +humourer/S +Hurley/M +hurling/M +husk/RzZSMD2G +husky/TSP +Hussain/M +Hutu +hybrid/q-MQ8S +hydration/CMS +hydrofoil/MS +hydrogenated/C +hydrophone/MS +hymnography +hyper/S +hyperactive/S +hyperaemia/M +hyperaesthetic +hypercube/SM +hypergamy/M +hyperplasia/M +hyperventilation/M +hyphenation/M +hypo-allergenic +hypochondria/SM +hypodermic/S +Hz +ibuprofen/S +ice-cold +Iceni +icing/M +ideogram/SM +ideologue/S +idiosyncratic/Y +idiot/1SMW +Iestyn +igniter/M +ignominy/SM +Ike/M +ileum/M +ilk +ill-fitting +ill-founded +ill-gotten +illicitness/S +illiquid +ill-judged +ill-mannered +ill-suited +ill-treat/D +ill-treatment +illusion/ES +illusion's +illustrated/U +imaginableness +imaginativeness's +imagined/U +immature/P +immediacy/SM +immemorial +imp/DSGM +impartation/M +impassible/Y +impeded/U +imperfect/gVP +imperiousness/S +imperishable/PY +impermanent +impersonal +impersonality +impetuousity +implement's +implicitness/S +importance/SM +importunate/PSY +impose/ASDG +imposition +impotence/MSZ +imprecate/GNDSn +impressionable/P +impressionist/W +impromptu/S +improved/U +inadmissible +inadvertence/SM +inaneness +inappeasable +inapt/P +inaugural/S +incant/NnG +incarcerate/DNnSG +inceptor/M +inchoate/GDS +incidence/MFS +incinerator/SM +incipient/Y +incline/EDNSnG +incondensable +incongruousness/S +incontestable/Y +incrimination/M +incubator/SM +index/RD7GnM +indicate/NVnSGvD +indolence/SM +Indonesia/M +induce/nRuDLGVSNbv +inductive/P +indulge/cGDS +industrialism/SM +Indy/S +ineducable +ineffability/MS +inertia/oMS +inexplicitness +inexpressibility/M +inextricable/Y +infective +infighting/M +infiltrate/V +infinitive/MS +inflexion/SM +inflicter/M +informative/UY +informativeness/S +infusible/P +ingression/M +inheritrix/MS +inhumane +iniquitous/PY +injure/RDGSZ +inkblot/MS +inkstand/SM +inlier/M +in-line +inmost +innards +innersole/S +innervation/M +inoculation/A +inopportune/P +input/SGM +inroad/SM +inscrutableness/S +insecure +insentience/S +inseparable/PS +in-service +insofar +instantiated/U +instantiation/M +instinct/vVMS +instinctual +institute/DxRGSV +instituting/A +instrumentation/M +insufferable/Y +insulation/M +insure/DRSG +insurgency/SM +intemperateness/S +intent/PY +intentness/S +intercaste +interconnection/SM +interdependent/Y +interdisciplinary +interestingness/M +interfacer +interfile/SDG +interglacial +interleaver/SM +interline/SDGJ +interlope/SDRG +internationality/M +Internet/M +interpolatable +interpolate/DNnSVG +interprocessor +interracial +intersection/SM +intertask +intervene/SDG +intimate/DYPGNSn +intimater/M +intimation/M +intracity +intrametropolitan +intrapulmonary +intuited +intuitiveness/S +invalidism/MS +inveigle/RSGD +invention/AMS +invested/A +invigilate/DG +invulnerable/P +inward/YP +iodise/GDS +iodize/GDS +IPA +Iqaluit +Iranian/SM +ire/6SDMG +iridescence/MS +Irish/m5 +ironside/SM +ironstone/SM +ironware/SM +irredentist/M +irrefutable/Y +irretrievable/Y +irrigation/M +irritable/PY +irruption/MS +isinglass/SM +isolated/K +isoperimetrical +isotonic +ISP +ispell/M +issuant +it/M4SU +itinerary/SM +ITU +Ives +ivy/DMS +jackass/SM +jackhammered +jackhammer's +Jackie +Jacob/S +jalapeo/S +jamb/GMDS +Jamestown/M +Janis +jauntiness/S +jaywalk/GDSRJ +Jazeera +jazzmen +Jeanne +jello's +jellying/M +Jethro +jet-lag/D +Jezebel/S +jg/M +jig/DRSGM +jigger/dZ +jimmying +jinn/MS +Joanna +jocularity/MS +joggle/DGS +jointer/M +jollity/SM +Jonas +Jordan/M +Joseph +journey/RmSMDJG +Juan +jubilation/M +judger/M +judiciousness/IS +judo/MS +Juliet/M +jumble/GDS +Jung/M +junk/MDRZGS +junky/TS +jurisdictional +jute/MS +juxtapose/SDXGN +kabuki/MS +kaddish/S +kale/MS +Kampala/M +Kandahar +Kansai +Kant +kaolin/WQ8M +karaoke +Kate/M +Kathleen +Kaunda +Kawasaki +Kazakh +kc/M +Keating +keeler +keen/TGDPY +keenness/S +keep-fit +keg/SGMD +Keighley +Keller +Kennet +keno's +Kentucky +Kenya/M +kerbside +Kershaw +key/DSGM +keypunch/GRDS +Khalid +Khoisan +kibble/DSGM +Kidd +kill/SRkJ7GD +killdeer/SM +kilohm/M +kilolitre/SM +kilometre/SM +kimono/SM +kind/PSTY +kindest/U +kind-hearted/YP +kindle/DSAG +kindred +kingly/TP +Kinross/M +kiosk/MS +Kipling/M +Kirchner/M +kittenish/YP +kiwifruit/S +kl +Kleenex +Klingon +kludge/RGSDM +knapsack/MS +knavery/SM +knee/GdMS +knee-deep +Knesset +knew +knightliness/S +knish/SM +knitwear/M +knives/M +knocking-shop +knower/M +Knox +Knutson +Kobayashi +Kohler +kopeck/MS +Kovacs +kph +Krakow +Krause +krona/M +Kropotkin +Kruse/M +KS +Kubrick +Kurdish +labial/S +labouring/M +lacer/MV +lachrymal/S +lacing/M +lackey/MDGS +lacklustre +lacquer/SrdM +Ladbrokes +ladybird/SM +ladylike/U +ladylove/MS +lag/SrDJG +laird/SM +laissez +lakeside +lamasery/SM +lambda/MS +lambent/Y +lambskin/MS +lambswool +lamentable/P +Lamont +lamprey/SM +Lana/M +Lanarkshire/M +landlord/SM +landlubber/MS +landmine +lane/SM +languor/SM +Lanka/M +lankness/S +lap/DScGM +lapin/MS +largeness/S +largesse +largo/S +lascivious/YP +latest/S +lath/SDRyGM +lathe/SM +Lathrop +Latino +latitude/MS +latter/YM +Lattimer +laud/SlDG7 +laugh/7RSlGkDJ +laughing/M +laureate/S +lawgiving/M +lawn/MS +lay/CRGS +layperson/S +laywomen +leadership/MS +lead-free +leafhopper/M +leak/DZS2GM +leaker/M +leaky/TP +lean-burn +leapfrog/MSGD +leash's +least/S +leaves/M +lecture/RGDSM +LED's +Leeds +Leeuwenhoek/M +leeward/S +left-footed +legend/MS +legislature/MS +legit +legitimacy/ISM +legitimisation +legume/SM +leguminous +lei/SM +Leipzig/M +leisurely/P +lemon/MS +lend/SRG +Leon +Leone/M +Leonid/M +lest +Lethe/M +letterhead/MS +letup/SM +leukocyte/MS +Levant +lewd/TPY +Liana +lib/DGSnM +Libyan/S +licensee/SM +lichenous +lick/JDSG +licker/M +Liebfraumilch +lie-in/S +lieu/M +life-giving +lifelessness/S +ligate/NnDSG +light-hearted/PY +lightning/DMS +lights/CA +lightweight/S +lignum +likeableness/S +likeness/MS +lilac/MS +lilt/SGDMk +lily-white +Limavady/M +Limburger +limekiln/M +limitedly/U +limitlessness/S +limp/STGDPY +limpidness/S +limy/T +Lindsey/M +Lindstrom/M +lingoes +linter's +lionize/D +lippy/T +lip-read/GSJ +liquidator/MS +liquorice/SM +lire +lissome/P +listless/PY +Liszt +lit/R +literateness +lithesome +lithosphere/WSM +Littleton +liverish +llano/MS +Llewellyn +load/RSDGMJ7 +loadstone's +loam/ZSM +lobar +locatable/A +locution/SM +lodge/LRSDGJM +loft/SDz2GMZ +loiter/dSr +Lola +Lombardy/M +lonesome/PSY +long-drawn +long-life +long-suffering/Y +longwise +look/eSc +looked/Uc +looker/SM +loosing's +loot/RSDGM +Lopez +loquacious/PY +loquacity/MS +lottery/SM +lotus/SM +louden/d +loudspeaking +lovableness/S +love-bird/MS +love-child +low/DGSTYP +lowlife/MS +low-profile +loyalist +LPG +LSD +lubricity/MS +Lucas +Lucerne +Lucian +luckiness/SM +lucrative/P +lucubration/M +lumber/rdSM +lumberjack/MS +lumper/M +lumpy/PT +lunar/S +lunch/SDMG +lurex +lurk/RGDS +Lusitania +lutanist/SM +Lutz +luxe/C +Luxembourgian +luxuriance/SM +lyric/3S +Macau +MacDraw/M +Mach +mackerel/SM +macrocosm/SM +Mafiosi +maggot/MS +magnesia/SM +magnesite/M +magnetics/M +magnificence/SM +magnum/MS +Magnuson/M +Mahayanist +maiden/YSM +maidenhair/MS +maidenhood/MS +mainline/RSGD +mainly +maintain/RBSDG +maintop/SM +majordomo/S +make-up/SM +maladapt/VD +malcontent/M +Maldives/M +malefactor/SM +maleficent +Malibu/M +malignancy/SM +mall/SM +malpractice/MS +mammy/M +Mamoutzu/M +manageableness +mananas +manatee/SM +Manchurian/S +Manfred +mangle/GDS +mangler/M +mangrove/MS +Mani +maniacal/Y +manicure/3DSMG +mannequin/SM +manner/Y +mannerliness/U +manning/c +manoeuvred/e +manse/XNMS +manservant/M +mansion/M +mapmaker/S +mapped/U +mar/DGZ +Mardi +Margo/M +maria/M +Mariana/S +Marianas/M +Marie/M +marinara/SM +marine/RSN +Marion +maritime +Markham/M +Marlene/M +marlin/SM +marmot/SM +Marquette +Marylanders +mask/JRDMSG +masochist/SWM1 +Massachusetts +massif/SM +mast/DRSMG +master-stroke/MS +masticate/DGS +Mata-Utu/M +matches/A +maternity/SM +maths +Matlab +matrices +Mattie +Maude +maul/DRSG +Mauritian/S +maxi/S +maxim/qQs89Mo-S +Maya +Mayer/M +mayn't +MB +McGee/M +McGrath/M +meatloaf +mechanic/SMY +medallion/MS +meddle/RSDG +Medfield +medicate/SGD +medicinal/S +meekness/S +Meier/M +Mekong +Melbourn +Meldrew +melioration/M +mellifluousness/S +Mellon +mellow/GYTPSD +melodious/U +melodrama/WSM1 +melt/DkSG +meltdown/S +memorially/I +memorization/M +memoryless +mnage +Mendoza +menhaden/M +meninx +menstruate/SGnND +mensurableness +mention/7SRDG +mentor/MS +menu/MS +mercenary/PMS +merciless/PY +mercurialness +Mercurochrome +mere/TYS +meretricious/PY +merit/CdMS +meritocrats +Merriam +Merrimac +merriness/S +merry-go-round/S +mesa/MS +mescaline/SM +mesh's +mess/SM +Messiaen +messieurs's +messy/TP +met/dr +metalliferous +metalloid/M +metalwork/RGJMS +metamathematical +metastasis/dMSQ +metatheses +metathesizing +meteoritic/S +methodologists +Methuen/M +methylene/M +meticulousness/S +metric/MNSn +metronome/SM +mewl/DSG +mezzo-soprano +mfg +mica/MS +Michaelangelo +Michel/M +Michelle/M +mickey/SM +microbiology/w3SM +microbrewery/S +microelectronics/M +microfibre/S +microgramme/S +microhydrodynamics +Micronesian/S +microsomal +microwave/G7DSM +mid/Z +midden/SM +mid-evening +Midlothian/M +mid-morning +midriff/SM +Midwesterner/S +migrate/INS4DnG +Miguel +mike/DMGS +Milanese +militant/YPS +milksop/SM +milkweed/MS +milliard/SM +millidegree/S +millwright/SM +Milo +Milton/W +minded/A +mines/f +Ming +ministrant/S +mink/MS +Minneapolis +Minoan +minstrels/Z +mint/DGSMRZ +misaddress +misadventure +misapprehend +miscellaneousness +miscellany/SM +misconfiguration +misdeed +miserable/P +misfit +missionary/MS +misspell +mistake/M +misted/C +mite/MS +mitoses +mitre/DGMS +mm +Mme +Mo +mobilise/CnGADS +mob's +mobster/MS +mockingbird/SM +moderating +modernised/U +modest/TZY +modi +modular/Q-Y8q +modus +Mohammedan +molarity/SM +molar's +molasses/M +Moldavia +molluscan +Molotov +molten +momentum/MS +Mona/M +moneyer's +moneymaking/M +Monfort +mongolism/SM +mongrel/MS +moniker/SM +monitored/U +monitory/S +monologist/S +monophthongs +monoplane/SM +monotonicity +monotony/SM +monoxide/MS +Monroe +Monsignor +monstrance/SM +monstrance's/A +month/MSY +Montrose +moody/TP +mop/dSGrMD +morality/SMI +morass/MS +Moravian +Morehouse +morel/MS +Morley/M +morphine/SM +morsel/SM +mortise/DGSM +Moseley/M +Moses +moth/RSM +mothball/DMGS +motherer/S +motivator/S +motley +motorcar/SM +motto/M +mourn/6jJDRGS +mouse/DRGMSZ +mouthpiece/SM +moveability +mowing/M +mown +Mox +mudguard/MS +Muhammed +muleteer/SM +Mulligan/SM +Mullins +multicast +multicomputer/MS +multi-coupler +multinational/SY +multipoint +multiprocessor/SM +multiprogramming/M +multivariate +murderess/S +murderous/YP +Murdock/M +Murial/M +Murmansk/M +murmur/dMSr +Murray/M +mus/dSw1k +musculature/SM +musette/MS +musketry/SM +muslin/MS +must've +mutagen/MS +Mutsuhito/M +mutt/SM +mutton/MS +Muzak +muzzle-loaded +muzzle-loading +muzzler/M +Mycenae/M +mycology/3SM +mysterious/PY +mystifier/M +mythographer/SM +nab/GSD +nacreous +Nadia/M +Nadine/M +nave/Y +navety/S +name-drop/DGSR +nameplate/SM +Nannette/M +nanosecond/SM +Nantwich +nappy/MS +Nara/M +narcissism/MS +narcissist/SWM +narcissus/M +narration/M +nascent/A +NASDAQ +Nashua/M +natalist +Nathaniel/M +naturist +naughty/PTS +nausea/MS +nauseous/P +nauseousness/S +Navaho/M +navel/SM +navy/MS +Nb +neaptide +near/YDTGPS +Nebraska/M +nebulosity +necessitate/DNnSG +necking/M +necrophilia/M +nectar/MS +needfulness +neigh/SGDM +neighbour/DYSGM +Nellie/M +Nelly/M +nematic +Nemesis/M +nephritides +nerd/SZ +Netherlands/M +neuralgic +neuropsychiatric +neuroses +neutron/MS +newcomer/MS +newest +Newport/M +newspaper/mdS5M +newt/SM +next-door +niceness/S +Nichol/SM +nickel/SGMD +Nicosia/M +Nielsen/M +nighters/c +nightingale/SM +Nikolai/M +Nile/SM +ninety-six/H +nitrogen/M +nitroglycerine +Niue/M +nix +NLRB +noggin/SM +noiselessness/S +noise-maker/SM +Nokia/M +Noland/M +nonagenarian/MS +non-alcoholic/S +non-believer/MS +non-combatant/MS +non-commercial/S +non-competitive +non-content +non-contiguous +non-continuous +non-contributing +non-corroding/S +non-denominational/Y +non-disciplinary +non-flammable +non-hazardous +non-interventionist +non-local +non-magical +non-native/S +non-objective +non-radioactive +non-rigid +non-rural +non-seasonal +non-secular +non-sexual +non-spiritual/S +non-supervisory +non-transparent +non-trivial +non-violence/S +noodle/SM +nope +nor +Norfolk/M +normalized/A +Northampton/M +north-East/M +north-western +Norwalk/M +Norwegian/S +nose-cone/S +notability/SM +notary/SM +notate/xDSVG +notebook/MS +notice/DMSGl +notification/M +nourish/DGLS +novae +Novocain +nowadays +no-win +Nubian/M +nudes/C +nudity/SM +nullification/M +numb/RkTYDPGS +numeration/MS +numerator/SM +numeric/SY +numerologist/S +numskull/SM +Nunez/M +nunnery/SM +Nuremberg/M +nutation/M +Nuuk/M +Nyasa/M +nymph/SM +Nyssa/M +OAS +obese +obesity/SM +objectionable/U +oblateness +obliger/M +obsequious/Y +obsequiousness/S +observant/YU +obsessiveness/S +obtainable/U +obtrude/VvuGNSDX +obtuse/TY +obviousness/S +O'Casey +occlude/SVXNDG +occlusion/M +occulter/M +occultism/SM +occupancy/MS +occupier/SM +oceanographer/SM +octahedral +odorousness +odyssey/S +Odyssey's +oesophagi +off-break +offcuts +offensive's +off-frequency +office/SRoM +officiator/SM +officiousness/S +offing/M +off-key +offside/S +off-the-shelf +oft +ointment/SM +OKs +oldish +Oldsmobile/M +oligopoly/SM +Olympia/M +omission/M +omnibus/MS +omnivore/SM +on/Y +Onega/M +one-horse +O'Neill +one-sided/Y +one-time +on-frequency +on-site +onslaught/SM +Ontarian/S +opal/SM +opaqueness/S +opcode's +open/rdSJY +open-ended +open-faced +operadi +operator/FMS +opinion/MS +opp +oppose/SNxXGD +optimistic/c +opt-out/S +orangeade/SM +orchestral +ordain/LSGD +order/YESdM +orderliness/ES +ordnance/SM +Oren/M +organisational +organizational/S +orientate/SDAEG +orienter +originate/SDG +orotund +Orson/M +orthogonality/M +orthogonalization/M +Orville/M +Osage/SM +Oscar/MS +oscilloscope/SM +osculate/nNDGS +OSGi +OSHA +osier/MS +Oslo/M +osprey/SM +ostentatious/YP +osteopath/WZSM +ostrich/MS +O'Sullivan/M +otherworldliness +otiose +oubliette/SM +ounce/SM +outang/S +outbid/G +outbound +outdistance +outfall +outguess +outlandish/PY +outlay/M +outmigration +outpouring/SM +outrank/G +outside/R +outwit/G +ova/yoMn +over-active +overawe +overdetermined +overenthusiastic +overfall +overfeed/G +overhead +overlay +overpopulous +over-sensitive +over-sensitivity +ow/GD +oxalate/M +oxidisation +oxidization/M +pa/Mo +Pabst/M +PAC +packable +pacts/F +Padilla/M +padlock/GDMS +paediatrician/SM +pagan/SM +pageant/SM +pageantry/MS +paginate/DSGNn +pail/S6M +painstaking/Y +pairs/I +Pakistan/M +palaeographer/SM +palatal/QS +palatial/Y +palatinate/SM +Paleocene +palliate/NVGvDnS +palpation/M +panda/SM +pander/Sd +panel/IGSD +pans/Z +panzer +paperhanger/SM +papist +paraboloidal/M +paradoxical/P +parallax/SM +paralytic/YS +paranormal/YS +parapet/SM +paraphernalia +paratyphoid/S +parboil/GSD +parcelling/M +parch/SGLD +parenteral +parolee/MS +parsimonious/Y +parsnip/SM +parterre/SM +parthenogeneses +particulate/S +partier +partridge/SM +passageway/SM +passed/Fc +passers-by +pasta/SM +paster +pastiche/MS +patchiness/S +patch's +paternoster/SM +pathetic/Y +pathfinder/MS +patience/ISM +patienter +patronizing/M +paunchy/TP +pave/ASDG +pavilion/GDMS +paving/SM +pawnbroking/S +pay-as-you-earn +payback/S +payload/MS +payment/fMSc +pay-off/MS +peacekeepers +peacemaking/M +peahen/MS +peal's +peculiar/SY +pedagogy/1SMWw +peeler/M +peer/pDG +peered/F +peeress/SM +peevers/M +pellet/dMS +pelter/M +pendant/CMS +penetrative/P +penman/M +Penn +pentagram/SM +pentasyllabic +penumbra/SM +peon/SZM +peony/MS +peperoni +peppiness/S +percale/SM +perceived/U +perceptual +percha +percipience/SM +Percy +peregrinate/DSG +peregrine/nSN +peremptoriness +perfumery/MS +pericardia +perimeter/SM +perk/DzGSZ2 +perkiness/S +permanganate +perplex/SGDh +persecute/yDSG +persiflage/MS +persister +personage/MS +personalize/CSNGn +pert/PTY +pertinacious/PY +perturbed/U +perverter/M +pessimist/MSW1 +pesto/S +Peterhouse +petrochemical/SM +pewterer +Pharisee/S +pharmacopoeia/SM +phenomenology/S1Mw +philharmonic/S +Phillips +phloem/SM +phonetic/SY +phoneticist +phosphide/M +phosphor/SWM +photoengraved +photography/SM +photosynthesis/SQdM +photosynthetic/Y +physical/S +physicality/M +physiochemical +physiotherapy/SM +phytoplankton/M +pianist/W +piano/3MS +picturesque/PY +pierce/RDSJkG +pigeon-breast/D +pilchard/MS +pile's +pilferage/MS +pincushion/MS +pioneer/SDGM +piracy/MS +piragua +pistoleers +Pittsburgh +pivotal +plaid/DMS +plaintive/P +plangent +planning/A +planoconvex +planter/SM +plasmid/S +plastering/M +plasticity/SM +platelet/SM +playful/PY +plaything/SM +pleasantry/SM +plosive/I +plum/MSZ +plumery +plural/s8Q-S9qY +ply/BDSNG +pneumatic/SY +pocket/d6MS +pod/SDMG +poet/1WSywM +poetry/SM +pointillism/SM +pointing/M +poisonous/Y +poke/yRDSGZ +Poland/M +polemics/M +police/m5DSGZM +policy-maker/S +politician/MS +politics/M +pollutant/MS +polluted/U +poltroon/SM +polyandry/SM +polyatomic +polychrome/W +polyclinic/MS +polyelectrolytes +polyglot/S +polyhedral +polymeric +polypropylene/SM +polythene/M +Ponting/M +poop/SDGM +poplin/SM +poppet/M +porridge/SM +portaged +portaging +portamento/M +Port-au-Prince/M +portent/SM +portered +portering +portrayal/SM +positional/KY +possibly/I +postdate/GDS +post-entry/S +postmaster/MS +postmen/M +post-millennialism +postoperative/Y +postpaid +post-partum +postponable +postpone/LGDS +posts/FIAe +postured +pother/dSM +pottage/SM +potterer +pounder/FM +pounders +ppr +practicabilities +practise/SGD +praetorian/S +pragmatic/YS +pragmatist/SM +praise/EDSG +praiser/S +preamp +preassign +precancerous +precipitate/YnSDPGN +prcis/dSM +precognitive +predation/MCS +predication/M +pre-echoes +pre-emphasis +prefatory +prefer/DSl7G +preform +preheat +pre-implementation +premarket +premise/DSGM +premiss/M +prepared/P +pre-preference +pre-print +prepubescent/S +presbyopia/MS +preschool +presentably/A +presented/A +preserved/U +president/MS +presort +pressurised/U +prestidigitatorial +pretentiousnesses +prettify/SDG +prettiness/S +pretty/DTSYPG +priced/U +prick/YRDGS +prickliness/S +primal +principal/SY +principle/SMD +principled/U +prions +prise's/A +Prix +probate/SANM +probation/RoyM +probationary/S +prober/M +proclamation/MS +procrastinator/MS +proctorial +procurable/U +procurer/M +prod/GDS +produce/cNDSGAn +profane/DPSGYNn +profaneness/S +profound/PYT +prognoses +program/BRGSJDM +prohibiter/M +prohibitive/P +pro-hunt/G +projector/SM +proliferation/M +prolixity/SM +prom/QMSs +Promethean +prominence/MS +promiscuous/PY +prompt/PYRJTSGD +promulgation/M +prong/DMGS +pronouncer/M +proper/IPY +property/DSM +proportionate/EYS +proprioceptive +prorogation/MS +prosaic/Y +prospect/DSuVvMG +prospector/SM +prosperity/SM +prosperous/YP +protea/SM +protectiveness/S +protest/RSMNnkDG +provability/MS +proved/AI +prowess/MS +psephologist/M +pseudonymous +pseudopod +pseudopodia +pshaw/S +psoriasis/M +psychoanalyst/S +psychopathology/M +psychophysics/M +psychosocial/Y +psychs +pterosaurs +Pu +pubescence/KS +publicity/SM +publicly +puerperal +pug/SMGD +pugilism/MS +pulper +pulpit/SM +punchbowl/M +punctualities +pup/SMNZDG +pupae +pupal +pupate/DSG +Purbeck +purchase/SARGD +purest/I +purgatorial +pushy/TP +Putney/M +putrescence/MS +putridity/M +putter/d +pylon/SM +Pyongyang/M +pyorrhoea/M +pyromania/SM +pyrotechny/Ww +q +QoS +quadrant/SM +quadrature/SM +quadrennial/YS +quadrivia +quadruplicate/DSG +qualifier/SM +quantitative/PY +quantum/qQs8M-9 +quarry/mSMGD +quarter/dY +quartz/SM +quayside/M +Quebec/RM +querulous/Y +queuer/SM +queue's +quick-witted +quieten/Sd +quieter's +quietly/E +quietude/ESMI +Quinnell/M +quirky/TP +quirt/DSMG +Quito/M +quotability/S +quote/DaSNGn +qwerty +rabbinate/MS +rabbinical +racketeer/JGMS +racy/T3PY +radices +radio/DmSGM +radioisotope/MS +radioscopy/M +radon/M +raftered +ragtime/M +rail's +railway/mSM +rain-making +rally/DSG +rampancy +random/qQ-8YP +randy/T +range/SCGD +range's +ransom/MdS +rapine/MS +rappel/GDS +rapping/M +rapture/SM +rarefaction/MS +rarefy/DGS +rateable +rationalities +rattail +rattan/SM +raze/DSG +razor/MS +Rd/M +reactionary/MS +reactivate +readership/MS +real-life +re-allocated +reanalysis +rearm/GL +rearrange/L +rearrest/G +reasoned/U +reasoning/U +reassess/LG +reawaken/d +rebel/MSGD +rebuker +recant/GNn +recast/G +recentness +receptionist +recklessness +reclassify/DNGn +reclusion/M +recollect/G +recommittal +reconnaissance/MS +recordable/U +recoup/DG +recourse +recover/gdZ7 +rectification/M +recur/DGS +recurrence/MS +redactor/MS +red-blooded +redbreast/SM +red-head/MSD +Redhill +redolence/M +redoubt/l +redundant/Y +reeding/M +reeve/SGM +referee/GdMS +referencing/U +reflective/P +reflexive/I +reflexively +refrigerant/SM +refrigeration/M +refuel/DRG +Refugio/M +refusal/SM +refuse +regnant +regrade +regrettable/Y +regulars/I +Reiko/M +reimbursable +reinitialise/n +reinvent/G +reject/DRGSV +rejection/SM +reknit +related/P +relativity/SM +relaxant/MS +relaxation/M +reliable/U +reload/7G +remarkable/U +remarriage +remedial +remiss/PV +remonstration/M +Remy/M +renegue +repaint/G +repartee/SM +repeated/U +repertory/SM +repetitiveness +replenishment/S +replete/NP +reply-paid +reproachable/I +reprocess/G7 +reproducibility's +reprove/k +repulse/Vuv +requisitioner/M +reread/7G +re-route/GSD +rescue/RSGD +researched/U +reselect/7 +resilience/MZ +resist/bSvDVG +respond/FGDS +rsum/S +resurgent +resuscitate/nSVGDN +retain/RSDG +reteach/G +retinitis +retro +revenge/D6jSMG +reverend/SM +reverter/M +revivalism/MS +revivalist +revolutionist +reward/k +rewarm/G +Reykjavik/M +Reyna/M +Reynaldo/M +Rheims/M +rheumy/T +Rhineland/M +rhino/SM +Rhys/M +ribboned +Rica/M +rice/SM +Rickey/M +ricochet/dGDS +rides/c +rift/DMGS +right-hand/iD +Rigoletto/M +rigorous/Y +rile/DSG +riot/DRMGSJ +rip-off/S +ritualistic/Y +Rivera/M +riverboat/S +rives/C +roadmap +roadrunner/SM +roadside/S +roadway/SM +Robbie/M +Robbins +Robby/M +Rockaway/M +Rogers +Rojas/M +Rolfe/M +Romanian/MS +romanize/SGnND +romanticism/MS +Ronald/M +rondo/SM +roof-garden +roost/SMRDG +rootlessness +Rorke/M +Rorschach +Rory/M +Rosario/M +Roscommon/M +Roseau/M +Rosenberg/M +rose-tinted +rosy/PYT +rotatable +rotator/MS +Roth/M +rotten/Y +rouge/SGDM +rounded/P +roundhouse/SM +Rowe/M +Rowland/M +Roy/M +royalty/SM +rt +rub/SRGD +rubati +ruck/M +ruefulness +ruin/dMNSn +rummage/GDS +rump/MYS +runabout/MS +run-in/S +runnel/SM +Runnymede/M +run-off/MS +run-out/S +runtime +Rupert/M +rut/SGMZD +rutty/T +Rwandan/S +Ryan/M +sable/MS +sabot +sac/DG +sacrilegious/Y +sageness +sailboard/SG +sailing-boat/SM +saintlike +salaam/M +saleroom/MS +salesmanship +salespeople/M +salesperson/SM +salience/ZM +Salk/M +salt's +salty/T +Salvadorian/S +salvageable +salvation/M +Salvatore/M +Samoan/S +Samoyed/M +sampling/c +Samson/M +sanctify/nGDNS +sandblast/GDSR +sandcastle/S +Sanderson/M +sandman/M +Sandoval/M +Sanford/M +sang +sanitation +sapphire/MS +saprophyte/MSW +sarcasm/MS +sardine/MS +sari/MS +sartorius +Satan/M31 +satellite/SM +satiety/MS +satin/SM +Sato +saturated/U +satyr/SMW +sauerkraut/SM +savour/ZD2SGM +scaler/SM +scaliness +scandal/SMQ8 +scandium/M +scapegrace/MS +scar/dDSGM +scarab/SM +Scarlett/M +scary/TY +scathe/GkD +scenario/MS +scent/CMDGS +scherzi +Schiller/M +schizo/S +schizoid/S +schoolboy/SM +schoolgirlish +school-inspector +schoolroom/MS +Schweppes/M +Scientology/M +Scilly/M +scintillate/SDG +sclerotic +scoreboard/MS +scrapbook/MS +script/SKMF +scripted/FU +scriptorium +scrotal +scrounge/SDGR +Scruggs/M +scrum-half +scull/DRMSG +Seabrook/M +seagoing +seam/MDGSZp +seamen/M +seashell/SM +seashore/SM +seasonable/U +seaward/S +seaworthy/U +secret/dVSYvu +secretary/MS +secretaryship/SM +sector/EMS +sectoral +secularism/MS +sedate/YVGnSND +see/RS98dG +Segovia/M +Segundo/M +seigniorage +seine/MG +seismical +selection/SoM +selectional +selective/Y +self-absorbed +self-assembly +self-assured +self-centred +self-consciousness +self-contained +self-delusion +self-effacing +self-help +self-image +self-importance +self-justification +self-loading +self-motivated +self-pollination +self-possessed +self-propagating +self-protection +self-raising +self-recording +self-righteousness +self-service +self-styled +self-winding +selvedge/MS +semeiotic/S +semicircular +semi-flexible +seminarian/MS +semi-permeable +semiprivate +Semitism/M +semitone/MS +sempiternity +senatorial +Senegal/M +senile +seor/M +sensitise/GRnDS +sensitised/C +sensitises/C +sensitiveness +sensitize/GRNnDS +sensitized/C +sensitizes/C +sensuous/Y +separable/IY +separate/B3nSGDVYN +Sepoy's +sepsis +septate +Septuagint/MS +sepulchre/SoM +seraglio/SM +serenader/M +serendipitous/Y +serge/M +serif/SDM +servant/SM +serviette/SM +servitor/SM +sesquicentennial/S +Sevastopol/M +seventy-four/H +seventy-second/S +Seville/M +sew/SAGD +sextet/SM +shabby/TY +shack/MGDS +shackler/M +shadow-boxing +shakedown +Shakespearean/S +shaking/M +shale/M +shall +shallowness +shamrock/SM +shandy/M +Shanghai's +shard/MS +shareware +Shauna/M +Shawn/M +sheep/M +Sheila/M +shelver/M +Shillong +shin/rSdDGkM +Shinto/SM +shiny/T +ship-breaker/MS +shipmen/M +shipshape +shipwright/SM +shipyard/MS +shogun/SM +shone/e +shooting-range +shoplift/DRSG +shop-worn +shorn/U +shorten/dJS +show-piece/MS +shrill/GSTPDY +shrinker/M +shrinking/Y +shriven +Shrove +Shrovetide/M +shrunk/K +shrunken +shtick/S +shuffle-board +shunt/DSG +shut/RGS +shut-down/SM +Si/M +Siberia/M +sibling/MS +Sibylline +sickle/2SGM +sickness/S +sideboard/SM +side-drum/SM +sidekick/MS +sideways +sidewinder/SM +siding/SM +Siegfried/M +sight-line +sightly/TP +sight-read/RG +signing/S +Sigrid/M +silicosis/M +Silverstein/M +silverware/MS +Silvia/M +simulative +Sindbad/M +Sindhi/M +sine/M +sinecure/MS +singsong/DMS +sinlessness +sinuous/YP +sip/RSDG +sire's +sirloin/SM +sisters-in-law +sixpence/SM +sixty-three/H +skateboard/RGMSD +skilful/Y +skilfulness +skimp/zG2ZSD +ski-run +skit/SM +slate/MS +slaughter/SdrM +slaughterhouse/SM +slave-born +slave-driver/S +sledgehammer/SM +sleeping/c +sleeps/c +slender/8QPY +slice/RMDSG +slid/r +slight/kSDTYG +slim/DRSGYT +slimline +sling/MGS +slinger +slinky/T +slipstream/MGDS +slither/dSZ +slog/SDG +slop/Gz2SDZd +slumberer/M +slush/S2DGMZ +small-scale +smarter +smear/SGDZ +smelt/RDGS +Smirnoff/M +smitten +smoke-room +smoky/T +smote +smudge/SpDGZ +Smyrna/M +snakelike +snakeroot/M +snakeskin +Snape +snappish/YP +sneerer/M +snippet/MS +snob/SMZ +snot/zS2ZM +snout/MDS +snowflake/MS +snowplough/DSMG +Snr. +snubber +sobriety/ISM +so-called +socialist/W +sociocultural/Y +soften/drS +soft-headed +softly +soldier/DYSGZM +solemn/-qQ8TY +sole's/I +solicit/dnS +solicitor/MS +solidify/DNnGS +solidity/S +Solihull/M +solitariness +solubility/MI +solve/EDRASG +sombre/Y +someone'll +somnambulism/M +sonata/SM +Sondra/M +songsmith +sonority/S +sophisticated/U +sophistication/M +sorted/UK +sough/DGS +soul-searching +soup/SMZ +source's/A +sousaphone/MS +Southampton/M +souther/YM +southerly/S +south-south-west +sou'wester +sovereign/YSM +sowed/A +Soyuz/M +spacier +spaghetti/M +sparky/T +sparse/Y +spawner/M +speciality/S +specificness +speck/MS +spectrometer/SMW +spectrometry/M +spectrum/M +speed-up/MS +speedway/SM +spell/RG7JDS +spending/f +spermatophyte/M +spermatozoa +spicebush/M +spike/DGSMZ +spillikin +spillway/SM +spinach/SM +spinal/S +spindle/SMGYD +spire/IDFSA +splat/DMGS +splendiferous/Y +Spokane/M +spongeable +spongelike +sponsor/dMS +spontaneity/SM +spoon-fed +sport/kVmGvM5ZDS2u +spot's/C +spray/ADGS +springlike +sprung/U +SPSS +spume/SMZ +spur/SMDG +sputterer +squelcher/M +squidgy/T +squireen +squirehood +squirl +Sr +stabilise/CnRGDS +stabilize/CNRnGDS +stadia +staffroom +stag/dSM +stage-manage/RD +stager/M +stagger/Skrd +stagnation/M +staircase/MS +stakeout/MS +Stalin/M +stalk/RDMGS +stallion/SM +standing/fM +Stanfield/M +Stapleton/M +stardust/M +stargaze/RSGD +starlit +star-studded +stasis/M +station/eMS +Stauffer/M +stave/GDSM +stay/ecDSG +steelyard/SM +steeplechaser +steeplejack/MS +Steinbeck/M +Stellenbosch/M +stenos +stenotype/M +Stephanie/M +sterilised/U +Stewart/M +stimulate/cGSD +stimulated/U +stint/GDMS +stipendiary +stipulation/M +stockbroker/SM +Stockhausen/M +stockholder/MS +stoical +stolen +stony/YPT +stood/f +storm/R2GpzDZSM +stormy/T +storyboard/SGMD +stow/DGS +stowage/M +Stowe/M +Strabane/M +straightforward/PY +strain/FSAD +strained/cU +strainer/AMS +strapless +strap's +stratigraphy/MwW +strawboard +Street +stress's +stretcher/dMS +strew/GDS +stricken +Strickland/M +stricture/MS +strider/M +stripling/M +striptease/RSM +striver/M +stroboscope/MSW +strong/mTY +strongbox/MS +strong-minded +structured/U +strut/DSG +'struth +strychnine/M +Stubblefield/M +stuccoes +studiedly +study/ASfDG +Stuttgart/M +style/ASGD +stylise/nSDG +stylize/nSNDG +stylus/SM +styptic/S +Styx/M +suasion/SEM +suaveness +subarctic +subconscious/YP +subheading/M +sub-lieutenant/SM +sublime/YTDnSG +subnormal +subordination/MI +subornation/M +subregional +subsequent/Y +substance/SM +sub-standard +substitute/SVBvDG +substitution/SyM +subsystem/MS +subversion/SM +subway/MS +succulent/S +succumb/GSD +suckling/M +sudden/YP +suede/M +suet/MZ +suffering/M +suffrage/3SM +sukiyaki/MS +Sulla/M +sulphide/MS +sultry/TPY +sum/8NSRMXDG +summing-up +Sumner/M +sumo/SM +Sunbelt/M +Sunday/MS +sundown/MR +sunk +sunspot/SM +superannuation/M +supercargo/M +super-dooper +superficialness +superhero/M +superhuman/Y +superintendence/Z +supernumerary/S +supervene/SDG +supplanter/M +supplement/GDNn +supplemental +suppliant/S +supplier/SM +supranational/Y +supremacy/3MS +surcease/SM +surd/M +surfacing/A +surgery/SM +surplus/MS +survivor/SM +sustainer/M +Sutherland/M +Suzann/M +SW +swallowtail/MS +swam +swanky/TP +swarthy/PT +Swazi/MS +sweatband/MS +sweetcorn +swelter/Sdk +swiftness +swine/M +swingletree/SM +switch-blade/SM +swot/S +Sybil/M +sycophant/MSW1 +sylphlike +sylph-like +sympathy/SQ9s8WM +symphony/SWM +synagogue/MS +synchronize/AnDGNS +syncopate/GDS +syndromic +synonymous/Y +syzygy/S +Szechuan/M +Taber/M +tabla/MS +tactful/U +tactician/SM +tactless/Y +tactlessness +tadpole/SM +tailback/MS +tailcoat/S +tailor-made +tailwind/SM +take-home +tale/MS +Talley/M +taloned +Tam/MZ +tameness +Tammie/M +tan/SMJDRyG +tandem/MS +tangelo/MS +tango/SGMD +Tanzania/M +tapelike +tapioca/SM +tappet/SM +tardy/TY +tarmac/DGS +Tartuffe/M +Tate/M +Tatiana/M +tattier +tattoo/RGSMD +Tatum/M +taupe/M +taxicab/MS +taxing/c +Tayside/M +Te +teach/RGSJ7 +teal/SM +teamster/SM +Tecumseh/M +tedious/YP +teen/SZ +teeny/T +Tees/M +TEFL +telecommute/SRG +teleconference/GMDS +telemarketer/S +telepathy/S1M +temperance/MI +temperate/IY +temptress/SM +tended/EU +tender/PdQ8Ys9 +tenement/SM +tenor/SM +tensioning +teratology/M +Terpsichore/M +terrorism/M +tested/U +tester/FSCM +tte--tte +tetrathlon +Tex +Texan/S +thalidomide/SM +Thayne/M +theatre/S1Mw +thenceforward +theocratic +Theodora/M +Theodosia/M +therefore +thermoluminescence/M +Thermos/MS +these/S +thesis/M +thick-skinned +thief/M +thing/M +think-tank +thirst/2SMzGDZ +thirty-one +thorny/T +thorough/YP +threadlike +three-colour +three-legged +threescore +thrift/2pSMzZ +throng/SGMD +throwing/c +Thu +thumbprint +thus +thwarter/M +thymine/M +tiara/SM +Tiberius/M +Tiburon/M +tidier/U +tidiness/U +tied/UA +tight-fitting +tightrope/MS +till/DRSG7 +timber/SdM +timbrel/SM +Timbuktu/M +timed/a +time-scale/S +timespan +timidity/SM +tin-glaze +tinpot +tintinnabulation/SM +tiptoe/DGS +tiresome/Y +Tirol/M +Titania/M +Titanic's +title's +tittle-tattle +titular/Y +TLC +toadstool/SM +toast/DGRZMS +toasty/T +toecap/MS +toenail/MS +tofu/S +toilsome/Y +tolerable/YI +tomb/SM +tong/S +tonsillectomy/SM +tonsure/SMGD +tool/AGDS +toothache/MS +toothpick/SM +tootle/DSG +Topeka/M +toper/M +topiary/S +topographer/MS +topology/w13SM +topple/GDS +topsoil/M +top-up +torpid/Y +torr +torso/SM +torte/MS +tortellini/M +Toshiba/M +Totalizator/M +totemic +Tote's +Toto/M +touchable/U +touch-and-go +touch-judge/S +touchpaper +touchwood +touchy-feely +toughen/dS +tourer/SM +tourniquet/MS +townee +toxaemia/M +trachea/M +Tracy/M +trade/Mm5GRSD +traditionally/U +trainman/M +trajectory/SM +tramp/RDGS +transact/x +transcend/SDG +transcendence/MS +transcription/M +transit/dxXuvNVy +transmit/AXGNSD +transversal/M +trapezia +trapezium/SM +trauma/Q8SW1M +traumata +travail/SDGM +traversable +tread/ASG +treasure-trove/SM +tremendousness +tremolo/MS +trendsetter +trespass/RDSG +trial/KaA +trial's/Aa +triangular/Y +Triassic +tribulation/SM +tributary/SM +trifocals +trilateral +trilobite/SM +trio/SM +triplet/SM +Tristan/M +triumphal +triune +triviality/MS +tRNA +trodden/UA +troop/RDMGS +troposphere/MW +Trotsky/M +troubadour/SM +truelove/MS +trumped-up +trumpet/rdSM +truncate/GDSnN +tryst/GDMS +tu +TUC +Tue/S +Tums/M +tumult/SM +tuna/MS +turbidity/MS +turbo +turgid/Y +Turkish +turnaround/MS +turn-off/SM +turnstone/M +turtle/MS +turtle-neck/DSM +Tuscany/M +tush +tussock/MSZ +Tutsi +twee/T +twerp/MS +twig/SMZDG +twitter/dS +two-handed +twopenny +twosome/SM +Tyndall/M +Tyne/M +typecast/G +typescript/MS +typhus/M +typographer/MS +tyrannosaur/MS +tyrannous +tzar/SM +Udall/M +ugly/T +uh +ulcer/VMS +Ulrike/M +ultraviolet +umbrella/MS +unapologetic/Y +unapparent +unappreciative +unauthentic +unaware +unbound/Di +unbreakable +unclassified +uncleanness +uncoloured +uncommunicative +unconsciousness +unction/M +unction's/I +undedicated +under +undermine/G +underpinning/M +under-represent +under-secretary/SM +underskirt +underspecification +understood/a +undervalue +undesirable +undue +unexceptionable/Y +unfailing +unfamiliar +unfix/G7D +ungainliness +ungraciousness +unhistorical +unhitch/G +uni +unify/AGNSnD +Unitarianism/M +unity/MES +unknowing +unlikeness +unlock/G +unmentionable/S +unmerciful +unmodifiable +unmoveable +unneighbourly +unpalatable +unshapely +unsightly +untaxable +unthinking/Y +unwise +upbraid/DSG +upholstery/SM +upkeep/MS +upraise/SDG +ups +upshot +upstart/MS +upsurge/S +uptake/SM +Upton/M +upwind +Urdu/M +urethane/MS +Urquhart/M +useful/Y +uselessness +Utahan/SM +utan/S +utilitarianism/MS +utility/MS +V +vacancy/SM +vagary/MS +vaingloriousness +valedictory/SM +valid/InY +validation/IMA +validator/SM +Valkyrie/SM +Vallejo +valuation's/C +vanadium/M +Vanautu/M +varlet/SM +Vasquez/M +vassal/SM +vast/PTY +VDU +veil's +vein/GMSD +Velcro/M +Velez/M +venality/SM +Venezuelan/S +ventilate/SNDGnV +ventilator/SM +ventral/Y +Vera/M +verbal/qs89QY- +verger/SM +vermilion/SM +vesicular +vesture/DSG +vet/SGMD +veteran/MS +veto/DGM +Vettori/M +vexed/Y +vibe/S +vibrant/Y +Vic/MZ +Vicksburg/M +Vicky/M +Victorian/SM +videlicet +Vieira/M +Vietnamese/M +vigilant/Y +villagey +villainous/Y +villein/SM +vim/M +vindaloo/S +vindication/M +vinegary +Vineland +violate/I +violated +violating +violoncellist/S +virility/SM +virulence/S +vis--vis +visceral +vitalise/CGASD +vitality/SM +vitalize/ANnDG +vitriol/MW +vivacious/Y +vivarium/M +viviparous +vocation/oMS +vocoded +vol. +volcanoes +Volgograd/M +Voltaire/M +voluptuousness +Volvo/M +voter/SM +vouchsafe/DSG +VT +vulture/MS +WAAC/S +Wabash/M +wafer/SM +Wagnerian +waist/MDS +waken/Sd +Walden/M +Waldorf/M +Waldron/M +Wales +walk/SRGD +walk-in +Wallace/M +Wallis/M +wallop/dS +Walsh/M +Wansbeck/M +warder/SM +wardrobe/SM +wardroom/SM +ware/MS2Z +warmness +warn/GSDkJ +warranted/U +warrantor/M +washable/S +Washburn/M +wasp-waisted +watchmaker/MS +watercolour/MS +watercourse/MS +watercress/M +waterfall/SM +waterhole/S +waterline/S +watermelon/SM +waterside/SM +watertight +waterway/MS +watery/T +wavy/T +waxwing/SM +waylay/GS +Waynesboro/M +waywardness +weak-minded +wear/eSG +weary/DkTSGY +wed/CAU +week/SMY +weekly/S +weensy +weepy/T +Weidman/M +weightiness +welfare/MS +well-fed +well-head/SM +well-kept +well-off +well-ordered +well-organised +Wellsville/M +well-to-do +well-used +welsh +Welshmen/M +Wendell/M +went/f +weren't +Wessex +Westminster/M +we've +WFF +wharf/MS +wheaten +wheelhouse/SM +wheezy/T +where're +wherewithal/M +Whiggish +while/DGS +whirlpool/MS +whirr +Whitaker/M +whiten/dSr +whitish +whizzes +wholesomeness/U +who'll +whom +whomsoever +whorish +wicket/SM +wide/TY +wide-area +widget/SM +widowhood/S +Wilhelmina/M +Willard/M +Wilma +wineskin/M +winkle/DSG +Winslow +wintertime/M +wish/RSjGD6Z +wish-list +witchery/SM +withdrawal/MS +witless/Y +witting/YU +woefulness +Wolds +wolfishness +wondrous/Y +woodlouse/M +woodpile/SM +Woodward/S +woolly/TS +Wooster +wordless/Y +workable/U +worker/SM +world-weary +wormy/T +worship/jRSG6D +would've +wrath/jM6 +wreck/GSDR +wrongdoing/MS +WY +Wyman +Wyoming +Xavier +xylophonist/S +Yale +Yamoussoukro/M +yardarm/MS +yearning/M +Yemeni +yeomen/M +Yerevan/M +yoke/UDGS +Yorkshire/M +you're +yourselves +Yugoslav/S +YWCA +z/d +Zamia +zenith/MS +zigzag/SGD +zilch +Zimbabwe/M +zing/GDM +Zoe/M +zombie/SM +zoo/SM +Zoroastrianism +zwieback/MS +AAA +aardvark/MS +Aarhus/M +Aaronvitch/M +abandoner/M +abdominal/YS +abeam +aberration/MS +abler/E +abolition/3MS +abracadabra/S +abrasiveness/S +abroad +abrogate/DNnGS +abrupt/TPY +abscission/SM +absent/YDG +absenter +abstinent/Y +abstractor/SM +abundance/MS +abyssal +academician/SM +accessibly/I +accessory/MS +acclimation/M +acclimatisation +acclimatization +accommodation/M +accompany/3SLDG +accordionist +accounting/M +accredited/U +acct +acculturate/VDSNGn +accursed/YP +accustomed/U +ace/vNSMnuV +acetylene/MS +achievement's +Achilles +acidify/NSGD +acidity/SM +acidosis/M +aconite/MS +acquirement/SM +acquisitions +acre/SM +acrid/PY +acrimonious/PY +acronym/SM +acrophobia/MS +acrostic/MS +acrylic/S +actor/S4MA +actuate/NSGnD +actuator/SM +acute/PTY +adamant/SY +adenine/M +adhesion/MS +adjacency/MS +adjudication/M +adjure/NGSDn +adjusts/A +administrator/MS +admire/NRGSDkln +admissible/Y +Adonis/M +adopt/DRS7G +adroitness/S +ads/A +ad's +adsorb/XvDNVGS +adsorption/M +adulator/SM +adulterate/GDnNS +adulteration/M +advertised/U +advisory/S +aerator/SM +aeroplane/MS +aerosol/SM +Aeschylus +aether/M +affects/E +affidavit/SM +affirm/DGVnvSN +Afghanistan/M +afield +aflutter +afore +aft +afters/M +agar/MS +agave/SM +agelessness/S +agglutination/M +agitate/DVGSNnh +agitation/M +Agnew/M +agog +agony/Q8Ss9 +agrochemical/S +ah +ahem/S +aided/U +aimless/YP +air-conditioned +air-conditioning +air-cooled +Airedale/M +airmass +airwoman +airworthy/TP +akimbo +Akron/M +alas/S +albuminous +alchemy/3SMw +Aldrich/M +ale/SM +Aleck +alembic/MS +alertness/S +Aleut +alfalfa/SM +Alfred/M +algebra/3SM +Algerian/SM +Algonquian +al-Haili +Alice/M +align/SaDGLA +aligned/U +alike/P +alkali/MS +Allan/M +allegorising +alliance/aMS +all-important +alliterate/nNVSvDG +allocable +all-out +allusion/M +almanac/MS +almshouse/MS +aloud +Alpinist/MS +already +also-ran/S +altitude/SM +alto/SM +alumnus/MS +always +Amadeus/M +amaryllis/SM +amass/GDS +amateur/MS +ambiance/SM +ambiguousness/M +ambitious/UY +ambush/RSGDM +amen/dgl7S +America/MS +Ames +amethyst/SM +Ami +amiability/SM +amicability/MS +amigo/MS +amino/M +ammonium/M +amnesia/MS +amoebae +ampersand/SM +amuse/RSkLVhDG +anaemic/Y +anaesthesiology/M3S +anagrammatic/Y +analecta +analogy/SQ8M1w +analysed/aU +analyser/S +analyst/SM +analytics's +anchoritism/M +Andean/M +Andrea/SM +Andy/M +anecdote/SMo +anemometry/M +angelica/MS +angioplasty/S +anglepoise +Anglo +animadversion/SM +animateness's +aniseikonic +Ann/M +annalist +annex/nDSG +annotate/GnNVDS +annotation/M +anoint/SDGL +anomie +anteater/SM +anther/MS +Anthony/M +anthrax/M +antic/GMDS +anticipate/NnySvVGD +anticoagulation/M +anticommunism/SM +antifundamentalist/M +anti-gravity +anti-hero/M +antiknock/SM +antilogs +antimissile/S +antipasto/MS +anti-personnel +antiphon/MSo +anti-Semitic +anti-Semitism/M +antiseptic/SY +antispasmodic/S +antisubmarine +antlered +ants +anywhere +apathetic/Y +apathy/MSW +apocalypse/WMS +apostolic +apotheosizing +appanage/M +appease/SDRLG +appetising/UY +apple/YSM +appliqu/SMG +appoint/RLSVDG +appointing/E +appreciated/U +appreciation/M +approach/BRGDS +approachable/U +appropriative +approved/U +apron/SM +apropos +aquaculture/MS +aquatic/YS +aqueous/Y +arachnid/SM +araldite +Aramaic +arbitration/M +arbitrator/MS +arcanum +archbishop/MS +archfool +archway/SM +arclike +Argonaut/SM +argumentative/PY +argy +Ariadne/M +arithmetise/SGD +arithmetize/SGD +Armagh/M +armed/UA +Armonk/M +armorial +arms/Afc +arpeggio/SM +arrest/Rk7DGS +arrowroot/MS +arson/3SM +Arte +artefactual +artery/MSo +Arthropoda +article/MSDG +articulated/EU +artiness/S +artless/YP +artwork/MS +asbestosis +ascend/RXDGSN +ascendancy/MS +ascribe/NDGXSV +Asiatech/M +asinine/Y +aspiration/M +aspire/xSDnGN +assassinate/SGD +assemblies/A +asset/SM +assisted/U +astringent/YS +astrolabe/SM +atemporal +ates +atheroscleroses +athlete/1SMW +Atkins +atlantes +attains/A +attendee/SM +attenuated/U +attributer/M +Atwood/M +augmentative/S +auntie/M +auspicious/IY +australes +Austria/M +authorises/A +authoritarianism/MS +auto +autobiography/M1SwW +autocollimator/M +autocorrelation/M +autogiro/MS +autonomy/SMW +avatar/SM +averse/PNXVY +Aves +avoidably/U +avower/M +awake/SG +awakener/M +awakens/A +aware/P +axiom/SWM1 +axon/MS +Ayckbourn/M +Aylesbury/M +azimuth/SMo +azimuthal +Aztec/M +Babylon/M +Babylonian/MS +bacillus/MS +backcloth/M +back-pedal/GD +backside/MS +backstabbing +backstretch/MS +bacterial +bactericidal +bacteriophora +bacterium/M +badmen/M +badness/S +bagful/SM +bairn/SM +Baja/M +baked/U +baklava/M +Balinese/M +balkanise/GSnD +balkanize/GSnND +balloter/M +baluster/MS +Bamako/M +bandbox/SM +bandstand/SM +bang/RMDGS +bangle/SM +banquet/rdSM +bantam/SM +baptismal +Barcelona/M +barefoot/D +baritone/MS +barium/M +barnacle/DMS +Barney/M +barns/6 +barony/MS +Barrie/M +Bartholomew/M +Bartk/M +base/mYPpLMT +baseness/S +basined +Bassett/M +bassoonist +bastardy/M +bastion/MD +bathos/MS +bathyscaphe's +bathysphere/MS +batiste/SM +batman +bats/m +batter/dZMS +battle-cry +battledore/SM +battlefront/MS +battleground/SM +Bauhaus/M +Bayard/M +Baylor/M +BBQ +BCD +beachwear/M +beacon/dSM +bead/ZSMDmJG +beam/SRGMD +beam-width +beanie/SM +beanstalk/MS +bears/c +bearskin/SM +beatification/M +beaut/MZS +BECTa +bedded +bedfellow/SM +bedlinen +bedmate/SM +beds +bedtime/SM +Beeb +Beebe/M +beef/MD2GZS +belay/DSG +belch/SGD +believability/M +believer/UMS +Belize/M +Bellini/M +bellyful/S +bellying +benefice/MGoDS +beneficence/MS +beneficiary/SM +bentwood/SM +berate/SDG +bereft +Beresford/M +Berger/M +Berkowitz/M +Berkshire/M +besmirch/DGS +bespectacled +Bessel/M +Bessemer +best-known +bestowal/SM +bethel/M +Bethesda/M +Bethlehem/M +betroth/DGS +Betty/MS +Bexley/M +bezel/MS +Bhopal/M +Bhutan/M +bicameralism/MS +biceps +bicker/drS +biddable +Biddle/M +bider/M +biennial/SY +biennium/SM +bifurcation/M +Bigelow/M +bilinear +bindweed/SM +binodal +biodiversity/S +biograph/WZRw1 +biorhythm/S +biosynthesized +biota/W +bipartisan +bipartisanship/SM +birdie/MDS +birefringence/M +birthing +birthplace/SM +bis +biting/Y +bit's +bitty/T +bivalve/SMD +bivouac/GMDS +blabbermouth/SM +blackleg/DGMS +bladderwort/M +blasphemous/YP +bleariness/S +bleat/DGS +blimp/MS +blinding/M +blister/dMkSZ +Blofeld/M +Blomquist/M +blood/zhp2MDiZGS +blood-curdling +bloodstock/SM +bloodsucking +blood-wort/M +blue-black +bluegrass/SM +bluest/M +bluish/P +Blunkett/M +blusterous +boardinghouse/MS +boasts/e +Bobbie/M +bod/SMd +bodega/SM +body-builder/SM +bodysuit/S +Bogart/M +bogey/GmMDS +bogus +bohemianism/S +boilermaker/MS +Bolivar/M +boloney's +bolster/dS +Bonner/M +bonnet/dSM +bonzes +booby/MS +boogie/SD +books/cA +bookwork/M +boom/SGD +bootee/SM +bootlace/S +bootlegged/M +booze/RZGDMS +boringness +borne/c +Borodin/M +borzoi/MS +Bosch/M +Bosporus/M +Botticelli/M +bounce/kZSRG2D +bounds/e +boutique/SM +Bouvier/M +bowing/M +bowling/M +bow-window +bowwow/SDMG +boxcar/MS +boyer +bpi +bra/WpSM +Bradford/M +braincell/S +brandy/GMDS +Brant/M +Braque/M +brash/YSPT +brass/MS +brassiere/MS +brawn/ZSM2 +brazier/SM +breakable/S +break-in/S +breakneck +breastplate/MS +breathalysed +breathalyser/S +breech-loading +breviary/SM +brew/RGMDS +bribe/DRySG +bribery/SM +briefness/S +brig/MS +brigadier/SM +briny/TP +briskness/S +britches +broadleaved +broken-hearted/Y +Bromford/M +Bromsgrove/M +bronchiolar +bronco/MS +broncobuster/MS +broth/RMS +brouhaha/MS +Brownell/M +brownfield +browning/M +browse +brunt/DMGS +Bucharest/M +buckled/U +Buddhist/SM +Buenos +buffered/U +buffoon/MS +bug/CRGSD +bugle/RGDMS +bulblet +bulbous +bulge/ZGDMSk +bulimia/SM +bulkiness/S +bullet/SM +bumming/M +bumper/d +buncombe's +bundle's +Bundy/M +bunk/RCSDG +bunt/RSGDJ +buoy/SGMD +Burbank/M +burble/GSD +burden/dMS +bureaucracy/MS +bureaucrat/1QWq8SM- +Burgundian +buried/U +Burke/M +burnt/Y +bursary/MS +bushel/MSDGJ +Bushnell/M +buskined +busybody/SM +butch/RyS +butcher/dY +butcherer/M +butene/M +buttercup/MS +butyl/M +buy/RSG +buyout/S +buzz/MDRSGZ +bye-bye +bygone/S +byline/GDSM +byplay/S +Byron/WM +cabana/SM +caber/M +caboodle/SM +cacao/SM +cadaver/MS +cadaverous/Y +caddishness/S +caddy/MDSG +cadenced +cadge/DRSG +caduceus/M +Caerphilly/M +caesarean/S +caftan/MS +Cajun/SM +calamity/SM +calcify/NDSnG +calculator/SM +calculi +Caldwell/M +Caleb/M +calibration/M +calicoes +Callaghan/M +calligrapher/SM +calling's +callousness/S +call-up +calumny/SM +camellia/SM +camerae +camera-ready +Cameroon/M +camomile/M +camp-fire/MS +camshaft/SM +canap/S +cancan/MS +candelas +candidature/S +Canterbury/M +cantonal +cant's +canvass/S +capacitive/Y +capitulation/MA +Capri +capriciousness/S +capstan/SM +capstone/SM +capsule/8SQMGD +captivator/MS +caravanner/M +caraway/SM +carbonate/GDSM +carbonation/M +carborundum +cardholders +cardinal/MYS +cardiology/3MS +cardiovascular +card's +career/G3MDS +carefulness/S +caricature/3SGDM +caries/M +Carlo/S +Carlota +Carlsbad/M +Carlyle +carnage/SM +carnality/SM +carnivorous/YP +Carolinian/S +carotid/M +carpal/SM +carpi/M +carrying/a +car-sharing +car-sickness/S +cartographer/SM +Caruso +casebook/MS +casino/SM +casket/dSM +casserole/MGDS +Cassiopeia +castaway/SM +castellated +cataclysmal +catalpa/SM +catalysis/M +catboat/SM +catenation/MF +cater/drS +caterpillar/SM +cathartic +cathode/SWM +cattle/mM +caudal/Y +causal +cautioner/SM +cautious/IY +caveat/SM +cavort/DSG +CBS +CDT +ceasing/U +Ceil +celebrity/MS +cellular/Y +censoriousness/S +censurable +centralist +centrefold/S +centrifugate/M +centroid/SM +cerebellum/MS +ceremonialness +certify/NRl7DGnS +CFC/S +chaconne +chainlike +chairlift/SM +chambray/SM +chancery/SM +change/RBlpGDS +channelling/M +chapel/MyS +chaperonage/MS +char/5GDS +charade/SM +charbroil/SGD +charlatan/MS +Charles +Charlotte/M +Charlton +chartist +cheat/RDSG +check/ASGD +cheery/PT +Chekhov +chemist/y +chemotherapy/SM +Cherwell +chessboard/MS +chg +chickenhearted +chicle/YMS +chicness/S +chicory/SM +chide/DkSG +Chief +chiefdom/MS +chieftain/SM +childless/P +chilly/TPS +chimp/MS +chitin/MS +chitterlings +chivalrously/U +chivalrousness/S +chloroquine/M +chocolate/SMZ +choirboy/MS +chop/R2ZSzGD +chordal +Christiana/M +Christiansen +chromite/M +chronometer/SMW +chrysalis/SM +chubby/TP +chummy/TP +chumping/M +Church +chutzpah/SM +Cicely +Cicero +cigar/SM +ciliate/DFYS +ciphers/C +circular/8YQPMS +cirri/M +citizenship/SM +city/DMS +citywide +claim's +clamminess/S +clampdown/SM +clandestine/YP +clasped/M +classroom/MS +Clayton/M +cleanness/S +Clearwater +cleavage/SM +clerk/GSYDM +cleverer +climb/7GRDSJ +clingy/T +Clint +C.Lit. +cloaks/U +clockwatcher +clockwork/SM +clodhopper/MS +clonk/GSD +clothesbrush +cloudburst/SM +club-foot/MD +clubland +clumsiness/S +Clydebank/M +CMOS +coach/mGM +coagulation/M +coal-black +coalface/SM +coalfield/MS +coastguard/SM +cock-eyedness +cockiness/S +cockleshell/MS +cockshies +coco/MS +coddle/SGD +codify/RDGSNn +Cody/M +coffee-maker/S +cogency/SM +cognate/YnSN +cohabitational +cohesiveness/S +coiffing +Coleman/M +Coleridge/M +collaborationist +collarbone/SM +collected/UA +collective/q38SQ- +collectivity/SM +college/MK +colloidal +collude/DGNVSX +co-located +Colombia/M +colonise/AGCDSn +colony/oSM3 +coloured/ES +colourful/P +Coltrane +Columbian +columnar +comaker/MS +comb/RGMS +combine/DGAnSN +comeback/SM +comedy/WSM +comes/ce +comfit/SM +comfortability/S +comfortable/PY +comical +comity/SM +commemorative/S +comment/USD +commenter/M +commissioned/A +commit/NLSoXDG +commodore/MS +commonality/MS +communal +communicably +communication/a +communiqu/MS +communitarian/M +compactor/SM +comparably/I +compartment/DGMS +compensation/cM +competitive/PY +complacency/SM +complaisance/SM +complementation/M +completion's/I +compound/M7 +comprehending/U +comprehensible/IPY +compulsivity +computability/M +compute/DRGnNlSB +comrade/MSY +conceit/GiMSDh +conceivability/I +conception/KSMa +concerti +concertina/MDGS +concessionaire/SM +concessional +concomitant/Y +concordat/SM +concur/DG7S +condition/oMGRJDS +conditioned/AUK +condor/MS +conduct/aDGMS +Conestoga +confer/7DgGRS +confession/M +confidence/cSM +configurable/K +configuring/K +conflation/M +conformal +conformance/SM +conformist +conformity/IMU +congeries/M +conglomeration/M +congratulate/DSGnyN +congruential +conjunct/VSvD +connectionless +connivance/MS +conscientious/PY +conscionable/U +consequent/Y +conservatory/SM +consider/AdS +considerable/YI +consonances +consortium/M +conspiratorial +constants +constitutionalist +constrain/h +constrained/U +constrictor/SM +construct/ASbDG +consultancy/S +consulter/M +consumerism/MS +contagion/SM +contain/7RLDSG +contaminant/MS +contaminates/C +contentedness/S +contentious/UY +contentiousness/MS +continuing/E +contractual/Y +contrition/SM +controvert/DGSb +convect/xGSDV +convener/SM +conventional/Q83 +convexity/MS +conveyancing/M +convolve/CSGD +cony/MS +coo/GSD +cooked/fU +cool/GDPSRYT +cooper/dvuV +cooperative/U +copies/A +Copley +copolymer/SM +cop-out/S +copperplate/SM +coppersmith/SM +co-produced +coprophagous +copybook/SM +corbel/SJGMD +corder/AM +coring/M +corncob/SM +cornerstone/SM +cornet/SM +cornflake/S +Cornwallis +coronal/MS +corp. +corporeality/MS +corr +correctly/I +correlated/U +corrigenda +corroborator/SM +corrosive/SP +corruptibility/MIS +Corsican +coruscate/NSnDG +corvette/MS +cosmetic/MSY +cosmetician/SM +cosmopolitanism/SM +co-star/GSD +coterminous/Y +cotton/dMS +cottontail/MS +coule/SM +countable/U +countenance/SDEG +countercyclical +counteroffer/SM +counterpane/SM +counterpart/SM +counters/E +couple's +coupon/MS +coursed/E +coursing/M +Courtney/M +courtship/SM +cousin/MYS +Cousteau +coverer/AME +covering's +coversheet +cowhide/SGDM +cox/SGMD +coyness/S +crab/2GhDRzMiZS +crack/SRYDG7 +crackdown/MS +cradle/SDMG +craftsmanship/SM +cranium/MS +crate/MDRSG +cravenness/S +crawfish's +Cray/M +creak/zZSD2G +creakiness/S +creamery/MS +creationist/MS +credit/dE7lS +credited/U +creosote/SMGD +crescendo/GDSM +cretin/MS +crisis/M +crisp/GYPDTZ2S +criss-cross/DGS +Cristina/M +Crockett +crossarm +cross-dressing +cross-fertilisation +cross-fertilization +cross-hatch/DSG +crosspatch/SM +cross-reference/DGS +crossroad/SM +cross's +crowded/P +crowfoot/M +crucial/Y +crucible/SM +cruddy/T +crudity/SM +cruel/DTYGP +cruelness/S +crumb/YDZSMG +crumminess/S +crupper/MS +crush/R7kSDG +Cruz +cryosurgery/SM +cryptographer/SM +cryptology/M3Ww +crystallite/SM +CSE +cuckoo/MSGD +cuddly/T +cuff/DGMS +cultured/U +cur/rYgvZl7dSMV +curbing/M +curl/DGSR2 +currency/FSM +cursors/K +curvilinear/Y +cushion/SGMD +custard/SM +cutaneous/Y +cut-down +cut-throat/MS +cuttlefish/SM +Cyanamid +cyberpunk/SM +cycler/A +cyclone/WSM +Cyprus/M +cytotoxic +czar/3MS +Czechoslovak +Czechs +dactyl/SM +daddy-long-legs +Dade +dahlia/SM +damage/DRSkMG +damnation/M +damsel/SM +Dana/M +dandelion/MS +dandify/GDS +daredevilry/S +Darius +Darrell +Darwinism +datagram/SM +daunt/DGkpS +dauntless/PY +Dave/MZ +dawn/GDSM +Dawson +DC +DCVO +de/G +dealing's +deals/a +deary/SM +deathlessness +death-rattle +death-wish/S +debonairness/S +dbutante/MS +deceit/S6jM +deceitful/P +deceiver/MS +deceiving/Y +decelerator/SM +decibel/MS +decipherable/IU +decision/IMS +declaration/AM +declarative/S +declaring/A +decline/RGNnSD +DECNET +decompose/B +decompresser +decontrol/GD +decorticate/DGSN +decrement/SDGM +decryption +deduction/M +deed/SGDM +deem/SDAG +deepish +Deere +defection/MS +defective/PS +defencelessness +defer/RGSD +deficiency/MS +defiled/U +definer/MS +deflater +deflection/SM +defoliator/SM +deforest/NnG +defrayal/MS +defunct +degeneracy/MS +deleter +delimit/nd +delineate/SGDNnV +deliver/AdZS +dell/SM +Della/M +Delphic +delusive/P +demagogue/DySMG +demand/SGDk +demanding/U +demographer/SM +demonstrable/IY +demonstrate/uGnVSDvN +demonstratives +demotic/S +Dempsey +demure/YP +denature/G +dendrochronology/w +Denmark/M +dense/FY +denser/F +denunciate/DSGnNV +depletion/M +deplore/klDGS +depositary/M +deprecate/DSNnGky +derange/L +derive/VuvNn +dermal +dermatitides +derringer/SM +dervish/SM +descender/SM +describable/I +desensitise/n +desensitize/nN +dshabill's +desiccation/M +desirabilities +desirables/U +desk/MS +despoil/L +despondent/Y +despotism/MS +d'Estaing +destine/nKND +destitution/SM +detection/MS +dtente/S +determinability/M +determination/IMK +determinative/P +determine/uDRBvGVhiS +deterministic/Y +deterrent/YSM +DETR/M +devoutness/S +dewberry/SM +dexterousness/S +diabase/M +dialogue/S +dialysis/M +diameter/SMw1W +Diana +diarrhoeal +diastase/MS +diatom/MS +dices/I +dichotomousness +dicing/M +dick/DGMS +dicky's +dictation/M +diction/KSM +didn't +didst +die/SDG +digestive/YS +dilatation/SM +dilate/hiVGnDSNy +diluted/U +diminish/SDG7 +dimity/MS +dimorphism/M +dimorphous +dimple/YMGDS +din/rDRSMdG +diploma/SDM1W +diplomatics/M +dippy/T +dire/PTj6Y +direction-finder +directorial +directrices +directs/aA +disastrous/Y +discomfiture/SM +discommode/GD +discordant/Y +discount/RB +discourager +discourse/G +discover/AdZS +discovery/MSA +discrepant/Y +disembark/Nn +disfranchise/L +disgorge +disingenuous +dislodge/L +dispassionate/P +display/ADGS +displease/h +disproportionate/DG +Disraeli/M +dissemination/M +distinction/MS +distinctiveness/S +distinctness/IS +diurnal/SY +diverseness/S +divisible/I +divorce/GSMD +divorcee/S +doctorate/SM +dodge/ZRSDG +doggo +doggy/MST +dogleg/SGDM +dog-tail +doh/M +Dolby/M +dole/FSGD +dolour/MS +dolphin/MS +doltish/PY +domesticated/U +domestication/M +dominants +Dominick/M +dominoes +Donahue +donative/M +donor/SM +dopant/M +dopier +Dorothy +dorsal/Y +dosimetry/M +dossier/MS +dotage/MS +doubled/A +double-parked +doubtfulness/S +douche/GMSD +Douglass +Dover +downpipe/S +downscale/DSG +downside/S +downstream +downswing's +downtrodden +doyen/SM +drafted/A +drafter/SM +drama/s9Q8q-SM +drawing-room +dreadlocks +dreamy/TP +dreary/TP +drench/GDS +drencher/M +Dresden +dress/Z2RSDGJ +drift/DRGkS +drivel/RDGS +drives/c +droller/Z +drollness/S +droopy/TP +drop-kick/S +drought/SM +drub/RDJGS +drubbing/M +drumlin/MS +drystone +dual-purpose +dub/cDGS +dubbin/SM +ducal +duchess/SM +duckbill/SM +Dudley/M +duellist/SM +dulcify +dumpy/TSP +Dunham +Dunn/M +Dunne +duplicate/GAnNDS +duplicity/SM +Durban/M +during +duskiness/S +dust-up +dutifulness/S +DVD/SM +Dvorak +dwarves +Dy +dysprosium/M +ea +earlobe/S +earpiece/S +earthen +earthliness/U +earthling/SM +earthmen +earthmoving +easement/SM +east/GM +Eastman +Eastward/S +easygoing/P +eaten/Uc +eaters +echinoderm/MS +echolocation/SM +economy/qQ8s39wWS-M1 +Edam +edgewise +edginess/S +edibility/SM +edited/UF +Edmonton/M +educability/SM +educatedly +educational/3 +Edwin +Edwina +e'en +effector/SM +effectuation/M +efflorescent +effluvium/M +effortless/YP +effusiveness/S +egghead/MiDS +eggshell/MS +eglantine/MS +ego/SM +Eichmann +Eiffel +eigenfunction/MS +eighty-nine/H +Einsteinian +either +El +eldest +Eldon/M +elective/SPY +electrophoresis/M +electrophorus/M +electrotherapist/SM +electrotypers +eligibly/I +Elijah +Ellington +Elliott +elliptic/Y +Ellis +elm/SM +elongation/M +eloper/M +Elsie +embarrass/kLDhSG +embattle/SGD +embedding/M +embodiment/MS +embolism/SM +embroidery/SM +emittance/M +Emma +empathic +emphasise/CR +emphasis's/Cc +employability/M +empt/zVZGSDv2 +empyrean/SM +enamelware/MS +encephalitic +encephalographic +enchant/EGLSD +encrustation/M +encyclopaedic +endeavour/RGMDS +endive/SM +endogenous/Y +endoscopy/SM +endothermic +energized/U +engagement/SM +engine/SMD +English/m5M +enharmonic +enlistee/SM +enmesh/LDSG +ennoble/LDSG +ensconce/DSG +ensue/SDG +entail/DRLSG +entire/Y +entrants +entre/S +entremets +entryway/SM +enumerable +enumerator/SM +envy/MRS7lDkG +eohippus/M +epicycle/Ww1MS +epigrammatic +epileptic/S +epilogue/MGDS +episcopalian +epitaxial +epoxy/DSG +equal/s9Q-DGYqS8 +equalise/J +equalising/U +equatable +equilateral/S +equipotential +equivocalness/MS +erbium/M +erg/SM +ergonomic/U +ergot/MS +ERM +erogenous +erroneous/PY +Erse +erudition/SM +erupt/DVGSv +erythrocyte/SM +escalope/MS +escarpment/SM +eschew/GDS +escutcheon/DSM +esplanade/MS +Espoo +espresso/SM +essentialist +establisher/M +estimate/cGfASND +estimator/SM +estuarine +estuary/SM +Ethelred +ethicist +Ethiopian/S +ethnographer/S +eucalypti +euchre/MSGD +Eurasian +Euripides +Euro +Eurydice/M +evaluable +evaluated/AU +evanescence/SM +evangelicalism/MS +evaporation/M +evasiveness/S +eventual/Y +Everglades +everyone/M +evidence/DMGS +evident/Y +evil/YSPT +eviscerate/GDSNn +ewe/RSM +exaggerate/SnvhiGNVD +excavator/MS +exceed/SDGk +exceptionalness/M +excerpter/M +exchange/RGDS +excise/GDSMNBX +exclaim/yRSDG +exclude/NDSGuXVv +exclusive/SP +excreter/M +execrate/SGVnND +exegesis/M +exegete/MwW +exhaustiveness/S +exhort/NnSDG +exhumation/M +exist/FGSD +existential/Y3 +existentialism/MS +exorcise/GDS +expanse/SDMGb +expansionist +expectation/Mo +experiencing +expert's +expiration/M +expire/ynDSZGN +explained/U +explode/SDRGuXVvN +expo/MS +exportation/M +expose/fDScG +expositor/SM +exposure/cSMf +expressibly/I +expropriation/M +extant +extendible/S +extraction/SM +extracurricular/S +extralinguistic +extremis +extrication/M +extrovert/DMSG +exude/SnDG +exultant/Y +eyeball/SM +eye-tooth/M +Eyre +fabler/M +fabric/SNnM +fabricate/DSKNnG +facetious/YP +face-to-face +fact/SMyxY +faction/MS +factitious +faddish +faecal +fain +faire +fairway/MS +faithless/PY +faithlessness/S +fajitas +falafel +Falkirk/M +fallacy/SM +fallout/MS +falls/e +falsehood/SM +faltering/UY +famish/DGS +fan/DSMGZ +fanaticism/MS +fancy/RTjPYDS6G +fantail/SM +fare/SM +farming/M +farmyard/SM +Farnborough +far-sightedness/S +fasciculate/DnN +Fashanu +fashionable/PS +Faso/M +fastness/S +fatherhood/SM +fatness/S +fault-finder/SM +Fawkes +FCC +fear/6MpGDjS +fearlessness/S +feasibilities +feasibility's +feather-light +fecundate/SDG +federation/MF +feet/M +feint/SDMG +fellowship/SM +femme fatale +femmes fatales +femoral +Fenwick +Fergus +Fermat/M +Fermi +ferocious/YP +ferromagnet/MW +ferule/SDGM +fervid/PY +festoon/SMGD +fetch/DRkSG +fetishist/W +fetter/USd +fettle/SDG +feudal +fey/T +ff +fibril/MnSN +ficus +field/SeRIM +fieriness/S +fifty-seven/H +fifty-six/H +fight/RSJG +figure/EG4KSFD +figure's +filbert/MS +filer/CSM +filibuster/drSM +filly/MS +filthy/GTDP +financial/YS +fine-grained +finespun +finesse/MS +Finland/M +fir/rdS +fire-bomb/DMGS +fire-control +firecracker/MS +firelight/M +fire-lighter/S +fireman/M +firkin/M +first-aid +first-name +first-strike +Fischer +fish/DRZGM2zyS +Fishkill +Fisichella +fistula/MS +five/SHM +fixation/M +fizzer/M +fizzle/GDS +flabbiness/S +flagging's +flagon/SM +flake/Z2MS +flamed/I +flame-proof/GD +flamer/IM +flan/MS +Flanagan +flange/DMGS +flannel/DGMS +flare/DGkS +flashiness/S +flashing/M +flashpoint/S +flatfeet +flat-footedness +flatlander +flavour/RM6DGJSp +flaw/DGMpS +fledgeling +Fletch +flews/M +flier/SM +flippant/Y +floodgate/MS +floodplain/S +flopper/M +Florentine +Flores +florin/SM +floss/DGMZS +flotilla/MS +flowery/PT +flown/c +flunk/DZGS +flunker +fluoresce/DGS +fluorescer +fluoridation/M +fluorine/SM +flux/DGAS +flyaway +FM +focuser/M +focusses/CA +fogbound +Fokker +fol/Y +folds/AU +foliation/CM +folksiness/S +folk-singer/S +foll +fond/TPMY +Fonda +foolhardy/TPY +foolish/TPY +foolproof +foolscap/MS +footage/SM +footplate/M +force/Dh6jGbMS +forcefulness/S +forceps/M +forebode/DSGJk +foredeck +forehand/S +forename/DSM +foreordain/GDS +foreperson/S +foresighted/P +forester/CMS +foretold +forgetfulness/S +formalism/MS +formant/MIS +fornicator/SM +Fort-de-France/M +fortress/DMGS +fortune/SaM +fortuned +fortune-telling/SM +forty-eight/H +forty-five/H +forty-four/H +forty-seven/H +forty-two +foul/DTPSGY +foundry/SM +fourth/Y +foxiness/S +fraction's/IA +fragility/MS +Franchitti +Francis +Franco +Frankfort +frapp +fraud/CS +Fredricton +free-fall/G +freestone/SM +freewill +freeze-frame +fresco/DGMS +Frick +frighten/Sdk +frigidness/S +frill/GSMDY +frippery/SM +frizz/GYSDZ +frizzy/T +front-line +front-page +frostbit +frostiness/S +frosty/TPY +fruitiness/S +fruity/PT +FTP +fuchsia/SM +fuel-cell +fugal +fuller/dSM +fullstops +fulsomeness/S +fumigate/SGDnN +funded/fU +funder/SM +fungal/S +funny/TSP +furlough/SM +furnace/MS +furrow/SDMG +furthest +fuse/SIX4NGFD +fuse's/A +fusing/CA +futile/PY +Futuna/M +gag/RDGS +gainful/YP +gala/SM +galena/M +galoot/SM +gamest/R +gaminess/S +gaming/M +gangster/SM +gap/dkSMD +garage/GDSM +garde +gargoyle/DSM +garish/PY +garnet/SM +Garrick +gasses +gastritis/SM +gastrointestinal +gate/SMDG +gaudy/TYP +gauge/GaSD +gauger/M +Gaussian +gauzy/TP +gavotte/SMDG +gawk/D2MzZSG +gawky/PT +gay/TPS +gayness/S +Gbps +gelding/M +generalisable/Y +generational/Y +genesis +genetic/3SY +genetics/M +gentlefolk +gentleman/Y +gentlemanliness/M +geocentricism +geodesy/MS +geology/w3WM1S +geothermal +germane +Gerry/M +gerundive/M +Gestapo +get-rich-quick +ghostly/PT +gibberish/MS +gibbon/MS +gigantic/PY +gigavolt +Giggs +Gilgamesh +Gillespie +Gillette +Gilmore/M +gimbals +gimcrackery/SM +gimpy/T +gingham/MS +gingivitis/MS +ginseng/MS +gipsy/S +girt +git/M +give-away/MS +glad/DZPGTY +gladden/dS +glade/MS +gladiatorial +gladioli +glaze/RSJDG +glibness/S +glissando/M +gloat/GkSD +glob/SM +glockenspiel/SM +gloom/MD2GZSz +glory/MSGD +glucose/MS +glue/SRMDGZ +glutamate/M +gluteal +gnawer/M +gnomonic +gnosticism +goatskin/SM +goblet/SM +God +godlier/U +going/SM +golden/PY +Goldstein/M +Gomorrah +gonorrhoeal +Goodrich +goofy/TP +Gordian +gore/SMDGZ +gorged/E +gormandise/GSRD +gormandize/GSRD +gossipy +Gounod +gout/ZSM +gracelessness/S +gracious/UY +gradation/CM +grade's +grail/S +grammar/SM +grammatically/U +Granada +grandchildren +grandnephew/SM +grandson/SM +grandstand/SDGM +grape/MS +graphology/3MS +grateful/TP +grates/I +gratify/SGkNnD +graven +Gravesend +greasy/PTY +great-grandchildren +great-nephew +great-niece +Greek/SM +Greensboro +Greenville +Gretel/M +greyhound/SM +grievousness/S +Griffith +grime/ZM +grit/2GSDRMZ +grogginess/S +ground/mRMGJDpS +grounded/U +groundswell/S +grow/7RkGS +growing/Iec +Grnewald/M +gryphon's +Guadalcanal +guardhouse/MS +guardian/SM +Guatamala +guerilla/SM +guesses/e +guided/U +guillemot/MS +guinea/MS +Gulliver/M +gunmetal/M +gunrunning/MS +Gustav/M +gusting/E +gutlessness/S +gymkhana/SM +gymnasium/SM +gymnast/M1SW +gyration/M +gyrator/SM +habit/7ndgSM +hacksaw/GSMD +hackwork/S +haddock/SM +haemorrhage/SGDWM +hail/RMDSG +Haiti/M +Haitian/SM +Haley/M +half-life +halfpenny/SM +Halton +hampered/U +hamster/MS +handcuffs/M +handed/fU +handles/a +handmaiden/SM +hand-me-down/S +handwritten +hanky/MS +Hanoi/M +hara-kiri +harass/RLDSG +hard-boiled +hard-hitting +hardihood/SM +Harding +hardish +Harley/M +harmonize/RDGnNS +harpsichordist +harpy/MS +Harriet +hash/ADGS +hatchery/SM +haulage/SM +haulers +haunch/DGSM +have/SG +Hawaii/M +haws/R +Hayes +haymow/SM +hayseed/MS +haywain +hazardous/YP +Hazlitt +hazy/PYT +headache/SM +headlock/MS +headmistress/SM +heap/MDSG +hearse/A +heartburning/M +heartsick/P +heathland +Heathrow/M +heatstroke/MS +heavenly/PT +heavyhearted +hebetude +Hebraic +hector/dS +hedgehog/SM +heehaw/DGS +heighten/Sd +Heinrich/M +Heisenberg +Helios +heliotrope/MS +hellish/YP +hello/MGS +helve/MS +Hendricks +henge/M +herb/MS +hereafter/S +heredity/SM +Herefordshire/M +hereunto +Hermann/M +heroin/MS +herpes/M +Herrick +herself +hesitate/nNDkSG +hesitating/UY +heterogeneity/SM +heterostructure +heterozygous +hexadecimal/SY +Hi +hibernation/M +Hickman/M +hid/r +hide-and-seek +Hi-Fi/S +high-flier/S +Highgate +high-pressure +hilarity/SM +hillock/SM +hillside/MS +him +himself +hinterland/MS +histochemical +historiography/wSM +hitting/a +hoar/MZ2 +hoarfrost/SM +Hobart/M +hobby-horse/SM +hog/GSDM +hoggish/Y +hogshead/MS +hokey-cokey +holding/M +holdout/SM +Hollander/S +Holzman +homage/SM +homburg/MS +homier +homo/SM +homoeopath/WSZ +homogeneous/Y +homologue/M +homonym/MS +homophone/MSZ +honeymoon/RDGMS +honeysuckle/MS +Honeywell +Hong/M +honk/RSMDG +honorarium/MS +hoodlum/SM +hooliganism/SM +hoop/GMDS +hop/RdDSGM +hopefulness/S +hoper/M +hornbeam/M +horsedom +horsetail/SM +hotcake/S +housebroke +housecoat/SM +housed/A +house-plant/S +housewife/MY +housing/A +hovel/SM +hoverer/M +howsoever +hoy/M +hr. +Huang +Hubbard/M +Hubble/M +hubcaps +huddler/M +humaner +humanitarianism/SM +humanoid/S +humble/PTGSDY +Hume +humourless/PY +humph/S +Humphrey/M +Huntsville +hurried/UY +Hussein/M +hutch/GSDM +Huygens +hydrazine/M +hydrocephalus/MS +hydrochemistry +hydrodynamic/S +hydrophobia/SM +hydroxide/SM +hydroxyl/NSM +hygiene/M13WS +hygienics/M +hype/DSMG +hypertensive/S +hypnotherapy/MS +hypnotism/MS +hypnotize/DSG +hypocellularity +hypocrite/1wMS +hypoglycaemia/SM +hypothalamus/MW +hypothyroidism/SM +hyrax +hyssop/SM +hysteresis/M +IA +iambus/SM +ibid +IBM/M +Ibsen +iceberg/SM +icebreaker/SM +icepick/S +ice-skate/G +icky/T +idle/DRTPSG +idolater/SM +ignition/MS +ignoble/YP +ignominious/Y +ill/YP +ill-informed +illness/S +illuminate/DSGk +imam/MS +imbroglio/MS +imbue/SGD +impassion/DG +impassivity/M +impatiens/M +impeccable/Y +impedance/MS +imperialist/W1 +impersonate/SGDNn +impersonator/MS +implanter +implementable/U +important/Y +impracticable/P +impress/XVLbNvu +impressibility/SM +improve/qQ9Ls8 +impudence/MS +impulse/Vuv +impute/GDNnS +inaccurate +inactive +inalienability/SM +inalienable/Y +inanimate +inauspiciousness +inbuilt +incessant/Y +Inchon +inchworm/MS +incidents +inclining/M +incorporable +incorrigible/PSY +incremental +inculcate/SDGnN +indenture/DG +independent/S +indescribable/YPS +indeterminism +indeterministic +indicant/SM +indispensable/PSY +individualize/k +individuation/M +indolent/Y +Indonesian/S +indoor +inedible +inelastic/Y +ineluctable/Y +inertial +inestimable/Y +infarct/SM +infertile +infestation/M +infirm +inflation/EMyS +inflection/SM +inflow/GM +informational/Y +infotainment/MS +infuriation/M +infuse/Rb +ingenuous/YP +ingenuousness/S +ingestion/SM +ingratiation/M +inhabited/U +inhibition/M +inhuman +inject/SG7DV +injurious/PY +inkwell/SM +inlaid +inly/G +inner-city +innocuousness/S +inpatient/MS +in-phase +inquisitional +inquisitiveness/S +insatiability/MS +inscrutability/SM +insecticide/MS +insectivore/MS +insectivorous +insertion/SMA +insinuation/M +insipidity/SM +insist/DSGk +insoluble/PSY +insouciance/SM +insouciant/Y +inspection/SM +inspire/xNnGk +inspiring/U +instantaneous/PY +instantiate/SGDNn +instigator/MS +instil/SRNnGD +instillation/M +institutionalism/M +instructed/U +insulator/MS +intact/P +integrand/SM +integrator/MS +intellect/SM +intellectual/Q8YPS +intellectualism/SM +intendedness/M +intensity/MS +intentional/UY +interact/SVDGvu +interactivity +intercohort +intercourse/MS +interdepartmental/Y +interdependency/MS +interdiction/SM +interest/EDhSMG +intergalactic +interjection/SM +interlace/DGS +interlingual +interlingua's +interlocutor/MS +intermediate/YNMPGDS +intermezzo/SM +intermolecular/Y +interrelate/SnGihND +interrelated/P +interrogate/SGNyvDVn +interrogative/S +interrogator/MS +interruption/MS +inters +interspersion/M +interval/SM +intervention/SM +interwove +intestacy/MS +intolerable/P +intoxication/M +intramural/Y +intraregional/Y +intrastate +intravenous/SY +intrepid/PY +invalid/MdS +invasion/M +inveigh/GSD +inveiglement +invents/A +inverse/Y +investigator/SM +investment/f +inveterate/Y +invidiousness/S +invincibility/MS +invitee/S +involved/U +involver/M +iodate +ionise/CRSGD +ionize/CRSGD +ions/U +irateness/S +ironclad/S +ironwoods +irrational/S +irredeemable/YS +ISBN +Islam/M +isochronal/Y +isomorphism/MS +isotherm/MSo +isotropy/1MW +Israeli/SM +Istanbul/M +Italianate +Italy/M +iterate/nAGDNSV +Ito/M +itself +ITV +Ivanhoe +jaggedness/S +jam/UDG +Janet/M +Janice +Janos +Jason/M +jaunt/Mz2GZS +jaunty/PT +jawbreaker/SM +jaybird/MS +jeerer/M +Jefferson/M +jehad's +jejunum/M +jellyroll/S +jerkin/MS +Jervis +Jew/MSy +jingle/YGDS +jingo/M +jinx/SGMD +jiujitsu's +job/RpGSDM +joblessness/S +jockey/SDGM +Johann +Johnnie/M +johnny-come-lately +john's +joints/E +jolly/SPTYDG +Jordanian/S +Josef +jostle/SGD +jot/RJSDG +joyridden +Judaic +Judaism/M +Judas +juice/RZMDGS +jujutsu's +jukebox/MS +Jules +Julio +July/MS +jump/zR2ZSDG +juries/I +justiciable +Kagoshima +Kampf +kapellmeister/M +karakul/M +karat's +Karen +karma/SM +Katharine/M +Katmai +kbps +kelpers +kelvin/SM +Kennedy +kennel/DSGM +Kent/M +Kenyon/M +Kewaunee +Kewpie +keypad/SM +keyring +kiddo/SM +kidnap/DRGJS +Kigali/M +killed/c +Kilmarnock/M +kilobyte/S +kilovolt/SM +kindling/M +kine/M +kinematic/S +kinematics/M +kinetic/YS +kingfisher/MS +kipper/d +kitchen/SM +kitchenware/SM +kith/MS +Klan +Klaus +Klux +km +knackered +Knapp/M +kneel/RGS +knee-length +knell/GMSD +knife-edge +knob/ZMS +Knossos/M +knot/ZMS2GD +knotting/M +Knoxville +Knuth/M +Koenig +Kofi +kohlrabies +Kolonia/M +Koror/M +Kristin/M +Krupp +Kuomintang +Kurosawa +Kyoto/M +Kyrgyzstan/M +labeller/MS +Labrador +lace/USGD +lace's +lackadaisical/Y +lactose/SM +laden/Uc +lading/M +laetriles +Lafayette +laissez-faire +lama/SM +lamber +Lambeth +lament/SnDlG7N +lamentation/M +lampblack/SM +lamper +lamplight/RSM +lamppost/SM +LAN +landfall/SM +landlady/SM +landmass/MS +Langley +languish/SkDG +languorous/Y +lanyard/SM +lapser/AM +larch/MS +larding +Large +lariat/DSGM +larker/M +Larson +lash-up +lassie/SM +latched/U +lattice/GSDM +Launce +launchpad/S +lava/SM +Laval +lawful/UY +Lawrence +Lawton +laxative/SMP +lay-off/SM +layout/SM +LBJ +lea/SM +leader's/a +Leah +Leander/M +learn/UGSAD +learnt +lease/ARGMSD +leaseback/MS +leastwise +lectern/MS +ledge/RMS +Lee-Enfield +left-wing/R +leg-cutter +legging/M +leggy/TP +legibility/MIS +Leicester/M +Leicestershire +leisure/MSYD +lemma/MS +lemonade/SM +Lena/M +length/zSZ2M +lengthways +lenience/ZS +Leninism +Lennon/M +leopardskin +leprous +lesion/GDMS +lessee/SM +lethality/M +levitation/M +lewdness/S +lewis/M +lexicographer/SM +Leyland/M +Leyton +liableness/A +Lib/Z +liberationists +libretto/3MS +licentiate/SM +Liechtenstein/RM +lied/M +lifeblood/SM +lifeboat/MS +lifeforms +lifesaving +lifestyle/S +lifetime/MS +ligament/MS +light/JTDRSPMGY +Lillian/M +limelight/GMS +limerick/SM +limitedness/M +limiter/CMS +limousine/SM +Lindquist/M +lined/fUAe +linger/drkS +liniment/SM +Linnaeus/M +linoleum/SM +lioness/MS +Lisbon/M +lisle/MS +Lissajous +list/DGJp +literalness/S +literately/I +lithe/YPT +lithograph/RMZW1SDG +litigate/SNnDG +litigator/SM +lived-in +lively/TP +livid/PY +loan/RMS7GD +localization/M +location/EMAF +lochs +Lockhart/M +Lockheed/M +lockout/SM +locksmithing/M +locksteps +loco/GSM +logarithm/W1SM +logbook/MS +loggerhead/MS +logicically +Lohengrin +loller/M +Lombard/Z +long/GPSDTkJ +longbow/SM +longish +longitude/MS +long-legged +long-running +loo/M +lookalike/S +Loomis +loopy/T +loose/PYGSDT +looseness/S +looses/U +lopsided/PY +lordly/TP +Lordship/MS +Loren/M +Lorentzian +lorryload/S +lose/RSG +loss-leader/S +Louis/M +Louisiana/M +loupe/MS +louvre/MSD +Loveland +loveliness/S +lovesick +low-grade +low-noise +lox +Lt +Luanda/M +lubricate/DSNGnV +Luce/Z +lucrativeness/S +luff/MSDG +lumbago/MS +lumpen +lumpiness/S +Lumpur/M +lunate/WY +luncheon/MS +Lundberg/M +lupine/SM +lurer/M +lush/TPY +lustre/pSMGD +lustring/M +luxuriate/NSGDn +luxurious/YP +luxuriousness/S +lycopodium/M +lyingly +lymphoma/MS +Lynn/M +machination/M +machine-gun/DGS +machinery/SM +macho/S +macroeconomics/M +madam/SM +made-up +Madison +madman/M +madras +madrigal/SM +MAG +Magdalena +Magherafelt/M +magical +Magill +magnetise/CBnSDG +magnetize/CBNnSDG +magnificent/Y +magnify/CSGRND +maharishi/MS +mah-jong/M +Mahler/M +maiolica's +matre +Malamud +Malaya +Malaysia/M +malformation/MS +Mali/M +Mallarm/M +malnourished +Malone +Manchu +mane/MSZ +mangold +mania/SM +manifestation/M +manifesto/SM +manned/fU +mannishness/S +mantling/M +mantrap/SM +marble/DSMGJ +Marc/MZ +Marcello/M +marchioness/MS +margaritas +marionette/MS +Marius +Marlow/M +marrowbone/MS +marshal/JRSGDM +martial/Y +mas/rGWD +masc +masks/U +Massa +massacrer +Massenet +mastering/S +mastermind/GDS +mastery/MS +mastiff/SM +masturbate/GSnDNy +masturbation/M +matador/SM +match/eGDaS +matchings +matchmake/RJG +matchmaking/M +materialism/MS +materialness/I +materiel +mathematical/Y +matins/M +matrimonial +matter-of-fact/Y +mature/YDTVSxnPGN +Maui +maunder/Sd +Maurine/M +mawkish/PY +maybe/S +mayonnaise/MS +mazurka/SM +McAdams +McCarthy/M +McClure/M +McDermott/M +McGraw/M +McIntyre/M +McKay/M +McKenzie/M +McKinley/M +me/3s +Meade +meadowsweet/M +meanie/SM +meanness/S +measurably/I +measuring/A +meat/ZS2pM +meatiness/S +mechanised/U +mechanized/U +meddlesome +meditated/K +Mediterranean +medium/SM +mediumistic +meed/SM +meetinghouse/S +melancholia/SM +melanin/MS +melatonin +Melcher/M +Melinda +mellifluous/PY +melodiousness/S +mementoes +menarche/MS +mend/GFSD +mendelevium/M +mender/FM +menstruation/M +mercer/QMS +Meredith +merganser/MS +mermaid/SM +mesmeric +mesmerism/MS +mesmerizer/M +Mesolithic +mesomorph/SM +mesosphere/MS +metacarpi +metallize/NnDSG +metallography/M +metallurgist/S +metathesizes +methadone/SM +Methodist/MS +methodology/Sw1M +methought +metier +metronomic +Micah +Michaelson +Michelangelo +Michigan/M +microcode/GDS +microgravity +microinstruction/MS +microlight/S +micrometer/SM +micrometre/S +micron/MS +microphone/SMG +microtome +Midas +Middlebury +mid-on +midrib/MS +midship/mS +midstream/M +Midwestern +mighty/TP +migratory/S +mildew/ZGDSM +mild-mannered +mildness/S +militarization/M +milk/RD2ZSMG +milkman/M +milkshake/S +millennia +millennium/SM +millivolt/MS +milliwatt/S +millpond/SM +millrace/MS +milt/RSM +mimosa/MS +mind-expanding +mine-detector +mineralization/CS +Minnie +Mira +miraculous/YP +mire/DMGSZ +mirthless/PY +mischief-makers +misdeal +misdemeanour's +miserableness/S +miserliness/S +misogynous +misprint/M +misread +miss/EVDGS +Mississippi +Mississippian/S +Missy +mistaker +misuse/M +MIT/M +mitotic +mixable +Mobil +Mbius +mocker/Z +moderations +Modesto +modesty/MIS +modicum/MS +modifiable/P +modi operadi +modularity/MS +module/NSnM +moiety/SM +moisten/rdS +moisture/sQMS +mole/MS +Mollie +Monaghan/M +Monday/SM +moneybags +moneylender/MS +Mongolia/M +mongoose/MS +mono/SM3 +monoclonal/S +monogram/DGSM +monolingual/S +monologue/MDGS +monorail/SM +monosyllable/WSM +monotonous/PY +monsoonal +monstrous/YP +Montenegro/M +Montgomery +Moog +Mooney +moonlight/MGRSD +moot/GSD +mooter +mopy/PYT +morale/MS3 +mordancy/SM +Moreland +Morgen +moribundity/M +morpheme/SM +morphology/MwS1 +morphophonemic/S +Moser/M +Mosley/M +mosquitoes +motet/SM +mother-of-pearl +Motherwell +motility/SM +motionlessness/S +motliest +motor/QSdqm38-M +Motorola/M +moue/DMGS +Mountie +mount's +movability/I +movable/SIPY +Mozambique/M +much/P +mucus/SM +muddle/RSGD +muddleheadedness +mulch/DGMS +Multibus/M +multifarious/PY +multifigure +multifunction/oD +multimillionaire/MS +multi-national +multiprocess/G +multiprogram/JDG +multi-stage +mummery/SM +munge/RGSJD +Munro/M +Munson/M +Munster/M +muon/SM +mural/3MS +Murchison/M +Murdoch/M +murk/TZzSM2 +Murry/M +Muscovy/M +musical/S +muskrat/SM +musty/TP +mutableness/M +muter/F +muzzle's +myocardial +myocardium/M +myriad/S +Myriapoda +myself +Nabisco/M +Nahum/M +nail-biting +name-calling +name's +namesake/SM +Namibia/M +Nanak/M +Nance/ZM +napalm/SMDG +nape/MS +naphtha/SM +narcotic/MS +narrative/SM +nasal/-YqQ8S +nascence's/A +nastiness/S +natality/M +national/8-S9Qsq3 +nationality/MS +natty/PYT +naturalism/SM +naturalnesses +navigate/BNxDGSn +Ndjamena/M +nebulae +neck/MJSGD +necker +necromancy/MS +Ned/M +nee +needlessness/S +needleworker +negate/GSD +neglecter/M +negligence/MS +negotiate/DAnNSG +Negritude/M +Neill/M +nelson/SM +nemesis +Neolithic's +neoplasm/SM +nervy/TP +nestler/M +neuroanatomy +new/AS +Newcastle/M +Newell/M +newer +newly-wed/MS +newsgirl/S +newsletter/SM +newsreader/MS +news-sheet +Newtownabbey/M +nexus/MS +Nicaragua/M +nichrome +nicknack's +Nicole/M +nifty/TSY +Nigeria/M +niggle/RGkJDS +nightshade/SM +NIMBY +nincompoop/SM +ninety-eight/H +ninety-twofold +niobium/M +nip/RGD2SZ +nippy/T +nirvana/SM +Nita/M +nitpick/RGDJS +nitwit/MS +Niuo +Noah/M +noblesse/M +noddy/M +noisome +nomad/WMS +Nome/M +Nona/M +non-acceptance/S +non-adjacent +non-aggression/S +non-alignment/S +non-automotive +non-cancerous +non-carbohydrate +nonce/SM +nonchalance/MS +non-collectable +non-controversial +non-credit +non-dairy +non-decreasing +non-determinism +non-drinker/SM +none/S +non-emergency +non-fatal +Nonie/M +non-industrial +non-infectious +non-intuitive +non-invasive +non-irritating +non-migratory +non-occupational/Y +non-perishable/S +non-perturbing +non-poisonous +non-procedural/Y +non-programmer +non-public +non-reactive +non-reciprocal/S +non-religious +non-scheduled +non-social +non-stop +non-sustaining +non-terminal/S +non-threatening +non-traditional/Y +non-viable +non-volunteer/S +Norristown/M +northeaster/MS +north-Eastern +northernmost +north-south +north-westward/S +notative/F +notch/DGSM +note's +notify/SRG7NDn +Notting +Nouna +novella/SM +noxious/YP +nroff/M +nth +nuder/C +numeral/MS +numerate/IS +numismatic/S +nurser/Z +nutritional +nutritive/Y +Nye/M +Nyerere/M +NZ +Oakley/M +Oakmont/M +oases +oatcake/SM +objectionableness/M +objectiveness/S +objurgation/M +oblique/YDSG +obliquity/MS +oblivion/MS +obscurantist/SM +observable/S +obsolete/GPDSY +obtruder/M +ocarina/MS +Occident/M +ocelot/SM +ochre/MS +Oconomowoc/M +octagon/oMS +octant/M +octave/MS +octile +octillion's +OD +odium/MS +O'Donnell/M +OED +oedema/SM +OEM/M +oeuvre/SM +of +off-centre +offensives +off-peak +offspring/M +off-the-peg +ogive/M +ogle/DRSG +O'Hare/M +Ohio/M +Ohioan/S +ohm/WSM +oligopolistic +Olin/M +OM +Omaha/M +omelet/SM +omit/NXSDG +omni/M +omnipresent/Y +Ono/M +onset/SM +Ontario/M +onus/SM +oolitic +open-minded/Y +open-mindedness +operability +operation/Mo +Ophelia/M +opioid +oppress/VNuSvDGX +optic/S +oracular +orbit/dMS +orchard/MS +orchestra/SnoM +orchestrate/DSG +ordaining/K +ordinate's +Oreo +origin/NMnSoVv +originals +Orinoco/M +oriole/SM +orison/MS +Orkney/M +ornateness/S +orthodontist/SM +orthopaedic/S +Osama/M +Osgood/M +osmotic +ossification/M +Osteichthyes +ostler +ostracise/DSMG +outargue +outbalance +outclass +outdraw/G +outgoingness +outhouse +outlier/S +outlive/S +out-of-date +out-of-pocket +outsiderness +outstanding/Y +ovenbird/SM +oven-ready +over/MSY +over-anxious/Y +overbite/M +overcerebral +over-curiosity +overdo/G +overdrive/M +overkill/M +over-large +overripe +oversaw +oversimplification/M +overstretch +overstrict +overture/SM +oviduct/SM +owner-occupier +ox/M +oxcart's +oxidative/Y +oxyacetylene/SM +Ozzie/M +Pacheco/M +packinghouse/S +pack's +padding/M +Padgett/M +paid/KfUcA +pailful/MS +painfulness/S +palaeontologist/S +palanquin/SM +Palermo/M +palimpsest/SM +Palladio/M +Palmolive/M +palmtop/S +Palo/M +palpitate/DSNGn +pals/Z +Pancras +panoply/DSM +pant/SDG +Pantaloon/M +pantiliner +pap/oM3r +papers/A +parachute/3DSMG +paradigm/MS +paradise/MwS +paragrapher/M +parallelepiped/MS +parametrise/DBnGS +paraphrase/SGMD +parasympathetic/S +parent/DJSoGM +parental +parmigiana +parochiality +parrot/dSM +partiality/MIS +participate/ySNVDGn +participle/SM +particular/Q8SY +particularistic +parting/MS +partitioned/A +partitioner/M +partitions/A +part-song +passionflower/SM +pasteurise/RnSDG +pasteurize/nRNSDG +pastime/MS +patchwork/RSM +patchy/TY +pate/SM +paten/M +pathway/SM +patientest +patina/SM +Patrick/M +patrimonial +patronage/SM +patroness/S +patter/dS +Patterson/M +patty/MS +pauper/QdMS +pause/GSD +pawnshop/MS +pawpaw's +pay/A7LSG +PAYE +peacefulness/S +peacekeeping +pea-green +peaky/P +peanut/SM +peasantry/MS +peats/A +peccadillo/M +pedagogic/S +pedal/RGMSD +peddle/SDG +pederast/ZSM +pedlar/SM +peer's/F +Pele +pelvis/MS +penalty/SM +Penberthy +penetrable/I +penitential/YS +Pennsylvania +pens/XuNvV +pentagon/oSM +peppercorn/MS +per/y +perceivable/I +perceptibly/I +perception/MS +percussions/A +perfecter/M +perforce +perjury/MS +permanency/SM +permanently/I +permeate/BDNnGS +permissible/PY +pernicious/YP +perpendicular/SY +perpendicularity/MS +perpetration/M +perspex +persuade/DVXRNSvuG +pertinacity/SM +pertinent/YI +perturb/GSnD +peruke/SM +pesky/TY +pestilent/Y +petitioned +Petri +petrify/GSND +petulance/SM +pfennig/MS +pharmaceutical/SY +pharmacology/3M1Sw +pharyngitides +philanthropist/SM +Philip/MS +Phnom +phonograph/WSM +phonon/M +photographed/A +photographs/A +photometer/1WSM +photostatic +phyla/M +phylogenetic +pianola +pick-up/MS +picky/T +piecer/M +pigheadedness/S +pigskin/SM +pilaf/SM +pincer/S +pinhole/MS +pinion/DMGS +pinnate +pion/M +pipeline/DMS +pipette/SMDG +pipsqueak/MS +pisser +pit/MGSD +pixmap/MS +pizzicato +placidity/MS +placings +planetary +plank/GMDSJ +platform/MS +play-act/JGDS +playwright/MS +pleasantness/S +plebeian/S +pleural +plication/FMIA +plot/SRMGDJ +ploughshare/SM +pluckiness/S +plumbing/M +plumper/M +plurality/MS +Pluto/M +pluvial/S +PMS +pock/SDM +pocketer/S +pogrom/SM +poinciana/SM +polarity/SM +polarograph/Z +polemical +polio/SM +polite/IPYW +polo-neck +polycrystalline +polygonal +polygraph/DSMG +polyhedra +polymerase/S +polymorphism/S +polymorphous +polytheism/MS +polytheist/WSM +pomade/SGMD +pomp/SM +pompano/MS +ponce/M +pondered +ponderousness/S +pondweed +pontoon/MDSG +ponytail/SM +pooh/SDG +Poole/M +poor-spirited +poppyseed +popularization/M +populate/cCnNDGS +populism/S +populousness/S +porcine +pore/GDS +porn/S +porno/S +porter/CM4SAI +porterhouse/M +portico/M +Porto +portray/SDG +Portuguese/M +posse/bSM +possession/MKEA +postcode/SM +postmistress/MS +postural +potability/SM +potash/SM +pothook/SM +pot's/C +pouch/MDSG +pout/RSDG +Powell/M +powers/c +Powys +PPP +practicable/IY +prankster/MS +praseodymium/M +pray/RGDS +precondition/G +predicate/VnNSDG +predictability/UM +predictor/SM +pre-eclampsia +pre-empt/DVSvG +preferential/Y +pre-industrial +preinterview +prejudiced/U +prelacy/SM +preluder/M +premonitory +prepare/VviGnyhN +prepossessing/U +preprocessor +pre-pubescent +preradiation +presager/M +prescribe/vXVN +prescription/M +pre-set/S +press-gang/D +prestigious/Y +Prestwick/M +presumption/M +prevaricate/DGNSn +preventable/U +preview/G +prevision/D +pricey +priciest +priestliness/S +primeval/Y +primitive/PSY +princess/MS +privet/MS +probation's/A +problematic/U +procedure/MSo +processing/K +processional/S +processors/K +procreation/M +procure/LDSG +prodigious/YP +productions/f +Prof. +profit/Mpgdl7S +profitably/U +profiterole/MS +profit-taking +profuse/YPNX +prognostic/nNVS +progression/M +projectionist +proliferate/GnDSNV +prophylaxis/M +propionate/M +propitiously +propitiousness/M +proportion/EDSGMo +proportionment/M +proprietress/MS +proscenium/SM +prosciutto/M +proselyte/M8GsQ9DS +prospective/PS +prostheses +prosthetics/M +prostitution/MS +prostrate/NnDSG +protagonist/MS +protect/cVGSD +protected/U +protector/MS +protestantism +protractor/SM +protuberance/S +proud/YT +proven/U +provisional/S +proviso/MS +prow/SM +prowl/RSDG +proximal/Y +prudery/M +pseudo-intellectual +psychedelia +psychic/SM +psychoacoustic/S +psychoanalysis/M +psychopath/ZSMW +pt +pubes +published/UA +puce/KMS +pule/GDS +pullet/SM +pulmonary +puma/SM +pumper +pumpernickel/SM +pungent/Y +punkier +purgation/M +purism/SM +purist/W +purple/TSMGD +purulence/SM +putterer/S +pyridine/M +pyrometer/SM +pyrotechnist +pyxides +Qaeda/M +Qatar/M +QPR +qua +quadrangular/M +quadratic/MYS +qualitative/Y +qualmish +quarrelsome/PY +quarter-hour +quartile/MS +quasar/SM +queen/GYSDM +quiche/MS +quieted/E +quintuple/DGS +quip/SMGD +quixotic/Y +quizzes +r/sd +rabbet/SMd +racecourse/SM +Rachmaninov/M +radian/MS +radiotherapist/MS +raffia/M +raga/MS +ragout/SM +rainbow/MS +Raj/M +Rameau +ramie/MS +rancour/M +Randolph/M +ranee/MS +ranked/Ue +ranking/M +rankle/DSG +rapporteur/SM +raptness +rashness +rasp/SGkZDM +rat/DdMRGSZ +ratchet/dSM +rattrap/SM +raucous/PY +ravenousness +ravioli/SM +rawhide/SM +razorblades +react/cSDG +reactant/SM +reactivity +reading's +ready-made +real-time +reauthorise/n +reauthorize/Nn +rebellion/MS +rebid/G +rebook/G +recapture +receivership/SM +recent/Y +recipient/SM +reciprocate/NnDGS +recirculate +recondition/G +reconnect/GD +reconvert/G +recoverable/UI +recreant/SY +recruit/rdMLS +rectangle/MS +recuperate/SnNVGD +recurving +red/PTSZ +redcap/SM +Redcar/M +redevelop/L +redhead/S +redirect/G +red-light +reducibly/I +redwood/MS +Reebok/M +re-enlister +re-export/7 +referent/MS +reflection/SM +reformist +refund/7 +refuseniks +Regan/M +regency/MS +reggae/SM +regime/SM +regiment/DMGnSN +regression/M +regrind/G +regurgitate/DGSnN +reindeer/M +reinforce/LDSG +reinforcer/M +relent/pSDG +relevant/IY +reliant/Y +relinquish/GDLS +relish/SDG +relit +rely/BlWGD +rem +remeasure +remedy/7SGMoD +remelt/G +remoteness +remunerate/DSNnvVG +Renato/M +Renee/M +renewal/SM +Renoir/M +renouncer/M +renovator/MS +rent-free +reorder/d +repairable/U +repeatability/M +repel/DNGSn +repellent/SY +rephotograph/G +replay/M +representation's/a +representativeness +representative's +reprogrammable +republicanism/SM +republish/G +requisite/SK +re-routeing +resequence +reservedness/M +resident/MS +residua/oy +residuum/M +resilient/Y +resinous +resistor/MS +restorative/S +restriction/MS +resurrect/DSG +retch/SGD +reticle/MS +retinal +retroactive/Y +retrogradations +retsina/MS +rev/QsSDG +Revd. +revealing/U +reverberant +reverence/ISM +reverser/M +revet/LDG +revivification/M +revolve/RDJGS +rewarded/U +rewire +rewound +Rhoda/M +rhomboid/MS +ribonucleic +ribosome/M +Richard/MS +richen/d +Richmondshire +ricotta/SM +ridden/c +Riggs/M +right/RP7DjG36SY +Rinehart/M +ring/DRMG +rise/bGJS +risen +ritualism/M +Rn/M +robber/Z +Roberto/M +Robinette/M +Robles/M +Rocco/M +Rochelle/M +rode/cF +Roget/M +roil/SGD +roll-call +roller/MS +roller-skate/GSDM +roll-on +Roma/M +Romanesque +romanise/nSDG +Romansh/M +Ronda/M +roof/RpDGSM +rooftop/S +rookie/SM +rosewater +Roslyn/M +roster/MS +rotor/SM +rotund/Y +roulette/M +rove/RGDS +rowing-boat/MS +Roxanne/M +Royce/M +r.p.m. +Rubicon/M +rubidium/M +rubric/MS +ruby/SM +Rudd/M +rummer +run-down/M +runny/T +run-up/S +rupture/GMDS +rushy/T +rusk/MS +rust/SWZG1D2M +Rustbelt/M +rutabaga/SM +rutherfordium/M +Rutledge/M +Rutter/M +rye/MS +Saab/M +sabotage/SDG +sabre/SMD +sabre-toothed +sacroiliac/S +sacrosanct +sad/T3PY +sadden/dS +Sadie/M +sadist/1W +saffron/M +saguaro/MS +saint/YDSM +Sal/M +salamander/SM +Salazar/M +salesclerk +saline +salmon/MS +salt-cat +salted/U +salt-marsh/M +saltpetre +salubrious/Y +salubrity/M +salutation/M +salvager/M +Samantha/M +Samaria/M +samba/SMGD +samizdat +sample/DRSGMJ +Sampras +Samsung/M +Sana'a/M +Sanchez/M +sanctifier/M +sanitisation +Santa/M +Satanist +sateen/M +satisfies/E +satisfy/BDkRSG +saturate/CnSGND +Saturn/M +Saul/M +Saundra/M +savouries +savoy/SM +sawyer/MS +scabrous/Y +scalpel/MS +scamp +scandalous/Y +scant/2zZY +scarifier +scarlatina/M +scatology/wM +scavenge/RDGS +Scheherazade/M +schizophrenia/M +Schloss/M +scholastic/SY +schoolhouse/SM +schoolmate/S +Schuyler/M +Schweitzer/M +scimitar/SM +scoop/MGS6RD +scorer/SM +Scottish +scouter/M +Scrabble's +scrambler/UMC +scrimmage/MGSD +Scudamore/M +scuff/DGS +scurvy/SY +seafarer/SM +sealskin +seamer/M +Seamus/M +seance/S +searcher/AMS +seasonality +seater/M +sebaceous +secede/SGD +seclude/GNXSVD +securely/I +sedation/M +seed-potato +seedy/TP +seep/GSD +segmentation/M +seignior/SZM +seldom +selenite/M +self/p +self-addressed +self-catering +self-cleaning +self-congratulatory +self-consistency +self-fulfilling +self-hatred +self-made +self-opinionated +self-possession +self-proclaimed +self-regulatory +selfsameness +self-serving +self-willed +Sellafield +seller/AMS +semanticist +semaphore/DSMG +semeiotician +semi-detached +semi-final/S +seminar/MS +semplice +senate/SM +Sendai/M +sender/SM +senior/SM +Sennacherib/M +sensationalist/W +sententious/Y +sentimental/Q3-8qYs9 +sentry/SM +separateness +September/SM +septet/SM +septicaemic +seq. +sequacious/Y +sequence's/F +sequentiality/F +sequester/dSnN +sera's +Serena/M +seriousness +serpent/SM +serpiginous +serried +serum/MS +serviceable/U +servomotor/MS +Seton/M +sets/AI +set-up/S +severalty/M +severance/MS +sewer/SM +sex/SzG3p2ZD +sexology/3M +sex-starved +sextant/SM +shading/M +shadow/DGp2ZMS +shadows/c +shaft/DGSM +shake/2Z7SRG +Shakespearian +shanghai/DSMG +Shannon/M +shape's +Shapiro/M +share/7SRGDM +shareholding/S +Sharif +sharpshooter/MS +Shaun/M +Shay/M +sheath/MGDJS +Sheba/M +shed/SGM +she'd +sheikdom/SM +Sheilah/M +Shelby/M +shelf-life +shelf-mark +shelf-room +Shelia/M +she'll +shelving/M +Shepstone/M +Sheraton/M +Sheri/M +Sherwin/M +shiftless/Y +Shi'ite +shilling/SM +Shiloh/M +shin-bone/SM +shipborne +shippable +shirt-front/S +Shiva/M +shock/GRSDk +shoes/c +shoot/fGSc +shopkeeping +Shoreham +shoreward +shortbread/SM +shortcake/MS +short-circuiting +shortening/M +shorthand/M +shoulder-high +shovel/MDR6GS +Sicily/M +sick-leave +sick-pay +sidereal +Sierra/M +sieve/SGDM +sift/ASGD +sigma/M +signet/MS +signori +Sikhism/SM +silicone/SM +silty/T +Simon/M +simper/dS +simple-minded/Y +simplifier/SM +simplify/ncGDNS +Simpson/M +simulator/MES +sinecurist/M +singeing +singer-songwriter +single/PGDS +single-line +sinisterness +sin's/A +sintered +sirocco/MS +sisterly/P +sitting/M +situation/M +situational +sixty-five/H +sixty-four/H +skate/GRSMD +skedaddle/SGD +sketchy/PT +ski/GMS +skimpy/PT +skinflint/MS +skirt's/f +skitter/dSZ +skittish/YP +skittle/MS +skull/SM +skyjack/RJSGD +skyway/M +slacken/dS +slant/GDS +slave-driven +sleaze/ZS +sleet/GZDSM +sleight/SM +slimy/T +slipper/2Z +slogan/SM +sloop/SM +sloppy/TP +sloven/YSM +Slovenia/M +sluggish/PY +sluice/DMSG +slumberous +slushy/PT +slut/SM +smidgen/MS +smiley/M +smith/ZSMy +smokestack/SM +smooch/GSD +smutty/PT +snappable +snapping/Y +sneer/DSkGM +sneeze/SGD +snick/RM +Snider's +snigger/dS +snivel/RSDGJ +snook/RM +snowball/GDSM +soap/SGZMD2 +sob/SDG +Soc. +society/oSM +sociolinguistic/S +sociology/13MwS +socio-political +sodomite/SM +softer +soft-headedness +softy/MS +Soham/M +solecist/W +solidarity/SM +solitaire/SM +solitude/SM +Solomon/M +solstice/SM +Somerset/M +somnolent/Y +songbook/S +Sonoma/M +soon/T +sooty/T +sophism/SM +sophisticate/GShD +soppy/T +sorrowful/P +sort/FSMAGD +sot/MS +soul-destroying +soundtrack/MS +Southall +south-East/M +south-easterly +Southfield/M +south-south-east +south-Westerly/S +souvenir/MS +sovereignty/SM +soviet/SM +soya +spacesuit/SM +spadiceous +Spanish/M +spanker/M +spar/dMkDGS +SPARC/M +sparrow/SM +Spartan/S +spasmodic/Y +spavin/SM +speak/GRS7J +spearmint/SM +specialised/U +spectator/MS +spectre/MS +spectrogram/SM +speechifying +spendable +spendings +Sperry/M +sphagnum/M +spheroidal +spicule/SM +spigot/SM +spiny/T +spiral/SDGY +spirituous +spiting +split-second +splotchy/T +sportscast/RSGM +sporty/TP +sprightly/TP +springiness/S +Springsteen/M +sprocket/dSM +spryly +spryness +spunky/T +spurge/SM +spy/GDMS +spyglass/SM +sq +squad/MS +squall/MYSDG +squarer/M +squelch/ZDSG +squiggle/SYMGD +squint/SDG +SSA/SM +SSS +stablemen/M +staffed/cUf +staff's +stage-management +Staines +stairway/MS +stalactite/MS +stammer/rdSk +stamped/d +standstill/SM +Stanford/M +stannous +Stargate/M +stark/TYP +starship +starve/GNSnD +state/aSALGfIcD +statecraft +statehood/MS +stateless/P +state-of-the-art +stationed +stationing +statue/MSD +statuesqueness +stay-at-home +stayer/SM +steadied +steadier +stealing/M +steepen/dS +Stefan/M +Steffi/M +stepbrother/MS +stepdaughter/MS +Stephan/M +stepmother/SM +step-parent/SM +stereoscope/ZWM1S +sterility/SM +sternal +steroidal +stethoscope/SM +stiff-necked +stilt/MhiSD +stimulator/M +sting/RZSGkz2 +stinter/M +stipple/GDSJ +stipulate/GNnDS +stitch/ADGJS +stocker/MS +stockroom/SM +stocky/YTP3 +Stokes's +stolonate +stoloniferous +stomach-tube +Stonehenge/M +stonewall/DSG +stool/MS +stoppered +stormbound +storm-finch/SM +storybook/SM +stout-heartedness +Stout's +stove/SM +straight-edge/SM +strand/GSD +strangle/DGRS +stranglehold/MS +Strathclyde/M +stratification/M +Streisand/M +stretch/eGDS +stria/nM +striation/M +strikebreaking/M +stripper/MS +strip's +strode +strophe/WSM +strove +structuralism/M +stuck/U +studentship/MS +studiedness/M +studier/SM +studio/SM +stupendous/YP +stupidity/MS +Stygian +style's +stylishness +stylist/WM1S +subatomic +subculture/SM +sub-editor/SM +subgroup/SM +subhead/MGSJ +subjection/SM +subjoin/GDS +subjugation/M +subliminal/Y +subordinative +subregion/SoM +subroutine/SM +subsidiarity +subsistent +substantiate/NSDGn +substantiated/U +substrata +subterranean/YS +subtotal/MS +succulence/M +suck/GRSD +sudsy/T +sue/R7SGD +Suez/M +sufficiency/IM +sugary +suggestion/SM +suitable/U +suitcase/SM +sulk/GZz2SD +sullen/YP +sulphite/S +Summerdale/M +summon/rdS +sump/SM +sun/DZpMSG2 +sunbeam/MS +sunscreen/S +superabundant +supercooling +supererogation/M +superimpose/XSGDN +superpose/DGNS +superuser/MS +supervise/DNGXS +supplicate/GDSNn +suppressant/S +suppressor/S +sure/TPY +surety/SM +surfing/M +Suriname/M +surreptitious/Y +surrogacy +surrounding/M +surtitles +survivalist/S +Susanna/M +suss/GSD +sustenance/M +sutler/MS +Sutton/M +swan/GMSD +swappable +swart +swashbuckling +sweatpants +Swedenborg/M +sweetbrier/SM +sweetie/SM +sweet-tempered +swelling/M +swept +swerving/U +swill/SDG +swish/SZDG +switchgear +swivel/DGSM +Sybille/M +Sylvester/M +Sylvia/M +synaeresis +synagogal +synch +synchronizing/C +synchronous/Y +syncope/nMN +synergy/SM +Syracuse/M +Syria/M +tabby/MS +tableau/M +tableaux +tableware/M +tabulate/SNGnD +taco/MS +Tacoma/M +tagged/U +tailless +tailspin/SM +Talladega/M +tallboy/MS +tally/DSG +tally-hos +tameability +Tampax/M +Tampere +tang/MZbS +Tanganyika/M +tangible/IYS +Tangier's +tansy/MS +Tanzanian/S +tarantella/SM +tarmacadam +tarot/SM +Tasmanian/S +Tass/M +tasty/TPY +tax/SklnMJG7D +taxable/S +tax-free +taxidermy/3SM +taxonomy/13wWSM +tea-leaf +team/MDGS +tear-gas/GD +tearjerker/S +tearlessness +tearoom/MS +technocracy/SM +techs +teensy-weensy +teleology/wM +Teletype/MS +televangelism/S +teleworking +temporarily +temporariness +Tennessee/M +Tennyson/M +Terence/M +Teresa/M +terminal/SYM +terminate/CNSn +Terrance/M +terrarium/SM +terribleness +terry/SRM +testability/M +tetchy/TY +tetrahedra/o +tetrameter/MS +text/KSFM +textured/U +thankless/Y +thatch/MRDSG +Thatcherite +the/JG +theatregoer/MS +theist/MWS +theodolite/SM +theology/Sw1M +therein +thermocouple/SM +thermoforming +thermometry/M +Theron/M +Theseus +they've +Thiensville/M +thin/TDRGPYS +thinkable/U +thirty-first/S +thirty-six/H +Thom/M +Thomson/M +thorax/MS +thousand/HSM +threepenny +three-point +three-way +thrill/DRMkSG +throat/2DMZzS +throne's +throttle/DMGS +throw-in +thrush/SM +thunder-box +thyself +Tiber/M +ticket-of-leave +tick-tack +tic-tac +tideway/M +tighten/dS +tight-fisted +tike's +timberline/S +times/ca +Tina/M +tinderbox/SM +tine/MSZ +tingly/T +tinkerer/S +tinsmith/SM +tin-tack +tinware/M +tip-offs +tired/Y +tissue/MS +titillation/M +titivate/nSNDG +title-deed/MS +titrate/SGD +Titus/M +toasting-fork +toastmaster/SM +tobogganist +Toby/M +toccata/M +tocsin/MS +toilsomeness +toil-worn +tolerant/IY +tom/MS +tombola/M +tombstone/SM +tone's/cf +tonic/MS +tonsil/SM +topknot/MS +topmost +torchlight +tornado/M +torpedoes +torpidity/S +totem/MS +Tottenham/M +toucan/MS +touch +touchstone/SM +tourist/ZMS +township/MS +Toynbee/M +trace/ANDGnS +trackbed +tracksuit/MS +tractive +tradescantia +tradition/SMo +traditional/3 +traduce/GRDS +trafficking/S +tragedian/SM +tragicomedy/MS +tragicomic +train-bearer/S +traineeships +traitorous/Y +trammelled/U +transceiver/SM +transect/SG +transferee/SM +transition/DMG +transitive/IPY +transmittable +transonic +transpire/DnNSG +transportable/U +transpose/N +travel/DRGJS +travertine/M +treacherous/PY +treated/KUAa +treble/SDG +tree/MpGS +trellis/MdS +trematode/SM +trend/DzZ2MSG +trews +tribute/FSE +tried/U +trier/MS +Trieste/M +trig/DRGS +trihedral +Trina/M +trinity/SM +trioxide/M +trip/SDRGMY +Tripoli/M +tripos/SM +Tripp/M +trochaic/S +troglodyte/SM +trophy/MS +trough/MS +troupe/SRM +trout/M +truant/GDMS +truculent/Y +true-blue +Truman/M +trundle/SDG +trunk/SGM +trust/E6SaDGj +tsarist +tube/MpS +tuberculous +tuberose/MS +tug/GSD +Tulsa/M +turd/SM +Turkey/M +turmeric/MS +turncoat/SM +turntable/MS +Tuscaloosa/M +tutorship/S +tu-whoo +twaddle/M +Tweed/M +tweezers +twiddler/M +twinge/DMGS +Twp +tying/UA +tyrosine/M +UAW +udder/SM +ulceration/M +ulna/M +umbilical +umlaut/GDSM +umpteen +unassertive +unbuckle/G +uncalled-for +uncompetitive +unconventional +underline +underpin +under-sheriff +understrength +understructure +underwear/M +undulate/SnNDG +unevenness +unfathomable/Y +unforgeable +ungallant +ungentle +ungraceful +unguarded +unhorse +unidirectional/Y +uniformity/MS +unimposing +unionist +unlatch/G +unmusical +unnavigable +unpartizan +unprofitable +unrelenting/Y +unremitting/Y +unset +unshakable/Y +unstamped +untimely +untyred +unwomanly +upgradable +upheld +uphill +upon/F +uprightness +upstage/SDG +up-tempo +up-to-the-minute +uptown +uracil/MS +uraemic +urchin/MS +urethra/MS +urethrae +urge/JDGS +Uruguayan/S +USAF +USCG +USIA +USMC +USN +usual/UY +utilitarian +Uttlesford +Vail/M +Valletta/M +Vancouver/M +vane/MS +vanquished/U +vaporous +vapour/MS +Vargas/M +variant/IS +variation/M +variegation/M +varietal +vary/BSDlGkh +Vasily/M +vassalage/MS +veal's +Vega/SM +vegetable/MS +vegetation/M +velar/S +vend/SbDG +veneer/GnDSNM +venerate/GBDS +venereal +venison/M +venomousness +veracity/SM +verify/BnRDGNS +Verne/M +Verona/M +Veronique/M +verruca/MS +versus +vertiginous +verve/MS +vest/ySDGLoM +vestige/MoS +vexes +VFW +VGA +VHF +vice-Chancellor/SM +vicegerent/SM +vice-Presidential +viceregal +victorious/Y +video/DMGS +vie/7SDG +viewfinder/MS +vigil/SM +vignette/MGDS +Vikram/M +villain/MSZ +villainy/SM +viola/nMS +violin/3MS +violist +violoncello/SM +viral/Y +Virginia/M +virtual +virtuosi +virtuous/Y +visa/MS +viscount/MS +visibly/I +vision's/K +vitalizes/C +viticulturist/S +vivacity/SM +Vivaldi/M +vivendi +vivisection/MS3 +VLSI +vocal/98-Q3sqSY +vocalised/U +vocalist +vocational +vociferation/M +vodka/SM +Voetsek +vogue/SM +volcanic/Y +volcanism/M +volcano/M +vole/MS +Volker +volley/SDMG +volute/SF +vortex/SM +voyageur/SM +voyeuristic +vulnerably/I +Wadsworth/M +wage/MS +waggoner's +Wahhabi +waif/MS +waive/GSRD +Wakayama/M +wakeup +Walgreen/M +wall/SDGM +Walton/M +Walton-on-Thames +wand/SM +wanted/U +wanton/Y +wapiti/SM +warehouse/DmMGS +warfare/M +wariest +warlord/SM +warm-down +warm-up/S +Warne/M +warrant/S7ZDGM +war's/C +washstand/SM +washy +wast/RDG +wastefulness +wasteland/MS +waste-paper/M +watchtower/SM +water/mMpZdS2 +waterfowl/M +Waterloo/M +waterspout/SM +Watertown/M +Waupaca/M +waveband/MS +wavelet/MS +wayfarer/SM +weaken/dS +wealthy/T +wearable/U +weasel/SDGM +Webb/M +wedding/MS +wedge/GSMD +Wednesfield +wee +weight/cDSG +Weissmuller/M +welcomed +well-chosen +well-designed +well-dressed +well-established +well-informed +well-meaning +well-read +well-rounded +well-spoken +well-timed +welt/RSDGM +Welwyn/M +were +Wesley/M +Westfield/M +Westmorland/M +Westport/M +whalebone/SM +Whalen/M +wheedle/DSG +wheel/GRDSM +wherever +wherewith +which +whiff/DGSM +Whig/SM +whilom +whirl/GDS +whit +Whitbread +Whitelaw/M +whitewasher +whither +Whittaker/M +Whitwell/M +wholeheartedness +whys +wide-screen +wig/MGSD +wiggle/RGYDS +wilderness/S +wildfire/MS +Willcocks +Willemstad +willpower/MS +winch/DSGM +windcheater/SM +winder/MS +wind-up/SM +windward +wingspread/SM +Winifred/M +wink/RDSG +Winnebago/M +winterer/M +wintry/T +wire-tapper +wiring's +wiseacre/MS +Witherspoon +within +Wittgenstein/M +witty/PT +wobbler's +wolfhound/SM +Wollongong +womankind/M +woodenness +woodshed/MS +word-perfect +wordy/TPY +workaholic/S +workforce/S +Workington +workload/SM +worktop/S +world/fMS +worldly-wise +worsted/MS +worth/pZz2 +worthily/U +worthiness/U +worthwhile +wrack/M +wraith/MS +wrangle/GRDS +wreak/DSG +Wrexham/M +wrong-foot/D +wrong-headed/Y +wrongness +wroth +wry/3 +wryest +wryness +Wu/M +wurzel/S +Wycombe +xerophyte/MS +xii +XOR +yachters +yank/SGD +Yaound/M +yap/SGD +yard/SM +yeah +Yeats +yellowhammer/MS +yeomanry +yesterday/SM +yolk/SM +yon +yore +young/T +Younis +Younker +yowl/GSD +Zachary +Zambia/M +Zealanders +zebu/SM +Zeeland +zeugma/M +zippy/T +zoology/3SMw1 +a/o +Aaron/M +abandon/LdS +Abba/M +abduction/SM +abet/GSD +abject/PY +abjure/nyRSDGN +abolitionist +aboriginal +aborigine/oSM +abort/DVGvSu +Abraham/M +abrasion/M +abs/M +absenteeism/SM +absorb/GRDXNVkS +acacia/SM +academe/1SMZw +accentual/Y +accentuate/NDSnG +acceptor/MS +accessible/IY +acclimate/Ss9Q8DNnG +accolade/MGDS +accord/SMDkRG +accursedness/S +accustom/dS +acetaminophen/S +acetone/SM +aches/KFA +achievements +achieving/c +acquisitive/PY +acquittal/SM +acquitter/M +acrimoniousness/S +acropolis/MS +actioning +activating/A +active/3NSnP +actress/MS +act's +Adair/M +adaptive/P +adaptivity +addiction/MS +addresses/aA +Adelaide/M +adenoid/S +adenoidal +adipose/S +adjudicate/DGnSNVy +adorableness/S +Adrienne/M +adult/YPSM +adulterant/MS +advance/LGSDR +advantageousness's +adventures/a +adventurously +adverseness/S +advertising/M +advisabilities +advisedly/I +advisee/SM +advocate/GSVD +aegrotat/SM +aerobatic/S +aesthetic/S +affecting/E +afferent/Y +affiliated/U +afforestation/M +after-care/MS +afterglow/SM +after-image/MS +again +gar +agate/SM +ageing +agent/AMS +aggrandise/DSLG +aggravation/M +aggregated/E +aggregates/E +aggregation's +aggrieve/DhSG +agouti +Agra +agrarian/S +agreeable/PE +agribusiness/SM +aground +ahead +Ainu +air/mzGTp2ZRMDJS +air-conditioner +Airdrie +aka +alarmist +albinism/SM +alcoholic/SM +alcoholism/MS +alder/mM5S +aleatory +Alexander/M +Alexandrian +alginate/SM +alias/GSD +alien/NGDMn3S7 +alienable/IU +alight/SGD +Alison/M +alkaline +alkalis/QdS +allegro/MS +alleviation/M +alleviator/SM +alligator/MS +allocatable/C +allophone/MSW +alloyed/U +all-rounder +alone/P +alongside +Alps +altarpiece/SM +alterer/S +ALU +amateurism/SM +ambiguous/UY +ambit/NMX +ambulate/SNyDGn +amerce/SGLD +americium/SM +amethystine +Amman/M +amok +amplitude/SM +amulet/MS +amused/U +amusing/P +amylase/MS +Anabaptist/MS +anaesthetize/NRDSGn +anaglyph/M +analogue/SM +analyticity/S +ancestor/MS +ancient/TPYS +Andre/M +Anglia/M +angling/M +anglophone/MS +Anglo-Saxon +Angus/M +animalism +animality +animist/WS +Anita/M +ankle/GDMS +Annapolis/M +anneal/DRGS +Annelida +annexe/M +annular/Y +anodyne/M +anorexic/S +antagonise/RSGD +Antarctic/M +antechamber/MS +antenna/SM +anthill/S +anthropogenic +anthropomorphising +anthropomorphizing +anticipated/U +anticlerical/S +antidepressant/SM +antifascist/SM +antilogarithm/MS +antimalarial/S +antimony/M +anti-racism +antiresonator +antithetical +antithyroid +antitoxin/SM +antitruster +antiwar +antler/MS +Anton/M +any +Apalachicola +aphasia/SM +Apia/M +Apollonian +apostasy/SM +apotheosis/M +apotheosized +apparel/DGMS +append/SGRD +appetiser/SM +applicant/SM +appositeness +appraisees +appreciable/YI +apprehending/a +apprehensiveness/S +approve/RkEGSD +approximate/GVNSvDYn +April/MS +aquaplane/MDGS +arboreal/Y +Arcadia/M +Arcadian +archangel/MS +archduchess/SM +architectonics/M +archival +archive/DRS3MG +arcsine +ardency/M +areal +Argos +arisen +Arkansan +armless +arose +ARPA +arr +arranging/AEK +arrestor/SM +arrhythmic +arrhythmical +arthritides +arthrogram/MS +articulation/M +artlessness/S +Aruba/M +asap +aseptic/Y +Ashanti/M +ashen +ashram/SM +aspidistra/SM +aspirant/SM +assailant/MS +assaulter/M +assemble/SGREDY +assert/xvuRSDVG +asserted/A +assertive/P +assess/7LS +assistantship/SM +associable +association's/E +astigmatic +astir +astrology/w1MS3 +asylum/MS +At +atavism/MS +atavist/SMW +athirst +Atlantic/M +Atlee/M +atomistic +atop +atrocious/PY +atropine/SM +attain/lDRBGLS +attainment/A +attempts/A +attended/U +attenuation/M +attest/DnGNS +Attila/M +attributable/U +attributed/U +audibility/MIS +audiovisual/S +audition/DMG +aurora/SM +auscultate/DGSNn +auspiciousness/MS +austral +auteur +authentic/nNY +authenticity/I +authorizing/A +autocorrelate/GSnDN +autofocus +autopsy/SMDG +auto-suggestion +Avarua/M +averageness +avidity/MS +Aviv/M +awoke +axes/F +axil/S +axiomatising +axiomatizing +Azerbaijan/M +azure/SM +babel +bachelorhood/SM +backarrow +backgammon/MS +background/DRGSM +backpack/SRDGM +backslapping/M +backslash/GSD +backspin/SM +backstitch/MSGD +backup/MS +backwardness/S +backwash/DGMS +bacteria/Mo +badland/S +bag/2ZzR6MGDS +baggage/mSM +bagging/M +bails/m +Baird/M +bakery/MS +balcony/DSM +ballet/MWS +ballfields +Ballymena/M +balmy/TP +balsamic +bandoleer/SM +bandy-legged +Banjul/M +banns +bantamweight/MS +banzai/S +Barbara/M +Barbuda/M +Barnard/M +Barnes +Barnsley/M +barnyard/M +baronial +barque/MS +barricade/GDSM +Barrow +barstool/SM +Barstow/M +baseline/SM +basil/SM +basilica/SM +basketwork/SM +bassoon/3MS +bathrobe/MS +bathroom/DMS +batik/SM +battlefield/MS +baulk/GZSMD2 +bawler/M +bay/GMDS +bayberry/MS +Bayesian +bbl +BC +be/Y +bean/DRGSM +bear-baiting +bearing/c +bearing's +Beatles +Beauchamps +beauteous/PY +beauty/jSM6 +beaver/dSM +bebop/SM +becalm/DGS +bedeck/DGS +bedizen/Sd +bedmaker/SM +beefy/PT +beep/DRSGM +beeswax/MDG +beetler +befog/DGS +befoul/DSG +beggarly/P +beggary/M +begone/S +beguine/SM +behaviourism/SM +beige +belie +belittler/M +Bellamy/M +Belleville/M +belligerence/ZSM +Beloit +beman +bended +benediction/SM +Benelux/M +Benny/M +Benson/M +benumb/SDG +Bern/M +berserker/M +berth/GSDM +beset/SG +besmear/DGS +besought +Bessie/M +bestiality/SM +bestrewn +best-selling +beta/MS +betatron/M +betcha +betray/GRSD +Betsy +bevel/RSDMG +bewail/DSG +bewilder/idLhSk +bib/DMGS +biblicist/SM +bicarb/SM +bidden/U +bidirectional/Y +bids/fcAe +bifurcate/YSGnDN +bigamy/3MS +bigheartedness/S +bighorn/SM +bigness/S +bigwig/SM +bijou/M +bile/MS +bilharzia +bimolecular/Y +bingo/SM +biochemistry/SM +bionic/YS +bipartition/M +birdlime/SMGD +birdsong +birdtables +birdwatch/RG +bisexuality/MS +Bissau/M +bit/CS +bitser/M +bitter-sweet/Y +bivalent +black/TSPYGD +Blackpool/M +blackthorn/SM +bladder/MS +bladdernut/M +blame/R7SGMpD +blameless/PY +Blantyre/M +blazoner/M +bldg +bleach/GRDS +bleached/U +bleak/TPSY +bleary-eyed +blemish/MDSG +blessed/U +blink/RSGD +blockage/MS +blondness/S +bloodsport/S +bloodworm/M +bloody/STPGD +blossom/dMS +blowfly/SM +blow-out/SM +blue-collar +bluegill/MS +blueing's +blue-pencils +blunderbuss/M +bluntness/S +blurriness/S +blush/GDkRS +bobby/MS +bobbysoxer's +bobwhite/SM +bodyguard/MS +bodyweight +Boise/M +Bolshevik/SM +bolus/MS +bombaster +Bombay/M +bonehead/DMS +Bonn/M +Bonneville/M +bookbinder/Z +bookie/MS +bookmark/GSDM +boon/SM +borax/M +Borg/M +Borneo/M +borrow/RGS7JD +bosom's +botfly/M +bottom/dSpM +Boucher/M +bough/SM +bought/c +bounden +bow/mRGDS +bowed/U +bowser/M +boxful/M +boxing/M +boxlike +boycott/SGD +boyishness/S +Boyle/M +bozo/SM +bps +Brabham/M +brad/DSGM +bradawl/M +braid/DGSJ +brainpower/M +brainy/PT +brake/SGDM +branching/M +Brando/M +Brandon/M +brands/a +brashness/S +Brazil/M +breakaway/MS +breakdown/SM +breakfast/MRGDS +breaststroke/SM +breath/RpZDS7JGM +breathlessness/S +breeze/ZMGSD +brethren +bric--brac +brickwork/SM +bridesmaid/MS +bridge/MGSD +Bridgetown/M +Bridgewater/M +bridgework/MS +bridled/U +brier/SM +Brierly/M +bright/TPGY +bright-eyed +Brindisi/M +Brinkley/M +Brisbane/M +brisk/TYPG +brisket/SM +Britannia/M +Briticism +broadband +broadcloth/SM +brocade/DMSG +broccoli/MS +Brock/M +broken/UY +broken-down +broken-heartedness +bronchi/M +bronchitis/MS +broomstick/MS +brown/DTSMPGY +brownstone/MS +brunch/SDGM +Brunei/M +brunet/S +Bruno/M +brushier +brushwood/SM +brutality/MS +BSD +bubo/M +buck/SMDG +Buckley/M +buckskin/SM +bucktooth/DM +budgetary +budging/U +bugaboo/SM +buggery/M +built/Ac +bulb/DSGM +Bulgaria/M +bulk/ZSMD2G +bulkhead/DSM +bullock/SM +bulrush/SM +bump/DRGZS2 +bungalow/SM +bunkmate/MS +burbs +Burch/M +burglar/MS +Burkina/M +burn/DR7kSGJ +Burnside/M +Burton/M +button/UdS +buttonhole/DMSG +button's +by-law/MS +bys +byte/MS +cabala/MS +cabby's +cabin/dMS +cabinetmaker/SM +cabinetmaking/SM +cabinetwork/MS +cablecast/SG +Cabot/M +caddish/YP +cadence/CMS +caesarian +caesium/M +cagey +Cahokia +Cain +Cairo/M +caisson/SM +Caius +calaboose/SM +calendar/SdM +calf/M +calf-length +Calhoun/M +Callao +callus/SdM +caloric +calorimetry/M +Caltech +calumniation/M +Calvinism +Calvinist/W +Cambodian/S +camel/SM +Cameron/M +camped/C +Campos +Canaanite +Canada/M +canal/q-GSMQ8D +candidate/MS +candlepower/MS +candlestick/MS +candlewick/SM +canebrake/SM +canine/S +canister/dSM +canker/dMS +Cannes +cannibalism/SM +cantankerous/YP +canto/MS +canton/dMSL +canvasback/SM +capably/I +capacious/PY +capacitor/MS +caper/d +Capilano +capillary/S +capitalises/c +Capone +caption/DGM +captious/PY +car/rZdMS +caravan/MSDG +caravanserai's +carbine/SM +carboniferous +carcinogenicity/MS +cardiograph/SM +cared/U +Carey/M +carload/GMS +Carlow/M +Carlson +Carmel +carob/MS +Carolina/SM +carport/MS +Carrick +Carrickfergus/M +carving/M +cascara/SM +case/DMLJSG +cashmere/SM +cassava/SM +cassino's +casteth +cast-iron +catalogued/U +catapult/GMDS +catastrophe/SM1W +catechize/GSD +categorised/U +caterwaul/GDS +Catholicism +Cato +catsuit/MS +cattery/M +catwalk/SM +Caucasus +causerie/MS +caustic/SY +cavalry/SmM +caviare/MS +cayman/S +CDC/M +CDMA +CD-ROM +ceasefire/S +Cecil/M +cementa +cementum/MS +cenobite/SMW +censer/SM +centenary/S +Centrex +Cepheid +ceramicist +ceramist/SM +cerement/SM +cervix/M +cessation/SM +Ceylon +cha-cha +Chaetognatha +chafe/SGD +chain/UDGS +Chalan/M +chandler/MS +changing/U +chantry/SM +chaperon/d +chaplain/MS +charcoal/GSMD +charge/cGEfDAS +chargeable/A +charitableness/MS +charitably/U +chartreuse/SM +chary/TPY +chasteness/S +Chattanooga +Chaucer +Chechen +check-in +check-list/S +check-up/MS +cheeky/TP +cheerlessness/S +cheese/ZMDSG +chef-d'oeuvre +Cheney/M +Cheng +Chernobyl/M +Chesterton/M +chestnut/MS +chevroned +Cheyenne +Chicagoan/S +chickadee/MS +chicken/dSM +chicken-and-egg +chickweed/MS +chihuahua/S +childishness/S +children/M +chimera/SMwW +chin/pSMGD +chink/DGMS +chintz/SMZ +chintzy/T +Chippendale +chirpy/T +chirrup/Sd +chitinous +chlamydiae +chlorate/M +chlorine/nNM +chlorofluorocarbon/S +Choctaw/S +chopper/d +chordata +choroid/S +chorus/MdS +christen/dAS +Christina/M +chromaticism/M +chronicle/MSRGD +chub/SMZ2 +chubbiness/S +churchly/P +Church-of-England +CIA +cine/M +cinnabar/MS +circuitous/YP +circulator +circumcise/DSGNX +circumspection/SM +circumsphere +citified +citrus/SWM +civic/S +civics/M +clackers +claimed/U +Clancy +Claremont +classer/M +classicalist +classification/MaCA +classmate/SM +Claus +clausal +claymore/SM +clean/BDRTPYGS +cleanly/TP +clearing/M +clear-up/S +cleave/RGSD +Clemence +Clementine +Clemson +clench/GUSD +clerical/S +clerkship/MS +clever/PY +cleverness/S +cling/RGZ +clip-clop +clipped/U +cliquishness/S +clog/MSGD +cloisonnes +cloistral +clop/DSG +close-mouthed +closing/E +clothesmen +cloud/pZ2SMDGz +cloven +cloy/DkSG +cluck/DGMS +clunky/T +cluttered/U +coal-holes +coalition/3SM +coast/SGMD +coated/U +co-author/SMd +coax/RkoG +cobble/GRDMS +coble/M +cocker/M +cock-fight/JSGM +cock-up/SM +cocoa/SM +codependency/S +codependent/S +codfish/MS +codger/SM +codification/M +coding's +codon/S +coffer/SdM +Coffey/M +cog/DMGS +cognitional/Y +cognizable +Cohen/M +cohere/GDS +coherency/S +colatitude/SM +cold-shouldering +colitis/SM +collage/SDMG +collated/U +collator/SM +collinear +colloquial +colloquialism/MS +colonialism/SM +colour/qQ-8RNpGJSnD6jM +colour-fastness/S +combatant/MS +combativeness/S +combination/oM +combo/MS +comedienne/MS +commence/DLAGS +commendable/Y +commie/MS +committal/MS +committing/c +commodity/MS +commonalty/SM +commotion +commune/oQ8S3DG +communicant/SM +communication's +compatibleness/M +compensative +compre/M +compilation/SAM +compile/RCNS7DG +compiling/A +complacence/Z +complementarity +complementary/PS +completest +completive +complexities +composes/AE +comprehensibly/I +compressed/UC +compresses/C +compromising/UY +compulsiveness/S +CompuServe/M +comradeship/SM +conceal/S7RDkLG +conceivably/I +concern/hUD +concerts/E +conciliatory/A +concious +concision/M +concurrent +condenseness +conditions/KA +conductible +confidante/SM +confidentiality/SM +confidingness +confine/L +confute/NSnDG +conga/MDG +Congregational/3Y +congruently/I +congruity/MSI +congruous/YPI +conjecture/GDoSM +conjugation/M +conman/M +connected/EPY +conquistador/SM +consecrate/ADNSnG +consequentialness/M +conservation/M3 +conservationism +considerately/I +consignor/S +consolable/I +consol's +constitutionally/U +consul/SM +consume/RVSXvkNDhGJ +consummate/DSGVY +contagiousness/S +contd +contemptuous/PY +continual +continuation/ME +continue/7DSGN +continuum/M +contraband/M +contrabass/M +contraception/MS +contradiction/SM +contraindicate/VSNnDG +contravene/SGD +contributory/SY +contriteness/S +controllably/U +controversialist/MS +controvertible/I +contumacy/MS +contumelious +contusion/M +conversational/3 +conversion/G +convertibilities +convertibility/IM +convulsion/M +cooking/M +Cookstown/M +coolant/SM +cool-bag +cool-box/SM +cool-headed +coolie/MS +coolish +coordinator/M +Coors +cop/GDRdMS +Copeland +Copernicus +co-pilot +copiousness/S +copper/dZ +copulate/GSyD +copyright/GRMDS7 +cordiality/MS +corduroy/DSMG +corgi/SM +cornbread/S +Cornwell +coronet/SDM +coroutine/SM +corpora/MnVo +corporation/MIS +corpus/M +correlate/CSGDN +corrupted/U +cortices +Cosmo +Cossack +costume/DRMSG +coterie/MS +cottar's +counter/md +counterfoil/MS +counter-inflation/y +counterinsurgency/MS +countersignature/MS +counterstrike +countrify/D +countrywide +coup/AS +court/SRYMGD +courthouse/MS +courtroom/SM +courtyard/MS +couture/MS +coverall/DSM +covers/AEU +covetous/PY +cowboy/SM +cower/dkS +co-worker/SM +Cowper/M +coy/TPYGD +coyed/C +CPI +cpl +CPR +crablike +crafty/PT +cragginess/S +Cramer +cramp/DSMG +cranberry/SM +cranelike +crankiness/S +craze/SZGDM +craziness/S +crease's +credence/MS +Cretaceous/Y +crew/mMDGS +cribbage/SM +cringer/M +crock/DGSM +Cronin +croquet/SdM +crossbones +cross-country +cross-hair/S +cross-legged +crosstalk/M +croupy/RT +crud/GDMZS +crunchiness/S +crushproof +crustiness/S +CSYS +Cu +Cuba/M +cubbyhole/SM +cube/M3S +cubicle/SM +cuboid +cuckoldry/SM +culinary +Culver/S +Cumberland/M +cumulonimbus/M +cunt/MS +cupric +curbstone/SM +curd/GvuMVSD +curious/TPY +cursor/dSM +cursorily +cursoriness/MS +cursor's/K +curved/A +curved's +cuss's/F +custodianship/MS +custody/SM +cute/TYP +cuticle/SM +cutler/ZSM +cwt +cybernetics/M +cyberspace/MS +cymbal/M3S +cynicism/MS +Cyprian +czarship +dab/TGDS +Dacca/M +dace/M +Daedalus +daft/YTP +dagger/dMS +dailiness/S +daily/SP +Daimler +daiquiri/MS +dairying/M +dale/MmS +daleth/M +Dallas +dalmatian/S +dapperer +daring/P +Darjeeling +darkly/T +Darlington/M +darneder +DARPA/M +Darwen/M +dataset/S +dated/eU +Datsun +dB/M +dBi +dBW +DCMG +deadener/M +deafen/dkS +deal/JRGS +death-watch/MS +dbcle/SM +debate/RM +debauched/P +debility/SM +debrief/JRG +debris/M +Dec +decadence/Z +decagon/MS +decapitate/DSG +decathlon/SM +decay/GD +deception/MS +decile/MS +decipher/dL7r +decisiveness/IS +deckchair/S +deckhand/S +declares/A +decode/B +decongestant/S +decorate/NVvGnDSu +decorated/AcU +decrescendo +deducer +deep-freeze/G +defamation/M +defendant/MS +defenestrate/DSG +defensibly/I +defibrillator/SM +degas/JDG +de-ice/DRGS +deictic +deify/NDGnS +deity/MS +deject/GiDhS +Delano/M +delay/D +delft/SM +delicate/IPY +delicates +delight/6jhGi +delineation/M +Delius +demigod/SM +demijohn/SM +demise/DMGS +demit/DNSG +demitasse/MS +demonstration/M +demote/DGW +demulcent/S +denizen/dSM +Dennis +dnouement +denseness/SM +denuclearize/SGD +denude/DRnG +denunciation/M +Denver +depart/LG +deplete/DGSNnV +depression/M +derivable +dermatology/3SMw +Derwent +desecrate/SDNnG +deserved/UY +desiccate/DGSNn +desideratum/M +designate/DKGS +desirable/PS +desist/DGS +desolater/M +despairer/M +desperadoes +desperate/YPNn +desperation/M +destroy/DR7GS +destruct/bvVuGDS +destructibility/SMI +detached/P +detectably/U +detention/MS +deter/SGD +detest/ln7N +detribalise/DSG +development/fMS +deviate/NDSGn +devise/DJRSG +Devonian +Devonshire/M +devote/ixh +dewdrop/SM +dewy-eyed +Dexedrine +dexes/I +DfES +diadem/SMd +diagnostic/SYM +diagnostician/MS +diamagnetic +Dianne +diaphragmatic +diatomic +diciest +dickens/M +Dickerson/M +dickier +diem +digester/M +dignitary/SM +dignity/ISM +Dijon +dilettantism/MS +dill/YM +dilution/SM +dimensional +diminutive/PSY +dimmed/U +dimness/S +dinar/SM +ding-dong +dinginess/S +dingoes +diorama/SM +diphthong/SM +direction/IMaS +directly/I +directorship/SM +disarrange/L +disburse/LSGD +discipliner/M +discipline's/I +disco/MG +disconnecter/M +discreeter +discreetest +discreteness/S +discriminating/IY +disembody/L +disembowel/LDSG +disengage/L +disgust/k6jh +disinterest/i +disk/MS +diskette/S +disorder/hi +disparage/LRkDSG +dispirit/dS +dispose/KGNISXD +dispute/lnRNDGS +disrepair +disservice +dissipate/nVRNDShiG +dissociate/NVvnSDG +dissuader/M +distanced/e +distinct/TvPVYu +distinguishably/I +distracted/P +distrait +disunion +ditto/DMGS +ditty/MS +diverticulitis/M +divest/SGD +division/A +divorc +Djakarta/M +djellabah's +DLR +Dmitri +DNA +do/7TGJRzy +docility/SM +dockworker/S +DoCoMo +doctor/dSM +doctoral/K +doctrinal +Dodson/M +doeskin/MS +dog-biscuit/MS +dog-end +dogfight/GSM +dogmatist/MS +dog's-tail +dogwood/SM +doldrums +doleful/PY +dolefulness/S +dolorous/Y +dominance/KSM +domineering/P +dominion/SM +dong/MGSD +dongle/S +Donny +Doolittle +doorhandles +doormat/SM +doors/eI +dopamine +dopey +dormouse/M +Dortmund/M +dose/cSMDG +double-checked +doubleheader/MS +doubter/MS +Dougherty +dowdiness/S +down-and-out/S +downtime/SM +downwind +drab/YPT +dragnet/SM +dramaturgy/M +drat/SDG +draughty/TP +Dravidian +drawn/ceAI +dreader +dreamboat/MS +dreamed/U +drear/2Zz +dressage/MS +dressing/M +dressmaking/MS +drinkables +drone/SGkDM +drop-test/GSDM +drudger/M +Druidic +dryad/MS +dry-cleaned +Duane +dubber/MS +dubious/PY +ductile +dude/MS +dudgeon/SM +duff/GRDSM +dug-out +Dumbarton/M +dumbfounder +Dunlap +Dunstan +duodena +duodenum/M +duple +duplication/MA +duplicitous +Duracell/M +dustpan/MS +duty-free +duvet/SM +Dvork/M +dwarfness +dwelt/I +dye/7GDRJMS +dyestuff/MS +dyslexic/SY +dystrophy/M +earthward/S +earwax/M +eastbound +easternmost +Eastleigh +east-north-east +eater/cM +ecclesiastic/SMY +echo/AGD +echo's +ecoclimate/MS +Econ. +econometricians +ecosystem/MS +Ecuadoran +ecumenicist/MS +eczema/SM +Ed +edgeways +edified/U +edition/MS +editorship/SM +EDP +eds/F +Eduardo/M +edutainment/SM +EEC +eerie/T +effaceable/I +effacer/M +effective/IPY +effervescent/Y +efficiently/I +effluence/MS +effluvia +effulgent +effusive/P +egg/MDGS +egis's +egoist/SMWw1 +egomaniac/SM +EiC +eighty-onefold +eighty-two +einsteinium/M +eisteddfod/WMS +ejecta +elaborators +eland/MS +Elbert +elbow-work +electioneer/GSD +elector/SM +electorate/SM +electric/SY +electricity/MS +electrification/M +electroscope/SMW +electrotype/SDGM +elegiac/S +Elena/M +elevation/M +elevens/S +Elise/M +Elkhart +Ellesmere +ellipsis/M +ellipsoid/SM +Elmhurst +elocution/3SMy +elodea/S +emanation/M +emancipator/SM +Emanuel +emblazon/LSd +embodier/M +embolden/dS +embrace/SGDk +embraceable +embrasure/MS +emender +emigrate/nSNDG +eminent/Y +emissivity/SM +Emmett/M +emolument/SM +emotionally/Uc +empanelling +emphasizes/A +empire/wS1MW +empiric/M3 +emplace/L +emporia +emporium/MS +emptor/M +ems +encephalitides +enchanting/Y +encl +encourager/M +encroach/LGDS +encrust/nDGNS +encumber/ESd +Endicott +ending's +endow/GLSD +endpoint/MS +enforceability/M +engaging/Y +engineering/M +enlistment/A +enlistment's +ensilage/SMGD +enterer/MS +entr'acte/S +entrain/DGLS +entrammel/DSG +entreat/kSGZD +entrecte/SM +entropy/WSM +enunciation/M +envenom/dS +environmentalist +envision/GSD +enzyme/WSM +Eocene +ephemeral/S +epidermis/SM +epiglottis/SM +epigraph/wSMZ +epilepsy/SM +epoch/oM +epsilon/MS +equate/DGBSnN +equerry/SM +equestrianism/SM +equinoctial/S +equiproportionality +eradicable/I +eras/7gSrd +erectness/SM +erects +eremite/SM +ergonomics/M +Erhard +Erica +Erich +Eritrea/M +Ernestine +errant/YS +error/MS +eruption/MS +escrow/SDMG +establishment/A +et +eternity/SM +ethyl/MS +eugenics/M +eukaryote/S +euphemist/SW1M +euphoric/Y +europium/M +eustacy +eutectic +evaluating/A +evangelise/DGS +evangelize/DGS +Evans +Evanston +evaporate/vGnDSVN +eventfully/U +evocable +evolutionist +exacerbate/nNDSG +exaltation/M +exam/SM +exception/7MS +exclusivity/SM +executable/SM +execution/SMR +exhaust/bkSVvDhuG +exhibition/MR3 +exobiology/MS +exogenous/Y +exorcize/SDG +expeditiousness/S +experiential/Y +experting +expertise/SM +explicate/VSnNvGD +exploitation/c +exploited/cUf +explosive/SP +expos/rdS +expressive/IPY +expropriate/SGDNn +expulsion/M +ext +extent/SM +external/qQ-8Ys9S +extoller/M +extraditable +extradite/GDS +extrapolation/M +extricable/I +extroversion/SM +exuberant/Y +exult/NnkGDS +exurb/MS +Exxon +eye-opening +eyepiece/MS +eyewitness/MS +factious/YP +factoid/S +Fagatogo/M +faence/S +failingly/U +fair-minded +fairness/S +fairytale +falconry/SM +fall/RbMGS +fall-back +fallibleness/S +false/TYP +falseness/S +familiarly/U +fancifulness/S +fanfare/MS +fanout +fantastical +Farber +Fareham +farfetchedness/M +faro/M +farraginous +farrow/MDSG +farthermost +fascination/M +fast/TGPSD +fastback/SM +fatal/3 +fateful/P +fathead/MSDi +father-in-law +fatigue/kDMSG +fatty/TSP +Faustian +favouredness +fax/SGMD +feasible/PY +febrility +February/SM +federalism/MS +fed-up +feeble-minded +feel/GkRSJ +felicitous/YP +Felix +felt/GSD +Feltham +femininity/SM +fencing/M +fenestration/CSM +fermion/MS +fermium/M +fern/MZS +Fernando +fertile/Ps-Q89qY +fess/SF +festival/MS +festive/YP +fez/M +Fi +fibulae +fieldwork/SMR +fifty/HMS +figurative/PY +figurer/SMF +filamentous +filial/UY +filling/M +fills/Ac +film-strip/MS +filtrate/IGDNnS +finagle/RSGD +financing/S +finding/M +fine's +finest +fingermarks +finicky/T +fining/M +Finsbury/M +fire-hose/MS +fire-walker/S +firm/FDGS +fiscal/Y +fisticuffs +Fitch +Fitzpatrick +Fitzroy +five-year +fizz/ZGSD +flabbergast/GkSD +flagellation/M +flagstaff/SM +flag-waving +flail/GSMD +flamboyance/MZS +flamelike +flawless/PY +flax/MS +fleecy/PT +fleer +Flemish +flesher/M +fleshy/TP +flexible/IY +flick/DGS +flinching/U +flippable +floret/SM +floury/T +fluctuate/nGDSN +fluctuation/M +fluorinated +fly/cGS +flyable +flybys +foal/MGSD +foetal +foggy/TPY +foghorn/SM +foible/MS +fold/JGRSD +folded/UA +folkish +follow/DGJRS7 +fondue/MS +foodie/S +foodstuff/MS +footfall/SM +foothill/SM +footloose +footstool/SM +footwork/MS +foppish/PY +force-fed +forebear/SM +forecast/SRG +forefeet +forego/GJ +foregone +foreign/PRY +forelock/DGSM +foreplay/SM +forestation/CMA +forgive/RPlS7kG +forgot +formation/MFIC4S +formfitting +formulation/AM +forseeability +fortiori +fortuitousness/S +forty/HMS +forwardness/S +Foucault +foul-mouth/D +foul-up/S +foundation/Mo +four-letter +four-poster/MS +fourscore/S +foxes/e +foxglove/SM +fraction/DNoSGM +fragile/Y +fragrance/SM +framing/M +Fran/M +frankfurter/MS +Franz +fraudster/S +fraudulence/S +freakishness/S +freckly/T +freeboot/R +freedman/M +freehand/Dh +free-handed/Y +free-market +freethinker/MS +fresh/TPRmY +freshet/SM +freshwater/MS +Fresno +fret/jD6SG +Frey +friar/YZSM +frictional +friendlily +friends' +frightful/P +Frobisher +frog/DGmSM +frolicsome +frond/SM +frowardness/S +frozen/PY +frugality/MS +fruitcake/MS +fruitfulnesses +fruitless/YP +frumpish +Fuchs +FUD +fugitive/PSYM +fugue/GSDM +fuhrer/S +fulfil/DLGS +fullness/SM +fumigation/M +functionalism/M +funerary +fungicide/SM +furriness/S +furry/TRP +furtherest +fusebox/S +fusiform +fustian/MS +futurology/3SM +fuzziness/S +Gabarone +Gabriel +gain/ASDG +Galbraith +gallivant/DGS +gamete/WMS +gamy/PT +Gantt +garret/MS +gases +gasification/M +gaslight/DMS +gasser/SM +gassing/CMS +Gastropoda +gatekeeper/MS +Gatlinburg +gauss/MS +Gautier +gayety's +gazebo/MS +gazetteer/SM +Ge +gear/DGSJM +gecko/MS +gelignite/MS +genealogy/w31MS +generalise/cDSG +generative/AY +genial/P +genitals +gent/AMS +gentry/SM +geochemistry/SM +geodetic/S +geog +geometer/wS1MW +geomorphology/wM +geosynchronous +gerbil/MS +germ/MS +ghost-write/RGS +GHz +gibber/Sd +gibbous/PY +gigabyte/S +giggle/RGDSYk +giller +gimmick/SZMy +ginkgo/M +Gino/M +girl/SM +girlhood/SM +girlishness/S +Girton/M +give/7RGSk +glaciate/DGSNn +gladiola/SM +glaring/P +glasswort/M +glazed/U +gleeful/P +glitch/MS +glitz/SDGZ +glorify/RNSGnD +glorious/PYI +glossary/SM +glottis/SM +gluten/SM +glutinous/PY +glyceride/M +glycerinate/DM +GMT +gnomish +GNP +goalkeeping/M +goal-mouth/M +goalscoring +goat/SM +gobbet/SM +goddess/SM +God-fearing +godlike/P +godly/PT +godparent/MS +Golda +goldenrod/MS +goldilocks +goo/ZM +goodish +goodness/S +goodnight +Goodwin +goody/MS +gopher/MS +gorging/E +Gouda/M +governed/U +governor/MS +governorship/MS +Goya +gracefuller +graces/E +gradings +graduates/f +grafting/M +Grafton +grandam/MS +grandmother/MYS +grandpa/MS +grandstander/M +granny/MS +grapevine/MS +grappling/M +grasper/M +gratefulness/U +gratefulnesses +grave/RSMZPTDYG +grave-stone/SM +gravitate/NDGnVxS +great/PYST +Grecian/S +greener/Z +greenishness +gregarious/PY +Gregory +Greta +grievance/MS +grieve/RkSDG +Grimes +griminess/S +gripping/Y +grope/RJSDGk +groundskeepers +grouping/M +grouter/M +grows/cAe +grudging/U +Grundy +guaranty/SM +Guatemalan/S +Guevara +guild/MSR +Guinevere/M +guitarist +gulf/SM +Gullah +Gunnar +Gunter +gunwale/SM +guts/Z2 +guttural/PSY +Gwent/M +Hadamard +haemostasis +Hager/M +haggis/SM +haircare +hairline/MS +hairpin/SM +hairstyle/3MSG +hake/SM +halal/SDG +half-crown/MS +half-tone/S +half-wave +half-way +halitoses +hallucinogenic/S +haloes +halogenated +Halsey/M +halves/M +Hamiltonian/S +hammerlock/SM +hammy/T +Hampstead +handball/MS +handclasp/SM +Handel/M +handover +hand-pick/GSD +handset/SM +handwork/SM +handwrite/GJS +hangdog/S +hanging's +hank/RMZS +Hannah +Hansel +haranguer/M +harbinger/MS +hard/Z2YPzT +hardbitten +hard-earned +hardened/U +Hardin +hard-nosed +harm/GSjpM6D +harmfulness/S +harmonious/IPY +harmonise/RnGSD +harmony/ESM +harness/SUDG +harrower/M +harshness/S +Hartlepool/M +Hartman +has +Hasbro +hashish/MS +haste/MS +hasten/Sd +Hastings/M +hatcher/M +hate/jSM6 +haversack/SM +hawk/RMDGS +haziness/S +HDTV +headband/MS +headboard/SM +headcount +headman/M +headset/SM +heady/T +healthiness/SM +healthy/TUY +heartbeat/MS +hearten/kEdS +hearthstone/MS +heartwood/M +heats/KcA +heavyset +Hebrides +hedonism/MS +hefty/TP +heinousness/S +Heinz +heirloom/MS +hellishness/S +Hloise/M +helpful/P +hempen +Henderson +Hendrix +Henry/M +hepatic/S +heptagonal +heralded/U +heraldry/SM +herbage/SM +Herby +hereby +hereditary +hereof +Hermosa +hernia/nSM +Herodotus +herpetology/S3M +Hershey +hertz/M +Hessian/S +heterodox/Z +heterogeneous/YP +HF +hibernator/SM +Hibernia +hiccup/dSM +hickory/SM +hideous/PY +hie/GS +hierarchy/1WMSw +hieroglyphic/S +high-profile +high-quality +high-rise +high-speed +high-strung +Hillary +hilltop/SM +hinder/d +hinge's +hipster/SM +hirer/MS +Hiroshi/M +Hiroshima +hoarding/M +hobble/RGDS +hock/MS +hocus-pocus +hoister/M +Hokkaido +Holbeck +holidayer +holistic/Y +Holloway/M +hollowness/S +Holmes +holystone/SM +home-based +homebody/SM +home-grown +homeliness/S +home-shopping +homesick/P +homestead/GMDSR +homeward-bound +homey/P +homoeopathy/SM +homomorphous +homophobia/S +Honolulu +hoodwinker/M +hooked/U +hoopla/MS +Horatio +hormone/oMS +horn/DGip2ZSM +hornet/MS +horny/PT +horrendous/Y +horse-breaker +horseshoe/GDSM +horticultural +Hosea +hostel/DRMSyG +hostelry/SM +hotelier/MS +hotfoot/DSG +hotheadedness/S +hotrod +hough/M +house/M6SJmDG +houseboat/MS +housebound +housewifely/P +howl/DSRGM +hoydenish +http +hub/MZS +huckleberry/MS +huffiness/S +hullabaloo/MS +humanism/MS +humbug/GDSM +humdinger/SM +hummock/DSMZG +humour/DhMpSG +hundredweight/MS +hunger/dMS +hungover +hungriness/S +hungry/YPT +Hurst +hurtful/P +hut/MDGS +Hyde/M +hydrates/CA +hydraulic/YS +hydride/SM +hydro/MS +hydrodynamical +hydroelectric/Y +hydrogenation/CM +hydromechanics/M +hymen/MS +hymnary/S +hymn-book/SM +hyperaemic +hyperfine +hypergamous/Y +hypermarket/MS +hyperspace/M +hypertension/SM +hypertext/MS +hyperthyroid +hyperthyroidism/SM +hyphen/MdnSN +hypnotise/SGD +hypo/MDGS +hypochondriac/MS +hypocrisy/SM +iambic/S +iceboat/MS +icosahedra +icosahedral +icosahedron/M +ictorianises +id/MY +ideation/M +identification/Ma +idiom/WSM1 +idol/QqSs-89M +iffy/T +ifs +Iliad +ill-advised +illegitimate/S +ill-favoured +ill-starred +imago/MS +IMAP +imbrication/SM +IMHO +immaculate/YP +immaculateness/S +Immanuel +imminent/PY +immolation/M +immunology/3w1WMS +impact/VDG +impairer/M +impale/LG +impassive/P +impatient +impecunious/PY +imperative/PYS +impermanence +impermissible +impertinence/M +impervious/PY +impetigo/MS +Imphal +importable +impostor/SM +impoundments +impregnation/M +impresser +impressionism/MS +improvisation/oM +improvisatory +impure/P +imputable +inadvertent/Y +inamorata/SM +inanity/MS +inarticulate +Inc. +incalculable/PY +incandescence/SM +incandescent/SY +incendiary/S +incest/SM +inch/SMGD +incidental/F +incident's +incision/M +incliner/M +include/SGXNvVDu +inclusive/P +incoherency/M +incorrect/7 +inculpate/DGS +indebted/P +indecenter +indefatigable/PY +indent/Nn +Indira +individualise/k +individuate/GnDSN +induction/M +indulger/M +industrial/8Q3-qS +indwell/G +inebriate/NnGDS +inescapable/Y +inexpedient +infamous +infamy/SM +infection/EMSA +inferior/MYS +inferiority/SM +infinite/VZ +infinitesimal/YS +inflatable/SM +infliction/MS +informatics +informatory +informed/U +informer/M +infuriate/SGDkN +ingnue/S +inglenook/SM +Ingram +ingredient/MS +inhospitable/P +inhospitality +inimical/Y +iniquity/SM +inkling/SM +inland +inlet/MS +inn/MJS +innocence/SM +inoculated/A +inquiry/SM +inquisitor/oMS +inscription/M +insincere +inspect/AGSD +installation/SM +instance/GD +institutes/M +instruct/VvuGxDS +insular/Y +insurable/U +insurgence/ZSM +integrity/MS +intelligibility/SM +intelligibleness/M +intemperance/S +intend/uhViv +intended/U +intense/P +interceder/M +interception/MS +interceptor/SM +intercessory +interchangeable/P +intercorrelated +interdenominational/Y +interface/GSMD +interlayering +intermingle/DSG +intermodulation/M +interpenetration +interpretor/S +interregnum/MS +intersperse/DSNXG +interventionism/MS +interwork/SGD +intonate +intonation/M +intrafamily +intraoffice +intricacy/MS +introspective/PY +intrusive/P +invent/uVyv +invented/A +investigation/MS +invigilator/MS +invigorating/Y +invited/U +involuntariness/S +Iqbal +Iraqi/MS +irascibility/SM +irenic/S +iris/MS +ironing/M +ironness +Iroquois +irreplaceableness +irrevocable/YP +Irvin/M +i's +Isabella/M +Iscariot +isochronous/Y +isocyanate/M +isomeric +isosceles +isotope/SMW +issue/RG7DMS +issues/A +isthmian +isthmus/MS +italic/Q8q-S +iv/M +jacaranda/MS +jackhammering +jack-in-the-box +Jacobean +Jacobite +Jacobsen +Jamie/M +Janacek +Jane/M +janitor/SM +Japanese/M +jaw/MDGS +Jeanette/M +jeez +Jehovah +jelly/DGMS +jellylike +Jenner +jennet/SM +Jeremiah +jerkiness/S +jerry-building +jet-propelled +Jewess/SM +jiggery-pokery +jingler/M +jingoism/SM +jitter/SZ +jittery/T +jocoseness/S +joggler/M +joint's +jollification/SM +Jonah +Jones/S +journal/9Q83DsSMG +journalese/MS +joust/MRGSD +joylessness/S +Judd/M +judge/DKLaGS +judgeship/SM +Julys +junior/MS +just/TPY +justice/IMS +justly/U +Kabul/M +Kampuchea/M +kangaroo/SM +Karachi/M +Kashmir +Kazakhstan/M +Keck/M +keep/JSGR +Kemp +Kern +Kettering +Khartoum/M +kHz/M +kibitzer's +kibosh/SM +kid-glove +Kildare/M +kiln/SM +kilobaud/M +Kingsley +Kingston/M +Kinney/M +Kinnock/M +kinsfolk +Kirkland +Kirkwood +Kirov/M +kirsch/S +Kisangani +kit/GMZrDS +Kitchener +kitchenette/MS +Kitts/M +Klansman +Klein/M +kleptomania/MS +kn +knacker/Z +knackish +knee-high +knick +knife/SGMD +knightly/P +knock-on +know-it-all +Kodaly +kohlrabi/M +kopeks +kriegspiel/M +Kristina +kronur +Kruger +krypton/M +Kuala/M +kudzu/SM +Kuhn/M +la/M +labelling/S +laborious/YP +laboriousness/S +laboured/MP +Lackawanna +Lahore/M +lair/MGDS +Lakewood +lamb/MGDS +lambada/S +lamebrain/MS +laminar +landau/M +landaus +landhold/RGJ +landowner/SM +Landwehr +Lange +Laredo +larynges +lase/SRG +lashing/M +latches/U +latency/SM +lateness/S +lateral/FSY +latter-day +launderette/MS +laundromat/S +laureateship/MS +lavishness/S +laxity/MS +lazuli/M +lbw +lead/GSRD +leaded/U +leader/p +leafage/SM +leaguer/SM +leanness/S +Lear/Z +learned/PY +leasehold/RMS +leaven/dSM +Lebanese +Lebesgue +lecithin/SM +leeriness/S +left/ZS3T +left-hand/DiRh +legate/CDASnGN +legerdemain/MS +legionary/S +legitimate/YGQND +legitimise/SGD +Leibniz +lengthener/M +Lenny +lenticular +lento/S +Leonard +leotard/SM +Les +lesbianism/MS +lesser +let/RMGS +lethargy/1SMW +letting/S +level-headed/Y +Lewisham +Leyden +liable +liaise/DSG +liberates +licentious/PY +lichee/M +licking/M +lid/MpGDS +lien/MS +lifebelt/MS +lifeguard/SGDM +lifeline/SM +life-threatening +lifework/MS +lightness/S +likeable/P +likeliness +limited/UC +linchpin/SM +line/SmJRGMD +lineament/MS +linearity/FM +lingo/M +linguist/MWS1 +linked/U +lip-reader +lip's/f +liquid/9n8YPQ-SMsq +liquidate/DGS +lissom/P +literacy/SMI +literal-minded +literate/4NS +literates/IK +litigious/PY +liveable/YP +liveliness/S +liven/dS +Liverpool/M +lives/M +Lizzie +loaf/MRDGS +loamy/T +loaning/M +loathe/S +Lobachevsky +lobby/3DMGS +lobotomy/QSM +lobster/dSM +localisms +locate/ASGFENnD +locomotor +locomotory +locus/M +log/JGMWRw1DS +loggia/MS +logion/M +lolly/MS +long-winded +lookers-on +loom/SDGM +loosed/U +lop/dDRGS +lorgnette/MS +Lourdes +lousiness/S +loved/U +low-down/S +low-level +lowness/S +ls/I +Lt. +Ltd +Lu +luau's +lube/SGMD +lubricant/MS +Lucien +ludo/M +lullaby/DSGM +lumbar +luminary/MS +Lundquist/M +lungful/S +lusciousness/S +lushness/S +lustrous/YP +lute/SGMD +Luton/M +lyceum/MS +Lydia +lying/e +Lyle/M +lymphocyte/SM +lyricism/SM +lysine/M +Lyttleton +macaroni/MS +mace/SMGD +Macedonian +maceration/M +Macon +macrodynamic +Madhya +maestro/SM +magnetism/SM +magnetohydrodynamics/M +magnetosphere/M +magnified/U +maharanee's +maintained/U +maisonette/SM +malady/MS +malarial +male/PSM +malevolent/Y +malformed +malignity/SM +mallow/SM +malnourishment/SM +Maltese +mama/SM +mammalian/MS +manageability/S +manciple/M +Mancunian/MS +mandible/SM +mandrill/MS +manginess/S +manifold/PSYM +manipulative/M +manipulator/SM +mankind/M +man-made +manorial +manslaughter/MS +manual/MSY +Manuel/M +margarita's +marketeer/S +marketing/M +mark-up/MS +marmoset/SM +marque/MS +marquee/SM +Marseillaise +Marsha +Martian/S +martin/SM +Martini/SM +Marvell +mascot/MS +masochism/SM +mat/dRMDJGS +materially/I +matinee/S +matine/S +matrix/M +matte/MS +matting/M +maturation/M +matureness/K +matzoth +Mauritius/M +maximization/M +May's +McCluskey/M +McDaniel/M +MCI +McNish +MD +meagreness +meal/ZSM2 +meaningless/PY +measly/T +measured/UA +meatpacking/S +Mecca/M +mechanist/MW1 +mediates +mediation/M +medieval +mediocrity/SM +medulla/SM +megabit/SM +megadeath/MS +megaton/SM +meioses +Mel +meld/SDG +meliorate/nDGNVS +Melissa +melodiously +Melton +memento/SM +mmoire +menders +meningitides +menisci +Mennonite/S +menorah/SM +menorrhoea +Mercator +Mercier +Merrick +Merseyside/M +mesmerise/RGSD +Mesopotamian/S +messiah/S +metabolite/SM +metacircularity +metallise/SnGD +metamorphose/DGS +metaphosphate's +meteorite/SMW +methodical/P +metricate/DSG +mettle/DSM +mfr/S +Miami +Michelin +microbicidal +microfilmer +micrograph/Z +micromanage/LDSG +microprogram/MSGD +microscopy/MS +microsimulation/S +microwavable +middle-age/D +middle-sized +middy/SM +midge/SM +midtown's +migrative +mikado/SM +Mildred +milieu/SM +militarized/C +milkmaid/SM +mill/SRD7MG +millenarian +millepede's +millet/SM +millijoule/S +milling/M +millionth/M +millipede/SM +mimic/RDGSy +mimicry/SM +Min +min. +minaret/SM +mince/RDGkSJ +mind/phSiR6DjMG +mineshaft +minestrone/MS +mineworkers +minima/M +minimization/M +miniseries +minister/NdnSMo +ministry/SM +Minnesota/M +Minot/M +minstrel/SM +misanthrope/M1ZS +misapply/nN +miscarry +miscibility/S +miscible/CI +misdirector +miser/ZY7l +misrepresenter/M +misshapen/YP +Mississauga +missives +misspoke +missus/SM +mist/RZ2zDG +mitigate/DNnyGS +mitochondria +mitten/SM +Mitterrand +mix/GKDSA +mixture/MS +Mlle +moan/RDGMS +mobile's +moderated/U +modestly/I +modifiability/M +modish/YP +modulated/U +modulo +modus vivendi +moggie/MS +Mohr/M +moist/PYT +moleskin/SM +Molina +mollify/GnDSN +Mombasa +mommy's +monarchs +Monet +money/pMDS +monger/SM +Monica +monkshood/SM +monocotyledon/MS +monocular/SY +monolayers +monomania/MS +monomer/MS +monostable +monotonousness/S +Monterrey +Montessori +monthly/S +Montoya/M +Montpelier +Montserrat/M +monumental +moonwalk/DGS +moralize/CNnSDG +morbid/Y +moreover +morion's +mortarboard/SM +mosaicking +Moshe/M +mosquito/M +moss-grown +motion/GpDMS +motioner/M +motivation/M +motorcade/MGSD +mots +moulder/d +mount/EDCAGS +Mountbatten/M +mounting/MS +Mourne/M +mousetrap/DMSG +mouther +mouthiness/S +Mozilla/M +MSc +MTV +mucky/T +muff/DGMS +Muhammadan/SM +Mulder/M +muleskinner/S +multimillion +multi-modal +multisyllabic +multi-way +municipal/SY +Muriel/M +murkiness/S +mush/Z2SM +music/MS +musk-rose +Mussolini/M +muster/Sd +mutant/MS +mutator/FS +mutinous/Y +Myanmar/M +myelitis/M +Mylar +mynah/MS +mystify/CSnDGN +naive/YT +naveness +navet/S +nameable/U +Namibian/S +Nana/M +nanny/MDSG +nanotechnology +Napoleon/WSM +Narbonne/M +narcoses +narrate/GDnNSVv +narratology +nary +Nash/M +NATA +nativity/SM +natured/C +Nazism +Nd +N'Djemena +nearby +nearness/S +neat/TPY +'neath +need/ZDSpj26G +negligee/MS +negotiant/M +Negroid/S +Nehemiah/M +neonate/oSM +nephew/SM +nerve's +nervous/PY +nest/DS7MG +nestling/M +Nestor/M +Netherlander/SM +network/GJDMS +Neumann/M +neuralgia/SM +neuritic/S +neuroscientist/S +neurosis/M +neutralisation +nevertheless +Newburyport/M +Newcastle-under-Lyme +new-look +newscasting's +newsworthiness/S +Newtonian +nibble/RGDS +nick/GDSM +Nigel/M +Nigerian/S +nigger/SM +night/MpYS +night-time/SM +nilpotent +Nilsson/M +nimbleness/S +Nimitz/M +ninepin/S +ninety-five/H +ninety-second/S +ninja/S +Nissan/M +nob/MY +nodal +nodular +no-go +noisy/PTY +Nola/M +nominative/SY +non-appearance/S +non-breakable +nonchalantness +non-clerical/S +non-committal/Y +nonconformity/SM +non-deferential +non-democratic +non-economic +non-empty +nonentity/MS +nonesuch +nonetheless +non-existent +non-explosive/S +non-fading +non-fat +non-food +non-human +non-inclusive +non-inflected +non-interacting +non-judgemental +non-moral +non-participating +non-polluting +non-punishable +non-residual +non-rhythmic +non-segregated +nonsensical/P +nonsuit +non-theatrical +non-toxic +non-transferable +non-tropical +non-volatile +non-words +nook/SM +nooning's +noose/MSDG +Noreen/M +normal/8Qs+-tqS +Norman/MS +Norplant +Nortel/M +north-eastern +north-Eastward/S +northing/M +Northwest/M +not/7NxdgnlS +notepad/S +noun/MS +nova/SM +novelist/W +novice/SM +Novo/M +nozzle/SM +nucleate/NnGDS +nuclei/M +nucleus/MW +nudger/M +numbered/AeU +numerical/S +numinous/S +nun/MyS +nuncio/SM +Nuneaton +nurse/RMJSDG +nuthatch/MS +nutrient/SM +nutrition/oM3S +nymphet/SM +O +oaf/MS +Obadiah/M +obedience/EMS +obeisance/SM +objection/lSM7 +objective/PS +objector/SM +obloquies +obscenity/SM +obsidian/SM +obstetrician/MS +obstinate/PY +obstructed/U +obstructionist +obstructiveness/S +Occam/M +occidental/SY +oceanography/WMS +octagonal +oddball/SM +odds-on +OE +Oedipal/Y +oenology/SM +offal/SM +official/UY +officialness +officiant/SM +off-line +off-piste +off-the-cuff +off-white +ohmmeter/SM +oink/DGS +O'Keeffe +Oldenburg/M +Oldfield/M +Oldham +oldness/S +oldster/SM +old-style +oleander/MS +olfactory +olivine +omicron/SM +omnipotent/YS +omnivorousness/S +oncer/M +onefold +O'Neil +one-step +one-upmanship +onomatopoeic +onto +op/FS +opening/M +OpenOffice/M +opens/A +operandi +operantly +operatic/YS +operetta/MS +opponent/SM +opprobrious/Y +optimality +Oran/M +orangey +Oranjestad/M +orate/SGD +orator/Sw1M +ordained/KU +ordainer/M +orders/A +orgasm/DGMSW +orgiastic +orifice/MS +originator/MS +ornamental/S +ornamentation/M +ornate/YP +Orr/M +orris/SM +ors +Ortega/M +orthonormal +osseous/Y +ossify/SNGnD +ostentation/SM +ostracism/MS +Oswestry +Ouagadougou/M +ourself +outcome/M +outer/S +outing/M +outlast/G +outmoded +outrageous/PY +outright +outspokenness/S +out-take/S +overambitious +over-curious +overdress/G +overdue +overfish/G +overhearer +overleaf +override/G +overshot +overt/Y +overthrow +oviparous +owned/U +oxen/M +oxidised/U +oxidized +oxidizer/M +oxtail/M +pacifism/SM +pack/GADSU +pact/IMS +paella/MS +Paige/M +pain/DMpSjG6 +Paine/M +paintbox/M +paintbrush/MS +paisley +paladin/SM +palaeoanthropology/w +paleface/SM +Palestrina/M +palish +pallet/MQ8-Sq +pallid/PY +palmer/M +palmistry/SM +palomino/SM +pamper/dS +pandemonium/MS +panelling/SM +panic-stricken +panier's +panoramic +pantomimic +Paola/M +papacy/MS +papal +paper-clip/SM +paperhanging/SM +papoose/MS +paraboloid/SM +paradox/Mw1WS +paramedic/MS +parametrize/SGBnDN +paramilitary/S +paranoia/SM +paraplegia/SM +pardoned/U +pare/JS +parenthesis/M +parenthetic/Y +pareses +parlance/SM +parley/MGDS +parliamentary/U +parlour/MS +parsley/SM +Parthenon/M +participial/Y +partner/dMS +part-time +pass/7SuVNXvlk +passionless +pasteurised/U +pasteurized/U +pasture/GDSM +pasturer/M +patella/M +patellar +pater/M +paternalism/SM +Patna +patois/M +patriotism/SM +patristic/S +patronymic/YS +pawl/MS +paxes +paymaster/MS +payout/S +payphone/S +pc +PCs +pea/MS +peaceful/T +peach's +pear/MYS +peartrees +pebble/DYMGS +peculiarity/SM +pedant/WSM1 +pedantry/SM +pedigree/MS +pedimented +peek/SDG +peevish/PY +peewee/S +peke/SM +pekoe/MS +pelmet/S +pence/M +penchant/SM +penetrate/vNnBSDVkuG +penlight/MS +penny-farthing +pennyweight/SM +penology/S3M +pent/A +penurious/YP +peppermint/SM +perceive/aSD +percept/vbVMoxSu +perceptiveness/S +percipient/S +peregrination/M +perfect/bDYTuPSGVv +performed/Uf +periodicity/MS +peritonitis/MS +perm/GSDM +permanence/MZS +permission/M +permissive/YP +permute/DGNSn +persecutor/MS +perseverance/MS +personalty/MS +perspective/YSM +perspicuity/MS +persuasiveness/S +perusal/MS +Peruvian/S +pervade/uDGNVSv +pessimism/MS +pestle/DSMG +petiole/SM +Petit +petrographical +petrol/MS +pewter/MS +PFC +pH/M +phage/M +pharmaceutics +phenacetin/SM +phenomena/Mo +phenomenal +pheromone/MS +philately/3SWM +phlegmatic/Y +phobia/MS +photoelectric/Y +photomultiplier/M +photosensitive +phototypesetter +phrase/GDSA +phrasebook +phrase's +phylactery/SM +phylogeny/SM +physic/S3DGM +physician/SM +physiography/MS +pianissimo/S +pick-me-up/S +pickpocketing +picofarad/SM +Pierre/M +pigeon/SyM +pigeon-hole/SMDG +pigeon-toed +piggishness/S +pigheaded/Y +piglet/SM +pigswill/M +pilers/F +pileup/SM +pillared +pillory/DSMG +pimple/DSM +piata/S +pinch/DSG +pine's +pinger +pins/fU +pious/PYI +pismire/SM +pitchblende/SM +pizazz/S +placid/YP +plaguer/M +plain-clothes +plainer/F +plaint/uSvMV +plaiting/M +plan/DdMSrRG +plaque/MS +platinum/QM +platypus/MS +playability +player/SEM +playfellow/S +play-off/S +pleasing/P +pleasures/E +pleat/GDMS +plebiscite/SM +pledger/M +plenitude/SM +pleura/M +plexus/MS +pliers/F +PLO +plotted/A +ploy's +plummy/T +pluralist/SW +plushness/S +plutocrat/SMW +plying/F +pocketbook/SM +poem/SM +point-of-sale +poky/T +polecat/SM +policy/SM +politicise/CGSD +politico/SM +poll/DMGS +poller +pollute/RSDG +polyester/MS +polyp/MS +polyphosphate/S +pompous/Y +pond/DMGS +ponder/4S +pongee/MS +poor/TYP +pope/SM +pornographer/SM +Portland/M +portrait/3SM +posited/FC +positivism/M +positivist/S +positivity +possess/EGKDSNAX +post/JDMRGS +poster/ISM +post-haste +postmarital +post-office/MS +postponer +postpositions +potency/MS +pothead/SM +potholing/M +poulterer/SM +poultice/DSMG +poultry/MS +powder/dMSZ +powderer +pox/SM +practicably/I +practicality/ISM +Prague/M +pre-adolescent +pre-amplifier/M +prearrange/L +precedent/MDS +precedented/U +precipitant/S +preciser +preconfigure +precut +pre-date/DSG +predict/DSvBGlV +predictably/U +preference/MS +prefigure/N +preflight +prejudicialness +prepender/S +preponderate/GYSDN +pre-processor +preservationist/S +presidency/MS +President/MS +presume/vDSGVkXNl +preventer/M +priceless +pricing/f +pricking/M +priestly/TP +primate/MS +Principe/M +printed/U +printer/AMIS +printmaking/M +prior/YZ +priory/MS +prison/ISd +probative +problem/MSwW1 +proceeder/M +process/7XNMSGxD +proconsul/MS +proconsular +procreate/VGyxDNSn +procurator/SM +productiveness/SM +prof/MS +profitable/P +profligacy/S +profundity/SM +prolific/Y +prologuise +prolongation/M +promontory/SM +promulgator/SM +prone/PY +pronominal +pronouncedly +pronto +proof-read/GS +proof-reader/S +propagandist/SWM +propagate/NnVGDS +propitiate/NynSDG +propitious/U +proportional/S +propound/SDG +prorate/DNSG +prosecution/MS +prosy/T +protg/MS +protestant/S +proverb/oMS +province/oMS +proving/IA +prude/MyS +prudential/YS +PS +psalm/M3S +pseudonym/MS +psittacosis/M +psychiatry/W3MS +psychology/MS31w +PTA +ptarmigan/SM +pubertal +publishing/M +puddle/SGJYDM +pudginess/S +puffball/MS +pugilist/WS +puissant/Y +pull-out/S +pulsate/SNnDG +pulverise/RSDG +pulverize/NDGn +puny/PT +purely/I +purgative/SM +purgatory/MS +purine/SM +puritanism/S +purport/RGDSh +purr/GDSk +purse/GRDMS +pustule/SM +putative/Y +puts/e +pylorus/MW +pyrite/MS +Pythagoras +quad/SM +quadraphonic/S +quadrennium/MS +quadrupedal +quadruplet/SM +quaintness/S +quango/S +quarantine/DSMG +quarrel/RGSDMJ +quarrelsomeness/S +quart/WMRS +quarter-light +queasy/PYT +Quebecois +queer/YDGTS +quench/DR7SGp +quenchable/U +quern/M +querulousness/S +questioning/UY +queue/GCSD +queueing +quick/TPY +quicksand/MS +quiesce/D +quill/DMGS +quince/SM +quinsy/SM +quintessential/Y +quipster/SM +quirkiness/S +quiz/DRZGM +rabbi/SM +racehorse/SM +racetrack/MS +racialist +Radford/M +radiographer/MS +radiography/SWM +radiometer/MSW +radionuclide/M +raff +ragbag/SM +ragged/P +rail/CDSGJ +rain-cloud/SM +rainy/T +raison d'tre +rakish/PY +ranch/DRSGM +ranks/e +rans +rapacity/M +rapt/Y +rash/SYTR +rate's +rationale/3MS +rationalism/SM +ratty/T +rave/RDSGJ +Ravensbruck/M +Raymondville/M +Raytheon/M +razor-sharp +reachable/U +reader/aM +reality/USM +reap/RGS +reasonableness/U +reassert/G +reattach/GL +rebate/M +rebellious/Y +rebuke/DkSG +recall/G7 +receivable/S +receptivity +recertify/N +reciprocal/YS +reckless/Y +reclaimable/I +recline/SDRG +recolour/GD +reconnection +reconnoitre/SDG +recount/G +recriminate/VSyGDnN +rectitude/M +rectum/MS +redact/GDS +redbud/M +redeem/7R +redemption/SM +redskin/SM +re-emergence +re-emission +re-employment +re-enforce/L +re-engagement +re-evaluate +reference's +referenda +refold/G +reformat/DG +reformatory/MS +reformed/U +refrigerated/U +refutable/I +refute/NDnRSG +regard/ESGD +regatta/SM +regenerate/U +reground +regulation/M +regurgitation/M +rehab +rehydrate/N +Reich/M +reign/SDGM +reinoculate +rejoice/SJDGk +relation/MF +relax/GiDnkh +relenting/U +relieve/SGDhR +remain/GD +remarkableness +remembered/U +rememberer/M +Remington/M +reminisce/DGS +remonstrance +remote/TY +Rene/M +renew/D7G +Rensselaer/M +renunciation/SM +repentance/MS +repentant/UY +replaceable/I +repost/G +repressive/P +reproducibility/I +reproducibly +Republican +reputable/E +requiem/MS +resat +reseal/7 +reselection +resisting/U +Respighi/M +responsiveness/U +restitution/SM +result/MDGS +resuscitator/SM +resynchronise/n +retaliate/SVynGDN +retell/G +retie +retort/DG +retortion/SM +retribution/MS +retrieval/MS +Reuters +revelry/SM +reverent/YI +reverie/MS +review/G +revisable +revulsion/M +Reynold/SM +Rf +Rheinholdt/M +Rhodesian/S +Rhondda/M +rhyme/SRGDM +Richelieu/M +Richie/M +Richland/M +riders/e +ridge-pole/SM +ridge-tile/SM +ridgy/T +rig/JDMRGS +rigging/M +righteousness's +rightism/SM +rightward/S +Rio/SM +rip/DRGS +ripplet +ripsaw/SM +riverine +rivulet/SM +roadbed/SM +roar/RkSDGJ +robe/MDS +Robyn/M +rockabilly/M +rocking-horse/SM +rodeo/MS +Roderick/M +Rodriquez/M +roentgen/MS +Rogation +roguish/YP +Rolf/M +roly-poly +Romano/M +romanticist +Rommel/M +roofing/M +Rosalie/M +roseate +rosebud/SM +rosewood/MS +rote/M +Rothschild/M +rottenest +rotter/M +Rotterdam/M +roundabout/SM +round-arm +Rowell/M +RSI +RSVP +rubberneck/DRGSM +rubbery/T +rubble/M +rule's +rum/ZMS +Rumania's +ruminate/DGvNSnV +rummager/M +rumourmonger/MS +rune/MSW +runlet/MS +runner-up +Runyon/M +Russell/M +rustle/SGRD +rustproof/GD +s/ko7 +Sabine/M +saccharine +sacerdotal +sacrifice/GDSoM +safe/YU +safeness +safest +saga/SM +Sahara/M +Saharan/M +Saigon/M +Salome/M +salsa/MS +salt-mashes +Sam/ZM +Samaritan/SM +Samsonite/M +sanatorium/SM +sanctification/M +sanctity/SM +sandal/GMDS +sandalwood/M +sandpiper/SM +sandpit/SM +Sanger/M +sanguineous/F +sanitise/RGDS +sanitize/RGDSN +sanserif +sapling/MS +Sarajevo/M +sarcastic/Y +sardonic/Y +Sargon/M +Sartre/M +saucepan/SM +saucy/TY +savagery/SM +Savannah's +saveloy/M +saviour/SM +savoury's +saw/DGMS +saxophone/MS3 +say-so +Sb/M +scab/2GMZSD +scabies/M +scaffolding/M +scalar/MS +scale's +scandalousness +scanner/SM +scapular/S +Scarborough/M +scat/DG +scatter/rSkJd +scattering/M +sceptre/SD +schema/S1M +Schenectady/M +Schick/M +Schmitt/M +schoolchild/M +school-leaver/MS +schoolmistress/SM +Schottky/M +Schroeder/M +Schuylkill/M +Schwarzenegger/M +scorecard/SM +scorekeeper/SM +scotch/SMDG +Scotia/M +Scott/M +scout/MGDS +scram/GDS +scrap/rDRGdZS +scrapheap/SM +scrappy/T +scrawny/T +screenplay/MS +Scribner/M +scrollbar/SM +scrumptious/Y +scrunch/GSDZ +scrutiny/SsQ98Mq- +Sculley/M +sculpt/DSG +scurfy/T +scuttle/MGDS +scuttlebutt/MS +seaborne +Seagram/M +sealant/SM +seaman/YM +seamless/Y +seaplane/SM +searches/A +seasick/P +season/dlS7Mo +SEATO +seawater/S +seborrhoea/W +secession/M3S +secessionist +secretarial +secretion/M +section/GMDSo +secularist +secured/U +sedgy/T +seed-cord +segregative +seigneurial +seisin +seismal +self-adhesive +self-approval +self-critical +self-deprecating +self-destruction +self-doubt +self-employed +self-explanatory +self-financing +self-fulfilment +self-glorification +self-imposed +selfishness/U +self-regulating +self-reliance +self-worth +Selma/M +semifinalist +semi-official/Y +semi-precious +semitropical +semi-yearly +sempiternal/Y +Sen. +senility/SM +senseless/Y +sensible/IY +separably/I +separator/MS +sepses +septum/M +seqq. +sequacity +sequencing/A +sequent/F +seraphim/M +Serengeti/M +serous +services/E +sett/7RJMDSG +settled/UA +Sevenoaks +seventy-onefold +sexton/MS +Seyfert/M +Shackleton/M +shake-up +shampoo/GMDS +shank/SDM +shape/ADaSG +Shari/M +sharp/YTS +Shea/M +Sheboygan/M +Sheltand/M +Shelton/M +shenanigan/SM +shepherdess/SM +ship/D4ALGS +shipbuilding +shipmate/MS +shirk/GSRD +shoe's/c +shootable +shooting-box/SM +shooting-brake +shopkeeper/SM +shoplifting/M +shop-soiled +shore/GDMS +Shorewood/M +shortcoming/SM +shorthorn/MS +short-lived +short-sightedness +Shostakovitch/M +shouldn't +shouter/SM +showy/TP +shrift/MS +shrive/GS +shroud/DMSG +shyer +side-arms +sideline/DMS +side-saddle +side-swipe/DMGS +siesta/SM +sigh/DSG +sighter/M +Sigmund/M +signal-to-noise +signatory/SM +signora/M +silica/M +silicon/M +silk-screen/SM +silo/SM +siltstone/M +SIMD +simian/S +similar/EY +similitude/ME +simmer/Sd +simple-mindedness +simpleton/SM +simplified/U +SIMULA/M +simulacrum/M +simultaneous/Y +sincereness +Sinclair/M +sinfonia/M +sinfulness/S +sing/RS7GDk +Singapore/M +single-decker/S +single-seater +singularity/MS +sinistral/Y +sinusoidal +sir/dMS +sissified +sister-in-law +Sistine +sits/A +sixty-seven/H +skeet/M +skid/DGS +skim/RDSGM +Skinner/SM +skirmish/DSRGM +skirt/GDMS +skua/S +skulduggery/M +skullcap/MS +skyscraper/MS +slab/MSGD +slalom/MS +slang/MGZ +slat/MDdGS +sled/G +sleekness +sleepless/YP +sleeving/M +slimness +slippery/T +slipway/MS +slough/SMGD +Slovakian/S +slunk +slurp/DGS +slyest +slyly +smallness +smart/eDSG +smarten/Sd +smartly +smarty +smash-up/S +smile/GDMkS +smooth/GYRSTPD7 +snapdragon/MS +snarler/M +sniff/SRGD +sniffle/SGD +snobby/T +snort/GRDS +snowcapped +snowshoer/M +snug/YPT +snuggle/GSD +soapstone/M +sobbing/Y +socialism/MS +sodium/M +softball/SM +soft-hearted +software/M +sogginess +soi-disant +soil/GMDS +soiree +sol +solace/GDMS +solaria +soldiership +solidi +soloist/SM +solvable/IU +solvent/SIM +some/W +somersault/GSMD +songstress/MS +sons-in-law +Sonya/M +sooth/RkMDG +sophistic/Nn +sortable +sou/MS +soundly/U +soupy/T +sour/DPTSGY +Sousa/M +souse +Southend/M +Soweto/M +sows/A +spacing/M +spadeful/MS +spadix/M +spanking/M +spare/PYS +spars/T +Spartacus/M +spas/W +spastic/S +spatiality/M +specified/UaAf +spectroscopy/M +speleology/Mw +spelled/aA +spells/aA +Spence/M +spendthrift/SM +sperm/MS +spidering +spillage/SM +spin/RGSo +spinney +spire's/I +spiritless +splash/GDSzZ +split-level +spoilsport/MS +spoof/SDGM +sporter +spotless/PY +sprain/GDS +sprawl/GSD +spray's +spryer +sq. +squalor/S +squeamish/YP +squirelet +SRO +SST +St +stable/FMS +staccato/S +Stacy/M +stagecraft/M +stage-struck +stagflation/SM +Stalag/M +stalemate/SGMD +Stalinist +stamina/M +stamp/RJDGS +Stan/M +standby +stander/S +standoffishness +standpipe/SM +stannic +stanza/SM +staple/SGDRM +star/rdZpSDG +starboard/MS +starlet/SM +starlight/M +Starr/M +statesmanship/M +statical +stationer/ZSM +station-wagon/MS +statuesque/Y +stead/z2MZ +steadies +steady/UY +steamroller/dSM +steamy/TP +Steiner/M +Stella/M +stellar +stenographer/MS +steppe/SRM +steppingstone/S +stereophonic +stet/MGSD +Stevenage +stifle/SGDk +stillborn/S +stimulative +stimulatory +stimulus/M +stitcher/MZ +stoat/MS +stockade/MS +Stockdale +Stockholm/M +stockinette +Stockton-on-Tees/M +stockyard/MS +stoic/SYM +stoichiometry/MW +stolidness +stomach-ache/SM +stomach-pump +stomal +stonewashed +stoop/DGS +stop/MRSDG +stoppable/U +storekeeper/SM +stork/SM +storm-lantern/SM +storm-sail/SM +story/MSD +storytelling/M +straddle/RSDG +strangulation/M +stream/GSRMD +streamed/U +strengthener/SM +stretchiness +striae +striate/SGD +strict/TY +string's +Stromberg/M +structure's +strudel/MS +struggle/SGD +stucco/MDG +stuff/cDG +stuffing/M +stupid/Y +sturgeon/MS +styler/SM +subaqueous +subduction +subdue/SDG +subhuman +submarginal +submitter/S +suboptimal +sub-plot/SM +subsequence/M +subset/MS +substantive/SMY +subtask/SM +subterfuge/SM +subtlety/SM +subtly/U +subtopic/SM +subvention/MS +sucrose/M +Sudan/M +Sufism/M +sugar-coated +sullener +sumac/SM +summary/Ss9Q8MY +sumptuous/YPK +sun-baked +sunder/dS +sundial/SM +supercharge/GSRD +superego/MS +superhighway/SM +superintendency/M +superintendent/SM +superlunary +supermarket/MS +supernova/SM +superposition/M +superscribe/XDNSG +superscription/M +superstate/S +superstitiousness +supervention +supplant/GSD +supplely +suppose/DXKSGN +supranationalism/M +Surat/M +surer/I +surf/RDMSG +surge/ASDG +surprised/U +surprising/UY +surrealism/MS +surrealist/W1S +surrogate/MS +surtax/SM +Susana/M +Susie/M +suspicious/PY +swansong +Swartz/M +swath/MDGS +Swaziland/M +Sweden/M +Sweeney/M +swell/JDGS +swift/TYS +swinish/Y +swirl/DGYS +swirly/T +Swiss +switchboard/MS +swollen +syllabus/SM +sylph/MS +symphonists +synaesthesia +sync/SDG +syndactyl/Y +syndicalism +synergism/SM +synergistic +syngamy +synod/MWwS +synoecious +Tabitha/M +table-top +tachometer/SM +tachycardia/SM +tacky/T +tag/GMDS +Tahitian/S +tailplane +talcum +talky/S +Tallinn/M +tallness +tallow/ZM +tamale/MS +Tamar/M +Tamara/M +Tampa/M +tampon/dMS +tangency/M +tangerine/MS +tantalise/k +tantalize/k +Tao/M +tap/drRDMGS +tapestry/SMD +taproom/MS +tarnish/G7DS +tarsi +taskmistress/MS +tasted +taster/SM +taught/AU +tautness +tavern/SM +teabag/S +teach-in +tear-jerker +teatime/SM +technicality/SM +tee-heed +teenage/R +teeny-weeny +teepee/MS +Tehran/M +Telefonica +Telefunken/M +Teleprompter +televisual +Tempe/M +temper/dESM +template/FS +template's +temple/MS +Templeton/M +temporal/Y +temptation/M +tempura/SM +tenpin/SM +tents/I +tenuous/Y +tepee/MS +tequila/MS +tercentenary/S +terracotta +Terre/M +terse/TY +testator/SM +tte-bche +tetrafluoride +tetragon/oMS +tetrahedral +tetrahedron/SM +Tettenhall +Teuton/MW +textbook/MS +thallophyte/M +Thameslink +that/M +thatching/M +THC +theatrical/S +them/W1 +thence +thenceforth +theocracy/SM +theorem/SM +there'd +thereon +Theresa/M +thermal/S +thermistor/SM +thermonuclear +thiamine/M +thickening/M +thickhead +thick-headed +thickish +thickset +thine +thinking/U +thinks/A +thirty-nine/H +this'll +Thomism/M +Thompson/M +thoroughgoing +those +thought/A +thread/AGDS +three-piece +three-ply +through +through-traffic +throw/RSG +thumper +thunderous/Y +thunk +thyrotropic +ticker-tape +tieback/SM +tight/SYPT +tightened/c +tight-knit +Tigris/M +tile/RDSMG +tillage/SM +timekeeping/M +timelessness +timeliness/U +time-share/DGS +timid/Y +timidness +tinge/S +Ting's +tin-opener +Tippecanoe/M +Tirana/M +tirelessness +tit/RMS +titan/MSW +titration/M +tobacco/MS +toe/DMGS +toehold/SM +toga/DSM +Togo/M +Togolese +Toledo/M +tomahawk/MDGS +Tomlin/M +Tommie/M +tomorrow/MS +ton/droMWS +Tonbridge +Tongan/SM +toolmaking/M +tool's +topicality/MS +tops/Z +toque/MS +Torquay +torque/DSGM +tort/FSEA +Tory/SM +totalitarianism/SM +tousle/DSG +tow/DRGS +tow-coloured +toyshop +traceless/Y +trace's +Traci/M +trackball/S +tractable/IY +tracts/C +trademark/GSDM +tradespeople +traffic-calming +trailblazer/MS +training/MS +trainload +trainmen/M +tram/SM +trammel/SDG +trampolinist +trance/MS +tranquilly/Q8q-s9 +transatlantic +transcribe/RGNSDX +transducer/MS +transistor/Q8MS +transliterate/GnD +translucency/SM +transmittance/MS +transsexual/SM +trapezoidal +trappable/U +trashy/TP +trawl/SRGD +treadmill/MS +treats/aA +trefoil/SM +tremulous/YP +trench/AGDS +triangulate/NnSGD +triathlon/S +trick/SGD2MzZ +trickery/SM +trickster/MS +tricky/TP +trill/SMGD +trillion/HS +trillium/SM +trimester/SM +trimness +Trinidad/M +triply/N +tripod/SM +trisection/S +trochee/MS +tropism/MS +trot/GRSD +Truckee/M +truckle/GSD +truculence/M +Trudeau/M +true/DTG +truly +trumpet-call +Tswana/M +tuberculosis/M +tubular +tuck/DRSG +tuition/SMI +tumbledown +Tunisia/M +tunny/MS +turban/SM +turbaned +turn/AScGD +turned/U +turner/AS +turner's +turnpike/SM +turnstile/SM +turtle-dove/SM +tutelage/MS +tutelary/S +tu-whit +TVA +twenty-one +twisted/U +two-faced +twopence/SM +two-way +TWX +Ty +tyke/SM +tympanist/MS +Tynemouth +typewriting +typewritten +typhoid/M +Tyson/M +tzigane +UART +Ukraine/M +Ulan/M +ulnar +ultimatum/MS +ultimo +ultrasound/SM +Ultrix/M +UMIST +umpteenth +unabated/Y +unacceptability +unacceptable +unalike +unanimous/Y +unattainable +unban/DG +unbeknown +uncapping +uncertainness +unchaste +uncreative +undated/I +undeliverable +undeniable/Y +underfloor +undergarment +undergrad/MS +underlip +underpay +undertone +undoubted/Y +undulant +unfairness +unfamiliarity +unfavoured +unfelt +unflappability +unforgiving +unfriendliness +unfruitful +unfunny +ungodliness +unhand/GZ +unicameral +unidimensional +uniform/SMYD +Unisys/M +universalism/M +universality/SM +unjust +unkempt +unkink +unlovable +unmask/G +unmethodical +unpersuasive +unruliness +unruly/T +unsentimental +unsocial +unspeakable/Y +unspectacular +unsubstantial +unsystematic +untoward/Y +untraditional +untwist/G +unwrap/DG +updater/M +Updike/M +upheaval/SM +upholster/ASd +upholsterer/SM +UPI +uplink/GDS +up-to-date +uranium/M +urbane/Y +urgent/Y +urinary +urinate/DSG +urination/M +urologist/S +Ursula/M +us/rS7dgl +USART +usefulness +USO +USPS +usurer/SM +Utica/M +uvular/S +uxorious +Uzbek/M +vaccinate/GDS +vacillation/M +vacua/M +vagabond/GMSD +vagrant/YSM +vainness +Valdez/M +vale/MS +Valerie/M +valetudinarian/MS +validity/SMI +valve/SDMp +Vanuatu +vapourish +variably/I +Varian/M +variance/IS +variance's +variety/SM +varying/UY +vat/GMDS +VCR +VD +veal/A +vectorise/nDGS +vectorize/DNGnS +veld/SM +venation/SM +veneration/M +Venice/M +ventricle/SM +venture/SRDG +venturesomeness +Venusian/S +veranda/SM +verdict/MS +verdure/DSM +verifies/A +verisimilitude/MS +vermicelli/SM +vermiform +Vermont/M +vernier/MS +Vernon/M +versatile/Y +verses/4I +verso/MS +vertigo/M +very/Y +vestal/S +Vesuvius/M +viability/MS +vibrancy/SM +vibraphone/S3M +vibration/M +vicariousness +vice-chancellor/SM +Vicki/M +vicua/S +videophone/SM +Vienna/M +Vientiane/M +Vietcong/M +viewing/M +views/KAc +vigorousness +Viking/SM +vilify/DNSnG +Vinci/M +vindicator/SM +vineyard/MS +violet/SM +viperous +vireo/MS +virus/MS +viscometer/SM +viscountcy/MS +visions/K +visitation/SM +visited/U +visual/8sY-9QSq +Vivian/M +vociferousness +Vogts +volatility/SM +Volga/M +volume/MS +volumetric/Y +voluminousness +voluptuary/SM +Voss/M +Vouvray/M +vulgarism/SM +vulgarity/MS +vulnerable/IY +wad/drMGS +waffle/GMDS +waffle-iron +wager/d +wailer/M +Wainwright +waistline/SM +Wakefield +walkout/SM +wallaby/SM +walnut/MS +Walsingham/M +Walworth/M +wane/S +wariness/U +warms/A +warp/DGMS +warren/SM +warrior/MS +warship/MS +Warwick/M +wary/UY +washer/5SM +washing/SM +waspishness +Wasserman +watchdog/SM +water-glass +watershed/MS +waterworks +Watling/M +Waupun/M +Waveland/M +Waverley/M +wayward/Y +weak/YT +wealth/MZ +weather/mdSM +Webster/M +weed/DGMSZ +weekender/M +weevil/SM +weighed/U +weightlessness +Weimar/M +Weinberg/M +well/DGS +well-born +well-developed +Wellingborough/M +well-paid +well-received +well-wisher/S +wend/DGS +Wenger/M +Wesson/M +west/M +Westbrook/M +Westward/S +whack/SDG +whale/RMGS +what's-her-name +what's-its-name +wheeze/DSGZ +whelm/fDcGS +whelp/SDMG +where/M +whereabouts +whereas +whereby +whiny/T +whipcord/SM +Whippany +whipper +whipping/M +whirlybird/SM +whist/M +Whitehall/M +Whitehorse/M +Whitlow/M +Whittier/M +whoo +who've +WI +wick/RiSDhM +wideband +widespread +Wilcox/M +Wilfred/M +Wilkie/M +willow/SMZ +Wilmington +Wilmslow +Wilson/M +wilt/DGS +wimp/MSZ +winded +window/pGSDM +windrow/SM +windscreen/MS +Winfield +wingspan/MS +Winston/M +wire/2ZmDpSMJG +Wisenheimer +wisteria/SM +withdrawnness +witlessness +witness/DGS +Witt/M +Wittenberg +witticism/SM +wizened +woad/M +Wodehouse +wok/MS +Wokingham +Wolffian +wolfish/Y +Wolverhampton/M +womanlike +womanly/TP +Woodbury +woodcut/SRGJM +woodworking/M +Woody's +Woolworth +word-processing +workday/MS +working/MS +workmen/M +world-famous +worldliness/U +worldly/TP +worm-wheel +wrapping/SM +wrest/GSD +wretched/P +wrights +writeable +writing's +wrongfulness +wrung +wt +X +X-ray/S +yack/GDS +y'all +Yarmouth/M +yarmulke/SM +yarn/DMGS +Yasmin +yawl/SM +y-axis +yea/S +Yeager +year/YMS +yearling/SM +yearn/DJGkS +yeasty/T +Yellowstone/M +Yemen/M +yeoman/YM +yes +yes-man +yielding/U +YMCA +yonder +Yoong +York/M +Yosemite +Youngstown +Ypres +yucky/T +Yugoslavian +Zaibatsu +Zambezi +zephyr/MS +zodiac/MS +zymurgy/S + +Aachen/M +abash/LGhSD +abashed/UY +abattoir/SM +abb/S +abbreviate/NDnSG +Abdul/M +Abelson/M +aberrant/Y +abjuration/M +abnormal/Y +aboard +abound/GDS +abridge/LSGD +abscess/DSGM +abscissa/MS +abseiler +absorbent/M +absorbs/A +abstractionist +absurd/PYT +abuse/GESD +abusiveness/S +abut/GRSLD +Abyssinian +Ac +acc. +accelerator/SM +acceptably/U +access/NSXDyMbG +accident-prone +accommodative/P +accordance/SM +accountability's/U +accretion/SM +accrue/SGD +accusative/S +accuse/nRkSGD +accused/M +achievement/f +achiever/cS +Ackerman/M +acknowledged/U +ACM +acne/SMD +acolyte/MS +acquainted/U +acquiesce/GSD +acquire/DASG +acquisitiveness/S +acreage/MS +acridness/S +actinometer/MS +acumen/SM +acyclovir/S +adherent/YSM +adis +Adirondack/S +adjustor's +adjutant/MS +administrable +admirable/P +admittance/SM +adolescence's +adorable/P +adore/lRSNnGkD +Adrian/M +adroit/TYP +ADte +adulterer/SM +adumbration/M +advantageousness/E +advent/SvM +aeon/SM +aerobic/SY +aerofoil/MS +aestheticism/SM +aestival +afar +affable/TY +affiliate/nESGDN +affirmation/MA +affordable/U +affricate/VSNM +afresh +Africa/M +African/SM +afterbirth/SM +after-effect/SM +afterthought/MS +afterwards +aged/P +agenda/MS +agglutinin/SM +aggrandize/GLDS +aggregating/E +aggressive/c +agitprop/SM +agronomic/S +airbrush/MGDS +Aires/M +airlift/GDMS +airport/MS +akin +Al/M +alacrity/SM +Alaska/M +Albans +albumin/MS +alee +alehouse/SM +Alf/M +Alfredo/M +algae +algal +algebraic/Y +Alhambra/M +aliener +alimentary +alive/P +Allen/M +all-in +allotrope/WM +alloy/SGMD +all-purpose +allspice/M +alluvial +alluvium/SM +alp/M +Alphonse/M +Altai/M +altercate/nN +alternator/SM +Althea/M +alum/SM +Alyssa/M +amalgam/nVSM +ambassadorial +ambidextrous/Y +amble/KS +ambled +ambrose +ameliorate/DGnNVS +amender/M +amnion/MS +amniotic +among +amongst +amortised/U +ampere/MS +Amtrak/M +anabolism/MS +anachronistic/Y +anaemia/SM +anaesthetise/RnSGD +analogousness/S +anamorphic +anastomosis/M +anathema/MQ8S +Anatolia/M +anchoret/W +anchorite/SWM +Andalusia/M +Anderson/M +angel/S1wMW +Angelina/M +angiosperm/SM +angle/MRSJGD +Anglo-Boer +Anglo-Indian +Anglo-Irish +anguish/MDSG +angular/Y +animalness +animation/AM +anion/SWM +anise/MS +Ankara/M +anklebone/MS +Anne/M +Annette/M +annunciator/MS +anomalous/PY +anon +anon. +anorectic +ANSI/M +antagonism/SM +antagonist/WSM1 +antagonize/RSDG +antebellum +antecedence/SM +antedate/GSD +anthropocentric +anticlimax/MS +anticlockwise +antidisestablishmentarianism/M +anti-establishment +antifreeze/MS +anti-hunt/G +Antilles/M +antimatter/MS +antipode/SM +antipodean/S +antithetic/Y +antiviral/S +antsier +anxious/PY +aped/A +apelike +Apennines +aphelia +aphelion/SM +aphonic +APO +apocryphal/P +apoplexy/SM +Apostille +apotheosizes +Appalachia/M +Appalachian/MS +apparition/SM +appeal/GDSkM +appellant/SM +Appleton/M +approx +aproned +aptly/I +aquanaut/SM +Arab/MWS +arabesque/MS +arachnophobia +arbitrate/VSGD +archaeology/w3SM1 +archaicness +architect/SM +architrave/SM +arctangent +Argentinian/S +argumentation/M +aria/SM +Arianism/M +Aries/M +aristocrat/WM1S +armoury/SMD +armrest/SM +arouse/SDG +arrange/LRSDG +arrests/A +arriver/M +artefact/SM +arthropod/MS +articulator/MS +artisan/MS +artistry/MS +Arturo/M +Aryan/SM +as +ascendant/Y +ascends/A +ascension/M +Ascot/M +ascribable +asher +Ashgabat/M +ashlar/dSM +ashy/T +asleep +asphyxiation/M +assembled/AU +assembly's/AE +assimilation/M3 +associateship +association/oM +associator/MS +assorter/M +asteroid/SM +asteroidal +astronaut/WwSM +Athenian/SM +atherosclerosis/M +Atherton/M +athletic/S +atmospheric/S +atone/SoLDG +attach/S +attainability/MS +attestation/M +attractor/SM +attribution/SM +atypical/Y +auction/DMGS +audacity/SM +audience/SM +auditor/MS +Audubon/M +August's +Aurelius +authority/SM +autobiographer/SM +Autocue +autodial +autoimmune +automaton/MS +autumnal +avail/BlSDG +avast/S +aviate/nN +aviation/M +aviatrix/SM +avionics/M +avoid/RSDGl7 +avoidable/U +awaken/dJS +away +awayness +awning/MD +Ayrshire/M +azalea/MS +b/pb +Baal/M +bacilli +backdate/DSG +back-seat +backslide/GS +backstroke/DGMS +bactericide/MS +bacteriology/MwW3S +bacteriophage +Baden/M +badinage/SDMG +badman/M +bagel/SM +bagged/M +bah/S +bailout/MS +Bairiki/M +bait/SMGD +baize/M +balaclava/MS +balancing/AcUe +Balkan/SM +ballade/MS +ballplayer/SM +ballroom/SM +bamboo/SM +bandager/M +bandanna/M +banding's +bandwidth/SM +Bangladesh/M +Bangor/M +banister/SM +bankcard/S +banknote/S +bankroll/GSDM +bankrupt/GSDM +baptistry's +barb/SRGMDi +Barbary +barbecue/DSMG +barbel/SM +Barclaycard +bareness/S +bark/MDRGS +Barkley's +barks/C +baron/MS +baroqueness +barrack/SGD +barracker/M +barrenness/S +barrette/MS +Barton/M +baser/C +Basildon/M +basketry/SM +basophilic +bas-relief/S +Bastille/M +Batavia/M +batch/DSGM +bathmat/S +battalion/MS +batting/M +Bauer/M +Bavaria/M +Bayonne/M +BBS +beading/M +beanpole/MS +bearable/U +Beaumont/M +Beckett/M +become/SGk +bedclothes +bedevil/LDGS +Bedouin/M +bedroll/MS +bedsitter/M +bee-keeper/SM +Beerbohm/M +beforehand +beggar-my-neighbour +begin/RJGS +beguile/DRLSGk +behalves +behaver/a +behindhand +Beirut/M +belfry/SM +Belgian/MS +belladonna/SM +bellflower/M +belly/SfM +belongingness +below +bely/SDG +beneficent/Y +Benin/M +Benjamin/M +Bennington/M +Beowulf/M +bequeath/GDS +Bergstrom/M +beribbon +beriberi/MS +Bering +Bernardo/M +Bernoulli/M +bes +besiege/SRDG +best-seller/S +betimes +beyond +bf +biaxial/Y +bible/1wMS +big-boned +big-name +bilabial +Bilbao/M +biliousness/S +billing/M +billionaire/SM +billow/DGMZS +bimbo/MS +binding/PM +Binghamton +binnacle/SM +biol +biostatistic/S +biped/SM +birdlike +birthed +birthmark/SM +bisection/SM +Bishopsgate/M +bismuth/M +bistable +bitchiness/S +bitterroot/M +bizarre/PY +blab/RSDG +blacklist/GD +Blackman/M +blackout/MS +blade/GDMS +Blaenau/M +Blaine/M +Blake/M +blanc/M +blanch/DSG +blancmange/MS +blanketer/S +blas +blatancy/MS +blather/dS +blaze/RkGDMS +bleary/TP +bled +blessedness/MS +blind/SDRTPGkY +blithesome +bloat/SDRG +block/UGDS +bloodhound/SM +bloodied/U +blood-poisoning +bloom/RMDGS +bloop/SDRG +blow-dryer +blowgun/SM +bludgeon/MGSD +blueback +blue-blooded +bluebush +blue-eyed +boathouse/SM +boatload/MS +boatswain/MS +bode/SZ +bodying/M +Boeing/M +boffin +Bogot/M +boil/AGSD +boiled/U +Bolivian/S +Bollinger/M +bolsterer/M +bona +boo/DSG +bookseller/SM +bootstrap/MDGS +booty/SM +borderer/M +borscht/SM +bosh/SM +bossy/TP +Bostonian/MS +bottleneck/MDGS +bottomless/YP +boundlessness/S +bounteous/YP +bourgeois/M +Bourne/M +bowel/SGMD +Bowes +bowline/SM +bowsprit/MS +bow-tie/SM +box/DZ2RS6GM +boxwood/SM +brackish/P +bracteate +brae/SMQ +brainstorm/SMDG +brainstorming/M +brainteaser/S +brainwasher/M +bran/SDGM +branded/Ua +brander/d +brandish/SGD +brawniness/S +breadfruit/MS +breaker/SM +breakpoint/DGMS +breathing/M +breccias +breve/MS +Brian/M +brick/SM +brick-red +bridgehead/SM +briefing/M +Brigham/M +brightness/S +brininess/S +brioche/SM +broacher/M +broke/RG +brontosaur/SM +broodmare/SM +brook/DSMG +brotherly/P +brothers-in-law +Browne/M +Brownian +Bryant/M +bubble/GYSMD +buboes +bubonic +Buchanan/M +buckram/dMS +Budd/M +buddy/MSGD +budge/DGS +budgerigar/MS +buggy/MTS +bulimarexia/S +bull/GYSMD +bullfighting/M +bullhead/hMDSi +bullheadedness/S +bullishness/S +bumpiness/S +bundle/UDG +bur/DGSYM +burdensome/PY +burglary/SM +burgundy/S +Burk/M +Burroughs +Burt/M +Bushido/M +businesspeople +busk/MRG +bust/RGZSMD +busted/F +bustle/kSGD +buttermilk/M +buttery/TS +butyrate/M +buxom/Y +bx +bye-law/SM +byre/SM +bystander/MS +byway/SM +cabaret/SM +cachepot/MS +cacher +cadre/SM +caducei +caf/MS +caitiff/MS +californium/M +Caligula +caliph/SM +Callahan/M +calligraphy/S3MW +callow/PT +calumniator/SM +calve/DGS +calyx/SM +cambium/MS +camcorder/S +Camelot +Camille +campaign/MRDSG +Campbell/M +Canadian/S +cancellation/M +cancels/K +candlelighter +candy/SGMD +cankerous +cannibal/MQ8Sq- +cannonball/SDMG +Canoga +cantor/SM +cants/A +Capistrano +capita/onM +capitalising/c +capping/M +caravansary/SM +carbolic +cardboard/SM +Cardigan/M +Cardin +careerist +carefree +cargoes +caricaturization +Carina +Carla +Carleton +carnation/MIS +Carnegie/M +carrel/SM +carriage/aSMf +carry-all/SM +carry-cot/SM +Carthage +cartwheel/RGMDS +Caspar +cassock/SMD +cassowary/MS +castigator/MS +castration/M +casuistry/MS +Catalan +Catalina +catechise/SGD +catenate/FN +catfish/SM +catholic/M +catnip/SM +CATV +Caucasian/S +causation/M +cautiousness's +caving/M +cavitation +Cayuga/M +ceaseless/PY +Cecilia +celebrator/SM +cellulose/MS +Celt/W +centrifugal/SY +cerebrate/SDG +ceremonial/S +ceremonious/UY +certainer +certifies/CA +cerulean/MS +cervical +cessions/F +chaff/MGSD +chair/MGm5SD +chairlady/M +chambermaid/MS +champ/DGS +champagne/SM +champers +champion/SGDM +chance/DS2MZGy +chancel/SM +chancellorship/MS +chancer +Chang +changeableness/SM +changed/U +chant/MRDGSJ +chapter/dSM +chariness/S +charismatics +charity/SM +Charlottetown +chartroom/S +chase/RDGS +chassis/M +chat/GS2MZDz +cheeseburger/MS +Chelmsford +Chelsea/M +chem/3 +chemiluminescence/M +Cherie +Cherokee/S +Cheshire/M +chge +chi/M +chianti/M +chilli/M +chin-wag/GD +Chisinau/M +chlorophyll/SM +chloroplast/SM +chock/DGSM +chocker +chock-full +chokes/M +cholesterol/SM +choline/M +Chondrichthyes +choosy/T +choral +chorea/SM +Christi +Christmas/MS +Christopher/M +chroma/M1 +chromate/M +chromatin/MS +chromosome/SM +chrysanthemum/MS +church/mMG5SDY +churl/MS +cicada/SM +cicatrix/M +cigarillo/SM +cipher/MdS +circulate/GyNDSnV +circumferential/Y +cirque/SM +cirrhosis/M +citable +cites/I +citronella/SM +citrous +cityscape/SM +civilian/SM +civilly/U +ck/C +cladding/M +clash/DGS +class/2GZDMwpS1 +classes/e +classify/R7DSnGN +Claudia +cleaning/M +cleanliness/U +cleans/DRSG +clean-up/MS +clear/TPSYGJD +clear-sighted +cleft/DGSM +Clemenceau +clement/IY +client/MS +clientle/M +climax/MGDS +clinic/YSM +clinker/d +clitoral +clone/GDMRS +closes/E +close-set +closure's/E +cloth/DGJSM +club/GSMD +clump/DZSGM +clumsy/TYP +Cm +coalminers +cochineal/SM +cochleae +Cochran/M +cock-fighting/M +cockscomb/MS +cocksucker/S +cocksure +codec/SM +codeword/SM +codices/M +codling/M +coercion/SM +coffee-cake/MS +coffee-pot/MS +co-found +cognisant +cognizant/A +coherer/M +coho/S +coitus/MS +cold-hearted +Coleraine/M +coleslaw/SM +colic/ZSM +Colin +collectable/S +Collins +colloid/MoS +Colorado/M +colossus/M +colour-blind/P +Comanche +combinable +comet/MS +cometh +comm +commensurable/I +commensurate/YI +commentator/SM +common/YPSr +common-room/M +communique/S +comparable/P +compatibly/I +compendious +competent/IY +complaining/UY +completed/U +completion/SM +comport/L +composite/SY +comprehensive/PS +compressible/I +comptroller/SM +comradeliness +Conan +concatenate/nDSG +concave/Y +concentrate/SGNnVD +concentric/Y +conciliate/nGVyN +conciliation/MA +conciseness/S +conclusive/IPY +conclusiveness/IS +concoction/SM +Concorde/M +concubine/MS +concupiscence/MS +conditionality +condone/DGS +conductances +confectionist +confiscator/SM +conflict/kSMVDG +Confucianism +confused/P +conger/SM +congratulation/M +congresspeople +connects/EA +conner +Connie +connubial/Y +conquered/U +consanguineous/Y +conscription/SM +conservancy/MS +consideration/AS +consolidates/A +consomm/S +consonantal +Constantine/M +constitutive/Y +consulate/SM +consultation/M +consultative +consultee/SM +contemporariness/S +contemptibility +contextual/Q-q8 +contiguity/MS +contiguous/PY +continental/S +continuance/ESM +continuity/ESM +continuous/YE +contradistinction/SM +contraflow/S +contravention/MS +contretemps/M +contributor/MS +convection/SM +converted/UA +convey/D7SG +convolute/DY +coolness/S +co-operation/M +co-operator/MS +co-opt/NVG +co-ordinator/SM +co-ownership +copilot/SM +Copperfield +copperhead/MS +coprocessor/S +cops/DSG +copter/SM +copulation/M +copycat/SMDG +coquettish/Y +cordless +cord's/F +co-respondent/SM +Corinthian/S +cork/DRGMS +corks/U +cormorant/SM +Cornelius +Cornwall/M +corporate/3SY +corpulentness/S +correctable/U +corrective/S +correlator/SM +corroboration/M +Cortland +cosign/RSDG +co-site +cosmopolitan/MS +costive/P +cosy/YTP +Cte +cotillion/MS +cougar/SM +could +coulomb/SM +countenance's +counteract/DGVS +counteraction/SM +counter-clockwise +counterflow +counter-intuitive +countersign/DSG +counterspy/SM +counter-terrorism +countless/Y +county/M +coup/SM +couple/DRCSGJ +courtesying +Covent +covers's +covet/dSk +cowherd/SM +cow-lick/SM +cowpox/MS +co-writer +cowslip/SM +coxswain/GSMD +coypu/SM +CPA +cpd +crabby/T +crackable/U +cradling/M +cram/GSD +crampon/MS +crank/DTZSGM2z +crappy/T +craven/dPY +craving/M +crawlway +creative/P +credible/YI +creditworthiness +creek/SM +Cretan +cretinism/SM +Creutzfeldt +crewelwork/MS +Crimean +cripple/RGkDSM +crises +criteria +croak/RDZSG +crookedest +Crookes +croon/GSRD +Crosby +crossbar/MSDG +crossest +crossover/MS +crosspiece/SM +crowd's +crowned/U +crowner/M +Croydon/M +CRT/S +crust/MGZzS2D +cryptanalyst/M +crystallizes/A +CSP +cub/dWw3SD1GM +cucumber/MS +cueing +culler/M +cult/SM3 +cultivate/NGSnD +cultivated/U +Cumbrian/M +cumquat's +Cunningham/M +cupcake/SM +cupidinously +cuprous +curative/S +curdle/GSD +cure/S +curie/MS +curricle/M +cursed/P +curtness/S +cuspidal +cuss/DhiSGM +custom/sQ-9Mr8qSt+ +cut/RSGJM +cutback/SM +cuteness/S +cutworm/SM +cybernetician +Cycladic +cycle/D3SWGwM1 +cycling's +cygnet/SM +Cypriot/SM +Cyril +Cyrillic +cytosine/SM +czarism/M +Czech/M +dabber/M +dabble/DRSG +Dachau +dactylic +daemon/SWM +daffiness/S +daftness/S +daguerreotype/SMDG +dairy/m5MSG +daisy-cutter/S +Dalton +Danbury +dander/SdM +dandle/DSG +Danielson +Danube +daredevil/SyM +darkish +d'art +Dartmouth +dashboard/SM +data/M +datable +datafile +datum/MS +Daugherty/M +David/M +Davy/S +dawdle/DRSG +daybreak/SM +DBE +dead/PTY +deadly/PT +dealt/a +Dearborn +dearth/SM +debauchee/MS +debilitate/SNGnD +decadency/S +decamp/GL +decease/KSGD +decelerate/nDSNG +decennial/YS +decent/YI +decimal/Q8Y-qSM +decimate/NDSnG +declarable +dcolletage/S +decorates/cA +decorousness/S +decortication/M +dedicated/Y +dee/M +deed's/a +deerstalker/SM +deface/RL +defeatist +defensible/IY +definably/I +definition/KAMS +deflector/MS +defog/R +deft/PTY +degenerate/YP +degreed +dehydrogenate +dj +Delia/M +deliberative/P +delivery/m +delphinium/SM +deluge/GSD +dementia/SM +democrat/qQ81-WSM +den/ZDSGM +denigrate/nVGSND +Denny +denounce/DLSGR +dentine/M +denture/SIM +denuclearise/SDG +deodorise/nGRSD +deodorize/nGRNSD +dependent/cI +deposit/AdS +depute/SnQ8NGDZ +derail/L +derelict/S +deride/NXvkVuD +derivation/M +derrick/SDGM +descry/DGS +desiccant/S +desirabilia +desirably/U +desktop/S +desolateness/S +despite +despondency/SM +destigmatization/M +destination/MK +destitute/P +detainee/S +detect/DGSBVl +detectable/U +determines/KA +detonable +detoxification/M +detoxify/GnDSN +detribalize/DSG +Detroit +deuterium/M +developed/Uf +developmental/Y +devolve/SGD +Devon/M +dew/ZGS2M +dewiness/S +Dewitt +dewlap/SM +Dhiri +diaereses +diagnometer/SM +diagnosis's +diagram/RDGMS +diagrammable +dial/RSMGD +dictatorship/MS +dielectric/SM +differencing +differentness +differer/S +diffusion/M +diffusive/P +dig/RSJG +digital/-qQ9s8Y +digressive/P +dilation/M +dilatory/P +dilettante/MS +Dillinger +dine/S +dingo/MS +dingy/TSP +diocesan/S +Diogenes +dioxalate +dip/DRGSZ +diploid/S +diplomacy/SM +diplomatic/U +diplomatist +diptych/M +directive/SM +directors/a +dirigible/S +disable/LGSDR +disburser/M +disc/SM +discerner/M +disciple/MGDS +disclosure +discretion/IMS +discriminable +disdainful/P +disgruntle/LSDG +disharmonious +dishevel/DGLS +disinfectant/SM +dismiss/vR +dispersal/SM +disputatious/Y +disregard/6 +disreputable/P +disrupt/uGVSDv +dissect/GD +dissemble/DSRG +distaff/SM +distances/e +distinguish/S7DlG +distort/DRG7 +disturbance/SM +disyllable/MW +ditcher/M +ditz/S +diuresis/M +divinity/SM +division's +Dixon/M +Djibouti/M +DLA +docket/SdM +dog-eat-dog +dogfish/MS +Doggett/M +dogsbody/M +dog-tired +Doha/M +dolly/DGMS +Dolores +domineer/DkSG +Donegal/M +Donna +donnish/YP +doom/SDGM +doomsday/MS +dos/dSDG +Dostoevsky +double-barrelled +doublet/SM +doubling/A +dough/MZS +douser/M +dovelike +dovetail/MGDS +dowdy/PTY +downland/S +download/BGDS +Doyle +doze/SZDG +dozen/S +Dr +Dracula/M +draft/cSA +drafting +draft's/c +dragonfly/MS +drake/MS +dramatic/S +drapery/SM +draught/zm52SZ +drew/Ace +drillmaster/MS +drink-driving +drip/JSZMDG +drive/RJSG +driven +drizzly/T +droll/YTP +drop-forging +drosophila/M +dross/MS +drown/GJDS +drum/RSDGM +drunk/TMSY +dry/SGTDRY +d's/A +duck-billed +duckling/SM +ductless +dud/SM +duenna/SM +duet/SDMG +Duffy +duke/SM +Dulles +Dumas +dummy/SGDM +Dunbartonshire/M +Dundee/M +Dunedin/M +Dungannon/M +dunk/GDS +duodecimal/S +dupion/M +duplex/SMDG +durable/SPY +dusky/PT +dwells/I +Dyfed-Powys +dying/U +Dylan/M +dynamism/SM +dysfunction/oSM +eager/MYP +eagle-eyed +Ealing +earldom/SM +earmuff/SM +earshot/M +ear-stud/MS +earth/MZY2DG +earwig/GSDM +EBCDIC +ebullience/SM +echoic +ecliptic/MS +ecology/wS3M1 +economics/M +ecru/M +ecumenism/SM +eddy/DGMS +edelweiss/M +Edgar/M +Edgbaston +edifying/U +educable/S +educate/DGANS +EEOC +eeriness/SM +efface/LDSG +effectual/PIY +effeminacy/MS +efficacious/YIP +efficiency/MIS +effloresce +effortlessness/S +e.g. +egalitarianism/SM +egotist/WS1Mw +egregiousness/S +eigenstate/S +eigenvalue/MS +eighty-first/S +EKG +elaborate/PDSGnYVN +elaboration/M +elasticity/SM +elation/M +elderly/SP +electoral/Y +electrolyte/MS1 +elemental +elf/M +eliminator/MS +Elisabeth/M +Elizabeth/M +Elle +ellipsometer/MS +elute/DG +elven +Elvis/M +elvish +Elwood/M +elysian +embezzle/DLRSG +embouchure/MS +embracer/M +embrocation/MS +embryo/SM +emergency/SM +emission/M +emotion/pMS +empathy/QM8WS +emphasis/cdACQS +emphasizing/A +employee/SM +emptier/M +emptiness/S +emulation/M +enacted/A +enamour/DGS +encephalitis/M +encourage/LDSkG +encumbrance/SM +encyclopaedia/SM +endocrinology/3SM +endorse/LRDSG +energetics/M +enforce/RbBLDGhS +engineer/SDGM +English-speaking +engross/LDSGhk +Ennis +Enrico +enrol/LDRSG +ensnare/SDLG +ensure/DRGS +enteritides +enthalpy/MS +enthral/GDLS +enthusiasm/SM +enthusiast/SWM1 +entrant's +entrechat/S +entrept/S +entrepreneurial +enumerates/A +envious/PY +ephemera/SMo +epicycloid/M +epigram/MS +epigrapher/M +epiphenomena +epistolary/S +epitaxy/Mo +epithelial +epochs +eponymous +equalised/U +equestrian/S +equipartition/M +equitably/I +equitation/MS +equivocal/UY +erase +Erasmus +erecting +erectly +ergodic +ergodicity/M +ergonomically +Erik/M +Ernie +Ernst +erosible +erotic/YS +eroticism/SM +err/DkSG +errancy/SM +erring/UY +Errol +ersatz/S +erst +Ervin +escapable/I +escape/3SDLG +eschatology/M +escort/SGMD +escorted/U +esoterica +Esposito/M +espy/DGS +esquire/SM +Essen/M +establishing/A +Estella/M +etchant +ethicalness/M +ethnocentrism/SM +etiquette/SM +Euclid +Eugene +eugenic/Y3S +eulogised/U +Eustachian +Eva +evaluates/A +evangelical/S +evangelism/SM +evaporator/SM +ever-changing +Everest +Everton +Everyman +evildoer/MS +evince/SDG +evocation/M +examinable/A +exasperation/M +excitable/P +excrement/SM +excretion/M +execrable/PY +executrices +exegeses +exercise/RSBGD +exercised/c +exigence/ZS +exiguous +existence/SFM +expansionism/MS +expansiveness/S +expectant/SY +expectorate/SGNDn +expeditor's +experiment/NRSGMonD +expert/IPY +expiable/I +explicitness/S +explore/SnDRNyG +explosion/M +exposition/M +express/SNvbuDGYXV +expresser/M +expressionlessness +ex-students +extensible/I +extenuation/M +extraneous/PY +extravagant/Y +extravert's +extrema +extrinsic/Y +extrude/GNSDXV +eyelash/MS +eye-liner/MS +eyesore/SM +Faber/M +fabulous/PY +faceplate/M +facet/SdM +facile/YP +facilitation/M +factoring/MS +fag/SDGM +faggoting/M +Fahrenheit +faint-heartedness +fairly/U +fairyland/SM +falcon/SryM +Falkland/SM +falloff/S +falsification/M +fames/C +family/MS +famine/SM +fanciful/P +fanciness/S +fancywork/SM +fanny/MS +farer/M +far-fetched +farmhand/S +farmhouse/MS +farseeing +fashion/RSMDl7G +fatalness +fathomed/U +fatso/M +fattiness/S +fatuousness/S +fault/CSDGM +Faust +favourableness +favourite/MS +fawn/SRkDGM +fay/SM +FBI +FDA +fearfulness/S +fearsome/PY +feat/SCM +fecundation/M +feeble/TPY +feed/GRS +feigned/U +fell/GSTD +fellow-traveller/MS +felonious/PY +fence/RSDMJG +fend/CGDRS +fer/KLFC +feral +ferment/nDNG +fernery/M +fervour/MS +festal/Y +festivity/SM +fib/DRSG +fibrillation/M +fibrin/SM +fichu/SM +fickle/PT +fieldstone/M +fifth/Y +figurehead/SM +filament/SM +filigree/GMS +Filipino/S +fillip/MS +filming/M +finch/SM +findable/U +finery/MSA +fine-tune/SDG +fingerboard/SM +finickiness/S +finished/U +Finnish +fire/aSGD +firedamp/SM +firefly/SM +firemen/M +fire-power/MS +first/SY +first-rate +Fis +fishery/SM +fishlike +fishwives +fission/7SMDG +fistful/MS +fit/RPTJSG6YDjM +fit's/Aea +Fitzwilliam +five-fold +fiver/M +fixate/DSnVGN +fixed/PY +fixing/MS +fjord/SM +flag/mDGMJS +flagella/nM +Flanders +flap/SGDRM +flashcube/SM +flask/SM +flattering/UY +flavoursome +flay/DRGS +fleck/GDSM +fleece/RDMGZS +fleeciness/S +fleetness/S +flexibly/I +flimsiness/S +flint/ZSGMD2p +Flintoff +flippancy/SM +flit/SDG +flocculate/DSNG +floe/SM +flood/SGMD +flooder +floorer/M +floral +Florida/M +flouncy/T +flour/DMGZS +flow/kRGDS +flowed/c +flower/CSd +flowerpot/MS +flows/Ifec +fluent/YF +fluffiness/S +flunkey's +fluorocarbon/MS +fluxes/I +foam/DZSM2G +fodder/SdM +foe/SM +fogey +fogy/MS +folk-song/S +follicle/SM +fomentation/M +Fontainebleau +foot/GSRDJhipM +footbridge/SM +footnote/GDSM +footpad/SM +Forbes +forbidden +forcefield/SM +foredoom/GSD +forefinger/MS +foremast/SM +forenoon/MS +foresail/SM +foreskin/MS +forest/RMDSyNnG +foreverness +forge/SGAD +forgettable/YU +forgiven/U +forgiving/P +formalin/M +formative/PIY +formatives +formed/K4CAU +former/SC4FAI +forming/K4 +formlessness/S +Formosa +forms/AKC4 +formulator/SM +forsook +forth +forthrightness/S +fortnight/MYS +fortuity/SM +forwent +fossiliferous +founds/F +foyer/MS +fps +fractional +fracture/DSMG +frailness/S +Frankenstein +Frankford +fraternise/RnSGD +fraternize/NnSG +fray's +freaky/T +freckle/GMDSY +Freddy/M +free-for-all +free-form +free-handeness +freethinking/S +free-up +freezing/AU +frenzy/DMShG +frequent/TDRYSGP +freshen/dSr +freshness/S +Freya/M +friable/P +fricative/MS +frictionless/Y +friendlies +Frigidaire +frilly/TS +Frisco +friskiness/S +frisson/M +Frito +frivolous/PY +frocking/M +frock's +frontal/YS +frost's +froth/ZSD2MG +frump/ZSM +fuels/A +fullback/SMG +full-bodied +fulling +full-page +Fulton/M +fumble/GRkSJD +functional +functionality/S +fundamental/SY3 +funding/f +fungi/M +fungicidal +funky/T +furbelow/DGMS +further/drS +furze/SM +fustiness/S +futurity/SM +G +gaffe/MS +gage/SM +gainsaid +gall/SM +galleria/S +gallium/M +Galloway/M +Galvin/M +Galway/M +gameness/S +gamma/MS +Gandhi/M +Gandhinagar +ganger/M +gangling +GAO +gape/S +garbage/M +Garrett +Gascoigne/M +gasket/SM +gassed +gatehouse/SM +gauche/TPY +gauntlet/SdM +gausses/C +Gavin/M +GB +Geary +generalize/l +genericness +generosity/SM +Genet +genitive/SM +genre/MS +gentility/SM +gentlemanly/U +gentrification/M +gentrify/nSDGN +genuflect/DGS +geochemical/Y +geometric/S +geophysics/M +geopolitical +geopolitics/M +Georgette +geoscientific +geriatric/S +germinate/NnDGVvS +gerrymander/dS +Gertrude +gestate/SNxDGn +get/RSG +getaway/SM +ghastly/TP +ghost/DGMYS +giantkiller +Gibbs +gibe/GSD +Gilead/M +Giles +gilt-edged +gimmickry/SM +giraffe/SM +gird/RSDG +Giuseppe/M +giveback/S +gizzard/SM +gladiolus/M +glamorise/nDRSG +glamorize/NnDRSG +gland/MS +glandes +Glaser +glass-cloth +glazing/M +gleam/GSMD +gleefulness/S +glitzy/T +globalism/S +globalist +glossiness/S +Gloucestershire/M +glutei +glutton/SM +glycerins +gm +gnash/DGS +goal/pSDM +Goddard/M +godless/P +godmother/MS +Goff/M +goitre/DMS +gold/TSM +golliwog/SM +gondolier/MS +gone/R +goniometer/Ww +gonococci +goodwill/SM +gooier +goose-step/G +goriness/S +gory/TYP +go's +gotta +governments +gown/SDMG +graduate/NMGnDS +Grady +grain/DIGS +graining/M +grammaticality's +gramophone/MS +grandaunt/MS +granddaddy/SM +grandiose/Y +grange/SM +Grantchester +grantee/SM +grappler/M +grasshopper/SM +grate/jRG6SDkJ +gratification/M +gratified/U +gratuity/MS +graveness/S +grazing's +grease/CDRGS +great-aunt/S +Greece/M +greenhouse/MS +Greenpeace/M +Greg/M +Gregg +Grenada/M +Grenadines/M +Gretna +grid/SMD +Grieg/M +grim/PYT +gristly/PT +gritty/TP +grog/Z2zM +groovy/T +grotesque/PY +groundless/PY +grounds/f +grouped/A +grove/RSM +grubstake/MGDS +gruel/MGkS +grungy/T +GT +Guadalajara +guarantor/SM +guardroom/SM +guava/MS +Guernsey/M +guidepost/MS +guile/pM6j +guiltless/PY +Guinea/M +gulley/SM +gully/MSGD +gulp/RGSD +gunfire/SM +gunnel's +gunpoint/M +gunsmith/SM +Gurkha/M +Gustafson/M +gusto/M +gusty/PT +Gwyneth +gymnasia/M +gymnastic/S +gymnastics/M +gypsy/MS +gyrate/GDSNn +gyrocompass/M +hacienda/SM +hack/R7DGSJ +hadron/SM +haematology/W3SMw +haemostatic +Hafiz +Haggai +haggish +Hahn/M +hairbreadth/SM +hairsbreadth/S +hajj/M +half-and-half +half-brother/SM +half-duplex +half-fare +half-hearted/YP +half-truth/S +halloo's +halt/RJGSMkD +Hamilton/M +hammertoe/SM +Hammett +hammock/MS +Hampton +handbrake/SM +handiwork/MS +handlebar/MS +handout/MS +handsaw/SM +handshaking/M +hanger-on +hanging/c +hanky-panky +Hannibal/M +hansom/SM +ha'p'orth +hardbound +hard-core +hard-done-by +hard-headed/YP +hard-headedness/S +hard-paste +hare/MDGS +harelip/MSD +Haringey +Harlow +harmoniousness/IS +harmonised/U +harness's +Harris +Harrisburg +Harrogate +Hartford +Hartley +harvested/U +hasher/M +hashing/M +Haskins +hat/rGRSMdpD +hatch/GyDSJ +hauberk/SM +hayfield/MS +hayrick/SM +Haywood +hazelnut/SM +headlamp/S +headland/SM +heads/c +headstock/M +hear/GAaSc +heart/DhiMZz2Sp +heartbroken +heartless/PY +heart-rending/Y +heart-searching +heathenism/SM +hebe +hecatomb/M +heckle/RGSD +Hegel +hegira/S +heifer/MS +helicon/M +heliosphere +hell-fire/M +hell-hole/MS +helpfulnesses +helping/M +hem/GRSMD +Hemingway +hemisphere/SMWwD +henceforward +Hendrickson +herbaceous +herd/mRGSMD +here's +herewith +hermeneutic/S +hermeneutics/M +hermetic/YS +hermit/SM +Hernandez/M +hernial +heroism/SM +Herr +Hershel +Hesperus +heterodyne +Hewkin/M +hexameter/SM +Hezekiah +hi +hibiscus/MS +hide/GSJ +high-energy +high-faluting +Highfield +highlight/SGMDR +high-minded/Y +highpoint +hilarious/YP +hilariousness/S +Hillsboro +hindered/U +hindmost +hipping/M +hireling/MS +hire-purchase +hirsuteness/S +hissing/M +Hitchcock +hitch-hike/DRGS +Hitler/M +Hittite/SM +hive/MDGS +hoarseness/S +Hogarth +Hoggard +Holdsworth/M +hold-up/MS +holocaust/SM +home-owner/MS +home-owning +homoeostatic +homoerotic +homogenise/RGDS +homologous +Honduras/M +honest/EZY +honeydew/SM +honeylocust +hoodwink/SGD +hooper/M +Hoovers +hope/6MjSp +hopeless/PY +hopelessness/S +hopscotch/M +Horne +horrid/PY +horror-struck +horsemanship/SM +hospitality's/I +host/YSMGD +hostler/SM +hot-air +hotbed/MS +Hottentot/M +houri/SM +housebreaking/M +houseclean/JGDS +house-husband +housework/RSM +HP +hubby/MS +Huck +hullo/MSGD +humanenesses +humanise/CRDSnG +Humboldt +humidistat/M +humidor/MS +humiliate/GSkNDn +humpback/DSM +hundred/HMS +hung/Ac +Hungarian/S +hunker/Sd +hunter-gatherer/S +hurdle/RMGSD +huskiness/S +husking/M +hussar/SM +hustings/M +Hutchinson +hwyl +hydra/nSM +hydrate/MGDS +hydroelectricity/SM +hydrophobic +hydrosphere/MS +hyena/SM +hygrometer/SM +hymnology/3 +hyperaesthesia +hyperglycaemic +hyperinflation +Hyperion +hypermedia +hypersonic +hypnotic/SY +hypoglycaemic/S +hypoxia/M +hysteric/MSY +ibidem +IC +Icarus +ice/mSMJGD +icepack +ichneumon/M +ichthyology/M3S +iciness/S +ideate/SN +idempotent/S +identifies/a +identifying/a +ids +ignoramus/SM +ignorer/M +iliac +ill-fated +illicit/P +Illinois +ill-matched +illogical +illusory/P +illustriousness/S +imaginary/PS +immaterial +imminence/SM +immodest +immovability/MS +immune/q-Q8 +impaction/SM +impasse/MulXbN +impasto/MS +impeach/LR7 +impend/GSD +imperceptibility/MS +impersonation/M +implementer/MS +import/ARGSD +importunity/MS +imposable +impregnability/MS +impregnate/DBSGnN +impressiveness/MS +in/ASF +inauguration/M +incinerate/SnNDG +incipiency/M +incisiveness/S +inclusiveness/S +incomparable +inconsiderable/P +inconsiderate/N +inconvertible +incorrigibility/SM +increaser/M +inculcation/M +incunabulum +indefeasible/Y +in-depth +index-linked +indigestion +indium/M +individual/sY38Q-9MqS +individualism/MS +individualist/1W +indivisible/SPY +indoctrinate/NnGSD +indomitable/PY +inductee/MS +indulgence/cMS +indulgently +inequivalent +inerrant +infant/SM +infeasible +infernal/Y +infiltrator/MS +infinitival +infinitude/SM +infinitum +infinity/MS +inflammation/M +inflict/DGS +influence/RDGMS +info/S +informal +infrastructure/MS +ingoing +inhabit/7d +inhalator's +inhere/DSG +inherit/EdS +initiate/NDGSnVy +initiative/SM +injector/SM +inner/S +innerspring +innervate/SGDnN +Innsbruck +innumerability/M +inoculates/A +inoculation's +insensate/YP +inshore +insipid/Y +insolvent/Y +install/ADGS +institution's/A +instrumental/3S +integral/SMY +integrative +integument/SM +intelligibly/U +Intelsat +intensify/RNnDSG +interbank +intercalation/M +intercession/MS +intercity +interconversion/M +interference/MS +interferometer/WSM +interlard/DSG +interlibrary +interlocutory +intermetrics +interminable/PY +intermixer +interpose/SNDXG +interpreted/U +interrelationship/SM +interrupt/DGSbRV +interstitial/SY +intervenor/M +interview/ADGS +interviewer/MS +intimal +intraclass +intracohort +intragenerational/Y +intranasal +Intranet +intrepidity/MS +introducer/M +intubate/SNDG +intuit/vSVXu7N +inundate/nSNG +Inverclyde/M +Inverness/M +invest/ALE +investigative +investiture/SM +invigorate/AGDNSn +inviscid +Ionian +Ipswich/M +irides's +iron/wMSd1W +Iroquoian +irreconcilability/MS +irrecoverable/YP +irregular +irrelevance/S +irreligious +irreparable/YP +Isaac/M +ism/SMC +isomorph/WM1 +Israel/M +item/qsQ98-SM +iterator/SM +jabot/SM +jackboot/MSD +jacket/dSM +jacketed/U +Jacky +Jacoby +jade/iDMhS +jadeite/MS +jail/RMDGS +jailbird/SM +Jainism +jam's +Jan +Jarvis +jasmine/SM +Java/M +JavaScript +jawbone/SDM +jazzy/PT +jealous/YPZ +jealousy/SM +jeer/MDJSGk +Jeeves +Jeffrey/S +jejuna +Jennifer +Jennings +Jensen/M +jeremiad/SM +jerk/zGZSD2 +jeroboam +Jessop/SM +Jesuit/S +Jesus +jeweller/Z +jib-boom/S +jiggle/DSYG +jilter/M +jimmy's +jinked +Joan +jockstrap/MS +Johanna/M +Johansen +Johnson +Johnston/M +joined/A +joinery/SM +joke/ZDRMSGk +jongg/M +Jose +Jos/M +jotting/M +Judah +judder/dS +Jude/Z +Judea +judge's +judicature/SM +Judith +jug/6GDSM +juggernaut/SM +jugular/S +Julia/M +Julian/M +jump-off +junction/FSMIE +Jungian +juniority/M +junkie/M +Jurassic +jurisdiction/oMS +jurisprudent +jurisprudential/Y +juror/MS +jury/35DmMSG +Jussi/M +justificatory +Justine +justness/U +justnesses +k/k +kabob's +Kane/M +Kaplan/M +karate/M +Karp/M +kart/M +Kasai +Kathmandu/M +Kathy +Katie/M +Katz +Kay +kayak/MS +kB +Keane +Keegan +Keele/M +Keenan +Kelly/M +kelp/DGSM +Kendall/M +Kenilworth +Kensington +kepi/MS +keratin/MS +ketchup/SM +kettle/6SM +keystone/SM +khaki/MS +Khrushchev +kibbutz/M +kidding/MY +Kiel/M +Kilauea +Kilbride/M +kilo/MS +kilocycle/MS +kiloton/SM +kinaesthetic/YS +kind-heartedness/S +kindly/PT +king/MDSG +kinglet/M +Kinshasa/M +kinship/MS +kiri +klaxon/M +Kline/M +knave/MyS +knavish/Y +knick-knackish +knobbly +knockabout/M +knock-down/S +knock-up +knoll/DSGM +known/US +Knudsen +koala/MS +Kohl +Koran/M +Kremlinologist +kroner +kt. +kulaks +Kurdistan/M +Kurt/M +labour/JShRikGDM +labyrinthine +lacewing/MS +lacy/T +ladyfinger's +Ladyship/MS +lagging/M +Laguerre +Laguna +Lamborghini/M +lam +lameness/S +laminae +Lampeter +lamp-post/S +landfill/SD +Landis +landlines +landlocked +landmark/SDGM +landslide/SM +landslip/S +lanky/TP +Laois/M +Laotian/S +lapidary/SM +larded +larder/SM +largess/SM +Larousse +larvae +larval +laryngitis/M +latecomer/MS +Lateran/M +Latin/M +latish +latitudinal/Y +Latvian +laughingstock/SM +launcher/SM +launder/rdS +laundered/U +laundry/5SmM +laurel/SMDG +lavender/dSM +lawmaker/SM +Layton/M +laze/GZDS +lb +leaden/PY +leaflet/MdS +leafy/TP +leakiness/S +lean/JYGDTPS +leant +leatherette/S +leatherneck/SM +leave-taking +lecherousness/S +Lee-Metford +legalese/MS +legalism/MS +legato/SM +legibly/I +legislation/M +legitimiser +legitimize/NDnG +legstraps +Leila +lemming/M +Leninist +leprechaun/SM +lessen/dS +let-out +lets/e +letterbox/S +leverage/DM +leviathan/SM +Levin/M +Leviticus +liaison/MS +liberalise/DGnSR +liberalize/DGNSRn +libertine/SM +liberty/SM +libidinous/YP +librarianship +lice/M +licenser/M +lie/FGcSf +lief/A +lieutenant/SM +lieux +life-raft/SM +lift/RDSGM +lighting/M +lightproof +ligneous +Lila/M +Lilliputian/S +lily-livered +limbo/DSMG +limpness/S +linage/SM +Lincolnshire/M +linearisation +linearities +line-up/S +lingerie/SM +linnet/MS +lino/M +Lionel +lionhearted +lionization/M +lip-sync +literation/M +lithium/M +litmus/SM +litterbug/MS +Litton +liver/CdSZ +Livermore +Liverpudlian/SM +lixiviation +lizard/MS +lobule/MS +locater/M +loch/M +locknut/M +Lockwood/M +locoweed/SM +lofty/TP +logicality/MIS +logout +Lom/M +Longford/M +longhand/SM +long-lasting +long-lost +Longstreet/M +loofah/SM +looking-glass/S +loon/ZSM +loosen/dSU +loosener/S +loper/M +lopsidedness/S +loquaciousness/S +lording/M +lossy/T +loudness/S +lounge/DRSG +louse's +lousewort/M +lovable/P +Lovelace +Lovell +loving/U +Lowe/My +low-emission +low-lying +low-pitched +Loy +luck/zMZpS2DG +lucre/vMVuS +Lucretius +Lucy/M +Lufthansa/M +Luftwaffe/M +Luis +lump/GDZ2SM +lunchtime/MS +lure/GDS +Lusaka/M +luscious/YP +luxes +luxe's +lychee/SM +Lyndon +lyrebird/SM +Lysenko/M +Lysol +mac/SM +MacGregor/M +machinable +MacKenzie/M +mackintosh/SM +MacMillan/M +macrobiotic/S +Madeira +Madeleine/M +magician/SM +magnetite/MS +Magyar +maharajah/MS +mahogany/SM +Maidenhead/M +mailbag/SM +mainbrace/M +maintainable/U +makable +maker/SM +maladroitness/S +malaise/MS +malamute/MS +malediction/SM +malefaction/SM +malevolence/S +malicious/PY +maliciousness/S +malleability/MS +maltose/MS +Managau/M +manage/LaDGS +manageress/SM +mandala/SM +mandamus/SdM +Mandela +mandolin/MS +mandrake/SM +mange/MZRS2 +mangoes +man-hour/S +manic/S +Manila/M +manille +manipulate/BSGnyDNVu +Manley/M +manlike +manor/SM +manta/MS +Maracaibo +marathon/MrS +Marceau/M +Marcia/M +Marconi +Marcus +marginal/Q8q-S +Marian/M +Marietta +marination/M +Marino/M +Mario +Marissa/M +marital/KY +maritimer +Markovitz/M +maroon/SDG +marooner +Marsden +martinet/MS +masculinity/MS +mason/SdyWM +Masonite +masque/RSM +massiveness/S +master/AdSc +master-class/SM +masterful/PY +masterly +masterpiece/MS +matchbox/SM +match's/A +matchstick/SM +mater/Mo +materialization/M +Matlock +matriarchal +matriarchy/MS +matricidal +mattock/SM +maudlin/Y +Mauser +mausoleum/SM +mauve/MS +maxillary/S +Maximilian +mayday/S +Mayhew +mayst +McAllister/M +McBride/M +McCauley/M +McClellan/M +McCullough/M +mead/MS +meadowland +meadowlark/SM +mealiness/S +mealy-mouthed +meaner +measles +measurable/IU +meataxe +medallist/S +Medicare +meditation/KMS +medium-sized +megajoules +megaparsec +megohm/MS +meiotic +Meistersinger +melancholic/S +melancholy/MSW +melon/SM +melter/M +member/ASE +memorabilia +memorability/MS +memorial/QS +Memphis +men/M +menace/kSGD +Mendel/M +meninges +meniscus/M +mentored +meridional +meritocracy/SM +Merle +merry/TLY +Mersey +mesquite/MS +messenger/dMS +metabolise/DSG +metacarpal/S +metal/WSMGJD +metaphor/SWw1M +metaphysic/SMY +metastatic +metathesis/M +meteorology/wMS +Methyr/M +meticulous/PY +mtier/S +metonymy/M +mew/GSD +mezzanine/MS +mg +microanalysis/M +microbial +microcircuit/SM +microcomputer/MS +microgram/S +micrography/M +microjoule +mid-afternoon +Middleton +midi/S +midsummer/SM +midwifery/MS +mien/SM +migrant/ISM +mild/TPY +mileage/MS +Milford/M +military/-Q3Y +milliamp +mimeograph/MDSG +Mina +mindbogglingly +mindfulness/SM +mine/RDSJG +minicab/M +minicomputer/SM +mining/M +minivan/S +minty/T +minuend/MS +minutiae +Miquelon/M +mirage/DSMG +mirthfulness/S +miry/T +mi's +misc/b +miscast/G +mislead/k +misses/K +missilery/MS +mission/FRSM +misspeak +misspecification +misstep +mistakable/U +mistaken/Y +mistletoe/SM +Mitsubishi +mixer/SM +mix-up +mnemonics/M +mockers/M +moderator/MS +modern/Q8YTPs9q- +modernism/SM +modified/U +modishness/S +modulator/CAMS +modus operandi +Moldavian +mollification/M +mollusc/MS +molybdenum/M +monarchy/SM3 +Mondale +monition/KMS +Monmouth/M +monocle/DMS +monograph/SMDG +monomeric +monomolecular +monophonic +Monsanto +monumentality/M +mood/2MZSz +moonlit +moonscape/MS +moonstone/MS +mooring/M +Moorish +moralise/CGSDR +Morecambe +Mormon/SM +Moro/M +Morocco/M +Moroni/M +morphism/MS +Morris's +Morristown/M +mortem/SM +mortgage/DSMG +Morton/M +mos/GZD +Moselle/M +mosey/DGS +moth-eaten +mother/dpY +mothering/M +mother-in-law +motlier +moult/RSGD +mountaineer/JMGSD +mountebank/SM +mousse/SM +mousy/PT +mouton's +movingly +Moyes +Mr/M +mucilage/SM +mucosa/M +mud/SM2Zz +muddleheaded +muezzin/MS +Muir/M +mulct/SDG +mullein/MS +multicolour/SMD +multifamily +multimegaton/M +multimeter/M +multipath +multiple/SMY +multiple-choice +multi-storey +multitasking +multivalent +multivitamin/S +mum/RDZSMG +Muncie/M +munificence/MS +Muppet/M +Murali +muralist +Murielle/M +muscle/MGSD +musicale's +musically/U +mustiness/S +mutably/I +mutate/FDSG +mutation/FM4 +mute/Fn4NDSG +mutilator/MS +mutter/rJSd +MW +my +Myles/M +myna/SM +mystification/M +mystifying/Y +mythography/M +NaCl/M +naffer +nailbrush's +naivety/SM +nakedness/S +namby +nameless/Y +namer/MS +nan/MZ +nano +Nantes/M +Nantucket/M +Naples/M +narky/T +narrow-mindedness +narrowness/S +nasality/SM +Nashville/M +natal/K +Natchez +nationaliser/CMS +nationalization/M +nationhood/SM +naturalist/W +natures/C +nautilus/MS +navel-gazing +Nazarene/MS +NCAA +NCC +Ne +n +Neath/M +Nebuchadnezzar/M +nebula/MS +nebulous/PY +necrology/MS +necrophiliac/S +nectarous +Needham/M +ne'er +nefarious/PY +neg/uNnvV +negative/GDPS +negligible/Y +Neil/M +Nematoda +nematode/SM +neoclassical +neoplastic +nepotism/SM +neptunium/MS +nerdy/T +nervelessness/S +nerviness/S +nether +neurasthenic/S +neuromuscular +neuropathology/M +neutralness +Nevadan/S +newborn/S +Newman/M +newness/SM +newsworthy/TP +NHS +Niamey/M +Nicene +nickelodeon's +Nietzsche/M +Nieves/M +night-blindness +nightclub/MGSD +nightgown/MS +night-owl +Nikita/M +nimbus/M +ninety-first/S +ninny/MS +nobility/SM +Noel/SM +Noelle/M +nominator/CMS +non-adaptive +non-com/MS +non-commissioned +non-convertible +non-depreciating +non-educational/Y +non-elastic +non-essential/S +non-event/MS +non-extensible +non-flying +non-freezing +non-identical +non-independent +non-linearity/SM +non-linguistic +non-malignant +non-militant/S +non-observance/S +nonogenarian +no-nonsense +non-parallel/S +nonpareil/MS +non-participant/SM +nonplus/GDS +non-political +non-profit/S7 +non-recoverable +non-refillable +non-renewable +non-respondent/S +non-sectarian +non-standard +non-stick +non-support/SG +non-technical/Y +non-termination +non-veteran/SM +Norah/M +normalizing/A +Norse/m +Northamptonshire/M +northbound +north-easterly +northerly/S +norther's +northmen +northwester/MS +north-Westerly +Norway/M +nose/ZDGSM +nosebag/M +nosiness/S +nostrum/SM +notableness/M +noteworthiness/S +nothingness/S +notorious/PY +Notre +Nottingham/M +Nouakchott/M +nouveaux +Novak/M +November/SM +nu/M +nuclear-powered +nucleoli +nucleolus/M +nude/Y3STP +numerous/PY +nutria/MS +nutritionist +oafish/Y +oaken +oasis/M +oaten +oath/SM +obey/ESDG +obfuscater +oblation/M +obliterate/DNvnSVG +obscene/TY +observed/U +obsess/NxXVSuDGv +obsolescence/S +obstinacy/SM +obstruction/3SM +obstructive/PS +obvious/PY +occur/ASGD +Ochoa/M +o'clock +ocular/S +odd/TLPSY +OEMS +Oersted/M +oestrus/SM +offence/S +offhand/iDh +officialdom/MS +officio +offload/DGS +off-road/G +off-street +off-the-wall +Oglethorpe/M +ogreish +ogrish +oh +oho/S +OHSA/M +oil-shale +okapi/SM +Okayama/M +Okeechobee/M +Okhotsk/M +old-gold +oldie/MS +ol +Olen/M +oligarch/ZMWw +Olsen/M +Olympus/WM +Oman/M +ombudsmen +ominous/PY +ominousness/S +omniscience/MS +omniscient/SY +one-quarter +onerous/PY +one-to-one +on-off +onside +ontogeny/MS +OOo/M +opalescent/Y +open-deartedness +open-handed/P +operative/FPS +ophthalmic/S +ophthalmology/3MWS +opposable +opposed/U +opposer/M +oppressor/SM +ops +orang-utan/MS +orb/SMGD +orbicular +ordeal/SM +ordinariness/S +Ordovician +organ/W3q-Q81s9t+SM +organist +orotundity/MS +orphanage/MS +Orphic +orthodontia +orthodox/ZUY +Orwellian +oscillator/SM +osteology/M +Ostrander/M +otter/MS +Otto/M +ouch/S +outfit/G +outflow/M +outlet +outmanoeuvre +outproduce +output/MG +outrider +outsource/J +out-tray +ouzo/MS +ovation/M +overbalance +overbear/k +overbore +overcapacity +overcast +overcome +overcritical +overflow +overfond +overground +overhang +overhaul/J +overpower/k +overprecise +overreacher +oversample +oversaturate +overshadow +Oxordshire/M +oz +Ozark/MS +paceman +pacify/nD3RWN1SG +packages/A +Packwood/M +padded/U +paddle/DRSMG +Padrewski/M +page/SM6RDG +paged/U +painful/TP +Paisley/MS +palaeoecology/w +palaeolithic +Palaeozoic +palatable/P +palatine/S +palette/MS +pall/MS +palladium/M +pallbearer/MS +palmate +palmy/3T +paludal +pamby +Pamela/M +pampas/M +panderer/S +panegyric/MS +panellise/SnDG +panellize/SNDnG +pantheon/SM +Paoli/M +paper/2pdrZ +paper-boy/SM +papillae +paprika/MS +Papua/M +par/dDGS7Z +paracetamol/M +parallelism/MS +paralysis/M +paramagnetism +Paramecia +parcel/SMGD +parers +parietal/S +parkway/SM +parky/T +parliamentarian/MS +parlous +parochial/Y +parquet/dyMS +parrotlike +parry/GDS +parted/CI +partnership/SM +part's/f +pasha/MS +passives +passport/SM +past/DMS2GZy +pasteboard/SM +pastel/SM +paste-up +pastille/MS +pastorate/SM +pastry/SM +pt/M +patent/YSMD7G +pathos/SM +patriot/1WSM +patriot's/F +pattern/SGDpM +paucity/SM +pavement/MS +payer/SM +paying/Kfc +pay-packet/SM +payslip/S +pd +Pde +PDSA +peace/Ml6j +peck/DRMGS +pectin/MS +peculate/GDSNn +peculator/S +pedometer/MS +peel/DGSJ +peep-hole/SM +peering/F +pelt/DGS +pelvic/S +Pembroke/M +pemmican/SM +penal/Q8- +penance/DSGM +Penh/M +penicillin/SM +pennant/MS +pennyroyal +Penrith +penuriousness/S +pepper/Zd +peppergrass/M +pepsin/SM +peptic/S +perambulation/M +perceivably +perceiving +percussive/P +perennial/YS +perfective/P +perfectness/SI +perfume/SRDMG +perfunctory/PY +pergola/SM +perineum/M +periodontics/M +periphrases +peritoneum/MS +permanences/I +permeable/IP +perpetuation/M +Persian/MS +persimmon/SM +personification/M +personifier/M +personnel/MS +perspiration/M +pertain/DSG +perversion/M +pestilential/Y +pet/SRGMD +petrifaction/SM +petroglyph/M +pettish/YP +phalanger/SM +phalanx/SM +phallus/WMS +phantasmagoria/MS +Pharaoh/S +Pharisaical +pharmacy/3SM +pharyngeal/S +pharynx/M +phaseout/S +phenotype/MS +philistinism/S +phlox/M +phone/ZSWG1DM +phosphatase/M +photochemical/Y +photovoltaic +phrasemaking +phraseology/SM +phys/w1 +physicalness +physiognomy/SM +piastre/MS +piazza/SM +pica/SM +piccalilli/MS +piccolo/MS +picket/rdMS +pickpocket/SM +picturesqueness/S +piecewise +piedmont +piggery/M +pike/SRMDG +pikeman +pillage/DGRS +piloting/M +pineal +pink/PZDTMYGS +pinkeye/SM +pinnacle/DSMG +pint/MS +piquancy/SM +piquant/PY +piranha/SM +pistachio/SM +pistillate +pitiable/P +pitiful/PT +pituitary/MS +pixel/SM +pizzicati +placate/yDVSGnN +placeless/Y +placing/aA +plagiarise/DRGS +plagiarize/DRGS +plague/GDMS +plainsong/SM +plaiter +planar +planet/MS +planetoid/MS +plate/6SMJ +plateau/GMDS +platonic +playable/EU +playbill/MS +playboy/MS +playgroup/S +playhouse/SM +pleaser/M +pleasure's/E +plebiscitary +pledge/GDMS +plenary/S +pleurae +pliability/SM +plimsolls +plinth/MS +plod/DRGSJV +ploughed/U +pluck/ZGSz2D +plug/UDSG +plummet/Sd +pluralization/M +plush/TZPMS2Y +pm +pneumonia/MS +P.O. +pocketing/M +poesy/MS +pogo +poignancy/SM +poinsettia/SM +point-blank +pointed/P +pointlessness/S +pointy/T +polarize/CnNSGD +polarography/M +pole-vaulter +politburo/S +politeness/IS +politesse/MS +politicize/CGSD +polity/SMw1 +pollack/MS +polybutene/SM +pomander/MS +pompom/MS +pone/SZM +poniard/SM +pop/ZRGSDM +popularity/MU +populates/A +porcelain/MS +porous/YP +porpoise/DMGS +portability/S +portages +portfolio/MS +porting/FE4 +portrayer/M +Portugal/M +positron/SM +post-coital/Y +postlude/MS +post-modern +post-production +post-war +potassium/M +potatoes +potencies/I +potter/dZ +pounce/DSG +pourri/SM +power/6jdpSM +powerlessness/S +powwow/SGDM +practised/U +prague's +praise's +praxis/M +precious/SY +precipice/MS +precipitation/M +precisest +predecessors' +pre-decimal +pre-defined +predictable/U +pre-eminent/Y +pre-emption/SM +pre-emptor/M +prelude/GMDS +pre-package/GSD +preparation/M +pre-record/SDG +prerogative/MS +presage/GD +presbyteral +presbyterate +preschooler/S +present-day +pressman/M +prestige/SM +prestigiousness +Pretoria/M +prevail/GkSD +preventive/SP +pricier +priggishness/S +prim/rdTY +primaeval +primogeniture/MS +primrose/MS +prince/YSM +princeliness/S +printably +printings +prison's +prizefighting/M +proactive +probabilist/W1 +proceeding/M +processed/UKA +processor/MS +proctor/dMS +pro-democracy +product/QVMsvSu +productivity/SM +prognosticate/DGS +progressive/PS +prohibition/3M +prohibitionist +prolix/Y +prologuize +prolong/nSDNG +prompted/U +promptness/S +pronouncement/SM +proof/EASM +prop/MSGD +propaganda/MS +propagandise/DSG +propel/RSNDnG +prophylaxes +proposal/SM +proscription/M +prosper/dS +protean/S +protectionist/SM +protectorate/MS +protge/S +protocol/SM +proton/MS +prototype/WGSM1Dw +protrusile +protrusion/M +provable/Y +Provenal +Provence/M +provender/SM +provisioner/M +provoked/U +proximate/YP +proxy/MS +prudent/IY +prussic +psalmist +psaltery/SM +psi +psoriases +psst/S +psychedelic/YS +psychoanalyse/WDSG +psychoanalytical +psychometry/WM +psychopathic/S +pterodactyl/MS +ptomaine/MS +pubis/M +publicist +publish/R7SJDG +puckishness/S +puddler/M +pugnacious/YP +Pulitzer +pulp/DMS2GZ +pulpwood/SM +punchy/T +punctiliousness/S +punctual/YP +punctuate/DSGxnN +punctuation/M +puncture/DSMG +pungency/SM +punish/DGL7S +puppeteer/SM +pureing +purlieu/M +purpose-built +pus/ZM +pushchair/SM +pussy-cat/S +putrefactive +putrefy/GSD +putt/MS +puttee/MS +puttying/M +PVC +qi +qr +quackery/SM +quadric +quadripartite/Y +quadriplegic/SM +quantile/S +quartering/M +quarter-plate +quartzite/M +quasi-synchronous +quell/SGD +quester/FMS +questionably/U +queue-jump/G +quickstep/SM +quiescent/Y +quiescentness +quieting/E +quiets/E +quiff +quilting/M +quipper +quire/SAI +Rabat/M +rabble/SM +rabble-rouser +racegoers +rad/w1 +radiation/MI +radioactive/Y +radix/M +raglan/SM +ragtag/M +ragwort/M +raid/RGSDM +Railtrack/M +rainfall/SM +rainforest/MS +rain-maker/MS +rainproof +rainwater/M +rake/SGMD +raker/M +Ralf +ram/DSGM +ramification/M +rampage/DSG +Ramprakash +rancidity/MS +rangy/T +rank/PRYTJDGSM +rant/RGJSDk +rapid-fire +rapidity/M +rapscallion/SM +rapturous/PY +rat-catcher +rate/cDGS +ratify/SRNnDG +ratiocination/M +ration/MGD +ravage/DRSG +Rayleigh/M +re/nxhoYJNi +reachability +readability/SM +read-only +reads/aA +realtor's +reascend/NG +reattempt/G +rebind/G +rebuff/G +recalcitrance/M +recalculate +receptive/U +receptively +receptor/SM +recessive/PS +recitative/SM +recognisably/U +recompense/SDG +reconciled/U +reconversion +recorded/AU +recrimination/M +recrudescence/M +rectangular/Y +recumbent/Y +recurrent +redden/dS +re-deployed +redetermine/ND +red-letter +Redmond/M +redouble +redraft/G +reduction/M3 +re-emphasize +ref/M +refection/M +reflector/MS +refractometer/WMS +refreeze +refries +refrozen +regimentation/M +registry/SM +regroup/G +regulator/MS +Reigate +reimburse/GLDS +Reinhardt/M +rejoicer +relate/FnNvSVDG +relativism/M +relativist/M1WS +relay/GDM +released/U +relevancy/IMS +relict/MC +reline +reluctance/SM +reluctant/Y +remand/SDG +remap/GD +remit/GXNSD +remnant/MS +removable/I +Renata/M +renege/RSDG +Reno/M +renown/DM +repetitive/Y +repose/N6MX +reprehend/XGSND +representatives +reprint/JM +reproduce/ubvV +repudiate/NnSDG +repute/lhSBnND +require/LGD +reshow/G +resignation/M +re-soluble +resolution/IMS +responsibly/I +restaurant/MS +restoration/M +resurgence/SM +resuscitation/M +retaliation/M +retentive/Y +rethink/G +reticent/Y +reticulate/SYGD +reticule/NSMn +retread/D +retrogression/M +retrorocket/MS +retrospection/SM +retrospective/S +Runion/M +revelation/SM +revelatory +reversal/MS +reversibility's +revile/GRSLD +revisionist +revue/SM +rhetorician/MS +rheum/W1MZ +rhododendron/MS +rich/PTSY +Richey/M +Richter/M +riddance/M +ridicule/SDMG +rife/T +rigger/eSM +righteousness/U +right-hander/S +right-thinking +rigmarole +Ringling/M +ringmaster/MS +Ritz/M +rivalled/U +riverbank/MS +riverbed/S +riverside/SM +rob/GDRS +Robb/MZ +Roche/M +rock/RZ2DGSM +Rockefeller/M +Rolph/M +Roman/SM3 +Romany/M3 +romp/RGSD +Ronny/M +rooinek/S +ropey +Rosales/M +Rosamond/M +rosary/SM +ros +Rosemont +rosette/SMD +Rosie/M +Rossi/M +Rosslyn/M +Roswell/M +rot/NnDSG +rot-gut/M +rou/MS +roughage/SM +round-up +roust/GDS +rout/RGDJ +Rowley/M +RSA +RU +rub-a-dub +rubbish/SGDZM +Rube/M +Rubik/M +Rubinstein/M +Ruddock/M +rudiment/SM +rue/Gj6SD +Rugby's +rule/cSaGD +ruled/U +ruler/SM +rumba/DMSG +Rumford/M +run/eGScA +Runcorn/M +rupee/MS +sacrum/M +Sadat/M +sadism/SM +safari/SM +safeguard/GSDM +sagebrush/MS +saggy/T +sail/MDSJG +sailcloth/M +sailfish/MS +Saint-Denis/M +Sakhalin/M +salicylic +Sallie/M +Sallyanne/M +salon/MS +salt-cellar/SM +saltiness +saltish +salutary +saluter/M +salvage/GMDS +same +samurai/M +San/M +sanctimonious/Y +sanctuary/MS +Sandburg/M +sander/S +Sandi/M +sandpaper/MdS +sandstone/SM +sandstorm/SM +sans +Sanskrit/MW +So +sapwood/M +Saracen/SM +Sarah/M +sash/MDS +satiation/M +satiny +satisfactoriness +satisfying/UE +Saturday/SM +Saunderson/M +saunter/dS +sauropod/SM +save/SGRJD +saved/U +sax/SM +Sc/M +scabbard/MS +scaffold/JGSM +scalable +scamper/Sd +scandalmonger/MS +Scandinavian/S +scapula/M +scarce/YT +scarcity/SM +scarf/DM +scarves +scene/1MSWy +scenery/SM +sceptic/YMS +sceptical +Schaefer/M +Schaeffer/M +schizophrenic/SY +Schmidt/M +schnauzer/MS +Schofield/M +schoolchildren +schoolgirl/SM +schoolmaster/SM +schools/K +schoolteacher/SM +Schrdinger/M +schuss/M +schwa/MS +scintilla/nM +Scipio/M +sclerosis/M +scorpion/MS +Scottsdale/M +Scotty's +scourger/M +scrawly/T +scrawniness +scree/M +screecher/M +screened/U +screwed/U +screwer/M +Scriabin/M +scribe/IDSGCK +scriber/IMKC +scrimp/GSD +scriptural +scriptwriting/M +scroll/G7MSD +scrub/RGDZS +scrum/MS +scrupulous/YU +scud/SDG +scuffle/DGS +sculptor/SM +sculptress/MS +scum/ZDMG +Scunthorpe/M +scurry/DGSJ +SDI +seafaring/S +seal's +seamanship/M +sance/MS +seaside/M +seatbelt/S +seaworthiness +secrete/SNn +sectored +Sedgemoor/M +Sedgwick/M +seductress/MS +seed-eater/SM +seeing/Uc +Seeley/M +seemliness/U +seer/cSM +seethe/SDG +segmented/U +segregate/CNDSGn +segregation's/C +seigeury/S +seismic/Y +seismograph/RSMWZ +seismography/M +seizure/SM +selectable +selenate +selenology/3 +self-deceit +self-examination +self-induced +self-indulgence +self-inflicted +self-justifying +self-love +self-pity +self-regard +self-restrained +Selwyn +semester/SM +semicolon/MS +semi-independent +semi-monthly +seminary/SM +semiology/3 +semiotic/S +semi-professional/SY +semi-trailer +semi-vowel +sempstress/MS +Seneca/M +seora/SM +Seora/M +sensationalism/MS +sensitive/IY +sentential +sentimentality/SM +separation/M +sepia/SM +sepoy/S +sequenced/A +sequential/FY +sequestration/M +Serbia/M +serenade/DMGS +serigraph/MS +serpentine +servo/S +Seth/M +setting/K +seventy-first/S +severable +Seward/M +sexed/fc +sexism/SM +sextuple/DG +Seychelles/M +Seymour/M +shackle/USDG +shallot/SM +sham/SGMdD +shameless/Y +shamelessness +Shane/M +shapely/T +shaper/MS +shared/U +sharpen/AdS +sharpened/U +shatter/kSd +shave/DGSRJ +she/DM +sheaf/M +sheathe/UDG +sheepfold/M +sheeting/M +Sheffield/RM +Shepard/M +Sheppard/M +sherd's +Sherlock/M +Sherman/M +Sheryl/M +Shiite/SM +shillelagh/MS +shimmer/dSZ +shipper/SM +shirting/M +shoebox +shoehorn/SDGM +shooter/SM +shooting-stick/SM +shoreline/SM +short-circuit +short-staffed +short-termism +shot/MS +showbiz +showcase/GDSM +showdown/SM +shower-bath/S +showmanship/M +Shreveport/M +shrew/MS +shrinkable +shun/DGS +shut-out +shuttlecock/MS +Siciliana/M +sicken/dkS +sickly/T +sidelong +sidewards +sierra/SM +sifting/S +sighted/U +sightedly +sightsee/GR +signboard/MS +signed/fU +signet-ring/SM +signpost/DGMS +sign's/C +silage/SM +silicoses +silken +Silverstone +similarity/ESM +simpatico +simulate/EnNSGD +simulation/EM +Sinatra/M +sinew/MZS +sing-along +singular/qS-Y +sinter/M +sis/Z +sitcom/SM +situationist +sixpenny +sixteen/HM +size/AD7GS +sized/fc +sketchbook/SM +skewbald +ski-lift/SM +skin/MpZ2DGS +skincare +skin-dive/RG +skirts/ef +skunk/SM +skydiving/M +skylight/MS +sky-rocket/SdM +sky-writer/SM +slangy/T +slap-happy +slave-drove +slave-trade/R +Slavic/M +slept/c +slew/GDS +slick/YDPGST +slightness +slip/MSDRG +slipcase/SM +slipknot/SM +slippage/SM +Sloane/M +slum/SGZMD +slurry/SM +sly +smarmy/T +smartness +smell/Y2GS7D +Smetana/M +smiler +smirch/DSG +smoggy/T +smokable +smooth-talk +smudgy/TYP +snack/DSGM +snag/GMDS +snap/ZSR2GDz +snarly/T +Snead/M +sneak/zDk2ZSG +sniffler/M +snipe/SGM +snippy/T +snooty/TP +snorkel/RMSDG +snow/ZmD2MGS +snowshoe/SM +snuffler/M +soar/DGkS +sober/YdkPS +sobriquet/MS +sociable/EU +Socrates/M +sod/GSDM +sodden/YP +soft-sell +solar +solder/SA +solderer/S +solemnity/MS +solidus/M +soliloquy/M +soluble/EI +solvency/ISM +Somalian/S +somehow +Somerville/M +something +Sonia/M +sonny/MS +Sony/M +Sophia/M +soprano/SM +sordid/PY +Sorensen/M +SOS +soundless/Y +soupon/MS +sous/DGS +southeaster/SM +south-Eastward/S +southern/R +Southwark +spacecraft/M +spacial +spacious/PY +Spalding/M +spangle/GMDS +spank/JSDG +sparing/U +sparsity +spat/MSGD +speakable/U +specific/S +specification/M +spectacular/YS +sped +speedometer/MS +speedwell/MS +Spenserian +spermicide/M +SPF +spiderlike +spiffy/T +spiky/TP +spinsterhood/M +spirit/IdS +spirited/Y +spiritualist/W +Spiro/M +spiry +spite/AMS +spittle/MY +spittoon/SM +splashy/T +spoiled/U +spoke/Dm5S +spoliation/SCM +sponge/GZDRS2M +spoon/D6GSM +sporadic/Y +spore/MS +sprat/SM +sprinkling/M +sprint/RDSMG +spumy/T +spurt/DGS +squab/SM +squabble/DRSG +squeal/DRSGM +Sri +SSC +SSL +stableman/M +stable-mate +stableness +stabler +stablest +stacker/M +stained/U +stairwell/MS +stalking-horse +stall's +standalone +standbys +Stanislavsky/M +Stanleigh/M +Starbucks +starchy/TP +stated/U +Statehouse's +statesman/Y +statistic/SYM +steakhouse/MS +steal/SG +steeple/SM +steerer/M +steeves +Steffen/M +stenography/WM +stereo/SM +stertorous/PY +Stetson/MS +Steuben/M +Steve/M +stewardess/MS +stifler/M +stigma/Q8Wq-SM +stiletto/SM +stillbirth/SM +stingray/MS +stir-fry/D +stitching/M +stockbreeder/SM +stock-in-trade +Stockport +Stoke/M +stomp/DSG +stooge/SM +stopcock/SM +stopped/U +stopping/U +storable +storage/MS +store's +stormproof +storm-signal/MS +stout/TYSP +stove-pipe/SM +straggle/RYDSG +straightish +straining/c +strap/DUSG +strategy/W3MSw1 +stratus/M +straw-worm/S +streamliner +streetwalker/MS +streptococcal +stresses +strewn +strip-searching +striven +Strom/M +stronghold/MS +strongish +strongroom/SM +structural/3Y +stub/MZDGS +studious/YP +stunk +stupefaction/MS +sub-branch/MS +subclass/MS +subcomponent/SM +subdivision/M +subframe/SM +sub-group/S +subjective/P +subjunctive/S +Sub-Lt. +submersion/M +suborder/MS +subscription/MS +sub-sequence/SM +substandard +subsurface +subtropical +suburban/Q8q- +subverter/M +sub-zero +success/XVMN6jvuS +succubus/M +suckle/JSGD +suction/DMGS +Sue's +suffuse/DNXSG +sugar-pea/S +sugarplum/SM +sully/SDG +sulphate/GDSM +sulphonamide/MS +sulphurous +Sumerian/M +summerhouse/MS +sunburst/SM +sup/GRSD +superannuate/GSNDn +superclass/M +superconductivity/SM +superimposition/M +superlative/PSY +supernaturalism/M +superpower/SM +supersaturate/GDNS +superstructural +supertanker/MS +supple/LYPT +supplication/M +supposition/M +surcingle/MS +surfaced/UA +surfactant/SM +surname/SDM +surpassed/U +surreality +survey/AGSD +Susannah/M +suspend/SNDRXGvV +SUV +suzerainty/SM +Suzy/M +Svetlana/M +swag/DMGS +swagger/dS +swaggerer +swain/MS +swami/SM +swap/RSGD +sward/MDS +swash/DSG +sway/SDG +sweep/kRSGJ +sweeten/drS +swimwear +swindle/DRGS +swipe/DGSM +switched-on +sworn +Sylvan's +symmetrical/U +symposium/SM +symptom/MpWS1 +synaereses +synapse/WSM +synchronizes/C +syncopation/M +syndical +syndicate/SMDG +syngenesis +syntactic/Y +syringe/SMGD +t/7k +Tabasco/M +tabernacle/MS +tableland/SM +tablet/SM +tabletop/MS +tabulator/SM +tactfulness +tailpipe/MS +tainted/U +Tajikistan/M +taken/caAf +taker's/a +Taliban/M +talisman/WSM +Tallahassee/M +Tally's +tameable/U +Tami/M +Tammy/M +tanbark/SM +tangibility/SIM +Tannenbaum/M +Tanya/M +tart/SMYPTGD +tartar/SMW +Tasman +tatter/S +tattle/DRSG +taunt/kRGDS +taxed/Uc +taxer/S +taxiway/MS +taxpaying +Tay +TBA +tea/SM +teachable/U +tear-drop/SM +tear-duct/S +teashop/MS +technetium/M +Teflon/M +telecommunication/M +Telemann/M +televangelist/S +televise/DSXNG +tells/A +tempestuousness +tempi +temporise/DSkRG +temporize/DSkRG +tenderloin/SM +tending/E +tends/E +tennis/M +tense/YIT +tenseness +tentacle/DSM +tenterhook/MS +tenure/MSD +tepid/Y +terminating +terrible/Y +testatrix +testicular +testiness +tetracycline/MS +tetraplegic +tetrastich +tetrasyllable/W +Texaco/M +Texas/M +Textron/M +texture/SMoDG +Th +thankfulness +theatregoing +theatricality/MS +thee +then +theosophy/w3WSM +thereafter +thereof +thermodynamic/SY +thermometer/SMW +theta/MS +they'll +thick/TPY +thinnish +third/Y +thirsty/T +thirty-three/H +thistle/MS +thong/MSD +thorium/M +Thorndike/M +three/HMS +threesome/SM +thrice +thrifty/T +thrum/GDS +thud/DSMG +thumbscrew/MS +Thunderbirds +thunderbolt/MS +Thur/S +Thursday/SM +thwack/GDS +thy +thyme/MS +thyroidal +tibia/M +tic/GRD +tickle/DSGR +tiebreaker/SM +tie-in +Tiffany/M +tigerish +tight-lipped +tightly-knit +Timaeus +timebase +time's/c +timestamps +time-wasting +timing/M +timorous/Y +ting/D +tiny/PT +tipple/DSRG +tipster/SM +tiresomeness +Tirolean/S +tit-for-tat +title-page +titmice +Tito/M +to/IU +toastmistress/S +Tobias/M +toddle/DGSR +toddy/MS +toggle/DGMS +toil/RSMDG +toilet/ySdM +toity +toll-bridge/MS +toluene/M +tomcat/SM +tome/SM +Tom/M +too +toolmaker/SM +toothsome +toots/Z +Torah/MS +toroidal +torpedo/DMG +Torricelli/M +torridness +totalitarian/S +touch/AGDS +touchline/M +touch-typists +Toulouse/M +tour/CSGMFD +toward/S +tow-path/MS +tows/f +toxic/S +tracheal +Tracie/M +tracked/U +tragedienne/SM +trailer/d +train-spotter/M +trait/SM +traitor/MS +transcendentalism/SM +transcript/MS +transfer/DR7SGMg +transferability/M +transference/SM +transferor/SM +transferral/SM +transfinite +transgressor/S +transmogrification/M +transport/BnN +transportation/M +transvestism/SM +trapeze/SM +trapezoid/SM +travesty/MDSG +treacle/MY +treating/a +treelike +Tremayne/M +trembler/M +trench's +Trent/M +trepanned +tresses/E +trestle/MS +triage/SDMG +trials/Aa +tribune/SM +trichinae +triffid/S +triglyceride/M +trigonometry/WwM +trike/M +trimodal +tristate +triumphalist +trivalent +trivet/SM +trivia/o +trolley/SM +Trollope/M +trombone/3MS +trouser/S +Troutman/M +Troy's +truancy/SM +Trudy/M +truncation/M +Truro/M +trustee/SM +trusteeship/SM +trustfulness/E +trustworthy/P +Tuesday/SM +Tulane/M +tularaemia +tumble/RSGD +tumble-dry/SD +tumescence +Tunbridge +tundra/SM +tuneful/PY +tungsten/M +turbine/SM +turbulent/Y +turf/MGZDS +Turin/M +Turk/WSM +Tuscan +tusk/DRGMS +Tutankhamen/M +tutored/U +tutti/S +tut-tuts +TV/M +tweedy/T +twenty-nine/H +twenty-seven/H +twenty-twofold +twice +twitchy/T +two-dimensional/Y +two-timer +tycoon/SM +typical/Y +tyre/SM +ubiquity/S +UHF +ukase/SM +ulnae +ulterior +ultimate/Y +umbra/MS +umpire/DMGS +unaccountable +unassuming/Y +unblinking/Y +unburden/d +unclog/DG +uncomely +unconscionable/Y +unconstitutionality +unctuous/Y +underbid/G +undercut/G +undergraduate +underhand/i +underling/MS +underspend +undiscriminating +unearth/YSG +unemotional +unequal/D +UNESCO +unfaithfulness +unfatherly +unfitness +unforgivable +unfreeze +ungenerous +unharmonious +unheard-of +unholy +unideal +uninhibited/Y +union/qQ3 +unionism/MS +unique/Y +uniqueness +univariate +universalistic +unlink/G +unlovely +unluckiness +unnamed +unnerve/k +unperturbed/Y +unreal +unreservedness +unscrew/G +unshrinking +unspecific +unsuccessful +unties/F +unwarrantable/Y +unwiseness +upbringing/MS +upcountry +upload/SDG +upper-case/DSG +upper-class/S +upping +uprate/GD +uproarious/PY +upstandingness +upswing/MS +upward/SY +urethritis/M +urgency/SM +urn/SM +ursine +user-friendly +USG/M +usher/dSM +using/facA +USP +usurious/Y +Ute/M +uteri +utilisation/f +utopianism/M +vacate/NDSGn +vagina/SMo +valance/MS +valentine/SM +valetudinarianism/M +Valhalla/M +valise/SM +Valle/M +valuing/fc +vampire/MS +vanish/GJSkD +vantage/SM +variable's +vase/SM +vegetate/GVnDNS +vehemence/M +vehicle/SM +velveteen/SM +vengeance/SM +venom/MS +vented/KI +ventriloquism/MS +Venus/S +verbose/Y +veritable/Y +Vermeer/M +vernal/Y +verse/ANDXFS +versed/U +vetch/SM +vetoes +vial/S6M +viand/MS +vice-president/SM +vice-presidential +Vice's +Vickery +view/JpDRGS7M +view's/cKA +vigilance/SM +vindictive/YP +vine/SM +vinous +violence/MS +violent/Y +virtue/SoM +virtuousness +visage/SM +viscose/SM +visitant/SM +Viterbi/M +vitiate/SNnGD +vivaria +vivid/YP +vivify/ASGND +vizier/MS +Vladivostok/M +vocalic +vociferous/Y +Vodafone/M +voguish +voice/CGDIS +voice-band +voiced/U +volleyball/SM +volubility/S +voodoo/SM +voracity/SM +Vuelta/M +Vulcanite +WA +WAAF +Wade's +waft/SGD +wafters +Waldo/M +wale/MG +wallflower/SM +wan/dY +wangle/GDS +wards/Ie +warier +warlock/SM +warm-hearted/Y +warming/M +washed/U +washed-out +wash-out/S +wassail/GMSD +waste-basket +watch/GmDRS6j +water-bird/S +water-cooled +waterfront/MS +waterproof/SGD +Waugh/M +wavelength/MS +wayside/MS +weakling/SM +weal/M +weapon/yMS +weariness +wearing/Y +wearisome/Y +weatherproof/DGS +wedded +wedgies +wedlock/M +Wednsebury +weedy/T +Weibull/M +weight's +Weinstein/M +weird/TY +weld/GSRD +well-being +well-educated +well-intentioned +well-matched +well-nigh +well-placed +well-preserved +well-worn +welterweight/SM +Westerly/S +western/qQSR +Westwood/M +what'd +Whelan/M +whenever +whereupon +whet/SDG +whim/SM +whimsicality/MS +whimsicalness +whiplash/MS +Whipple/M +whiskered +Whitcomb/M +whitey/SM +Whittall/M +whole/S +wholesale/RMDG +wholesome/UY +whooper/M +whop/RG +whosoever +wicket-keeping +Wickliffe/M +wideness +Wieland/M +wifely/T +Wight/M +Wilbur/M +wildcat/MS +wildebeest/SM +wilding/M +will/GkSYD +William/MS +willowy/T +willy-nilly +wimpy/T +Winceyette +wind/UGSA +windbag/SM +windbreak/SM +winding-sheet +windsock/SM +windswept +winnable +Winnetka +winsome/Y +wipe/SRGD +wire-tapping +wiring/A +Wisden +wisecrack/SGMD +withal +withdrawn +withstand/SG +witted/e +wolf/MDGS +Wolverton +wolves +womb/MS +wonderful/P +won't +wooden/Y +woodener +woodland/SM +Woodrow +Woodstock/M +woodwind/S +wool/SMY +wool-gathering +wording/MA +workaday +workmate/S +work-shy +workstation/MS +work-to-rule +world-class +wormwood/MS +wrapped +wrapper/MS +wraps/U +wrathfulness +wreath/SDMG +write/fRGAS +writhe/SDG +wryer +WWII +Wynn/M +yahoo/SM +yammer/Sd +Yangtze +Yankton/M +Yaounde/M +yarrow/SM +Yates +yd +year-on-year +yellowish +yellowness +yet +Yiddish +yobbo/S +you-know-who +you'll +youngster/SM +yttrium/M +Yukon +zabaglione +zed/MS +zero-rated +zero-sum +Zimbabwean/S +zinnia/SM +zone's +Zurich/M diff --git a/Language - English/en_US.aff b/Language - English/en_US.aff new file mode 100644 index 0000000..2ddd985 --- /dev/null +++ b/Language - English/en_US.aff @@ -0,0 +1,201 @@ +SET ISO8859-1 +TRY esianrtolcdugmphbyfvkwzESIANRTOLCDUGMPHBYFVKWZ' +NOSUGGEST ! + +# ordinal numbers +COMPOUNDMIN 1 +# only in compounds: 1th, 2th, 3th +ONLYINCOMPOUND c +# compound rules: +# 1. [0-9]*1[0-9]th (10th, 11th, 12th, 56714th, etc.) +# 2. [0-9]*[02-9](1st|2nd|3rd|[4-9]th) (21st, 22nd, 123rd, 1234th, etc.) +COMPOUNDRULE 2 +COMPOUNDRULE n*1t +COMPOUNDRULE n*mp +WORDCHARS 0123456789 + +PFX A Y 1 +PFX A 0 re . + +PFX I Y 1 +PFX I 0 in . + +PFX U Y 1 +PFX U 0 un . + +PFX C Y 1 +PFX C 0 de . + +PFX E Y 1 +PFX E 0 dis . + +PFX F Y 1 +PFX F 0 con . + +PFX K Y 1 +PFX K 0 pro . + +SFX V N 2 +SFX V e ive e +SFX V 0 ive [^e] + +SFX N Y 3 +SFX N e ion e +SFX N y ication y +SFX N 0 en [^ey] + +SFX X Y 3 +SFX X e ions e +SFX X y ications y +SFX X 0 ens [^ey] + +SFX H N 2 +SFX H y ieth y +SFX H 0 th [^y] + +SFX Y Y 1 +SFX Y 0 ly . + +SFX G Y 2 +SFX G e ing e +SFX G 0 ing [^e] + +SFX J Y 2 +SFX J e ings e +SFX J 0 ings [^e] + +SFX D Y 4 +SFX D 0 d e +SFX D y ied [^aeiou]y +SFX D 0 ed [^ey] +SFX D 0 ed [aeiou]y + +SFX T N 4 +SFX T 0 st e +SFX T y iest [^aeiou]y +SFX T 0 est [aeiou]y +SFX T 0 est [^ey] + +SFX R Y 4 +SFX R 0 r e +SFX R y ier [^aeiou]y +SFX R 0 er [aeiou]y +SFX R 0 er [^ey] + +SFX Z Y 4 +SFX Z 0 rs e +SFX Z y iers [^aeiou]y +SFX Z 0 ers [aeiou]y +SFX Z 0 ers [^ey] + +SFX S Y 4 +SFX S y ies [^aeiou]y +SFX S 0 s [aeiou]y +SFX S 0 es [sxzh] +SFX S 0 s [^sxzhy] + +SFX P Y 3 +SFX P y iness [^aeiou]y +SFX P 0 ness [aeiou]y +SFX P 0 ness [^y] + +SFX M Y 1 +SFX M 0 's . + +SFX B Y 3 +SFX B 0 able [^aeiou] +SFX B 0 able ee +SFX B e able [^aeiou]e + +SFX L Y 1 +SFX L 0 ment . + +REP 88 +REP a ei +REP ei a +REP a ey +REP ey a +REP ai ie +REP ie ai +REP are air +REP are ear +REP are eir +REP air are +REP air ere +REP ere air +REP ere ear +REP ere eir +REP ear are +REP ear air +REP ear ere +REP eir are +REP eir ere +REP ch te +REP te ch +REP ch ti +REP ti ch +REP ch tu +REP tu ch +REP ch s +REP s ch +REP ch k +REP k ch +REP f ph +REP ph f +REP gh f +REP f gh +REP i igh +REP igh i +REP i uy +REP uy i +REP i ee +REP ee i +REP j di +REP di j +REP j gg +REP gg j +REP j ge +REP ge j +REP s ti +REP ti s +REP s ci +REP ci s +REP k cc +REP cc k +REP k qu +REP qu k +REP kw qu +REP o eau +REP eau o +REP o ew +REP ew o +REP oo ew +REP ew oo +REP ew ui +REP ui ew +REP oo ui +REP ui oo +REP ew u +REP u ew +REP oo u +REP u oo +REP u oe +REP oe u +REP u ieu +REP ieu u +REP ue ew +REP ew ue +REP uff ough +REP oo ieu +REP ieu oo +REP ier ear +REP ear ier +REP ear air +REP air ear +REP w qu +REP qu w +REP z ss +REP ss z +REP shun tion +REP shun sion +REP shun cion diff --git a/Language - English/en_US.dic b/Language - English/en_US.dic new file mode 100644 index 0000000..4f69807 --- /dev/null +++ b/Language - English/en_US.dic @@ -0,0 +1,62120 @@ +62118 +0/nm +1/n1 +2/nm +3/nm +4/nm +5/nm +6/nm +7/nm +8/nm +9/nm +0th/pt +1st/p +1th/tc +2nd/p +2th/tc +3rd/p +3th/tc +4th/pt +5th/pt +6th/pt +7th/pt +8th/pt +9th/pt +a +A +AA +AAA +Aachen/M +aardvark/SM +Aaren/M +Aarhus/M +Aarika/M +Aaron/M +AB +aback +abacus/SM +abaft +Abagael/M +Abagail/M +abalone/SM +abandoner/M +abandon/LGDRS +abandonment/SM +abase/LGDSR +abasement/S +abaser/M +abashed/UY +abashment/MS +abash/SDLG +abate/DSRLG +abated/U +abatement/MS +abater/M +abattoir/SM +Abba/M +Abbe/M +abb/S +abbess/SM +Abbey/M +abbey/MS +Abbie/M +Abbi/M +Abbot/M +abbot/MS +Abbott/M +abbr +abbrev +abbreviated/UA +abbreviates/A +abbreviate/XDSNG +abbreviating/A +abbreviation/M +Abbye/M +Abby/M +ABC/M +Abdel/M +abdicate/NGDSX +abdication/M +abdomen/SM +abdominal/YS +abduct/DGS +abduction/SM +abductor/SM +Abdul/M +ab/DY +abeam +Abelard/M +Abel/M +Abelson/M +Abe/M +Aberdeen/M +Abernathy/M +aberrant/YS +aberrational +aberration/SM +abet/S +abetted +abetting +abettor/SM +Abeu/M +abeyance/MS +abeyant +Abey/M +abhorred +abhorrence/MS +abhorrent/Y +abhorrer/M +abhorring +abhor/S +abidance/MS +abide/JGSR +abider/M +abiding/Y +Abidjan/M +Abie/M +Abigael/M +Abigail/M +Abigale/M +Abilene/M +ability/IMES +abjection/MS +abjectness/SM +abject/SGPDY +abjuration/SM +abjuratory +abjurer/M +abjure/ZGSRD +ablate/VGNSDX +ablation/M +ablative/SY +ablaze +abler/E +ables/E +ablest +able/U +abloom +ablution/MS +Ab/M +ABM/S +abnegate/NGSDX +abnegation/M +Abner/M +abnormality/SM +abnormal/SY +aboard +abode/GMDS +abolisher/M +abolish/LZRSDG +abolishment/MS +abolitionism/SM +abolitionist/SM +abolition/SM +abominable +abominably +abominate/XSDGN +abomination/M +aboriginal/YS +aborigine/SM +Aborigine/SM +aborning +abortionist/MS +abortion/MS +abortiveness/M +abortive/PY +abort/SRDVG +Abo/SM! +abound/GDS +about/S +aboveboard +aboveground +above/S +abracadabra/S +abrader/M +abrade/SRDG +Abraham/M +Abrahan/M +Abra/M +Abramo/M +Abram/SM +Abramson/M +Abran/M +abrasion/MS +abrasiveness/S +abrasive/SYMP +abreaction/MS +abreast +abridge/DSRG +abridged/U +abridger/M +abridgment/SM +abroad +abrogate/XDSNG +abrogation/M +abrogator/SM +abruptness/SM +abrupt/TRYP +ABS +abscess/GDSM +abscissa/SM +abscission/SM +absconder/M +abscond/SDRZG +abseil/SGDR +absence/SM +absenteeism/SM +absentee/MS +absentia/M +absentmindedness/S +absentminded/PY +absent/SGDRY +absinthe/SM +abs/M +absoluteness/SM +absolute/NPRSYTX +absolution/M +absolutism/MS +absolutist/SM +absolve/GDSR +absolver/M +absorb/ASGD +absorbed/U +absorbency/MS +absorbent/MS +absorber/SM +absorbing/Y +absorption/MS +absorptive +absorptivity/M +abstainer/M +abstain/GSDRZ +abstemiousness/MS +abstemious/YP +abstention/SM +abstinence/MS +abstinent/Y +abstractedness/SM +abstracted/YP +abstracter/M +abstractionism/M +abstractionist/SM +abstraction/SM +abstractness/SM +abstractor/MS +abstract/PTVGRDYS +abstruseness/SM +abstruse/PRYT +absurdity/SM +absurdness/SM +absurd/PRYST +Abuja +abundance/SM +abundant/Y +abused/E +abuse/GVZDSRB +abuser/M +abuses/E +abusing/E +abusiveness/SM +abusive/YP +abut/LS +abutment/SM +abutted +abutter/MS +abutting +abuzz +abysmal/Y +abyssal +Abyssinia/M +Abyssinian +abyss/SM +AC +acacia/SM +academe/MS +academia/SM +academical/Y +academicianship +academician/SM +academic/S +academy/SM +Acadia/M +acanthus/MS +Acapulco/M +accede/SDG +accelerated/U +accelerate/NGSDXV +accelerating/Y +acceleration/M +accelerator/SM +accelerometer/SM +accented/U +accent/SGMD +accentual/Y +accentuate/XNGSD +accentuation/M +acceptability/SM +acceptability's/U +acceptableness/SM +acceptable/P +acceptably/U +acceptance/SM +acceptant +acceptation/SM +accepted/Y +accepter/M +accepting/PY +acceptor/MS +accept/RDBSZVG +accessed/A +accessibility/IMS +accessible/IU +accessibly/I +accession/SMDG +accessors +accessory/SM +access/SDMG +accidence/M +accidentalness/M +accidental/SPY +accident/MS +acclaimer/M +acclaim/SDRG +acclamation/MS +acclimate/XSDGN +acclimation/M +acclimatisation +acclimatise/DG +acclimatization/AMS +acclimatized/U +acclimatize/RSDGZ +acclimatizes/A +acclivity/SM +accolade/GDSM +accommodated/U +accommodate/XVNGSD +accommodating/Y +accommodation/M +accommodativeness/M +accommodative/P +accompanied/U +accompanier/M +accompaniment/MS +accompanist/SM +accompany/DRSG +accomplice/MS +accomplished/U +accomplisher/M +accomplishment/SM +accomplish/SRDLZG +accordance/SM +accordant/Y +accorder/M +according/Y +accordionist/SM +accordion/MS +accord/SZGMRD +accost/SGD +accountability/MS +accountability's/U +accountableness/M +accountable/U +accountably/U +accountancy/SM +accountant/MS +account/BMDSGJ +accounted/U +accounting/M +accouter/GSD +accouterments +accouterment's +accoutrement/M +Accra/M +accreditation/SM +accredited/U +accredit/SGD +accretion/SM +accrual/MS +accrue/SDG +acct +acculturate/XSDVNG +acculturation/M +accumulate/VNGSDX +accumulation/M +accumulativeness/M +accumulative/YP +accumulator/MS +accuracy/IMS +accurate/IY +accurateness/SM +accursedness/SM +accursed/YP +accusal/M +accusation/SM +accusative/S +accusatory +accused/M +accuser/M +accuse/SRDZG +accusing/Y +accustomedness/M +accustomed/P +accustom/SGD +ac/DRG +aced/M +acerbate/DSG +acerbic +acerbically +acerbity/MS +ace/SM +acetaminophen/S +acetate/MS +acetic +acetone/SM +acetonic +acetylene/MS +Acevedo/M +Achaean/M +Achebe/M +ached/A +ache/DSG +achene/SM +Achernar/M +aches/A +Acheson/M +achievable/U +achieved/UA +achieve/LZGRSDB +achievement/SM +achiever/M +Achilles +aching/Y +achoo +achromatic +achy/TR +acidic +acidification/M +acidify/NSDG +acidity/SM +acidness/M +acidoses +acidosis/M +acid/SMYP +acidulous +acing/M +Ackerman/M +acknowledgeable +acknowledgedly +acknowledged/U +acknowledge/GZDRS +acknowledger/M +acknowledgment/SAM +ACLU +Ac/M +ACM +acme/SM +acne/MDS +acolyte/MS +Aconcagua/M +aconite/MS +acorn/SM +Acosta/M +acoustical/Y +acoustician/M +acoustic/S +acoustics/M +acquaintance/MS +acquaintanceship/S +acquainted/U +acquaint/GASD +acquiesce/GSD +acquiescence/SM +acquiescent/Y +acquirable +acquire/ASDG +acquirement/SM +acquisition's/A +acquisition/SM +acquisitiveness/MS +acquisitive/PY +acquit/S +acquittal/MS +acquittance/M +acquitted +acquitter/M +acquitting +acreage/MS +acre/MS +acridity/MS +acridness/SM +acrid/TPRY +acrimoniousness/MS +acrimonious/YP +acrimony/MS +acrobatically +acrobatic/S +acrobatics/M +acrobat/SM +acronym/SM +acrophobia/SM +Acropolis/M +acropolis/SM +across +acrostic/SM +Acrux/M +acrylate/M +acrylic/S +ACT +Actaeon/M +Acta/M +ACTH +acting/S +actinic +actinide/SM +actinium/MS +actinometer/MS +action/DMSGB +actions/AI +action's/IA +activate/AXCDSNGI +activated/U +activation/AMCI +activator/SM +active/APY +actively/I +activeness/MS +actives +activism/MS +activist/MS +activities/A +activity/MSI +Acton/M +actor/MAS +actress/SM +act's +Acts +act/SADVG +actuality/SM +actualization/MAS +actualize/GSD +actualizes/A +actual/SY +actuarial/Y +actuary/MS +actuate/GNXSD +actuation/M +actuator/SM +acuity/MS +acumen/SM +acupressure/S +acupuncture/SM +acupuncturist/S +acuteness/MS +acute/YTSRP +acyclic +acyclically +acyclovir/S +AD +adage/MS +adagio/S +Adah/M +Adair/M +Adaline/M +Ada/M +adamant/SY +Adamo/M +Adam/SM +Adamson/M +Adana/M +Adan/M +adaptability/MS +adaptable/U +adaptation/MS +adaptedness/M +adapted/P +adapter/M +adapting/A +adaption +adaptively +adaptiveness/M +adaptive/U +adaptivity +adapt/SRDBZVG +Adara/M +ad/AS +ADC +Adda/M +Addams +addenda +addend/SM +addendum/M +adder/M +Addia/M +addiction/MS +addictive/P +addict/SGVD +Addie/M +Addi/M +Addison/M +additional/Y +addition/MS +additive/YMS +additivity +addle/GDS +addressability +addressable/U +addressed/A +addressee/SM +addresser/M +addresses/A +address/MDRSZGB +Addressograph/M +adduce/GRSD +adducer/M +adduct/DGVS +adduction/M +adductor/M +Addy/M +add/ZGBSDR +Adelaida/M +Adelaide/M +Adela/M +Adelbert/M +Adele/M +Adelheid/M +Adelice/M +Adelina/M +Adelind/M +Adeline/M +Adella/M +Adelle/M +Adel/M +Ade/M +Adena/M +Adenauer/M +adenine/SM +Aden/M +adenoidal +adenoid/S +adeptness/MS +adept/RYPTS +adequacy/IMS +adequate/IPY +adequateness's/I +adequateness/SM +Adey/M +Adham/M +Adhara/M +adherence/SM +adherent/YMS +adherer/M +adhere/ZGRSD +adhesion/MS +adhesiveness/MS +adhesive/PYMS +adiabatic +adiabatically +Adiana/M +Adidas/M +adieu/S +Adi/M +Adina/M +adis +adipose/S +Adirondack/SM +adj +adjacency/MS +adjacent/Y +adjectival/Y +adjective/MYS +adjoin/SDG +adjoint/M +adjourn/DGLS +adjournment/SM +adjudge/DSG +adjudicate/VNGXSD +adjudication/M +adjudicator/SM +adjudicatory +adjunct/VSYM +adjuration/SM +adjure/GSD +adjustable/U +adjustably +adjust/DRALGSB +adjusted/U +adjuster's/A +adjuster/SM +adjustive +adjustment/MAS +adjustor's +adjutant/SM +Adkins/M +Adlai/M +Adler/M +adman/M +admen +administer/GDJS +administrable +administrate/XSDVNG +administration/M +administrative/Y +administrator/MS +administratrix/M +admirableness/M +admirable/P +admirably +admiral/SM +admiralty/MS +Admiralty/S +admiration/MS +admirer/M +admire/RSDZBG +admiring/Y +admissibility/ISM +admissible/I +admissibly +admission/AMS +admit/AS +admittance/MS +admitted/A +admittedly +admitting/A +admix/SDG +admixture/SM +Adm/M +Ad/MN +admonisher/M +admonish/GLSRD +admonishing/Y +admonishment/SM +admonition/MS +admonitory +adobe/MS +adolescence/MS +adolescent/SYM +Adolf/M +Adolfo/M +Adolphe/M +Adolph/M +Adolpho/M +Adolphus/M +Ado/M +ado/MS +Adonis/SM +adopted/AU +adopter/M +adoption/MS +adoptive/Y +adopt/RDSBZVG +adopts/A +adorableness/SM +adorable/P +adorably +Adora/M +adoration/SM +adore/DSRGZB +Adoree/M +Adore/M +adorer/M +adoring/Y +adorned/U +Adorne/M +adornment/SM +adorn/SGLD +ADP +Adrea/M +adrenalin +adrenaline/MS +Adrenalin/MS +adrenal/YS +Adria/MX +Adriana/M +Adriane/M +Adrian/M +Adrianna/M +Adrianne/M +Adriano/M +Adriatic +Adriena/M +Adrien/M +Adrienne/M +adrift +adroitness/MS +adroit/RTYP +ads +ad's +adsorbate/M +adsorbent/S +adsorb/GSD +adsorption/MS +adsorptive/Y +adulate/GNDSX +adulation/M +adulator/SM +adulatory +adulterant/SM +adulterated/U +adulterate/NGSDX +adulteration/M +adulterer/SM +adulteress/MS +adulterous/Y +adultery/SM +adulthood/MS +adult/MYPS +adultness/M +adumbrate/XSDVGN +adumbration/M +adumbrative/Y +adv +advance/DSRLZG +advancement/MS +advancer/M +advantage/GMEDS +advantageous/EY +advantageousness/M +Adventist/M +adventist/S +adventitiousness/M +adventitious/PY +adventive/Y +Advent/SM +advent/SVM +adventurer/M +adventuresome +adventure/SRDGMZ +adventuress/SM +adventurousness/SM +adventurous/YP +adverbial/MYS +adverb/SM +adversarial +adversary/SM +adverse/DSRPYTG +adverseness/MS +adversity/SM +advert/GSD +advertised/U +advertise/JGZSRDL +advertisement/SM +advertiser/M +advertising/M +advertorial/S +advice/SM +Advil/M +advisability/SIM +advisable/I +advisableness/M +advisably +advisedly/I +advised/YU +advisee/MS +advisement/MS +adviser/M +advise/ZRSDGLB +advisor/S +advisor's +advisory/S +advocacy/SM +advocate/NGVDS +advocation/M +advt +adze's +adz/MDSG +Aegean +aegis/SM +Aelfric/M +Aeneas +Aeneid/M +aeolian +Aeolus/M +aeon's +aerate/XNGSD +aeration/M +aerator/MS +aerialist/MS +aerial/SMY +Aeriela/M +Aeriell/M +Aeriel/M +aerie/SRMT +aeroacoustic +aerobatic/S +aerobically +aerobic/S +aerodrome/SM +aerodynamically +aerodynamic/S +aerodynamics/M +aeronautical/Y +aeronautic/S +aeronautics/M +aerosolize/D +aerosol/MS +aerospace/SM +Aeschylus/M +Aesculapius/M +Aesop/M +aesthete/S +aesthetically +aestheticism/MS +aesthetics/M +aesthetic/U +aether/M +aetiology/M +AF +AFAIK +afar/S +AFB +AFC +AFDC +affability/MS +affable/TR +affably +affair/SM +affectation/MS +affectedness/EM +affected/UEYP +affect/EGSD +affecter/M +affecting/Y +affectionate/UY +affectioned +affection/EMS +affectioning +affective/MY +afferent/YS +affiance/GDS +affidavit/SM +affiliated/U +affiliate/EXSDNG +affiliation/EM +affine +affinity/SM +affirm/ASDG +affirmation/SAM +affirmative/SY +affix/SDG +afflatus/MS +afflict/GVDS +affliction/SM +afflictive/Y +affluence/SM +affluent/YS +afford/DSBG +afforest/A +afforestation/SM +afforested +afforesting +afforests +affray/MDSG +affricate/VNMS +affrication/M +affricative/M +affright +affront/GSDM +Afghani/SM +Afghanistan/M +afghan/MS +Afghan/SM +aficionado/MS +afield +afire +aflame +afloat +aflutter +afoot +afore +aforementioned +aforesaid +aforethought/S +afoul +Afr +afraid/U +afresh +Africa/M +African/MS +Afrikaans/M +Afrikaner/SM +afro +Afrocentric +Afrocentrism/S +Afro/MS +afterbirth/M +afterbirths +afterburner/MS +aftercare/SM +aftereffect/MS +afterglow/MS +afterimage/MS +afterlife/M +afterlives +aftermath/M +aftermaths +aftermost +afternoon/SM +aftershave/S +aftershock/SM +afters/M +aftertaste/SM +afterthought/MS +afterward/S +afterworld/MS +Afton/M +aft/ZR +Agace/M +again +against +Agamemnon/M +agapae +agape/S +agar/MS +Agassiz/M +Agata/M +agate/SM +Agatha/M +Agathe/M +agave/SM +agedness/M +aged/PY +age/GJDRSMZ +ageism/S +ageist/S +agelessness/MS +ageless/YP +agency/SM +agenda/MS +agent/AMS +agented +agenting +agentive +ageratum/M +Aggie/M +Aggi/M +agglomerate/XNGVDS +agglomeration/M +agglutinate/VNGXSD +agglutination/M +agglutinin/MS +aggrandize/LDSG +aggrandizement/SM +aggravate/SDNGX +aggravating/Y +aggravation/M +aggregated/U +aggregate/EGNVD +aggregately +aggregateness/M +aggregates +aggregation/SM +aggregative/Y +aggression/SM +aggressively +aggressiveness/S +aggressive/U +aggressor/MS +aggrieved/Y +aggrieve/GDS +Aggy/SM +aghast +agile/YTR +agility/MS +agitated/Y +agitate/XVNGSD +agitation/M +agitator/SM +agitprop/MS +Aglaia/M +agleam +aglitter +aglow +Ag/M +Agna/M +Agnella/M +Agnese/M +Agnes/M +Agnesse/M +Agneta/M +Agnew/M +Agni/M +Agnola/M +agnosticism/MS +agnostic/SM +ago +agog +agonizedly/S +agonized/Y +agonize/ZGRSD +agonizing/Y +agony/SM +agoraphobia/MS +agoraphobic/S +Agosto/M +Agra/M +agrarianism/MS +agrarian/S +agreeable/EP +agreeableness/SME +agreeably/E +agreeing/E +agree/LEBDS +agreement/ESM +agreer/S +Agretha/M +agribusiness/SM +Agricola/M +agriculturalist/S +agricultural/Y +agriculture/MS +agriculturist/SM +Agrippa/M +Agrippina/M +agrochemicals +agronomic/S +agronomist/SM +agronomy/MS +aground +Aguascalientes/M +ague/MS +Aguie/M +Aguilar/M +Aguinaldo/M +Aguirre/M +Aguistin/M +Aguste/M +Agustin/M +ah +Ahab/M +Aharon/M +aha/S +ahead +ahem/S +Ahmadabad +Ahmad/M +Ahmed/M +ahoy/S +Ahriman/M +AI +Aida/M +Aidan/M +aided/U +aide/MS +aider/M +AIDS +aid/ZGDRS +Aigneis/M +aigrette/SM +Aiken/M +Aila/M +Ailbert/M +Ailee/M +Aileen/M +Aile/M +Ailene/M +aileron/MS +Ailey/M +Ailina/M +Aili/SM +ail/LSDG +ailment/SM +Ailsun/M +Ailyn/M +Aimee/M +Aime/M +aimer/M +Aimil/M +aimlessness/MS +aimless/YP +aim/ZSGDR +Aindrea/M +Ainslee/M +Ainsley/M +Ainslie/M +ain't +Ainu/M +airbag/MS +airbase/S +airborne +airbrush/SDMG +Airbus/M +airbus/SM +aircraft/MS +aircrew/M +airdrop/MS +airdropped +airdropping +Airedale/SM +Aires +airfare/S +airfield/MS +airflow/SM +airfoil/MS +airframe/MS +airfreight/SGD +airhead/MS +airily +airiness/MS +airing/M +airlessness/S +airless/P +airlift/MDSG +airliner/M +airline/SRMZ +airlock/MS +airmail/DSG +airman/M +airmass +air/MDRTZGJS +airmen +airpark +airplane/SM +airplay/S +airport/MS +airship/MS +airsickness/SM +airsick/P +airspace/SM +airspeed/SM +airstrip/MS +airtightness/M +airtight/P +airtime +airwaves +airway/SM +airworthiness/SM +airworthy/PTR +airy/PRT +Aisha/M +aisle/DSGM +aitch/MS +ajar +Ajax/M +Ajay/M +AK +aka +Akbar/M +Akihito/M +akimbo +Akim/M +akin +Akita/M +Akkad/M +Akron/M +Aksel/M +AL +Alabama/M +Alabaman/S +Alabamian/MS +alabaster/MS +alack/S +alacrity/SM +Aladdin/M +Alaine/M +Alain/M +Alair/M +Alameda/M +Alamogordo/M +Alamo/SM +ala/MS +Ala/MS +Alanah/M +Alana/M +Aland/M +Alane/M +alanine/M +Alan/M +Alanna/M +Alano/M +Alanson/M +Alard/M +Alaric/M +Alar/M +alarming/Y +alarmist/MS +alarm/SDG +Alasdair/M +Alaska/M +Alaskan/S +alas/S +Alastair/M +Alasteir/M +Alaster/M +Alayne/M +albacore/SM +alba/M +Alba/M +Albania/M +Albanian/SM +Albany/M +albatross/SM +albedo/M +Albee/M +albeit +Alberich/M +Alberik/M +Alberio/M +Alberta/M +Albertan/S +Albertina/M +Albertine/M +Albert/M +Alberto/M +Albie/M +Albigensian +Albina/M +albinism/SM +albino/MS +Albion/M +Albireo/M +alb/MS +Albrecht/M +albumen/M +albumin/MS +albuminous +album/MNXS +Albuquerque/M +Alcatraz/M +Alcestis/M +alchemical +alchemist/SM +alchemy/MS +Alcibiades/M +Alcmena/M +Alcoa/M +alcoholically +alcoholic/MS +alcoholism/SM +alcohol/MS +Alcott/M +alcove/MSD +Alcuin/M +Alcyone/M +Aldan/M +Aldebaran/M +aldehyde/M +Alden/M +Alderamin/M +alderman/M +aldermen +alder/SM +alderwoman +alderwomen +Aldin/M +Aldis/M +Aldo/M +Aldon/M +Aldous/M +Aldrich/M +Aldric/M +Aldridge/M +Aldrin/M +Aldus/M +Aldwin/M +aleatory +Alecia/M +Aleck/M +Alec/M +Aleda/M +alee +Aleece/M +Aleen/M +alehouse/MS +Aleichem/M +Alejandra/M +Alejandrina/M +Alejandro/M +Alejoa/M +Aleksandr/M +Alembert/M +alembic/SM +ale/MVS +Alena/M +Alene/M +aleph/M +Aleppo/M +Aler/M +alerted/Y +alertness/MS +alert/STZGPRDY +Alessandra/M +Alessandro/M +Aleta/M +Alethea/M +Aleutian/S +Aleut/SM +alewife/M +alewives +Alexa/M +Alexander/SM +Alexandra/M +Alexandre/M +Alexandria/M +Alexandrian/S +Alexandrina/M +Alexandr/M +Alexandro/MS +Alexei/M +Alexia/M +Alexina/M +Alexine/M +Alexio/M +Alexi/SM +Alex/M +alfalfa/MS +Alfa/M +Alfie/M +Alfi/M +Alf/M +Alfonse/M +Alfons/M +Alfonso/M +Alfonzo/M +Alford/M +Alfreda/M +Alfred/M +Alfredo/M +alfresco +Alfy/M +algae +algaecide +algal +alga/M +algebraic +algebraical/Y +algebraist/M +algebra/MS +Algenib/M +Algeria/M +Algerian/MS +Alger/M +Algernon/M +Algieba/M +Algiers/M +alginate/SM +ALGOL +Algol/M +Algonquian/SM +Algonquin/SM +algorithmic +algorithmically +algorithm/MS +Alhambra/M +Alhena/M +Alia/M +alias/GSD +alibi/MDSG +Alica/M +Alicea/M +Alice/M +Alicia/M +Alick/M +Alic/M +Alida/M +Alidia/M +Alie/M +alienable/IU +alienate/SDNGX +alienation/M +alienist/MS +alien/RDGMBS +Alighieri/M +alight/DSG +aligned/U +aligner/SM +align/LASDG +alignment/SAM +Alika/M +Alikee/M +alikeness/M +alike/U +alimentary +aliment/SDMG +alimony/MS +Ali/MS +Alina/M +Aline/M +alinement's +Alioth/M +aliquot/S +Alisa/M +Alisander/M +Alisha/M +Alison/M +Alissa/M +Alistair/M +Alister/M +Alisun/M +aliveness/MS +alive/P +Alix/M +aliyah/M +aliyahs +Aliza/M +Alkaid/M +alkalies +alkali/M +alkaline +alkalinity/MS +alkalize/SDG +alkaloid/MS +alkyd/S +alkyl/M +Allahabad/M +Allah/M +Alla/M +Allan/M +Allard/M +allay/GDS +Allayne/M +Alleen/M +allegation/SM +alleged/Y +allege/SDG +Allegheny/MS +allegiance/SM +allegiant +allegoric +allegoricalness/M +allegorical/YP +allegorist/MS +allegory/SM +Allegra/M +allegretto/MS +allegri +allegro/MS +allele/SM +alleluia/S +allemande/M +Allendale/M +Allende/M +Allene/M +Allen/M +Allentown/M +allergenic +allergen/MS +allergic +allergically +allergist/MS +allergy/MS +alleviate/SDVGNX +alleviation/M +alleviator/MS +Alley/M +alley/MS +Alleyn/M +alleyway/MS +Allhallows +alliance/MS +Allianora/M +Allie/M +allier +allies/M +alligator/DMGS +Alli/MS +Allina/M +Allin/M +Allison/M +Allissa/M +Allister/M +Allistir/M +alliterate/XVNGSD +alliteration/M +alliterative/Y +Allix/M +allocable/U +allocatable +allocate/ACSDNGX +allocated/U +allocation/AMC +allocative +allocator/AMS +allophone/MS +allophonic +allotment/MS +allotments/A +allotrope/M +allotropic +allots/A +allot/SDL +allotted/A +allotter/M +allotting/A +allover/S +allowableness/M +allowable/P +allowably +allowance/GSDM +allowed/Y +allowing/E +allow/SBGD +allows/E +alloyed/U +alloy/SGMD +all/S +allspice/MS +Allstate/M +Allsun/M +allude/GSD +allure/GLSD +allurement/SM +alluring/Y +allusion/MS +allusiveness/MS +allusive/PY +alluvial/S +alluvions +alluvium/MS +Allx/M +ally/ASDG +Allyce/M +Ally/MS +Allyn/M +Allys +Allyson/M +alma +Almach/M +Almaden/M +almagest +Alma/M +almanac/MS +Almaty/M +Almeda/M +Almeria/M +Almeta/M +almightiness/M +Almighty/M +almighty/P +Almira/M +Almire/M +almond/SM +almoner/MS +almost +Al/MRY +alms/A +almshouse/SM +almsman/M +alnico +Alnilam/M +Alnitak/M +aloe/MS +aloft +aloha/SM +Aloin/M +Aloise/M +Aloisia/M +aloneness/M +alone/P +along +alongshore +alongside +Alon/M +Alonso/M +Alonzo/M +aloofness/MS +aloof/YP +aloud +Aloysia/M +Aloysius/M +alpaca/SM +Alpert/M +alphabetical/Y +alphabetic/S +alphabetization/SM +alphabetizer/M +alphabetize/SRDGZ +alphabet/SGDM +alpha/MS +alphanumerical/Y +alphanumeric/S +Alphard/M +Alphecca/M +Alpheratz/M +Alphonse/M +Alphonso/M +Alpine +alpine/S +alp/MS +Alps +already +Alric/M +alright +Alsace/M +Alsatian/MS +also +Alsop/M +Alston/M +Altaic/M +Altai/M +Altair/M +Alta/M +altar/MS +altarpiece/SM +alterable/UI +alteration/MS +altercate/NX +altercation/M +altered/U +alternate/SDVGNYX +alternation/M +alternativeness/M +alternative/YMSP +alternator/MS +alter/RDZBG +Althea/M +although +altimeter/SM +Altiplano/M +altitude/SM +altogether/S +Alton/M +alto/SM +Altos/M +altruism/SM +altruistic +altruistically +altruist/SM +alt/RZS +ALU +Aludra/M +Aluin/M +Aluino/M +alumina/SM +aluminum/MS +alumnae +alumna/M +alumni +alumnus/MS +alum/SM +alundum +Alva/M +Alvan/M +Alvarado/M +Alvarez/M +Alvaro/M +alveolar/Y +alveoli +alveolus/M +Alvera/M +Alverta/M +Alvie/M +Alvina/M +Alvinia/M +Alvin/M +Alvira/M +Alvis/M +Alvy/M +alway/S +Alwin/M +Alwyn/M +Alyce/M +Alyda/M +Alyosha/M +Alysa/M +Alyse/M +Alysia/M +Alys/M +Alyson/M +Alyss +Alyssa/M +Alzheimer/M +AM +AMA +Amabelle/M +Amabel/M +Amadeus/M +Amado/M +amain +Amalea/M +Amalee/M +Amaleta/M +amalgamate/VNGXSD +amalgamation/M +amalgam/MS +Amalia/M +Amalie/M +Amalita/M +Amalle/M +Amanda/M +Amandie/M +Amandi/M +Amandy/M +amanuenses +amanuensis/M +Amara/M +amaranth/M +amaranths +amaretto/S +Amargo/M +Amarillo/M +amaryllis/MS +am/AS +amasser/M +amass/GRSD +Amata/M +amateurishness/MS +amateurish/YP +amateurism/MS +amateur/SM +Amati/M +amatory +amazed/Y +amaze/LDSRGZ +amazement/MS +amazing/Y +amazonian +Amazonian +amazon/MS +Amazon/SM +ambassadorial +ambassador/MS +ambassadorship/MS +ambassadress/SM +ambergris/SM +Amberly/M +amber/MS +Amber/YM +ambiance/MS +ambidexterity/MS +ambidextrous/Y +ambience's +ambient/S +ambiguity/MS +ambiguously/U +ambiguousness/M +ambiguous/YP +ambition/GMDS +ambitiousness/MS +ambitious/PY +ambit/M +ambivalence/SM +ambivalent/Y +amble/GZDSR +Amble/M +ambler/M +ambrose +Ambrose/M +ambrosial/Y +ambrosia/SM +Ambrosi/M +Ambrosio/M +Ambrosius/M +Ambros/M +ambulance/MS +ambulant/S +ambulate/DSNGX +ambulation/M +ambulatory/S +Ambur/M +ambuscade/MGSRD +ambuscader/M +ambusher/M +ambush/MZRSDG +Amby/M +Amdahl/M +ameba's +Amelia/M +Amelie/M +Amelina/M +Ameline/M +ameliorate/XVGNSD +amelioration/M +Amelita/M +amenability/SM +amenably +amended/U +amender/M +amendment/SM +amen/DRGTSB +amend/SBRDGL +amends/M +Amenhotep/M +amenity/MS +amenorrhea/M +Amerada/M +Amerasian/S +amercement/MS +amerce/SDLG +Americana/M +Americanism/SM +Americanization/SM +americanized +Americanize/SDG +American/MS +America/SM +americium/MS +Amerigo/M +Amerindian/MS +Amerind/MS +Amer/M +Amery/M +Ameslan/M +Ame/SM +amethystine +amethyst/MS +Amharic/M +Amherst/M +amiability/MS +amiableness/M +amiable/RPT +amiably +amicability/SM +amicableness/M +amicable/P +amicably +amide/SM +amid/S +amidships +amidst +Amie/M +Amiga/M +amigo/MS +Amii/M +Amil/M +Ami/M +amines +aminobenzoic +amino/M +amir's +Amish +amiss +Amitie/M +Amity/M +amity/SM +Ammamaria/M +Amman/M +Ammerman/M +ammeter/MS +ammo/MS +ammoniac +ammonia/MS +ammonium/M +Am/MR +ammunition/MS +amnesiac/MS +amnesia/SM +amnesic/S +amnesty/GMSD +amniocenteses +amniocentesis/M +amnion/SM +amniotic +Amoco/M +amoeba/SM +amoebic +amoeboid +amok/MS +among +amongst +Amontillado/M +amontillado/MS +amorality/MS +amoral/Y +amorousness/SM +amorous/PY +amorphousness/MS +amorphous/PY +amortization/SUM +amortized/U +amortize/SDG +Amory/M +Amos +amount/SMRDZG +amour/MS +Amparo/M +amperage/SM +Ampere/M +ampere/MS +ampersand/MS +Ampex/M +amphetamine/MS +amphibian/SM +amphibiousness/M +amphibious/PY +amphibology/M +amphitheater/SM +amphorae +amphora/M +ampleness/M +ample/PTR +amplification/M +amplifier/M +amplify/DRSXGNZ +amplitude/MS +ampoule's +amp/SGMDY +ampule/SM +amputate/DSNGX +amputation/M +amputee/SM +Amritsar/M +ams +Amsterdam/M +amt +Amtrak/M +amuck's +amulet/SM +Amundsen/M +Amur/M +amused/Y +amuse/LDSRGVZ +amusement/SM +amuser/M +amusingness/M +amusing/YP +Amway/M +Amye/M +amylase/MS +amyl/M +Amy/M +Anabal/M +Anabaptist/SM +Anabella/M +Anabelle/M +Anabel/M +anabolic +anabolism/MS +anachronism/SM +anachronistic +anachronistically +Anacin/M +anaconda/MS +Anacreon/M +anaerobe/SM +anaerobic +anaerobically +anaglyph/M +anagrammatic +anagrammatically +anagrammed +anagramming +anagram/MS +Anaheim/M +Analects/M +analgesia/MS +analgesic/S +Analiese/M +Analise/M +Anallese/M +Anallise/M +analogical/Y +analogize/SDG +analogousness/MS +analogous/YP +analog/SM +analogue/SM +analogy/MS +anal/Y +analysand/MS +analyses +analysis/AM +analyst/SM +analytical/Y +analyticity/S +analytic/S +analytics/M +analyzable/U +analyze/DRSZGA +analyzed/U +analyzer/M +Ana/M +anamorphic +Ananias/M +anapaest's +anapestic/S +anapest/SM +anaphora/M +anaphoric +anaphorically +anaplasmosis/M +anarchic +anarchical/Y +anarchism/MS +anarchistic +anarchist/MS +anarchy/MS +Anastasia/M +Anastasie/M +Anastassia/M +anastigmatic +anastomoses +anastomosis/M +anastomotic +anathema/MS +anathematize/GSD +Anatola/M +Anatole/M +Anatolia/M +Anatolian +Anatollo/M +Anatol/M +anatomic +anatomical/YS +anatomist/MS +anatomize/GSD +anatomy/MS +Anaxagoras/M +Ancell/M +ancestor/SMDG +ancestral/Y +ancestress/SM +ancestry/SM +Anchorage/M +anchorage/SM +anchored/U +anchorite/MS +anchoritism/M +anchorman/M +anchormen +anchorpeople +anchorperson/S +anchor/SGDM +anchorwoman +anchorwomen +anchovy/MS +ancientness/MS +ancient/SRYTP +ancillary/S +an/CS +Andalusia/M +Andalusian +Andaman +andante/S +and/DZGS +Andean/M +Andeee/M +Andee/M +Anderea/M +Andersen/M +Anders/N +Anderson/M +Andes +Andie/M +Andi/M +andiron/MS +Andonis/M +Andorra/M +Andover/M +Andra/SM +Andrea/MS +Andreana/M +Andree/M +Andrei/M +Andrej/M +Andre/SM +Andrew/MS +Andrey/M +Andria/M +Andriana/M +Andriette/M +Andris +androgenic +androgen/SM +androgynous +androgyny/SM +android/MS +Andromache/M +Andromeda/M +Andropov/M +Andros/M +Andrus/M +Andy/M +anecdotal/Y +anecdote/SM +anechoic +anemia/SM +anemically +anemic/S +anemometer/MS +anemometry/M +anemone/SM +anent +aneroid +Anestassia/M +anesthesia/MS +anesthesiologist/MS +anesthesiology/SM +anesthetically +anesthetic/SM +anesthetist/MS +anesthetization/SM +anesthetizer/M +anesthetize/ZSRDG +Anet/M +Anetta/M +Anette/M +Anett/M +aneurysm/MS +anew +Angara/M +Angela/M +Angeleno/SM +Angele/SM +angelfish/SM +Angelia/M +angelic +angelical/Y +Angelica/M +angelica/MS +Angelico/M +Angelika/M +Angeli/M +Angelina/M +Angeline/M +Angelique/M +Angelita/M +Angelle/M +Angel/M +angel/MDSG +Angelo/M +Angelou/M +Ange/M +anger/GDMS +Angevin/M +Angie/M +Angil/M +angina/MS +angiography +angioplasty/S +angiosperm/MS +Angkor/M +angle/GMZDSRJ +angler/M +Angles +angleworm/MS +Anglia/M +Anglicanism/MS +Anglican/MS +Anglicism/SM +Anglicization/MS +anglicize/SDG +Anglicize/SDG +angling/M +Anglo/MS +Anglophile/SM +Anglophilia/M +Anglophobe/MS +Anglophobia/M +Angola/M +Angolan/S +angora/MS +Angora/MS +angrily +angriness/M +angry/RTP +angst/MS +ngstrm/M +angstrom/MS +Anguilla/M +anguish/DSMG +angularity/MS +angular/Y +Angus/M +Angy/M +Anheuser/M +anhydride/M +anhydrite/M +anhydrous/Y +Aniakchak/M +Ania/M +Anibal/M +Anica/M +aniline/SM +animadversion/SM +animadvert/DSG +animalcule/MS +animal/MYPS +animated/A +animatedly +animately/I +animateness/MI +animates/A +animate/YNGXDSP +animating/A +animation/AMS +animator/SM +animism/SM +animistic +animist/S +animized +animosity/MS +animus/SM +anionic/S +anion/MS +aniseed/MS +aniseikonic +anise/MS +anisette/SM +anisotropic +anisotropy/MS +Anissa/M +Anita/M +Anitra/M +Anjanette/M +Anjela/M +Ankara/M +ankh/M +ankhs +anklebone/SM +ankle/GMDS +anklet/MS +Annabal/M +Annabela/M +Annabella/M +Annabelle/M +Annabell/M +Annabel/M +Annadiana/M +Annadiane/M +Annalee/M +Annaliese/M +Annalise/M +annalist/MS +annal/MNS +Anna/M +Annamaria/M +Annamarie/M +Annapolis/M +Annapurna/M +anneal/DRSZG +annealer/M +Annecorinne/M +annelid/MS +Anneliese/M +Annelise/M +Anne/M +Annemarie/M +Annetta/M +Annette/M +annexation/SM +annexe/M +annex/GSD +Annice/M +Annie/M +annihilate/XSDVGN +annihilation/M +annihilator/MS +Anni/MS +Annissa/M +anniversary/MS +Ann/M +Annmaria/M +Annmarie/M +Annnora/M +Annora/M +annotated/U +annotate/VNGXSD +annotation/M +annotator/MS +announced/U +announcement/SM +announcer/M +announce/ZGLRSD +annoyance/MS +annoyer/M +annoying/Y +annoy/ZGSRD +annualized +annual/YS +annuitant/MS +annuity/MS +annular/YS +annuli +annulled +annulling +annulment/MS +annul/SL +annulus/M +annum +annunciate/XNGSD +annunciation/M +Annunciation/S +annunciator/SM +Anny/M +anode/SM +anodic +anodize/GDS +anodyne/SM +anoint/DRLGS +anointer/M +anointment/SM +anomalousness/M +anomalous/YP +anomaly/MS +anomic +anomie/M +anon/S +anonymity/MS +anonymousness/M +anonymous/YP +anopheles/M +anorak/SM +anorectic/S +anorexia/SM +anorexic/S +another/M +Anouilh/M +Ansell/M +Ansel/M +Anselma/M +Anselm/M +Anselmo/M +Anshan/M +ANSI/M +Ansley/M +ans/M +Anson/M +Anstice/M +answerable/U +answered/U +answerer/M +answer/MZGBSDR +antacid/MS +Antaeus/M +antagonism/MS +antagonistic +antagonistically +antagonist/MS +antagonized/U +antagonize/GZRSD +antagonizing/U +Antananarivo/M +antarctic +Antarctica/M +Antarctic/M +Antares +anteater/MS +antebellum +antecedence/MS +antecedent/SMY +antechamber/SM +antedate/GDS +antediluvian/S +anteing +antelope/MS +ante/MS +antenatal +antennae +antenna/MS +anterior/SY +anteroom/SM +ant/GSMD +Anthea/M +Anthe/M +anthem/MGDS +anther/MS +Anthia/M +Anthiathia/M +anthill/S +anthologist/MS +anthologize/GDS +anthology/SM +Anthony/M +anthraces +anthracite/MS +anthrax/M +anthropic +anthropocentric +anthropogenic +anthropoid/S +anthropological/Y +anthropologist/MS +anthropology/SM +anthropometric/S +anthropometry/M +anthropomorphic +anthropomorphically +anthropomorphism/SM +anthropomorphizing +anthropomorphous +antiabortion +antiabortionist/S +antiaircraft +antibacterial/S +antibiotic/SM +antibody/MS +anticancer +Antichrist/MS +anticipated/U +anticipate/XVGNSD +anticipation/M +anticipative/Y +anticipatory +anticked +anticking +anticlerical/S +anticlimactic +anticlimactically +anticlimax/SM +anticline/SM +anticlockwise +antic/MS +anticoagulant/S +anticoagulation/M +anticommunism/SM +anticommunist/SM +anticompetitive +anticyclone/MS +anticyclonic +antidemocratic +antidepressant/SM +antidisestablishmentarianism/M +antidote/DSMG +Antietam/M +antifascist/SM +antiformant +antifreeze/SM +antifundamentalist/M +antigenic +antigenicity/SM +antigen/MS +antigone +Antigone/M +Antigua/M +antiheroes +antihero/M +antihistamine/MS +antihistorical +antiknock/MS +antilabor +Antillean +Antilles +antilogarithm/SM +antilogs +antimacassar/SM +antimalarial/S +antimatter/SM +antimicrobial/S +antimissile/S +antimony/SM +anting/M +Antin/M +antinomian +antinomy/M +antinuclear +Antioch/M +antioxidant/MS +antiparticle/SM +Antipas/M +antipasti +antipasto/MS +antipathetic +antipathy/SM +antipersonnel +antiperspirant/MS +antiphonal/SY +antiphon/SM +antipodal/S +antipodean/S +antipode/MS +Antipodes +antipollution/S +antipoverty +antiquarianism/MS +antiquarian/MS +antiquary/SM +antiquate/NGSD +antiquation/M +antique/MGDS +antiquity/SM +antiredeposition +antiresonance/M +antiresonator +anti/S +antisemitic +antisemitism/M +antisepses +antisepsis/M +antiseptically +antiseptic/S +antiserum/SM +antislavery/S +antisocial/Y +antispasmodic/S +antisubmarine +antisymmetric +antisymmetry +antitank +antitheses +antithesis/M +antithetic +antithetical/Y +antithyroid +antitoxin/MS +antitrust/MR +antivenin/MS +antiviral/S +antivivisectionist/S +antiwar +antler/SDM +Antofagasta/M +Antoine/M +Antoinette/M +Antonella/M +Antone/M +Antonetta/M +Antonia/M +Antonie/M +Antonietta/M +Antoni/M +Antonina/M +Antonin/M +Antonino/M +Antoninus/M +Antonio/M +Antonius/M +Anton/MS +Antonovics/M +Antony/M +antonymous +antonym/SM +antral +antsy/RT +Antwan/M +Antwerp/M +Anubis/M +anus/SM +anvil/MDSG +anxiety/MS +anxiousness/SM +anxious/PY +any +Anya/M +anybody/S +anyhow +Any/M +anymore +anyone/MS +anyplace +anything/S +anytime +anyway/S +anywhere/S +anywise +AOL/M +aorta/MS +aortic +AP +apace +apache/MS +Apache/MS +Apalachicola/M +apartheid/SM +apart/LP +apartment/MS +apartness/M +apathetic +apathetically +apathy/SM +apatite/MS +APB +aped/A +apelike +ape/MDRSG +Apennines +aper/A +aperiodic +aperiodically +aperiodicity/M +aperitif/S +aperture/MDS +apex/MS +aphasia/SM +aphasic/S +aphelia +aphelion/SM +aphid/MS +aphonic +aphorism/MS +aphoristic +aphoristically +aphrodisiac/SM +Aphrodite/M +Apia/M +apiarist/SM +apiary/SM +apical/YS +apices's +apiece +apishness/M +apish/YP +aplenty +aplomb/SM +APO +Apocalypse/M +apocalypse/MS +apocalyptic +apocryphalness/M +apocryphal/YP +apocrypha/M +Apocrypha/M +apogee/MS +apolar +apolitical/Y +Apollinaire/M +Apollonian +Apollo/SM +apologetically/U +apologetic/S +apologetics/M +apologia/SM +apologist/MS +apologize/GZSRD +apologizer/M +apologizes/A +apologizing/U +apology/MS +apoplectic +apoplexy/SM +apostasy/SM +apostate/SM +apostatize/DSG +apostleship/SM +apostle/SM +apostolic +apostrophe/SM +apostrophized +apothecary/MS +apothegm/MS +apotheoses +apotheosis/M +apotheosized +apotheosizes +apotheosizing +Appalachia/M +Appalachian/MS +appalling/Y +appall/SDG +Appaloosa/MS +appaloosa/S +appanage/M +apparatus/SM +apparel/SGMD +apparency +apparently/I +apparentness/M +apparent/U +apparition/SM +appealer/M +appealing/UY +appeal/SGMDRZ +appear/AEGDS +appearance/AMES +appearer/S +appease/DSRGZL +appeased/U +appeasement/MS +appeaser/M +appellant/MS +appellate/VNX +appellation/M +appellative/MY +appendage/MS +appendectomy/SM +appendices +appendicitis/SM +appendix/SM +append/SGZDR +appertain/DSG +appetite/MVS +appetizer/SM +appetizing/YU +Appia/M +Appian/M +applauder/M +applaud/ZGSDR +applause/MS +applecart/M +applejack/MS +Apple/M +apple/MS +applesauce/SM +Appleseed/M +Appleton/M +applet/S +appliance/SM +applicabilities +applicability/IM +applicable/I +applicably +applicant/MS +applicate/V +application/MA +applicative/Y +applicator/MS +applier/SM +appliqud +appliqu/MSG +apply/AGSDXN +appointee/SM +appoint/ELSADG +appointer/MS +appointive +appointment/ASEM +Appolonia/M +Appomattox/M +apportion/GADLS +apportionment/SAM +appose/SDG +appositeness/MS +apposite/XYNVP +apposition/M +appositive/SY +appraisal/SAM +appraised/A +appraisees +appraiser/M +appraises/A +appraise/ZGDRS +appraising/Y +appreciable/I +appreciably/I +appreciated/U +appreciate/XDSNGV +appreciation/M +appreciativeness/MI +appreciative/PIY +appreciator/MS +appreciatory +apprehend/DRSG +apprehender/M +apprehensible +apprehension/SM +apprehensiveness/SM +apprehensive/YP +apprentice/DSGM +apprenticeship/SM +apprise/DSG +apprizer/SM +apprizingly +apprizings +approachability/UM +approachable/UI +approach/BRSDZG +approacher/M +approbate/NX +approbation/EMS +appropriable +appropriated/U +appropriately/I +appropriateness/SMI +appropriate/XDSGNVYTP +appropriation/M +appropriator/SM +approval/ESM +approve/DSREG +approved/U +approver's/E +approver/SM +approving/YE +approx +approximate/XGNVYDS +approximation/M +approximative/Y +appurtenance/MS +appurtenant/S +APR +apricot/MS +Aprilette/M +April/MS +Apr/M +apron/SDMG +apropos +apse/MS +apsis/M +apter +aptest +aptitude/SM +aptness/SMI +aptness's/U +apt/UPYI +Apuleius/M +aquaculture/MS +aqualung/SM +aquamarine/SM +aquanaut/SM +aquaplane/GSDM +aquarium/MS +Aquarius/MS +aqua/SM +aquatically +aquatic/S +aquavit/SM +aqueduct/MS +aqueous/Y +aquiculture's +aquifer/SM +Aquila/M +aquiline +Aquinas/M +Aquino/M +Aquitaine/M +AR +Arabela/M +Arabele/M +Arabella/M +Arabelle/M +Arabel/M +arabesque/SM +Arabia/M +Arabian/MS +Arabic/M +arability/MS +Arabist/MS +arable/S +Arab/MS +Araby/M +Araceli/M +arachnid/MS +arachnoid/M +arachnophobia +Arafat/M +Araguaya/M +Araldo/M +Aral/M +Ara/M +Aramaic/M +Aramco/M +Arapahoes +Arapahoe's +Arapaho/MS +Ararat/M +Araucanian/M +Arawakan/M +Arawak/M +arbiter/MS +arbitrage/GMZRSD +arbitrager/M +arbitrageur/S +arbitrament/MS +arbitrarily +arbitrariness/MS +arbitrary/P +arbitrate/SDXVNG +arbitration/M +arbitrator/SM +arbor/DMS +arboreal/Y +arbores +arboretum/MS +arborvitae/MS +arbutus/SM +ARC +arcade/SDMG +Arcadia/M +Arcadian +arcana/M +arcane/P +arc/DSGM +archaeological/Y +archaeologist/SM +archaically +archaic/P +Archaimbaud/M +archaism/SM +archaist/MS +archaize/GDRSZ +archaizer/M +Archambault/M +archangel/SM +archbishopric/SM +archbishop/SM +archdeacon/MS +archdiocesan +archdiocese/SM +archduchess/MS +archduke/MS +Archean +archenemy/SM +archeologist's +archeology/MS +archer/M +Archer/M +archery/MS +archetypal +archetype/SM +archfiend/SM +archfool +Archibald/M +Archibaldo/M +Archibold/M +Archie/M +archiepiscopal +Archimedes/M +arching/M +archipelago/SM +architect/MS +architectonic/S +architectonics/M +architectural/Y +architecture/SM +architrave/MS +archival +archive/DRSGMZ +archived/U +archivist/MS +Arch/MR +archness/MS +arch/PGVZTMYDSR +archway/SM +Archy/M +arclike +ARCO/M +arcsine +arctangent +Arctic/M +arctic/S +Arcturus/M +Ardabil +Arda/MH +Ardath/M +Ardeen/M +Ardelia/M +Ardelis/M +Ardella/M +Ardelle/M +ardency/M +Ardene/M +Ardenia/M +Arden/M +ardent/Y +Ardine/M +Ardisj/M +Ardis/M +Ardith/M +ardor/SM +Ardra/M +arduousness/SM +arduous/YP +Ardyce/M +Ardys +Ardyth/M +areal +area/SM +areawide +are/BS +Arel/M +arenaceous +arena/SM +aren't +Arequipa/M +Ares +Aretha/M +Argentina/M +Argentinean/S +Argentine/SM +Argentinian/S +argent/MS +arginine/MS +Argonaut/MS +argonaut/S +argon/MS +Argonne/M +Argo/SM +argosy/SM +argot/SM +arguable/IU +arguably/IU +argue/DSRGZ +arguer/M +argumentation/SM +argumentativeness/MS +argumentative/YP +argument/SM +Argus/M +argyle/S +Ariadne/M +Ariana/M +Arianism/M +Arianist/SM +aria/SM +Aridatha/M +aridity/SM +aridness/M +arid/TYRP +Ariela/M +Ariella/M +Arielle/M +Ariel/M +Arie/SM +Aries/S +aright +Ari/M +Arin/M +Ario/M +Ariosto/M +arise/GJSR +arisen +Aristarchus/M +Aristides +aristocracy/SM +aristocratic +aristocratically +aristocrat/MS +Aristophanes/M +Aristotelean +Aristotelian/M +Aristotle/M +arithmetical/Y +arithmetician/SM +arithmetic/MS +arithmetize/SD +Arius/M +Ariz/M +Arizona/M +Arizonan/S +Arizonian/S +Arjuna/M +Arkansan/MS +Arkansas/M +Arkhangelsk/M +Ark/M +ark/MS +Arkwright/M +Arlana/M +Arlan/M +Arlee/M +Arleen/M +Arlena/M +Arlene/M +Arlen/M +Arleta/M +Arlette/M +Arley/M +Arleyne/M +Arlie/M +Arliene/M +Arlina/M +Arlinda/M +Arline/M +Arlington/M +Arlin/M +Arluene/M +Arly/M +Arlyne/M +Arlyn/M +Armada/M +armada/SM +armadillo/MS +Armageddon/SM +Armagnac/M +armament/EAS +armament's/E +Armand/M +Armando/M +Arman/M +arm/ASEDG +Armata/M +armature/MGSD +armband/SM +armchair/MS +Armco/M +armed/U +Armenia/M +Armenian/MS +armer/MES +armful/SM +armhole/MS +arming/M +Arminius/M +Armin/M +armistice/MS +armless +armlet/SM +armload/M +Armonk/M +armored/U +armorer/M +armorial/S +armory/DSM +armor/ZRDMGS +Armour/M +armpit/MS +armrest/MS +arm's +Armstrong/M +Ar/MY +army/SM +Arnaldo/M +Arneb/M +Arne/M +Arney/M +Arnhem/M +Arnie/M +Arni/M +Arnold/M +Arnoldo/M +Arno/M +Arnuad/M +Arnulfo/M +Arny/M +aroma/SM +aromatherapist/S +aromatherapy/S +aromatically +aromaticity/M +aromaticness/M +aromatic/SP +Aron/M +arose +around +arousal/MS +aroused/U +arouse/GSD +ARPA/M +Arpanet/M +ARPANET/M +arpeggio/SM +arrack/M +Arragon/M +arraignment/MS +arraign/SDGL +arrangeable/A +arranged/EA +arrangement/AMSE +arranger/M +arranges/EA +arrange/ZDSRLG +arranging/EA +arrant/Y +arras/SM +arrayer +array/ESGMD +arrear/SM +arrest/ADSG +arrestee/MS +arrester/MS +arresting/Y +arrestor/MS +Arrhenius/M +arrhythmia/SM +arrhythmic +arrhythmical +Arri/M +arrival/MS +arriver/M +arrive/SRDG +arrogance/MS +arrogant/Y +arrogate/XNGDS +arrogation/M +Arron/M +arrowhead/SM +arrowroot/MS +arrow/SDMG +arroyo/MS +arr/TV +arsenal/MS +arsenate/M +arsenic/MS +arsenide/M +arsine/MS +arsonist/MS +arson/SM +Artair/M +Artaxerxes/M +artefact's +Arte/M +Artemas +Artemis/M +Artemus/M +arterial/SY +arteriolar +arteriole/SM +arterioscleroses +arteriosclerosis/M +artery/SM +artesian +artfulness/SM +artful/YP +Arther/M +arthritic/S +arthritides +arthritis/M +arthrogram/MS +arthropod/SM +arthroscope/S +arthroscopic +Arthurian +Arthur/M +artichoke/SM +article/GMDS +articulable/I +articular +articulated/EU +articulately/I +articulateness/IMS +articulates/I +articulate/VGNYXPSD +articulation/M +articulator/SM +articulatory +Artie/M +artifact/MS +artificer/M +artifice/ZRSM +artificiality/MS +artificialness/M +artificial/PY +artillerist +artilleryman/M +artillerymen +artillery/SM +artiness/MS +artisan/SM +artiste/SM +artistically/I +artistic/I +artist/MS +artistry/SM +artlessness/MS +artless/YP +Art/M +art/SM +artsy/RT +Artur/M +Arturo/M +Artus/M +artwork/MS +Arty/M +arty/TPR +Aruba/M +arum/MS +Arvie/M +Arvin/M +Arv/M +Arvy/M +Aryan/MS +Aryn/M +as +As +A's +Asa/M +Asama/M +asap +ASAP +asbestos/MS +Ascella/M +ascend/ADGS +ascendancy/MS +ascendant/SY +ascender/SM +Ascension/M +ascension/SM +ascent/SM +ascertain/DSBLG +ascertainment/MS +ascetically +asceticism/MS +ascetic/SM +ASCII +ascot/MS +ascribe/GSDB +ascription/MS +ascriptive +Ase/M +aseptically +aseptic/S +asexuality/MS +asexual/Y +Asgard/M +ashame/D +ashamed/UY +Ashanti/M +Ashbey/M +Ashby/M +ashcan/SM +Ashely/M +Asher/M +Asheville/M +Ashia/M +Ashien/M +Ashil/M +Ashkenazim +Ashkhabad/M +Ashla/M +Ashland/M +Ashlan/M +ashlar/GSDM +Ashlee/M +Ashleigh/M +Ashlen/M +Ashley/M +Ashlie/M +Ashli/M +Ashlin/M +Ashly/M +ashman/M +ash/MNDRSG +Ashmolean/M +Ash/MRY +ashore +ashram/SM +Ashton/M +ashtray/MS +Ashurbanipal/M +ashy/RT +Asia/M +Asian/MS +Asiatic/SM +aside/S +Asilomar/M +Asimov +asinine/Y +asininity/MS +askance +ask/DRZGS +asked/U +asker/M +askew/P +ASL +aslant +asleep +Asmara/M +asocial/S +Asoka/M +asparagus/MS +aspartame/S +ASPCA +aspect/SM +Aspell/M +aspen/M +Aspen/M +asperity/SM +asper/M +aspersion/SM +asphalt/MDRSG +asphodel/MS +asphyxia/MS +asphyxiate/GNXSD +asphyxiation/M +aspic/MS +Aspidiske/M +aspidistra/MS +aspirant/MS +aspirate/NGDSX +aspirational +aspiration/M +aspirator/SM +aspire/GSRD +aspirer/M +aspirin/SM +asplenium +asp/MNRXS +Asquith/M +Assad/M +assailable/U +assailant/SM +assail/BGDS +Assamese/M +Assam/M +assassinate/DSGNX +assassination/M +assassin/MS +assaulter/M +assaultive/YP +assault/SGVMDR +assayer/M +assay/SZGRD +assemblage/MS +assemble/ADSREG +assembled/U +assembler/EMS +assemblies/A +assembly/EAM +assemblyman/M +assemblymen +Assembly/MS +assemblywoman +assemblywomen +assent/SGMRD +assert/ADGS +asserter/MS +assertional +assertion/AMS +assertiveness/SM +assertive/PY +assess/BLSDG +assessed/A +assesses/A +assessment/SAM +assessor/MS +asset/SM +asseverate/XSDNG +asseveration/M +asshole/MS! +assiduity/SM +assiduousness/SM +assiduous/PY +assign/ALBSGD +assignation/MS +assigned/U +assignee/MS +assigner/MS +assignment/MAS +assignor/MS +assigns/CU +assimilate/VNGXSD +assimilationist/M +assimilation/M +Assisi/M +assistance/SM +assistantship/SM +assistant/SM +assisted/U +assister/M +assist/RDGS +assize/MGSD +ass/MNS +assn +assoc +associable +associated/U +associate/SDEXNG +associateship +associational +association/ME +associative/Y +associativity/S +associator/MS +assonance/SM +assonant/S +assorter/M +assort/LRDSG +assortment/SM +asst +assuaged/U +assuage/SDG +assumability +assumer/M +assume/SRDBJG +assuming/UA +assumption/SM +assumptive +assurance/AMS +assure/AGSD +assuredness/M +assured/PYS +assurer/SM +assuring/YA +Assyria/M +Assyrian/SM +Assyriology/M +Astaire/SM +Astarte/M +astatine/MS +aster/ESM +asteria +asterisked/U +asterisk/SGMD +astern +asteroidal +asteroid/SM +asthma/MS +asthmatic/S +astigmatic/S +astigmatism/SM +astir +astonish/GSDL +astonishing/Y +astonishment/SM +Aston/M +Astoria/M +Astor/M +astounding/Y +astound/SDG +astraddle +Astrakhan/M +astrakhan/SM +astral/SY +Astra/M +astray +astride +Astrid/M +astringency/SM +astringent/YS +Astrix/M +astrolabe/MS +astrologer/MS +astrological/Y +astrologist/M +astrology/SM +astronautical +astronautic/S +astronautics/M +astronaut/SM +astronomer/MS +astronomic +astronomical/Y +astronomy/SM +astrophysical +astrophysicist/SM +astrophysics/M +Astroturf/M +AstroTurf/S +Asturias/M +astuteness/MS +astute/RTYP +Asuncin/M +asunder +Aswan/M +asylum/MS +asymmetric +asymmetrical/Y +asymmetry/MS +asymptomatic +asymptomatically +asymptote/MS +asymptotically +asymptotic/Y +asynchronism/M +asynchronous/Y +asynchrony +at +Atacama/M +Atahualpa/M +Atalanta/M +Atari/M +Atatrk/M +atavism/MS +atavistic +atavist/MS +ataxia/MS +ataxic/S +atelier/SM +atemporal +ate/S +Athabasca/M +Athabascan's +Athabaskan/MS +Athabaska's +atheism/SM +atheistic +atheist/SM +Athena/M +Athene/M +Athenian/SM +Athens/M +atheroscleroses +atherosclerosis/M +athirst +athlete/MS +athletically +athleticism/M +athletic/S +athletics/M +athwart +atilt +Atkins/M +Atkinson/M +Atlanta/M +Atlante/MS +atlantes +Atlantic/M +Atlantis/M +atlas/SM +Atlas/SM +At/M +Atman +ATM/M +atmosphere/DSM +atmospherically +atmospheric/S +atoll/MS +atomically +atomicity/M +atomic/S +atomics/M +atomistic +atomization/SM +atomize/GZDRS +atomizer/M +atom/SM +atonality/MS +atonal/Y +atone/LDSG +atonement/SM +atop +ATP +Atreus/M +atria +atrial +Atria/M +atrium/M +atrociousness/SM +atrocious/YP +atrocity/SM +atrophic +atrophy/DSGM +atropine/SM +Atropos/M +Ats +attach/BLGZMDRS +attached/UA +attacher/M +attach/S +attachment/ASM +attacker/M +attack/GBZSDR +attainabilities +attainability/UM +attainableness/M +attainable/U +attainably/U +attain/AGSD +attainder/MS +attained/U +attainer/MS +attainment/MS +attar/MS +attempt/ADSG +attempter/MS +attendance/MS +attendant/SM +attended/U +attendee/SM +attender/M +attend/SGZDR +attentional +attentionality +attention/IMS +attentiveness/IMS +attentive/YIP +attenuated/U +attenuate/SDXGN +attenuation/M +attenuator/MS +attestation/SM +attested/U +attester/M +attest/GSDR +Attic +Attica/M +attic/MS +Attila/M +attire/SDG +attitude/MS +attitudinal/Y +attitudinize/SDG +Attlee/M +attn +Attn +attorney/SM +attractant/SM +attract/BSDGV +attraction/MS +attractivenesses +attractiveness/UM +attractive/UYP +attractor/MS +attributable/U +attribute/BVNGRSDX +attributed/U +attributer/M +attributional +attribution/M +attributive/SY +attrition/MS +Attucks +attune/SDG +atty +ATV/S +atwitter +Atwood/M +atypical/Y +Aube/M +Auberge/M +aubergine/MS +Auberon/M +Auberta/M +Aubert/M +Aubine/M +Aubree/M +Aubrette/M +Aubrey/M +Aubrie/M +Aubry/M +auburn/SM +Auckland/M +auctioneer/SDMG +auction/MDSG +audaciousness/SM +audacious/PY +audacity/MS +Auden/M +audibility/MSI +audible/I +audibles +audibly/I +Audie/M +audience/MS +Audi/M +audiogram/SM +audiological +audiologist/MS +audiology/SM +audiometer/MS +audiometric +audiometry/M +audiophile/SM +audio/SM +audiotape/S +audiovisual/S +audited/U +audition/MDSG +auditorium/MS +auditor/MS +auditory/S +audit/SMDVG +Audra/M +Audre/M +Audrey/M +Audrie/M +Audrye/M +Audry/M +Audubon/M +Audy/M +Auerbach/M +Augean +auger/SM +aught/S +Augie/M +Aug/M +augmentation/SM +augmentative/S +augment/DRZGS +augmenter/M +augur/GDMS +augury/SM +Augusta/M +Augustan/S +Auguste/M +Augustina/M +Augustine/M +Augustinian/S +Augustin/M +augustness/SM +Augusto/M +August/SM +august/STPYR +Augustus/M +Augy/M +auk/MS +Au/M +Aundrea/M +auntie/MS +aunt/MYS +aunty's +aural/Y +Aura/M +aura/SM +Aurea/M +Aurelea/M +Aurelia/M +Aurelie/M +Aurelio/M +Aurelius/M +Aurel/M +aureole/GMSD +aureomycin +Aureomycin/M +Auria/M +auric +auricle/SM +auricular +Aurie/M +Auriga/M +Aurilia/M +Aurlie/M +Auroora/M +auroral +Aurora/M +aurora/SM +Aurore/M +Aurthur/M +Auschwitz/M +auscultate/XDSNG +auscultation/M +auspice/SM +auspicious/IPY +auspiciousnesses +auspiciousness/IM +Aussie/MS +Austen/M +austereness/M +austere/TYRP +austerity/SM +Austina/M +Austine/M +Austin/SM +austral +Australasia/M +Australasian/S +australes +Australia/M +Australian/MS +Australis/M +australites +Australoid +Australopithecus/M +Austria/M +Austrian/SM +Austronesian +authentically +authenticated/U +authenticate/GNDSX +authentication/M +authenticator/MS +authenticity/MS +authentic/UI +author/DMGS +authoress/S +authorial +authoritarianism/MS +authoritarian/S +authoritativeness/SM +authoritative/PY +authority/SM +authorization/MAS +authorize/AGDS +authorized/U +authorizer/SM +authorizes/U +authorship/MS +autism/MS +autistic/S +autobahn/MS +autobiographer/MS +autobiographic +autobiographical/Y +autobiography/MS +autoclave/SDGM +autocollimator/M +autocorrelate/GNSDX +autocorrelation/M +autocracy/SM +autocratic +autocratically +autocrat/SM +autodial/R +autodidact/MS +autofluorescence +autograph/MDG +autographs +autoignition/M +autoimmune +autoimmunity/S +autoloader +automaker/S +automata's +automate/NGDSX +automatically +automatic/S +automation/M +automatism/SM +automatize/DSG +automaton/SM +automobile/GDSM +automorphism/SM +automotive +autonavigator/SM +autonomic/S +autonomous/Y +autonomy/MS +autopilot/SM +autopsy/MDSG +autoregressive +autorepeat/GS +auto/SDMG +autostart +autosuggestibility/M +autotransformer/M +autoworker/S +autumnal/Y +Autumn/M +autumn/MS +aux +auxiliary/S +auxin/MS +AV +availability/USM +availableness/M +available/U +availably +avail/BSZGRD +availing/U +avalanche/MGSD +Avalon/M +Ava/M +avant +avarice/SM +avariciousness/M +avaricious/PY +avast/S +avatar/MS +avaunt/S +avdp +Aveline/M +Ave/MS +avenged/U +avenger/M +avenge/ZGSRD +Aventine/M +Aventino/M +avenue/MS +average/DSPGYM +Averell/M +Averill/M +Averil/M +Avernus/M +averred +averrer +averring +Averroes/M +averseness/M +averse/YNXP +aversion/M +avers/V +avert/GSD +Averyl/M +Avery/M +ave/S +aves/C +Avesta/M +avg +avian/S +aviary/SM +aviate/NX +aviation/M +aviator/SM +aviatrices +aviatrix/SM +Avicenna/M +Avictor/M +avidity/MS +avid/TPYR +Avie/M +Avigdor/M +Avignon/M +Avila/M +avionic/S +avionics/M +Avior/M +Avis +avitaminoses +avitaminosis/M +Avivah/M +Aviva/M +Aviv/M +avocado/MS +avocational +avocation/SM +Avogadro/M +avoidable/U +avoidably/U +avoidance/SM +avoider/M +avoid/ZRDBGS +avoirdupois/MS +Avon/M +avouch/GDS +avowal/EMS +avowed/Y +avower/M +avow/GEDS +Avram/M +Avril/M +Avrit/M +Avrom/M +avuncular +av/ZR +AWACS +await/SDG +awake/GS +awakened/U +awakener/M +awakening/S +awaken/SADG +awarder/M +award/RDSZG +awareness/MSU +aware/TRP +awash +away/PS +aweigh +awe/SM +awesomeness/SM +awesome/PY +awestruck +awfuller +awfullest +awfulness/SM +awful/YP +aw/GD +awhile/S +awkwardness/MS +awkward/PRYT +awl/MS +awning/DM +awn/MDJGS +awoke +awoken +AWOL +awry/RT +ax/DRSZGM +axehead/S +Axel/M +Axe/M +axeman +axial/Y +axillary +axiological/Y +axiology/M +axiomatically +axiomatic/S +axiomatization/MS +axiomatize/GDS +axiom/SM +axion/SM +axis/SM +axle/MS +axletree/MS +Ax/M +axolotl/SM +axon/SM +ayah/M +ayahs +Ayala/M +ayatollah +ayatollahs +aye/MZRS +Ayers +Aylmar/M +Aylmer/M +Aymara/M +Aymer/M +Ayn/M +AZ +azalea/SM +Azania/M +Azazel/M +Azerbaijan/M +azimuthal/Y +azimuth/M +azimuths +Azores +Azov/M +AZT +Aztecan +Aztec/MS +azure/MS +BA +Baal/SM +baa/SDG +Babara/M +Babar's +Babbage/M +Babbette/M +Babbie/M +babbitt/GDS +Babbitt/M +babbler/M +babble/RSDGZ +Babb/M +Babcock/M +Babel/MS +babel/S +babe/SM +Babette/M +Babita/M +Babka/M +baboon/MS +Bab/SM +babushka/MS +babyhood/MS +babyish +Babylonia/M +Babylonian/SM +Babylon/MS +babysat +babysit/S +babysitter/S +babysitting +baby/TDSRMG +Bacall/M +Bacardi/M +baccalaureate/MS +baccarat/SM +bacchanalia +Bacchanalia/M +bacchanalian/S +bacchanal/SM +Bacchic +Bacchus/M +bachelorhood/SM +bachelor/SM +Bach/M +bacillary +bacilli +bacillus/MS +backache/SM +backarrow +backbencher/M +backbench/ZR +backbiter/M +backbite/S +backbitten +backbit/ZGJR +backboard/SM +backbone/SM +backbreaking +backchaining +backcloth/M +backdate/GDS +backdrop/MS +backdropped +backdropping +backed/U +backer/M +backfield/SM +backfill/SDG +backfire/GDS +backgammon/MS +background/SDRMZG +back/GZDRMSJ +backhanded/Y +backhander/M +backhand/RDMSZG +backhoe/S +backing/M +backlash/GRSDM +backless +backlogged +backlogging +backlog/MS +backorder +backpacker/M +backpack/ZGSMRD +backpedal/DGS +backplane/MS +backplate/SM +backrest/MS +backscatter/SMDG +backseat/S +backside/SM +backslapper/MS +backslapping/M +backslash/DSG +backslider/M +backslide/S +backslid/RZG +backspace/GSD +backspin/SM +backstabber/M +backstabbing +backstage +backstair/S +backstitch/GDSM +backstop/MS +backstopped +backstopping +backstreet/M +backstretch/SM +backstroke/GMDS +backtalk/S +backtrack/SDRGZ +backup/SM +Backus/M +backwardness/MS +backward/YSP +backwash/SDMG +backwater/SM +backwood/S +backwoodsman/M +backwoodsmen +backyard/MS +baconer/M +Bacon/M +bacon/SRM +bacterial/Y +bacteria/MS +bactericidal +bactericide/SM +bacteriologic +bacteriological +bacteriologist/MS +bacteriology/SM +bacterium/M +Bactria/M +badder +baddest +baddie/MS +bade +Baden/M +badge/DSRGMZ +badger/DMG +badinage/DSMG +badland/S +Badlands/M +badman/M +badmen +badminton/MS +badmouth/DG +badmouths +badness/SM +bad/PSNY +Baedeker/SM +Baez/M +Baffin/M +bafflement/MS +baffler/M +baffle/RSDGZL +baffling/Y +bagatelle/MS +bagel/SM +bagful/MS +baggageman +baggagemen +baggage/SM +bagged/M +bagger/SM +baggily +bagginess/MS +bagging/M +baggy/PRST +Baghdad/M +bagpiper/M +bagpipe/RSMZ +Bagrodia/MS +bag/SM +baguette/SM +Baguio/M +bah +Baha'i +Bahama/MS +Bahamanian/S +Bahamian/MS +Baha'ullah +Bahia/M +Bahrain/M +bahs +Baikal/M +Bailey/SM +bail/GSMYDRB +Bailie/M +bailiff/SM +bailiwick/MS +Baillie/M +Bail/M +bailout/MS +bailsman/M +bailsmen +Baily/M +Baird/M +bairn/SM +baiter/M +bait/GSMDR +baize/GMDS +Baja/M +baked/U +bakehouse/M +Bakelite/M +baker/M +Baker/M +Bakersfield/M +bakery/SM +bakeshop/S +bake/ZGJDRS +baking/M +baklava/M +baksheesh/SM +Baku/M +Bakunin/M +balaclava/MS +balalaika/MS +balanced/A +balancedness +balancer/MS +balance's +balance/USDG +Balanchine/M +Balboa/M +balboa/SM +balcony/MSD +balderdash/MS +Balder/M +baldfaced +Bald/MR +baldness/MS +bald/PYDRGST +baldric/SM +Balduin/M +Baldwin/M +baldy +Balearic/M +baleen/MS +balefuller +balefullest +balefulness/MS +baleful/YP +Bale/M +bale/MZGDRS +baler/M +Balfour/M +Bali/M +Balinese +balkanization +balkanize/DG +Balkan/SM +balker/M +balk/GDRS +Balkhash/M +balkiness/M +balky/PRT +balladeer/MS +ballade/MS +balladry/MS +ballad/SM +Ballard/SM +ballast/SGMD +ballcock/S +ballerina/MS +baller/M +balletic +ballet/MS +ballfields +ballgame/S +ball/GZMSDR +ballistic/S +ballistics/M +Ball/M +balloonist/S +balloon/RDMZGS +balloter/M +ballot/MRDGS +ballpark/SM +ballplayer/SM +ballpoint/SM +ballroom/SM +ballsy/TR +ballyhoo/SGMD +balminess/SM +balm/MS +balmy/PRT +baloney/SM +balsam/GMDS +balsamic +balsa/MS +Balthazar/M +Baltic/M +Baltimore/M +Baluchistan/M +baluster/MS +balustrade/SM +Balzac/M +Ba/M +Bamako/M +Bamberger/M +Bambie/M +Bambi/M +bamboo/SM +bamboozle/GSD +Bamby/M +Banach/M +banality/MS +banal/TYR +banana/SM +Bancroft/M +bandager/M +bandage/RSDMG +bandanna/SM +bandbox/MS +bandeau/M +bandeaux +band/EDGS +bander/M +banding/M +bandit/MS +banditry/MS +bandmaster/MS +bandoleer/SM +bandpass +band's +bandsman/M +bandsmen +bandstand/SM +bandstop +Bandung/M +bandwagon/MS +bandwidth/M +bandwidths +bandy/TGRSD +banefuller +banefullest +baneful/Y +bane/MS +Bangalore/M +banger/M +bang/GDRZMS +bangkok +Bangkok/M +Bangladeshi/S +Bangladesh/M +bangle/MS +Bangor/M +Bangui/M +bani +banisher/M +banishment/MS +banish/RSDGL +banister/MS +Banjarmasin/M +banjoist/SM +banjo/MS +Banjul/M +bankbook/SM +bankcard/S +banker/M +bank/GZJDRMBS +banking/M +Bank/MS +banknote/S +bankroll/DMSG +bankruptcy/MS +bankrupt/DMGS +Banky/M +Ban/M +banned/U +Banneker/M +banner/SDMG +banning/U +Bannister/M +bannister's +bannock/SM +banns +banqueter/M +banquet/SZGJMRD +banquette/MS +ban/SGMD +banshee/MS +bans/U +bantam/MS +bantamweight/MS +banterer/M +bantering/Y +banter/RDSG +Banting/M +Bantu/SM +banyan/MS +banzai/S +baobab/SM +Baotou/M +baptismal/Y +baptism/SM +Baptiste/M +baptistery/MS +baptist/MS +Baptist/MS +baptistry's +baptized/U +baptizer/M +baptize/SRDZG +baptizes/U +Barabbas/M +Barbabas/M +Barbabra/M +Barbadian/S +Barbados/M +Barbaraanne/M +Barbara/M +Barbarella/M +barbarianism/MS +barbarian/MS +barbaric +barbarically +barbarism/MS +barbarity/SM +barbarize/SDG +Barbarossa/M +barbarousness/M +barbarous/PY +Barbary/M +barb/DRMSGZ +barbecue/DRSMG +barbed/P +Barbee/M +barbell/SM +barbel/MS +Barbe/M +barbeque's +barber/DMG +barbered/U +Barber/M +barberry/MS +barbershop/MS +Barbette/M +Barbey/M +Barbie/M +Barbi/M +barbital/M +barbiturate/MS +Barbour/M +Barbra/M +Barb/RM +Barbuda/M +barbwire/SM +Barby/M +barcarole/SM +Barcelona/M +Barclay/M +Bardeen/M +Barde/M +bardic +Bard/M +bard/MDSG +bareback/D +barefacedness/M +barefaced/YP +barefoot/D +barehanded +bareheaded +barelegged +bareness/MS +Barents/M +bare/YSP +barfly/SM +barf/YDSG +bargainer/M +bargain/ZGSDRM +barge/DSGM +bargeman/M +bargemen +bargepole/M +barhopped +barhopping +barhop/S +Bari/M +baritone/MS +barium/MS +barked/C +barkeeper/M +barkeep/SRZ +barker/M +Barker/M +bark/GZDRMS +Barkley/M +barks/C +barleycorn/MS +barley/MS +Barlow/M +barmaid/SM +barman/M +barmen +Bar/MH +Barnabas +Barnabe/M +Barnaby/M +barnacle/MDS +Barnard/M +Barnaul/M +Barnebas/M +Barnes +Barnett/M +Barney/M +barnful +barn/GDSM +Barnhard/M +Barnie/M +Barn/M +barnsful +barnstorm/DRGZS +barnstormer/M +Barnum/M +barnyard/MS +Barny/M +Baroda/M +barometer/MS +barometric +barometrically +baronage/MS +baroness/MS +baronetcy/SM +baronet/MS +baronial +Baron/M +baron/SM +barony/SM +baroque/SPMY +barque's +Barquisimeto/M +barracker/M +barrack/SDRG +barracuda/MS +barrage/MGSD +Barranquilla/M +barred/ECU +barre/GMDSJ +barrel/SGMD +barrenness/SM +barren/SPRT +Barrera/M +Barret/M +barrette/SM +Barrett/M +barricade/SDMG +Barrie/M +barrier/MS +barring/R +barrio/SM +Barri/SM +barrister/MS +Barr/M +Barron/M +barroom/SM +barrow/MS +Barry/M +Barrymore/MS +bars/ECU +barstool/SM +Barstow/M +Bartel/M +bartender/M +bartend/ZR +barterer/M +barter/SRDZG +bar/TGMDRS +Barthel/M +Barth/M +Bartholdi/M +Bartholemy/M +Bartholomeo/M +Bartholomeus/M +Bartholomew/M +Bartie/M +Bartlet/M +Bartlett/M +Bart/M +Bartk/M +Bartolemo/M +Bartolomeo/M +Barton/M +Bartram/M +Barty/M +barycenter +barycentre's +barycentric +Bary/M +baryon/SM +Baryram/M +Baryshnikov/M +basaltic +basalt/SM +basal/Y +Bascom/M +bas/DRSTG +baseball/MS +baseband +baseboard/MS +base/CGRSDL +baseless +baseline/SM +Basel/M +basely +Base/M +baseman/M +basemen +basement/CSM +baseness/MS +baseplate/M +base's +basetting +bashfulness/MS +bashful/PY +bash/JGDSR +Basho/M +Basia/M +BASIC +basically +basic/S +Basie/M +basilar +Basile/M +basilica/SM +Basilio/M +basilisk/SM +Basilius/M +Basil/M +basil/MS +basin/DMS +basinful/S +basis/M +basketball/MS +basketry/MS +basket/SM +basketwork/SM +bask/GSD +basophilic +Basque/SM +Basra/M +Basseterre/M +basset/GMDS +Bassett/M +bassinet/SM +bassist/MS +Bass/M +basso/MS +bassoonist/MS +bassoon/MS +bass/SM +basswood/SM +bastardization/MS +bastardized/U +bastardize/SDG +bastard/MYS +bastardy/MS +baste/NXS +baster/M +Bastian/M +Bastien/M +Bastille/M +basting/M +bastion/DM +bast/SGZMDR +Basutoland/M +Bataan/M +Batavia/M +batch/MRSDG +bated/U +bate/KGSADC +bater/AC +Bates +bathe +bather/M +bathetic +bathhouse/SM +bath/JMDSRGZ +bathmat/S +Batholomew/M +bathos/SM +bathrobe/MS +bathroom/SDM +baths +Bathsheba/M +bathtub/MS +bathwater +bathyscaphe's +bathysphere/MS +batik/DMSG +Batista/M +batiste/SM +Bat/M +batman/M +Batman/M +batmen +baton/SM +Batsheva/M +batsman/M +bat/SMDRG +batsmen +battalion/MS +batted +batten/SDMG +batter/SRDZG +battery/MS +batting/MS +battledore/MS +battledress +battlefield/SM +battlefront/SM +battle/GMZRSDL +battleground/SM +Battle/M +battlement/SMD +battler/M +battleship/MS +batty/RT +Batu/M +batwings +bauble/SM +Baudelaire/M +baud/M +Baudoin/M +Baudouin/M +Bauer/M +Bauhaus/M +baulk/GSDM +Bausch/M +bauxite/SM +Bavaria/M +Bavarian/S +bawdily +bawdiness/MS +bawd/SM +bawdy/PRST +bawler/M +bawl/SGDR +Baxie/M +Bax/M +Baxter/M +Baxy/M +Bayamon +Bayard/M +bayberry/MS +Bayda/M +Bayer/M +Bayes +Bayesian +bay/GSMDY +Baylor/M +Bay/MR +bayonet/SGMD +Bayonne/M +bayou/MS +Bayreuth/M +bazaar/MS +bazillion/S +bazooka/MS +BB +BBB +BBC +bbl +BBQ +BBS +BC +BCD +bdrm +beachcomber/SM +beachhead/SM +Beach/M +beach/MSDG +beachwear/M +beacon/DMSG +beading/M +Beadle/M +beadle/SM +bead/SJGMD +beadsman/M +beadworker +beady/TR +beagle/SDGM +beaker/M +beak/ZSDRM +Beale/M +Bealle/M +Bea/M +beam/MDRSGZ +beanbag/SM +bean/DRMGZS +beanie/SM +Bean/M +beanpole/MS +beanstalk/SM +bearable/U +bearably/U +beard/DSGM +bearded/P +beardless +Beard/M +Beardmore/M +Beardsley/M +bearer/M +bearing/M +bearishness/SM +bearish/PY +bearlike +Bear/M +Bearnaise/M +Bearnard/M +bearskin/MS +bear/ZBRSJG +Beasley/M +beasties +beastings/M +beastliness/MS +beastly/PTR +beast/SJMY +beatable/U +beatably/U +beaten/U +beater/M +beatific +beatifically +beatification/M +beatify/GNXDS +beating/M +beatitude/MS +Beatlemania/M +Beatles/M +beatnik/SM +beat/NRGSBZJ +Beatrice/M +Beatrisa/M +Beatrix/M +Beatriz/M +Beauchamps +Beaufort/M +Beaujolais/M +Beau/M +Beaumarchais/M +Beaumont/M +beau/MS +Beauregard/M +beauteousness/M +beauteous/YP +beautician/MS +beautification/M +beautifier/M +beautifully/U +beautifulness/M +beautiful/PTYR +beautify/SRDNGXZ +beaut/SM +beauty/SM +Beauvoir/M +beaux's +beaver/DMSG +Beaverton/M +Bebe/M +bebop/MS +becalm/GDS +became +because +Becca/M +Bechtel/M +Becka/M +Becker/M +Becket/M +Beckett/M +beck/GSDM +Beckie/M +Becki/M +beckon/SDG +Beck/RM +Becky/M +becloud/SGD +become/GJS +becoming/UY +Becquerel/M +bedaub/GDS +bedazzle/GLDS +bedazzlement/SM +bedbug/SM +bedchamber/M +bedclothes +bedded +bedder/MS +bedding/MS +bedeck/DGS +Bede/M +bedevil/DGLS +bedevilment/SM +bedfast +bedfellow/MS +Bedford/M +bedimmed +bedimming +bedim/S +bedizen/DGS +bedlam/MS +bedlinen +bedmaker/SM +bedmate/MS +bed/MS +Bedouin/SM +bedpan/SM +bedpost/SM +bedraggle/GSD +bedridden +bedrock/SM +bedroll/SM +bedroom/DMS +bedsheets +bedside/MS +bedsit +bedsitter/M +bedsore/MS +bedspread/SM +bedspring/SM +bedstead/SM +bedstraw/M +bedtime/SM +Beebe/M +beebread/MS +Beecher/M +beech/MRSN +beechnut/MS +beechwood +beefburger/SM +beefcake/MS +beef/GZSDRM +beefiness/MS +beefsteak/MS +beefy/TRP +beehive/MS +beekeeper/MS +beekeeping/SM +beeline/MGSD +Beelzebub/M +Bee/M +bee/MZGJRS +been/S +beeper/M +beep/GZSMDR +Beerbohm/M +beer/M +beermat/S +beery/TR +beeswax/DSMG +Beethoven/M +beetle/GMRSD +Beeton/M +beetroot/M +beet/SM +beeves/M +befall/SGN +befell +befit/SM +befitted +befitting/Y +befogged +befogging +befog/S +before +beforehand +befoul/GSD +befriend/DGS +befuddle/GLDS +befuddlement/SM +began +beget/S +begetting +beggar/DYMSG +beggarliness/M +beggarly/P +beggary/MS +begged +begging +Begin/M +beginner/MS +beginning/MS +begin/S +begone/S +begonia/SM +begot +begotten +begrime/SDG +begrudge/GDRS +begrudging/Y +beg/S +beguilement/SM +beguiler/M +beguile/RSDLZG +beguiling/Y +beguine/SM +begum/MS +begun +behalf/M +behalves +Behan/M +behave/GRSD +behavioral/Y +behaviorism/MS +behavioristic/S +behaviorist/S +behavior/SMD +behead/GSD +beheld +behemoth/M +behemoths +behest/SM +behindhand +behind/S +beholder/M +behold/ZGRNS +behoofs +behoove/SDJMG +behooving/YM +Behring/M +Beiderbecke/M +beige/MS +Beijing +Beilul/M +being/M +Beirut/M +Beitris/M +bejewel/SDG +Bekesy/M +Bekki/M +be/KS +belabor/MDSG +Bela/M +Belarus +belate/D +belatedness/M +belated/PY +Belau/M +belay/GSD +belch/GSD +beleaguer/GDS +Belem/M +Belfast/M +belfry/SM +Belgian/MS +Belgium/M +Belg/M +Belgrade/M +Belia/M +Belicia/M +belie +belief/ESUM +belier/M +believability's +believability/U +believable/U +believably/U +believed/U +believe/EZGDRS +believer/MUSE +believing/U +Belinda/M +Belita/M +belittlement/MS +belittler/M +belittle/RSDGL +Belize/M +belladonna/MS +Bella/M +Bellamy/M +Bellanca/M +Bellatrix/M +bellboy/MS +belled/A +Belle/M +belle/MS +belletristic +belletrist/SM +Belleville/M +bellflower/M +bell/GSMD +bellhop/MS +bellicoseness/M +bellicose/YP +bellicosity/MS +belligerence/SM +belligerency/MS +belligerent/SMY +Bellina/M +belling/A +Bellini/M +Bell/M +bellman/M +bellmen +Bellovin/M +bellow/DGS +Bellow/M +bellows/M +bells/A +bellwether/MS +Bellwood/M +bellyacher/M +bellyache/SRDGM +bellybutton/MS +bellyfull +bellyful/MS +belly/SDGM +Bel/M +Belmont/M +Belmopan/M +Beloit/M +belong/DGJS +belonging/MP +Belorussian/S +Belorussia's +belove/D +beloved/S +below/S +Belshazzar/M +belted/U +belt/GSMD +belting/M +Belton/M +Beltran/M +Beltsville/M +beltway/SM +beluga/SM +Belushi/M +Belva/M +belvedere/M +Belvia/M +bely/DSRG +beman +Be/MH +bemire/SDG +bemoan/GDS +bemused/Y +bemuse/GSDL +bemusement/SM +Benacerraf/M +Benares's +bencher/M +benchmark/GDMS +bench/MRSDG +bend/BUSG +bended +Bender/M +bender/MS +Bendick/M +Bendicty/M +Bendite/M +Bendix/M +beneath +Benedetta/M +Benedetto/M +Benedick/M +Benedicta/M +Benedictine/MS +benediction/MS +Benedict/M +Benedicto/M +benedictory +Benedikta/M +Benedikt/M +benefaction/MS +benefactor/MS +benefactress/S +benefice/MGSD +beneficence/SM +beneficent/Y +beneficialness/M +beneficial/PY +beneficiary/MS +benefiter/M +benefit/SRDMZG +Benelux/M +Benet/M +Benetta/M +Benetton/M +benevolence/SM +benevolentness/M +benevolent/YP +Bengali/M +Bengal/SM +Benghazi/M +Bengt/M +Beniamino/M +benightedness/M +benighted/YP +benignant +benignity/MS +benign/Y +Beninese +Benin/M +Benita/M +Benito/M +Benjamen/M +Benjamin/M +Benjie/M +Benji/M +Benjy/M +Ben/M +Bennett/M +Bennie/M +Benni/M +Bennington/M +Benn/M +Benny/M +Benoite/M +Benoit/M +Benson/M +Bentham/M +Bentlee/M +Bentley/MS +Bent/M +Benton/M +bents +bent/U +bentwood/SM +benumb/SGD +Benyamin/M +Benzedrine/M +benzene/MS +benzine/SM +Benz/M +Beograd's +Beowulf/M +bequeath/GSD +bequeaths +bequest/MS +berate/GSD +Berber/MS +bereave/GLSD +bereavement/MS +bereft +Berenice/M +Beret/M +beret/SM +Bergen/M +Bergerac/M +Berger/M +Berget/M +Berglund/M +Bergman/M +Berg/NRM +berg/NRSM +Bergson/M +Bergsten/M +Bergstrom/M +beribbon/D +beriberi/SM +Beringer/M +Bering/RM +Berkeley/M +berkelium/SM +Berke/M +Berkie/M +Berkley/M +Berkly/M +Berkowitz/M +Berkshire/SM +Berky/M +Berk/YM +Berle/M +Berliner/M +Berlin/SZRM +Berlioz/M +Berlitz/M +Berman/M +Ber/MG +berm/SM +Bermuda/MS +Bermudan/S +Bermudian/S +Bernadene/M +Bernadette/M +Bernadina/M +Bernadine/M +Berna/M +Bernardina/M +Bernardine/M +Bernardino/M +Bernard/M +Bernardo/M +Bernarr/M +Bernays/M +Bernbach/M +Bernelle/M +Berne's +Bernese +Bernete/M +Bernetta/M +Bernette/M +Bernhard/M +Bernhardt/M +Bernice/M +Berniece/M +Bernie/M +Berni/M +Bernini/M +Bernita/M +Bern/M +Bernoulli/M +Bernstein/M +Berny/M +Berra/M +Berrie/M +Berri/M +berrylike +Berry/M +berry/SDMG +berserker/M +berserk/SR +Berta/M +Berte/M +Bertha/M +Berthe/M +berth/MDGJ +berths +Bertie/M +Bertillon/M +Berti/M +Bertina/M +Bertine/M +Bert/M +Berton/M +Bertram/M +Bertrand/M +Bertrando/M +Berty/M +Beryle/M +beryllium/MS +Beryl/M +beryl/SM +Berzelius/M +bes +beseecher/M +beseeching/Y +beseech/RSJZG +beseem/GDS +beset/S +besetting +beside/S +besieger/M +besiege/SRDZG +besmear/GSD +besmirch/GSD +besom/GMDS +besot/S +besotted +besotting +besought +bespangle/GSD +bespatter/SGD +bespeak/SG +bespectacled +bespoke +bespoken +Bess +Bessel/M +Bessemer/M +Bessie/M +Bessy/M +best/DRSG +bestiality/MS +bestial/Y +bestiary/MS +bestirred +bestirring +bestir/S +Best/M +bestowal/SM +bestow/SGD +bestrew/DGS +bestrewn +bestridden +bestride/SG +bestrode +bestseller/MS +bestselling +bestubble/D +betaken +betake/SG +beta/SM +betatron/M +betcha +Betelgeuse/M +betel/MS +Bethanne/M +Bethany/M +bethel/M +Bethe/M +Bethena/M +Bethesda/M +Bethina/M +bethink/GS +Bethlehem/M +beth/M +Beth/M +bethought +Bethune +betide/GSD +betimes +bet/MS +betoken/GSD +betook +betrayal/SM +betrayer/M +betray/SRDZG +betrothal/SM +betrothed/U +betroth/GD +betroths +Betsey/M +Betsy/M +Betta/M +Betteanne/M +Betteann/M +Bette/M +betterment/MS +better/SDLG +Bettie/M +Betti/M +Bettina/M +Bettine/M +betting +bettor/SM +Bettye/M +Betty/SM +betweenness/M +between/SP +betwixt +Beulah/M +Bevan/M +bevel/SJGMRD +beverage/MS +Beverie/M +Beverlee/M +Beverley/M +Beverlie/M +Beverly/M +Bevin/M +Bevon/M +Bev's +Bevvy/M +bevy/SM +bewail/GDS +beware/GSD +bewhisker/D +bewigged +bewildered/PY +bewildering/Y +bewilder/LDSG +bewilderment/SM +bewitching/Y +bewitch/LGDS +bewitchment/SM +bey/MS +beyond/S +bezel/MS +bf +B/GT +Bhopal/M +Bhutanese +Bhutan/M +Bhutto/M +Bialystok/M +Bianca/M +Bianco/M +Bianka/M +biannual/Y +bias/DSMPG +biased/U +biathlon/MS +biaxial/Y +bibbed +Bibbie/M +bibbing +Bibbye/M +Bibby/M +Bibi/M +bible/MS +Bible/MS +biblical/Y +biblicists +bibliographer/MS +bibliographical/Y +bibliographic/S +bibliography/MS +bibliophile/MS +Bib/M +bib/MS +bibulous +bicameral +bicameralism/MS +bicarb/MS +bicarbonate/MS +bicentenary/S +bicentennial/S +bicep/S +biceps/M +bichromate/DM +bickerer/M +bickering/M +bicker/SRDZG +biconcave +biconnected +biconvex +bicuspid/S +bicycler/M +bicycle/RSDMZG +bicyclist/SM +biddable +bidden/U +bidder/MS +Biddie/M +bidding/MS +Biddle/M +Biddy/M +biddy/SM +bider/M +bide/S +bidet/SM +Bidget/M +bid/GMRS +bidiagonal +bidirectional/Y +bids/A +biennial/SY +biennium/SM +Bienville/M +Bierce/M +bier/M +bifocal/S +bifurcate/SDXGNY +bifurcation/M +bigamist/SM +bigamous +bigamy/SM +Bigelow/M +Bigfoot +bigged +bigger +biggest +biggie/SM +bigging +biggish +bighead/MS +bigheartedness/S +bighearted/P +bighorn/MS +bight/SMDG +bigmouth/M +bigmouths +bigness/SM +bigoted/Y +bigot/MDSG +bigotry/MS +big/PYS +bigwig/MS +biharmonic +bijection/MS +bijective/Y +bijou/M +bijoux +bike/MZGDRS +biker/M +bikini/SMD +Biko/M +bilabial/S +bilateralness/M +bilateral/PY +bilayer/S +Bilbao/M +bilberry/MS +Bilbo/M +bile/SM +bilge/GMDS +biliary +Bili/M +bilinear +bilingualism/SM +bilingual/SY +biliousness/SM +bilious/P +bilker/M +bilk/GZSDR +billboard/MDGS +biller/M +billet/MDGS +billfold/MS +billiard/SM +Billie/M +Billi/M +billing/M +billingsgate/SM +Billings/M +billionaire/MS +billion/SHM +billionths +bill/JGZSBMDR +Bill/JM +billow/DMGS +billowy/RT +billposters +Billye/M +Billy/M +billy/SM +Bil/MY +bi/M +Bi/M +bimbo/MS +bimetallic/S +bimetallism/MS +Bimini/M +bimodal +bimolecular/Y +bimonthly/S +binary/S +binaural/Y +binder/M +bindery/MS +binding/MPY +bindingness/M +bind/JDRGZS +bindle/M +binds/AU +bindweed/MS +binge/MS +bing/GNDM +Bingham/M +Binghamton/M +Bing/M +bingo/MS +Bini/M +Bink/M +Binky/M +binnacle/MS +binned +Binnie/M +Binni/M +binning +Binny/M +binocular/SY +binodal +binomial/SYM +bin/SM +binuclear +biochemical/SY +biochemist/MS +biochemistry/MS +biodegradability/S +biodegradable +biodiversity/S +bioengineering/M +bioethics +biofeedback/SM +biographer/M +biographic +biographical/Y +biograph/RZ +biography/MS +biog/S +Bioko/M +biol +biological/SY +biologic/S +biologist/SM +biology/MS +biomass/SM +biomedical +biomedicine/M +biometric/S +biometrics/M +biometry/M +biomolecule/S +biomorph +bionically +bionic/S +bionics/M +biophysical/Y +biophysicist/SM +biophysic/S +biophysics/M +biopic/S +biopsy/SDGM +biorhythm/S +BIOS +bioscience/S +biosphere/MS +biostatistic/S +biosynthesized +biotechnological +biotechnologist +biotechnology/SM +biotic +biotin/SM +bipartisan +bipartisanship/MS +bipartite/YN +bipartition/M +bipedal +biped/MS +biplane/MS +bipolar +bipolarity/MS +biracial +Birch/M +birch/MRSDNG +birdbath/M +birdbaths +birdbrain/SDM +birdcage/SM +birder/M +birdhouse/MS +birdieing +Birdie/M +birdie/MSD +birdlike +birdlime/MGDS +Bird/M +birdseed/MS +Birdseye/M +bird/SMDRGZ +birdsong +birdtables +birdwatch/GZR +birefringence/M +birefringent +biretta/SM +Birgit/M +Birgitta/M +Birkenstock/M +Birk/M +Birmingham/M +Biro/M +Biron/M +birthday/SM +birthmark/MS +birth/MDG +birthplace/SM +birthrate/MS +birthright/MS +birth's/A +births/A +birthstone/SM +bis +Biscay/M +Biscayne/M +biscuit/MS +bisect/DSG +bisection/MS +bisector/MS +biserial +bisexuality/MS +bisexual/YMS +Bishkek +bishop/DGSM +Bishop/M +bishopric/SM +Bismarck/M +Bismark/M +bismuth/M +bismuths +bison/M +bisque/SM +Bissau/M +bistable +bistate +bistro/SM +bisyllabic +bitblt/S +bitchily +bitchiness/MS +bitch/MSDG +bitchy/PTR +biter/M +bite/S +biting/Y +bitmap/SM +bit/MRJSZG +BITNET/M +bit's/C +bits/C +bitser/M +bitted +bitten +bitterness/SM +bittern/SM +bitternut/M +bitter/PSRDYTG +bitterroot/M +bittersweet/YMSP +bitting +bitty/PRT +bitumen/MS +bituminous +bitwise +bivalent/S +bivalve/MSD +bivariate +bivouacked +bivouacking +bivouac/MS +biweekly/S +biyearly +bizarreness/M +bizarre/YSP +Bizet/M +biz/M +bizzes +Bjorn/M +bk +b/KGD +Bk/M +blabbed +blabber/GMDS +blabbermouth/M +blabbermouths +blabbing +blab/S +blackamoor/SM +blackball/SDMG +blackberry/GMS +blackbirder/M +blackbird/SGDRM +blackboard/SM +blackbody/S +Blackburn/M +blackcurrant/M +blackener/M +blacken/GDR +Blackfeet +Blackfoot/M +blackguard/MDSG +blackhead/SM +blacking/M +blackish +blackjack/SGMD +blackleg/M +blacklist/DRMSG +blackmail/DRMGZS +blackmailer/M +Blackman/M +Blackmer/M +blackness/MS +blackout/SM +Blackpool/M +Black's +black/SJTXPYRDNG +blacksmith/MG +blacksmiths +blacksnake/MS +blackspot +Blackstone/M +blackthorn/MS +blacktop/MS +blacktopped +blacktopping +Blackwell/MS +bladder/MS +bladdernut/M +bladderwort/M +blade/DSGM +blah/MDG +blahs +Blaine/M +Blaire/M +Blair/M +Blakelee/M +Blakeley/M +Blake/M +Blakey/M +blame/DSRBGMZ +blamelessness/SM +blameless/YP +blamer/M +blameworthiness/SM +blameworthy/P +Blanca/M +Blancha/M +Blanchard/M +blanch/DRSG +Blanche/M +blancher/M +Blanch/M +blanc/M +blancmange/SM +blandishment/MS +blandish/SDGL +blandness/MS +bland/PYRT +Blane/M +Blankenship/M +blanketing/M +blanket/SDRMZG +blankness/MS +blank/SPGTYRD +Blanton/M +Blantyre/M +blare/DSG +blarney/DMGS +blas +blasphemer/M +blaspheme/RSDZG +blasphemousness/M +blasphemous/PY +blasphemy/SM +blaster/M +blasting/M +blastoff/SM +blast/SMRDGZ +blatancy/SM +blatant/YP +blather/DRGS +blatting +Blatz/M +Blavatsky/M +Blayne/M +blaze/DSRGMZ +blazer/M +blazing/Y +blazoner/M +blazon/SGDR +bl/D +bldg +bleach/DRSZG +bleached/U +bleacher/M +bleakness/MS +bleak/TPYRS +blear/GDS +blearily +bleariness/SM +bleary/PRT +bleater/M +bleat/RDGS +bleeder/M +bleed/ZRJSG +Bleeker/M +bleep/GMRDZS +blemish/DSMG +blemished/U +blench/DSG +blender/M +blend/GZRDS +Blenheim/M +blessedness/MS +blessed/PRYT +blessing/M +bless/JGSD +Blevins/M +blew +Bligh/M +blighter/M +blight/GSMDR +blimey/S +blimp/MS +blinded/U +blinder/M +blindfold/SDG +blinding/MY +blind/JGTZPYRDS +blindness/MS +blindside/SDG +blinker/MDG +blinking/U +blink/RDGSZ +blinks/M +Blinnie/M +Blinni/M +Blinny/M +blintze/M +blintz/SM +blip/MS +blipped +blipping +Blisse/M +blissfulness/MS +blissful/PY +Bliss/M +bliss/SDMG +blistering/Y +blister/SMDG +blistery +Blithe/M +blitheness/SM +blither/G +blithesome +blithe/TYPR +blitz/GSDM +blitzkrieg/SM +blizzard/MS +bloater/M +bloat/SRDGZ +blobbed +blobbing +blob/MS +Bloch/M +blockader/M +blockade/ZMGRSD +blockage/MS +blockbuster/SM +blockbusting/MS +blocker/MS +blockhead/MS +blockhouse/SM +block's +block/USDG +blocky/R +bloc/MS +Bloemfontein/M +bloke/SM +Blomberg/M +Blomquist/M +Blondelle/M +Blondell/M +blonde's +Blondie/M +blondish +blondness/MS +blond/SPMRT +Blondy/M +bloodbath +bloodbaths +bloodcurdling +bloodhound/SM +bloodied/U +bloodiness/MS +bloodlessness/SM +bloodless/PY +bloodletting/MS +bloodline/SM +bloodmobile/MS +bloodroot/M +bloodshed/SM +bloodshot +blood/SMDG +bloodsport/S +bloodstain/MDS +bloodstock/SM +bloodstone/M +bloodstream/SM +bloodsucker/SM +bloodsucking/S +bloodthirstily +bloodthirstiness/MS +bloodthirsty/RTP +bloodworm/M +bloodymindedness +bloody/TPGDRS +bloomer/M +Bloomer/M +Bloomfield/M +Bloomington/M +Bloom/MR +bloom/SMRDGZ +blooper/M +bloop/GSZRD +blossom/DMGS +blossomy +blotch/GMDS +blotchy/RT +blot/MS +blotted +blotter/MS +blotting +blotto +blouse/GMSD +blower/M +blowfish/M +blowfly/MS +blowgun/SM +blow/GZRS +blowing/M +blown/U +blowout/MS +blowpipe/SM +blowtorch/SM +blowup/MS +blowy/RST +blowzy/RT +BLT +blubber/GSDR +blubbery +Blucher/M +bludgeon/GSMD +blueback +Bluebeard/M +bluebell/MS +blueberry/SM +bluebill/M +bluebird/MS +bluebonnet/SM +bluebook/M +bluebottle/MS +bluebush +bluefish/SM +bluegill/SM +bluegrass/MS +blueing's +blueish +bluejacket/MS +bluejeans +blue/JMYTGDRSP +blueness/MS +bluenose/MS +bluepoint/SM +blueprint/GDMS +bluer/M +bluest/M +bluestocking/SM +bluesy/TR +bluet/MS +bluffer/M +bluffness/MS +bluff/SPGTZYRD +bluing/M +bluishness/M +bluish/P +Blumenthal/M +Blum/M +blunderbuss/MS +blunderer/M +blunder/GSMDRJZ +blundering/Y +bluntness/MS +blunt/PSGTYRD +blurb/GSDM +blur/MS +blurred/Y +blurriness/S +blurring/Y +blurry/RPT +blurt/GSRD +blusher/M +blushing/UY +blush/RSDGZ +blusterer/M +blustering/Y +blusterous +bluster/SDRZG +blustery +blvd +Blvd +Blythe/M +BM +BMW/M +BO +boarded +boarder/SM +boardgames +boardinghouse/SM +boarding/SM +board/IS +boardroom/MS +board's +boardwalk/SM +boar/MS +boa/SM +boaster/M +boastfulness/MS +boastful/YP +boast/SJRDGZ +boatclubs +boater/M +boathouse/SM +boating/M +boatload/SM +boatman/M +boat/MDRGZJS +boatmen +boatswain/SM +boatyard/SM +bobbed +Bobbee/M +Bobbe/M +Bobbette/M +Bobbie/M +Bobbi/M +bobbing/M +bobbin/MS +Bobbitt/M +bobble/SDGM +Bobbsey/M +Bobbye/M +Bobby/M +bobby/SM +bobbysoxer's +bobcat/MS +Bobette/M +Bobina/M +Bobine/M +Bobinette/M +Bob/M +bobolink/SM +Bobrow/M +bobsledded +bobsledder/MS +bobsledding/M +bobsled/MS +bobsleigh/M +bobsleighs +bobs/M +bob/SM +bobtail/SGDM +bobwhite/SM +Boca/M +Boccaccio/M +boccie/SM +bock/GDS +bockwurst +bodega/MS +Bodenheim/M +bode/S +Bodhidharma/M +bodhisattva +Bodhisattva/M +bodice/SM +bodied/M +bodiless +bodily +boding/M +bodkin/SM +bod/SGMD +bodybuilder/SM +bodybuilding/S +body/DSMG +bodyguard/MS +bodying/M +bodysuit/S +bodyweight +bodywork/SM +Boeing/M +Boeotia/M +Boeotian +Boer/M +Bogartian/M +Bogart/M +Bogey/M +bogeyman/M +bogeymen +bogey/SGMD +bogged +bogging +boggle/SDG +boggling/Y +boggy/RT +bogie's +bog/MS +Bogot/M +bogus +bogyman +bogymen +bogy's +Boheme/M +bohemianism/S +bohemian/S +Bohemian/SM +Bohemia/SM +Bohr/M +Boigie/M +boiled/AU +boiler/M +boilermaker/MS +boilerplate/SM +boil/JSGZDR +boils/A +Boise/M +Bois/M +boisterousness/MS +boisterous/YP +bola/SM +boldface/SDMG +boldness/MS +bold/YRPST +bole/MS +bolero/MS +Boleyn/M +bolivares +Bolivar/M +bolivar/MS +Bolivia/M +Bolivian/S +bollard/SM +bollix/GSD +boll/MDSG +Bologna/M +bologna/MS +bolometer/MS +bolo/MS +boloney's +Bolshevik/MS +Bolshevism/MS +Bolshevistic/M +Bolshevist/MS +Bolshoi/M +bolsterer/M +bolster/SRDG +bolted/U +bolter/M +bolt/MDRGS +Bolton/M +bolts/U +Boltzmann/M +bolus/SM +bombardier/MS +bombard/LDSG +bombardment/SM +bombastic +bombastically +bombast/RMS +Bombay/M +bomber/M +bombproof +bomb/SGZDRJ +bombshell/SM +Bo/MRZ +bona +bonanza/MS +Bonaparte/M +Bonaventure/M +bonbon/SM +bondage/SM +bonder/M +bondholder/SM +Bondie/M +bond/JMDRSGZ +Bond/M +bondman/M +bondmen +Bondon/M +bonds/A +bondsman/M +bondsmen +bondwoman/M +bondwomen +Bondy/M +boned/U +bonehead/SDM +boneless +Bone/M +bone/MZDRSG +boner/M +bonfire/MS +bong/GDMS +bongo/MS +Bonham/M +bonhomie/MS +Boniface/M +boniness/MS +Bonita/M +bonito/MS +bonjour +bonkers +Bonnee/M +Bonner/M +bonneted/U +bonnet/SGMD +Bonneville/M +Bonnibelle/M +bonnie +Bonnie/M +Bonni/M +Bonn/RM +Bonny/M +bonny/RT +bonsai/SM +Bontempo/M +bonus/SM +bony/RTP +bonzes +boob/DMSG +booby/SM +boodle/GMSD +boogeyman's +boogieing +boogie/SD +boo/GSDH +boohoo/GDS +bookbinder/M +bookbindery/SM +bookbinding/M +bookbind/JRGZ +bookcase/MS +booked/U +bookend/SGD +Booker/M +book/GZDRMJSB +bookie/SM +booking/M +bookishness/M +bookish/PY +bookkeeper/M +bookkeep/GZJR +bookkeeping/M +booklet/MS +bookmaker/MS +bookmaking/MS +bookmark/MDGS +bookmobile/MS +bookplate/SM +bookseller/SM +bookshelf/M +bookshelves +bookshop/MS +bookstall/MS +bookstore/SM +bookwork/M +bookworm/MS +Boolean +boolean/S +Boole/M +boom/DRGJS +boomerang/MDSG +boomer/M +boomtown/S +boondocks +boondoggle/DRSGZ +boondoggler/M +Boone/M +Boonie/M +boonies +boon/MS +Boony/M +boorishness/SM +boorish/PY +boor/MS +boosterism +booster/M +boost/SGZMRD +boot/AGDS +bootblack/MS +bootee/MS +Boote/M +Botes +Boothe/M +booth/M +Booth/M +booths +bootie's +bootlaces +bootlegged/M +bootlegger/SM +bootlegging/M +bootleg/S +Bootle/M +bootless +Boot/M +bootprints +boot's +bootstrapped +bootstrapping +bootstrap/SM +booty/SM +booze/DSRGMZ +boozer/M +boozy/TR +bopped +bopping +bop/S +borate/MSD +borax/MS +Bordeaux/M +bordello/MS +Borden/M +borderer/M +border/JRDMGS +borderland/SM +borderline/MS +Bordie/M +Bord/MN +Bordon/M +Bordy/M +Borealis/M +Boreas/M +boredom/MS +boreholes +borer/M +bore/ZGJDRS +Borges +Borgia/M +Borg/M +boric +boring/YMP +Boris +Bork/M +born/AIU +Borneo/M +borne/U +Born/M +Borodin/M +boron/SM +borosilicate/M +borough/M +boroughs +Borroughs/M +borrower/M +borrowing/M +borrow/JZRDGBS +borscht/SM +borstal/MS +Boru/M +borzoi/MS +Bosch/M +Bose/M +bosh/MS +Bosnia/M +Bosnian/S +bosom's +bosom/SGUD +bosomy/RT +boson/SM +Bosporus/M +boss/DSRMG +bossily +bossiness/MS +bossism/MS +bossy/PTSR +Bostitch/M +Bostonian/SM +Boston/MS +bosun's +Boswell/MS +botanical/SY +botanic/S +botanist/SM +botany/SM +botcher/M +botch/SRDGZ +botfly/M +bother/DG +bothersome +bothy/M +both/ZR +bot/S +Botswana/M +Botticelli/M +bottle/GMZSRD +bottleneck/GSDM +bottler/M +bottomlessness/M +bottomless/YP +bottommost +bottom/SMRDG +botulin/M +botulinus/M +botulism/SM +Boucher/M +boudoir/MS +bouffant/S +bougainvillea/SM +bough/MD +boughs +bought/N +bouillabaisse/MS +bouillon/MS +boulder/GMDS +Boulder/M +boulevard/MS +bouncer/M +bounce/SRDGZ +bouncily +bouncing/Y +bouncy/TRP +boundary/MS +bound/AUDI +boundedness/MU +bounded/UP +bounden +bounder/AM +bounders +bounding +boundlessness/SM +boundless/YP +bounds/IA +bounteousness/MS +bounteous/PY +bountifulness/SM +bountiful/PY +bounty/SDM +bouquet/SM +Bourbaki/M +bourbon/SM +Bourbon/SM +bourgeoisie/SM +bourgeois/M +Bourke/M +Bourne/M +Bournemouth/M +boutique/MS +bout/MS +boutonnire/MS +Bouvier +Bovary/M +bovine/YS +Bowditch/M +bowdlerization/MS +bowdlerize/GRSD +bowed/U +bowel/GMDS +Bowell/M +Bowen/M +bower/DMG +Bowers +Bowery/M +Bowes +bowie +Bowie/M +bowing/M +bowlder's +bowlegged +bowleg/SM +bowler/M +bowlful/S +bowl/GZSMDR +bowline/MS +bowling/M +bowman/M +Bowman/M +bowmen +bowser/M +bowsprit/SM +bows/R +bowstring/GSMD +bow/SZGNDR +bowwow/DMGS +boxcar/SM +box/DRSJZGM +boxer/M +boxful/M +boxing/M +boxlike +boxtops +boxwood/SM +boxy/TPR +Boyce/M +Boycey/M +Boycie/M +boycotter/M +boycott/RDGS +Boyd/M +Boyer/M +boyfriend/MS +boyhood/SM +boyishness/MS +boyish/PY +Boyle/M +Boy/MR +boy/MRS +boyscout +boysenberry/SM +bozo/SM +bpi +bps +BR +brace/DSRJGM +braced/U +bracelet/MS +bracer/M +brachia +brachium/M +bracken/SM +bracketed/U +bracketing/M +bracket/SGMD +brackishness/SM +brackish/P +bract/SM +Bradan/M +bradawl/M +Bradbury/M +Bradburys +bradded +bradding +Braddock/M +Brade/M +Braden/M +Bradford/M +Bradley/M +Bradly/M +Brad/MYN +Bradney/M +Bradshaw/M +brad/SM +Bradstreet/M +Brady/M +brae/SM +braggadocio/SM +braggart/SM +bragged +bragger/MS +braggest +bragging +Bragg/M +brag/S +Brahe/M +Brahma/MS +Brahmanism/MS +Brahman/SM +Brahmaputra/M +Brahmin's +Brahms +braider/M +braiding/M +braid/RDSJG +braille/DSG +Braille/GDSM +Brainard/SM +braincell/S +brainchild/M +brainchildren +brain/GSDM +braininess/MS +brainlessness/M +brainless/YP +Brain/M +brainpower/M +brainstorm/DRMGJS +brainstorming/M +brainteaser/S +brainteasing +brainwasher/M +brainwashing/M +brainwash/JGRSD +brainwave/S +brainy/RPT +braise/SDG +brake/DSGM +brakeman/M +brakemen/M +bramble/DSGM +brambling/M +brambly/RT +Bram/M +Brampton/M +bra/MS +Brana/M +branched/U +branching/M +branchlike +Branch/M +branch/MDSJG +Branchville/M +Brandais/M +Brandea/M +branded/U +Brandeis/M +Brandel/M +Brande/M +Brandenburg/M +Branden/M +brander/GDM +Brander/M +Brandice/M +Brandie/M +Brandi/M +Brandise/M +brandish/GSD +Brand/MRN +Brando/M +Brandon/M +brand/SMRDGZ +Brandt/M +Brandtr/M +brandy/GDSM +Brandy/M +Brandyn/M +brandywine +Braniff/M +Bran/M +branned +branning +Brannon/M +bran/SM +Brantley/M +Brant/M +Braque/M +brashness/MS +brash/PYSRT +Brasilia +brasserie/SM +brass/GSDM +brassiere/MS +brassily +brassiness/SM +brassy/RSPT +Bratislava/M +brat/SM +Brattain/M +bratty/RT +bratwurst/MS +Braun/M +bravadoes +bravado/M +brave/DSRGYTP +braveness/MS +bravery/MS +bravest/M +bravo/SDG +bravura/SM +brawler/M +brawl/MRDSGZ +brawniness/SM +brawn/MS +brawny/TRP +brayer/M +Bray/M +bray/SDRG +braze/GZDSR +brazenness/MS +brazen/PYDSG +brazer/M +brazier/SM +Brazilian/MS +Brazil/M +Brazos/M +Brazzaville/M +breacher/M +breach/MDRSGZ +breadbasket/SM +breadboard/SMDG +breadbox/S +breadcrumb/S +breadfruit/MS +breadline/MS +bread/SMDHG +breadth/M +breadths +breadwinner/MS +breakables +breakable/U +breakage/MS +breakaway/MS +breakdown/MS +breaker/M +breakfaster/M +breakfast/RDMGZS +breakfront/S +breaking/M +breakneck +breakout/MS +breakpoint/SMDG +break/SZRBG +breakthroughs +breakthrough/SM +breakup/SM +breakwater/SM +bream/SDG +Breanne/M +Brear/M +breastbone/MS +breastfed +breastfeed/G +breasting/M +breast/MDSG +breastplate/SM +breaststroke/SM +breastwork/MS +breathable/U +breathalyser/S +Breathalyzer/SM +breathe +breather/M +breathing/M +breathlessness/SM +breathless/PY +breaths +breathtaking/Y +breathy/TR +breath/ZBJMDRSG +Brecht/M +Breckenridge/M +bred/DG +bredes +breeching/M +breech/MDSG +breeder/I +breeder's +breeding/IM +breeds/I +breed/SZJRG +Bree/M +Breena/M +breeze/GMSD +breezeway/SM +breezily +breeziness/SM +breezy/RPT +Bremen/M +bremsstrahlung/M +Brena/M +Brenda/M +Brendan/M +Brenden/M +Brendin/M +Brendis/M +Brendon/M +Bren/M +Brenna/M +Brennan/M +Brennen/M +Brenner/M +Brenn/RNM +Brent/M +Brenton/M +Bresenham/M +Brest/M +brethren +Bret/M +Breton +Brett/M +breve/SM +brevet/MS +brevetted +brevetting +breviary/SM +brevity/MS +brew/DRGZS +brewer/M +Brewer/M +brewery/MS +brewing/M +brewpub/S +Brew/RM +Brewster/M +Brezhnev/M +Bria/M +Briana/M +Brian/M +Brianna/M +Brianne/M +Briano/M +Briant/M +briar's +bribe/GZDSR +briber/M +bribery/MS +Brice/M +brickbat/SM +brick/GRDSM +bricklayer/MS +bricklaying/SM +brickmason/S +brickwork/SM +brickyard/M +bridal/S +Bridalveil/M +bridegroom/MS +Bride/M +bride/MS +bridesmaid/MS +Bridewell/M +bridgeable/U +bridged/U +bridgehead/MS +Bridgeport/M +Bridger/M +Bridges +bridge/SDGM +Bridget/M +Bridgetown/M +Bridgette/M +Bridgett/M +Bridgewater/M +bridgework/MS +bridging/M +Bridgman/M +Bridie/M +bridled/U +bridle/SDGM +bridleway/S +briefcase/SM +briefed/C +briefing/M +briefness/MS +briefs/C +brief/YRDJPGTS +Brien/M +Brier/M +brier/MS +Brie/RSM +Brietta/M +brigade/GDSM +brigadier/MS +Brigadoon +brigandage/MS +brigand/MS +brigantine/MS +Brigg/MS +Brigham/M +brightener/M +brighten/RDZG +bright/GXTPSYNR +Bright/M +brightness/SM +Brighton/M +Brigida/M +Brigid/M +Brigit/M +Brigitta/M +Brigitte/M +Brig/M +brig/SM +brilliance/MS +brilliancy/MS +brilliantine/MS +brilliantness/M +brilliant/PSY +Brillo +Brillouin/M +brimful +brimless +brimmed +brimming +brim/SM +brimstone/MS +Brina/M +Brindisi/M +brindle/DSM +brine/GMDSR +briner/M +Briney/M +bringer/M +bring/RGZS +brininess/MS +Brinkley/M +brinkmanship/SM +brink/MS +Brinna/M +Brinn/M +Briny/M +briny/PTSR +brioche/SM +Brion/M +briquet's +briquette/MGSD +Brisbane/M +brisket/SM +briskness/MS +brisk/YRDPGTS +bristle/DSGM +bristly/TR +Bristol/M +bristol/S +Britain/M +Brita/M +Britannia/M +Britannic +Britannica/M +britches +Briticism/MS +Britisher/M +Britishly/M +British/RYZ +Brit/MS +Britney/M +Britni/M +Briton/MS +Britta/M +Brittaney/M +Brittani/M +Brittan/M +Brittany/MS +Britte/M +Britten/M +Britteny/M +brittleness/MS +brittle/YTPDRSG +Britt/MN +Brittne/M +Brittney/M +Brittni/M +Brnaba/M +Brnaby/M +Brno/M +broach/DRSG +broacher/M +broadband +broadcaster/M +broadcast/RSGZJ +broadcasts/A +broadcloth/M +broadcloths +broaden/JGRDZ +broadleaved +broadloom/SM +broadminded/P +broadness/S +broadsheet/MS +broadside/SDGM +broadsword/MS +broad/TXSYRNP +Broadway/SM +Brobdingnagian +Brobdingnag/M +brocade/DSGM +broccoli/MS +brochette/SM +brochure/SM +Brockie/M +Brock/M +Brocky/M +Broddie/M +Broddy/M +Broderick/M +Broderic/M +Brodie/M +Brod/M +Brody/M +brogan/MS +Broglie/M +brogue/MS +broiler/M +broil/RDSGZ +brokenhearted/Y +brokenness/MS +broken/YP +brokerage/MS +broker/DMG +broke/RGZ +Brok/M +bromide/MS +bromidic +bromine/MS +bronchial +bronchi/M +bronchiolar +bronchiole/MS +bronchiolitis +bronchitic/S +bronchitis/MS +broncho's +bronchus/M +broncobuster/SM +bronco/SM +bronc/S +Bron/M +Bronnie/M +Bronny/M +Bronson/M +Bronte +brontosaur/SM +brontosaurus/SM +Bronx/M +bronzed/M +bronze/SRDGM +bronzing/M +brooch/MS +brooder/M +broodiness/M +brooding/Y +broodmare/SM +brood/SMRDGZ +broody/PTR +Brookdale/M +Brooke/M +Brookfield/M +Brookhaven/M +brooklet/MS +Brooklyn/M +Brookmont/M +brook/SGDM +brookside +Brook/SM +broom/SMDG +broomstick/MS +Bros +Brose/M +bro/SH +bros/S +brothel/MS +brother/DYMG +brotherhood/SM +brotherliness/MS +brotherly/P +broths +broth/ZMR +brougham/MS +brought +brouhaha/MS +browbeat/NSG +brow/MS +Brownell/M +Browne/M +Brownian/M +Brownie/MS +brownie/MTRS +browning/M +Browning/M +brownish +Brown/MG +brownness/MS +brownout/MS +brownstone/MS +Brownsville/M +brown/YRDMSJGTP +browse +browser/M +brows/SRDGZ +brr +Br/TMN +Brubeck/M +brucellosis/M +Bruce/M +Brucie/M +Bruckner/M +Bruegel/M +Brueghel's +bruin/MS +bruised/U +bruise/JGSRDZ +bruiser/M +Bruis/M +bruit/DSG +Brumidi/M +Brummel/M +brunch/MDSG +Brunei/M +Brunelleschi/M +brunet/S +brunette/SM +Brunhilda/M +Brunhilde/M +Bruno/M +Brunswick/M +brunt/GSMD +brusher/M +brushfire/MS +brushlike +brush/MSRDG +brushoff/S +brushwood/SM +brushwork/MS +brushy/R +brusqueness/MS +brusque/PYTR +Brussels +brutality/SM +brutalization/SM +brutalized/U +brutalizes/AU +brutalize/SDG +brutal/Y +brute/DSRGM +brutishness/SM +brutish/YP +Brutus/M +Bruxelles/M +Bryana/M +Bryan/M +Bryant/M +Bryanty/M +Bryce/M +Bryna/M +Bryn/M +Brynna/M +Brynne/M +Brynner/M +Brynn/RM +Bryon/M +Brzezinski/M +B's +BS +BSA +BSD +Btu +BTU +BTW +bu +bubblegum/S +bubbler/M +bubble/RSDGM +bubbly/TRS +Buber/M +bub/MS +buboes +bubo/M +bubonic +buccaneer/GMDS +Buchanan/M +Bucharest/M +Buchenwald/M +Buchwald/M +buckaroo/SM +buckboard/SM +bucker/M +bucketful/MS +bucket/SGMD +buckeye/SM +buck/GSDRM +buckhorn/M +Buckie/M +Buckingham/M +buckled/U +buckler/MDG +buckle/RSDGMZ +buckles/U +Buckley/M +buckling's +buckling/U +Buck/M +Buckner/M +buckram/GSDM +bucksaw/SM +buckshot/MS +buckskin/SM +buckteeth +bucktooth/DM +buckwheat/SM +Bucky/M +bucolically +bucolic/S +Budapest/M +budded +Buddha/MS +Buddhism/SM +Buddhist/SM +Buddie/M +budding/S +Budd/M +buddy/GSDM +Buddy/M +budge/GDS +budgerigar/MS +budgetary +budgeter/M +budget/GMRDZS +budgie/MS +budging/U +Bud/M +bud/MS +Budweiser/MS +Buehring/M +Buena/M +buffaloes +Buffalo/M +buffalo/MDG +buff/ASGD +buffered/U +bufferer/M +buffer/RDMSGZ +buffet/GMDJS +bufflehead/M +buffoonery/MS +buffoonish +buffoon/SM +buff's +Buffy/M +Buford/M +bugaboo/SM +Bugatti/M +bugbear/SM +bug/CS +bugeyed +bugged/C +buggered +buggering +bugger/SCM! +buggery/M +bugging/C +buggy/RSMT +bugle/GMDSRZ +bugler/M +bug's +Buick/M +builder/SM +building/SM +build/SAG +buildup/MS +built/AUI +Buiron/M +Bujumbura/M +Bukhara/M +Bukharin/M +Bulawayo/M +Bulba/M +bulb/DMGS +bulblet +bulbous +Bulfinch/M +Bulganin/M +Bulgaria/M +Bulgarian/S +bulge/DSGM +bulgy/RT +bulimarexia/S +bulimia/MS +bulimic/S +bulk/GDRMS +bulkhead/SDM +bulkiness/SM +bulky/RPT +bulldogged +bulldogger +bulldogging +bulldog/SM +bulldoze/GRSDZ +bulldozer/M +bullet/GMDS +bulletin/SGMD +bulletproof/SGD +bullfighter/M +bullfighting/M +bullfight/SJGZMR +bullfinch/MS +bullfrog/SM +bullhead/DMS +bullheadedness/SM +bullheaded/YP +bullhide +bullhorn/SM +bullied/M +bullion/SM +bullishness/SM +bullish/PY +bull/MDGS +Bullock/M +bullock/MS +bullpen/MS +bullring/SM +bullseye +bullshit/MS! +bullshitted/! +bullshitter/S! +bullshitting/! +bullwhackers +Bullwinkle/M +bullyboy/MS +bullying/M +bully/TRSDGM +bulrush/SM +Bultmann/M +bulwark/GMDS +bumblebee/MS +bumble/JGZRSD +bumbler/M +bumbling/Y +Bumbry/M +bummed/M +bummer/MS +bummest +bumming/M +bumper/DMG +bump/GZDRS +bumpiness/MS +bumpkin/MS +Bumppo/M +bumptiousness/SM +bumptious/PY +bumpy/PRT +bum/SM +Bunche/M +bunch/MSDG +bunchy/RT +buncombe's +bunco's +Bundestag/M +bundled/U +bundle/GMRSD +bundler/M +Bundy/M +bungalow/MS +bungee/SM +bung/GDMS +bunghole/MS +bungle/GZRSD +bungler/M +bungling/Y +Bunin/M +bunion/SM +bunk/CSGDR +Bunker/M +bunker's/C +bunker/SDMG +bunkhouse/SM +bunkmate/MS +bunko's +bunk's +bunkum/SM +Bunnie/M +Bunni/M +Bunny/M +bunny/SM +Bunsen/SM +bun/SM +bunt/GJZDRS +bunting/M +Buuel/M +Bunyan/M +buoyancy/MS +buoyant/Y +buoy/SMDG +Burbank/M +burbler/M +burble/RSDG +burbs +Burch/M +burden's +burdensomeness/M +burdensome/PY +burden/UGDS +burdock/SM +bureaucracy/MS +bureaucratically +bureaucratic/U +bureaucratization/MS +bureaucratize/SDG +bureaucrat/MS +bureau/MS +burgeon/GDS +burger/M +Burger/M +Burgess/M +burgess/MS +burgher/M +burgh/MRZ +burghs +burglarize/GDS +burglarproof/DGS +burglar/SM +burglary/MS +burgle/SDG +burgomaster/SM +Burgoyne/M +Burg/RM +burg/SZRM +Burgundian/S +Burgundy/MS +burgundy/S +burial/ASM +buried/U +burier/M +Burke/M +Burk/SM +burlap/MS +burler/M +burlesquer/M +burlesque/SRDMYG +burley/M +Burlie/M +burliness/SM +Burlingame/M +Burlington/M +Burl/M +burl/SMDRG +burly/PRT +Burma/M +Burmese +bur/MYS +burnable/S +Burnaby/M +Burnard/M +burned/U +Burne/MS +burner/M +Burnett/M +burn/GZSDRBJ +burning/Y +burnisher/M +burnish/GDRSZ +burnoose/MS +burnout/MS +Burns +Burnside/MS +burnt/YP +burp/SGMD +burr/GSDRM +Burris/M +burrito/S +Burr/M +burro/SM +Burroughs/M +burrower/M +burrow/GRDMZS +bursae +bursa/M +Bursa/M +bursar/MS +bursary/MS +bursitis/MS +burster/M +burst/SRG +Burtie/M +Burt/M +Burton/M +Burty/M +Burundian/S +Burundi/M +bury/ASDG +busboy/MS +busby/SM +Busch/M +buses/A +busgirl/S +bus/GMDSJ +bushel/MDJSG +Bushido/M +bushiness/MS +bushing/M +bush/JMDSRG +bushland +Bush/M +bushman/M +bushmaster/SM +bushmen +Bushnell/M +bushwhacker/M +bushwhacking/M +bushwhack/RDGSZ +bushy/PTR +busily +businesslike +businessman/M +businessmen +business/MS +businesspeople +businessperson/S +businesswoman/M +businesswomen +busker/M +busk/GRM +buskin/SM +bus's/A +buss/D +bustard/MS +buster/M +bustle/GSD +bustling/Y +bust/MSDRGZ +busty/RT +busybody/MS +busy/DSRPTG +busyness/MS +busywork/SM +but/ACS +butane/MS +butcherer/M +butcher/MDRYG +butchery/MS +Butch/M +butch/RSZ +butene/M +Butler/M +butler/SDMG +butted/A +butte/MS +butterball/MS +buttercup/SM +buttered/U +butterfat/MS +Butterfield/M +butterfingered +butterfingers/M +butterfly/MGSD +buttermilk/MS +butternut/MS +butter/RDMGZ +butterscotch/SM +buttery/TRS +butting/M +buttock/SGMD +buttoner/M +buttonhole/GMRSD +buttonholer/M +button's +button/SUDG +buttonweed +buttonwood/SM +buttress/MSDG +butt/SGZMDR +butyl/M +butyrate/M +buxomness/M +buxom/TPYR +Buxtehude/M +buyback/S +buyer/M +buyout/S +buy/ZGRS +buzzard/MS +buzz/DSRMGZ +buzzer/M +buzzword/SM +buzzy +bx +bxs +byelaw's +Byelorussia's +bye/MZS +Byers/M +bygone/S +bylaw/SM +byliner/M +byline/RSDGM +BYOB +bypass/GSDM +bypath/M +bypaths +byplay/S +byproduct/SM +Byram/M +Byran/M +Byrann/M +Byrd/M +byre/SM +Byrle/M +Byrne/M +byroad/MS +Byrom/M +Byronic +Byronism/M +Byron/M +bystander/SM +byte/SM +byway/SM +byword/SM +byzantine +Byzantine/S +Byzantium/M +by/ZR +C +ca +CA +cabala/MS +caballed +caballero/SM +caballing +cabal/SM +cabana/MS +cabaret/SM +cabbage/MGSD +cabbed +cabbing +cabby's +cabdriver/SM +caber/M +Cabernet/M +cabinetmaker/SM +cabinetmaking/MS +cabinet/MS +cabinetry/SM +cabinetwork/MS +cabin/GDMS +cablecast/SG +cable/GMDS +cablegram/SM +cabochon/MS +caboodle/SM +caboose/MS +Cabot/M +Cabrera/M +Cabrini/M +cabriolet/MS +cab/SMR +cabstand/MS +cacao/SM +cacciatore +cache/DSRGM +cachepot/MS +cachet/MDGS +Cacilia/M +Cacilie/M +cackler/M +cackle/RSDGZ +cackly +CACM +cacophonist +cacophonous +cacophony/SM +cacti +cactus/M +CAD +cadaverous/Y +cadaver/SM +caddishness/SM +caddish/PY +Caddric/M +caddy/GSDM +cadence/CSM +cadenced +cadencing +cadent/C +cadenza/MS +cadet/SM +Cadette/S +cadge/DSRGZ +cadger/M +Cadillac/MS +Cadiz/M +Cad/M +cadmium/MS +cadre/SM +cad/SM +caducei +caduceus/M +Caedmon/M +Caesar/MS +caesura/SM +caf/MS +cafeteria/SM +caffeine/SM +caftan/SM +caged/U +Cage/M +cage/MZGDRS +cager/M +cagey/P +cagier +cagiest +cagily +caginess/MS +Cagney/M +Cahokia/M +cahoot/MS +Cahra/M +CAI +Caiaphas/M +caiman's +Caine/M +Cain/MS +Cairistiona/M +cairn/SDM +Cairo/M +caisson/SM +caitiff/MS +Caitlin/M +Caitrin/M +cajole/LGZRSD +cajolement/MS +cajoler/M +cajolery/SM +Cajun/MS +cake/MGDS +cakewalk/SMDG +calabash/SM +calaboose/MS +Calais/M +calamari/S +calamine/GSDM +calamitousness/M +calamitous/YP +calamity/MS +cal/C +calcareousness/M +calcareous/PY +calciferous +calcification/M +calcify/XGNSD +calcimine/GMSD +calcine/SDG +calcite/SM +calcium/SM +Calcomp/M +CalComp/M +CALCOMP/M +calculability/IM +calculable/IP +calculate/AXNGDS +calculated/PY +calculatingly +calculating/U +calculation/AM +calculative +calculator/SM +calculi +calculus/M +Calcutta/M +caldera/SM +Calder/M +Calderon/M +caldron's +Caldwell/M +Caleb/M +Caledonia/M +Cale/M +calendar/MDGS +calender/MDGS +calf/M +calfskin/SM +Calgary/M +Calhoun/M +Caliban/M +caliber/SM +calibrated/U +calibrater's +calibrate/XNGSD +calibrating/A +calibration/M +calibrator/MS +calicoes +calico/M +Calida/M +Calif/M +California/M +Californian/MS +californium/SM +calif's +Caligula/M +Cali/M +caliper/SDMG +caliphate/SM +caliph/M +caliphs +calisthenic/S +calisthenics/M +Callaghan/M +call/AGRDBS +Callahan/M +calla/MS +Calla/MS +Callao/M +callback/S +Callean/M +called/U +callee/M +caller/MS +Calley/M +Callida/M +Callie/M +calligrapher/M +calligraphic +calligraphist/MS +calligraph/RZ +calligraphy/MS +Calli/M +calling/SM +Calliope/M +calliope/SM +callisthenics's +Callisto/M +callosity/MS +callousness/SM +callous/PGSDY +callowness/MS +callow/RTSP +callus/SDMG +Cally/M +calming/Y +calmness/MS +calm/PGTYDRS +Cal/MY +Caloocan/M +caloric/S +calorie/SM +calorific +calorimeter/MS +calorimetric +calorimetry/M +Caltech/M +Calumet/M +calumet/MS +calumniate/NGSDX +calumniation/M +calumniator/SM +calumnious +calumny/MS +calvary/M +Calvary/M +calve/GDS +Calvert/M +calves/M +Calvinism/MS +Calvinistic +Calvinist/MS +Calvin/M +Calv/M +calyces's +Calypso/M +calypso/SM +calyx/MS +Ca/M +CAM +Camacho/M +Camala/M +camaraderie/SM +camber/DMSG +cambial +cambium/SM +Cambodia/M +Cambodian/S +Cambrian/S +cambric/MS +Cambridge/M +camcorder/S +Camden/M +camelhair's +Camella/M +Camellia/M +camellia/MS +Camel/M +Camelopardalis/M +Camelot/M +camel/SM +Camembert/MS +cameo/GSDM +camerae +cameraman/M +cameramen +camera/MS +camerawoman +camerawomen +Cameron/M +Cameroonian/S +Cameroon/SM +came/N +Camey/M +Camila/M +Camile/M +Camilla/M +Camille/M +Cami/M +Camino/M +camion/M +camisole/MS +Cam/M +cammed +Cammie/M +Cammi/M +cam/MS +Cammy/M +Camoens/M +camomile's +camouflage/DRSGZM +camouflager/M +campaigner/M +campaign/ZMRDSG +campanile/SM +campanological +campanologist/SM +campanology/MS +Campbell/M +Campbellsport/M +camper/SM +campesinos +campest +campfire/SM +campground/MS +camphor/MS +Campinas/M +camping/S +Campos +camp's +camp/SCGD +campsite/MS +campus/GSDM +campy/RT +Camry/M +camshaft/SM +Camus/M +Canaanite/SM +Canaan/M +Canada/M +Canadianism/SM +Canadian/S +Canad/M +Canaletto/M +canalization/MS +canalize/GSD +canal/SGMD +canap/S +canard/MS +Canaries +canary/SM +canasta/SM +Canaveral/M +Canberra/M +cancan/SM +cancelate/D +canceled/U +canceler/M +cancellation/MS +cancel/RDZGS +cancer/MS +Cancer/MS +cancerous/Y +Cancun/M +Candace/M +candelabra/S +candelabrum/M +Candice/M +candidacy/MS +Candida/M +candidate/SM +candidature/S +Candide/M +candidly/U +candidness/SM +candid/TRYPS +Candie/M +Candi/SM +candle/GMZRSD +candlelight/SMR +candlelit +candlepower/SM +candler/M +candlestick/SM +Candlewick/M +candlewick/MS +candor/MS +Candra/M +candy/GSDM +Candy/M +canebrake/SM +caner/M +cane/SM +canine/S +caning/M +Canis/M +canister/SGMD +cankerous +canker/SDMG +Can/M +can/MDRSZGJ +cannabis/MS +canned +cannelloni +canner/SM +cannery/MS +Cannes +cannibalism/MS +cannibalistic +cannibalization/SM +cannibalize/GSD +cannibal/SM +cannily/U +canninesses +canniness/UM +canning/M +cannister/SM +cannonade/SDGM +cannonball/SGDM +Cannon/M +cannon/SDMG +cannot +canny/RPUT +canoe/DSGM +canoeist/SM +Canoga/M +canonic +canonicalization +canonicalize/GSD +canonical/SY +canonist/M +canonization/MS +canonized/U +canonize/SDG +canon/SM +Canopus/M +canopy/GSDM +canst +can't +cantabile/S +Cantabrigian +cantaloupe/MS +cantankerousness/SM +cantankerous/PY +cantata/SM +cant/CZGSRD +canted/IA +canteen/MS +Canterbury/M +canter/CM +cantered +cantering +canticle/SM +cantilever/SDMG +canto/MS +cantonal +Cantonese/M +Canton/M +cantonment/SM +canton/MGSLD +Cantor/M +cantor/MS +Cantrell/M +cant's +cants/A +Cantu/M +Canute/M +canvasback/MS +canvas/RSDMG +canvasser/M +canvass/RSDZG +canyon/MS +CAP +capability/ISM +capableness/IM +capable/PI +capabler +capablest +capably/I +capaciousness/MS +capacious/PY +capacitance/SM +capacitate/V +capacitive/Y +capacitor/MS +capacity/IMS +caparison/SDMG +Capek/M +Capella/M +caper/GDM +capeskin/SM +cape/SM +Capet/M +Capetown/M +Caph/M +capillarity/MS +capillary/S +Capistrano/M +capitalism/SM +capitalistic +capitalistically +capitalist/SM +capitalization/SMA +capitalized/AU +capitalizer/M +capitalize/RSDGZ +capitalizes/A +capital/SMY +capita/M +Capitan/M +capitation/CSM +Capitoline/M +Capitol/MS +capitol/SM +capitulate/AXNGSD +capitulation/MA +caplet/S +cap/MDRSZB +Capone/M +capon/SM +capo/SM +Capote/M +capped/UA +capping/M +cappuccino/MS +Cappy/M +Capra/M +Caprice/M +caprice/MS +capriciousness/MS +capricious/PY +Capricorn/MS +Capri/M +caps/AU +capsicum/MS +capsize/SDG +capstan/MS +capstone/MS +capsular +capsule/MGSD +capsulize/GSD +captaincy/MS +captain/SGDM +caption/GSDRM +captiousness/SM +captious/PY +captivate/XGNSD +captivation/M +captivator/SM +captive/MS +captivity/SM +Capt/M +captor/SM +capture/AGSD +capturer/MS +capt/V +Capulet/M +Caputo/M +Caracalla/M +Caracas/M +caracul's +carafe/SM +Caralie/M +Cara/M +caramelize/SDG +caramel/MS +carapace/SM +carapaxes +carat/SM +Caravaggio/M +caravan/DRMGS +caravaner/M +caravansary/MS +caravanserai's +caravel/MS +caraway/MS +carbide/MS +carbine/MS +carbohydrate/MS +carbolic +Carboloy/M +carbonaceous +carbonate/SDXMNG +carbonation/M +Carbondale/M +Carbone/MS +carbonic +carboniferous +Carboniferous +carbonization/SAM +carbonizer/AS +carbonizer's +carbonizes/A +carbonize/ZGRSD +carbon/MS +carbonyl/M +carborundum +Carborundum/MS +carboy/MS +carbuncle/SDM +carbuncular +carburetor/MS +carburetter/S +carburettor/SM +carcase/MS +carcass/SM +Carce/M +carcinogenic +carcinogenicity/MS +carcinogen/SM +carcinoma/SM +cardamom/MS +cardboard/MS +card/EDRSG +Cardenas/M +carder/MS +carder's/E +cardholders +cardiac/S +Cardiff/M +cardigan/SM +cardinality/SM +cardinal/SYM +carding/M +Cardin/M +Cardiod/M +cardiogram/MS +cardiograph/M +cardiographs +cardioid/M +cardiologist/SM +cardiology/MS +cardiomegaly/M +cardiopulmonary +cardiovascular +card's +cardsharp/ZSMR +CARE +cared/U +careen/DSG +careerism/M +careerist/MS +career/SGRDM +carefree +carefuller +carefullest +carefulness/MS +careful/PY +caregiver/S +carelessness/MS +careless/YP +Care/M +Carena/M +Caren/M +carer/M +care/S +Caresa/M +Caressa/M +Caresse/M +caresser/M +caressing/Y +caressive/Y +caress/SRDMVG +caretaker/SM +caret/SM +careworn +Carey/M +carfare/MS +cargoes +cargo/M +carhopped +carhopping +carhop/SM +Caria/M +Caribbean/S +Carib/M +caribou/MS +caricature/GMSD +caricaturisation +caricaturist/MS +caricaturization +Carie/M +caries/M +carillonned +carillonning +carillon/SM +Caril/M +Carilyn/M +Cari/M +Carina/M +Carine/M +caring/U +Carin/M +Cariotta/M +carious +Carissa/M +Carita/M +Caritta/M +carjack/GSJDRZ +Carla/M +Carlee/M +Carleen/M +Carlene/M +Carlen/M +Carletonian/M +Carleton/M +Carley/M +Carlie/M +Carlina/M +Carline/M +Carling/M +Carlin/M +Carlita/M +Carl/MNG +carload/MSG +Carlo/SM +Carlota/M +Carlotta/M +Carlsbad/M +Carlson/M +Carlton/M +Carlye/M +Carlyle/M +Carly/M +Carlyn/M +Carlynne/M +Carlynn/M +Carma/M +Carmela/M +Carmelia/M +Carmelina/M +Carmelita/M +Carmella/M +Carmelle/M +Carmel/M +Carmelo/M +Carmencita/M +Carmen/M +Carmichael/M +Carmina/M +Carmine/M +carmine/MS +Carmita/M +Car/MNY +Carmon/M +carnage/MS +carnality/SM +carnal/Y +Carnap/M +carnation/IMS +Carnegie/M +carnelian/SM +Carney/M +carney's +carnival/MS +carnivore/SM +carnivorousness/MS +carnivorous/YP +Carnot/M +Carny/M +carny/SDG +carob/SM +Carola/M +Carolan/M +Carolann/M +Carolee/M +Carole/M +caroler/M +Carolina/MS +Caroline/M +Carolingian +Carolinian/S +Carolin/M +Caroljean/M +Carol/M +carol/SGZMRD +Carolus/M +Carolyne/M +Carolyn/M +Carolynn/M +Caro/M +carom/GSMD +Caron/M +carotene/MS +carotid/MS +carousal/MS +carousel/MS +carouser/M +carouse/SRDZG +carpal/SM +Carpathian/MS +carpel/SM +carpenter/DSMG +carpentering/M +Carpenter/M +carpentry/MS +carper/M +carpetbagged +carpetbagger/MS +carpetbagging +carpetbag/MS +carpeting/M +carpet/MDJGS +carpi/M +carping/Y +carp/MDRSGZ +carpool/DGS +carport/MS +carpus/M +carrageen/M +Carree/M +carrel/SM +carriage/SM +carriageway/SM +Carrie/M +carrier/M +Carrier/M +Carrillo/M +Carri/M +carrion/SM +Carrissa/M +Carr/M +Carroll/M +Carrol/M +carrot/MS +carroty/RT +carrousel's +carryall/MS +Carry/MR +carryout/S +carryover/S +carry/RSDZG +carsickness/SM +carsick/P +Carson/M +cartage/MS +cartel/SM +carte/M +carter/M +Carter/M +Cartesian +Carthage/M +Carthaginian/S +carthorse/MS +Cartier/M +cartilage/MS +cartilaginous +cartload/MS +cart/MDRGSZ +Cart/MR +cartographer/MS +cartographic +cartography/MS +carton/GSDM +cartoon/GSDM +cartoonist/MS +cartridge/SM +cartwheel/MRDGS +Cartwright/M +Carty/RM +Caruso/M +carve/DSRJGZ +carven +carver/M +Carver/M +carving/M +caryatid/MS +Caryl/M +Cary/M +Caryn/M +car/ZGSMDR +casaba/SM +Casablanca/M +Casals/M +Casandra/M +Casanova/SM +Casar/M +casbah/M +cascade/MSDG +Cascades/M +cascara/MS +casebook/SM +case/DSJMGL +cased/U +caseharden/SGD +casein/SM +caseload/MS +Case/M +casement/SM +caseworker/M +casework/ZMRS +Casey/M +cashbook/SM +cashew/MS +cash/GZMDSR +cashier/SDMG +cashless +Cash/M +cashmere/MS +Casie/M +Casi/M +casing/M +casino/MS +casket/SGMD +cask/GSDM +Caspar/M +Casper/M +Caspian +Cass +Cassandra/SM +Cassandre/M +Cassandry/M +Cassatt/M +Cassaundra/M +cassava/MS +casserole/MGSD +cassette/SM +Cassey/M +cassia/MS +Cassie/M +Cassi/M +cassino's +Cassiopeia/M +Cassite/M +Cassius/M +cassock/SDM +Cassondra/M +cassowary/SM +Cassy/M +Castaneda/M +castanet/SM +castaway/SM +castellated +caste/MHS +caster/M +cast/GZSJMDR +castigate/XGNSD +castigation/M +castigator/SM +Castile's +Castillo/M +casting/M +castle/GMSD +castoff/S +Castor/M +castor's +castrate/DSNGX +castration/M +Castries/M +Castro/M +casts/A +casualness/SM +casual/SYP +casualty/SM +casuistic +casuist/MS +casuistry/SM +cataclysmal +cataclysmic +cataclysm/MS +catacomb/MS +catafalque/SM +Catalan/MS +catalepsy/MS +cataleptic/S +Catalina/M +cataloger/M +catalog/SDRMZG +Catalonia/M +catalpa/SM +catalysis/M +catalyst/SM +catalytic +catalytically +catalyze/DSG +catamaran/MS +catapult/MGSD +cataract/MS +Catarina/M +catarrh/M +catarrhs +catastrophe/SM +catastrophic +catastrophically +catatonia/MS +catatonic/S +Catawba/M +catbird/MS +catboat/SM +catcall/SMDG +catchable/U +catchall/MS +catch/BRSJLGZ +catcher/M +catchment/SM +catchpenny/S +catchphrase/S +catchup/MS +catchword/MS +catchy/TR +catechism/MS +catechist/SM +catechize/SDG +catecholamine/MS +categoric +categorical/Y +categorization/MS +categorized/AU +categorize/RSDGZ +category/MS +Cate/M +catenate/NF +catenation/MF +catercorner +caterer/M +cater/GRDZ +Caterina/M +catering/M +Caterpillar +caterpillar/SM +caterwaul/DSG +catfish/MS +catgut/SM +Catha/M +Catharina/M +Catharine/M +catharses +catharsis/M +cathartic/S +Cathay/M +cathedral/SM +Cathee/M +Catherina/M +Catherine/M +Catherin/M +Cather/M +Cathe/RM +catheterize/GSD +catheter/SM +Cathie/M +Cathi/M +Cathleen/M +Cathlene/M +cathode/MS +cathodic +catholicism +Catholicism/SM +catholicity/MS +catholic/MS +Catholic/S +Cathrine/M +Cathrin/M +Cathryn/M +Cathyleen/M +Cathy/M +Catie/M +Catiline/M +Cati/M +Catina/M +cationic +cation/MS +catkin/SM +Catlaina/M +Catlee/M +catlike +Catlin/M +catnapped +catnapping +catnap/SM +catnip/MS +Cato/M +Catrina/M +Catriona/M +Catskill/SM +cat/SMRZ +catsup's +cattail/SM +catted +cattery/M +cattily +cattiness/SM +catting +cattle/M +cattleman/M +cattlemen +Catt/M +catty/PRST +Catullus/M +CATV +catwalk/MS +Caty/M +Caucasian/S +Caucasoid/S +Caucasus/M +Cauchy/M +caucus/SDMG +caudal/Y +caught/U +cauldron/MS +cauliflower/MS +caulker/M +caulk/JSGZRD +causality/SM +causal/YS +causate/XVN +causation/M +causative/SY +cause/DSRGMZ +caused/U +causeless +causerie/MS +causer/M +causeway/SGDM +caustically +causticity/MS +caustic/YS +cauterization/SM +cauterized/U +cauterize/GSD +cautionary +cautioner/M +caution/GJDRMSZ +cautiousness's/I +cautiousness/SM +cautious/PIY +cavalcade/MS +cavalierness/M +cavalier/SGYDP +cavalryman/M +cavalrymen +cavalry/MS +caveat/SM +caveatted +caveatting +cave/GFRSD +caveman/M +cavemen +Cavendish/M +caver/M +cavern/GSDM +cavernous/Y +cave's +caviar/MS +caviler/M +cavil/SJRDGZ +caving/MS +cavity/MFS +cavort/SDG +Cavour/M +caw/SMDG +Caxton/M +Caye/M +Cayenne/M +cayenne/SM +Cayla/M +Cayman/M +cayman/SM +cay's +cay/SC +Cayuga/M +cayuse/SM +Caz/M +Cazzie/M +c/B +CB +CBC +Cb/M +CBS +cc +Cchaddie/M +CCTV +CCU +CD +CDC/M +Cd/M +CDT +Ce +cease/DSCG +ceasefire/S +ceaselessness/SM +ceaseless/YP +ceasing/U +Ceausescu/M +Cebuano/M +Cebu/M +ceca +cecal +Cecelia/M +Cece/M +Cecile/M +Ceciley/M +Cecilia/M +Cecilio/M +Cecilius/M +Cecilla/M +Cecil/M +Cecily/M +cecum/M +cedar/SM +ceded/A +cede/FRSDG +ceder's/F +ceder/SM +cedes/A +cedilla/SM +ceding/A +Ced/M +Cedric/M +ceilidh/M +ceiling/MDS +Ceil/M +celandine/MS +Celanese/M +Celebes's +celebrant/MS +celebratedness/M +celebrated/P +celebrate/XSDGN +celebration/M +celebrator/MS +celebratory +celebrity/MS +Cele/M +Celene/M +celerity/SM +celery/SM +Celesta/M +celesta/SM +Celeste/M +celestial/YS +Celestia/M +Celestina/M +Celestine/M +Celestyna/M +Celestyn/M +Celia/M +celibacy/MS +celibate/SM +Celie/M +Celina/M +Celinda/M +Celine/M +Celinka/M +Celisse/M +Celka/M +cellarer/M +cellar/RDMGS +Celle/M +cell/GMDS +Cellini/M +cellist/SM +Cello/M +cello/MS +cellophane/SM +cellphone/S +cellular/SY +cellulite/S +celluloid/SM +cellulose/SM +Celsius/S +Celtic/SM +Celt/MS +cementa +cementer/M +cementum/SM +cement/ZGMRDS +cemetery/MS +cenobite/MS +cenobitic +cenotaph/M +cenotaphs +Cenozoic +censer/MS +censored/U +censor/GDMS +censorial +censoriousness/MS +censorious/YP +censorship/MS +censure/BRSDZMG +censurer/M +census/SDMG +centaur/SM +Centaurus/M +centavo/SM +centenarian/MS +centenary/S +centennial/YS +center/AC +centerboard/SM +centered +centerer/S +centerfold/S +centering/SM +centerline/SM +centerpiece/SM +center's +Centigrade +centigrade/S +centigram/SM +centiliter/MS +centime/SM +centimeter/SM +centipede/MS +Centralia/M +centralism/M +centralist/M +centrality/MS +centralization/CAMS +centralize/CGSD +centralizer/SM +centralizes/A +central/STRY +centrefold's +Centrex +CENTREX/M +centric/F +centrifugal/SY +centrifugate/NM +centrifugation/M +centrifuge/GMSD +centripetal/Y +centrist/MS +centroid/MS +cent/SZMR +centurion/MS +century/MS +CEO +cephalic/S +Cepheid +Cepheus/M +ceramicist/S +ceramic/MS +ceramist/MS +cerate/MD +Cerberus/M +cereal/MS +cerebellar +cerebellum/MS +cerebra +cerebral/SY +cerebrate/XSDGN +cerebration/M +cerebrum/MS +cerement/SM +ceremonial/YSP +ceremoniousness/MS +ceremoniousness's/U +ceremonious/YUP +ceremony/MS +Cerenkov/M +Ceres/M +Cerf/M +cerise/SM +cerium/MS +cermet/SM +CERN/M +certainer +certainest +certainty/UMS +certain/UY +cert/FS +certifiable +certifiably +certificate/SDGM +certification/AMC +certified/U +certifier/M +certify/DRSZGNX +certiorari/M +certitude/ISM +cerulean/MS +Cervantes/M +cervical +cervices/M +cervix/M +Cesarean +cesarean/S +Cesare/M +Cesar/M +Cesaro/M +cesium/MS +cessation/SM +cession/FAMSK +Cessna/M +cesspit/M +cesspool/SM +Cesya/M +cetacean/S +cetera/S +Cetus/M +Ceylonese +Ceylon/M +Cezanne/S +cf +CF +CFC +Cf/M +CFO +cg +Chablis/SM +Chaddie/M +Chadd/M +Chaddy/M +Chadian/S +Chad/M +Chadwick/M +chafe/GDSR +chafer/M +chaffer/DRG +chafferer/M +Chaffey/M +chaff/GRDMS +chaffinch/SM +Chagall/M +chagrin/DGMS +Chaim/M +chainlike +chain's +chainsaw/SGD +chain/SGUD +chairlady/M +chairlift/MS +chairman/MDGS +chairmanship/MS +chairmen +chairperson/MS +chair/SGDM +chairwoman/M +chairwomen +chaise/SM +chalcedony/MS +Chaldea/M +Chaldean/M +chalet/SM +chalice/DSM +chalkboard/SM +chalk/DSMG +chalkiness/S +chalkline +chalky/RPT +challenged/U +challenger/M +challenge/ZGSRD +challenging/Y +challis/SM +Chalmers +chamberer/M +Chamberlain/M +chamberlain/MS +chambermaid/MS +chamberpot/S +Chambers/M +chamber/SZGDRM +chambray/MS +chameleon/SM +chamfer/DMGS +chammy's +chamois/DSMG +chamomile/MS +champagne/MS +champaign/M +champ/DGSZ +champion/MDGS +championship/MS +Champlain/M +chanced/M +chance/GMRSD +chancellery/SM +chancellorship/SM +chancellor/SM +Chancellorsville/M +chancel/SM +Chance/M +chancery/SM +Chancey/M +chanciness/S +chancing/M +chancre/SM +chancy/RPT +Chandal/M +Chanda/M +chandelier/SM +Chandigarh/M +Chandler/M +chandler/MS +Chandragupta/M +Chandra/M +Chandrasekhar/M +Chandy/M +Chanel/M +Chane/M +Chaney/M +Changchun/M +changeabilities +changeability/UM +changeableness/SM +changeable/U +changeably/U +changed/U +change/GZRSD +changeless +changeling/M +changeover/SM +changer/M +changing/U +Chang/M +Changsha/M +Chan/M +Channa/M +channeler/M +channeling/M +channelization/SM +channelize/GDS +channellings +channel/MDRZSG +Channing/M +chanson/SM +Chantalle/M +Chantal/M +chanter/M +chanteuse/MS +chantey/SM +chanticleer/SM +Chantilly/M +chantry/MS +chant/SJGZMRD +chanty's +Chanukah's +Chao/M +chaos/SM +chaotic +chaotically +chaparral/MS +chapbook/SM +chapeau/MS +chapel/MS +chaperonage/MS +chaperoned/U +chaperone's +chaperon/GMDS +chaplaincy/MS +chaplain/MS +chaplet/SM +Chaplin/M +Chapman/M +chap/MS +Chappaquiddick/M +chapped +chapping +chapter/SGDM +Chara +charabanc/MS +characterful +characteristically/U +characteristic/SM +characterizable/MS +characterization/MS +characterize/DRSBZG +characterized/U +characterizer/M +characterless +character/MDSG +charade/SM +charbroil/SDG +charcoal/MGSD +Chardonnay +chardonnay/S +chard/SM +chargeableness/M +chargeable/P +charged/U +charge/EGRSDA +charger/AME +chargers +char/GS +Charil/M +charily +chariness/MS +Charin/M +charioteer/GSDM +Chariot/M +chariot/SMDG +Charis +charisma/M +charismata +charismatically +charismatic/S +Charissa/M +Charisse/M +charitablenesses +charitableness/UM +charitable/UP +charitably/U +Charita/M +Charity/M +charity/MS +charlady/M +Charla/M +charlatanism/MS +charlatanry/SM +charlatan/SM +Charlean/M +Charleen/M +Charlemagne/M +Charlena/M +Charlene/M +Charles/M +Charleston/SM +Charley/M +Charlie/M +Charline/M +Charlot/M +Charlotta/M +Charlotte/M +Charlottesville/M +Charlottetown/M +Charlton/M +Charmaine/M +Charmain/M +Charmane/M +charmer/M +Charmian/M +Charmine/M +charming/RYT +Charmin/M +Charmion/M +charmless +charm/SGMZRD +Charolais +Charo/M +Charon/M +charred +charring +charted/U +charter/AGDS +chartered/U +charterer/SM +charter's +chartist/SM +Chartres/M +chartreuse/MS +chartroom/S +chart/SJMRDGBZ +charwoman/M +charwomen +Charybdis/M +Charyl/M +chary/PTR +Chas +chase/DSRGZ +Chase/M +chaser/M +chasing/M +Chasity/M +chasm/SM +chassis/M +chastely +chasteness/SM +chasten/GSD +chaste/UTR +chastisement/SM +chastiser/M +chastise/ZGLDRS +Chastity/M +chastity/SM +chastity's/U +chasuble/SM +Chateaubriand +chteau/M +chateaus +chteaux +chtelaine/SM +chat/MS +Chattahoochee/M +Chattanooga/M +chatted +chattel/MS +chatterbox/MS +chatterer/M +Chatterley/M +chatter/SZGDRY +Chatterton/M +chattily +chattiness/SM +chatting +chatty/RTP +Chaucer/M +chauffeur/GSMD +Chaunce/M +Chauncey/M +Chautauqua/M +chauvinism/MS +chauvinistic +chauvinistically +chauvinist/MS +Chavez/M +chaw +Chayefsky/M +cheapen/DG +cheapish +cheapness/MS +cheapskate/MS +cheap/YRNTXSP +cheater/M +cheat/RDSGZ +Chechen/M +Chechnya/M +checkable/U +checkbook/MS +checked/UA +checkerboard/MS +checker/DMG +check/GZBSRDM +checklist/S +checkmate/MSDG +checkoff/SM +checkout/S +checkpoint/MS +checkroom/MS +check's/A +checks/A +checksummed +checksumming +checksum/SM +checkup/MS +Cheddar/MS +cheddar/S +cheekbone/SM +cheek/DMGS +cheekily +cheekiness/SM +cheeky/PRT +cheep/GMDS +cheerer/M +cheerfuller +cheerfullest +cheerfulness/MS +cheerful/YP +cheerily +cheeriness/SM +cheerio/S +Cheerios/M +cheerleader/SM +cheerlessness/SM +cheerless/PY +cheers/S +cheery/PTR +cheer/YRDGZS +cheeseburger/SM +cheesecake/SM +cheesecloth/M +cheesecloths +cheeseparing/S +cheese/SDGM +cheesiness/SM +cheesy/PRT +cheetah/M +cheetahs +Cheeto/M +Cheever/M +cheffed +cheffing +chef/SM +Chekhov/M +chelate/XDMNG +chelation/M +Chelsae/M +Chelsea/M +Chelsey/M +Chelsie/M +Chelsy/M +Chelyabinsk/M +chem +Che/M +chemic +chemical/SYM +chemiluminescence/M +chemiluminescent +chemise/SM +chemistry/SM +chemist/SM +chemotherapeutic/S +chemotherapy/SM +chemurgy/SM +Chengdu +Cheng/M +chenille/SM +Chen/M +Cheops/M +Chere/M +Cherey/M +Cherianne/M +Cherice/M +Cherida/M +Cherie/M +Cherilyn/M +Cherilynn/M +Cheri/M +Cherin/M +Cherise/M +cherisher/M +cherish/GDRS +Cherish/M +Cheriton/M +Cherlyn/M +Cher/M +Chernenko/M +Chernobyl/M +Cherokee/MS +cheroot/MS +Cherri/M +Cherrita/M +Cherry/M +cherry/SM +chert/MS +cherubic +cherubim/S +cherub/SM +chervil/MS +Cherye/M +Cheryl/M +Chery/M +Chesapeake/M +Cheshire/M +Cheslie/M +chessboard/SM +chessman/M +chessmen +chess/SM +Chesterfield/M +chesterfield/MS +Chester/M +Chesterton/M +chestful/S +chest/MRDS +chestnut/SM +Cheston/M +chesty/TR +Chet/M +Chevalier/M +chevalier/SM +Cheviot/M +cheviot/S +Chev/M +Chevrolet/M +chevron/DMS +Chevy/M +chewer/M +chew/GZSDR +chewiness/S +chewy/RTP +Cheyenne/SM +chg +chge +Chiang/M +chianti/M +Chianti/S +chiaroscuro/SM +Chiarra/M +Chiba/M +Chicagoan/SM +Chicago/M +Chicana/MS +chicane/MGDS +chicanery/MS +Chicano/MS +chichi/RTS +chickadee/SM +Chickasaw/SM +chickenfeed +chicken/GDM +chickenhearted +chickenpox/MS +Chickie/M +Chick/M +chickpea/MS +chickweed/MS +chick/XSNM +Chicky/M +chicle/MS +Chic/M +chicness/S +Chico/M +chicory/MS +chic/SYRPT +chide/GDS +chiding/Y +chiefdom/MS +chieftain/SM +chief/YRMST +chiffonier/MS +chiffon/MS +chigger/MS +chignon/MS +Chihuahua/MS +chihuahua/S +chilblain/MS +childbearing/MS +childbirth/M +childbirths +childcare/S +childes +child/GMYD +childhood/MS +childishness/SM +childish/YP +childlessness/SM +childless/P +childlikeness/M +childlike/P +childminders +childproof/GSD +childrearing +children/M +Chilean/S +Chile/MS +chile's +chilies +chili/M +chiller/M +chilliness/MS +chilling/Y +chilli's +chill/MRDJGTZPS +chillness/MS +chilly/TPRS +Chilton/M +Chi/M +chimaera's +chimaerical +Chimborazo/M +chime/DSRGMZ +Chimera/S +chimera/SM +chimeric +chimerical +chimer/M +Chimiques +chimney/SMD +chimpanzee/SM +chimp/MS +chi/MS +Chimu/M +Ch'in +China/M +Chinaman/M +Chinamen +china/MS +Chinatown/SM +chinchilla/SM +chine/MS +Chinese/M +Ching/M +chink/DMSG +chinless +Chin/M +chinned +chinner/S +chinning +chino/MS +Chinook/MS +chin/SGDM +chinstrap/S +chintz/SM +chintzy/TR +chipboard/M +Chipewyan/M +Chip/M +chipmunk/SM +chipped +Chippendale/M +chipper/DGS +Chippewa/MS +chipping/MS +chip/SM +Chiquia/M +Chiquita/M +chiral +Chirico/M +chirography/SM +chiropodist/SM +chiropody/MS +chiropractic/MS +chiropractor/SM +chirp/GDS +chirpy/RT +chirrup/DGS +chiseler/M +chisel/ZGSJMDR +Chisholm/M +Chisinau/M +chitchat/SM +chitchatted +chitchatting +chitinous +chitin/SM +chit/SM +Chittagong/M +chitterlings +chivalric +chivalrously/U +chivalrousness/MS +chivalrous/YP +chivalry/SM +chive/GMDS +chivvy/D +chivying +chlamydiae +chlamydia/S +Chloe/M +Chloette/M +Chlo/M +chloral/MS +chlorate/M +chlordane/MS +chloride/MS +chlorinated/C +chlorinates/C +chlorinate/XDSGN +chlorination/M +chlorine/MS +Chloris +chlorofluorocarbon/S +chloroform/DMSG +chlorophyll/SM +chloroplast/MS +chloroquine/M +chm +Ch/MGNRS +chockablock +chock/SGRDM +chocoholic/S +chocolate/MS +chocolaty +Choctaw/MS +choiceness/M +choice/RSMTYP +choirboy/MS +choirmaster/SM +choir/SDMG +chokeberry/M +chokecherry/SM +choke/DSRGZ +choker/M +chokes/M +choking/Y +cholera/SM +choleric +choler/SM +cholesterol/SM +choline/M +cholinesterase/M +chomp/DSG +Chomsky/M +Chongqing +choose/GZRS +chooser/M +choosiness/S +choosy/RPT +chophouse/SM +Chopin/M +chopped +chopper/SDMG +choppily +choppiness/MS +chopping +choppy/RPT +chop/S +chopstick/SM +chorale/MS +choral/SY +chordal +chordata +chordate/MS +chording/M +chord/SGMD +chorea/MS +chore/DSGNM +choreographer/M +choreographic +choreographically +choreographs +choreography/MS +choreograph/ZGDR +chorines +chorion/M +chorister/SM +choroid/S +chortler/M +chortle/ZGDRS +chorus/GDSM +chosen/U +chose/S +Chou/M +chowder/SGDM +chow/DGMS +Chretien/M +Chris/M +chrism/SM +chrissake +Chrisse/M +Chrissie/M +Chrissy/M +Christabella/M +Christabel/M +Christalle/M +Christal/M +Christa/M +Christan/M +Christchurch/M +Christean/M +Christel/M +Christendom/MS +christened/U +christening/SM +Christen/M +christen/SAGD +Christensen/M +Christenson/M +Christiana/M +Christiane/M +Christianity/SM +Christianize/GSD +Christian/MS +Christiano/M +Christiansen/M +Christians/N +Christie/SM +Christi/M +Christina/M +Christine/M +Christin/M +Christlike +Christmas/SM +Christmastide/SM +Christmastime/S +Christoffel/M +Christoffer/M +Christoforo/M +Christoper/M +Christophe/M +Christopher/M +Christoph/MR +Christophorus/M +Christos/M +Christ/SMN +Christye/M +Christyna/M +Christy's +Chrisy/M +chroma/M +chromate/M +chromatically +chromaticism/M +chromaticness/M +chromatic/PS +chromatics/M +chromatin/MS +chromatogram/MS +chromatograph +chromatographic +chromatography/M +chrome/GMSD +chromic +chromite/M +chromium/SM +chromosomal +chromosome/MS +chromosphere/M +chronically +chronicled/U +chronicler/M +chronicle/SRDMZG +chronic/S +chronograph/M +chronographs +chronography +chronological/Y +chronologist/MS +chronology/MS +chronometer/MS +chronometric +Chrotoem/M +chrysalids +chrysalis/SM +Chrysa/M +chrysanthemum/MS +Chrysler/M +Chrysostom/M +Chrystal/M +Chrystel/M +Chryste/M +chubbiness/SM +chubby/RTP +chub/MS +Chucho/M +chuck/GSDM +chuckhole/SM +chuckle/DSG +chuckling/Y +Chuck/M +chuff/DM +chugged +chugging +chug/MS +Chukchi/M +chukka/S +Chumash/M +chummed +chummily +chumminess/MS +chumming +chum/MS +chummy/SRTP +chumping/M +chump/MDGS +Chungking's +Chung/M +chunkiness/MS +chunk/SGDM +chunky/RPT +chuntering +churchgoer/SM +churchgoing/SM +Churchillian +Churchill/M +churchliness/M +churchly/P +churchman/M +church/MDSYG +churchmen +Church/MS +churchwarden/SM +churchwoman/M +churchwomen +churchyard/SM +churlishness/SM +churlish/YP +churl/SM +churner/M +churning/M +churn/SGZRDM +chute/DSGM +chutney/MS +chutzpah/M +chutzpahs +chutzpa/SM +Chuvash/M +ch/VT +chyme/SM +Ci +CIA +ciao/S +cicada/MS +cicatrice/S +cicatrix's +Cicely/M +Cicero/M +cicerone/MS +ciceroni +Ciceronian +Cicily/M +CID +cider's/C +cider/SM +Cid/M +Ciel/M +cigarette/MS +cigarillo/MS +cigar/SM +cilantro/S +cilia/M +ciliate/FDS +ciliately +cilium/M +Cilka/M +cinch/MSDG +cinchona/SM +Cincinnati/M +cincture/MGSD +Cinda/M +Cindee/M +Cindelyn/M +cinder/DMGS +Cinderella/MS +Cindie/M +Cindi/M +Cindra/M +Cindy/M +cine/M +cinema/SM +cinematic +cinematographer/MS +cinematographic +cinematography/MS +Cinerama/M +cinnabar/MS +Cinnamon/M +cinnamon/MS +ciphered/C +cipher/MSGD +ciphers/C +cir +circa +circadian +Circe/M +circler/M +circle/RSDGM +circlet/MS +circuital +circuit/GSMD +circuitousness/MS +circuitous/YP +circuitry/SM +circuity/MS +circulant +circularity/SM +circularize/GSD +circularness/M +circular/PSMY +circulate/ASDNG +circulation/MA +circulations +circulative +circulatory +circumcise/DRSXNG +circumcised/U +circumciser/M +circumcision/M +circumference/SM +circumferential/Y +circumflex/MSDG +circumlocution/MS +circumlocutory +circumnavigate/DSNGX +circumnavigational +circumnavigation/M +circumpolar +circumscribe/GSD +circumscription/SM +circumspection/SM +circumspect/Y +circumsphere +circumstance/SDMG +circumstantial/YS +circumvention/MS +circumvent/SBGD +circus/SM +Cirillo/M +Cirilo/M +Ciro/M +cirque/SM +cirrhoses +cirrhosis/M +cirrhotic/S +cirri/M +cirrus/M +Cissiee/M +Cissy/M +cistern/SM +citadel/SM +citations/I +citation/SMA +cit/DSG +cite/ISDAG +Citibank/M +citified +citizenry/SM +citizenship/MS +citizen/SYM +citrate/DM +citric +Citroen/M +citronella/MS +citron/MS +citrus/SM +city/DSM +cityscape/MS +citywide +civet/SM +civic/S +civics/M +civilian/SM +civility/IMS +civilizational/MS +civilization/AMS +civilizedness/M +civilized/PU +civilize/DRSZG +civilizer/M +civilizes/AU +civil/UY +civvies +ck/C +clack/SDG +cladding/SM +clads +clad/U +Claiborne/M +Claiborn/M +claimable +claimant/MS +claim/CDRSKAEGZ +claimed/U +claimer/KMACE +Claire/M +Clair/M +Clairol/M +clairvoyance/MS +clairvoyant/YS +clambake/MS +clamberer/M +clamber/SDRZG +clammed +clammily +clamminess/MS +clamming +clam/MS +clammy/TPR +clamorer/M +clamor/GDRMSZ +clamorousness/UM +clamorous/PUY +clampdown/SM +clamper/M +clamp/MRDGS +clamshell/MS +Clancy/M +clandestineness/M +clandestine/YP +clanger/M +clangor/MDSG +clangorous/Y +clang/SGZRD +clanking/Y +clank/SGDM +clan/MS +clannishness/SM +clannish/PY +clansman/M +clansmen +clapboard/SDGM +Clapeyron/M +clapped +clapper/GMDS +clapping +clap/S +Clapton/M +claptrap/SM +claque/MS +Clarabelle/M +Clara/M +Clarance/M +Clare/M +Claremont/M +Clarence/M +Clarendon/M +Claresta/M +Clareta/M +claret/MDGS +Claretta/M +Clarette/M +Clarey/M +Claribel/M +Clarice/M +Clarie/M +clarification/M +clarifier/M +clarify/NGXDRS +Clari/M +Clarinda/M +Clarine/M +clarinetist/SM +clarinet/SM +clarinettist's +clarion/GSMD +Clarissa/M +Clarisse/M +Clarita/M +clarities +clarity/UM +Clarke/M +Clark/M +Clarridge/M +Clary/M +clasher/M +clash/RSDG +clasped/M +clasper/M +clasp's +clasp/UGSD +classer/M +class/GRSDM +classical/Y +classicism/SM +classicist/SM +classic/S +classics/M +classifiable/U +classification/AMC +classificatory +classified/S +classifier/SM +classify/CNXASDG +classiness/SM +classless/P +classmate/MS +classroom/MS +classwork/M +classy/PRT +clatterer/M +clattering/Y +clatter/SGDR +clattery +Claudelle/M +Claudell/M +Claude/M +Claudetta/M +Claudette/M +Claudia/M +Claudian/M +Claudianus/M +Claudie/M +Claudina/M +Claudine/M +Claudio/M +Claudius/M +clausal +clause/MS +Clausen/M +Clausewitz/M +Clausius/M +Claus/NM +claustrophobia/SM +claustrophobic +clave/RM +clave's/F +clavichord/SM +clavicle/MS +clavier/MS +clawer/M +claw/GDRMS +Clayborne/M +Clayborn/M +Claybourne/M +clayey +clayier +clayiest +Clay/M +clay/MDGS +claymore/MS +Clayson/M +Clayton/M +Clea/M +cleanable +cleaner/MS +cleaning/SM +cleanliness/UMS +cleanly/PRTU +cleanness/MSU +cleanse +cleanser/M +cleans/GDRSZ +cleanup/MS +clean/UYRDPT +clearance/MS +clearcut +clearer/M +clearheadedness/M +clearheaded/PY +clearinghouse/S +clearing/MS +clearly +clearness/MS +clears +clear/UTRD +Clearwater/M +clearway/M +cleat/MDSG +cleavage/MS +cleaver/M +cleave/RSDGZ +Cleavland/M +clef/SM +cleft/MDGS +clematis/MS +clemence +Clemenceau/M +Clemence/M +clemency/ISM +Clemente/M +Clementia/M +Clementina/M +Clementine/M +Clementius/M +clement/IY +Clement/MS +clements +Clemmie/M +Clemmy/M +Clemons +Clemson/M +Clem/XM +clenches +clenching +clench/UD +Cleo/M +Cleon/M +Cleopatra/M +Clerc/M +clerestory/MS +clergyman/M +clergymen +clergy/MS +clergywoman +clergywomen +clericalism/SM +clerical/YS +cleric/SM +Clerissa/M +clerk/SGYDM +clerkship/MS +Cletis +Cletus/M +Cleveland/M +Cleve/M +cleverness/SM +clever/RYPT +Clevey/M +Clevie/M +clevis/SM +clew/DMGS +cl/GJ +Cliburn/M +clichd +clich/SM +clicker/M +click/GZSRDM +clientle/SM +client/SM +cliffhanger/MS +cliffhanging +Cliff/M +Clifford/M +cliff/SM +Clifton/M +climacteric/SM +climactic +climate/MS +climatic +climatically +climatological/Y +climatologist/SM +climatology/MS +climax/MDSG +climbable/U +climb/BGZSJRD +climbdown +climbed/U +climber/M +clime/SM +Clim/M +clinch/DRSZG +clincher/M +clinching/Y +Cline/M +clinger/MS +clinging +cling/U +clingy/TR +clinical/Y +clinician/MS +clinic/MS +clinker/GMD +clink/RDGSZ +clinometer/MIS +Clint/M +Clinton/M +Clio/M +cliometrician/S +cliometric/S +clipboard/SM +clipped/U +clipper/MS +clipping/SM +clip/SM +clique/SDGM +cliquey +cliquier +cliquiest +cliquishness/SM +cliquish/YP +clitoral +clitorides +clitoris/MS +Clive/M +cloacae +cloaca/M +cloakroom/MS +cloak's +cloak/USDG +clobber/DGS +cloche/MS +clocker/M +clockmaker/M +clock/SGZRDMJ +clockwatcher +clockwise +clockwork/MS +clodded +clodding +cloddishness/M +cloddish/P +clodhopper/SM +clod/MS +Cloe/M +clogged/U +clogging/U +clog's +clog/US +cloisonn +cloisonnes +cloister/MDGS +cloistral +Clo/M +clomp/MDSG +clonal +clone/DSRGMZ +clonk/SGD +clopped +clopping +clop/S +Cloris/M +closed/U +close/EDSRG +closefisted +closely +closemouthed +closeness/MS +closeout/MS +closer/EM +closers +closest +closet/MDSG +closeup/S +closing/S +closured +closure/EMS +closure's/I +closuring +clothbound +clothesbrush +clotheshorse/MS +clothesline/SDGM +clothesman +clothesmen +clothespin/MS +clothe/UDSG +cloth/GJMSD +clothier/MS +clothing/M +Clotho/M +cloths +Clotilda/M +clot/MS +clotted +clotting +cloture/MDSG +cloudburst/MS +clouded/U +cloudiness/SM +cloudlessness/M +cloudless/YP +cloudscape/SM +cloud/SGMD +cloudy/TPR +clout/GSMD +cloven +cloverleaf/MS +clover/M +clove/SRMZ +Clovis/M +clown/DMSG +clownishness/SM +clownish/PY +cloy/DSG +cloying/Y +clubbed/M +clubbing/M +clubfeet +clubfoot/DM +clubhouse/SM +club/MS +clubroom/SM +cluck/GSDM +clueless +clue/MGDS +Cluj/M +clump/MDGS +clumpy/RT +clumsily +clumsiness/MS +clumsy/PRT +clung +clunk/SGZRDM +clunky/PRYT +clustered/AU +clusters/A +cluster/SGJMD +clutch/DSG +cluttered/U +clutter/GSD +Cl/VM +Clyde/M +Clydesdale/M +Cly/M +Clytemnestra/M +Clyve/M +Clywd/M +cm +Cm/M +CMOS +cnidarian/MS +CNN +CNS +CO +coacher/M +coachman/M +coachmen +coach/MSRDG +coachwork/M +coadjutor/MS +coagulable +coagulant/SM +coagulate/GNXSD +coagulation/M +coagulator/S +coaler/M +coalesce/GDS +coalescence/SM +coalescent +coalface/SM +coalfield/MS +coalitionist/SM +coalition/MS +coal/MDRGS +coalminers +coarseness/SM +coarsen/SGD +coarse/TYRP +coastal +coaster/M +coastguard/MS +coastline/SM +coast/SMRDGZ +coated/U +Coates/M +coating/M +coat/MDRGZJS +coattail/S +coattest +coauthor/MDGS +coaxer/M +coax/GZDSR +coaxial/Y +coaxing/Y +Cobain/M +cobalt/MS +cobbed +Cobbie/M +cobbing +cobbler/M +cobble/SRDGMZ +cobblestone/MSD +Cobb/M +Cobby/M +coble/M +Cob/M +COBOL +Cobol/M +cobra/MS +cob/SM +cobwebbed +cobwebbing +cobwebby/RT +cobweb/SM +cocaine/MS +coca/MS +cocci/MS +coccus/M +coccyges +coccyx/M +Cochabamba/M +cochineal/SM +Cochin/M +Cochise/M +cochleae +cochlear +cochlea/SM +Cochran/M +cockade/SM +cockamamie +cockatoo/SM +cockatrice/MS +cockcrow/MS +cockerel/MS +cocker/M +cockeye/DM +cockeyed/PY +cockfighting/M +cockfight/MJSG +cock/GDRMS +cockily +cockiness/MS +cocklebur/M +cockle/SDGM +cockleshell/SM +Cockney +cockney/MS +cockpit/MS +cockroach/SM +cockscomb/SM +cockshies +cocksucker/S! +cocksure +cocktail/GDMS +cocky/RPT +cocoa/SM +coco/MS +coconut/SM +cocoon/GDMS +Cocteau/M +COD +coda/SM +codded +codding +coddle/GSRD +coddler/M +codebook/S +codebreak/R +coded/UA +Codee/M +codeine/MS +codename/D +codependency/S +codependent/S +coder/CM +code's +co/DES +codes/A +code/SCZGJRD +codetermine/S +codeword/SM +codex/M +codfish/SM +codger/MS +codices/M +codicil/SM +Codie/M +codification/M +codifier/M +codify/NZXGRSD +Codi/M +coding/M +codling/M +Cod/M +cod/MDRSZGJ +codpiece/MS +Cody/M +coedited +coediting +coeditor/MS +coedits +coed/SM +coeducational +coeducation/SM +coefficient/SYM +coelenterate/MS +coequal/SY +coercer/M +coerce/SRDXVGNZ +coercible/I +coercion/M +coerciveness/M +coercive/PY +coeval/YS +coexistence/MS +coexistent +coexist/GDS +coextensive/Y +cofactor/MS +coffeecake/SM +coffeecup +coffeehouse/SM +coffeemaker/S +coffeepot/MS +coffee/SM +cofferdam/SM +coffer/DMSG +Coffey/M +coffin/DMGS +Coffman/M +cogency/MS +cogent/Y +cogged +cogging +cogitate/DSXNGV +cogitation/M +cogitator/MS +cog/MS +Cognac/M +cognac/SM +cognate/SXYN +cognation/M +cognitional +cognition/SAM +cognitive/SY +cognizable +cognizance/MAI +cognizances/A +cognizant/I +cognomen/SM +cognoscente +cognoscenti +cogwheel/SM +cohabitant/MS +cohabitational +cohabitation/SM +cohabit/SDG +Cohan/M +coheir/MS +Cohen/M +cohere/GSRD +coherence/SIM +coherencies +coherency/I +coherent/IY +coherer/M +cohesion/MS +cohesiveness/SM +cohesive/PY +Cohn/M +cohoes +coho/MS +cohort/SM +coiffed +coiffing +coiffure/MGSD +coif/SM +coil/UGSAD +Coimbatore/M +coinage's/A +coinage/SM +coincide/GSD +coincidence/MS +coincidental/Y +coincident/Y +coined/U +coiner/M +coin/GZSDRM +coinsurance/SM +Cointon/M +cointreau +coital/Y +coitus/SM +coke/MGDS +Coke/MS +COL +COLA +colander/SM +Colan/M +Colas +cola/SM +colatitude/MS +Colbert/M +Colby/M +coldblooded +coldish +coldness/MS +cold/YRPST +Coleen/M +Cole/M +Coleman/M +Colene/M +Coleridge/M +coleslaw/SM +Colet/M +Coletta/M +Colette/M +coleus/SM +Colfax/M +Colgate/M +colicky +colic/SM +coliform +Colin/M +coliseum/SM +colitis/MS +collaborate/VGNXSD +collaboration/M +collaborative/SY +collaborator/SM +collage/MGSD +collagen/M +collapse/SDG +collapsibility/M +collapsible +collarbone/MS +collar/DMGS +collard/SM +collarless +collated/U +collateral/SYM +collate/SDVNGX +collation/M +collator/MS +colleague/SDGM +collectedness/M +collected/PY +collectible/S +collection/AMS +collective/SY +collectivism/SM +collectivist/MS +collectivity/MS +collectivization/MS +collectivize/DSG +collector/MS +collect/SAGD +Colleen/M +colleen/SM +college/SM +collegiality/S +collegian/SM +collegiate/Y +Collen/M +Collete/M +Collette/M +coll/G +collide/SDG +Collie/M +collie/MZSRD +collier/M +Collier/M +colliery/MS +collimate/C +collimated/U +collimates +collimating +collimation/M +collimator/M +collinear +collinearity/M +Colline/M +Collin/MS +collisional +collision/SM +collocate/XSDGN +collocation/M +colloidal/Y +colloid/MS +colloq +colloquialism/MS +colloquial/SY +colloquies +colloquium/SM +colloquy/M +collude/SDG +collusion/SM +collusive +collying +Colly/RM +Colman/M +Col/MY +Cologne/M +cologne/MSD +Colo/M +Colombia/M +Colombian/S +Colombo/M +colonelcy/MS +colonel/MS +colonialism/MS +colonialist/MS +colonial/SPY +colonist/SM +colonization/ACSM +colonize/ACSDG +colonized/U +colonizer/MS +colonizes/U +Colon/M +colonnade/MSD +colon/SM +colony/SM +colophon/SM +Coloradan/S +Coloradoan/S +Colorado/M +colorant/SM +coloration/EMS +coloratura/SM +colorblindness/S +colorblind/P +colored/USE +colorer/M +colorfastness/SM +colorfast/P +colorfulness/MS +colorful/PY +colorimeter/SM +colorimetry +coloring/M +colorization/S +colorize/GSD +colorizing/C +colorlessness/SM +colorless/PY +colors/EA +color/SRDMGZJ +colossal/Y +Colosseum/M +colossi +colossus/M +colostomy/SM +colostrum/SM +col/SD +colter/M +coltishness/M +coltish/PY +Colt/M +colt/MRS +Coltrane/M +Columbia/M +Columbian +Columbine/M +columbine/SM +Columbus/M +columnar +columnist/MS +columnize/GSD +column/SDM +Colver/M +Co/M +comae +comaker/SM +Comanche/MS +coma/SM +comatose +combatant/SM +combativeness/MS +combative/PY +combat/SVGMD +combed/U +comber/M +combinational/A +combination/ASM +combinatorial/Y +combinatoric/S +combinator/SM +combined/AU +combiner/M +combines/A +combine/ZGBRSD +combining/A +combo/MS +comb/SGZDRMJ +Combs/M +combusted +combustibility/SM +combustible/SI +combustion/MS +combustive +Comdex/M +Comdr/M +comeback/SM +comedian/SM +comedic +comedienne/SM +comedown/MS +comedy/SM +come/IZSRGJ +comeliness/SM +comely/TPR +comer/IM +comes/M +comestible/MS +cometary +cometh +comet/SM +comeuppance/SM +comfit's +comfit/SE +comfortability/S +comfortableness/MS +comfortable/U +comfortably/U +comforted/U +comforter/MS +comfort/ESMDG +comforting/YE +comfy/RT +comicality/MS +comical/Y +comic/MS +Cominform/M +comity/SM +com/LJRTZG +comm +Com/M +comma/MS +commandant/MS +commandeer/SDG +commander/M +commanding/Y +commandment/SM +commando/SM +command/SZRDMGL +commemorate/SDVNGX +commemoration/M +commemorative/YS +commemorator/S +commence/ALDSG +commencement/AMS +commencer/M +commendably +commendation/ASM +commendatory/A +commender/AM +commend/GSADRB +commensurable/I +commensurate/IY +commensurates +commensuration/SM +commentary/MS +commentate/GSD +commentator/SM +commenter/M +comment's +comment/SUGD +commerce/MGSD +commercialism/MS +commercialization/SM +commercialize/GSD +commercial/PYS +Commie +commie/SM +commingle/GSD +commiserate/VGNXSD +commiseration/M +commissariat/MS +commissar/MS +commissary/MS +commission/ASCGD +commissioner/SM +commission's/A +commitment/SM +commit/SA +committable +committal/MA +committals +committed/UA +committeeman/M +committeemen +committee/MS +committeewoman/M +committeewomen +committing/A +commode/MS +commodes/IE +commodiousness/MI +commodious/YIP +commodity/MS +commodore/SM +commonality/MS +commonalty/MS +commoner/MS +commonness/MSU +commonplaceness/M +commonplace/SP +common/RYUPT +commonsense +commons/M +Commons/M +commonweal/SHM +commonwealth/M +Commonwealth/M +commonwealths +Commonwealths +commotion/MS +communality/M +communal/Y +commune/XSDNG +communicability/MS +communicable/IU +communicably +communicant/MS +communicate/VNGXSD +communicational +communication/M +communicativeness/M +communicative/PY +communicator/SM +communion/M +Communion/SM +communique/S +communism/MS +Communism/S +communistic +communist/MS +Communist/S +communitarian/M +community/MS +communize/SDG +commutable/I +commutate/XVGNSD +commutation/M +commutative/Y +commutativity +commutator/MS +commute/BZGRSD +commuter/M +Comoros +compaction/M +compactness/MS +compactor/MS +compact/TZGSPRDY +companionableness/M +companionable/P +companionably +companion/GBSMD +companionship/MS +companionway/MS +company/MSDG +Compaq/M +comparabilities +comparability/IM +comparableness/M +comparable/P +comparably/I +comparativeness/M +comparative/PYS +comparator/SM +compare/GRSDB +comparer/M +comparison/MS +compartmental +compartmentalization/SM +compartmentalize/DSG +compartment/SDMG +compassionateness/M +compassionate/PSDGY +compassion/MS +compass/MSDG +compatibility/IMS +compatibleness/M +compatible/SI +compatibly/I +compatriot/SM +compeer/DSGM +compellable +compelled +compelling/YM +compel/S +compendious +compendium/MS +compensable +compensated/U +compensate/XVNGSD +compensation/M +compensator/M +compensatory +compete/GSD +competence/ISM +competency/IS +competency's +competent/IY +competition/SM +competitiveness/SM +competitive/YP +competitor/MS +comp/GSYD +compilable/U +compilation/SAM +compile/ASDCG +compiler/CS +compiler's +complacence/S +complacency/SM +complacent/Y +complainant/MS +complainer/M +complain/GZRDS +complaining/YU +complaint/MS +complaisance/SM +complaisant/Y +complected +complementariness/M +complementarity +complementary/SP +complementation/M +complementer/M +complement/ZSMRDG +complete/BTYVNGPRSDX +completed/U +completely/I +completeness/ISM +completer/M +completion/MI +complexional +complexion/DMS +complexity/MS +complexness/M +complex/TGPRSDY +compliance/SM +compliant/Y +complicatedness/M +complicated/YP +complicate/SDG +complication/M +complicator/SM +complicit +complicity/MS +complier/M +complimentary/U +complimenter/M +compliment/ZSMRDG +comply/ZXRSDNG +component/SM +comport/GLSD +comportment/SM +compose/CGASDE +composedness/M +composed/PY +composer/CM +composers +composite/YSDXNG +compositional/Y +composition/CMA +compositions/C +compositor/MS +compost/DMGS +composure/ESM +compote/MS +compounded/U +compounder/M +compound/RDMBGS +comprehend/DGS +comprehending/U +comprehensibility/SIM +comprehensibleness/IM +comprehensible/PI +comprehensibly/I +comprehension/IMS +comprehensiveness/SM +comprehensive/YPS +compressed/Y +compressibility/IM +compressible/I +compressional +compression/CSM +compressive/Y +compressor/MS +compress/SDUGC +comprise/GSD +compromiser/M +compromise/SRDGMZ +compromising/UY +Compton/M +comptroller/SM +compulsion/SM +compulsiveness/MS +compulsive/PYS +compulsivity +compulsorily +compulsory/S +compunction/MS +Compuserve/M +CompuServe/M +computability/M +computable/UI +computably +computational/Y +computation/SM +computed/A +computerese +computerization/MS +computerize/SDG +computer/M +compute/RSDZBG +computes/A +computing/A +comradely/P +comradeship/MS +comrade/YMS +Comte/M +Conakry/M +Conan/M +Conant/M +concatenate/XSDG +concaveness/MS +concave/YP +conceal/BSZGRDL +concealed/U +concealer/M +concealing/Y +concealment/MS +conceded/Y +conceitedness/SM +conceited/YP +conceit/SGDM +conceivable/IU +conceivably/I +conceive/BGRSD +conceiver/M +concentrate/VNGSDX +concentration/M +concentrator/MS +concentrically +Concepcin/M +conceptional +conception/MS +concept/SVM +conceptuality/M +conceptualization/A +conceptualizations +conceptualization's +conceptualize/DRSG +conceptualizing/A +conceptual/Y +concerned/YU +concern/USGD +concerted/PY +concert/EDSG +concertina/MDGS +concertize/GDS +concertmaster/MS +concerto/SM +concert's +concessionaire/SM +concessional +concessionary +concession/R +Concetta/M +Concettina/M +Conchita/M +conch/MDG +conchs +concierge/SM +conciliar +conciliate/GNVX +conciliation/ASM +conciliator/MS +conciliatory/A +conciseness/SM +concise/TYRNPX +concision/M +conclave/S +concluder/M +conclude/RSDG +conclusion/SM +conclusive/IPY +conclusiveness/ISM +concocter/M +concoction/SM +concoct/RDVGS +concomitant/YS +concordance/MS +concordant/Y +concordat/SM +Concorde/M +Concordia/M +Concord/MS +concourse +concreteness/MS +concrete/NGXRSDPYM +concretion/M +concubinage/SM +concubine/SM +concupiscence/SM +concupiscent +concurrence/MS +concur/S +concussion/MS +concuss/VD +condemnate/XN +condemnation/M +condemnatory +condemner/M +condemn/ZSGRDB +condensate/NMXS +condensation/M +condenser/M +condense/ZGSD +condensible +condescend +condescending/Y +condescension/MS +condign +condiment/SM +condition/AGSJD +conditionals +conditional/UY +conditioned/U +conditioner/MS +conditioning/M +condition's +condole +condolence/MS +condominium/MS +condom/SM +condone/GRSD +condoner/M +Condorcet/M +condor/MS +condo/SM +conduce/VGSD +conduciveness/M +conducive/P +conductance/SM +conductibility/SM +conductible +conduction/MS +conductive/Y +conductivity/MS +conductor/MS +conductress/MS +conduct/V +conduit/MS +coneflower/M +Conestoga +coney's +confabbed +confabbing +confab/MS +confabulate/XSDGN +confabulation/M +confectioner/M +confectionery/SM +confectionist +confection/RDMGZS +confect/S +Confederacy/M +confederacy/MS +confederate/M +Confederate/S +conferee/MS +conference/DSGM +conferrable +conferral/SM +conferred +conferrer/SM +conferring +confer/SB +confessed/Y +confessional/SY +confession/MS +confessor/SM +confetti/M +confidante/SM +confidant/SM +confidence/SM +confidentiality/MS +confidentialness/M +confidential/PY +confident/Y +confider/M +confide/ZGRSD +confiding/PY +configuration/ASM +configure/AGSDB +confined/U +confine/L +confinement/MS +confiner/M +confirm/AGDS +confirmation/ASM +confirmatory +confirmedness/M +confirmed/YP +confiscate/DSGNX +confiscation/M +confiscator/MS +confiscatory +conflagration/MS +conflate/NGSDX +conflation/M +conflicting/Y +conflict/SVGDM +confluence/MS +conformable/U +conformal +conformance/SM +conformational/Y +conform/B +conformer/M +conformism/SM +conformist/SM +conformities +conformity/MUI +confounded/Y +confound/R +confrre/MS +confrontational +confrontation/SM +confronter/M +confront/Z +Confucianism/SM +Confucian/S +Confucius/M +confusedness/M +confused/PY +confuse/RBZ +confusing/Y +confutation/MS +confute/GRSD +confuter/M +conga/MDG +congeal/GSDL +congealment/MS +congeniality/UM +congenial/U +congeries/M +conger/SM +congestion/MS +congest/VGSD +conglomerate/XDSNGVM +conglomeration/M +Cong/M +Congolese +Congo/M +congrats +congratulate/NGXSD +congratulation/M +congratulatory +congregate/DSXGN +congregational +Congregational +congregationalism/MS +congregationalist/MS +Congregationalist/S +congregation/M +congressional/Y +congressman/M +congressmen +Congress/MS +congress/MSDG +congresspeople +congressperson/S +congresswoman/M +congresswomen +Congreve/M +congruence/IM +congruences +congruency/M +congruential +congruent/YI +congruity/MSI +congruousness/IM +congruous/YIP +conicalness/M +conical/PSY +conic/S +conics/M +conifer/MS +coniferous +conjectural/Y +conjecture/GMDRS +conjecturer/M +conjoint +conjugacy +conjugal/Y +conjugate/XVNGYSDP +conjugation/M +conjunct/DSV +conjunctiva/MS +conjunctive/YS +conjunctivitis/SM +conjuration/MS +conjurer/M +conjure/RSDZG +conjuring/M +conker/M +conk/ZDR +Conley/M +Con/M +conman +connect/ADGES +connectedly/E +connectedness/ME +connected/U +connectible +Connecticut/M +connection/AME +connectionless +connections/E +connective/SYM +connectivity/MS +connector/MS +Connelly/M +Conner/M +Connery/M +connexion/MS +Conney/M +conn/GVDR +Connie/M +Conni/M +conniption/MS +connivance/MS +conniver/M +connive/ZGRSD +connoisseur/MS +Connor/SM +connotative/Y +Conn/RM +connubial/Y +Conny/M +conquerable/U +conquered/AU +conqueror/MS +conquer/RDSBZG +conquers/A +conquest/ASM +conquistador/MS +Conrade/M +Conrad/M +Conrado/M +Conrail/M +Conroy/M +Consalve/M +consanguineous/Y +consanguinity/SM +conscienceless +conscientiousness/MS +conscientious/YP +conscionable/U +consciousness/MUS +conscious/UYSP +conscription/SM +consecrated/AU +consecrates/A +consecrate/XDSNGV +consecrating/A +consecration/AMS +consecutiveness/M +consecutive/YP +consensus/SM +consenter/M +consenting/Y +consent/SZGRD +consequence +consequentiality/S +consequential/IY +consequentialness/M +consequently/I +consequent/PSY +conservancy/SM +conservationism +conservationist/SM +conservation/SM +conservatism/SM +conservativeness/M +Conservative/S +conservative/SYP +conservator/MS +conservatory/MS +con/SGM +considerable/I +considerables +considerably/I +considerateness/MSI +considerate/XIPNY +consideration/ASMI +considered/U +considerer/M +consider/GASD +considering/S +consign/ASGD +consignee/SM +consignment/SM +consist/DSG +consistence/S +consistency/IMS +consistent/IY +consistory/MS +consolable/I +Consolata/M +consolation/MS +consolation's/E +consolatory +consoled/U +consoler/M +console/ZBG +consolidated/AU +consolidate/NGDSX +consolidates/A +consolidation/M +consolidator/SM +consoling/Y +consomm/S +consonance/IM +consonances +consonantal +consonant/MYS +consortia +consortium/M +conspectus/MS +conspicuousness/IMS +conspicuous/YIP +conspiracy/MS +conspiratorial/Y +conspirator/SM +constable +Constable/M +constabulary/MS +constance +Constance/M +Constancia/M +constancy/IMS +Constancy/M +Constanta/M +Constantia/M +Constantina/M +Constantine/M +Constantin/M +Constantino/M +Constantinople/M +constant/IY +constants +constellation/SM +consternate/XNGSD +consternation/M +constipate/XDSNG +constipation/M +constituency/MS +constituent/SYM +constituted/A +constitute/NGVXDS +constitutes/A +constituting/A +Constitution +constitutionality's +constitutionality/US +constitutionally/U +constitutional/SY +constitution/AMS +constitutive/Y +constrain +constrainedly +constrained/U +constraint/MS +constriction/MS +constrictor/MS +constrict/SDGV +construable +construct/ASDGV +constructibility +constructible/A +constructional/Y +constructionist/MS +construction/MAS +constructions/C +constructiveness/SM +constructive/YP +constructor/MS +construe/GSD +Consuela/M +Consuelo/M +consular/S +consulate/MS +consul/KMS +consulship/MS +consultancy/S +consultant/MS +consultation/SM +consultative +consulted/A +consulter/M +consult/RDVGS +consumable/S +consumed/Y +consume/JZGSDB +consumerism/MS +consumerist/S +consumer/M +consuming/Y +consummate/DSGVY +consummated/U +consumption/SM +consumptive/YS +cont +contact/BGD +contacted/A +contact's/A +contacts/A +contagion/SM +contagiousness/MS +contagious/YP +containerization/SM +containerize/GSD +container/M +containment/SM +contain/SLZGBRD +contaminant/SM +contaminated/AU +contaminates/A +contaminate/SDCXNG +contaminating/A +contamination/CM +contaminative +contaminator/MS +contd +cont'd +contemn/SGD +contemplate/DVNGX +contemplation/M +contemplativeness/M +contemplative/PSY +contemporaneity/MS +contemporaneousness/M +contemporaneous/PY +contemptibleness/M +contemptible/P +contemptibly +contempt/M +contemptuousness/SM +contemptuous/PY +contentedly/E +contentedness/SM +contented/YP +content/EMDLSG +contention/MS +contentiousness/SM +contentious/PY +contently +contentment/ES +contentment's +conterminous/Y +contestable/I +contestant/SM +contested/U +contextualize/GDS +contiguity/MS +contiguousness/M +contiguous/YP +continence/ISM +Continental/S +continental/SY +continent/IY +Continent/M +continents +continent's +contingency/SM +contingent/SMY +continua +continuable +continual/Y +continuance/ESM +continuant/M +continuation/ESM +continue/ESDG +continuer/M +continuity/SEM +continuousness/M +continuous/YE +continuum/M +contortionist/SM +contortion/MS +contort/VGD +contour +contraband/SM +contrabass/M +contraception/SM +contraceptive/S +contract/DG +contractible +contractile +contractual/Y +contradict/GDS +contradiction/MS +contradictorily +contradictoriness/M +contradictory/PS +contradistinction/MS +contraflow/S +contrail/M +contraindicate/SDVNGX +contraindication/M +contralto/SM +contrapositive/S +contraption/MS +contrapuntal/Y +contrariety/MS +contrarily +contrariness/MS +contrariwise +contrary/PS +contra/S +contrasting/Y +contrastive/Y +contrast/SRDVGZ +contravene/GSRD +contravener/M +contravention/MS +Contreras/M +contretemps/M +contribute/XVNZRD +contribution/M +contributive/Y +contributorily +contributor/SM +contributory/S +contriteness/M +contrite/NXP +contrition/M +contrivance/SM +contriver/M +contrive/ZGRSD +control/CS +controllability/M +controllable/IU +controllably/U +controlled/CU +controller/SM +controlling/C +control's +controversialists +controversial/UY +controversy/MS +controvert/DGS +controvertible/I +contumacious/Y +contumacy/MS +contumelious +contumely/MS +contuse/NGXSD +contusion/M +conundrum/SM +conurbation/MS +convalesce/GDS +convalescence/SM +convalescent/S +convect/DSVG +convectional +convection/MS +convector +convene/ASDG +convener/MS +convenience/ISM +convenient/IY +conventicle/SM +conventionalism/M +conventionalist/M +conventionality/SUM +conventionalize/GDS +conventional/UY +convention/MA +conventions +convergence/MS +convergent +conversant/Y +conversationalist/SM +conversational/Y +conversation/SM +conversazione/M +converse/Y +conversion/AM +conversioning +converted/U +converter/MS +convert/GADS +convertibility's/I +convertibility/SM +convertibleness/M +convertible/PS +convexity/MS +convex/Y +conveyance/DRSGMZ +conveyancer/M +conveyancing/M +convey/BDGS +conveyor/MS +conviction/MS +convict/SVGD +convinced/U +convincer/M +convince/RSDZG +convincingness/M +convincing/PUY +conviviality/MS +convivial/Y +convoke/GSD +convolute/XDNY +convolution/M +convolve/C +convolved +convolves +convolving +convoy/GMDS +convulse/SDXVNG +convulsion/M +convulsiveness/M +convulsive/YP +Conway/M +cony/SM +coo/GSD +cookbook/SM +cooked/AU +Cooke/M +cooker/M +cookery/MS +cook/GZDRMJS +Cookie/M +cookie/SM +cooking/M +Cook/M +cookout/SM +cooks/A +cookware/SM +cooky's +coolant/SM +cooled/U +cooler/M +Cooley/M +coolheaded +Coolidge/M +coolie/MS +coolness/MS +cool/YDRPJGZTS +coon/MS! +coonskin/MS +cooperage/MS +cooperate/VNGXSD +cooperation/M +cooperativeness/SM +cooperative/PSY +cooperator/MS +cooper/GDM +Cooper/M +coop/MDRGZS +Coop/MR +coordinated/U +coordinateness/M +coordinate/XNGVYPDS +coordination/M +coordinator/MS +Coors/M +cootie/SM +coot/MS +copay/S +Copeland/M +Copenhagen/M +coper/M +Copernican +Copernicus/M +cope/S +copied/A +copier/M +copies/A +copilot/SM +coping/M +copiousness/SM +copious/YP +coplanar +Copland/M +Copley/M +copolymer/MS +copora +copped +Copperfield/M +copperhead/MS +copper/MSGD +copperplate/MS +coppersmith/M +coppersmiths +coppery +coppice's +copping +Coppola/M +copra/MS +coprolite/M +coprophagous +copse/M +cops/GDS +cop/SJMDRG +copter/SM +Coptic/M +copula/MS +copulate/XDSNGV +copulation/M +copulative/S +copybook/MS +copycat/SM +copycatted +copycatting +copyist/SM +copy/MZBDSRG +copyrighter/M +copyright/MSRDGZ +copywriter/MS +coquetry/MS +coquette/DSMG +coquettish/Y +Corabella/M +Corabelle/M +Corabel/M +coracle/SM +Coralie/M +Coraline/M +coralline +Coral/M +coral/SM +Coralyn/M +Cora/M +corbel/GMDJS +Corbet/M +Corbett/M +Corbie/M +Corbin/M +Corby/M +cordage/MS +corded/AE +Cordelia/M +Cordelie/M +Cordell/M +corder/AM +Cordey/M +cord/FSAEM +cordiality/MS +cordialness/M +cordial/PYS +Cordie/M +cordillera/MS +Cordilleras +Cordi/M +cording/MA +cordite/MS +cordless +Cord/M +Cordoba +cordon/DMSG +cordovan/SM +Cordula/M +corduroy/GDMS +Cordy/M +cored/A +Coreen/M +Corella/M +core/MZGDRS +Corenda/M +Corene/M +corer/M +corespondent/MS +Coretta/M +Corette/M +Corey/M +Corfu/M +corgi/MS +coriander/SM +Corie/M +Corilla/M +Cori/M +Corina/M +Corine/M +coring/M +Corinna/M +Corinne/M +Corinthian/S +Corinthians/M +Corinth/M +Coriolanus/M +Coriolis/M +Corissa/M +Coriss/M +corked/U +corker/M +cork/GZDRMS +Cork/M +corkscrew/DMGS +corks/U +Corliss/M +Corly/M +Cormack/M +corm/MS +cormorant/MS +Cornall/M +cornball/SM +cornbread/S +corncob/SM +corncrake/M +corneal +cornea/SM +Corneille/M +Cornela/M +Cornelia/M +Cornelius/M +Cornelle/M +Cornell/M +corner/GDM +cornerstone/MS +cornet/SM +Corney/M +cornfield/SM +cornflake/S +cornflour/M +cornflower/SM +corn/GZDRMS +cornice/GSDM +Cornie/M +cornily +corniness/S +Cornish/S +cornmeal/S +cornrow/GDS +cornstalk/MS +cornstarch/SM +cornucopia/MS +Cornwallis/M +Cornwall/M +Corny/M +corny/RPT +corolla/MS +corollary/SM +Coronado/M +coronal/MS +coronary/S +corona/SM +coronate/NX +coronation/M +coroner/MS +coronet/DMS +Corot/M +coroutine/SM +Corp +corporal/SYM +corpora/MS +corporate/INVXS +corporately +corporation/MI +corporatism/M +corporatist +corporeality/MS +corporeal/IY +corporealness/M +corp/S +corpse/M +corpsman/M +corpsmen +corps/SM +corpulence/MS +corpulentness/S +corpulent/YP +corpuscle/SM +corpuscular +corpus/M +corr +corralled +corralling +corral/MS +correctable/U +correct/BPSDRYTGV +corrected/U +correctional +correction/MS +corrective/YPS +correctly/I +correctness/MSI +corrector/MS +Correggio/M +correlated/U +correlate/SDXVNG +correlation/M +correlative/YS +Correna/M +correspond/DSG +correspondence/MS +correspondent/SM +corresponding/Y +Correy/M +Corrianne/M +corridor/SM +Corrie/M +corrigenda +corrigendum/M +corrigible/I +Corri/M +Corrina/M +Corrine/M +Corrinne/M +corroborated/U +corroborate/GNVXDS +corroboration/M +corroborative/Y +corroborator/MS +corroboratory +corrode/SDG +corrodible +corrosion/SM +corrosiveness/M +corrosive/YPS +corrugate/NGXSD +corrugation/M +corrupt/DRYPTSGV +corrupted/U +corrupter/M +corruptibility/SMI +corruptible/I +corruption/IM +corruptions +corruptive/Y +corruptness/MS +Corry/M +corsage/MS +corsair/SM +corset/GMDS +Corsica/M +Corsican/S +cortge/MS +Cortes/S +cortex/M +Cortez's +cortical/Y +cortices +corticosteroid/SM +Cortie/M +cortisone/SM +Cortland/M +Cort/M +Cortney/M +Corty/M +corundum/MS +coruscate/XSDGN +coruscation/M +Corvallis/M +corvette/MS +Corvus/M +Cory/M +Cos +Cosby/M +Cosetta/M +Cosette/M +cos/GDS +cosignatory/MS +cosign/SRDZG +cosily +Cosimo/M +cosine/MS +cosiness/MS +Cosme/M +cosmetically +cosmetician/MS +cosmetic/SM +cosmetologist/MS +cosmetology/MS +cosmic +cosmical/Y +cosmogonist/MS +cosmogony/SM +cosmological/Y +cosmologist/MS +cosmology/SM +Cosmo/M +cosmonaut/MS +cosmopolitanism/MS +cosmopolitan/SM +cosmos/SM +cosponsor/DSG +cossack/S +Cossack/SM +cosset/GDS +Costa/M +Costanza/M +costarred +costarring +costar/S +Costello/M +costiveness/M +costive/PY +costless +costliness/SM +costly/RTP +cost/MYGVJS +Costner/M +costumer/M +costume/ZMGSRD +cotangent/SM +Cote/M +cote/MS +coterie/MS +coterminous/Y +cotillion/SM +Cotonou/M +Cotopaxi/M +cot/SGMD +cottager/M +cottage/ZMGSRD +cottar's +cotted +cotter/SDM +cotton/GSDM +Cotton/M +cottonmouth/M +cottonmouths +cottonseed/MS +cottontail/SM +cottonwood/SM +cottony +cotyledon/MS +couching/M +couch/MSDG +cougar/MS +cougher/M +cough/RDG +coughs +couldn't +could/T +could've +coule/MS +Coulomb/M +coulomb/SM +councilman/M +councilmen +councilor/MS +councilperson/S +council/SM +councilwoman/M +councilwomen +counsel/GSDM +counsellings +counselor/MS +countability/E +countable/U +countably/U +countdown/SM +counted/U +count/EGARDS +countenance/EGDS +countenancer/M +countenance's +counteract/DSVG +counteraction/SM +counterargument/SM +counterattack/DRMGS +counterbalance/MSDG +counterclaim/GSDM +counterclockwise +counterculture/MS +countercyclical +counterespionage/MS +counterexample/S +counterfeiter/M +counterfeit/ZSGRD +counterflow +counterfoil/MS +counterforce/M +counter/GSMD +counterinsurgency/MS +counterintelligence/MS +counterintuitive +countermand/DSG +counterman/M +countermeasure/SM +countermen +counteroffensive/SM +counteroffer/SM +counterpane/SM +counterpart/SM +counterpoint/GSDM +counterpoise/GMSD +counterproductive +counterproposal/M +counterrevolutionary/MS +counterrevolution/MS +counter's/E +counters/E +countersignature/MS +countersign/SDG +countersink/SG +counterspy/MS +counterstrike +countersunk +countertenor/SM +countervail/DSG +counterweight/GMDS +countess/MS +countless/Y +countrify/D +countryman/M +countrymen +country/MS +countryside/MS +countrywide +countrywoman/M +countrywomen +county/SM +coup/ASDG +coupe/MS +Couperin/M +couple/ACU +coupled/CU +coupler/C +couplers +coupler's +couple's +couples/CU +couplet/SM +coupling's/C +coupling/SM +coupon/SM +coup's +courage/MS +courageously +courageousness/MS +courageous/U +courages/E +Courbet/M +courgette/MS +courier/GMDS +course/EGSRDM +courser's/E +courser/SM +course's/AF +courses/FA +coursework +coursing/M +Courtenay/M +courteousness/EM +courteousnesses +courteous/PEY +courtesan/MS +courtesied +courtesy/ESM +courtesying +court/GZMYRDS +courthouse/MS +courtier/SM +courtliness/MS +courtly/RTP +Court/M +Courtnay/M +Courtney/M +courtroom/MS +courtship/SM +courtyard/SM +couscous/MS +cousinly/U +cousin/YMS +Cousteau/M +couture/SM +couturier/SM +covalent/Y +covariance/SM +covariant/S +covariate/SN +covary +cove/DRSMZG +covenanted/U +covenanter/M +covenant/SGRDM +coven/SM +Covent/M +Coventry/MS +coverable/E +cover/AEGUDS +coverage/MS +coverall/DMS +coverer/AME +covering/MS +coverlet/MS +coversheet +covers/M +covertness/SM +covert/YPS +coveter/M +coveting/Y +covetousness/SM +covetous/PY +covet/SGRD +covey/SM +covington +cowardice/MS +cowardliness/MS +cowardly/P +Coward/M +coward/MYS +cowbell/MS +cowbird/MS +cowboy/MS +cowcatcher/SM +cowed/Y +cowering/Y +cower/RDGZ +cowgirl/MS +cowhand/S +cowherd/SM +cowhide/MGSD +Cowley/M +cowlick/MS +cowling/M +cowl/SGMD +cowman/M +cow/MDRSZG +cowmen +coworker/MS +Cowper/M +cowpoke/MS +cowpony +cowpox/MS +cowpuncher/M +cowpunch/RZ +cowrie/SM +cowshed/SM +cowslip/MS +coxcomb/MS +Cox/M +cox/MDSG +coxswain/GSMD +coy/CDSG +coyer +coyest +coyly +Coy/M +coyness/MS +coyote/SM +coypu/SM +cozenage/MS +cozen/SGD +cozily +coziness/MS +Cozmo/M +Cozumel/M +cozy/DSRTPG +CPA +cpd +CPI +cpl +Cpl +CPO +CPR +cps +CPU/SM +crabapple +crabbedness/M +crabbed/YP +Crabbe/M +crabber/MS +crabbily +crabbiness/S +crabbing/M +crabby/PRT +crabgrass/S +crablike +crab/MS +crackable/U +crackdown/MS +crackerjack/S +cracker/M +crackle/GJDS +crackling/M +crackly/RT +crackpot/SM +crackup/S +crack/ZSBYRDG +cradler/M +cradle/SRDGM +cradling/M +craftily +craftiness/SM +Craft/M +craft/MRDSG +craftsman/M +craftsmanship/SM +craftsmen +craftspeople +craftspersons +craftswoman +craftswomen +crafty/TRP +Craggie/M +cragginess/SM +Craggy/M +craggy/RTP +crag/SM +Craig/M +Cramer/M +crammed +crammer/M +cramming +cramper/M +cramp/MRDGS +crampon/SM +cram/S +Cranach/M +cranberry/SM +Crandall/M +crane/DSGM +cranelike +Crane/M +Cranford/M +cranial +cranium/MS +crankcase/MS +crankily +crankiness/MS +crank/SGTRDM +crankshaft/MS +cranky/TRP +Cranmer/M +cranny/DSGM +Cranston/M +crape/SM +crapped +crappie/M +crapping +crappy/RST +crapshooter/SM +crap/SMDG! +crasher/M +crashing/Y +crash/SRDGZ +crassness/MS +crass/TYRP +crate/DSRGMZ +crater/DMG +Crater/M +cravat/SM +cravatted +cravatting +crave/DSRGJ +cravenness/SM +craven/SPYDG +craver/M +craving/M +crawdad/S +crawfish's +Crawford/M +crawler/M +crawl/RDSGZ +crawlspace/S +crawlway +crawly/TRS +craw/SYM +crayfish/GSDM +Crayola/M +crayon/GSDM +Cray/SM +craze/GMDS +crazily +craziness/MS +crazy/SRTP +creakily +creakiness/SM +creak/SDG +creaky/PTR +creamer/M +creamery/MS +creamily +creaminess/SM +cream/SMRDGZ +creamy/TRP +creased/CU +crease/IDRSG +crease's +creases/C +creasing/C +created/U +create/XKVNGADS +creationism/MS +creationist/MS +Creation/M +creation/MAK +creativeness/SM +creative/YP +creativities +creativity/K +creativity's +Creator/M +creator/MS +creatureliness/M +creaturely/P +creature/YMS +crche/SM +credence/MS +credent +credential/SGMD +credenza/SM +credibility/IMS +credible/I +credibly/I +creditability/M +creditableness/M +creditable/P +creditably/E +credited/U +credit/EGBSD +creditor/MS +credit's +creditworthiness +credo/SM +credulity/ISM +credulous/IY +credulousness/SM +creedal +creed/C +creeds +creed's +creekside +creek/SM +Creek/SM +creel/SMDG +Cree/MDS +creeper/M +creepily +creepiness/SM +creep/SGZR +creepy/PRST +Creigh/M +Creight/M +Creighton/M +cremate/XDSNG +cremation/M +crematoria +crematorium/MS +crematory/S +creme/S +crenelate/XGNSD +crenelation/M +Creole/MS +creole/SM +Creon/M +creosote/MGDS +crepe/DSGM +crept +crescendoed +crescendoing +crescendo/SCM +crescent/MS +cress/S +crestfallenness/M +crestfallen/PY +cresting/M +crestless +crest/SGMD +Crestview/M +cretaceous +Cretaceously/M +Cretaceous/Y +Cretan/S +Crete/M +cretinism/MS +cretin/MS +cretinous +cretonne/SM +crevasse/DSMG +crevice/SM +crew/DMGS +crewel/SM +crewelwork/SM +crewman/M +crewmen +cribbage/SM +cribbed +cribber/SM +cribbing/M +crib/SM +Crichton/M +cricketer/M +cricket/SMZRDG +crick/GDSM +Crick/M +cried/C +crier/CM +cries/C +Crimea/M +Crimean +crime/GMDS +criminality/MS +criminalization/C +criminalize/GC +criminal/SYM +criminologist/SM +criminology/MS +crimper/M +crimp/RDGS +crimson/DMSG +cringer/M +cringe/SRDG +crinkle/DSG +crinkly/TRS +Crin/M +crinoline/SM +cripple/GMZDRS +crippler/M +crippling/Y +Crisco/M +crises +crisis/M +Cris/M +crisper/M +crispiness/SM +crispness/MS +crisp/PGTYRDS +crispy/RPT +criss +crisscross/GDS +Crissie/M +Crissy/M +Cristabel/M +Cristal/M +Crista/M +Cristen/M +Cristian/M +Cristiano/M +Cristie/M +Cristi/M +Cristina/M +Cristine/M +Cristin/M +Cristionna/M +Cristobal/M +Cristy/M +criteria +criterion/M +criticality +critically/U +criticalness/M +critical/YP +criticism/MS +criticized/U +criticize/GSRDZ +criticizer/M +criticizes/A +criticizingly/S +criticizing/UY +critic/MS +critique/MGSD +critter/SM +Cr/M +croaker/M +croak/SRDGZ +croaky/RT +Croatia/M +Croatian/S +Croat/SM +Croce/M +crocheter/M +crochet/RDSZJG +crockery/SM +Crockett/M +Crockpot/M +crock/SGRDM +crocodile/MS +crocus/SM +Croesus/SM +crofter/M +croft/MRGZS +croissant/MS +Croix/M +Cromwellian +Cromwell/M +crone/SM +Cronin/M +Cronkite/M +Cronus/M +crony/SM +crookedness/SM +crooked/TPRY +Crookes/M +crookneck/MS +crook/SGDM +crooner/M +croon/SRDGZ +cropland/MS +crop/MS +cropped +cropper/SM +cropping +croquet/MDSG +croquette/SM +Crosby/M +crosier/SM +crossarm +crossbarred +crossbarring +crossbar/SM +crossbeam/MS +crossbones +crossbowman/M +crossbowmen +crossbow/SM +crossbred/S +crossbreed/SG +crosscheck/SGD +crosscurrent/SM +crosscut/SM +crosscutting +crossed/UA +crosses/UA +crossfire/SM +crosshatch/GDS +crossing/M +Cross/M +crossness/MS +crossover/MS +crosspatch/MS +crosspiece/SM +crosspoint +crossproduct/S +crossroad/GSM +crossroads/M +crosstalk/M +crosstown +crosswalk/MS +crossway/M +crosswind/SM +crosswise +crossword/MS +cross/ZTYSRDMPBJG +crotchetiness/M +crotchet/MS +crotchety/P +crotchless +crotch/MDS +crouch/DSG +croupier/M +croup/SMDG +croupy/TZR +croton/MS +crowbait +crowbarred +crowbarring +crowbar/SM +crowdedness/M +crowded/P +crowd/MRDSG +crowfeet +crowfoot/M +crow/GDMS +Crowley/M +crowned/U +crowner/M +crown/RDMSJG +crozier's +CRT/S +crucial/Y +crucible/MS +crucifiable +crucifixion/MS +Crucifixion/MS +crucifix/SM +cruciform/S +crucify/NGDS +crudded +crudding +cruddy/TR +crudeness/MS +crude/YSP +crudits +crudity/MS +crud/STMR +cruelness/MS +cruelty/SM +cruel/YRTSP +cruet/MS +cruft +crufty +Cruikshank/M +cruise/GZSRD +cruiser/M +cruller/SM +crumb/GSYDM +crumble/DSJG +crumbliness/MS +crumbly/PTRS +crumby/RT +crumminess/S +crummy/SRTP +crump +crumpet/SM +crumple/DSG +crunch/DSRGZ +crunchiness/MS +crunchy/TRP +crupper/MS +crusade/GDSRMZ +crusader/M +cruse/MS +crushable/U +crusher/M +crushing/Y +crushproof +crush/SRDBGZ +Crusoe/M +crustacean/MS +crustal +crust/GMDS +crustily +crustiness/SM +crusty/SRTP +crutch/MDSG +Crux/M +crux/MS +Cruz/M +crybaby/MS +cry/JGDRSZ +cryogenic/S +cryogenics/M +cryostat/M +cryosurgery/SM +cryptanalysis/M +cryptanalyst/M +cryptanalytic +crypt/CS +cryptic +cryptically +cryptogram/MS +cryptographer/MS +cryptographic +cryptographically +cryptography/MS +cryptologic +cryptological +cryptologist/M +cryptology/M +Cryptozoic/M +crypt's +crystalline/S +crystallite/SM +crystallization/AMS +crystallized/UA +crystallizes/A +crystallize/SRDZG +crystallizing/A +crystallographer/MS +crystallographic +crystallography/M +Crystal/M +crystal/SM +Crysta/M +Crystie/M +Cs +C's +cs/EA +cs's +CST +ct +CT +Cthrine/M +Ct/M +ctn +ctr +Cuba/M +Cuban/S +cubbed +cubbing +cubbyhole/MS +cuber/M +cube/SM +cubical/Y +cubicle/SM +cubic/YS +cubism/SM +cubist/MS +cubit/MS +cub/MDRSZG +cuboid +Cuchulain/M +cuckold/GSDM +cuckoldry/MS +cuckoo/SGDM +cucumber/MS +cuddle/GSD +cuddly/TRP +cu/DG +cudgel/GSJMD +cud/MS +cue/MS +cuff/GSDM +Cuisinart/M +cuisine/MS +Culbertson/M +culinary +Cullan/M +cull/DRGS +cullender's +Cullen/M +culler/M +Culley/M +Cullie/M +Cullin/M +Cull/MN +Cully/M +culminate/XSDGN +culmination/M +culotte/S +culpability/MS +culpable/I +culpableness/M +culpably +culpa/SM +culprit/SM +cultism/SM +cultist/SM +cultivable +cultivated/U +cultivate/XBSDGN +cultivation/M +cultivator/SM +cult/MS +cultural/Y +cultured/U +culture/SDGM +Culver/MS +culvert/SM +Cu/M +cumber/DSG +Cumberland/M +cumbersomeness/MS +cumbersome/YP +cumbrous +cumin/MS +cummerbund/MS +Cummings +cumquat's +cum/S +cumulate/XVNGSD +cumulation/M +cumulative/Y +cumuli +cumulonimbi +cumulonimbus/M +cumulus/M +Cunard/M +cuneiform/S +cunnilingus/SM +Cunningham/M +cunningness/M +cunning/RYSPT +cunt/SM! +cupboard/SM +cupcake/SM +Cupertino/M +cupful/SM +cupidinously +cupidity/MS +Cupid/M +cupid/S +cup/MS +cupola/MDGS +cupped +cupping/M +cupric +cuprous +curability/MS +curable/IP +curableness/MI +curably/I +Curacao/M +curacy/SM +curare/MS +curate/VGMSD +curative/YS +curatorial +curator/KMS +curbing/M +curbside +curb/SJDMG +curbstone/MS +Curcio/M +curdle/SDG +curd/SMDG +cured/U +cure/KBDRSGZ +curer/MK +curettage/SM +curfew/SM +curfs +curiae +curia/M +cur/IBS +Curie/M +curie/SM +curiosity/SM +curio/SM +curiousness/SM +curious/TPRY +Curitiba/M +curium/MS +curler/SM +curlew/MS +curlicue/MGDS +curliness/SM +curling/M +curl/UDSG +curlycue's +curly/PRT +curmudgeon/MYS +Curran/M +currant/SM +curred/AFI +currency's +currency/SF +current/FSY +currently/A +currentness/M +Currey/M +curricle/M +curricula +curricular +curriculum/M +Currie/M +currier/M +Currier/M +curring/FAI +Curr/M +currycomb/DMGS +Curry/MR +curry/RSDMG +cur's +curs/ASDVG +curse/A +cursedness/M +cursed/YRPT +curse's +cursive/EPYA +cursiveness/EM +cursives +cursor/DMSG +cursorily +cursoriness/SM +cursory/P +curtailer/M +curtail/LSGDR +curtailment/SM +curtain/GSMD +Curtice/M +Curtis/M +Curt/M +curtness/MS +curtsey's +curtsy/SDMG +curt/TYRP +curvaceousness/S +curvaceous/YP +curvature/MS +curved/A +curved's +curve/DSGM +curvilinearity/M +curvilinear/Y +curving/M +curvy/RT +cushion/SMDG +Cushman/M +cushy/TR +cuspid/MS +cuspidor/MS +cusp/MS +cussedness/M +cussed/YP +cuss/EGDSR +cusses/F +cussing/F +cuss's +custard/MS +Custer/M +custodial +custodianship/MS +custodian/SM +custody/MS +customarily +customariness/M +customary/PS +customer/M +customhouse/S +customization/SM +customize/ZGBSRD +custom/SMRZ +cutaneous/Y +cutaway/SM +cutback/SM +cuteness/MS +cute/SPY +cutesy/RT +cuticle/SM +cutlass/MS +cutler/SM +cutlery/MS +cutlet/SM +cut/MRST +cutoff/MS +cutout/SM +cutter/SM +cutthroat/SM +cutting/MYS +cuttlebone/SM +cuttlefish/MS +cuttle/M +cutup/MS +cutworm/MS +Cuvier/M +Cuzco/M +CV +cw +cwt +Cyanamid/M +cyanate/M +cyanic +cyanide/GMSD +cyan/MS +cyanogen/M +Cybele/M +cybernetic/S +cybernetics/M +cyberpunk/S +cyberspace/S +Cybill/M +Cybil/M +Cyb/M +cyborg/S +Cyclades +cyclamen/MS +cycle/ASDG +cycler +cycle's +cycleway/S +cyclic +cyclical/SY +cycling/M +cyclist/MS +cyclohexanol +cycloidal +cycloid/SM +cyclometer/MS +cyclone/SM +cyclonic +cyclopean +cyclopedia/MS +cyclopes +Cyclopes +cyclops +Cyclops/M +cyclotron/MS +cyder/SM +cygnet/MS +Cygnus/M +cylinder/GMDS +cylindric +cylindrical/Y +Cy/M +cymbalist/MS +cymbal/SM +Cymbre/M +Cynde/M +Cyndia/M +Cyndie/M +Cyndi/M +Cyndy/M +cynical/UY +cynicism/MS +cynic/MS +cynosure/SM +Cynthea/M +Cynthia/M +Cynthie/M +Cynthy/M +cypher/MGSD +cypreses +cypress/SM +Cyprian +Cypriot/SM +Cyprus/M +Cyrano/M +Cyrille/M +Cyrillic +Cyrill/M +Cyrillus/M +Cyril/M +Cyrus/M +cystic +cyst/MS +cytochemistry/M +cytochrome/M +cytologist/MS +cytology/MS +cytolysis/M +cytoplasmic +cytoplasm/SM +cytosine/MS +cytotoxic +CZ +czarevitch/M +czarina/SM +czarism/M +czarist/S +czarship +czar/SM +Czech +Czechoslovakia/M +Czechoslovakian/S +Czechoslovak/S +Czechs +Czerniak/M +Czerny/M +D +DA +dabbed +dabber/MS +dabbing +dabbler/M +dabble/RSDZG +dab/S +Dacca's +dace/MS +Dacey/M +dacha/SM +Dachau/M +dachshund/SM +Dacia/M +Dacie/M +Dacron/MS +dactylic/S +dactyl/MS +Dacy/M +Dadaism/M +dadaism/S +Dadaist/M +dadaist/S +Dada/M +daddy/SM +Dade/M +dado/DMG +dadoes +dad/SM +Daedalus/M +Dael/M +daemonic +daemon/SM +Daffie/M +Daffi/M +daffiness/S +daffodil/MS +Daffy/M +daffy/PTR +daftness/MS +daft/TYRP +DAG +dagger/DMSG +Dag/M +Dagmar/M +Dagny/M +Daguerre/M +daguerreotype/MGDS +Dagwood/M +Dahlia/M +dahlia/MS +Dahl/M +Dahomey/M +Daile/M +dailiness/MS +daily/PS +Daimler/M +daintily +daintiness/MS +dainty/TPRS +daiquiri/SM +dairying/M +dairyland +dairymaid/SM +dairyman/M +dairymen +dairy/MJGS +dairywoman/M +dairywomen +Daisey/M +Daisie/M +Daisi/M +dais/SM +Daisy/M +daisy/SM +Dakar/M +Dakotan +Dakota/SM +Dale/M +Dalenna/M +dale/SMH +daleth/M +Daley/M +Dalhousie/M +Dalia/M +Dalian/M +Dalila/M +Dali/SM +Dallas/M +dalliance/SM +dallier/M +Dalli/MS +Dall/M +Dallon/M +dally/ZRSDG +Dal/M +Dalmatia/M +dalmatian/S +Dalmatian/SM +Daloris/M +Dalston/M +Dalt/M +Dalton/M +Daly/M +damageable +damaged/U +damage/MZGRSD +damager/M +damaging/Y +Damara/M +Damaris/M +Damascus/M +damask/DMGS +dame/SM +Dame/SMN +Damian/M +Damiano/M +Damien/M +Damion/M +Damita/M +dam/MDS +dammed +damming +dammit/S +damnably +damnation/MS +damnedest/MS +damned/TR +damn/GSBRD +damning/Y +Damocles/M +Damon/M +damped/U +dampener/M +dampen/RDZG +damper/M +dampness/MS +damp/SGZTXYRDNP +damselfly/MS +damsel/MS +damson/MS +Dana +Dana/M +Danbury/M +dancelike +dancer/M +dance/SRDJGZ +dandelion/MS +dander/DMGS +dandify/SDG +dandily +dandle/GSD +dandruff/MS +dandy/TRSM +Danelaw/M +Danella/M +Danell/M +Dane/SM +Danette/M +danger/DMG +Dangerfield/M +dangerousness/M +dangerous/YP +dangler/M +dangle/ZGRSD +dangling/Y +dang/SGZRD +Danial/M +Dania/M +Danica/M +Danice/M +Daniela/M +Daniele/M +Daniella/M +Danielle/M +Daniel/SM +Danielson/M +Danie/M +Danika/M +Danila/M +Dani/M +Danish +danish/S +Danita/M +Danit/M +dankness/MS +dank/TPYR +Danna/M +Dannel/M +Dannie/M +Danni/M +Dannye/M +Danny/M +danseuse/SM +Dan/SM +Dante/M +Danton/M +Danube/M +Danubian +Danville/M +Danya/M +Danyelle/M +Danyette/M +Danzig/M +Daphene/M +Daphna/M +Daphne/M +dapperness/M +dapper/PSTRY +dapple/SDG +Dara/M +Darbee/M +Darbie/M +Darb/M +Darby/M +Darcee/M +Darcey/M +Darcie/M +Darci/M +D'Arcy +Darcy/M +Darda/M +Dardanelles +daredevil/MS +daredevilry/S +Dareen/M +Darelle/M +Darell/M +Dare/M +Daren/M +darer/M +daresay +dare/ZGDRSJ +d'Arezzo +Daria/M +Darice/M +Darill/M +Dari/M +daringness/M +daring/PY +Darin/M +Dario/M +Darius/M +Darjeeling/M +darkener/M +darken/RDZG +dark/GTXYRDNSP +darkish +darkly/TR +darkness/MS +darkroom/SM +Darla/M +Darleen/M +Darlene/M +Darline/M +Darling/M +darlingness/M +Darlington/M +darling/YMSP +Darlleen/M +Dar/MNH +Darnall/M +darned/TR +Darnell/M +darner/M +darn/GRDZS +darning/M +Darn/M +Daron/M +DARPA/M +Darrelle/M +Darrell/M +Darrel/M +Darren/M +Darrick/M +Darrin/M +Darrow/M +Darryl/M +Darsey/M +Darsie/M +d'art +dartboard/SM +darter/M +Darth/M +Dartmouth/M +dart/MRDGZS +Darvon/M +Darwinian/S +Darwinism/MS +Darwinist/MS +Darwin/M +Darya/M +Daryle/M +Daryl/M +Daryn/M +Dasha/M +dashboard/SM +dasher/M +dash/GZSRD +dashiki/SM +dashing/Y +Dasie/M +Dasi/M +dastardliness/SM +dastardly/P +dastard/MYS +Dasya/M +DAT +database/DSMG +datafile +datagram/MS +data/M +Datamation/M +Datamedia/M +dataset/S +datedly +datedness +date/DRSMZGV +dated/U +dateless +dateline/DSMG +dater/M +Datha/M +dative/S +Datsun/M +datum/MS +dauber/M +daub/RDSGZ +Daugherty/M +daughter/MYS +Daumier/M +Daune/M +daunt/DSG +daunted/U +daunting/Y +dauntlessness/SM +dauntless/PY +dauphin/SM +Davao/M +Daveen/M +Dave/M +Daven/M +Davenport/M +davenport/MS +Daveta/M +Davey/M +Davida/M +Davidde/M +Davide/M +David/SM +Davidson/M +Davie/M +Davina/M +Davine/M +Davinich/M +Davin/M +Davis/M +Davita/M +davit/SM +Dav/MN +Davon/M +Davy/SM +dawdler/M +dawdle/ZGRSD +Dawes/M +Dawna/M +dawn/GSDM +Dawn/M +Dawson/M +daybed/S +daybreak/SM +daycare/S +daydreamer/M +daydream/RDMSZG +Dayle/M +daylight/GSDM +Day/M +Dayna/M +daysack +day/SM +daytime/SM +Dayton/M +dazed/PY +daze/DSG +dazzler/M +dazzle/ZGJRSD +dazzling/Y +db +DB +dbl +dB/M +DBMS +DC +DD +Ddene/M +DDS +DDT +DE +deacon/DSMG +deaconess/MS +deadbeat/SM +deadbolt/S +deadener/M +deadening/MY +deaden/RDG +deadhead/MS +deadline/MGDS +deadliness/SM +deadlock/MGDS +deadly/RPT +deadness/M +deadpanned +deadpanner +deadpanning +deadpan/S +dead/PTXYRN +deadwood/SM +deafening/MY +deafen/JGD +deafness/MS +deaf/TXPYRN +dealer/M +dealership/MS +dealing/M +deallocator +deal/RSGZJ +dealt +Deana/M +dean/DMG +Deandre/M +Deane/M +deanery/MS +Dean/M +Deanna/M +Deanne/M +Deann/M +deanship/SM +Dearborn/M +dearness/MS +dearth/M +dearths +dear/TYRHPS +deary/MS +deassign +deathbed/MS +deathblow/SM +deathless/Y +deathlike +deathly/TR +death/MY +deaths +deathtrap/SM +deathward +deathwatch/MS +debacle/SM +debarkation/SM +debark/G +debar/L +debarment/SM +debarring +debaser/M +debatable/U +debate/BMZ +debater/M +debauchedness/M +debauched/PY +debauchee/SM +debaucher/M +debauchery/SM +debauch/GDRS +Debbie/M +Debbi/M +Debby/M +Debee/M +debenture/MS +Debera/M +debilitate/NGXSD +debilitation/M +debility/MS +Debi/M +debit/DG +deb/MS +Deb/MS +debonairness/SM +debonair/PY +Deborah/M +Debora/M +Debor/M +debouch/DSG +Debra/M +debrief/GJ +debris/M +debtor/SM +debt/SM +Debussy/M +dbutante/SM +debut/MDG +decade/MS +decadency/S +decadent/YS +decaffeinate/DSG +decaf/S +decagon/MS +Decalogue/M +decal/SM +decamp/L +decampment/MS +decapitate/GSD +decapitator/SM +decathlon/SM +Decatur/M +decay/GRD +Decca/M +Deccan/M +decease/M +decedent/MS +deceitfulness/SM +deceitful/PY +deceit/SM +deceived/U +deceiver/M +deceives/U +deceive/ZGRSD +deceivingly +deceiving/U +decelerate/XNGSD +deceleration/M +decelerator/SM +December/SM +decency/ISM +decennial/SY +decent/TIYR +deception/SM +deceptiveness/SM +deceptive/YP +decertify/N +dechlorinate/N +decibel/MS +decidability/U +decidable/U +decidedness/M +decided/PY +decide/GRSDB +deciduousness/M +deciduous/YP +decile/SM +deciliter/SM +decimal/SYM +decimate/XNGDS +decimation/M +decimeter/MS +decipherable/IU +decipher/BRZG +decipherer/M +decisional +decisioned +decisioning +decision/ISM +decisive/IPY +decisiveness/MSI +deckchair +decker/M +Decker/M +deck/GRDMSJ +deckhand/S +decking/M +Deck/RM +declamation/SM +declamatory +declarable +declaration/MS +declaration's/A +declarative/SY +declarator/MS +declaratory +declare/AGSD +declared/U +declarer/MS +declension/SM +declination/MS +decliner/M +decline/ZGRSD +declivity/SM +Dec/M +DEC/M +DECNET +DECnet/M +deco +dcolletage/S +dcollet +decolletes +decolorising +decomposability/M +decomposable/IU +decompose/B +decompress/R +decongestant/S +deconstruction +deconvolution +decorated/AU +decorate/NGVDSX +decorates/A +decorating/A +decoration/ASM +decorativeness/M +decorative/YP +decorator/SM +decorousness/MS +decorousness's/I +decorous/PIY +decor/S +decorticate/GNDS +decortication/M +decorum/MS +decoupage/MGSD +decouple/G +decoy/M +decrease +decreasing/Y +decreeing +decree/RSM +decremental +decrement/DMGS +decrepit +decrepitude/SM +decriminalization/S +decriminalize/DS +decry/G +decrypt/GD +decryption +DECstation/M +DECsystem/M +DECtape/M +decustomised +Dedekind/M +Dede/M +dedicate/AGDS +dedicated/Y +dedication/MS +dedicative +dedicator/MS +dedicatory +Dedie/M +Dedra/M +deduce/RSDG +deducible +deductibility/M +deductible/S +deduction/SM +deductive/Y +deduct/VG +Deeanne/M +Deeann/M +deeded +Deedee/M +deeding +deed/IS +deed's +deejay/MDSG +Dee/M +deem/ADGS +deemphasis +Deena/M +deepen/DG +deepish +deepness/MS +deep/PTXSYRN +Deerdre/M +Deere/M +deerskin/MS +deer/SM +deerstalker/SM +deerstalking/M +Deeyn/M +deface/LZ +defacement/SM +defaecate +defalcate/NGXSD +defalcation/M +defamation/SM +defamatory +defamer/M +defame/ZR +defaulter/M +default/ZR +defeated/U +defeater/M +defeatism/SM +defeatist/SM +defeat/ZGD +defecate/DSNGX +defecation/M +defection/SM +defectiveness/MS +defective/PYS +defect/MDSVG +defector/MS +defendant/SM +defended/U +defenestrate/GSD +defenselessness/MS +defenseless/PY +defenses/U +defense/VGSDM +defensibility/M +defensible/I +defensibly/I +defensiveness/MS +defensive/PSY +deference/MS +deferential/Y +deferent/S +deferrable +deferral/SM +deferred +deferrer/MS +deferring +deffer +defiance/MS +defiant/Y +defibrillator/M +deficiency/MS +deficient/SY +deficit/MS +defier/M +defile/L +defilement/MS +definable/UI +definably/I +define/AGDRS +defined/U +definer/SM +definite/IPY +definiteness/IMS +definitional +definition/ASM +definitiveness/M +definitive/SYP +defis +deflate/XNGRSDB +deflationary +deflation/M +deflect/DSGV +deflected/U +deflection/MS +deflector/MS +defocus +defocussing +Defoe/M +defog +defogger/S +defoliant/SM +defoliator/SM +deformational +deform/B +deformed/U +deformity/SM +defrauder/M +defraud/ZGDR +defrayal/SM +defroster/M +defrost/RZ +deftness/MS +deft/TYRP +defunct/S +defying/Y +defy/RDG +def/Z +deg +Degas/M +degassing +degauss/GD +degeneracy/MS +degenerateness/M +degenerate/PY +degrade/B +degradedness/M +degraded/YP +degrading/Y +degrease +degree/SM +degum +Dehlia/M +dehumanize +dehydrator/MS +deicer/M +deice/ZR +deictic +Deidre/M +deification/M +deify/SDXGN +deign/DGS +Deimos/M +Deina/M +Deirdre/MS +deistic +deist/SM +Deity/M +deity/SM +deja +deject/DSG +dejectedness/M +dejected/PY +dejection/SM +Dejesus/M +DeKalb/M +DeKastere/M +Delacroix/M +Delacruz/M +Delainey/M +Dela/M +Delaney/M +Delano/M +Delawarean/SM +Delaware/MS +delay/D +delayer/G +Delbert/M +Delcina/M +Delcine/M +delectableness/M +delectable/SP +delectably +delectation/MS +delegable +Deleon/M +deleted/U +deleteriousness/M +deleterious/PY +delete/XBRSDNG +deletion/M +delfs +Delft/M +delft/MS +delftware/S +Delgado/M +Delhi/M +Delia/M +deliberateness/SM +deliberate/PVY +deliberativeness/M +deliberative/PY +Delibes/M +delicacy/IMS +delicate/IYP +delicatenesses +delicateness/IM +delicates +delicatessen/MS +deliciousness/MS +delicious/YSP +delicti +delightedness/M +delighted/YP +delightfulness/M +delightful/YP +Delilah/M +Delilahs +Delila/M +Delinda/M +delineate/SDXVNG +delineation/M +delinquency/MS +delinquent/SYM +deliquesce/GSD +deliquescent +deliriousness/MS +delirious/PY +delirium/SM +deli/SM +Delius/M +deliverables +deliverable/U +deliver/AGSD +deliverance/SM +delivered/U +deliverer/SM +delivery/AM +deliverymen/M +Della/M +Dell/M +dell/SM +Dellwood/M +Delly/M +Delmar/M +Delmarva/M +Delmer/M +Delmonico +Delmore/M +Delmor/M +Del/MY +Delora/M +Delores/M +Deloria/M +Deloris/M +Delphic +Delphi/M +Delphine/M +Delphinia/M +delphinium/SM +Delphinus/M +Delta/M +delta/MS +deltoid/SM +deluder/M +delude/RSDG +deluding/Y +deluge/SDG +delusional +delusion/SM +delusiveness/M +delusive/PY +deluxe +delve/GZSRD +delver/M +demagnify/N +demagogic +demagogue/GSDM +demagoguery/SM +demagogy/MS +demander/M +demand/GSRD +demandingly +demanding/U +demarcate/SDNGX +demarcation/M +Demavend/M +demean/GDS +demeanor/SM +dementedness/M +demented/YP +dementia/MS +Demerol/M +demesne/SM +Demeter/M +Demetra/M +Demetre/M +Demetria/M +Demetri/MS +Demetrius/M +demigod/MS +demijohn/MS +demimondaine/SM +demimonde/SM +demineralization/SM +Deming/M +demise/DMG +demit +demitasse/MS +demitted +demitting +Dem/MG +democracy/MS +Democratic +democratically/U +democratic/U +democratization/MS +democratize/DRSG +democratizes/U +Democrat/MS +democrat/SM +Democritus/M +dmod +demo/DMPG +demographer/MS +demographical/Y +demographic/S +demography/MS +demolisher/M +demolish/GSRD +demolition/MS +demonetization/S +demoniacal/Y +demoniac/S +demonic +demonology/M +demon/SM +demonstrable/I +demonstrableness/M +demonstrably/I +demonstrate/XDSNGV +demonstration/M +demonstrativenesses +demonstrativeness/UM +demonstratives +demonstrative/YUP +demonstrator/MS +demoralization/M +demoralizer/M +demoralizing/Y +DeMorgan/M +Demosthenes/M +demote/DGX +demotic/S +Demott/M +demount/B +Dempsey/M +demulcent/S +demultiplex +demureness/SM +demure/YP +demurral/MS +demurred +demurrer/MS +demurring +demur/RTS +demythologization/M +demythologize/R +den +Dena/M +dendrite/MS +Deneb/M +Denebola/M +Deneen/M +Dene/M +Deng/M +dengue/MS +deniable/U +denial/SM +Denice/M +denier/M +denigrate/VNGXSD +denigration/M +denim/SM +Denise/M +Deni/SM +denizen/SMDG +Den/M +De/NM +Denmark/M +Denna/M +denned +Dennet/M +Denney/M +Dennie/M +Denni/MS +denning +Dennison/M +Denny/M +denominate/V +denominational/Y +denote/B +denouement/MS +denounce/LZRSDG +denouncement/SM +denouncer/M +dense/FR +densely +denseness/SM +densitometer/MS +densitometric +densitometry/M +density/MS +dens/RT +dental/YS +dentifrice/SM +dentine's +dentin/SM +dent/ISGD +dentistry/MS +dentist/SM +dentition/MS +dent's +denture/IMS +denuclearize/GSD +denudation/SM +denude/DG +denuder/M +denunciate/VNGSDX +denunciation/M +Denver/M +denying/Y +Deny/M +Denys +Denyse/M +deny/SRDZG +deodorant/SM +deodorization/SM +deodorize/GZSRD +deodorizer/M +Deon/M +Deonne/M +deoxyribonucleic +depart/L +departmentalization/SM +departmentalize/DSG +departmental/Y +department/MS +departure/MS +dependability/MS +dependableness/M +dependable/P +dependably +Dependant/MS +depend/B +dependence/ISM +dependency/MS +dependent/IYS +dependent's +depicted/U +depicter/M +depiction/SM +depict/RDSG +depilatory/S +deplete/VGNSDX +depletion/M +deplorableness/M +deplorable/P +deplorably +deplorer/M +deplore/SRDBG +deploring/Y +deployable +deploy/AGDLS +deployment/SAM +depolarize +deponent/S +deportation/MS +deportee/SM +deport/LG +deportment/MS +depose +deposit/ADGS +depositary/M +deposition/A +depositor/SAM +depository/MS +depravedness/M +depraved/PY +deprave/GSRD +depraver/M +depravity/SM +deprecate/XSDNG +deprecating/Y +deprecation/M +deprecatory +depreciable +depreciate/XDSNGV +depreciating/Y +depreciation/M +depreciative/Y +depressant/S +depressible +depression/MS +depressive/YS +depressor/MS +depress/V +deprive/GSD +depth/M +depths +Dept/M +deputation/SM +depute/SDG +deputize/DSG +deputy/MS +dequeue +derail/L +drailleur/MS +derailment/MS +derange/L +derangement/MS +Derbyshire/M +derby/SM +Derby/SM +dereference/Z +Derek/M +dereliction/SM +derelict/S +Derick/M +deride/D +deriding/Y +derision/SM +derisiveness/MS +derisive/PY +derisory +derivable/U +derivate/XNV +derivation/M +derivativeness/M +derivative/SPYM +derive/B +derived/U +Derk/M +Der/M +dermal +dermatitides +dermatitis/MS +dermatological +dermatologist/MS +dermatology/MS +dermis/SM +Dermot/M +derogate/XDSNGV +derogation/M +derogatorily +derogatory +Derrek/M +Derrick/M +derrick/SMDG +Derrida/M +derrire/S +Derrik/M +Derril/M +derringer/SM +Derron/M +Derry/M +dervish/SM +Derward/M +Derwin/M +Des +desalinate/NGSDX +desalination/M +desalinization/MS +desalinize/GSD +desalt/G +descant/M +Descartes/M +descendant/SM +descended/FU +descendent's +descender/M +descending/F +descends/F +descend/ZGSDR +descent +describable/I +describe/ZB +description/MS +descriptiveness/MS +descriptive/SYP +descriptor/SM +descry/SDG +Desdemona/M +desecrater/M +desecrate/SRDGNX +desecration/M +deserter/M +desertification +desertion/MS +desert/ZGMRDS +deservedness/M +deserved/YU +deserve/J +deserving/Y +dshabill's +desiccant/S +desiccate/XNGSD +desiccation/M +desiccator/SM +desiderata +desideratum/M +designable +design/ADGS +designate/VNGSDX +designational +designation/M +designator/SM +designed/Y +designer/M +designing/U +Desi/M +desirabilia +desirability's +desirability/US +desirableness/SM +desirableness's/U +desirable/UPS +desirably/U +Desirae/M +desire/BR +desired/U +Desiree/M +desirer/M +Desiri/M +desirousness/M +desirous/PY +desist/DSG +desk/SM +desktop/S +Desmond/M +Desmund/M +desolateness/SM +desolate/PXDRSYNG +desolater/M +desolating/Y +desolation/M +desorption/M +despairer/M +despairing/Y +despair/SGDR +desperadoes +desperado/M +desperateness/SM +desperate/YNXP +desperation/M +despicable +despicably +despiser/M +despise/SRDG +despoil/L +despoilment/MS +despond +despondence/S +despondency/MS +despondent/Y +despotic +despotically +despotism/SM +dessert/SM +dessicate/DN +d'Estaing +destinate/NX +destination/M +destine/GSD +destiny/MS +destituteness/M +destitute/NXP +destitution/M +destroy/BZGDRS +destroyer/M +destructibility/SMI +destructible/I +destruction/SM +destructiveness/MS +destructive/YP +destructor/M +destruct/VGSD +desuetude/MS +desultorily +desultoriness/M +desultory/P +detachedness/M +detached/YP +detacher/M +detach/LSRDBG +detachment/SM +detailedness/M +detailed/YP +detainee/S +detainer/M +detain/LGRDS +detainment/MS +d'etat +detectability/U +detectable/U +detectably/U +detect/DBSVG +detected/U +detection/SM +detective/MS +detector/MS +dtente +detentes +detention/SM +detergency/M +detergent/SM +deteriorate/XDSNGV +deterioration/M +determent/SM +determinability/M +determinable/IP +determinableness/IM +determinacy/I +determinant/MS +determinateness/IM +determinate/PYIN +determination/IM +determinativeness/M +determinative/P +determinedly +determinedness/M +determined/U +determine/GASD +determiner/SM +determinism/MS +determinism's/I +deterministically +deterministic/I +deterred/U +deterrence/SM +deterrent/SMY +deterring +detersive/S +deter/SL +deters/V +detestableness/M +detestable/P +detestably +detestation/SM +dethrone/L +dethronement/SM +detonable +detonated/U +detonate/XDSNGV +detonation/M +detonator/MS +detour/G +detoxification/M +detoxify/NXGSD +detox/SDG +detract/GVD +detractive/Y +d'etre +detribalize/GSD +detrimental/SY +detriment/SM +detritus/M +Detroit/M +deuced/Y +deuce/SDGM +deus +deuterium/MS +deuteron/M +Deuteronomy/M +Deutsch/M +Deva/M +Devanagari/M +Devan/M +devastate/XVNGSD +devastating/Y +devastation/M +devastator/SM +develop/ALZSGDR +developed/U +developer/MA +developmental/Y +development/ASM +deviance/MS +deviancy/S +deviant/YMS +deviated/U +deviate/XSDGN +deviating/U +deviation/M +devilishness/MS +devilish/PY +devilment/SM +devilry/MS +devil/SLMDG +deviltry/MS +Devi/M +Devina/M +Devin/M +Devinne/M +deviousness/SM +devious/YP +devise/JR +deviser/M +Devland/M +Devlen/M +Devlin/M +Dev/M +devoice +devolution/MS +devolve/GSD +Devondra/M +Devonian +Devon/M +Devonna/M +Devonne/M +Devonshire/M +Devora/M +devoted/Y +devotee/MS +devote/XN +devotional/YS +devotion/M +devourer/M +devour/SRDZG +devoutness/MS +devout/PRYT +Devy/M +Dewain/M +dewar +Dewar/M +Dewayne/M +dewberry/MS +dewclaw/SM +dewdrop/MS +Dewey/M +Dewie/M +dewiness/MS +Dewitt/M +dewlap/MS +Dew/M +dew/MDGS +dewy/TPR +Dexedrine/M +dexes/I +Dex/M +dexter +dexterity/MS +Dexter/M +dexterousness/MS +dexterous/PY +dextrose/SM +DH +Dhaka +Dhaulagiri/M +dhoti/SM +dhow/MS +DI +diabase/M +diabetes/M +diabetic/S +diabolic +diabolicalness/M +diabolical/YP +diabolism/M +diachronic/P +diacritical/YS +diacritic/MS +diadem/GMDS +diaereses +diaeresis/M +Diaghilev/M +diagnometer/SM +diagnosable/U +diagnose/BGDS +diagnosed/U +diagnosis/M +diagnostically +diagnostician/SM +diagnostic/MS +diagnostics/M +diagonalize/GDSB +diagonal/YS +diagrammable +diagrammatic +diagrammaticality +diagrammatically +diagrammed +diagrammer/SM +diagramming +diagram/MS +Diahann/M +dialectal/Y +dialectical/Y +dialectic/MS +dialect/MS +dialed/A +dialer/M +dialing/M +dial/MRDSGZJ +dialogged +dialogging +dialog/MS +dials/A +dialysis/M +dialyzed/U +dialyzes +diam +diamagnetic +diameter/MS +diametric +diametrical/Y +diamondback/SM +diamond/GSMD +Diana/M +Diandra/M +Diane/M +Dianemarie/M +Dian/M +Dianna/M +Dianne/M +Diann/M +Diannne/M +diapason/MS +diaper/SGDM +diaphanousness/M +diaphanous/YP +diaphragmatic +diaphragm/SM +diarist/SM +Diarmid/M +diarrheal +diarrhea/MS +diary/MS +diaspora +Diaspora/SM +diastase/SM +diastole/MS +diastolic +diathermy/SM +diathesis/M +diatomic +diatom/SM +diatonic +diatribe/MS +Diaz's +dibble/SDMG +dibs +DiCaprio/M +dice/GDRS +dicer/M +dicey +dichloride/M +dichotomization/M +dichotomize/DSG +dichotomous/PY +dichotomy/SM +dicier +diciest +dicing/M +Dickensian/S +dickens/M +Dickens/M +dicker/DG +Dickerson/M +dickey/SM +dick/GZXRDMS! +Dickie/M +dickier +dickiest +Dickinson/M +Dickson/M +Dick/XM +Dicky/M +dicky's +dicotyledonous +dicotyledon/SM +dicta/M +Dictaphone/SM +dictate/SDNGX +dictation/M +dictatorialness/M +dictatorial/YP +dictator/MS +dictatorship/SM +dictionary/SM +diction/MS +dictum/M +didactically +didactic/S +didactics/M +did/AU +diddler/M +diddle/ZGRSD +Diderot/M +Didi/M +didn't +didoes +dido/M +Dido/M +didst +die/DS +Diefenbaker/M +Diego/M +dieing +dielectric/MS +diem +Diem/M +Diena/M +Dierdre/M +diereses +dieresis/M +diesel/GMDS +Diesel's +dies's +dies/U +dietary/S +dieter/M +Dieter/M +dietetic/S +dietetics/M +diethylaminoethyl +diethylstilbestrol/M +dietitian/MS +diet/RDGZSM +Dietrich/M +Dietz/M +difference/DSGM +difference's/I +differences/I +differentiability +differentiable +differential/SMY +differentiated/U +differentiate/XSDNG +differentiation/M +differentiator/SM +differentness +different/YI +differ/SZGRD +difficile +difficult/Y +difficulty/SM +diffidence/MS +diffident/Y +diffract/GSD +diffraction/SM +diffractometer/SM +diffuseness/MS +diffuse/PRSDZYVXNG +diffuser/M +diffusible +diffusional +diffusion/M +diffusiveness/M +diffusive/YP +diffusivity/M +digerati +digested/IU +digester/M +digestibility/MS +digestible/I +digestifs +digestion/ISM +digestive/YSP +digest/RDVGS +digger/MS +digging/S +digitalis/M +digitalization/MS +digitalized +digitalizes +digitalizing +digital/SY +digitization/M +digitizer/M +digitize/ZGDRS +digit/SM +dignified/U +dignify/DSG +dignitary/SM +dignity/ISM +digram +digraph/M +digraphs +digress/GVDS +digression/SM +digressiveness/M +digressive/PY +dig/TS +dihedral +Dijkstra/M +Dijon/M +dike/DRSMG +diker/M +diktat/SM +Dilan/M +dilapidate/XGNSD +dilapidation/M +dilatation/SM +dilated/YP +dilate/XVNGSD +dilation/M +dilatoriness/M +dilator/SM +dilatory/P +Dilbert/M +dilemma/MS +dilettante/MS +dilettantish +dilettantism/MS +diligence/SM +diligentness/M +diligent/YP +dilithium +Dillard/M +Dillie/M +Dillinger/M +dilling/R +dillis +Dill/M +Dillon/M +dill/SGMD +dillydally/GSD +Dilly/M +dilly/SM +dilogarithm +diluent +diluted/U +diluteness/M +dilute/RSDPXYVNG +dilution/M +Di/M +DiMaggio/M +dimensionality/M +dimensional/Y +dimensionless +dimension/MDGS +dimer/M +dime/SM +dimethylglyoxime +dimethyl/M +diminished/U +diminish/SDGBJ +diminuendo/SM +diminution/SM +diminutiveness/M +diminutive/SYP +Dimitri/M +Dimitry/M +dimity/MS +dimmed/U +dimmer/MS +dimmest +dimming +dimness/SM +dimorphism/M +dimple/MGSD +dimply/RT +dim/RYPZS +dimwit/MS +dimwitted +Dinah/M +Dina/M +dinar/SM +diner/M +dine/S +dinette/MS +dingbat/MS +ding/GD +dinghy/SM +dingily +dinginess/SM +dingle/MS +dingoes +dingo/MS +dingus/SM +dingy/PRST +dinky/RST +din/MDRZGS +dinned +dinner/SM +dinnertime/S +dinnerware/MS +Dinnie/M +dinning +Dinny/M +Dino/M +dinosaur/MS +dint/SGMD +diocesan/S +diocese/SM +Diocletian/M +diode/SM +Diogenes/M +Dione/M +Dionisio/M +Dionis/M +Dion/M +Dionne/M +Dionysian +Dionysus/M +Diophantine/M +diopter/MS +diorama/SM +Dior/M +dioxalate +dioxide/MS +dioxin/S +diphtheria/SM +diphthong/SM +diplexers +diploid/S +diplomacy/SM +diploma/SMDG +diplomata +diplomatically +diplomatic/S +diplomatics/M +diplomatist/SM +diplomat/MS +dipodic +dipody/M +dipole/MS +dipped +Dipper/M +dipper/SM +dipping/S +dippy/TR +dip/S +dipsomaniac/MS +dipsomania/SM +dipstick/MS +dipterous +diptych/M +diptychs +Dir +Dirac/M +directed/IUA +directionality +directional/SY +direction/MIS +directions/A +directive/SM +directivity/M +directly/I +directness/ISM +director/AMS +directorate/SM +directorial +directorship/SM +directory/SM +direct/RDYPTSVG +directrix/MS +directs/IA +direful/Y +direness/M +dire/YTRP +dirge/GSDM +Dirichlet/M +dirigible/S +dirk/GDMS +Dirk/M +dirndl/MS +dirtily +dirtiness/SM +dirt/MS +dirty/GPRSDT +Dis +disable/LZGD +disablement/MS +disabler/M +disabuse +disadvantaged/P +disagreeable/S +disallow/D +disambiguate/DSGNX +disappointed/Y +disappointing/Y +disarming/Y +disarrange/L +disastrous/Y +disband/L +disbandment/SM +disbar/L +disbarment/MS +disbarring +disbelieving/Y +disbursal/S +disburse/GDRSL +disbursement/MS +disburser/M +discerner/M +discernibility +discernible/I +discernibly +discerning/Y +discernment/MS +discern/SDRGL +disc/GDM +discharged/U +disciple/DSMG +discipleship/SM +disciplinarian/SM +disciplinary +disciplined/U +discipline/IDM +discipliner/M +disciplines +disciplining +disclosed/U +discography/MS +discolored/MP +discoloreds/U +discolor/G +discombobulate/SDGNX +discomfit/DG +discomfiture/MS +disco/MG +discommode/DG +disconcerting/Y +disconnectedness/S +disconnected/P +disconnecter/M +disconnect/R +disconsolate/YN +discordance/SM +discordant/Y +discord/G +discorporate/D +discotheque/MS +discount/B +discourage/LGDR +discouragement/MS +discouraging/Y +discoverable/I +discover/ADGS +discovered/U +discoverer/S +discovery/SAM +discreetly/I +discreetness's/I +discreetness/SM +discreet/TRYP +discrepancy/SM +discrepant/Y +discreteness/SM +discrete/YPNX +discretionary +discretion/IMS +discretization +discretized +discriminable +discriminant/MS +discriminated/U +discriminate/SDVNGX +discriminating/YI +discrimination/MI +discriminator/MS +discriminatory +discursiveness/S +discussant/MS +discussed/UA +discusser/M +discussion/SM +discus/SM +disdainfulness/M +disdainful/YP +disdain/MGSD +disease/G +disembowelment/SM +disembowel/SLGD +disengage/L +disfigure/L +disfigurement/MS +disfranchise/L +disfranchisement/MS +disgorge +disgrace/R +disgracer/M +disgruntle/DSLG +disgruntlement/MS +disguised/UY +disguise/R +disguiser/M +disgust +disgusted/Y +disgustful/Y +disgusting/Y +dishabille/SM +disharmonious +dishcloth/M +dishcloths +dishevel/LDGS +dishevelment/MS +dish/GD +dishonest +dishonored/U +dishpan/MS +dishrag/SM +dishtowel/SM +dishwasher/MS +dishwater/SM +disillusion/LGD +disillusionment/SM +disinfectant/MS +disinherit +disinterestedness/SM +disinterested/P +disinvest/L +disjoin +disjointedness/S +disjunctive/YS +disjunct/VS +disk/D +diskette/S +dislike/G +dislodge/LG +dislodgement/M +dismalness/M +dismal/PSTRY +dismantle/L +dismantlement/SM +dismay/D +dismayed/U +dismaying/Y +dis/MB +dismember/LG +dismemberment/MS +dismissive/Y +dismiss/RZ +Disneyland/M +Disney/M +disoblige/G +disorderedness/M +disordered/YP +disorderliness/M +disorderly/P +disorder/Y +disorganize +disorganized/U +disparagement/MS +disparager/M +disparage/RSDLG +disparaging/Y +disparateness/M +disparate/PSY +dispatch/Z +dispelled +dispelling +dispel/S +dispensable/I +dispensary/MS +dispensate/NX +dispensation/M +dispenser/M +dispense/ZGDRSB +dispersal/MS +dispersant/M +dispersed/Y +disperser/M +disperse/XDRSZLNGV +dispersible +dispersion/M +dispersiveness/M +dispersive/PY +dispirit/DSG +displace/L +display/AGDS +displayed/U +displeased/Y +displease/G +displeasure +disport +disposable/S +disposal/SM +dispose/IGSD +dispositional +disposition/ISM +disproportional +disproportionate/N +disproportionation/M +disprove/B +disputable/I +disputably/I +disputant/SM +disputation/SM +disputatious/Y +disputed/U +disputer/M +dispute/ZBGSRD +disquieting/Y +disquiet/M +disquisition/SM +Disraeli/M +disregardful +disrepair/M +disreputableness/M +disreputable/P +disrepute/M +disrespect +disrupted/U +disrupter/M +disrupt/GVDRS +disruption/MS +disruptive/YP +disruptor/M +dissatisfy +dissect/DG +dissed +dissembler/M +dissemble/ZGRSD +disseminate/XGNSD +dissemination/M +dissension/SM +dissenter/M +dissent/ZGSDR +dissertation/SM +disservice +disses +dissever +dissidence/SM +dissident/MS +dissimilar/S +dissing +dissipatedly +dissipatedness/M +dissipated/U +dissipater/M +dissipate/XRSDVNG +dissipation/M +dissociable/I +dissociate/DSXNGV +dissociated/U +dissociation/M +dissociative/Y +dissoluble/I +dissoluteness/SM +dissolute/PY +dissolve/ASDG +dissolved/U +dissonance/SM +dissonant/Y +dissuade/GDRS +dissuader/M +dissuasive +dist +distaff/SM +distal/Y +distance/DSMG +distantness/M +distant/YP +distaste +distemper +distend +distension +distention/SM +distillate/XNMS +distillation/M +distillery/MS +distincter +distinctest +distinction/MS +distinctiveness/MS +distinctive/YP +distinct/IYVP +distinctness/MSI +distinguishable/I +distinguishably/I +distinguish/BDRSG +distinguished/U +distinguisher/M +distort/BGDR +distorted/U +distorter/M +distortion/MS +distract/DG +distractedness/M +distracted/YP +distracting/Y +distrait +distraught/Y +distress +distressful +distressing/Y +distribute/ADXSVNGB +distributed/U +distributer +distributional +distribution/AM +distributiveness/M +distributive/SPY +distributivity +distributorship/M +distributor/SM +district/GSAD +district's +distrust/G +disturbance/SM +disturbed/U +disturber/M +disturbing/Y +disturb/ZGDRS +disulfide/M +disuse/M +disyllable/M +Dita/M +ditcher/M +ditch/MRSDG +dither/RDZSG +ditsy/TR +ditto/DMGS +ditty/SDGM +Ditzel/M +ditz/S +diuresis/M +diuretic/S +diurnal/SY +divalent/S +diva/MS +divan/SM +dived/M +divergence/SM +divergent/Y +diverge/SDG +diver/M +diverseness/MS +diverse/XYNP +diversification/M +diversifier/M +diversify/GSRDNX +diversionary +diversion/M +diversity/SM +divert/GSD +diverticulitis/SM +divertimento/M +dive/S +divestiture/MS +divest/LDGS +divestment/S +dividable +divide/AGDS +divided/U +dividend/MS +divider/MS +divination/SM +diviner/M +divine/RSDTZYG +divinity/MS +divisibility/IMS +divisible/I +divisional +division/SM +divisiveness/MS +divisive/PY +divisor/SM +divorce/MS +divorce/GSDLM +divorcement/MS +divot/MS +div/TZGJDRS +divulge/GSD +divvy/GSDM +Dixiecrat/MS +dixieland +Dixieland/MS +Dixie/M +Dix/M +Dixon/M +dizzily +dizziness/SM +dizzying/Y +dizzy/PGRSDT +DJ +Djakarta's +djellabah's +djellaba/S +d/JGVX +Djibouti/M +DMD +Dmitri/M +DMZ +DNA +Dnepropetrovsk/M +Dnepr's +Dnieper's +Dniester/M +Dniren/M +DOA +doable +DOB +Dobbin/M +dobbin/MS +Doberman +Dobro/M +docent/SM +docile/Y +docility/MS +docker/M +docket/GSMD +dock/GZSRDM +dockland/MS +dockside/M +dockworker/S +dockyard/SM +doc/MS +Doctor +doctoral +doctorate/SM +doctor/GSDM +Doctorow/M +doctrinaire/S +doctrinal/Y +doctrine/SM +docudrama/S +documentary/MS +documentation/MS +documented/U +document/RDMZGS +DOD +dodder/DGS +dodecahedra +dodecahedral +dodecahedron/M +Dode/M +dodge/GZSRD +Dodge/M +dodgem/S +dodger/M +Dodgson/M +Dodie/M +Dodi/M +Dodington/M +Dodoma/M +dodo/SM +Dodson/M +Dody/M +DOE +Doe/M +doe/MS +doer/MU +does/AU +doeskin/MS +doesn't +d'oeuvre +doff/SGD +dogcart/SM +dogcatcher/MS +dogeared +Doge/M +doge/SM +dogfight/GMS +dogfish/SM +dogfought +doggedness/SM +dogged/PY +doggerel/SM +dogging +doggone/RSDTG +doggy/SRMT +doghouse/SM +dogie/SM +doglegged +doglegging +dogleg/SM +dogma/MS +dogmatically/U +dogmatic/S +dogmatics/M +dogmatism/SM +dogmatist/SM +dogsbody/M +dog/SM +dogtooth/M +Dogtown/M +dogtrot/MS +dogtrotted +dogtrotting +dogwood/SM +dogy's +Doha/M +doh's +doily/SM +doing/MU +Dolby/SM +doldrum/S +doldrums/M +doled/F +dolefuller +dolefullest +dolefulness/MS +doleful/PY +Dole/M +dole/MGDS +doles/F +Dolf/M +doling/F +dollar/SM +Dolley/M +Dollie/M +Dolli/M +Doll/M +doll/MDGS +dollop/GSMD +Dolly/M +dolly/SDMG +dolmen/MS +dolomite/SM +dolomitic +Dolores/M +Dolorita/SM +dolorous/Y +dolor/SM +dolphin/SM +Dolph/M +doltishness/SM +doltish/YP +dolt/MS +domain/MS +dome/DSMG +Domenic/M +Domenico/M +Domeniga/M +Domesday/M +domestically +domesticate/DSXGN +domesticated/U +domestication/M +domesticity/MS +domestic/S +domicile/SDMG +domiciliary +dominance/MS +dominant/YS +dominate/VNGXSD +domination/M +dominator/M +dominatrices +dominatrix +domineer/DSG +domineeringness/M +domineering/YP +Dominga/M +Domingo/M +Dominguez/M +Dominica/M +Dominican/MS +Dominick/M +Dominic/M +Dominik/M +Domini/M +dominion/MS +Dominique/M +dominoes +domino/M +Domitian/M +Dom/M +Donahue/M +Donald/M +Donaldson/M +Donall/M +Donal/M +Donalt/M +Dona/M +dona/MS +Donatello/M +donate/XVGNSD +donation/M +donative/M +Donaugh/M +Donavon/M +done/AUF +Donella/M +Donelle/M +Donetsk/M +Donetta/M +dong/GDMS +dongle/S +Donia/M +Donica/M +Donielle/M +Donizetti/M +donkey/MS +Donna/M +Donnamarie/M +donned +Donnell/M +Donnelly/M +Donne/M +Donner/M +Donnie/M +Donni/M +donning +donnishness/M +donnish/YP +Donn/RM +donnybrook/MS +Donny/M +donor/MS +Donovan/M +don/S +Don/SM +don't +donut/MS +donutted +donutting +doodad/MS +doodlebug/MS +doodler/M +doodle/SRDZG +doohickey/MS +Dooley/M +Doolittle/M +doom/MDGS +doomsday/SM +Doonesbury/M +doorbell/SM +door/GDMS +doorhandles +doorkeeper/M +doorkeep/RZ +doorknob/SM +doorman/M +doormat/SM +doormen +doornail/M +doorplate/SM +doors/I +doorstep/MS +doorstepped +doorstepping +doorstop/MS +doorway/MS +dooryard/SM +dopamine +dopant/M +dopa/SM +dope/DRSMZG +doper/M +dopey +dopier +dopiest +dopiness/S +Doppler/M +Dorado/M +Doralia/M +Doralin/M +Doralyn/M +Doralynne/M +Doralynn/M +Dora/M +Dorcas +Dorchester/M +Doreen/M +Dorelia/M +Dorella/M +Dorelle/M +Dor/M +Dorena/M +Dorene/M +Doretta/M +Dorette/M +Dorey/M +Doria/M +Dorian/M +Doric +Dorice/M +Dorie/M +Dori/MS +Dorine/M +Dorisa/M +Dorise/M +Dorita/M +dork/S +dorky/RT +dormancy/MS +dormant/S +dormer/M +dormice +dormitory/SM +dorm/MRZS +dormouse/M +Dorolice/M +Dorolisa/M +Doro/M +Dorotea/M +Doroteya/M +Dorothea/M +Dorothee/M +Dorothy/M +Dorree/M +Dorrie/M +Dorri/SM +Dorry/M +dorsal/YS +Dorsey/M +Dorthea/M +Dorthy/M +Dortmund/M +Dory/M +dory/SM +DOS +dosage/SM +dose/M +dos/GDS +Dosi/M +dosimeter/MS +dosimetry/M +dossier/MS +dost +Dostoevsky/M +DOT +dotage/SM +dotard/MS +doter/M +dote/S +Doti/M +doting/Y +Dot/M +dot/MDRSJZG +Dotson/M +dotted +Dottie/M +Dotti/M +dottiness/M +dotting +Dotty/M +dotty/PRT +do/TZRHGJ +Douala/M +Douay/M +Doubleday/M +doubled/UA +double/GPSRDZ +doubleheader/MS +doubleness/M +doubler/M +doubles/M +doublespeak/S +doublethink/M +doublet/MS +doubleton/M +doubling/A +doubloon/MS +doubly +doubt/AGSDMB +doubted/U +doubter/SM +doubtfulness/SM +doubtful/YP +doubting/Y +doubtlessness/M +doubtless/YP +douche/GSDM +Dougherty/M +dough/M +doughs +doughty/RT +doughy/RT +Dougie/M +Douglas/M +Douglass +Doug/M +Dougy/M +dourness/MS +Douro/M +dour/TYRP +douser/M +douse/SRDG +dovecote/MS +Dover/M +dove/RSM +dovetail/GSDM +dovish +Dov/MR +dowager/SM +dowdily +dowdiness/MS +dowdy/TPSR +dowel/GMDS +dower/GDMS +Dow/M +downbeat/SM +downcast/S +downdraft/M +downer/M +Downey/M +downfall/NMS +downgrade/GSD +down/GZSRD +downheartedness/MS +downhearted/PY +downhill/RS +downland +download/DGS +downpipes +downplay/GDS +downpour/MS +downrange +downrightness/M +downright/YP +downriver +Downs +downscale/GSD +downside/S +downsize/DSG +downslope +downspout/SM +downstage/S +downstairs +downstate/SR +downstream +downswing/MS +downtime/SM +downtowner/M +downtown/MRS +downtrend/M +downtrodden +downturn/MS +downwardness/M +downward/YPS +downwind +downy/RT +dowry/SM +dowse/GZSRD +dowser/M +doxology/MS +doyenne/SM +doyen/SM +Doyle/M +Doy/M +doze +dozen/GHD +dozenths +dozer/M +doz/XGNDRS +dozy +DP +DPs +dpt +DPT +drabbed +drabber +drabbest +drabbing +drabness/MS +drab/YSP +drachma/MS +Draco/M +draconian +Draconian +Dracula/M +draft/AMDGS +draftee/SM +drafter/MS +draftily +draftiness/SM +drafting/S +draftsman/M +draftsmanship/SM +draftsmen +draftsperson +draftswoman +draftswomen +drafty/PTR +dragged +dragger/M +dragging/Y +draggy/RT +drag/MS +dragnet/MS +dragonfly/SM +dragonhead/M +dragon/SM +dragoon/DMGS +drainage/MS +drainboard/SM +drained/U +drainer/M +drainpipe/MS +drain/SZGRDM +Drake/M +drake/SM +Dramamine/MS +drama/SM +dramatically/U +dramatical/Y +dramatic/S +dramatics/M +dramatist/MS +dramatization/MS +dramatized/U +dramatizer/M +dramatize/SRDZG +dramaturgy/M +Drambuie/M +drammed +dramming +dram/MS +drank +Drano/M +draper/M +drapery/MS +drape/SRDGZ +drastic +drastically +drat/S +dratted +dratting +Dravidian/M +drawable +draw/ASG +drawback/MS +drawbridge/SM +drawer/SM +drawing/SM +drawler/M +drawling/Y +drawl/RDSG +drawly +drawn/AI +drawnly +drawnness +drawstring/MS +dray/SMDG +dreadfulness/SM +dreadful/YPS +dreadlocks +dreadnought/SM +dread/SRDG +dreamboat/SM +dreamed/U +dreamer/M +dreamily +dreaminess/SM +dreaming/Y +dreamland/SM +dreamlessness/M +dreamless/PY +dreamlike +dream/SMRDZG +dreamworld/S +dreamy/PTR +drearily +dreariness/SM +drear/S +dreary/TRSP +Dreddy/M +dredge/MZGSRD +dredger/M +Dredi/M +dreg/MS +Dreiser/M +Dre/M +drencher/M +drench/GDRS +Dresden/M +dress/ADRSG +dressage/MS +dressed/U +dresser/MS +dresser's/A +dresses/U +dressiness/SM +dressing/MS +dressmaker/MS +dressmaking/SM +dressy/PTR +drew/A +Drew/M +Drexel/M +Dreyfus/M +Dreyfuss +dribble/DRSGZ +dribbler/M +driblet/SM +drib/SM +dried/U +drier/M +drifter/M +drifting/Y +drift/RDZSG +driftwood/SM +driller/M +drilling/M +drillmaster/SM +drill/MRDZGS +drinkable/S +drink/BRSZG +drinker/M +dripped +dripping/MS +drippy/RT +drip/SM +driveler/M +drivel/GZDRS +driven/P +driver/M +drive/SRBGZJ +driveway/MS +drizzle/DSGM +drizzling/Y +drizzly/TR +Dr/M +drogue/MS +drollery/SM +drollness/MS +droll/RDSPTG +drolly +dromedary/MS +Drona/M +drone/SRDGM +droning/Y +drool/GSRD +droopiness/MS +drooping/Y +droop/SGD +droopy/PRT +drophead +dropkick/S +droplet/SM +dropout/MS +dropped +dropper/SM +dropping/MS +dropsical +drop/SM +dropsy/MS +drosophila/M +dross/SM +drought/SM +drover/M +drove/SRDGZ +drowner/M +drown/RDSJG +drowse/SDG +drowsily +drowsiness/SM +drowsy/PTR +drubbed +drubber/MS +drubbing/SM +drub/S +Drucie/M +Drucill/M +Druci/M +Drucy/M +drudge/MGSRD +drudger/M +drudgery/SM +drudging/Y +Drud/M +drugged +druggie/SRT +drugging +druggist/SM +Drugi/M +drugless +drug/SM +drugstore/SM +druidism/MS +druid/MS +Druid's +Dru/M +drumbeat/SGM +drumhead/M +drumlin/MS +drummed +drummer/SM +drumming +Drummond/M +drum/SM +drumstick/SM +drunkard/SM +drunkenness/SM +drunken/YP +drunk/SRNYMT +drupe/SM +Drury/M +Drusie/M +Drusilla/M +Drusi/M +Drusy/M +druthers +dryad/MS +Dryden/M +dryer/MS +dry/GYDRSTZ +dryish +dryness/SM +drys +drystone +drywall/GSD +D's +d's/A +Dshubba/M +DST +DTP +dualism/MS +dualistic +dualist/M +duality/MS +dual/YS +Duane/M +Dubai/M +dubbed +dubber/S +dubbing/M +dubbin/MS +Dubcek/M +Dubhe/M +dubiety/MS +dubiousness/SM +dubious/YP +Dublin/M +Dubrovnik/M +dub/S +Dubuque/M +ducal +ducat/SM +duce/CAIKF +duce's +Duchamp/M +duchess/MS +duchy/SM +duckbill/SM +ducker/M +duck/GSRDM +duckling/SM +duckpins +duckpond +duckweed/MS +ducky/RSMT +ducted/CFI +ductile/I +ductility/SM +ducting/F +duct/KMSF +ductless +duct's/A +ducts/CI +ductwork/M +dudder +dude/MS +dudgeon/SM +dud/GMDS +Dudley/M +Dud/M +duelist/MS +duel/MRDGZSJ +dueness/M +duenna/MS +due/PMS +duet/MS +duetted +duetting +duffel/M +duffer/M +duff/GZSRDM +Duffie/M +Duff/M +Duffy/M +Dugald/M +dugout/SM +dug/S +duh +DUI +Duisburg/M +dukedom/SM +duke/DSMG +Duke/M +Dukey/M +Dukie/M +Duky/M +Dulcea/M +Dulce/M +dulcet/SY +Dulcia/M +Dulciana/M +Dulcie/M +dulcify +Dulci/M +dulcimer/MS +Dulcinea/M +Dulcine/M +Dulcy/M +dullard/MS +Dulles/M +dullness/MS +dull/SRDPGT +dully +dulness's +Dulsea/M +Duluth/M +duly/U +Du/M +Dumas +dumbbell/MS +dumbfound/GSDR +dumbness/MS +Dumbo/M +dumb/PSGTYRD +dumbstruck +dumbwaiter/SM +dumdum/MS +dummy/SDMG +Dumont/M +dumper/UM +dumpiness/MS +dumpling/MS +dump/SGZRD +dumpster/S +Dumpster/S +Dumpty/M +dumpy/PRST +Dunant/M +Dunbar/M +Duncan/M +dunce/MS +Dunc/M +Dundee/M +dunderhead/MS +Dunedin/M +dune/SM +dungaree/SM +dungeon/GSMD +dunghill/MS +dung/SGDM +Dunham/M +dunker/M +dunk/GSRD +Dunkirk/M +Dunlap/M +Dun/M +dunned +Dunne/M +dunner +dunnest +dunning +Dunn/M +dunno/M +dun/S +Dunstan/M +duodecimal/S +duodena +duodenal +duodenum/M +duologue/M +duo/MS +duopolist +duopoly/M +dupe/NGDRSMZ +duper/M +dupion/M +duple +duplexer/M +duplex/MSRDG +duplicability/M +duplicable +duplicate/ADSGNX +duplication/AM +duplicative +duplicator/MS +duplicitous +duplicity/SM +Dupont/MS +DuPont/MS +durability/MS +durableness/M +durable/PS +durably +Duracell/M +durance/SM +Durand/M +Duran/M +Durante/M +Durant/M +durational +duration/MS +Durban/M +Drer/M +duress/SM +Durex/M +Durham/MS +during +Durkee/M +Durkheim/M +Dur/M +Durocher/M +durst +durum/MS +Durward/M +Duse/M +Dusenberg/M +Dusenbury/M +Dushanbe/M +dusk/GDMS +duskiness/MS +dusky/RPT +Dsseldorf +dustbin/MS +dustcart/M +dustcover +duster/M +dustily +dustiness/MS +dusting/M +Dustin/M +dustless +dustman/M +dustmen +dust/MRDGZS +dustpan/SM +Dusty/M +dusty/RPT +Dutch/M +Dutchman/M +Dutchmen +dutch/MS +Dutchwoman +Dutchwomen +duteous/Y +dutiable +dutifulness/S +dutiful/UPY +duty/SM +Duvalier/M +duvet/SM +duxes +Dvina/M +Dvork/M +Dwain/M +dwarfish +dwarfism/MS +dwarf/MTGSPRD +Dwayne/M +dweeb/S +dweller/SM +dwell/IGS +dwelling/MS +dwelt/I +DWI +Dwight/M +dwindle/GSD +dyadic +dyad/MS +Dyana/M +Dyane/M +Dyan/M +Dyanna/M +Dyanne/M +Dyann/M +dybbukim +dybbuk/SM +dyed/A +dyeing/M +dye/JDRSMZG +dyer/M +Dyer/M +dyes/A +dyestuff/SM +dying/UA +Dyke/M +dyke's +Dylan/M +Dy/M +Dynah/M +Dyna/M +dynamical/Y +dynamic/S +dynamics/M +dynamism/SM +dynamiter/M +dynamite/RSDZMG +dynamized +dynamo/MS +dynastic +dynasty/MS +dyne/M +dysentery/SM +dysfunctional +dysfunction/MS +dyslectic/S +dyslexia/MS +dyslexically +dyslexic/S +dyspepsia/MS +dyspeptic/S +dysprosium/MS +dystopia/M +dystrophy/M +dz +Dzerzhinsky/M +E +ea +each +Eachelle/M +Eada/M +Eadie/M +Eadith/M +Eadmund/M +eagerness/MS +eager/TSPRYM +eagle/SDGM +eaglet/SM +Eakins/M +Ealasaid/M +Eal/M +Eamon/M +earache/SM +eardrum/SM +earful/MS +ear/GSMDYH +Earhart/M +earing/M +earldom/MS +Earle/M +Earlene/M +Earlie/M +Earline/M +earliness/SM +Earl/M +earl/MS +earlobe/S +Early/M +early/PRST +earmark/DGSJ +earmuff/SM +earned/U +earner/M +Earnestine/M +Earnest/M +earnestness/MS +earnest/PYS +earn/GRDZTSJ +earning/M +earphone/MS +earpieces +earplug/MS +Earp/M +earring/MS +earshot/MS +earsplitting +Eartha/M +earthbound +earthed/U +earthenware/MS +earthiness/SM +earthliness/M +earthling/MS +earthly/TPR +earth/MDNYG +earthmen +earthmover/M +earthmoving +earthquake/SDGM +earthshaking +earths/U +earthward/S +earthwork/MS +earthworm/MS +earthy/PTR +Earvin/M +earwax/MS +earwigged +earwigging +earwig/MS +eased/E +ease/LDRSMG +easel/MS +easement/MS +easer/M +ease's/EU +eases/UE +easies +easily/U +easiness/MSU +easing/M +eastbound +easterly/S +Easter/M +easterner/M +Easterner/M +easternmost +Eastern/RZ +eastern/ZR +easter/Y +east/GSMR +Easthampton/M +easting/M +Eastland/M +Eastman/M +eastward/S +Eastwick/M +Eastwood/M +East/ZSMR +easygoingness/M +easygoing/P +easy/PUTR +eatables +eatable/U +eaten/U +eater/M +eatery/MS +eating/M +Eaton/M +eat/SJZGNRB +eavesdropped +eavesdropper/MS +eavesdropping +eavesdrop/S +eave/SM +Eba/M +Ebba/M +ebb/DSG +EBCDIC +Ebeneezer/M +Ebeneser/M +Ebenezer/M +Eben/M +Eberhard/M +Eberto/M +Eb/MN +Ebola +Ebonee/M +Ebonics +Ebony/M +ebony/SM +Ebro/M +ebullience/SM +ebullient/Y +ebullition/SM +EC +eccentrically +eccentricity/SM +eccentric/MS +eccl +Eccles +Ecclesiastes/M +ecclesiastical/Y +ecclesiastic/MS +ECG +echelon/SGDM +echinoderm/SM +echo/DMG +echoed/A +echoes/A +echoic +echolocation/SM +clair/MS +clat/MS +eclectically +eclecticism/MS +eclectic/S +eclipse/MGSD +ecliptic/MS +eclogue/MS +ecocide/SM +ecol +Ecole/M +ecologic +ecological/Y +ecologist/MS +ecology/MS +Eco/M +econ +Econometrica/M +econometricians +econometric/S +econometrics/M +economical/YU +economic/S +economics/M +economist/MS +economization +economize/GZSRD +economizer/M +economizing/U +economy/MS +ecosystem/MS +ecru/SM +ecstasy/MS +Ecstasy/S +ecstatically +ecstatic/S +ectoplasm/M +Ecuadoran/S +Ecuadorean/S +Ecuadorian/S +Ecuador/M +ecumenical/Y +ecumenicism/SM +ecumenicist/MS +ecumenic/MS +ecumenics/M +ecumenism/SM +ecumenist/MS +eczema/MS +Eda/M +Edam/SM +Edan/M +ed/ASC +Edda/M +Eddie/M +Eddi/M +Edd/M +Eddy/M +eddy/SDMG +Edee/M +Edeline/M +edelweiss/MS +Ede/M +edema/SM +edematous +eden +Eden/M +Edgard/M +Edgardo/M +Edgar/M +edge/DRSMZGJ +edgeless +edger/M +Edgerton/M +Edgewater/M +edgewise +Edgewood/M +edgily +edginess/MS +edging/M +edgy/TRP +edibility/MS +edibleness/SM +edible/SP +edict/SM +Edie/M +edification/M +edifice/SM +edifier/M +edifying/U +edify/ZNXGRSD +Edik/M +Edi/MH +Edinburgh/M +Edin/M +Edison/M +editable +Edita/M +edited/IU +Editha/M +Edithe/M +Edith/M +edition/SM +editorialist/M +editorialize/DRSG +editorializer/M +editorial/YS +editor/MS +editorship/MS +edit/SADG +Ediva/M +Edlin/M +Edmond/M +Edmon/M +Edmonton/M +Edmund/M +Edna/M +Edouard/M +EDP +eds +Edsel/M +Edsger/M +EDT +Eduard/M +Eduardo/M +educability/SM +educable/S +educated/YP +educate/XASDGN +educationalists +educational/Y +education/AM +educationists +educative +educator/MS +educ/DBG +educe/S +eduction/M +Eduino/M +edutainment/S +Edvard/M +Edwardian +Edwardo/M +Edward/SM +Edwina/M +Edwin/M +Ed/XMN +Edy/M +Edythe/M +Edyth/M +EEC +EEG +eek/S +eelgrass/M +eel/MS +e'en +EEO +EEOC +e'er +eerie/RT +eerily +eeriness/MS +Eeyore/M +effaceable/I +effacement/MS +effacer/M +efface/SRDLG +effectiveness/ISM +effectives +effective/YIP +effector/MS +effect/SMDGV +effectual/IYP +effectualness/MI +effectuate/SDGN +effectuation/M +effeminacy/MS +effeminate/SY +effendi/MS +efferent/SY +effervesce/GSD +effervescence/SM +effervescent/Y +effeteness/SM +effete/YP +efficacious/IPY +efficaciousness/MI +efficacy/IMS +efficiency/MIS +efficient/ISY +Effie/M +effigy/SM +effloresce +efflorescence/SM +efflorescent +effluence/SM +effluent/MS +effluvia +effluvium/M +effluxion +efflux/M +effortlessness/SM +effortless/PY +effort/MS +effrontery/MS +effulgence/SM +effulgent +effuse/XSDVGN +effusion/M +effusiveness/MS +effusive/YP +EFL +e/FMDS +Efrain/M +Efrem/M +Efren/M +EFT +egad +egalitarian/I +egalitarianism/MS +egalitarians +EGA/M +Egan/M +Egbert/M +Egerton/M +eggbeater/SM +eggcup/MS +egger/M +egg/GMDRS +eggheaded/P +egghead/SDM +eggnog/SM +eggplant/MS +eggshell/SM +egis's +eglantine/MS +egocentrically +egocentricity/SM +egocentric/S +egoism/SM +egoistic +egoistical/Y +egoist/SM +egomaniac/MS +egomania/MS +Egon/M +Egor/M +ego/SM +egotism/SM +egotistic +egotistical/Y +egotist/MS +egregiousness/MS +egregious/PY +egress/SDMG +egret/SM +Egyptian/S +Egypt/M +Egyptology/M +eh +Ehrlich/M +Eichmann/M +eiderdown/SM +eider/SM +eidetic +Eiffel/M +eigenfunction/MS +eigenstate/S +eigenvalue/SM +eigenvector/MS +eighteen/MHS +eighteenths +eightfold +eighth/MS +eighths +eightieths +eightpence +eight/SM +eighty/SHM +Eileen/M +Eilis/M +Eimile/M +Einsteinian +einsteinium/MS +Einstein/SM +Eire/M +Eirena/M +Eisenhower/M +Eisenstein/M +Eisner/M +eisteddfod/M +either +ejaculate/SDXNG +ejaculation/M +ejaculatory +ejecta +ejection/SM +ejector/SM +eject/VGSD +Ekaterina/M +Ekberg/M +eked/A +eke/DSG +EKG +Ekstrom/M +Ektachrome/M +elaborateness/SM +elaborate/SDYPVNGX +elaboration/M +elaborators +Elaina/M +Elaine/M +Elana/M +eland/SM +Elane/M +lan/M +Elanor/M +elans +elapse/SDG +el/AS +elastically/I +elasticated +elasticity/SM +elasticize/GDS +elastic/S +elastodynamics +elastomer/M +elatedness/M +elated/PY +elater/M +elate/SRDXGN +elation/M +Elayne/M +Elba/MS +Elbe/M +Elberta/M +Elbertina/M +Elbertine/M +Elbert/M +elbow/GDMS +elbowroom/SM +Elbrus/M +Elden/M +elderberry/MS +elderflower +elderliness/M +elderly/PS +elder/SY +eldest +Eldin/M +Eldon/M +Eldorado's +Eldredge/M +Eldridge/M +Eleanora/M +Eleanore/M +Eleanor/M +Eleazar/M +electable/U +elect/ASGD +elected/U +electioneer/GSD +election/SAM +electiveness/M +elective/SPY +electoral/Y +electorate/SM +elector/SM +Electra/M +electress/M +electricalness/M +electrical/PY +electrician/SM +electricity/SM +electric/S +electrification/M +electrifier/M +electrify/ZXGNDRS +electrocardiogram/MS +electrocardiograph/M +electrocardiographs +electrocardiography/MS +electrochemical/Y +electrocute/GNXSD +electrocution/M +electrode/SM +electrodynamics/M +electrodynamic/YS +electroencephalogram/SM +electroencephalographic +electroencephalograph/M +electroencephalographs +electroencephalography/MS +electrologist/MS +electroluminescent +electrolysis/M +electrolyte/SM +electrolytic +electrolytically +electrolyze/SDG +electro/M +electromagnetic +electromagnetically +electromagnetism/SM +electromagnet/SM +electromechanical +electromechanics +electromotive +electromyograph +electromyographic +electromyographically +electromyography/M +electronegative +electronically +electronic/S +electronics/M +electron/MS +electrophoresis/M +electrophorus/M +electroplate/DSG +electroscope/MS +electroscopic +electroshock/GDMS +electrostatic/S +electrostatics/M +electrotherapist/M +electrotype/GSDZM +electroweak +eleemosynary +Eleen/M +elegance/ISM +elegant/YI +elegiacal +elegiac/S +elegy/SM +elem +elemental/YS +elementarily +elementariness/M +elementary/P +element/MS +Elena/M +Elene/M +Eleni/M +Elenore/M +Eleonora/M +Eleonore/M +elephantiases +elephantiasis/M +elephantine +elephant/SM +elevated/S +elevate/XDSNG +elevation/M +elevator/SM +eleven/HM +elevens/S +elevenths +elev/NX +Elfie/M +elfin/S +elfish +elf/M +Elfreda/M +Elfrida/M +Elfrieda/M +Elga/M +Elgar/M +Elianora/M +Elianore/M +Elia/SM +Elicia/M +elicitation/MS +elicit/GSD +elide/GSD +Elie/M +eligibility/ISM +eligible/SI +Elihu/M +Elijah/M +Eli/M +eliminate/XSDYVGN +elimination/M +eliminator/SM +Elinore/M +Elinor/M +Eliot/M +Elisabeth/M +Elisabet/M +Elisabetta/M +Elisa/M +Elise/M +Eliseo/M +Elisha/M +elision/SM +Elissa/M +Elita/M +elite/MPS +elitism/SM +elitist/SM +elixir/MS +Elizabethan/S +Elizabeth/M +Elizabet/M +Eliza/M +Elka/M +Elke/M +Elkhart/M +elk/MS +Elladine/M +Ella/M +Ellary/M +Elle/M +Ellene/M +Ellen/M +Ellerey/M +Ellery/M +Ellesmere/M +Ellette/M +Ellie/M +Ellington/M +Elliot/M +Elliott/M +ellipse/MS +ellipsis/M +ellipsoidal +ellipsoid/MS +ellipsometer/MS +ellipsometry +elliptic +elliptical/YS +ellipticity/M +Elli/SM +Ellison/M +Ellissa/M +ell/MS +Ellswerth/M +Ellsworth/M +Ellwood/M +Elly/M +Ellyn/M +Ellynn/M +Elma/M +Elmer/M +Elmhurst/M +Elmira/M +elm/MRS +Elmo/M +Elmore/M +Elmsford/M +El/MY +Elna/MH +Elnar/M +Elnath/M +Elnora/M +Elnore/M +elocutionary +elocutionist/MS +elocution/SM +elodea/S +Elohim/M +Eloisa/M +Eloise/M +elongate/NGXSD +elongation/M +Elonore/M +elopement/MS +eloper/M +elope/SRDLG +eloquence/SM +eloquent/IY +Elora/M +Eloy/M +Elroy/M +els +Elsa/M +Elsbeth/M +else/M +Else/M +Elset/M +elsewhere +Elsey/M +Elsie/M +Elsi/M +Elsinore/M +Elspeth/M +Elston/M +Elsworth/M +Elsy/M +Eltanin/M +Elton/M +eluate/SM +elucidate/SDVNGX +elucidation/M +elude/GSD +elusiveness/SM +elusive/YP +elute/DGN +elution/M +Elva/M +elven +Elvera/M +elver/SM +elves/M +Elvia/M +Elvina/M +Elvin/M +Elvira/M +elvish +Elvis/M +Elvyn/M +Elwin/M +Elwira/M +Elwood/M +Elwyn/M +Ely/M +Elyn/M +Elyse/M +Elysees +Elyse/M +Elysha/M +Elysia/M +elysian +Elysian +Elysium/SM +Elyssa/M +EM +emaciate/NGXDS +emaciation/M +emacs/M +Emacs/M +email/SMDG +Emalee/M +Emalia/M +Ema/M +emanate/XSDVNG +emanation/M +emancipate/DSXGN +emancipation/M +emancipator/MS +Emanuele/M +Emanuel/M +emasculate/GNDSX +emasculation/M +embalmer/M +embalm/ZGRDS +embank/GLDS +embankment/MS +embarcadero +embargoes +embargo/GMD +embark/ADESG +embarkation/EMS +embarrassedly +embarrassed/U +embarrassing/Y +embarrassment/MS +embarrass/SDLG +embassy/MS +embattle/DSG +embeddable +embedded +embedder +embedding/MS +embed/S +embellished/U +embellisher/M +embellish/LGRSD +embellishment/MS +ember/MS +embezzle/LZGDRS +embezzlement/MS +embezzler/M +embitter/LGDS +embitterment/SM +emblazon/DLGS +emblazonment/SM +emblematic +emblem/GSMD +embodier/M +embodiment/ESM +embody/ESDGA +embolden/DSG +embolism/SM +embosom +embosser/M +emboss/ZGRSD +embouchure/SM +embower/GSD +embraceable +embracer/M +embrace/RSDVG +embracing/Y +embrasure/MS +embrittle +embrocation/SM +embroiderer/M +embroider/SGZDR +embroidery/MS +embroilment/MS +embroil/SLDG +embryologist/SM +embryology/MS +embryonic +embryo/SM +emceeing +emcee/SDM +Emelda/M +Emelen/M +Emelia/M +Emelina/M +Emeline/M +Emelita/M +Emelyne/M +emendation/MS +emend/SRDGB +emerald/SM +Emera/M +emerge/ADSG +emergence/MAS +emergency/SM +emergent/S +emerita +emeritae +emeriti +emeritus +Emerson/M +Emery/M +emery/MGSD +emetic/S +emf/S +emigrant/MS +emigrate/SDXNG +emigration/M +migr/S +Emilee/M +Emile/M +Emilia/M +Emilie/M +Emili/M +Emiline/M +Emilio/M +Emil/M +Emily/M +eminence/MS +Eminence/MS +eminent/Y +emirate/SM +emir/SM +emissary/SM +emission/AMS +emissivity/MS +emit/S +emittance/M +emitted +emitter/SM +emitting +Emlen/M +Emlyn/M +Emlynne/M +Emlynn/M +em/M +Em/M +Emmalee/M +Emmaline/M +Emmalyn/M +Emmalynne/M +Emmalynn/M +Emma/M +Emmanuel/M +Emmeline/M +Emmerich/M +Emmery/M +Emmet/M +Emmett/M +Emmey/M +Emmie/M +Emmi/M +Emmit/M +Emmott/M +Emmye/M +Emmy/SM +Emogene/M +emollient/S +emolument/SM +Emory/M +emote/SDVGNX +emotionalism/MS +emotionality/M +emotionalize/GDS +emotional/UY +emotionless +emotion/M +emotive/Y +empaneled +empaneling +empath +empathetic +empathetical/Y +empathic +empathize/SDG +empathy/MS +emperor/MS +emphases +emphasis/M +emphasize/ZGCRSDA +emphatically/U +emphatic/U +emphysema/SM +emphysematous +empire/MS +empirical/Y +empiricism/SM +empiricist/SM +empiric/SM +emplace/L +emplacement/MS +employability/UM +employable/US +employed/U +employee/SM +employer/SM +employ/LAGDS +employment/UMAS +emporium/MS +empower/GLSD +empowerment/MS +empress/MS +emptier/M +emptily +emptiness/SM +empty/GRSDPT +empyrean/SM +ems/C +EMT +emulate/SDVGNX +emulation/M +emulative/Y +emulator/MS +emulsification/M +emulsifier/M +emulsify/NZSRDXG +emulsion/SM +emu/SM +Emylee/M +Emyle/M +enabler/M +enable/SRDZG +enactment/ASM +enact/SGALD +enameler/M +enamelware/SM +enamel/ZGJMDRS +enamor/DSG +en/BM +enc +encamp/LSDG +encampment/MS +encapsulate/SDGNX +encapsulation/M +encase/GSDL +encasement/SM +encephalitic +encephalitides +encephalitis/M +encephalographic +encephalopathy/M +enchain/SGD +enchanter/MS +enchant/ESLDG +enchanting/Y +enchantment/MSE +enchantress/MS +enchilada/SM +encipherer/M +encipher/SRDG +encircle/GLDS +encirclement/SM +encl +enclave/MGDS +enclosed/U +enclose/GDS +enclosure/SM +encoder/M +encode/ZJGSRD +encomium/SM +encompass/GDS +encore/GSD +encounter/GSD +encouragement/SM +encourager/M +encourage/SRDGL +encouraging/Y +encroacher/M +encroach/LGRSD +encroachment/MS +encrustation/MS +encrust/DSG +encrypt/DGS +encrypted/U +encryption/SM +encumbered/U +encumber/SEDG +encumbrancer/M +encumbrance/SRM +ency +encyclical/SM +encyclopaedia's +encyclopedia/SM +encyclopedic +encyst/GSLD +encystment/MS +endanger/DGSL +endangerment/SM +endear/GSLD +endearing/Y +endearment/MS +endeavored/U +endeavorer/M +endeavor/GZSMRD +endemically +endemicity +endemic/S +ender/M +endgame/M +Endicott/M +ending/M +endive/SM +endlessness/MS +endless/PY +endmost +endnote/MS +endocrine/S +endocrinologist/SM +endocrinology/SM +endogamous +endogamy/M +endogenous/Y +endomorphism/SM +endorse/DRSZGL +endorsement/MS +endorser/M +endoscope/MS +endoscopic +endoscopy/SM +endosperm/M +endothelial +endothermic +endow/GSDL +endowment/SM +endpoint/MS +endue/SDG +endungeoned +endurable/U +endurably/U +endurance/SM +endure/BSDG +enduringness/M +enduring/YP +endways +Endymion/M +end/ZGVMDRSJ +ENE +enema/SM +enemy/SM +energetically +energetic/S +energetics/M +energized/U +energizer/M +energize/ZGDRS +energy/MS +enervate/XNGVDS +enervation/M +enfeeble/GLDS +enfeeblement/SM +enfilade/MGDS +enfold/SGD +enforceability/M +enforceable/U +enforced/Y +enforce/LDRSZG +enforcement/SM +enforcer/M +enforcible/U +enfranchise/ELDRSG +enfranchisement/EMS +enfranchiser/M +engage/ADSGE +engagement/SEM +engaging/Y +Engelbert/M +Engel/MS +engender/DGS +engineer/GSMDJ +engineering/MY +engine/MGSD +England/M +england/ZR +Englebert/M +Englewood/M +English/GDRSM +Englishman/M +Englishmen +Englishwoman/M +Englishwomen +Eng/M +engorge/LGDS +engorgement/MS +Engracia/M +engram/MS +engraver/M +engrave/ZGDRSJ +engraving/M +engrossed/Y +engrosser/M +engross/GLDRS +engrossing/Y +engrossment/SM +engulf/GDSL +engulfment/SM +enhanceable +enhance/LZGDRS +enhancement/MS +enhancer/M +enharmonic +Enid/M +Enif/M +enigma/MS +enigmatic +enigmatically +Eniwetok/M +enjambement's +enjambment/MS +enjoinder +enjoin/GSD +enjoyability +enjoyableness/M +enjoyable/P +enjoyably +enjoy/GBDSL +enjoyment/SM +Enkidu/M +enlargeable +enlarge/LDRSZG +enlargement/MS +enlarger/M +enlightened/U +enlighten/GDSL +enlightening/U +enlightenment/SM +enlistee/MS +enlister/M +enlistment/SAM +enlist/SAGDL +enliven/LDGS +enlivenment/SM +enmesh/DSLG +enmeshment/SM +enmity/MS +Ennis/M +ennoble/LDRSG +ennoblement/SM +ennobler/M +ennui/SM +Enoch/M +enormity/SM +enormousness/MS +enormous/YP +Enos +enough +enoughs +enplane/DSG +enqueue/DS +enquirer/S +enquiringly +enrage/SDG +enrapture/GSD +Enrica/M +enricher/M +Enrichetta/M +enrich/LDSRG +enrichment/SM +Enrico/M +Enrika/M +Enrique/M +Enriqueta/M +enrobed +enrollee/SM +enroll/LGSD +enrollment/SM +ens +ensconce/DSG +ensemble/MS +enshrine/DSLG +enshrinement/SM +enshroud/DGS +ensign/SM +ensilage/DSMG +enslavement/MS +enslaver/M +enslave/ZGLDSR +ensnare/GLDS +ensnarement/SM +Ensolite/M +ensue/SDG +ensurer/M +ensure/SRDZG +entailer/M +entailment/MS +entail/SDRLG +entangle/EGDRSL +entanglement/ESM +entangler/EM +entente/MS +enter/ASDG +entered/U +enterer/M +enteritides +enteritis/SM +enterprise/GMSR +Enterprise/M +enterpriser/M +enterprising/Y +entertainer/M +entertaining/Y +entertainment/SM +entertain/SGZRDL +enthalpy/SM +enthrall/GDSL +enthrallment/SM +enthrone/GDSL +enthronement/MS +enthuse/DSG +enthusiasm/SM +enthusiastically/U +enthusiastic/U +enthusiast/MS +enticement/SM +entice/SRDJLZG +enticing/Y +entire/SY +entirety/SM +entitle/GLDS +entitlement/MS +entity/SM +entomb/GDSL +entombment/MS +entomological +entomologist/S +entomology/MS +entourage/SM +entr'acte/S +entrails +entrainer/M +entrain/GSLDR +entrancement/MS +entrance/MGDSL +entranceway/M +entrancing/Y +entrant/MS +entrapment/SM +entrapped +entrapping +entrap/SL +entreating/Y +entreat/SGD +entreaty/SM +entre/S +entrench/LSDG +entrenchment/MS +entrepreneurial +entrepreneur/MS +entrepreneurship/M +entropic +entropy/MS +entrust/DSG +entry/ASM +entryway/SM +entwine/DSG +enumerable +enumerate/AN +enumerated/U +enumerates +enumerating +enumeration's/A +enumeration/SM +enumerative +enumerator/SM +enunciable +enunciated/U +enunciate/XGNSD +enunciation/M +enureses +enuresis/M +envelope/MS +enveloper/M +envelopment/MS +envelop/ZGLSDR +envenom/SDG +enviableness/M +enviable/U +enviably +envied/U +envier/M +enviousness/SM +envious/PY +environ/LGSD +environmentalism/SM +environmentalist/SM +environmental/Y +environment/MS +envisage/DSG +envision/GSD +envoy/SM +envying/Y +envy/SRDMG +enzymatic +enzymatically +enzyme/SM +enzymology/M +Eocene +EOE +eohippus/M +Eolanda/M +Eolande/M +eolian +eon/SM +EPA +epaulet/SM +pe/S +ephedrine/MS +ephemeral/SY +ephemera/MS +ephemerids +ephemeris/M +Ephesian/S +Ephesians/M +Ephesus/M +Ephraim/M +Ephrayim/M +Ephrem/M +epically +epicenter/SM +epic/SM +Epictetus/M +Epicurean +epicurean/S +epicure/SM +Epicurus/M +epicycle/MS +epicyclic +epicyclical/Y +epicycloid/M +epidemically +epidemic/MS +epidemiological/Y +epidemiologist/MS +epidemiology/MS +epidermal +epidermic +epidermis/MS +epidural +epigenetic +epiglottis/SM +epigrammatic +epigram/MS +epigrapher/M +epigraph/RM +epigraphs +epigraphy/MS +epilepsy/SM +epileptic/S +epilogue/SDMG +Epimethius/M +epinephrine/SM +epiphany/SM +Epiphany/SM +epiphenomena +episcopacy/MS +episcopalian +Episcopalian/S +Episcopal/S +episcopal/Y +episcopate/MS +episode/SM +episodic +episodically +epistemic +epistemological/Y +epistemology/M +epistle/MRS +Epistle/SM +epistolary/S +epistolatory +epitaph/GMD +epitaphs +epitaxial/Y +epitaxy/M +epithelial +epithelium/MS +epithet/MS +epitome/MS +epitomized/U +epitomizer/M +epitomize/SRDZG +epochal/Y +epoch/M +epochs +eponymous +epoxy/GSD +epsilon/SM +Epsom/M +Epstein/M +equability/MS +equableness/M +equable/P +equably +equaling +equality/ISM +equalization/MS +equalize/DRSGJZ +equalized/U +equalizer/M +equalizes/U +equal/USDY +equanimity/MS +equate/NGXBSD +equation/M +equatorial/S +equator/SM +equerry/MS +equestrianism/SM +equestrian/S +equestrienne/SM +equiangular +equidistant/Y +equilateral/S +equilibrate/GNSD +equilibration/M +equilibrium/MSE +equine/S +equinoctial/S +equinox/MS +equipage/SM +equipartition/M +equip/AS +equipment/SM +equipoise/GMSD +equipotent +equipped/AU +equipping/A +equiproportional +equiproportionality +equiproportionate +equitable/I +equitableness/M +equitably/I +equitation/SM +equity/IMS +equiv +equivalence/DSMG +equivalent/SY +equivocalness/MS +equivocal/UY +equivocate/NGSDX +equivocation/M +equivocator/SM +Equuleus/M +ER +ERA +eradicable/I +eradicate/SDXVGN +eradication/M +eradicator/SM +era/MS +Eran/M +erase/N +eraser/M +erasion/M +Erasmus/M +eras/SRDBGZ +Erastus/M +erasure/MS +Erato/M +Eratosthenes/M +erbium/SM +Erda/M +ere +Erebus/M +erect/GPSRDY +erectile +erection/SM +erectness/MS +erector/SM +Erek/M +erelong +eremite/MS +Erena/M +ergo +ergodic +ergodicity/M +ergonomically +ergonomics/M +ergonomic/U +ergophobia +ergosterol/SM +ergot/SM +erg/SM +Erhard/M +Erhart/M +Erica/M +Ericha/M +Erich/M +Ericka/M +Erick/M +Erickson/M +Eric/M +Ericson's +Ericsson's +Eridanus/M +Erie/SM +Erika/M +Erik/M +Erikson/M +Erina/M +Erin/M +Erinna/M +Erinn/M +eris +Eris +Eritrea/M +Erlang/M +Erlenmeyer/M +Erl/M +Er/M +Erma/M +Ermanno/M +Ermengarde/M +Ermentrude/M +Ermina/M +ermine/MSD +Erminia/M +Erminie/M +Ermin/M +Ernaline/M +Erna/M +Ernesta/M +Ernestine/M +Ernest/M +Ernesto/M +Ernestus/M +Ernie/M +Ernst/M +Erny/M +erode/SDG +erodible +erogenous +erosible +erosional +erosion/SM +erosiveness/M +erosive/P +Eros/SM +erotically +erotica/M +eroticism/MS +erotic/S +errancy/MS +errand/MS +errantry/M +errant/YS +errata/SM +erratically +erratic/S +erratum/MS +err/DGS +Errick/M +erring/UY +Erroll/M +Errol/M +erroneousness/M +erroneous/YP +error/SM +ersatz/S +Erse/M +Erskine/M +erst +erstwhile +Ertha/M +eructation/MS +eruct/DGS +erudite/NYX +erudition/M +erupt/DSVG +eruption/SM +eruptive/SY +Ervin/M +ErvIn/M +Erv/M +Erwin/M +Eryn/M +erysipelas/SM +erythrocyte/SM +es +e's +Es +E's +Esau/M +escadrille/M +escalate/CDSXGN +escalation/MC +escalator/SM +escallop/SGDM +escapable/I +escapade/SM +escapee/MS +escape/LGSRDB +escapement/MS +escaper/M +escapism/SM +escapist/S +escapology +escarole/MS +escarpment/MS +eschatology/M +Escherichia/M +Escher/M +eschew/SGD +Escondido/M +escort/SGMD +escritoire/SM +escrow/DMGS +escudo/MS +escutcheon/SM +Esdras/M +ESE +Eskimo/SM +ESL +Esma/M +Esmaria/M +Esmark/M +Esme/M +Esmeralda/M +esophageal +esophagi +esophagus/M +esoteric +esoterica +esoterically +esp +ESP +espadrille/MS +Espagnol/M +espalier/SMDG +especial/Y +Esperanto/M +Esperanza/M +Espinoza/M +espionage/SM +esplanade/SM +Esp/M +Esposito/M +espousal/MS +espouser/M +espouse/SRDG +espresso/SM +esprit/SM +espy/GSD +Esq/M +esquire/GMSD +Esquire/S +Esra/M +Essa/M +essayer/M +essayist/SM +essay/SZMGRD +essence/MS +Essene/SM +Essen/M +essentialist/M +essentially +essentialness/M +essential/USI +Essequibo/M +Essex/M +Essie/M +Essy/M +EST +established/U +establisher/M +establish/LAEGSD +establishment/EMAS +Establishment/MS +Esta/M +estate/GSDM +Esteban/M +esteem/EGDS +Estela/M +Estele/M +Estella/M +Estelle/M +Estell/M +Estel/M +Esterhzy/M +ester/M +Ester/M +Estes +Estevan/M +Esther/M +esthete's +esthetically +esthetic's +esthetics's +estimable/I +estimableness/M +estimate/XDSNGV +estimating/A +estimation/M +estimator/SM +Estonia/M +Estonian/S +estoppal +Estrada/M +estrange/DRSLG +estrangement/SM +estranger/M +Estrella/M +Estrellita/M +estrogen/SM +estrous +estrus/SM +est/RZ +estuarine +estuary/SM +et +ET +ETA +Etan/M +eta/SM +etc +etcetera/SM +etcher/M +etch/GZJSRD +etching/M +ETD +eternalness/SM +eternal/PSY +eternity/SM +ethane/SM +Ethan/M +ethanol/MS +Ethelbert/M +Ethelda/M +Ethelind/M +Etheline/M +Ethelin/M +Ethel/M +Ethelred/M +Ethelyn/M +Ethe/M +etherealness/M +ethereal/PY +etherized +Ethernet/MS +ether/SM +ethically/U +ethicalness/M +ethical/PYS +ethicist/S +ethic/MS +Ethiopia/M +Ethiopian/S +ethnically +ethnicity/MS +ethnic/S +ethnocentric +ethnocentrism/MS +ethnographers +ethnographic +ethnography/M +ethnological +ethnologist/SM +ethnology/SM +ethnomethodology +ethological +ethologist/MS +ethology/SM +ethos/SM +ethylene/MS +Ethyl/M +ethyl/SM +Etienne/M +etiologic +etiological +etiology/SM +etiquette/SM +Etna/M +Etruria/M +Etruscan/MS +Etta/M +Ettie/M +Etti/M +Ettore/M +Etty/M +tude/MS +etymological/Y +etymologist/SM +etymology/MS +EU +eucalypti +eucalyptus/SM +Eucharistic +Eucharist/SM +euchre/MGSD +euclidean +Euclid/M +Eudora/M +Euell/M +Eugene/M +Eugenia/M +eugenically +eugenicist/SM +eugenic/S +eugenics/M +Eugenie/M +Eugenio/M +Eugenius/M +Eugen/M +Eugine/M +Eulalie/M +Eula/M +Eulerian/M +Euler/M +eulogistic +eulogist/MS +eulogized/U +eulogize/GRSDZ +eulogizer/M +eulogy/MS +Eu/M +Eumenides +Eunice/M +eunuch/M +eunuchs +Euphemia/M +euphemism/MS +euphemistic +euphemistically +euphemist/M +euphonious/Y +euphonium/M +euphony/SM +euphoria/SM +euphoric +euphorically +Euphrates/M +Eurasia/M +Eurasian/S +eureka/S +Euripides/M +Eur/M +Eurodollar/SM +Europa/M +Europeanization/SM +Europeanized +European/MS +Europe/M +europium/MS +Eurydice/M +Eustace/M +Eustachian/M +Eustacia/M +eutectic +Euterpe/M +euthanasia/SM +euthenics/M +evacuate/DSXNGV +evacuation/M +evacuee/MS +evader/M +evade/SRDBGZ +Evaleen/M +evaluable +evaluate/ADSGNX +evaluated/U +evaluational +evaluation/MA +evaluative +evaluator/MS +Eva/M +evanescence/MS +evanescent +Evangelia/M +evangelic +evangelicalism/SM +Evangelical/S +evangelical/YS +Evangelina/M +Evangeline/M +Evangelin/M +evangelism/SM +evangelistic +evangelist/MS +Evangelist/MS +evangelize/GDS +Evania/M +Evan/MS +Evanne/M +Evanston/M +Evansville/M +evaporate/VNGSDX +evaporation/M +evaporative/Y +evaporator/MS +evasion/SM +evasiveness/SM +evasive/PY +Eveleen/M +Evelina/M +Eveline/M +Evelin/M +Evelyn/M +Eve/M +evened +evener/M +evenhanded/YP +evening/SM +Evenki/M +Even/M +evenness/MSU +even/PUYRT +evens +evensong/MS +eventfulness/SM +eventful/YU +eventide/SM +event/SGM +eventuality/MS +eventual/Y +eventuate/GSD +Everard/M +Eveready/M +Evered/M +Everest/M +Everette/M +Everett/M +everglade/MS +Everglades +evergreen/S +Everhart/M +everlastingness/M +everlasting/PYS +everliving +evermore +EverReady/M +eve/RSM +ever/T +every +everybody/M +everydayness/M +everyday/P +everyman +everyone/MS +everyplace +everything +everywhere +eve's/A +eves/A +Evey/M +evict/DGS +eviction/SM +evidence/MGSD +evidential/Y +evident/YS +Evie/M +evildoer/SM +evildoing/MS +evilness/MS +evil/YRPTS +evince/SDG +Evin/M +eviscerate/GNXDS +evisceration/M +Evita/M +Ev/MN +evocable +evocate/NVX +evocation/M +evocativeness/M +evocative/YP +evoke/SDG +evolute/NMXS +evolutionarily +evolutionary +evolutionist/MS +evolution/M +evolve/SDG +Evonne/M +Evvie/M +Evvy/M +Evy/M +Evyn/M +Ewan/M +Eward/M +Ewart/M +Ewell/M +ewe/MZRS +Ewen/M +ewer/M +Ewing/M +exacerbate/NGXDS +exacerbation/M +exacter/M +exactingness/M +exacting/YP +exaction/SM +exactitude/ISM +exactly/I +exactness/MSI +exact/TGSPRDY +exaggerate/DSXNGV +exaggerated/YP +exaggeration/M +exaggerative/Y +exaggerator/MS +exaltation/SM +exalted/Y +exalter/M +exalt/ZRDGS +examen/M +examination/AS +examination's +examine/BGZDRS +examined/AU +examinees +examiner/M +examines/A +examining/A +exam/MNS +example/DSGM +exampled/U +exasperate/DSXGN +exasperated/Y +exasperating/Y +exasperation/M +Excalibur/M +excavate/NGDSX +excavation/M +excavator/SM +Excedrin/M +exceeder/M +exceeding/Y +exceed/SGDR +excelled +excellence/SM +excellency/MS +Excellency/MS +excellent/Y +excelling +excel/S +excelsior/S +except/DSGV +exceptionable/U +exceptionalness/M +exceptional/YU +exception/BMS +excerpter/M +excerpt/GMDRS +excess/GVDSM +excessiveness/M +excessive/PY +exchangeable +exchange/GDRSZ +exchanger/M +exchequer/SM +Exchequer/SM +excise/XMSDNGB +excision/M +excitability/MS +excitableness/M +excitable/P +excitably +excitation/SM +excitatory +excited/Y +excitement/MS +exciter/M +excite/RSDLBZG +excitingly +exciting/U +exciton/M +exclaimer/M +exclaim/SZDRG +exclamation/MS +exclamatory +exclude/DRSG +excluder/M +exclusionary +exclusioner/M +exclusion/SZMR +exclusiveness/SM +exclusive/SPY +exclusivity/MS +excommunicate/XVNGSD +excommunication/M +excoriate/GNXSD +excoriation/M +excremental +excrement/SM +excrescence/MS +excrescent +excreta +excrete/NGDRSX +excreter/M +excretion/M +excretory/S +excruciate/NGDS +excruciating/Y +excruciation/M +exculpate/XSDGN +exculpation/M +exculpatory +excursionist/SM +excursion/MS +excursiveness/SM +excursive/PY +excursus/MS +excusable/IP +excusableness/IM +excusably/I +excuse/BGRSD +excused/U +excuser/M +exec/MS +execrableness/M +execrable/P +execrably +execrate/DSXNGV +execration/M +executable/MS +execute/NGVZBXDRS +executer/M +executional +executioner/M +execution/ZMR +executive/SM +executor/SM +executrices +executrix/M +exegeses +exegesis/M +exegete/M +exegetical +exegetic/S +exemplariness/M +exemplar/MS +exemplary/P +exemplification/M +exemplifier/M +exemplify/ZXNSRDG +exemption/MS +exempt/SDG +exerciser/M +exercise/ZDRSGB +exertion/MS +exert/SGD +Exeter/M +exeunt +exhalation/SM +exhale/GSD +exhausted/Y +exhauster/M +exhaustible/I +exhausting/Y +exhaustion/SM +exhaustiveness/MS +exhaustive/YP +exhaust/VGRDS +exhibitioner/M +exhibitionism/MS +exhibitionist/MS +exhibition/ZMRS +exhibitor/SM +exhibit/VGSD +exhilarate/XSDVNG +exhilarating/Y +exhilaration/M +exhortation/SM +exhort/DRSG +exhorter/M +exhumation/SM +exhume/GRSD +exhumer/M +exigence/S +exigency/SM +exigent/SY +exiguity/SM +exiguous +exile/SDGM +existence/MS +existent/I +existentialism/MS +existentialistic +existentialist/MS +existential/Y +existents +exist/SDG +exit/MDSG +exobiology/MS +exocrine +Exodus/M +exodus/SM +exogamous +exogamy/M +exogenous/Y +exonerate/SDVGNX +exoneration/M +exorbitance/MS +exorbitant/Y +exorcise/SDG +exorcism/SM +exorcist/SM +exorcizer/M +exoskeleton/MS +exosphere/SM +exothermic +exothermically +exotica +exotically +exoticism/SM +exoticness/M +exotic/PS +exp +expandability/M +expand/DRSGZB +expanded/U +expander/M +expanse/DSXGNVM +expansible +expansionary +expansionism/MS +expansionist/MS +expansion/M +expansiveness/S +expansive/YP +expatiate/XSDNG +expatiation/M +expatriate/SDNGX +expatriation/M +expectancy/MS +expectant/YS +expectational +expectation/MS +expected/UPY +expecting/Y +expectorant/S +expectorate/NGXDS +expectoration/M +expect/SBGD +expedience/IS +expediency/IMS +expedients +expedient/YI +expediter/M +expedite/ZDRSNGX +expeditionary +expedition/M +expeditiousness/MS +expeditious/YP +expeditor's +expellable +expelled +expelling +expel/S +expendable/S +expended/U +expender/M +expenditure/SM +expend/SDRGB +expense/DSGVM +expensive/IYP +expensiveness/SMI +experienced/U +experience/ISDM +experiencing +experiential/Y +experimentalism/M +experimentalist/SM +experimental/Y +experimentation/SM +experimenter/M +experiment/GSMDRZ +experted +experting +expertise/SM +expertize/GD +expertnesses +expertness/IM +expert/PISY +expert's +expiable/I +expiate/XGNDS +expiation/M +expiatory +expiration/MS +expired/U +expire/SDG +expiry/MS +explainable/UI +explain/ADSG +explained/U +explainer/SM +explanation/MS +explanatory +expletive/SM +explicable/I +explicate/VGNSDX +explication/M +explicative/Y +explicitness/SM +explicit/PSY +explode/DSRGZ +exploded/U +exploder/M +exploitation/MS +exploitative +exploited/U +exploiter/M +exploit/ZGVSMDRB +exploration/MS +exploratory +explore/DSRBGZ +explored/U +explorer/M +explosion/MS +explosiveness/SM +explosive/YPS +expo/MS +exponential/SY +exponentiate/XSDNG +exponentiation/M +exponent/MS +exportability +exportable +export/AGSD +exportation/SM +exporter/MS +export's +expose +exposed/U +exposer/M +exposit/D +exposition/SM +expositor/MS +expository +expos/RSDZG +expostulate/DSXNG +expostulation/M +exposure/SM +expounder/M +expound/ZGSDR +expressed/U +expresser/M +express/GVDRSY +expressibility/I +expressible/I +expressibly/I +expressionism/SM +expressionistic +expressionist/S +expressionless/YP +expression/MS +expressive/IYP +expressiveness/MS +expressiveness's/I +expressway/SM +expropriate/XDSGN +expropriation/M +expropriator/SM +expulsion/MS +expunge/GDSR +expunger/M +expurgated/U +expurgate/SDGNX +expurgation/M +exquisiteness/SM +exquisite/YPS +ex/S +ext +extant +extemporaneousness/MS +extemporaneous/YP +extempore/S +extemporization/SM +extemporizer/M +extemporize/ZGSRD +extendability/M +extendedly +extendedness/M +extended/U +extender/M +extendibility/M +extendibles +extend/SGZDR +extensibility/M +extensible/I +extensional/Y +extension/SM +extensiveness/SM +extensive/PY +extensor/MS +extent/SM +extenuate/XSDGN +extenuation/M +exterior/MYS +exterminate/XNGDS +extermination/M +exterminator/SM +externalities +externalization/SM +externalize/GDS +external/YS +extern/M +extinct/DGVS +extinction/MS +extinguishable/I +extinguish/BZGDRS +extinguisher/M +extirpate/XSDVNG +extirpation/M +extolled +extoller/M +extolling +extol/S +extort/DRSGV +extorter/M +extortionate/Y +extortioner/M +extortionist/SM +extortion/ZSRM +extracellular/Y +extract/GVSBD +extraction/SM +extractive/Y +extractor/SM +extracurricular/S +extradite/XNGSDB +extradition/M +extragalactic +extralegal/Y +extramarital +extramural +extraneousness/M +extraneous/YP +extraordinarily +extraordinariness/M +extraordinary/PS +extrapolate/XVGNSD +extrapolation/M +extra/S +extrasensory +extraterrestrial/S +extraterritorial +extraterritoriality/MS +extravagance/MS +extravagant/Y +extravaganza/SM +extravehicular +extravert's +extrema +extremal +extreme/DSRYTP +extremeness/MS +extremism/SM +extremist/MS +extremity/SM +extricable/I +extricate/XSDNG +extrication/M +extrinsic +extrinsically +extroversion/SM +extrovert/GMDS +extrude/GDSR +extruder/M +extrusion/MS +extrusive +exuberance/MS +exuberant/Y +exudate/XNM +exudation/M +exude/GSD +exultant/Y +exultation/SM +exult/DGS +exulting/Y +exurban +exurbanite/SM +exurbia/MS +exurb/MS +Exxon/M +Eyck/M +Eyde/M +Eydie/M +eyeball/GSMD +eyebrow/MS +eyed/P +eyedropper/MS +eyeful/MS +eye/GDRSMZ +eyeglass/MS +eyelash/MS +eyeless +eyelet/GSMD +eyelid/SM +eyeliner/MS +eyeopener/MS +eyeopening +eyepiece/SM +eyer/M +eyeshadow +eyesight/MS +eyesore/SM +eyestrain/MS +eyeteeth +eyetooth/M +eyewash/MS +eyewitness/SM +Eyre/M +eyrie's +Eysenck/M +Ezechiel/M +Ezekiel/M +Ezequiel/M +Eziechiele/M +Ezmeralda/M +Ezra/M +Ezri/M +F +FAA +Fabe/MR +Faberg/M +Faber/M +Fabiano/M +Fabian/S +Fabien/M +Fabio/M +fable/GMSRD +fabler/M +fabricate/SDXNG +fabrication/M +fabricator/MS +fabric/MS +fabulists +fabulousness/M +fabulous/YP +facade/GMSD +face/AGCSD +facecloth +facecloths +faceless/P +faceplate/M +facer/CM +face's +facetiousness/MS +facetious/YP +facet/SGMD +facial/YS +facileness/M +facile/YP +facilitate/VNGXSD +facilitation/M +facilitator/SM +facilitatory +facility/MS +facing/MS +facsimileing +facsimile/MSD +factional +factionalism/SM +faction/SM +factiousness/M +factious/PY +factitious +fact/MS +facto +factoid/S +factorial/MS +factoring/A +factoring's +factorisable +factorization/SM +factorize/GSD +factor/SDMJG +factory/MS +factotum/MS +factuality/M +factualness/M +factual/PY +faculty/MS +faddish +faddist/SM +fadedly +faded/U +fadeout +fader/M +fade/S +fading's +fading/U +fad/ZGSMDR +Fae/M +faerie/MS +Faeroe/M +faery's +Fafnir/M +fagged +fagging +faggoting's +Fagin/M +fag/MS +fagoting/M +fagot/MDSJG +Fahd/M +Fahrenheit/S +faence/S +failing's +failing/UY +fail/JSGD +faille/MS +failsafe +failure/SM +Faina/M +fain/GTSRD +fainter/M +fainthearted +faintness/MS +faint/YRDSGPT +Fairbanks +Fairchild/M +faired +Fairfax/M +Fairfield/M +fairgoer/S +fairground/MS +fairing/MS +fairish +Fairleigh/M +fairless +Fairlie/M +Fair/M +Fairmont/M +fairness's +fairness/US +Fairport/M +fairs +fair/TURYP +Fairview/M +fairway/MS +fairyland/MS +fairy/MS +fairytale +Faisalabad +Faisal/M +faithed +faithfulness/MSU +faithfuls +faithful/UYP +faithing +faithlessness/SM +faithless/YP +Faith/M +faiths +faith's +faith/U +fajitas +faker/M +fake/ZGDRS +fakir/SM +falafel +falconer/M +falconry/MS +falcon/ZSRM +Falito/M +Falkland/MS +Falk/M +Falkner/M +fallaciousness/M +fallacious/PY +fallacy/MS +faller/M +fallibility/MSI +fallible/I +fallibleness/MS +fallibly/I +falloff/S +Fallon/M +fallopian +Fallopian/M +fallout/MS +fallowness/M +fallow/PSGD +fall/SGZMRN +falsehood/SM +falseness/SM +false/PTYR +falsetto/SM +falsie/MS +falsifiability/M +falsifiable/U +falsification/M +falsifier/M +falsify/ZRSDNXG +falsity/MS +Falstaff/M +falterer/M +faltering/UY +falter/RDSGJ +Falwell/M +fa/M +famed/C +fame/DSMG +fames/C +familial +familiarity/MUS +familiarization/MS +familiarized/U +familiarizer/M +familiarize/ZGRSD +familiarizing/Y +familiarly/U +familiarness/M +familiar/YPS +family/MS +famine/SM +faming/C +famish/GSD +famously/I +famousness/M +famous/PY +fanaticalness/M +fanatical/YP +fanaticism/MS +fanatic/SM +Fanchette/M +Fanchon/M +fancied +Fancie/M +fancier/SM +fanciest +fancifulness/MS +fanciful/YP +fancily +fanciness/SM +fancying +fancy/IS +Fancy/M +fancywork/SM +fandango/SM +Fanechka/M +fanfare/SM +fanfold/M +fang/DMS +fangled +Fania/M +fanlight/SM +Fan/M +fanned +Fannie/M +Fanni/M +fanning +fanny/SM +Fanny/SM +fanout +fan/SM +fantail/SM +fantasia/SM +fantasist/M +fantasize/SRDG +fantastical/Y +fantastic/S +fantasy/GMSD +Fanya/M +fanzine/S +FAQ/SM +Faraday/M +farad/SM +Farah/M +Fara/M +Farand/M +faraway +Farber/M +farce/SDGM +farcical/Y +fare/MS +farer/M +farewell/DGMS +farfetchedness/M +far/GDR +Fargo/M +Farica/M +farinaceous +farina/MS +Farkas/M +Farlay/M +Farlee/M +Farleigh/M +Farley/M +Farlie/M +Farly/M +farmer/M +Farmer/M +farmhand/S +farmhouse/SM +farming/M +Farmington/M +farmland/SM +farm/MRDGZSJ +farmstead/SM +farmworker/S +Far/MY +farmyard/MS +faro/MS +farragoes +farrago/M +Farragut/M +Farrah/M +Farrakhan/M +Farra/M +Farrand/M +Farrell/M +Farrel/M +farrier/SM +Farris/M +Farr/M +farrow/DMGS +farseeing +farsightedness/SM +farsighted/YP +farther +farthermost +farthest +farthing/SM +fart/MDGS! +fas +fascia/SM +fascicle/DSM +fasciculate/DNX +fasciculation/M +fascinate/SDNGX +fascinating/Y +fascination/M +fascism/MS +Fascism's +fascistic +Fascist's +fascist/SM +fashionableness/M +fashionable/PS +fashionably/U +fashion/ADSG +fashioner/SM +fashion's +Fassbinder/M +fastback/MS +fastball/S +fasten/AGUDS +fastener/MS +fastening/SM +fast/GTXSPRND +fastidiousness/MS +fastidious/PY +fastness/MS +fatalism/MS +fatalistic +fatalistically +fatalist/MS +fatality/MS +fatal/SY +fatback/SM +fatefulness/MS +fateful/YP +fate/MS +Fates +fatheaded/P +fathead/SMD +father/DYMGS +fathered/U +fatherhood/MS +fatherland/SM +fatherless +fatherliness/M +fatherly/P +Father/SM +fathomable/U +fathomless +fathom/MDSBG +fatigued/U +fatigue/MGSD +fatiguing/Y +Fatima/M +fatness/SM +fat/PSGMDY +fatso/M +fatted +fattener/M +fatten/JZGSRD +fatter +fattest/M +fattiness/SM +fatting +fatty/RSPT +fatuity/MS +fatuousness/SM +fatuous/YP +fatwa/SM +faucet/SM +Faulknerian +Faulkner/M +fault/CGSMD +faultfinder/MS +faultfinding/MS +faultily +faultiness/MS +faultlessness/SM +faultless/PY +faulty/RTP +fauna/MS +Faunie/M +Faun/M +faun/MS +Fauntleroy/M +Faustian +Faustina/M +Faustine/M +Faustino/M +Faust/M +Faustus/M +fauvism/S +favorableness/MU +favorable/UMPS +favorably/U +favoredness/M +favored's/U +favored/YPSM +favorer/EM +favor/ESMRDGZ +favoring/MYS +favorings/U +favorite/SMU +favoritism/MS +favors/A +Fawkes/M +Fawne/M +fawner/M +fawn/GZRDMS +Fawnia/M +fawning/Y +Fawn/M +fax/GMDS +Fax/M +Faydra/M +Faye/M +Fayette/M +Fayetteville/M +Fayina/M +Fay/M +fay/MDRGS +Fayre/M +Faythe/M +Fayth/M +faze/DSG +FBI +FCC +FD +FDA +FDIC +FDR/M +fealty/MS +fearfuller +fearfullest +fearfulness/MS +fearful/YP +fearlessness/MS +fearless/PY +fear/RDMSG +fearsomeness/M +fearsome/PY +feasibility/SM +feasibleness/M +feasible/UI +feasibly/U +feaster/M +feast/GSMRD +feater/C +featherbed +featherbedding/SM +featherbrain/MD +feathered/U +feathering/M +featherless +featherlight +Featherman/M +feathertop +featherweight/SM +feathery/TR +feather/ZMDRGS +feat/MYRGTS +feats/C +featureless +feature/MGSD +Feb/M +febrile +February/MS +fecal +feces +fecklessness/M +feckless/PY +fecundability +fecundate/XSDGN +fecundation/M +fecund/I +fecundity/SM +federalism/SM +Federalist +federalist/MS +federalization/MS +federalize/GSD +Federal/S +federal/YS +federated/U +federate/FSDXVNG +federation/FM +federative/Y +Federica/M +Federico/M +FedEx/M +Fedora/M +fedora/SM +feds +Fed/SM +fed/U +feebleness/SM +feeble/TPR +feebly +feedback/SM +feedbag/MS +feeder/M +feed/GRZJS +feeding/M +feedlot/SM +feedstock +feedstuffs +feeing +feeler/M +feel/GZJRS +feelingly/U +feeling/MYP +feelingness/M +Fee/M +fee/MDS +feet/M +feigned/U +feigner/M +feign/RDGS +feint/MDSG +feisty/RT +Felder/M +Feldman/M +feldspar/MS +Felecia/M +Felicdad/M +Felice/M +Felicia/M +Felicio/M +felicitate/XGNSD +felicitation/M +felicitous/IY +felicitousness/M +felicity/IMS +Felicity/M +Felicle/M +Felic/M +Felike/M +Feliks/M +feline/SY +Felipa/M +Felipe/M +Felisha/M +Felita/M +Felix/M +Feliza/M +Felizio/M +fella/S +fellatio/SM +felled/A +feller/M +felling/A +Fellini/M +fellness/M +fellowman +fellowmen +fellow/SGDYM +fellowshipped +fellowshipping +fellowship/SM +fell/PSGZTRD +feloniousness/M +felonious/PY +felon/MS +felony/MS +felt/GSD +felting/M +Fe/M +female/MPS +femaleness/SM +feminineness/M +feminine/PYS +femininity/MS +feminism/MS +feminist/MS +femme/MS +femoral +fem/S +femur/MS +fenced/U +fencepost/M +fencer/M +fence/SRDJGMZ +fencing/M +fender/CM +fend/RDSCZG +Fenelia/M +fenestration/CSM +Fenian/M +fenland/M +fen/MS +fennel/SM +Fenwick/M +Feodora/M +Feodor/M +feral +Ferber/M +Ferdie/M +Ferdinanda/M +Ferdinande/M +Ferdinand/M +Ferdinando/M +Ferd/M +Ferdy/M +fer/FLC +Fergus/M +Ferguson/M +Ferlinghetti/M +Fermat/M +fermentation/MS +fermented +fermenter +ferment/FSCM +fermenting +Fermi/M +fermion/MS +fermium/MS +Fernanda/M +Fernande/M +Fernandez/M +Fernandina/M +Fernando/M +Ferne/M +fernery/M +Fern/M +fern/MS +ferny/TR +ferociousness/MS +ferocious/YP +ferocity/MS +Ferrari/M +Ferraro/M +Ferreira/M +Ferrell/M +Ferrel/M +Ferrer/M +ferreter/M +ferret/SMRDG +ferric +ferris +Ferris +ferrite/M +ferro +ferroelectric +ferromagnetic +ferromagnet/M +ferrous +ferrule/MGSD +ferryboat/MS +ferryman/M +ferrymen +ferry/SDMG +fertileness/M +fertile/YP +fertility/IMS +fertilization/ASM +fertilized/U +fertilizer/M +fertilizes/A +fertilize/SRDZG +ferule/SDGM +fervency/MS +fervent/Y +fervidness/M +fervid/YP +fervor/MS +fess/KGFSD +Fess/M +fess's +festal/S +fester/GD +festival/SM +festiveness/SM +festive/PY +festivity/SM +festoon/SMDG +fest/RVZ +fetal +feta/MS +fetcher/M +fetching/Y +fetch/RSDGZ +feted +fte/MS +fetich's +fetidness/SM +fetid/YP +feting +fetishism/SM +fetishistic +fetishist/SM +fetish/MS +fetlock/MS +fetter's +fetter/UGSD +fettle/GSD +fettling/M +fettuccine/S +fetus/SM +feudalism/MS +feudalistic +feudal/Y +feudatory/M +feud/MDSG +feverishness/SM +feverish/PY +fever/SDMG +fewness/MS +few/PTRS +Fey/M +Feynman/M +fey/RT +fez/M +Fez/M +fezzes +ff +FHA +fiance/S +fianc/MS +Fianna/M +Fiann/M +fiascoes +fiasco/M +Fiat/M +fiat/MS +fibbed +fibber/MS +fibbing +fiberboard/MS +fiber/DM +fiberfill/S +Fiberglas/M +fiberglass/DSMG +Fibonacci/M +fibrillate/XGNDS +fibrillation/M +fibril/MS +fibrin/MS +fibroblast/MS +fibroid/S +fibroses +fibrosis/M +fibrousness/M +fibrous/YP +fib/SZMR +fibulae +fibula/M +fibular +FICA +fices +fiche/SM +Fichte/M +fichu/SM +fickleness/MS +fickle/RTP +ficos +fictionalization/MS +fictionalize/DSG +fictional/Y +fiction/SM +fictitiousness/M +fictitious/PY +fictive/Y +ficus +fiddle/GMZJRSD +fiddler/M +fiddlestick/SM +fiddly +fide/F +Fidela/M +Fidelia/M +Fidelio/M +fidelity/IMS +Fidelity/M +Fidel/M +fidget/DSG +fidgety +Fidole/M +Fido/M +fiducial/Y +fiduciary/MS +fiefdom/S +fief/MS +fielded +fielder/IM +fielding +Fielding/M +Field/MGS +fieldstone/M +fieldworker/M +fieldwork/ZMRS +field/ZISMR +fiendishness/M +fiendish/YP +fiend/MS +fierceness/SM +fierce/RPTY +fierily +fieriness/MS +fiery/PTR +fie/S +fies/C +fiesta/MS +fife/DRSMZG +fifer/M +Fifi/M +Fifine/M +FIFO +fifteen/HRMS +fifteenths +fifths +fifth/Y +fiftieths +fifty/HSM +Figaro/M +figged +figging +fightback +fighter/MIS +fighting/IS +fight/ZSJRG +figment/MS +fig/MLS +Figueroa/M +figural +figuration/FSM +figurativeness/M +figurative/YP +figure/GFESD +figurehead/SM +figurer/SM +figure's +figurine/SM +figuring/S +Fijian/SM +Fiji/M +filamentary +filament/MS +filamentous +Filberte/M +Filbert/M +filbert/MS +Filberto/M +filch/SDG +filed/AC +file/KDRSGMZ +filename/SM +filer/KMCS +files/AC +filet's +filial/UY +Filia/M +filibusterer/M +filibuster/MDRSZG +Filide/M +filigreeing +filigree/MSD +filing/AC +filings +Filipino/SM +Filip/M +Filippa/M +Filippo/M +fill/BAJGSD +filled/U +filler/MS +filleting/M +fillet/MDSG +filling/M +fillip/MDGS +Fillmore/M +filly/SM +filmdom/M +Filmer/M +filminess/SM +filming/M +filmmaker/S +Filmore/M +film/SGMD +filmstrip/SM +filmy/RTP +Filofax/S +filtered/U +filterer/M +filter/RDMSZGB +filthily +filthiness/SM +filth/M +filths +filthy/TRSDGP +filtrated/I +filtrate/SDXMNG +filtrates/I +filtrating/I +filtration/IMS +finagler/M +finagle/RSDZG +finale/MS +finalist/MS +finality/MS +finalization/SM +finalize/GSD +final/SY +Fina/M +financed/A +finance/MGSDJ +finances/A +financial/Y +financier/DMGS +financing/A +Finch/M +finch/MS +findable/U +find/BRJSGZ +finder/M +finding/M +Findlay/M +Findley/M +fine/FGSCRDA +finely +fineness/MS +finery/MAS +fine's +finespun +finesse/SDMG +fingerboard/SM +fingerer/M +fingering/M +fingerless +fingerling/M +fingernail/MS +fingerprint/SGDM +finger/SGRDMJ +fingertip/MS +finial/SM +finical +finickiness/S +finicky/RPT +fining/M +finished/UA +finisher/M +finishes/A +finish/JZGRSD +finis/SM +finite/ISPY +finitely/C +finiteness/MIC +fink/GDMS +Finland/M +Finlay/M +Finley/M +Fin/M +Finnbogadottir/M +finned +Finnegan/M +finner +finning +Finnish +Finn/MS +finny/RT +fin/TGMDRS +Fiona/M +Fionna/M +Fionnula/M +fiord's +Fiorello/M +Fiorenze/M +Fiori/M +f/IRAC +firearm/SM +fireball/SM +fireboat/M +firebomb/MDSG +firebox/MS +firebrand/MS +firebreak/SM +firebrick/SM +firebug/SM +firecracker/SM +firedamp/SM +fired/U +firefight/JRGZS +firefly/MS +Firefox/M +fireguard/M +firehouse/MS +firelight/GZSM +fireman/M +firemen +fire/MS +fireplace/MS +fireplug/MS +firepower/SM +fireproof/SGD +firer/M +firesafe +fireside/SM +Firestone/M +firestorm/SM +firetrap/SM +firetruck/S +firewall/S +firewater/SM +firewood/MS +firework/MS +firing/M +firkin/M +firmament/MS +firmer +firmest +firm/ISFDG +firmly/I +firmness/MS +firm's +firmware/MS +firring +firstborn/S +firsthand +first/SY +firth/M +firths +fir/ZGJMDRHS +fiscal/YS +Fischbein/M +Fischer/M +fishbowl/MS +fishcake/S +fisher/M +Fisher/M +fisherman/M +fishermen/M +fishery/MS +fishhook/MS +fishily +fishiness/MS +fishing/M +fish/JGZMSRD +Fishkill/M +fishmeal +fishmonger/MS +fishnet/SM +fishpond/SM +fishtail/DMGS +fishtanks +fishwife/M +fishwives +fishy/TPR +Fiske/M +Fisk/M +fissile +fissionable/S +fission/BSDMG +fissure/MGSD +fistfight/SM +fistful/MS +fisticuff/SM +fist/MDGS +fistula/SM +fistulous +Fitchburg/M +Fitch/M +fitfulness/SM +fitful/PY +fitments +fitness/USM +fits/AK +fit's/K +fitted/UA +fitter/SM +fittest +fitting/AU +fittingly +fittingness/M +fittings +fit/UYPS +Fitzgerald/M +Fitz/M +Fitzpatrick/M +Fitzroy/M +fivefold +five/MRS +fiver/M +fixable +fixate/VNGXSD +fixatifs +fixation/M +fixative/S +fixedness/M +fixed/YP +fixer/SM +fixes/I +fixing/SM +fixity/MS +fixture/SM +fix/USDG +Fizeau/M +fizzer/M +fizzle/GSD +fizz/SRDG +fizzy/RT +fjord/SM +FL +flabbergast/GSD +flabbergasting/Y +flabbily +flabbiness/SM +flabby/TPR +flab/MS +flaccidity/MS +flaccid/Y +flack/SGDM +flagella/M +flagellate/DSNGX +flagellation/M +flagellum/M +flagged +flaggingly/U +flagging/SMY +flagman/M +flagmen +flag/MS +flagon/SM +flagpole/SM +flagrance/MS +flagrancy/SM +flagrant/Y +flagship/MS +flagstaff/MS +flagstone/SM +flail/SGMD +flair/SM +flaker/M +flake/SM +flakiness/MS +flak/RDMGS +flaky/PRT +Fla/M +flamb/D +flambeing +flambes +flamboyance/MS +flamboyancy/MS +flamboyant/YS +flamenco/SM +flamen/M +flameproof/DGS +flamer/IM +flame's +flame/SIGDR +flamethrower/SM +flamingo/SM +flaming/Y +flammability/ISM +flammable/SI +flam/MRNDJGZ +Flanagan/M +Flanders/M +flange/GMSD +flanker/M +flank/SGZRDM +flan/MS +flannel/DMGS +flannelet/MS +flannelette's +flapjack/SM +flap/MS +flapped +flapper/SM +flapping +flaps/M +flare/SDG +flareup/S +flaring/Y +flashback/SM +flashbulb/SM +flashcard/S +flashcube/MS +flasher/M +flashgun/S +flashily +flashiness/SM +flashing/M +flash/JMRSDGZ +flashlight/MS +flashy/TPR +flask/SM +flatbed/S +flatboat/MS +flatcar/MS +flatfeet +flatfish/SM +flatfoot/SGDM +flathead/M +flatiron/SM +flatland/RS +flatmate/M +flat/MYPS +flatness/MS +flatted +flattener/M +flatten/SDRG +flatter/DRSZG +flatterer/M +flattering/YU +flattery/SM +flattest/M +flatting +flattish +Flatt/M +flattop/MS +flatulence/SM +flatulent/Y +flatus/SM +flatware/MS +flatworm/SM +Flaubert/M +flaunting/Y +flaunt/SDG +flautist/SM +flavored/U +flavorer/M +flavorful +flavoring/M +flavorless +flavor/SJDRMZG +flavorsome +flaw/GDMS +flawlessness/MS +flawless/PY +flax/MSN +flaxseed/M +flayer/M +flay/RDGZS +fleabag/MS +fleabites +flea/SM +fleawort/M +fleck/GRDMS +Fledermaus/M +fledged/U +fledge/GSD +fledgling/SM +fleecer/M +fleece/RSDGMZ +fleeciness/SM +fleecy/RTP +fleeing +flee/RS +fleetingly/M +fleetingness/SM +fleeting/YP +fleet/MYRDGTPS +fleetness/MS +Fleischer/M +Fleischman/M +Fleisher/M +Fleming/M +Flemished/M +Flemish/GDSM +Flemishing/M +Flem/JGM +Flemming/M +flesher/M +fleshiness/M +flesh/JMYRSDG +fleshless +fleshly/TR +fleshpot/SM +fleshy/TPR +fletch/DRSGJ +fletcher/M +Fletcher/M +fletching/M +Fletch/MR +Fleurette/M +Fleur/M +flew/S +flews/M +flexed/I +flexibility/MSI +flexible/I +flexibly/I +flexitime's +flex/MSDAG +flextime/S +flexural +flexure/M +fl/GJD +flibbertigibbet/MS +flicker/GD +flickering/Y +flickery +flick/GZSRD +flier/M +flight/GMDS +flightiness/SM +flightless +flightpath +flighty/RTP +flimflammed +flimflamming +flimflam/MS +flimsily +flimsiness/MS +flimsy/PTRS +flincher/M +flinch/GDRS +flinching/U +flinger/M +fling/RMG +Flin/M +Flinn/M +flintiness/M +flintless +flintlock/MS +Flint/M +flint/MDSG +Flintstones +flinty/TRP +flipflop +flippable +flippancy/MS +flippant/Y +flipped +flipper/SM +flippest +flipping +flip/S +flirtation/SM +flirtatiousness/MS +flirtatious/PY +flirt/GRDS +flit/S +flitted +flitting +floater/M +float/SRDGJZ +floaty +flocculate/GNDS +flocculation/M +flock/SJDMG +floe/MS +flogged +flogger/SM +flogging/SM +flog/S +Flo/M +floodgate/MS +floodlight/DGMS +floodlit +floodplain/S +flood/SMRDG +floodwater/SM +floorboard/MS +floorer/M +flooring/M +floor/SJRDMG +floorspace +floorwalker/SM +floozy/SM +flophouse/SM +flop/MS +flopped +flopper/M +floppily +floppiness/SM +flopping +floppy/TMRSP +floral/SY +Flora/M +Florance/M +flora/SM +Florella/M +Florence/M +Florencia/M +Florentia/M +Florentine/S +Florenza/M +florescence/MIS +florescent/I +Flore/SM +floret/MS +Florette/M +Floria/M +Florian/M +Florida/M +Floridan/S +Floridian/S +floridness/SM +florid/YP +Florie/M +Florina/M +Florinda/M +Florine/M +florin/MS +Flori/SM +florist/MS +Flor/M +Florrie/M +Florri/M +Florry/M +Flory/M +floss/GSDM +Flossie/M +Flossi/M +Flossy/M +flossy/RST +flotation/SM +flotilla/SM +flotsam/SM +flounce/GDS +flouncing/M +flouncy/RT +flounder/SDG +flourisher/M +flourish/GSRD +flourishing/Y +flour/SGDM +floury/TR +flouter/M +flout/GZSRD +flowchart/SG +flowed +flowerbed/SM +flower/CSGD +flowerer/M +floweriness/SM +flowerless +flowerpot/MS +flower's +Flowers +flowery/TRP +flowing/Y +flow/ISG +flown +flowstone +Floyd/M +Flss/M +flt +flubbed +flubbing +flub/S +fluctuate/XSDNG +fluctuation/M +fluency/MS +fluently +fluent/SF +flue/SM +fluffiness/SM +fluff/SGDM +fluffy/PRT +fluidity/SM +fluidized +fluid/MYSP +fluidness/M +fluke/SDGM +fluky/RT +flume/SDGM +flummox/DSG +flu/MS +flung +flunkey's +flunk/SRDG +flunky/MS +fluoresce/GSRD +fluorescence/MS +fluorescent/S +fluoridate/XDSGN +fluoridation/M +fluoride/SM +fluorimetric +fluorinated +fluorine/SM +fluorite/MS +fluorocarbon/MS +fluoroscope/MGDS +fluoroscopic +flurry/GMDS +flushness/M +flush/TRSDPBG +fluster/DSG +fluter/M +flute/SRDGMJ +fluting/M +flutist/MS +flutter/DRSG +flutterer/M +fluttery +fluxed/A +fluxes/A +flux/IMS +fluxing +flyaway +flyblown +flyby/M +flybys +flycatcher/MS +flyer's +fly/JGBDRSTZ +flyleaf/M +flyleaves +Flynn/M +flyover/MS +flypaper/MS +flysheet/S +flyspeck/MDGS +flyswatter/S +flyway/MS +flyweight/MS +flywheel/MS +FM +Fm/M +FNMA/M +foal/MDSG +foaminess/MS +foam/MRDSG +foamy/RPT +fobbed +fobbing +fob/SM +focal/F +focally +Foch/M +foci's +focused/AU +focuser/M +focuses/A +focus/SRDMBG +fodder/GDMS +foe/SM +foetid +FOFL +fogbound +fogged/C +foggily +fogginess/MS +fogging/C +foggy/RPT +foghorn/SM +fogs/C +fog/SM +fogyish +fogy/SM +foible/MS +foil/GSD +foist/GDS +Fokker/M +foldaway/S +folded/AU +folder/M +foldout/MS +fold/RDJSGZ +folds/UA +Foley/M +foliage/MSD +foliate/CSDXGN +foliation/CM +folio/SDMG +folklike +folklore/MS +folkloric +folklorist/SM +folk/MS +folksiness/MS +folksinger/S +folksinging/S +folksong/S +folksy/TPR +folktale/S +folkway/S +foll +follicle/SM +follicular +follower/M +follow/JSZBGRD +followup's +folly/SM +Folsom +fol/Y +Fomalhaut/M +fomentation/SM +fomenter/M +foment/RDSG +Fonda/M +fondant/SM +fondle/GSRD +fondler/M +fondness/MS +fond/PMYRDGTS +fondue/MS +Fons +Fonsie/M +Fontainebleau/M +Fontaine/M +Fontana/M +fontanelle's +fontanel/MS +font/MS +Fonzie/M +Fonz/M +foodie/S +food/MS +foodstuff/MS +foolery/MS +foolhardily +foolhardiness/SM +foolhardy/PTR +foolishness/SM +foolish/PRYT +fool/MDGS +foolproof +foolscap/MS +footage/SM +football/SRDMGZ +footbridge/SM +Foote/M +footer/M +footfall/SM +foothill/SM +foothold/MS +footing/M +footless +footlights +footling +footlocker/SM +footloose +footman/M +footmarks +footmen +footnote/MSDG +footpad/SM +footpath/M +footpaths +footplate/M +footprint/MS +footrace/S +footrest/MS +footsie/SM +foot/SMRDGZJ +footsore +footstep/SM +footstool/SM +footwear/M +footwork/SM +fop/MS +fopped +foppery/MS +fopping +foppishness/SM +foppish/YP +forage/GSRDMZ +forager/M +forayer/M +foray/SGMRD +forbade +forbearance/SM +forbearer/M +forbear/MRSG +Forbes/M +forbidden +forbiddingness/M +forbidding/YPS +forbid/S +forbore +forborne +forced/Y +forcefield/MS +forcefulness/MS +forceful/PY +forceps/M +forcer/M +force/SRDGM +forcibleness/M +forcible/P +forcibly +fordable/U +Fordham/M +Ford/M +ford/SMDBG +forearm/GSDM +forebear/MS +forebode/GJDS +forebodingness/M +foreboding/PYM +forecaster/M +forecastle/MS +forecast/SZGR +foreclose/GSD +foreclosure/MS +forecourt/SM +foredoom/SDG +forefather/SM +forefeet +forefinger/MS +forefoot/M +forefront/SM +foregoer/M +foregoing/S +foregone +foregos +foreground/MGDS +forehand/S +forehead/MS +foreigner/M +foreignness/SM +foreign/PRYZS +foreknew +foreknow/GS +foreknowledge/MS +foreknown +foreleg/MS +forelimb/MS +forelock/MDSG +foreman/M +Foreman/M +foremast/SM +foremen +foremost +forename/DSM +forenoon/SM +forensically +forensic/S +forensics/M +foreordain/DSG +forepart/MS +forepaws +forepeople +foreperson/S +foreplay/MS +forequarter/SM +forerunner/MS +fore/S +foresail/SM +foresaw +foreseeable/U +foreseeing +foreseen/U +foreseer/M +foresee/ZSRB +foreshadow/SGD +foreshore/M +foreshorten/DSG +foresightedness/SM +foresighted/PY +foresight/SMD +foreskin/SM +forestaller/M +forestall/LGSRD +forestallment/M +forestation/MCS +forestations/A +forest/CSAGD +Forester/M +forester/SM +forestland/S +Forest/MR +forestry/MS +forest's +foretaste/MGSD +foreteller/M +foretell/RGS +forethought/MS +foretold +forevermore +forever/PS +forewarner/M +forewarn/GSJRD +forewent +forewoman/M +forewomen +foreword/SM +forfeiter/M +forfeiture/MS +forfeit/ZGDRMS +forfend/GSD +forgather/GSD +forgave +forged/A +forge/JVGMZSRD +forger/M +forgery/MS +forges/A +forgetfulness/SM +forgetful/PY +forget/SV +forgettable/U +forgettably/U +forgetting +forging/M +forgivable/U +forgivably/U +forgiven +forgiveness/SM +forgiver/M +forgive/SRPBZG +forgivingly +forgivingness/M +forgiving/UP +forgoer/M +forgoes +forgone +forgo/RSGZ +forgot +forgotten/U +for/HT +forkful/S +fork/GSRDM +forklift/DMSG +forlornness/M +forlorn/PTRY +formability/AM +formaldehyde/SM +formalin/M +formalism/SM +formalistic +formalist/SM +formality/SMI +formal/IY +formalization/SM +formalized/U +formalizer/M +formalizes/I +formalize/ZGSRD +formalness/M +formals +formant/MIS +format/AVS +formate/MXGNSD +formation/AFSCIM +formatively/I +formativeness/IM +formative/SYP +format's +formatted/UA +formatter/A +formatters +formatter's +formatting/A +form/CGSAFDI +formed/U +former/FSAI +formerly +formfitting +formic +Formica/MS +formidableness/M +formidable/P +formidably +formlessness/MS +formless/PY +Formosa/M +Formosan +form's +formulaic +formula/SM +formulate/AGNSDX +formulated/U +formulation/AM +formulator/SM +fornicate/GNXSD +fornication/M +fornicator/SM +Forrester/M +Forrest/RM +forsaken +forsake/SG +forsook +forsooth +Forster/M +forswear/SG +forswore +forsworn +forsythia/MS +Fortaleza/M +forte/MS +forthcome/JG +forthcoming/U +FORTH/M +forthrightness/SM +forthright/PYS +forthwith +fortieths +fortification/MS +fortified/U +fortifier/SM +fortify/ADSG +fortiori +fortissimo/S +fortitude/SM +fortnightly/S +fortnight/MYS +FORTRAN +Fortran/M +fortress/GMSD +fort/SM +fortuitousness/SM +fortuitous/YP +fortuity/MS +fortunateness/M +fortunate/YUS +fortune/MGSD +fortuneteller/SM +fortunetelling/SM +forty/SRMH +forum/MS +forwarder/M +forwarding/M +forwardness/MS +forward/PTZSGDRY +forwent +fossiliferous +fossilization/MS +fossilized/U +fossilize/GSD +fossil/MS +Foss/M +fosterer/M +Foster/M +foster/SRDG +Foucault/M +fought +foulard/SM +foulmouth/D +foulness/MS +fouls/M +foul/SYRDGTP +foundational +foundation/SM +founded/UF +founder/MDG +founder's/F +founding/F +foundling/MS +found/RDGZS +foundry/MS +founds/KF +fountainhead/SM +fountain/SMDG +fount/MS +fourfold +Fourier/M +fourpence/M +fourpenny +fourposter/SM +fourscore/S +four/SHM +foursome/SM +foursquare +fourteener/M +fourteen/SMRH +fourteenths +Fourth +fourths +Fourths +fourth/Y +fovea/M +fowler/M +Fowler/M +fowling/M +fowl/SGMRD +foxfire/SM +foxglove/SM +Foxhall/M +foxhole/SM +foxhound/SM +foxily +foxiness/MS +foxing/M +fox/MDSG +Fox/MS +foxtail/M +foxtrot/MS +foxtrotted +foxtrotting +foxy/TRP +foyer/SM +FPO +fps +fr +fracas/SM +fractal/SM +fractional/Y +fractionate/DNG +fractionation/M +fractioned +fractioning +fraction/ISMA +fractiousness/SM +fractious/PY +fracture/MGDS +fragile/Y +fragility/MS +fragmentarily +fragmentariness/M +fragmentary/P +fragmentation/MS +fragment/SDMG +Fragonard/M +fragrance/SM +fragrant/Y +frailness/MS +frail/STPYR +frailty/MS +framed/U +framer/M +frame/SRDJGMZ +framework/SM +framing/M +Francaise/M +France/MS +Francene/M +Francesca/M +Francesco/M +franchisee/S +franchise/ESDG +franchiser/SM +franchise's +Franchot/M +Francie/M +Francine/M +Francis +Francisca/M +Franciscan/MS +Francisco/M +Franciska/M +Franciskus/M +francium/MS +Francklin/M +Francklyn/M +Franck/M +Francoise/M +Francois/M +Franco/M +francophone/M +franc/SM +Francyne/M +frangibility/SM +frangible +Frankel/M +Frankenstein/MS +franker/M +Frankford/M +Frankfort/M +Frankfurter/M +frankfurter/MS +Frankfurt/RM +Frankie/M +frankincense/MS +Frankish/M +franklin/M +Franklin/M +Franklyn/M +frankness/MS +frank/SGTYRDP +Frank/SM +Franky/M +Fran/MS +Frannie/M +Franni/M +Franny/M +Fransisco/M +frantically +franticness/M +frantic/PY +Frants/M +Franzen/M +Franz/NM +frapp +frappeed +frappeing +frappes +Frasco/M +Fraser/M +Frasier/M +Frasquito/M +fraternal/Y +fraternity/MSF +fraternization/SM +fraternize/GZRSD +fraternizer/M +fraternizing/U +frat/MS +fratricidal +fratricide/MS +fraud/CS +fraud's +fraudsters +fraudulence/S +fraudulent/YP +fraught/SGD +Fraulein/S +Frau/MN +fray/CSDG +Frayda/M +Frayne/M +fray's +Fraze/MR +Frazer/M +Frazier/M +frazzle/GDS +freakishness/SM +freakish/YP +freak/SGDM +freaky/RT +freckle/GMDS +freckly/RT +Freda/M +Freddie/M +Freddi/M +Freddy/M +Fredek/M +Fredelia/M +Frederica/M +Frederich/M +Fredericka/M +Frederick/MS +Frederic/M +Frederico/M +Fredericton/M +Frederigo/M +Frederik/M +Frederique/M +Fredholm/M +Fredia/M +Fredi/M +Fred/M +Fredra/M +Fredrick/M +Fredrickson/M +Fredric/M +Fredrika/M +freebase/GDS +freebie/MS +freebooter/M +freeboot/ZR +freeborn +freedman/M +Freedman/M +freedmen +freedom/MS +freehand/D +freehanded/Y +freeholder/M +freehold/ZSRM +freeing/S +freelance/SRDGZM +Freeland/M +freeloader/M +freeload/SRDGZ +Free/M +freeman/M +Freeman/M +freemasonry/M +Freemasonry/MS +Freemason/SM +freemen +Freemon/M +freeness/M +Freeport/M +freestanding +freestone/SM +freestyle/SM +freethinker/MS +freethinking/S +Freetown/M +freeway/MS +freewheeler/M +freewheeling/P +freewheel/SRDMGZ +freewill +free/YTDRSP +freezable +freezer/SM +freeze/UGSA +freezing/S +Freida/M +freighter/M +freight/ZGMDRS +Fremont/M +Frenchman/M +French/MDSG +Frenchmen +Frenchwoman/M +Frenchwomen +frenetically +frenetic/S +frenzied/Y +frenzy/MDSG +freon/S +Freon/SM +freq +frequency/ISM +frequented/U +frequenter/MS +frequentest +frequenting +frequent/IY +frequentness/M +frequents +fresco/DMG +frescoes +fresh/AZSRNDG +freshener/M +freshen/SZGDR +fresher/MA +freshest +freshet/SM +freshly +freshman/M +freshmen +freshness/MS +freshwater/SM +Fresnel/M +Fresno/M +fretboard +fretfulness/MS +fretful/PY +fret/S +fretsaw/S +fretted +fretting +fretwork/MS +Freudian/S +Freud/M +Freya/M +Frey/M +friableness/M +friable/P +friary/MS +friar/YMS +fricasseeing +fricassee/MSD +frication/M +fricative/MS +Frick/M +frictional/Y +frictionless/Y +friction/MS +Friday/SM +fridge/SM +fried/A +Frieda/M +Friedan/M +friedcake/SM +Friederike/M +Friedman/M +Friedrich/M +Friedrick/M +friendlessness/M +friendless/P +friendlies +friendlily +friendliness/USM +friendly/PUTR +friend/SGMYD +friendship/MS +frier's +fries/M +frieze/SDGM +frigate/SM +Frigga/M +frigged +frigging/S +frighten/DG +frightening/Y +frightfulness/MS +frightful/PY +fright/GXMDNS +Frigidaire/M +frigidity/MS +frigidness/SM +frigid/YP +frig/S +frill/MDGS +frilly/RST +Fri/M +fringe/IGSD +fringe's +frippery/SM +Frisbee/MS +Frisco/M +Frisian/SM +frisker/M +friskily +friskiness/SM +frisk/RDGS +frisky/RTP +frisson/M +Frito/M +fritterer/M +fritter/RDSG +Fritz/M +fritz/SM +frivolity/MS +frivolousness/SM +frivolous/PY +frizz/GYSD +frizzle/DSG +frizzly/RT +frizzy/RT +Fr/MD +Frobisher/M +frocking/M +frock's +frock/SUDGC +frogged +frogging +frogman/M +frogmarched +frogmen +frog/MS +fro/HS +Froissart/M +frolicked +frolicker/SM +frolicking +frolic/SM +frolicsome +from +Fromm/M +frond/SM +frontage/MS +frontal/SY +Frontenac/M +front/GSFRD +frontier/SM +frontiersman/M +frontiersmen +frontispiece/SM +frontrunner's +front's +frontward/S +frosh/M +Frostbelt/M +frostbite/MS +frostbit/G +frostbiting/M +frostbitten +frost/CDSG +frosteds +frosted/U +frostily +frostiness/SM +frosting/MS +Frost/M +frost's +frosty/PTR +froth/GMD +frothiness/SM +froths +frothy/TRP +froufrou/MS +frowardness/MS +froward/P +frowner/M +frowning/Y +frown/RDSG +frowzily +frowziness/SM +frowzy/RPT +frozenness/M +frozen/YP +froze/UA +fructify/GSD +fructose/MS +Fruehauf/M +frugality/SM +frugal/Y +fruitcake/SM +fruiterer/M +fruiter/RM +fruitfuller +fruitfullest +fruitfulness/MS +fruitful/UYP +fruit/GMRDS +fruitiness/MS +fruition/SM +fruitlessness/MS +fruitless/YP +fruity/RPT +frumpish +frump/MS +frumpy/TR +Frunze/M +frustrater/M +frustrate/RSDXNG +frustrating/Y +frustration/M +frustum/SM +Frye/M +fryer/MS +Fry/M +fry/NGDS +F's +f's/KA +FSLIC +ft/C +FTC +FTP +fuchsia/MS +Fuchs/M +fucker/M! +fuck/GZJRDMS! +FUD +fuddle/GSD +fudge/GMSD +fuel/ASDG +fueler/SM +fuel's +Fuentes/M +fugal +Fugger/M +fugitiveness/M +fugitive/SYMP +fugue/GMSD +fuhrer/S +Fuji/M +Fujitsu/M +Fujiyama +Fukuoka/M +Fulani/M +Fulbright/M +fulcrum/SM +fulfilled/U +fulfiller/M +fulfill/GLSRD +fulfillment/MS +fullback/SMG +fuller/DMG +Fuller/M +Fullerton/M +fullish +fullness/MS +full/RDPSGZT +fullstops +fullword/SM +fully +fulminate/XSDGN +fulmination/M +fulness's +fulsomeness/SM +fulsome/PY +Fulton/M +Fulvia/M +fumble/GZRSD +fumbler/M +fumbling/Y +fume/DSG +fumigant/MS +fumigate/NGSDX +fumigation/M +fumigator/SM +fuming/Y +fumy/TR +Funafuti +functionalism/M +functionalist/SM +functionality/S +functional/YS +functionary/MS +function/GSMD +functor/SM +fundamentalism/SM +fundamentalist/SM +fundamental/SY +fund/ASMRDZG +funded/U +fundholders +fundholding +funding/S +Fundy/M +funeral/MS +funerary +funereal/Y +funfair/M +fungal/S +fungible/M +fungicidal +fungicide/SM +fungi/M +fungoid/S +fungous +fungus/M +funicular/SM +funk/GSDM +funkiness/S +funky/RTP +fun/MS +funned +funnel/SGMD +funner +funnest +funnily/U +funniness/SM +funning +funny/RSPT +furbelow/MDSG +furbisher/M +furbish/GDRSA +furiousness/M +furious/RYP +furlong/MS +furlough/DGM +furloughs +furl/UDGS +furn +furnace/GMSD +furnished/U +furnisher/MS +furnish/GASD +furnishing/SM +furniture/SM +furore/MS +furor/MS +fur/PMS +furred +furrier/M +furriness/SM +furring/SM +furrow/DMGS +furry/RTZP +furtherance/MS +furtherer/M +furthermore +furthermost +further/TGDRS +furthest +furtiveness/SM +furtive/PY +fury/SM +furze/SM +fusebox/S +fusee/SM +fuse/FSDAGCI +fuselage/SM +fuse's/A +Fushun/M +fusibility/SM +fusible/I +fusiform +fusilier/MS +fusillade/SDMG +fusion/KMFSI +fussbudget/MS +fusser/M +fussily +fussiness/MS +fusspot/SM +fuss/SRDMG +fussy/PTR +fustian/MS +fustiness/MS +fusty/RPT +fut +futileness/M +futile/PY +futility/MS +futon/S +future/SM +futurism/SM +futuristic/S +futurist/S +futurity/MS +futurologist/S +futurology/MS +futz/GSD +fuze's +Fuzhou/M +Fuzzbuster/M +fuzzily +fuzziness/SM +fuzz/SDMG +fuzzy/PRT +fwd +FWD +fwy +FY +FYI +GA +gabardine/SM +gabbed +Gabbey/M +Gabbie/M +Gabbi/M +gabbiness/S +gabbing +gabble/SDG +Gabby/M +gabby/TRP +Gabe/M +gaberdine's +Gabey/M +gabfest/MS +Gabie/M +Gabi/M +gable/GMSRD +Gable/M +Gabonese +Gabon/M +Gaborone/M +Gabriela/M +Gabriele/M +Gabriella/M +Gabrielle/M +Gabriellia/M +Gabriell/M +Gabriello/M +Gabriel/M +Gabrila/M +gab/S +Gaby/M +Gacrux/M +gadabout/MS +gadded +gadder/MS +gadding +gadfly/MS +gadgetry/MS +gadget/SM +gadolinium/MS +gad/S +Gadsden/M +Gaea/M +Gaelan/M +Gaelic/M +Gael/SM +Gae/M +gaffe/MS +gaffer/M +gaff/SGZRDM +gaga +Gagarin/M +gag/DRSG +Gage/M +gager/M +gage/SM +gagged +gagging +gaggle/SDG +gagwriter/S +gaiety/MS +Gaile/M +Gail/M +gaily +gain/ADGS +gainer/SM +Gaines/M +Gainesville/M +gainfulness/M +gainful/YP +gaining/S +gainly/U +gainsaid +gainsayer/M +gainsay/RSZG +Gainsborough/M +gaiter/M +gait/GSZMRD +Gaithersburg/M +galactic +Galahad/MS +Galapagos/M +gal/AS +gala/SM +Galatea/M +Galatia/M +Galatians/M +Galaxy/M +galaxy/MS +Galbraith/M +Galbreath/M +gale/AS +Gale/M +galen +galena/MS +galenite/M +Galen/M +gale's +Galibi/M +Galilean/MS +Galilee/M +Galileo/M +Galina/M +Gallagher/M +gallanted +gallanting +gallantry/MS +gallants +gallant/UY +Gallard/M +gallbladder/MS +Gallegos/M +galleon/SM +galleria/S +gallery/MSDG +galley/MS +Gallic +Gallicism/SM +gallimaufry/MS +galling/Y +gallium/SM +gallivant/GDS +Gall/M +gallonage/M +gallon/SM +galloper/M +gallop/GSRDZ +Galloway/M +gallows/M +gall/SGMD +gallstone/MS +Gallup/M +Gal/MN +Galois/M +galoot/MS +galore/S +galosh/GMSD +gal's +Galsworthy/M +galumph/GD +galumphs +galvanic +Galvani/M +galvanism/MS +galvanization/SM +galvanize/SDG +Galvan/M +galvanometer/SM +galvanometric +Galven/M +Galveston/M +Galvin/M +Ga/M +Gamaliel/M +Gama/M +Gambia/M +Gambian/S +gambit/MS +gamble/GZRSD +Gamble/M +gambler/M +gambol/SGD +gamecock/SM +gamekeeper/MS +gameness/MS +game/PJDRSMYTZG +gamesmanship/SM +gamesmen +gamester/M +gamest/RZ +gamete/MS +gametic +gamine/SM +gaminess/MS +gaming/M +gamin/MS +gamma/MS +gammon/DMSG +Gamow/M +gamut/MS +gamy/TRP +gander/DMGS +Gandhian +Gandhi/M +gangbusters +ganger/M +Ganges/M +gang/GRDMS +gangland/SM +ganglia/M +gangling +ganglionic +ganglion/M +gangplank/SM +gangrene/SDMG +gangrenous +gangster/SM +Gangtok/M +gangway/MS +Gan/M +gannet/SM +Gannie/M +Gannon/M +Ganny/M +gantlet/GMDS +Gantry/M +gantry/MS +Ganymede/M +GAO +gaoler/M +gaol/MRDGZS +gaper/M +gape/S +gaping/Y +gapped +gapping +gap/SJMDRG +garage/GMSD +Garald/M +garbageman/M +garbage/SDMG +garbanzo/MS +garb/DMGS +garbler/M +garble/RSDG +Garbo/M +Garcia/M +garon/SM +gardener/M +Gardener/M +gardenia/SM +gardening/M +garden/ZGRDMS +Gardie/M +Gardiner/M +Gard/M +Gardner/M +Gardy/M +Garek/M +Gare/MH +Gareth/M +Garey/M +Garfield/M +garfish/MS +Garfunkel/M +Gargantua/M +gargantuan +gargle/SDG +gargoyle/DSM +Garibaldi/M +Garik/M +garishness/MS +garish/YP +Garland/M +garland/SMDG +garlicked +garlicking +garlicky +garlic/SM +garment/MDGS +Gar/MH +Garner/M +garner/SGD +Garnet/M +garnet/SM +Garnette/M +Garnett/M +garnish/DSLG +garnisheeing +garnishee/SDM +garnishment/MS +Garold/M +garote's +garotte's +Garrard/M +garred +Garrek/M +Garreth/M +Garret/M +garret/SM +Garrett/M +Garrick/M +Garrik/M +garring +Garrison/M +garrison/SGMD +garroter/M +garrote/SRDMZG +Garrot/M +garrotte's +Garrott/M +garrulity/SM +garrulousness/MS +garrulous/PY +Garry/M +gar/SLM +garter/SGDM +Garth/M +Garvey/M +Garvin/M +Garv/M +Garvy/M +Garwin/M +Garwood/M +Gary/M +Garza/M +gasbag/MS +Gascony/M +gaseousness/M +gaseous/YP +gases/C +gas/FC +gash/GTMSRD +gasification/M +gasifier/M +gasify/SRDGXZN +gasket/SM +gaslight/DMS +gasohol/S +gasoline/MS +gasometer/M +Gaspard/M +Gaspar/M +Gasparo/M +gasper/M +Gasper/M +gasp/GZSRD +gasping/Y +gas's +gassed/C +Gasser/M +gasser/MS +Gasset/M +gassiness/M +gassing/SM +gassy/PTR +Gaston/M +gastric +gastritides +gastritis/MS +gastroenteritides +gastroenteritis/M +gastrointestinal +gastronome/SM +gastronomic +gastronomical/Y +gastronomy/MS +gastropod/SM +gasworks/M +gateau/MS +gateaux +gatecrash/GZSRD +gatehouse/MS +gatekeeper/SM +gate/MGDS +gatepost/SM +Gates +gateway/MS +gathered/IA +gatherer/M +gathering/M +gather/JRDZGS +gathers/A +Gatlinburg/M +Gatling/M +Gatorade/M +gator/MS +Gatsby/M +Gatun/M +gaucheness/SM +gaucherie/SM +gauche/TYPR +gaucho/SM +gaudily +gaudiness/MS +gaudy/PRST +gaugeable +gauger/M +Gauguin/M +Gaulish/M +Gaulle/M +Gaul/MS +Gaultiero/M +gauntlet/GSDM +Gauntley/M +gauntness/MS +gaunt/PYRDSGT +gauss/C +gausses +Gaussian +Gauss/M +gauss's +Gautama/M +Gauthier/M +Gautier/M +gauze/SDGM +gauziness/MS +gauzy/TRP +Gavan/M +gave +gavel/GMDS +Gaven/M +Gavin/M +Gav/MN +gavotte/MSDG +Gavra/M +Gavrielle/M +Gawain/M +Gawen/M +gawkily +gawkiness/MS +gawk/SGRDM +gawky/RSPT +Gayel/M +Gayelord/M +Gaye/M +gayety's +Gayla/M +Gayleen/M +Gaylene/M +Gayler/M +Gayle/RM +Gaylord/M +Gaylor/M +Gay/M +gayness/SM +Gaynor/M +gay/RTPS +Gaza/M +gazebo/SM +gaze/DRSZG +gazelle/MS +gazer/M +gazetteer/SGDM +gazette/MGSD +Gaziantep/M +gazillion/S +gazpacho/MS +GB +G/B +Gdansk/M +Gd/M +GDP +Gearalt/M +Gearard/M +gearbox/SM +gear/DMJSG +gearing/M +gearshift/MS +gearstick +gearwheel/SM +Geary/M +gecko/MS +GED +geegaw's +geeing +geek/SM +geeky/RT +geese/M +geest/M +gee/TDS +geezer/MS +Gehenna/M +Gehrig/M +Geiger/M +Geigy/M +geisha/M +gelatinousness/M +gelatinous/PY +gelatin/SM +gelcap +gelding/M +geld/JSGD +gelid +gelignite/MS +gelled +gelling +gel/MBS +Gelya/M +Ge/M +GE/M +Gemini/SM +gemlike +Gemma/M +gemmed +gemming +gem/MS +gemological +gemologist/MS +gemology/MS +gemstone/SM +gen +Gena/M +Genaro/M +gendarme/MS +gender/DMGS +genderless +genealogical/Y +genealogist/SM +genealogy/MS +Gene/M +gene/MS +generalissimo/SM +generalist/MS +generality/MS +generalizable/SM +generalization/MS +generalized/U +generalize/GZBSRD +generalizer/M +general/MSPY +generalness/M +generalship/SM +genera/M +generate/CXAVNGSD +generational +generation/MCA +generative/AY +generators/A +generator/SM +generically +generic/PS +generosity/MS +generously/U +generousness/SM +generous/PY +Genesco/M +genesis/M +Genesis/M +genes/S +genetically +geneticist/MS +genetic/S +genetics/M +Genet/M +Geneva/M +Genevieve/M +Genevra/M +Genghis/M +geniality/FMS +genially/F +genialness/M +genial/PY +Genia/M +genies/K +genie/SM +genii/M +genitalia +genitals +genital/YF +genitive/SM +genitourinary +genius/SM +Gen/M +Genna/M +Gennie/M +Gennifer/M +Genni/M +Genny/M +Genoa/SM +genocidal +genocide/SM +Geno/M +genome/SM +genotype/MS +Genovera/M +genre/MS +gent/AMS +genteelness/MS +genteel/PRYT +gentian/SM +gentile/S +Gentile's +gentility/MS +gentlefolk/S +gentlemanliness/M +gentlemanly/U +gentleman/YM +gentlemen +gentleness/SM +gentle/PRSDGT +gentlewoman/M +gentlewomen/M +gently +gentrification/M +gentrify/NSDGX +Gentry/M +gentry/MS +genuflect/GDS +genuflection/MS +genuineness/SM +genuine/PY +genus +Genvieve/M +geocentric +geocentrically +geocentricism +geochemical/Y +geochemistry/MS +geochronology/M +geodesic/S +geode/SM +geodesy/MS +geodetic/S +Geoff/M +Geoffrey/M +Geoffry/M +geog +geographer/MS +geographic +geographical/Y +geography/MS +geologic +geological/Y +geologist/MS +geology/MS +geom +Geo/M +geomagnetic +geomagnetically +geomagnetism/SM +geometer/MS +geometrical/Y +geometrician/M +geometric/S +geometry/MS +geomorphological +geomorphology/M +geophysical/Y +geophysicist/MS +geophysics/M +geopolitical/Y +geopolitic/S +geopolitics/M +Georas/M +Geordie/M +Georgeanna/M +Georgeanne/M +Georgena/M +George/SM +Georgeta/M +Georgetown/M +Georgetta/M +Georgette/M +Georgia/M +Georgiana/M +Georgianna/M +Georgianne/M +Georgian/S +Georgie/M +Georgi/M +Georgina/M +Georgine/M +Georg/M +Georgy/M +geostationary +geosynchronous +geosyncline/SM +geothermal +geothermic +Geralda/M +Geraldine/M +Gerald/M +geranium/SM +Gerard/M +Gerardo/M +Gerber/M +gerbil/MS +Gerda/M +Gerek/M +Gerhardine/M +Gerhard/M +Gerhardt/M +Gerianna/M +Gerianne/M +geriatric/S +geriatrics/M +Gerick/M +Gerik/M +Geri/M +Geritol/M +Gerladina/M +Ger/M +Germaine/M +Germain/M +Germana/M +germane +Germania/M +Germanic/M +germanium/SM +germanized +German/SM +Germantown/M +Germany/M +Germayne/M +germen/M +germicidal +germicide/MS +germinal/Y +germinated/U +germinate/XVGNSD +germination/M +germinative/Y +germ/MNS +Gerome/M +Geronimo/M +gerontocracy/M +gerontological +gerontologist/SM +gerontology/SM +Gerrard/M +Gerrie/M +Gerrilee/M +Gerri/M +Gerry/M +gerrymander/SGD +Gershwin/MS +Gerta/M +Gertie/M +Gerti/M +Gert/M +Gertruda/M +Gertrude/M +Gertrudis/M +Gertrud/M +Gerty/M +gerundive/M +gerund/SVM +Gery/M +gestalt/M +gestapo/S +Gestapo/SM +gestate/SDGNX +gestational +gestation/M +gesticulate/XSDVGN +gesticulation/M +gesticulative/Y +gestural +gesture/SDMG +gesundheit +getaway/SM +Gethsemane/M +get/S +getter/SDM +getting +Getty/M +Gettysburg/M +getup/MS +gewgaw/MS +Gewrztraminer +geyser/GDMS +Ghanaian/MS +Ghana/M +Ghanian's +ghastliness/MS +ghastly/TPR +ghat/MS +Ghats/M +Ghent/M +Gherardo/M +gherkin/SM +ghetto/DGMS +ghettoize/SDG +Ghibelline/M +ghostlike +ghostliness/MS +ghostly/TRP +ghost/SMYDG +ghostwrite/RSGZ +ghostwritten +ghostwrote +ghoulishness/SM +ghoulish/PY +ghoul/SM +GHQ +GI +Giacinta/M +Giacobo/M +Giacometti/M +Giacomo/M +Giacopo/M +Giana/M +Gianina/M +Gian/M +Gianna/M +Gianni/M +Giannini/M +giantess/MS +giantkiller +giant/SM +Giauque/M +Giavani/M +gibber/DGS +gibberish/MS +gibbet/MDSG +Gibbie/M +Gibb/MS +Gibbon/M +gibbon/MS +gibbousness/M +gibbous/YP +Gibby/M +gibe/GDRS +giber/M +giblet/MS +Gib/M +Gibraltar/MS +Gibson/M +giddap +giddily +giddiness/SM +Giddings/M +giddy/GPRSDT +Gide/M +Gideon/MS +Gielgud/M +Gienah/M +Giffard/M +Giffer/M +Giffie/M +Gifford/M +Giff/RM +Giffy/M +giftedness/M +gifted/PY +gift/SGMD +gigabyte/S +gigacycle/MS +gigahertz/M +gigantically +giganticness/M +gigantic/P +gigavolt +gigawatt/M +gigged +gigging +giggler/M +giggle/RSDGZ +giggling/Y +giggly/TR +Gigi/M +gig/MS +GIGO +gigolo/MS +gila +Gila/M +Gilberta/M +Gilberte/M +Gilbertina/M +Gilbertine/M +gilbert/M +Gilbert/M +Gilberto/M +Gilbertson/M +Gilburt/M +Gilchrist/M +Gilda/M +gilder/M +gilding/M +gild/JSGZRD +Gilead/M +Gilemette/M +Giles +Gilgamesh/M +Gilkson/M +Gillan/M +Gilles +Gillespie/M +Gillette/M +Gilliam/M +Gillian/M +Gillie/M +Gilligan/M +Gilli/M +Gill/M +gill/SGMRD +Gilly/M +Gilmore/M +Gil/MY +gilt/S +gimbaled +gimbals +Gimbel/M +gimcrackery/SM +gimcrack/S +gimlet/MDSG +gimme/S +gimmick/GDMS +gimmickry/MS +gimmicky +gimp/GSMD +gimpy/RT +Gina/M +Ginelle/M +Ginevra/M +gingerbread/SM +gingerliness/M +gingerly/P +Ginger/M +ginger/SGDYM +gingersnap/SM +gingery +gingham/SM +gingivitis/SM +Gingrich/M +ginkgoes +ginkgo/M +ginmill +gin/MS +ginned +Ginnie/M +Ginnifer/M +Ginni/M +ginning +Ginny/M +Gino/M +Ginsberg/M +Ginsburg/M +ginseng/SM +Gioconda/M +Giordano/M +Giorgia/M +Giorgi/M +Giorgio/M +Giorgione/M +Giotto/M +Giovanna/M +Giovanni/M +Gipsy's +giraffe/MS +Giralda/M +Giraldo/M +Giraud/M +Giraudoux/M +girded/U +girder/M +girdle/GMRSD +girdler/M +gird/RDSGZ +girlfriend/MS +girlhood/SM +girlie/M +girlishness/SM +girlish/YP +girl/MS +giro/M +girt/GDS +girth/MDG +girths +Gisela/M +Giselbert/M +Gisele/M +Gisella/M +Giselle/M +Gish/M +gist/MS +git/M +Giuditta/M +Giulia/M +Giuliano/M +Giulietta/M +Giulio/M +Giuseppe/M +Giustina/M +Giustino/M +Giusto/M +giveaway/SM +giveback/S +give/HZGRS +given/SP +giver/M +giving/Y +Giza/M +Gizela/M +gizmo's +gizzard/SM +Gk/M +glac/DGS +glacial/Y +glaciate/XNGDS +glaciation/M +glacier/SM +glaciological +glaciologist/M +glaciology/M +gladded +gladden/GDS +gladder +gladdest +gladding +gladdy +glade/SM +gladiatorial +gladiator/SM +Gladi/M +gladiola/MS +gladioli +gladiolus/M +gladly/RT +Glad/M +gladness/MS +gladsome/RT +Gladstone/MS +Gladys +glad/YSP +glamor/DMGS +glamorization/MS +glamorizer/M +glamorize/SRDZG +glamorousness/M +glamorous/PY +glance/GJSD +glancing/Y +glanders/M +glandes +glandular/Y +gland/ZSM +glans/M +glare/SDG +glaringness/M +glaring/YP +Glaser/M +Glasgow/M +glasnost/S +glassblower/S +glassblowing/MS +glassful/MS +glass/GSDM +glasshouse/SM +glassily +glassiness/SM +glassless +Glass/M +glassware/SM +glasswort/M +glassy/PRST +Glastonbury/M +Glaswegian/S +glaucoma/SM +glaucous +glazed/U +glazer/M +glaze/SRDGZJ +glazier/SM +glazing/M +gleam/MDGS +gleaner/M +gleaning/M +glean/RDGZJS +Gleason/M +Gleda/M +gleed/M +glee/DSM +gleefulness/MS +gleeful/YP +gleeing +Glendale/M +Glenda/M +Glenden/M +Glendon/M +Glenine/M +Glen/M +Glenna/M +Glennie/M +Glennis/M +Glenn/M +glen/SM +glibber +glibbest +glibness/MS +glib/YP +glide/JGZSRD +glider/M +glim/M +glimmer/DSJG +glimmering/M +glimpse/DRSZMG +glimpser/M +glint/DSG +glissandi +glissando/M +glisten/DSG +glister/DGS +glitch/MS +glitter/GDSJ +glittering/Y +glittery +glitz/GSD +glitzy/TR +gloaming/MS +gloater/M +gloating/Y +gloat/SRDG +globalism/S +globalist/S +global/SY +globe/SM +globetrotter/MS +glob/GDMS +globularity/M +globularness/M +globular/PY +globule/MS +globulin/MS +glockenspiel/SM +glommed +gloom/GSMD +gloomily +gloominess/MS +gloomy/RTP +glop/MS +glopped +glopping +gloppy/TR +Gloria/M +Gloriana/M +Gloriane/M +glorification/M +glorifier/M +glorify/XZRSDNG +Glori/M +glorious/IYP +gloriousness/IM +Glory/M +glory/SDMG +glossary/MS +gloss/GSDM +glossily +glossiness/SM +glossolalia/SM +glossy/RSPT +glottal +glottalization/M +glottis/MS +Gloucester/M +gloveless +glover/M +Glover/M +glove/SRDGMZ +glower/GD +glow/GZRDMS +glowing/Y +glowworm/SM +glucose/SM +glue/DRSMZG +glued/U +gluer/M +gluey +gluier +gluiest +glummer +glummest +glumness/MS +glum/SYP +gluon/M +glutamate/M +gluten/M +glutenous +glutinousness/M +glutinous/PY +glut/SMNX +glutted +glutting +glutton/MS +gluttonous/Y +gluttony/SM +glyceride/M +glycerinate/MD +glycerine's +glycerin/SM +glycerolized/C +glycerol/SM +glycine/M +glycogen/SM +glycol/MS +Glynda/M +Glynis/M +Glyn/M +Glynnis/M +Glynn/M +glyph/M +glyphs +gm +GM +GMT +gnarl/SMDG +gnash/SDG +gnat/MS +gnawer/M +gnaw/GRDSJ +gnawing/M +gneiss/SM +Gnni/M +gnomelike +GNOME/M +gnome/SM +gnomic +gnomish +gnomonic +gnosticism +Gnosticism/M +gnostic/K +Gnostic/M +GNP +gnu/MS +goad/MDSG +goalie/SM +goalkeeper/MS +goalkeeping/M +goalless +goal/MDSG +goalmouth/M +goalpost/S +goalscorer +goalscoring +goaltender/SM +Goa/M +goatee/SM +goatherd/MS +goat/MS +goatskin/SM +gobbed +gobbet/MS +gobbing +gobbledegook's +gobbledygook/S +gobbler/M +gobble/SRDGZ +Gobi/M +goblet/MS +goblin/SM +gob/SM +Godard/M +Godart/M +godchild/M +godchildren +goddammit +goddamn/GS +Goddard/M +Goddart/M +goddaughter/SM +godded +goddess/MS +godding +Gdel/M +godfather/GSDM +godforsaken +Godfree/M +Godfrey/M +Godfry/M +godhead/S +godhood/SM +Godiva/M +godlessness/MS +godless/P +godlikeness/M +godlike/P +godliness/UMS +godly/UTPR +God/M +godmother/MS +Godot/M +godparent/SM +godsend/MS +god/SMY +godson/MS +Godspeed/S +Godthaab/M +Godunov/M +Godwin/M +Godzilla/M +Goebbels/M +Goering/M +goer/MG +goes +Goethals/M +Goethe/M +gofer/SM +Goff/M +goggler/M +goggle/SRDGZ +Gogh/M +Gog/M +Gogol/M +Goiania/M +going/M +goiter/SM +Golan/M +Golconda/M +Golda/M +Goldarina/M +Goldberg/M +goldbricker/M +goldbrick/GZRDMS +Golden/M +goldenness/M +goldenrod/SM +goldenseal/M +golden/TRYP +goldfinch/MS +goldfish/SM +Goldia/M +Goldie/M +Goldilocks/M +Goldi/M +Goldina/M +Golding/M +Goldman/M +goldmine/S +gold/MRNGTS +goldsmith/M +Goldsmith/M +goldsmiths +Goldstein/M +Goldwater/M +Goldwyn/M +Goldy/M +Goleta/M +golfer/M +golf/RDMGZS +Golgotha/M +Goliath/M +Goliaths +golly/S +Gomez/M +Gomorrah/M +Gompers/M +go/MRHZGJ +gonadal +gonad/SM +gondola/SM +gondolier/MS +Gondwanaland/M +goner/M +gone/RZN +gong/SGDM +gonion/M +gonna +gonorrheal +gonorrhea/MS +Gonzales/M +Gonzalez/M +Gonzalo/M +Goober/M +goober/MS +goodbye/MS +goodhearted +goodie's +goodish +goodly/TR +Good/M +Goodman/M +goodness/MS +goodnight +Goodrich/M +good/SYP +goodwill/MS +Goodwin/M +Goodyear/M +goody/SM +gooey +goofiness/MS +goof/SDMG +goofy/RPT +Google/M +gooier +gooiest +gook/SM +goo/MS +goon/SM +goop/SM +gooseberry/MS +goosebumps +goose/M +goos/SDG +GOP +Gopher +gopher/SM +Goran/M +Goraud/M +Gorbachev +Gordan/M +Gorden/M +Gordian/M +Gordie/M +Gordimer/M +Gordon/M +Gordy/M +gore/DSMG +Gore/M +Goren/M +Gorey/M +Gorgas +gorged/E +gorge/GMSRD +gorgeousness/SM +gorgeous/YP +gorger/EM +gorges/E +gorging/E +Gorgon/M +gorgon/S +Gorgonzola/M +Gorham/M +gorilla/MS +gorily +goriness/MS +goring/M +Gorky/M +gormandizer/M +gormandize/SRDGZ +gormless +gorp/S +gorse/SM +gory/PRT +gos +goshawk/MS +gosh/S +gosling/M +gospeler/M +gospel/MRSZ +Gospel/SM +gossamer/SM +gossipy +gossip/ZGMRDS +gotcha/SM +Gteborg/M +Gotham/M +Gothart/M +Gothicism/M +Gothic/S +Goth/M +Goths +got/IU +goto +GOTO/MS +gotta +gotten/U +Gottfried/M +Goucher/M +Gouda/SM +gouge/GZSRD +gouger/M +goulash/SM +Gould/M +Gounod/M +gourde/SM +gourd/MS +gourmand/MS +gourmet/MS +gout/SM +gouty/RT +governable/U +governance/SM +governed/U +governess/SM +govern/LBGSD +governmental/Y +government/MS +Governor +governor/MS +governorship/SM +gov/S +govt +gown/GSDM +Goya/M +GP +GPA +GPO +GPSS +gr +grabbed +grabber/SM +grabbing/S +grab/S +Gracchus/M +grace/ESDMG +graceful/EYPU +gracefuller +gracefullest +gracefulness/ESM +Graceland/M +gracelessness/MS +graceless/PY +Grace/M +Gracia/M +Graciela/M +Gracie/M +graciousness/SM +gracious/UY +grackle/SM +gradate/DSNGX +gradation/MCS +grade/ACSDG +graded/U +Gradeigh/M +gradely +grader/MC +grade's +Gradey/M +gradient/RMS +grad/MRDGZJS +gradualism/MS +gradualist/MS +gradualness/MS +gradual/SYP +graduand/SM +graduate/MNGDSX +graduation/M +Grady/M +Graehme/M +Graeme/M +Graffias/M +graffiti +graffito/M +Graff/M +grafter/M +grafting/M +graft/MRDSGZ +Grafton/M +Grahame/M +Graham/M +graham/SM +Graig/M +grail/S +Grail/SM +grainer/M +grain/IGSD +graininess/MS +graining/M +grain's +grainy/RTP +gram/KSM +Gram/M +grammarian/SM +grammar/MS +grammaticality/M +grammaticalness/M +grammatical/UY +grammatic/K +gramme/SM +Grammy/S +gramophone/SM +Grampians +grampus/SM +Granada/M +granary/MS +grandam/SM +grandaunt/MS +grandchild/M +grandchildren +granddaddy/MS +granddad/SM +granddaughter/MS +grandee/SM +grandeur/MS +grandfather/MYDSG +grandiloquence/SM +grandiloquent/Y +grandiose/YP +grandiosity/MS +grandkid/SM +grandma/MS +grandmaster/MS +grandmother/MYS +grandnephew/MS +grandness/MS +grandniece/SM +grandpa/MS +grandparent/MS +grandson/MS +grandstander/M +grandstand/SRDMG +grand/TPSYR +granduncle/MS +Grange/MR +grange/MSR +Granger/M +granite/MS +granitic +Gran/M +Grannie/M +Granny/M +granny/MS +granola/S +grantee/MS +granter/M +Grantham/M +Granthem/M +Grantley/M +Grant/M +grantor's +grant/SGZMRD +grantsmanship/S +granularity/SM +granular/Y +granulate/SDXVGN +granulation/M +granule/SM +granulocytic +Granville/M +grapefruit/SM +grape/SDGM +grapeshot/M +grapevine/MS +grapheme/M +graph/GMD +graphical/Y +graphicness/M +graphic/PS +graphics/M +graphite/SM +graphologist/SM +graphology/MS +graphs +grapnel/SM +grapple/DRSG +grappler/M +grappling/M +grasper/M +graspingness/M +grasping/PY +grasp/SRDBG +grass/GZSDM +grasshopper/SM +grassland/MS +Grass/M +grassroots +grassy/RT +Grata/M +gratefuller +gratefullest +gratefulness/USM +grateful/YPU +grater/M +grates/I +grate/SRDJGZ +Gratia/M +Gratiana/M +graticule/M +gratification/M +gratified/U +gratifying/Y +gratify/NDSXG +grating/YM +gratis +gratitude/IMS +gratuitousness/MS +gratuitous/PY +gratuity/SM +gravamen/SM +gravedigger/SM +gravel/SGMYD +graven +graveness/MS +graver/M +graveside/S +Graves/M +grave/SRDPGMZTY +gravestone/SM +graveyard/MS +gravidness/M +gravid/PY +gravimeter/SM +gravimetric +gravitas +gravitate/XVGNSD +gravitational/Y +gravitation/M +graviton/SM +gravity/MS +gravy/SM +graybeard/MS +Grayce/M +grayish +Gray/M +grayness/S +gray/PYRDGTS +Grayson/M +graze/GZSRD +grazer/M +Grazia/M +grazing/M +grease/GMZSRD +greasepaint/MS +greaseproof +greaser/M +greasily +greasiness/SM +greasy/PRT +greatcoat/DMS +greaten/DG +greathearted +greatness/MS +great/SPTYRN +grebe/MS +Grecian/S +Greece/M +greed/C +greedily +greediness/SM +greeds +greed's +greedy/RTP +Greek/SM +Greeley/M +greenback/MS +greenbelt/S +Greenberg/M +Greenblatt/M +Greenbriar/M +Greene/M +greenery/MS +Greenfeld/M +greenfield +Greenfield/M +greenfly/M +greengage/SM +greengrocer/SM +greengrocery/M +greenhorn/SM +greenhouse/SM +greening/M +greenish/P +Greenland/M +Green/M +greenmail/GDS +greenness/MS +Greenpeace/M +greenroom/SM +Greensboro/M +Greensleeves/M +Greensville/M +greensward/SM +green/SYRDMPGT +Greentree/M +Greenville/M +Greenwich/M +greenwood/MS +Greer/M +greeter/M +greeting/M +greets/A +greet/SRDJGZ +gregariousness/MS +gregarious/PY +Gregg/M +Greggory/M +Greg/M +Gregoire/M +Gregoor/M +Gregorian +Gregorio/M +Gregorius/M +Gregor/M +Gregory/M +gremlin/SM +Grenada/M +grenade/MS +Grenadian/S +grenadier/SM +Grenadines +grenadine/SM +Grendel/M +Grenier/M +Grenoble/M +Grenville/M +Gresham/M +Gretal/M +Greta/M +Gretchen/M +Gretel/M +Grete/M +Grethel/M +Gretna/M +Gretta/M +Gretzky/M +grew/A +greybeard/M +greyhound/MS +Grey/M +greyness/M +gridded +griddlecake/SM +griddle/DSGM +gridiron/GSMD +gridlock/DSG +grids/A +grid/SGM +grief/MS +Grieg/M +Grier/M +grievance/SM +griever/M +grieve/SRDGZ +grieving/Y +grievousness/SM +grievous/PY +Griffie/M +Griffin/M +griffin/SM +Griffith/M +Griff/M +griffon's +Griffy/M +griller/M +grille/SM +grill/RDGS +grillwork/M +grimace/DRSGM +grimacer/M +Grimaldi/M +grime/MS +Grimes +griminess/MS +grimmer +grimmest +Grimm/M +grimness/MS +grim/PGYD +grimy/TPR +Grinch/M +grind/ASG +grinder/MS +grinding/SY +grindstone/SM +gringo/SM +grinned +grinner/M +grinning/Y +grin/S +griper/M +gripe/S +grippe/GMZSRD +gripper/M +gripping/Y +grip/SGZMRD +Griselda/M +grisliness/SM +grisly/RPT +Gris/M +Grissel/M +gristle/SM +gristliness/M +gristly/TRP +gristmill/MS +grist/MYS +Griswold/M +grit/MS +gritted +gritter/MS +grittiness/SM +gritting +gritty/PRT +Griz/M +grizzle/DSG +grizzling/M +grizzly/TRS +Gr/M +groaner/M +groan/GZSRDM +groat/SM +grocer/MS +grocery/MS +groggily +grogginess/SM +groggy/RPT +grog/MS +groin/MGSD +grokked +grokking +grok/S +grommet/GMDS +Gromyko/M +groofs +groomer/M +groom/GZSMRD +groomsman/M +groomsmen +Groot/M +groover/M +groove/SRDGM +groovy/TR +groper/M +grope/SRDJGZ +Gropius/M +grosbeak/SM +grosgrain/MS +Gross +Grosset/M +gross/GTYSRDP +Grossman/M +grossness/MS +Grosvenor/M +Grosz/M +grotesqueness/MS +grotesque/PSY +Grotius/M +Groton/M +grottoes +grotto/M +grouch/GDS +grouchily +grouchiness/MS +grouchy/RPT +groundbreaking/S +grounded/U +grounder/M +groundhog/SM +ground/JGZMDRS +groundlessness/M +groundless/YP +groundnut/MS +groundsheet/M +groundskeepers +groundsman/M +groundswell/S +groundwater/S +groundwork/SM +grouped/A +grouper/M +groupie/MS +grouping/M +groups/A +group/ZJSMRDG +grouse/GMZSRD +grouser/M +grouter/M +grout/GSMRD +groveler/M +grovelike +groveling/Y +grovel/SDRGZ +Grover/M +Grove/RM +grove/SRMZ +grower/M +grow/GZYRHS +growing/I +growingly +growler/M +growling/Y +growl/RDGZS +growly/RP +grown/IA +grownup/MS +grows/A +growth/IMA +growths/IA +grubbed +grubber/SM +grubbily +grubbiness/SM +grubbing +grubby/RTP +grub/MS +grubstake/MSDG +grudge/GMSRDJ +grudger/M +grudging/Y +grueling/Y +gruel/MDGJS +gruesomeness/SM +gruesome/RYTP +gruffness/MS +gruff/PSGTYRD +grumble/GZJDSR +grumbler/M +grumbling/Y +Grumman/M +grumpily +grumpiness/MS +grump/MDGS +grumpy/TPR +Grundy/M +Grnewald/M +grunge/S +grungy/RT +grunion/SM +grunter/M +grunt/SGRD +Grusky/M +Grus/M +Gruyre +Gruyeres +gryphon's +g's +G's +gs/A +GSA +gt +GU +guacamole/MS +Guadalajara/M +Guadalcanal/M +Guadalquivir/M +Guadalupe/M +Guadeloupe/M +Guallatiri/M +Gualterio/M +Guamanian/SM +Guam/M +Guangzhou +guanine/MS +guano/MS +Guantanamo/M +Guarani/M +guarani/SM +guaranteeing +guarantee/RSDZM +guarantor/SM +guaranty/MSDG +guardedness/UM +guarded/UYP +guarder/M +guardhouse/SM +Guardia/M +guardianship/MS +guardian/SM +guardrail/SM +guard/RDSGZ +guardroom/SM +guardsman/M +guardsmen +Guarnieri/M +Guatemala/M +Guatemalan/S +guava/SM +Guayaquil/M +gubernatorial +Gucci/M +gudgeon/M +Guelph/M +Guendolen/M +Guenevere/M +Guenna/M +Guenther/M +guernsey/S +Guernsey/SM +Guerra/M +Guerrero/M +guerrilla/MS +guessable/U +guess/BGZRSD +guessed/U +guesser/M +guesstimate/DSMG +guesswork/MS +guest/SGMD +Guevara/M +guffaw/GSDM +guff/SM +Guggenheim/M +Guglielma/M +Guglielmo/M +Guhleman/M +GUI +Guiana/M +guidance/MS +guidebook/SM +guided/U +guide/GZSRD +guideline/SM +guidepost/MS +guider/M +Guido/M +Guilbert/M +guilder/M +guildhall/SM +guild/SZMR +guileful +guilelessness/MS +guileless/YP +guile/SDGM +Guillaume/M +Guillema/M +Guillemette/M +guillemot/MS +Guillermo/M +guillotine/SDGM +guiltily +guiltiness/MS +guiltlessness/M +guiltless/YP +guilt/SM +guilty/PTR +Gui/M +Guinea/M +Guinean/S +guinea/SM +Guinevere/M +Guinna/M +Guinness/M +guise's +guise/SDEG +guitarist/SM +guitar/SM +Guiyang +Guizot/M +Gujarati/M +Gujarat/M +Gujranwala/M +gulag/S +gulch/MS +gulden/MS +gulf/DMGS +Gullah/M +gullet/MS +gulley's +gullibility/MS +gullible +Gulliver/M +gull/MDSG +gully/SDMG +gulp/RDGZS +gumboil/MS +gumbo/MS +gumboots +gumdrop/SM +gummed +gumminess/M +gumming/C +gum/MS +gummy/RTP +gumption/SM +gumshoeing +gumshoe/SDM +gumtree/MS +Gunar/M +gunboat/MS +Gunderson/M +gunfighter/M +gunfight/SRMGZ +gunfire/SM +gunflint/M +gunfought +Gunilla/M +gunk/SM +gunky/RT +Gun/M +gunman/M +gunmen +gunmetal/MS +gun/MS +Gunnar/M +gunned +gunnel's +Gunner/M +gunner/SM +gunnery/MS +gunning/M +gunnysack/SM +gunny/SM +gunpoint/MS +gunpowder/SM +gunrunner/MS +gunrunning/MS +gunship/S +gunshot/SM +gunslinger/M +gunsling/GZR +gunsmith/M +gunsmiths +Guntar/M +Gunter/M +Gunther/M +gunwale/MS +Guofeng/M +guppy/SM +Gupta/M +gurgle/SDG +Gurkha/M +gurney/S +guru/MS +Gusella/M +gusher/M +gush/SRDGZ +gushy/TR +Gus/M +Guss +gusset/MDSG +Gussie/M +Gussi/M +gussy/GSD +Gussy/M +Gustaf/M +Gustafson/M +Gusta/M +gustatory +Gustave/M +Gustav/M +Gustavo/M +Gustavus/M +gusted/E +Gustie/M +gustily +Gusti/M +gustiness/M +gusting/E +gust/MDGS +gustoes +gusto/M +gusts/E +Gusty/M +gusty/RPT +Gutenberg/M +Guthrey/M +Guthrie/M +Guthry/M +Gutierrez/M +gutlessness/S +gutless/P +gutser/M +gutsiness/M +gut/SM +guts/R +gutsy/PTR +gutted +gutter/GSDM +guttering/M +guttersnipe/M +gutting +gutturalness/M +guttural/SPY +gutty/RSMT +Guyana/M +Guyanese +Guy/M +guy/MDRZGS +Guzman/M +guzzle/GZRSD +guzzler/M +g/VBX +Gwalior/M +Gwendolen/M +Gwendoline/M +Gwendolin/M +Gwendolyn/M +Gweneth/M +Gwenette/M +Gwen/M +Gwenneth/M +Gwennie/M +Gwenni/M +Gwenny/M +Gwenora/M +Gwenore/M +Gwyneth/M +Gwyn/M +Gwynne/M +gymkhana/SM +gym/MS +gymnasia's +gymnasium/SM +gymnastically +gymnastic/S +gymnastics/M +gymnast/SM +gymnosperm/SM +gynecologic +gynecological/MS +gynecologist/SM +gynecology/MS +gypped +gypper/S +gypping +gyp/S +gypsite +gypster/S +gypsum/MS +gypsy/SDMG +Gypsy/SM +gyrate/XNGSD +gyration/M +gyrator/MS +gyrfalcon/SM +gyrocompass/M +gyro/MS +gyroscope/SM +gyroscopic +gyve/GDS +H +Haag/M +Haas/M +Habakkuk/M +habeas +haberdasher/SM +haberdashery/SM +Haber/M +Haberman/M +Habib/M +habiliment/SM +habitability/MS +habitableness/M +habitable/P +habitant/ISM +habitation/MI +habitations +habitat/MS +habit/IBDGS +habit's +habitualness/SM +habitual/SYP +habituate/SDNGX +habituation/M +habitu/MS +hacienda/MS +hacker/M +Hackett/M +hack/GZSDRBJ +hackler/M +hackle/RSDMG +hackney/SMDG +hacksaw/SDMG +hackwork/S +Hadamard/M +Hadar/M +Haddad/M +haddock/MS +hades +Hades +had/GD +hadji's +hadj's +Hadlee/M +Hadleigh/M +Hadley/M +Had/M +hadn't +Hadria/M +Hadrian/M +hadron/MS +hadst +haemoglobin's +haemophilia's +haemorrhage's +Hafiz/M +hafnium/MS +haft/GSMD +Hagan/M +Hagar/M +Hagen/M +Hager/M +Haggai/M +haggardness/MS +haggard/SYP +hagged +hagging +haggish +haggis/SM +haggler/M +haggle/RSDZG +Hagiographa/M +hagiographer/SM +hagiography/MS +hag/SMN +Hagstrom/M +Hague/M +ha/H +hahnium/S +Hahn/M +Haifa/M +haiku/M +Hailee/M +hailer/M +Hailey/M +hail/SGMDR +hailstone/SM +hailstorm/SM +Haily/M +Haiphong/M +hairball/SM +hairbreadth/M +hairbreadths +hairbrush/SM +haircare +haircloth/M +haircloths +haircut/MS +haircutting +hairdo/SM +hairdresser/SM +hairdressing/SM +hairdryer/S +hairiness/MS +hairlessness/M +hairless/P +hairlike +hairline/SM +hairnet/MS +hairpiece/MS +hairpin/MS +hairsbreadth +hairsbreadths +hair/SDM +hairsplitter/SM +hairsplitting/MS +hairspray +hairspring/SM +hairstyle/SMG +hairstylist/S +hairy/PTR +Haitian/S +Haiti/M +hajjes +hajji/MS +hajj/M +Hakeem/M +hake/MS +Hakim/M +Hakka/M +Hakluyt/M +halalled +halalling +halal/S +halberd/SM +halcyon/S +Haldane/M +Haleakala/M +Haleigh/M +hale/ISRDG +Hale/M +haler/IM +halest +Halette/M +Haley/M +halfback/SM +halfbreed +halfheartedness/MS +halfhearted/PY +halfpence/S +halfpenny/MS +halfpennyworth +half/PM +halftime/S +halftone/MS +halfway +halfword/MS +halibut/SM +halide/SM +Halie/M +Halifax/M +Hali/M +Halimeda/M +halite/MS +halitoses +halitosis/M +hallelujah +hallelujahs +Halley/M +halliard's +Hallie/M +Halli/M +Hallinan/M +Hall/M +Hallmark/M +hallmark/SGMD +hallo/GDS +halloo's +Halloween/MS +hallowing +hallows +hallow/UD +hall/SMR +Hallsy/M +hallucinate/VNGSDX +hallucination/M +hallucinatory +hallucinogenic/S +hallucinogen/SM +hallway/SM +Hally/M +halocarbon +halogenated +halogen/SM +halon +halo/SDMG +Halpern/M +Halsey/M +Hal/SMY +Halsy/M +halter/GDM +halt/GZJSMDR +halting/Y +halve/GZDS +halves/M +halyard/MS +Ha/M +Hamal/M +Haman/M +hamburger/M +Hamburg/MS +hamburg/SZRM +Hamel/M +Hamey/M +Hamhung/M +Hamid/M +Hamilcar/M +Hamil/M +Hamiltonian/MS +Hamilton/M +Hamish/M +Hamitic/M +Hamlen/M +Hamlet/M +hamlet/MS +Hamlin/M +Ham/M +Hammad/M +Hammarskjold/M +hammed +hammerer/M +hammerhead/SM +hammering/M +hammerless +hammerlock/MS +Hammerstein/M +hammertoe/SM +hammer/ZGSRDM +Hammett/M +hamming +hammock/MS +Hammond/M +Hammurabi/M +hammy/RT +Hamnet/M +hampered/U +hamper/GSD +Hampshire/M +Hampton/M +ham/SM +hamster/MS +hamstring/MGS +hamstrung +Hamsun/M +Hana/M +Hanan/M +Hancock/M +handbagged +handbagging +handbag/MS +handball/SM +handbarrow/MS +handbasin +handbill/MS +handbook/SM +handbrake/M +handcar/SM +handcart/MS +handclasp/MS +handcraft/GMDS +handcuff/GSD +handcuffs/M +handedness/M +handed/PY +Handel/M +hander/S +handful/SM +handgun/SM +handhold/M +handicapped +handicapper/SM +handicapping +handicap/SM +handicraftsman/M +handicraftsmen +handicraft/SMR +handily/U +handiness/SM +handiwork/MS +handkerchief/MS +handleable +handlebar/SM +handle/MZGRSD +handler/M +handless +handling/M +handmade +handmaiden/M +handmaid/NMSX +handout/SM +handover +handpick/GDS +handrail/SM +hand's +handsaw/SM +handset/SM +handshake/GMSR +handshaker/M +handshaking/M +handsomely/U +handsomeness/MS +handsome/RPTY +handspike/SM +handspring/SM +handstand/MS +hand/UDSG +handwork/SM +handwoven +handwrite/GSJ +handwriting/M +handwritten +Handy/M +handyman/M +handymen +handy/URT +Haney/M +hangar/SGDM +hangdog/S +hanged/A +hanger/M +hang/GDRZBSJ +hanging/M +hangman/M +hangmen +hangnail/MS +hangout/MS +hangover/SM +hangs/A +Hangul/M +hangup/S +Hangzhou +Hankel/M +hankerer/M +hanker/GRDJ +hankering/M +hank/GZDRMS +hankie/SM +Hank/M +hanky's +Hannah/M +Hanna/M +Hannibal/M +Hannie/M +Hanni/MS +Hanny/M +Hanoi/M +Hanoverian +Hanover/M +Hansel/M +Hansen/M +Hansiain/M +Han/SM +Hans/N +hansom/MS +Hanson/M +Hanuka/S +Hanukkah/M +Hanukkahs +Hapgood/M +haphazardness/SM +haphazard/SPY +haplessness/MS +hapless/YP +haploid/S +happed +happening/M +happen/JDGS +happenstance/SM +happily/U +happiness/UMS +happing +Happy/M +happy/UTPR +Hapsburg/M +hap/SMY +Harald/M +harangue/GDRS +haranguer/M +Harare +harasser/M +harass/LSRDZG +harassment/SM +Harbert/M +harbinger/DMSG +Harbin/M +harborer/M +harbor/ZGRDMS +Harcourt/M +hardback/SM +hardball/SM +hardboard/SM +hardboiled +hardbound +hardcore/MS +hardcover/SM +hardened/U +hardener/M +hardening/M +harden/ZGRD +hardhat/S +hardheadedness/SM +hardheaded/YP +hardheartedness/SM +hardhearted/YP +hardihood/MS +hardily +hardiness/SM +Harding/M +Hardin/M +hardliner/S +hardness/MS +hardscrabble +hardshell +hardship/MS +hardstand/S +hardtack/MS +hardtop/MS +hardware/SM +hardwire/DSG +hardwood/MS +hardworking +Hardy/M +hard/YNRPJGXTS +hardy/PTRS +harebell/MS +harebrained +harelip/MS +harelipped +hare/MGDS +harem/SM +Hargreaves/M +hark/GDS +Harland/M +Harlan/M +Harlem/M +Harlene/M +Harlen/M +Harlequin +harlequin/MS +Harley/M +Harlie/M +Harli/M +Harlin/M +harlotry/MS +harlot/SM +Harlow/M +Harman/M +harmed/U +harmer/M +harmfulness/MS +harmful/PY +harmlessness/SM +harmless/YP +harm/MDRGS +Harmonia/M +harmonically +harmonica/MS +harmonic/S +harmonics/M +Harmonie/M +harmonious/IPY +harmoniousness/MS +harmoniousness's/I +harmonium/MS +harmonization/A +harmonizations +harmonization's +harmonized/U +harmonizer/M +harmonizes/UA +harmonize/ZGSRD +Harmon/M +harmony/EMS +Harmony/M +harness/DRSMG +harnessed/U +harnesser/M +harnesses/U +Harold/M +Haroun/M +harper/M +Harper/M +harping/M +harpist/SM +harp/MDRJGZS +Harp/MR +harpooner/M +harpoon/SZGDRM +harpsichordist/MS +harpsichord/SM +harpy/SM +Harpy/SM +Harrell/M +harridan/SM +Harrie/M +harrier/M +Harriet/M +Harrietta/M +Harriette/M +Harriett/M +Harrington/M +Harriot/M +Harriott/M +Harrisburg/M +Harri/SM +Harrisonburg/M +Harrison/M +harrower/M +harrow/RDMGS +harrumph/SDG +Harry/M +harry/RSDGZ +harshen/GD +harshness/SM +harsh/TRNYP +Harte/M +Hartford/M +Hartley/M +Hartline/M +Hart/M +Hartman/M +hart/MS +Hartwell/M +Harvard/M +harvested/U +harvester/M +harvestman/M +harvest/MDRZGS +Harvey/MS +Harv/M +Harwell/M +Harwilll/M +has +Hasbro/M +hash/AGSD +Hasheem/M +hasher/M +Hashim/M +hashing/M +hashish/MS +hash's +Hasidim +Haskell/M +Haskel/M +Haskins/M +Haslett/M +hasn't +hasp/GMDS +hassle/MGRSD +hassock/MS +haste/MS +hastener/M +hasten/GRD +hast/GXJDN +Hastie/M +hastily +hastiness/MS +Hastings/M +Hasty/M +hasty/RPT +hatchback/SM +hatcheck/S +hatched/U +hatcher/M +hatchery/MS +hatchet/MDSG +hatching/M +hatch/RSDJG +Hatchure/M +hatchway/MS +hatefulness/MS +hateful/YP +hater/M +hate/S +Hatfield/M +Hathaway/M +hatless +hat/MDRSZG +hatred/SM +hatstands +hatted +Hatteras/M +hatter/SM +Hattie/M +Hatti/M +hatting +Hatty/M +hauberk/SM +Haugen/M +haughtily +haughtiness/SM +haughty/TPR +haulage/MS +hauler/M +haul/SDRGZ +haunch/GMSD +haunter/M +haunting/Y +haunt/JRDSZG +Hauptmann/M +Hausa/M +Hausdorff/M +Hauser/M +hauteur/MS +Havana/SM +Havarti +Havel/M +haven/DMGS +Haven/M +haven't +haver/G +haversack/SM +have/ZGSR +havocked +havocking +havoc/SM +Haw +Hawaiian/S +Hawaii/M +hawker/M +hawk/GZSDRM +Hawking +hawking/M +Hawkins/M +hawkishness/S +hawkish/P +Hawley/M +haw/MDSG +hawser/M +haws/RZ +Hawthorne/M +hawthorn/MS +haycock/SM +Hayden/M +Haydn/M +Haydon/M +Hayes +hayfield/MS +hay/GSMDR +Hayley/M +hayloft/MS +haymow/MS +Haynes +hayrick/MS +hayride/MS +hayseed/MS +Hay/SM +haystack/SM +haywain +Hayward/M +haywire/MS +Haywood/M +Hayyim/M +hazard/MDGS +hazardousness/M +hazardous/PY +haze/DSRJMZG +Hazel/M +hazel/MS +hazelnut/SM +Haze/M +hazer/M +hazily +haziness/MS +hazing/M +Hazlett/M +Hazlitt/M +hazy/PTR +HBO/M +hdqrs +HDTV +headache/MS +headband/SM +headboard/MS +headcount +headdress/MS +header/M +headfirst +headgear/SM +headhunter/M +headhunting/M +headhunt/ZGSRDMJ +headily +headiness/S +heading/M +headlamp/S +headland/MS +headlessness/M +headless/P +headlight/MS +headline/DRSZMG +headliner/M +headlock/MS +headlong +Head/M +headman/M +headmaster/MS +headmastership/M +headmen +headmistress/MS +headphone/SM +headpiece/SM +headpin/MS +headquarter/GDS +headrest/MS +headroom/SM +headscarf/M +headset/SM +headship/SM +headshrinker/MS +head/SJGZMDR +headsman/M +headsmen +headstall/SM +headstand/MS +headstock/M +headstone/MS +headstrong +headwaiter/SM +headwall/S +headwater/S +headway/MS +headwind/SM +headword/MS +heady/PTR +heal/DRHSGZ +healed/U +healer/M +Heall/M +healthfully +healthfulness/SM +healthful/U +healthily/U +healthiness/MSU +health/M +healths +healthy/URPT +heap/SMDG +heard/UA +hearer/M +hearing/AM +hearken/SGD +hearsay/SM +hearse/M +hears/SDAG +Hearst/M +heartache/SM +heartbeat/MS +heartbreak/GMS +heartbreaking/Y +heartbroke +heartbroken +heartburning/M +heartburn/SGM +hearted/Y +hearten/EGDS +heartening/EY +heartfelt +hearth/M +hearthrug +hearths +hearthstone/MS +heartily +heartiness/SM +heartland/SM +heartlessness/SM +heartless/YP +heartrending/Y +heartsickness/MS +heartsick/P +heart/SMDNXG +heartstrings +heartthrob/MS +heartwarming +Heartwood/M +heartwood/SM +hearty/TRSP +hear/ZTSRHJG +heatedly +heated/UA +heater/M +heathendom/SM +heathenish/Y +heathenism/MS +heathen/M +heather/M +Heather/M +heathery +Heathkit/M +heathland +Heathman/M +Heath/MR +heath/MRNZX +heaths +heatproof +heats/A +heat/SMDRGZBJ +heatstroke/MS +heatwave +heave/DSRGZ +heavenliness/M +heavenly/PTR +heaven/SYM +heavenward/S +heaver/M +heaves/M +heavily +heaviness/MS +Heaviside/M +heavyhearted +heavyset +heavy/TPRS +heavyweight/SM +Hebe/M +hebephrenic +Hebert/M +Heb/M +Hebraic +Hebraism/MS +Hebrew/SM +Hebrides/M +Hecate/M +hecatomb/M +heckler/M +heckle/RSDZG +heck/S +hectare/MS +hectically +hectic/S +hectogram/MS +hectometer/SM +Hector/M +hector/SGD +Hecuba/M +he'd +Heda/M +Hedda/M +Heddie/M +Heddi/M +hedge/DSRGMZ +hedgehog/MS +hedgehopped +hedgehopping +hedgehop/S +hedger/M +hedgerow/SM +hedging/Y +Hedi/M +hedonism/SM +hedonistic +hedonist/MS +Hedvige/M +Hedvig/M +Hedwiga/M +Hedwig/M +Hedy/M +heeded/U +heedfulness/M +heedful/PY +heeding/U +heedlessness/SM +heedless/YP +heed/SMGD +heehaw/DGS +heeler/M +heeling/M +heelless +heel/SGZMDR +Heep/M +Hefner/M +heft/GSD +heftily +heftiness/SM +hefty/TRP +Hegelian +Hegel/M +hegemonic +hegemony/MS +Hegira/M +hegira/S +Heida/M +Heidegger/M +Heidelberg/M +Heidie/M +Heidi/M +heifer/MS +Heifetz/M +heighten/GD +height/SMNX +Heimlich/M +Heindrick/M +Heineken/M +Heine/M +Heinlein/M +heinousness/SM +heinous/PY +Heinrich/M +Heinrick/M +Heinrik/M +Heinze/M +Heinz/M +heiress/MS +heirloom/MS +heir/SDMG +Heisenberg/M +Heiser/M +heister/M +heist/GSMRD +Hejira's +Helaina/M +Helaine/M +held +Helena/M +Helene/M +Helenka/M +Helen/M +Helga/M +Helge/M +helical/Y +helices/M +helicon/M +Helicon/M +helicopter/GSMD +heliocentric +heliography/M +Heliopolis/M +Helios/M +heliosphere +heliotrope/SM +heliport/MS +helium/MS +helix/M +he'll +hellbender/M +hellbent +hellcat/SM +hellebore/SM +Hellene/SM +Hellenic +Hellenism/MS +Hellenistic +Hellenist/MS +Hellenization/M +Hellenize +heller/M +Heller/M +Hellespont/M +hellfire/M +hell/GSMDR +hellhole/SM +Helli/M +hellion/SM +hellishness/SM +hellish/PY +Hellman/M +hello/GMS +Hell's +helluva +helmed +helmet/GSMD +Helmholtz/M +helming +helms +helm's +helmsman/M +helmsmen +helm/U +Helmut/M +Hloise/M +helot/S +helper/M +helpfulness/MS +helpful/UY +help/GZSJDR +helping/M +helplessness/SM +helpless/YP +helpline/S +helpmate/SM +helpmeet's +Helsa/M +Helsinki/M +helve/GMDS +Helvetian/S +Helvetius/M +Helyn/M +He/M +hematite/MS +hematologic +hematological +hematologist/SM +hematology/MS +heme/MS +Hemingway/M +hemisphere/MSD +hemispheric +hemispherical +hemline/SM +hemlock/MS +hemmed +hemmer/SM +hemming +hem/MS +hemoglobin/MS +hemolytic +hemophiliac/SM +hemophilia/SM +hemorrhage/GMDS +hemorrhagic +hemorrhoid/MS +hemostat/SM +hemp/MNS +h/EMS +hemstitch/DSMG +henceforth +henceforward +hence/S +Hench/M +henchman/M +henchmen +Henderson/M +Hendrick/SM +Hendrickson/M +Hendrika/M +Hendrik/M +Hendrix/M +henge/M +Henka/M +Henley/M +hen/MS +henna/MDSG +Hennessey/M +henning +henpeck/GSD +Henrie/M +Henrieta/M +Henrietta/M +Henriette/M +Henrik/M +Henri/M +Henryetta/M +henry/M +Henry/M +Hensley/M +Henson/M +heparin/MS +hepatic/S +hepatitides +hepatitis/M +Hepburn/M +Hephaestus/M +Hephzibah/M +hepper +heppest +Hepplewhite +hep/S +heptagonal +heptagon/SM +heptane/M +heptathlon/S +her +Heracles/M +Heraclitus/M +heralded/U +heraldic +herald/MDSG +heraldry/MS +Hera/M +herbaceous +herbage/MS +herbalism +herbalist/MS +herbal/S +Herbart/M +Herbert/M +herbicidal +herbicide/MS +Herbie/M +herbivore/SM +herbivorous/Y +Herb/M +herb/MS +Herby/M +Herc/M +Herculaneum/M +herculean +Herculean +Hercule/MS +Herculie/M +herder/M +Herder/M +herd/MDRGZS +herdsman/M +herdsmen +hereabout/S +hereafter/S +hereby +hereditary +heredity/MS +Hereford/SM +herein +hereinafter +here/IS +hereof +hereon +here's +heres/M +heresy/SM +heretical +heretic/SM +hereto +heretofore +hereunder +hereunto +hereupon +herewith +Heriberto/M +heritable +heritage/MS +heritor/IM +Herkimer/M +Herman/M +Hermann/M +hermaphrodite/SM +hermaphroditic +Hermaphroditus/M +hermeneutic/S +hermeneutics/M +Hermes +hermetical/Y +hermetic/S +Hermia/M +Hermie/M +Hermina/M +Hermine/M +Herminia/M +Hermione/M +hermitage/SM +Hermite/M +hermitian +hermit/MS +Hermon/M +Hermosa/M +Hermosillo/M +Hermy/M +Hernandez/M +Hernando/M +hernial +hernia/MS +herniate/NGXDS +Herod/M +Herodotus/M +heroes +heroically +heroics +heroic/U +heroine/SM +heroin/MS +heroism/SM +Herold/M +hero/M +heron/SM +herpes/M +herpetologist/SM +herpetology/MS +Herrera/M +Herrick/M +herringbone/SDGM +Herring/M +herring/SM +Herrington/M +Herr/MG +Herschel/M +Hersch/M +herself +Hersey/M +Hershel/M +Hershey/M +Hersh/M +Herta/M +Hertha/M +hertz/M +Hertz/M +Hertzog/M +Hertzsprung/M +Herve/M +Hervey/M +Herzegovina/M +Herzl/M +hes +Hesiod/M +hesitance/S +hesitancy/SM +hesitantly +hesitant/U +hesitater/M +hesitate/XDRSNG +hesitating/UY +hesitation/M +Hesperus/M +Hesse/M +Hessian/MS +Hess/M +Hester/M +Hesther/M +Hestia/M +Heston/M +heterodox +heterodoxy/MS +heterodyne +heterogamous +heterogamy/M +heterogeneity/SM +heterogeneousness/M +heterogeneous/PY +heterosexuality/SM +heterosexual/YMS +heterostructure +heterozygous +Hettie/M +Hetti/M +Hetty/M +Heublein/M +heuristically +heuristic/SM +Heusen/M +Heuser/M +he/VMZ +hew/DRZGS +Hewe/M +hewer/M +Hewet/M +Hewett/M +Hewie/M +Hewitt/M +Hewlett/M +Hew/M +hexachloride/M +hexadecimal/YS +hexafluoride/M +hexagonal/Y +hexagon/SM +hexagram/SM +hexameter/SM +hex/DSRG +hexer/M +hey +heyday/MS +Heyerdahl/M +Heywood/M +Hezekiah/M +hf +HF +Hf/M +Hg/M +hgt +hgwy +HHS +HI +Hialeah/M +hiatus/SM +Hiawatha/M +hibachi/MS +hibernate/XGNSD +hibernation/M +hibernator/SM +Hibernia/M +Hibernian/S +hibiscus/MS +hiccup/MDGS +hickey/SM +Hickey/SM +Hickman/M +Hickok/M +hickory/MS +hick/SM +Hicks/M +hi/D +hidden/U +hideaway/SM +hidebound +hideousness/SM +hideous/YP +hideout/MS +hider/M +hide/S +hiding/M +hid/ZDRGJ +hieing +hierarchal +hierarchic +hierarchical/Y +hierarchy/SM +hieratic +hieroglyph +hieroglyphic/S +hieroglyphics/M +hieroglyphs +Hieronymus/M +hie/S +hifalutin +Higashiosaka +Higgins/M +highball/GSDM +highborn +highboy/MS +highbrow/SM +highchair/SM +highfalutin +Highfield/M +highhandedness/SM +highhanded/PY +highish +Highlander/SM +Highlands +highland/ZSRM +highlight/GZRDMS +Highness/M +highness/MS +highpoint +high/PYRT +highroad/MS +highs +hight +hightail/DGS +highwayman/M +highwaymen +highway/MS +hijacker/M +hijack/JZRDGS +hiker/M +hike/ZGDSR +Hilario/M +hilariousness/MS +hilarious/YP +hilarity/MS +Hilarius/M +Hilary/M +Hilbert/M +Hildagarde/M +Hildagard/M +Hilda/M +Hildebrand/M +Hildegaard/M +Hildegarde/M +Hilde/M +Hildy/M +Hillard/M +Hillary/M +hillbilly/MS +Hillcrest/M +Hillel/M +hiller/M +Hillery/M +hill/GSMDR +Hilliard/M +Hilliary/M +Hillie/M +Hillier/M +hilliness/SM +Hill/M +hillman +hillmen +hillock/SM +Hillsboro/M +Hillsdale/M +hillside/SM +hilltop/MS +hillwalking +Hillyer/M +Hilly/RM +hilly/TRP +hilt/MDGS +Hilton/M +Hi/M +Himalaya/MS +Himalayan/S +Himmler/M +him/S +himself +Hinayana/M +Hinda/M +Hindemith/M +Hindenburg/M +hindered/U +hinderer/M +hinder/GRD +Hindi/M +hindmost +hindquarter/SM +hindrance/SM +hind/RSZ +hindsight/SM +Hinduism/SM +Hindu/MS +Hindustani/MS +Hindustan/M +Hines/M +hinger +hinge's +hinge/UDSG +Hinkle/M +Hinsdale/M +hinterland/MS +hinter/M +hint/GZMDRS +Hinton/M +Hinze/M +hipbone/SM +hipness/S +Hipparchus/M +hipped +hipper +hippest +hippie/MTRS +hipping/M +Hippocrates/M +Hippocratic +hippodrome/MS +hippo/MS +hippopotamus/SM +hip/PSM +hippy's +hipster/MS +hiragana +Hiram/M +hire/AGSD +hireling/SM +hirer/SM +Hirey/M +hiring/S +Hirohito/M +Hiroshi/M +Hiroshima/M +Hirsch/M +hirsuteness/MS +hirsute/P +his +Hispanic/SM +Hispaniola/M +hiss/DSRMJG +hisser/M +hissing/M +Hiss/M +histamine/SM +histidine/SM +histochemic +histochemical +histochemistry/M +histogram/MS +histological +histologist/MS +histology/SM +historian/MS +historic +historicalness/M +historical/PY +historicism/M +historicist/M +historicity/MS +historiographer/SM +historiography/MS +history/MS +histrionically +histrionic/S +histrionics/M +hist/SDG +Hitachi/M +Hitchcock/M +hitcher/MS +hitchhike/RSDGZ +hitch/UGSD +hither +hitherto +Hitler/SM +hitless +hit/MS +hittable +hitter/SM +hitting +Hittite/SM +HIV +hive/MGDS +h'm +HM +HMO +Hmong +HMS +hoarder/M +hoarding/M +hoard/RDJZSGM +hoarfrost/SM +hoariness/MS +hoar/M +hoarseness/SM +hoarse/RTYP +hoary/TPR +hoaxer/M +hoax/GZMDSR +Hobard/M +Hobart/M +hobbed +Hobbes/M +hobbing +hobbit +hobbler/M +hobble/ZSRDG +Hobbs/M +hobbyhorse/SM +hobbyist/SM +hobby/SM +Hobday/M +Hobey/M +hobgoblin/MS +Hobie/M +hobnail/GDMS +hobnobbed +hobnobbing +hobnob/S +Hoboken/M +hobo/SDMG +hob/SM +hoc +hocker/M +hockey/SM +hock/GDRMS +Hockney/M +hockshop/SM +hodge/MS +Hodge/MS +hodgepodge/SM +Hodgkin/M +ho/DRYZ +hod/SM +Hoebart/M +hoecake/SM +hoedown/MS +hoeing +hoer/M +hoe/SM +Hoffa/M +Hoff/M +Hoffman/M +Hofstadter/M +Hogan/M +hogan/SM +Hogarth/M +hogback/MS +hogged +hogger +hogging +hoggish/Y +hogshead/SM +hog/SM +hogtie/SD +hogtying +hogwash/SM +Hohenlohe/M +Hohenstaufen/M +Hohenzollern/M +Hohhot/M +hoister/M +hoist/GRDS +hoke/DSG +hokey/PRT +hokier +hokiest +Hokkaido/M +hokum/MS +Hokusai/M +Holbein/M +Holbrook/M +Holcomb/M +holdall/MS +Holden/M +holder/M +Holder/M +holding/IS +holding's +hold/NRBSJGZ +holdout/SM +holdover/SM +holdup/MS +hole/MGDS +holey +holiday/GRDMS +Holiday/M +holidaymaker/S +holier/U +Holiness/MS +holiness/MSU +holistic +holistically +hollandaise +Hollandaise/M +Hollander/M +Holland/RMSZ +holler/GDS +Hollerith/M +Holley/M +Hollie/M +Holli/SM +Hollister/M +Holloway/M +hollowness/MS +hollow/RDYTGSP +hollowware/M +Hollyanne/M +hollyhock/MS +Holly/M +holly/SM +Hollywood/M +Holman/M +Holmes +holmium/MS +Holm/M +Holocaust +holocaust/MS +Holocene +hologram/SM +holograph/GMD +holographic +holographs +holography/MS +Holstein/MS +holster/MDSG +Holst/M +Holt/M +Holyoke/M +holy/SRTP +holystone/MS +Holzman/M +Ho/M +homage/MGSRD +homager/M +hombre/SM +homburg/SM +homebody/MS +homebound +homeboy/S +homebuilder/S +homebuilding +homebuilt +homecoming/MS +home/DSRMYZG +homegrown +homeland/SM +homelessness/SM +homeless/P +homelike +homeliness/SM +homely/RPT +homemade +homemake/JRZG +homemaker/M +homemaking/M +homeomorphic +homeomorphism/MS +homeomorph/M +homeopath +homeopathic +homeopaths +homeopathy/MS +homeostases +homeostasis/M +homeostatic +homeowner/S +homeownership +homepage +Homere/M +homer/GDM +Homeric +homerists +Homer/M +homeroom/MS +Homerus/M +homeschooling/S +homesickness/MS +homesick/P +homespun/S +homesteader/M +homestead/GZSRDM +homestretch/SM +hometown/SM +homeward +homeworker/M +homework/ZSMR +homeyness/MS +homey/PS +homicidal/Y +homicide/SM +homier +homiest +homiletic/S +homily/SM +hominess's +homing/M +hominid/MS +hominy/SM +Hom/MR +homogamy/M +homogenate/MS +homogeneity/ISM +homogeneous/PY +homogenization/MS +homogenize/DRSGZ +homogenizer/M +homograph/M +homographs +homological +homologous +homologue/M +homology/MS +homomorphic +homomorphism/SM +homonym/SM +homophobia/S +homophobic +homophone/MS +homopolymers +homosexuality/SM +homosexual/YMS +homo/SM +homotopy +homozygous/Y +honcho/DSG +Honda/M +Hondo/M +Honduran/S +Honduras/M +Honecker/M +hone/SM +honestly/E +honest/RYT +honesty/ESM +honeybee/SM +honeycomb/SDMG +honeydew/SM +honey/GSMD +honeylocust +Honey/M +honeymooner/M +honeymoon/RDMGZS +honeysuckle/MS +Honeywell/M +hong/M +Honiara/M +honker/M +honk/GZSDRM +honky/SM +Hon/M +hon/MDRSZTG +Honolulu/M +honorableness/SM +honorable/PSM +honorables/U +honorablies/U +honorably/UE +honorarily +honorarium/SM +honorary/S +honored/U +honoree/S +honor/ERDBZGS +honorer/EM +Honoria/M +honorific/S +Honor/M +honor's +honors/A +Honshu/M +hooch/MS +hoodedness/M +hooded/P +hoodlum/SM +Hood/M +hood/MDSG +hoodoo/DMGS +hoodwinker/M +hoodwink/SRDG +hooey/SM +hoof/DRMSG +hoofer/M +hoofmark/S +hookah/M +hookahs +hookedness/M +hooked/P +Hooke/MR +hooker/M +Hooker/M +hookey's +hook/GZDRMS +hooks/U +hookup/SM +hookworm/MS +hooky/SRMT +hooliganism/SM +hooligan/SM +hooper/M +Hooper/M +hoopla/SM +hoop/MDRSG +hooray/SMDG +hoosegow/MS +Hoosier/SM +hootch's +hootenanny/SM +hooter/M +hoot/MDRSGZ +Hoover/MS +hooves/M +hoped/U +hopefulness/MS +hopeful/SPY +hopelessness/SM +hopeless/YP +Hope/M +hoper/M +hope/SM +Hopewell/M +Hopi/SM +Hopkinsian/M +Hopkins/M +hopped +Hopper/M +hopper/MS +hopping/M +hoppled +hopples +hopscotch/MDSG +hop/SMDRG +Horace/M +Horacio/M +Horatia/M +Horatio/M +Horatius/M +horde/DSGM +horehound/MS +horizon/MS +horizontal/YS +Hormel/M +hormonal/Y +hormone/MS +Hormuz/M +hornbeam/M +hornblende/MS +Hornblower/M +hornedness/M +horned/P +Horne/M +hornet/MS +horn/GDRMS +horniness/M +hornless +hornlike +Horn/M +hornpipe/MS +horny/TRP +horologic +horological +horologist/MS +horology/MS +horoscope/MS +Horowitz/M +horrendous/Y +horribleness/SM +horrible/SP +horribly +horridness/M +horrid/PY +horrific +horrifically +horrify/DSG +horrifying/Y +horror/MS +hors/DSGX +horseback/MS +horsedom +horseflesh/M +horsefly/MS +horsehair/SM +horsehide/SM +horselaugh/M +horselaughs +horseless +horselike +horsely +horseman/M +horsemanship/MS +horsemen +horseplayer/M +horseplay/SMR +horsepower/SM +horseradish/SM +horse's +horseshoeing +horseshoe/MRSD +horseshoer/M +horsetail/SM +horse/UGDS +horsewhipped +horsewhipping +horsewhip/SM +horsewoman/M +horsewomen +horsey +horsier +horsiest +horsing/M +Horst/M +hortatory +Horten/M +Hortense/M +Hortensia/M +horticultural +horticulture/SM +horticulturist/SM +Hort/MN +Horton/M +Horus/M +hosanna/SDG +Hosea/M +hose/M +hosepipe +hos/GDS +hosier/MS +hosiery/SM +hosp +hospice/MS +hospitable/I +hospitably/I +hospitality/MS +hospitality's/I +hospitalization/MS +hospitalize/GSD +hospital/MS +hostage/MS +hosteler/M +hostelry/MS +hostel/SZGMRD +hostess/MDSG +hostile/YS +hostility/SM +hostler/MS +Host/MS +host/MYDGS +hotbed/MS +hotblooded +hotbox/MS +hotcake/S +hotchpotch/M +hotelier/MS +hotelman/M +hotel/MS +hotfoot/DGS +hothead/DMS +hotheadedness/SM +hotheaded/PY +hothouse/MGDS +hotness/MS +hotplate/SM +hotpot/M +hot/PSY +hotrod +hotshot/S +hotted +Hottentot/SM +hotter +hottest +hotting +Houdaille/M +Houdini/M +hough/M +hounder/M +hounding/M +hound/MRDSG +hourglass/MS +houri/MS +hourly/S +hour/YMS +house/ASDG +houseboat/SM +housebound +houseboy/SM +housebreaker/M +housebreaking/M +housebreak/JSRZG +housebroke +housebroken +housebuilding +housecleaning/M +houseclean/JDSG +housecoat/MS +housefly/MS +houseful/SM +householder/M +household/ZRMS +househusband/S +housekeeper/M +housekeeping/M +housekeep/JRGZ +houselights +House/M +housemaid/MS +houseman/M +housemen +housemother/MS +housemoving +houseparent/SM +houseplant/S +houser +house's +housetop/MS +housewares +housewarming/MS +housewifeliness/M +housewifely/P +housewife/YM +housewives +houseworker/M +housework/ZSMR +housing/MS +Housman/M +Houston/M +Houyhnhnm/M +HOV +hovel/GSMD +hovercraft/M +hoverer/M +hover/GRD +hove/ZR +Howard/M +howbeit +howdah/M +howdahs +howdy/GSD +Howell/MS +Howe/M +however +Howey/M +Howie/M +howitzer/MS +howler/M +howl/GZSMDR +Howrah/M +how/SM +howsoever +hoyden/DMGS +hoydenish +Hoyle/SM +hoy/M +Hoyt/M +hp +HP +HQ +hr +HR +HRH +Hrothgar/M +hrs +h's +H's +HS +HST +ht +HTML +Hts/M +HTTP +Huang/M +huarache/SM +hubba +Hubbard/M +Hubble/M +hubbub/SM +hubby/SM +hubcap/SM +Huber/M +Hube/RM +Hubert/M +Huberto/M +Hubey/M +Hubie/M +hub/MS +hubris/SM +huckleberry/SM +Huck/M +huckster/SGMD +HUD +Huddersfield/M +huddler/M +huddle/RSDMG +Hudson/M +hue/MDS +Huerta/M +Huey/M +huffily +huffiness/SM +Huff/M +Huffman/M +huff/SGDM +huffy/TRP +hugeness/MS +huge/YP +hugged +hugger +hugging/S +Huggins +Hughie/M +Hugh/MS +Hugibert/M +Hugo/M +hug/RTS +Huguenot/SM +Hugues/M +huh +huhs +Hui/M +Huitzilopitchli/M +hula/MDSG +Hulda/M +hulk/GDMS +hullabaloo/SM +huller/M +hulling/M +Hull/M +hull/MDRGZS +hullo/GSDM +humane/IY +humaneness/SM +humaner +humanest +human/IPY +humanism/SM +humanistic +humanist/SM +humanitarianism/SM +humanitarian/S +humanity/ISM +humanization/CSM +humanized/C +humanizer/M +humanize/RSDZG +humanizes/IAC +humanizing/C +humankind/M +humannesses +humanness/IM +humanoid/S +humans +Humbert/M +Humberto/M +humbleness/SM +humble/TZGPRSDJ +humbly +Humboldt/M +humbugged +humbugging +humbug/MS +humdinger/MS +humdrum/S +Hume/M +humeral/S +humeri +humerus/M +Humfrey/M +Humfrid/M +Humfried/M +humidification/MC +humidifier/CM +humidify/RSDCXGNZ +humidistat/M +humidity/MS +humidor/MS +humid/Y +humiliate/SDXNG +humiliating/Y +humiliation/M +humility/MS +hummed +Hummel/M +hummer/SM +humming +hummingbird/SM +hummock/MDSG +hummocky +hummus/S +humongous +humored/U +humorist/MS +humorlessness/MS +humorless/PY +humorousness/MS +humorous/YP +humor/RDMZGS +humpback/SMD +hump/GSMD +humph/DG +Humphrey/SM +humphs +Humpty/M +hum/S +humus/SM +Humvee +hunchback/DSM +hunch/GMSD +hundredfold/S +hundred/SHRM +hundredths +hundredweight/SM +Hunfredo/M +hung/A +Hungarian/MS +Hungary/M +hunger/SDMG +Hung/M +hungover +hungrily +hungriness/SM +hungry/RTP +hunker/DG +hunky/RST +hunk/ZRMS +Hun/MS +hunter/M +Hunter/M +hunt/GZJDRS +hunting/M +Huntington/M +Huntlee/M +Huntley/M +Hunt/MR +huntress/MS +huntsman/M +huntsmen +Huntsville/M +hurdle/JMZGRSD +hurdler/M +hurl/DRGZJS +Hurlee/M +Hurleigh/M +hurler/M +Hurley/M +hurling/M +Huron/SM +hurray/SDG +hurricane/MS +hurriedness/M +hurried/UY +hurry/RSDG +Hurst/M +hurter/M +hurtfulness/MS +hurtful/PY +hurting/Y +hurtle/SDG +hurts +hurt/U +Hurwitz/M +Hus +Husain's +husbander/M +husband/GSDRYM +husbandman/M +husbandmen +husbandry/SM +Husein/M +hush/DSG +husker/M +huskily +huskiness/MS +husking/M +husk/SGZDRM +husky/RSPT +hussar/MS +Hussein/M +Husserl/M +hussy/SM +hustings/M +hustler/M +hustle/RSDZG +Huston/M +Hutchins/M +Hutchinson/M +Hutchison/M +hutch/MSDG +hut/MS +hutted +hutting +Hutton/M +Hutu/M +Huxley/M +Huygens/M +huzzah/GD +huzzahs +hwy +Hyacintha/M +Hyacinthe/M +Hyacinthia/M +Hyacinthie/M +hyacinth/M +Hyacinth/M +hyacinths +Hyades +hyaena's +Hyannis/M +Hyatt/M +hybridism/SM +hybridization/S +hybridize/GSD +hybrid/MS +Hyde/M +Hyderabad/M +Hydra/M +hydra/MS +hydrangea/SM +hydrant/SM +hydrate/CSDNGX +hydrate's +hydration/MC +hydraulically +hydraulicked +hydraulicking +hydraulic/S +hydraulics/M +hydrazine/M +hydride/MS +hydrocarbon/SM +hydrocephali +hydrocephalus/MS +hydrochemistry +hydrochloric +hydrochloride/M +hydrodynamical +hydrodynamic/S +hydrodynamics/M +hydroelectric +hydroelectrically +hydroelectricity/SM +hydrofluoric +hydrofoil/MS +hydrogenate/CDSGN +hydrogenate's +hydrogenation/MC +hydrogenations +hydrogen/MS +hydrogenous +hydrological/Y +hydrologist/MS +hydrology/SM +hydrolysis/M +hydrolyzed/U +hydrolyze/GSD +hydromagnetic +hydromechanics/M +hydrometer/SM +hydrometry/MS +hydrophilic +hydrophobia/SM +hydrophobic +hydrophone/SM +hydroplane/DSGM +hydroponic/S +hydroponics/M +hydro/SM +hydrosphere/MS +hydrostatic/S +hydrostatics/M +hydrotherapy/SM +hydrothermal/Y +hydrous +hydroxide/MS +hydroxy +hydroxylate/N +hydroxyl/SM +hydroxyzine/M +hyena/MS +hygiene/MS +hygienically +hygienic/S +hygienics/M +hygienist/MS +hygrometer/SM +hygroscopic +hying +Hy/M +Hyman/M +hymeneal/S +Hymen/M +hymen/MS +Hymie/M +hymnal/SM +hymnbook/S +hymn/GSDM +Hynda/M +hype/MZGDSR +hyperactive/S +hyperactivity/SM +hyperbola/MS +hyperbole/MS +hyperbolic +hyperbolically +hyperboloidal +hyperboloid/SM +hypercellularity +hypercritical/Y +hypercube/MS +hyperemia/M +hyperemic +hyperfine +hypergamous/Y +hypergamy/M +hyperglycemia/MS +hyperinflation +Hyperion/M +hypermarket/SM +hypermedia/S +hyperplane/SM +hyperplasia/M +hypersensitiveness/MS +hypersensitive/P +hypersensitivity/MS +hypersonic +hyperspace/M +hypersphere/M +hypertension/MS +hypertensive/S +hypertext/SM +hyperthyroid +hyperthyroidism/MS +hypertrophy/MSDG +hypervelocity +hyperventilate/XSDGN +hyperventilation/M +hyphenated/U +hyphenate/NGXSD +hyphenation/M +hyphen/DMGS +hypnoses +hypnosis/M +hypnotherapy/SM +hypnotically +hypnotic/S +hypnotism/MS +hypnotist/SM +hypnotize/SDG +hypoactive +hypoallergenic +hypocellularity +hypochondriac/SM +hypochondria/MS +hypocrisy/SM +hypocrite/MS +hypocritical/Y +hypodermic/S +hypo/DMSG +hypoglycemia/SM +hypoglycemic/S +hypophyseal +hypophysectomized +hypotenuse/MS +hypothalami +hypothalamic +hypothalamically +hypothalamus/M +hypothermia/SM +hypotheses +hypothesis/M +hypothesizer/M +hypothesize/ZGRSD +hypothetic +hypothetical/Y +hypothyroid +hypothyroidism/SM +hypoxia/M +hyssop/MS +hysterectomy/MS +hysteresis/M +hysteria/SM +hysterical/YU +hysteric/SM +Hyundai/M +Hz +i +I +IA +Iaccoca/M +Iago/M +Iain/M +Ia/M +iambi +iambic/S +iamb/MS +iambus/SM +Ian/M +Ianthe/M +Ibadan/M +Ibbie/M +Ibby/M +Iberia/M +Iberian/MS +Ibero/M +ibex/MS +ibid +ibidem +ibis/SM +IBM/M +Ibo/M +Ibrahim/M +Ibsen/M +ibuprofen/S +Icarus/M +ICBM/S +ICC +iceberg/SM +iceboat/MS +icebound +icebox/MS +icebreaker/SM +icecap/SM +ice/GDSC +Icelander/M +Icelandic +Iceland/MRZ +Ice/M +iceman/M +icemen +icepack +icepick/S +ice's +Ichabod/M +ichneumon/M +ichthyologist/MS +ichthyology/MS +icicle/SM +icily +iciness/SM +icing/MS +icky/RT +iconic +icon/MS +iconoclasm/MS +iconoclastic +iconoclast/MS +iconography/MS +icosahedra +icosahedral +icosahedron/M +ictus/SM +ICU +icy/RPT +I'd +ID +Idahoan/S +Idahoes +Idaho/MS +Idalia/M +Idalina/M +Idaline/M +Ida/M +idealism/MS +idealistic +idealistically +idealist/MS +idealization/MS +idealized/U +idealize/GDRSZ +idealizer/M +ideal/MYS +idealogical +idea/SM +ideate/SN +ideation/M +Idelle/M +Idell/M +idem +idempotent/S +identicalness/M +identical/YP +identifiability +identifiable/U +identifiably +identification/M +identified/U +identifier/M +identify/XZNSRDG +identity/SM +ideogram/MS +ideographic +ideograph/M +ideographs +ideological/Y +ideologist/SM +ideologue/S +ideology/SM +ides +Idette/M +idiocy/MS +idiolect/M +idiomatically +idiomatic/P +idiom/MS +idiopathic +idiosyncrasy/SM +idiosyncratic +idiosyncratically +idiotic +idiotically +idiot/MS +idleness/MS +idle/PZTGDSR +idler/M +id/MY +idolater/MS +idolatress/S +idolatrous +idolatry/SM +idolization/SM +idolized/U +idolizer/M +idolize/ZGDRS +idol/MS +ids +IDs +idyllic +idyllically +idyll/MS +IE +IEEE +Ieyasu/M +if +iffiness/S +iffy/TPR +Ifni/M +ifs +Iggie/M +Iggy/M +igloo/MS +Ignace/M +Ignacio/M +Ignacius/M +Ignatius/M +Ignazio/M +Ignaz/M +igneous +ignitable +ignite/ASDG +igniter/M +ignition/MS +ignobleness/M +ignoble/P +ignobly +ignominious/Y +ignominy/MS +ignoramus/SM +ignorance/MS +ignorantness/M +ignorant/SPY +ignorer/M +ignore/SRDGB +Igor/M +iguana/MS +Iguassu/M +ii +iii +Ijsselmeer/M +Ike/M +Ikey/M +Ikhnaton/M +ikon's +IL +Ilaire/M +Ila/M +Ilario/M +ilea +Ileana/M +Ileane/M +ileitides +ileitis/M +Ilene/M +ileum/M +ilia +iliac +Iliad/MS +Ilise/M +ilium/M +Ilka/M +ilk/MS +I'll +Illa/M +illegality/MS +illegal/YS +illegibility/MS +illegible +illegibly +illegitimacy/SM +illegitimate/SDGY +illiberality/SM +illiberal/Y +illicitness/MS +illicit/YP +illimitableness/M +illimitable/P +Illinoisan/MS +Illinois/M +illiquid +illiteracy/MS +illiterateness/M +illiterate/PSY +Ill/M +illness/MS +illogicality/SM +illogicalness/M +illogical/PY +illogic/M +ill/PS +illume/DG +illuminate/XSDVNG +Illuminati +illuminatingly +illuminating/U +illumination/M +illumine/BGSD +illusionary +illusion/ES +illusionist/MS +illusion's +illusiveness/M +illusive/PY +illusoriness/M +illusory/P +illustrated/U +illustrate/VGNSDX +illustration/M +illustrative/Y +illustrator/SM +illustriousness/SM +illustrious/PY +illus/V +illy +Ilona/M +Ilsa/M +Ilse/M +Ilysa/M +Ilyse/M +Ilyssa/M +Ilyushin/M +I'm +image/DSGM +Imagen/M +imagery/MS +imaginableness +imaginable/U +imaginably/U +imaginariness/M +imaginary/PS +imagination/MS +imaginativeness/M +imaginative/UY +imagined/U +imaginer/M +imagine/RSDJBG +imagoes +imago/M +imam/MS +imbalance/SDM +imbecile/YMS +imbecilic +imbecility/MS +imbiber/M +imbibe/ZRSDG +imbrication/SM +Imbrium/M +imbroglio/MS +imbruing +imbue/GDS +Imelda/M +IMF +IMHO +imitable/I +imitate/SDVNGX +imitation/M +imitativeness/MS +imitative/YP +imitator/SM +immaculateness/SM +immaculate/YP +immanence/S +immanency/MS +immanent/Y +Immanuel/M +immateriality/MS +immaterialness/MS +immaterial/PY +immatureness/M +immature/SPY +immaturity/MS +immeasurableness/M +immeasurable/P +immeasurably +immediacy/MS +immediateness/SM +immediate/YP +immemorial/Y +immenseness/M +immense/PRTY +immensity/MS +immerse/RSDXNG +immersible +immersion/M +immigrant/SM +immigrate/NGSDX +immigration/M +imminence/SM +imminentness/M +imminent/YP +immobile +immobility/MS +immobilization/MS +immobilize/DSRG +immoderateness/M +immoderate/NYP +immoderation/M +immodest/Y +immodesty/SM +immolate/SDNGX +immolation/M +immorality/MS +immoral/Y +immortality/SM +immortalized/U +immortalize/GDS +immortal/SY +immovability/SM +immovableness/M +immovable/PS +immovably +immune/S +immunity/SM +immunization/MS +immunize/GSD +immunoassay/M +immunodeficiency/S +immunodeficient +immunologic +immunological/Y +immunologist/SM +immunology/MS +immure/GSD +immutability/MS +immutableness/M +immutable/P +immutably +IMNSHO +IMO +Imogene/M +Imogen/M +Imojean/M +impaction/SM +impactor/SM +impact/VGMRDS +impaired/U +impairer/M +impair/LGRDS +impairment/SM +impala/MS +impale/GLRSD +impalement/SM +impaler/M +impalpable +impalpably +impanel/DGS +impartation/M +impart/GDS +impartiality/SM +impartial/Y +impassableness/M +impassable/P +impassably +impasse/SXBMVN +impassibility/SM +impassible +impassibly +impassion/DG +impassioned/U +impassiveness/MS +impassive/YP +impassivity/MS +impasto/SM +impatience/SM +impatiens/M +impatient/Y +impeachable/U +impeach/DRSZGLB +impeacher/M +impeachment/MS +impeccability/SM +impeccable/S +impeccably +impecuniousness/MS +impecunious/PY +impedance/MS +impeded/U +impeder/M +impede/S +imped/GRD +impedimenta +impediment/SM +impelled +impeller/MS +impelling +impel/S +impend/DGS +impenetrability/MS +impenetrableness/M +impenetrable/P +impenetrably +impenitence/MS +impenitent/YS +imperativeness/M +imperative/PSY +imperceivable +imperceptibility/MS +imperceptible +imperceptibly +imperceptive +imperf +imperfectability +imperfection/MS +imperfectness/SM +imperfect/YSVP +imperialism/MS +imperialistic +imperialistically +imperialist/SM +imperial/YS +imperil/GSLD +imperilment/SM +imperiousness/MS +imperious/YP +imperishableness/M +imperishable/SP +imperishably +impermanence/MS +impermanent/Y +impermeability/SM +impermeableness/M +impermeable/P +impermeably +impermissible +impersonality/M +impersonalized +impersonal/Y +impersonate/XGNDS +impersonation/M +impersonator/SM +impertinence/SM +impertinent/YS +imperturbability/SM +imperturbable +imperturbably +imperviousness/M +impervious/PY +impetigo/MS +impetuosity/MS +impetuousness/MS +impetuous/YP +impetus/MS +impiety/MS +impinge/LS +impingement/MS +imping/GD +impiousness/SM +impious/PY +impishness/MS +impish/YP +implacability/SM +implacableness/M +implacable/P +implacably +implantation/SM +implant/BGSDR +implanter/M +implausibility/MS +implausible +implausibly +implementability +implementable/U +implementation/A +implementations +implementation's +implemented/AU +implementer/M +implementing/A +implementor/MS +implement/SMRDGZB +implicant/SM +implicate/VGSD +implication/M +implicative/PY +implicitness/SM +implicit/YP +implied/Y +implode/GSD +implore/GSD +imploring/Y +implosion/SM +implosive/S +imply/GNSDX +impoliteness/MS +impolite/YP +impoliticness/M +impolitic/PY +imponderableness/M +imponderable/PS +importance/SM +important/Y +importation/MS +importer/M +importing/A +import/SZGBRD +importunateness/M +importunate/PYGDS +importuner/M +importune/SRDZYG +importunity/SM +imposable +impose/ASDG +imposer/SM +imposingly +imposing/U +imposition/SM +impossibility/SM +impossibleness/M +impossible/PS +impossibly +imposter's +impostor/SM +impost/SGMD +imposture/SM +impotence/MS +impotency/S +impotent/SY +impound/GDS +impoundments +impoverisher/M +impoverish/LGDRS +impoverishment/SM +impracticableness/M +impracticable/P +impracticably +impracticality/SM +impracticalness/M +impractical/PY +imprecate/NGXSD +imprecation/M +impreciseness/MS +imprecise/PYXN +imprecision/M +impregnability/MS +impregnableness/M +impregnable/P +impregnably +impregnate/DSXNG +impregnation/M +impresario/SM +impress/DRSGVL +impressed/U +impresser/M +impressibility/MS +impressible +impressionability/SM +impressionableness/M +impressionable/P +impression/BMS +impressionism/SM +impressionistic +impressionist/MS +impressiveness/MS +impressive/YP +impressment/M +imprimatur/SM +imprinter/M +imprinting/M +imprint/SZDRGM +imprison/GLDS +imprisonment/MS +improbability/MS +improbableness/M +improbable/P +improbably +impromptu/S +improperness/M +improper/PY +impropitious +impropriety/SM +improved/U +improvement/MS +improver/M +improve/SRDGBL +improvidence/SM +improvident/Y +improvisational +improvisation/MS +improvisatory +improviser/M +improvise/RSDZG +imprudence/SM +imprudent/Y +imp/SGMDRY +impudence/MS +impudent/Y +impugner/M +impugn/SRDZGB +impulse/XMVGNSD +impulsion/M +impulsiveness/MS +impulsive/YP +impunity/SM +impureness/M +impure/RPTY +impurity/MS +imputation/SM +impute/SDBG +Imus/M +IN +inaction +inactive +inadequate/S +inadvertence/MS +inadvertent/Y +inalienability/MS +inalienably +inalterableness/M +inalterable/P +Ina/M +inamorata/MS +inane/SRPYT +inanimateness/S +inanimate/P +inanity/MS +inappeasable +inappropriate/P +inarticulate/P +in/AS +inasmuch +inaugural/S +inaugurate/XSDNG +inauguration/M +inauthenticity +inbound/G +inbred/S +inbreed/JG +incalculableness/M +incalculably +incandescence/SM +incandescent/YS +incant +incantation/SM +incantatory +incapable/S +incapacitate/GNSD +incapacitation/M +incarcerate/XGNDS +incarceration/M +incarnadine/GDS +incarnate/AGSDNX +incarnation/AM +Inca/SM +incendiary/S +incense/MGDS +incentive/ESM +incentively +incept/DGVS +inception/MS +inceptive/Y +inceptor/M +incessant/Y +incest/SM +incestuousness/MS +incestuous/PY +inch/GMDS +inchoate/DSG +Inchon/M +inchworm/MS +incidence/MS +incidental/YS +incident/SM +incinerate/XNGSD +incineration/M +incinerator/SM +incipience/SM +incipiency/M +incipient/Y +incise/SDVGNX +incision/M +incisiveness/MS +incisive/YP +incisor/MS +incitement/MS +inciter/M +incite/RZL +incl +inclination/ESM +incline/EGSD +incliner/M +inclining/M +include/GDS +inclusion/MS +inclusiveness/MS +inclusive/PY +Inc/M +incognito/S +incoherency/M +income/M +incommode/DG +incommunicado +incomparable +incompetent/MS +incomplete/P +inconceivability/MS +inconceivableness/M +inconceivable/P +incondensable +incongruousness/S +inconsiderableness/M +inconsiderable/P +inconsistence +inconsolableness/M +inconsolable/P +inconsolably +incontestability/SM +incontestably +incontrovertibly +inconvenience/DG +inconvertibility +inconvertible +incorporable +incorporated/UE +incorporate/GASDXN +incorrect/P +incorrigibility/MS +incorrigibleness/M +incorrigible/SP +incorrigibly +incorruptible/S +incorruptibly +increase/JB +increaser/M +increasing/Y +incredibleness/M +incredible/P +incremental/Y +incrementation +increment/DMGS +incriminate/XNGSD +incrimination/M +incriminatory +incrustation/SM +inc/T +incubate/XNGVDS +incubation/M +incubator/MS +incubus/MS +inculcate/SDGNX +inculcation/M +inculpate/SDG +incumbency/MS +incumbent/S +incunabula +incunabulum +incurable/S +incurious +incursion/SM +ind +indebtedness/SM +indebted/P +indefatigableness/M +indefatigable/P +indefatigably +indefeasible +indefeasibly +indefinableness/M +indefinable/PS +indefinite/S +indelible +indelibly +indemnification/M +indemnify/NXSDG +indemnity/SM +indentation/SM +indented/U +indenter/M +indention/SM +indent/R +indenture/DG +Independence/M +indescribableness/M +indescribable/PS +indescribably +indestructibleness/M +indestructible/P +indestructibly +indeterminably +indeterminacy/MS +indeterminism +indexation/S +indexer/M +index/MRDZGB +India/M +Indiana/M +Indianan/S +Indianapolis/M +Indianian/S +Indian/SM +indicant/MS +indicate/DSNGVX +indication/M +indicative/SY +indicator/MS +indices's +indicter/M +indictment/SM +indict/SGLBDR +indifference +indigence/MS +indigenousness/M +indigenous/YP +indigent/SY +indigestible/S +indignant/Y +indignation/MS +indigo/SM +Indira/M +indirect/PG +indiscreet/P +indiscriminateness/M +indiscriminate/PY +indispensability/MS +indispensableness/M +indispensable/SP +indispensably +indisputableness/M +indisputable/P +indissolubleness/M +indissoluble/P +indissolubly +indistinguishableness/M +indistinguishable/P +indite/SDG +indium/SM +individualism/MS +individualistic +individualistically +individualist/MS +individuality/MS +individualization/SM +individualize/DRSGZ +individualized/U +individualizer/M +individualizes/U +individualizing/Y +individual/YMS +individuate/DSXGN +individuation/M +indivisibleness/M +indivisible/SP +indivisibly +Ind/M +Indochina/M +Indochinese +indoctrinate/GNXSD +indoctrination/M +indoctrinator/SM +indolence/SM +indolent/Y +indomitableness/M +indomitable/P +indomitably +Indonesia/M +Indonesian/S +indoor +Indore/M +Indra/M +indubitableness/M +indubitable/P +indubitably +inducement/MS +inducer/M +induce/ZGLSRD +inducible +inductance/MS +inductee/SM +induct/GV +induction/SM +inductiveness/M +inductive/PY +inductor/MS +indulge/GDRS +indulgence/SDGM +indulgent/Y +indulger/M +Indus/M +industrialism/MS +industrialist/MS +industrialization/MS +industrialized/U +industrialize/SDG +industrial/SY +industriousness/SM +industrious/YP +industry/SM +Indy/SM +inebriate/NGSDX +inebriation/M +inedible +ineducable +ineffability/MS +ineffableness/M +ineffable/P +ineffably +inelastic +ineligibly +ineluctable +ineluctably +ineptitude/SM +ineptness/MS +inept/YP +inequivalent +inerrant +inertial/Y +inertia/SM +inertness/MS +inert/SPY +Ines +inescapably +Inesita/M +Inessa/M +inestimably +inevitability/MS +inevitableness/M +inevitable/P +inevitably +inexact/P +inexhaustibleness/M +inexhaustible/P +inexhaustibly +inexorability/M +inexorableness/M +inexorable/P +inexorably +inexpedience/M +inexplicableness/M +inexplicable/P +inexplicably +inexplicit +inexpressibility/M +inexpressibleness/M +inexpressible/PS +inextricably +Inez/M +infamous +infamy/SM +infancy/M +infanticide/MS +infantile +infant/MS +infantryman/M +infantrymen +infantry/SM +infarction/SM +infarct/SM +infatuate/XNGSD +infatuation/M +infauna +infected/U +infecter +infect/ESGDA +infection/EASM +infectiousness/MS +infectious/PY +infective +infer/B +inference/GMSR +inferential/Y +inferiority/MS +inferior/SMY +infernal/Y +inferno/MS +inferred +inferring +infertile +infestation/MS +infester/M +infest/GSDR +infidel/SM +infighting/M +infill/MG +infiltrate/V +infiltrator/MS +infinitesimal/SY +infinite/V +infinitival +infinitive/YMS +infinitude/MS +infinitum +infinity/SM +infirmary/SM +infirmity/SM +infix/M +inflammableness/M +inflammable/P +inflammation/MS +inflammatory +inflatable/MS +inflate/NGBDRSX +inflater/M +inflationary +inflation/ESM +inflect/GVDS +inflectional/Y +inflection/SM +inflexibleness/M +inflexible/P +inflexion/SM +inflict/DRSGV +inflicter/M +infliction/SM +inflow/M +influenced/U +influencer/M +influence/SRDGM +influent +influential/SY +influenza/MS +infomercial/S +Informatica/M +informatics +informational +information/ES +informativeness/S +informative/UY +informatory +informed/U +informer/M +info/SM +infotainment/S +infra +infrared/SM +infrasonic +infrastructural +infrastructure/MS +infrequence/S +infringe/LR +infringement/SM +infringer/M +infuriate/GNYSD +infuriating/Y +infuriation/M +infuser/M +infuse/RZ +infusibleness/M +infusible/P +inf/ZT +Ingaberg/M +Ingaborg/M +Inga/M +Ingamar/M +Ingar/M +Ingeberg/M +Ingeborg/M +Ingelbert/M +Ingemar/M +ingeniousness/MS +ingenious/YP +ingnue/S +ingenuity/SM +ingenuous/EY +ingenuousness/MS +Inger/M +Inge/RM +Ingersoll/M +ingest/DGVS +ingestible +ingestion/SM +Inglebert/M +inglenook/MS +Inglewood/M +Inglis/M +Ingmar/M +ingoing +ingot/SMDG +ingrained/Y +Ingra/M +Ingram/M +ingrate/M +ingratiate/DSGNX +ingratiating/Y +ingratiation/M +ingredient/SM +Ingres/M +ingression/M +ingress/MS +Ingrid/M +Ingrim/M +ingrown/P +inguinal +Ingunna/M +inhabitable/U +inhabitance +inhabited/U +inhabiter/M +inhabit/R +inhalant/S +inhalation/SM +inhalator/SM +inhale/Z +inhere/DG +inherent/Y +inheritableness/M +inheritable/P +inheritance/EMS +inherit/BDSG +inherited/E +inheriting/E +inheritor/S +inheritress/MS +inheritrix/MS +inherits/E +inhibit/DVGS +inhibited/U +inhibiter's +inhibition/MS +inhibitor/MS +inhibitory +inhomogeneous +inhospitableness/M +inhospitable/P +inhospitality +Inigo/M +inimical/Y +inimitableness/M +inimitable/P +inimitably +inion +iniquitousness/M +iniquitous/PY +iniquity/MS +initialer/M +initial/GSPRDY +initialization/A +initializations +initialization's +initialize/ASDG +initialized/U +initializer/S +initiates +initiate/UD +initiating +initiation/SM +initiative/SM +initiator/MS +initiatory +injectable/U +inject/GVSDB +injection/MS +injector/SM +injunctive +injured/U +injurer/M +injure/SRDZG +injuriousness/M +injurious/YP +inkblot/SM +inker/M +inkiness/MS +inkling/SM +inkstand/SM +inkwell/SM +inky/TP +ink/ZDRJ +inland +inlander/M +inlay/RG +inletting +inly/G +inmost +Inna/M +innards +innateness/SM +innate/YP +innermost/S +innersole/S +innerspring +innervate/GNSDX +innervation/M +inner/Y +inning/M +Innis/M +innkeeper/MS +innocence/SM +Innocent/M +innocent/SYRT +innocuousness/MS +innocuous/PY +innovate/SDVNGX +innovation/M +innovative/P +innovator/MS +innovatory +Innsbruck/M +innuendo/MDGS +innumerability/M +innumerableness/M +innumerable/P +innumerably +innumerate +inn/ZGDRSJ +inoculate/ASDG +inoculation/MS +inoculative +inoffensive/P +Inonu/M +inopportuneness/M +inopportune/P +inordinateness/M +inordinate/PY +inorganic +inpatient +In/PM +input/MRDG +inquirer/M +inquire/ZR +inquiring/Y +inquiry/MS +inquisitional +inquisition/MS +Inquisition/MS +inquisitiveness/MS +inquisitive/YP +inquisitorial/Y +inquisitor/MS +INRI +inrush/M +ins +INS +insalubrious +insanitary +insatiability/MS +insatiableness/M +insatiable/P +insatiably +inscribe/Z +inscription/SM +inscrutability/SM +inscrutableness/SM +inscrutable/P +inscrutably +inseam +insecticidal +insecticide/MS +insectivore/SM +insectivorous +insecureness/M +insecure/P +inseminate/NGXSD +insemination/M +insensateness/M +insensate/P +insensible/P +insentient +inseparable/S +insert/ADSG +inserter/M +insertion/AMS +insetting +inshore +insider/M +inside/Z +insidiousness/MS +insidious/YP +insightful/Y +insigne's +insignia/SM +insignificant +insinuate/VNGXSD +insinuating/Y +insinuation/M +insinuator/SM +insipidity/MS +insipid/Y +insistence/SM +insistent/Y +insisting/Y +insist/SGD +insociable +insofar +insole/M +insolence/SM +insolent/YS +insolubleness/M +insoluble/P +insolubly +insomniac/S +insomnia/MS +insomuch +insouciance/SM +insouciant/Y +inspect/AGSD +inspection/SM +inspective +inspectorate/MS +inspector/SM +inspirational/Y +inspiration/MS +inspired/U +inspire/R +inspirer/M +inspiring/U +inspirit/DG +Inst +installable +install/ADRSG +installation/SM +installer/MS +installment/MS +instance/GD +instantaneousness/M +instantaneous/PY +instantiated/U +instantiate/SDXNG +instantiation/M +instant/SRYMP +instate/AGSD +inst/B +instead +instigate/XSDVGN +instigation/M +instigator/SM +instillation/SM +instinctive/Y +instinctual +instinct/VMS +instituter/M +institutes/M +institute/ZXVGNSRD +institutionalism/M +institutionalist/M +institutionalization/SM +institutionalize/GDS +institutional/Y +institution/AM +institutor's +instr +instruct/DSVG +instructed/U +instructional +instruction/MS +instructiveness/M +instructive/PY +instructor/MS +instrumentalist/MS +instrumentality/SM +instrumental/SY +instrumentation/SM +instrument/GMDS +insubordinate +insubstantial +insufferable +insufferably +insularity/MS +insular/YS +insulate/DSXNG +insulated/U +insulation/M +insulator/MS +insulin/MS +insult/DRSG +insulter/M +insulting/Y +insuperable +insuperably +insupportableness/M +insupportable/P +insurance/MS +insurance's/A +insure/BZGS +insured/S +insurer/M +insurgence/SM +insurgency/MS +insurgent/MS +insurmountably +insurrectionist/SM +insurrection/SM +intactness/M +intact/P +intaglio/GMDS +intake/M +intangible/M +integer/MS +integrability/M +integrable +integral/SYM +integrand/MS +integrate/AGNXEDS +integration/EMA +integrative/E +integrator/MS +integrity/SM +integument/SM +intellective/Y +intellect/MVS +intellectualism/MS +intellectuality/M +intellectualize/GSD +intellectualness/M +intellectual/YPS +intelligence/MSR +intelligencer/M +intelligentsia/MS +intelligent/UY +intelligibilities +intelligibility/UM +intelligibleness/MU +intelligible/PU +intelligibly/U +Intel/M +Intelsat/M +intemperate/P +intendant/MS +intendedness/M +intended/SYP +intender/M +intensification/M +intensifier/M +intensify/GXNZRSD +intensional/Y +intensiveness/MS +intensive/PSY +intentionality/M +intentional/UY +intention/SDM +intentness/SM +intent/YP +interaction/MS +interactive/PY +interactivity +interact/VGDS +interaxial +interbank +interbred +interbreed/GS +intercalate/GNVDS +intercalation/M +intercase +intercaste +interceder/M +intercede/SRDG +intercensal +intercept/DGS +interception/MS +interceptor/MS +intercession/MS +intercessor/SM +intercessory +interchangeability/M +interchangeableness/M +interchangeable/P +interchangeably +interchange/DSRGJ +interchanger/M +intercity +interclass +intercohort +intercollegiate +intercommunicate/SDXNG +intercommunication/M +intercom/SM +interconnectedness/M +interconnected/P +interconnect/GDS +interconnection/SM +interconnectivity +intercontinental +interconversion/M +intercorrelated +intercourse/SM +Interdata/M +interdenominational +interdepartmental/Y +interdependence/MS +interdependency/SM +interdependent/Y +interdiction/MS +interdict/MDVGS +interdisciplinary +interested/UYE +interest/GEMDS +interestingly/U +interestingness/M +interesting/YP +inter/ESTL +interface/SRDGM +interfacing/M +interfaith +interference/MS +interferer/M +interfere/SRDG +interfering/Y +interferometer/SM +interferometric +interferometry/M +interferon/MS +interfile/GSD +intergalactic +intergenerational +intergeneration/M +interglacial +intergovernmental +intergroup +interim/S +interindex +interindustry +interior/SMY +interj +interject/GDS +interjectional +interjection/MS +interlace/GSD +interlard/SGD +interlayer/G +interleave/SDG +interleukin/S +interlibrary +interlinear/S +interline/JGSD +interlingual +interlingua/M +interlining/M +interlink/GDS +interlisp/M +interlobular +interlocker/M +interlock/RDSG +interlocutor/MS +interlocutory +interlope/GZSRD +interloper/M +interlude/MSDG +intermarriage/MS +intermarry/GDS +intermediary/MS +intermediateness/M +intermediate/YMNGSDP +intermediation/M +interment/SME +intermeshed +intermetrics +intermezzi +intermezzo/SM +interminably +intermingle/DSG +intermission/MS +intermittent/Y +intermix/GSRD +intermodule +intermolecular/Y +internalization/SM +internalize/GDS +internal/SY +Internationale/M +internationalism/SM +internationalist/SM +internationality/M +internationalization/MS +internationalize/DSG +international/YS +internecine +internee/SM +interne's +Internet/M +INTERNET/M +internetwork +internist/SM +intern/L +internment/SM +internship/MS +internuclear +interocular +interoffice +interoperability +interpenetrates +interpersonal/Y +interplanetary +interplay/GSMD +interpol +interpolate/XGNVBDS +interpolation/M +Interpol/M +interpose/GSRD +interposer/M +interposition/MS +interpretable/U +interpret/AGSD +interpretation/MSA +interpretative/Y +interpreted/U +interpreter/SM +interpretive/Y +interpretor/S +interprocess +interprocessor +interquartile +interracial +interred/E +interregional +interregnum/MS +interrelatedness/M +interrelated/PY +interrelate/GNDSX +interrelation/M +interrelationship/SM +interring/E +interrogate/DSXGNV +interrogation/M +interrogative/SY +interrogator/SM +interrogatory/S +interrupted/U +interrupter/M +interruptibility +interruptible +interruption/MS +interrupt/VGZRDS +interscholastic +intersect/GDS +intersection/MS +intersession/MS +interspecies +intersperse/GNDSX +interspersion/M +interstage +interstate/S +interstellar +interstice/SM +interstitial/SY +intersurvey +intertask +intertwine/GSD +interurban/S +interval/MS +intervene/GSRD +intervener/M +intervenor/M +interventionism/MS +interventionist/S +intervention/MS +interview/AMD +interviewed/U +interviewee/SM +interviewer/SM +interviewing +interviews +intervocalic +interweave/GS +interwove +interwoven +intestacy/SM +intestinal/Y +intestine/SM +inti +intifada +intimacy/SM +intimal +intimateness/M +intimater/M +intimate/XYNGPDRS +intimation/M +intimidate/SDXNG +intimidating/Y +intimidation/M +into +intolerableness/M +intolerable/P +intolerant/PS +intonate/NX +intonation/M +intoxicant/MS +intoxicate/DSGNX +intoxicated/Y +intoxication/M +intra +intracellular +intracity +intraclass +intracohort +intractability/M +intractableness/M +intractable/P +intradepartmental +intrafamily +intragenerational +intraindustry +intraline +intrametropolitan +intramural/Y +intramuscular/Y +intranasal +intransigence/MS +intransigent/YS +intransitive/S +intraoffice +intraprocess +intrapulmonary +intraregional +intrasectoral +intrastate +intratissue +intrauterine +intravenous/YS +intrepidity/SM +intrepidness/M +intrepid/YP +intricacy/SM +intricateness/M +intricate/PY +intrigue/DRSZG +intriguer/M +intriguing/Y +intrinsically +intrinsic/S +introduce/ADSG +introducer/M +introduction/ASM +introductory +introit/SM +introject/SD +intro/S +introspection/MS +introspectiveness/M +introspective/YP +introspect/SGVD +introversion/SM +introvert/SMDG +intruder/M +intrude/ZGDSR +intrusion/SM +intrusiveness/MS +intrusive/SYP +intubate/NGDS +intubation/M +intuit/GVDSB +intuitionist/M +intuitiveness/MS +intuitive/YP +int/ZR +Inuit/MS +inundate/SXNG +inundation/M +inure/GDS +invader/M +invade/ZSRDG +invalid/GSDM +invalidism/MS +invariable/P +invariant/M +invasion/SM +invasive/P +invectiveness/M +invective/PSMY +inveigh/DRG +inveigher/M +inveighs +inveigle/DRSZG +inveigler/M +invent/ADGS +invented/U +invention/ASM +inventiveness/MS +inventive/YP +inventor/MS +inventory/SDMG +Inverness/M +inverse/YV +inverter/M +invertible +invert/ZSGDR +invest/ADSLG +investigate/XDSNGV +investigation/MA +investigator/MS +investigatory +investiture/SM +investment/ESA +investment's/A +investor/SM +inveteracy/MS +inveterate/Y +inviability +invidiousness/MS +invidious/YP +invigilate/GD +invigilator/SM +invigorate/ANGSD +invigorating/Y +invigoration/AM +invigorations +invincibility/SM +invincibleness/M +invincible/P +invincibly +inviolability/MS +inviolably +inviolateness/M +inviolate/YP +inviscid +invisibleness/M +invisible/S +invitational/S +invitation/MS +invited/U +invitee/S +inviter/M +invite/SRDG +inviting/Y +invocable +invocate +invoked/A +invoke/GSRDBZ +invoker/M +invokes/A +involuntariness/S +involuntary/P +involute/XYN +involution/M +involutorial +involvedly +involved/U +involve/GDSRL +involvement/SM +involver/M +invulnerability/M +invulnerableness/M +inwardness/M +inward/PY +ioctl +iodate/MGND +iodation/M +iodide/MS +iodinate/DNG +iodine/MS +iodize/GSD +Iolande/M +Iolanthe/M +Io/M +Iona/M +Ionesco/M +Ionian/M +ionic/S +Ionic/S +ionization's +ionization/SU +ionized/UC +ionize/GNSRDJXZ +ionizer's +ionizer/US +ionizes/U +ionizing/U +ionosphere/SM +ionospheric +ion's/I +ion/SMU +Iorgo/MS +Iormina/M +Iosep/M +iota/SM +IOU +Iowan/S +Iowa/SM +IPA +ipecac/MS +Iphigenia/M +ipso +Ipswich/M +IQ +Iqbal/M +Iquitos/M +Ira/M +Iranian/MS +Iran/M +Iraqi/SM +Iraq/M +IRA/S +irascibility/SM +irascible +irascibly +irateness/S +irate/RPYT +ireful +Ireland/M +ire/MGDS +Irena/M +Irene/M +irenic/S +iridescence/SM +iridescent/Y +irides/M +iridium/MS +irids +Irina/M +Iris +iris/GDSM +Irishman/M +Irishmen +Irish/R +Irishwoman/M +Irishwomen +Irita/M +irk/GDS +irksomeness/SM +irksome/YP +Irkutsk/M +Ir/M +Irma/M +ironclad/S +iron/DRMPSGJ +ironer/M +ironic +ironicalness/M +ironical/YP +ironing/M +ironmonger/M +ironmongery/M +ironside/MS +ironstone/MS +ironware/SM +ironwood/SM +ironworker/M +ironwork/MRS +irony/SM +Iroquoian/MS +Iroquois/M +irradiate/XSDVNG +irradiation/M +irrationality/MS +irrationalness/M +irrational/YSP +Irrawaddy/M +irreclaimable +irreconcilability/MS +irreconcilableness/M +irreconcilable/PS +irreconcilably +irrecoverableness/M +irrecoverable/P +irrecoverably +irredeemable/S +irredeemably +irredentism/M +irredentist/M +irreducibility/M +irreducible +irreducibly +irreflexive +irrefutable +irrefutably +irregardless +irregularity/SM +irregular/YS +irrelevance/SM +irrelevancy/MS +irrelevant/Y +irreligious +irremediableness/M +irremediable/P +irremediably +irremovable +irreparableness/M +irreparable/P +irreparably +irreplaceable/P +irrepressible +irrepressibly +irreproachableness/M +irreproachable/P +irreproachably +irreproducibility +irreproducible +irresistibility/M +irresistibleness/M +irresistible/P +irresistibly +irresoluteness/SM +irresolute/PNXY +irresolution/M +irresolvable +irrespective/Y +irresponsibility/SM +irresponsibleness/M +irresponsible/PS +irresponsibly +irretrievable +irretrievably +irreverence/MS +irreverent/Y +irreversible +irreversibly +irrevocableness/M +irrevocable/P +irrevocably +irrigable +irrigate/DSXNG +irrigation/M +irritability/MS +irritableness/M +irritable/P +irritably +irritant/S +irritate/DSXNGV +irritated/Y +irritating/Y +irritation/M +irrupt/GVSD +irruption/SM +IRS +Irtish/M +Irvine/M +Irving/M +Irvin/M +Irv/MG +Irwin/M +Irwinn/M +is +i's +Isaac/SM +Isaak/M +Isabelita/M +Isabella/M +Isabelle/M +Isabel/M +Isacco/M +Isac/M +Isadora/M +Isadore/M +Isador/M +Isahella/M +Isaiah/M +Isak/M +Isa/M +ISBN +Iscariot/M +Iseabal/M +Isfahan/M +Isherwood/M +Ishim/M +Ishmael/M +Ishtar/M +Isiahi/M +Isiah/M +Isidora/M +Isidore/M +Isidor/M +Isidoro/M +Isidro/M +isinglass/MS +Isis/M +Islamabad/M +Islamic/S +Islam/SM +islander/M +island/GZMRDS +Islandia/M +isle/MS +islet/SM +isl/GD +Ismael/M +ism/MCS +isn't +ISO +isobaric +isobar/MS +Isobel/M +isochronal/Y +isochronous/Y +isocline/M +isocyanate/M +isodine +isolate/SDXNG +isolationism/SM +isolationistic +isolationist/SM +isolation/M +isolator/MS +Isolde/M +isomeric +isomerism/SM +isomer/SM +isometrically +isometric/S +isometrics/M +isomorphic +isomorphically +isomorphism/MS +isomorph/M +isoperimetrical +isopleth/M +isopleths +isosceles +isostatic +isothermal/Y +isotherm/MS +isotonic +isotope/SM +isotopic +isotropic +isotropically +isotropy/M +Ispahan's +ispell/M +Ispell/M +Israeli/MS +Israelite/SM +Israel/MS +Issac/M +Issiah/M +Issie/M +Issi/M +issuable +issuance/MS +issuant +issued/A +issue/GMZDSR +issuer/AMS +issues/A +issuing/A +Issy/M +Istanbul/M +isthmian/S +isthmus/SM +Istvan/M +Isuzu/M +It +IT +Itaipu/M +ital +Italianate/GSD +Italian/MS +italicization/MS +italicized/U +italicize/GSD +italic/S +Ital/M +Italy/M +Itasca/M +itch/GMDS +itchiness/MS +Itch/M +itchy/RTP +ITcorp/M +ITCorp/M +it'd +Itel/M +itemization/SM +itemized/U +itemize/GZDRS +itemizer/M +itemizes/A +item/MDSG +iterate/ASDXVGN +iteration/M +iterative/YA +iterator/MS +Ithaca/M +Ithacan +itinerant/SY +itinerary/MS +it'll +it/MUS +Ito/M +its +itself +ITT +IUD/S +IV +Iva/M +Ivanhoe/M +Ivan/M +Ivar/M +I've +Ive/MRS +Iver/M +Ivette/M +Ivett/M +Ivie/M +iv/M +Ivonne/M +Ivor/M +Ivory/M +ivory/SM +IVs +Ivy/M +ivy/MDS +ix +Izaak/M +Izabel/M +Izak/M +Izanagi/M +Izanami/M +Izhevsk/M +Izmir/M +Izvestia/M +Izzy/M +jabbed +jabberer/M +jabber/JRDSZG +jabbing +Jabez/M +Jablonsky/M +jabot/MS +jab/SM +jacaranda/MS +Jacenta/M +Jacinda/M +Jacinta/M +Jacintha/M +Jacinthe/M +jackal/SM +jackass/SM +jackboot/DMS +jackdaw/SM +Jackelyn/M +jacketed/U +jacket/GSMD +jack/GDRMS +jackhammer/MDGS +Jackie/M +Jacki/M +jackknife/MGSD +jackknives +Jacklin/M +Jacklyn/M +Jack/M +Jackman/M +jackpot/MS +Jackqueline/M +Jackquelin/M +jackrabbit/DGS +Jacksonian +Jackson/SM +Jacksonville/M +jackstraw/MS +Jacky/M +Jaclin/M +Jaclyn/M +Jacobean +Jacobian/M +Jacobi/M +Jacobin/M +Jacobite/M +Jacobo/M +Jacobsen/M +Jacob/SM +Jacobs/N +Jacobson/M +Jacobus +Jacoby/M +jacquard/MS +Jacquard/SM +Jacqueline/M +Jacquelin/M +Jacquelyn/M +Jacquelynn/M +Jacquenetta/M +Jacquenette/M +Jacques/M +Jacquetta/M +Jacquette/M +Jacquie/M +Jacqui/M +jacuzzi +Jacuzzi/S +Jacynth/M +Jada/M +jadedness/SM +jaded/PY +jadeite/SM +Jade/M +jade/MGDS +Jaeger/M +Jae/M +jaggedness/SM +jagged/RYTP +Jagger/M +jaggers +jagging +jag/S +jaguar/MS +jailbird/MS +jailbreak/SM +jailer/M +jail/GZSMDR +Jaime/M +Jaimie/M +Jaine/M +Jainism/M +Jain/M +Jaipur/M +Jakarta/M +Jake/MS +Jakie/M +Jakob/M +jalapeo/S +jalopy/SM +jalousie/MS +Jamaal/M +Jamaica/M +Jamaican/S +Jamal/M +Jamar/M +jambalaya/MS +jamb/DMGS +jamboree/MS +Jamel/M +Jame/MS +Jameson/M +Jamestown/M +Jamesy/M +Jamey/M +Jamie/M +Jamill/M +Jamil/M +Jami/M +Jamima/M +Jamison/M +Jammal/M +jammed/U +Jammie/M +jamming/U +jam/SM +Janacek/M +Jana/M +Janaya/M +Janaye/M +Jandy/M +Janean/M +Janeczka/M +Janeen/M +Janeiro/M +Janek/M +Janela/M +Janella/M +Janelle/M +Janell/M +Janel/M +Jane/M +Janene/M +Janenna/M +Janessa/M +Janesville/M +Janeta/M +Janet/M +Janetta/M +Janette/M +Janeva/M +Janey/M +jangler/M +jangle/RSDGZ +jangly +Jania/M +Janice/M +Janie/M +Janifer/M +Janina/M +Janine/M +Janis/M +janissary/MS +Janith/M +janitorial +janitor/SM +Janka/M +Jan/M +Janna/M +Jannelle/M +Jannel/M +Jannie/M +Janos/M +Janot/M +Jansenist/M +Jansen/M +January/MS +Janus/M +Jany/M +Japanese/SM +Japan/M +japanned +japanner +japanning +japan/SM +jape/DSMG +Japura/M +Jaquelin/M +Jaquelyn/M +Jaquenetta/M +Jaquenette/M +Jaquith/M +Jarad/M +jardinire/MS +Jard/M +Jareb/M +Jared/M +jarful/S +jargon/SGDM +Jarib/M +Jarid/M +Jarlsberg +jar/MS +Jarrad/M +jarred +Jarred/M +Jarret/M +Jarrett/M +Jarrid/M +jarring/SY +Jarrod/M +Jarvis/M +Jase/M +Jasen/M +Jasmina/M +Jasmine/M +jasmine/MS +Jasmin/M +Jason/M +Jasper/M +jasper/MS +Jastrow/M +Jasun/M +jato/SM +jaundice/DSMG +jaundiced/U +jauntily +jauntiness/MS +jaunt/MDGS +jaunty/SRTP +Javanese +Java/SM +javelin/SDMG +Javier/M +jawbone/SDMG +jawbreaker/SM +jawline +jaw/SMDG +Jaxartes/M +Jayapura/M +jaybird/SM +Jaycee/SM +Jaye/M +Jay/M +Jaymee/M +Jayme/M +Jaymie/M +Jaynell/M +Jayne/M +jay/SM +Jayson/M +jaywalker/M +jaywalk/JSRDZG +Jazmin/M +jazziness/M +jazzmen +jazz/MGDS +jazzy/PTR +JCS +jct +JD +Jdavie/M +jealousness/M +jealous/PY +jealousy/MS +Jeana/M +Jeanelle/M +Jeane/M +Jeanette/M +Jeanie/M +Jeanine/M +Jean/M +jean/MS +Jeanna/M +Jeanne/M +Jeannette/M +Jeannie/M +Jeannine/M +Jecho/M +Jedd/M +Jeddy/M +Jedediah/M +Jedidiah/M +Jedi/M +Jed/M +jeep/GZSMD +Jeep/S +jeerer/M +jeering/Y +jeer/SJDRMG +Jeeves/M +jeez +Jefferey/M +Jeffersonian/S +Jefferson/M +Jeffery/M +Jeffie/M +Jeff/M +Jeffrey/SM +Jeffry/M +Jeffy/M +jehad's +Jehanna/M +Jehoshaphat/M +Jehovah/M +Jehu/M +jejuna +jejuneness/M +jejune/PY +jejunum/M +Jekyll/M +Jelene/M +jell/GSD +Jello/M +jello's +jellybean/SM +jellyfish/MS +jellying/M +jellylike +jellyroll/S +jelly/SDMG +Jemie/M +Jemimah/M +Jemima/M +Jemmie/M +jemmy/M +Jemmy/M +Jena/M +Jenda/M +Jenelle/M +Jenica/M +Jeniece/M +Jenifer/M +Jeniffer/M +Jenilee/M +Jeni/M +Jenine/M +Jenkins/M +Jen/M +Jenna/M +Jennee/M +Jenner/M +jennet/SM +Jennette/M +Jennica/M +Jennie/M +Jennifer/M +Jennilee/M +Jenni/M +Jennine/M +Jennings/M +Jenn/RMJ +Jenny/M +jenny/SM +Jeno/M +Jensen/M +Jens/N +jeopard +jeopardize/GSD +jeopardy/MS +Jephthah/M +Jerad/M +Jerald/M +Jeralee/M +Jeramey/M +Jeramie/M +Jere/M +Jereme/M +jeremiad/SM +Jeremiah/M +Jeremiahs +Jeremias/M +Jeremie/M +Jeremy/M +Jericho/M +Jeri/M +jerker/M +jerk/GSDRJ +jerkily +jerkiness/SM +jerkin/SM +jerkwater/S +jerky/RSTP +Jermaine/M +Jermain/M +Jermayne/M +Jeroboam/M +Jerold/M +Jerome/M +Jeromy/M +Jerrie/M +Jerrilee/M +Jerrilyn/M +Jerri/M +Jerrine/M +Jerrod/M +Jerrold/M +Jerrome/M +jerrybuilt +Jerrylee/M +jerry/M +Jerry/M +jersey/MS +Jersey/MS +Jerusalem/M +Jervis/M +Jes +Jessalin/M +Jessalyn/M +Jessa/M +Jessamine/M +jessamine's +Jessamyn/M +Jessee/M +Jesselyn/M +Jesse/M +Jessey/M +Jessica/M +Jessie/M +Jessika/M +Jessi/M +jess/M +Jess/M +Jessy/M +jest/DRSGZM +jester/M +jesting/Y +Jesuit/SM +Jesus +Jeth/M +Jethro/M +jetliner/MS +jet/MS +jetport/SM +jetsam/MS +jetted/M +jetting/M +jettison/DSG +jetty/RSDGMT +jeweler/M +jewelery/S +jewel/GZMRDS +Jewelled/M +Jewelle/M +jewellery's +Jewell/MD +Jewel/M +jewelry/MS +Jewess/SM +Jewishness/MS +Jewish/P +Jew/MS +Jewry/MS +Jezebel/MS +j/F +JFK/M +jg/M +jibbed +jibbing +jibe/S +jib/MDSG +Jidda/M +jiff/S +jiffy/SM +jigged +jigger/SDMG +jigging/M +jiggle/SDG +jiggly/TR +jig/MS +jigsaw/GSDM +jihad/SM +Jilin +Jillana/M +Jillane/M +Jillayne/M +Jilleen/M +Jillene/M +Jillian/M +Jillie/M +Jilli/M +Jill/M +Jilly/M +jilt/DRGS +jilter/M +Jimenez/M +Jim/M +Jimmie/M +jimmy/GSDM +Jimmy/M +jimsonweed/S +Jinan +jingler/M +jingle/RSDG +jingly/TR +jingoism/SM +jingoistic +jingoist/SM +jingo/M +Jinnah/M +jinni's +jinn/MS +Jinny/M +jinrikisha/SM +jinx/GMDS +jitney/MS +jitterbugged +jitterbugger +jitterbugging +jitterbug/SM +jitter/S +jittery/TR +jiujitsu's +Jivaro/M +jive/MGDS +Joachim/M +Joana/M +Joane/M +Joanie/M +Joan/M +Joanna/M +Joanne/SM +Joann/M +Joaquin/M +jobbed +jobber/MS +jobbery/M +jobbing/M +Jobey/M +jobholder/SM +Jobie/M +Jobi/M +Jobina/M +joblessness/MS +jobless/P +Jobrel/M +job/SM +Job/SM +Jobye/M +Joby/M +Jobyna/M +Jocasta/M +Joceline/M +Jocelin/M +Jocelyne/M +Jocelyn/M +jockey/SGMD +jock/GDMS +Jock/M +Jocko/M +jockstrap/MS +jocoseness/MS +jocose/YP +jocosity/SM +jocularity/SM +jocular/Y +jocundity/SM +jocund/Y +Jodee/M +jodhpurs +Jodie/M +Jodi/M +Jody/M +Joeann/M +Joela/M +Joelie/M +Joella/M +Joelle/M +Joellen/M +Joell/MN +Joelly/M +Joellyn/M +Joel/MY +Joelynn/M +Joe/M +Joesph/M +Joete/M +joey/M +Joey/M +jogged +jogger/SM +jogging/S +joggler/M +joggle/SRDG +Jogjakarta/M +jog/S +Johan/M +Johannah/M +Johanna/M +Johannes +Johannesburg/M +Johann/M +Johansen/M +Johanson/M +Johna/MH +Johnathan/M +Johnath/M +Johnathon/M +Johnette/M +Johnie/M +Johnna/M +Johnnie/M +johnnycake/SM +Johnny/M +johnny/SM +Johnsen/M +john/SM +John/SM +Johns/N +Johnson/M +Johnston/M +Johnstown/M +Johny/M +Joice/M +join/ADGFS +joined/U +joiner/FSM +joinery/MS +jointed/EYP +jointedness/ME +joint/EGDYPS +jointer/M +jointly/F +joint's +jointures +joist/GMDS +Jojo/M +joke/MZDSRG +joker/M +jokey +jokier +jokiest +jokily +joking/Y +Jolee/M +Joleen/M +Jolene/M +Joletta/M +Jolie/M +Joliet's +Joli/M +Joline/M +Jolla/M +jollification/MS +jollily +jolliness/SM +jollity/MS +jolly/TSRDGP +Jolson/M +jolt/DRGZS +jolter/M +Joly/M +Jolyn/M +Jolynn/M +Jo/MY +Jonah/M +Jonahs +Jonas +Jonathan/M +Jonathon/M +Jonell/M +Jone/MS +Jones/S +Jonie/M +Joni/MS +Jon/M +jonquil/MS +Jonson/M +Joplin/M +Jordain/M +Jordana/M +Jordanian/S +Jordan/M +Jordanna/M +Jordon/M +Jorey/M +Jorgan/M +Jorge/M +Jorgensen/M +Jorgenson/M +Jorie/M +Jori/M +Jorrie/M +Jorry/M +Jory/M +Joscelin/M +Josee/M +Josefa/M +Josefina/M +Josef/M +Joseito/M +Jose/M +Josepha/M +Josephina/M +Josephine/M +Joseph/M +Josephs +Josephson/M +Josephus/M +Josey/M +josh/DSRGZ +josher/M +Joshia/M +Josh/M +Joshuah/M +Joshua/M +Josiah/M +Josias/M +Josie/M +Josi/M +Josselyn/M +joss/M +jostle/SDG +Josue/M +Josy/M +jot/S +jotted +jotter/SM +jotting/SM +Joule/M +joule/SM +jounce/SDG +jouncy/RT +Jourdain/M +Jourdan/M +journalese/MS +journal/GSDM +journalism/SM +journalistic +journalist/SM +journalize/DRSGZ +journalized/U +journalizer/M +journey/DRMZSGJ +journeyer/M +journeyman/M +journeymen +jouster/M +joust/ZSMRDG +Jovanovich/M +Jove/M +joviality/SM +jovial/Y +Jovian +jowl/SMD +jowly/TR +Joya/M +Joyan/M +Joyann/M +Joycean +Joycelin/M +Joyce/M +Joye/M +joyfuller +joyfullest +joyfulness/SM +joyful/PY +joylessness/MS +joyless/PY +Joy/M +joy/MDSG +Joyner/M +joyousness/MS +joyous/YP +joyridden +joyride/SRZMGJ +joyrode +joystick/S +Jozef/M +JP +Jpn +Jr/M +j's +J's +Jsandye/M +Juana/M +Juanita/M +Juan/M +Juarez +Jubal/M +jubilant/Y +jubilate/XNGDS +jubilation/M +jubilee/SM +Judah/M +Judaic +Judaical +Judaism/SM +Judas/S +juddered +juddering +Judd/M +Judea/M +Jude/M +judge/AGDS +judger/M +judge's +judgeship/SM +judgmental/Y +judgment/MS +judicable +judicatory/S +judicature/MS +judicial/Y +judiciary/S +judicious/IYP +judiciousness/SMI +Judie/M +Judi/MH +Juditha/M +Judith/M +Jud/M +judo/MS +Judon/M +Judson/M +Judye/M +Judy/M +jugate/F +jugful/SM +jugged +Juggernaut/M +juggernaut/SM +jugging +juggler/M +juggle/RSDGZ +jugglery/MS +jug/MS +jugular/S +juice/GMZDSR +juicer/M +juicily +juiciness/MS +juicy/TRP +Juieta/M +jujitsu/MS +jujube/SM +juju/M +jujutsu's +jukebox/SM +juke/GS +Julee/M +Jule/MS +julep/SM +Julia/M +Juliana/M +Juliane/M +Julian/M +Julianna/M +Julianne/M +Juliann/M +Julie/M +julienne/GSD +Julienne/M +Julieta/M +Juliet/M +Julietta/M +Juliette/M +Juli/M +Julina/M +Juline/M +Julio/M +Julissa/M +Julita/M +Julius/M +Jul/M +Julys +July/SM +jumble/GSD +jumbo/MS +jumper/M +jump/GZDRS +jumpily +jumpiness/MS +jumpsuit/S +jumpy/PTR +jun +junco/MS +junction/IMESF +juncture/SFM +Juneau/M +June/MS +Junette/M +Jungfrau/M +Jungian +jungle/SDM +Jung/M +Junia/M +Junie/M +Junina/M +juniority/M +junior/MS +Junior/S +juniper/SM +junkerdom +Junker/SM +junketeer/SGDM +junket/SMDG +junk/GZDRMS +junkie/RSMT +junkyard/MS +Jun/M +Juno/M +junta/MS +Jupiter/M +Jurassic +juridic +juridical/Y +juried +jurisdictional/Y +jurisdiction/SM +jurisprudence/SM +jurisprudent +jurisprudential/Y +juristic +jurist/MS +juror/MS +Jurua/M +jury/IMS +jurying +juryman/M +jurymen +jurywoman/M +jurywomen +justed +Justen/M +juster/M +justest +Justice/M +justice/MIS +justiciable +justifiability/M +justifiable/U +justifiably/U +justification/M +justified/UA +justifier/M +justify/GDRSXZN +Justina/M +Justine/M +justing +Justinian/M +Justin/M +Justinn/M +Justino/M +Justis/M +justness/MS +justness's/U +justs +just/UPY +Justus/M +jute/SM +Jutish +Jutland/M +jut/S +jutted +jutting +Juvenal/M +juvenile/SM +juxtapose/SDG +juxtaposition/SM +JV +J/X +Jyoti/M +Kaaba/M +kabob/SM +kaboom +Kabuki +kabuki/SM +Kabul/M +Kacey/M +Kacie/M +Kacy/M +Kaddish/M +kaddish/S +Kaela/M +kaffeeklatch +kaffeeklatsch/S +Kafkaesque +Kafka/M +kaftan's +Kagoshima/M +Kahaleel/M +Kahlil/M +Kahlua/M +Kahn/M +Kaia/M +Kaifeng/M +Kaila/M +Kaile/M +Kailey/M +Kai/M +Kaine/M +Kain/M +kaiser/MS +Kaiser/SM +Kaitlin/M +Kaitlyn/M +Kaitlynn/M +Kaja/M +Kajar/M +Kakalina/M +Kalahari/M +Kala/M +Kalamazoo/M +Kalashnikov/M +Kalb/M +Kaleb/M +Kaleena/M +kaleidescope +kaleidoscope/SM +kaleidoscopic +kaleidoscopically +Kale/M +kale/MS +Kalgoorlie/M +Kalie/M +Kalila/M +Kalil/M +Kali/M +Kalina/M +Kalinda/M +Kalindi/M +Kalle/M +Kalli/M +Kally/M +Kalmyk +Kalvin/M +Kama/M +Kamchatka/M +Kamehameha/M +Kameko/M +Kamikaze/MS +kamikaze/SM +Kamilah/M +Kamila/M +Kamillah/M +Kampala/M +Kampuchea/M +Kanchenjunga/M +Kandace/M +Kandahar/M +Kandinsky/M +Kandy/M +Kane/M +kangaroo/SGMD +Kania/M +Kankakee/M +Kan/MS +Kannada/M +Kano/M +Kanpur/M +Kansan/S +Kansas +Kantian +Kant/M +Kanya/M +Kaohsiung/M +kaolinite/M +kaolin/MS +Kaplan/M +kapok/SM +Kaposi/M +kappa/MS +kaput/M +Karachi/M +Karaganda/M +Karakorum/M +karakul/MS +Karalee/M +Karalynn/M +Kara/M +Karamazov/M +karaoke/S +karate/MS +karat/SM +Karee/M +Kareem/M +Karel/M +Kare/M +Karena/M +Karenina/M +Karen/M +Karia/M +Karie/M +Karil/M +Karilynn/M +Kari/M +Karim/M +Karina/M +Karine/M +Karin/M +Kariotta/M +Karisa/M +Karissa/M +Karita/M +Karla/M +Karlan/M +Karlee/M +Karleen/M +Karlene/M +Karlen/M +Karlie/M +Karlik/M +Karlis +Karl/MNX +Karloff/M +Karlotta/M +Karlotte/M +Karly/M +Karlyn/M +karma/SM +Karmen/M +karmic +Karna/M +Karney/M +Karola/M +Karole/M +Karolina/M +Karoline/M +Karol/M +Karoly/M +Karon/M +Karo/YM +Karp/M +Karrah/M +Karrie/M +Karroo/M +Karry/M +kart/MS +Karylin/M +Karyl/M +Kary/M +Karyn/M +Kasai/M +Kasey/M +Kashmir/SM +Kaspar/M +Kasparov/M +Kasper/M +Kass +Kassandra/M +Kassey/M +Kassia/M +Kassie/M +Kassi/M +katakana +Katalin/M +Kata/M +Katee/M +Katelyn/M +Kate/M +Katerina/M +Katerine/M +Katey/M +Katha/M +Katharina/M +Katharine/M +Katharyn/M +Kathe/M +Katherina/M +Katherine/M +Katheryn/M +Kathiawar/M +Kathie/M +Kathi/M +Kathleen/M +Kathlin/M +Kath/M +Kathmandu +Kathrine/M +Kathryne/M +Kathryn/M +Kathye/M +Kathy/M +Katie/M +Kati/M +Katina/M +Katine/M +Katinka/M +Katleen/M +Katlin/M +Kat/M +Katmai/M +Katmandu's +Katowice/M +Katrina/M +Katrine/M +Katrinka/M +Kattie/M +Katti/M +Katuscha/M +Katusha/M +Katya/M +katydid/SM +Katy/M +Katz/M +Kauai/M +Kauffman/M +Kaufman/M +Kaunas/M +Kaunda/M +Kawabata/M +Kawasaki/M +kayak/SGDM +Kaycee/M +Kaye/M +Kayla/M +Kaylee/M +Kayle/M +Kayley/M +Kaylil/M +Kaylyn/M +Kay/M +Kayne/M +kayo/DMSG +Kazakh/M +Kazakhstan +Kazan/M +Kazantzakis/M +kazoo/SM +Kb +KB +KC +kcal/M +kc/M +KDE/M +Keane/M +Kean/M +Kearney/M +Keary/M +Keaton/M +Keats/M +kebab/SM +Keck/M +Keefe/MR +Keefer/M +Keegan/M +Keelby/M +Keeley/M +keel/GSMDR +keelhaul/SGD +Keelia/M +Keely/M +Keenan/M +Keene/M +keener/M +keen/GTSPYDR +keening/M +Keen/M +keenness/MS +keeper/M +keep/GZJSR +keeping/M +keepsake/SM +Keewatin/M +kegged +kegging +keg/MS +Keillor/M +Keir/M +Keisha/M +Keith/M +Kelbee/M +Kelby/M +Kelcey/M +Kelcie/M +Kelci/M +Kelcy/M +Kele/M +Kelila/M +Kellby/M +Kellen/M +Keller/M +Kelley/M +Kellia/M +Kellie/M +Kelli/M +Kellina/M +Kellogg/M +Kellsie/M +Kellyann/M +Kelly/M +kelp/GZMDS +Kelsey/M +Kelsi/M +Kelsy/M +Kelt's +Kelvin/M +kelvin/MS +Kelwin/M +Kemerovo/M +Kempis/M +Kemp/M +Kendall/M +Kendal/M +Kendell/M +Kendra/M +Kendre/M +Kendrick/MS +Kenilworth/M +Ken/M +Kenmore/M +ken/MS +Kenna/M +Kennan/M +Kennecott/M +kenned +Kennedy/M +kennel/GSMD +Kenneth/M +Kennett/M +Kennie/M +kenning +Kennith/M +Kenn/M +Kenny/M +keno/M +Kenon/M +Kenosha/M +Kensington/M +Kent/M +Kenton/M +Kentuckian/S +Kentucky/M +Kenya/M +Kenyan/S +Kenyatta/M +Kenyon/M +Keogh/M +Keokuk/M +kepi/SM +Kepler/M +kept +keratin/MS +kerbside +Kerby/M +kerchief/MDSG +Kerensky/M +Kerianne/M +Keriann/M +Keri/M +Kerk/M +Ker/M +Kermie/M +Kermit/M +Kermy/M +kerned +kernel/GSMD +kerning +Kern/M +kerosene/MS +Kerouac/M +Kerrie/M +Kerrill/M +Kerri/M +Kerrin/M +Kerr/M +Kerry/M +Kerstin/M +Kerwin/M +Kerwinn/M +Kesley/M +Keslie/M +Kessiah/M +Kessia/M +Kessler/M +kestrel/SM +ketch/MS +ketchup/SM +ketone/M +ketosis/M +Kettering/M +Kettie/M +Ketti/M +kettledrum/SM +kettleful +kettle/SM +Ketty/M +Kevan/M +Keven/M +Kevina/M +Kevin/M +Kevlar +Kev/MN +Kevon/M +Kevorkian/M +Kevyn/M +Kewaskum/M +Kewaunee/M +Kewpie/M +keyboardist/S +keyboard/RDMZGS +keyclick/SM +keyhole/MS +Key/M +Keynesian/M +Keynes/M +keynoter/M +keynote/SRDZMG +keypad/MS +keypuncher/M +keypunch/ZGRSD +keyring +key/SGMD +keystone/SM +keystroke/SDMG +keyword/SM +k/FGEIS +kg +K/G +KGB +Khabarovsk/M +Khachaturian/M +khaki/SM +Khalid/M +Khalil/M +Khan/M +khan/MS +Kharkov/M +Khartoum/M +Khayyam/M +Khmer/M +Khoisan/M +Khomeini/M +Khorana/M +Khrushchev/SM +Khufu/M +Khulna/M +Khwarizmi/M +Khyber/M +kHz/M +KIA +Kiah/M +Kial/M +kibble/GMSD +kibbutzim +kibbutz/M +kibitzer/M +kibitz/GRSDZ +kibosh/GMSD +Kickapoo/M +kickback/SM +kickball/MS +kicker/M +kick/GZDRS +kickoff/SM +kickstand/MS +kicky/RT +kidded +kidder/SM +kiddie/SD +kidding/YM +kiddish +Kidd/M +kiddo/SM +kiddying +kiddy's +kidless +kid/MS +kidnaper's +kidnaping's +kidnap/MSJ +kidnapped +kidnapper/SM +kidnapping/S +kidney/MS +kidskin/SM +Kieffer/M +kielbasa/SM +kielbasi +Kiele/M +Kiel/M +Kienan/M +kier/I +Kierkegaard/M +Kiersten/M +Kieth/M +Kiev/M +Kigali/M +Kikelia/M +Kikuyu/M +Kilauea/M +Kile/M +Kiley/M +Kilian/M +Kilimanjaro/M +kill/BJGZSDR +killdeer/SM +Killebrew/M +killer/M +Killian/M +Killie/M +killing/Y +killjoy/S +Killy/M +kiln/GDSM +kilobaud/M +kilobit/S +kilobuck +kilobyte/S +kilocycle/MS +kilogauss/M +kilogram/MS +kilohertz/M +kilohm/M +kilojoule/MS +kiloliter/MS +kilometer/SM +kilo/SM +kiloton/SM +kilovolt/SM +kilowatt/SM +kiloword +kilter/M +kilt/MDRGZS +Ki/M +Kimball/M +Kimbell/M +Kimberlee/M +Kimberley/M +Kimberli/M +Kimberly/M +Kimberlyn/M +Kimble/M +Kimbra/M +Kim/M +Kimmie/M +Kimmi/M +Kimmy/M +kimono/MS +Kincaid/M +kinda +kindergarten/MS +kindergrtner/SM +kinder/U +kindheartedness/MS +kindhearted/YP +kindle/AGRSD +kindler/M +kindliness/SM +kindliness's/U +kindling/M +kindly/TUPR +kindness's +kindness/US +kind/PSYRT +kindred/S +kinematic/S +kinematics/M +kinesics/M +kine/SM +kinesthesis +kinesthetically +kinesthetic/S +kinetically +kinetic/S +kinetics/M +kinfolk/S +kingbird/M +kingdom/SM +kingfisher/MS +kinglet/M +kingliness/M +kingly/TPR +King/M +kingpin/MS +Kingsbury/M +king/SGYDM +kingship/SM +Kingsley/M +Kingsly/M +Kingston/M +Kingstown/M +Kingwood/M +kink/GSDM +kinkily +kinkiness/SM +kinky/PRT +Kin/M +kin/MS +Kinna/M +Kinney/M +Kinnickinnic/M +Kinnie/M +Kinny/M +Kinsey/M +kinsfolk/S +Kinshasa/M +Kinshasha/M +kinship/SM +Kinsley/M +kinsman/M +kinsmen/M +kinswoman/M +kinswomen +kiosk/SM +Kiowa/SM +Kipling/M +Kip/M +kip/MS +Kippar/M +kipped +kipper/DMSG +Kipper/M +Kippie/M +kipping +Kipp/MR +Kippy/M +Kira/M +Kirbee/M +Kirbie/M +Kirby/M +Kirchhoff/M +Kirchner/M +Kirchoff/M +Kirghistan/M +Kirghizia/M +Kirghiz/M +Kiribati +Kiri/M +Kirinyaga/M +kirk/GDMS +Kirkland/M +Kirk/M +Kirkpatrick/M +Kirkwood/M +Kirov/M +kirsch/S +Kirsteni/M +Kirsten/M +Kirsti/M +Kirstin/M +Kirstyn/M +Kisangani/M +Kishinev/M +kismet/SM +kiss/DSRBJGZ +Kissee/M +kisser/M +Kissiah/M +Kissie/M +Kissinger/M +Kitakyushu/M +kitbag's +kitchener/M +Kitchener/M +kitchenette/SM +kitchen/GDRMS +kitchenware/SM +kiter/M +kite/SM +kith/MDG +kiths +Kit/M +kit/MDRGS +kitsch/MS +kitschy +kitted +kittenishness/M +kittenish/YP +kitten/SGDM +Kittie/M +Kitti/M +kitting +kittiwakes +Kitty/M +kitty/SM +Kiwanis/M +kiwifruit/S +kiwi/SM +Kizzee/M +Kizzie/M +KKK +kl +Klan/M +Klansman/M +Klara/M +Klarika/M +Klarrisa/M +Klaus/M +klaxon/M +Klee/M +Kleenex/SM +Klein/M +Kleinrock/M +Klemens/M +Klement/M +Kleon/M +kleptomaniac/SM +kleptomania/MS +Kliment/M +Kline/M +Klingon/M +Klondike/SDMG +kludger/M +kludge/RSDGMZ +kludgey +klutziness/S +klutz/SM +klutzy/TRP +Klux/M +klystron/MS +km +kn +knacker/M +knack/SGZRDM +knackwurst/MS +Knapp/M +knapsack/MS +Knauer/M +knavery/MS +knave/SM +knavish/Y +kneader/M +knead/GZRDS +kneecap/MS +kneecapped +kneecapping +knee/DSM +kneeing +kneeler/M +kneel/GRS +kneepad/SM +knell/SMDG +knelt +Knesset/M +knew +Kngwarreye/M +Knickerbocker/MS +knickerbocker/S +knickknack/SM +knick/ZR +Knievel/M +knife/DSGM +knighthood/MS +knightliness/MS +knightly/P +Knight/M +knight/MDYSG +knish/MS +knit/AU +knits +knitted +knitter/MS +knitting/SM +knitwear/M +knives/M +knobbly +knobby/RT +Knobeloch/M +knob/MS +knockabout/M +knockdown/S +knocker/M +knock/GZSJRD +knockoff/S +knockout/MS +knockwurst's +knoll/MDSG +Knopf/M +Knossos/M +knothole/SM +knot/MS +knotted +knottiness/M +knotting/M +knotty/TPR +knowable/U +knower/M +know/GRBSJ +knowhow +knowingly/U +knowing/RYT +knowings/U +knowledgeableness/M +knowledgeable/P +knowledgeably +knowledge/SM +Knowles +known/SU +Knox/M +Knoxville/M +knuckleball/R +knuckle/DSMG +knuckleduster +knucklehead/MS +Knudsen/M +Knudson/M +knurl/DSG +Knuth/M +Knutsen/M +Knutson/M +KO +koala/SM +Kobayashi/M +Kobe/M +Kochab/M +Koch/M +Kodachrome/M +Kodak/SM +Kodaly/M +Kodiak/M +Koenig/M +Koenigsberg/M +Koenraad/M +Koestler/M +Kohinoor/M +Kohler/M +Kohl/MR +kohlrabies +kohlrabi/M +kola/SM +Kolyma/M +Kommunizma/M +Kong/M +Kongo/M +Konrad/M +Konstance/M +Konstantine/M +Konstantin/M +Konstanze/M +kookaburra/SM +kook/GDMS +kookiness/S +kooky/PRT +Koo/M +Koontz/M +kopeck/MS +Koppers/M +Koralle/M +Koral/M +Kora/M +Koranic +Koran/SM +Kordula/M +Korea/M +Korean/S +Korella/M +Kore/M +Koren/M +Koressa/M +Korey/M +Korie/M +Kori/M +Kornberg/M +Korney/M +Korrie/M +Korry/M +Kort/M +Kory/M +Korzybski/M +Kosciusko/M +kosher/DGS +Kossuth/M +Kosygin/M +Kovacs/M +Kowalewski/M +Kowalski/M +Kowloon/M +kowtow/SGD +KP +kph +kraal/SMDG +Kraemer/M +kraft/M +Kraft/M +Krakatau's +Krakatoa/M +Krakow/M +Kramer/M +Krasnodar/M +Krasnoyarsk/M +Krause/M +kraut/S! +Krebs/M +Kremlin/M +Kremlinologist/MS +Kremlinology/MS +Kresge/M +Krieger/M +kriegspiel/M +krill/MS +Kringle/M +Krisha/M +Krishnah/M +Krishna/M +Kris/M +Krispin/M +Krissie/M +Krissy/M +Kristal/M +Krista/M +Kristan/M +Kristel/M +Kriste/M +Kristen/M +Kristian/M +Kristie/M +Kristien/M +Kristi/MN +Kristina/M +Kristine/M +Kristin/M +Kristofer/M +Kristoffer/M +Kristofor/M +Kristoforo/M +Kristo/MS +Kristopher/M +Kristy/M +Kristyn/M +Kr/M +Kroc/M +Kroger/M +krna/M +Kronecker/M +krone/RM +kronor +krnur +Kropotkin/M +Krueger/M +Kruger/M +Krugerrand/S +Krupp/M +Kruse/M +krypton/SM +Krystalle/M +Krystal/M +Krysta/M +Krystle/M +Krystyna/M +ks +K's +KS +k's/IE +kt +Kublai/M +Kubrick/M +kuchen/MS +kudos/M +kudzu/SM +Kuenning/M +Kuhn/M +Kuibyshev/M +Ku/M +Kumar/M +kumquat/SM +Kunming/M +Kuomintang/M +Kurdish/M +Kurdistan/SM +Kurd/SM +Kurosawa/M +Kurtis/M +Kurt/M +kurtosis/M +Kusch/M +Kuwaiti/SM +Kuwait/M +Kuznetsk/M +Kuznets/M +kvetch/DSG +kw +kW +Kwakiutl/M +Kwangchow's +Kwangju/M +Kwanzaa/S +kWh +KY +Kyla/M +kyle/M +Kyle/M +Kylen/M +Kylie/M +Kylila/M +Kylynn/M +Ky/MH +Kym/M +Kynthia/M +Kyoto/M +Kyrgyzstan +Kyrstin/M +Kyushu/M +L +LA +Laban/M +labeled/U +labeler/M +label/GAZRDS +labellings/A +label's +labial/YS +labia/M +labile +labiodental +labium/M +laboratory/MS +laboredness/M +labored/PMY +labored's/U +laborer/M +laboring/MY +laborings/U +laboriousness/MS +laborious/PY +labor/RDMJSZG +laborsaving +Labradorean/S +Labrador/SM +lab/SM +Lab/SM +laburnum/SM +labyrinthine +labyrinth/M +labyrinths +laced/U +Lacee/M +lace/MS +lacerate/NGVXDS +laceration/M +lacer/M +laces/U +lacewing/MS +Lacey/M +Lachesis/M +lachrymal/S +lachrymose +Lacie/M +lacing/M +lackadaisic +lackadaisical/Y +Lackawanna/M +lacker/M +lackey/SMDG +lack/GRDMS +lackluster/S +Lac/M +laconic +laconically +lacquerer/M +lacquer/ZGDRMS +lacrosse/MS +lac/SGMDR +lactate/MNGSDX +lactational/Y +lactation/M +lacteal +lactic +lactose/MS +lacunae +lacuna/M +Lacy/M +lacy/RT +ladder/GDMS +laddie/MS +laded/U +ladened +ladening +laden/U +lade/S +lading/M +ladle/SDGM +Ladoga/M +Ladonna/M +lad/XGSJMND +ladybird/SM +ladybug/MS +ladyfinger/SM +ladylike/U +ladylove/MS +Ladyship/MS +ladyship/SM +lady/SM +Lady/SM +Laetitia/M +laetrile/S +Lafayette/M +Lafitte/M +lager/DMG +laggard/MYSP +laggardness/M +lagged +lagging/MS +lagniappe/SM +lagoon/MS +Lagos/M +Lagrange/M +Lagrangian/M +Laguerre/M +Laguna/M +lag/ZSR +Lahore/M +laid/AI +Laidlaw/M +lain +Laina/M +Lainey/M +Laird/M +laird/MS +lair/GDMS +laissez +laity/SM +Laius/M +lake/DSRMG +Lakehurst/M +Lakeisha/M +laker/M +lakeside +Lakewood/M +Lakisha/M +Lakshmi/M +lallygagged +lallygagging +lallygag/S +Lalo/M +La/M +Lamaism/SM +Lamarck/M +Lamar/M +lamasery/MS +lama/SM +Lamaze +lambada/S +lambaste/SDG +lambda/SM +lambency/MS +lambent/Y +Lambert/M +lambkin/MS +Lamb/M +Lamborghini/M +lambskin/MS +lamb/SRDMG +lambswool +lamebrain/SM +lamed/M +lameness/MS +lamentableness/M +lamentable/P +lamentably +lamentation/SM +lament/DGSB +lamented/U +lame/SPY +la/MHLG +laminae +lamina/M +laminar +laminate/XNGSD +lamination/M +lam/MDRSTG +lammed +lammer +lamming +Lammond/M +Lamond/M +Lamont/M +L'Amour +lampblack/SM +lamplighter/M +lamplight/ZRMS +lampooner/M +lampoon/RDMGS +Lamport/M +lamppost/SM +lamprey/MS +lamp/SGMRD +lampshade/MS +LAN +Lanae/M +Lanai/M +lanai/SM +Lana/M +Lancashire/M +Lancaster/M +Lancelot/M +Lance/M +lancer/M +lance/SRDGMZ +lancet/MS +landau/MS +lander/I +landfall/SM +landfill/DSG +landforms +landholder/M +landhold/JGZR +landing/M +Landis/M +landlady/MS +landless +landlines +landlocked +landlord/MS +landlubber/SM +Land/M +landmark/GSMD +landmass/MS +Landon/M +landowner/MS +landownership/M +landowning/SM +Landry/M +Landsat +landscape/GMZSRD +landscaper/M +lands/I +landslide/MS +landslid/G +landslip +landsman/M +landsmen +land/SMRDJGZ +Landsteiner/M +landward/S +Landwehr/M +Lane/M +lane/SM +Lanette/M +Laney/M +Langeland/M +Lange/M +Langerhans/M +Langford/M +Langland/M +Langley/M +Lang/M +Langmuir/M +Langsdon/M +Langston/M +language/MS +languidness/MS +languid/PY +languisher/M +languishing/Y +languish/SRDG +languorous/Y +languor/SM +Lanie/M +Lani/M +Lanita/M +lankiness/SM +lankness/MS +lank/PTYR +lanky/PRT +Lanna/M +Lannie/M +Lanni/M +Lanny/M +lanolin/MS +Lansing/M +lantern/GSDM +lanthanide/M +lanthanum/MS +lanyard/MS +Lanzhou +Laocoon/M +Lao/SM +Laotian/MS +lapboard/MS +lapdog/S +lapel/MS +lapidary/MS +lapin/MS +Laplace/M +Lapland/ZMR +lapped +lappet/MS +lapping +Lapp/SM +lapsed/A +lapse/KSDMG +lapser/MA +lapses/A +lapsing/A +lap/SM +laps/SRDG +laptop/SM +lapwing/MS +Laraine/M +Lara/M +Laramie/M +larboard/MS +larcenist/S +larcenous +larceny/MS +larch/MS +larder/M +lard/MRDSGZ +Lardner/M +lardy/RT +Laredo/M +largehearted +largemouth +largeness/SM +large/SRTYP +largess/SM +largish +largo/S +lariat/MDGS +Lari/M +Larina/M +Larine/M +Larisa/M +Larissa/M +larker/M +lark/GRDMS +Lark/M +larkspur/MS +Larousse/M +Larry/M +Larsen/M +Lars/NM +Larson/M +larvae +larval +larva/M +laryngeal/YS +larynges +laryngitides +laryngitis/M +larynx/M +Laryssa/M +lasagna/S +lasagne's +Lascaux/M +lasciviousness/MS +lascivious/YP +lase +laser/M +lashed/U +lasher/M +lashing/M +lash/JGMSRD +Lassa/M +Lassen/M +Lassie/M +lassie/SM +lassitude/MS +lassoer/M +lasso/GRDMS +las/SRZG +lass/SM +laster/M +lastingness/M +lasting/PY +last/JGSYRD +Laszlo/M +Latasha/M +Latashia/M +latching/M +latchkey/SM +latch's +latch/UGSD +latecomer/SM +lated/A +late/KA +lately +latency/MS +lateness/MS +latent/YS +later/A +lateral/GDYS +lateralization +Lateran/M +latest/S +LaTeX/M +latex/MS +lathe/M +latherer/M +lather/RDMG +lathery +lathing/M +lath/MSRDGZ +Lathrop/M +laths +Latia/M +latices/M +Latina/SM +Latinate +Latino/S +Latin/RMS +latish +Latisha/M +latitude/SM +latitudinal/Y +latitudinarian/S +latitudinary +Lat/M +Latonya/M +Latoya/M +Latrena/M +Latrina/M +latrine/MS +Latrobe/M +lat/SDRT +latter/YM +latte/SR +lattice/SDMG +latticework/MS +latticing/M +Lattimer/M +Latvia/M +Latvian/S +laudably +laudanum/MS +laudatory +Lauderdale/M +lauder/M +Lauder/M +Laud/MR +laud/RDSBG +lauds/M +Laue/M +laughableness/M +laughable/P +laughably +laugh/BRDZGJ +laugher/M +laughing/MY +laughingstock/SM +laughs +laughter/MS +Laughton/M +Launce/M +launch/AGSD +launcher/MS +launching/S +launchpad/S +laundered/U +launderer/M +launderette/MS +launder/SDRZJG +laundress/MS +laundrette/S +laundromat/S +Laundromat/SM +laundryman/M +laundrymen +laundry/MS +laundrywoman/M +laundrywomen +Lauraine/M +Lauralee/M +Laural/M +laura/M +Laura/M +Laurasia/M +laureate/DSNG +laureateship/SM +Lauree/M +Laureen/M +Laurella/M +Laurel/M +laurel/SGMD +Laure/M +Laurena/M +Laurence/M +Laurene/M +Lauren/SM +Laurentian +Laurent/M +Lauretta/M +Laurette/M +Laurianne/M +Laurice/M +Laurie/M +Lauri/M +Lauritz/M +Lauryn/M +Lausanne/M +lavage/MS +lavaliere/MS +Laval/M +lava/SM +lavatory/MS +lave/GDS +Lavena/M +lavender/MDSG +Laverna/M +Laverne/M +Lavern/M +Lavina/M +Lavinia/M +Lavinie/M +lavishness/MS +lavish/SRDYPTG +Lavoisier/M +Lavonne/M +Lawanda/M +lawbreaker/SM +lawbreaking/MS +Lawford/M +lawfulness/SMU +lawful/PUY +lawgiver/MS +lawgiving/M +lawlessness/MS +lawless/PY +Law/M +lawmaker/MS +lawmaking/SM +lawman/M +lawmen +lawnmower/S +lawn/SM +Lawrence/M +Lawrenceville/M +lawrencium/SM +Lawry/M +law/SMDG +Lawson/M +lawsuit/MS +Lawton/M +lawyer/DYMGS +laxativeness/M +laxative/PSYM +laxer/A +laxes/A +laxity/SM +laxness/SM +lax/PTSRY +layabout/MS +Layamon/M +layaway/S +lay/CZGSR +layered/C +layer/GJDM +layering/M +layer's/IC +layette/SM +Layla/M +Lay/M +layman/M +laymen +Layne/M +Layney/M +layoff/MS +layout/SM +layover/SM +laypeople +layperson/S +lays/AI +Layton/M +layup/MS +laywoman/M +laywomen +Lazare/M +Lazar/M +Lazaro/M +Lazarus/M +laze/DSG +lazily +laziness/MS +lazuli/M +lazybones/M +lazy/PTSRDG +lb +LBJ/M +lbs +LC +LCD +LCM +LDC +leachate +Leach/M +leach/SDG +Leadbelly/M +leaded/U +leadenness/M +leaden/PGDY +leaderless +leader/M +leadership/MS +lead/SGZXJRDN +leadsman/M +leadsmen +leafage/MS +leaf/GSDM +leafhopper/M +leafiness/M +leafless +leaflet/SDMG +leafstalk/SM +leafy/PTR +leaguer/M +league/RSDMZG +Leah/M +leakage/SM +leaker/M +Leakey/M +leak/GSRDM +leakiness/MS +leaky/PRT +Lea/M +lea/MS +Leander/M +Leandra/M +leaner/M +leaning/M +Lean/M +Leanna/M +Leanne/M +leanness/MS +Leann/M +Leanora/M +Leanor/M +lean/YRDGTJSP +leaper/M +leapfrogged +leapfrogging +leapfrog/SM +leap/RDGZS +Lear/M +learnedly +learnedness/M +learned/UA +learner/M +learning/M +learns/UA +learn/SZGJRD +Leary/M +lease/ARSDG +leaseback/MS +leaseholder/M +leasehold/SRMZ +leaser/MA +lease's +leash's +leash/UGSD +leasing/M +leas/SRDGZ +least/S +leastwise +leatherette/S +leather/MDSG +leathern +leatherneck/SM +leathery +leaven/DMJGS +leavened/U +leavening/M +Leavenworth/M +leaver/M +leaves/M +leave/SRDJGZ +leaving/M +Lebanese +Lebanon/M +Lebbie/M +lebensraum +Lebesgue/M +Leblanc/M +lecher/DMGS +lecherousness/MS +lecherous/YP +lechery/MS +lecithin/SM +lectern/SM +lecturer/M +lecture/RSDZMG +lectureship/SM +led +Leda/M +Lederberg/M +ledger/DMG +ledge/SRMZ +LED/SM +Leeanne/M +Leeann/M +leech/MSDG +Leeds/M +leek/SM +Leelah/M +Leela/M +Leeland/M +Lee/M +lee/MZRS +Leena/M +leer/DG +leeriness/MS +leering/Y +leery/PTR +Leesa/M +Leese/M +Leeuwenhoek/M +Leeward/M +leeward/S +leeway/MS +leftism/SM +leftist/SM +leftmost +leftover/MS +Left/S +left/TRS +leftward/S +Lefty/M +lefty/SM +legacy/MS +legalese/MS +legalism/SM +legalistic +legality/MS +legalization/MS +legalize/DSG +legalized/U +legal/SY +legate/AXCNGSD +legatee/MS +legate's/C +legation/AMC +legato/SM +legendarily +legendary/S +Legendre/M +legend/SM +legerdemain/SM +Leger/SM +legged +legginess/MS +legging/MS +leggy/PRT +leghorn/SM +Leghorn/SM +legibility/MS +legible +legibly +legionary/S +legionnaire/SM +legion/SM +legislate/SDXVNG +legislation/M +legislative/SY +legislator/SM +legislature/MS +legitimacy/MS +legitimate/SDNGY +legitimation/M +legitimatize/SDG +legitimization/MS +legitimize/RSDG +legit/S +legless +legman/M +legmen +leg/MS +Lego/M +Legra/M +Legree/M +legroom/MS +legstraps +legume/SM +leguminous +legwork/SM +Lehigh/M +Lehman/M +Leia/M +Leibniz/M +Leicester/SM +Leiden/M +Leif/M +Leigha/M +Leigh/M +Leighton/M +Leilah/M +Leila/M +lei/MS +Leipzig/M +Leisha/M +leisureliness/MS +leisurely/P +leisure/SDYM +leisurewear +leitmotif/SM +leitmotiv/MS +Lek/M +Lelah/M +Lela/M +Leland/M +Lelia/M +Lemaitre/M +Lemar/M +Lemke/M +Lem/M +lemma/MS +lemme/GJ +Lemmie/M +lemming/M +Lemmy/M +lemonade/SM +lemon/GSDM +lemony +Lemuel/M +Lemuria/M +lemur/MS +Lena/M +Lenard/M +Lenci/M +lender/M +lend/SRGZ +Lenee/M +Lenette/M +lengthener/M +lengthen/GRD +lengthily +lengthiness/MS +length/MNYX +lengths +lengthwise +lengthy/TRP +lenience/S +leniency/MS +lenient/SY +Leningrad/M +Leninism/M +Leninist +Lenin/M +lenitive/S +Lenka/M +Len/M +Le/NM +Lenna/M +Lennard/M +Lennie/M +Lennon/M +Lenny/M +Lenoir/M +Leno/M +Lenora/M +Lenore/M +lens/SRDMJGZ +lent/A +lenticular +lentil/SM +lento/S +Lent/SMN +Leodora/M +Leoine/M +Leola/M +Leoline/M +Leo/MS +Leona/M +Leonanie/M +Leonard/M +Leonardo/M +Leoncavallo/M +Leonelle/M +Leonel/M +Leone/M +Leonerd/M +Leonhard/M +Leonidas/M +Leonid/M +Leonie/M +leonine +Leon/M +Leonora/M +Leonore/M +Leonor/M +Leontine/M +Leontyne/M +leopardess/SM +leopard/MS +leopardskin +Leopold/M +Leopoldo/M +Leopoldville/M +Leora/M +leotard/MS +leper/SM +Lepidus/M +Lepke/M +leprechaun/SM +leprosy/MS +leprous +lepta +lepton/SM +Lepus/M +Lerner/M +Leroi/M +Leroy/M +Lesa/M +lesbianism/MS +lesbian/MS +Leshia/M +lesion/DMSG +Lesley/M +Leslie/M +Lesli/M +Lesly/M +Lesotho/M +lessee/MS +lessen/GDS +Lesseps/M +lesser +lesses +Lessie/M +lessing +lesson/DMSG +lessor/MS +less/U +Lester/M +lest/R +Les/Y +Lesya/M +Leta/M +letdown/SM +lethality/M +lethal/YS +Letha/M +lethargic +lethargically +lethargy/MS +Lethe/M +Lethia/M +Leticia/M +Letisha/M +let/ISM +Letitia/M +Letizia/M +Letta/M +letterbox/S +lettered/U +letterer/M +letterhead/SM +lettering/M +letter/JSZGRDM +letterman/M +Letterman/M +lettermen +letterpress/MS +Lettie/M +Letti/M +letting/S +lettuce/SM +Letty/M +letup/MS +leukemia/SM +leukemic/S +leukocyte/MS +Leupold/M +Levant/M +leveeing +levee/SDM +leveled/U +leveler/M +levelheadedness/S +levelheaded/P +leveling/U +levelness/SM +level/STZGRDYP +leverage/MGDS +lever/SDMG +Levesque/M +Levey/M +Leviathan +leviathan/MS +levier/M +Levi/MS +Levine/M +Levin/M +levitate/XNGDS +levitation/M +Leviticus/M +Levitt/M +levity/MS +Lev/M +Levon/M +Levy/M +levy/SRDZG +lewdness/MS +lewd/PYRT +Lewellyn/M +Lewes +Lewie/M +Lewinsky/M +lewis/M +Lewis/M +Lewiss +Lew/M +lex +lexeme/MS +lexical/Y +lexicographer/MS +lexicographic +lexicographical/Y +lexicography/SM +lexicon/SM +Lexie/M +Lexi/MS +Lexine/M +Lexington/M +Lexus/M +Lexy/M +Leyden/M +Leyla/M +Lezley/M +Lezlie/M +lg +Lhasa/SM +Lhotse/M +liability/SAM +liable/AP +liaise/GSD +liaison/SM +Lia/M +Liam/M +Liana/M +Liane/M +Lian/M +Lianna/M +Lianne/M +liar/MS +libation/SM +libbed +Libbey/M +Libbie/M +Libbi/M +libbing +Libby/M +libeler/M +libel/GMRDSZ +libelous/Y +Liberace/M +liberalism/MS +liberality/MS +liberalization/SM +liberalized/U +liberalize/GZSRD +liberalizer/M +liberalness/MS +liberal/YSP +liberate/NGDSCX +liberationists +liberation/MC +liberator/SCM +Liberia/M +Liberian/S +libertarianism/M +libertarian/MS +libertine/MS +liberty/MS +libidinal +libidinousness/M +libidinous/PY +libido/MS +Lib/M +lib/MS +librarian/MS +library/MS +Libra/SM +libretoes +libretos +librettist/MS +libretto/MS +Libreville/M +Librium/M +Libya/M +Libyan/S +lice/M +licensed/AU +licensee/SM +license/MGBRSD +licenser/M +licenses/A +licensing/A +licensor/M +licentiate/MS +licentiousness/MS +licentious/PY +Licha/M +lichee's +lichen/DMGS +Lichtenstein/M +Lichter/M +licit/Y +licked/U +lickerish +licker/M +lick/GRDSJ +licking/M +licorice/SM +Lida/M +lidded +lidding +Lidia/M +lidless +lid/MS +lido/MS +Lieberman/M +Liebfraumilch/M +Liechtenstein/RMZ +lied/MR +lie/DRS +Lief/M +liefs/A +lief/TSR +Liege/M +liege/SR +Lie/M +lien/SM +lier/IMA +lies/A +Liesa/M +lieu/SM +lieut +lieutenancy/MS +lieutenant/SM +Lieut/M +lifeblood/SM +lifeboat/SM +lifebuoy/S +lifeforms +lifeguard/MDSG +lifelessness/SM +lifeless/PY +lifelikeness/M +lifelike/P +lifeline/SM +lifelong +life/MZR +lifer/M +lifesaver/SM +lifesaving/S +lifespan/S +lifestyle/S +lifetaking +lifetime/MS +lifework/MS +LIFO +lifter/M +lift/GZMRDS +liftoff/MS +ligament/MS +ligand/MS +ligate/XSDNG +ligation/M +ligature/DSGM +light/ADSCG +lighted/U +lightener/M +lightening/M +lighten/ZGDRS +lighter/CM +lightered +lightering +lighters +lightest +lightface/SDM +lightheaded +lightheartedness/MS +lighthearted/PY +lighthouse/MS +lighting/MS +lightly +lightness/MS +lightning/SMD +lightproof +light's +lightship/SM +lightweight/S +ligneous +lignite/MS +lignum +likability/MS +likableness/MS +likable/P +likeability's +liked/E +likelihood/MSU +likely/UPRT +likeness/MSU +liken/GSD +liker/E +liker's +likes/E +likest +like/USPBY +likewise +liking/SM +lilac/MS +Lilah/M +Lila/SM +Lilia/MS +Liliana/M +Liliane/M +Lilian/M +Lilith/M +Liliuokalani/M +Lilla/M +Lille/M +Lillian/M +Lillie/M +Lilli/MS +lilliputian/S +Lilliputian/SM +Lilliput/M +Lilllie/M +Lilly/M +Lil/MY +Lilongwe/M +lilting/YP +lilt/MDSG +Lilyan/M +Lily/M +lily/MSD +Lima/M +Limbaugh/M +limbered/U +limberness/SM +limber/RDYTGP +limbers/U +limbic +limbless +Limbo +limbo/GDMS +limb/SGZRDM +Limburger/SM +limeade/SM +lime/DSMG +limekiln/M +limelight/DMGS +limerick/SM +limestone/SM +limitability +limitably +limitation/MCS +limit/CSZGRD +limitedly/U +limitedness/M +limited/PSY +limiter/M +limiting/S +limitlessness/SM +limitless/PY +limit's +limn/GSD +Limoges/M +limo/S +limousine/SM +limper/M +limpet/SM +limpidity/MS +limpidness/SM +limpid/YP +limpness/MS +Limpopo/M +limp/SGTPYRD +Li/MY +limy/TR +linage/MS +Lina/M +linchpin/MS +Linc/M +Lincoln/SM +Linda/M +Lindbergh/M +Lindberg/M +linden/MS +Lindholm/M +Lindie/M +Lindi/M +Lind/M +Lindon/M +Lindquist/M +Lindsay/M +Lindsey/M +Lindstrom/M +Lindsy/M +Lindy/M +line/AGDS +lineage/SM +lineal/Y +Linea/M +lineament/MS +linearity/MS +linearize/SDGNB +linear/Y +linebacker/SM +lined/U +linefeed +Linell/M +lineman/M +linemen +linen/SM +liner/SM +line's +linesman/M +linesmen +Linet/M +Linette/M +lineup/S +lingerer/M +lingerie/SM +lingering/Y +linger/ZGJRD +lingoes +lingo/M +lingual/SY +lingua/M +linguine +linguini's +linguistically +linguistic/S +linguistics/M +linguist/SM +ling/ZR +liniment/MS +lining/SM +linkable +linkage/SM +linked/A +linker/S +linking/S +Link/M +link's +linkup/S +link/USGD +Lin/M +Linnaeus/M +Linnea/M +Linnell/M +Linnet/M +linnet/SM +Linnie/M +Linn/M +Linoel/M +linoleum/SM +lino/M +Linotype/M +linseed/SM +lintel/SM +linter/M +Linton/M +lint/SMR +linty/RST +Linus/M +Linux/M +Linwood/M +Linzy/M +Lionello/M +Lionel/M +lioness/SM +lionhearted +lionization/SM +lionizer/M +lionize/ZRSDG +Lion/M +lion/MS +lipase/M +lipid/MS +lip/MS +liposuction/S +lipped +lipper +Lippi/M +lipping +Lippmann/M +lippy/TR +lipread/GSRJ +Lipschitz/M +Lipscomb/M +lipstick/MDSG +Lipton/M +liq +liquefaction/SM +liquefier/M +liquefy/DRSGZ +liqueur/DMSG +liquidate/GNXSD +liquidation/M +liquidator/SM +liquidity/SM +liquidizer/M +liquidize/ZGSRD +liquidness/M +liquid/SPMY +liquorice/SM +liquorish +liquor/SDMG +lira/M +Lira/M +lire +Lisabeth/M +Lisa/M +Lisbeth/M +Lisbon/M +Lise/M +Lisetta/M +Lisette/M +Lisha/M +Lishe/M +Lisle/M +lisle/SM +lisper/M +lisp/MRDGZS +Lissajous/M +Lissa/M +Lissie/M +Lissi/M +Liss/M +lissomeness/M +lissome/P +lissomness/M +Lissy/M +listed/U +listener/M +listen/ZGRD +Listerine/M +lister/M +Lister/M +listing/M +list/JMRDNGZXS +listlessness/SM +listless/PY +Liston/M +Liszt/M +Lita/M +litany/MS +litchi/SM +literacy/MS +literalism/M +literalistic +literalness/MS +literal/PYS +literariness/SM +literary/P +literate/YNSP +literati +literation/M +literature/SM +liter/M +lite/S +litheness/SM +lithe/PRTY +lithesome +lithium/SM +lithograph/DRMGZ +lithographer/M +lithographic +lithographically +lithographs +lithography/MS +lithology/M +lithosphere/MS +lithospheric +Lithuania/M +Lithuanian/S +litigant/MS +litigate/NGXDS +litigation/M +litigator/SM +litigiousness/MS +litigious/PY +litmus/SM +litotes/M +lit/RZS +littrateur/S +litterbug/SM +litter/SZGRDM +Little/M +littleneck/M +littleness/SM +little/RSPT +Littleton/M +Litton/M +littoral/S +liturgical/Y +liturgic/S +liturgics/M +liturgist/MS +liturgy/SM +Liuka/M +livability/MS +livableness/M +livable/U +livably +Liva/M +lived/A +livelihood/SM +liveliness/SM +livelong/S +lively/RTP +liveness/M +liven/SDG +liver/CSGD +liveried +liverish +Livermore/M +Liverpool/M +Liverpudlian/MS +liver's +liverwort/SM +liverwurst/SM +livery/CMS +liveryman/MC +liverymen/C +lives/A +lives's +livestock/SM +live/YHZTGJDSRPB +Livia/M +lividness/M +livid/YP +livingness/M +Livingstone/M +Livingston/M +living/YP +Liv/M +Livonia/M +Livvie/M +Livvy/M +Livvyy/M +Livy/M +Lizabeth/M +Liza/M +lizard/MS +Lizbeth/M +Lizette/M +Liz/M +Lizzie/M +Lizzy/M +l/JGVXT +Ljubljana/M +LL +llama/SM +llano/SM +LLB +ll/C +LLD +Llewellyn/M +Lloyd/M +Llywellyn/M +LNG +lo +loadable +loaded/A +loader/MU +loading/MS +load's/A +loads/A +loadstar's +loadstone's +load/SURDZG +loafer/M +Loafer/S +loaf/SRDMGZ +loam/SMDG +loamy/RT +loaner/M +loaning/M +loan/SGZRDMB +loansharking/S +loanword/S +loathe +loather/M +loathing/M +loath/JPSRDYZG +loathness/M +loathsomeness/MS +loathsome/PY +loaves/M +Lobachevsky/M +lobar +lobbed +lobber/MS +lobbing +lobby/GSDM +lobbyist/MS +lobe/SM +lob/MDSG +lobotomist +lobotomize/GDS +lobotomy/MS +lobster/MDGS +lobularity +lobular/Y +lobule/SM +locale/MS +localisms +locality/MS +localization/MS +localized/U +localizer/M +localizes/U +localize/ZGDRS +local/SGDY +locatable +locate/AXESDGN +locater/M +locational/Y +location/EMA +locative/S +locator's +Lochinvar/M +loch/M +lochs +loci/M +lockable +Lockean/M +locked/A +Locke/M +locker/SM +locket/SM +Lockhart/M +Lockheed/M +Lockian/M +locking/S +lockjaw/SM +Lock/M +locknut/M +lockout/MS +lock's +locksmithing/M +locksmith/MG +locksmiths +lockstep/S +lock/UGSD +lockup/MS +Lockwood/M +locomotion/SM +locomotive/YMS +locomotor +locomotory +loco/SDMG +locoweed/MS +locus/M +locust/SM +locution/MS +lode/SM +lodestar/MS +lodestone/MS +lodged/E +lodge/GMZSRDJ +Lodge/M +lodgepole +lodger/M +lodges/E +lodging/M +lodgment/M +Lodovico/M +Lodowick/M +Lodz +Loeb/M +Loella/M +Loewe/M +Loewi/M +lofter/M +loftily +loftiness/SM +loft/SGMRD +lofty/PTR +loganberry/SM +Logan/M +logarithmic +logarithmically +logarithm/MS +logbook/MS +loge/SMNX +logged/U +loggerhead/SM +logger/SM +loggia/SM +logging/MS +logicality/MS +logicalness/M +logical/SPY +logician/SM +logic/SM +login/S +logion/M +logistical/Y +logistic/MS +logjam/SM +LOGO +logo/SM +logotype/MS +logout +logrolling/SM +log's/K +log/SM +logy/RT +Lohengrin/M +loincloth/M +loincloths +loin/SM +Loire/M +Loise/M +Lois/M +loiterer/M +loiter/RDJSZG +Loki/M +Lola/M +Loleta/M +Lolita/M +loller/M +lollipop/MS +loll/RDGS +Lolly/M +lolly/SM +Lombardi/M +Lombard/M +Lombardy/M +Lomb/M +Lome +Lona/M +Londonderry/M +Londoner/M +London/RMZ +Lonee/M +loneliness/SM +lonely/TRP +loneness/M +lone/PYZR +loner/M +lonesomeness/MS +lonesome/PSY +longboat/MS +longbow/SM +longed/K +longeing +longer/K +longevity/MS +Longfellow/M +longhair/SM +longhand/SM +longhorn/SM +longing/MY +longish +longitude/MS +longitudinal/Y +long/JGTYRDPS +Long/M +longness/M +longshoreman/M +longshoremen +longsighted +longs/K +longstanding +Longstreet/M +longsword +longterm +longtime +Longueuil/M +longueur/SM +longways +longword/SM +Loni/M +Lon/M +Lonna/M +Lonnard/M +Lonnie/M +Lonni/M +Lonny/M +loofah/M +loofahs +lookahead +lookalike/S +looker/M +look/GZRDS +lookout/MS +lookup/SM +looming/M +Loomis/M +loom/MDGS +loon/MS +loony/SRT +looper/M +loophole/MGSD +loop/MRDGS +loopy/TR +loosed/U +looseleaf +loosener/M +looseness/MS +loosen/UDGS +loose/SRDPGTY +looses/U +loosing/M +looter/M +loot/MRDGZS +loper/M +lope/S +Lopez/M +lopped +lopper/MS +lopping +lop/SDRG +lopsidedness/SM +lopsided/YP +loquaciousness/MS +loquacious/YP +loquacity/SM +Loraine/M +Lorain/M +Loralee/M +Loralie/M +Loralyn/M +Lora/M +Lorant/M +lording/M +lordliness/SM +lordly/PTR +Lord/MS +lord/MYDGS +lordship/SM +Lordship/SM +Loree/M +Loreen/M +Lorelei/M +Lorelle/M +lore/MS +Lorena/M +Lorene/M +Loren/SM +Lorentzian/M +Lorentz/M +Lorenza/M +Lorenz/M +Lorenzo/M +Loretta/M +Lorette/M +lorgnette/SM +Loria/M +Lorianna/M +Lorianne/M +Lorie/M +Lorilee/M +Lorilyn/M +Lori/M +Lorinda/M +Lorine/M +Lorin/M +loris/SM +Lorita/M +lorn +Lorna/M +Lorne/M +Lorraine/M +Lorrayne/M +Lorre/M +Lorrie/M +Lorri/M +Lorrin/M +lorryload/S +Lorry/M +lorry/SM +Lory/M +Los +loser/M +lose/ZGJBSR +lossage +lossless +loss/SM +lossy/RT +lost/P +Lothaire/M +Lothario/MS +lotion/MS +Lot/M +lot/MS +Lotta/M +lotted +Lotte/M +lotter +lottery/MS +Lottie/M +Lotti/M +lotting +Lott/M +lotto/MS +Lotty/M +lotus/SM +louden/DG +loudhailer/S +loudly/RT +loudmouth/DM +loudmouths +loudness/MS +loudspeaker/SM +loudspeaking +loud/YRNPT +Louella/M +Louie/M +Louisa/M +Louise/M +Louisette/M +Louisiana/M +Louisianan/S +Louisianian/S +Louis/M +Louisville/M +Lou/M +lounger/M +lounge/SRDZG +Lourdes/M +lour/GSD +louse/CSDG +louse's +lousewort/M +lousily +lousiness/MS +lousy/PRT +loutishness/M +loutish/YP +Loutitia/M +lout/SGMD +louver/DMS +L'Ouverture +Louvre/M +lovableness/MS +lovable/U +lovably +lovebird/SM +lovechild +Lovecraft/M +love/DSRMYZGJB +loved/U +Lovejoy/M +Lovelace/M +Loveland/M +lovelessness/M +loveless/YP +lovelies +lovelinesses +loveliness/UM +Lovell/M +lovelornness/M +lovelorn/P +lovely/URPT +Love/M +lovemaking/SM +lover/YMG +lovesick +lovestruck +lovingly +lovingness/M +loving/U +lowborn +lowboy/SM +lowbrow/MS +lowdown/S +Lowell/M +Lowe/M +lowercase/GSD +lower/DG +lowermost +Lowery/M +lowish +lowland/RMZS +Lowlands/M +lowlife/SM +lowlight/MS +lowliness/MS +lowly/PTR +lowness/MS +low/PDRYSZTG +Lowrance/M +lox/MDSG +loyaler +loyalest +loyal/EY +loyalism/SM +loyalist/SM +loyalty/EMS +Loyang/M +Loydie/M +Loyd/M +Loy/M +Loyola/M +lozenge/SDM +LP +LPG +LPN/S +Lr +ls +l's +L's +LSD +ltd +Ltd/M +Lt/M +Luanda/M +Luann/M +luau/MS +lubber/YMS +Lubbock/M +lube/DSMG +lubricant/SM +lubricate/VNGSDX +lubrication/M +lubricator/MS +lubricious/Y +lubricity/SM +Lubumbashi/M +Lucais/M +Luca/MS +Luce/M +lucent/Y +Lucerne/M +Lucho/M +Lucia/MS +Luciana/M +Lucian/M +Luciano/M +lucidity/MS +lucidness/MS +lucid/YP +Lucie/M +Lucien/M +Lucienne/M +Lucifer/M +Lucila/M +Lucile/M +Lucilia/M +Lucille/M +Luci/MN +Lucina/M +Lucinda/M +Lucine/M +Lucio/M +Lucita/M +Lucite/MS +Lucius/M +luck/GSDM +luckier/U +luckily/U +luckiness/UMS +luckless +Lucknow/M +Lucky/M +lucky/RSPT +lucrativeness/SM +lucrative/YP +lucre/MS +Lucretia/M +Lucretius/M +lucubrate/GNSDX +lucubration/M +Lucy/M +Luddite/SM +Ludhiana/M +ludicrousness/SM +ludicrous/PY +Ludlow/M +Ludmilla/M +ludo/M +Ludovico/M +Ludovika/M +Ludvig/M +Ludwig/M +Luella/M +Luelle/M +luff/GSDM +Lufthansa/M +Luftwaffe/M +luge/MC +Luger/M +luggage/SM +lugged +lugger/SM +lugging +Lugosi/M +lug/RS +lugsail/SM +lugubriousness/MS +lugubrious/YP +Luigi/M +Luisa/M +Luise/M +Luis/M +Lukas/M +Luke/M +lukewarmness/SM +lukewarm/PY +Lula/M +Lulita/M +lullaby/GMSD +lull/SDG +lulu/M +Lulu/M +Lu/M +lumbago/SM +lumbar/S +lumberer/M +lumbering/M +lumberjack/MS +lumberman/M +lumbermen +lumber/RDMGZSJ +lumberyard/MS +lumen/M +Lumire/M +luminance/M +luminary/MS +luminescence/SM +luminescent +luminosity/MS +luminousness/M +luminous/YP +lummox/MS +lumper/M +lumpiness/MS +lumpishness/M +lumpish/YP +lump/SGMRDN +lumpy/TPR +lunacy/MS +Luna/M +lunar/S +lunary +lunate/YND +lunatic/S +lunation/M +luncheonette/SM +luncheon/SMDG +luncher/M +lunch/GMRSD +lunchpack +lunchroom/MS +lunchtime/MS +Lundberg/M +Lund/M +Lundquist/M +lune/M +lunge/MS +lunger/M +lungfish/SM +lungful +lung/SGRDM +lunkhead/SM +Lupe/M +lupine/SM +Lupus/M +lupus/SM +Lura/M +lurcher/M +lurch/RSDG +lure/DSRG +lurer/M +Lurette/M +lurex +Luria/M +luridness/SM +lurid/YP +lurker/M +lurk/GZSRD +Lurleen/M +Lurlene/M +Lurline/M +Lusaka/M +Lusa/M +lusciousness/MS +luscious/PY +lushness/MS +lush/YSRDGTP +Lusitania/M +luster/GDM +lustering/M +lusterless +lustfulness/M +lustful/PY +lustily +lustiness/MS +lust/MRDGZS +lustrousness/M +lustrous/PY +lusty/PRT +lutanist/MS +lute/DSMG +lutenist/MS +Lutero/M +lutetium/MS +Lutheranism/MS +Lutheran/SM +Luther/M +luting/M +Lutz +Luxembourgian +Luxembourg/RMZ +Luxemburg's +luxe/MS +luxuriance/MS +luxuriant/Y +luxuriate/GNSDX +luxuriation/M +luxuriousness/SM +luxurious/PY +luxury/MS +Luz/M +Luzon/M +L'vov +Lyallpur/M +lyceum/MS +lychee's +lycopodium/M +Lycra/S +Lycurgus/M +Lyda/M +Lydia/M +Lydian/S +Lydie/M +Lydon/M +lye/JSMG +Lyell/M +lying/Y +Lyle/M +Lyly/M +Lyman/M +Lyme/M +lymphatic/S +lymph/M +lymphocyte/SM +lymphoid +lymphoma/MS +lymphs +Ly/MY +Lynchburg/M +lyncher/M +lynching/M +Lynch/M +lynch/ZGRSDJ +Lynda/M +Lyndell/M +Lyndel/M +Lynde/M +Lyndon/M +Lyndsay/M +Lyndsey/M +Lyndsie/M +Lyndy/M +Lynea/M +Lynelle/M +Lynette/M +Lynett/M +Lyn/M +Lynna/M +Lynnea/M +Lynnelle/M +Lynnell/M +Lynne/M +Lynnet/M +Lynnette/M +Lynnett/M +Lynn/M +Lynsey/M +lynx/MS +Lyon/SM +Lyra/M +lyrebird/MS +lyre/SM +lyricalness/M +lyrical/YP +lyricism/SM +lyricist/SM +lyric/S +Lysenko/M +lysine/M +Lysistrata/M +Lysol/M +Lyssa/M +LyX/M +MA +Maalox/M +ma'am +Mabelle/M +Mabel/M +Mable/M +Mab/M +macabre/Y +macadamize/SDG +macadam/SM +Macao/M +macaque/SM +macaroni/SM +macaroon/MS +Macarthur/M +MacArthur/M +Macaulay/M +macaw/SM +Macbeth/M +Maccabees/M +Maccabeus/M +Macdonald/M +MacDonald/M +MacDraw/M +Macedonia/M +Macedonian/S +Macedon/M +mace/MS +Mace/MS +macerate/DSXNG +maceration/M +macer/M +Macgregor/M +MacGregor/M +machete/SM +Machiavellian/S +Machiavelli/M +machinate/SDXNG +machination/M +machinelike +machine/MGSDB +machinery/SM +machinist/MS +machismo/SM +Mach/M +macho/S +Machs +Macias/M +Macintosh/M +MacIntosh/M +macintosh's +Mackenzie/M +MacKenzie/M +mackerel/SM +Mackinac/M +Mackinaw +mackinaw/SM +mackintosh/SM +mack/M +Mack/M +MacLeish/M +Macmillan/M +MacMillan/M +Macon/SM +MacPaint/M +macram/S +macrobiotic/S +macrobiotics/M +macrocosm/MS +macrodynamic +macroeconomic/S +macroeconomics/M +macromolecular +macromolecule/SM +macron/MS +macrophage/SM +macroscopic +macroscopically +macrosimulation +macro/SM +macrosocioeconomic +Mac/SGMD +mac/SGMDR +Macy/M +Madagascan/SM +Madagascar/M +Madalena/M +Madalyn/M +Mada/M +madame/M +Madame/MS +madam/SM +madcap/S +Maddalena/M +madded +madden/GSD +maddening/Y +Madden/M +madder/MS +maddest +Maddie/M +Maddi/M +madding +Maddox/M +Maddy/M +made/AU +Madeira/SM +Madelaine/M +Madeleine/M +Madelena/M +Madelene/M +Madelina/M +Madeline/M +Madelin/M +Madella/M +Madelle/M +Madel/M +Madelon/M +Madelyn/M +mademoiselle/MS +Madge/M +madhouse/SM +Madhya/M +Madison/M +Madlen/M +Madlin/M +madman/M +madmen +madness/SM +Madonna/MS +mad/PSY +Madras +madras/SM +Madrid/M +madrigal/MSG +Madsen/M +Madurai/M +madwoman/M +madwomen +Mady/M +Maegan/M +Maelstrom/M +maelstrom/SM +Mae/M +maestro/MS +Maeterlinck/M +Mafia/MS +mafia/S +mafiosi +mafioso/M +Mafioso/S +MAG +magazine/DSMG +Magdaia/M +Magdalena/M +Magdalene/M +Magdalen/M +Magda/M +Magellanic +Magellan/M +magenta/MS +magged +Maggee/M +Maggie/M +Maggi/M +magging +maggot/MS +maggoty/RT +Maggy/M +magi +magical/Y +magician/MS +magicked +magicking +magic/SM +Magill/M +Magi/M +Maginot/M +magisterial/Y +magistracy/MS +magistrate/MS +Mag/M +magma/SM +magnanimity/SM +magnanimosity +magnanimous/PY +magnate/SM +magnesia/MS +magnesite/M +magnesium/SM +magnetically +magnetic/S +magnetics/M +magnetism/SM +magnetite/SM +magnetizable +magnetization/ASCM +magnetize/CGDS +magnetized/U +magnetodynamics +magnetohydrodynamical +magnetohydrodynamics/M +magnetometer/MS +magneto/MS +magnetosphere/M +magnetron/M +magnet/SM +magnification/M +magnificence/SM +magnificent/Y +magnified/U +magnify/DRSGNXZ +magniloquence/MS +magniloquent +Magnitogorsk/M +magnitude/SM +magnolia/SM +Magnum +magnum/SM +Magnuson/M +Magog/M +Magoo/M +magpie/SM +Magritte/M +Magruder/M +mag/S +Magsaysay/M +Maguire/SM +Magus/M +Magyar/MS +Mahabharata +Mahala/M +Mahalia/M +maharajah/M +maharajahs +maharanee's +maharani/MS +Maharashtra/M +maharishi/SM +mahatma/SM +Mahavira/M +Mahayana/M +Mahayanist +Mahdi/M +Mahfouz/M +Mahican/SM +mahjong's +Mahler/M +Mahmoud/M +Mahmud/M +mahogany/MS +Mahomet's +mahout/SM +Maia/M +Maible/M +maidenhair/MS +maidenhead/SM +maidenhood/SM +maidenly/P +maiden/YM +maidservant/MS +maid/SMNX +maier +Maier/M +Maiga/M +Maighdiln/M +Maigret/M +mailbag/MS +mailbox/MS +mail/BSJGZMRD +mailer/M +Mailer/M +Maillol/M +maillot/SM +mailman/M +mailmen +Maiman/M +maimedness/M +maimed/P +maimer/M +Maimonides/M +Mai/MR +maim/SGZRD +mainbrace/M +Maine/MZR +Mainer/M +mainframe/MS +mainlander/M +mainland/SRMZ +mainliner/M +mainline/RSDZG +mainly +mainmast/SM +main/SA +mainsail/SM +mains/M +mainspring/SM +mainstay/MS +mainstream/DRMSG +maintainability +maintainable/U +maintain/BRDZGS +maintained/U +maintainer/M +maintenance/SM +maintop/SM +maiolica's +Maire/M +Mair/M +Maisey/M +Maisie/M +maisonette/MS +Maison/M +Maitilde/M +maize/MS +Maj +Maje/M +majestic +majestically +majesty/MS +Majesty/MS +majolica/SM +Majorca/M +major/DMGS +majordomo/S +majorette/SM +majority/SM +Major/M +Majuro/M +makable +Makarios/M +makefile/S +makeover/S +Maker/M +maker/SM +makeshift/S +make/UGSA +makeup/MS +making/SM +Malabar/M +Malabo/M +Malacca/M +Malachi/M +malachite/SM +maladapt/DV +maladjust/DLV +maladjustment/MS +maladministration +maladroitness/MS +maladroit/YP +malady/MS +Malagasy/M +malaise/SM +Mala/M +Malamud/M +malamute/SM +Malanie/M +malaprop +malapropism/SM +Malaprop/M +malarial +malaria/MS +malarious +malarkey/SM +malathion/S +Malawian/S +Malawi/M +Malayalam/M +Malaya/M +Malayan/MS +Malaysia/M +Malaysian/S +Malay/SM +Malchy/M +Malcolm/M +malcontentedness/M +malcontented/PY +malcontent/SMD +Maldive/SM +Maldivian/S +Maldonado/M +maledict +malediction/MS +malefaction/MS +malefactor/MS +malefic +maleficence/MS +maleficent +Male/M +Malena/M +maleness/MS +male/PSM +malevolence/S +malevolencies +malevolent/Y +malfeasance/SM +malfeasant +malformation/MS +malformed +malfunction/SDG +Malia/M +Malian/S +Malibu/M +malice/MGSD +maliciousness/MS +malicious/YU +malignancy/SM +malignant/YS +malign/GSRDYZ +malignity/MS +Mali/M +Malina/M +Malinda/M +Malinde/M +malingerer/M +malinger/GZRDS +Malinowski/M +Malissa/M +Malissia/M +mallard/SM +Mallarm/M +malleability/SM +malleableness/M +malleable/P +mallet/MS +Mallissa/M +Mallorie/M +Mallory/M +mallow/MS +mall/SGMD +Mal/M +malnourished +malnutrition/SM +malocclusion/MS +malodorous +Malone/M +Malorie/M +Malory/M +malposed +malpractice/SM +Malraux/M +Malta/M +malted/S +Maltese +Malthusian/S +Malthus/M +malting/M +maltose/SM +maltreat/GDSL +maltreatment/S +malt/SGMD +malty/RT +Malva/M +Malvina/M +Malvin/M +Malynda/M +mama/SM +mamba/SM +mambo/GSDM +Mame/M +Mamet/M +ma/MH +Mamie/M +mammalian/SM +mammal/SM +mammary +mamma's +mammogram/S +mammography/S +Mammon's +mammon/SM +mammoth/M +mammoths +mammy/SM +Mamore/M +manacle/SDMG +manageability/S +manageableness +manageable/U +managed/U +management/SM +manageress/M +managerial/Y +manager/M +managership/M +manage/ZLGRSD +Managua/M +Manama/M +maana/M +mananas +Manasseh/M +manatee/SM +Manaus's +Manchester/M +Manchu/MS +Manchuria/M +Manchurian/S +Mancini/M +manciple/M +Mancunian/MS +mandala/SM +Mandalay/M +Manda/M +mandamus/GMSD +Mandarin +mandarin/MS +mandate/SDMG +mandatory/S +Mandela +Mandelbrot/M +Mandel/M +mandible/MS +mandibular +Mandie/M +Mandi/M +Mandingo/M +mandolin/MS +mandrake/MS +mandrel/SM +mandrill/SM +Mandy/M +mange/GSD +mane/MDS +Manet/M +maneuverability/MS +maneuverer/M +maneuver/MRDSGB +Manfred/M +manful/Y +manganese/MS +mange/GMSRDZ +manger/M +manginess/S +mangler/M +mangle/RSDG +mangoes +mango/M +mangrove/MS +mangy/PRT +manhandle/GSD +Manhattan/SM +manhole/MS +manhood/MS +manhunt/SM +maniacal/Y +maniac/SM +mania/SM +manically +Manichean/M +manic/S +manicure/MGSD +manicurist/SM +manifestation/SM +manifesto/GSDM +manifest/YDPGS +manifolder/M +manifold/GPYRDMS +manifoldness/M +manikin/MS +Manila/MS +manila/S +manilla's +Mani/M +manioc/SM +manipulability +manipulable +manipulate/SDXBVGN +manipulative/PM +manipulator/MS +manipulatory +Manitoba/M +Manitoulin/M +Manitowoc/M +mankind/M +Mankowski/M +Manley/M +manlike +manliness/SM +manliness's/U +manly/URPT +manna/MS +manned/U +mannequin/MS +mannered/U +mannerism/SM +mannerist/M +mannerliness/MU +mannerly/UP +manner/SDYM +Mann/GM +Mannheim/M +Mannie/M +mannikin's +Manning/M +manning/U +mannishness/SM +mannish/YP +Manny/M +Manolo/M +Mano/M +manometer/SM +Manon/M +manorial +manor/MS +manpower/SM +manqu/M +man's +mansard/SM +manservant/M +manse/XNM +Mansfield/M +mansion/M +manslaughter/SM +Man/SM +Manson/M +mans/S +manta/MS +Mantegna/M +mantelpiece/MS +mantel/SM +mantes +mantilla/MS +mantissa/SM +mantis/SM +mantle/ESDG +Mantle/M +mantle's +mantling/M +mantra/MS +mantrap/SM +manual/SMY +Manuela/M +Manuel/M +manufacture/JZGDSR +manufacturer/M +manumission/MS +manumit/S +manumitted +manumitting +manure/RSDMZG +manuscript/MS +man/USY +Manville/M +Manx +many +Manya/M +Maoism/MS +Maoist/S +Mao/M +Maori/SM +Maplecrest/M +maple/MS +mapmaker/S +mappable +mapped/UA +mapper/S +mapping/MS +Mapplethorpe/M +maps/AU +map/SM +Maputo/M +Marabel/M +marabou/MS +marabout's +Maracaibo/M +maraca/MS +Mara/M +maraschino/SM +Marathi +marathoner/M +Marathon/M +marathon/MRSZ +Marat/M +marauder/M +maraud/ZGRDS +marbleize/GSD +marble/JRSDMG +marbler/M +marbling/M +Marceau/M +Marcela/M +Marcelia/M +Marcelino/M +Marcella/M +Marcelle/M +Marcellina/M +Marcelline/M +Marcello/M +Marcellus/M +Marcel/M +Marcelo/M +Marchall/M +Marchelle/M +marcher/M +marchioness/SM +March/MS +march/RSDZG +Marcia/M +Marciano/M +Marcie/M +Marcile/M +Marcille/M +Marci/M +Marc/M +Marconi/M +Marco/SM +Marcotte/M +Marcus/M +Marcy/M +Mardi/SM +Marduk/M +Mareah/M +mare/MS +Marena/M +Maren/M +Maressa/M +Margalit/M +Margalo/M +Marga/M +Margareta/M +Margarete/M +Margaretha/M +Margarethe/M +Margaret/M +Margaretta/M +Margarette/M +margarine/MS +Margarita/M +margarita/SM +Margarito/M +Margaux/M +Margeaux/M +Marge/M +Margery/M +Marget/M +Margette/M +Margie/M +Margi/M +marginalia +marginality +marginalization +marginalize/SDG +marginal/YS +margin/GSDM +Margit/M +Margo/M +Margot/M +Margrethe/M +Margret/M +Marguerite/M +Margy/M +mariachi/SM +maria/M +Maria/M +Mariam/M +Mariana/SM +Marian/MS +Marianna/M +Marianne/M +Mariann/M +Mariano/M +Maribelle/M +Maribel/M +Maribeth/M +Maricela/M +Marice/M +Maridel/M +Marieann/M +Mariejeanne/M +Mariele/M +Marielle/M +Mariellen/M +Mariel/M +Marie/M +Marietta/M +Mariette/M +Marigold/M +marigold/MS +Marijn/M +Marijo/M +marijuana/SM +Marika/M +Marilee/M +Marilin/M +Marillin/M +Marilyn/M +marimba/SM +Mari/MS +marinade/MGDS +Marina/M +marina/MS +marinara/SM +marinate/NGXDS +marination/M +mariner/M +Marine/S +marine/ZRS +Marin/M +Marinna/M +Marino/M +Mario/M +marionette/MS +Marion/M +Mariquilla/M +Marisa/M +Mariska/M +Marisol/M +Marissa/M +Maritain/M +marital/Y +Marita/M +maritime/R +Maritsa/M +Maritza/M +Mariupol/M +Marius/M +Mariya/M +Marja/M +Marje/M +Marjie/M +Marji/M +Marj/M +marjoram/SM +Marjorie/M +Marjory/M +Marjy/M +Markab/M +markdown/SM +marked/AU +markedly +marker/M +marketability/SM +marketable/U +Marketa/M +marketeer/S +marketer/M +market/GSMRDJBZ +marketing/M +marketplace/MS +mark/GZRDMBSJ +Markham/M +marking/M +Markism/M +markkaa +markka/M +Mark/MS +Markos +Markov +Markovian +Markovitz/M +marks/A +marksman/M +marksmanship/S +marksmen +markup/SM +Markus/M +Marla/M +Marlane/M +Marlboro/M +Marlborough/M +Marleah/M +Marlee/M +Marleen/M +Marlena/M +Marlene/M +Marley/M +Marlie/M +Marline/M +marlinespike/SM +Marlin/M +marlin/SM +marl/MDSG +Marlo/M +Marlon/M +Marlowe/M +Marlow/M +Marlyn/M +Marmaduke/M +marmalade/MS +Marmara/M +marmoreal +marmoset/MS +marmot/SM +Marna/M +Marne/M +Marney/M +Marnia/M +Marnie/M +Marni/M +maroon/GRDS +marquee/MS +Marquesas/M +marque/SM +marquess/MS +marquetry/SM +Marquette/M +Marquez/M +marquise/M +marquisette/MS +Marquis/M +marquis/SM +Marquita/M +Marrakesh/M +marred/U +marriageability/SM +marriageable +marriage/ASM +married/US +Marrilee/M +marring +Marriott/M +Marris/M +Marrissa/M +marrowbone/MS +marrow/GDMS +marry/SDGA +mar/S +Marseillaise/SM +Marseilles +Marseille's +marshal/GMDRSZ +Marshalled/M +marshaller +Marshall/GDM +Marshalling/M +marshallings +Marshal/M +Marsha/M +marshiness/M +marshland/MS +Marsh/M +marshmallow/SM +marsh/MS +marshy/PRT +Marsiella/M +Mar/SMN +marsupial/MS +Martainn/M +Marta/M +Martelle/M +Martel/M +marten/M +Marten/M +Martguerita/M +Martha/M +Marthe/M +Marthena/M +Martial +martial/Y +Martian/S +Martica/M +Martie/M +Marti/M +Martina/M +martinet/SM +Martinez/M +martingale/MS +martini/MS +Martinique/M +Martin/M +Martino/M +martin/SM +Martinson/M +Martita/M +mart/MDNGXS +Mart/MN +Marty/M +Martyn/M +Martynne/M +martyrdom/SM +martyr/GDMS +Marva/M +marvel/DGS +Marvell/M +marvelous/PY +Marve/M +Marven/M +Marvin/M +Marv/NM +Marwin/M +Marxian/S +Marxism/SM +Marxist/SM +Marx/M +Marya/M +Maryanna/M +Maryanne/M +Maryann/M +Marybelle/M +Marybeth/M +Maryellen/M +Maryjane/M +Maryjo/M +Maryland/MZR +Marylee/M +Marylinda/M +Marylin/M +Maryl/M +Marylou/M +Marylynne/M +Mary/M +Maryrose/M +Marys +Marysa/M +marzipan/SM +Masada/M +Masai/M +Masaryk/M +masc +Mascagni/M +mascara/SGMD +mascot/SM +masculineness/M +masculine/PYS +masculinity/SM +Masefield/M +maser/M +Maseru/M +MASH +Masha/M +Mashhad/M +mash/JGZMSRD +m/ASK +masked/U +masker/M +mask/GZSRDMJ +masks/U +masochism/MS +masochistic +masochistically +masochist/MS +masonic +Masonic +Masonite/M +masonry/MS +mason/SDMG +Mason/SM +masquerader/M +masquerade/RSDGMZ +masquer/M +masque/RSMZ +Massachusetts/M +massacre/DRSMG +massager/M +massage/SRDMG +Massasoit/M +Massenet/M +masseur/MS +masseuse/SM +Massey/M +massif/SM +Massimiliano/M +Massimo/M +massing/R +massiveness/SM +massive/YP +massless +mas/SRZ +Mass/S +mass/VGSD +mastectomy/MS +masterclass +mastered/A +masterfulness/M +masterful/YP +master/JGDYM +masterliness/M +masterly/P +mastermind/GDS +masterpiece/MS +mastership/M +Master/SM +masterstroke/MS +masterwork/S +mastery/MS +mast/GZSMRD +masthead/SDMG +masticate/SDXGN +mastication/M +mastic/SM +mastiff/MS +mastodon/MS +mastoid/S +masturbate/SDNGX +masturbation/M +masturbatory +matador/SM +Mata/M +matchable/U +match/BMRSDZGJ +matchbook/SM +matchbox/SM +matched/UA +matcher/M +matches/A +matchless/Y +matchlock/MS +matchmake/GZJR +matchmaker/M +matchmaking/M +matchplay +match's/A +matchstick/MS +matchwood/SM +mated/U +mate/IMS +Matelda/M +Mateo/M +materialism/SM +materialistic +materialistically +materialist/SM +materiality/M +materialization/SM +materialize/CDS +materialized/A +materializer/SM +materializes/A +materializing +materialness/M +material/SPYM +matriel/MS +mater/M +maternal/Y +maternity/MS +mates/U +mathematical/Y +Mathematica/M +mathematician/SM +mathematic/S +mathematics/M +Mathematik/M +Mather/M +Mathe/RM +Mathew/MS +Mathewson/M +Mathian/M +Mathias +Mathieu/M +Mathilda/M +Mathilde/M +Mathis +math/M +maths +Matias/M +Matilda/M +Matilde/M +matine/S +mating/M +matins/M +Matisse/SM +matriarchal +matriarch/M +matriarchs +matriarchy/MS +matrices +matricidal +matricide/MS +matriculate/XSDGN +matriculation/M +matrimonial/Y +matrimony/SM +matrix/M +matron/YMS +mat/SJGMDR +Matsumoto/M +matte/JGMZSRD +Mattel/M +Matteo/M +matter/GDM +Matterhorn/M +Matthaeus/M +Mattheus/M +Matthew/MS +Matthias +Matthieu/M +Matthiew/M +Matthus/M +Mattias/M +Mattie/M +Matti/M +matting/M +mattins's +Matt/M +mattock/MS +mattress/MS +matt's +Matty/M +maturate/DSNGVX +maturational +maturation/M +matureness/M +maturer/M +mature/RSDTPYG +maturity/MS +matzo/SHM +matzot +Maude/M +Maudie/M +maudlin/Y +Maud/M +Maugham/M +Maui/M +mauler/M +maul/RDGZS +maunder/GDS +Maupassant/M +Maura/M +Maureene/M +Maureen/M +Maure/M +Maurene/M +Mauriac/M +Maurice/M +Mauricio/M +Maurie/M +Maurine/M +Maurise/M +Maurita/M +Mauritania/M +Mauritanian/S +Mauritian/S +Mauritius/M +Maurits/M +Maurizia/M +Maurizio/M +Maurois/M +Mauro/M +Maury/M +Mauser/M +mausoleum/SM +mauve/SM +maven/S +maverick/SMDG +mavin's +Mavis/M +Mavra/M +mawkishness/SM +mawkish/PY +Mawr/M +maw/SGMD +max/GDS +Maxie/M +maxillae +maxilla/M +maxillary/S +Maxi/M +maximality +maximal/SY +maxima's +Maximilian/M +Maximilianus/M +Maximilien/M +maximization/SM +maximizer/M +maximize/RSDZG +Maxim/M +Maximo/M +maxim/SM +maximum/MYS +Maxine/M +maxi/S +Max/M +Maxtor/M +Maxwellian +maxwell/M +Maxwell/M +Maxy/M +Maya/MS +Mayan/S +Maybelle/M +maybe/S +mayday/S +may/EGS +Maye/M +mayer +Mayer/M +mayest +Mayfair/M +Mayflower/M +mayflower/SM +mayfly/MS +mayhap +mayhem/MS +Maynard/M +Mayne/M +Maynord/M +mayn't +Mayo/M +mayonnaise/MS +mayoral +mayoralty/MS +mayoress/MS +Mayor/M +mayor/MS +mayorship/M +mayo/S +maypole/MS +Maypole/SM +Mayra/M +May/SMR +mayst +Mazama/M +Mazarin/M +Mazatlan/M +Mazda/M +mazedness/SM +mazed/YP +maze/MGDSR +mazurka/SM +Mazzini/M +Mb +MB +MBA +Mbabane/M +Mbini/M +MC +McAdam/MS +McAllister/M +McBride/M +McCabe/M +McCain/M +McCall/M +McCarthyism/M +McCarthy/M +McCartney/M +McCarty/M +McCauley/M +McClain/M +McClellan/M +McClure/M +McCluskey/M +McConnell/M +McCormick/M +McCoy/SM +McCracken/M +McCray/M +McCullough/M +McDaniel/M +McDermott/M +McDonald/M +McDonnell/M +McDougall/M +McDowell/M +McElhaney/M +McEnroe/M +McFadden/M +McFarland/M +McGee/M +McGill/M +McGovern/M +McGowan/M +McGrath/M +McGraw/M +McGregor/M +McGuffey/M +McGuire/M +MCI/M +McIntosh/M +McIntyre/M +McKay/M +McKee/M +McKenzie/M +McKesson/M +McKinley/M +McKinney/M +McKnight/M +McLanahan/M +McLaughlin/M +McLean/M +McLeod/M +McLuhan/M +McMahon/M +McMartin/M +McMillan/M +McNamara/M +McNaughton/M +McNeil/M +McPherson/M +MD +Md/M +mdse +MDT +ME +Meade/M +Mead/M +meadowland +meadowlark/SM +meadow/MS +Meadows +meadowsweet/M +mead/SM +Meagan/M +meagerness/SM +meager/PY +Meaghan/M +meagres +mealiness/MS +meal/MDGS +mealtime/MS +mealybug/S +mealymouthed +mealy/PRST +meander/JDSG +meaneing +meanie/MS +meaningfulness/SM +meaningful/YP +meaninglessness/SM +meaningless/PY +meaning/M +meanness/S +means/M +meantime/SM +meant/U +meanwhile/S +Meany/M +mean/YRGJTPS +meany's +Meara/M +measle/SD +measles/M +measly/TR +measurable/U +measurably +measure/BLMGRSD +measured/Y +measureless +measurement/SM +measurer/M +measures/A +measuring/A +meas/Y +meataxe +meatball/MS +meatiness/MS +meatless +meatloaf +meatloaves +meat/MS +meatpacking/S +meaty/RPT +Mecca/MS +mecca/S +mechanical/YS +mechanic/MS +mechanism/SM +mechanistic +mechanistically +mechanist/M +mechanization/SM +mechanized/U +mechanizer/M +mechanize/RSDZGB +mechanizes/U +mechanochemically +Mechelle/M +med +medalist/MS +medallion/MS +medal/SGMD +Medan/M +meddle/GRSDZ +meddlesome +Medea/M +Medellin +Medfield/M +mediaeval's +medial/AY +medials +median/YMS +media/SM +mediateness/M +mediate/PSDYVNGX +mediation/ASM +mediator/SM +Medicaid/SM +medical/YS +medicament/MS +Medicare/MS +medicate/DSXNGV +medication/M +Medici/MS +medicinal/SY +medicine/DSMG +medico/SM +medic/SM +medievalist/MS +medieval/YMS +Medina/M +mediocre +mediocrity/MS +meditate/NGVXDS +meditation/M +meditativeness/M +meditative/PY +Mediterranean/MS +mediumistic +medium/SM +medley/SM +medulla/SM +Medusa/M +meed/MS +meekness/MS +meek/TPYR +meerschaum/MS +meeter/M +meetinghouse/S +meeting/M +meet/JGSYR +me/G +mega +megabit/MS +megabuck/S +megabyte/S +megacycle/MS +megadeath/M +megadeaths +megahertz/M +megalithic +megalith/M +megaliths +megalomaniac/SM +megalomania/SM +megalopolis/SM +Megan/M +megaphone/SDGM +megaton/MS +megavolt/M +megawatt/SM +megaword/S +Megen/M +Meggie/M +Meggi/M +Meggy/M +Meghan/M +Meghann/M +Meg/MN +megohm/MS +Mehetabel/M +Meier/M +Meighen/M +Meiji/M +Mei/MR +meioses +meiosis/M +meiotic +Meir/M +Meister/M +Meistersinger/M +Mejia/M +Mekong/M +Mela/M +Melamie/M +melamine/SM +melancholia/SM +melancholic/S +melancholy/MS +Melanesia/M +Melanesian/S +melange/S +Melania/M +Melanie/M +melanin/MS +melanoma/SM +Melantha/M +Melany/M +Melba/M +Melbourne/M +Melcher/M +Melchior/M +meld/SGD +mle/MS +Melendez/M +Melesa/M +Melessa/M +Melicent/M +Melina/M +Melinda/M +Melinde/M +meliorate/XSDVNG +melioration/M +Melisa/M +Melisande/M +Melisandra/M +Melisenda/M +Melisent/M +Melissa/M +Melisse/M +Melita/M +Melitta/M +Mella/M +Mellicent/M +Mellie/M +mellifluousness/SM +mellifluous/YP +Melli/M +Mellisa/M +Mellisent/M +Melloney/M +Mellon/M +mellowness/MS +mellow/TGRDYPS +Melly/M +Mel/MY +Melodee/M +melodically +melodic/S +Melodie/M +melodiousness/S +melodious/YP +melodrama/SM +melodramatically +melodramatic/S +Melody/M +melody/MS +Melonie/M +melon/MS +Melony/M +Melosa/M +Melpomene/M +meltdown/S +melter/M +melting/Y +Melton/M +melt/SAGD +Melva/M +Melville/M +Melvin/M +Melvyn/M +Me/M +member/DMS +membered/AE +members/EA +membership/SM +membrane/MSD +membranous +memento/SM +Memling/M +memoir/MS +memorabilia +memorability/SM +memorableness/M +memorable/P +memorably +memorandum/SM +memorialize/DSG +memorialized/U +memorial/SY +memoriam +memorization/MS +memorized/U +memorizer/M +memorize/RSDZG +memorizes/A +memoryless +memory/MS +memo/SM +Memphis/M +menace/GSD +menacing/Y +menagerie/SM +menage/S +Menander/M +menarche/MS +Menard/M +Mencius/M +Mencken/M +mendaciousness/M +mendacious/PY +mendacity/MS +Mendeleev/M +mendelevium/SM +Mendelian +Mendel/M +Mendelssohn/M +mender/M +Mendez/M +mendicancy/MS +mendicant/S +Mendie/M +mending/M +Mendocino/M +Mendoza/M +mend/RDSJGZ +Mendy/M +Menelaus/M +Menes/M +menfolk/S +menhaden/M +menial/YS +meningeal +meninges +meningitides +meningitis/M +meninx +menisci +meniscus/M +Menkalinan/M +Menkar/M +Menkent/M +Menlo/M +men/MS +Mennonite/SM +Menominee +menopausal +menopause/SM +menorah/M +menorahs +Menotti/M +Mensa/M +Mensch/M +mensch/S +menservants/M +mens/SDG +menstrual +menstruate/NGDSX +menstruation/M +mensurable/P +mensuration/MS +menswear/M +mentalist/MS +mentality/MS +mental/Y +mentholated +menthol/SM +mentionable/U +mentioned/U +mentioner/M +mention/ZGBRDS +mentor/DMSG +Menuhin/M +menu/SM +Menzies/M +meow/DSG +Mephistopheles/M +Merak/M +Mercado/M +mercantile +Mercator/M +Mercedes +mercenariness/M +mercenary/SMP +mercerize/SDG +Mercer/M +mercer/SM +merchandiser/M +merchandise/SRDJMZG +merchantability +merchantman/M +merchantmen +merchant/SBDMG +Mercie/M +mercifully/U +mercifulness/M +merciful/YP +mercilessness/SM +merciless/YP +Merci/M +Merck/M +mercurial/SPY +mercuric +Mercurochrome/M +mercury/MS +Mercury/MS +Mercy/M +mercy/SM +Meredeth/M +Meredithe/M +Meredith/M +Merell/M +meretriciousness/SM +meretricious/YP +mere/YS +merganser/MS +merger/M +merge/SRDGZ +Meridel/M +meridian/MS +meridional +Meridith/M +Meriel/M +Merilee/M +Merill/M +Merilyn/M +meringue/MS +merino/MS +Meris +Merissa/M +merited/U +meritocracy/MS +meritocratic +meritocrats +meritoriousness/MS +meritorious/PY +merit/SCGMD +Meriwether/M +Merla/M +Merle/M +Merlina/M +Merline/M +merlin/M +Merlin/M +Merl/M +mermaid/MS +merman/M +mermen +Merna/M +Merola/M +meromorphic +Merralee/M +Merrel/M +Merriam/M +Merrick/M +Merridie/M +Merrielle/M +Merrie/M +Merrilee/M +Merrile/M +Merrili/M +Merrill/M +merrily +Merrily/M +Merrimack/M +Merrimac/M +merriment/MS +merriness/S +Merritt/M +Merry/M +merrymaker/MS +merrymaking/SM +merry/RPT +Mersey/M +mer/TGDR +Merton/M +Mervin/M +Merv/M +Merwin/M +Merwyn/M +Meryl/M +Mesa +Mesabi/M +mesa/SM +mescaline/SM +mescal/SM +mesdames/M +mesdemoiselles/M +Meshed's +meshed/U +mesh/GMSD +mesmeric +mesmerism/SM +mesmerized/U +mesmerizer/M +mesmerize/SRDZG +Mesolithic/M +mesomorph/M +mesomorphs +meson/MS +Mesopotamia/M +Mesopotamian/S +mesosphere/MS +mesozoic +Mesozoic +mesquite/MS +mes/S +message/SDMG +messeigneurs +messenger/GSMD +Messerschmidt/M +mess/GSDM +Messiaen/M +messiah +Messiah/M +messiahs +Messiahs +messianic +Messianic +messieurs/M +messily +messiness/MS +messmate/MS +Messrs/M +messy/PRT +mestizo/MS +meta +metabolic +metabolically +metabolism/MS +metabolite/SM +metabolize/GSD +metacarpal/S +metacarpi +metacarpus/M +metacircular +metacircularity +metalanguage/MS +metalization/SM +metalized +metallic/S +metalliferous +metallings +metallography/M +metalloid/M +metallurgic +metallurgical/Y +metallurgist/S +metallurgy/MS +metal/SGMD +metalsmith/MS +metalworking/M +metalwork/RMJGSZ +Meta/M +metamathematical +metamorphic +metamorphism/SM +metamorphose/GDS +metamorphosis/M +metaphoric +metaphorical/Y +metaphor/MS +metaphosphate/M +metaphysical/Y +metaphysic/SM +metastability/M +metastable +metastases +metastasis/M +metastasize/DSG +metastatic +metatarsal/S +metatarsi +metatarsus/M +metatheses +metathesis/M +metathesized +metathesizes +metathesizing +metavariable +metempsychoses +metempsychosis/M +meteoric +meteorically +meteorite/SM +meteoritic/S +meteoritics/M +meteoroid/SM +meteorologic +meteorological +meteorologist/S +meteorology/MS +meteor/SM +meter/GDM +mete/ZDGSR +methadone/SM +methane/MS +methanol/SM +methinks +methionine/M +methodicalness/SM +methodical/YP +methodism +Methodism/SM +methodist/MS +Methodist/MS +method/MS +methodological/Y +methodologists +methodology/MS +methought +Methuen/M +Methuselah/M +Methuselahs +methylated +methylene/M +methyl/SM +meticulousness/MS +meticulous/YP +mtier/S +metonymy/M +Metrecal/M +metrical/Y +metricate/SDNGX +metricize/GSD +metrics/M +metric/SM +metronome/MS +metropolis/SM +metropolitanization +metropolitan/S +metro/SM +mets +Metternich/M +mettle/SDM +mettlesome +met/U +Metzler/M +Meuse/M +mewl/GSD +mew/SGD +mews/SM +Mex +Mexicali/M +Mexican/S +Mexico/M +Meyerbeer/M +Meyer/SM +mezzanine/MS +mezzo/S +MFA +mfg +mfr/S +mg +M/GB +Mg/M +MGM/M +mgr +Mgr +MHz +MI +MIA +Mia/M +Miami/SM +Miaplacidus/M +miasmal +miasma/SM +Micaela/M +Micah/M +mica/MS +micelles +mice/M +Michaela/M +Michaelangelo/M +Michaelina/M +Michaeline/M +Michaella/M +Michaelmas/MS +Michael/SM +Michaelson/M +Michail/M +Michale/M +Michal/M +Micheal/M +Micheil/M +Michelangelo/M +Michele/M +Michelina/M +Micheline/M +Michelin/M +Michelle/M +Michell/M +Michel/M +Michelson/M +Michigander/S +Michiganite/S +Michigan/M +Mich/M +Mickelson/M +Mickey/M +mickey/SM +Mickie/M +Micki/M +Mick/M +Micky/M +Mic/M +Micmac/M +micra's +microamp +microanalysis/M +microanalytic +microbe/MS +microbial +microbicidal +microbicide/M +microbiological +microbiologist/MS +microbiology/SM +microbrewery/S +microchemistry/M +microchip/S +microcircuit/MS +microcode/GSD +microcomputer/MS +microcosmic +microcosm/MS +microdensitometer +microdot/MS +microeconomic/S +microeconomics/M +microelectronic/S +microelectronics/M +microfiber/S +microfiche/M +microfilm/DRMSG +microfossils +micrography/M +microgroove/MS +microhydrodynamics +microinstruction/SM +microjoule +microlevel +microlight/S +micromanage/GDSL +micromanagement/S +micrometeorite/MS +micrometeoritic +micrometer/SM +Micronesia/M +Micronesian/S +micron/MS +microorganism/SM +microphone/SGM +Microport/M +microprocessing +microprocessor/SM +microprogrammed +microprogramming +microprogram/SM +micro/S +microscope/SM +microscopic +microscopical/Y +microscopy/MS +microsecond/MS +microsimulation/S +Microsystems +micros/M +Microsoft/M +microsomal +microstore +microsurgery/SM +MicroVAXes +MicroVAX/M +microvolt/SM +microwaveable +microwave/BMGSD +microword/S +midair/MS +midas +Midas/M +midband/M +midday/MS +midden/SM +middest +middlebrow/SM +Middlebury/M +middle/GJRSD +middleman/M +middlemen +middlemost +Middlesex/M +Middleton/M +Middletown/M +middleweight/SM +middling/Y +middy/SM +Mideastern +Mideast/M +midfield/RM +Midge/M +midge/SM +midget/MS +midi/S +midland/MRS +Midland/MS +midlife +midlives +midmorn/G +midmost/S +midnight/SYM +midpoint/MS +midrange +midrib/MS +midriff/MS +mid/S +midscale +midsection/M +midshipman/M +midshipmen +midship/S +midspan +midstream/MS +midst/SM +midsummer/MS +midterm/MS +midtown/MS +Midway/M +midway/S +midweek/SYM +Midwesterner/M +Midwestern/ZR +Midwest/M +midwicket +midwifery/SM +midwife/SDMG +midwinter/YMS +midwives +midyear/MS +mien/M +miff/GDS +mightily +mightiness/MS +mightn't +might/S +mighty/TPR +mignon +mignonette/SM +Mignon/M +Mignonne/M +migraine/SM +migrant/MS +migrate/ASDG +migration/MS +migrative +migratory/S +MIG/S +Miguela/M +Miguelita/M +Miguel/M +mikado/MS +Mikaela/M +Mikael/M +mike/DSMG +Mikel/M +Mike/M +Mikey/M +Mikhail/M +Mikkel/M +Mikol/M +Mikoyan/M +milady/MS +Milagros/M +Milanese +Milan/M +milch/M +mildew/DMGS +mildness/MS +Mildred/M +Mildrid/M +mild/STYRNP +mileage/SM +Milena/M +milepost/SM +miler/M +mile/SM +Mile/SM +milestone/MS +Milford/M +Milicent/M +milieu/SM +Milissent/M +militancy/MS +militantness/M +militant/YPS +militarily +militarism/SM +militaristic +militarist/MS +militarization/SCM +militarize/SDCG +military +militate/SDG +militiaman/M +militiamen +militia/SM +Milka/M +Milken/M +milker/M +milk/GZSRDM +milkiness/MS +milkmaid/SM +milkman/M +milkmen +milkshake/S +milksop/SM +milkweed/MS +milky/RPT +millage/S +Millard/M +Millay/M +millenarian +millenarianism/M +millennial +millennialism +millennium/MS +millepede's +miller/M +Miller/M +Millet/M +millet/MS +milliamp +milliampere/S +milliard/MS +millibar/MS +Millicent/M +millidegree/S +Millie/M +milligram/MS +millijoule/S +Millikan/M +milliliter/MS +Milli/M +millimeter/SM +milliner/SM +millinery/MS +milling/M +millionaire/MS +million/HDMS +millionth/M +millionths +millipede/SM +millisecond/MS +Millisent/M +millivoltmeter/SM +millivolt/SM +milliwatt/S +millpond/MS +millrace/SM +mill/SGZMRD +Mill/SMR +millstone/SM +millstream/SM +millwright/MS +Milly/M +mil/MRSZ +Mil/MY +Milne/M +Milo/M +Milquetoast/S +milquetoast/SM +Miltiades/M +Miltie/M +Milt/M +milt/MDSG +Miltonic +Milton/M +Miltown/M +Milty/M +Milwaukee/M +Milzie/M +MIMD +mime/DSRMG +mimeograph/GMDS +mimeographs +mimer/M +mimesis/M +mimetic +mimetically +mimicked +mimicker/SM +mimicking +mimicry/MS +mimic/S +Mimi/M +mi/MNX +Mimosa/M +mimosa/SM +Mina/M +minaret/MS +minatory +mincemeat/MS +mincer/M +mince/SRDGZJ +mincing/Y +Minda/M +Mindanao/M +mind/ARDSZG +mindbogglingly +minded/P +minder/M +mindfully +mindfulness/MS +mindful/U +mindlessness/SM +mindless/YP +Mindoro/M +min/DRZGJ +mind's +mindset/S +Mindy/M +minefield/MS +mineralization/C +mineralized/U +mineralogical +mineralogist/SM +mineralogy/MS +mineral/SM +miner/M +Miner/M +Minerva/M +mineshaft +mine/SNX +minestrone/MS +minesweeper/MS +Minetta/M +Minette/M +mineworkers +mingle/SDG +Ming/M +Mingus/M +miniature/GMSD +miniaturist/SM +miniaturization/MS +miniaturize/SDG +minibike/S +minibus/SM +minicab/M +minicam/MS +minicomputer/SM +minidress/SM +minify/GSD +minimalism/S +minimalistic +minimalist/MS +minimality +minimal/SY +minima's +minimax/M +minimization/MS +minimized/U +minimizer/M +minimize/RSDZG +minim/SM +minimum/MS +mining/M +minion/M +mini/S +miniseries +miniskirt/MS +ministerial/Y +minister/MDGS +ministrant/S +ministration/SM +ministry/MS +minivan/S +miniver/M +minke +mink/SM +Min/MR +Minna/M +Minnaminnie/M +Minneapolis/M +Minne/M +minnesinger/MS +Minnesota/M +Minnesotan/S +Minnie/M +Minni/M +Minn/M +Minnnie/M +minnow/SM +Minny/M +Minoan/S +Minolta/M +minor/DMSG +minority/MS +Minor/M +Minos +Minotaur/M +minotaur/S +Minot/M +minoxidil/S +Minsk/M +Minsky/M +minster/SM +minstrel/SM +minstrelsy/MS +mintage/SM +Mintaka/M +Minta/M +minter/M +mint/GZSMRD +minty/RT +minuend/SM +minuet/SM +Minuit/M +minuscule/SM +minus/S +minuteman +Minuteman/M +minutemen +minuteness/SM +minute/RSDPMTYG +minutiae +minutia/M +minx/MS +Miocene +MIPS +Miquela/M +Mirabeau/M +Mirabella/M +Mirabelle/M +Mirabel/M +Mirach/M +miracle/MS +miraculousness/M +miraculous/PY +mirage/GSDM +Mira/M +Miranda/M +Miran/M +Mireielle/M +Mireille/M +Mirella/M +Mirelle/M +mire/MGDS +Mirfak/M +Miriam/M +Mirilla/M +Mir/M +Mirna/M +Miro +mirror/DMGS +mirthfulness/SM +mirthful/PY +mirthlessness/M +mirthless/YP +mirth/M +mirths +MIRV/DSG +miry/RT +Mirzam/M +misaddress/SDG +misadventure/SM +misalign/DSGL +misalignment/MS +misalliance/MS +misanalysed +misanthrope/MS +misanthropic +misanthropically +misanthropist/S +misanthropy/SM +misapplier/M +misapply/GNXRSD +misapprehend/GDS +misapprehension/MS +misappropriate/GNXSD +misbegotten +misbehaver/M +misbehave/RSDG +misbehavior/SM +misbrand/DSG +misc +miscalculate/XGNSD +miscalculation/M +miscall/SDG +miscarriage/MS +miscarry/SDG +miscast/GS +miscegenation/SM +miscellanea +miscellaneous/PY +miscellany/MS +Mischa/M +mischance/MGSD +mischief/MDGS +mischievousness/MS +mischievous/PY +miscibility/S +miscible/C +misclassification/M +misclassified +misclassifying +miscode/SDG +miscommunicate/NDS +miscomprehended +misconceive/GDS +misconception/MS +misconduct/GSMD +misconfiguration +misconstruction/MS +misconstrue/DSG +miscopying +miscount/DGS +miscreant/MS +miscue/MGSD +misdeal/SG +misdealt +misdeed/MS +misdemeanant/SM +misdemeanor/SM +misdiagnose/GSD +misdid +misdirect/GSD +misdirection/MS +misdirector/S +misdoes +misdo/JG +misdone +miserableness/SM +miserable/SP +miserably +miser/KM +miserliness/MS +miserly/P +misery/MS +mises/KC +misfeasance/MS +misfeature/M +misfield +misfile/SDG +misfire/SDG +misfit/MS +misfitted +misfitting +misfortune/SM +misgauge/GDS +misgiving/MYS +misgovern/LDGS +misgovernment/S +misguidance/SM +misguidedness/M +misguided/PY +misguide/DRSG +misguider/M +Misha/M +mishandle/SDG +mishap/MS +mishapped +mishapping +misheard +mishear/GS +mishitting +mishmash/SM +misidentification/M +misidentify/GNSD +misinformation/SM +misinform/GDS +misinterpretation/MS +misinterpreter/M +misinterpret/RDSZG +misjudge/DSG +misjudging/Y +misjudgment/MS +Miskito +mislabel/DSG +mislaid +mislay/GS +misleader/M +mislead/GRJS +misleading/Y +misled +mismanage/LGSD +mismanagement/MS +mismatch/GSD +misname/GSD +misnomer/GSMD +misogamist/MS +misogamy/MS +misogynistic +misogynist/MS +misogynous +misogyny/MS +misperceive/SD +misplace/GLDS +misplacement/MS +misplay/GSD +mispositioned +misprint/SGDM +misprision/SM +mispronounce/DSG +mispronunciation/MS +misquotation/MS +misquote/GDS +misreader/M +misread/RSGJ +misrelated +misremember/DG +misreport/DGS +misrepresentation/MS +misrepresenter/M +misrepresent/SDRG +misroute/DS +misrule/SDG +missal/ESM +misshape/DSG +misshapenness/SM +misshapen/PY +Missie/M +missile/MS +missilery/SM +mission/AMS +missionary/MS +missioned +missioner/SM +missioning +missis's +Mississauga/M +Mississippian/S +Mississippi/M +missive/MS +Missoula/M +Missourian/S +Missouri/M +misspeak/SG +misspecification +misspecified +misspelling/M +misspell/SGJD +misspend/GS +misspent +misspoke +misspoken +mis/SRZ +miss/SDEGV +Miss/SM +misstate/GLDRS +misstatement/MS +misstater/M +misstep/MS +misstepped +misstepping +missus/SM +Missy/M +mistakable/U +mistake/BMGSR +mistaken/Y +mistaker/M +mistaking/Y +Mistassini/M +mister/GDM +Mister/SM +mistily +Misti/M +mistime/GSD +mistiness/S +mistletoe/MS +mist/MRDGZS +mistook +mistral/MS +mistranslated +mistranslates +mistranslating +mistranslation/SM +mistreat/DGSL +mistreatment/SM +Mistress/MS +mistress/MSY +mistrial/SM +mistruster/M +mistrustful/Y +mistrust/SRDG +Misty/M +mistype/SDGJ +misty/PRT +misunderstander/M +misunderstanding/M +misunderstand/JSRZG +misunderstood +misuser/M +misuse/RSDMG +miswritten +Mitchael/M +Mitchell/M +Mitchel/M +Mitch/M +miterer/M +miter/GRDM +mite/SRMZ +Mitford/M +Mithra/M +Mithridates/M +mitigated/U +mitigate/XNGVDS +mitigation/M +MIT/M +mitoses +mitosis/M +mitotic +MITRE/SM +Mitsubishi/M +mitten/M +Mitterrand/M +mitt/XSMN +Mitty/M +Mitzi/M +mitzvahs +mixable +mix/AGSD +mixed/U +mixer/SM +mixture/SM +Mizar/M +mizzenmast/SM +mizzen/MS +Mk +mks +ml +Mlle/M +mm +MM +MMe +Mme/SM +MN +mnemonically +mnemonics/M +mnemonic/SM +Mnemosyne/M +Mn/M +MO +moan/GSZRDM +moat/SMDG +mobbed +mobber +mobbing +mobcap/SM +Mobile/M +mobile/S +mobility/MS +mobilizable +mobilization/AMCS +mobilize/CGDS +mobilized/U +mobilizer/MS +mobilizes/A +Mobil/M +mob/MS +mobster/MS +Mobutu/M +moccasin/SM +mocha/SM +mockers/M +mockery/MS +mock/GZSRD +mockingbird/MS +mocking/Y +mo/CSK +modality/MS +modal/Y +modeled/A +modeler/M +modeling/M +models/A +model/ZGSJMRD +mode/MS +modem/SM +moderated/U +moderateness/SM +moderate/PNGDSXY +moderation/M +moderator/MS +modernism/MS +modernistic +modernist/S +modernity/SM +modernization/MS +modernized/U +modernizer/M +modernize/SRDGZ +modernizes/U +modernness/SM +modern/PTRYS +Modesta/M +Modestia/M +Modestine/M +Modesto/M +modest/TRY +Modesty/M +modesty/MS +modicum/SM +modifiability/M +modifiableness/M +modifiable/U +modification/M +modified/U +modifier/M +modify/NGZXRSD +Modigliani/M +modishness/MS +modish/YP +mod/TSR +Modula/M +modularity/SM +modularization +modularize/SDG +modular/SY +modulate/ADSNCG +modulation/CMS +modulator/ACSM +module/SM +moduli +modulo +modulus/M +modus +Moe/M +Moen/M +Mogadiscio's +Mogadishu +mogul/MS +Mogul/MS +mohair/SM +Mohamed/M +Mohammad/M +Mohammedanism/MS +Mohammedan/SM +Mohammed's +Mohandas/M +Mohandis/M +Mohawk/MS +Mohegan/S +Mohican's +Moho/M +Mohorovicic/M +Mohr/M +moiety/MS +moil/SGD +Moina/M +Moines/M +Moira/M +moire/MS +Moise/MS +Moiseyev/M +Moishe/M +moistener/M +moisten/ZGRD +moistness/MS +moist/TXPRNY +moisture/MS +moisturize/GZDRS +Mojave/M +molal +molarity/SM +molar/MS +molasses/MS +Moldavia/M +Moldavian/S +moldboard/SM +molder/DG +moldiness/SM +molding/M +mold/MRDJSGZ +Moldova +moldy/PTR +molecularity/SM +molecular/Y +molecule/MS +molehill/SM +mole/MTS +moleskin/MS +molestation/SM +molested/U +molester/M +molest/RDZGS +Moliere +Molina/M +Moline/M +Mollee/M +Mollie/M +mollification/M +mollify/XSDGN +Molli/M +Moll/M +moll/MS +mollusc's +mollusk/S +mollycoddler/M +mollycoddle/SRDG +Molly/M +molly/SM +Molnar/M +Moloch/M +Molokai/M +Molotov/M +molter/M +molt/RDNGZS +Moluccas +molybdenite/M +molybdenum/MS +Mombasa/M +momenta +momentarily +momentariness/SM +momentary/P +moment/MYS +momentousness/MS +momentous/YP +momentum/SM +momma/S +Mommy/M +mommy/SM +Mo/MN +mom/SM +Monaco/M +monadic +monad/SM +Monah/M +Mona/M +monarchic +monarchical +monarchism/MS +monarchistic +monarchist/MS +monarch/M +monarchs +monarchy/MS +Monash/M +monastery/MS +monastical/Y +monasticism/MS +monastic/S +monaural/Y +Mondale/M +Monday/MS +Mondrian/M +Monegasque/SM +Monera/M +monetarily +monetarism/S +monetarist/MS +monetary +monetization/CMA +monetize/CGADS +Monet/M +moneybag/SM +moneychangers +moneyer/M +moneylender/SM +moneymaker/MS +moneymaking/MS +money/SMRD +Monfort/M +monger/SGDM +Mongolia/M +Mongolian/S +Mongolic/M +mongolism/SM +mongoloid/S +Mongoloid/S +Mongol/SM +mongoose/SM +mongrel/SM +Monica/M +monies/M +Monika/M +moniker/MS +Monique/M +monism/MS +monist/SM +monition/SM +monitored/U +monitor/GSMD +monitory/S +monkeyshine/S +monkey/SMDG +monkish +Monk/M +monk/MS +monkshood/SM +Monmouth/M +monochromatic +monochromator +monochrome/MS +monocle/SDM +monoclinic +monoclonal/S +monocotyledonous +monocotyledon/SM +monocular/SY +monodic +monodist/S +monody/MS +monogamist/MS +monogamous/PY +monogamy/MS +monogrammed +monogramming +monogram/MS +monograph/GMDS +monographs +monolingualism +monolingual/S +monolithic +monolithically +monolith/M +monoliths +monologist/S +monologue/GMSD +monomaniacal +monomaniac/MS +monomania/MS +monomeric +monomer/SM +monomial/SM +mono/MS +Monongahela/M +mononuclear +mononucleoses +mononucleosis/M +monophonic +monoplane/MS +monopole/S +monopolistic +monopolist/MS +monopolization/MS +monopolized/U +monopolize/GZDSR +monopolizes/U +monopoly/MS +monorail/SM +monostable +monosyllabic +monosyllable/MS +monotheism/SM +monotheistic +monotheist/S +monotone/SDMG +monotonic +monotonically +monotonicity +monotonousness/MS +monotonous/YP +monotony/MS +monovalent +monoxide/SM +Monroe/M +Monro/M +Monrovia/M +Monsanto/M +monseigneur +monsieur/M +Monsignori +Monsignor/MS +monsignor/S +Mon/SM +monsoonal +monsoon/MS +monster/SM +monstrance/ASM +monstrosity/SM +monstrousness/M +monstrous/YP +montage/SDMG +Montague/M +Montaigne/M +Montana/M +Montanan/MS +Montcalm/M +Montclair/M +Monte/M +Montenegrin +Montenegro/M +Monterey/M +Monterrey/M +Montesquieu/M +Montessori/M +Monteverdi/M +Montevideo/M +Montezuma +Montgomery/M +monthly/S +month/MY +months +Monticello/M +Monti/M +Mont/M +Montmartre/M +Montoya/M +Montpelier/M +Montrachet/M +Montreal/M +Montserrat/M +Monty/M +monumentality/M +monumental/Y +monument/DMSG +mooch/ZSRDG +moodily +moodiness/MS +mood/MS +Moody/M +moody/PTR +Moog +moo/GSD +moonbeam/SM +Mooney/M +moon/GDMS +moonless +moonlight/GZDRMS +moonlighting/M +moonlit +Moon/M +moonscape/MS +moonshiner/M +moonshine/SRZM +moonshot/MS +moonstone/SM +moonstruck +moonwalk/SDG +Moore/M +moor/GDMJS +mooring/M +Moorish +moorland/MS +Moor/MS +moose/M +moot/RDGS +moped/MS +moper/M +mope/S +mopey +mopier +mopiest +mopish +mopped +moppet/MS +mopping +mop/SZGMDR +moraine/MS +morale/MS +Morales/M +moralistic +moralistically +moralist/MS +morality/UMS +moralization/CS +moralize/CGDRSZ +moralled +moraller +moralling +moral/SMY +Mora/M +Moran/M +morass/SM +moratorium/SM +Moravia/M +Moravian +moray/SM +morbidity/SM +morbidness/S +morbid/YP +mordancy/MS +mordant/GDYS +Mordecai/M +Mord/M +Mordred/M +Mordy/M +more/DSN +Moreen/M +Morehouse/M +Moreland/M +morel/SM +More/M +Morena/M +Moreno/M +moreover +Morey/M +Morgana/M +Morganica/M +Morgan/MS +Morganne/M +morgen/M +Morgen/M +morgue/SM +Morgun/M +Moria/M +Moriarty/M +moribundity/M +moribund/Y +Morie/M +Morin/M +morion/M +Morison/M +Morissa/M +Morita/M +Moritz/M +Morlee/M +Morley/M +Morly/M +Mormonism/MS +Mormon/SM +Morna/M +morning/MY +morn/SGJDM +Moroccan/S +Morocco/M +morocco/SM +Moro/M +moronic +moronically +Moroni/M +moron/SM +moroseness/MS +morose/YP +morpheme/DSMG +morphemic/S +Morpheus/M +morph/GDJ +morphia/S +morphine/MS +morphism/MS +morphologic +morphological/Y +morphology/MS +morphophonemic/S +morphophonemics/M +morphs +Morrie/M +morris +Morris/M +Morrison/M +Morristown/M +Morrow/M +morrow/MS +Morry/M +morsel/GMDS +Morse/M +mortality/SM +mortal/SY +mortarboard/SM +mortar/GSDM +Morten/M +mortgageable +mortgagee/SM +mortgage/MGDS +mortgagor/SM +mortice's +mortician/SM +Mortie/M +mortification/M +mortified/Y +mortifier/M +mortify/DRSXGN +Mortimer/M +mortise/MGSD +Mort/MN +Morton/M +mortuary/MS +Morty/M +Mosaic +mosaicked +mosaicking +mosaic/MS +Moscone/M +Moscow/M +Moseley/M +Moselle/M +Mose/MSR +Moser/M +mosey/SGD +Moshe/M +Moslem's +Mosley/M +mosque/SM +mosquitoes +mosquito/M +mos/S +mossback/MS +Mossberg/M +Moss/M +moss/SDMG +mossy/SRT +most/SY +Mosul/M +mote/ASCNK +motel/MS +mote's +motet/SM +mothball/DMGS +motherboard/MS +motherfucker/MS! +motherfucking/! +motherhood/SM +mothering/M +motherland/SM +motherless +motherliness/MS +motherly/P +mother/RDYMZG +moths +moth/ZMR +motif/MS +motile/S +motility/MS +motional/K +motioner/M +motion/GRDMS +motionlessness/S +motionless/YP +motion's/ACK +motions/K +motivated/U +motivate/XDSNGV +motivational/Y +motivation/M +motivator/S +motiveless +motive/MGSD +motley/S +motlier +motliest +mot/MSV +motocross/SM +motorbike/SDGM +motorboat/MS +motorcade/MSDG +motorcar/MS +motorcycle/GMDS +motorcyclist/SM +motor/DMSG +motoring/M +motorist/SM +motorization/SM +motorize/DSG +motorized/U +motorman/M +motormen +motormouth +motormouths +Motorola/M +motorway/SM +Motown/M +mottle/GSRD +mottler/M +Mott/M +mottoes +motto/M +moue/DSMG +moulder/DSG +moult/GSD +mound/GMDS +mountable +mountaineering/M +mountaineer/JMDSG +mountainousness/M +mountainous/PY +mountainside/MS +mountain/SM +mountaintop/SM +Mountbatten/M +mountebank/SGMD +mounted/U +mount/EGACD +mounter/SM +mounties +Mountie/SM +mounting/MS +Mount/M +mounts/AE +mourner/M +mournfuller +mournfullest +mournfulness/S +mournful/YP +mourning/M +mourn/ZGSJRD +mouser/M +mouse/SRDGMZ +mousetrapped +mousetrapping +mousetrap/SM +mousiness/MS +mousing/M +mousse/MGSD +Moussorgsky/M +mousy/PRT +Mouthe/M +mouthful/MS +mouthiness/SM +mouth/MSRDG +mouthorgan +mouthpiece/SM +mouths +mouthwash/SM +mouthwatering +mouthy/PTR +Mouton/M +mouton/SM +movable/ASP +movableness/AM +move/ARSDGZB +moved/U +movement/SM +mover/AM +moviegoer/S +movie/SM +moving/YS +mower/M +Mowgli/M +mowing/M +mow/SDRZG +moxie/MS +Moyer/M +Moyna/M +Moyra/M +Mozambican/S +Mozambique/M +Mozart/M +Mozelle/M +Mozes/M +Mozilla/M +mozzarella/MS +mp +MP +mpg +mph +MPH +MRI +Mr/M +Mrs +ms +M's +MS +MSG +Msgr/M +m's/K +Ms/S +MST +MSW +mt +MT +mtg +mtge +Mt/M +MTS +MTV +Muawiya/M +Mubarak/M +muchness/M +much/SP +mucilage/MS +mucilaginous +mucker/M +muck/GRDMS +muckraker/M +muckrake/ZMDRSG +mucky/RT +mucosa/M +mucous +mucus/SM +mudded +muddily +muddiness/SM +mudding +muddle/GRSDZ +muddleheaded/P +muddlehead/SMD +muddler/M +muddy/TPGRSD +mudflat/S +mudguard/SM +mudlarks +mud/MS +mudroom/S +mudslide/S +mudslinger/M +mudslinging/M +mudsling/JRGZ +Mueller/M +Muenster +muenster/MS +muesli/M +muezzin/MS +muff/GDMS +Muffin/M +muffin/SM +muffler/M +muffle/ZRSDG +Mufi/M +Mufinella/M +mufti/MS +Mugabe/M +mugged +mugger/SM +mugginess/S +mugging/S +muggy/RPT +mugshot/S +mug/SM +mugwump/MS +Muhammadanism/S +Muhammadan/SM +Muhammad/M +Muire/M +Muir/M +Mukden/M +mukluk/SM +mulattoes +mulatto/M +mulberry/MS +mulch/GMSD +mulct/SDG +Mulder/M +mule/MGDS +muleskinner/S +muleteer/MS +mulishness/MS +mulish/YP +mullah/M +mullahs +mullein/MS +Mullen/M +muller/M +Muller/M +mullet/MS +Mulligan/M +mulligan/SM +mulligatawny/SM +Mullikan/M +Mullins +mullion/MDSG +mull/RDSG +Multan/M +multi +Multibus/M +multicellular +multichannel/M +multicollinearity/M +multicolor/SDM +multicolumn +multicomponent +multicomputer/MS +Multics/M +MULTICS/M +multicultural +multiculturalism/S +multidimensional +multidimensionality +multidisciplinary +multifaceted +multifamily +multifariousness/SM +multifarious/YP +multifigure +multiform +multifunction/D +multilateral/Y +multilayer +multilevel/D +multilingual +multilingualism/S +multimedia/S +multimegaton/M +multimeter/M +multimillionaire/SM +multinational/S +multinomial/M +multiphase +multiple/SM +multiplet/SM +multiplex/GZMSRD +multiplexor's +multipliable +multiplicand/SM +multiplication/M +multiplicative/YS +multiplicity/MS +multiplier/M +multiply/ZNSRDXG +multiprocess/G +multiprocessor/MS +multiprogram +multiprogrammed +multiprogramming/MS +multipurpose +multiracial +multistage +multistory/S +multisyllabic +multitasking/S +multitude/MS +multitudinousness/M +multitudinous/YP +multiuser +multivalent +multivalued +multivariate +multiversity/M +multivitamin/S +mu/M +mumbler/M +mumbletypeg/S +mumble/ZJGRSD +Mumford/M +mummed +mummer/SM +mummery/MS +mummification/M +mummify/XSDGN +mumming +mum/MS +mummy/GSDM +mumps/M +muncher/M +Mnchhausen/M +munchies +Munch/M +munch/ZRSDG +Muncie/M +mundane/YSP +Mundt/M +munge/JGZSRD +Munich/M +municipality/SM +municipal/YS +munificence/MS +munificent/Y +munition/SDG +Munmro/M +Munoz/M +Munroe/M +Munro/M +mun/S +Munsey/M +Munson/M +Munster/MS +Muong/M +muon/M +Muppet/M +muralist/SM +mural/SM +Murasaki/M +Murat/M +Murchison/M +Murcia/M +murderer/M +murderess/S +murder/GZRDMS +murderousness/M +murderous/YP +Murdoch/M +Murdock/M +Mureil/M +Murial/M +muriatic +Murielle/M +Muriel/M +Murillo/M +murkily +murkiness/S +murk/TRMS +murky/RPT +Murmansk/M +murmurer/M +murmuring/U +murmurous +murmur/RDMGZSJ +Murphy/M +murrain/SM +Murray/M +Murrow/M +Murrumbidgee/M +Murry/M +Murvyn/M +muscatel/MS +Muscat/M +muscat/SM +musclebound +muscle/SDMG +Muscovite/M +muscovite/MS +Muscovy/M +muscularity/SM +muscular/Y +musculature/SM +muse +Muse/M +muser/M +musette/SM +museum/MS +mus/GJDSR +musher/M +mushiness/MS +mush/MSRDG +mushroom/DMSG +mushy/PTR +Musial/M +musicale/SM +musicality/SM +musicals +musical/YU +musician/MYS +musicianship/MS +musicked +musicking +musicological +musicologist/MS +musicology/MS +music/SM +musing/Y +Muskegon/M +muskeg/SM +muskellunge/SM +musketeer/MS +musketry/MS +musket/SM +musk/GDMS +muskie/M +muskiness/MS +muskmelon/MS +muskox/N +muskrat/MS +musky/RSPT +Muslim/MS +muslin/MS +mussel/MS +Mussolini/MS +Mussorgsky/M +muss/SDG +mussy/RT +mustache/DSM +mustachio/MDS +mustang/MS +mustard/MS +muster/GD +mustily +mustiness/MS +mustn't +must/RDGZS +must've +musty/RPT +mutability/SM +mutableness/M +mutable/P +mutably +mutagen/SM +mutant/MS +mutate/XVNGSD +mutational/Y +mutation/M +mutator/S +muted/Y +muteness/S +mute/PDSRBYTG +mutilate/XDSNG +mutilation/M +mutilator/MS +mutineer/SMDG +mutinous/Y +mutiny/MGSD +Mutsuhito/M +mutterer/M +mutter/GZRDJ +muttonchops +mutton/SM +mutt/ZSMR +mutuality/S +mutual/SY +muumuu/MS +muzak +Muzak/SM +Muzo/M +muzzled/U +muzzle/MGRSD +muzzler/M +MVP +MW +Myanmar +Mycah/M +Myca/M +Mycenaean +Mycenae/M +Mychal/M +mycologist/MS +mycology/MS +myelitides +myelitis/M +Myer/MS +myers +mylar +Mylar/S +Myles/M +Mylo/M +My/M +myna/SM +Mynheer/M +myocardial +myocardium/M +myopia/MS +myopically +myopic/S +Myrah/M +Myra/M +Myranda/M +Myrdal/M +myriad/S +Myriam/M +Myrilla/M +Myrle/M +Myrlene/M +myrmidon/S +Myrna/M +Myron/M +myrrh/M +myrrhs +Myrta/M +Myrtia/M +Myrtice/M +Myrtie/M +Myrtle/M +myrtle/SM +Myrvyn/M +Myrwyn/M +mys +my/S +myself +Mysore/M +mysteriousness/MS +mysterious/YP +mystery/MDSG +mystical/Y +mysticism/MS +mystic/SM +mystification/M +mystifier/M +mystify/CSDGNX +mystifying/Y +mystique/MS +Myst/M +mythic +mythical/Y +myth/MS +mythographer/SM +mythography/M +mythological/Y +mythologist/MS +mythologize/CSDG +mythology/SM +myths +N +NAACP +nabbed +nabbing +Nabisco/M +nabob/SM +Nabokov/M +nab/S +nacelle/SM +nacho/S +NaCl/M +nacre/MS +nacreous +Nada/M +Nadean/M +Nadeen/M +Nader/M +Nadia/M +Nadine/M +nadir/SM +Nadiya/M +Nadya/M +Nady/M +nae/VM +Nagasaki/M +nagged +nagger/S +nagging/Y +nag/MS +Nagoya/M +Nagpur/M +Nagy/M +Nahuatl/SM +Nahum/M +naiad/SM +naifs +nailbrush/SM +nailer/M +nail/SGMRD +Naipaul/M +Nair/M +Nairobi/M +Naismith/M +naive/SRTYP +naivet/SM +naivety/MS +Nakamura/M +Nakayama/M +nakedness/MS +naked/TYRP +Nakoma/M +Nalani/M +Na/M +Namath/M +nameable/U +name/ADSG +namedrop +namedropping +named's +named/U +nameless/PY +namely +nameplate/MS +namer/SM +name's +namesake/SM +Namibia/M +Namibian/S +naming/M +Nam/M +Nanak/M +Nana/M +Nananne/M +Nancee/M +Nance/M +Nancey/M +Nanchang/M +Nancie/M +Nanci/M +Nancy/M +Nanete/M +Nanette/M +Nanice/M +Nani/M +Nanine/M +Nanjing +Nanking's +Nan/M +Nannette/M +Nannie/M +Nanni/M +Nanny/M +nanny/SDMG +nanometer/MS +Nanon/M +Nanook/M +nanosecond/SM +Nansen/M +Nantes/M +Nantucket/M +Naoma/M +Naomi/M +napalm/MDGS +nape/SM +Naphtali/M +naphthalene/MS +naphtha/SM +Napier/M +napkin/SM +Naples/M +napless +Nap/M +Napoleonic +napoleon/MS +Napoleon/MS +napped +napper/MS +Nappie/M +napping +Nappy/M +nappy/TRSM +nap/SM +Nara/M +Narbonne/M +narc/DGS +narcissism/MS +narcissistic +narcissist/MS +narcissus/M +Narcissus/M +narcoleptic +narcoses +narcosis/M +narcotic/SM +narcotization/S +narcotize/GSD +Nariko/M +Nari/M +nark's +Narmada/M +Narragansett/M +narrate/VGNSDX +narration/M +narrative/MYS +narratology +narrator/SM +narrowing/P +narrowness/SM +narrow/RDYTGPS +narwhal/MS +nary +nasality/MS +nasalization/MS +nasalize/GDS +nasal/YS +NASA/MS +nascence/ASM +nascent/A +NASDAQ +Nash/M +Nashua/M +Nashville/M +Nassau/M +Nasser/M +nastily +nastiness/MS +nasturtium/SM +nasty/TRSP +natal +Natala/M +Natalee/M +Natale/M +Natalia/M +Natalie/M +Natalina/M +Nataline/M +natalist +natality/M +Natal/M +Natalya/M +Nata/M +Nataniel/M +Natasha/M +Natassia/M +Natchez +natch/S +Nate/XMN +Nathalia/M +Nathalie/M +Nathanael/M +Nathanial/M +Nathaniel/M +Nathanil/M +Nathan/MS +nationalism/SM +nationalistic +nationalistically +nationalist/MS +nationality/MS +nationalization/MS +nationalize/CSDG +nationalized/AU +nationalizer/SM +national/YS +nationhood/SM +nation/MS +nationwide +nativeness/M +native/PYS +Natividad/M +Nativity/M +nativity/MS +Natka/M +natl +Nat/M +NATO/SM +natter/SGD +nattily +nattiness/SM +Natty/M +natty/TRP +naturalism/MS +naturalistic +naturalist/MS +naturalization/SM +naturalized/U +naturalize/GSD +naturalness/US +natural/PUY +naturals +nature/ASDCG +nature's +naturist +Naugahyde/S +naughtily +naughtiness/SM +naught/MS +naughty/TPRS +Naur/M +Nauru/M +nausea/SM +nauseate/DSG +nauseating/Y +nauseousness/SM +nauseous/P +nautical/Y +nautilus/MS +Navaho's +Navajoes +Navajo/S +naval/Y +Navarro/M +navel/MS +nave/SM +navigability/SM +navigableness/M +navigable/P +navigate/DSXNG +navigational +navigation/M +navigator/MS +Navona/M +Navratilova/M +navvy/M +Navy/S +navy/SM +nay/MS +naysayer/S +Nazarene/MS +Nazareth/M +Nazi/SM +Nazism/S +NB +NBA +NBC +Nb/M +NBS +NC +NCAA +NCC +NCO +NCR +ND +N'Djamena +Ndjamena/M +Nd/M +Ne +NE +Neala/M +Neale/M +Neall/M +Neal/M +Nealon/M +Nealson/M +Nealy/M +Neanderthal/S +neap/DGS +Neapolitan/SM +nearby +nearly/RT +nearness/MS +nearside/M +nearsightedness/S +nearsighted/YP +near/TYRDPSG +neaten/DG +neath +neatness/MS +neat/YRNTXPS +Neb/M +Nebraska/M +Nebraskan/MS +Nebr/M +Nebuchadnezzar/MS +nebulae +nebula/M +nebular +nebulousness/SM +nebulous/PY +necessaries +necessarily/U +necessary/U +necessitate/DSNGX +necessitation/M +necessitous +necessity/SM +neckband/M +neckerchief/MS +neck/GRDMJS +necking/M +necklace/DSMG +neckline/MS +necktie/MS +necrology/SM +necromancer/MS +necromancy/MS +necromantic +necrophiliac/S +necrophilia/M +necropolis/SM +necropsy/M +necroses +necrosis/M +necrotic +nectarine/SM +nectarous +nectar/SM +nectary/MS +Neda/M +Nedda/M +Neddie/M +Neddy/M +Nedi/M +Ned/M +ne +needed/U +needer/M +needful/YSP +Needham/M +neediness/MS +needlecraft/M +needle/GMZRSD +needlepoint/SM +needlessness/S +needless/YP +needlewoman/M +needlewomen +needlework/RMS +needn't +need/YRDGS +needy/TPR +Neel/M +Neely/M +ne'er +nefariousness/MS +nefarious/YP +Nefen/M +Nefertiti/M +negated/U +negater/M +negate/XRSDVNG +negation/M +negativeness/SM +negative/PDSYG +negativism/MS +negativity/MS +negator/MS +Negev/M +neglecter/M +neglectfulness/SM +neglectful/YP +neglect/SDRG +negligee/SM +negligence/MS +negligent/Y +negligibility/M +negligible +negligibly +negotiability/MS +negotiable/A +negotiant/M +negotiate/ASDXGN +negotiation/MA +negotiator/MS +Negress/MS +negritude/MS +Negritude/S +Negroes +negroid +Negroid/S +Negro/M +neg/S +Nehemiah/M +Nehru/M +neighbored/U +neighborer/M +neighborhood/SM +neighborlinesses +neighborliness/UM +neighborly/UP +neighbor/SMRDYZGJ +neigh/MDG +neighs +Neila/M +Neile/M +Neilla/M +Neille/M +Neill/M +Neil/SM +neither +Nelda/M +Nelia/M +Nelie/M +Nelle/M +Nellie/M +Nelli/M +Nell/M +Nelly/M +Nelsen/M +Nels/N +Nelson/M +nelson/MS +nematic +nematode/SM +Nembutal/M +nemeses +nemesis +Nemesis/M +neoclassical +neoclassicism/MS +neoclassic/M +neocolonialism/MS +neocortex/M +neodymium/MS +Neogene +neolithic +Neolithic/M +neologism/SM +neomycin/M +neonatal/Y +neonate/MS +neon/DMS +neophyte/MS +neoplasm/SM +neoplastic +neoprene/SM +Nepalese +Nepali/MS +Nepal/M +nepenthe/MS +nephew/MS +nephrite/SM +nephritic +nephritides +nephritis/M +nepotism/MS +nepotist/S +Neptune/M +neptunium/MS +nerd/S +nerdy/RT +Nereid/M +Nerf/M +Nerissa/M +Nerita/M +Nero/M +Neron/M +Nerta/M +Nerte/M +Nertie/M +Nerti/M +Nert/M +Nerty/M +Neruda/M +nervelessness/SM +nerveless/YP +nerve's +nerve/UGSD +nerviness/SM +nerving/M +nervousness/SM +nervous/PY +nervy/TPR +Nessa/M +Nessie/M +Nessi/M +Nessy/M +Nesta/M +nester/M +Nester/M +Nestle/M +nestler/M +nestle/RSDG +nestling/M +Nestorius/M +Nestor/M +nest/RDGSBM +netball/M +nether +Netherlander/SM +Netherlands/M +nethermost +netherworld/S +Netscape/M +net/SM +Netta/M +Nettie/M +Netti/M +netting/M +nett/JGRDS +Nettle/M +nettle/MSDG +nettlesome +Netty/M +network/SJMDG +Netzahualcoyotl/M +Neumann/M +neuralgia/MS +neuralgic +neural/Y +neurasthenia/MS +neurasthenic/S +neuritic/S +neuritides +neuritis/M +neuroanatomy +neurobiology/M +neurological/Y +neurologist/MS +neurology/SM +neuromuscular +neuronal +neurone/S +neuron/MS +neuropathology/M +neurophysiology/M +neuropsychiatric +neuroses +neurosis/M +neurosurgeon/MS +neurosurgery/SM +neurotically +neurotic/S +neurotransmitter/S +neuter/JZGRD +neutralise's +neutralism/MS +neutralist/S +neutrality/MS +neutralization/MS +neutralized/U +neutralize/GZSRD +neutral/PYS +neutrino/MS +neutron/MS +neut/ZR +Nevada/M +Nevadan/S +Nevadian/S +Neva/M +never +nevermore +nevertheless +nevi +Nevile/M +Neville/M +Nevil/M +Nevin/SM +Nevis/M +Nev/M +Nevsa/M +Nevsky/M +nevus/M +Newark/M +newbie/S +newborn/S +Newbury/M +Newburyport/M +Newcastle/M +newcomer/MS +newed/A +Newell/M +newel/MS +newer/A +newfangled +newfound +newfoundland +Newfoundlander/M +Newfoundland/SRMZ +newish +newline/SM +newlywed/MS +Newman/M +newness/MS +Newport/M +news/A +newsagent/MS +newsboy/SM +newscaster/M +newscasting/M +newscast/SRMGZ +newsdealer/MS +newsed +newses +newsflash/S +newsgirl/S +newsgroup/SM +newsing +newsletter/SM +NeWS/M +newsman/M +newsmen +newspaperman/M +newspapermen +newspaper/SMGD +newspaperwoman/M +newspaperwomen +newsprint/MS +new/SPTGDRY +newsreader/MS +newsreel/SM +newsroom/S +news's +newsstand/MS +Newsweekly/M +newsweekly/S +Newsweek/MY +newswire +newswoman/M +newswomen +newsworthiness/SM +newsworthy/RPT +newsy/TRS +newt/MS +Newtonian +Newton/M +newton/SM +Nexis/M +next +nexus/SM +Neysa/M +NF +NFC +NFL +NFS +Ngaliema/M +Nguyen/M +NH +NHL +niacin/SM +Niagara/M +Niall/M +Nial/M +Niamey/M +nibbed +nibbing +nibbler/M +nibble/RSDGZ +Nibelung/M +nib/SM +Nicaean +Nicaragua/M +Nicaraguan/S +Niccolo/M +Nice/M +Nicene +niceness/MS +nicety/MS +nice/YTPR +niche/SDGM +Nicholas +Nichole/M +Nicholle/M +Nichol/MS +Nicholson/M +nichrome +nickelodeon/SM +nickel/SGMD +nicker/GD +Nickey/M +nick/GZRDMS +Nickie/M +Nicki/M +Nicklaus/M +Nick/M +nicknack's +nickname/MGDRS +nicknamer/M +Nickolai/M +Nickola/MS +Nickolaus/M +Nicko/M +Nicky/M +Nicobar/M +Nicodemus/M +Nicolai/MS +Nicola/MS +Nicolea/M +Nicole/M +Nicolette/M +Nicoli/MS +Nicolina/M +Nicoline/M +Nicolle/M +Nicol/M +Nico/M +Nicosia/M +nicotine/MS +Niebuhr/M +niece/MS +Niel/MS +Nielsen/M +Niels/N +Nielson/M +Nietzsche/M +Nieves/M +nifty/TRS +Nigel/M +Nigeria/M +Nigerian/S +Nigerien +Niger/M +niggardliness/SM +niggardly/P +niggard/SGMDY +nigger/SGDM! +niggler/M +niggle/RSDGZJ +niggling/Y +nigh/RDGT +nighs +nightcap/SM +nightclothes +nightclubbed +nightclubbing +nightclub/MS +nightdress/MS +nightfall/SM +nightgown/MS +nighthawk/MS +nightie/MS +Nightingale/M +nightingale/SM +nightlife/MS +nightlong +nightmare/MS +nightmarish/Y +nightshade/SM +nightshirt/MS +night/SMYDZ +nightspot/MS +nightstand/SM +nightstick/S +nighttime/S +nightwear/M +nighty's +NIH +nihilism/MS +nihilistic +nihilist/MS +Nijinsky/M +Nikaniki/M +Nike/M +Niki/M +Nikita/M +Nikkie/M +Nikki/M +Nikko/M +Nikolai/M +Nikola/MS +Nikolaos/M +Nikolaus/M +Nikolayev's +Nikoletta/M +Nikolia/M +Nikolos/M +Niko/MS +Nikon/M +Nile/SM +nilled +nilling +Nil/MS +nil/MYS +nilpotent +Nilsen/M +Nils/N +Nilson/M +Nilsson/M +Ni/M +nimbi +nimbleness/SM +nimble/TRP +nimbly +nimbus/DM +NIMBY +Nimitz/M +Nimrod/MS +Nina/M +nincompoop/MS +ninefold +nine/MS +ninepence/M +ninepin/S +ninepins/M +nineteen/SMH +nineteenths +ninetieths +Ninetta/M +Ninette/M +ninety/MHS +Nineveh/M +ninja/S +Ninnetta/M +Ninnette/M +ninny/SM +Ninon/M +Nintendo/M +ninth +ninths +Niobe/M +niobium/MS +nipped +nipper/DMGS +nippiness/S +nipping/Y +nipple/GMSD +Nipponese +Nippon/M +nippy/TPR +nip/S +Nirenberg/M +nirvana/MS +Nirvana/S +nisei +Nisei/MS +Nissa/M +Nissan/M +Nisse/M +Nissie/M +Nissy/M +Nita/M +niter/M +nitpick/DRSJZG +nitrate/MGNXSD +nitration/M +nitric +nitride/MGS +nitriding/M +nitrification/SM +nitrite/MS +nitrocellulose/MS +nitrogenous +nitrogen/SM +nitroglycerin/MS +nitrous +nitwit/MS +nit/ZSMR +Niven/M +nixer/M +nix/GDSR +Nixie/M +Nixon/M +NJ +Nkrumah/M +NLRB +nm +NM +no/A +NOAA +Noach/M +Noah/M +Noak/M +Noami/M +Noam/M +Nobelist/SM +nobelium/MS +Nobel/M +Nobe/M +Nobie/M +nobility/MS +Noble/M +nobleman/M +noblemen +nobleness/SM +noblesse/M +noble/TPSR +noblewoman +noblewomen +nob/MY +nobody/MS +Noby/M +nocturnal/SY +nocturne/SM +nodal/Y +nodded +nodding +noddle/MSDG +noddy/M +node/MS +NoDoz/M +nod/SM +nodular +nodule/SM +Noelani/M +Noella/M +Noelle/M +Noell/M +Noellyn/M +Noel/MS +noel/S +Noelyn/M +Noe/M +Noemi/M +noes/S +noggin/SM +nohow +noise/GMSD +noiselessness/SM +noiseless/YP +noisemaker/M +noisemake/ZGR +noisily +noisiness/MS +noisome +noisy/TPR +Nola/M +Nolana/M +Noland/M +Nolan/M +Nolie/M +Nollie/M +Noll/M +Nolly/M +No/M +nomadic +nomad/SM +Nome/M +nomenclature/MS +Nomi/M +nominalized +nominal/K +nominally +nominals +nominate/CDSAXNG +nomination/MAC +nominative/SY +nominator/CSM +nominee/MS +non +nonabrasive +nonabsorbent/S +nonacademic/S +nonacceptance/MS +nonacid/MS +nonactive +nonadaptive +nonaddictive +nonadhesive +nonadjacent +nonadjustable +nonadministrative +nonage/MS +nonagenarian/MS +nonaggression/SM +nonagricultural +Nonah/M +nonalcoholic/S +nonaligned +nonalignment/SM +nonallergic +Nona/M +nonappearance/MS +nonassignable +nonathletic +nonattendance/SM +nonautomotive +nonavailability/SM +nonbasic +nonbeliever/SM +nonbelligerent/S +nonblocking +nonbreakable +nonburnable +nonbusiness +noncaloric +noncancerous +noncarbohydrate/M +nonce/MS +nonchalance/SM +nonchalant/YP +nonchargeable +nonclerical/S +nonclinical +noncollectable +noncombatant/MS +noncombustible/S +noncommercial/S +noncommissioned +noncommittal/Y +noncom/MS +noncommunicable +noncompeting +noncompetitive +noncompliance/MS +noncomplying/S +noncomprehending +nonconducting +nonconductor/MS +nonconforming +nonconformist/SM +nonconformity/SM +nonconsecutive +nonconservative +nonconstructive +noncontagious +noncontiguous +noncontinuous +noncontributing +noncontributory +noncontroversial +nonconvertible +noncooperation/SM +noncorroding/S +noncorrosive +noncredit +noncriminal/S +noncritical +noncrystalline +noncumulative +noncustodial +noncyclic +nondairy +nondecreasing +nondeductible +nondelivery/MS +nondemocratic +nondenominational +nondepartmental +nondepreciating +nondescript/YS +nondestructive/Y +nondetachable +nondeterminacy +nondeterminate/Y +nondeterminism +nondeterministic +nondeterministically +nondisciplinary +nondisclosure/SM +nondiscrimination/SM +nondiscriminatory +nondramatic +nondrinker/SM +nondrying +nondurable +noneconomic +noneducational +noneffective/S +nonelastic +nonelectrical +nonelectric/S +nonemergency +nonempty +nonenforceable +nonentity/MS +nonequivalence/M +nonequivalent/S +none/S +nones/M +nonessential/S +nonesuch/SM +nonetheless +nonevent/MS +nonexchangeable +nonexclusive +nonexempt +nonexistence/MS +nonexistent +nonexplosive/S +nonextensible +nonfactual +nonfading +nonfat +nonfatal +nonfattening +nonferrous +nonfictional +nonfiction/SM +nonflammable +nonflowering +nonfluctuating +nonflying +nonfood/M +nonfreezing +nonfunctional +nongovernmental +nongranular +nonhazardous +nonhereditary +nonhuman +nonidentical +Nonie/M +Noni/M +noninclusive +nonindependent +nonindustrial +noninfectious +noninflammatory +noninflationary +noninflected +nonintellectual/S +noninteracting +noninterchangeable +noninterference/MS +nonintervention/SM +nonintoxicating +nonintuitive +noninvasive +nonionic +nonirritating +nonjudgmental +nonjudicial +nonlegal +nonlethal +nonlinearity/MS +nonlinear/Y +nonlinguistic +nonliterary +nonliving +nonlocal +nonmagical +nonmagnetic +nonmalignant +nonmember/SM +nonmetallic +nonmetal/MS +nonmigratory +nonmilitant/S +nonmilitary +Nonnah/M +Nonna/M +nonnarcotic/S +nonnative/S +nonnegative +nonnegotiable +nonnuclear +nonnumerical/S +nonobjective +nonobligatory +nonobservance/MS +nonobservant +nonoccupational +nonoccurence +nonofficial +nonogenarian +nonoperational +nonoperative +nonorthogonal +nonorthogonality +nonparallel/S +nonparametric +nonpareil/SM +nonparticipant/SM +nonparticipating +nonpartisan/S +nonpaying +nonpayment/SM +nonperformance/SM +nonperforming +nonperishable/S +nonperson/S +nonperturbing +nonphysical/Y +nonplus/S +nonplussed +nonplussing +nonpoisonous +nonpolitical +nonpolluting +nonporous +nonpracticing +nonprejudicial +nonprescription +nonprocedural/Y +nonproductive +nonprofessional/S +nonprofit/SB +nonprogrammable +nonprogrammer +nonproliferation/SM +nonpublic +nonpunishable +nonracial +nonradioactive +nonrandom +nonreactive +nonreciprocal/S +nonreciprocating +nonrecognition/SM +nonrecoverable +nonrecurring +nonredeemable +nonreducing +nonrefillable +nonrefundable +nonreligious +nonrenewable +nonrepresentational +nonresidential +nonresident/SM +nonresidual +nonresistance/SM +nonresistant/S +nonrespondent/S +nonresponse +nonrestrictive +nonreturnable/S +nonrhythmic +nonrigid +nonsalaried +nonscheduled +nonscientific +nonscoring +nonseasonal +nonsectarian +nonsecular +nonsegregated +nonsense/MS +nonsensicalness/M +nonsensical/PY +nonsensitive +nonsexist +nonsexual +nonsingular +nonskid +nonslip +nonsmoker/SM +nonsmoking +nonsocial +nonspeaking +nonspecialist/MS +nonspecializing +nonspecific +nonspiritual/S +nonstaining +nonstandard +nonstarter/SM +nonstick +nonstop +nonstrategic +nonstriking +nonstructural +nonsuccessive +nonsupervisory +nonsupport/GS +nonsurgical +nonsustaining +nonsympathizer/M +nontarnishable +nontaxable/S +nontechnical/Y +nontenured +nonterminal/MS +nonterminating +nontermination/M +nontheatrical +nonthinking/S +nonthreatening +nontoxic +nontraditional +nontransferable +nontransparent +nontrivial +nontropical +nonuniform +nonunion/S +nonuser/SM +nonvenomous +nonverbal/Y +nonveteran/MS +nonviable +nonviolence/SM +nonviolent/Y +nonvirulent +nonvocal +nonvocational +nonvolatile +nonvolunteer/S +nonvoter/MS +nonvoting +nonwhite/SM +nonworking +nonyielding +nonzero +noodle/GMSD +nook/MS +noonday/MS +noon/GDMS +nooning/M +noontide/MS +noontime/MS +noose/SDGM +nope/S +NORAD/M +noradrenalin +noradrenaline/M +Norah/M +Nora/M +Norbert/M +Norberto/M +Norbie/M +Norby/M +Nordhoff/M +Nordic/S +Nordstrom/M +Norean/M +Noreen/M +Norene/M +Norfolk/M +nor/H +Norina/M +Norine/M +normalcy/MS +normality/SM +normalization/A +normalizations +normalization's +normalized/AU +normalizes/AU +normalize/SRDZGB +normal/SY +Norma/M +Normand/M +Normandy/M +Norman/SM +normativeness/M +normative/YP +Normie/M +norm/SMGD +Normy/M +Norplant +Norrie/M +Norri/SM +Norristown/M +Norry/M +Norse +Norseman/M +Norsemen +Northampton/M +northbound +northeastern +northeaster/YM +Northeast/SM +northeastward/S +northeast/ZSMR +northerly/S +norther/MY +Northerner/M +northernmost +northern/RYZS +Northfield/M +northing/M +northland +North/M +northmen +north/MRGZ +Northrop/M +Northrup/M +norths +Norths +Northumberland/M +northward/S +northwestern +northwester/YM +northwest/MRZS +Northwest/MS +northwestward/S +Norton/M +Norwalk/M +Norway/M +Norwegian/S +Norwich/M +Norw/M +nosebag/M +nosebleed/SM +nosecone/S +nosedive/DSG +nosed/V +nosegay/MS +nose/M +Nosferatu/M +nos/GDS +nosh/MSDG +nosily +nosiness/MS +nosing/M +nostalgia/SM +nostalgically +nostalgic/S +Nostradamus/M +Nostrand/M +nostril/SM +nostrum/SM +nosy/SRPMT +notability/SM +notableness/M +notable/PS +notably +notarial +notarization/S +notarize/DSG +notary/MS +notate/VGNXSD +notational/CY +notation/CMSF +notative/CF +notch/MSDG +not/DRGB +notebook/MS +note/CSDFG +notedness/M +noted/YP +notepad/S +notepaper/MS +note's +noteworthiness/SM +noteworthy/P +nothingness/SM +nothing/PS +noticeable/U +noticeably +noticeboard/S +noticed/U +notice/MSDG +notifiable +notification/M +notifier/M +notify/NGXSRDZ +notional/Y +notion/MS +notoriety/S +notoriousness/M +notorious/YP +Notre/M +Nottingham/M +notwithstanding +Nouakchott/M +nougat/MS +Noumea/M +noun/SMK +nourish/DRSGL +nourished/U +nourisher/M +nourishment/SM +nous/M +nouveau +nouvelle +novae +Novak/M +Nova/M +nova/MS +novelette/SM +Novelia/M +novelist/SM +novelization/S +novelize/GDS +Novell/SM +novella/SM +novel/SM +novelty/MS +November/SM +novena/SM +novene +Novgorod/M +novice/MS +novitiate/MS +Nov/M +Novocaine/M +Novocain/S +Novokuznetsk/M +Novosibirsk/M +NOW +nowadays +noway/S +Nowell/M +nowhere/S +nowise +now/S +noxiousness/M +noxious/PY +Noyce/M +Noyes/M +nozzle/MS +Np +NP +NRA +nroff/M +N's +NS +n's/CI +NSF +n/T +NT +nth +nuance/SDM +nubbin/SM +nubby/RT +Nubia/M +Nubian/M +nubile +nub/MS +nuclear/K +nuclease/M +nucleated/A +nucleate/DSXNG +nucleation/M +nucleic +nuclei/M +nucleoli +nucleolus/M +nucleon/MS +nucleotide/MS +nucleus/M +nuclide/M +nude/CRS +nudely +nudeness/M +nudest +nudge/GSRD +nudger/M +nudism/MS +nudist/MS +nudity/MS +nugatory +Nugent/M +nugget/SM +nuisance/MS +nuke/DSMG +Nukualofa +null/DSG +nullification/M +nullifier/M +nullify/RSDXGNZ +nullity/SM +nu/M +numbered/UA +numberer/M +numberless +numberplate/M +number/RDMGJ +numbers/A +Numbers/M +numbing/Y +numbness/MS +numb/SGZTYRDP +numbskull's +numerable/IC +numeracy/SI +numeral/YMS +numerate/SDNGX +numerates/I +numeration/M +numerator/MS +numerical/Y +numeric/S +numerological +numerologist/S +numerology/MS +numerousness/M +numerous/YP +numinous/S +numismatic/S +numismatics/M +numismatist/MS +numskull/SM +Nunavut/M +nuncio/SM +Nunez/M +Nunki/M +nun/MS +nunnery/MS +nuptial/S +Nuremberg/M +Nureyev/M +nursemaid/MS +nurser/M +nurseryman/M +nurserymen +nursery/MS +nurse/SRDJGMZ +nursling/M +nurturer/M +nurture/SRDGZM +nus +nutate/NGSD +nutation/M +nutcracker/M +nutcrack/RZ +nuthatch/SM +nutmeat/SM +nutmegged +nutmegging +nutmeg/MS +nut/MS +nutpick/MS +Nutrasweet/M +nutria/SM +nutrient/MS +nutriment/MS +nutritional/Y +nutritionist/MS +nutrition/SM +nutritiousness/MS +nutritious/PY +nutritive/Y +nutshell/MS +nutted +nuttiness/SM +nutting +nutty/TRP +nuzzle/GZRSD +NV +NW +NWT +NY +Nyasa/M +NYC +Nydia/M +Nye/M +Nyerere/M +nylon/SM +nymphet/MS +nymph/M +nympholepsy/M +nymphomaniac/S +nymphomania/MS +nymphs +Nyquist/M +NYSE +Nyssa/M +NZ +o +O +oafishness/S +oafish/PY +oaf/MS +Oahu/M +Oakland/M +Oakley/M +Oakmont/M +oak/SMN +oakum/MS +oakwood +oar/GSMD +oarlock/MS +oarsman/M +oarsmen +oarswoman +oarswomen +OAS +oases +oasis/M +oatcake/MS +oater/M +Oates/M +oath/M +oaths +oatmeal/SM +oat/SMNR +Oaxaca/M +ob +OB +Obadiah/M +Obadias/M +obbligato/S +obduracy/S +obdurateness/S +obdurate/PDSYG +Obediah/M +obedience/EMS +obedient/EY +Obed/M +obeisance/MS +obeisant/Y +obelisk/SM +Oberlin/M +Oberon/M +obese +obesity/MS +obey/EDRGS +obeyer/EM +obfuscate/SRDXGN +obfuscation/M +obfuscatory +Obidiah/M +Obie/M +obi/MDGS +obit/SMR +obituary/SM +obj +objectify/GSDXN +objectionableness/M +objectionable/U +objectionably +objection/SMB +objectiveness/MS +objective/PYS +objectivity/MS +objector/SM +object/SGVMD +objurgate/GNSDX +objurgation/M +oblate/NYPSX +oblation/M +obligate/NGSDXY +obligational +obligation/M +obligatorily +obligatory +obliged/E +obliger/M +obliges/E +oblige/SRDG +obligingness/M +obliging/PY +oblique/DSYGP +obliqueness/S +obliquity/MS +obliterate/VNGSDX +obliteration/M +obliterative/Y +oblivion/MS +obliviousness/MS +oblivious/YP +oblongness/M +oblong/SYP +obloquies +obloquy/M +Ob/MD +obnoxiousness/MS +obnoxious/YP +oboe/SM +oboist/S +obos +O'Brien/M +obs +obscene/RYT +obscenity/MS +obscurantism/MS +obscurantist/MS +obscuration +obscureness/M +obscure/YTPDSRGL +obscurity/MS +obsequies +obsequiousness/S +obsequious/YP +obsequy +observability/M +observable/SU +observably +observance/MS +observantly +observants +observant/U +observational/Y +observation/MS +observatory/MS +observed/U +observer/M +observe/ZGDSRB +observing/Y +obsess/GVDS +obsessional +obsession/MS +obsessiveness/S +obsessive/PYS +obsidian/SM +obsolesce/GSD +obsolescence/S +obsolescent/Y +obsolete/GPDSY +obsoleteness/M +obstacle/SM +obstetrical +obstetrician/SM +obstetric/S +obstetrics/M +obstinacy/SM +obstinateness/M +obstinate/PY +obstreperousness/SM +obstreperous/PY +obstructed/U +obstructer/M +obstructionism/SM +obstructionist/MS +obstruction/SM +obstructiveness/MS +obstructive/PSY +obstruct/RDVGS +obtainable/U +obtainably +obtain/LSGDRB +obtainment/S +obtrude/DSRG +obtruder/M +obtrusion/S +obtrusiveness/MSU +obtrusive/UPY +obtuseness/S +obtuse/PRTY +obverse/YS +obviate/XGNDS +obviousness/SM +obvious/YP +Oby/M +ocarina/MS +O'Casey +Occam/M +occasional/Y +occasion/MDSJG +Occidental/S +occidental/SY +occident/M +Occident/SM +occipital/Y +occlude/GSD +occlusion/MS +occlusive/S +occulter/M +occultism/SM +occult/SRDYG +occupancy/SM +occupant/MS +occupational/Y +occupation/SAM +occupied/AU +occupier/M +occupies/A +occupy/RSDZG +occur/AS +occurred/A +occurrence/SM +occurring/A +oceanfront/MS +oceangoing +Oceania/M +oceanic +ocean/MS +oceanographer/SM +oceanographic +oceanography/SM +oceanology/MS +oceanside +Oceanside/M +Oceanus/M +ocelot/SM +ocher/DMGS +Ochoa/M +o'clock +O'Clock +O'Connell/M +O'Connor/M +Oconomowoc/M +OCR +octagonal/Y +octagon/SM +octahedral +octahedron/M +octal/S +octane/MS +octant/M +octave/MS +Octavia/M +Octavian/M +Octavio/M +Octavius/M +octavo/MS +octennial +octet/SM +octile +octillion/M +Oct/M +October/MS +octogenarian/MS +octopus/SM +octoroon/M +ocular/S +oculist/SM +OD +odalisque/SM +oddball/SM +oddity/MS +oddment/MS +oddness/MS +odd/TRYSPL +Odele/M +Odelia/M +Odelinda/M +Odella/M +Odelle/M +Odell/M +O'Dell/M +ode/MDRS +Ode/MR +Oderberg/MS +Oder/M +Odessa/M +Odets/M +Odetta/M +Odette/M +Odey/M +Odie/M +Odilia/M +Odille/M +Odin/M +odiousness/MS +odious/PY +Odis/M +odium/MS +Odo/M +odometer/SM +Odom/M +O'Donnell/M +odor/DMS +odoriferous +odorless +odorous/YP +ODs +O'Dwyer/M +Ody/M +Odysseus/M +Odyssey/M +odyssey/S +OE +OED +oedipal +Oedipal/Y +Oedipus/M +OEM/M +OEMS +oenology/MS +oenophile/S +o'er +O'Er +Oersted/M +oesophagi +oeuvre/SM +Ofelia/M +Ofella/M +offal/MS +offbeat/MS +offcuts +Offenbach/M +offender/M +offend/SZGDR +offense/MSV +offensively/I +offensiveness/MSI +offensive/YSP +offerer/M +offering/M +offer/RDJGZ +offertory/SM +offhand/D +offhandedness/S +offhanded/YP +officeholder/SM +officemate/S +officer/GMD +officership/S +office/SRMZ +officialdom/SM +officialism/SM +officially/U +official/PSYM +officiant/SM +officiate/XSDNG +officiation/M +officiator/MS +officio +officiousness/MS +officious/YP +offing/M +offish +offload/GDS +offprint/GSDM +offramp +offset/SM +offsetting +offshoot/MS +offshore +offside/RS +offspring/M +offstage/S +off/SZGDRJ +offtrack +Ofilia/M +of/K +often/RT +oftentimes +oft/NRT +ofttimes +Ogbomosho/M +Ogdan/M +Ogden/M +Ogdon/M +Ogilvy/M +ogive/M +Oglethorpe/M +ogle/ZGDSR +ogreish +ogre/MS +ogress/S +oh +OH +O'Hara +O'Hare/M +O'Higgins +Ohioan/S +Ohio/M +ohmic +ohmmeter/MS +ohm/SM +oho/S +ohs +OHSA/M +oilcloth/M +oilcloths +oiler/M +oilfield/MS +oiliness/SM +oilman/M +oil/MDRSZG +oilmen +oilseed/SM +oilskin/MS +oily/TPR +oink/GDS +ointment/SM +Oise/M +OJ +Ojibwa/SM +Okamoto/M +okapi/SM +Okayama/M +okay/M +Okeechobee/M +O'Keeffe +Okefenokee +Okhotsk/M +Okinawa/M +Okinawan/S +Oklahoma/M +Oklahoman/SM +Okla/M +OK/MDG +okra/MS +OKs +Oktoberfest +Olaf/M +Olag/M +Ola/M +Olav/M +Oldenburg/M +olden/DG +Oldfield/M +oldie/MS +oldish +oldness/S +Oldsmobile/M +oldster/SM +Olduvai/M +old/XTNRPS +ol +oleaginous +oleander/SM +O'Leary/M +olefin/M +Oleg/M +Ole/MV +Olenek/M +Olenka/M +Olen/M +Olenolin/M +oleomargarine/SM +oleo/S +oles +olfactory +Olga/M +Olia/M +oligarchic +oligarchical +oligarch/M +oligarchs +oligarchy/SM +Oligocene +oligopolistic +oligopoly/MS +Olimpia/M +Olin/M +olive/MSR +Olive/MZR +Oliver/M +Olivero/M +Olivette/M +Olivetti/M +Olivia/M +Olivier/M +Olivie/RM +Oliviero/M +Oliy/M +Ollie/M +Olly/M +Olmec +Olmsted/M +Olsen/M +Olson/M +Olva/M +Olvan/M +Olwen/M +Olympe/M +Olympiad/MS +Olympian/S +Olympia/SM +Olympic/S +Olympie/M +Olympus/M +Omaha/SM +Oman/M +Omar/M +ombudsman/M +ombudsmen +Omdurman/M +omega/MS +omelet/SM +omelette's +omen/DMG +Omero/M +omicron/MS +ominousness/SM +ominous/YP +omission/MS +omit/S +omitted +omitting +omnibus/MS +omni/M +omnipotence/SM +Omnipotent +omnipotent/SY +omnipresence/MS +omnipresent/Y +omniscience/SM +omniscient/YS +omnivore/MS +omnivorousness/MS +omnivorous/PY +oms +Omsk/M +om/XN +ON +onanism/M +Onassis/M +oncer/M +once/SR +oncogene/S +oncologist/S +oncology/SM +oncoming/S +Ondrea/M +Oneal/M +Onega/M +Onegin/M +Oneida/SM +O'Neil +O'Neill +oneness/MS +one/NPMSX +oner/M +onerousness/SM +onerous/YP +oneself +onetime +oneupmanship +Onfre/M +Onfroi/M +ongoing/S +Onida/M +onion/GDM +onionskin/MS +onlooker/MS +onlooking +only/TP +Onofredo/M +Ono/M +onomatopoeia/SM +onomatopoeic +onomatopoetic +Onondaga/MS +onrush/GMS +on/RY +ons +Onsager/M +onset/SM +onsetting +onshore +onside +onslaught/MS +Ontarian/S +Ontario/M +Ont/M +onto +ontogeny/SM +ontological/Y +ontology/SM +onus/SM +onward/S +onyx/MS +oodles +ooh/GD +oohs +oolitic +Oona/M +OOo/M +oops/S +Oort/M +ooze/GDS +oozy/RT +opacity/SM +opalescence/S +opalescent/Y +Opalina/M +Opaline/M +Opal/M +opal/SM +opaque/GTPYRSD +opaqueness/SM +opcode/MS +OPEC +Opel/M +opencast +opened/AU +opener/M +openhandedness/SM +openhanded/P +openhearted +opening/M +openness/S +OpenOffice.org/M +opens/A +openwork/MS +open/YRDJGZTP +operable/I +operandi +operand/SM +operant/YS +opera/SM +operate/XNGVDS +operatically +operatic/S +operationalization/S +operationalize/D +operational/Y +operation/M +operative/IP +operatively +operativeness/MI +operatives +operator/SM +operetta/MS +ope/S +Ophelia/M +Ophelie/M +Ophiuchus/M +ophthalmic/S +ophthalmologist/SM +ophthalmology/MS +opiate/GMSD +opine/XGNSD +opinionatedness/M +opinionated/PY +opinion/M +opioid +opium/MS +opossum/SM +opp +Oppenheimer/M +opponent/MS +opportune/IY +opportunism/SM +opportunistic +opportunistically +opportunist/SM +opportunity/MS +oppose/BRSDG +opposed/U +opposer/M +oppositeness/M +opposite/SXYNP +oppositional +opposition/M +oppress/DSGV +oppression/MS +oppressiveness/MS +oppressive/YP +oppressor/MS +opprobrious/Y +opprobrium/SM +Oprah/M +ops +opt/DSG +opthalmic +opthalmologic +opthalmology +optical/Y +optician/SM +optic/S +optics/M +optima +optimality +optimal/Y +optimise's +optimism/SM +optimistic +optimistically +optimist/SM +optimization/SM +optimize/DRSZG +optimized/U +optimizer/M +optimizes/U +optimum/SM +optionality/M +optional/YS +option/GDMS +optoelectronic +optometric +optometrist/MS +optometry/SM +opulence/SM +opulent/Y +opus/SM +op/XGDN +OR +oracle/GMSD +oracular +Oralee/M +Oralia/M +Oralie/M +Oralla/M +Oralle/M +oral/YS +Ora/M +orangeade/MS +Orange/M +orange/MS +orangery/SM +orangutan/MS +Oranjestad/M +Oran/M +orate/SDGNX +oration/M +oratorical/Y +oratorio/MS +orator/MS +oratory/MS +Orazio/M +Orbadiah/M +orbicular +orbiculares +orbital/MYS +orbit/MRDGZS +orb/SMDG +orchard/SM +orchestral/Y +orchestra/MS +orchestrate/GNSDX +orchestrater's +orchestration/M +orchestrator/M +orchid/SM +ordainer/M +ordainment/MS +ordain/SGLDR +ordeal/SM +order/AESGD +ordered/U +orderer +ordering/S +orderless +orderliness/SE +orderly/PS +order's/E +ordinal/S +ordinance/MS +ordinarily +ordinariness/S +ordinary/RSPT +ordinated +ordinate/I +ordinates +ordinate's +ordinating +ordination/SM +ordnance/SM +Ordovician +ordure/MS +oregano/SM +Oreg/M +Oregonian/S +Oregon/M +Orelee/M +Orelia/M +Orelie/M +Orella/M +Orelle/M +Orel/M +Oren/M +Ore/NM +ore/NSM +Oreo +Orestes +organdie's +organdy/MS +organelle/MS +organically/I +organic/S +organismic +organism/MS +organist/MS +organizable/UMS +organizational/MYS +organization/MEAS +organize/AGZDRS +organized/UE +organizer/MA +organizes/E +organizing/E +organ/MS +organometallic +organza/SM +orgasm/GSMD +orgasmic +orgiastic +orgy/SM +Oriana/M +oriel/MS +orientable +Oriental/S +oriental/SY +orientated/A +orientate/ESDXGN +orientates/A +orientation/AMES +orienteering/M +orienter +orient/GADES +orient's +Orient/SM +orifice/MS +orig +origami/MS +originality/SM +originally +original/US +originate/VGNXSD +origination/M +originative/Y +originator/SM +origin/MS +Orin/M +Orinoco/M +oriole/SM +Orion/M +orison/SM +Oriya/M +Orizaba/M +Orkney/M +Orland/M +Orlando/M +Orlan/M +Orleans +Orlick/M +Orlon/SM +Orly/M +ormolu/SM +or/MY +ornamental/SY +ornamentation/SM +ornament/GSDM +ornateness/SM +ornate/YP +orneriness/SM +ornery/PRT +ornithological +ornithologist/SM +ornithology/MS +orographic/M +orography/M +Orono/M +orotund +orotundity/MS +orphanage/MS +orphanhood/M +orphan/SGDM +Orpheus/M +Orphic +Orran/M +Orren/M +Orrin/M +orris/SM +Orr/MN +ors +Orsa/M +Orsola/M +Orson/M +Ortega/M +Ortensia/M +orthodontia/S +orthodontic/S +orthodontics/M +orthodontist/MS +orthodoxies +orthodoxly/U +Orthodox/S +orthodoxy's +orthodox/YS +orthodoxy/U +orthogonality/M +orthogonalization/M +orthogonalized +orthogonal/Y +orthographic +orthographically +orthography/MS +orthonormal +orthopedic/S +orthopedics/M +orthopedist/SM +orthophosphate/MS +orthorhombic +Ortiz/M +Orton/M +Orval/M +Orville/M +Orv/M +Orwellian +Orwell/M +o's +Osage/SM +Osaka/M +Osbert/M +Osborne/M +Osborn/M +Osbourne/M +Osbourn/M +Oscar/SM +Osceola/M +oscillate/SDXNG +oscillation/M +oscillator/SM +oscillatory +oscilloscope/SM +osculate/XDSNG +osculation/M +Osgood/M +OSHA +Oshawa/M +O'Shea/M +Oshkosh/M +osier/MS +Osiris/M +Oslo/M +Os/M +OS/M +Osman/M +osmium/MS +Osmond/M +osmoses +osmosis/M +osmotic +Osmund/M +osprey/SM +osseous/Y +Ossie/M +ossification/M +ossify/NGSDX +ostensible +ostensibly +ostentation/MS +ostentatiousness/M +ostentatious/PY +osteoarthritides +osteoarthritis/M +osteology/M +osteopathic +osteopath/M +osteopaths +osteopathy/MS +osteoporoses +osteoporosis/M +ostracise's +ostracism/MS +ostracize/GSD +Ostrander/M +ostrich/MS +Ostrogoth/M +Ostwald/M +O'Sullivan/M +Osvaldo/M +Oswald/M +Oswell/M +OT +OTB +OTC +Otes +Otha/M +Othelia/M +Othella/M +Othello/M +otherness/M +other/SMP +otherwise +otherworldly/P +otherworld/Y +Othilia/M +Othilie/M +Otho/M +otiose +Otis/M +OTOH +Ottawa/MS +otter/DMGS +Ottilie/M +Otto/M +Ottoman +ottoman/MS +Ouagadougou/M +oubliette/SM +ouch/SDG +oughtn't +ought/SGD +Ouija/MS +ounce/MS +our/S +ourself +ourselves +ouster/M +oust/RDGZS +outage/MS +outargue/GDS +outback/MRS +outbalance/GDS +outbidding +outbid/S +outboard/S +outboast/GSD +outbound/S +outbreak/SMG +outbroke +outbroken +outbuilding/SM +outburst/MGS +outcast/GSM +outclass/SDG +outcome/SM +outcropped +outcropping/S +outcrop/SM +outcry/MSDG +outdated/P +outdid +outdistance/GSD +outdoes +outdo/G +outdone +outdoor/S +outdoorsy +outdraw/GS +outdrawn +outdrew +outermost +outerwear/M +outface/SDG +outfall/MS +outfielder/M +outfield/RMSZ +outfight/SG +outfit/MS +outfitted +outfitter/MS +outfitting +outflank/SGD +outflow/SMDG +outfought +outfox/GSD +outgeneraled +outgoes +outgo/GJ +outgoing/P +outgrew +outgrip +outgrow/GSH +outgrown +outgrowth/M +outgrowths +outguess/SDG +outhit/S +outhitting +outhouse/SM +outing/M +outlaid +outlander/M +outlandishness/MS +outlandish/PY +outland/ZR +outlast/GSD +outlawry/M +outlaw/SDMG +outlay/GSM +outlet/SM +outliers +outline/SDGM +outlive/GSD +outlook/MDGS +outlying +outmaneuver/GSD +outmatch/SDG +outmigration +outmoded +outness/M +outnumber/GDS +outpaced +outpatient/SM +outperform/DGS +out/PJZGSDR +outplacement/S +outplay/GDS +outpoint/GDS +outpost/SM +outpouring/M +outpour/MJG +outproduce/GSD +output/SM +outputted +outputting +outrace/GSD +outrage/GSDM +outrageousness/M +outrageous/YP +outran +outrank/GSD +outr +outreach/SDG +outrider/MS +outrigger/SM +outright/Y +outrunning +outrun/S +outscore/GDS +outsell/GS +outset/MS +outsetting +outshine/SG +outshone +outshout/GDS +outsider/PM +outside/ZSR +outsize/S +outskirt/SM +outsmart/SDG +outsold +outsource/SDJG +outspend/SG +outspent +outspoke +outspokenness/SM +outspoken/YP +outspread/SG +outstanding/Y +outstate/NX +outstation/M +outstay/SDG +outstretch/GSD +outstripped +outstripping +outstrip/S +outtake/S +outvote/GSD +outwardness/M +outward/SYP +outwear/SG +outweigh/GD +outweighs +outwit/S +outwitted +outwitting +outwore +outwork/SMDG +outworn +ouzo/SM +oval/MYPS +ovalness/M +ova/M +ovarian +ovary/SM +ovate/SDGNX +ovation/GMD +ovenbird/SM +oven/MS +overabundance/MS +overabundant +overachieve/SRDGZ +overact/DGVS +overage/S +overaggressive +overallocation +overall/SM +overambitious +overanxious +overarching +overarm/GSD +overate +overattentive +overawe/GDS +overbalance/DSG +overbear/GS +overbearingness/M +overbearing/YP +overbidding +overbid/S +overbite/MS +overblown +overboard +overbold +overbook/SDG +overbore +overborne +overbought +overbuild/GS +overbuilt +overburdening/Y +overburden/SDG +overbuy/GS +overcame +overcapacity/M +overcapitalize/DSG +overcareful +overcast/GS +overcasting/M +overcautious +overcerebral +overcharge/DSG +overcloud/DSG +overcoating/M +overcoat/SMG +overcomer/M +overcome/RSG +overcommitment/S +overcompensate/XGNDS +overcompensation/M +overcomplexity/M +overcomplicated +overconfidence/MS +overconfident/Y +overconscientious +overconsumption/M +overcook/SDG +overcooled +overcorrection +overcritical +overcrowd/DGS +overcurious +overdecorate/SDG +overdependent +overdetermined +overdevelop/SDG +overdid +overdoes +overdo/G +overdone +overdose/DSMG +overdraft/SM +overdraw/GS +overdrawn +overdress/GDS +overdrew +overdrive/GSM +overdriven +overdrove +overdubbed +overdubbing +overdub/S +overdue +overeagerness/M +overeager/PY +overeater/M +overeat/GNRS +overeducated +overemotional +overemphases +overemphasis/M +overemphasize/GZDSR +overenthusiastic +overestimate/DSXGN +overestimation/M +overexcite/DSG +overexercise/SDG +overexert/GDS +overexertion/SM +overexploitation +overexploited +overexpose/GDS +overexposure/SM +overextend/DSG +overextension +overfall/M +overfed +overfeed/GS +overfill/GDS +overfishing +overflew +overflight/SM +overflow/DGS +overflown +overfly/GS +overfond +overfull +overgeneralize/GDS +overgenerous +overgraze/SDG +overgrew +overground +overgrow/GSH +overgrown +overgrowth/M +overgrowths +overhand/DGS +overhang/GS +overhasty +overhaul/GRDJS +overhead/S +overheard +overhearer/M +overhear/SRG +overheat/SGD +overhung +overincredulous +overindulgence/SM +overindulgent +overindulge/SDG +overinflated +overjoy/SGD +overkill/SDMG +overladed +overladen +overlaid +overlain +overland/S +overlap/MS +overlapped +overlapping +overlarge +overlay/GS +overleaf +overlie +overload/SDG +overlong +overlook/DSG +overlord/DMSG +overloud +overly/GRS +overmanning +overmaster/GSD +overmatching +overmodest +overmuch/S +overnice +overnight/SDRGZ +overoptimism/SM +overoptimistic +overpaid +overparticular +overpass/GMSD +overpay/LSG +overpayment/M +overplay/SGD +overpopulate/DSNGX +overpopulation/M +overpopulous +overpower/GSD +overpowering/Y +overpraise/DSG +overprecise +overpressure +overprice/SDG +overprint/DGS +overproduce/SDG +overproduction/S +overprotect/GVDS +overprotection/M +overqualified +overran +overrate/DSG +overreach/DSRG +overreaction/SM +overreact/SGD +overred +overrefined +overrepresented +overridden +overrider/M +override/RSG +overripe +overrode +overrule/GDS +overrunning +overrun/S +oversample/DG +oversaturate +oversaw +oversea/S +overseeing +overseen +overseer/M +oversee/ZRS +oversell/SG +oversensitiveness/S +oversensitive/P +oversensitivity +oversexed +overshadow/GSD +overshoe/SM +overshoot/SG +overshot/S +oversight/SM +oversimple +oversimplification/M +oversimplify/GXNDS +oversize/GS +oversleep/GS +overslept +oversoftness/M +oversoft/P +oversold +overspecialization/MS +overspecialize/GSD +overspend/SG +overspent +overspill/DMSG +overspread/SG +overstaffed +overstatement/SM +overstate/SDLG +overstay/GSD +overstepped +overstepping +overstep/S +overstimulate/DSG +overstock/SGD +overstraining +overstressed +overstretch/D +overstrict +overstrike/GS +overstrung +overstuffed +oversubscribe/SDG +oversubtle +oversupply/MDSG +oversuspicious +overtaken +overtake/RSZG +overtax/DSG +overthrew +overthrow/GS +overthrown +overtightened +overtime/MGDS +overtire/DSG +overtone/MS +overtook +overt/PY +overture/DSMG +overturn/SDG +overuse/DSG +overvalue/GSD +overview/MS +overweening +overweight/GSD +overwhelm/GDS +overwhelming/Y +overwinter/SDG +overwork/GSD +overwrap +overwrite/SG +overwritten +overwrote +overwrought +over/YGS +overzealousness/M +overzealous/P +Ovid/M +oviduct/SM +oviform +oviparous +ovoid/S +ovular +ovulate/GNXDS +ovulatory +ovule/MS +ovum/MS +ow/DYG +Owen/MS +owe/S +owlet/SM +owl/GSMDR +owlishness/M +owlish/PY +owned/U +own/EGDS +ownership/MS +owner/SM +oxalate/M +oxalic +oxaloacetic +oxblood/S +oxbow/SM +oxcart/MS +oxen/M +oxford/MS +Oxford/MS +oxidant/SM +oxidate/NVX +oxidation/M +oxidative/Y +oxide/SM +oxidization/MS +oxidized/U +oxidize/JDRSGZ +oxidizer/M +oxidizes/A +ox/MNS +Oxnard +Oxonian +oxtail/M +Oxus/M +oxyacetylene/MS +oxygenate/XSDMGN +oxygenation/M +oxygen/MS +oxyhydroxides +oxymora +oxymoron/M +oyster/GSDM +oystering/M +oz +Ozark/SM +Oz/M +ozone/SM +Ozymandias/M +Ozzie/M +Ozzy/M +P +PA +Pablo/M +Pablum/M +pablum/S +Pabst/M +pabulum/SM +PAC +pace/DRSMZG +Pace/M +pacemaker/SM +pacer/M +pacesetter/MS +pacesetting +Pacheco/M +pachyderm/MS +pachysandra/MS +pacific +pacifically +pacification/M +Pacific/M +pacifier/M +pacifism/MS +pacifistic +pacifist/MS +pacify/NRSDGXZ +package/ARSDG +packaged/U +packager/S +package's +packages/U +packaging/SM +Packard/SM +packed/AU +packer/MUS +packet/MSDG +pack/GZSJDRMB +packhorse/M +packinghouse/S +packing/M +packsaddle/SM +Packston/M +packs/UA +Packwood/M +Paco/M +Pacorro/M +pact/SM +Padang/M +padded/U +Paddie/M +padding/SM +paddle/MZGRSD +paddler/M +paddock/SDMG +Paddy/M +paddy/SM +Padget/M +Padgett/M +Padilla/M +padlock/SGDM +pad/MS +Padraic/M +Padraig/M +padre/MS +Padrewski/M +Padriac/M +paean/MS +paediatrician/MS +paediatrics/M +paedophilia's +paella/SM +paeony/M +Paganini/M +paganism/MS +pagan/SM +pageantry/SM +pageant/SM +pageboy/SM +paged/U +pageful +Page/M +page/MZGDRS +pager/M +paginate/DSNGX +Paglia/M +pagoda/MS +Pahlavi/M +paid/AU +Paige/M +pailful/SM +Pail/M +pail/SM +Paine/M +painfuller +painfullest +painfulness/MS +painful/YP +pain/GSDM +painkiller/MS +painkilling +painlessness/S +painless/YP +painstaking/SY +paint/ADRZGS +paintbox/M +paintbrush/SM +painted/U +painterly/P +painter/YM +painting/SM +paint's +paintwork +paired/UA +pair/JSDMG +pairs/A +pairwise +paisley/MS +pajama/MDS +Pakistani/S +Pakistan/M +palace/MS +paladin/MS +palaeolithic +palaeontologists +palaeontology/M +palanquin/MS +palatability/M +palatableness/M +palatable/P +palatalization/MS +palatalize/SDG +palatal/YS +palate/BMS +palatial/Y +palatinate/SM +Palatine +palatine/S +palaver/GSDM +paleface/SM +Palembang/M +paleness/S +Paleocene +Paleogene +paleographer/SM +paleography/SM +paleolithic +Paleolithic +paleontologist/S +paleontology/MS +Paleozoic +Palermo/M +pale/SPY +Palestine/M +Palestinian/S +Palestrina/M +palette/MS +Paley/M +palfrey/MS +palimony/S +palimpsest/MS +palindrome/MS +palindromic +paling/M +palisade/MGSD +Palisades/M +palish +Palladio/M +palladium/SM +pallbearer/SM +palletized +pallet/SMGD +pall/GSMD +palliate/SDVNGX +palliation/M +palliative/SY +pallidness/MS +pallid/PY +Pall/M +pallor/MS +palmate +palmer/M +Palmer/M +Palmerston/M +palmetto/MS +palm/GSMDR +palmist/MS +palmistry/MS +Palm/MR +Palmolive/M +palmtop/S +Palmyra/M +palmy/RT +Palo/M +Paloma/M +Palomar/M +palomino/MS +palpable +palpably +palpate/SDNGX +palpation/M +palpitate/NGXSD +palpitation/M +pal/SJMDRYTG +palsy/GSDM +paltriness/SM +paltry/TRP +paludal +Pa/M +Pamela/M +Pamelina/M +Pamella/M +pa/MH +Pamirs +Pam/M +Pammie/M +Pammi/M +Pammy/M +pampas/M +pamperer/M +pamper/RDSG +Pampers +pamphleteer/DMSG +pamphlet/SM +panacea/MS +panache/MS +Panama/MS +Panamanian/S +panama/S +pancake/MGSD +Panchito/M +Pancho/M +panchromatic +pancreas/MS +pancreatic +panda/SM +pandemic/S +pandemonium/SM +pander/ZGRDS +Pandora/M +panegyric/SM +pane/KMS +paneling/M +panelist/MS +panelization +panelized +panel/JSGDM +Pangaea/M +pang/GDMS +pangolin/M +panhandle/RSDGMZ +panicked +panicking +panicky/RT +panic/SM +panier's +panjandrum/M +Pankhurst/M +Pan/M +Panmunjom/M +panned +pannier/SM +panning +panoply/MSD +panorama/MS +panoramic +panpipes +Pansie/M +pan/SMD +Pansy/M +pansy/SM +Pantagruel/M +Pantaloon/M +pantaloons +pant/GDS +pantheism/MS +pantheistic +pantheist/S +pantheon/MS +panther/SM +pantie/SM +pantiled +pantograph/M +pantomime/SDGM +pantomimic +pantomimist/SM +pantry/SM +pantsuit/SM +pantyhose +pantyliner +pantywaist/SM +Panza/M +Paola/M +Paoli/M +Paolina/M +Paolo/M +papacy/SM +Papagena/M +Papageno/M +papal/Y +papa/MS +paparazzi +papaw/SM +papaya/MS +paperback/GDMS +paperboard/MS +paperboy/SM +paperer/M +papergirl/SM +paper/GJMRDZ +paperhanger/SM +paperhanging/SM +paperiness/M +paperless +paperweight/MS +paperwork/SM +papery/P +papillae +papilla/M +papillary +papist/MS +papoose/SM +Pappas/M +papped +papping +pappy/RST +paprika/MS +pap/SZMNR +papyri +papyrus/M +Paquito/M +parable/MGSD +parabola/MS +parabolic +paraboloidal/M +paraboloid/MS +Paracelsus/M +paracetamol/M +parachuter/M +parachute/RSDMG +parachutist/MS +Paraclete/M +parader/M +parade/RSDMZG +paradigmatic +paradigm/SM +paradisaic +paradisaical +Paradise/M +paradise/MS +paradoxic +paradoxicalness/M +paradoxical/YP +paradox/MS +paraffin/GSMD +paragon/SGDM +paragrapher/M +paragraph/MRDG +paragraphs +Paraguayan/S +Paraguay/M +parakeet/MS +paralegal/S +paralinguistic +parallax/SM +parallel/DSG +paralleled/U +parallelepiped/MS +parallelism/SM +parallelization/MS +parallelize/ZGDSR +parallelogram/MS +paralysis/M +paralytically +paralytic/S +paralyzedly/S +paralyzed/Y +paralyzer/M +paralyze/ZGDRS +paralyzingly/S +paralyzing/Y +paramagnetic +paramagnet/M +Paramaribo/M +paramecia +paramecium/M +paramedical/S +paramedic/MS +parameterization/SM +parameterize/BSDG +parameterized/U +parameterless +parameter/SM +parametric +parametrically +parametrization +parametrize/DS +paramilitary/S +paramount/S +paramour/MS +para/MS +Paramus/M +Paran +paranoiac/S +paranoia/SM +paranoid/S +paranormal/SY +parapet/SMD +paraphernalia +paraphrase/GMSRD +paraphraser/M +paraplegia/MS +paraplegic/S +paraprofessional/SM +parapsychologist/S +parapsychology/MS +paraquat/S +parasite/SM +parasitically +parasitic/S +parasitism/SM +parasitologist/M +parasitology/M +parasol/SM +parasympathetic/S +parathion/SM +parathyroid/S +paratrooper/M +paratroop/RSZ +paratyphoid/S +parboil/DSG +parceled/U +parceling/M +parcel/SGMD +Parcheesi/M +parch/GSDL +parchment/SM +PARC/M +pardonableness/M +pardonable/U +pardonably/U +pardoner/M +pardon/ZBGRDS +paregoric/SM +parentage/MS +parental/Y +parenteral +parentheses +parenthesis/M +parenthesize/GSD +parenthetic +parenthetical/Y +parenthood/MS +parent/MDGJS +pare/S +paresis/M +pares/S +Pareto/M +parfait/SM +pariah/M +pariahs +parietal/S +parimutuel/S +paring/M +parishioner/SM +parish/MS +Parisian/SM +Paris/M +parity/ESM +parka/MS +Parke/M +Parker/M +Parkersburg/M +park/GJZDRMS +Parkhouse/M +parking/M +Parkinson/M +parkish +parkland/M +parklike +Parkman +Park/RMS +parkway/MS +parlance/SM +parlay/DGS +parley/MDSG +parliamentarian/SM +parliamentary/U +parliament/MS +Parliament/MS +parlor/SM +parlous +Parmesan/S +parmigiana +Parnassus/SM +Parnell/M +parochialism/SM +parochiality +parochial/Y +parodied/U +parodist/SM +parody/SDGM +parolee/MS +parole/MSDG +paroxysmal +paroxysm/MS +parquetry/SM +parquet/SMDG +parrakeet's +parred +parricidal +parricide/MS +parring +Parrish/M +Parr/M +Parrnell/M +parrot/GMDS +parrotlike +parry/GSD +Parry/M +parse +parsec/SM +parsed/U +Parsee's +parser/M +Parsifal/M +parsimonious/Y +parsimony/SM +pars/JDSRGZ +parsley/MS +parsnip/MS +parsonage/MS +parson/MS +Parsons/M +partaken +partaker/M +partake/ZGSR +part/CDGS +parterre/MS +parter/S +parthenogeneses +parthenogenesis/M +Parthenon/M +Parthia/M +partiality/MS +partial/SY +participant/MS +participate/NGVDSX +participation/M +participator/S +participatory +participial/Y +participle/MS +particleboard/S +particle/MS +particolored +particularistic +particularity/SM +particularization/MS +particularize/GSD +particular/SY +particulate/S +parting/MS +partisanship/SM +partisan/SM +partition/AMRDGS +partitioned/U +partitioner/M +partitive/S +partizan's +partly +partner/DMGS +partnership/SM +partook +partridge/MS +part's +parturition/SM +partway +party/RSDMG +parvenu/SM +par/ZGSJBMDR +Pasadena/M +PASCAL +Pascale/M +Pascal/M +pascal/SM +paschal/S +pasha/MS +Paso/M +Pasquale/M +pas/S +passably +passage/MGSD +passageway/MS +Passaic/M +passband +passbook/MS +passel/MS +pass/M +passenger/MYS +passerby +passer/M +passersby +passim +passing/Y +passionated +passionate/EYP +passionateness/EM +passionates +passionating +passioned +passionflower/MS +passioning +passionless +passion/SEM +Passion/SM +passivated +passiveness/S +passive/SYP +passivity/S +pass/JGVBZDSR +passkey/SM +passmark +passover +Passover/MS +passport/SM +password/SDM +pasta/MS +pasteboard/SM +pasted/UA +pastel/MS +paste/MS +Pasternak/M +pastern/SM +pasteup +pasteurization/MS +pasteurized/U +pasteurizer/M +pasteurize/RSDGZ +Pasteur/M +pastiche/MS +pastille/SM +pastime/SM +pastiness/SM +pastoralization/M +pastoral/SPY +pastorate/MS +pastor/GSDM +past/PGMDRS +pastrami/MS +pastry/SM +past's/A +pasts/A +pasturage/SM +pasture/MGSRD +pasturer/M +pasty/PTRS +Patagonia/M +Patagonian/S +patch/EGRSD +patcher/EM +patchily +patchiness/S +patch's +patchwork/RMSZ +patchy/PRT +patellae +patella/MS +Patel/M +Pate/M +paten/M +Paten/M +patentee/SM +patent/ZGMRDYSB +paterfamilias/SM +pater/M +paternalism/MS +paternalist +paternalistic +paternal/Y +paternity/SM +paternoster/SM +Paterson/M +pate/SM +pathetic +pathetically +pathfinder/MS +pathless/P +path/M +pathname/SM +pathogenesis/M +pathogenic +pathogen/SM +pathologic +pathological/Y +pathologist/MS +pathology/SM +pathos/SM +paths +pathway/MS +Patience/M +patience/SM +patient/MRYTS +patient's/I +patients/I +patina/SM +patine +Patin/M +patio/MS +Pat/MN +pat/MNDRS +Patna/M +patois/M +Paton/M +patresfamilias +patriarchal +patriarchate/MS +patriarch/M +patriarchs +patriarchy/MS +Patrica/M +Patrice/M +Patricia/M +patrician/MS +patricide/MS +Patricio/M +Patrick/M +Patric/M +patrimonial +patrimony/SM +patriotically +patriotic/U +patriotism/SM +patriot/SM +patristic/S +Patrizia/M +Patrizio/M +Patrizius/M +patrolled +patrolling +patrolman/M +patrolmen +patrol/MS +patrolwoman +patrolwomen +patronage/MS +patroness/S +patronization +patronized/U +patronize/GZRSDJ +patronizer/M +patronizes/A +patronizing's/U +patronizing/YM +patronymically +patronymic/S +patron/YMS +patroon/MS +patsy/SM +Patsy/SM +patted +Patten/M +patten/MS +patterer/M +pattern/GSDM +patternless +patter/RDSGJ +Patterson/M +Pattie/M +Patti/M +patting +Pattin/M +Patton/M +Patty/M +patty/SM +paucity/SM +Paula/M +Paule/M +Pauletta/M +Paulette/M +Paulie/M +Pauli/M +Paulina/M +Pauline +Pauling/M +Paulita/M +Paul/MG +Paulo/M +Paulsen/M +Paulson/M +Paulus/M +Pauly/M +paunch/GMSD +paunchiness/M +paunchy/RTP +pauperism/SM +pauperize/SDG +pauper/SGDM +pause/DSG +Pavarotti +paved/UA +pave/GDRSJL +Pavel/M +pavement/SGDM +paver/M +paves/A +Pavia/M +pavilion/SMDG +paving/A +paving's +Pavla/M +Pavlova/MS +Pavlovian +Pavlov/M +pawl/SM +paw/MDSG +pawnbroker/SM +pawnbroking/S +Pawnee/SM +pawner/M +pawn/GSDRM +pawnshop/MS +pawpaw's +Pawtucket/M +paxes +Paxon/M +Paxton/M +payable/S +pay/AGSLB +payback/S +paycheck/SM +payday/MS +payed +payee/SM +payer/SM +payload/SM +paymaster/SM +payment/ASM +Payne/SM +payoff/MS +payola/MS +payout/S +payroll/MS +payslip/S +Payson/M +Payton/M +Paz/M +Pb/M +PBS +PBX +PCB +PC/M +PCP +PCs +pct +pd +PD +Pd/M +PDP +PDQ +PDT +PE +Peabody/M +peaceableness/M +peaceable/P +peaceably +peacefuller +peacefullest +peacefulness/S +peaceful/PY +peace/GMDS +peacekeeping/S +Peace/M +peacemaker/MS +peacemaking/MS +peacetime/MS +peach/GSDM +Peachtree/M +peachy/RT +peacock/SGMD +Peadar/M +peafowl/SM +peahen/MS +peaked/P +peakiness/M +peak/SGDM +peaky/P +pealed/A +Peale/M +peal/MDSG +peals/A +pea/MS +peanut/SM +Pearce/M +Pearla/M +Pearle/M +pearler/M +Pearlie/M +Pearline/M +Pearl/M +pearl/SGRDM +pearly/TRS +Pearson/M +pear/SYM +peartrees +Peary/M +peasanthood +peasantry/SM +peasant/SM +peashooter/MS +peats/A +peat/SM +peaty/TR +pebble/MGSD +pebbling/M +pebbly/TR +Pebrook/M +pecan/SM +peccadilloes +peccadillo/M +peccary/MS +Pechora/M +pecker/M +peck/GZSDRM +Peckinpah/M +Peck/M +Pecos/M +pectic +pectin/SM +pectoral/S +peculate/NGDSX +peculator/S +peculiarity/MS +peculiar/SY +pecuniary +pedagogical/Y +pedagogic/S +pedagogics/M +pedagogue/SDGM +pedagogy/MS +pedal/SGRDM +pedantic +pedantically +pedantry/MS +pedant/SM +peddler/M +peddle/ZGRSD +pederast/SM +pederasty/SM +Peder/M +pedestal/GDMS +pedestrianization +pedestrianize/GSD +pedestrian/MS +pediatrician/SM +pediatric/S +pedicab/SM +pedicure/DSMG +pedicurist/SM +pedigree/DSM +pediment/DMS +pedlar's +pedometer/MS +pedophile/S +pedophilia +Pedro/M +peduncle/MS +peeing +peekaboo/SM +peek/GSD +peeler/M +peeling/M +Peel/M +peel/SJGZDR +peen/GSDM +peeper/M +peephole/SM +peep/SGZDR +peepshow/MS +peepy +peerage/MS +peer/DMG +peeress/MS +peerlessness/M +peerless/PY +peeve/GZMDS +peevers/M +peevishness/SM +peevish/YP +peewee/S +pee/ZDRS +Pegasus/MS +pegboard/SM +Pegeen/M +pegged +Peggie/M +Peggi/M +pegging +Peggy/M +Peg/M +peg/MS +peignoir/SM +Pei/M +Peiping/M +Peirce/M +pejoration/SM +pejorative/SY +peke/MS +Pekinese's +pekingese +Pekingese/SM +Peking/SM +pekoe/SM +pelagic +Pelee/M +Pele/M +pelf/SM +Pelham/M +pelican/SM +pellagra/SM +pellet/SGMD +pellucid +Peloponnese/M +pelter/M +pelt/GSDR +pelvic/S +pelvis/SM +Pembroke/M +pemmican/SM +penalization/SM +penalized/U +penalize/SDG +penalty/MS +penal/Y +Pena/M +penance/SDMG +pence/M +penchant/MS +pencil/SGJMD +pendant/SM +pend/DCGS +pendent/CS +Penderecki/M +Pendleton/M +pendulous +pendulum/MS +Penelopa/M +Penelope/M +penetrability/SM +penetrable +penetrate/SDVGNX +penetrating/Y +penetration/M +penetrativeness/M +penetrative/PY +penetrator/MS +penguin/MS +penicillin/SM +penile +peninsular +peninsula/SM +penis/MS +penitence/MS +penitential/YS +penitentiary/MS +penitent/SY +penknife/M +penknives +penlight/MS +pen/M +Pen/M +penman/M +penmanship/MS +penmen +Penna +pennant/SM +penned +Penney/M +Pennie/M +penniless +Penni/M +penning +Pennington/M +pennis +Penn/M +pennon/SM +Pennsylvania/M +Pennsylvanian/S +Penny/M +penny/SM +pennyweight/SM +pennyworth/M +penologist/MS +penology/MS +Penrod/M +Pensacola/M +pensioner/M +pension/ZGMRDBS +pensiveness/S +pensive/PY +pens/V +pentacle/MS +pentagonal/SY +Pentagon/M +pentagon/SM +pentagram/MS +pentameter/SM +pent/AS +Pentateuch/M +pentathlete/S +pentathlon/MS +pentatonic +pentecostal +Pentecostalism/S +Pentecostal/S +Pentecost/SM +penthouse/SDGM +Pentium/M +penuche/SM +penultimate/SY +penumbrae +penumbra/MS +penuriousness/MS +penurious/YP +penury/SM +peonage/MS +peon/MS +peony/SM +people/SDMG +Peoria/M +Pepe/M +Pepillo/M +Pepi/M +Pepin/M +Pepita/M +Pepito/M +pepped +peppercorn/MS +pepperer/M +peppergrass/M +peppermint/MS +pepperoni/S +pepper/SGRDM +peppery +peppiness/SM +pepping +peppy/PRT +Pepsico/M +PepsiCo/M +Pepsi/M +pepsin/SM +pep/SM +peptic/S +peptidase/SM +peptide/SM +peptizing +Pepys/M +Pequot/M +peradventure/S +perambulate/DSNGX +perambulation/M +perambulator/MS +percale/MS +perceivably +perceive/DRSZGB +perceived/U +perceiver/M +percentage/MS +percentile/SM +percent/MS +perceptible +perceptibly +perceptional +perception/MS +perceptiveness/MS +perceptive/YP +perceptual/Y +percept/VMS +Perceval/M +perchance +perch/GSDM +perchlorate/M +perchlorination +percipience/MS +percipient/S +Percival/M +percolate/NGSDX +percolation/M +percolator/MS +percuss/DSGV +percussionist/MS +percussion/SAM +percussiveness/M +percussive/PY +percutaneous/Y +Percy/M +perdition/MS +perdurable +peregrinate/XSDNG +peregrination/M +peregrine/S +Perelman/M +peremptorily +peremptory/P +perennial/SY +pres +perestroika/S +Perez/M +perfecta/S +perfect/DRYSTGVP +perfecter/M +perfectibility/MS +perfectible +perfectionism/MS +perfectionist/MS +perfection/MS +perfectiveness/M +perfective/PY +perfectness/MS +perfidiousness/M +perfidious/YP +perfidy/MS +perforated/U +perforate/XSDGN +perforation/M +perforce +performance/MS +performed/U +performer/M +perform/SDRZGB +perfumer/M +perfumery/SM +perfume/ZMGSRD +perfunctorily +perfunctoriness/M +perfunctory/P +perfused +perfusion/M +Pergamon/M +pergola/SM +perhaps/S +Peria/M +pericardia +pericardium/M +Perice/M +Periclean +Pericles/M +perigee/SM +perihelia +perihelion/M +peril/GSDM +Perilla/M +perilousness/M +perilous/PY +Peri/M +perimeter/MS +perinatal +perinea +perineum/M +periodic +periodical/YMS +periodicity/MS +period/MS +periodontal/Y +periodontics/M +periodontist/S +peripatetic/S +peripheral/SY +periphery/SM +periphrases +periphrasis/M +periphrastic +periscope/SDMG +perishable/SM +perish/BZGSRD +perishing/Y +peristalses +peristalsis/M +peristaltic +peristyle/MS +peritoneal +peritoneum/SM +peritonitis/MS +periwigged +periwigging +periwig/MS +periwinkle/SM +perjurer/M +perjure/SRDZG +perjury/MS +per/K +perk/GDS +perkily +perkiness/S +Perkin/SM +perky/TRP +Perla/M +Perle/M +Perl/M +permafrost/MS +permalloy/M +Permalloy/M +permanence/SM +permanency/MS +permanentness/M +permanent/YSP +permeability/SM +permeableness/M +permeable/P +permeate/NGVDSX +Permian +permissibility/M +permissibleness/M +permissible/P +permissibly +permission/SM +permissiveness/MS +permissive/YP +permit/SM +permitted +permitting +Perm/M +perm/MDGS +permutation/MS +permute/SDG +Pernell/M +perniciousness/MS +pernicious/PY +Pernod/M +Peron/M +peroration/SM +Perot/M +peroxidase/M +peroxide/MGDS +perpend/DG +perpendicularity/SM +perpendicular/SY +perpetrate/NGXSD +perpetration/M +perpetrator/SM +perpetual/SY +perpetuate/NGSDX +perpetuation/M +perpetuity/MS +perplex/DSG +perplexed/Y +perplexity/MS +perquisite/SM +Perren/M +Perri/M +Perrine/M +Perry/MR +persecute/XVNGSD +persecution/M +persecutor/MS +persecutory +Perseid/M +Persephone/M +Perseus/M +perseverance/MS +persevere/GSD +persevering/Y +Pershing/M +Persia/M +Persian/S +persiflage/MS +persimmon/SM +Persis/M +persist/DRSG +persistence/SM +persistent/Y +persnickety +personableness/M +personable/P +personae +personage/SM +personality/SM +personalization/CMS +personalize/CSDG +personalized/U +personalty/MS +personal/YS +persona/M +person/BMS +personification/M +personifier/M +personify/XNGDRS +personnel/SM +person's/U +persons/U +perspective/YMS +perspex +perspicaciousness/M +perspicacious/PY +perspicacity/S +perspicuity/SM +perspicuousness/M +perspicuous/YP +perspiration/MS +perspire/DSG +persuaded/U +persuader/M +persuade/ZGDRSB +persuasion/SM +persuasively +persuasiveness/MS +persuasive/U +pertain/GSD +Perth/M +pertinaciousness/M +pertinacious/YP +pertinacity/MS +pertinence/S +pertinent/YS +pertness/MS +perturbation/MS +perturbed/U +perturb/GDS +pertussis/SM +pert/YRTSP +peruke/SM +Peru/M +perusal/SM +peruser/M +peruse/RSDZG +Peruvian/S +pervade/SDG +pervasion/M +pervasiveness/MS +pervasive/PY +perverseness/SM +perverse/PXYNV +perversion/M +perversity/MS +pervert/DRSG +perverted/YP +perverter/M +perviousness +peseta/SM +Peshawar/M +peskily +peskiness/S +pesky/RTP +peso/MS +pessimal/Y +pessimism/SM +pessimistic +pessimistically +pessimist/SM +pester/DG +pesticide/MS +pestiferous +pestilence/SM +pestilential/Y +pestilent/Y +pestle/SDMG +pesto/S +pest/RZSM +PET +Ptain/M +petal/SDM +Peta/M +petard/MS +petcock/SM +Pete/M +peter/GD +Peter/M +Petersburg/M +Petersen/M +Peters/N +Peterson/M +Peterus/M +Petey/M +pethidine/M +petiole/SM +petiteness/M +petite/XNPS +petitioner/M +petition/GZMRD +petition's/A +petitions/A +petits +Petkiewicz/M +Pet/MRZ +Petra/M +Petrarch/M +petrel/SM +petri +petrifaction/SM +petrify/NDSG +Petrina/M +Petr/M +petrochemical/SM +petrodollar/MS +petroglyph/M +petrolatum/MS +petroleum/MS +petrolled +petrolling +petrol/MS +petrologist/MS +petrology/MS +Petronella/M +Petronia/M +Petronilla/M +Petronille/M +pet/SMRZ +petted +petter/MS +Pettibone/M +petticoat/SMD +pettifogged +pettifogger/SM +pettifogging +pettifog/S +pettily +pettiness/S +petting +pettis +pettishness/M +pettish/YP +Petty/M +petty/PRST +petulance/MS +petulant/Y +Petunia/M +petunia/SM +Peugeot/M +Pewaukee/M +pewee/MS +pewit/MS +pew/SM +pewter/SRM +peyote/SM +Peyter/M +Peyton/M +pf +Pfc +PFC +pfennig/SM +Pfizer/M +pg +PG +Phaedra/M +Phaethon/M +phaeton/MS +phage/M +phagocyte/SM +Phaidra/M +phalanger/MS +phalanges +phalanx/SM +phalli +phallic +phallus/M +Phanerozoic +phantasmagoria/SM +phantasmal +phantasm/SM +phantasy's +phantom/MS +pharaoh +Pharaoh/M +pharaohs +Pharaohs +pharisaic +Pharisaic +Pharisaical +pharisee/S +Pharisee/SM +pharmaceutical/SY +pharmaceutic/S +pharmaceutics/M +pharmacist/SM +pharmacological/Y +pharmacologist/SM +pharmacology/SM +pharmacopoeia/SM +pharmacy/SM +pharyngeal/S +pharynges +pharyngitides +pharyngitis/M +pharynx/M +phase/DSRGZM +phaseout/S +PhD +pheasant/SM +Phebe/M +Phedra/M +Phekda/M +Phelia/M +Phelps/M +phenacetin/MS +phenobarbital/SM +phenolic +phenol/MS +phenolphthalein/M +phenomenal/Y +phenomena/SM +phenomenological/Y +phenomenology/MS +phenomenon/SM +phenotype/MS +phenylalanine/M +phenyl/M +pheromone/MS +phew/S +phialled +phialling +phial/MS +Phidias/M +Philadelphia/M +philanderer/M +philander/SRDGZ +philanthropic +philanthropically +philanthropist/MS +philanthropy/SM +philatelic +philatelist/MS +philately/SM +Philbert/M +Philco/M +philharmonic/S +Philipa/M +Philip/M +Philippa/M +Philippe/M +Philippians/M +philippic/SM +Philippine/SM +Philis/M +philistine/S +Philistine/SM +philistinism/S +Phillida/M +Phillie/M +Phillipa/M +Phillipe/M +Phillip/MS +Phillipp/M +Phillis/M +Philly/SM +Phil/MY +philodendron/MS +philological/Y +philologist/MS +philology/MS +Philomena/M +philosopher/MS +philosophic +philosophical/Y +philosophized/U +philosophizer/M +philosophizes/U +philosophize/ZDRSG +philosophy/MS +philter/SGDM +philtre/DSMG +Phineas/M +Phip/M +Phipps/M +phi/SM +phlebitides +phlebitis/M +phlegmatic +phlegmatically +phlegm/SM +phloem/MS +phlox/M +pH/M +Ph/M +phobia/SM +phobic/S +Phobos/M +Phoebe/M +phoebe/SM +Phoenicia/M +Phoenician/SM +Phoenix/M +phoenix/MS +phone/DSGM +phoneme/SM +phonemically +phonemic/S +phonemics/M +phonetically +phonetician/SM +phonetic/S +phonetics/M +phonically +phonic/S +phonics/M +phoniness/MS +phonographer/M +phonographic +phonograph/RM +phonographs +phonologic +phonological/Y +phonologist/MS +phonology/MS +phonon/M +phony/PTRSDG +phooey/S +phosphatase/M +phosphate/MS +phosphide/M +phosphine/MS +phosphoresce +phosphorescence/SM +phosphorescent/Y +phosphoric +phosphor/MS +phosphorous +phosphorus/SM +photocell/MS +photochemical/Y +photochemistry/M +photocopier/M +photocopy/MRSDZG +photoelectric +photoelectrically +photoelectronic +photoelectrons +photoengraver/M +photoengrave/RSDJZG +photoengraving/M +photofinishing/MS +photogenic +photogenically +photograph/AGD +photographer/SM +photographic +photographically +photograph's +photographs/A +photography/MS +photojournalism/SM +photojournalist/SM +photoluminescence/M +photolysis/M +photolytic +photometer/SM +photometric +photometrically +photometry/M +photomicrograph/M +photomicrography/M +photomultiplier/M +photon/MS +photorealism +photosensitive +photo/SGMD +photosphere/M +photostatic +Photostat/MS +Photostatted +Photostatting +photosyntheses +photosynthesis/M +photosynthesize/DSG +photosynthetic +phototypesetter +phototypesetting/M +phrasal +phrase/AGDS +phrasebook +phrasemaking +phraseology/MS +phrase's +phrasing/SM +phrenological/Y +phrenologist/MS +phrenology/MS +phylactery/MS +phylae +phyla/M +Phylis/M +Phyllida/M +Phyllis/M +Phyllys/M +phylogeny/MS +phylum/M +Phylys/M +phys +physicality/M +physical/PYS +physician/SM +physicist/MS +physicked +physicking +physic/SM +physiochemical +physiognomy/SM +physiography/MS +physiologic +physiological/Y +physiologist/SM +physiology/MS +physiotherapist/MS +physiotherapy/SM +physique/MSD +phytoplankton/M +Piaf/M +Piaget/M +Pia/M +pianism/M +pianissimo/S +pianistic +pianist/SM +pianoforte/MS +pianola +Pianola/M +piano/SM +piaster/MS +piazza/SM +pibroch/M +pibrochs +picador/MS +picaresque/S +pica/SM +Picasso/M +picayune/S +Piccadilly/M +piccalilli/MS +piccolo/MS +pickaback's +pickaxe's +pickax/GMSD +pickerel/MS +Pickering/M +picker/MG +picketer/M +picket/MSRDZG +Pickett/M +Pickford/M +pick/GZSJDR +pickle/SDMG +Pickman/M +pickoff/S +pickpocket/GSM +pickup/SM +Pickwick/M +picky/RT +picnicked +picnicker/MS +picnicking +picnic/SM +picofarad/MS +picojoule +picoseconds +picot/DMGS +Pict/M +pictograph/M +pictographs +pictorialness/M +pictorial/PYS +picture/MGSD +picturesqueness/SM +picturesque/PY +piddle/GSD +piddly +pidgin/SM +piebald/S +piece/GMDSR +piecemeal +piecer/M +piecewise +pieceworker/M +piecework/ZSMR +piedmont +Piedmont/M +pieing +pie/MS +Pierce/M +piercer/M +pierce/RSDZGJ +piercing/Y +Pierette/M +pier/M +Pier/M +Pierre/M +Pierrette/M +Pierrot/M +Pierson/M +Pieter/M +Pietra/M +Pietrek/M +Pietro/M +piety/SM +piezoelectric +piezoelectricity/M +piffle/MGSD +pigeon/DMGS +pigeonhole/SDGM +pigged +piggery/M +pigging +piggishness/SM +piggish/YP +piggyback/MSDG +Piggy/M +piggy/RSMT +pigheadedness/S +pigheaded/YP +piglet/MS +pigmentation/MS +pigment/MDSG +pig/MLS +Pigmy's +pigpen/SM +pigroot +pigskin/MS +pigsty/SM +pigswill/M +pigtail/SMD +Pike/M +pike/MZGDRS +piker/M +pikestaff/MS +pilaf/MS +pilaster/SM +Pilate/M +pilau's +pilchard/SM +Pilcomayo/M +pile/JDSMZG +pileup/MS +pilferage/SM +pilferer/M +pilfer/ZGSRD +Pilgrim +pilgrimage/DSGM +pilgrim/MS +piling/M +pillage/RSDZG +pillar/DMSG +pillbox/MS +pill/GSMD +pillion/DMGS +pillory/MSDG +pillowcase/SM +pillow/GDMS +pillowslip/S +Pillsbury/M +pilot/DMGS +pilothouse/SM +piloting/M +pimento/MS +pimiento/SM +pimpernel/SM +pimp/GSMYD +pimple/SDM +pimplike +pimply/TRM +PIN +pinafore/MS +piata/S +Pinatubo/M +pinball/MS +Pincas/M +pincer/GSD +Pinchas/M +pincher/M +pinch/GRSD +pincushion/SM +Pincus/M +Pindar/M +pineapple/MS +pined/A +Pinehurst/M +pine/MNGXDS +pines/A +pinfeather/SM +ping/GDRM +pinheaded/P +pinhead/SMD +pinhole/SM +pining/A +pinion/DMG +Pinkerton/M +pinkeye/MS +pink/GTYDRMPS +pinkie/SM +pinkish/P +pinkness/S +pinko/MS +pinky's +pinnacle/MGSD +pinnate +pinned/U +pinning/S +Pinocchio/M +Pinochet/M +pinochle/SM +pion/S +pinpoint/SDG +pinprick/MDSG +pin's +pinsetter/SM +Pinsky/M +pinstripe/SDM +pintail/SM +Pinter/M +pint/MRS +pinto/S +pinup/MS +pin/US +pinwheel/DMGS +pinyin +Pinyin +piny/RT +pioneer/SDMG +pion/M +Piotr/M +piousness/MS +pious/YP +pipeline/DSMG +pipe/MS +piper/M +Piper/M +Pipestone/M +pipet's +pipette/MGSD +pipework +piping/YM +pipit/MS +pip/JSZMGDR +Pip/MR +Pippa/M +pipped +pipping +pippin/SM +Pippo/M +Pippy/M +pipsqueak/SM +piquancy/MS +piquantness/M +piquant/PY +pique/GMDS +piracy/MS +Piraeus/M +Pirandello/M +piranha/SM +pirate/MGSD +piratical/Y +pirogi +pirogies +pirouette/MGSD +pis +Pisa/M +piscatorial +Pisces/M +Pisistratus/M +pismire/SM +Pissaro/M +piss/DSRG! +pistachio/MS +piste/SM +pistillate +pistil/MS +pistoleers +pistole/M +pistol/SMGD +piston/SM +pitapat/S +pitapatted +pitapatting +pita/SM +Pitcairn/M +pitchblende/SM +pitcher/M +pitchfork/GDMS +pitching/M +pitchman/M +pitchmen +pitch/RSDZG +pitchstone/M +piteousness/SM +piteous/YP +pitfall/SM +pithily +pithiness/SM +pith/MGDS +piths +pithy/RTP +pitiableness/M +pitiable/P +pitiably +pitier/M +pitifuller +pitifullest +pitifulness/M +pitiful/PY +pitilessness/SM +pitiless/PY +pitman/M +pit/MS +Pitney/M +piton/SM +pittance/SM +pitted +pitting +Pittman/M +Pittsburgh/ZM +Pittsfield/M +Pitt/SM +Pittston/M +pituitary/SM +pitying/Y +pity/ZDSRMG +Pius/M +pivotal/Y +pivot/DMSG +pivoting/M +pix/DSG +pixel/SM +pixie/MS +pixiness +pixmap/SM +Pizarro/M +pizazz/S +pi/ZGDRH +pizza/SM +pizzeria/SM +pizzicati +pizzicato +pj's +PJ's +pk +pkg +pkt +pkwy +Pkwy +pl +placard/DSMG +placate/NGVXDRS +placatory +placeable/A +placebo/SM +placed/EAU +place/DSRJLGZM +placeholder/S +placekick/DGS +placeless/Y +placement/AMES +placental/S +placenta/SM +placer/EM +places/EA +placidity/SM +placidness/M +placid/PY +placing/AE +placket/SM +plagiarism/MS +plagiarist/MS +plagiarize/GZDSR +plagiary/SM +plagued/U +plague/MGRSD +plaguer/M +plaice/M +plaid/DMSG +plainclothes +plainclothesman +plainclothesmen +Plainfield/M +plainness/MS +plainsman/M +plainsmen +plainsong/SM +plainspoken +plain/SPTGRDY +plaintiff/MS +plaintiveness/M +plaintive/YP +plaint/VMS +Plainview/M +plaiting/M +plait/SRDMG +planar +planarity +Planck/M +plan/DRMSGZ +planeload +planer/M +plane's +plane/SCGD +planetarium/MS +planetary +planetesimal/M +planet/MS +planetoid/SM +plangency/S +plangent +planking/M +plank/SJMDG +plankton/MS +planned/U +planner/SM +planning +Plano +planoconcave +planoconvex +Plantagenet/M +plantain/MS +plantar +plantation/MS +planter/MS +planting/S +plantlike +plant's +plant/SADG +plaque/MS +plash/GSDM +plasma/MS +plasmid/S +plasm/M +plasterboard/MS +plasterer/M +plastering/M +plaster/MDRSZG +plasterwork/M +plastically +plasticine +Plasticine/M +plasticity/SM +plasticize/GDS +plastic/MYS +plateau/GDMS +plateful/S +platelet/SM +platen/M +plater/M +plate/SM +platform/SGDM +Plath/M +plating/M +platinize/GSD +platinum/MS +platitude/SM +platitudinous/Y +plat/JDNRSGXZ +Plato/M +platonic +Platonic +Platonism/M +Platonist +platoon/MDSG +platted +Platte/M +platter/MS +Platteville/M +platting +platypus/MS +platys +platy/TR +plaudit/MS +plausibility/S +plausible/P +plausibly +Plautus/M +playability/U +playable/U +playacting/M +playact/SJDG +playback/MS +playbill/SM +Playboy/M +playboy/SM +play/DRSEBG +played/A +player's/E +player/SM +playfellow/S +playfulness/MS +playful/PY +playgirl/SM +playgoer/MS +playground/MS +playgroup/S +playhouse/SM +playing/S +playmate/MS +playoff/S +playpen/SM +playroom/SM +plays/A +Playtex/M +plaything/MS +playtime/SM +playwright/SM +playwriting/M +plaza/SM +pleader/MA +pleading/MY +plead/ZGJRDS +pleasanter +pleasantest +pleasantness/SMU +pleasantry/MS +pleasant/UYP +pleased/EU +pleaser/M +pleases/E +please/Y +pleasingness/M +pleasing/YP +plea/SM +pleas/RSDJG +pleasurableness/M +pleasurable/P +pleasurably +pleasureful +pleasure/MGBDS +pleasure's/E +pleasures/E +pleater/M +pleat/RDMGS +plebeian/SY +plebe/MS +plebiscite/SM +plectra +plectrum/SM +pledger/M +pledge/RSDMG +Pleiads +Pleistocene +plenary/S +plenipotentiary/S +plenitude/MS +plenteousness/M +plenteous/PY +plentifulness/M +plentiful/YP +plenty/SM +plenum/M +pleonasm/MS +plethora/SM +pleurae +pleural +pleura/M +pleurisy/SM +Plexiglas/MS +plexus/SM +pliability/MS +pliableness/M +pliable/P +pliancy/MS +pliantness/M +pliant/YP +plication/MA +plier/MA +plight/GMDRS +plimsolls +plinker/M +plink/GRDS +plinth/M +plinths +Pliny/M +Pliocene/S +PLO +plodded +plodder/SM +plodding/SY +plod/S +plopped +plopping +plop/SM +plosive +plot/SM +plotted/A +plotter/MDSG +plotting +plover/MS +plowed/U +plower/M +plowman/M +plowmen +plow/SGZDRM +plowshare/MS +ploy's +ploy/SCDG +plucker/M +pluckily +pluckiness/SM +pluck/SGRD +plucky/TPR +pluggable +plugged/UA +plugging/AU +plughole +plug's +plug/US +plumage/DSM +plumbago/M +plumbed/U +plumber/M +plumbing/M +plumb/JSZGMRD +plume/SM +plummer +plummest +plummet/DSG +plummy +plumper/M +plumpness/S +plump/RDNYSTGP +plum/SMDG +plumy/TR +plunder/GDRSZ +plunger/M +plunge/RSDZG +plunker/M +plunk/ZGSRD +pluperfect/S +pluralism/MS +pluralistic +pluralist/S +plurality/SM +pluralization/MS +pluralize/GZRSD +pluralizer/M +plural/SY +plushness/MS +plush/RSYMTP +plushy/RPT +plus/S +plussed +plussing +Plutarch/M +plutocracy/MS +plutocratic +plutocrat/SM +Pluto/M +plutonium/SM +pluvial/S +ply/AZNGRSD +Plymouth/M +plywood/MS +pm +PM +Pm/M +PMS +pneumatically +pneumatic/S +pneumatics/M +pneumonia/MS +PO +poacher/M +poach/ZGSRD +Pocahontas/M +pocketbook/SM +pocketful/SM +pocketing/M +pocketknife/M +pocketknives +pocket/MSRDG +pock/GDMS +pockmark/MDSG +Pocono/MS +podded +podding +podge/ZR +Podgorica/M +podiatrist/MS +podiatry/MS +podium/MS +pod/SM +Podunk/M +Poe/M +poem/MS +poesy/GSDM +poetaster/MS +poetess/MS +poetically +poeticalness +poetical/U +poetic/S +poetics/M +poet/MS +poetry/SM +pogo +Pogo/M +pogrom/GMDS +poignancy/MS +poignant/Y +Poincar/M +poinciana/SM +Poindexter/M +poinsettia/SM +pointblank +pointedness/M +pointed/PY +pointer/M +pointillism/SM +pointillist/SM +pointing/M +pointlessness/SM +pointless/YP +point/RDMZGS +pointy/TR +poise/M +pois/GDS +poi/SM +poisoner/M +poisoning/M +poisonous/PY +poison/RDMZGSJ +Poisson/M +poke/DRSZG +Pokemon/M +pokerface/D +poker/M +poky/SRT +Poland/M +Polanski/M +polarimeter/SM +polarimetry +polariscope/M +Polaris/M +polarity/MS +polarization/CMS +polarized/UC +polarize/RSDZG +polarizes/C +polarizing/C +polarogram/SM +polarograph +polarography/M +Polaroid/SM +polar/S +polecat/SM +polemical/Y +polemicist/S +polemic/S +polemics/M +pole/MS +Pole/MS +poler/M +polestar/S +poleward/S +pol/GMDRS +policeman/M +policemen/M +police/MSDG +policewoman/M +policewomen +policyholder/MS +policymaker/S +policymaking +policy/SM +poliomyelitides +poliomyelitis/M +polio/SM +Polish +polished/U +polisher/M +polish/RSDZGJ +polis/M +Politburo/M +politburo/S +politeness/MS +polite/PRTY +politesse/SM +politically +political/U +politician/MS +politicization/S +politicize/CSDG +politicked +politicking/SM +politico/SM +politic/S +politics/M +polity/MS +polka/SDMG +Polk/M +pollack/SM +Pollard/M +polled/U +pollen/GDM +pollinate/XSDGN +pollination/M +pollinator/MS +polliwog/SM +poll/MDNRSGX +pollock's +Pollock/SM +pollster/MS +pollutant/MS +polluted/U +polluter/M +pollute/RSDXZVNG +pollution/M +Pollux/M +Pollyanna/M +Polly/M +pollywog's +Pol/MY +Polo/M +polo/MS +polonaise/MS +polonium/MS +poltergeist/SM +poltroon/MS +polyandrous +polyandry/MS +polyatomic +polybutene/MS +polycarbonate +polychemicals +polychrome +polyclinic/MS +polycrystalline +polyelectrolytes +polyester/SM +polyether/S +polyethylene/SM +polygamist/MS +polygamous/Y +polygamy/MS +polyglot/S +polygonal/Y +polygon/MS +polygraph/MDG +polygraphs +polygynous +polyhedral +polyhedron/MS +Polyhymnia/M +polyisobutylene +polyisocyanates +polymath/M +polymaths +polymerase/S +polymeric +polymerization/SM +polymerize/SDG +polymer/MS +polymorphic +polymorphism/MS +polymorph/M +polymyositis +Polynesia/M +Polynesian/S +polynomial/YMS +Polyphemus/M +polyphonic +polyphony/MS +polyphosphate/S +polyp/MS +polypropylene/MS +polystyrene/SM +polysyllabic +polysyllable/SM +polytechnic/MS +polytheism/SM +polytheistic +polytheist/SM +polythene/M +polytonal/Y +polytopes +polyunsaturated +polyurethane/SM +polyvinyl/MS +Po/M +pomade/MGSD +pomander/MS +pomegranate/SM +Pomerania/M +Pomeranian +pommel/GSMD +Pomona/M +Pompadour/M +pompadour/MDS +pompano/SM +Pompeian/S +Pompeii/M +Pompey/M +pompom/SM +pompon's +pomposity/MS +pompousness/S +pompous/YP +pomp/SM +ponce/M +Ponce/M +Ponchartrain/M +poncho/MS +ponderer/M +ponderousness/MS +ponderous/PY +ponder/ZGRD +pond/SMDRGZ +pone/SM +pongee/MS +poniard/GSDM +pons/M +Pontchartrain/M +Pontiac/M +Pontianak/M +pontiff/MS +pontifical/YS +pontificate/XGNDS +pontoon/SMDG +pony/DSMG +ponytail/SM +pooch/GSDM +poodle/MS +poof/MS +pooh/DG +Pooh/M +poohs +Poole/M +pool/MDSG +poolroom/MS +poolside +Poona/M +poop/MDSG +poorboy +poorhouse/MS +poorness/MS +poor/TYRP +popcorn/MS +Popek/MS +pope/SM +Pope/SM +Popeye/M +popgun/SM +popinjay/MS +poplar/SM +poplin/MS +Popocatepetl/M +popover/SM +poppa/MS +popped +Popper/M +popper/SM +poppet/M +popping +Poppins/M +poppycock/MS +Poppy/M +poppy/SDM +poppyseed +Popsicle/MS +pop/SM +populace/MS +popularism +popularity/UMS +popularization/SM +popularize/A +popularized +popularizer/MS +popularizes/U +popularizing +popular/YS +populate/CXNGDS +populated/UA +populates/A +populating/A +population/MC +populism/S +populist/SM +populousness/MS +populous/YP +porcelain/SM +porch/SM +porcine +porcupine/MS +pore/ZGDRS +Porfirio/M +porgy/SM +poring/Y +porker/M +porky/TSR +pork/ZRMS +pornographer/SM +pornographic +pornographically +pornography/SM +porno/S +porn/S +porosity/SM +porousness/MS +porous/PY +porphyritic +porphyry/MS +porpoise/DSGM +porridge/MS +Porrima/M +porringer/MS +Porsche/M +portability/S +portables +portable/U +portably +port/ABSGZMRD +portage/ASM +portaged +portaging +portal/SM +portamento/M +portcullis/MS +ported/CE +Porte/M +portend/SDG +portentousness/M +portentous/PY +portent/SM +porterage/M +porter/DMG +porterhouse/SM +Porter/M +porter's/A +portfolio/MS +porthole/SM +Portia/M +porticoes +portico/M +Portie/M +portire/SM +porting/E +portion/KGSMD +Portland/M +portliness/SM +portly/PTR +portmanteau/SM +Port/MR +Prto/M +portraitist/SM +portrait/MS +portraiture/MS +portrayal/SM +portrayer/M +portray/GDRS +ports/CE +Portsmouth/M +Portugal/M +Portuguese/M +portulaca/MS +Porty/M +posed/CA +Poseidon/M +poser/KME +poses/CA +poseur/MS +pose/ZGKDRSE +posh/DSRGT +posing/CA +positifs +positionable +positional/KY +position/KGASMD +position's/EC +positions/EC +positiveness/S +positive/RSPYT +positivism/M +positivist/S +positivity +positron/SM +posit/SCGD +Posner/M +posse/M +possess/AGEDS +possessed/PY +possession/AEMS +possessional +possessiveness/MS +possessive/PSMY +possessor/MS +possibility/SM +possible/TRS +possibly +poss/S +possum/MS +postage/MS +postal/S +post/ASDRJG +postbag/M +postbox/SM +postcard/SM +postcode/SM +postcondition/S +postconsonantal +postdate/DSG +postdoctoral +posteriori +posterior/SY +posterity/SM +poster/MS +postfix/GDS +postgraduate/SM +posthaste/S +posthumousness/M +posthumous/YP +posthypnotic +postilion/MS +postindustrial +posting/M +postlude/MS +Post/M +postman/M +postmarital +postmark/GSMD +postmaster/SM +postmen +postmeridian +postmistress/MS +postmodern +postmodernist +postmortem/S +postnasal +postnatal +postoperative/Y +postorder +postpaid +postpartum +postpone/GLDRS +postponement/S +postpositions +postprandial +post's +postscript/SM +postsecondary +postulate/XGNSD +postulation/M +postural +posture/MGSRD +posturer/M +postvocalic +postwar +posy/SM +potability/SM +potableness/M +potable/SP +potage/M +potash/MS +potassium/MS +potatoes +potato/M +potbelly/MSD +potboiler/M +potboil/ZR +pot/CMS +Potemkin/M +potency/MS +potentate/SM +potentiality/MS +potential/SY +potentiating +potentiometer/SM +potent/YS +potful/SM +pothead/MS +potherb/MS +pother/GDMS +potholder/MS +pothole/SDMG +potholing/M +pothook/SM +potion/SM +potlatch/SM +potluck/MS +Potomac/M +potpie/SM +potpourri/SM +Potsdam/M +potsherd/MS +potshot/S +pottage/SM +Pottawatomie/M +potted +Potter/M +potter/RDMSG +pottery/MS +potting +Potts/M +potty/SRT +pouch/SDMG +Poughkeepsie/M +Poul/M +poulterer/MS +poultice/DSMG +poultry/MS +pounce/SDG +poundage/MS +pounder/MS +pound/KRDGS +Pound/M +pour/DSG +pourer's +Poussin/MS +pouter/M +pout/GZDRS +poverty/MS +POW +powderpuff +powder/RDGMS +powdery +Powell/M +powerboat/MS +powerfulness/M +powerful/YP +power/GMD +powerhouse/MS +powerlessness/SM +powerless/YP +Powers +Powhatan/M +pow/RZ +powwow/GDMS +pox/GMDS +Poznan/M +pp +PP +ppm +ppr +PPS +pr +PR +practicability/S +practicable/P +practicably +practicality/SM +practicalness/M +practical/YPS +practice/BDRSMG +practiced/U +practicer/M +practicum/SM +practitioner/SM +Pradesh/M +Prado/M +Praetorian +praetorian/S +praetor/MS +pragmatical/Y +pragmatic/S +pragmatics/M +pragmatism/MS +pragmatist/MS +Prague/M +Praia +prairie/MS +praise/ESDG +praiser/S +praise's +praiseworthiness/MS +praiseworthy/P +praising/Y +Prakrit/M +praline/MS +pram/MS +prancer/M +prance/ZGSRD +prancing/Y +prank/SMDG +prankster/SM +praseodymium/SM +Pratchett/M +prate/DSRGZ +prater/M +pratfall/MS +prating/Y +prattle/DRSGZ +prattler/M +prattling/Y +Pratt/M +Prattville/M +Pravda/M +prawn/MDSG +praxes +praxis/M +Praxiteles/M +pray/DRGZS +prayerbook +prayerfulness/M +prayerful/YP +prayer/M +PRC +preach/DRSGLZJ +preacher/M +preaching/Y +preachment/MS +preachy/RT +preadolescence/S +Preakness/M +preallocate/XGNDS +preallocation/M +preallocator/S +preamble/MGDS +preamp +preamplifier/M +prearrange/LSDG +prearrangement/SM +preassign/SDG +preauthorize +prebendary/M +Precambrian +precancel/DGS +precancerous +precariousness/MS +precarious/PY +precautionary +precaution/SGDM +precede/DSG +precedence/SM +precedented/U +precedent/SDM +preceptive/Y +preceptor/MS +precept/SMV +precess/DSG +precession/M +precinct/MS +preciosity/MS +preciousness/S +precious/PYS +precipice/MS +precipitable +precipitant/S +precipitateness/M +precipitate/YNGVPDSX +precipitation/M +precipitousness/M +precipitous/YP +preciseness/SM +precise/XYTRSPN +precision/M +prcis/MDG +preclude/GDS +preclusion/S +precociousness/MS +precocious/YP +precocity/SM +precode/D +precognition/SM +precognitive +precollege/M +precolonial +precomputed +preconceive/GSD +preconception/SM +precondition/GMDS +preconscious +precook/GDS +precursor/SM +precursory +precut +predate/NGDSX +predation/CMS +predator/SM +predatory +predecease/SDG +predecessor/MS +predeclared +predecline +predefine/GSD +predefinition/SM +predesignate/GDS +predestination/SM +predestine/SDG +predetermination/MS +predeterminer/M +predetermine/ZGSRD +predicable/S +predicament/SM +predicate/VGNXSD +predication/M +predicator +predictability/UMS +predictable/U +predictably/U +predict/BSDGV +predicted/U +prediction/MS +predictive/Y +predictor/MS +predigest/GDS +predilect +predilection/SM +predispose/SDG +predisposition/MS +predoctoral +predominance/SM +predominant/Y +predominate/YSDGN +predomination/M +preemie/MS +preeminence/SM +preeminent/Y +preemployment/M +preempt/GVSD +preemption/SM +preemptive/Y +preemptor/M +preener/M +preen/SRDG +preexist/DSG +preexistence/SM +preexistent +prefabbed +prefabbing +prefab/MS +prefabricate/XNGDS +prefabrication/M +preface/DRSGM +prefacer/M +prefatory +prefect/MS +prefecture/MS +preferableness/M +preferable/P +preferably +prefer/BL +preference/MS +preferential/Y +preferment/SM +preferred +preferring +prefiguration/M +prefigure/SDG +prefix/MDSG +preflight/SGDM +preform/DSG +pref/RZ +pregnancy/SM +pregnant/Y +preheat/GDS +prehensile +prehistoric +prehistorical/Y +prehistory/SM +preindustrial +preinitialize/SDG +preinterview/M +preisolated +prejudge/DRSG +prejudger/M +prejudgment/SM +prejudiced/U +prejudice/MSDG +prejudicial/PY +prekindergarten/MS +prelacy/MS +prelate/SM +preliminarily +preliminary/S +preliterate/S +preloaded +prelude/GMDRS +preluder/M +premarital/Y +premarket +prematureness/M +premature/SPY +prematurity/M +premedical +premeditated/Y +premeditate/XDSGNV +premeditation/M +premed/S +premenstrual +premiere/MS +premier/GSDM +premiership/SM +Preminger/M +premise/GMDS +premiss's +premium/MS +premix/GDS +premolar/S +premonition/SM +premonitory +prenatal/Y +Pren/M +Prenticed/M +Prentice/MGD +Prenticing/M +Prentiss/M +Prent/M +prenuptial +preoccupation/MS +preoccupy/DSG +preoperative +preordain/DSLG +prepackage/GSD +prepaid +preparation/SM +preparative/SYM +preparatory +preparedly +preparedness/USM +prepared/UP +prepare/ZDRSG +prepay/GLS +prepayment/SM +prepender/S +prepends +preplanned +preponderance/SM +preponderant/Y +preponderate/DSYGN +prepositional/Y +preposition/SDMG +prepossess/GSD +prepossessing/U +prepossession/MS +preposterousness/M +preposterous/PY +prepped +prepping +preppy/RST +preprepared +preprint/SGDM +preprocessed +preprocessing +preprocessor/S +preproduction +preprogrammed +prep/SM +prepubescence/S +prepubescent/S +prepublication/M +prepuce/SM +prequel/S +preradiation +prerecord/DGS +preregister/DSG +preregistration/MS +prerequisite/SM +prerogative/SDM +Pres +presage/GMDRS +presager/M +presbyopia/MS +presbyterian +Presbyterianism/S +Presbyterian/S +presbyter/MS +presbytery/MS +preschool/RSZ +prescience/SM +prescient/Y +Prescott/M +prescribed/U +prescriber/M +prescribe/RSDG +prescription/SM +prescriptive/Y +prescript/SVM +preselect/SGD +presence/SM +presentableness/M +presentable/P +presentably/A +presentational/A +presentation/AMS +presented/A +presenter/A +presentiment/MS +presentment/SM +presents/A +present/SLBDRYZGP +preservationist/S +preservation/SM +preservative/SM +preserve/DRSBZG +preserved/U +preserver/M +preset/S +presetting +preshrank +preshrink/SG +preshrunk +preside/DRSG +presidency/MS +presidential/Y +president/SM +presider/M +presidia +presidium/M +Presley/M +presoaks +presort/GDS +pres/S +press/ACDSG +pressed/U +presser/MS +pressingly/C +pressing/YS +pressman/M +pressmen +pressure/DSMG +pressurization/MS +pressurize/DSRGZ +pressurized/U +prestidigitate/NX +prestidigitation/M +prestidigitatorial +prestidigitator/M +prestige/MS +prestigious/PY +Preston/M +presto/S +presumably +presume/BGDRS +presumer/M +presuming/Y +presumption/MS +presumptive/Y +presumptuousness/SM +presumptuous/YP +presuppose/GDS +presupposition/S +pretax +preteen/S +pretended/Y +pretender/M +pretending/U +pretend/SDRZG +pretense/MNVSX +pretension/GDM +pretentiousness/S +pretentious/UYP +preterite's +preterit/SM +preternatural/Y +pretest/SDG +pretext/SMDG +Pretoria/M +pretreated +pretreatment/S +pretrial +prettify/SDG +prettily +prettiness/SM +pretty/TGPDRS +pretzel/SM +prevailing/Y +prevail/SGD +prevalence/MS +prevalent/SY +prevaricate/DSXNG +prevaricator/MS +preventable/U +preventably +preventative/S +prevent/BSDRGV +preventer/M +prevention/MS +preventiveness/M +preventive/SPY +preview/ZGSDRM +previous/Y +prevision/SGMD +prewar +prexes +preyer's +prey/SMDG +Priam/M +priapic +Pribilof/M +price/AGSD +priced/U +priceless +Price/M +pricer/MS +price's +pricey +pricier +priciest +pricker/M +pricking/M +prickle/GMDS +prickliness/S +prickly/RTP +prick/RDSYZG +prideful/Y +pride/GMDS +prier/M +priestess/MS +priesthood/SM +Priestley/M +priestliness/SM +priestly/PTR +priest/SMYDG +prigged +prigging +priggishness/S +priggish/PYM +prig/SM +primacy/MS +primal +primarily +primary/MS +primate/MS +primed/U +primely/M +primeness/M +prime/PYS +primer/M +Prime's +primeval/Y +priming/M +primitiveness/SM +primitive/YPS +primitivism/M +primmed +primmer +primmest +primming +primness/MS +primogenitor/MS +primogeniture/MS +primordial/YS +primp/DGS +primrose/MGSD +prim/SPJGZYDR +princedom/MS +princeliness/SM +princely/PRT +Prince/M +prince/SMY +princess/MS +Princeton/M +principality/MS +principal/SY +Principe/M +Principia/M +principled/U +principle/SDMG +printable/U +printably +print/AGDRS +printed/U +printer/AM +printers +printing/SM +printmaker/M +printmake/ZGR +printmaking/M +printout/S +Prinz/M +prioress/MS +priori +prioritize/DSRGZJ +priority/MS +prior/YS +priory/SM +Pris +Prisca/M +Priscella/M +Priscilla/M +prised +prise/GMAS +prismatic +prism/MS +prison/DRMSGZ +prisoner/M +Prissie/M +prissily +prissiness/SM +prissy/RSPT +pristine/Y +prithee/S +privacy/MS +privateer/SMDG +privateness/M +private/NVYTRSXP +privation/MCS +privative/Y +privatization/S +privatize/GSD +privet/SM +privileged/U +privilege/SDMG +privily +privy/SRMT +prized/A +prize/DSRGZM +prizefighter/M +prizefighting/M +prizefight/SRMGJZ +prizewinner/S +prizewinning +Pr/MN +PRO +proactive +probabilist +probabilistic +probabilistically +probability/SM +probable/S +probably +probated/A +probate/NVMX +probates/A +probating/A +probational +probationary/S +probationer/M +probation/MRZ +probation's/A +probative/A +prober/M +probity/SM +problematical/UY +problematic/S +problem/SM +proboscis/MS +prob/RBJ +procaine/MS +procedural/SY +procedure/MS +proceeder/M +proceeding/M +proceed/JRDSG +process/BSDMG +processed/UA +processes/A +processional/YS +procession/GD +processor/MS +proclamation/MS +proclivity/MS +proconsular +procrastinate/XNGDS +procrastination/M +procrastinator/MS +procreational +procreatory +procrustean +Procrustean +Procrustes/M +proctor/GSDM +proctorial +procurable/U +procure/L +procurement/MS +Procyon/M +prodded +prodding +prodigality/S +prodigal/SY +prodigiousness/M +prodigious/PY +prodigy/MS +prod/S +produce/AZGDRS +producer/AM +producible/A +production/ASM +productively/UA +productiveness/MS +productive/PY +productivities +productivity/A +productivity's +productize/GZRSD +product/V +Prof +profanation/S +profaneness/MS +profane/YPDRSG +profanity/MS +professed/Y +professionalism/SM +professionalize/GSD +professional/USY +profession/SM +professorial/Y +professorship/SM +professor/SM +proffer/GSD +proficiency/SM +proficient/YS +profitability/MS +profitableness/MU +profitable/UP +profitably/U +profiteer/GSMD +profiterole/MS +profit/GZDRB +profitless +profligacy/S +profligate/YS +proforma/S +profoundity +profoundness/SM +profound/PTYR +prof/S +profundity/MS +profuseness/MS +profuse/YP +progenitor/SM +progeny/M +progesterone/SM +prognathous +prognoses +prognosis/M +prognosticate/NGVXDS +prognostication/M +prognosticator/S +prognostic/S +program/CSA +programed +programing +programmability +programmable/S +programmed/CA +programmer/ASM +programming/CA +programmings +progression/SM +progressiveness/SM +progressive/SPY +progressivism +progress/MSDVG +prohibiter/M +prohibitionist/MS +prohibition/MS +Prohibition/MS +prohibitiveness/M +prohibitive/PY +prohibitory +prohibit/VGSRD +projected/AU +projectile/MS +projectionist/MS +projection/MS +projective/Y +project/MDVGS +projector/SM +Prokofieff/M +Prokofiev/M +prolegomena +proletarianization/M +proletarianized +proletarian/S +proletariat/SM +proliferate/GNVDSX +proliferation/M +prolifically +prolific/P +prolixity/MS +prolix/Y +prologize +prologue/MGSD +prologuize +prolongate/NGSDX +prolongation/M +prolonger/M +prolong/G +promenade/GZMSRD +promenader/M +Promethean +Prometheus/M +promethium/SM +prominence/MS +prominent/Y +promiscuity/MS +promiscuousness/M +promiscuous/PY +promise/GD +promising/UY +promissory +promontory/MS +promote/GVZBDR +promoter/M +promotiveness/M +promotive/P +prompted/U +prompter/M +promptitude/SM +promptness/MS +prompt/SGJTZPYDR +pro/MS +promulgate/NGSDX +promulgation/M +promulgator/MS +pron +proneness/MS +prone/PY +pronghorn/SM +prong/SGMD +pronominalization +pronominalize +pronounceable/U +pronouncedly +pronounced/U +pronounce/GLSRD +pronouncement/SM +pronouncer/M +pronto +pronunciation/SM +proofed/A +proofer +proofing/M +proofreader/M +proofread/GZSR +proof/SEAM +propaganda/SM +propagandistic +propagandist/SM +propagandize/DSG +propagated/U +propagate/SDVNGX +propagation/M +propagator/MS +propellant/MS +propelled +propeller/MS +propelling +propel/S +propensity/MS +properness/M +proper/PYRT +propertied/U +property/SDM +prophecy/SM +prophesier/M +prophesy/GRSDZ +prophetess/S +prophetic +prophetical/Y +prophet/SM +prophylactic/S +prophylaxes +prophylaxis/M +propinquity/MS +propionate/M +propitiate/GNXSD +propitiatory +propitiousness/M +propitious/YP +proponent/MS +proportionality/M +proportional/SY +proportionate/YGESD +proportioner/M +proportion/ESGDM +proportionment/M +proposal/SM +propped +propping +proprietary/S +proprietorial +proprietorship/SM +proprietor/SM +proprietress/MS +propriety/MS +proprioception +proprioceptive +prop/SZ +propulsion/MS +propulsive +propylene/M +prorogation/SM +prorogue +prosaic +prosaically +proscenium/MS +prosciutti +prosciutto/SM +proscription/SM +proscriptive +pros/DSRG +prosecute/SDBXNG +prosecution/M +prosecutor/MS +proselyte/SDGM +proselytism/MS +proselytize/ZGDSR +prose/M +proser/M +Proserpine/M +prosodic/S +prosody/MS +prospect/DMSVG +prospection/SM +prospectiveness/M +prospective/SYP +prospector/MS +prospectus/SM +prosper/GSD +prosperity/MS +prosperousness/M +prosperous/PY +prostate +prostheses +prosthesis/M +prosthetic/S +prosthetics/M +prostitute/DSXNGM +prostitution/M +prostrate/SDXNG +prostration/M +prosy/RT +protactinium/MS +protagonist/SM +Protagoras/M +protean/S +protease/M +protect/DVGS +protected/UY +protectionism/MS +protectionist/MS +protection/MS +protectiveness/S +protective/YPS +protectorate/SM +protector/MS +protges +protg/SM +protein/MS +proteolysis/M +proteolytic +Proterozoic/M +protestantism +Protestantism/MS +protestant/S +Protestant/SM +protestation/MS +protest/G +protesting/Y +Proteus/M +protocol/DMGS +protoplasmic +protoplasm/MS +prototype/SDGM +prototypic +prototypical/Y +protozoa +protozoan/MS +protozoic +protozoon's +protract/DG +protrude/SDG +protrusile +protrusion/MS +protrusive/PY +protuberance/S +protuberant +Proudhon/M +proud/TRY +Proust/M +provabilities +provability's +provability/U +provableness/M +provable/P +provably +prov/DRGZB +proved/U +proven/U +prove/ESDAG +provenance/SM +Provenal +Provencals +Provence/M +provender/SDG +provenience/SM +provenly +proverb/DG +proverbial/Y +Proverbs/M +prover/M +provide/DRSBGZ +provided/U +providence/SM +Providence/SM +providential/Y +provident/Y +provider/M +province/SM +provincialism/SM +provincial/SY +provisional/YS +provisioner/M +provision/R +proviso/MS +provocateur/S +provocativeness/SM +provocative/P +provoked/U +provoke/GZDRS +provoking/Y +provolone/SM +Provo/M +provost/MS +prowess/SM +prowler/M +prowl/RDSZG +prow/TRMS +proximal/Y +proximateness/M +proximate/PY +proximity/MS +Proxmire/M +proxy/SM +Prozac +prude/MS +Prudence/M +prudence/SM +Prudential/M +prudential/SY +prudent/Y +prudery/MS +Prudi/M +prudishness/SM +prudish/YP +Prudy/M +Prue/M +Pruitt/M +Pru/M +prune/DSRGZM +pruner/M +prurience/MS +prurient/Y +Prussia/M +Prussian/S +prussic +Prut/M +Pryce/M +pry/DRSGTZ +pryer's +prying/Y +P's +PS +p's/A +psalmist/SM +psalm/SGDM +Psalms/M +psalter +Psalter/SM +psaltery/MS +psephologist/M +pseudonymous +pseudonym/SM +pseudopod +pseudo/S +pseudoscience/S +pshaw/SDG +psi/S +psittacoses +psittacosis/M +psoriases +psoriasis/M +psst/S +PST +psychedelically +psychedelic/S +psyche/M +Psyche/M +psychiatric +psychiatrist/SM +psychiatry/MS +psychical/Y +psychic/MS +psychoacoustic/S +psychoacoustics/M +psychoactive +psychoanalysis/M +psychoanalyst/S +psychoanalytic +psychoanalytical +psychoanalyze/SDG +psychobabble/S +psychobiology/M +psychocultural +psychodrama/MS +psychogenic +psychokinesis/M +psycholinguistic/S +psycholinguistics/M +psycholinguists +psychological/Y +psychologist/MS +psychology/MS +psychometric/S +psychometrics/M +psychometry/M +psychoneuroses +psychoneurosis/M +psychopathic/S +psychopath/M +psychopathology/M +psychopaths +psychopathy/SM +psychophysical/Y +psychophysic/S +psychophysics/M +psychophysiology/M +psychosis/M +psycho/SM +psychosocial/Y +psychosomatic/S +psychosomatics/M +psychos/S +psychotherapeutic/S +psychotherapist/MS +psychotherapy/SM +psychotically +psychotic/S +psychotropic/S +psychs +psych/SDG +PT +PTA +Ptah/M +ptarmigan/MS +pt/C +pterodactyl/SM +Pt/M +PTO +Ptolemaic +Ptolemaists +Ptolemy/MS +ptomaine/MS +Pu +pubbed +pubbing +pubertal +puberty/MS +pubes +pubescence/S +pubescent +pubic +pubis/M +publican/AMS +publication/AMS +publicist/SM +publicity/SM +publicized/U +publicize/SDG +publicness/M +publics/A +public/YSP +publishable/U +published/UA +publisher/ASM +publishes/A +publishing/M +publish/JDRSBZG +pub/MS +Puccini/M +puce/SM +pucker/DG +Puckett/M +puck/GZSDRM +puckishness/S +puckish/YP +Puck/M +pudding/MS +puddle/JMGRSD +puddler/M +puddling/M +puddly +pudenda +pudendum/M +pudginess/SM +pudgy/PRT +Puebla/M +Pueblo/MS +pueblo/SM +puerile/Y +puerility/SM +puerperal +puers +Puerto/M +puffball/SM +puffer/M +puffery/M +puffiness/S +puffin/SM +Puff/M +puff/SGZDRM +puffy/PRT +Puget/M +pugged +pugging +Pugh/M +pugilism/SM +pugilistic +pugilist/S +pug/MS +pugnaciousness/MS +pugnacious/YP +pugnacity/SM +puissant/Y +puke/GDS +pukka +Pulaski/SM +pulchritude/SM +pulchritudinous/M +pule/GDS +Pulitzer/SM +pullback/S +pull/DRGZSJ +pullet/SM +pulley/SM +Pullman/MS +pullout/S +pullover/SM +pulmonary +pulpiness/S +pulpit/MS +pulp/MDRGS +pulpwood/MS +pulpy/PTR +pulsar/MS +pulsate/NGSDX +pulsation/M +pulse/ADSG +pulser +pulse's +pulverable +pulverization/MS +pulverized/U +pulverize/GZSRD +pulverizer/M +pulverizes/UA +puma/SM +pumice/SDMG +pummel/SDG +pumpernickel/SM +pump/GZSMDR +pumping/M +pumpkin/MS +punchbowl/M +punched/U +puncheon/MS +puncher/M +punch/GRSDJBZ +punchline/S +Punch/M +punchy/RT +punctilio/SM +punctiliousness/SM +punctilious/PY +punctualities +punctuality/UM +punctualness/M +punctual/PY +punctuate/SDXNG +punctuational +punctuation/M +puncture/SDMG +punditry/S +pundit/SM +pungency/MS +pungent/Y +Punic +puniness/MS +punished/U +punisher/M +punishment/MS +punish/RSDGBL +punitiveness/M +punitive/YP +Punjabi/M +Punjab/M +punk/TRMS +punky/PRS +pun/MS +punned +punning +punster/SM +punter/M +punt/GZMDRS +puny/PTR +pupae +pupal +pupa/M +pupate/NGSD +pupillage/M +pupil/SM +pup/MS +pupped +puppeteer/SM +puppetry/MS +puppet/SM +pupping +puppy/GSDM +puppyish +purblind +Purcell/M +purchasable +purchase/GASD +purchaser/MS +purdah/M +purdahs +Purdue/M +purebred/S +puree/DSM +pureeing +pureness/MS +pure/PYTGDR +purgation/M +purgative/MS +purgatorial +purgatory/SM +purge/GZDSR +purger/M +purify/GSRDNXZ +Purim/SM +Purina/M +purine/SM +purism/MS +puristic +purist/MS +puritanic +puritanical/Y +Puritanism/MS +puritanism/S +puritan/SM +Puritan/SM +purity/SM +purlieu/SM +purl/MDGS +purloin/DRGS +purloiner/M +purple/MTGRSD +purplish +purport/DRSZG +purported/Y +purposefulness/S +purposeful/YP +purposelessness/M +purposeless/PY +purpose/SDVGYM +purposiveness/M +purposive/YP +purr/DSG +purring/Y +purse/DSRGZM +purser/M +pursuance/MS +pursuant +pursuer/M +pursue/ZGRSD +pursuit/MS +purulence/MS +purulent +Purus +purveyance/MS +purvey/DGS +purveyor/MS +purview/SM +Pusan/M +Pusey/M +pushbutton/S +pushcart/SM +pushchair/SM +pushdown +push/DSRBGZ +pusher/M +pushily +pushiness/MS +Pushkin/M +pushover/SM +Pushtu/M +pushy/PRT +pusillanimity/MS +pusillanimous/Y +pus/SM +puss/S +pussycat/S +pussyfoot/DSG +pussy/TRSM +pustular +pustule/MS +putative/Y +Putin/M +put/IS +Putnam/M +Putnem/M +putout/S +putrefaction/SM +putrefactive +putrefy/DSG +putrescence/MS +putrescent +putridity/M +putridness/M +putrid/YP +putsch/S +putted/I +puttee/MS +putter/RDMGZ +putting/I +putt/SGZMDR +puttying/M +putty/SDMG +puzzle/JRSDZLG +puzzlement/MS +puzzler/M +PVC +pvt +Pvt/M +PW +PX +p/XTGJ +Pygmalion/M +pygmy/SM +Pygmy/SM +Pyhrric/M +pyknotic +Pyle/M +pylon/SM +pylori +pyloric +pylorus/M +Pym/M +Pynchon/M +Pyongyang/M +pyorrhea/SM +Pyotr/M +pyramidal/Y +pyramid/GMDS +pyre/MS +Pyrenees +Pyrex/SM +pyridine/M +pyrimidine/SM +pyrite/MS +pyroelectric +pyroelectricity/SM +pyrolysis/M +pyrolyze/RSM +pyromaniac/SM +pyromania/MS +pyrometer/MS +pyrometry/M +pyrophosphate/M +pyrotechnical +pyrotechnic/S +pyrotechnics/M +pyroxene/M +pyroxenite/M +Pyrrhic +Pythagoras/M +Pythagorean/S +Pythias +Python/M +python/MS +pyx/MDSG +q +Q +QA +Qaddafi/M +Qantas/M +Qatar/M +QB +QC +QED +Qingdao +Qiqihar/M +QM +Qom/M +qr +q's +Q's +qt +qty +qua +Quaalude/M +quackery/MS +quackish +quack/SDG +quadded +quadding +quadrangle/MS +quadrangular/M +quadrant/MS +quadraphonic/S +quadrapole +quadratical/Y +quadratic/SM +quadrature/MS +quadrennial/SY +quadrennium/MS +quadric +quadriceps/SM +quadrilateral/S +quadrille/XMGNSD +quadrillion/MH +quadripartite/NY +quadriplegia/SM +quadriplegic/SM +quadrivia +quadrivium/M +quadrupedal +quadruped/MS +quadruple/GSD +quadruplet/SM +quadruplicate/GDS +quadruply/NX +quadrupole +quad/SM +quadword/MS +quaffer/M +quaff/SRDG +quagmire/DSMG +quahog/MS +quail/GSDM +quaintness/MS +quaint/PTYR +quake/GZDSR +Quakeress/M +Quakerism/S +Quaker/SM +quaky/RT +qualification/ME +qualified/UY +qualifier/SM +qualify/EGXSDN +qualitative/Y +quality/MS +qualmish +qualm/SM +quandary/MS +quangos +quanta/M +Quantico/M +quantifiable/U +quantified/U +quantifier/M +quantify/GNSRDZX +quantile/S +quantitativeness/M +quantitative/PY +quantity/MS +quantization/MS +quantizer/M +quantize/ZGDRS +quantum/M +quarantine/DSGM +quark/SM +quarreler/M +quarrellings +quarrelsomeness/MS +quarrelsome/PY +quarrel/SZDRMG +quarrier/M +quarryman/M +quarrymen +quarry/RSDGM +quarterback/SGMD +quarterdeck/MS +quarterer/M +quarterfinal/MS +quartering/M +quarterly/S +quartermaster/MS +quarter/MDRYG +quarterstaff/M +quarterstaves +quartet/SM +quartic/S +quartile/SM +quarto/SM +quart/RMSZ +quartzite/M +quartz/SM +quasar/SM +quash/GSD +quasi +quasilinear +Quasimodo/M +Quaternary +quaternary/S +quaternion/SM +quatrain/SM +quaver/GDS +quavering/Y +quavery +Quayle/M +quayside/M +quay/SM +queasily +queasiness/SM +queasy/TRP +Quebec/M +Quechua/M +Queenie/M +queenly/RT +queen/SGMDY +Queensland/M +Queen/SM +queerness/S +queer/STGRDYP +queller/M +quell/SRDG +Que/M +quenchable/U +quenched/U +quencher/M +quench/GZRSDB +quenchless +Quentin/M +Quent/M +Querida/M +quern/M +querulousness/S +querulous/YP +query/MGRSD +quested/A +quester/AS +quester's +quest/FSIM +questing +questionableness/M +questionable/P +questionably/U +questioned/UA +questioner/M +questioning/UY +questionnaire/MS +question/SMRDGBZJ +quests/A +Quetzalcoatl/M +queued/C +queue/GZMDSR +queuer/M +queues/C +queuing/C +Quezon/M +quibble/GZRSD +quibbler/M +quiche/SM +quicken/RDG +quickie/MS +quicklime/SM +quickness/MS +quick/RNYTXPS +quicksand/MS +quicksilver/GDMS +quickstep/SM +quid/SM +quiesce/D +quiescence/MS +quiescent/YP +quieted/E +quieten/SGD +quieter/E +quieter's +quieting/E +quietly/E +quietness/MS +quiets/E +quietude/IEMS +quietus/MS +quiet/UTGPSDRY +Quillan/M +quill/GSDM +Quill/M +quilter/M +quilting/M +quilt/SZJGRDM +quincentenary/M +quince/SM +Quincey/M +quincy/M +Quincy/M +quinine/MS +Quinlan/M +Quinn/M +quinquennial/Y +quinsy/SM +Quinta/M +Quintana/M +quintessence/SM +quintessential/Y +quintet/SM +quintic +quintile/SM +Quintilian/M +Quintilla/M +quintillion/MH +quintillionth/M +Quintina/M +Quintin/M +Quint/M +quint/MS +Quinton/M +quintuple/SDG +quintuplet/MS +Quintus/M +quip/MS +quipped +quipper +quipping +quipster/SM +quired/AI +quire/MDSG +quires/AI +Quirinal/M +quiring/IA +quirkiness/SM +quirk/SGMD +quirky/PTR +quirt/SDMG +Quisling/M +quisling/SM +quitclaim/GDMS +quit/DGS +quite/SADG +Quito/M +quittance/SM +quitter/SM +quitting +quiver/GDS +quivering/Y +quivery +Quixote/M +quixotic +quixotically +Quixotism/M +quiz/M +quizzed +quizzer/SM +quizzes +quizzical/Y +quizzing +quo/H +quoin/SGMD +quoit/GSDM +quondam +quonset +Quonset +quorate/I +quorum/MS +quotability/S +quota/MS +quotation/SM +quoter/M +quote/UGSD +quot/GDRB +quotidian/S +quotient/SM +qwerty +qwertys +Rabat/M +rabbet/GSMD +Rabbi/M +rabbi/MS +rabbinate/MS +rabbinic +rabbinical/Y +rabbiter/M +rabbit/MRDSG +rabble/GMRSD +rabbler/M +Rabelaisian +Rabelais/M +rabidness/SM +rabid/YP +rabies +Rabi/M +Rabin/M +rabis +Rab/M +raccoon/SM +racecourse/MS +racegoers +racehorse/SM +raceme/MS +race/MZGDRSJ +racer/M +racetrack/SMR +raceway/SM +Rachael/M +Rachele/M +Rachelle/M +Rachel/M +Rachmaninoff/M +racialism/MS +racialist/MS +racial/Y +racily +Racine/M +raciness/MS +racism/S +racist/MS +racketeer/MDSJG +racket/SMDG +rackety +rack/GDRMS +raconteur/SM +racoon's +racquetball/S +racquet's +racy/RTP +radarscope/MS +radar/SM +Radcliffe/M +radded +radder +raddest +Raddie/M +radding +Raddy/M +radial/SY +radiance/SM +radian/SM +radiant/YS +radiate/XSDYVNG +radiation/M +radiative/Y +radiator/MS +radicalism/MS +radicalization/S +radicalize/GSD +radicalness/M +radical/SPY +radices's +radii/M +radioactive/Y +radioactivity/MS +radioastronomical +radioastronomy +radiocarbon/MS +radiochemical/Y +radiochemistry/M +radiogalaxy/S +radiogram/SM +radiographer/MS +radiographic +radiography/MS +radioisotope/SM +radiologic +radiological/Y +radiologist/MS +radiology/MS +radioman/M +radiomen +radiometer/SM +radiometric +radiometry/MS +radionics +radionuclide/M +radiopasteurization +radiophone/MS +radiophysics +radioscopy/SM +radio/SMDG +radiosonde/SM +radiosterilization +radiosterilized +radiotelegraph +radiotelegraphs +radiotelegraphy/MS +radiotelephone/SM +radiotherapist/SM +radiotherapy/SM +radish/MS +radium/MS +radius/M +radix/SM +Rad/M +radon/SM +rad/S +Raeann/M +Rae/M +RAF +Rafaela/M +Rafaelia/M +Rafaelita/M +Rafaellle/M +Rafaello/M +Rafael/M +Rafa/M +Rafe/M +Raffaello/M +Raffarty/M +Rafferty/M +raffia/SM +raffishness/SM +raffish/PY +raffle/MSDG +Raff/M +Rafi/M +Raf/M +rafter/DM +raft/GZSMDR +raga/MS +ragamuffin/MS +ragbag/SM +rage/MS +raggedness/SM +ragged/PRYT +raggedy/TR +ragging +rag/GSMD +raging/Y +raglan/MS +Ragnar/M +Ragnark +ragout/SMDG +ragtag/MS +ragtime/MS +ragweed/MS +ragwort/M +Rahal/M +rah/DG +Rahel/M +rahs +raider/M +raid/MDRSGZ +railbird/S +rail/CDGS +railer/SM +railhead/SM +railing/MS +raillery/MS +railroader/M +railroading/M +railroad/SZRDMGJ +rail's +railwaymen +railway/MS +raiment/SM +Raimondo/M +Raimund/M +Raimundo/M +Raina/M +rainbow/MS +raincloud/S +raincoat/SM +raindrop/SM +Raine/MR +Rainer/M +rainfall/SM +rainforest's +rain/GSDM +Rainier/M +rainless +rainmaker/SM +rainmaking/MS +rainproof/GSD +rainstorm/SM +rainwater/MS +rainy/RT +raise/DSRGZ +raiser/M +raising/M +raisin/MS +rajah/M +rajahs +Rajive/M +raj/M +Rakel/M +rake/MGDRS +raker/M +rakishness/MS +rakish/PY +Raleigh/M +Ralf/M +Ralina/M +rally/GSD +Ralph/M +Ralston/M +Ra/M +Ramada/M +Ramadan/SM +Ramakrishna/M +Rama/M +Raman/M +Ramayana/M +ramble/JRSDGZ +rambler/M +rambling/Y +Rambo/M +rambunctiousness/S +rambunctious/PY +ramekin/SM +ramie/MS +ramification/M +ramify/XNGSD +Ramirez/M +Ramiro/M +ramjet/SM +Ram/M +rammed +ramming +Ramo/MS +Ramona/M +Ramonda/M +Ramon/M +rampage/SDG +rampancy/S +rampant/Y +rampart/SGMD +ramp/GMDS +ramrodded +ramrodding +ramrod/MS +RAM/S +Ramsay/M +Ramses/M +Ramsey/M +ramshackle +ram/SM +rams/S +ran/A +Rana/M +Rancell/M +Rance/M +rancher/M +rancho/SM +ranch/ZRSDMJG +rancidity/MS +rancidness/SM +rancid/P +rancorous/Y +rancor/SM +Randall/M +Randal/M +Randa/M +Randee/M +Randell/M +Randene/M +Randie/M +Randi/M +randiness/S +Rand/M +rand/MDGS +Randolf/M +Randolph/M +randomization/SM +randomize/SRDG +randomness/SM +random/PYS +Randy/M +randy/PRST +Ranee/M +ranee/SM +ranged/C +rangeland/S +ranger/M +ranges/C +range/SM +rang/GZDR +ranginess/S +ranging/C +Rangoon/M +rangy/RPT +Rania/M +Ranice/M +Ranier/M +Rani/MR +Ranique/M +rani's +ranked/U +ranker/M +rank/GZTYDRMPJS +Rankine/M +ranking/M +Rankin/M +rankle/SDG +rankness/MS +Ranna/M +ransacker/M +ransack/GRDS +Ransell/M +ransomer/M +Ransom/M +ransom/ZGMRDS +ranter/M +rant/GZDRJS +ranting/Y +Raoul/M +rapaciousness/MS +rapacious/YP +rapacity/MS +rapeseed/M +rape/SM +Raphaela/M +Raphael/M +rapidity/MS +rapidness/S +rapid/YRPST +rapier/SM +rapine/SM +rapist/MS +rap/MDRSZG +rapped +rappelled +rappelling +rappel/S +rapper/SM +rapping/M +rapporteur/SM +rapport/SM +rapprochement/SM +rapscallion/MS +raptness/S +rapture/MGSD +rapturousness/M +rapturous/YP +rapt/YP +Rapunzel/M +Raquela/M +Raquel/M +rarebit/MS +rarefaction/MS +rarefy/GSD +rareness/MS +rare/YTPGDRS +rarity/SM +Rasalgethi/M +Rasalhague/M +rascal/SMY +rasher/M +rashness/S +rash/PZTYSR +Rasia/M +Rasla/M +Rasmussen/M +raspberry/SM +rasper/M +rasping/Y +rasp/SGJMDR +Rasputin/M +raspy/RT +Rastaban/M +Rastafarian/M +raster/MS +Rastus/M +ratchet/MDSG +rateable +rated/U +rate/KNGSD +ratepayer/SM +rater/M +rate's +Ratfor/M +rather +Rather/M +rathskeller/SM +ratifier/M +ratify/ZSRDGXN +rating/M +ratiocinate/VNGSDX +ratiocination/M +ratio/MS +rationale/SM +rationalism/SM +rationalistic +rationalist/S +rationality/MS +rationalization/SM +rationalizer/M +rationalize/ZGSRD +rationalness/M +rational/YPS +ration/DSMG +Ratliff/M +ratlike +ratline/SM +rat/MDRSJZGB +rattail +rattan/MS +ratted +ratter/MS +ratting +rattlebrain/DMS +rattle/RSDJGZ +rattlesnake/MS +rattletrap/MS +rattling/Y +rattly/TR +rattrap/SM +ratty/RT +raucousness/SM +raucous/YP +Raul/M +raunchily +raunchiness/S +raunchy/RTP +ravage/GZRSD +ravager/M +raveling/S +Ravel/M +ravel/UGDS +raven/JGMRDS +Raven/M +ravenous/YP +raver/M +rave/ZGDRSJ +Ravid/M +Ravi/M +ravine/SDGM +ravioli/SM +ravisher/M +ravishing/Y +ravish/LSRDZG +ravishment/SM +Raviv/M +Rawalpindi/M +rawboned +rawhide/SDMG +Rawley/M +Rawlings/M +Rawlins/M +Rawlinson/M +rawness/SM +raw/PSRYT +Rawson/M +Rayburn/M +Raychel/M +Raye/M +ray/GSMD +Rayleigh/M +Ray/M +Raymond/M +Raymondville/M +Raymund/M +Raymundo/M +Rayna/M +Raynard/M +Raynell/M +Rayner/M +Raynor/M +rayon/SM +Rayshell/M +Raytheon/M +raze/DRSG +razer/M +razorback/SM +razorblades +razor/MDGS +razz/GDS +razzmatazz/S +Rb +RBI/S +RC +RCA +rcpt +RCS +rd +RD +RDA +Rd/M +reabbreviate +reachability +reachable/U +reachably +reached/U +reacher/M +reach/GRB +reacquisition +reactant/SM +reacted/U +reaction +reactionary/SM +reactivity +readability/MS +readable/P +readably +readdress/G +Reade/M +reader/M +readership/MS +Read/GM +readied +readies +readily +readinesses +readiness/UM +reading/M +Reading/M +read/JGZBR +readopt/G +readout/MS +reads/A +readying +ready/TUPR +Reagan/M +Reagen/M +realisms +realism's +realism/U +realistically/U +realistic/U +realist/SM +reality/USM +realizability/MS +realizableness/M +realizable/SMP +realizably/S +realization/MS +realized/U +realize/JRSDBZG +realizer/M +realizes/U +realizing/MY +realm/M +realness/S +realpolitik/SM +real/RSTP +realtor's +Realtor/S +realty/SM +Rea/M +reamer/M +ream/MDRGZ +Reamonn/M +reanimate +reaper/M +reappraise/G +reap/SGZ +rear/DRMSG +rearguard/MS +rearmost +rearrange/L +rearward/S +reasonableness/SMU +reasonable/UP +reasonably/U +Reasoner/M +reasoner/SM +reasoning/MS +reasonless +reasons +reason/UBDMG +reassess/GL +reassuringly/U +reattach/GSL +reawakening/M +Reba/M +rebate/M +Rebbecca/M +Rebeca/M +Rebecca's +Rebecka/M +Rebekah/M +Rebeka/M +Rebekkah/M +rebeller +rebellion/SM +rebelliousness/MS +rebellious/YP +rebel/MS +Rebe/M +rebid +rebidding +rebind/G +rebirth +reboil/G +rebook +reboot/ZR +rebound/G +rebroadcast/MG +rebuke/RSDG +rebuking/Y +rebus +rebuttal/SM +rebutting +rec +recalcitrance/SM +recalcitrant/S +recalibrate/N +recantation/S +recant/G +recap +recappable +recapping +recast/G +recd +rec'd +recede +receipt/SGDM +receivable/S +received/U +receiver/M +receivership/SM +receive/ZGRSDB +recency/M +recension/M +recentness/SM +recent/YPT +receptacle/SM +receptionist/MS +reception/MS +receptiveness/S +receptive/YP +receptivity/S +receptor/MS +recessional/S +recessionary +recessiveness/M +recessive/YPS +recess/SDMVG +rechargeable +recheck/G +recherch +recherches +recidivism/MS +recidivist/MS +Recife/M +recipe/MS +recipiency +recipient/MS +reciprocal/SY +reciprocate/NGXVDS +reciprocation/M +reciprocity/MS +recitalist/S +recital/MS +recitative/MS +reciter/M +recite/ZR +recked +recking +recklessness/S +reckless/PY +reckoner/M +reckoning/M +reckon/SGRDJ +reclaim/B +reclamation/SM +recliner/M +recline/RSDZG +recluse/MVNS +reclusion/M +recode/G +recognizability +recognizable/U +recognizably +recognize/BZGSRD +recognizedly/S +recognized/U +recognizer/M +recognizingly/S +recognizing/UY +recoilless +recoinage +recolor/GD +recombinant +recombine +recommended/U +recompense/GDS +recompute/B +reconciled/U +reconciler/M +reconcile/SRDGB +reconditeness/M +recondite/YP +reconfigurability +reconfigure/R +reconnaissance/MS +reconnect/R +reconnoiter/GSD +reconquer/G +reconsecrate +reconstitute +reconstructed/U +Reconstruction/M +reconsult/G +recontact/G +recontaminate/N +recontribute +recook/G +recopy/G +recorded/AU +records/A +record/ZGJ +recourse +recoverability +recoverable/U +recover/B +recovery/MS +recreant/S +recreational +recriminate/GNVXDS +recrimination/M +recriminatory +recross/G +recrudesce/GDS +recrudescence/MS +recrudescent +recruiter/M +recruitment/MS +recruit/ZSGDRML +recrystallize +rectal/Y +rectangle/SM +rectangular/Y +recta's +rectifiable +rectification/M +rectifier/M +rectify/DRSGXZN +rectilinear/Y +rectitude/MS +recto/MS +rector/SM +rectory/MS +rectum/SM +recumbent/Y +recuperate/VGNSDX +recuperation/M +recur +recurrence/MS +recurrent +recurse/NX +recursion/M +recusant/M +recuse +recyclable/S +recycle/BZ +redact/DGS +redaction/SM +redactor/MS +redbird/SM +redbreast/SM +redbrick/M +redbud/M +redcap/MS +redcoat/SM +redcurrant/M +redden/DGS +redder +reddest +redding +reddish/P +Redd/M +redeclaration +redecorate +redeemable/U +redeem/BRZ +redeemed/U +redeemer/M +Redeemer/M +redemptioner/M +redemption/RMS +redemptive +redeposit/M +redetermination +Redford/M +Redgrave/M +redhead/DRMS +Redhook/M +redial/G +redirect/G +redirection +redlining/S +Redmond/M +redneck/SMD +redness/MS +redo/G +redolence/MS +redolent +Redondo/M +redouble/S +redoubtably +redound/GDS +red/PYS +redshift/S +redskin/SM +Redstone/M +reduced/U +reducer/M +reduce/RSDGZ +reducibility/M +reducible +reducibly +reductionism/M +reductionist/S +reduction/SM +reduct/V +redundancy/SM +redundant/Y +redwood/SM +redye +redyeing +Reeba/M +Reebok/M +Reece/M +reecho/G +reed/GMDR +reediness/SM +reeding/M +Reed/M +Reedville/M +reedy/PTR +reefer/M +reef/GZSDRM +reeker/M +reek/GSR +reeler/M +reel's +reel/USDG +Ree/MDS +Reena/M +reenforcement +reentrant +Reese/M +reestimate/M +Reeta/M +Reeva/M +reeve/G +Reeves +reexamine +refection/SM +refectory/SM +refer/B +refereed/U +refereeing +referee/MSD +reference/CGSRD +referenced/U +reference's +referencing/U +referendum/MS +referentiality +referential/YM +referent/SM +referral/SM +referred +referrer/S +referring +reffed +reffing +refile +refinance +refined/U +refine/LZ +refinement/MS +refinish/G +refit +reflectance/M +reflected/U +reflectional +reflection/SM +reflectiveness/M +reflective/YP +reflectivity/M +reflector/MS +reflect/SDGV +reflexion/MS +reflexiveness/M +reflexive/PSY +reflexivity/M +reflex/YV +reflooring +refluent +reflux/G +refocus/G +refold/G +reforestation +reforge/G +reformatory/SM +reform/B +reformed/U +reformer/M +reformism/M +reformist/S +refract/DGVS +refractiveness/M +refractive/PY +refractometer/MS +refractoriness/M +refractory/PS +refrain/DGS +refreshed/U +refreshing/Y +refresh/LB +refreshment/MS +refrigerant/MS +refrigerated/U +refrigerate/XDSGN +refrigeration/M +refrigerator/MS +refrozen +refry/GS +refugee/MS +refuge/SDGM +Refugio/M +refulgence/SM +refulgent +refund/B +refunder/M +refurbish/L +refurbishment/S +refusal/SM +refuse/R +refuser/M +refutation/MS +refute/GZRSDB +refuter/M +ref/ZS +reg +regale/L +regalement/S +regal/GYRD +regalia/M +Regan/M +regard/EGDS +regardless/PY +regather/G +regatta/MS +regency/MS +regeneracy/MS +regenerately +regenerateness/M +regenerate/U +Regen/M +reggae/SM +Reggie/M +Reggi/MS +Reggy/M +regicide/SM +regime/MS +regimen/MS +regimental/S +regimentation/MS +regiment/SDMG +Reginae +Reginald/M +Regina/M +Reginauld/M +Regine/M +regionalism/MS +regional/SY +region/SM +Regis/M +register's +register/UDSG +registrable +registrant/SM +registrar/SM +registration/AM +registrations +registry/MS +Reg/MN +regnant +Regor/M +regress/DSGV +regression/MS +regressiveness/M +regressive/PY +regressors +regretfulness/M +regretful/PY +regret/S +regrettable +regrettably +regretted +regretting +reground +regroup/G +regrow/G +regularity/MS +regularization/MS +regularize/SDG +regular/YS +regulate/CSDXNG +regulated/U +regulation/M +regulative +regulator/SM +regulatory +Regulus/M +regurgitate/XGNSD +regurgitation/M +rehabbed +rehabbing +rehabilitate/SDXVGN +rehabilitation/M +rehab/S +rehang/G +rehear/GJ +rehearsal/SM +rehearse +rehearsed/U +rehearser/M +rehears/R +reheat/G +reheating/M +Rehnquist +rehydrate +Reichenberg/M +Reich/M +Reichstags +Reichstag's +Reidar/M +Reider/M +Reid/MR +reign/MDSG +Reiko/M +Reilly/M +reimburse/GSDBL +reimbursement/MS +Reinald/M +Reinaldo/MS +Reina/M +reindeer/M +Reine/M +reinforced/U +reinforce/GSRDL +reinforcement/MS +reinforcer/M +rein/GDM +Reinhard/M +Reinhardt/M +Reinhold/M +Reinold/M +reinstate/L +reinstatement/MS +reinsurance +Reinwald/M +reissue +REIT +reiterative/SP +rejecter/M +rejecting/Y +rejection/SM +rejector/MS +reject/RDVGS +rejigger +rejoice/RSDJG +rejoicing/Y +rejoinder/SM +rejuvenate/NGSDX +rejuvenatory +relapse +relatedly +relatedness/MS +related/U +relater/M +relate/XVNGSZ +relational/Y +relation/M +relationship/MS +relativeness/M +relative/SPY +relativism/M +relativistic +relativistically +relativist/MS +relativity/MS +relator's +relaxant/SM +relaxation/MS +relaxedness/M +relaxed/YP +relax/GZD +relaxing/Y +relay/GDM +relearn/G +releasable/U +release/B +released/U +relenting/U +relentlessness/SM +relentless/PY +relent/SDG +relevance/SM +relevancy/MS +relevant/Y +reliability/UMS +reliables +reliable/U +reliably/U +reliance/MS +reliant/Y +relicense/R +relic/MS +relict/C +relict's +relief/M +relievedly +relieved/U +reliever/M +relieve/RSDZG +religionists +religion/SM +religiosity/M +religiousness/MS +religious/PY +relink/G +relinquish/GSDL +relinquishment/SM +reliquary/MS +relish/GSD +relive/GB +reload/GR +relocate/B +reluctance/MS +reluctant/Y +rel/V +rely/DG +rem +Re/M +remade/S +remainder/SGMD +remain/GD +remake/M +remand/DGS +remap +remapping +remarkableness/S +remarkable/U +remarkably +remark/BG +remarked/U +Remarque/M +rematch/G +Rembrandt/M +remeasure/D +remediableness/M +remediable/P +remedy/SDMG +remembered/U +rememberer/M +remember/GR +remembrance/MRS +remembrancer/M +Remington/M +reminisce/GSD +reminiscence/SM +reminiscent/Y +remissness/MS +remiss/YP +remit/S +remittance/MS +remitted +remitting/U +Rem/M +remnant/MS +remodel/G +remolding +remonstrant/MS +remonstrate/SDXVNG +remonstration/M +remonstrative/Y +remorsefulness/M +remorseful/PY +remorselessness/MS +remorseless/YP +remorse/SM +remoteness/MS +remote/RPTY +remoulds +removal/MS +REM/S +remunerated/U +remunerate/VNGXSD +remuneration/M +remunerativeness/M +remunerative/YP +Remus/M +Remy/M +Renado/M +Renae/M +renaissance/S +Renaissance/SM +renal +Renaldo/M +Rena/M +Renard/M +Renascence/SM +Renata/M +Renate/M +Renato/M +renaturation +Renaud/M +Renault/MS +rend +renderer/M +render/GJRD +rendering/M +rendezvous/DSMG +rendition/GSDM +rend/RGZS +Renee/M +renegade/SDMG +renege/GZRSD +reneger/M +Renelle/M +Renell/M +Rene/M +renewal/MS +renew/BG +renewer/M +Renie/M +rennet/MS +Rennie/M +rennin/SM +Renoir/M +Reno/M +renounce/LGRSD +renouncement/MS +renouncer/M +renovate/NGXSD +renovation/M +renovator/SM +renown/SGDM +Rensselaer/M +rentaller +rental/SM +renter/M +rent/GZMDRS +renumber/G +renumeration +renunciate/VNX +renunciation/M +Renville/M +reoccupy/G +reopen/G +reorganized/U +repack/G +repairable/U +repair/BZGR +repairer/M +repairman/M +repairmen +repairs/E +repaper +reparable +reparation/SM +reparteeing +repartee/MDS +repartition/Z +repast/G +repatriate/SDXNG +repave +repealer/M +repeal/GR +repeatability/M +repeatable/U +repeatably +repeated/Y +repeater/M +repeat/RDJBZG +repelled +repellent/SY +repelling/Y +repel/S +repentance/SM +repentant/SY +repent/RDG +repertoire/SM +repertory/SM +repetition +repetitiousness/S +repetitious/YP +repetitiveness/MS +repetitive/PY +repine/R +repiner/M +replace/RL +replay/GM +replenish/LRSDG +replenishment/S +repleteness/MS +replete/SDPXGN +repletion/M +replica/SM +replicate/SDVG +replicator/S +replug +reply/X +Rep/M +repopulate +reported/Y +reportorial/Y +reposeful +repose/M +repository/MS +reprehend/GDS +reprehensibility/MS +reprehensibleness/M +reprehensible/P +reprehensibly +reprehension/MS +representable/U +representational/Y +representativeness/M +Representative/S +representative/SYMP +representativity +represented/U +represent/GB +repression/SM +repressiveness/M +repressive/YP +repress/V +reprieve/GDS +reprimand/SGMD +reprint/M +reprisal/MS +reproacher/M +reproachfulness/M +reproachful/YP +reproach/GRSDB +reproaching/Y +reprobate/N +reprocess/G +reproducibility/MS +reproducible/S +reproducibly +reproductive/S +reproof/G +reprove/R +reproving/Y +rep/S +reptile/SM +reptilian/S +Republicanism/S +republicanism/SM +Republican/S +republic/M +republish/G +repudiate/XGNSD +repudiation/M +repudiator/S +repugnance/MS +repugnant/Y +repulse/VNX +repulsion/M +repulsiveness/MS +repulsive/PY +reputability/SM +reputably/E +reputation/SM +reputed/Y +repute/ESB +reputing +requested/U +request/G +Requiem/MS +requiem/SM +require/LR +requirement/MS +requisiteness/M +requisite/PNXS +requisitioner/M +requisition/GDRM +requital/MS +requited/U +requiter/M +requite/RZ +reread/G +rerecord/G +rerouteing +rerunning +res/C +rescale +rescind/SDRG +rescission/SM +rescue/GZRSD +reseal/BG +research/MB +reselect/G +resemblant +resemble/DSG +resend/G +resent/DSLG +resentfulness/SM +resentful/PY +resentment/MS +reserpine/MS +reservation/MS +reservednesses +reservedness/UM +reserved/UYP +reservist/SM +reservoir/MS +reset/RDG +resettle/L +reshipping +reshow/G +reshuffle/M +reside/G +residence/MS +residency/SM +residential/Y +resident/SM +resider/M +residua +residual/YS +residuary +residue/SM +residuum/M +resignation/MS +resigned/YP +resilience/MS +resiliency/S +resilient/Y +resin/D +resinlike +resinous +resiny +resistance/SM +Resistance/SM +resistantly +resistants +resistant/U +resisted/U +resistible +resistibly +resisting/U +resistiveness/M +resistive/PY +resistivity/M +resistless +resistor/MS +resist/RDZVGS +resize/G +resold +resole/G +resoluble +resoluteness/MS +resolute/PYTRV +resolvability/M +resolvable/U +resolved/U +resolvent +resonance/SM +resonant/YS +resonate/DSG +resonator/MS +resorption/MS +resort/R +resound/G +resourcefulness/SM +resourceful/PY +resp +respectability/SM +respectable/SP +respectably +respect/BSDRMZGV +respected/E +respectful/EY +respectfulness/SM +respecting/E +respectiveness/M +respective/PY +respect's/E +respects/E +respell/G +respiration/MS +respirator/SM +respiratory/M +resplendence/MS +resplendent/Y +respondent/MS +respond/SDRZG +responser/M +response/RSXMV +responsibility/MS +responsibleness/M +responsible/P +responsibly +responsiveness/MSU +responsive/YPU +respray/G +restart/B +restate/L +restaurant/SM +restaurateur/SM +rest/DRSGVM +rested/U +rester/M +restfuller +restfullest +restfulness/MS +restful/YP +restitution/SM +restiveness/SM +restive/PY +restlessness/MS +restless/YP +restorability +Restoration/M +restoration/MS +restorative/PYS +restorer/M +restore/Z +restrained/UY +restraint/MS +restrict/DVGS +restricted/YU +restriction/SM +restrictively +restrictiveness/MS +restrictives +restrictive/U +restroom/SM +restructurability +restructure +rest's/U +rests/U +restudy/M +restyle +resubstitute +resultant/YS +result/SGMD +resume/SDBG +resumption/MS +resurface +resurgence/MS +resurgent +resurrect/GSD +resurrection/SM +resurvey/G +resuscitate/XSDVNG +resuscitation/M +resuscitator/MS +retail/Z +retainer/M +retain/LZGSRD +retake +retaliate/VNGXSD +retaliation/M +retaliatory +Reta/M +retardant/SM +retardation/SM +retarder/M +retard/ZGRDS +retch/SDG +retention/SM +retentiveness/S +retentive/YP +retentivity/M +retest/G +Retha/M +rethought +reticence/S +reticent/Y +reticle/SM +reticular +reticulate/GNYXSD +reticulation/M +reticule/MS +reticulum/M +retinal/S +retina/SM +retinue/MS +retiredness/M +retiree/MS +retire/L +retirement/SM +retiring/YP +retort/GD +retract/DG +retractile +retrench/L +retrenchment/MS +retributed +retribution/MS +retributive +retrieval/SM +retriever/M +retrieve/ZGDRSB +retroactive/Y +retrofire/GMSD +retrofit/S +retrofitted +retrofitting +retroflection +retroflex/D +retroflexion/M +retrogradations +retrograde/GYDS +retrogression/MS +retrogressive/Y +retrogress/SDVG +retrorocket/MS +retro/SM +retrospection/MS +retrospective/SY +retrospect/SVGMD +retrovirus/S +retrovision +retry/G +retsina/SM +returnable/S +returned/U +returnee/SM +retype +Reube/M +Reuben/M +Reub/NM +Reunion/M +reuse/B +Reuters +Reuther/M +reutilization +Reuven/M +Reva/M +revanchist +revealed/U +revealingly +revealing/U +reveal/JBG +reveille/MS +revelation/MS +Revelation/MS +revelatory +revelry/MS +revel/SJRDGZ +revenge/MGSRD +revenger/M +revenuer/M +revenue/ZR +reverberant +reverberate/XVNGSD +reverberation/M +revere/GSD +Revere/M +reverencer/M +reverence/SRDGM +Reverend +reverend/SM +reverential/Y +reverent/Y +reverie/SM +reversal/MS +reverser/M +reverse/Y +reversibility/M +reversible/S +reversibly +reversioner/M +reversion/R +revers/M +reverter/M +revertible +revert/RDVGS +revet/L +revetment/SM +review/G +revile/GZSDL +revilement/MS +reviler/M +revise/BRZ +revised/U +revisionary +revisionism/SM +revisionist/SM +revitalize/ZR +revivalism/MS +revivalist/MS +revival/SM +reviver/M +revive/RSDG +revivification/M +revivify/X +Revkah/M +Revlon/M +Rev/M +revocable +revoke/GZRSD +revolter/M +revolt/GRD +revolting/Y +revolutionariness/M +revolutionary/MSP +revolutionist/MS +revolutionize/GDSRZ +revolutionizer/M +revolution/SM +revolve/BSRDZJG +revolver/M +revue/MS +revulsion/MS +revved +revving +rev/ZM +rewarded/U +rewarding/Y +rewarm/G +reweave +rewedding +reweigh/G +rewind/BGR +rewire/G +rework/G +rexes +Rex/M +Reyes +Reykjavik/M +re/YM +Rey/M +Reynaldo/M +Reyna/M +Reynard/M +Reynold/SM +rezone +Rf +RF +RFC +RFD +R/G +rhapsodic +rhapsodical +rhapsodize/GSD +rhapsody/SM +Rhea/M +rhea/SM +Rheba/M +Rhee/M +Rheims/M +Rheinholdt/M +Rhenish +rhenium/MS +rheology/M +rheostat/MS +rhesus/S +Rheta/M +rhetorical/YP +rhetorician/MS +rhetoric/MS +Rhetta/M +Rhett/M +rheumatically +rheumatic/S +rheumatics/M +rheumatism/SM +rheumatoid +rheum/MS +rheumy/RT +Rhiamon/M +Rhianna/M +Rhiannon/M +Rhianon/M +Rhinelander/M +Rhineland/RM +Rhine/M +rhinestone/SM +rhinitides +rhinitis/M +rhinoceros/MS +rhino/MS +rhinotracheitis +rhizome/MS +Rh/M +Rhoda/M +Rhodes +Rhodesia/M +Rhodesian/S +Rhodia/M +Rhodie/M +rhodium/MS +rhododendron/SM +rhodolite/M +rhodonite/M +Rhody/M +rhombic +rhomboidal +rhomboid/SM +rhombus/SM +rho/MS +Rhona/M +Rhonda/M +Rhone +rhubarb/MS +rhyme/DSRGZM +rhymester/MS +Rhys/M +rhythmical/Y +rhythmic/S +rhythmics/M +rhythm/MS +RI +rial/MS +Riane/M +Riannon/M +Rianon/M +ribaldry/MS +ribald/S +ribbed +Ribbentrop/M +ribber/S +ribbing/M +ribbon/DMSG +ribcage +rib/MS +riboflavin/MS +ribonucleic +ribosomal +ribosome/MS +Rica/M +Rican/SM +Ricard/M +Ricardo/M +Ricca/M +Riccardo/M +rice/DRSMZG +Rice/M +ricer/M +Richard/MS +Richardo/M +Richardson/M +Richart/M +Richelieu/M +richen/DG +Richey/M +Richfield/M +Richie/M +Richland/M +Rich/M +Richmond/M +Richmound/M +richness/MS +Richter/M +Richthofen/M +Richy/M +rich/YNSRPT +Rici/M +Rickard/M +Rickenbacker/M +Rickenbaugh/M +Rickert/M +rickets/M +rickety/RT +Rickey/M +rick/GSDM +Rickie/M +Ricki/M +Rick/M +Rickover/M +rickrack/MS +rickshaw/SM +Ricky/M +Ric/M +ricochet/GSD +Rico/M +Ricoriki/M +ricotta/MS +riddance/SM +ridden +ridding +riddle/GMRSD +Riddle/M +ride/CZSGR +Ride/M +rider/CM +riderless +ridership/S +ridge/DSGM +Ridgefield/M +ridgepole/SM +Ridgway/M +ridgy/RT +ridicule/MGDRS +ridiculer/M +ridiculousness/MS +ridiculous/PY +riding/M +rid/ZGRJSB +Riemann/M +Riesling/SM +rife/RT +riff/GSDM +riffle/SDG +riffraff/SM +rifled/U +rifle/GZMDSR +rifleman/M +riflemen +rifler/M +rifling/M +rift/GSMD +Riga/M +rigamarole's +rigatoni/M +Rigel/M +rigged +rigger/SM +rigging/MS +Riggs/M +righteousnesses/U +righteousness/MS +righteous/PYU +rightfulness/MS +rightful/PY +rightism/SM +rightist/S +rightmost +rightness/MS +Right/S +right/SGTPYRDN +rightsize/SDG +rights/M +rightward/S +rigidify/S +rigidity/S +rigidness/S +rigid/YP +rigmarole/MS +rig/MS +Rigoberto/M +Rigoletto/M +rigor/MS +rigorousness/S +rigorous/YP +Riki/M +Rikki/M +Rik/M +rile/DSG +Riley/M +Rilke/M +rill/GSMD +Rimbaud/M +rime/MS +rimer/M +rim/GSMDR +rimless +rimmed +rimming +Rinaldo/M +Rina/M +rind/MDGS +Rinehart/M +ringer/M +ring/GZJDRM +ringing/Y +ringleader/MS +ringlet/SM +ringlike +Ringling/M +Ring/M +ringmaster/MS +Ringo/M +ringside/ZMRS +ringworm/SM +rink/GDRMS +rinse/DSRG +Riobard/M +Rio/MS +Riordan/M +rioter/M +riotousness/M +riotous/PY +riot/SMDRGZJ +RIP +riparian/S +ripcord/SM +ripened/U +ripenesses +ripeness/UM +ripen/RDG +ripe/PSY +riper/U +ripest/U +Ripley/M +Rip/M +rip/NDRSXTG +ripoff/S +riposte/SDMG +ripped +ripper/SM +ripping +rippler/M +ripple/RSDGM +ripply/TR +ripsaw/GDMS +riptide/SM +Risa/M +RISC +risen +riser/M +rise/RSJZG +risibility/SM +risible/S +rising/M +risker/M +risk/GSDRM +riskily +riskiness/MS +risky/RTP +risotto/SM +risqu +rissole/M +Ritalin +Rita/M +Ritchie/M +rite/DSM +Ritter/M +ritualism/SM +ritualistic +ritualistically +ritualized +ritual/MSY +Ritz/M +ritzy/TR +rivaled/U +Rivalee/M +rivalry/MS +rival/SGDM +Riva/MS +rive/CSGRD +Rivera/M +riverbank/SM +riverbed/S +riverboat/S +river/CM +riverfront +riverine +Rivers +Riverside/M +riverside/S +Riverview/M +riveter/M +rivet/GZSRDM +riveting/Y +Riviera/MS +Rivi/M +Rivkah/M +rivulet/SM +Rivy/M +riv/ZGNDR +Riyadh/M +riyal/SM +rm +RMS +RN +RNA +Rn/M +roach/GSDM +Roach/M +roadbed/MS +roadblock/SMDG +roadhouse/SM +roadie/S +roadkill/S +road/MIS +roadrunner/MS +roadshow/S +roadside/S +roadsigns +roadster/SM +roadsweepers +roadway/SM +roadwork/SM +roadworthy +roam/DRGZS +Roana/M +Roanna/M +Roanne/M +Roanoke/M +roan/S +roar/DRSJGZ +roarer/M +roaring/T +Roarke/M +roaster/M +roast/SGJZRD +robbed +robber/SM +Robbert/M +robbery/SM +Robbie/M +Robbi/M +robbing +Robbin/MS +Robb/M +Robby/M +Robbyn/M +robe/ESDG +Robena/M +Robenia/M +Robers/M +Roberson/M +Roberta/M +Robert/MS +Roberto/M +Robertson/SM +robe's +Robeson/M +Robespierre/M +Robina/M +Robinet/M +Robinetta/M +Robinette/M +Robinett/M +Robinia/M +Robin/M +robin/MS +Robinson/M +Robinsonville/M +Robles/M +Rob/MZ +robotic/S +robotism +robotize/GDS +robot/MS +rob/SDG +Robson/M +Robt/M +robustness/SM +robust/RYPT +Roby/M +Robyn/M +Rocco/M +Rocha/M +Rochambeau/M +Rochella/M +Rochelle/M +Rochell/M +Roche/M +Rochester/M +Rochette/M +Roch/M +rockabilly/MS +rockabye +Rockaway/MS +rockbound +Rockefeller/M +rocker/M +rocketry/MS +rocket/SMDG +Rockey/M +rockfall/S +Rockford/M +rock/GZDRMS +Rockie/M +rockiness/MS +Rockland/M +Rock/M +Rockne/M +Rockville/M +Rockwell/M +Rocky/SM +rocky/SRTP +rococo/MS +Roda/M +rodded +Roddenberry/M +rodder +Roddie/M +rodding +Rodd/M +Roddy/M +rodent/MS +rodeo/SMDG +Roderich/M +Roderick/M +Roderic/M +Roderigo/M +rode/S +Rodger/M +Rodge/ZMR +Rodie/M +Rodi/M +Rodina/M +Rodin/M +Rod/M +Rodney/M +Rodolfo/M +Rodolphe/M +Rodolph/M +Rodrick/M +Rodrigo/M +Rodriguez/M +Rodrique/M +Rodriquez/M +rod/SGMD +roebuck/SM +Roentgen's +roentgen/SM +roe/SM +ROFL +Rogelio/M +roger/GSD +Rogerio/M +Roger/M +Roget/M +Rog/MRZ +rogued/K +rogue/GMDS +roguery/MS +rogues/K +roguing/K +roguishness/SM +roguish/PY +roil/SGD +Roi/SM +roisterer/M +roister/SZGRD +Rojas/M +Roland/M +Rolando/M +Roldan/M +role/MS +Roley/M +Rolfe/M +Rolf/M +Rolland/M +rollback/SM +rolled/A +Rollerblade/S +rollerskating +roller/SM +rollick/DGS +rollicking/Y +Rollie/M +rolling/S +Rollin/SM +Rollo/M +rollover/S +roll/UDSG +Rolodex +Rolph/M +Rolvaag/M +ROM +romaine/MS +Romain/M +Roma/M +romancer/M +romance/RSDZMG +Romanesque/S +Romania/M +Romanian/SM +Romano/MS +Romanov/M +roman/S +Romansh/M +Romans/M +Roman/SM +romantically/U +romanticism/MS +Romanticism/S +romanticist/S +romanticize/SDG +romantic/MS +Romany/SM +Romeo/MS +romeo/S +Romero/M +Rome/SM +Rommel/M +Romney/M +Romola/M +Romona/M +Romonda/M +romper/M +romp/GSZDR +Rom/SM +Romulus/M +Romy/M +Ronalda/M +Ronald/M +Rona/M +Ronda/M +rondo/SM +Ronica/M +Ron/M +Ronna/M +Ronnica/M +Ronnie/M +Ronni/M +Ronny/M +Ronstadt/M +Rontgen +Roobbie/M +rood/MS +roof/DRMJGZS +roofer/M +roofgarden +roofing/M +roofless +rooftop/S +rookery/MS +rook/GDMS +rookie/SRMT +roomer/M +roomette/SM +roomful/MS +roominess/MS +roommate/SM +room/MDRGZS +roomy/TPSR +Rooney/M +Rooseveltian +Roosevelt/M +rooster/M +roost/SGZRDM +rooted/P +rooter/M +rootlessness/M +rootless/P +rootlet/SM +Root/M +root/MGDRZS +rootstock/M +rope/DRSMZG +roper/M +roping/M +Roquefort/MS +Roquemore/M +Rora/M +Rorie/M +Rori/M +Rorke/M +Rorschach +Rory/M +Rosabella/M +Rosabelle/M +Rosabel/M +Rosaleen/M +Rosales/M +Rosalia/M +Rosalie/M +Rosalinda/M +Rosalinde/M +Rosalind/M +Rosaline/M +Rosalynd/M +Rosalyn/M +Rosa/M +Rosamond/M +Rosamund/M +Rosana/M +Rosanna/M +Rosanne/M +Rosario/M +rosary/SM +Roscoe/M +Rosco/M +Roseanna/M +Roseanne/M +Roseann/M +roseate/Y +Roseau +rosebud/MS +rosebush/SM +Rosecrans/M +Roseland/M +Roselia/M +Roseline/M +Roselin/M +Rosella/M +Roselle/M +Rose/M +Rosemaria/M +Rosemarie/M +Rosemary/M +rosemary/MS +rose/MGDS +Rosemonde/M +Rosenberg/M +Rosenblum/M +Rosendo/M +Rosene/M +Rosen/M +Rosenthal/M +Rosenzweig/M +Rosetta/M +Rosette/M +rosette/SDMG +rosewater +rosewood/SM +Roshelle/M +Rosicrucian/M +Rosie/M +rosily +Rosina/M +rosiness/MS +rosin/SMDG +Rosita/M +Roslyn/M +Rosmunda/M +Ros/N +Ross +Rossetti/M +Rossie/M +Rossi/M +Rossini/M +Rossy/M +Rostand/M +roster/DMGS +Rostov/M +rostra's +rostrum/SM +Roswell/M +Rosy/M +rosy/RTP +rota/MS +Rotarian/SM +rotary/S +rotated/U +rotate/VGNXSD +rotational/Y +rotation/M +rotative/Y +rotator/SM +rotatory +ROTC +rote/MS +rotgut/MS +Roth/M +Rothschild/M +rotisserie/MS +rotogravure/SM +rotor/MS +rototill/RZ +rot/SDG +rotted +rottenness/S +rotten/RYSTP +Rotterdam/M +rotter/M +rotting +rotunda/SM +rotundity/S +rotundness/S +rotund/SDYPG +Rouault/M +rou/MS +rouge/GMDS +roughage/SM +roughen/DG +rougher/M +roughhouse/GDSM +roughish +roughneck/MDSG +roughness/MS +roughs +roughshod +rough/XPYRDNGT +roulette/MGDS +roundabout/PSM +roundedness/M +rounded/P +roundelay/SM +roundels +rounder/M +roundhead/D +roundheadedness/M +roundheaded/P +roundhouse/SM +roundish +roundness/MS +roundoff +roundup/MS +roundworm/MS +round/YRDSGPZT +Rourke/M +rouse/DSRG +rouser/M +Rousseau/M +roustabout/SM +roust/SGD +route/ASRDZGJ +router/M +route's +rout/GZJMDRS +routine/SYM +routing/M +routinize/GSD +Rouvin/M +rover/M +Rover/M +rove/ZGJDRS +roving/M +Rowan/M +rowboat/SM +rowdily +rowdiness/MS +rowdyism/MS +rowdy/PTSR +rowel/DMSG +Rowe/M +Rowena/M +rowen/M +Rowen/M +rower/M +Rowland/M +Rowley/M +Row/MN +Rowney/M +row/SJZMGNDR +Roxana/M +Roxane/M +Roxanna/M +Roxanne/M +Roxie/M +Roxi/M +Roxine/M +Roxy/M +royalist/SM +Royall/M +Royal/M +royal/SY +royalty/MS +Royce/M +Roy/M +Rozalie/M +Rozalin/M +Rozamond/M +Rozanna/M +Rozanne/M +Rozele/M +Rozella/M +Rozelle/M +Roze/M +Rozina/M +Roz/M +RP +rpm +RPM +rps +RR +Rriocard/M +rs +r's +R's +RSFSR +RSI +RSV +RSVP +RSX +rt +rte +Rte +RTFM +r/TGVJ +Rubaiyat/M +rubato/MS +rubbed +rubberize/GSD +rubberneck/DRMGSZ +rubber/SDMG +rubbery/TR +rubbing/M +rubbish/DSMG +rubbishy +rubble/GMSD +rubdown/MS +rubella/MS +Rube/M +Ruben/MS +rube/SM +Rubetta/M +Rubia/M +Rubicon/SM +rubicund +rubidium/SM +Rubie/M +Rubik/M +Rubi/M +Rubina/M +Rubin/M +Rubinstein/M +ruble/MS +rubout +rubric/MS +rub/S +Ruby/M +ruby/MTGDSR +Ruchbah/M +ruck/M +rucksack/SM +ruckus/SM +ruction/SM +rudderless +rudder/MS +Ruddie/M +ruddiness/MS +Rudd/M +Ruddy/M +ruddy/PTGRSD +rudeness/MS +rude/PYTR +Rudie/M +Rudiger/M +rudimentariness/M +rudimentary/P +rudiment/SM +Rudolf/M +Rudolfo/M +Rudolph/M +Rudyard/M +Rudy/M +ruefulness/S +rueful/PY +rue/GDS +Rufe/M +ruff/GSYDM +ruffian/GSMDY +ruffled/U +ruffler/M +ruffle/RSDG +ruffly/TR +Rufus/M +Rugby's +rugby/SM +ruggedness/S +rugged/PYRT +Ruggiero/M +rugging +rug/MS +Ruhr/M +ruination/MS +ruiner/M +ruin/MGSDR +ruinousness/M +ruinous/YP +Ruiz/M +rulebook/S +ruled/U +rule/MZGJDRS +ruler/GMD +ruling/M +Rumanian's +Rumania's +rumba/GDMS +rumble/JRSDG +rumbler/M +rumbustious +rumen/M +Rumford/M +Ru/MH +ruminant/YMS +ruminate/VNGXSD +ruminative/Y +rummage/GRSD +rummager/M +Rummel/M +rummer +rummest +rummy/TRSM +rumored/U +rumorer/M +rumormonger/SGMD +rumor/ZMRDSG +Rumpelstiltskin/M +rump/GMYDS +rumple/SDG +rumply/TR +rumpus/SM +rum/XSMN +runabout/SM +runaround/S +run/AS +runaway/S +rundown/SM +rune/MS +Runge/M +rung/MS +runic +runlet/SM +runnable +runnel/SM +runner/MS +running/S +Runnymede/M +runny/RT +runoff/MS +runtime +runtiness/M +runt/MS +runty/RPT +runway/MS +Runyon/M +rupee/MS +Ruperta/M +Rupert/M +Ruperto/M +rupiah/M +rupiahs +Ruppert/M +Ruprecht/M +rupture/GMSD +rurality/M +rural/Y +Rurik/M +ruse/MS +Rushdie/M +rush/DSRGZ +rusher/M +rushes/I +rushing/M +Rush/M +Rushmore/M +rushy/RT +Ruskin/M +rusk/MS +Russell/M +Russel/M +russet/MDS +russetting +Russia/M +Russian/SM +Russo/M +Russ/S +Rustbelt/M +rustically +rusticate/GSD +rustication/M +rusticity/S +rustic/S +Rustie/M +rustiness/MS +Rustin/M +rustler/M +rustle/RSDGZ +rust/MSDG +rustproof/DGS +Rusty/M +rusty/XNRTP +rutabaga/SM +Rutger/SM +Ruthanne/M +Ruthann/M +Ruthe/M +ruthenium/MS +rutherfordium/SM +Rutherford/M +Ruthie/M +Ruthi/M +ruthlessness/MS +ruthless/YP +Ruth/M +Ruthy/M +Rutland/M +Rutledge/M +rut/MS +rutted +Rutter/M +Ruttger/M +rutting +rutty/RT +Ruy/M +RV +RVs +Rwandan/S +Rwanda/SM +Rwy/M +Rx/M +Ryan/M +Ryann/M +Rycca/M +Rydberg/M +Ryder/M +rye/MS +Ryley/M +Ry/M +Ryon/M +Ryukyu/M +Ryun/M +S +SA +Saab/M +Saar/M +Saba/M +sabbath +Sabbath/M +Sabbaths +sabbatical/S +sabered/U +saber/GSMD +Sabik/M +Sabina/M +Sabine/M +Sabin/M +sable/GMDS +sabotage/DSMG +saboteur/SM +sabot/MS +Sabra/M +sabra/MS +Sabrina/M +SAC +Sacajawea/M +saccharides +saccharine +saccharin/MS +Sacco/M +sacerdotal +Sacha/M +sachem/MS +sachet/SM +Sachs/M +sackcloth/M +sackcloths +sacker/M +sackful/MS +sack/GJDRMS +sacking/M +sacral +sacra/L +sacramental/S +sacrament/DMGS +Sacramento/M +sacredness/S +sacred/PY +sacrificer/M +sacrifice/RSDZMG +sacrificial/Y +sacrilege/MS +sacrilegious/Y +sacristan/SM +sacristy/MS +sacroiliac/S +sacrosanctness/MS +sacrosanct/P +sacrum/M +sac/SM +Sada/M +Sadat/M +Saddam/M +sadden/DSG +sadder +saddest +saddlebag/SM +saddler/M +saddle's +saddle/UGDS +Sadducee/M +Sadella/M +Sade/M +sades +Sadie/M +sadism/MS +sadistic +sadistically +sadist/MS +sadness/SM +sadomasochism/MS +sadomasochistic +sadomasochist/S +sad/PY +Sadr/M +Sadye/M +safari/GMDS +safeguard/MDSG +safekeeping/MS +safeness/MS +safeness's/U +safes +safety/SDMG +safe/URPTY +safflower/SM +saffron/MS +sagaciousness/M +sagacious/YP +sagacity/MS +saga/MS +Sagan/M +sagebrush/SM +sage/MYPS +sagged +sagger +sagging +saggy/RT +Saginaw/M +Sagittarius/MS +sago/MS +sag/TSR +saguaro/SM +Sahara/M +Saharan/M +Sahel +sahib/MS +Saidee/M +saids +said/U +Saigon/M +sailboard/DGS +sailboat/SRMZG +sailcloth/M +sailcloths +sailer/M +sailfish/SM +sail/GJMDRS +sailing/M +sailor/YMS +sailplane/SDMG +sainthood/MS +saintlike +saintliness/MS +saintly/RTP +saint/YDMGS +Saiph/M +saith +saiths +Sakai/M +sake/MRS +saker/M +Sakhalin/M +Sakharov/M +Saki/M +saki's +salaam/GMDS +salable/U +salaciousness/MS +salacious/YP +salacity/MS +Saladin/M +Salado/M +salad/SM +Salaidh/M +salamander/MS +salami/MS +salary/SDMG +Salas/M +Salazar/M +saleability/M +sale/ABMS +Saleem/M +Salem/M +Salerno/M +salesclerk/SM +salesgirl/SM +saleslady/S +salesman/M +salesmanship/SM +salesmen +salespeople/M +salesperson/MS +salesroom/M +saleswoman +saleswomen +salience/MS +saliency +salient/SY +Salim/M +Salina/MS +saline/S +salinger +Salinger/M +salinity/MS +Salisbury/M +Salish/M +saliva/MS +salivary +salivate/XNGSD +salivation/M +Salk/M +Sallee/M +Salle/M +Sallie/M +Salli/M +sallowness/MS +sallow/TGRDSP +Sallust/M +Sallyanne/M +Sallyann/M +sally/GSDM +Sally/M +salmonellae +salmonella/M +Salmon/M +salmon/SM +Sal/MY +Saloma/M +Salome/M +Salomi/M +Salomo/M +Salomone/M +Salomon/M +Salonika/M +salon/SM +saloonkeeper +saloon/MS +salsa/MS +salsify/M +SALT +saltcellar/SM +salted/UC +salter/M +salt/GZTPMDRS +saltine/MS +saltiness/SM +saltness/M +Salton/M +saltpeter/SM +salts/C +saltshaker/S +saltwater +salty/RSPT +salubriousness/M +salubrious/YP +salubrity/M +salutariness/M +salutary/P +salutation/SM +salutatory/S +saluter/M +salute/RSDG +Salvadoran/S +Salvadorian/S +Salvador/M +salvageable +salvage/MGRSD +salvager/M +salvation/MS +Salvatore/M +salve/GZMDSR +salver/M +Salvidor/M +salvo/GMDS +Salween/M +Salyut/M +Salz/M +SAM +Samantha/M +Samara/M +Samaria/M +Samaritan/MS +samarium/MS +Samarkand/M +samba/GSDM +sameness/MS +same/SP +Sam/M +Sammie/M +Sammy/M +Samoa +Samoan/S +Samoset/M +samovar/SM +Samoyed/M +sampan/MS +sampler/M +sample/RSDJGMZ +sampling/M +Sampson/M +Samsonite/M +Samson/M +Samuele/M +Samuel/SM +Samuelson/M +samurai/M +San'a +Sana/M +sanatorium/MS +Sanborn/M +Sanchez/M +Sancho/M +sanctification/M +sanctifier/M +sanctify/RSDGNX +sanctimoniousness/MS +sanctimonious/PY +sanctimony/MS +sanctioned/U +sanction/SMDG +sanctity/SM +sanctuary/MS +sanctum/SM +sandal/MDGS +sandalwood/SM +sandbagged +sandbagging +sandbag/MS +sandbank/SM +sandbar/S +sandblaster/M +sandblast/GZSMRD +sandbox/MS +Sandburg/M +sandcastle/S +Sande/M +Sanderling/M +sander/M +Sander/M +Sanderson/M +sandhill +sandhog/SM +Sandia/M +Sandie/M +Sandi/M +sandiness/S +Sandinista +sandlot/SM +sandlotter/S +sandman/M +sandmen +Sand/MRZ +Sandor/M +Sandoval/M +sandpaper/DMGS +sandpile +sandpiper/MS +sandpit/M +Sandra/M +Sandro/M +sand/SMDRGZ +sandstone/MS +sandstorm/SM +Sandusky/M +sandwich/SDMG +Sandye/M +Sandy/M +sandy/PRT +saned +sane/IRYTP +saneness/MS +saneness's/I +sanes +Sanford/M +Sanforized +Sanger/M +sangfroid/S +sangria/SM +Sang/RM +sang/S +sanguinary +sanguined +sanguine/F +sanguinely +sanguineness/M +sanguineous/F +sanguines +sanguining +Sanhedrin/M +saning +sanitarian/S +sanitarium/SM +sanitary/S +sanitate/NX +sanitation/M +sanitizer/M +sanitize/RSDZG +sanity/SIM +sank +Sankara/M +San/M +sans +sanserif +Sanskritic +Sanskritize/M +Sanskrit/M +Sansone/M +Sanson/M +Santa/M +Santana/M +Santayana/M +Santeria +Santiago/M +Santo/MS +sapience/MS +sapient +sapless +sapling/SM +sap/MS +sapped +sapper/SM +Sapphira/M +Sapphire/M +sapphire/MS +Sappho/M +sappiness/SM +sapping +Sapporo/M +sappy/RPT +saprophyte/MS +saprophytic +sapsucker/SM +sapwood/SM +Saraann/M +Saracen/MS +Saragossa/M +Sarah/M +Sarajane/M +Sarajevo/M +Sara/M +Saran/M +saran/SM +sarape's +Sarasota/M +Saratoga/M +Saratov/M +Sarawak/M +sarcasm/MS +sarcastic +sarcastically +sarcoma/MS +sarcophagi +sarcophagus/M +sardine/SDMG +Sardinia/M +sardonic +sardonically +Saree/M +Sarena/M +Sarene/M +Sarette/M +Sargasso/M +Sarge/M +Sargent/M +sarge/SM +Sargon/M +Sari/M +sari/MS +Sarina/M +Sarine/M +Sarita/M +Sarnoff/M +sarong/MS +Saroyan/M +sarsaparilla/MS +Sarto/M +sartorial/Y +sartorius/M +Sartre/M +Sascha/M +SASE +Sasha/M +sashay/GDS +Sashenka/M +sash/GMDS +Saskatchewan/M +Saskatoon/M +Sask/M +sassafras/MS +sass/GDSM +Sassoon/M +sassy/TRS +SAT +satanic +satanical/Y +Satanism/M +satanism/S +Satanist/M +satanist/S +Satan/M +satchel/SM +sat/DG +sateen/MS +satellite/GMSD +sate/S +satiable/I +satiate/GNXSD +satiation/M +satiety/MS +satin/MDSG +satinwood/MS +satiny +satire/SM +satiric +satirical/Y +satirist/SM +satirize/DSG +satirizes/U +satisfaction/ESM +satisfactorily/U +satisfactoriness/MU +satisfactory/UP +satisfiability/U +satisfiable/U +satisfied/UE +satisfier/M +satisfies/E +satisfy/GZDRS +satisfying/EU +satisfyingly +Sat/M +satori/SM +satrap/SM +saturated/CUA +saturater/M +saturates/A +saturate/XDRSNG +saturation/M +Saturday/MS +saturnalia +Saturnalia/M +saturnine/Y +Saturn/M +Satyanarayanan/M +satyriases +satyriasis/M +satyric +satyr/MS +sauce/DSRGZM +saucepan/SM +saucer/M +saucily +sauciness/S +saucy/TRP +Saudi/S +Saud/M +Saudra/M +sauerkraut/SM +Saukville/M +Saul/M +Sault/M +sauna/DMSG +Sauncho/M +Saunder/SM +Saunderson/M +Saundra/M +saunter/DRSG +saurian/S +sauropod/SM +sausage/MS +Saussure/M +saut/DGS +Sauternes/M +Sauveur/M +savage/GTZYPRSD +Savage/M +savageness/SM +savagery/MS +Savannah/M +savanna/MS +savant/SM +saved/U +saveloy/M +saver/M +save/ZGJDRSB +Savina/M +Savior/M +savior/SM +Saviour/M +Savonarola/M +savored/U +savorer/M +savorier +savoriest +savoriness/S +savoringly/S +savoring/Y +savor/SMRDGZ +savory/UMPS +Savoyard/M +Savoy/M +savoy/SM +savvy/GTRSD +sawbones/M +sawbuck/SM +sawdust/MDSG +sawer/M +sawfly/SM +sawhorse/MS +Saw/M +sawmill/SM +saw/SMDRG +sawtooth +Sawyere/M +Sawyer/M +sawyer/MS +Saxe/M +saxifrage/SM +Sax/M +sax/MS +Saxon/SM +Saxony/M +saxophone/MS +saxophonist/SM +Saxton/M +Sayer/M +sayer/SM +sayest +saying/MS +Sayre/MS +says/M +say/USG +Say/ZMR +SBA +Sb/M +SC +scabbard/SGDM +scabbed +scabbiness/SM +scabbing +scabby/RTP +scabies/M +scabrousness/M +scabrous/YP +scab/SM +scad/SM +scaffolding/M +scaffold/JGDMS +scalability +Scala/M +scalar/SM +scalawag/SM +scald/GJRDS +scaled/AU +scale/JGZMBDSR +scaleless +scalene +scaler/M +scales/A +scaliness/MS +scaling/A +scallion/MS +scalloper/M +scallop/GSMDR +scalloping/M +scalpel/SM +scalper/M +scalp/GZRDMS +scalping/M +scaly/TPR +scammed +scamming +scamper/GD +scampi/M +scamp/RDMGZS +scam/SM +Scan +scan/AS +scandal/GMDS +scandalized/U +scandalize/GDS +scandalmonger/SM +scandalousness/M +scandalous/YP +Scandinavia/M +Scandinavian/S +scandium/MS +scanned/A +scanner/SM +scanning/A +scansion/SM +scant/CDRSG +scantest +scantily +scantiness/MS +scantly +scantness/MS +scanty/TPRS +scapegoat/SGDM +scapegrace/MS +scape/M +scapulae +scapula/M +scapular/S +scarab/SM +Scaramouch/M +Scarborough/M +scarceness/SM +scarce/RTYP +scarcity/MS +scar/DRMSG +scarecrow/MS +scaremongering/M +scaremonger/SGM +scarer/M +scare/S +scarface +Scarface/M +scarf/SDGM +scarification/M +scarify/DRSNGX +scarily +scariness/S +scarlatina/MS +Scarlatti/M +Scarlet/M +scarlet/MDSG +Scarlett/M +scarp/SDMG +scarred +scarring +scarves/M +scary/PTR +scathe/DG +scathed/U +scathing/Y +scatological +scatology/SM +scat/S +scatted +scatterbrain/MDS +scatter/DRJZSG +scatterer/M +scattergun +scattering/YM +scatting +scavenge/GDRSZ +scavenger/M +SCCS +scenario/SM +scenarist/MS +scene/GMDS +scenery/SM +scenically +scenic/S +scented/U +scent/GDMS +scentless +scent's/C +scents/C +scepter/DMSG +scepters/U +sceptically +sch +Schaefer/M +Schaeffer/M +Schafer/M +Schaffner/M +Schantz/M +Schapiro/M +Scheat/M +Schedar/M +schedule/ADSRG +scheduled/U +scheduler/MS +schedule's +Scheherazade/M +Scheherezade/M +Schelling/M +schema/M +schemata +schematically +schematic/S +scheme/JSRDGMZ +schemer/M +schemta +Schenectady/M +scherzo/MS +Schick/M +Schiller/M +schilling/SM +schismatic/S +schism/SM +schist/SM +schizoid/S +schizomycetes +schizophrenia/SM +schizophrenically +schizophrenic/S +schizo/S +schlemiel/MS +schlepped +schlepping +schlep/S +Schlesinger/M +Schliemann/M +Schlitz/M +schlock/SM +schlocky/TR +Schloss/M +schmaltz/MS +schmaltzy/TR +Schmidt/M +Schmitt/M +schmoes +schmo/M +schmooze/GSD +schmuck/MS +Schnabel/M +schnapps/M +schnauzer/MS +Schneider/M +schnitzel/MS +schnook/SM +schnoz/S +schnozzle/MS +Schoenberg/M +Schofield/M +scholarship/MS +scholar/SYM +scholastically +scholastic/S +schoolbag/SM +schoolbook/SM +schoolboy/MS +schoolchild/M +schoolchildren +schooldays +schooled/U +schoolfellow/S +schoolfriend +schoolgirlish +schoolgirl/MS +schoolhouse/MS +schooling/M +schoolmarmish +schoolmarm/MS +schoolmaster/SGDM +schoolmate/MS +schoolmistress/MS +schoolroom/SM +schoolteacher/MS +schoolwork/SM +schoolyard/SM +school/ZGMRDJS +schooner/SM +Schopenhauer/M +Schottky/M +Schrieffer/M +Schrdinger/M +Schroeder/M +Schroedinger/M +Schubert/M +Schultz/M +Schulz/M +Schumacher/M +Schuman/M +Schumann/M +schussboomer/S +schuss/SDMG +Schuster/M +Schuyler/M +Schuylkill/M +Schwab/M +Schwartzkopf/M +Schwartz/M +Schwarzenegger/M +schwa/SM +Schweitzer/M +Schweppes/M +Schwinger/M +Schwinn/M +sci +sciatica/SM +sciatic/S +science/FMS +scientifically/U +scientific/U +scientist/SM +Scientology/M +scimitar/SM +scintilla/MS +scintillate/GNDSX +scintillation/M +scintillator/SM +scion/SM +Scipio/M +scissor/SGD +scleroses +sclerosis/M +sclerotic/S +Sc/M +scoffer/M +scofflaw/MS +scoff/RDGZS +scolder/M +scold/GSJRD +scolioses +scoliosis/M +scollop's +sconce/SDGM +scone/SM +scooper/M +scoop/SRDMG +scooter/M +scoot/SRDGZ +scope/DSGM +Scopes/M +scops +scorbutic +scorcher/M +scorching/Y +scorch/ZGRSD +scoreboard/MS +scorecard/MS +scored/M +scorekeeper/SM +scoreless +scoreline +score/ZMDSRJG +scorner/M +scornfulness/M +scornful/PY +scorn/SGZMRD +scorpion/SM +Scorpio/SM +Scorpius/M +Scorsese/M +Scotchgard/M +Scotchman/M +Scotchmen +scotch/MSDG +scotchs +Scotch/S +Scotchwoman +Scotchwomen +Scotia/M +Scotian/M +Scotland/M +Scot/MS +Scotsman/M +Scotsmen +Scotswoman +Scotswomen +Scottie/SM +Scotti/M +Scottish +Scott/M +Scottsdale/M +Scotty's +scoundrel/YMS +scourer/M +scourge/MGRSD +scourger/M +scouring/M +scour/SRDGZ +scouter/M +scouting/M +scoutmaster/SM +Scout's +scout/SRDMJG +scow/DMGS +scowler/M +scowl/SRDG +scrabble/DRSZG +scrabbler/M +Scrabble/SM +scragged +scragging +scraggly/TR +scraggy/TR +scrag/SM +scrambler/MS +scrambler's/U +scramble/UDSRG +scrammed +scramming +scram/S +Scranton/M +scrapbook/SM +scraper/M +scrape/S +scrapheap/SM +scrapped +scrapper/SM +scrapping +scrappy/RT +scrap/SGZJRDM +scrapyard/S +scratched/U +scratcher/M +scratches/M +scratchily +scratchiness/S +scratch/JDRSZG +scratchy/TRP +scrawler/M +scrawl/GRDS +scrawly/RT +scrawniness/MS +scrawny/TRP +screamer/M +screaming/Y +scream/ZGSRD +screecher/M +screech/GMDRS +screechy/TR +screed/MS +scree/DSM +screened/U +screening/M +screenplay/MS +screen/RDMJSG +screenwriter/MS +screwball/SM +screwdriver/SM +screwer/M +screw/GUSD +screwiness/S +screw's +screwup +screwworm/MS +screwy/RTP +Scriabin/M +scribal +scribble/JZDRSG +scribbler/M +scribe/CDRSGIK +scriber/MKIC +scribe's +Scribner/MS +scrimmager/M +scrimmage/RSDMG +scrimp/DGS +scrimshaw/GSDM +scrim/SM +Scripps/M +scrip/SM +scripted/U +script/FGMDS +scriptural/Y +scripture/MS +Scripture/MS +scriptwriter/SM +scriptwriting/M +scrivener/M +scriven/ZR +scrod/M +scrofula/MS +scrofulous +scrollbar/SM +scroll/GMDSB +Scrooge/MS +scrooge/SDMG +scrota +scrotal +scrotum/M +scrounge/ZGDRS +scroungy/TR +scrubbed +scrubber/MS +scrubbing +scrubby/TR +scrub/S +scruffily +scruffiness/S +scruff/SM +scruffy/PRT +Scruggs/M +scrummage/MG +scrum/MS +scrumptious/Y +scrunch/DSG +scrunchy/S +scruple/SDMG +scrupulosity/SM +scrupulousness's +scrupulousness/US +scrupulous/UPY +scrutable/I +scrutinized/U +scrutinizer/M +scrutinize/RSDGZ +scrutinizingly/S +scrutinizing/UY +scrutiny/MS +SCSI +scuba/SDMG +scudded +scudding +Scud/M +scud/S +scuff/GSD +scuffle/SDG +sculler/M +scullery/MS +Sculley/M +scullion/MS +scull/SRDMGZ +sculptor/MS +sculptress/MS +sculpt/SDG +sculptural/Y +sculpture/SDGM +scumbag/S +scummed +scumming +scum/MS +scummy/TR +scupper/SDMG +scurf/MS +scurfy/TR +scurrility/MS +scurrilousness/MS +scurrilous/PY +scurry/GJSD +scurvily +scurviness/M +scurvy/SRTP +scutcheon/SM +scuttlebutt/MS +scuttle/MGSD +scuzzy/RT +Scylla/M +scythe/SDGM +Scythia/M +SD +SDI +SE +seabed/S +seabird/S +seaboard/MS +Seaborg/M +seaborne +Seabrook/M +seacoast/MS +seafare/JRZG +seafarer/M +seafood/MS +seafront/MS +Seagate/M +seagoing +Seagram/M +seagull/S +seahorse/S +sealant/MS +sealed/AU +sealer/M +seal/MDRSGZ +sealskin/SM +seals/UA +seamail +seamanship/SM +seaman/YM +seamer/M +seaminess/M +seamlessness/M +seamless/PY +seam/MNDRGS +seams/I +seamstress/MS +Seamus/M +sea/MYS +seamy/TRP +Seana/M +sance/SM +Sean/M +seaplane/SM +seaport/SM +seaquake/M +Seaquarium/M +searcher/AM +searching/YS +searchlight/SM +search/RSDAGZ +sear/DRSJGT +searing/Y +Sears/M +seascape/SM +seashell/MS +seashore/SM +seasickness/SM +seasick/P +seaside/SM +seasonableness/M +seasonable/UP +seasonably/U +seasonality +seasonal/Y +seasoned/U +seasoner/M +seasoning/M +season/JRDYMBZSG +seatbelt +seated/A +seater/M +seating/SM +SEATO +seat's +Seattle/M +seat/UDSG +seawall/S +seaward/S +seawater/S +seaway/MS +seaweed/SM +seaworthinesses +seaworthiness/MU +seaworthy/TRP +sebaceous +Sebastian/M +Sebastiano/M +Sebastien/M +seborrhea/SM +SEC +secant/SM +secede/GRSD +secessionist/MS +secession/MS +secludedness/M +secluded/YP +seclude/GSD +seclusion/SM +seclusive +Seconal +secondarily +secondary/PS +seconder/M +secondhand +second/RDYZGSL +secrecy/MS +secretarial +secretariat/MS +secretaryship/MS +secretary/SM +secrete/XNS +secretion/M +secretiveness/S +secretive/PY +secretory +secret/TVGRDYS +sec/S +sectarianism/MS +sectarian/S +sectary/MS +sectionalism/MS +sectionalized +sectional/SY +section/ASEM +sectioned +sectioning +sect/ISM +sectoral +sectored +sector/EMS +sectoring +sects/E +secularism/MS +secularist/MS +secularity/M +secularization/MS +secularized/U +secularize/GSD +secular/SY +secured/U +securely/I +secure/PGTYRSDJ +security/MSI +secy +sec'y +sedan/SM +sedateness/SM +sedate/PXVNGTYRSD +sedation/M +sedative/S +sedentary +Seder/SM +sedge/SM +Sedgwick/M +sedgy/RT +sedimentary +sedimentation/SM +sediment/SGDM +sedition/SM +seditiousness/M +seditious/PY +seducer/M +seduce/RSDGZ +seduction/MS +seductiveness/MS +seductive/YP +seductress/SM +sedulous/Y +Seebeck/M +seed/ADSG +seedbed/MS +seedcase/SM +seeded/U +seeder/MS +seediness/MS +seeding/S +seedless +seedling/SM +seedpod/S +seed's +seedy/TPR +seeings +seeing's +seeing/U +seeker/M +seek/GZSR +seeking/Y +Seeley/M +See/M +seem/GJSYD +seeming/Y +seemliness's +seemliness/US +seemly/UTPR +seen/U +seepage/MS +seep/GSD +seer/SM +seersucker/MS +sees +seesaw/DMSG +seethe/SDGJ +see/U +segmental/Y +segmentation/SM +segmented/U +segment/SGDM +Segovia/M +segregant +segregated/U +segregate/XCNGSD +segregation/CM +segregationist/SM +segregative +Segre/M +segue/DS +segueing +Segundo/M +Se/H +Seidel/M +seigneur/MS +seignior/SM +Seiko/M +seine/GZMDSR +Seine/M +seiner/M +Seinfeld/M +seismic +seismically +seismographer/M +seismographic +seismographs +seismography/SM +seismograph/ZMR +seismologic +seismological +seismologist/MS +seismology/SM +seismometer/S +seize/BJGZDSR +seizer/M +seizing/M +seizin/MS +seizor/MS +seizure/MS +Seka/M +Sela/M +Selassie/M +Selby/M +seldom +selected/UAC +selectional +selection/MS +selectiveness/M +selective/YP +selectivity/MS +selectman/M +selectmen +selectness/SM +selector/SM +select/PDSVGB +Selectric/M +selects/A +Selena/M +selenate/M +Selene/M +selenite/M +selenium/MS +selenographer/SM +selenography/MS +Selestina/M +Seleucid/M +Seleucus/M +self/GPDMS +selfishness/SU +selfish/PUY +selflessness/MS +selfless/YP +selfness/M +Selfridge/M +selfsameness/M +selfsame/P +Selia/M +Selie/M +Selig/M +Selim/M +Selina/M +Selinda/M +Seline/M +Seljuk/M +Selkirk/M +Sella/M +sell/AZGSR +seller/AM +Sellers/M +Selle/ZM +sellout/MS +Selma/M +seltzer/S +selvage/MGSD +selves/M +Selznick/M +semantical/Y +semanticist/SM +semantic/S +semantics/M +semaphore/GMSD +Semarang/M +semblance/ASME +semen/SM +semester/SM +semiannual/Y +semiarid +semiautomated +semiautomatic/S +semicircle/SM +semicircular +semicolon/MS +semiconductor/SM +semiconscious +semidefinite +semidetached +semidrying/M +semifinalist/MS +semifinal/MS +semilogarithmic +semimonthly/S +seminal/Y +seminarian/MS +seminar/SM +seminary/MS +Seminole/SM +semiofficial +semioticians +semiotic/S +semiotics/M +semipermanent/Y +semipermeable +semiprecious +semiprivate +semiprofessional/YS +semipublic +semiquantitative/Y +Semiramis/M +semiretired +semisecret +semiskilled +semi/SM +semisolid/S +semistructured +semisweet +Semite/SM +Semitic/MS +semitic/S +semitone/SM +semitrailer/SM +semitrance +semitransparent +semitropical +semivowel/MS +semiweekly/S +semiyearly +semolina/SM +sempiternal +sempstress/SM +Semtex +sen +Sen +Sena/M +senate/MS +Senate/MS +senatorial +senator/MS +Sendai/M +sender/M +sends/A +send/SRGZ +Seneca/MS +Senegalese +Senegal/M +senescence/SM +senescent +senile/SY +senility/MS +seniority/SM +senior/MS +Senior/S +Sennacherib/M +senna/MS +Sennett/M +Seora/M +senora/S +senorita/S +senor/MS +sensately/I +sensate/YNX +sensationalism/MS +sensationalist/S +sensationalize/GSD +sensational/Y +sensation/M +sens/DSG +senselessness/SM +senseless/PY +sense/M +sensibility/ISM +sensibleness/MS +sensible/PRST +sensibly/I +sensitiveness/MS +sensitiveness's/I +sensitives +sensitive/YIP +sensitivity/ISM +sensitization/CSM +sensitized/U +sensitizers +sensitize/SDCG +sensor/MS +sensory +sensualist/MS +sensuality/MS +sensual/YF +sensuousness/S +sensuous/PY +Sensurround/M +sentence/SDMG +sentential/Y +sententious/Y +sentience/ISM +sentient/YS +sentimentalism/SM +sentimentalist/SM +sentimentality/SM +sentimentalization/SM +sentimentalize/RSDZG +sentimentalizes/U +sentimental/Y +sentiment/MS +sentinel/GDMS +sentry/SM +sent/UFEA +Seoul/M +sepal/SM +separability/MSI +separableness/MI +separable/PI +separably/I +separateness/MS +separates/M +separate/YNGVDSXP +separation/M +separatism/SM +separatist/SM +separator/SM +Sephardi/M +Sephira/M +sepia/MS +Sepoy/M +sepses +sepsis/M +septa/M +septate/N +September/MS +septennial/Y +septet/MS +septicemia/SM +septicemic +septic/S +septillion/M +sept/M +Sept/M +septuagenarian/MS +Septuagint/MS +septum/M +sepulcher/MGSD +sepulchers/UA +sepulchral/Y +seq +sequel/MS +sequenced/A +sequence/DRSJZMG +sequencer/M +sequence's/F +sequences/F +sequent/F +sequentiality/FM +sequentialize/DSG +sequential/YF +sequester/SDG +sequestrate/XGNDS +sequestration/M +sequin/SDMG +sequitur +Sequoia/M +sequoia/MS +Sequoya/M +Serafin/M +seraglio/SM +serape/S +seraphic +seraphically +seraphim's +seraph/M +seraphs +sera's +Serbia/M +Serbian/S +Serb/MS +Serbo/M +serenade/MGDRS +serenader/M +Serena/M +serendipitous/Y +serendipity/MS +serene/GTYRSDP +Serene/M +sereneness/SM +Serengeti/M +serenity/MS +sere/TGDRS +serfdom/MS +serf/MS +Sergeant/M +sergeant/SM +serge/DSGM +Sergei/M +Serge/M +Sergent/M +Sergio/M +serialization/MS +serialize/GSD +serial/MYS +series/M +serif/SMD +serigraph/M +serigraphs +seriousness/SM +serious/PY +sermonize/GSD +sermon/SGDM +serological/Y +serology/MS +serons +serous +Serpens/M +serpent/GSDM +serpentine/GYS +Serra/M +Serrano/M +serrate/GNXSD +serration/M +serried +serum/MS +servant/SDMG +serve/AGCFDSR +served/U +server/MCF +servers +serviceability/SM +serviceableness/M +serviceable/P +serviced/U +serviceman/M +servicemen +service/MGSRD +service's/E +services/E +servicewoman +servicewomen +serviette/MS +servilely +servileness/M +serviles +servile/U +servility/SM +serving/SM +servitor/SM +servitude/MS +servomechanism/MS +servomotor/MS +servo/S +sesame/MS +sesquicentennial/S +sessile +session/SM +setback/S +Seth/M +Set/M +Seton/M +set's +setscrew/SM +set/SIA +settable/A +sett/BJGZSMR +settee/MS +setter/M +setting/AS +setting's +settle/AUDSG +settlement/ASM +settler/MS +settling/S +setup/MS +Seumas/M +Seurat/M +Seuss/M +Sevastopol/M +sevenfold +sevenpence +seven/SMH +seventeen/HMS +seventeenths +sevenths +seventieths +seventy/MSH +severalfold +severalty/M +several/YS +severance/SM +severed/E +severeness/SM +severe/PY +severing/E +severity/MS +Severn/M +severs/E +sever/SGTRD +Severus/M +Seville/M +sewage/MS +Seward/M +sewerage/SM +sewer/GSMD +sewing/SM +sewn +sew/SAGD +sexagenarian/MS +sex/GMDS +sexily +sexiness/MS +sexism/SM +sexist/SM +sexless +sexologist/SM +sexology/MS +sexpot/SM +Sextans/M +sextant/SM +sextet/SM +sextillion/M +Sexton/M +sexton/MS +sextuple/MDG +sextuplet/MS +sexuality/MS +sexualized +sexual/Y +sexy/RTP +Seychelles +Seyfert +Seymour/M +sf +SF +Sgt +shabbily +shabbiness/SM +shabby/RTP +shack/GMDS +shackler/M +shackle's +Shackleton/M +shackle/UGDS +shad/DRJGSM +shaded/U +shadeless +shade/SM +shadily +shadiness/MS +shading/M +shadowbox/SDG +shadower/M +shadow/GSDRM +shadowiness/M +Shadow/M +shadowy/TRP +shady/TRP +Shae/M +Shafer/M +Shaffer/M +shafting/M +shaft/SDMG +shagged +shagginess/SM +shagging +shaggy/TPR +shag/MS +shah/M +shahs +Shaina/M +Shaine/M +shakable/U +shakably/U +shakeable +shakedown/S +shaken/U +shakeout/SM +shaker/M +Shaker/S +Shakespearean/S +Shakespeare/M +Shakespearian +shake/SRGZB +shakeup/S +shakily +shakiness/S +shaking/M +shaky/TPR +shale/SM +shall +shallot/SM +shallowness/SM +shallow/STPGDRY +Shalna/M +Shalne/M +shalom +Shalom/M +shalt +shamanic +shaman/SM +shamble/DSG +shambles/M +shamefaced/Y +shamefulness/S +shameful/YP +shamelessness/SM +shameless/PY +shame/SM +sham/MDSG +shammed +shammer +shamming +shammy's +shampoo/DRSMZG +shampooer/M +shamrock/SM +Shamus/M +Shana/M +Shanan/M +Shanda/M +Shandee/M +Shandeigh/M +Shandie/M +Shandra/M +shandy/M +Shandy/M +Shane/M +Shanghai/GM +Shanghaiing/M +shanghai/SDG +Shanie/M +Shani/M +shank/SMDG +Shannah/M +Shanna/M +Shannan/M +Shannen/M +Shannon/M +Shanon/M +shan't +Shanta/M +Shantee/M +shantis +Shantung/M +shantung/MS +shanty/SM +shantytown/SM +shape/AGDSR +shaped/U +shapelessness/SM +shapeless/PY +shapeliness/S +shapely/RPT +shaper/S +shape's +Shapiro/M +sharable/U +Sharai/M +Shara/M +shard/SM +shareable +sharecropped +sharecropper/MS +sharecropping +sharecrop/S +share/DSRGZMB +shared/U +shareholder/MS +shareholding/S +sharer/M +shareware/S +Shari'a +Sharia/M +sharia/SM +Shari/M +Sharity/M +shark/SGMD +sharkskin/SM +Sharla/M +Sharleen/M +Sharlene/M +Sharline/M +Sharl/M +Sharona/M +Sharon/M +Sharpe/M +sharpen/ASGD +sharpened/U +sharpener/S +sharper/M +sharpie/SM +Sharp/M +sharpness/MS +sharp/SGTZXPYRDN +sharpshooter/M +sharpshooting/M +sharpshoot/JRGZ +sharpy's +Sharron/M +Sharyl/M +Shasta/M +shat +shatter/DSG +shattering/Y +shatterproof +Shaughn/M +Shaula/M +Shauna/M +Shaun/M +shave/DSRJGZ +shaved/U +shaver/M +Shavian +shaving/M +Shavuot/M +Shawano/M +shawl/SDMG +shaw/M +Shaw/M +Shawna/M +Shawnee/SM +Shawn/M +Shaylah/M +Shayla/M +Shaylyn/M +Shaylynn/M +Shay/M +shay/MS +Shayna/M +Shayne/M +Shcharansky/M +sh/DRS +sheaf/MDGS +Shea/M +shearer/M +shear/RDGZS +sheather/M +sheathe/UGSD +sheath/GJMDRS +sheathing/M +sheaths +sheave/SDG +sheaves/M +Sheba/M +shebang/MS +Shebeli/M +Sheboygan/M +she'd +shedding +Shedir/M +sheds +shed's +shed/U +Sheelagh/M +Sheelah/M +Sheela/M +Sheena/M +sheen/MDGS +sheeny/TRSM +sheepdog/SM +sheepfold/MS +sheepherder/MS +sheepishness/SM +sheepish/YP +sheep/M +sheepskin/SM +Sheeree/M +sheerness/S +sheer/PGTYRDS +sheeting/M +sheetlike +sheet/RDMJSG +Sheetrock +Sheffielder/M +Sheffield/RMZ +Sheffie/M +Sheff/M +Sheffy/M +sheikdom/SM +sheikh's +sheik/SM +Sheilah/M +Sheila/M +shekel/MS +Shelagh/M +Shela/M +Shelba/M +Shelbi/M +Shelby/M +Shelden/M +Sheldon/M +shelf/MDGS +Shelia/M +she'll +shellacked +shellacking/MS +shellac/S +shelled/U +Shelley/M +shellfire/SM +shellfish/SM +Shellie/M +Shelli/M +Shell/M +shell/RDMGS +Shelly/M +Shel/MY +shelter/DRMGS +sheltered/U +shelterer/M +Shelton/M +shelve/JRSDG +shelver/M +shelves/M +shelving/M +she/M +Shem/M +Shena/M +Shenandoah/M +shenanigan/SM +Shenyang/M +Sheol/M +Shepard/M +shepherd/DMSG +shepherdess/S +Shepherd/M +Shep/M +Sheppard/M +Shepperd/M +Sheratan/M +Sheraton/M +sherbet/MS +sherd's +Sheree/M +Sheridan/M +Sherie/M +sheriff/SM +Sherill/M +Sherilyn/M +Sheri/M +Sherline/M +Sherlocke/M +sherlock/M +Sherlock/M +Sher/M +Sherman/M +Shermie/M +Sherm/M +Shermy/M +Sherpa/SM +Sherrie/M +Sherri/M +Sherry/M +sherry/MS +Sherwin/M +Sherwood/M +Sherwynd/M +Sherye/M +Sheryl/M +Shetland/S +Shevardnadze/M +shew/GSD +shewn +shh +shiatsu/S +shibboleth/M +shibboleths +shielded/U +shielder/M +shield/MDRSG +Shields/M +shiftily +shiftiness/SM +shiftlessness/S +shiftless/PY +shift/RDGZS +shifty/TRP +Shi'ite +Shiite/SM +Shijiazhuang +Shikoku/M +shill/DJSG +shillelagh/M +shillelaghs +shilling/M +Shillong/M +Shiloh/M +shimmed +shimmer/DGS +shimmery +shimming +shimmy/DSMG +shim/SM +Shina/M +shinbone/SM +shindig/MS +shiner/M +shine/S +shingle/MDRSG +shingler/M +shinguard +shininess/MS +shining/Y +shinned +shinning +shinny/GDSM +shin/SGZDRM +shinsplints +Shintoism/S +Shintoist/MS +Shinto/MS +shiny/PRT +shipboard/MS +shipborne +shipbuilder/M +shipbuild/RGZJ +shipload/SM +shipman/M +shipmate/SM +shipmen +shipment/AMS +shipowner/MS +shippable +shipped/A +shipper/SM +shipping/MS +ship's +shipshape +ship/SLA +shipwreck/GSMD +shipwright/MS +shipyard/MS +Shiraz/M +shire/MS +shirker/M +shirk/RDGZS +Shirlee/M +Shirleen/M +Shirlene/M +Shirley/M +Shirline/M +Shirl/M +Shir/M +shirr/GJDS +shirtfront/S +shirting/M +shirt/JDMSG +shirtless +shirtmake/R +shirtmaker/M +shirtsleeve/MS +shirttail/S +shirtwaist/SM +shit/S! +shitting/! +shitty/RT! +Shiva/M +shiverer/M +shiver/GDR +shivery +shiv/SZRM +shivved +shivving +shlemiel's +Shmuel/M +shoal/SRDMGT +shoat/SM +shocker/M +shocking/Y +Shockley/M +shockproof +shock/SGZRD +shoddily +shoddiness/SM +shoddy/RSTP +shod/U +shoehorn/GSMD +shoeing +shoelace/MS +shoemaker/M +shoemake/RZ +shoe/MS +shoer's +shoeshine/MS +shoestring/MS +shoetree/MS +shogunate/SM +shogun/MS +Shoji/M +Sholom/M +shone +shoo/DSG +shoofly +shook/SM +shooter/M +shootout/MS +shoot/SJRGZ +shopkeeper/M +shopkeep/RGZ +shoplifter/M +shoplifting/M +shoplift/SRDGZ +shop/MS +shopped/M +shopper/M +shoppe/RSDGZJ +shopping/M +shoptalk/SM +shopworn +shorebird/S +shore/DSRGMJ +shoreline/SM +Shorewood/M +shoring/M +shortage/MS +shortbread/MS +shortcake/SM +shortchange/DSG +shortcoming/MS +shortcrust +shortcut/MS +shortcutting +shortener/M +shortening/M +shorten/RDGJ +shortfall/SM +shorthand/DMS +Shorthorn/M +shorthorn/MS +shortie's +shortish +shortlist/GD +Short/M +shortness/MS +short/SGTXYRDNP +shortsightedness/S +shortsighted/YP +shortstop/MS +shortwave/SM +shorty/SM +Shoshana/M +Shoshanna/M +Shoshone/SM +Shostakovitch/M +shotgunned +shotgunner +shotgunning +shotgun/SM +shot/MS +shotted +shotting +shoulder/GMD +shouldn't +should/TZR +shout/SGZRDM +shove/DSRG +shoveler/M +shovelful/MS +shovel/MDRSZG +shover/M +showbiz +showbizzes +showboat/SGDM +showcase/MGSD +showdown/MS +shower/GDM +showery/TR +show/GDRZJS +showgirl/SM +showily +showiness/MS +showing/M +showman/M +showmanship/SM +showmen +shown +showoff/S +showpiece/SM +showplace/SM +showroom/MS +showy/RTP +shpt +shrank +shrapnel/SM +shredded +shredder/MS +shredding +shred/MS +Shreveport/M +shrewdness/SM +shrewd/RYTP +shrew/GSMD +shrewishness/M +shrewish/PY +shrieker/M +shriek/SGDRMZ +shrift/SM +shrike/SM +shrill/DRTGPS +shrillness/MS +shrilly +shrimp/MDGS +shrine/SDGM +shrinkage/SM +shrinker/M +shrinking/U +shrink/SRBG +shrivel/GSD +shriven +shrive/RSDG +Shropshire/M +shroud/GSMD +shrubbed +shrubbery/SM +shrubbing +shrubby/TR +shrub/SM +shrugged +shrugging +shrug/S +shrunk/N +shtick/S +shucker/M +shuck/SGMRD +shucks/S +shudder/DSG +shuddery +shuffleboard/MS +shuffled/A +shuffle/GDSRZ +shuffles/A +shuffling/A +Shulman/M +Shu/M +shunned +shunning +shun/S +shunter/M +shunt/GSRD +Shurlocke/M +Shurlock/M +Shurwood/M +shush/SDG +shutdown/MS +shuteye/SM +shutoff/M +shutout/SM +shut/S +shutterbug/S +shutter/DMGS +shuttering/M +shutting +shuttlecock/MDSG +shuttle/MGDS +shy/DRSGTZY +shyer +shyest +Shylockian/M +Shylock/M +shyness/SM +shyster/SM +Siamese/M +Siam/M +Siana/M +Sianna/M +Sian's +Sibbie/M +Sibby/M +Sibeal/M +Sibelius/M +Sibella/M +Sibelle/M +Sibel/M +Siberia/M +Siberian/S +sibilance/M +sibilancy/M +sibilant/SY +Sibilla/M +Sibley/M +sibling/SM +Sib/M +Sibylla/M +Sibylle/M +sibylline +Sibyl/M +sibyl/SM +Siciliana/M +Sicilian/S +Sicily/M +sickbay/M +sickbed/S +sickener/M +sickening/Y +sicken/JRDG +sicker/Y +sick/GXTYNDRSP +sickie/SM +sickish/PY +sickle/SDGM +sickliness/M +sickly/TRSDPG +sickness/MS +sicko/S +sickout/S +sickroom/SM +sic/S +sidearm/S +sideband/MS +sidebar/MS +sideboard/SM +sideburns +sidecar/MS +sided/A +sidedness +side/ISRM +sidekick/MS +sidelight/SM +sideline/MGDRS +sidelong +sideman/M +sidemen +sidepiece/S +sidereal +sider/FA +sides/A +sidesaddle/MS +sideshow/MS +sidesplitting +sidestepped +sidestepping +sidestep/S +sidestroke/GMSD +sideswipe/GSDM +sidetrack/SDG +sidewalk/MS +sidewall/MS +sidewards +sideway/SM +sidewinder/SM +siding/SM +sidle/DSG +Sid/M +Sidnee/M +Sidney/M +Sidoney/M +Sidonia/M +Sidonnie/M +SIDS +siege/GMDS +Siegel/M +Siegfried/M +Sieglinda/M +Siegmund/M +Siemens/M +Siena/M +sienna/SM +Sierpinski/M +sierra/SM +siesta/MS +sieve/GZMDS +Siffre/M +sifted/UA +sifter/M +sift/GZJSDR +Sigfrid/M +Sigfried/M +SIGGRAPH/M +sigh/DRG +sigher/M +sighs +sighted/P +sighter/M +sighting/S +sight/ISM +sightless/Y +sightliness/UM +sightly/TURP +sightread +sightseeing/S +sightsee/RZ +Sigismond/M +Sigismondo/M +Sigismund/M +Sigismundo/M +Sig/M +sigma/SM +sigmoid +Sigmund/M +signal/A +signaled +signaler/S +signaling +signalization/S +signalize/GSD +signally +signalman/M +signalmen +signals +signal's +signatory/SM +signature/MS +signboard/MS +signed/FU +signer/SC +signet/SGMD +sign/GARDCS +significance/IMS +significantly/I +significant/YS +signification/M +signify/DRSGNX +signing/S +Signora/M +signora/SM +signore/M +signori +signories +signorina/SM +signorine +Signor/M +signor/SFM +signpost/DMSG +sign's +signs/F +Sigrid/M +Sigurd/M +Sigvard/M +Sihanouk/M +Sikhism/MS +Sikh/MS +Sikhs +Sikkimese +Sikkim/M +Sikorsky/M +silage/GMSD +Silas/M +Sileas/M +siled +Sile/M +silence/MZGRSD +silencer/M +silentness/M +silent/TSPRY +Silesia/M +silhouette/GMSD +silica/SM +silicate/SM +siliceous +silicide/M +silicone/SM +silicon/MS +silicoses +silicosis/M +silken/DG +silk/GXNDMS +silkily +silkiness/SM +silkscreen/SM +silkworm/MS +silky/RSPT +silliness/SM +sill/MS +silly/PRST +silo/GSM +siltation/M +silt/MDGS +siltstone/M +silty/RT +Silurian/S +Silvain/M +Silva/M +Silvana/M +Silvan/M +Silvano/M +Silvanus/M +silverer/M +silverfish/MS +Silverman/M +silver/RDYMGS +silversmith/M +silversmiths +Silverstein/M +silverware/SM +silvery/RTP +Silvester/M +Silvia/M +Silvie/M +Silvio/M +Si/M +SIMD +Simenon/M +Simeon/M +simian/S +similar/EY +similarity/EMS +simile/SM +similitude/SME +Simla/M +simmer/GSD +Simmonds/M +Simmons/M +Simmonsville/M +Sim/MS +Simms/M +Simona/M +Simone/M +Simonette/M +simonize/SDG +Simon/M +Simonne/M +simony/MS +simpatico +simper/GDS +simpleminded/YP +simpleness/S +simple/RSDGTP +simpleton/SM +simplex/S +simplicity/MS +simplified/U +simplify/ZXRSDNG +simplistic +simplistically +simply +Simpson/M +simulacrum/M +Simula/M +SIMULA/M +simulate/XENGSD +simulation/ME +simulative +simulator/SEM +simulcast/GSD +simultaneity/SM +simultaneousness/M +simultaneous/YP +Sinai/M +Sinatra/M +since +sincere/IY +sincereness/M +sincerer +sincerest +sincerity/MIS +Sinclair/M +Sinclare/M +Sindbad/M +Sindee/M +Sindhi/M +sinecure/MS +sinecurist/M +sine/SM +sinew/SGMD +sinewy +sinfulness/SM +sinful/YP +Singaporean/S +Singapore/M +sing/BGJZYDR +Singborg/M +singeing +singer/M +Singer/M +singe/S +singing/Y +singlehanded/Y +singleness/SM +single/PSDG +Singleton/M +singleton/SM +singletree/SM +singlet/SM +singsong/GSMD +singularity/SM +singularization/M +singular/SY +Sinhalese/M +sinisterness/M +sinister/YP +sinistral/Y +sinkable/U +sinker/M +sink/GZSDRB +sinkhole/SM +Sinkiang/M +sinking/M +sinlessness/M +sinless/YP +sin/MAGS +sinned +sinner/MS +sinning +sinter/DM +sinuosity/MS +sinuousities +sinuousness/M +sinuous/PY +sinusitis/SM +sinus/MS +sinusoidal/Y +sinusoid/MS +Siobhan/M +Siouxie/M +Sioux/M +siphon/DMSG +siphons/U +sipped +sipper/SM +sipping +sip/S +sired/C +sire/MS +siren/M +sires/C +siring/C +Sirius/M +sirloin/MS +Sir/MS +sirocco/MS +sirred +sirring +sirup's +sir/XGMNDS +sisal/MS +Sisely/M +Sisile/M +sis/S +Sissie/M +sissified +Sissy/M +sissy/TRSM +sister/GDYMS +sisterhood/MS +sisterliness/MS +sisterly/P +sister's/A +Sistine +Sisyphean +Sisyphus/M +sit/AG +sitarist/SM +sitar/SM +sitcom/SM +site/DSJM +sits +sitter/MS +sitting/SM +situate/GNSDX +situational/Y +situationist +situation/M +situ/S +situs/M +Siusan/M +Siva/M +Siward/M +sixfold +sixgun +six/MRSH +sixpence/MS +sixpenny +sixshooter +sixteen/HRSM +sixteenths +sixths +sixth/Y +sixtieths +sixty/SMH +sizableness/M +sizable/P +sized/UA +size/GJDRSBMZ +sizer/M +sizes/A +sizing/M +sizzler/M +sizzle/RSDG +SJ +Sjaelland/M +SK +ska/S +skateboard/SJGZMDR +skater/M +skate/SM +skat/JMDRGZ +skedaddle/GSD +skeet/RMS +skein/MDGS +skeletal/Y +skeleton/MS +Skell/M +Skelly/M +skeptical/Y +skepticism/MS +skeptic/SM +sketchbook/SM +sketcher/M +sketchily +sketchiness/MS +sketch/MRSDZG +sketchpad +sketchy/PRT +skew/DRSPGZ +skewer/GDM +skewing/M +skewness/M +skidded +skidding +skid/S +skiff/GMDS +skiing/M +skilfully +skill/DMSG +skilled/U +skillet/MS +skillfulnesses +skillfulness/MU +skillful/YUP +skilling/M +skimmed +skimmer/MS +skimming/SM +ski/MNJSG +skimp/GDS +skimpily +skimpiness/MS +skimpy/PRT +skim/SM +skincare +skindive/G +skinflint/MS +skinhead/SM +skinless +skinned +Skinner/M +skinner/SM +skinniness/MS +skinning +skinny/TRSP +skin/SM +skintight +Skip/M +skipped +Skipper/M +skipper/SGDM +Skippie/M +skipping +Skipp/RM +Skippy/M +skip/S +Skipton/M +skirmisher/M +skirmish/RSDMZG +skirter/M +skirting/M +skirt/RDMGS +skit/GSMD +skitter/SDG +skittishness/SM +skittish/YP +skittle/SM +skivvy/GSDM +skoal/SDG +Skopje/M +skulduggery/MS +skulker/M +skulk/SRDGZ +skullcap/MS +skullduggery's +skull/SDM +skunk/GMDS +skycap/MS +skydiver/SM +skydiving/MS +Skye/M +skyhook +skyjacker/M +skyjack/ZSGRDJ +Skylab/M +skylarker/M +skylark/SRDMG +Skylar/M +Skyler/M +skylight/MS +skyline/MS +Sky/M +sky/MDRSGZ +skyrocket/GDMS +skyscraper/M +skyscrape/RZ +skyward/S +skywave +skyway/M +skywriter/MS +skywriting/MS +slabbed +slabbing +slab/MS +slacken/DG +slacker/M +slackness/MS +slack/SPGTZXYRDN +Slade/M +slagged +slagging +slag/MS +slain +slake/DSG +slaked/U +slalom/SGMD +slammed +slammer/S +slamming +slam/S +slander/MDRZSG +slanderousness/M +slanderous/PY +slang/SMGD +slangy/TR +slanting/Y +slant/SDG +slantwise +slapdash/S +slaphappy/TR +slap/MS +slapped +slapper +slapping +slapstick/MS +slash/GZRSD +slashing/Y +slater/M +Slater/M +slate/SM +slather/SMDG +slating/M +slat/MDRSGZ +slatted +slattern/MYS +slatting +slaughterer/M +slaughterhouse/SM +slaughter/SJMRDGZ +slave/DSRGZM +slaveholder/SM +slaver/GDM +slavery/SM +Slavic/M +slavishness/SM +slavish/YP +Slav/MS +Slavonic/M +slaw/MS +slay/RGZS +sleaze/S +sleazily +sleaziness/SM +sleazy/RTP +sledded +sledder/S +sledding +sledgehammer/MDGS +sledge/SDGM +sled/SM +sleekness/S +sleek/PYRDGTS +sleeper/M +sleepily +sleepiness/SM +sleeping/M +sleeplessness/SM +sleepless/YP +sleepover/S +sleep/RMGZS +sleepwalker/M +sleepwalk/JGRDZS +sleepwear/M +sleepyhead/MS +sleepy/PTR +sleet/DMSG +sleety/TR +sleeveless +sleeve/SDGM +sleeving/M +sleigh/GMD +sleighs +sleight/SM +sleken/DG +slenderize/DSG +slenderness/MS +slender/RYTP +slept +Slesinger/M +sleuth/GMD +sleuths +slew/DGS +slice/DSRGZM +sliced/U +slicer/M +slicker/M +slickness/MS +slick/PSYRDGTZ +slider/M +slide/S +slid/GZDR +slight/DRYPSTG +slighter/M +slighting/Y +slightness/S +slime/SM +sliminess/S +slimline +slimmed +slimmer/S +slimmest +slimming/S +slimness/S +slim/SPGYD +slimy/PTR +sling/GMRS +slingshot/MS +slings/U +slink/GS +slinky/RT +slipcase/MS +slipcover/GMDS +slipknot/SM +slippage/SM +slipped +slipper/GSMD +slipperiness/S +slippery/PRT +slipping +slipshod +slip/SM +slipstream/MDGS +slipway/SM +slither/DSG +slithery +slit/SM +slitted +slitter/S +slitting +sliver/GSDM +slivery +Sloane/M +Sloan/M +slobber/SDG +slobbery +slob/MS +Slocum/M +sloe/MS +sloganeer/MG +slogan/MS +slogged +slogging +slog/S +sloop/SM +slop/DRSGZ +sloped/U +slope/S +slopped +sloppily +sloppiness/SM +slopping +sloppy/RTP +slosh/GSDM +slothfulness/MS +slothful/PY +sloth/GDM +sloths +slot/MS +slotted +slotting +slouch/DRSZG +sloucher/M +slouchy/RT +slough/GMD +sloughs +Slovakia/M +Slovakian/S +Slovak/S +Slovene/S +Slovenia/M +Slovenian/S +slovenliness/SM +slovenly/TRP +sloven/YMS +slowcoaches +slowdown/MS +slowish +slowness/MS +slow/PGTYDRS +slowpoke/MS +SLR +sludge/SDGM +sludgy/TR +slue/MGDS +sluggard/MS +slugged +slugger/SM +slugging +sluggishness/SM +sluggish/YP +slug/MS +sluice/SDGM +slumberer/M +slumber/MDRGS +slumberous +slumlord/MS +slummed +slummer +slumming +slum/MS +slummy/TR +slump/DSG +slung/U +slunk +slur/MS +slurp/GSD +slurred +slurried/M +slurring +slurrying/M +slurry/MGDS +slushiness/SM +slush/SDMG +slushy/RTP +slut/MS +sluttish +slutty/TR +Sly/M +slyness/MS +sly/RTY +smacker/M +smack/SMRDGZ +smallholders +smallholding/MS +smallish +Small/M +smallness/S +smallpox/SM +small/SGTRDP +smalltalk +smalltime +Smallwood/M +smarmy/RT +smarten/GD +smartness/S +smartypants +smart/YRDNSGTXP +smasher/M +smash/GZRSD +smashing/Y +smashup/S +smattering/SM +smearer/M +smear/GRDS +smeary/TR +smeller/M +smelliness/MS +smell/SBRDG +smelly/TRP +smelter/M +smelt/SRDGZ +Smetana/M +smidgen/MS +smilax/MS +smile/GMDSR +smiley/M +smilies +smiling/UY +smirch/SDG +smirk/GSMD +Smirnoff/M +smite/GSR +smiter/M +smith/DMG +smithereens +Smithfield/M +Smith/M +smiths +Smithsonian/M +Smithson/M +Smithtown/M +smithy/SM +smitten +Smitty/M +Sm/M +smocking/M +smock/SGMDJ +smoggy/TR +smog/SM +smoke/GZMDSRBJ +smokehouse/MS +smokeless +smoker/M +smokescreen/S +smokestack/MS +Smokey/M +smokiness/S +smoking/M +smoky/RSPT +smoldering/Y +smolder/SGD +Smolensk/M +Smollett/M +smooch/SDG +smoothen/DG +smoother/M +smoothie/SM +smoothness/MS +smooths +smooth/TZGPRDNY +smrgsbord/SM +smote +smother/GSD +SMSA/MS +SMTP +Smucker/M +smudge/GSD +smudginess/M +smudgy/TRP +smugged +smugger +smuggest +smugging +smuggle/JZGSRD +smuggler/M +smugness/MS +smug/YSP +smut/SM +Smuts/M +smutted +smuttiness/SM +smutting +smutty/TRP +Smyrna/M +snack/SGMD +snaffle/GDSM +snafu/DMSG +snagged +snagging +snag/MS +snail/GSDM +Snake +snakebird/M +snakebite/MS +snake/DSGM +snakelike +snakeroot/M +snaky/TR +snapback/M +snapdragon/MS +snapped/U +snapper/SM +snappily +snappiness/SM +snapping/U +snappishness/SM +snappish/PY +snappy/PTR +snapshot/MS +snapshotted +snapshotting +snap/US +snare/DSRGM +snarer/M +snarf/JSGD +snarler/M +snarling/Y +snarl/UGSD +snarly/RT +snatch/DRSZG +snatcher/M +snazzily +snazzy/TR +Snead/M +sneaker/MD +sneakily +sneakiness/SM +sneaking/Y +sneak/RDGZS +sneaky/PRT +Sneed/M +sneerer/M +sneer/GMRDJS +sneering/Y +sneeze/SRDG +Snell/M +snicker/GMRD +snick/MRZ +snideness/M +Snider/M +snide/YTSRP +sniffer/M +sniff/GZSRD +sniffle/GDRS +sniffler/M +sniffles/M +snifter/MDSG +snigger's +sniper/M +snipe/SM +snipped +snipper/SM +snippet/SM +snipping +snippy/RT +snip/SGDRZ +snitch/GDS +snit/SM +sniveler/M +snivel/JSZGDR +Sn/M +snobbery/SM +snobbishness/S +snobbish/YP +snobby/RT +snob/MS +Snodgrass/M +snood/SGDM +snooker/GMD +snook/SMRZ +snooper/M +snoop/SRDGZ +Snoopy/M +snoopy/RT +snootily +snootiness/MS +snoot/SDMG +snooty/TRP +snooze/GSD +snore/DSRGZ +snorkel/ZGSRDM +snorter/M +snort/GSZRD +snot/MS +snotted +snottily +snottiness/SM +snotting +snotty/TRP +snout/SGDM +snowball/SDMG +snowbank/SM +Snowbelt/SM +snowbird/SM +snowblower/S +snowboard/GZDRJS +snowbound +snowcapped +snowdrift/MS +snowdrop/MS +snowfall/MS +snowfield/MS +snowflake/MS +snow/GDMS +snowily +snowiness/MS +Snow/M +snowman/M +snowmen +snowmobile/GMDRS +snowplough/M +snowploughs +snowplow/SMGD +snowshed +snowshoeing +snowshoe/MRS +snowshoer/M +snowstorm/MS +snowsuit/S +snowy/RTP +snubbed +snubber +snubbing +snub/SP +snuffbox/SM +snuffer/M +snuff/GZSYRD +snuffle/GDSR +snuffler/M +snuffly/RT +snugged +snugger +snuggest +snugging +snuggle/GDS +snuggly +snugness/MS +snug/SYP +Snyder/M +so +SO +soaker/M +soak/GDRSJ +soapbox/DSMG +soapiness/S +soap/MDRGS +soapstone/MS +soapsud/S +soapy/RPT +soar/DRJSG +soarer/M +soaring/Y +sobbed +sobbing/Y +soberer/M +soberness/SM +sober/PGTYRD +sobriety/SIM +sobriquet/MS +sob/SZR +Soc +soccer/MS +sociabilities +sociability/IM +sociable/S +sociably/IU +socialism/SM +socialistic +socialist/SM +socialite/SM +sociality/M +socialization/SM +socialized/U +socializer/M +socialize/RSDG +socially/U +social/SY +societal/Y +society/MS +socio +sociobiology/M +sociocultural/Y +sociodemographic +socioeconomically +socioeconomic/S +sociolinguistics/M +sociological/MY +sociologist/SM +sociology/SM +sociometric +sociometry/M +sociopath/M +sociopaths +socket/SMDG +sock/GDMS +Socorro/M +Socrates/M +Socratic/S +soc/S +soda/SM +sodded +sodden/DYPSG +soddenness/M +sodding +Soddy/M +sodium/MS +sod/MS +sodomite/MS +sodomize/GDS +Sodom/M +sodomy/SM +soever +sofa/SM +Sofia/M +Sofie/M +softball/MS +softbound +softener/M +soften/ZGRD +softhearted +softie's +softness/MS +soft/SPXTYNR +software/MS +softwood/SM +softy/SM +soggily +sogginess/S +soggy/RPT +Soho/M +soign +soiled/U +soil/SGMD +soire/SM +sojourn/RDZGSM +solace/GMSRD +solacer/M +solaria +solarium/M +solar/S +solder/RDMSZG +soldier/MDYSG +soldiery/MS +sold/RU +solecism/MS +soled/FA +solemness +solemnify/GSD +solemnity/MS +solemnization/SM +solemnize/GSD +solemnness/SM +solemn/PTRY +solenoid/MS +soler/F +soles/IFA +sole/YSP +sol/GSMDR +solicitation/S +solicited/U +solicitor/MS +solicitousness/S +solicitous/YP +solicit/SDG +solicitude/MS +solidarity/MS +solidi +solidification/M +solidify/NXSDG +solidity/S +solidness/SM +solid/STYRP +solidus/M +soliloquies +soliloquize/DSG +soliloquy/M +soling/NM +solipsism/MS +solipsist/S +Solis/M +solitaire/SM +solitary/SP +solitude/SM +Sollie/M +Solly/M +Sol/MY +solo/DMSG +soloist/SM +Solomon/SM +Solon/M +Soloviev/M +solstice/SM +solubility/IMS +soluble/SI +solute/ENAXS +solute's +solution/AME +solvable/UI +solvating +solve/ABSRDZG +solved/EU +solvency/IMS +solvent/IS +solvently +solvent's +solver/MEA +solves/E +solving/E +Solzhenitsyn/M +Somalia/M +Somalian/S +Somali/MS +soma/M +somatic +somberness/SM +somber/PY +sombre +sombrero/SM +somebody'll +somebody/SM +someday +somehow +someone'll +someone/SM +someplace/M +somersault/DSGM +Somerset/M +somerset/S +somersetted +somersetting +Somerville/M +something/S +sometime/S +someway/S +somewhat/S +somewhere/S +some/Z +sommelier/SM +Somme/M +somnambulism/SM +somnambulist/SM +somnolence/MS +somnolent/Y +Somoza/M +sonar/SM +sonata/MS +sonatina/SM +Sondheim/M +Sondra/M +Sonenberg/M +songbag +songbird/SM +songbook/S +songfest/MS +songfulness/M +songful/YP +Songhai/M +Songhua/M +song/MS +songster/MS +songstress/SM +songwriter/SM +songwriting +Sonia/M +sonic/S +Sonja/M +Son/M +sonnet/MDSG +Sonnie/M +Sonni/M +Sonnnie/M +Sonny/M +sonny/SM +Sonoma/M +Sonora/M +sonority/S +sonorousness/SM +sonorous/PY +son/SMY +Sontag/M +sonuvabitch +Sonya/M +Sony/M +soonish +soon/TR +soothe +soother/M +sooth/GZTYSRDMJ +soothingness/M +soothing/YP +sooths +soothsayer/M +soothsay/JGZR +soot/MGDS +sooty/RT +SOP +Sophey/M +Sophia/SM +Sophie/M +Sophi/M +sophism/SM +sophister/M +sophistical +sophisticatedly +sophisticated/U +sophisticate/XNGDS +sophistication/MU +sophistic/S +sophist/RMS +sophistry/SM +Sophoclean +Sophocles/M +sophomore/SM +sophomoric +Sophronia/M +soporifically +soporific/SM +sopped +sopping/S +soppy/RT +soprano/SM +sop/SM +Sopwith/M +sorbet/SM +Sorbonne/M +sorcerer/MS +sorceress/S +sorcery/MS +Sorcha/M +sordidness/SM +sordid/PY +sorehead/SM +soreness/S +Sorensen/M +Sorenson/M +sore/PYTGDRS +sorghum/MS +sorority/MS +sorrel/SM +Sorrentine/M +sorrily +sorriness/SM +sorrower/M +sorrowfulness/SM +sorrowful/YP +sorrow/GRDMS +sorry/PTSR +sorta +sortable +sorted/U +sorter/MS +sort/FSAGD +sortieing +sortie/MSD +sort's +sos +SOS +Sosa/M +Sosanna/M +Soto/M +sot/SM +sottish +soubriquet's +souffl/MS +sough/DG +soughs +sought/U +soulfulness/MS +soulful/YP +soulless/Y +soul/MDS +sound/AUD +soundboard/MS +sounders +sounder's +sounder/U +soundest +sounding/AY +soundings +sounding's +soundless/Y +soundly/U +soundness/UMS +soundproof/GSD +soundproofing/M +sound's +sounds/A +soundtrack/MS +soupon/SM +soup/GMDS +Souphanouvong/M +soupy/RT +source/ASDMG +sourceless +sourdough +sourdoughs +sourish +sourness/MS +sourpuss/MS +sour/TYDRPSG +Sousa/M +sousaphone/SM +sous/DSG +souse +sou/SMH +Southampton/M +southbound +southeastern +southeaster/YM +Southeast/MS +southeast/RZMS +southeastward/S +southerly/S +souther/MY +southerner/M +Southerner/MS +southernisms +southernmost +southern/PZSYR +Southey/M +Southfield/M +southing/M +southland/M +South/M +southpaw/MS +south/RDMG +souths +Souths +southward/S +southwestern +southwester/YM +Southwest/MS +southwest/RMSZ +southwestward/S +souvenir/SM +sou'wester +sovereignty/MS +sovereign/YMS +soviet/MS +Soviet/S +sow/ADGS +sowbelly/M +sowens/M +sower/DS +Soweto/M +sown/A +sox's +soybean/MS +Soyinka/M +soy/MS +Soyuz/M +Spaatz/M +spacecraft/MS +space/DSRGZMJ +spaceflight/S +spaceman/M +spacemen +spaceport/SM +spacer/M +spaceship/MS +spacesuit/MS +spacewalk/GSMD +Spacewar/M +spacewoman +spacewomen +spacey +spacial +spacier +spaciest +spaciness +spacing/M +spaciousness/SM +spacious/PY +Spackle +spade/DSRGM +spadeful/SM +spader/M +spadework/SM +spadices +spadix/M +Spafford/M +spaghetti/SM +Spahn/M +Spain/M +spake +Spalding/M +Spam/M +spa/MS +Span +spandex/MS +spandrels +spangle/GMDS +Spanglish/S +Spaniard/SM +spanielled +spanielling +spaniel/SM +Spanish/M +spanker/M +spanking/M +spank/SRDJG +span/MS +spanned/U +spanner/SM +spanning +SPARC/M +SPARCstation/M +spar/DRMGTS +spareness/MS +spare/PSY +spareribs +sparer/M +sparing/UY +sparker/M +sparkle/DRSGZ +sparkler/M +Sparkman/M +Sparks +spark/SGMRD +sparky/RT +sparling/SM +sparred +sparrer +sparring/U +sparrow/MS +sparseness/S +sparse/YP +sparsity/S +spars/TR +Spartacus/M +Sparta/M +spartan +Spartan/S +spasm/GSDM +spasmodic +spasmodically +spastic/S +spate/SM +spathe/MS +spatiality/M +spatial/Y +spat/MS +spatted +spatter/DGS +spatterdock/M +spatting +spatula/SM +spavin/DMS +spawner/M +spawn/MRDSG +spay/DGS +SPCA +speakable/U +speakeasy/SM +speaker/M +Speaker's +speakership/M +speaking/U +speak/RBGZJS +spearer/M +spearfish/SDMG +spearhead/GSDM +spearmint/MS +spear/MRDGS +Spears +spec'd +specialism/MS +specialist/MS +specialization/SM +specialized/U +specialize/GZDSR +specializing/U +special/SRYP +specialty/MS +specie/MS +specif +specifiability +specifiable +specifiably +specifically +specification/SM +specificity/S +specific/SP +specified/U +specifier/SM +specifies +specify/AD +specifying +specimen/SM +spec'ing +speciousness/SM +specious/YP +speck/GMDS +speckle/GMDS +spec/SM +spectacle/MSD +spectacular/SY +spectator/SM +specter/DMS +specter's/A +spectralness/M +spectral/YP +spectra/M +spectrogram/MS +spectrographically +spectrograph/M +spectrography/M +spectrometer/MS +spectrometric +spectrometry/M +spectrophotometer/SM +spectrophotometric +spectrophotometry/M +spectroscope/SM +spectroscopic +spectroscopically +spectroscopy/SM +spectrum/M +specularity +specular/Y +speculate/VNGSDX +speculation/M +speculative/Y +speculator/SM +sped +speech/GMDS +speechlessness/SM +speechless/YP +speedboat/GSRM +speedboating/M +speeder/M +speedily +speediness/SM +speedometer/MS +speed/RMJGZS +speedster/SM +speedup/MS +speedway/SM +speedwell/MS +speedy/PTR +speer/M +speleological +speleologist/S +speleology/MS +spellbinder/M +spellbind/SRGZ +spellbound +spelldown/MS +spelled/A +speller/M +spelling/M +spell/RDSJGZ +spells/A +spelunker/MS +spelunking/S +Spencerian +Spencer/M +Spence/RM +spender/M +spend/SBJRGZ +spendthrift/MS +Spenglerian +Spengler/M +Spense/MR +Spenserian +Spenser/M +spent/U +spermatophyte/M +spermatozoa +spermatozoon/M +spermicidal +spermicide/MS +sperm/SM +Sperry/M +spew/DRGZJS +spewer/M +SPF +sphagnum/SM +sphere/SDGM +spherical/Y +spheric/S +spherics/M +spheroidal/Y +spheroid/SM +spherule/MS +sphincter/SM +Sphinx/M +sphinx/MS +Spica/M +spic/DGM +spicebush/M +spice/SM +spicily +spiciness/SM +spicule/MS +spicy/PTR +spider/SM +spiderweb/S +spiderwort/M +spidery/TR +Spiegel/M +Spielberg/M +spiel/GDMS +spier/M +spiffy/TDRSG +spigot/MS +spike/GMDSR +Spike/M +spiker/M +spikiness/SM +spiky/PTR +spillage/SM +Spillane/M +spillover/SM +spill/RDSG +spillway/SM +spinach/MS +spinal/YS +spindle/JGMDRS +spindly/RT +spinelessness/M +spineless/YP +spine/MS +spinet/SM +spininess/M +spinnability/M +spinnaker/SM +spinneret/MS +spinner/SM +spinning/SM +Spinoza/M +spin/S +spinsterhood/SM +spinsterish +spinster/MS +spiny/PRT +spiracle/SM +spiraea's +spiral/YDSG +spire/AIDSGF +spirea/MS +spire's +spiritedness/M +spirited/PY +spirit/GMDS +spiritless +spirits/I +spiritualism/SM +spiritualistic +spiritualist/SM +spirituality/SM +spiritual/SYP +spirituous +spirochete/SM +Spiro/M +spiry/TR +spitball/SM +spite/CSDAG +spitefuller +spitefullest +spitefulness/MS +spiteful/PY +spite's/A +spitfire/SM +spit/SGD +spitted +spitting +spittle/SM +spittoon/SM +Spitz/M +splashdown/MS +splasher/M +splash/GZDRS +splashily +splashiness/MS +splashy/RTP +splat/SM +splatted +splatter/DSG +splatting +splayfeet +splayfoot/MD +splay/SDG +spleen/SM +splendidness/M +splendid/YRPT +splendorous +splendor/SM +splenetic/S +splicer/M +splice/RSDGZJ +spline/MSD +splinter/GMD +splintery +splint/SGZMDR +splits/M +split/SM +splittable +splitter/MS +splitting/S +splodge/SM +splotch/MSDG +splotchy/RT +splurge/GMDS +splutterer/M +splutter/RDSG +Sp/M +Spock/M +spoilables +spoilage/SM +spoil/CSZGDR +spoiled/U +spoiler/MC +spoilsport/SM +Spokane/M +spoke/DSG +spoken/U +spokeshave/MS +spokesman/M +spokesmen +spokespeople +spokesperson/S +spokeswoman/M +spokeswomen +spoliation/MCS +spongecake +sponge/GMZRSD +sponger/M +sponginess/S +spongy/TRP +sponsor/DGMS +sponsorship/S +spontaneity/SM +spontaneousness/M +spontaneous/PY +spoof/SMDG +spookiness/MS +spook/SMDG +spooky/PRT +spool/SRDMGZ +spoonbill/SM +spoonerism/SM +spoonful/MS +spoon/GSMD +spoor/GSMD +sporadically +sporadic/Y +spore/DSGM +sporran/MS +sportiness/SM +sporting/Y +sportiveness/M +sportive/PY +sportscast/RSGZM +sportsmanlike/U +sportsman/MY +sportsmanship/MS +sportsmen +sportswear/M +sportswoman/M +sportswomen +sportswriter/S +sport/VGSRDM +sporty/PRT +Sposato/M +spotlessness/MS +spotless/YP +spotlight/GDMS +spotlit +spot/MSC +spotted/U +spotter/MS +spottily +spottiness/SM +spotting/M +spotty/RTP +spousal/MS +spouse/GMSD +spouter/M +spout/SGRD +sprain/SGD +sprang/S +sprat/SM +sprawl/GSD +sprayed/UA +sprayer/M +spray/GZSRDM +sprays/A +spreadeagled +spreader/M +spread/RSJGZB +spreadsheet/S +spreeing +spree/MDS +sprigged +sprigging +sprightliness/MS +sprightly/PRT +sprig/MS +springboard/MS +springbok/MS +springeing +springer/M +Springfield/M +springily +springiness/SM +springing/M +springlike +spring/SGZR +Springsteen/M +springtime/MS +springy/TRP +sprinkle/DRSJZG +sprinkler/DM +sprinkling/M +Sprint/M +sprint/SGZMDR +sprite/SM +spritz/GZDSR +sprocket/DMGS +sprocketed/U +Sproul/M +sprout/GSD +spruce/GMTYRSDP +spruceness/SM +sprue/M +sprung/U +spryness/S +spry/TRY +SPSS +spudded +spudding +spud/MS +Spuds/M +spume/DSGM +spumone's +spumoni/S +spumy/TR +spun +spunk/GSMD +spunky/SRT +spurge/MS +spuriousness/SM +spurious/PY +spur/MS +spurn/RDSG +spurred +spurring +spurt/SGD +sputa +Sputnik +sputnik/MS +sputter/DRGS +sputum/M +spy/DRSGM +spyglass/MS +sq +sqq +sqrt +squabbed +squabber +squabbest +squabbing +squabbler/M +squabble/ZGDRS +squab/SM +squadded +squadding +squadron/MDGS +squad/SM +squalidness/SM +squalid/PRYT +squaller/M +squall/GMRDS +squally/RT +squalor/SM +squamous/Y +squander/GSRD +Squanto +square/GMTYRSDP +squareness/SM +squarer/M +Squaresville/M +squarish +squash/GSRD +squashiness/M +squashy/RTP +squatness/MS +squat/SPY +squatted +squatter/SMDG +squattest +squatting +squawker/M +squawk/GRDMZS +squaw/SM +squeaker/M +squeakily +squeakiness/S +squeak/RDMGZS +squeaky/RPT +squealer/M +squeal/MRDSGZ +squeamishness/SM +squeamish/YP +squeegee/DSM +squeegeeing +squeeze/GZSRDB +squeezer/M +squelcher/M +squelch/GDRS +squelchy/RT +squibbed +Squibb/GM +squibbing +Squibbing/M +squib/SM +squidded +squidding +squid/SM +squiggle/MGDS +squiggly/RT +squinter/M +squint/GTSRD +squinting/Y +squirehood +squire/SDGM +squirm/SGD +squirmy/TR +squirrel/SGYDM +squirter/M +squirt/GSRD +squish/GSD +squishy/RTP +Sr +Srinagar/M +SRO +S's +SS +SSA +SSE +ssh +s's/KI +SSS +SST +SSW +ST +stabbed +stabber/S +stabbing/S +stability/ISM +stabilizability +stabilization/CS +stabilization's +stabilize/CGSD +stabilizer/MS +stableman/M +stablemate +stablemen +stableness/UM +stable/RSDGMTP +stabler/U +stable's/F +stables/F +stablest/U +stabling/M +stably/U +stab/YS +staccato/S +Stacee/M +Stace/M +Stacey/M +Stacia/M +Stacie/M +Staci/M +stackable +stacker/M +stack's +stack/USDG +Stacy/M +stadias +stadia's +stadium/MS +Stael/M +Stafani/M +staff/ADSG +Staffard/M +staffer/MS +Stafford/M +Staffordshire/M +staffroom +staff's +Staford/M +stag/DRMJSGZ +stagecoach/MS +stagecraft/MS +stagehand/MS +stager/M +stage/SM +stagestruck +stagflation/SM +stagged +staggerer/M +stagger/GSJDR +staggering/Y +staggers/M +stagging +staginess/M +staging/M +stagnancy/SM +stagnant/Y +stagnate/NGDSX +stagnation/M +stagy/PTR +Stahl/M +staidness/MS +staid/YRTP +stained/U +stainer/M +stainless/YS +stain/SGRD +staircase/SM +stair/MS +stairway/SM +stairwell/MS +stake/DSGM +stakeholder/S +stakeout/SM +stalactite/SM +stalag/M +stalagmite/SM +stalemate/SDMG +staleness/MS +stale/PGYTDSR +Staley/M +Stalingrad/M +Stalinist +Stalin/SM +stalker/M +stalk/MRDSGZJ +stall/DMSJG +stalled/I +stallholders +stallion/SM +Stallone/M +stalls/I +stalwartness/M +stalwart/PYS +Sta/M +stamen/MS +Stamford/M +stamina/SM +staminate +stammer/DRSZG +stammerer/M +stammering/Y +stampede/MGDRS +stampeder/M +stamped/U +stamper/M +stamp/RDSGZJ +stance/MIS +stancher/M +stanch/GDRST +stanchion/SGMD +standalone +standardization/AMS +standardized/U +standardize/GZDSR +standardizer/M +standardizes/A +standard/YMS +standby +standbys +standee/MS +Standford/M +standing/M +Standish/M +standoffish +standoff/SM +standout/MS +standpipe/MS +standpoint/SM +stand/SJGZR +standstill/SM +Stanfield/M +Stanford/M +Stanislas/M +Stanislaus/M +Stanislavsky/M +Stanislaw/M +stank/S +Stanleigh/M +Stanley/M +Stanly/M +stannic +stannous +Stanton/M +Stanwood/M +Stan/YMS +stanza/MS +staph/M +staphs +staphylococcal +staphylococci +staphylococcus/M +stapled/U +stapler/M +Stapleton/M +staple/ZRSDGM +starboard/SDMG +starchily +starchiness/MS +starch/MDSG +starchy/TRP +stardom/MS +star/DRMGZS +stardust/MS +stare/S +starfish/SM +Stargate/M +stargaze/ZGDRS +staring/U +Starkey/M +Stark/M +starkness/MS +stark/SPGTYRD +Starla/M +Starlene/M +starless +starlet/MS +starlight/MS +starling/MS +Starlin/M +starlit +Star/M +starred +starring +Starr/M +starry/TR +starship +starstruck +start/ASGDR +starter/MS +startle/GDS +startling/PY +startup/SM +starvation/MS +starveling/M +starver/M +starve/RSDG +stash/GSD +stasis/M +stat/DRSGV +statecraft/MS +stated/U +statehood/MS +statehouse/S +Statehouse's +state/IGASD +statelessness/MS +stateless/P +stateliness/MS +stately/PRT +statement/MSA +Staten/M +stater/M +stateroom/SM +stateside +state's/K +states/K +statesmanlike +statesman/MY +statesmanship/SM +statesmen +stateswoman +stateswomen +statewide +statical/Y +static/S +statics/M +stationarity +stationary/S +stationer/M +stationery/MS +stationmaster/M +station/SZGMDR +statistical/Y +statistician/MS +statistic/MS +Statler/M +stator/SM +statuary/SM +statue/MSD +statuesque/YP +statuette/MS +stature/MS +status/SM +statute/SM +statutorily +statutory/P +Stauffer/M +staunchness/S +staunch/PDRSYTG +stave/DGM +Stavro/MS +stay/DRGZS +stayer/M +std +STD +stdio +steadfastness/MS +steadfast/PY +steadily/U +steadiness's +steadiness/US +steading/M +stead/SGDM +steady/DRSUTGP +steakhouse/SM +steak/SM +stealer/M +stealing/M +steal/SRHG +stealthily +stealthiness/MS +stealth/M +stealths +stealthy/PTR +steamboat/MS +steamer/MDG +steamfitter/S +steamfitting/S +steamily +steaminess/SM +steamroller/DMG +steamroll/GZRDS +steam/SGZRDMJ +steamship/SM +steamy/RSTP +Stearne/M +Stearn/SM +steed/SM +Steele/M +steeliness/SM +steelmaker/M +steel/SDMGZ +steelworker/M +steelwork/ZSMR +steelyard/MS +steely/TPRS +Steen/M +steepen/GD +steeper/M +steeplebush/M +steeplechase/GMSD +steeplejack/MS +steeple/MS +steepness/S +steep/SYRNDPGTX +steerage/MS +steerer/M +steer/SGBRDJ +steersman/M +steersmen +steeves +Stefa/M +Stefania/M +Stefanie/M +Stefan/M +Stefano/M +Steffane/M +Steffen/M +Steffie/M +Steffi/M +stegosauri +stegosaurus/S +Steinbeck/SM +Steinberg/M +Steinem/M +Steiner/M +Steinmetz/M +Stein/RM +stein/SGZMRD +Steinway/M +Stella/M +stellar +stellated +Ste/M +stemless +stemmed/U +stemming +stem/MS +stemware/MS +stench/GMDS +stenciler/M +stencil/GDRMSZ +stencillings +Stendhal/M +Stendler/M +Stengel/M +stenographer/SM +stenographic +stenography/SM +steno/SM +stenotype/M +stentorian +stepbrother/MS +stepchild/M +stepchildren +stepdaughter/MS +stepfather/SM +Stepha/M +Stephana/M +Stephanie/M +Stephani/M +Stephan/M +Stephannie/M +Stephanus/M +Stephenie/M +Stephen/MS +Stephenson/M +Stephie/M +Stephi/M +Stephine/M +stepladder/SM +step/MIS +stepmother/SM +stepparent/SM +stepper/M +steppe/RSDGMZ +steppingstone/S +stepsister/SM +stepson/SM +stepwise +stereographic +stereography/M +stereo/GSDM +stereophonic +stereoscope/MS +stereoscopic +stereoscopically +stereoscopy/M +stereotype/GMZDRS +stereotypic +stereotypical/Y +sterile +sterility/SM +sterilization/SM +sterilized/U +sterilize/RSDGZ +sterilizes/A +Sterling/M +sterling/MPYS +sterlingness/M +sternal +Sternberg/M +Sterne/M +Stern/M +sternness/S +Sterno +stern/SYRDPGT +sternum/SM +steroidal +steroid/MS +stertorous +Stesha/M +stethoscope/SM +stet/MS +stetson/MS +Stetson/SM +stetted +stetting +Steuben/M +Stevana/M +stevedore/GMSD +Steve/M +Stevena/M +Steven/MS +Stevenson/M +Stevie/M +Stevy/M +steward/DMSG +stewardess/SM +Steward/M +stewardship/MS +Stewart/M +stew/GDMS +st/GBJ +sticker/M +stickily +stickiness/SM +stickleback/MS +stickle/GZDR +stickler/M +stick/MRDSGZ +stickpin/SM +stickup/SM +sticky/GPTDRS +Stieglitz/M +stiffen/JZRDG +stiff/GTXPSYRND +stiffness/MS +stifle/GJRSD +stifler/M +stifling/Y +stigma/MS +stigmata +stigmatic/S +stigmatization/C +stigmatizations +stigmatization's +stigmatize/DSG +stigmatized/U +stile/GMDS +stiletto/MDSG +stillbirth/M +stillbirths +stillborn/S +stiller/MI +stillest +Stillman/M +Stillmann/M +stillness/MS +still/RDIGS +Stillwell/M +stilted/PY +stilt/GDMS +Stilton/MS +Stimson/M +stimulant/MS +stimulated/U +stimulate/SDVGNX +stimulation/M +stimulative/S +stimulator/M +stimulatory +stimuli/M +stimulus/MS +Stine/M +stinger/M +sting/GZR +stingily +stinginess/MS +stinging/Y +stingray/MS +stingy/RTP +stinkbug/S +stinker/M +stink/GZRJS +stinking/Y +stinkpot/M +Stinky/M +stinky/RT +stinter/M +stinting/U +stint/JGRDMS +stipendiary +stipend/MS +stipple/JDRSG +stippler/M +stipulate/XNGSD +stipulation/M +Stirling/M +stirred/U +stirrer/SM +stirring/YS +stirrup/SM +stir/S +stitch/ASDG +stitcher/M +stitchery/S +stitching/MS +stitch's +St/M +stoat/SM +stochastic +stochastically +stochasticity +stockade/SDMG +stockbreeder/SM +stockbroker/MS +stockbroking/S +stocker/SM +Stockhausen/M +stockholder/SM +Stockholm/M +stockily +stockiness/SM +stockinet's +stockinette/S +stocking/MDS +stockist/MS +stockpile/GRSD +stockpiler/M +stockpot/MS +stockroom/MS +stock's +stock/SGAD +stocktaking/MS +Stockton/M +stockyard/SM +stocky/PRT +Stoddard/M +stodge/M +stodgily +stodginess/S +stodgy/TRP +stogy/SM +stoical/Y +stoichiometric +stoichiometry/M +stoicism/SM +Stoicism/SM +stoic/MS +Stoic/MS +stoke/DSRGZ +stoker/M +stokes/M +Stokes/M +STOL +stole/MDS +stolen +stolidity/S +stolidness/S +stolid/PTYR +stolon/SM +stomachache/MS +stomacher/M +stomach/RSDMZG +stomachs +stomp/DSG +stonecutter/SM +stone/DSRGM +Stonehenge/M +stoneless +Stone/M +stonemason/MS +stoner/M +stonewall/GDS +stoneware/MS +stonewashed +stonework/SM +stonewort/M +stonily +stoniness/MS +stony/TPR +stood +stooge/SDGM +stool/SDMG +stoop/SDG +stopcock/MS +stopgap/SM +stoplight/SM +stopover/MS +stoppable/U +stoppage/MS +Stoppard/M +stopped/U +stopper/GMDS +stopping/M +stopple/GDSM +stop's +stops/M +stop/US +stopwatch/SM +storage/SM +store/ADSRG +storefront/SM +storehouse/MS +storekeeper/M +storekeep/ZR +storeroom/SM +store's +stork/SM +stormbound +stormer/M +Stormie/M +stormily +Stormi/M +storminess/S +Storm/M +storm/SRDMGZ +stormtroopers +Stormy/M +stormy/PTR +storyboard/MDSG +storybook/MS +story/GSDM +storyline +storyteller/SM +storytelling/MS +Stouffer/M +stoup/SM +stouten/DG +stouthearted +Stout/M +stoutness/MS +stout/STYRNP +stove/DSRGM +stovepipe/SM +stover/M +stowage/SM +stowaway/MS +Stowe/M +stow/GDS +Strabo/M +straddler/M +straddle/ZDRSG +Stradivari/SM +Stradivarius/M +strafe/GRSD +strafer/M +straggle/GDRSZ +straggly/RT +straightaway/S +straightedge/MS +straightener/M +straighten/ZGDR +straightforwardness/MS +straightforward/SYP +straightjacket's +straightness/MS +straight/RNDYSTXGP +straightway/S +strain/ASGZDR +strained/UF +strainer/MA +straining/F +strains/F +straiten/DG +straitjacket/GDMS +straitlaced +straitness/M +strait/XTPSMGYDNR +stranded/P +strand/SDRG +strangeness/SM +strange/PYZTR +stranger/GMD +stranglehold/MS +strangle/JDRSZG +strangles/M +strangulate/NGSDX +strangulation/M +strapless/S +strapped/U +strapping/S +strap's +strap/US +Strasbourg/M +stratagem/SM +strata/MS +strategical/Y +strategic/S +strategics/M +strategist/SM +strategy/SM +Stratford/M +strati +stratification/M +stratified/U +stratify/NSDGX +stratigraphic +stratigraphical +stratigraphy/M +stratosphere/SM +stratospheric +stratospherically +stratum/M +stratus/M +Strauss +Stravinsky/M +strawberry/SM +strawflower/SM +straw/SMDG +strayer/M +stray/GSRDM +streak/DRMSGZ +streaker/M +streaky/TR +streamed/U +streamer/M +stream/GZSMDR +streaming/M +streamline/SRDGM +streetcar/MS +streetlight/SM +street/SMZ +streetwalker/MS +streetwise +Streisand/M +strengthen/AGDS +strengthener/MS +strength/NMX +strengths +strenuousness/SM +strenuous/PY +strep/MS +streptococcal +streptococci +streptococcus/M +streptomycin/SM +stress/DSMG +stressed/U +stressful/YP +stretchability/M +stretchable/U +stretch/BDRSZG +stretcher/DMG +stretchy/TRP +strew/GDHS +strewn +striae +stria/M +striate/DSXGN +striated/U +striation/M +stricken +Strickland/M +strict/AF +stricter +strictest +strictly +strictness/S +stricture/SM +stridden +stridency/S +strident/Y +strider/M +stride/RSGM +strife/SM +strikebreaker/M +strikebreaking/M +strikebreak/ZGR +strikeout/S +striker/M +strike/RSGZJ +striking/Y +Strindberg/M +stringed +stringency/S +stringent/Y +stringer/MS +stringiness/SM +stringing/M +string's +string/SAG +stringy/RTP +striper/M +stripe/SM +strip/GRDMS +stripling/M +stripped/U +stripper/MS +stripping +stripteaser/M +striptease/SRDGZM +stripy/RT +strive/JRSG +striven +striver/M +strobe/SDGM +stroboscope/SM +stroboscopic +strode +stroke/ZRSDGM +stroking/M +stroller/M +stroll/GZSDR +Stromberg/M +Stromboli/M +Strom/M +strongbow +strongbox/MS +Strongheart/M +stronghold/SM +strongish +Strong/M +strongman/M +strongmen +strongroom/MS +strong/YRT +strontium/SM +strophe/MS +strophic +stropped +stropping +strop/SM +strove +struck +structuralism/M +structuralist/SM +structural/Y +structured/AU +structureless +structures/A +structure/SRDMG +structuring/A +strudel/MS +struggle/GDRS +struggler/M +strummed +strumming +strumpet/GSDM +strum/S +strung/UA +strut/S +strutted +strutter/M +strutting +strychnine/MS +Stuart/MS +stubbed/M +stubbing +Stubblefield/MS +stubble/SM +stubbly/RT +stubbornness/SM +stubborn/SGTYRDP +stubby/SRT +stub/MS +stuccoes +stucco/GDM +stuck/U +studbook/SM +studded +studding/SM +Studebaker/M +studentship/MS +student/SM +studiedness/M +studied/PY +studier/SM +studio/MS +studiousness/SM +studious/PY +stud/MS +study/AGDS +stuffily +stuffiness/SM +stuffing/M +stuff/JGSRD +stuffy/TRP +stultify/NXGSD +Stu/M +stumble/GZDSR +stumbling/Y +stumpage/M +stumper/M +stump/RDMSG +stumpy/RT +stung +stunk +stunned +stunner/M +stunning/Y +stun/S +stunted/P +stunt/GSDM +stupefaction/SM +stupefy/DSG +stupendousness/M +stupendous/PY +stupidity/SM +stupidness/M +stupid/PTYRS +stupor/MS +sturdily +sturdiness/SM +sturdy/SRPT +sturgeon/SM +Sturm/M +stutter/DRSZG +Stuttgart/M +Stuyvesant/M +sty/DSGM +Stygian +styled/A +style/GZMDSR +styles/A +styli +styling/A +stylishness/S +stylish/PY +stylistically +stylistic/S +stylist/MS +stylites +stylization/MS +stylize/DSG +stylos +stylus/SM +stymieing +stymie/SD +stymy's +styptic/S +styrene/MS +Styrofoam/S +Styx/M +suable +Suarez/M +suasion/EMS +suaveness/S +suave/PRYT +suavity/SM +subaltern/SM +subarctic/S +subareas +Subaru/M +subassembly/M +subatomic/S +subbasement/SM +subbed +subbing +subbranch/S +subcaste/M +subcategorizing +subcategory/SM +subchain +subclassifications +subclass/MS +subclauses +subcommand/S +subcommittee/SM +subcompact/S +subcomponent/MS +subcomputation/MS +subconcept +subconsciousness/SM +subconscious/PSY +subconstituent +subcontinental +subcontinent/MS +subcontractor/SM +subcontract/SMDG +subcultural +subculture/GMDS +subcutaneous/Y +subdirectory/S +subdistrict/M +subdivide/SRDG +subdivision/SM +subdued/Y +subdue/GRSD +subduer/M +subexpression/MS +subfamily/SM +subfield/MS +subfile/SM +subfreezing +subgoal/SM +subgraph +subgraphs +subgroup/SGM +subharmonic/S +subheading/M +subhead/MGJS +subhuman/S +subindex/M +subinterval/MS +subj +subject/GVDMS +subjection/SM +subjectiveness/M +subjective/PSY +subjectivist/S +subjectivity/SM +subjoin/DSG +subjugate/NGXSD +subjugation/M +subjunctive/S +sublayer +sublease/DSMG +sublet/S +subletting +sublimate/GNSDX +sublimation/M +sublime/GRSDTYP +sublimeness/M +sublimer/M +subliminal/Y +sublimity/SM +sublist/SM +subliterary +sublunary +submachine +submarginal +submarine/MZGSRD +submariner/M +submerge/DSG +submergence/SM +submerse/XNGDS +submersible/S +submersion/M +submicroscopic +submission/SAM +submissiveness/MS +submissive/PY +submit/SA +submittable +submittal +submitted/A +submitter/S +submitting/A +submode/S +submodule/MS +sub/MS +subnational +subnet/SM +subnetwork/SM +subnormal/SY +suboptimal +suborbital +suborder/MS +subordinately/I +subordinates/I +subordinate/YVNGXPSD +subordination/IMS +subordinator +subornation/SM +suborn/GSD +subpage +subparagraph/M +subpart/MS +subplot/MS +subpoena/GSDM +subpopulation/MS +subproblem/SM +subprocess/SM +subprofessional/S +subprogram/SM +subproject +subproof/SM +subquestion/MS +subrange/SM +subregional/Y +subregion/MS +subrogation/M +subroutine/SM +subsample/MS +subschema/MS +subscribe/ASDG +subscriber/SM +subscripted/U +subscription/MS +subscript/SGD +subsection/SM +subsegment/SM +subsentence +subsequence/MS +subsequent/SYP +subservience/SM +subservient/SY +subset/MS +subsidence/MS +subside/SDG +subsidiarity +subsidiary/MS +subsidization/MS +subsidized/U +subsidizer/M +subsidize/ZRSDG +subsidy/MS +subsistence/MS +subsistent +subsist/SGD +subsocietal +subsoil/DRMSG +subsonic +subspace/MS +subspecies/M +substance/MS +substandard +substantially/IU +substantialness/M +substantial/PYS +substantiated/U +substantiate/VGNSDX +substantiation/MFS +substantiveness/M +substantive/PSYM +substantivity +substation/MS +substerilization +substitutability +substituted/U +substitute/NGVBXDRS +substitutionary +substitution/M +substitutive/Y +substrata +substrate/MS +substratum/M +substring/S +substructure/SM +subsume/SDG +subsurface/S +subsystem/MS +subtable/S +subtask/SM +subteen/SM +subtenancy/MS +subtenant/SM +subtend/DS +subterfuge/SM +subterranean/SY +subtest +subtext/SM +subtitle/DSMG +subtleness/M +subtle/RPT +subtlety/MS +subtly/U +subtopic/SM +subtotal/GSDM +subtracter/M +subtraction/MS +subtract/SRDZVG +subtrahend/SM +subtree/SM +subtropical +subtropic/S +subtype/MS +subunit/SM +suburbanite/MS +suburbanization/MS +suburbanized +suburbanizing +suburban/S +suburbia/SM +suburb/MS +subvention/MS +subversion/SM +subversiveness/MS +subversive/SPY +subverter/M +subvert/SGDR +subway/MDGS +subzero +succeeder/M +succeed/GDRS +successfulness/M +successful/UY +succession/SM +successiveness/M +successive/YP +success/MSV +successor/MS +successorship +succinctness/SM +succinct/RYPT +succored/U +succorer/M +succor/SGZRDM +succotash/SM +succubus/M +succulence/SM +succulency/MS +succulent/S +succumb/SDG +such +suchlike +sucker/DMG +suck/GZSDRB +suckle/SDJG +suckling/M +Sucre/M +sucrose/MS +suction/SMGD +Sudanese/M +Sudanic/M +Sudan/M +suddenness/SM +sudden/YPS +Sudetenland/M +sud/S +suds/DSRG +sudsy/TR +sued/DG +suede/SM +Suellen/M +Sue/M +suer/M +suet/MS +Suetonius/M +suety +sue/ZGDRS +Suez/M +sufferance/SM +sufferer/M +suffering/M +suffer/SJRDGZ +suffice/GRSD +sufficiency/SIM +sufficient/IY +suffixation/S +suffixed/U +suffix/GMRSD +suffocate/XSDVGN +suffocating/Y +Suffolk/M +suffragan/S +suffrage/MS +suffragette/MS +suffragist/SM +suffuse/VNGSDX +suffusion/M +Sufi/M +Sufism/M +sugarcane/S +sugarcoat/GDS +sugarless +sugarplum/MS +sugar/SJGMD +sugary/TR +suggest/DRZGVS +suggester/M +suggestibility/SM +suggestible +suggestion/MS +suggestiveness/MS +suggestive/PY +sugillate +Suharto/M +suicidal/Y +suicide/GSDM +Sui/M +suitability/SU +suitableness/S +suitable/P +suitably/U +suitcase/MS +suited/U +suite/SM +suiting/M +suit/MDGZBJS +suitor/SM +Sukarno/M +Sukey/M +Suki/M +sukiyaki/SM +Sukkoth's +Sukkot/S +Sula/M +Sulawesi/M +Suleiman/M +sulfaquinoxaline +sulfa/S +sulfate/MSDG +sulfide/S +sulfite/M +sulfonamide/SM +sulfur/DMSG +sulfuric +sulfurousness/M +sulfurous/YP +sulk/GDS +sulkily +sulkiness/S +sulky/RSPT +Sulla/M +sullenness/MS +sullen/TYRP +sullied/U +Sullivan/M +sully/GSD +Sully/M +sulphate/SM +sulphide/MS +sulphuric +sultana/SM +sultanate/MS +sultan/SM +sultrily +sultriness/SM +sultry/PRT +Sulzberger/M +sumach's +sumac/SM +Sumatra/M +Sumatran/S +sumer/F +Sumeria/M +Sumerian/M +summability/M +summable +summand/MS +summarily +summarization/MS +summarized/U +summarize/GSRDZ +summarizer/M +summary/MS +summation/FMS +summed +Summerdale/M +summerhouse/MS +summer/SGDM +Summer/SM +summertime/MS +summery/TR +summing +summit/GMDS +summitry/MS +summoner/M +summon/JSRDGZ +summons/MSDG +sum/MRS +Sumner/M +sumo/SM +sump/SM +sumptuousness/SM +sumptuous/PY +Sumter/M +Sun +sunbaked +sunbathe +sunbather/M +sunbathing/M +sunbaths +sunbath/ZRSDG +sunbeam/MS +Sunbelt/M +sunblock/S +sunbonnet/MS +sunburn/GSMD +sunburst/MS +suncream +sundae/MS +Sundanese/M +Sundas +Sunday/MS +sunder/SDG +sundial/MS +sundowner/M +sundown/MRDSZG +sundris +sundry/S +sunfish/SM +sunflower/MS +sunglass/MS +Sung/M +sung/U +sunk/SN +sunlamp/S +sunless +sunlight/MS +sunlit +sun/MS +sunned +Sunni/MS +sunniness/SM +sunning +Sunnite/SM +Sunny/M +sunny/RSTP +Sunnyvale/M +sunrise/GMS +sunroof/S +sunscreen/S +sunset/MS +sunsetting +sunshade/MS +Sunshine/M +sunshine/MS +sunshiny +sunspot/SM +sunstroke/MS +suntanned +suntanning +suntan/SM +sunup/MS +superabundance/MS +superabundant +superannuate/GNXSD +superannuation/M +superbness/M +superb/YRPT +supercargoes +supercargo/M +supercharger/M +supercharge/SRDZG +superciliousness/SM +supercilious/PY +supercity/S +superclass/M +supercomputer/MS +supercomputing +superconcept +superconducting +superconductivity/SM +superconductor/SM +supercooled +supercooling +supercritical +superdense +super/DG +superego/SM +supererogation/MS +supererogatory +superficiality/S +superficial/SPY +superfine +superfix/M +superfluity/MS +superfluousness/S +superfluous/YP +superheat/D +superheroes +superhero/SM +superhighway/MS +superhumanness/M +superhuman/YP +superimpose/SDG +superimposition/MS +superintendence/S +superintendency/SM +superintendent/SM +superintend/GSD +superiority/MS +Superior/M +superior/SMY +superlativeness/M +superlative/PYS +superlunary +supermachine +superman/M +Superman/M +supermarket/SM +supermen +supermodel +supermom/S +supernal +supernatant +supernaturalism/M +supernaturalness/M +supernatural/SPY +supernormal/Y +supernovae +supernova/MS +supernumerary/S +superordinate +superpose/BSDG +superposition/MS +superpower/MS +superpredicate +supersaturate/XNGDS +supersaturation/M +superscribe/GSD +superscript/DGS +superscription/SM +superseder/M +supersede/SRDG +supersensitiveness/M +supersensitive/P +superset/MS +supersonically +supersonic/S +supersonics/M +superstar/SM +superstition/SM +superstitious/YP +superstore/S +superstructural +superstructure/SM +supertanker/SM +supertitle/MSDG +superuser/MS +supervene/GSD +supervention/S +supervised/U +supervise/SDGNX +supervision/M +supervisor/SM +supervisory +superwoman/M +superwomen +supineness/M +supine/PSY +supper/DMG +supplanter/M +supplant/SGRD +supplemental/S +supplementary/S +supplementation/S +supplementer/M +supplement/SMDRG +suppleness/SM +supple/SPLY +suppliant/S +supplicant/MS +supplicate/NGXSD +supplication/M +supplier/AM +suppl/RDGT +supply/MAZGSRD +supportability/M +supportable/UI +supported/U +supporter/M +supporting/Y +supportive/Y +support/ZGVSBDR +supposed/Y +suppose/SRDBJG +supposition/MS +suppository/MS +suppressant/S +suppressed/U +suppressible/I +suppression/SM +suppressive/P +suppressor/S +suppress/VGSD +suppurate/NGXSD +suppuration/M +supp/YDRGZ +supra +supranational +supranationalism/M +suprasegmental +supremacist/SM +supremacy/SM +supremal +supremeness/M +supreme/PSRTY +supremo/M +sup/RSZ +supt +Supt/M +Surabaya/M +Surat/M +surcease/DSMG +surcharge/MGSD +surcingle/MGSD +surd/M +sured/I +surefire +surefooted +surely +sureness/MS +sureness's/U +sure/PU +surer/I +surest +surety/SM +surfaced/UA +surface/GSRDPZM +surfacer/AMS +surfaces/A +surfacing/A +surfactant/SM +surfboard/MDSG +surfeit/SDRMG +surfer/M +surfing/M +surf/SJDRGMZ +surged/A +surge/GYMDS +surgeon/MS +surgery/MS +surges/A +surgical/Y +Suriname +Surinamese +Surinam's +surliness/SM +surly/TPR +surmiser/M +surmise/SRDG +surmountable/IU +surmount/DBSG +surname/GSDM +surpassed/U +surpass/GDS +surpassing/Y +surplice/SM +surplus/MS +surplussed +surplussing +surprised/U +surprise/MGDRSJ +surpriser/M +surprising/YU +surrealism/MS +surrealistic +surrealistically +surrealist/S +surreality +surreal/S +surrender/DRSG +surrenderer/M +surreptitiousness/S +surreptitious/PY +surrey/SM +surrogacy/S +surrogate/SDMNG +surrogation/M +surrounding/M +surround/JGSD +surtax/SDGM +surveillance/SM +surveillant +surveyed/A +surveying/M +survey/JDSG +surveyor/MS +surveys/A +survivability/M +survivable/U +survivalist/S +survival/MS +survive/SRDBG +survivor/MS +survivorship/M +Surya/M +Sus +Susana/M +Susanetta/M +Susan/M +Susannah/M +Susanna/M +Susanne/M +Susann/M +susceptibilities +susceptibility/IM +susceptible/I +Susette/M +sushi/SM +Susie/M +Susi/M +suspected/U +suspecter/M +suspect/GSDR +suspecting/U +suspend/DRZGS +suspended/UA +suspender/M +suspenseful +suspense/MXNVS +suspension/AM +suspensive/Y +suspensor/M +suspicion/GSMD +suspiciousness/M +suspicious/YP +Susquehanna/M +Sussex/M +sustainability +sustainable/U +sustain/DRGLBS +sustainer/M +sustainment/M +sustenance/MS +Susy/M +Sutherland/M +Sutherlan/M +sutler/MS +Sutton/M +suture/GMSD +SUV +Suva/M +Suwanee/M +Suzanna/M +Suzanne/M +Suzann/M +suzerain/SM +suzerainty/MS +Suzette/M +Suzhou/M +Suzie/M +Suzi/M +Suzuki/M +Suzy/M +Svalbard/M +svelte/RPTY +Svend/M +Svengali +Sven/M +Sverdlovsk/M +Svetlana/M +SW +swabbed +swabbing +swabby/S +Swabian/SM +swab/MS +swaddle/SDG +swagged +swagger/GSDR +swagging +swag/GMS +Swahili/MS +swain/SM +SWAK +swallower/M +swallow/GDRS +swallowtail/SM +swam +swami/SM +swamper/M +swampland/MS +swamp/SRDMG +swampy/RPT +Swanee/M +swankily +swankiness/MS +swank/RDSGT +swanky/PTRS +swanlike +swan/MS +swanned +swanning +Swansea/M +Swanson/M +swappable/U +swapped +swapper/SM +swapping +swap/S +sward/MSGD +swarmer/M +swarm/GSRDM +swarthiness/M +Swarthmore/M +swarthy/RTP +swart/P +Swartz/M +swashbuckler/SM +swashbuckling/S +swash/GSRD +swastika/SM +SWAT +swatch/MS +swathe +swather/M +swaths +swath/SRDMGJ +swat/S +swatted +swatter/MDSG +swatting +swayback/SD +sway/DRGS +swayer/M +Swaziland/M +Swazi/SM +swearer/M +swear/SGZR +swearword/SM +sweatband/MS +sweater/M +sweatily +sweatiness/M +sweatpants +sweat/SGZRM +sweatshirt/S +sweatshop/MS +sweaty/TRP +Swedenborg/M +Sweden/M +swede/SM +Swede/SM +Swedish +Swed/MN +Sweeney/SM +sweeper/M +sweepingness/M +sweeping/PY +sweep/SBRJGZ +sweeps/M +sweepstakes +sweepstake's +sweetbread/SM +sweetbrier/SM +sweetcorn +sweetened/U +sweetener/M +sweetening/M +sweeten/ZDRGJ +sweetheart/MS +sweetie/MS +sweeting/M +sweetish/Y +Sweet/M +sweetmeat/MS +sweetness/MS +sweetshop +sweet/TXSYRNPG +swellhead/DS +swelling/M +swell/SJRDGT +swelter/DJGS +sweltering/Y +Swen/M +Swenson/M +swept +sweptback +swerve/GSD +swerving/U +swifter/M +swift/GTYRDPS +Swift/M +swiftness/MS +swigged +swigging +swig/SM +swill/SDG +swimmer/MS +swimming/MYS +swim/S +swimsuit/MS +Swinburne/M +swindle/GZRSD +swindler/M +swineherd/MS +swine/SM +swingeing +swinger/M +swinging/Y +swing/SGRZJB +swingy/R +swinishness/M +swinish/PY +Swink/M +swipe/DSG +swirling/Y +swirl/SGRD +swirly/TR +swish/GSRD +swishy/R +swiss +Swiss/S +switchback/GDMS +switchblade/SM +switchboard/MS +switcher/M +switch/GBZMRSDJ +switchgear +switchman/M +switchmen/M +switchover/M +Switzerland/M +Switzer/M +Switz/MR +swivel/GMDS +swizzle/RDGM +swob's +swollen +swoon/GSRD +swooning/Y +swoop/RDSG +swoosh/GSD +swop's +sword/DMSG +swordfish/SM +swordplayer/M +swordplay/RMS +swordsman/M +swordsmanship/SM +swordsmen +swordtail/M +swore +sworn +swot/S +swum +swung +s/XJBG +sybarite/MS +sybaritic +Sybila/M +Sybilla/M +Sybille/M +Sybil/M +Sybyl/M +sycamore/SM +sycophancy/S +sycophantic +sycophantically +sycophant/SYM +Sydelle/M +Sydel/M +Syd/M +Sydney/M +Sykes/M +Sylas/M +syllabicate/GNDSX +syllabication/M +syllabicity +syllabic/S +syllabification/M +syllabify/GSDXN +syllabi's +syllable/SDMG +syllabub/M +syllabus/MS +syllabusss +syllogism/MS +syllogistic +Sylow/M +sylphic +sylphlike +sylph/M +sylphs +Sylvania/M +Sylvan/M +sylvan/S +Sylvester/M +Sylvia/M +Sylvie/M +Syman/M +symbiont/M +symbioses +symbiosis/M +symbiotic +symbol/GMDS +symbolical/Y +symbolics/M +symbolic/SM +symbolism/MS +symbolist/MS +symbolization/MAS +symbolized/U +symbolize/GZRSD +symbolizes/A +Symington/M +symmetric +symmetrically/U +symmetricalness/M +symmetrical/PY +symmetrization/M +symmetrizing +symmetry/MS +Symon/M +sympathetically/U +sympathetic/S +sympathized/U +sympathizer/M +sympathize/SRDJGZ +sympathizing/MYUS +sympathy/MS +symphonic +symphonists +symphony/MS +symposium/MS +symptomatic +symptomatically +symptomatology/M +symptom/MS +syn +synagogal +synagogue/SM +synapse/SDGM +synaptic +synchronism/M +synchronization's +synchronization/SA +synchronize/AGCDS +synchronized/U +synchronizer/MS +synchronousness/M +synchronous/YP +synchrony +synchrotron/M +syncopate/VNGXSD +syncopation/M +syncope/MS +sync/SGD +syndicalist +syndicate/XSDGNM +syndic/SM +syndrome/SM +synergism/SM +synergistic +synergy/MS +synfuel/S +Synge/M +synod/SM +synonymic +synonymous/Y +synonym/SM +synonymy/MS +synopses +synopsis/M +synopsized +synopsizes +synopsizing +synoptic/S +syntactical/Y +syntactics/M +syntactic/SY +syntax/MS +syntheses +synthesis/M +synthesized/U +synthesize/GZSRD +synthesizer/M +synthesizes/A +synthetically +synthetic/S +syphilis/MS +syphilitic/S +syphilized +syphilizing +Syracuse/M +Syriac/M +Syria/M +Syrian/SM +syringe/GMSD +syrup/DMSG +syrupy +sys +systematical/Y +systematics/M +systematic/SP +systematization/SM +systematized/U +systematizer/M +systematize/ZDRSG +systematizing/U +systemically +systemic/S +systemization/SM +system/MS +systole/MS +systolic +Szilard/M +Szymborska/M +TA +Tabasco/MS +Tabatha/M +Tabbatha/M +tabbed +Tabbie/M +Tabbi/M +tabbing +Tabbitha/M +Tabb/M +tabbouleh +tabboulehs +tabby/GSD +Tabby/M +Taber/M +Tabernacle/S +tabernacle/SDGM +Tabina/M +Tabitha/M +tabla/MS +tableau/M +tableaux +tablecloth/M +tablecloths +table/GMSD +tableland/SM +tablespoonful/MS +tablespoon/SM +tablet/MDGS +tabletop/MS +tableware/SM +tabling/M +tabloid/MS +Tab/MR +taboo/GSMD +Tabor/M +tabor/MDGS +Tabriz/SM +tab/SM +tabula +tabular/Y +tabulate/XNGDS +tabulation/M +tabulator/MS +tachometer/SM +tachometry +tachycardia/MS +tachyon/SM +tacitness/MS +taciturnity/MS +taciturn/Y +Tacitus/M +tacit/YP +tacker/M +tack/GZRDMS +tackiness/MS +tackler/M +tackle/RSDMZG +tackling/M +tacky/RSTP +Tacoma/M +taco/MS +tact/FSM +tactfulness/S +tactful/YP +tactical/Y +tactician/MS +tactic/SM +tactile/Y +tactility/S +tactlessness/SM +tactless/PY +tactual/Y +Taddeo/M +Taddeusz/M +Tadd/M +Tadeas/M +Tadeo/M +Tades +Tadio/M +Tad/M +tadpole/MS +tad/SM +Tadzhikistan's +Tadzhikstan/M +Taegu/M +Taejon/M +taffeta/MS +taffrail/SM +Taffy/M +taffy/SM +Taft/M +Tagalog/SM +tagged/U +tagger/S +tagging +Tagore/M +tag/SM +Tagus/M +Tahitian/S +Tahiti/M +Tahoe/M +Taichung/M +taiga/MS +tailback/MS +tail/CMRDGAS +tailcoat/S +tailer/AM +tailgate/MGRSD +tailgater/M +tailing/MS +taillessness/M +tailless/P +taillight/MS +tailor/DMJSGB +Tailor/M +tailpipe/SM +tailspin/MS +tailwind/SM +Tainan/M +Taine/M +taint/DGS +tainted/U +Taipei/M +Taite/M +Tait/M +Taiwanese +Taiwan/M +Taiyuan/M +Tajikistan +takeaway/S +taken/A +takeoff/SM +takeout/S +takeover/SM +taker/M +take/RSHZGJ +takes/IA +taking/IA +Taklamakan/M +Talbert/M +Talbot/M +talcked +talcking +talc/SM +talcum/S +talebearer/SM +talented/M +talentless +talent/SMD +taler/M +tale/RSMN +tali +Talia/M +Taliesin/M +talion/M +talismanic +talisman/SM +talkativeness/MS +talkative/YP +talker/M +talk/GZSRD +talkie/M +talky/RST +Talladega/M +Tallahassee/M +Tallahatchie/M +Tallahoosa/M +tallboy/MS +Tallchief/M +Talley/M +Talleyrand/M +Tallia/M +Tallie/M +Tallinn/M +tallish +tallness/MS +Tallou/M +tallow/DMSG +tallowy +tall/TPR +Tallulah/M +tally/GRSDZ +tallyho/DMSG +Tally/M +Talmudic +Talmudist/MS +Talmud/MS +talon/SMD +talus/MS +Talyah/M +Talya/M +Ta/M +tamable/M +tamale/SM +tamarack/SM +Tamarah/M +Tamara/M +tamarind/MS +Tamar/M +Tamarra/M +Tamas +tambourine/MS +tamed/U +Tameka/M +tameness/S +Tamera/M +Tamerlane/M +tame/SYP +Tamika/M +Tamiko/M +Tamil/MS +Tami/M +Tam/M +Tamma/M +Tammany/M +Tammara/M +tam/MDRSTZGB +Tammie/M +Tammi/M +Tammy/M +Tampa/M +Tampax/M +tampered/U +tamperer/M +tamper/ZGRD +tampon/DMSG +tamp/SGZRD +Tamqrah/M +Tamra/M +tanager/MS +Tanaka/M +Tana/M +Tananarive/M +tanbark/SM +Tancred/M +tandem/SM +Tandie/M +Tandi/M +tandoori/S +Tandy/M +Taney/M +T'ang +Tanganyika/M +tangelo/SM +tangency/M +tangential/Y +tangent/SM +tangerine/MS +tang/GSYDM +tangibility/MIS +tangible/IPS +tangibleness's/I +tangibleness/SM +tangibly/I +Tangier/M +tangle's +tangle/UDSG +tango/MDSG +Tangshan/M +tangy/RST +Tanhya/M +Tania/M +Tani/M +Tanisha/M +Tanitansy/M +tankard/MS +tanker/M +tankful/MS +tank/GZSRDM +Tan/M +tan/MS +tanned/U +Tannenbaum/M +Tanner/M +tanner/SM +tannery/MS +tannest +Tanney/M +Tannhuser/M +Tannie/M +tanning/SM +tannin/SM +Tann/RM +Tanny/M +Tansy/M +tansy/SM +tantalization/SM +tantalized/U +tantalize/GZSRD +tantalizingly/S +tantalizingness/S +tantalizing/YP +tantalum/MS +Tantalus/M +tantamount +tantra/S +tantrum/SM +Tanya/M +Tanzania/M +Tanzanian/S +taoism +Taoism/MS +Taoist/MS +taoist/S +Tao/M +tao/S +Tapdance/M +taped/U +tapeline/S +taperer/M +taper/GRD +tape/SM +tapestry/GMSD +tapeworm/MS +tapioca/MS +tapir/MS +tap/MSDRJZG +tapped/U +tapper/MS +tappet/MS +tapping/M +taproom/MS +taproot/SM +taps/M +Tarah/M +Tara/M +tarantella/MS +tarantula/MS +Tarawa/M +Tarazed/M +Tarbell/M +tardily +tardiness/S +tardy/TPRS +tare/MS +target/GSMD +tar/GSMD +tariff/DMSG +Tarim/M +Tarkington/M +tarmacked +tarmacking +tarmac/S +tarnished/U +tarnish/GDS +tarn/MS +taro/MS +tarot/MS +tarpapered +tarpaulin/MS +tarp/MS +tarpon/MS +tarragon/SM +Tarrah/M +Tarra/M +Tarrance/M +tarred/M +tarring/M +tarry/TGRSD +Tarrytown/M +tarsal/S +tarsi +tarsus/M +tartan/MS +tartaric +Tartar's +tartar/SM +Tartary/M +tartness/MS +tart/PMYRDGTS +Tartuffe/M +Taryn/M +Tarzan/M +Tasha/M +Tashkent/M +Tasia/M +task/GSDM +taskmaster/SM +taskmistress/MS +Tasmania/M +Tasmanian/S +tassellings +tassel/MDGS +Tass/M +tasted/EU +tastefulness/SME +tasteful/PEY +taste/GZMJSRD +tastelessness/SM +tasteless/YP +taster/M +taste's/E +tastes/E +tastily +tastiness/MS +tasting/E +tasty/RTP +tatami/MS +Tatar/SM +Tate/M +tater/M +Tatiana/M +Tatiania/M +tat/SRZ +tatted +tatterdemalion/SM +tattered/M +tatter/GDS +tatting/SM +tattler/M +tattle/RSDZG +tattletale/SM +tattooer/M +tattooist/MS +tattoo/ZRDMGS +tatty/R +Tatum/M +taught/AU +taunter/M +taunting/Y +taunt/ZGRDS +taupe/SM +Taurus/SM +tau/SM +tauten/GD +tautness/S +tautological/Y +tautologous +tautology/SM +taut/PGTXYRDNS +taverner/M +tavern/RMS +tawdrily +tawdriness/SM +tawdry/SRTP +Tawney/M +Tawnya/M +tawny/RSMPT +Tawsha/M +taxable/S +taxably +taxation/MS +taxed/U +taxicab/MS +taxidermist/SM +taxidermy/MS +taxi/MDGS +taximeter/SM +taxing/Y +taxiway/MS +taxonomic +taxonomically +taxonomist/SM +taxonomy/SM +taxpayer/MS +taxpaying/M +tax/ZGJMDRSB +Taylor/SM +Tb +TB +TBA +Tbilisi/M +tbs +tbsp +Tchaikovsky/M +Tc/M +TCP +TD +TDD +Te +teabag/S +teacake/MS +teacart/M +teachable/P +teach/AGS +teacher/MS +teaching/SM +teacloth +teacupful/MS +teacup/MS +Teador/M +teahouse/SM +teakettle/SM +teak/SM +teakwood/M +tealeaves +teal/MS +tea/MDGS +teammate/MS +team/MRDGS +teamster/MS +teamwork/SM +teapot/MS +tearaway +teardrop/MS +tearer/M +tearfulness/M +tearful/YP +teargas/S +teargassed +teargassing +tearjerker/S +tearoom/MS +tear/RDMSG +teary/RT +Teasdale/M +tease/KS +teasel/DGSM +teaser/M +teashop/SM +teasing/Y +teaspoonful/MS +teaspoon/MS +teas/SRDGZ +teatime/MS +teat/MDS +tech/D +technetium/SM +technicality/MS +technicalness/M +technical/YSP +technician/MS +Technicolor/MS +Technion/M +technique/SM +technocracy/MS +technocratic +technocrat/S +technological/Y +technologist/MS +technology/MS +technophobia +technophobic +techs +tectonically +tectonic/S +tectonics/M +Tecumseh/M +Tedda/M +Teddie/M +Teddi/M +Tedd/M +Teddy/M +teddy/SM +Tedie/M +Tedi/M +tediousness/SM +tedious/YP +tedium/MS +Ted/M +Tedman/M +Tedmund/M +Tedra/M +tee/DRSMH +teeing +teem/GSD +teemingness/M +teeming/PY +teenager/M +teenage/RZ +Teena/M +teen/SR +teenybopper/SM +teeny/RT +teepee's +teeshirt/S +teeter/GDS +teethe +teether/M +teething/M +teethmarks +teeth/RSDJMG +teetotaler/M +teetotalism/MS +teetotal/SRDGZ +TEFL +Teflon/MS +Tegucigalpa/M +Teheran's +Tehran +TEirtza/M +tektite/SM +Tektronix/M +telecast/SRGZ +telecommunicate/NX +telecommunication/M +telecommute/SRDZGJ +telecoms +teleconference/GMJSD +Teledyne/M +Telefunken/M +telegenic +telegrammed +telegramming +telegram/MS +telegraphic +telegraphically +telegraphist/MS +telegraph/MRDGZ +telegraphs +telegraphy/MS +telekineses +telekinesis/M +telekinetic +Telemachus/M +Telemann/M +telemarketer/S +telemarketing/S +telemeter/DMSG +telemetric +telemetry/MS +teleological/Y +teleology/M +telepathic +telepathically +telepathy/SM +telephone/SRDGMZ +telephonic +telephonist/SM +telephony/MS +telephotography/MS +telephoto/S +teleprinter/MS +teleprocessing/S +teleprompter +TelePrompter/M +TelePrompTer/S +telescope/GSDM +telescopic +telescopically +teletext/S +telethon/MS +teletype/SM +Teletype/SM +teletypewriter/SM +televangelism/S +televangelist/S +televise/SDXNG +television/M +televisor/MS +televisual +telex/GSDM +Telex/M +tell/AGS +Teller/M +teller/SDMG +telling/YS +Tell/MR +telltale/MS +tellurium/SM +telly/SM +Telnet/M +TELNET/M +telnet/S +telomeric +tel/SY +Telugu/M +temblor/SM +temerity/MS +Tempe/M +temperamental/Y +temperament/SM +temperance/IMS +tempera/SLM +temperately/I +temperateness's/I +temperateness/SM +temperate/SDGPY +temperature/MS +tempered/UE +temper/GRDM +tempering/E +temper's/E +tempers/E +tempest/DMSG +tempestuousness/SM +tempestuous/PY +template/FS +template's +Temple/M +Templeman/M +temple/SDM +Templeton/M +Temp/M +tempoes +tempo/MS +temporal/YS +temporarily +temporarinesses +temporariness/FM +temporary/SFP +temporize/GJZRSD +temporizer/M +temporizings/U +temporizing/YM +temp/SGZTMRD +temptation/MS +tempted +tempter/S +tempt/FS +tempting/YS +temptress/MS +tempura/SM +tenabilities +tenability/UM +tenableness/M +tenable/P +tenably +tenaciousness/S +tenacious/YP +tenacity/S +tenancy/MS +tenanted/U +tenant/MDSG +tenantry/MS +tench/M +tended/UE +tendency/MS +tendentiousness/SM +tendentious/PY +tendered +tenderer +tenderest +tenderfoot/MS +tender/FS +tenderheartedness/MS +tenderhearted/YP +tendering +tenderizer/M +tenderize/SRDGZ +tenderloin/SM +tenderly +tenderness/SM +tending/E +tendinitis/S +tend/ISFRDG +tendon/MS +tendril/SM +tends/E +tenebrous +tenement/MS +tenet/SM +Tenex/M +TENEX/M +tenfold/S +ten/MHB +Tenneco/M +tenner +Tennessean/S +Tennessee/M +Tenney/M +tennis/SM +Tenn/M +Tennyson/M +Tenochtitlan/M +tenon/GSMD +tenor/MS +tenpin/SM +tense/IPYTNVR +tenseness's/I +tenseness/SM +tensile +tensional/I +tension/GMRDS +tensionless +tensions/E +tension's/I +tensity/IMS +tensorial +tensor/MS +tenspot +tens/SRDVGT +tentacle/MSD +tentativeness/S +tentative/SPY +tented/UF +tenterhook/MS +tenter/M +tent/FSIM +tenths +tenth/SY +tenting/F +tenuity/S +tenuousness/SM +tenuous/YP +tenure/SDM +Teodoor/M +Teodora/M +Teodorico/M +Teodor/M +Teodoro/M +tepee/MS +tepidity/S +tepidness/S +tepid/YP +tequila/SM +Tera/M +teratogenic +teratology/MS +terbium/SM +tercel/M +tercentenary/S +tercentennial/S +Terence/M +Terencio/M +Teresa/M +Terese/M +Tereshkova/M +Teresina/M +Teresita/M +Teressa/M +Teriann/M +Teri/M +Terkel/M +termagant/SM +termcap +termer/M +terminable/CPI +terminableness/IMC +terminal/SYM +terminate/CXNV +terminated/U +terminates +terminating +termination/MC +terminative/YC +terminator/SM +termini +terminological/Y +terminology/MS +terminus/M +termite/SM +term/MYRDGS +ternary/S +tern/GIDS +tern's +terpsichorean +Terpsichore/M +terrace/MGSD +terracing/M +terracotta +terrain/MS +Terra/M +terramycin +Terrance/M +Terran/M +terrapin/MS +terrarium/MS +terrazzo/SM +Terrell/M +Terrel/M +Terre/M +Terrence/M +terrestrial/YMS +terribleness/SM +terrible/P +terribly +Terrie/M +terrier/M +terrifically +terrific/Y +terrify/GDS +terrifying/Y +Terrijo/M +Terrill/M +Terri/M +terrine/M +territoriality/M +Territorial/SM +territorial/SY +Territory's +territory/SM +terrorism/MS +terroristic +terrorist/MS +terrorized/U +terrorizer/M +terrorize/RSDZG +terror/MS +terr/S +terrycloth +Terrye/M +Terry/M +terry/ZMRS +terseness/SM +terse/RTYP +Tersina/M +tertian +Tertiary +tertiary/S +Terza/M +TESL +Tesla/M +TESOL +Tessa/M +tessellate/XDSNG +tessellation/M +tesseral +Tessie/M +Tessi/M +Tess/M +Tessy/M +testability/M +testable/U +testamentary +testament/SM +testate/IS +testator/MS +testatrices +testatrix +testbed/S +testcard +tested/AKU +tester/MFCKS +testes/M +testicle/SM +testicular +testifier/M +testify/GZDRS +testily +testimonial/SM +testimony/SM +testiness/S +testing/S +testis/M +testosterone/SM +test/RDBFZGSC +tests/AK +test's/AKF +testy/RTP +tetanus/MS +tetchy/TR +tether/DMSG +tethered/U +Tethys/M +Tetons +tetrachloride/M +tetracycline/SM +tetrafluoride +tetragonal/Y +tetrahalides +tetrahedral/Y +tetrahedron/SM +tetrameron +tetrameter/SM +tetra/MS +tetrasodium +tetravalent +Teutonic +Teuton/SM +Texaco/M +Texan/S +Texas/MS +Tex/M +TeX/M +textbook/SM +text/FSM +textile/SM +Textron/M +textual/FY +textural/Y +textured/U +texture/MGSD +T/G +Thacher/M +Thackeray/M +Thaddeus/M +Thaddus/M +Thadeus/M +Thad/M +Thailand/M +Thaine/M +Thain/M +Thai/S +thalami +thalamus/M +Thales/M +Thalia/M +thalidomide/MS +thallium/SM +thallophyte/M +Thames +than +Thane/M +thane/SM +Thanh/M +thanker/M +thankfuller +thankfullest +thankfulness/SM +thankful/YP +thanklessness/SM +thankless/PY +thanksgiving/MS +Thanksgiving/S +thank/SRDG +Thant/M +Thar/M +Thatcher/M +thatching/M +thatch/JMDRSZG +Thatch/MR +that'd +that'll +that/MS +thaumaturge/M +thaw/DGS +Thaxter/M +Thayer/M +Thayne/M +THC +the +Theadora/M +Thea/M +theatergoer/MS +theatergoing/MS +theater/SM +theatricality/SM +theatrical/YS +theatric/S +theatrics/M +Thebault/M +Thebes +Theda/M +Thedrick/M +Thedric/M +thee/DS +theeing +theft/MS +Theiler/M +their/MS +theism/SM +theistic +theist/SM +Thekla/M +Thelma/M +themas +thematically +thematics +thematic/U +theme/MS +them/GD +Themistocles/M +themselves +thence +thenceforth +thenceforward/S +Theobald/M +theocracy/SM +theocratic +Theocritus/M +theodolite/MS +Theodora/M +Theodore/M +Theodoric/M +Theodor/M +Theodosia/M +Theodosian +Theodosius/M +theologian/SM +theological/Y +theologists +theology/MS +Theo/M +theorem/MS +theoretical/Y +theoretician/MS +theoretic/S +theoretics/M +theorist/SM +theorization/SM +theorize/ZGDRS +theory/MS +theosophic +theosophical +theosophist/MS +Theosophy +theosophy/SM +therapeutically +therapeutic/S +therapeutics/M +therapist/MS +therapy/MS +Theravada/M +thereabout/S +thereafter +thereat +thereby +there'd +therefor +therefore +therefrom +therein +there'll +there/MS +thereof +thereon +Theresa/M +Therese/M +Theresina/M +Theresita/M +Theressa/M +thereto +theretofore +thereunder +thereunto +thereupon +therewith +Therine/M +thermal/YS +thermionic/S +thermionics/M +thermistor/MS +therm/MS +thermocouple/MS +thermodynamical/Y +thermodynamic/S +thermodynamics/M +thermoelastic +thermoelectric +thermoformed +thermoforming +thermogravimetric +thermoluminescence/M +thermometer/MS +thermometric +thermometry/M +thermonuclear +thermopile/M +thermoplastic/S +thermopower +thermo/S +thermosetting +thermos/S +Thermos/SM +thermostable +thermostatically +thermostatic/S +thermostatics/M +thermostat/SM +thermostatted +thermostatting +Theron/M +thesauri +thesaurus/MS +these/S +Theseus/M +thesis/M +thespian/S +Thespian/S +Thespis/M +Thessalonian +Thessalonki/M +Thessaly/M +theta/MS +thew/SM +they +they'd +they'll +they're +they've +th/GNJX +Thia/M +thiamine/MS +Thibaud/M +Thibaut/M +thickener/M +thickening/M +thicken/RDJZG +thicket/SMD +thickheaded/M +thickish +thickness/MS +thickset/S +thick/TXPSRNY +thief/M +Thiensville/M +Thieu/M +thievery/MS +thieve/SDJG +thievishness/M +thievish/P +thighbone/SM +thigh/DM +thighs +thimble/DSMG +thimbleful/MS +Thimbu/M +Thimphu +thine +thingamabob/MS +thingamajig/SM +thing/MP +thinkableness/M +thinkable/U +thinkably/U +think/AGRS +thinker/MS +thinkingly/U +thinking/SMYP +thinned +thinner/MS +thinness/MS +thinnest +thinning +thinnish +thin/STPYR +thiocyanate/M +thiouracil/M +third/DYGS +thirster/M +thirst/GSMDR +thirstily +thirstiness/S +thirsty/TPR +thirteen/MHS +thirteenths +thirtieths +thirty/HMS +this +this'll +thistledown/MS +thistle/SM +thither +Th/M +tho +thole/GMSD +Thomasa/M +Thomasina/M +Thomasine/M +Thomasin/M +Thoma/SM +Thomism/M +Thomistic +Thom/M +Thompson/M +Thomson/M +thong/SMD +thoracic +thorax/MS +Thorazine +Thoreau/M +thoriate/D +Thorin/M +thorium/MS +Thor/M +Thornburg/M +Thorndike/M +Thornie/M +thorniness/S +Thorn/M +thorn/SMDG +Thornton/M +Thorny/M +thorny/PTR +thoroughbred/S +thoroughfare/MS +thoroughgoing +thoroughness/SM +thorough/PTYR +Thorpe/M +Thorstein/M +Thorsten/M +Thorvald/M +those +Thoth/M +thou/DSG +though +thoughtfully +thoughtfulness/S +thoughtful/U +thoughtlessness/MS +thoughtless/YP +thought/MS +thousandfold +thousand/SHM +thousandths +Thrace/M +Thracian/M +thralldom/S +thrall/GSMD +thrash/DSRZGJ +thrasher/M +thrashing/M +threadbare/P +threader/M +threading/A +threadlike +thread/MZDRGS +thready/RT +threatener/M +threaten/GJRD +threatening/Y +threat/MDNSXG +threefold +three/MS +threepence/M +threepenny +threescore/S +threesome/SM +threnody/SM +thresh/DSRZG +thresher/M +threshold/MDGS +threw +thrice +thriftily +thriftiness/S +thriftless +thrift/SM +thrifty/PTR +thriller/M +thrilling/Y +thrill/ZMGDRS +thriver/M +thrive/RSDJG +thriving/Y +throatily +throatiness/MS +throat/MDSG +throaty/PRT +throbbed +throbbing +throb/S +throeing +throe/SDM +thrombi +thromboses +thrombosis/M +thrombotic +thrombus/M +Throneberry/M +throne/CGSD +throne's +throng/GDSM +throttle/DRSZMG +throttler/M +throughout +throughput/SM +throughway's +through/Y +throwaway/SM +throwback/MS +thrower/M +thrown +throwout +throw/SZGR +thrummed +thrumming +thrum/S +thrush/MS +thruster/M +thrust/ZGSR +Thruway/MS +thruway/SM +Thunderbird/M +Thu +Thucydides/M +thudded +thudding +thud/MS +thuggee/M +thuggery/SM +thuggish +thug/MS +Thule/M +thulium/SM +thumbnail/MS +thumbscrew/SM +thumb/SMDG +thumbtack/GMDS +thump/RDMSG +thunderbolt/MS +thunderclap/SM +thundercloud/SM +thunderer/M +thunderhead/SM +thundering/Y +thunderous/Y +thundershower/MS +thunderstorm/MS +thunderstruck +thundery +thunder/ZGJDRMS +thunk +Thurber/M +Thurman/M +Thur/MS +Thursday/SM +Thurstan/M +Thurston/M +thus/Y +thwack/DRSZG +thwacker/M +thwarter/M +thwart/GSDRY +thy +thyme/SM +thymine/MS +thymus/SM +thyratron/M +thyristor/MS +thyroglobulin +thyroidal +thyroid/S +thyronine +thyrotoxic +thyrotrophic +thyrotrophin +thyrotropic +thyrotropin/M +thyroxine/M +thyself +Tia/M +Tianjin +tiara/MS +Tiberius/M +Tiber/M +Tibetan/S +Tibet/M +tibiae +tibial +tibia/M +Tibold/M +Tiburon/M +ticker/M +ticket/SGMD +tick/GZJRDMS +ticking/M +tickler/M +tickle/RSDZG +ticklishness/MS +ticklish/PY +ticktacktoe/S +ticktock/SMDG +tic/MS +Ticonderoga/M +tidal/Y +tidbit/MS +tiddlywinks/M +tide/GJDS +tideland/MS +tidewater/SM +tideway/SM +tidily/U +tidiness/USM +tidying/M +tidy/UGDSRPT +tie/AUDS +tieback/MS +Tiebold/M +Tiebout/M +tiebreaker/SM +Tieck/M +Tiena/M +Tienanmen/M +Tientsin's +tier/DGM +Tierney/M +Tiertza/M +Tiffanie/M +Tiffani/M +tiffany/M +Tiffany/M +tiff/GDMS +Tiffie/M +Tiffi/M +Tiff/M +Tiffy/M +tigerish +tiger/SM +tightener/M +tighten/JZGDR +tightfisted +tightness/MS +tightrope/SM +tight/STXPRNY +tightwad/MS +tigress/SM +Tigris/M +Tijuana/M +tike's +Tilda/M +tilde/MS +Tildie/M +Tildi/M +Tildy/M +tile/DRSJMZG +tiled/UE +Tiler/M +tiles/U +tiling/M +tillable +tillage/SM +till/EGSZDR +tiller/GDM +tiller's/E +Tillich/M +Tillie/M +Tillman/M +Tilly/M +tilth/M +tilt/RDSGZ +Ti/M +timber/DMSG +timbering/M +timberland/SM +timberline/S +timbrel/SM +timbre/MS +Timbuktu/M +ti/MDRZ +timebase +time/DRSJMYZG +timekeeper/MS +timekeeping/SM +timelessness/S +timeless/PY +timeliness/SMU +timely/UTRP +timeout/S +timepiece/MS +timer/M +timescale/S +timeserver/MS +timeserving/S +timeshare/SDG +timespan +timestamped +timestamps +timetable/GMSD +timeworn +Timex/M +timezone/S +timidity/SM +timidness/MS +timid/RYTP +Timi/M +timing/M +Timmie/M +Timmi/M +Tim/MS +Timmy/M +Timofei/M +Timon/M +timorousness/MS +timorous/YP +Timoteo/M +Timothea/M +Timothee/M +Timotheus/M +Timothy/M +timothy/MS +timpani +timpanist/S +Timur/M +Tina/M +tincture/SDMG +tinderbox/MS +tinder/MS +Tine/M +tine/SM +tinfoil/MS +tingeing +tinge/S +ting/GYDM +tingle/SDG +tingling/Y +tingly/TR +Ting/M +tinily +tininess/MS +tinker/SRDMZG +Tinkertoy +tinkle/SDG +tinkling/M +tinkly +tin/MDGS +tinned +tinner/M +tinnily +tinniness/SM +tinning/M +tinnitus/MS +tinny/RSTP +tinplate/S +tinsel/GMDYS +Tinseltown/M +tinsmith/M +tinsmiths +tinter/M +tintinnabulation/MS +Tintoretto/M +tint/SGMRDB +tintype/SM +tinware/MS +tiny/RPT +Tioga/M +Tiphanie/M +Tiphani/M +Tiphany/M +tipi's +tip/MS +tipoff +Tippecanoe/M +tipped +Tipperary/M +tipper/MS +tippet/MS +tipping +tippler/M +tipple/ZGRSD +tippy/R +tipsily +tipsiness/SM +tipster/SM +tipsy/TPR +tiptoeing +tiptoe/SD +tiptop/S +tirade/SM +Tirana's +Tirane +tired/AYP +tireder +tiredest +tiredness/S +tirelessness/SM +tireless/PY +tire/MGDSJ +tires/A +Tiresias/M +tiresomeness/S +tiresome/PY +tiring/AU +Tirolean/S +Tirol/M +tiro's +Tirrell/M +tis +Tisha/M +Tish/M +tissue/MGSD +titanate/M +Titania/M +titanic +titanically +Titanic/M +titanium/SM +titan/SM +Titan/SM +titbit's +titer/M +tither/M +tithe/SRDGZM +tithing/M +Titian/M +titian/S +Titicaca/M +titillate/XSDVNG +titillating/Y +titillation/M +titivate/NGDSX +titivation/M +titled/AU +title/GMSRD +titleholder/SM +titling/A +titmice +titmouse/M +tit/MRZS +Tito/SM +titrate/SDGN +titration/M +titted +titter/GDS +titting +tittle/SDMG +titular/SY +Titus/M +tizzy/SM +TKO +Tlaloc/M +TLC +Tlingit/M +Tl/M +TM +Tm/M +tn +TN +tnpk +TNT +toad/SM +toadstool/SM +toady/GSDM +toadyism/M +toaster/M +toastmaster/MS +toastmistress/S +toast/SZGRDM +toasty/TRS +tobacconist/SM +tobacco/SM +tobaggon/SM +Tobago/M +Tobe/M +Tobey/M +Tobiah/M +Tobias/M +Tobie/M +Tobi/M +Tobin/M +Tobit/M +toboggan/MRDSZG +Tobye/M +Toby/M +Tocantins/M +toccata/M +Tocqueville +tocsin/MS +to/D +today'll +today/SM +Toddie/M +toddler/M +toddle/ZGSRD +Todd/M +Toddy/M +toddy/SM +Tod/M +toecap/SM +toeclip/S +TOEFL +toehold/MS +toeing +toe/MS +toenail/DMGS +toffee/SM +tofu/S +toga/SMD +toge +togetherness/MS +together/P +togged +togging +toggle/SDMG +Togolese/M +Togo/M +tog/SMG +Toiboid/M +toilet/GMDS +toiletry/MS +toilette/SM +toil/SGZMRD +toilsomeness/M +toilsome/PY +Toinette/M +Tojo/M +tokamak +Tokay/M +toke/GDS +tokenism/SM +tokenized +token/SMDG +Tokugawa/M +Tokyoite/MS +Tokyo/M +Toland/M +told/AU +Toledo/SM +tole/MGDS +tolerability/IM +tolerable/I +tolerably/I +tolerance/SIM +tolerant/IY +tolerate/XVNGSD +toleration/M +Tolkien +tollbooth/M +tollbooths +toll/DGS +Tolley/M +tollgate/MS +tollhouse/M +tollway/S +Tolstoy/M +toluene/MS +Tolyatti/M +tomahawk/SGMD +Tomasina/M +Tomasine/M +Toma/SM +Tomaso/M +tomatoes +tomato/M +Tombaugh/M +tomb/GSDM +Tombigbee/M +tomblike +tombola/M +tomboyish +tomboy/MS +tombstone/MS +tomcat/SM +tomcatted +tomcatting +Tome/M +tome/SM +tomfoolery/MS +tomfool/M +Tomi/M +Tomkin/M +Tomlin/M +Tom/M +tommed +Tommie/M +Tommi/M +tomming +tommy/M +Tommy/M +tomographic +tomography/MS +tomorrow/MS +Tompkins/M +Tomsk/M +tom/SM +tomtit/SM +tonality/MS +tonal/Y +tonearm/S +tone/ISRDZG +tonelessness/M +toneless/YP +toner/IM +tone's +Tonga/M +Tongan/SM +tong/GRDS +tongueless +tongue/SDMG +tonguing/M +Tonia/M +tonic/SM +Tonie/M +tonight/MS +Toni/M +Tonio/M +tonk/MS +tonnage/SM +tonne/MS +Tonnie/M +tonsillectomy/MS +tonsillitis/SM +tonsil/SM +ton/SKM +tonsorial +tonsure/SDGM +Tonto/M +Tonya/M +Tonye/M +Tony/M +tony/RT +toodle +too/H +took/A +tool/AGDS +toolbox/SM +tooler/SM +tooling/M +toolkit/SM +toolmaker/M +toolmake/ZRG +toolmaking/M +tool's +toolsmith +Toomey/M +tooter/M +toot/GRDZS +toothache/SM +toothbrush/MSG +tooth/DMG +toothily +toothless +toothmarks +toothpaste/SM +toothpick/MS +tooths +toothsome +toothy/TR +tootle/SRDG +tootsie +Tootsie/M +toots/M +tootsy/MS +topaz/MS +topcoat/MS +topdressing/S +Topeka/M +toper/M +topflight +topgallant/M +topiary/S +topicality/MS +topical/Y +topic/MS +topknot/MS +topless +topmast/MS +topmost +topnotch/R +topocentric +topographer/SM +topographic +topographical/Y +topography/MS +topological/Y +topologist/MS +topology/MS +topped +topper/MS +topping/MS +topple/GSD +topsail/MS +topside/SRM +top/SMDRG +topsoil/GDMS +topspin/MS +Topsy/M +toque/MS +Torah/M +Torahs +torchbearer/SM +torchlight/S +torch/SDMG +toreador/SM +Tore/M +tore/S +Torey/M +Torie/M +tori/M +Tori/M +Torin/M +torment/GSD +tormenting/Y +tormentor/MS +torn +tornadoes +tornado/M +toroidal/Y +toroid/MS +Toronto/M +torpedoes +torpedo/GMD +torpidity/S +torpid/SY +torpor/MS +Torquemada/M +torque/MZGSRD +Torrance/M +Torre/MS +torrence +Torrence/M +Torrens/M +torrential +torrent/MS +Torrey/M +Torricelli/M +torridity/SM +torridness/SM +torrid/RYTP +Torrie/M +Torrin/M +Torr/XM +Torry/M +torsional/Y +torsion/IAM +torsions +torsi's +tor/SLM +torso/SM +tors/S +tort/ASFE +tortellini/MS +torte/MS +torten +tortilla/MS +tortoiseshell/SM +tortoise/SM +Tortola/M +tortoni/MS +tort's +Tortuga/M +tortuousness/MS +tortuous/PY +torture/ZGSRD +torturous +torus/MS +Tory/SM +Tosca/M +Toscanini/M +Toshiba/M +toss/SRDGZ +tossup/MS +totaler/M +totalistic +totalitarianism/SM +totalitarian/S +totality/MS +totalizator/S +totalizing +total/ZGSRDYM +totemic +totem/MS +toter/M +tote/S +toting/M +tot/MDRSG +Toto/M +totted +totterer/M +tottering/Y +totter/ZGRDS +totting +toucan/MS +touchable/U +touch/ASDG +touchdown/SM +touch +touched/U +toucher/M +touchily +touchiness/SM +touching/SY +touchline/M +touchscreen +touchstone/SM +touchy/TPR +toughen/DRZG +toughener/M +toughness/SM +toughs +tough/TXGRDNYP +Toulouse/M +toupee/SM +toured/CF +tourer/M +tour/GZSRDM +touring/F +tourism/SM +touristic +tourist/SM +touristy +tourmaline/SM +tournament/MS +tourney/GDMS +tourniquet/MS +tour's/CF +tours/CF +tousle/GSD +touter/M +tout/SGRD +Tova/M +Tove/M +towardliness/M +towardly/P +towards +toward/YU +towboat/MS +tow/DRSZG +towelette/S +towel/GJDMS +toweling/M +tower/GMD +towering/Y +towhead/MSD +towhee/SM +towline/MS +towner/M +Townes +Towney/M +townhouse/S +Townie/M +townie/S +Townley/M +Town/M +Townsend/M +townsfolk +township/MS +townsman/M +townsmen +townspeople/M +town/SRM +townswoman/M +townswomen +Towny/M +towpath/M +towpaths +towrope/MS +Towsley/M +toxemia/MS +toxicity/MS +toxicological +toxicologist/SM +toxicology/MS +toxic/S +toxin/MS +toyer/M +toymaker +toy/MDRSG +Toynbee/M +Toyoda/M +Toyota/M +toyshop +tr +traceability/M +traceableness/M +traceable/P +trace/ASDG +traceback/MS +traced/U +Tracee/M +traceless/Y +Trace/M +tracepoint/SM +tracer/MS +tracery/MDS +trace's +Tracey/M +tracheae +tracheal/M +trachea/M +tracheotomy/SM +Tracie/M +Traci/M +tracing/SM +trackage +trackball/S +trackbed +tracked/U +tracker/M +trackless +tracksuit/SM +track/SZGMRD +tractability/SI +tractable/I +tractably/I +tract/ABS +Tractarians +traction/KSCEMAF +tractive/KFE +tractor/FKMASC +tract's +tracts/CEFK +Tracy/M +trademark/GSMD +trader/M +tradesman/M +tradesmen +tradespeople +tradespersons +trade/SRDGZM +tradeswoman/M +tradeswomen +traditionalism/MS +traditionalistic +traditionalist/MS +traditionalized +traditionally +traditional/U +tradition/SM +traduce/DRSGZ +Trafalgar/M +trafficked +trafficker/MS +trafficking/S +traffic/SM +tragedian/SM +tragedienne/MS +tragedy/MS +tragically +tragicomedy/SM +tragicomic +tragic/S +trailblazer/MS +trailblazing/S +trailer/GDM +trails/F +trailside +trail/SZGJRD +trainable +train/ASDG +trained/U +trainee/MS +traineeships +trainer/MS +training/SM +trainman/M +trainmen +trainspotter/S +traipse/DSG +trait/MS +traitorous/Y +traitor/SM +Trajan/M +trajectory/MS +trammed +trammeled/U +trammel/GSD +tramming +tram/MS +trample/DGRSZ +trampler/M +trampoline/GMSD +tramp/RDSZG +tramway/M +trance/MGSD +tranche/SM +Tran/M +tranquility/S +tranquilized/U +tranquilize/JGZDSR +tranquilizer/M +tranquilizes/A +tranquilizing/YM +tranquillize/GRSDZ +tranquillizer/M +tranquilness/M +tranquil/PTRY +transact/GSD +transactional +transaction/MS +transactor/SM +transalpine +transaminase +transatlantic +Transcaucasia/M +transceiver/SM +transcendence/MS +transcendentalism/SM +transcendentalist/SM +transcendental/YS +transcendent/Y +transcend/SDG +transconductance +transcontinental +transcribe/DSRGZ +transcriber/M +transcription/SM +transcript/SM +transcultural +transducer/SM +transduction/M +transect/DSG +transept/SM +transferability/M +transferal/MS +transfer/BSMD +transferee/M +transference/SM +transferor/MS +transferral/SM +transferred +transferrer/SM +transferring +transfiguration/SM +transfigure/SDG +transfinite/Y +transfix/SDG +transformational +transformation/MS +transform/DRZBSG +transformed/U +transformer/M +transfuse/XSDGNB +transfusion/M +transgression/SM +transgressor/S +transgress/VGSD +trans/I +transience/SM +transiency/S +transient/YS +transistorize/GDS +transistor/SM +Transite/M +transitional/Y +transition/MDGS +transitivenesses +transitiveness/IM +transitive/PIY +transitivity/MS +transitoriness/M +transitory/P +transit/SGVMD +transl +translatability/M +translatable/U +translated/AU +translate/VGNXSDB +translational +translation/M +translator/SM +transliterate/XNGSD +translucence/SM +translucency/MS +translucent/Y +transmigrate/XNGSD +transmissible +transmission/MSA +transmissive +transmit/AS +transmittable +transmittal/SM +transmittance/MS +transmitted/A +transmitter/SM +transmitting/A +transmogrification/M +transmogrify/GXDSN +transmutation/SM +transmute/GBSD +transnational/S +transoceanic +transom/SM +transonic +transpacific +transparency/MS +transparentness/M +transparent/YP +transpiration/SM +transpire/GSD +transplantation/S +transplant/GRDBS +transpolar +transponder/MS +transportability +transportable/U +transportation/SM +transport/BGZSDR +transpose/BGSD +transposed/U +transposition/SM +Transputer/M +transsexualism/MS +transsexual/SM +transship/LS +transshipment/SM +transshipped +transshipping +transubstantiation/MS +Transvaal/M +transversal/YM +transverse/GYDS +transvestism/SM +transvestite/SM +transvestitism +Transylvania/M +trapdoor/S +trapeze/DSGM +trapezium/MS +trapezoidal +trapezoid/MS +trap/MS +trappable/U +trapped +trapper/SM +trapping/S +Trappist/MS +trapshooting/SM +trashcan/SM +trashiness/SM +trash/SRDMG +trashy/TRP +Trastevere/M +trauma/MS +traumatic +traumatically +traumatize/SDG +travail/SMDG +traveled/U +traveler/M +travelog's +travelogue/S +travel/SDRGZJ +Traver/MS +traversal/SM +traverse/GBDRS +traverser/M +travertine/M +travesty/SDGM +Travis/M +Travus/M +trawler/M +trawl/RDMSZG +tray/SM +treacherousness/SM +treacherous/PY +treachery/SM +treacle/DSGM +treacly +treader/M +treadle/GDSM +treadmill/MS +tread/SAGD +Treadwell/M +treas +treason/BMS +treasonous +treasure/DRSZMG +treasurer/M +treasurership +treasury/SM +Treasury/SM +treatable +treated/U +treater/S +treatise/MS +treatment/MS +treat's +treat/SAGDR +treaty/MS +treble/SDG +Treblinka/M +treeing +treeless +treelike +tree/MDS +treetop/SM +trefoil/SM +Trefor/M +trekked +trekker/MS +Trekkie/M +trekking +trek/MS +trellis/GDSM +Tremaine/M +Tremain/M +trematode/SM +Tremayne/M +tremble/JDRSG +trembler/M +trembles/M +trembly +tremendousness/M +tremendous/YP +tremolo/MS +tremor/MS +tremulousness/SM +tremulous/YP +trenchancy/MS +trenchant/Y +trencherman/M +trenchermen +trencher/SM +trench/GASD +trench's +trendily +trendiness/S +trend/SDMG +trendy/PTRS +Trenna/M +Trent/M +Trenton/M +trepanned +trepidation/MS +Tresa/M +Trescha/M +trespasser/M +trespass/ZRSDG +Tressa/M +tressed/E +tresses/E +tressing/E +tress/MSDG +trestle/MS +Trevar/M +Trevelyan/M +Trever/M +Trevino/M +Trevor/M +Trev/RM +Trey/M +trey/MS +triableness/M +triable/P +triadic +triad/MS +triage/SDMG +trial/ASM +trialization +trialled +trialling +triamcinolone +triangle/SM +triangulable +triangularization/S +triangular/Y +triangulate/YGNXSD +triangulation/M +Triangulum/M +Trianon/M +Triassic +triathlon/S +triatomic +tribalism/MS +tribal/Y +tribe/MS +tribesman/M +tribesmen +tribeswoman +tribeswomen +tribulate/NX +tribulation/M +tribunal/MS +tribune/SM +tributary/MS +tribute/EGSF +tribute's +trice/GSDM +tricentennial/S +triceps/SM +triceratops/M +trichinae +trichina/M +trichinoses +trichinosis/M +trichloroacetic +trichloroethane +trichotomy/M +trichromatic +Tricia/M +trickery/MS +trick/GMSRD +trickily +trickiness/SM +trickle/DSG +trickster/MS +tricky/RPT +tricolor/SMD +tricycle/SDMG +trident/SM +tridiagonal +tried/UA +triennial/SY +trier/AS +trier's +tries/A +Trieste/M +triffid/S +trifle/MZGJSRD +trifler/M +trifluoride/M +trifocals +trigged +trigger/GSDM +triggest +trigging +triglyceride/MS +trigonal/Y +trigonometric +trigonometrical +trigonometry/MS +trigram/S +trig/S +trihedral +trike/GMSD +trilateral/S +trilby/SM +trilingual +trillion/SMH +trillionth/M +trillionths +trillium/SM +trill/RDMGS +trilobite/MS +trilogy/MS +trimaran/MS +Trimble/M +trimer/M +trimester/MS +trimmed/U +trimmer/MS +trimmest +trimming/MS +trimness/S +trimodal +trimonthly +trim/PSYR +Trimurti/M +Trina/M +Trinidad/M +trinitarian/S +trinitrotoluene/SM +trinity/MS +Trinity/MS +trinketer/M +trinket/MRDSG +triode/MS +trio/SM +trioxide/M +tripartite/N +tripartition/M +tripe/MS +triphenylarsine +triphenylphosphine +triphenylstibine +triphosphopyridine +triple/GSD +triplet/SM +triplex/S +triplicate/SDG +triplication/M +triply/GDSN +Trip/M +tripodal +tripod/MS +tripoli/M +Tripoli/M +tripolyphosphate +tripos/SM +tripped +Trippe/M +tripper/MS +tripping/Y +Tripp/M +trip/SMY +triptych/M +triptychs +tripwire/MS +trireme/SM +Tris +trisect/GSD +trisection/S +trisector +Trisha/M +Trish/M +trisodium +Trista/M +Tristam/M +Tristan/M +tristate +trisyllable/M +tritely/F +triteness/SF +trite/SRPTY +tritium/MS +triton/M +Triton/M +triumphal +triumphalism +triumphant/Y +triumph/GMD +triumphs +triumvirate/MS +triumvir/MS +triune +trivalent +trivet/SM +trivia +triviality/MS +trivialization/MS +trivialize/DSG +trivial/Y +trivium/M +Trixie/M +Trixi/M +Trix/M +Trixy/M +Trobriand/M +trochaic/S +trochee/SM +trod/AU +trodden/UA +trodes +troff/MR +troglodyte/MS +troika/SM +Trojan/MS +troll/DMSG +trolled/F +trolleybus/S +trolley/SGMD +trolling/F +trollish +Trollope/M +trollop/GSMD +trolly's +trombone/MS +trombonist/SM +tromp/DSG +Trondheim/M +trooper/M +troopship/SM +troop/SRDMZG +trope/SM +Tropez/M +trophic +trophy/MGDS +tropical/SY +tropic/MS +tropism/SM +tropocollagen +troposphere/MS +tropospheric +troth/GDM +troths +trot/S +Trotsky/M +trotted +trotter/SM +trotting +troubadour/SM +troubled/U +trouble/GDRSM +troublemaker/MS +troubler/M +troubleshooter/M +troubleshoot/SRDZG +troubleshot +troublesomeness/M +troublesome/YP +trough/M +troughs +trounce/GZDRS +trouncer/M +troupe/MZGSRD +trouper/M +trouser/DMGS +trousseau/M +trousseaux +Troutman/M +trout/SM +trove/SM +troweler/M +trowel/SMDRGZ +trow/SGD +Troyes +Troy/M +troy/S +Trstram/M +truancy/MS +truant/SMDG +truce/SDGM +Truckee/M +trucker/M +trucking/M +truckle/GDS +truckload/MS +truck/SZGMRDJ +truculence/SM +truculent/Y +Truda/M +Trudeau/M +Trude/M +Trudey/M +trudge/SRDG +Trudie/M +Trudi/M +Trudy/M +true/DRSPTG +truelove/MS +Trueman/M +trueness/M +truer/U +truest/U +truffle/MS +truism/SM +Trujillo/M +Trula/M +truly/U +Trumaine/M +Truman/M +Trumann/M +Trumbull/M +trump/DMSG +trumpery/SM +trumpeter/M +trumpet/MDRZGS +Trump/M +truncate/NGDSX +truncation/M +truncheon/MDSG +trundle/GZDSR +trundler/M +trunk/GSMD +trunnion/SM +trusser/M +trussing/M +truss/SRDG +trusted/EU +trusteeing +trustee/MDS +trusteeship/SM +truster/M +trustful/EY +trustfulness/SM +trustiness/M +trusting/Y +trust/RDMSG +trusts/E +trustworthier +trustworthiest +trustworthiness/MS +trustworthy/UP +trusty/PTMSR +Truth +truthfulness/US +truthful/UYP +truths/U +truth/UM +TRW +trying/Y +try/JGDRSZ +tryout/MS +trypsin/M +tryst/GDMS +ts +T's +tsarevich +tsarina's +tsarism/M +tsarist +tsetse/S +Tsimshian/M +Tsiolkovsky/M +Tsitsihar/M +tsp +tsunami/MS +Tsunematsu/M +Tswana/M +TTL +tty/M +ttys +Tuamotu/M +Tuareg/M +tubae +tubal +tuba/SM +tubbed +tubbing +tubby/TR +tubeless +tubercle/MS +tubercular/S +tuberculin/MS +tuberculoses +tuberculosis/M +tuberculous +tuber/M +tuberose/SM +tuberous +tube/SM +tubing/M +tub/JMDRSZG +Tubman/M +tubular/Y +tubule/SM +tucker/GDM +Tucker/M +tuck/GZSRD +Tuckie/M +Tuck/RM +Tucky/M +Tucson/M +Tucuman/M +Tudor/MS +Tue/S +Tuesday/SM +tufter/M +tuft/GZSMRD +tufting/M +tugboat/MS +tugged +tugging +tug/S +tuition/ISM +Tulane/M +tularemia/S +tulip/SM +tulle/SM +Tulley/M +Tull/M +Tully/M +Tulsa/M +tum +tumbledown +tumbler/M +tumbleweed/MS +tumble/ZGRSDJ +tumbrel/SM +tumescence/S +tumescent +tumidity/MS +tumid/Y +tummy/SM +tumor/MDS +tumorous +Tums/M +tumult/SGMD +tumultuousness/M +tumultuous/PY +tumulus/M +tunableness/M +tunable/P +tuna/SM +tundra/SM +tun/DRJZGBS +tune/CSDG +tunefulness/MS +tuneful/YP +tuneless/Y +tuner/M +tune's +tuneup/S +tung +tungstate/M +tungsten/SM +Tunguska/M +Tungus/M +tunic/MS +tuning/A +tuning's +Tunisia/M +Tunisian/S +Tunis/M +tunned +tunneler/M +tunnel/MRDSJGZ +tunning +tunny/SM +tupelo/M +Tupi/M +tuple/SM +tuppence/M +Tupperware +Tupungato/M +turban/SDM +turbid +turbidity/SM +turbinate/SD +turbine/SM +turbocharged +turbocharger/SM +turbofan/MS +turbojet/MS +turboprop/MS +turbo/SM +turbot/MS +turbulence/SM +turbulent/Y +turd/MS +tureen/MS +turf/DGSM +turfy/RT +Turgenev/M +turgidity/SM +turgidness/M +turgid/PY +Turing/M +Turin/M +Turkestan/M +Turkey/M +turkey/SM +Turkic/SM +Turkish +Turkmenistan/M +turk/S +Turk/SM +turmeric/MS +turmoil/SDMG +turnabout/SM +turnaround/MS +turn/AZGRDBS +turnbuckle/SM +turncoat/SM +turned/U +turner/M +Turner/M +turning/MS +turnip/SMDG +turnkey/MS +turnoff/MS +turnout/MS +turnover/SM +turnpike/MS +turnround/MS +turnstile/SM +turnstone/M +turntable/SM +turpentine/GMSD +Turpin/M +turpitude/SM +turquoise/SM +turret/SMD +turtleback/MS +turtledove/MS +turtleneck/SDM +turtle/SDMG +turves's +turvy +Tuscaloosa/M +Tuscan +Tuscany/M +Tuscarora/M +Tuscon/M +tush/SDG +Tuskegee/M +tusker/M +tusk/GZRDMS +tussle/GSD +tussock/MS +tussocky +Tussuad/M +Tutankhamen/M +tutelage/MS +tutelary/S +Tut/M +tutored/U +tutorial/MS +tutor/MDGS +tutorship/S +tut/S +Tutsi +tutted +tutting +tutti/S +Tuttle/M +tutu/SM +Tuvalu +tuxedo/SDM +tux/S +TVA +TV/M +TVs +twaddle/GZMRSD +twaddler/M +Twain/M +twain/S +TWA/M +twang/MDSG +twangy/TR +twas +tweak/SGRD +tweediness/M +Tweedledee/M +Tweedledum/M +Tweed/M +twee/DP +tweed/SM +tweedy/PTR +tween +tweeter/M +tweet/ZSGRD +tweezer/M +tweeze/ZGRD +twelfth +twelfths +twelvemonth/M +twelvemonths +twelve/MS +twentieths +twenty/MSH +twerp/MS +twice/R +twiddle/GRSD +twiddler/M +twiddly/RT +twigged +twigging +twiggy/RT +twig/SM +Twila/M +twilight/MS +twilit +twill/SGD +twiner/M +twine/SM +twinge/SDMG +Twinkie +twinkler/M +twinkle/RSDG +twinkling/M +twinkly +twinned +twinning +twin/RDMGZS +twirler/M +twirling/Y +twirl/SZGRD +twirly/TR +twisted/U +twister/M +twists/U +twist/SZGRD +twisty +twitch/GRSD +twitchy/TR +twit/S +twitted +twitterer/M +twitter/SGRD +twittery +twitting +twixt +twofer/MS +twofold/S +two/MS +twopence/SM +twopenny/S +twosome/MS +twp +Twp +TWX +Twyla/M +TX +t/XTJBG +Tybalt/M +Tybie/M +Tybi/M +tycoon/MS +tyeing +Tye/M +tying/UA +tyke/SM +Tylenol/M +Tyler/M +Ty/M +Tymon/M +Tymothy/M +tympani +tympanist/SM +tympanum/SM +Tynan/M +Tyndale/M +Tyndall/M +Tyne/M +typeahead +typecast/SG +typed/AU +typedef/S +typeface/MS +typeless +type/MGDRSJ +types/A +typescript/SM +typeset/S +typesetter/MS +typesetting/SM +typewriter/M +typewrite/SRJZG +typewriting/M +typewritten +typewrote +typhoid/SM +Typhon/M +typhoon/SM +typhus/SM +typicality/MS +typically +typicalness/M +typical/U +typification/M +typify/SDNXG +typing/A +typist/MS +typographer/SM +typographic +typographical/Y +typography/MS +typological/Y +typology/MS +typo/MS +tyrannic +tyrannicalness/M +tyrannical/PY +tyrannicide/M +tyrannizer/M +tyrannize/ZGJRSD +tyrannizing/YM +tyrannosaur/MS +tyrannosaurus/S +tyrannous +tyranny/MS +tyrant/MS +Tyree/M +tyreo +Tyrolean/S +Tyrol's +Tyrone/M +tyrosine/M +tyro/SM +Tyrus/M +Tyson/M +tzarina's +tzar's +Tzeltal/M +u +U +UAR +UART +UAW +Ubangi/M +ubiquitous/YP +ubiquity/S +Ucayali/M +Uccello/M +UCLA/M +Udale/M +Udall/M +udder/SM +Udell/M +Ufa/M +ufologist/S +ufology/MS +UFO/S +Uganda/M +Ugandan/S +ugh +ughs +uglification +ugliness/MS +uglis +ugly/PTGSRD +Ugo/M +uh +UHF +Uighur +Ujungpandang/M +UK +ukase/SM +Ukraine/M +Ukrainian/S +ukulele/SM +UL +Ula/M +Ulberto/M +ulcerate/NGVXDS +ulceration/M +ulcer/MDGS +ulcerous +Ulick/M +Ulises/M +Ulla/M +Ullman/M +ulnae +ulna/M +ulnar +Ulrica/M +Ulrich/M +Ulrick/M +Ulric/M +Ulrika/M +Ulrikaumeko/M +Ulrike/M +Ulster/M +ulster/MS +ult +ulterior/Y +ultimas +ultimate/DSYPG +ultimateness/M +ultimatum/MS +ultimo +ultracentrifugally +ultracentrifugation +ultracentrifuge/M +ultraconservative/S +ultrafast +ultrahigh +ultralight/S +ultramarine/SM +ultramodern +ultramontane +ultra/S +ultrashort +ultrasonically +ultrasonic/S +ultrasonics/M +ultrasound/SM +ultrastructure/M +Ultrasuede +ultraviolet/SM +Ultrix/M +ULTRIX/M +ululate/DSXGN +ululation/M +Ulyanovsk/M +Ulysses/M +um +umbel/MS +umber/GMDS +Umberto/M +umbilical/S +umbilici +umbilicus/M +umbrage/MGSD +umbrageous +umbra/MS +umbrella/GDMS +Umbriel/M +Umeko/M +umiak/MS +umlaut/GMDS +umpire/MGSD +ump/MDSG +umpteen/H +UN +unabated/Y +unabridged/S +unacceptability +unacceptable +unaccepted +unaccommodating +unaccountability +unaccustomed/Y +unadapted +unadulterated/Y +unadventurous +unalienability +unalterableness/M +unalterable/P +unalterably +Una/M +unambiguity +unambiguous +unambitious +unamused +unanimity/SM +unanimous/Y +unanticipated/Y +unapologetic +unapologizing/M +unappeasable +unappeasably +unappreciative +unary +unassailableness/M +unassailable/P +unassertive +unassumingness/M +unassuming/PY +unauthorized/PY +unavailing/PY +unaware/SPY +unbalanced/P +unbar +unbarring +unbecoming/P +unbeknown +unbelieving/Y +unbiased/P +unbid +unbind/G +unblessed +unblinking/Y +unbodied +unbolt/G +unbreakability +unbred +unbroken +unbuckle +unbudging/Y +unburnt +uncap +uncapping +uncatalogued +uncauterized/MS +unceasing/Y +uncelebrated +uncertain/P +unchallengeable +unchangingness/M +unchanging/PY +uncharacteristic +uncharismatic +unchastity +unchristian +uncial/S +uncivilized/Y +unclassified +uncle/MSD +unclouded/Y +uncodable +uncollected +uncoloredness/M +uncolored/PY +uncombable +uncommunicative +uncompetitive +uncomplicated +uncomprehending/Y +uncompromisable +unconcerned/P +unconcern/M +unconfirmed +unconfused +unconscionableness/M +unconscionable/P +unconscionably +unconstitutional +unconsumed +uncontentious +uncontrollability +unconvertible +uncool +uncooperative +uncork/G +uncouple/G +uncouthness/M +uncouth/YP +uncreate/V +uncritical +uncross/GB +uncrowded +unction/IM +unctions +unctuousness/MS +unctuous/PY +uncustomary +uncut +undated/I +undaunted/Y +undeceive +undecided/S +undedicated +undefinability +undefinedness/M +undefined/P +undelete +undeliverability +undeniableness/M +undeniable/P +undeniably +undependable +underachiever/M +underachieve/SRDGZ +underact/GDS +underadjusting +underage/S +underarm/DGS +underbedding +underbelly/MS +underbidding +underbid/S +underbracing +underbrush/MSDG +undercarriage/MS +undercharge/GSD +underclassman +underclassmen +underclass/S +underclothes +underclothing/MS +undercoating/M +undercoat/JMDGS +underconsumption/M +undercooked +undercount/S +undercover +undercurrent/SM +undercut/S +undercutting +underdeveloped +underdevelopment/MS +underdog/MS +underdone +undereducated +underemphasis +underemployed +underemployment/SM +underenumerated +underenumeration +underestimate/NGXSD +underexploited +underexpose/SDG +underexposure/SM +underfed +underfeed/SG +underfloor +underflow/GDMS +underfoot +underfund/DG +underfur/MS +undergarment/SM +undergirding +undergoes +undergo/G +undergone +undergrad/MS +undergraduate/MS +underground/RMS +undergrowth/M +undergrowths +underhand/D +underhandedness/MS +underhanded/YP +underheat +underinvestment +underlaid +underlain/S +underlay/GS +underlie +underline/GSDJ +underling/MS +underlip/SM +underloaded +underly/GS +undermanned +undermentioned +undermine/SDG +undermost +underneath +underneaths +undernourished +undernourishment/SM +underpaid +underpants +underpart/MS +underpass/SM +underpay/GSL +underpayment/SM +underperformed +underpinned +underpinning/MS +underpin/S +underplay/SGD +underpopulated +underpopulation/M +underpowered +underpricing +underprivileged +underproduction/MS +underrate/GSD +underregistration/M +underreported +underreporting +underrepresentation/M +underrepresented +underscore/SDG +undersealed +undersea/S +undersecretary/SM +undersell/SG +undersexed +undershirt/SM +undershoot/SG +undershorts +undershot +underside/SM +undersigned/M +undersign/SGD +undersized +undersizes +undersizing +underskirt/MS +undersold +underspecification +underspecified +underspend/G +understaffed +understandability/M +understandably +understanding/YM +understand/RGSJB +understate/GSDL +understatement/MS +understocked +understood +understrength +understructure/SM +understudy/GMSD +undertaken +undertaker/M +undertake/SRGZJ +undertaking/M +underthings +undertone/SM +undertook +undertow/MS +underused +underusing +underutilization/M +underutilized +undervaluation/S +undervalue/SDG +underwater/S +underway +underwear/M +underweight/S +underwent +underwhelm/DGS +underwood/M +Underwood/M +underworld/MS +underwrite/GZSR +underwriter/M +underwritten +underwrote +under/Y +undeserving +undesigned +undeviating/Y +undialyzed/SM +undiplomatic +undiscerning +undiscriminating +undo/GJ +undoubted/Y +undramatic +undramatized/SM +undress/G +undrinkability +undrinkable +undroppable +undue +undulant +undulate/XDSNG +undulation/M +unearthliness/S +unearthly/P +unearth/YG +unease +uneconomic +uneducated +unemployed/S +unencroachable +unending/Y +unendurable/P +unenergized/MS +unenforced +unenterprising +UNESCO +unethical +uneulogized/SM +unexacting +unexceptionably +unexcited +unexpectedness/MS +unfading/Y +unfailingness/M +unfailing/P +unfamiliar +unfashionable +unfathomably +unfavored +unfeeling +unfeigned/Y +unfelt +unfeminine +unfertile +unfetchable +unflagging +unflappability/S +unflappable +unflappably +unflinching/Y +unfold/LG +unfoldment/M +unforced +unforgeable +unfossilized/MS +unfraternizing/SM +unfrozen +unfulfillable +unfunny +unfussy +ungainliness/MS +ungainly/PRT +Ungava/M +ungenerous +ungentle +unglamorous +ungrammaticality +ungrudging +unguent/MS +ungulate/MS +unharmonious +unharness/G +unhistorical +unholy/TP +unhook/DG +unhydrolyzed/SM +unhygienic +Unibus/M +unicameral +UNICEF +unicellular +Unicode/M +unicorn/SM +unicycle/MGSD +unicyclist/MS +unideal +unidimensional +unidiomatic +unidirectionality +unidirectional/Y +unidolized/MS +unifiable +unification/MA +unifier/MS +unifilar +uniformity/MS +uniformness/M +uniform/TGSRDYMP +unify/AXDSNG +unilateralism/M +unilateralist +unilateral/Y +unimodal +unimpeachably +unimportance +unimportant +unimpressive +unindustrialized/MS +uninhibited/YP +uninominal +uninsured +unintellectual +unintended +uninteresting +uninterruptedness/M +uninterrupted/YP +unintuitive +uninviting +union/AEMS +unionism/SM +unionist/SM +Unionist/SM +unionize +Union/MS +UniPlus/M +unipolar +uniprocessor/SM +uniqueness/S +unique/TYSRP +Uniroyal/M +unisex/S +UniSoft/M +unison/MS +Unisys/M +unitarianism/M +Unitarianism/SM +unitarian/MS +Unitarian/MS +unitary +unite/AEDSG +united/Y +uniter/M +unitize/GDS +unit/VGRD +unity/SEM +univ +Univac/M +univalent/S +univalve/MS +univariate +universalism/M +universalistic +universality/SM +universalize/DSRZG +universalizer/M +universal/YSP +universe/MS +university/MS +Unix/M +UNIX/M +unjam +unkempt +unkind/TP +unkink +unknightly +unknowable/S +unknowing +unlabored +unlace/G +unlearn/G +unlikeable +unlikeliness/S +unlimber/G +unlimited +unlit +unliterary +unloose/G +unlucky/TP +unmagnetized/MS +unmanageably +unmannered/Y +unmask/G +unmeaning +unmeasured +unmeetable +unmelodious +unmemorable +unmemorialized/MS +unmentionable/S +unmerciful +unmeritorious +unmethodical +unmineralized/MS +unmissable +unmistakably +unmitigated/YP +unmnemonic +unmobilized/SM +unmoral +unmount/B +unmovable +unmoving +unnaturalness/M +unnavigable +unnerving/Y +unobliging +unoffensive +unofficial +unorganized/YP +unorthodox +unpack/G +unpaintable +unpalatability +unpalatable +unpartizan +unpatronizing +unpeople +unperceptive +unperson +unperturbed/Y +unphysical +unpick/G +unpicturesque +unpinning +unpleasing +unploughed +unpolarized/SM +unpopular +unpractical +unprecedented/Y +unpredictable/S +unpreemphasized +unpremeditated +unpretentiousness/M +unprincipled/P +unproblematic +unproductive +unpropitious +unprovable +unproven +unprovocative +unpunctual +unquestionable +unraisable +unravellings +unreadability +unread/B +unreal +unrealizable +unreasoning/Y +unreceptive +unrecordable +unreflective +unrelenting/Y +unremitting/Y +unrepeatability +unrepeated +unrepentant +unreported +unrepresentative +unreproducible +unrest/G +unrestrained/P +unrewarding +unriddle +unripe/P +unromantic +unruliness/SM +unruly/PTR +unsaleable +unsanitary +unsavored/YP +unsavoriness/M +unseal/GB +unsearchable +unseasonal +unseeing/Y +unseen/S +unselfconsciousness/M +unselfconscious/P +unselfishness/M +unsellable +unsentimental +unset +unsettledness/M +unsettled/P +unsettling/Y +unshapely +unshaven +unshorn +unsighted +unsightliness/S +unskilful +unsociability +unsociable/P +unsocial +unsound/PT +unspeakably +unspecific +unspectacular +unspoilt +unspoke +unsporting +unstable/P +unstigmatized/SM +unstilted +unstinting/Y +unstopping +unstrapping +unstudied +unstuffy +unsubdued +unsubstantial +unsubtle +unsuitable +unsuspecting/Y +unswerving/Y +unsymmetrical +unsympathetic +unsystematic +unsystematized/Y +untactful +untalented +untaxing +unteach/B +untellable +untenable +unthinking +until/G +untiring/Y +unto +untouchable/MS +untowardness/M +untoward/P +untraceable +untrue +untruthfulness/M +untwist/G +Unukalhai/M +unusualness/M +unutterable +unutterably +unvocalized/MS +unvulcanized/SM +unwaivering +unwarrantable +unwarrantably +unwashed/PS +unwearable +unwearied/Y +unwed +unwedge +unwelcome +unwell/M +unwieldiness/MS +unwieldy/TPR +unwind/B +unwomanly +unworkable/S +unworried +unwrap +unwrapping +unyielding/Y +unyoke +unzip +up +Upanishads +uparrow +upbeat/SM +upbraid/GDRS +upbringing/M +upbring/JG +UPC +upchuck/SDG +upcome/G +upcountry/S +updatability +updater/M +update/RSDG +Updike/M +updraft/SM +upend/SDG +upfield +upfront +upgradeable +upgrade/DSJG +upheaval/MS +upheld +uphill/S +upholder/M +uphold/RSGZ +upholster/ADGS +upholsterer/SM +upholstery/MS +UPI +upkeep/SM +uplander/M +upland/MRS +uplifter/M +uplift/SJDRG +upload/GSD +upmarket +upon +upped +uppercase/GSD +upperclassman/M +upperclassmen +uppercut/S +uppercutting +uppermost +upper/S +upping +uppish +uppity +upraise/GDS +uprated +uprating +uprear/DSG +upright/DYGSP +uprightness/S +uprise/RGJ +uprising/M +upriver/S +uproariousness/M +uproarious/PY +uproar/MS +uproot/DRGS +uprooter/M +ups +UPS +upscale/GDS +upset/S +upsetting/MS +upshot/SM +upside/MS +upsilon/MS +upslope +upstage/DSRG +upstairs +upstandingness/M +upstanding/P +upstart/MDGS +upstate/SR +upstream/DSG +upstroke/MS +upsurge/DSG +upswing/GMS +upswung +uptake/SM +upthrust/GMS +uptight +uptime +Upton/M +uptown/RS +uptrend/M +upturn/GDS +upwardness/M +upward/SYP +upwelling +upwind/S +uracil/MS +Ural/MS +Urania/M +uranium/MS +Uranus/M +uranyl/M +Urbain/M +Urbana/M +urbane/Y +urbanism/M +urbanite/SM +urbanity/SM +urbanization/MS +urbanize/DSG +Urban/M +urbanologist/S +urbanology/S +Urbano/M +urban/RT +Urbanus/M +urchin/SM +Urdu/M +urea/SM +uremia/MS +uremic +ureter/MS +urethane/MS +urethrae +urethral +urethra/M +urethritis/M +Urey/M +urge/GDRSJ +urgency/SM +urgent/Y +urger/M +Uriah/M +uric +Uriel/M +urinal/MS +urinalyses +urinalysis/M +urinary/MS +urinate/XDSNG +urination/M +urine/MS +Uri/SM +URL +Ur/M +urning/M +urn/MDGS +urogenital +urological +urologist/S +urology/MS +Urquhart/M +Ursala/M +Ursa/M +ursine +Ursola/M +Urson/M +Ursula/M +Ursulina/M +Ursuline/M +urticaria/MS +Uruguayan/S +Uruguay/M +Urumqi +US +USA +usability/S +usable/U +usably/U +USAF +usage/SM +USART +USCG +USC/M +USDA +us/DRSBZG +used/U +use/ESDAG +usefulness/SM +useful/YP +uselessness/MS +useless/PY +Usenet/M +Usenix/M +user/M +USG/M +usherette/SM +usher/SGMD +USIA +USMC +USN +USO +USP +USPS +USS +USSR +Ustinov/M +usu +usuals +usual/UPY +usurer/SM +usuriousness/M +usurious/PY +usurpation/MS +usurper/M +usurp/RDZSG +usury/SM +UT +Utahan/SM +Utah/M +Uta/M +Ute/M +utensil/SM +uteri +uterine +uterus/M +Utica/M +utile/I +utilitarianism/MS +utilitarian/S +utility/MS +utilization/MS +utilization's/A +utilize/GZDRS +utilizer/M +utilizes/A +utmost/S +Utopia/MS +utopianism/M +utopian's +Utopian/S +utopia/S +Utrecht/M +Utrillo/M +utterance/MS +uttered/U +utterer/M +uttermost/S +utter/TRDYGS +uucp/M +UV +uvula/MS +uvular/S +uxorious +Uzbekistan +Uzbek/M +Uzi/M +V +VA +vacancy/MS +vacantness/M +vacant/PY +vacate/NGXSD +vacationist/SM +vacationland +vacation/MRDZG +vaccinate/NGSDX +vaccination/M +vaccine/SM +vaccinial +vaccinia/M +Vachel/M +vacillate/XNGSD +vacillating/Y +vacillation/M +vacillator/SM +Vaclav/M +vacua's +vacuity/MS +vacuo +vacuolated/U +vacuolate/SDGN +vacuole/SM +vacuolization/SM +vacuousness/MS +vacuous/PY +vacuum/GSMD +Vader/M +Vaduz/M +vagabondage/MS +vagabond/DMSG +vagarious +vagary/MS +vaginae +vaginal/Y +vagina/M +vagrancy/MS +vagrant/SMY +vagueing +vagueness/MS +vague/TYSRDP +Vail/M +vaingloriousness/M +vainglorious/YP +vainglory/MS +vain/TYRP +val +valance/SDMG +Valaree/M +Valaria/M +Valarie/M +Valdemar/M +Valdez/M +Valeda/M +valediction/MS +valedictorian/MS +valedictory/MS +Vale/M +valence/SM +Valencia/MS +valency/MS +Valene/M +Valenka/M +Valentia/M +Valentijn/M +Valentina/M +Valentine/M +valentine/SM +Valentin/M +Valentino/M +Valenzuela/M +Valera/M +Valeria/M +Valerian/M +Valerie/M +Valerye/M +Valry/M +vale/SM +valet/GDMS +valetudinarianism/MS +valetudinarian/MS +Valhalla/M +valiance/S +valiantness/M +valiant/SPY +Valida/M +validated/AU +validate/INGSDX +validates/A +validation/AMI +validity/IMS +validnesses +validness/MI +valid/PIY +Valina/M +valise/MS +Valium/S +Valkyrie/SM +Vallejo +Valle/M +Valletta/M +valley/SM +Vallie/M +Valli/M +Vally/M +Valma/M +Val/MY +Valois/M +valor/MS +valorous/Y +Valparaiso/M +Valry/M +valuable/IP +valuableness/IM +valuables +valuably/I +valuate/NGXSD +valuation/CSAM +valuator/SM +value/CGASD +valued/U +valuelessness/M +valueless/P +valuer/SM +value's +values/E +valve/GMSD +valveless +valvular +Va/M +vamoose/GSD +vamp/ADSG +vamper +vampire/MGSD +vamp's +vanadium/MS +Vance/M +Vancouver/M +vandalism/MS +vandalize/GSD +vandal/MS +Vandal/MS +Vanda/M +Vandenberg/M +Vanderbilt/M +Vanderburgh/M +Vanderpoel/M +Vandyke/SM +vane/MS +Vanessa/M +Vang/M +vanguard/MS +Vania/M +vanilla/MS +vanisher/M +vanish/GRSDJ +vanishing/Y +vanity/SM +Van/M +Vanna/M +vanned +Vannie/M +Vanni/M +vanning +Vanny/M +vanquisher/M +vanquish/RSDGZ +van/SMD +vantage/MS +Vanuatu +Vanya/M +Vanzetti/M +vapidity/MS +vapidness/SM +vapid/PY +vaporer/M +vaporing/MY +vaporisation +vaporise/DSG +vaporization/AMS +vaporize/DRSZG +vaporizer/M +vapor/MRDJGZS +vaporous +vapory +vaquero/SM +VAR +Varanasi/M +Varese/M +Vargas/M +variability/IMS +variableness/IM +variable/PMS +variables/I +variably/I +variance/I +variances +variance's +Varian/M +variant/ISY +variate/MGNSDX +variational +variation/M +varicolored/MS +varicose/S +variedly +varied/U +variegate/NGXSD +variegation/M +varier/M +varietal/S +variety/MS +various/PY +varistor/M +Varityping/M +varlet/MS +varmint/SM +varnished/U +varnisher/M +varnish/ZGMDRS +var/S +varsity/MS +varying/UY +vary/SRDJG +vascular +vasectomy/SM +Vaseline/DSMG +vase/SM +Vasili/MS +Vasily/M +vasomotor +Vasquez/M +vassalage/MS +vassal/GSMD +Vassar/M +Vassili/M +Vassily/M +vastness/MS +vast/PTSYR +v/ASV +VAT +Vatican/M +vat/SM +vatted +vatting +vaudeville/SM +vaudevillian/SM +Vaudois +Vaughan/M +Vaughn/M +vaulter/M +vaulting/M +vault/ZSRDMGJ +vaunter/M +vaunt/GRDS +VAXes +Vax/M +VAX/M +Vazquez/M +vb +VCR +VD +VDT +VDU +vealed/A +vealer/MA +veal/MRDGS +veals/A +Veblen/M +vectorial +vectorization +vectorized +vectorizing +vector's/F +vector/SGDM +Veda/MS +Vedanta/M +veejay/S +veep/S +veer/DSG +veering/Y +vegan/SM +Vega/SM +Vegemite/M +veges +vegetable/MS +vegetarianism/MS +vegetarian/SM +vegetate/DSNGVX +vegetation/M +vegetative/PY +vegged +veggie/S +vegging +veg/M +vehemence/MS +vehemency/S +vehement/Y +vehicle/SM +vehicular +veiling/MU +veil's +veil/UGSD +vein/GSRDM +veining/M +vela/M +Vela/M +velarize/SDG +velar/S +Velsquez/M +Velzquez +Velcro/SM +veld/SM +veldt's +Velez/M +Vella/M +vellum/MS +Velma/M +velocipede/SM +velocity/SM +velor/S +velour's +velum/M +Velveeta/M +velveteen/MS +velvet/GSMD +Velvet/M +velvety/RT +venality/MS +venal/Y +venation/SM +vend/DSG +vender's/K +vendetta/MS +vendible/S +vendor/MS +veneerer/M +veneer/GSRDM +veneering/M +venerability/S +venerable/P +venerate/XNGSD +veneration/M +venereal +venetian +Venetian/SM +Venezuela/M +Venezuelan/S +vengeance/MS +vengeful/APY +vengefulness/AM +venialness/M +venial/YP +Venice/M +venireman/M +veniremen +venison/SM +Venita/M +Venn/M +venomousness/M +venomous/YP +venom/SGDM +venous/Y +venter/M +ventilated/U +ventilate/XSDVGN +ventilation/M +ventilator/MS +vent/ISGFD +ventral/YS +ventricle/MS +ventricular +ventriloquies +ventriloquism/MS +ventriloquist/MS +ventriloquy +vent's/F +Ventura/M +venture/RSDJZG +venturesomeness/SM +venturesome/YP +venturi/S +venturousness/MS +venturous/YP +venue/MAS +Venusian/S +Venus/S +veraciousness/M +veracious/YP +veracities +veracity/IM +Veracruz/M +Veradis +Vera/M +verandahed +veranda/SDM +verbalization/MS +verbalized/U +verbalizer/M +verbalize/ZGRSD +verballed +verballing +verbal/SY +verbatim +verbena/MS +verbiage/SM +verb/KSM +verbose/YP +verbosity/SM +verboten +verdant/Y +Verde/M +Verderer/M +verdict/SM +verdigris/GSDM +Verdi/M +verdure/SDM +Vere/M +Verena/M +Verene/M +verge/FGSD +Verge/M +verger/SM +verge's +Vergil's +veridical/Y +Veriee/M +verifiability/M +verifiableness/M +verifiable/U +verification/S +verified/U +verifier/MS +verify/GASD +Verile/M +verily +Verina/M +Verine/M +verisimilitude/SM +veritableness/M +veritable/P +veritably +verity/MS +Verlag/M +Verlaine/M +Verla/M +Vermeer/M +vermicelli/MS +vermiculite/MS +vermiform +vermilion/MS +vermin/M +verminous +Vermonter/M +Vermont/ZRM +vermouth/M +vermouths +vernacular/YS +vernal/Y +Verna/M +Verne/M +Vernen/M +Verney/M +Vernice/M +vernier/SM +Vern/NM +Vernon/M +Vernor/M +Verona/M +Veronese/M +Veronica/M +veronica/SM +Veronika/M +Veronike/M +Veronique/M +verrucae +verruca/MS +versa +Versailles/M +Versatec/M +versatileness/M +versatile/YP +versatility/SM +versed/UI +verse's +verses/I +verse/XSRDAGNF +versicle/M +versification/M +versifier/M +versify/GDRSZXN +versing/I +version/MFISA +verso/SM +versus +vertebrae +vertebral/Y +vertebra/M +vertebrate/IMS +vertebration/M +vertex/SM +vertical/YPS +vertices's +vertiginous +vertigoes +vertigo/M +verve/SM +very/RT +Vesalius/M +vesicle/SM +vesicular/Y +vesiculate/GSD +Vespasian/M +vesper/SM +Vespucci/M +vessel/MS +vestal/YS +Vesta/M +vest/DIGSL +vestibular +vestibule/SDM +vestige/SM +vestigial/Y +vesting/SM +vestment/ISM +vestryman/M +vestrymen +vestry/MS +vest's +vesture/SDMG +Vesuvius/M +vetch/SM +veteran/SM +veterinarian/MS +veterinary/S +veter/M +veto/DMG +vetoes +vet/SMR +vetted +vetting/A +Vevay/M +vexation/SM +vexatiousness/M +vexatious/PY +vexed/Y +vex/GFSD +VF +VFW +VG +VGA +vhf +VHF +VHS +VI +via +viability/SM +viable/I +viably +viaduct/MS +Viagra/M +vial/MDGS +viand/SM +vibe/S +vibraharp/MS +vibrancy/MS +vibrant/YS +vibraphone/MS +vibraphonist/SM +vibrate/XNGSD +vibrational/Y +vibration/M +vibrato/MS +vibrator/SM +vibratory +vibrio/M +vibrionic +viburnum/SM +vicarage/SM +vicariousness/MS +vicarious/YP +vicar/SM +vice/CMS +viced +vicegerent/MS +vicennial +Vicente/M +viceregal +viceroy/SM +Vichy/M +vichyssoise/MS +vicing +vicinity/MS +viciousness/S +vicious/YP +vicissitude/MS +Vickers/M +Vickie/M +Vicki/M +Vicksburg/M +Vicky/M +Vick/ZM +Vic/M +victimization/SM +victimized/U +victimizer/M +victimize/SRDZG +victim/SM +Victoir/M +Victoria/M +Victorianism/S +Victorian/S +victoriousness/M +victorious/YP +Victor/M +victor/SM +victory/MS +Victrola/SM +victualer/M +victual/ZGSDR +vicua/S +Vidal/M +Vida/M +videlicet +videocassette/S +videoconferencing +videodisc/S +videodisk/SM +video/GSMD +videophone/SM +videotape/SDGM +Vidovic/M +Vidovik/M +Vienna/M +Viennese/M +Vientiane/M +vier/M +vie/S +Vietcong/M +Viet/M +Vietminh/M +Vietnamese/M +Vietnam/M +viewed/A +viewer/AS +viewer's +viewfinder/MS +viewgraph/SM +viewing/M +viewless/Y +view/MBGZJSRD +viewpoint/SM +views/A +vigesimal +vigilance/MS +vigilante/SM +vigilantism/MS +vigilantist +vigilant/Y +vigil/SM +vignette/MGDRS +vignetter/M +vignetting/M +vignettist/MS +vigor/MS +vigorousness/M +vigorous/YP +vii +viii +Vijayawada/M +Viki/M +Viking/MS +viking/S +Vikki/M +Vikky/M +Vikram/M +Vila +vile/AR +vilely +vileness/MS +vilest +Vilhelmina/M +vilification/M +vilifier/M +vilify/GNXRSD +villager/M +village/RSMZ +villainousness/M +villainous/YP +villain/SM +villainy/MS +Villa/M +villa/MS +Villarreal/M +ville +villeinage/SM +villein/MS +villi +Villon/M +villus/M +Vilma/M +Vilnius/M +Vilyui/M +Vi/M +vi/MDR +vim/MS +vinaigrette/MS +Vina/M +Vince/M +Vincent/MS +Vincenty/M +Vincenz/M +vincible/I +Vinci/M +Vindemiatrix/M +vindicate/XSDVGN +vindication/M +vindicator/SM +vindictiveness/MS +vindictive/PY +vinegar/DMSG +vinegary +vine/MGDS +vineyard/SM +Vinita/M +Vin/M +Vinnie/M +Vinni/M +Vinny/M +vino/MS +vinous +Vinson/M +vintage/MRSDG +vintager/M +vintner/MS +vinyl/SM +violable/I +Viola/M +Violante/M +viola/SM +violate/VNGXSD +violator/MS +Viole/M +violence/SM +violent/Y +Violet/M +violet/SM +Violetta/M +Violette/M +violinist/SM +violin/MS +violist/MS +viol/MSB +violoncellist/S +violoncello/MS +viper/MS +viperous +VIP/S +viragoes +virago/M +viral/Y +vireo/SM +Virge/M +Virgie/M +Virgilio/M +Virgil/M +virginal/YS +Virgina/M +Virginia/M +Virginian/S +Virginie/M +virginity/SM +virgin/SM +Virgo/MS +virgule/MS +virile +virility/MS +virologist/S +virology/SM +virtual/Y +virtue/SM +virtuosity/MS +virtuosoes +virtuoso/MS +virtuousness/SM +virtuous/PY +virulence/SM +virulent/Y +virus/MS +visage/MSD +Visakhapatnam's +Visa/M +visa/SGMD +Visayans +viscera +visceral/Y +viscid/Y +viscoelastic +viscoelasticity +viscometer/SM +viscose/MS +viscosity/MS +viscountcy/MS +viscountess/SM +viscount/MS +viscousness/M +viscous/PY +viscus/M +vise/CAXNGSD +viselike +vise's +Vishnu/M +visibility/ISM +visible/PI +visibly/I +Visigoth/M +Visigoths +visionariness/M +visionary/PS +vision/KMDGS +vision's/A +visitable/U +visitant/SM +visitation/SM +visited/U +visit/GASD +visitor/MS +vis/MDSGV +visor/SMDG +VISTA +vista/GSDM +Vistula/M +visualization/AMS +visualized/U +visualizer/M +visualizes/A +visualize/SRDZG +visual/SY +vitae +vitality/MS +vitalization/AMS +vitalize/ASDGC +vital/SY +vita/M +Vita/M +vitamin/SM +Vite/M +Vitia/M +vitiate/XGNSD +vitiation/M +viticulture/SM +viticulturist/S +Vitim/M +Vito/M +Vitoria/M +vitreous/YSP +vitrifaction/S +vitrification/M +vitrify/XDSNG +vitrine/SM +vitriolic +vitriol/MDSG +vitro +vittles +Vittoria/M +Vittorio/M +vituperate/SDXVGN +vituperation/M +vituperative/Y +Vitus/M +vivace/S +vivaciousness/MS +vivacious/YP +vivacity/SM +viva/DGS +Vivaldi +Viva/M +vivaria +vivarium/MS +vivaxes +Vivekananda/M +vive/Z +Vivia/M +Viviana/M +Vivian/M +Vivianna/M +Vivianne/M +vividness/SM +vivid/PTYR +Vivie/M +Viviene/M +Vivien/M +Vivienne/M +vivifier +vivify/NGASD +Vivi/MN +viviparous +vivisect/DGS +vivisectional +vivisectionist/SM +vivisection/MS +Viviyan/M +Viv/M +vivo +Vivyan/M +Vivyanne/M +vixenish/Y +vixen/SM +viz +vizier/MS +vizor's +VJ +Vladamir/M +Vladimir/M +Vladivostok/M +Vlad/M +VLF +VLSI +VMS/M +VOA +vocable/SM +vocab/S +vocabularian +vocabularianism +vocabulary/MS +vocalic/S +vocalise's +vocalism/M +vocalist/MS +vocalization/SM +vocalized/U +vocalizer/M +vocalize/ZGDRS +vocal/SY +vocation/AKMISF +vocational/Y +vocative/KYS +vociferate/NGXSD +vociferation/M +vociferousness/MS +vociferous/YP +vocoded +vocoder +vodka/MS +voe/S +Vogel/M +vogue/GMSRD +vogueing +voguish +voiceband +voiced/CU +voice/IMGDS +voicelessness/SM +voiceless/YP +voicer/S +voices/C +voicing/C +voidable +void/C +voided +voider/M +voiding +voidness/M +voids +voil +voile/MS +volar +volatileness/M +volatile/PS +volatility/MS +volatilization/MS +volatilize/SDG +volcanically +volcanic/S +volcanism/M +volcanoes +volcano/M +vole/MS +Volga/M +Volgograd/M +vol/GSD +volitionality +volitional/Y +volition/MS +Volkswagen/SM +volleyball/MS +volleyer/M +volley/SMRDG +Vol/M +Volstead/M +voltage/SM +voltaic +Voltaire/M +Volta/M +volt/AMS +Volterra/M +voltmeter/MS +volubility/S +voluble/P +volubly +volume/SDGM +volumetric +volumetrically +voluminousness/MS +voluminous/PY +voluntarily/I +voluntariness/MI +voluntarism/MS +voluntary/PS +volunteer/DMSG +voluptuary/SM +voluptuousness/S +voluptuous/YP +volute/S +Volvo/M +vomit/GRDS +Vonda/M +Von/M +Vonnegut/M +Vonnie/M +Vonni/M +Vonny/M +voodoo/GDMS +voodooism/S +voraciousness/MS +voracious/YP +voracity/MS +Voronezh/M +Vorster/M +vortex/SM +vortices's +vorticity/M +votary/MS +vote/CSDG +voter/SM +vote's +votive/YP +voucher/GMD +vouchsafe/SDG +vouch/SRDGZ +vowelled +vowelling +vowel/MS +vower/M +vow/SMDRG +voyage/GMZJSRD +voyager/M +voyageur/SM +voyeurism/MS +voyeuristic +voyeur/MS +VP +vs +V's +VT +Vt/M +VTOL +vulcanization/SM +vulcanized/U +vulcanize/SDG +Vulcan/M +vulgarian/MS +vulgarism/MS +vulgarity/MS +vulgarization/S +vulgarize/GZSRD +vulgar/TSYR +Vulgate/SM +Vulg/M +vulnerability/SI +vulnerable/IP +vulnerably/I +vulpine +vulturelike +vulture/SM +vulturous +vulvae +vulva/M +vying +Vyky/M +WA +Waals +Wabash/M +WAC +Wacke/M +wackes +wackiness/MS +wacko/MS +wacky/RTP +Waco/M +Wac/S +wadded +wadding/SM +waddle/GRSD +Wade/M +wader/M +wade/S +wadi/SM +wad/MDRZGS +Wadsworth/M +wafer/GSMD +waffle/GMZRSD +Wafs +wafter/M +waft/SGRD +wag/DRZGS +waged/U +wager/GZMRD +wage/SM +wagged +waggery/MS +wagging +waggishness/SM +waggish/YP +waggle/SDG +waggly +Wagnerian +Wagner/M +wagoner/M +wagon/SGZMRD +wagtail/SM +Wahl/M +waif/SGDM +Waikiki/M +wailer/M +wail/SGZRD +wain/GSDM +Wain/M +wainscot/SGJD +Wainwright/M +wainwright/SM +waistband/MS +waistcoat/GDMS +waister/M +waist/GSRDM +waistline/MS +Waite/M +waiter/DMG +Waiter/M +wait/GSZJRD +Wait/MR +waitpeople +waitperson/S +waitress/GMSD +waiver/MB +waive/SRDGZ +Wakefield/M +wakefulness/MS +wakeful/PY +Wake/M +wake/MGDRSJ +waken/SMRDG +waker/M +wakeup +Waksman/M +Walbridge/M +Walcott/M +Waldemar/M +Walden/M +Waldensian +Waldheim/M +Wald/MN +Waldo/M +Waldon/M +Waldorf/M +wale/DRSMG +Wales +Walesa/M +Walford/M +Walgreen/M +waling/M +walkabout/M +walkaway/SM +walker/M +Walker/M +walk/GZSBJRD +walkie +Walkman/S +walkout/SM +walkover/SM +walkway/MS +wallaby/MS +Wallace/M +Wallache/M +wallah/M +Wallas/M +wallboard/MS +Wallenstein/M +Waller/M +wallet/SM +walleye/MSD +wallflower/MS +Wallie/M +Wallis +Walliw/M +Walloon/SM +walloper/M +walloping/M +wallop/RDSJG +wallower/M +wallow/RDSG +wallpaper/DMGS +wall/SGMRD +Wall/SMR +Wally/M +wally/S +walnut/SM +Walpole/M +Walpurgisnacht +walrus/SM +Walsh/M +Walter/M +Walther/M +Walton/M +waltzer/M +Walt/ZMR +waltz/MRSDGZ +Walworth/M +Waly/M +wampum/SM +Wanamaker/M +Wanda/M +wanderer/M +wander/JZGRD +wanderlust/SM +Wandie/M +Wandis/M +wand/MRSZ +wane/S +Waneta/M +wangler/M +wangle/RSDGZ +Wang/M +Wanids/M +Wankel/M +wanna +wannabe/S +wanned +wanner +wanness/S +wannest +wanning +wan/PGSDY +Wansee/M +Wansley/M +wanted/U +wanter/M +want/GRDSJ +wantonness/S +wanton/PGSRDY +wapiti/MS +warble/GZRSD +warbler/M +warbonnet/S +ward/AGMRDS +Warde/M +warden/DMGS +Warden/M +warder/DMGS +Ward/MN +wardrobe/MDSG +wardroom/MS +wardship/M +wards/I +warehouseman/M +warehouse/MGSRD +Ware/MG +ware/MS +warfare/SM +Warfield/M +war/GSMD +warhead/MS +Warhol/M +warhorse/SM +warily/U +warinesses/U +wariness/MS +Waring/M +warless +warlike +warlock/SM +warlord/MS +warmblooded +warmed/A +warmer/M +warmheartedness/SM +warmhearted/PY +warmish +warmness/MS +warmongering/M +warmonger/JGSM +warms/A +warmth/M +warmths +warm/YRDHPGZTS +warned/U +warner/M +Warner/M +warn/GRDJS +warning/YM +Warnock/M +warpaint +warpath/M +warpaths +warper/M +warplane/MS +warp/MRDGS +warranted/U +warranter/M +warrant/GSMDR +warranty/SDGM +warred/M +warrener/M +Warren/M +warren/SZRM +warring/M +warrior/MS +Warsaw/M +wars/C +warship/MS +warthog/S +wartime/SM +wart/MDS +warty/RT +Warwick/M +wary/URPT +Wasatch/M +washable/S +wash/AGSD +washbasin/SM +washboard/SM +washbowl/SM +Washburn/M +washcloth/M +washcloths +washday/M +washed/U +washer/GDMS +washerwoman/M +washerwomen +washing/SM +Washingtonian/S +Washington/M +Wash/M +Washoe/M +washout/SM +washrag/SM +washroom/MS +washstand/SM +washtub/MS +washy/RT +wasn't +WASP +waspishness/SM +waspish/PY +Wasp's +wasp/SM +was/S +wassail/GMDS +Wasserman/M +Wassermann/M +wastage/SM +wastebasket/SM +wastefulness/S +wasteful/YP +wasteland/MS +wastepaper/MS +waster/DG +waste/S +wastewater +wast/GZSRD +wasting/Y +wastrel/MS +Watanabe/M +watchable/U +watchband/SM +watchdogged +watchdogging +watchdog/SM +watched/U +watcher/M +watchfulness/MS +watchful/PY +watch/JRSDGZB +watchmake/JRGZ +watchmaker/M +watchman/M +watchmen +watchpoints +watchtower/MS +watchword/MS +waterbird/S +waterborne +Waterbury/M +watercolor/DMGS +watercolorist/SM +watercourse/SM +watercraft/M +watercress/SM +waterer/M +waterfall/SM +waterfowl/M +waterfront/SM +Watergate/M +waterhole/S +Waterhouse/M +wateriness/SM +watering/M +water/JGSMRD +waterless +waterlily/S +waterline/S +waterlogged +waterloo +Waterloo/SM +waterman/M +watermark/GSDM +watermelon/SM +watermill/S +waterproof/PGRDSJ +watershed/SM +waterside/MSR +watersider/M +Waters/M +waterspout/MS +watertightness/M +watertight/P +Watertown/M +waterway/MS +waterwheel/S +waterworks/M +watery/PRT +Watkins +WATS +Watson/M +wattage/SM +Watteau/M +Wattenberg/M +Watterson/M +wattle/SDGM +Watt/MS +watt/TMRS +Watusi/M +Wat/ZM +Waugh/M +Waukesha/M +Waunona/M +Waupaca/M +Waupun/M +Wausau/M +Wauwatosa/M +waveband/MS +waveform/SM +wavefront/MS +waveguide/MS +Waveland/M +wavelength/M +wavelengths +wavelet/SM +wavelike +wavenumber +waver/GZRD +wavering/YU +Waverley/M +Waverly/M +Wave/S +wave/ZGDRS +wavily +waviness/MS +wavy/SRTP +waxer/M +waxiness/MS +wax/MNDRSZG +waxwing/MS +waxwork/MS +waxy/PRT +wayfarer/MS +wayfaring/S +waylaid +Wayland/M +Waylan/M +waylayer/M +waylay/GRSZ +wayleave/MS +Waylen/M +Waylin/M +Waylon/M +Way/M +waymarked +way/MS +Wayne/M +Waynesboro/M +wayside/MS +waywardness/S +wayward/YP +WC +we +weakener/M +weaken/ZGRD +weakfish/SM +weakish +weakliness/M +weakling/SM +weakly/RTP +weakness/MS +weak/TXPYRN +weal/MHS +wealthiness/MS +wealth/M +wealths +wealthy/PTR +weaner/M +weanling/M +wean/RDGS +weapon/GDMS +weaponless +weaponry/MS +wearable/S +wearer/M +wearied/U +wearily +weariness/MS +wearing/Y +wearisomeness/M +wearisome/YP +wear/RBSJGZ +wearying/Y +weary/TGPRSD +weasel/SGMDY +weatherbeaten +weathercock/SDMG +weatherer/M +Weatherford/M +weathering/M +weatherize/GSD +weatherman/M +weather/MDRYJGS +weathermen +weatherperson/S +weatherproof/SGPD +weatherstripped +weatherstripping/S +weatherstrip/S +weaver/M +Weaver/M +weaves/A +weave/SRDGZ +weaving/A +webbed +Webber/M +webbing/MS +Webb/RM +weber/M +Weber/M +Webern/M +webfeet +webfoot/M +Web/MR +website/S +web/SMR +Webster/MS +Websterville/M +we'd +wedded/A +Weddell/M +wedder +wedding/SM +wedge/SDGM +wedgie/RST +Wedgwood/M +wedlock/SM +Wed/M +Wednesday/SM +wed/SA +weeder/M +weediness/M +weedkiller/M +weedless +wee/DRST +weed/SGMRDZ +weedy/TRP +weeing +weekday/MS +weekender/M +weekend/SDRMG +weekly/S +weeknight/SM +Weeks/M +week/SYM +weenie/M +ween/SGD +weeny/RSMT +weeper/M +weep/SGZJRD +weepy/RST +weevil/MS +weft/SGMD +Wehr/M +Weibull/M +Weidar/M +Weider/M +Weidman/M +Weierstrass/M +weighed/UA +weigher/M +weigh/RDJG +weighs/A +weighted/U +weighter/M +weightily +weightiness/SM +weighting/M +weight/JMSRDG +weightlessness/SM +weightless/YP +weightlifter/S +weightlifting/MS +weighty/TPR +Weill/M +Wei/M +Weinberg/M +Weiner/M +Weinstein/M +weirdie/SM +weirdness/MS +weirdo/SM +weird/YRDPGTS +weir/SDMG +Weisenheimer/M +Weiss/M +Weissman/M +Weissmuller/M +Weizmann/M +Welbie/M +Welby/M +Welcher/M +Welches +welcomeness/M +welcome/PRSDYG +welcoming/U +welder/M +Weldon/M +weld/SBJGZRD +Weldwood/M +welfare/SM +welkin/SM +we'll +Welland/M +wellbeing/M +Weller/M +Wellesley/M +Welles/M +wellhead/SM +Wellington/MS +wellington/S +Wellman/M +wellness/MS +well/SGPD +Wells/M +wellspring/SM +Wellsville/M +Welmers/M +Welsh +welsher/M +Welshman/M +Welshmen +welsh/RSDGZ +Welshwoman/M +Welshwomen +welter/GD +welterweight/MS +welt/GZSMRD +wencher/M +wench/GRSDM +Wendall/M +Wenda/M +wend/DSG +Wendeline/M +Wendell/M +Wendel/M +Wendie/M +Wendi/M +Wendye/M +Wendy/M +wen/M +Wenonah/M +Wenona/M +went +Wentworth/M +wept/U +were +we're +weren't +werewolf/M +werewolves +Werner/M +Wernher/M +Werther/M +werwolf's +Wes +Wesleyan +Wesley/M +Wessex/M +Wesson/M +westbound +Westbrooke/M +Westbrook/M +Westchester/M +wester/DYG +westerly/S +westerner/M +westernization/MS +westernize/GSD +westernmost +Western/ZRS +western/ZSR +Westfield/M +Westhampton/M +Westinghouse/M +westing/M +Westleigh/M +Westley/M +Westminster/M +Westmore/M +West/MS +Weston/M +Westphalia/M +Westport/M +west/RDGSM +westward/S +Westwood/M +wetback/MS +wetland/S +wetness/MS +wet/SPY +wettable +wetter/S +wettest +wetting +we've +Weyden/M +Weyerhauser/M +Weylin/M +Wezen/M +WFF +whacker/M +whack/GZRDS +whaleboat/MS +whalebone/SM +whale/GSRDZM +Whalen/M +whaler/M +whaling/M +whammed +whamming/M +wham/MS +whammy/S +wharf/SGMD +Wharton/M +wharves +whatchamacallit/MS +what'd +whatever +what/MS +whatnot/MS +what're +whatsoever +wheal/MS +wheatgerm +Wheaties/M +Wheatland/M +wheat/NMXS +Wheaton/M +Wheatstone/M +wheedle/ZDRSG +wheelbarrow/GSDM +wheelbase/MS +wheelchair/MS +wheeler/M +Wheeler/M +wheelhouse/SM +wheelie/MS +wheeling/M +Wheeling/M +Wheelock/M +wheel/RDMJSGZ +wheelwright/MS +whee/S +wheeze/SDG +wheezily +wheeziness/SM +wheezy/PRT +Whelan/M +whelk/MDS +Wheller/M +whelm/DGS +whelp/DMGS +whence/S +whenever +when/S +whensoever +whereabout/S +whereas/S +whereat +whereby +where'd +wherefore/MS +wherein +where/MS +whereof +whereon +where're +wheresoever +whereto +whereupon +wherever +wherewith +wherewithal/SM +wherry/DSGM +whether +whet/S +whetstone/MS +whetted +whetting +whew/GSD +whey/MS +which +whichever +whiff/GSMD +whiffle/DRSG +whiffler/M +whiffletree/SM +whig/S +Whig/SM +while/GSD +whilom +whilst +whimmed +whimming +whimper/DSG +whimsey's +whimsicality/MS +whimsical/YP +whim/SM +whimsy/TMDRS +whine/GZMSRD +whining/Y +whinny/GTDRS +whiny/RT +whipcord/SM +whiplash/SDMG +Whippany/M +whipped +whipper/MS +whippersnapper/MS +whippet/MS +whipping/SM +Whipple/M +whippletree/SM +whippoorwill/SM +whipsaw/GDMS +whips/M +whip/SM +whirligig/MS +whirlpool/MS +whirl/RDGS +whirlwind/MS +whirlybird/MS +whirly/MS +whirred +whirring +whir/SY +whisker/DM +whiskery +whiskey/SM +whisk/GZRDS +whisperer/M +whisper/GRDJZS +whispering/YM +whist/GDMS +whistleable +whistle/DRSZG +whistler/M +Whistler/M +whistling/M +Whitaker/M +Whitby/M +Whitcomb/M +whitebait/M +whitecap/MS +whiteface/M +Whitefield/M +whitefish/SM +Whitehall/M +Whitehead/M +whitehead/S +Whitehorse/M +Whiteleaf/M +Whiteley/M +White/MS +whitener/M +whiteness/MS +whitening/M +whiten/JZDRG +whiteout/S +white/PYS +whitespace +whitetail/S +whitewall/SM +whitewash/GRSDM +whitewater +Whitewater/M +whitey/MS +Whitfield/M +whither/DGS +whitier +whitiest +whiting/M +whitish +Whitley/M +Whitlock/M +Whit/M +Whitman/M +Whitney/M +whit/SJGTXMRND +Whitsunday/MS +Whittaker/M +whitter +Whittier +whittle/JDRSZG +whittler/M +whiz +whizkid +whizzbang/S +whizzed +whizzes +whizzing +WHO +whoa/S +who'd +whodunit/SM +whoever +wholegrain +wholeheartedness/MS +wholehearted/PY +wholemeal +wholeness/S +wholesale/GZMSRD +wholesaler/M +wholesomeness/USM +wholesome/UYP +whole/SP +wholewheat +who'll +wholly +whom +who/M +whomever +whomsoever +whoopee/S +whooper/M +whoop/SRDGZ +whoosh/DSGM +whop +whopper/MS +whopping/S +who're +whorehouse/SM +whoreish +whore/SDGM +whorish +whorl/SDM +whose +whoso +whosoever +who've +why +whys +WI +Wiatt/M +Wichita/M +wickedness/MS +wicked/RYPT +wicker/M +wickerwork/MS +wicketkeeper/SM +wicket/SM +wick/GZRDMS +wicking/M +widemouthed +widener/M +wideness/S +widen/SGZRD +wide/RSYTP +widespread +widgeon's +widget/SM +widower/M +widowhood/S +widow/MRDSGZ +width/M +widths +widthwise +Wieland/M +wielder/M +wield/GZRDS +Wiemar/M +wiener/SM +wienie/SM +Wier/M +Wiesel/M +wife/DSMYG +wifeless +wifely/RPT +wigeon/MS +wigged +wigging/M +Wiggins +wiggler/M +wiggle/RSDGZ +wiggly/RT +wight/SGDM +wiglet/S +wigmaker +wig/MS +Wigner/M +wigwagged +wigwagging +wigwag/S +wigwam/MS +Wilberforce/M +Wilbert/M +Wilbur/M +Wilburn/M +Wilburt/M +Wilcox/M +Wilda/M +wildcat/SM +wildcatted +wildcatter/MS +wildcatting +wildebeest/SM +Wilde/MR +Wilden/M +Wilder/M +wilderness/SM +wilder/P +wildfire/MS +wildflower/S +wildfowl/M +wilding/M +wildlife/M +wildness/MS +Wildon/M +wild/SPGTYRD +wile/DSMG +Wileen/M +Wilek/M +Wiley/M +Wilford/M +Wilfred/M +Wilfredo/M +Wilfrid/M +wilfulness's +Wilhelmina/M +Wilhelmine/M +Wilhelm/M +Wilie/M +wilily +wiliness/MS +Wilkerson/M +Wilkes/M +Wilkins/M +Wilkinson/M +Willabella/M +Willa/M +Willamette/M +Willamina/M +Willard/M +Willcox/M +Willdon/M +willed/U +Willem/M +Willemstad/M +willer/M +Willetta/M +Willette/M +Willey/M +willfulness/S +willful/YP +Williamsburg/M +William/SM +Williamson/M +Willied/M +Willie/M +willies +Willi/MS +willinger +willingest +willingness's +willingness/US +willing/UYP +Willisson/M +williwaw/MS +Will/M +Willoughby/M +willower/M +Willow/M +willow/RDMSG +willowy/TR +willpower/MS +will/SGJRD +Willy/SDM +Willyt/M +Wilma/M +Wilmar/M +Wilmer/M +Wilmette/M +Wilmington/M +Wilona/M +Wilone/M +Wilow/M +Wilshire/M +Wilsonian +Wilson/M +wilt/DGS +Wilt/M +Wilton/M +wily/PTR +Wimbledon/M +wimp/GSMD +wimpish +wimple/SDGM +wimpy/RT +wince/SDG +Winchell/M +wincher/M +winchester/M +Winchester/MS +winch/GRSDM +windbag/SM +windblown +windbreak/MZSR +windburn/GSMD +winded +winder/UM +windfall/SM +windflower/MS +Windham/M +Windhoek/M +windily +windiness/SM +winding/MS +windjammer/SM +windlass/GMSD +windless/YP +windmill/GDMS +window/DMGS +windowless +windowpane/SM +Windows +windowsill/SM +windpipe/SM +windproof +windrow/GDMS +wind's +winds/A +windscreen/MS +windshield/SM +windsock/MS +Windsor/MS +windstorm/MS +windsurf/GZJSRD +windswept +windup/MS +wind/USRZG +Windward/M +windward/SY +Windy/M +windy/TPR +wineglass/SM +winegrower/SM +Winehead/M +winemake +winemaster +wine/MS +winery/MS +Winesap/M +wineskin/M +Winfield/M +Winfred/M +Winfrey/M +wingback/M +wingding/MS +wingeing +winger/M +wing/GZRDM +wingless +winglike +wingman +wingmen +wingspan/SM +wingspread/MS +wingtip/S +Winifield/M +Winifred/M +Wini/M +winker/M +wink/GZRDS +winking/U +Winkle/M +winkle/SDGM +winless +Win/M +winnable +Winnah/M +Winna/M +Winnebago/M +Winne/M +winner/MS +Winnetka/M +Winnie/M +Winnifred/M +Winni/M +winning/SY +Winnipeg/M +Winn/M +winnow/SZGRD +Winny/M +Winograd/M +wino/MS +Winonah/M +Winona/M +Winooski/M +Winsborough/M +Winsett/M +Winslow/M +winsomeness/SM +winsome/PRTY +Winston/M +winterer/M +wintergreen/SM +winterize/GSD +Winters +winter/SGRDYM +wintertime/MS +Winthrop/M +wintriness/M +wintry/TPR +winy/RT +win/ZGDRS +wipe/DRSZG +wiper/M +wirehair/MS +wireless/MSDG +wireman/M +wiremen +wirer/M +wire's +wires/A +wiretap/MS +wiretapped +wiretapper/SM +wiretapping +wire/UDA +wiriness/S +wiring/SM +wiry/RTP +Wisc +Wisconsinite/SM +Wisconsin/M +wisdoms +wisdom/UM +wiseacre/MS +wisecrack/GMRDS +wised +wisely/TR +Wise/M +wiseness +wisenheimer/M +Wisenheimer/M +wises +wise/URTY +wishbone/MS +wishfulness/M +wishful/PY +wish/GZSRD +wishy +wising +Wis/M +wisp/MDGS +wispy/RT +wist/DGS +wisteria/SM +wistfulness/MS +wistful/PY +witchcraft/SM +witchdoctor/S +witchery/MS +witch/SDMG +withal +withdrawal/MS +withdrawer/M +withdrawnness/M +withdrawn/P +withdraw/RGS +withdrew +withe/M +wither/GDJ +withering/Y +Witherspoon/M +with/GSRDZ +withheld +withholder/M +withhold/SJGZR +within/S +without/S +withs +withstand/SG +withstood +witlessness/MS +witless/PY +Wit/M +witness/DSMG +witnessed/U +wit/PSM +witted +witter/G +Wittgenstein/M +witticism/MS +Wittie/M +wittily +wittiness/SM +wittings +witting/UY +Witt/M +Witty/M +witty/RTP +Witwatersrand/M +wive/GDS +wives/M +wizard/MYS +wizardry/MS +wizen/D +wiz's +wk/Y +Wm/M +WNW +woad/MS +wobble/GSRD +wobbler/M +wobbliness/S +wobbly/PRST +Wodehouse/M +woebegone/P +woefuller +woefullest +woefulness/SM +woeful/PY +woe/PSM +woke +wok/SMN +Wolcott/M +wold/MS +Wolfe/M +wolfer/M +Wolff/M +Wolfgang/M +wolfhound/MS +Wolfie/M +wolfishness/M +wolfish/YP +Wolf/M +wolfram/MS +wolf/RDMGS +Wolfy/M +Wollongong/M +Wollstonecraft/M +Wolsey/M +Wolverhampton/M +wolverine/SM +Wolverton/M +wolves/M +woman/GSMYD +womanhood/MS +womanish +womanized/U +womanizer/M +womanize/RSDZG +womanizes/U +womankind/M +womanlike +womanliness/SM +womanly/PRT +wombat/MS +womb/SDM +womenfolk/MS +women/MS +wonderer/M +wonderfulness/SM +wonderful/PY +wonder/GLRDMS +wondering/Y +wonderland/SM +wonderment/SM +wondrousness/M +wondrous/YP +Wong/M +wonk/S +wonky/RT +wonned +wonning +won/SG +won't +wontedness/MU +wonted/PUY +wont/SGMD +Woodard/M +Woodberry/M +woodbine/SM +woodblock/S +Woodbury/M +woodcarver/S +woodcarving/MS +woodchopper/SM +woodchuck/MS +woodcock/MS +woodcraft/MS +woodcut/SM +woodcutter/MS +woodcutting/MS +woodenness/SM +wooden/TPRY +woodgrain/G +woodhen +Woodhull/M +Woodie/M +woodiness/MS +woodland/SRM +Woodlawn/M +woodlice +woodlot/S +woodlouse/M +woodman/M +Woodman/M +woodmen +woodpecker/SM +woodpile/SM +Woodrow/M +woodruff/M +woo/DRZGS +woodshedded +woodshedding +woodshed/SM +woodside +Wood/SM +woodsman/M +woodsmen +wood/SMNDG +woodsmoke +woods/R +Woodstock/M +woodsy/TRP +Woodward/MS +woodwind/S +woodworker/M +woodworking/M +woodwork/SMRGZJ +woodworm/M +woodyard +Woody/M +woody/TPSR +woofer/M +woof/SRDMGZ +Woolf/M +woolgatherer/M +woolgathering/M +woolgather/RGJ +woolliness/MS +woolly/RSPT +Woolongong/M +wool/SMYNDX +Woolworth/M +Woonsocket/M +Wooster/M +Wooten/M +woozily +wooziness/MS +woozy/RTP +wop/MS! +Worcestershire/M +Worcester/SM +wordage/SM +word/AGSJD +wordbook/MS +Worden/M +wordily +wordiness/SM +wording/AM +wordless/Y +wordplay/SM +word's +Wordsworth/M +wordy/TPR +wore +workability's +workability/U +workableness/M +workable/U +workably +workaday +workaholic/S +workaround/SM +workbench/MS +workbook/SM +workday/SM +worked/A +worker/M +workfare/S +workforce/S +work/GZJSRDMB +workhorse/MS +workhouse/SM +working/M +workingman/M +workingmen +workingwoman/M +workingwomen +workload/SM +workmanlike +Workman/M +workman/MY +workmanship/MS +workmate/S +workmen/M +workout/SM +workpiece/SM +workplace/SM +workroom/MS +works/A +worksheet/S +workshop/MS +workspace/S +workstation/MS +worktable/SM +worktop/S +workup/S +workweek/SM +worldlier +worldliest +worldliness/USM +worldly/UP +worldwide +world/ZSYM +wormer/M +wormhole/SM +worm/SGMRD +Worms/M +wormwood/SM +wormy/RT +worn/U +worried/Y +worrier/M +worriment/MS +worrisome/YP +worrying/Y +worrywart/SM +worry/ZGSRD +worsen/GSD +worse/SR +worshiper/M +worshipfulness/M +worshipful/YP +worship/ZDRGS +worsted/MS +worst/SGD +worth/DG +worthily/U +worthinesses/U +worthiness/SM +Worthington/M +worthlessness/SM +worthless/PY +Worth/M +worths +worthwhile/P +Worthy/M +worthy/UTSRP +wort/SM +wost +wot +Wotan/M +wouldn't +would/S +wouldst +would've +wound/AU +wounded/U +wounder +wounding +wounds +wound's +wove/A +woven/AU +wovens +wow/SDG +Wozniak/M +WP +wpm +wrack/SGMD +wraith/M +wraiths +Wrangell/M +wrangle/GZDRS +wrangler/M +wraparound/S +wrap/MS +wrapped/U +wrapper/MS +wrapping/SM +wraps/U +wrasse/SM +wrathful/YP +wrath/GDM +wraths +wreak/SDG +wreathe +wreath/GMDS +wreaths +wreckage/MS +wrecker/M +wreck/GZRDS +wrenching/Y +wrench/MDSG +wren/MS +Wren/MS +Wrennie/M +wrester/M +wrestle/JGZDRS +wrestler/M +wrestling/M +wrest/SRDG +wretchedness/SM +wretched/TPYR +wretch/MDS +wriggle/DRSGZ +wriggler/M +wriggly/RT +Wright/M +wright/MS +Wrigley/M +wringer/M +wring/GZRS +wrinkled/U +wrinkle/GMDS +wrinkly/RST +wristband/SM +wrist/MS +wristwatch/MS +writable/U +write/ASBRJG +writer/MA +writeup +writhe/SDG +writing/M +writ/MRSBJGZ +written/UA +Wroclaw +wrongdoer/MS +wrongdoing/MS +wronger/M +wrongfulness/MS +wrongful/PY +wrongheadedness/MS +wrongheaded/PY +wrongness/MS +wrong/PSGTYRD +Wronskian/M +wrote/A +wroth +wrought/I +wrung +wry/DSGY +wryer +wryest +wryness/SM +W's +WSW +wt +W/T +Wuhan/M +Wu/M +Wurlitzer/M +wurst/SM +wuss/S +wussy/TRS +WV +WW +WWI +WWII +WWW +w/XTJGV +WY +Wyatan/M +Wyatt/M +Wycherley/M +Wycliffe/M +Wye/MH +Wyeth/M +Wylie/M +Wylma/M +Wyman/M +Wyndham/M +Wyn/M +Wynne/M +Wynnie/M +Wynn/M +Wynny/M +Wyo/M +Wyomingite/SM +Wyoming/M +WYSIWYG +x +X +Xanadu +Xanthippe/M +Xanthus/M +Xaviera/M +Xavier/M +Xebec/M +Xe/M +XEmacs/M +Xenakis/M +Xena/M +Xenia/M +Xenix/M +xenon/SM +xenophobe/MS +xenophobia/SM +xenophobic +Xenophon/M +Xenos +xerographic +xerography/MS +xerox/GSD +Xerox/MGSD +Xerxes/M +Xever/M +Xhosa/M +Xi'an +Xian/S +Xiaoping/M +xii +xiii +xi/M +Ximenes/M +Ximenez/M +Ximian/SM +Xingu/M +xis +xiv +xix +XL +Xmas/SM +XML +Xochipilli/M +XOR +X's +XS +xterm/M +Xuzhou/M +xv +xvi +xvii +xviii +xx +XXL +xylem/SM +xylene/M +Xylia/M +Xylina/M +xylophone/MS +xylophonist/S +Xymenes/M +Y +ya +yacc/M +Yacc/M +yachting/M +yachtsman +yachtsmen +yachtswoman/M +yachtswomen +yacht/ZGJSDM +yack's +Yagi/M +yahoo/MS +Yahweh/M +Yakima/M +yakked +yakking +yak/SM +Yakut/M +Yakutsk/M +Yale/M +Yalies/M +y'all +Yalonda/M +Yalow/M +Yalta/M +Yalu/M +Yamaha/M +yammer/RDZGS +Yamoussoukro +yam/SM +Yanaton/M +Yance/M +Yancey/M +Yancy/M +Yang/M +Yangon +yang/S +Yangtze/M +Yankee/SM +yank/GDS +Yank/MS +Yaounde/M +yapped +yapping +yap/S +Yaqui/M +yardage/SM +yardarm/SM +Yardley/M +Yard/M +yardman/M +yardmaster/S +yardmen +yard/SMDG +yardstick/SM +yarmulke/SM +yarn/SGDM +Yaroslavl/M +yarrow/MS +Yasmeen/M +Yasmin/M +Yates +yaw/DSG +yawl/SGMD +yawner/M +yawn/GZSDR +yawning/Y +Yb/M +yd +Yeager/M +yeah +yeahs +yearbook/SM +yearling/M +yearlong +yearly/S +yearner/M +yearning/MY +yearn/JSGRD +year/YMS +yea/S +yeastiness/M +yeast/SGDM +yeasty/PTR +Yeats/M +yecch +yegg/MS +Yehudi/M +Yehudit/M +Yekaterinburg/M +Yelena/M +yell/GSDR +yellowhammers +yellowish +Yellowknife/M +yellowness/MS +Yellowstone/M +yellow/TGPSRDM +yellowy +yelper/M +yelp/GSDR +Yeltsin +Yemeni/S +Yemenite/SM +Yemen/M +Yenisei/M +yenned +yenning +yen/SM +Yentl/M +yeomanry/MS +yeoman/YM +yeomen +yep/S +Yerevan/M +Yerkes/M +Yesenia/M +yeshiva/SM +yes/S +yessed +yessing +yesterday/MS +yesteryear/SM +yet +ye/T +yeti/SM +Yetta/M +Yettie/M +Yetty/M +Yevette/M +Yevtushenko/M +yew/SM +y/F +Yggdrasil/M +Yiddish/M +yielded/U +yielding/U +yield/JGRDS +yikes +yin/S +yipe/S +yipped +yippee/S +yipping +yip/S +YMCA +YMHA +Ymir/M +YMMV +Ynes/M +Ynez/M +yo +Yoda/M +yodeler/M +yodel/SZRDG +Yoder/M +yoga/MS +yoghurt's +yogi/MS +yogurt/SM +yoke/DSMG +yoked/U +yokel/SM +yokes/U +yoking/U +Yoknapatawpha/M +Yokohama/M +Yoko/M +Yolanda/M +Yolande/M +Yolane/M +Yolanthe/M +yolk/DMS +yon +yonder +Yong/M +Yonkers/M +yore/MS +Yorgo/MS +Yorick/M +Yorke/M +Yorker/M +yorker/SM +Yorkshire/MS +Yorktown/M +York/ZRMS +Yoruba/M +Yosemite/M +Yoshiko/M +Yoshi/M +Yost/M +you'd +you'll +youngish +Young/M +youngster/MS +Youngstown/M +young/TRYP +you're +your/MS +yourself +yourselves +you/SH +youthfulness/SM +youthful/YP +youths +youth/SM +you've +Yovonnda/M +yow +yowl/GSD +Ypres/M +Ypsilanti/M +yr +yrs +Y's +Ysabel/M +YT +ytterbium/MS +yttrium/SM +yuan/M +Yuba/M +Yucatan +yucca/MS +yuck/GSD +yucky/RT +Yugo/M +Yugoslavia/M +Yugoslavian/S +Yugoslav/M +Yuh/M +Yuki/M +yukked +yukking +Yukon/M +yuk/S +yule/MS +Yule/MS +yuletide/MS +Yuletide/S +Yul/M +Yulma/M +yum +Yuma/M +yummy/TRS +Yunnan/M +yuppie/SM +yup/S +Yurik/M +Yuri/M +yurt/SM +Yves/M +Yvette/M +Yvon/M +Yvonne/M +Yvor/M +YWCA +YWHA +Zabrina/M +Zaccaria/M +Zachariah/M +Zacharia/SM +Zacharie/M +Zachary/M +Zacherie/M +Zachery/M +Zach/M +Zackariah/M +Zack/M +zagging +Zagreb/M +zag/S +Zahara/M +Zaire/M +Zairian/S +Zak/M +Zambezi/M +Zambia/M +Zambian/S +Zamboni +Zamenhof/M +Zamora/M +Zandra/M +Zane/M +Zaneta/M +zaniness/MS +Zan/M +Zanuck/M +zany/PDSRTG +Zanzibar/M +Zapata/M +Zaporozhye/M +Zappa/M +zapped +zapper/S +zapping +zap/S +Zarah/M +Zara/M +Zared/M +Zaria/M +Zarla/M +Zealand/M +zeal/MS +zealot/MS +zealotry/MS +zealousness/SM +zealous/YP +Zea/M +Zebadiah/M +Zebedee/M +Zeb/M +zebra/MS +Zebulen/M +Zebulon/M +zebu/SM +Zechariah/M +Zedekiah/M +Zed/M +Zedong/M +zed/SM +Zeffirelli/M +Zeiss/M +zeitgeist/S +Zeke/M +Zelda/M +Zelig/M +Zellerbach/M +Zelma/M +Zena/M +Zenger/M +Zenia/M +zenith/M +zeniths +Zen/M +Zennist/M +Zeno/M +Zephaniah/M +zephyr/MS +Zephyrus/M +Zeppelin's +zeppelin/SM +Zerk/M +zeroed/M +zeroing/M +zero/SDHMG +zestfulness/MS +zestful/YP +zest/MDSG +zesty/RT +zeta/SM +zeugma/M +Zeus/M +Zhdanov/M +Zhengzhou +Zhivago/M +Zhukov/M +Zia/M +Zibo/M +Ziegfeld/MS +Ziegler/M +zig +zigged +zigging +Ziggy/M +zigzagged +zigzagger +zigzagging +zigzag/MS +zilch/S +zillion/MS +Zilvia/M +Zimbabwean/S +Zimbabwe/M +Zimmerman/M +zincked +zincking +zinc/MS +zing/GZDRM +zingy/RT +zinnia/SM +Zionism/MS +Zionist/MS +Zion/SM +zip/MS +zipped/U +zipper/GSDM +zipping/U +zippy/RT +zips/U +zirconium/MS +zircon/SM +Zita/M +Zitella/M +zither/SM +zit/S +zloty/SM +Zn/M +zodiacal +zodiac/SM +Zoe/M +Zola/M +Zollie/M +Zolly/M +Zomba/M +zombie/SM +zombi's +zonal/Y +Zonda/M +Zondra/M +zoned/A +zone/MYDSRJG +zones/A +zoning/A +zonked +Zonnya/M +zookeepers +zoological/Y +zoologist/SM +zoology/MS +zoom/DGS +zoophyte/SM +zoophytic +zoo/SM +Zorah/M +Zora/M +Zorana/M +Zorina/M +Zorine/M +Zorn/M +Zoroaster/M +Zoroastrianism/MS +Zoroastrian/S +Zorro/M +Zosma/M +zounds/S +Zr/M +Zs +Zsazsa/M +Zsigmondy/M +z/TGJ +Zubenelgenubi/M +Zubeneschamali/M +zucchini/SM +Zukor/M +Zulema/M +Zululand/M +Zulu/MS +Zuni/S +Zrich/M +Zuzana/M +zwieback/MS +Zwingli/M +Zworykin/M +Z/X +zydeco/S +zygote/SM +zygotic +zymurgy/S diff --git a/Lisp/'(.sublime-snippet b/Lisp/'(.sublime-snippet new file mode 100644 index 0000000..f2921fe --- /dev/null +++ b/Lisp/'(.sublime-snippet @@ -0,0 +1,6 @@ + + + ( + source.lisp + '( + diff --git a/Lisp/Comments.tmPreferences b/Lisp/Comments.tmPreferences new file mode 100644 index 0000000..ccf10ae --- /dev/null +++ b/Lisp/Comments.tmPreferences @@ -0,0 +1,36 @@ + + + + + name + Comments + scope + source.lisp + settings + + shellVariables + + + name + TM_COMMENT_START + value + ; + + + name + TM_COMMENT_START_2 + value + #| + + + name + TM_COMMENT_END_2 + value + |# + + + + uuid + DD4CB5ED-97E7-4619-A6AF-C88AA691EFBF + + diff --git a/Lisp/Comments.tmPreferences.cache b/Lisp/Comments.tmPreferences.cache new file mode 100644 index 0000000..1ebe86b Binary files /dev/null and b/Lisp/Comments.tmPreferences.cache differ diff --git a/Lisp/Lisp.sublime-settings b/Lisp/Lisp.sublime-settings new file mode 100644 index 0000000..42cbd59 --- /dev/null +++ b/Lisp/Lisp.sublime-settings @@ -0,0 +1,3 @@ +{ + "extensions": ["lisp", "scm", "ss"] +} diff --git a/Lisp/Lisp.tmLanguage b/Lisp/Lisp.tmLanguage new file mode 100644 index 0000000..e567402 --- /dev/null +++ b/Lisp/Lisp.tmLanguage @@ -0,0 +1,160 @@ + + + + + comment + + fileTypes + + lisp + cl + l + mud + el + + foldingStartMarker + \( + foldingStopMarker + \) + keyEquivalent + ^~L + name + Lisp + patterns + + + captures + + 1 + + name + punctuation.definition.comment.lisp + + + match + (;).*$\n? + name + comment.line.semicolon.lisp + + + captures + + 2 + + name + storage.type.function-type.lisp + + 4 + + name + entity.name.function.lisp + + + match + (\b(?i:(defun|defmethod|defmacro))\b)(\s+)((\w|\-|\!|\?)*) + name + meta.function.lisp + + + captures + + 1 + + name + punctuation.definition.constant.lisp + + + match + (#)(\w|[\\+-=<>'"&#])+ + name + constant.character.lisp + + + captures + + 1 + + name + punctuation.definition.variable.lisp + + 3 + + name + punctuation.definition.variable.lisp + + + match + (\*)(\S*)(\*) + name + variable.other.global.lisp + + + match + \b(?i:case|do|let|loop|if|else|when)\b + name + keyword.control.lisp + + + match + \b(?i:eq|neq|and|or)\b + name + keyword.operator.lisp + + + match + \b(?i:null|nil)\b + name + constant.language.lisp + + + match + \b(?i:cons|car|cdr|cond|lambda|format|setq|setf|quote|eval|append|list|listp|memberp|t|load|progn)\b + name + support.function.lisp + + + 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.lisp + + + begin + " + beginCaptures + + 0 + + name + punctuation.definition.string.begin.lisp + + + end + " + endCaptures + + 0 + + name + punctuation.definition.string.end.lisp + + + name + string.quoted.double.lisp + patterns + + + match + \\. + name + constant.character.escape.lisp + + + + + scopeName + source.lisp + uuid + 00D451C9-6B1D-11D9-8DFA-000D93589AF6 + + diff --git a/Lisp/Lisp.tmLanguage.cache b/Lisp/Lisp.tmLanguage.cache new file mode 100644 index 0000000..d3ade25 Binary files /dev/null and b/Lisp/Lisp.tmLanguage.cache differ diff --git a/Lisp/defconstant.sublime-snippet b/Lisp/defconstant.sublime-snippet new file mode 100644 index 0000000..e3899d7 --- /dev/null +++ b/Lisp/defconstant.sublime-snippet @@ -0,0 +1,7 @@ + + + const + source.lisp + defconstant + diff --git a/Lisp/defmacro.sublime-snippet b/Lisp/defmacro.sublime-snippet new file mode 100644 index 0000000..92d2a4a --- /dev/null +++ b/Lisp/defmacro.sublime-snippet @@ -0,0 +1,8 @@ + + + mac + source.lisp + defmacro + diff --git a/Lisp/defparameter.sublime-snippet b/Lisp/defparameter.sublime-snippet new file mode 100644 index 0000000..2fe8a01 --- /dev/null +++ b/Lisp/defparameter.sublime-snippet @@ -0,0 +1,7 @@ + + + par + source.lisp + defparameter + diff --git a/Lisp/defun.sublime-snippet b/Lisp/defun.sublime-snippet new file mode 100644 index 0000000..2e1ecd8 --- /dev/null +++ b/Lisp/defun.sublime-snippet @@ -0,0 +1,8 @@ + + + fun + source.lisp + defun + diff --git a/Lisp/defvar.sublime-snippet b/Lisp/defvar.sublime-snippet new file mode 100644 index 0000000..c612c3f --- /dev/null +++ b/Lisp/defvar.sublime-snippet @@ -0,0 +1,7 @@ + + + var + source.lisp + defvar + diff --git a/Lisp/if.sublime-snippet b/Lisp/if.sublime-snippet new file mode 100644 index 0000000..aff84b4 --- /dev/null +++ b/Lisp/if.sublime-snippet @@ -0,0 +1,7 @@ + + + if + source.lisp + if + diff --git a/Lisp/let.sublime-snippet b/Lisp/let.sublime-snippet new file mode 100644 index 0000000..f3b24d4 --- /dev/null +++ b/Lisp/let.sublime-snippet @@ -0,0 +1,7 @@ + + + let + source.lisp + let + diff --git a/Lisp/let1.sublime-snippet b/Lisp/let1.sublime-snippet new file mode 100644 index 0000000..4d311f3 --- /dev/null +++ b/Lisp/let1.sublime-snippet @@ -0,0 +1,7 @@ + + + let1 + source.lisp + let1 + diff --git a/Lisp/setf.sublime-snippet b/Lisp/setf.sublime-snippet new file mode 100644 index 0000000..8c4576d --- /dev/null +++ b/Lisp/setf.sublime-snippet @@ -0,0 +1,6 @@ + + + setf + source.lisp + setf + diff --git a/Lua/Comments.tmPreferences b/Lua/Comments.tmPreferences new file mode 100644 index 0000000..8c01724 --- /dev/null +++ b/Lua/Comments.tmPreferences @@ -0,0 +1,24 @@ + + + + + name + Comments + scope + source.lua + settings + + shellVariables + + + name + TM_COMMENT_START + value + -- + + + + uuid + 8A2A2BE0-B474-49B4-85C3-BAF2BD2FCAFB + + diff --git a/Lua/Comments.tmPreferences.cache b/Lua/Comments.tmPreferences.cache new file mode 100644 index 0000000..24bfadc Binary files /dev/null and b/Lua/Comments.tmPreferences.cache differ diff --git a/Lua/Indent.tmPreferences b/Lua/Indent.tmPreferences new file mode 100644 index 0000000..d01c681 --- /dev/null +++ b/Lua/Indent.tmPreferences @@ -0,0 +1,19 @@ + + + + + name + Indent + scope + source.lua + settings + + decreaseIndentPattern + ^\s*(elseif|else|end|\})\s*$ + increaseIndentPattern + ^\s*(else|elseif|for|(local\s+)?function|if|repeat|until|while)\b((?!end).)*$|\{\s*$ + + uuid + 411468A8-E0AC-415A-9E71-E2BD091EB571 + + diff --git a/Lua/Indent.tmPreferences.cache b/Lua/Indent.tmPreferences.cache new file mode 100644 index 0000000..1238596 Binary files /dev/null and b/Lua/Indent.tmPreferences.cache differ diff --git a/Lua/Lua.tmLanguage b/Lua/Lua.tmLanguage new file mode 100644 index 0000000..09973d3 --- /dev/null +++ b/Lua/Lua.tmLanguage @@ -0,0 +1,234 @@ + + + + + comment + Lua Syntax: version 0.8 + fileTypes + + lua + + foldingStartMarker + ^\s*\b(function|local\s+function|if|for)\b|{[ \t]*$|\[\[ + foldingStopMarker + \bend\b|^\s*}|\]\] + keyEquivalent + ^~L + name + Lua + patterns + + + captures + + 1 + + name + keyword.control.lua + + 2 + + name + entity.name.function.scope.lua + + 3 + + name + entity.name.function.lua + + 4 + + name + punctuation.definition.parameters.begin.lua + + 5 + + name + variable.parameter.function.lua + + 6 + + name + punctuation.definition.parameters.end.lua + + + match + \b(function)\s+([a-zA-Z_.:]+[.:])?([a-zA-Z_]\w*)\s*(\()([^)]*)(\)) + name + meta.function.lua + + + match + (?<![\d.])\s0x[a-fA-F\d]+|\b\d+(\.\d+)?([eE]-?\d+)?|\.\d+([eE]-?\d+)? + name + constant.numeric.lua + + + begin + ' + beginCaptures + + 0 + + name + punctuation.definition.string.begin.lua + + + end + ' + endCaptures + + 0 + + name + punctuation.definition.string.end.lua + + + name + string.quoted.single.lua + patterns + + + match + \\. + name + constant.character.escape.lua + + + + + begin + " + beginCaptures + + 0 + + name + punctuation.definition.string.begin.lua + + + end + " + endCaptures + + 0 + + name + punctuation.definition.string.end.lua + + + name + string.quoted.double.lua + patterns + + + match + \\. + name + constant.character.escape.lua + + + + + begin + (?<!--)\[(=*)\[ + beginCaptures + + 0 + + name + punctuation.definition.string.begin.lua + + + end + \]\1\] + endCaptures + + 0 + + name + punctuation.definition.string.end.lua + + + name + string.quoted.other.multiline.lua + + + begin + --\[(=*)\[ + captures + + 0 + + name + punctuation.definition.comment.lua + + + end + \]\1\] + name + comment.block.lua + + + captures + + 1 + + name + punctuation.definition.comment.lua + + + match + (--)(?!\[\[).*$\n? + name + comment.line.double-dash.lua + + + match + \b(break|do|else|for|if|elseif|return|then|repeat|while|until|end|function|local|in)\b + name + keyword.control.lua + + + match + (?<![^.]\.|:)\b(false|nil|true|_G|_VERSION|math\.(pi|huge))\b|(?<![.])\.{3}(?!\.) + name + constant.language.lua + + + match + (?<![^.]\.|:)\b(self)\b + name + variable.language.self.lua + + + match + (?<![^.]\.|:)\b(assert|collectgarbage|dofile|error|getfenv|getmetatable|ipairs|loadfile|loadstring|module|next|pairs|pcall|print|rawequal|rawget|rawset|require|select|setfenv|setmetatable|tonumber|tostring|type|unpack|xpcall)\b(?=[( {]) + name + support.function.lua + + + match + (?<![^.]\.|:)\b(coroutine\.(create|resume|running|status|wrap|yield)|string\.(byte|char|dump|find|format|gmatch|gsub|len|lower|match|rep|reverse|sub|upper)|table\.(concat|insert|maxn|remove|sort)|math\.(abs|acos|asin|atan2?|ceil|cosh?|deg|exp|floor|fmod|frexp|ldexp|log|log10|max|min|modf|pow|rad|random|randomseed|sinh?|sqrt|tanh?)|io\.(close|flush|input|lines|open|output|popen|read|tmpfile|type|write)|os\.(clock|date|difftime|execute|exit|getenv|remove|rename|setlocale|time|tmpname)|package\.(cpath|loaded|loadlib|path|preload|seeall)|debug\.(debug|[gs]etfenv|[gs]ethook|getinfo|[gs]etlocal|[gs]etmetatable|getregistry|[gs]etupvalue|traceback))\b(?=[( {]) + name + support.function.library.lua + + + match + \b(and|or|not)\b + name + keyword.operator.lua + + + match + \+|-|%|#|\*|\/|\^|==?|~=|<=?|>=?|(?<!\.)\.{2}(?!\.) + name + keyword.operator.lua + + + scopeName + source.lua + uuid + 93E017CC-6F27-11D9-90EB-000D93589AF7 + + diff --git a/Lua/Lua.tmLanguage.cache b/Lua/Lua.tmLanguage.cache new file mode 100644 index 0000000..dfe2751 Binary files /dev/null and b/Lua/Lua.tmLanguage.cache differ diff --git a/Lua/for-i-v-in-ipairs().sublime-snippet b/Lua/for-i-v-in-ipairs().sublime-snippet new file mode 100644 index 0000000..c3878ca --- /dev/null +++ b/Lua/for-i-v-in-ipairs().sublime-snippet @@ -0,0 +1,8 @@ + + + fori + source.lua + for i,v in ipairs() + diff --git a/Lua/for-i=1-10.sublime-snippet b/Lua/for-i=1-10.sublime-snippet new file mode 100644 index 0000000..763cd50 --- /dev/null +++ b/Lua/for-i=1-10.sublime-snippet @@ -0,0 +1,8 @@ + + + for + source.lua + for i=1,10 + diff --git a/Lua/for-k-v-in-pairs().sublime-snippet b/Lua/for-k-v-in-pairs().sublime-snippet new file mode 100644 index 0000000..639f2a7 --- /dev/null +++ b/Lua/for-k-v-in-pairs().sublime-snippet @@ -0,0 +1,8 @@ + + + forp + source.lua + for k,v in pairs() + diff --git a/Lua/function-(fun).sublime-snippet b/Lua/function-(fun).sublime-snippet new file mode 100644 index 0000000..5d7c88c --- /dev/null +++ b/Lua/function-(fun).sublime-snippet @@ -0,0 +1,8 @@ + + + fun + source.lua + function + diff --git a/Lua/function-(function).sublime-snippet b/Lua/function-(function).sublime-snippet new file mode 100644 index 0000000..36c7bec --- /dev/null +++ b/Lua/function-(function).sublime-snippet @@ -0,0 +1,8 @@ + + + function + source.lua + function + diff --git a/Lua/local-x-=-1.sublime-snippet b/Lua/local-x-=-1.sublime-snippet new file mode 100644 index 0000000..11b25bd --- /dev/null +++ b/Lua/local-x-=-1.sublime-snippet @@ -0,0 +1,6 @@ + + + local + source.lua + local x = 1 + diff --git a/Lua/table.concat.sublime-snippet b/Lua/table.concat.sublime-snippet new file mode 100644 index 0000000..a3176c2 --- /dev/null +++ b/Lua/table.concat.sublime-snippet @@ -0,0 +1,6 @@ + + + table.concat + source.lua + table.concat + diff --git a/Lua/table.sort.sublime-snippet b/Lua/table.sort.sublime-snippet new file mode 100644 index 0000000..cecaed1 --- /dev/null +++ b/Lua/table.sort.sublime-snippet @@ -0,0 +1,6 @@ + + + table.sort + source.lua + table.sort + diff --git a/Makefile/Make.sublime-build b/Makefile/Make.sublime-build new file mode 100644 index 0000000..9199eba --- /dev/null +++ b/Makefile/Make.sublime-build @@ -0,0 +1,14 @@ +{ + "cmd": ["make"], + "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$", + "working_dir": "${project_path:${folder:${file_path}}}", + "selector": "source.makefile", + + "variants": + [ + { + "name": "Clean", + "cmd": ["make", "clean"] + } + ] +} diff --git a/Makefile/Makefile.sublime-settings b/Makefile/Makefile.sublime-settings new file mode 100644 index 0000000..f2266e6 --- /dev/null +++ b/Makefile/Makefile.sublime-settings @@ -0,0 +1,4 @@ +{ + "translate_tabs_to_spaces": false, + "detect_indentation": false +} diff --git a/Makefile/Makefile.tmLanguage b/Makefile/Makefile.tmLanguage new file mode 100644 index 0000000..41cfff8 --- /dev/null +++ b/Makefile/Makefile.tmLanguage @@ -0,0 +1,98 @@ + + + + + fileTypes + + GNUmakefile + makefile + Makefile + OCamlMakefile + make + + name + Makefile + patterns + + + begin + ^(\w|[-_])+\s*\??= + end + $ + name + variable.other.makefile + patterns + + + match + \\\n + + + + + begin + ` + end + ` + name + string.interpolated.backtick.makefile + patterns + + + include + source.shell + + + + + begin + # + beginCaptures + + 0 + + name + punctuation.definition.comment.makefile + + + end + $\n? + name + comment.line.number-sign.makefile + patterns + + + match + (?<!\\)\\$\n + name + punctuation.separator.continuation.makefile + + + + + match + ^(\s*)\b(\-??include|ifeq|ifneq|ifdef|ifndef|else|endif|vpath|export|unexport|define|endef|override)\b + name + keyword.control.makefile + + + captures + + 1 + + name + entity.name.function.makefile + + + match + ^([^\t ]+(\s[^\t ]+)*:(?!\=))\s*.* + name + meta.function.makefile + + + scopeName + source.makefile + uuid + FF1825E8-6B1C-11D9-B883-000D93589AF6 + + diff --git a/Makefile/Makefile.tmLanguage.cache b/Makefile/Makefile.tmLanguage.cache new file mode 100644 index 0000000..866b83a Binary files /dev/null and b/Makefile/Makefile.tmLanguage.cache differ diff --git a/Makefile/Miscellaneous.tmPreferences b/Makefile/Miscellaneous.tmPreferences new file mode 100644 index 0000000..83409fc --- /dev/null +++ b/Makefile/Miscellaneous.tmPreferences @@ -0,0 +1,26 @@ + + + + + name + Miscellaneous + scope + source.makefile + settings + + increaseIndentPattern + ^[^\t ]+: + shellVariables + + + name + TM_COMMENT_START + value + # + + + + uuid + E05AF624-5BD8-4A54-A0E8-F80E8191D69E + + diff --git a/Makefile/Miscellaneous.tmPreferences.cache b/Makefile/Miscellaneous.tmPreferences.cache new file mode 100644 index 0000000..6ce7b39 Binary files /dev/null and b/Makefile/Miscellaneous.tmPreferences.cache differ diff --git a/Markdown/Indent%3A Raw.tmPreferences b/Markdown/Indent%3A Raw.tmPreferences new file mode 100644 index 0000000..a5e2bd0 --- /dev/null +++ b/Markdown/Indent%3A Raw.tmPreferences @@ -0,0 +1,19 @@ + + + + + name + Indent: Raw Block + scope + markup.raw.block.markdown + settings + + decreaseIndentPattern + ^(.*\*/)?\s*\}[;\s]*$ + increaseIndentPattern + ^.*(\{[^}"']*|\([^)"']*)$ + + uuid + E23C5DD2-9A36-4B4A-9729-2A769A055B92 + + diff --git a/Markdown/Indent%3A Raw.tmPreferences.cache b/Markdown/Indent%3A Raw.tmPreferences.cache new file mode 100644 index 0000000..a6025c7 Binary files /dev/null and b/Markdown/Indent%3A Raw.tmPreferences.cache differ diff --git a/Markdown/Markdown.tmLanguage b/Markdown/Markdown.tmLanguage new file mode 100644 index 0000000..d393d06 --- /dev/null +++ b/Markdown/Markdown.tmLanguage @@ -0,0 +1,1178 @@ + + + + + fileTypes + + mdown + markdown + markdn + md + + foldingStartMarker + (?x) + (<(?i:head|body|table|thead|tbody|tfoot|tr|div|select|fieldset|style|script|ul|ol|form|dl)\b.*?> + |<!--(?!.*-->) + |\{\s*($|\?>\s*$|//|/\*(.*\*/\s*$|(?!.*?\*/))) + ) + foldingStopMarker + (?x) + (</(?i:head|body|table|thead|tbody|tfoot|tr|div|select|fieldset|style|script|ul|ol|form|dl)> + |^\s*--> + |(^|\s)\} + ) + keyEquivalent + ^~M + name + Markdown + patterns + + + begin + (?x)^ + (?= [ ]{,3}>. + | ([ ]{4}|\t)(?!$) + | [#]{1,6}\s*+ + | [ ]{,3}(?<marker>[-*_])([ ]{,2}\k<marker>){2,}[ \t]*+$ + ) + comment + + We could also use an empty end match and set + applyEndPatternLast, but then we must be sure that the begin + pattern will only match stuff matched by the sub-patterns. + + end + (?x)^ + (?! [ ]{,3}>. + | ([ ]{4}|\t) + | [#]{1,6}\s*+ + | [ ]{,3}(?<marker>[-*_])([ ]{,2}\k<marker>){2,}[ \t]*+$ + ) + name + meta.block-level.markdown + patterns + + + include + #block_quote + + + include + #block_raw + + + include + #heading + + + include + #separator + + + + + begin + ^[ ]{0,3}([*+-])(?=\s) + captures + + 1 + + name + punctuation.definition.list_item.markdown + + + end + ^(?=\S) + name + markup.list.unnumbered.markdown + patterns + + + include + #list-paragraph + + + + + begin + ^[ ]{0,3}[0-9]+(\.)(?=\s) + captures + + 1 + + name + punctuation.definition.list_item.markdown + + + end + ^(?=\S) + name + markup.list.numbered.markdown + patterns + + + include + #list-paragraph + + + + + begin + ^(?=<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del)\b)(?!.*?</\1>) + comment + + Markdown formatting is disabled inside block-level tags. + + end + (?<=^</\1>$\n) + name + meta.disable-markdown + patterns + + + include + text.html.basic + + + + + begin + ^(?=<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del)\b) + comment + Same rule but for one line disables. + end + $\n? + name + meta.disable-markdown + patterns + + + include + text.html.basic + + + + + captures + + 1 + + name + punctuation.definition.constant.markdown + + 10 + + name + punctuation.definition.string.end.markdown + + 11 + + name + string.other.link.description.title.markdown + + 12 + + name + punctuation.definition.string.begin.markdown + + 13 + + name + punctuation.definition.string.end.markdown + + 2 + + name + constant.other.reference.link.markdown + + 3 + + name + punctuation.definition.constant.markdown + + 4 + + name + punctuation.separator.key-value.markdown + + 5 + + name + punctuation.definition.link.markdown + + 6 + + name + markup.underline.link.markdown + + 7 + + name + punctuation.definition.link.markdown + + 8 + + name + string.other.link.description.title.markdown + + 9 + + name + punctuation.definition.string.begin.markdown + + + match + (?x: + \s* # Leading whitespace + (\[)(.+?)(\])(:) # Reference name + [ \t]* # Optional whitespace + (<?)(\S+?)(>?) # The url + [ \t]* # Optional whitespace + (?: + ((\().+?(\))) # Match title in quotes… + | ((").+?(")) # or in parens. + )? # Title is optional + \s* # Optional whitespace + $ + ) + name + meta.link.reference.def.markdown + + + begin + ^(?=\S)(?![=-]{3,}(?=$)) + end + ^(?:\s*$|(?=[ ]{,3}>.))|(?=[ \t]*\n)(?<=^===|^====|=====|^---|^----|-----)[ \t]*\n|(?=^#) + name + meta.paragraph.markdown + patterns + + + include + #inline + + + include + text.html.basic + + + captures + + 1 + + name + punctuation.definition.heading.markdown + + + match + ^(={3,})(?=[ \t]*$) + name + markup.heading.1.markdown + + + captures + + 1 + + name + punctuation.definition.heading.markdown + + + match + ^(-{3,})(?=[ \t]*$) + name + markup.heading.2.markdown + + + + + repository + + ampersand + + comment + + Markdown will convert this for us. We match it so that the + HTML grammar will not mark it up as invalid. + + match + &(?!([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+);) + name + meta.other.valid-ampersand.markdown + + block_quote + + begin + \G[ ]{,3}(>)(?!$)[ ]? + beginCaptures + + 1 + + name + punctuation.definition.blockquote.markdown + + + comment + + We terminate the block quote when seeing an empty line, a + separator or a line with leading > characters. The latter is + to “reset” the quote level for quoted lines. + + end + (?x)^ + (?= \s*$ + | [ ]{,3}(?<marker>[-*_])([ ]{,2}\k<marker>){2,}[ \t]*+$ + | [ ]{,3}>. + ) + name + markup.quote.markdown + patterns + + + begin + (?x)\G + (?= [ ]{,3}>. + ) + end + ^ + patterns + + + include + #block_quote + + + + + applyEndPatternLast + 1 + begin + (?x)\G + (?= ([ ]{4}|\t) + | [#]{1,6}\s*+ + | [ ]{,3}(?<marker>[-*_])([ ]{,2}\k<marker>){2,}[ \t]*+$ + ) + end + ^ + patterns + + + include + #block_raw + + + include + #heading + + + include + #separator + + + + + begin + (?x)\G + (?! $ + | [ ]{,3}>. + | ([ ]{4}|\t) + | [#]{1,6}\s*+ + | [ ]{,3}(?<marker>[-*_])([ ]{,2}\k<marker>){2,}[ \t]*+$ + ) + end + $|(?<=\n) + patterns + + + include + #inline + + + + + + block_raw + + match + \G([ ]{4}|\t).*$\n? + name + markup.raw.block.markdown + + bold + + begin + (?x) + (\*\*|__)(?=\S) # Open + (?= + ( + <[^>]*+> # HTML tags + | (?<raw>`+)([^`]|(?!(?<!`)\k<raw>(?!`))`)*+\k<raw> + # Raw + | \\[\\`*_{}\[\]()#.!+\->]?+ # Escapes + | \[ + ( + (?<square> # Named group + [^\[\]\\] # Match most chars + | \\. # Escaped chars + | \[ \g<square>*+ \] # Nested brackets + )*+ + \] + ( + ( # Reference Link + [ ]? # Optional space + \[[^\]]*+\] # Ref name + ) + | ( # Inline Link + \( # Opening paren + [ \t]*+ # Optional whtiespace + <?(.*?)>? # URL + [ \t]*+ # Optional whtiespace + ( # Optional Title + (?<title>['"]) + (.*?) + \k<title> + )? + \) + ) + ) + ) + | (?!(?<=\S)\1). # Everything besides + # style closer + )++ + (?<=\S)\1 # Close + ) + + captures + + 1 + + name + punctuation.definition.bold.markdown + + + end + (?<=\S)(\1) + name + markup.bold.markdown + patterns + + + applyEndPatternLast + 1 + begin + (?=<[^>]*?>) + end + (?<=>) + patterns + + + include + text.html.basic + + + + + include + #escape + + + include + #ampersand + + + include + #bracket + + + include + #raw + + + include + #italic + + + include + #image-inline + + + include + #link-inline + + + include + #link-inet + + + include + #link-email + + + include + #image-ref + + + include + #link-ref-literal + + + include + #link-ref + + + + bracket + + comment + + Markdown will convert this for us. We match it so that the + HTML grammar will not mark it up as invalid. + + match + <(?![a-z/?\$!]) + name + meta.other.valid-bracket.markdown + + escape + + match + \\[-`*_#+.!(){}\[\]\\>] + name + constant.character.escape.markdown + + heading + + begin + \G(#{1,6})(?!#)\s*(?=\S) + captures + + 1 + + name + punctuation.definition.heading.markdown + + + contentName + entity.name.section.markdown + end + \s*(#*)$\n? + name + markup.heading.markdown + patterns + + + include + #inline + + + + image-inline + + captures + + 1 + + name + punctuation.definition.string.begin.markdown + + 10 + + name + string.other.link.description.title.markdown + + 11 + + name + punctuation.definition.string.markdown + + 12 + + name + punctuation.definition.string.markdown + + 13 + + name + string.other.link.description.title.markdown + + 14 + + name + punctuation.definition.string.markdown + + 15 + + name + punctuation.definition.string.markdown + + 16 + + name + punctuation.definition.metadata.markdown + + 2 + + name + string.other.link.description.markdown + + 3 + + name + punctuation.definition.string.end.markdown + + 5 + + name + invalid.illegal.whitespace.markdown + + 6 + + name + punctuation.definition.metadata.markdown + + 7 + + name + punctuation.definition.link.markdown + + 8 + + name + markup.underline.link.image.markdown + + 9 + + name + punctuation.definition.link.markdown + + + match + (?x: + \! # Images start with ! + (\[)((?<square>[^\[\]\\]|\\.|\[\g<square>*+\])*+)(\]) + # Match the link text. + ([ ])? # Space not allowed + (\() # Opening paren for url + (<?)(\S+?)(>?) # The url + [ \t]* # Optional whitespace + (?: + ((\().+?(\))) # Match title in parens… + | ((").+?(")) # or in quotes. + )? # Title is optional + \s* # Optional whitespace + (\)) + ) + name + meta.image.inline.markdown + + image-ref + + captures + + 1 + + name + punctuation.definition.string.begin.markdown + + 2 + + name + string.other.link.description.markdown + + 4 + + name + punctuation.definition.string.begin.markdown + + 5 + + name + punctuation.definition.constant.markdown + + 6 + + name + constant.other.reference.link.markdown + + 7 + + name + punctuation.definition.constant.markdown + + + match + \!(\[)((?<square>[^\[\]\\]|\\.|\[\g<square>*+\])*+)(\])[ ]?(\[)(.*?)(\]) + name + meta.image.reference.markdown + + inline + + patterns + + + include + #escape + + + include + #ampersand + + + include + #bracket + + + include + #raw + + + include + #bold + + + include + #italic + + + include + #line-break + + + include + #image-inline + + + include + #link-inline + + + include + #link-inet + + + include + #link-email + + + include + #image-ref + + + include + #link-ref-literal + + + include + #link-ref + + + + italic + + begin + (?x) + (\*|_)(?=\S) # Open + (?= + ( + <[^>]*+> # HTML tags + | (?<raw>`+)([^`]|(?!(?<!`)\k<raw>(?!`))`)*+\k<raw> + # Raw + | \\[\\`*_{}\[\]()#.!+\->]?+ # Escapes + | \[ + ( + (?<square> # Named group + [^\[\]\\] # Match most chars + | \\. # Escaped chars + | \[ \g<square>*+ \] # Nested brackets + )*+ + \] + ( + ( # Reference Link + [ ]? # Optional space + \[[^\]]*+\] # Ref name + ) + | ( # Inline Link + \( # Opening paren + [ \t]*+ # Optional whtiespace + <?(.*?)>? # URL + [ \t]*+ # Optional whtiespace + ( # Optional Title + (?<title>['"]) + (.*?) + \k<title> + )? + \) + ) + ) + ) + | \1\1 # Must be bold closer + | (?!(?<=\S)\1). # Everything besides + # style closer + )++ + (?<=\S)\1 # Close + ) + + captures + + 1 + + name + punctuation.definition.italic.markdown + + + end + (?<=\S)(\1)((?!\1)|(?=\1\1)) + name + markup.italic.markdown + patterns + + + applyEndPatternLast + 1 + begin + (?=<[^>]*?>) + end + (?<=>) + patterns + + + include + text.html.basic + + + + + include + #escape + + + include + #ampersand + + + include + #bracket + + + include + #raw + + + include + #bold + + + include + #image-inline + + + include + #link-inline + + + include + #link-inet + + + include + #link-email + + + include + #image-ref + + + include + #link-ref-literal + + + include + #link-ref + + + + line-break + + match + {2,}$ + name + meta.dummy.line-break + + link-email + + captures + + 1 + + name + punctuation.definition.link.markdown + + 2 + + name + markup.underline.link.markdown + + 4 + + name + punctuation.definition.link.markdown + + + match + (<)((?:mailto:)?[-.\w]+@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)(>) + name + meta.link.email.lt-gt.markdown + + link-inet + + captures + + 1 + + name + punctuation.definition.link.markdown + + 2 + + name + markup.underline.link.markdown + + 3 + + name + punctuation.definition.link.markdown + + + match + (<)((?:https?|ftp)://.*?)(>) + name + meta.link.inet.markdown + + link-inline + + captures + + 1 + + name + punctuation.definition.string.begin.markdown + + 10 + + name + string.other.link.description.title.markdown + + 11 + + name + punctuation.definition.string.begin.markdown + + 12 + + name + punctuation.definition.string.end.markdown + + 13 + + name + string.other.link.description.title.markdown + + 14 + + name + punctuation.definition.string.begin.markdown + + 15 + + name + punctuation.definition.string.end.markdown + + 16 + + name + punctuation.definition.metadata.markdown + + 2 + + name + string.other.link.title.markdown + + 4 + + name + punctuation.definition.string.end.markdown + + 5 + + name + invalid.illegal.whitespace.markdown + + 6 + + name + punctuation.definition.metadata.markdown + + 7 + + name + punctuation.definition.link.markdown + + 8 + + name + markup.underline.link.markdown + + 9 + + name + punctuation.definition.link.markdown + + + match + (?x: + (\[)((?<square>[^\[\]\\]|\\.|\[\g<square>*+\])*+)(\]) + # Match the link text. + ([ ])? # Space not allowed + (\() # Opening paren for url + (<?)(.*?)(>?) # The url + [ \t]* # Optional whitespace + (?: + ((\().+?(\))) # Match title in parens… + | ((").+?(")) # or in quotes. + )? # Title is optional + \s* # Optional whitespace + (\)) + ) + name + meta.link.inline.markdown + + link-ref + + captures + + 1 + + name + punctuation.definition.string.begin.markdown + + 2 + + name + string.other.link.title.markdown + + 4 + + name + punctuation.definition.string.end.markdown + + 5 + + name + punctuation.definition.constant.begin.markdown + + 6 + + name + constant.other.reference.link.markdown + + 7 + + name + punctuation.definition.constant.end.markdown + + + match + (\[)((?<square>[^\[\]\\]|\\.|\[\g<square>*+\])*+)(\])[ ]?(\[)([^\]]*+)(\]) + name + meta.link.reference.markdown + + link-ref-literal + + captures + + 1 + + name + punctuation.definition.string.begin.markdown + + 2 + + name + string.other.link.title.markdown + + 4 + + name + punctuation.definition.string.end.markdown + + 5 + + name + punctuation.definition.constant.begin.markdown + + 6 + + name + punctuation.definition.constant.end.markdown + + + match + (\[)((?<square>[^\[\]\\]|\\.|\[\g<square>*+\])*+)(\])[ ]?(\[)(\]) + name + meta.link.reference.literal.markdown + + list-paragraph + + patterns + + + begin + \G\s+(?=\S) + end + ^\s*$ + name + meta.paragraph.list.markdown + patterns + + + include + #inline + + + + + + raw + + captures + + 1 + + name + punctuation.definition.raw.markdown + + 3 + + name + punctuation.definition.raw.markdown + + + match + (`+)([^`]|(?!(?<!`)\1(?!`))`)*+(\1) + name + markup.raw.inline.markdown + + separator + + match + \G[ ]{,3}([-*_])([ ]{,2}\1){2,}[ \t]*$\n? + name + meta.separator.markdown + + + scopeName + text.html.markdown + uuid + 0A1D9874-B448-11D9-BD50-000D93B6E43C + + diff --git a/Markdown/Markdown.tmLanguage.cache b/Markdown/Markdown.tmLanguage.cache new file mode 100644 index 0000000..fb8db35 Binary files /dev/null and b/Markdown/Markdown.tmLanguage.cache differ diff --git a/Markdown/MultiMarkdown.tmLanguage b/Markdown/MultiMarkdown.tmLanguage new file mode 100644 index 0000000..76e9c93 --- /dev/null +++ b/Markdown/MultiMarkdown.tmLanguage @@ -0,0 +1,80 @@ + + + + + firstLineMatch + ^Format:\s*(?i:complete)\s*$ + foldingStartMarker + (?x) + (<(?i:head|body|table|thead|tbody|tfoot|tr|div|select|fieldset|style|script|ul|ol|form|dl)\b.*?> + |<!--(?!.*-->) + |\{\s*($|\?>\s*$|//|/\*(.*\*/\s*$|(?!.*?\*/))) + ) + foldingStopMarker + (?x) + (</(?i:head|body|table|thead|tbody|tfoot|tr|div|select|fieldset|style|script|ul|ol|form|dl)> + |^\s*--> + |(^|\s)\} + ) + keyEquivalent + ^~M + name + MultiMarkdown + patterns + + + begin + ^([A-Za-z0-9]+)(:)\s* + beginCaptures + + 1 + + name + keyword.other.multimarkdown + + 2 + + name + punctuation.separator.key-value.multimarkdown + + + end + ^$|^(?=[A-Za-z0-9]+:) + name + meta.header.multimarkdown + patterns + + + comment + The reason for not setting scopeName = "string.unquoted" + (for the parent rule) is that we do not want + newlines to be marked as string.unquoted + match + .+ + name + string.unquoted.multimarkdown + + + + + begin + ^(?!=[A-Za-z0-9]+:) + end + ^(?=not)possible$ + name + meta.content.multimarkdown + patterns + + + include + text.html.markdown + + + + + scopeName + text.html.markdown.multimarkdown + uuid + F5E04BF4-69A9-45AE-9205-B3F3C2B00130 + + diff --git a/Markdown/MultiMarkdown.tmLanguage.cache b/Markdown/MultiMarkdown.tmLanguage.cache new file mode 100644 index 0000000..40e49bc Binary files /dev/null and b/Markdown/MultiMarkdown.tmLanguage.cache differ diff --git a/Markdown/Symbol List - Heading.tmPreferences b/Markdown/Symbol List - Heading.tmPreferences new file mode 100644 index 0000000..ae84542 --- /dev/null +++ b/Markdown/Symbol List - Heading.tmPreferences @@ -0,0 +1,23 @@ + + + + + name + Symbol List: Heading + scope + text.html.markdown markup.heading.markdown + settings + + showInSymbolList + 1 + symbolTransformation + + s/\s*#*\s*\z//g; # strip trailing space and #'s + s/(?<=#)#/ /g; # change all but first # to m-space + s/^#( *)\s+(.*)/$1$2/; # strip first # and space before title + + + uuid + C02A37C1-E770-472F-A13E-358FF0C6AD89 + + diff --git a/Markdown/Symbol List - Heading.tmPreferences.cache b/Markdown/Symbol List - Heading.tmPreferences.cache new file mode 100644 index 0000000..5f4f066 Binary files /dev/null and b/Markdown/Symbol List - Heading.tmPreferences.cache differ diff --git a/Matlab/Indent.tmPreferences b/Matlab/Indent.tmPreferences new file mode 100644 index 0000000..de9674c --- /dev/null +++ b/Matlab/Indent.tmPreferences @@ -0,0 +1,69 @@ + + + + + name + Miscellaneous Matlab + scope + source.matlab + settings + + decreaseIndentPattern + ^\s*\b(end\w*|catch|else|elseif|case|otherwise)\b + highlightPairs + + + ( + ) + + + [ + ] + + + { + } + + + " + " + + + increaseIndentPattern + (?x)^\s* + \b( + function + |if|else|elseif + |switch|case|otherwise + |for|while + |try|catch + |unwind_protect + )\b + smartTypingPairs + + + ( + ) + + + [ + ] + + + { + } + + + " + " + + + ' + ' + + + + uuid + 2CD1353B-AEC7-4BBF-8061-6038D1E93FA8 + + diff --git a/Matlab/Indent.tmPreferences.cache b/Matlab/Indent.tmPreferences.cache new file mode 100644 index 0000000..f33c3f6 Binary files /dev/null and b/Matlab/Indent.tmPreferences.cache differ diff --git a/Matlab/Matlab.tmLanguage b/Matlab/Matlab.tmLanguage new file mode 100644 index 0000000..a3b265b --- /dev/null +++ b/Matlab/Matlab.tmLanguage @@ -0,0 +1,1205 @@ + + + + + fileTypes + + + matlab + + foldingStartMarker + ^\s*(function|if|switch|while|for|try)\b(?!.*\bend\b).*$ + foldingStopMarker + ^\s*(end|return)\b.*$ + keyEquivalent + ^~M + name + MATLAB + patterns + + + begin + (?x) +(?=function\b) # borrowed from ruby bundle +(?<=^|\s)(function)\s+ # the function keyword +(?>\[(.*)\])?\t# match various different combination of output arguments +((?>[a-zA-Z_]\w*))? +(?>\s*=\s*)? +((?>[a-zA-Z_]\w*(?>[?!]|=(?!>))? )) # the function name +(?=[ \t]*[^\s%|#]) # make sure arguments and not a comment follow +\s*(\() # the opening parenthesis for arguments + beginCaptures + + 1 + + name + storage.type.matlab + + 2 + + name + variable.parameter.output.function.matlab + + 3 + + name + variable.parameter.output.function.matlab + + 4 + + name + entity.name.function.matlab + + + contentName + variable.parameter.input.function.matlab + end + \) + endCaptures + + 0 + + name + punctuation.definition.parameters.matlab + + + name + meta.function.with-arguments.matlab + + + captures + + 1 + + name + storage.type.matlab + + 2 + + name + variable.parameter.output.function.matlab + + 3 + + name + variable.parameter.output.function.matlab + + 4 + + name + entity.name.function.matlab + + + match + (?x) +(?=function\b) # borrowed from ruby bundle +(?<=^|\s)(function)\s+ # the function keyword +(?>\[(.*)\])? # match various different combination of output arguments +((?>[a-zA-Z_]\w*))? +(?>\s*=\s*)? +((?>[a-zA-Z_]\w*(?>[?!]|=(?!>))? )) # the function name + name + meta.function.without-arguments.matlab + + + include + #constants_override + + + include + #brackets + + + include + #curlybrackets + + + include + #parens + + + include + #string + + + include + #transpose + + + include + #double_quote + + + include + #operators + + + include + #all_matlab_keywords + + + include + #all_matlab_comments + + + include + #number + + + include + #variable + + + include + #variable_invalid + + + include + #not_equal_invalid + + + include + #variable_assignment + + + repository + + all_matlab_comments + + patterns + + + captures + + 1 + + name + punctuation.definition.comment.matlab + + + match + (%%).*$\n? + name + comment.double.percentage.matlab + + + begin + %\{ + captures + + 1 + + name + punctuation.definition.comment.matlab + + + end + %\}\s*\n + name + comment.block.percentage.matlab + + + captures + + 1 + + name + punctuation.definition.comment.matlab + + + match + (%).*$\n? + name + comment.line.percentage.matlab + + + + all_matlab_keywords + + patterns + + + include + #matlab_keyword_control + + + include + #matlab_keyword_operator + + + include + #matlab_keyword_other + + + include + #matlab_storage_type + + + include + #matlab_storage_modifier + + + include + #matlab_constant_language + + + include + #matlab_variable_function + + + include + #matlab_keyword_desktop + + + include + #matlab_keyword_mathematics + + + include + #matlab_keyword_analysis + + + include + #matlab_storage_control + + + include + #matlab_support_graphics + + + include + #matlab_support_function + + + include + #matlab_support_external + + + include + #matlab_support_toolbox_aerospace + + + include + #matlab_support_toolbox_bioinformatics + + + include + #matlab_support_toolbox_communications + + + include + #matlab_support_toolbox_control_systems + + + include + #matlab_support_toolbox_curve_fitting + + + include + #matlab_support_toolbox_data_acquisition + + + include + #matlab_support_toolbox_database + + + include + #matlab_support_toolbox_datafeed + + + include + #matlab_support_toolbox_design + + + include + #matlab_support_toolbox_excel_link + + + include + #matlab_support_toolbox_filder_design_hdl_coder + + + include + #matlab_support_toolbox_financial_derivatives + + + include + #matlab_support_toolbox_financial + + + include + #matlab_support_toolbox_fixed_income + + + include + #matlab_support_toolbox_fixed_point + + + include + #matlab_support_toolbox_fuzzy_logic + + + include + #matlab_support_toolbox_garch + + + include + #matlab_support_toolbox_genetic_algorithms + + + include + #matlab_support_toolbox_image_acquisition + + + include + #matlab_support_toolbox_image_processing + + + include + #matlab_support_toolbox_instrument_control + + + include + #matlab_support_toolbox_mapping + + + include + #matlab_support_toolbox_model_predictive_control + + + include + #matlab_support_toolbox_model_based_calibration + + + include + #matlab_support_toolbox_neural_network + + + include + #matlab_support_toolbox_opc + + + include + #matlab_support_toolbox_optimization + + + include + #matlab_support_toolbox_rf + + + include + #matlab_support_toolbox_robust_control + + + include + #matlab_support_toolbox_signal_processing + + + include + #matlab_support_toolbox_spline + + + include + #matlab_support_toolbox_statistics + + + include + #matlab_support_toolbox_symbolic_math + + + include + #matlab_support_toolbox_system_identification + + + include + #matlab_support_toolbox_virtual_reality + + + include + #matlab_support_toolbox_wavelet + + + + allofem + + patterns + + + include + #parens + + + include + #curlybrackets + + + include + #end_in_parens + + + include + #brackets + + + include + #string + + + include + #transpose + + + include + #double_quote + + + include + #all_matlab_keywords + + + include + #all_matlab_comments + + + include + #variable + + + include + #variable_invalid + + + include + #number + + + include + #operators + + + + brackets + + begin + \[ + beginCaptures + + 0 + + name + meta.brackets.matlab + + + contentName + meta.brackets.matlab + end + \] + endCaptures + + 0 + + name + meta.brackets.matlab + + + patterns + + + include + #allofem + + + + constants_override + + comment + The user is trying to override MATLAB constants and functions. + match + (^|\;)\s*(i|j|inf|Inf|nan|NaN|eps|end)\s*=[^=] + name + meta.inappropriate.matlab + + curlybrackets + + begin + \{ + beginCaptures + + 0 + + name + meta.brackets.curly.matlab + + + contentName + meta.brackets.curly.matlab + end + \} + endCaptures + + 0 + + name + meta.brackets.curly.matlab + + + patterns + + + include + #allofem + + + include + #end_in_parens + + + + double_quote + + patterns + + + match + " + name + invalid.illegal.invalid-quote.matlab + + + + end_in_parens + + comment + end as operator symbol + match + \bend\b + name + keyword.operator.symbols.matlab + + escaped_quote + + patterns + + + match + '' + name + constant.character.escape.matlab + + + + matlab_constant_language + + comment + MATLAB constants + match + (?<!\.)\b(eps|false|Inf|inf|intmax|intmin|namelengthmax|NaN|nan|on|off|realmax|realmin|true)\b + name + constant.language.matlab + + matlab_keyword_analysis + + comment + Data Analysis + match + (?<!\.)\b(abs|addevent|addsample|addsampletocollection|addts|angle|conv|conv2|convn|corrcoef|cov|cplxpair|ctranspose|cumtrapz|deconv|del2|delevent|delsample|delsamplefromcollection|detrend|diff|fft|fft2|fftn|fftshift|fftw|filter|filter2|getabstime|getdatasamplesize|getinterpmethod|getqualitydesc|getsampleusingtime|gettimeseriesnames|gettsafteratevent|gettsafterevent|gettsatevent|gettsbeforeatevent|gettsbeforeevent|gettsbetweenevents|gradient|idealfilter|ifft|ifft2|ifftn|ifftshift|iqr|max|mean|median|min|mldivide|mode|mrdivide|removets|resample|setabstime|setinterpmethod|settimeseriesnames|std|synchronize|timeseries|trapz|tscollection|tsdata.event|tsprops|tstool|var)\b + name + keyword.analysis.matlab + + matlab_keyword_control + + comment + Control keywords + match + (?<!\.)\b(break|case|catch|continue|else|elseif|end|for|if|otherwise|pause|rethrow|return|start|startat|stop|switch|try|wait|while)\b + name + keyword.control.matlab + + matlab_keyword_desktop + + comment + Desktop Tools and Development + match + (?<!\.)\b(addpath|assignin|builddocsearchdb|cd|checkin|checkout|clc|clear|clipboard|cmopts|commandhistory|commandwindow|computer|copyfile|customverctrl|dbclear|dbcont|dbdown|dbquit|dbstack|dbstatus|dbstep|dbstop|dbtype|dbup|debug|demo|diary|dir|doc|docopt|docsearch|dos|echodemo|edit|exit|fileattrib|filebrowser|finish|format|genpath|getenv|grabcode|help|helpbrowser|helpwin|home|hostid|info|keyboard|license|lookfor|ls|matlab|matlabrc|matlabroot|memory|mkdir|mlint|mlintrpt|more|movefile|notebook|openvar|pack|partialpath|path|path2rc|pathdef|pathsep|pathtool|perl|playshow|prefdir|preferences|profile|profsave|publish|pwd|quit|recycle|rehash|restoredefaultpath|rmdir|rmpath|savepath|setenv|startup|support|system|toolboxdir|type|undocheckout|unix|ver|verctrl|verLessThan|version|web|what|whatsnew|which|winqueryreg|workspace)\b|(^\s*!.*$) + name + keyword.desktop.matlab + + matlab_keyword_mathematics + + comment + Mathematics + match + (?<!\.)\b(accumarray|acos|acosd|acosh|acot|acotd|acoth|acsc|acscd|acsch|airy|amd|asec|asecd|asech|asin|asind|asinh|atan|atan2|atand|atanh|balance|besselh|besseli|besselj|besselk|bessely|beta|betainc|betaln|bicg|bicgstab|blkdiag|bsxfun|bvp4c|bvpget|bvpinit|bvpset|bvpxtend|cart2pol|cart2sph|cat|cdf2rdf|ceil|cgs|chol|cholinc|cholupdate|circshift|colamd|colperm|compan|complex|cond|condeig|condest|conj|convhull|convhulln|cos|cosd|cosh|cot|cotd|coth|cross|csc|cscd|csch|cumprod|cumsum|dblquad|dde23|ddeget|ddesd|ddeset|decic|det|deval|diag|disp|display|dmperm|dot|eig|eigs|ellipj|ellipke|erf|erfc|erfcinv|erfcx|erfinv|etree|etreeplot|exp|expint|expm|expm1|eye|factor|factorial|find|fix|flipdim|fliplr|flipud|floor|fminbnd|fminsearch|freqspace|full|funm|fzero|gallery|gamma|gammainc|gammaln|gcd|gmres|gplot|griddata|griddata3|griddatan|gsvd|hadamard|hankel|hess|hilb|horzcat|hypot|i|idivide|ilu|imag|ind2sub|Inf|inline|interp1|interp1q|interp2|interp3|interpft|interpn|inv|invhilb|ipermute|j|kron|lcm|ldl|legendre|length|linsolve|linspace|log|log10|log1p|log2|logm|logspace|lscov|lsqnonneg|lsqr|lu|luinc|magic|meshgrid|minres|mkpp|mod|NaN|nchoosek|ndgrid|ndims|nextpow2|nnz|nonzeros|norm|normest|nthroot|null|numel|nzmax|ode113|ode15i|ode15s|ode23|ode23s|ode23t|ode23tb|ode45|odefile|odeget|odeset|odextend|ones|optimget|optimset|ordeig|ordqz|ordschur|orth|pascal|pcg|pchip|pdepe|pdeval|perms|permute|pi|pinv|planerot|pol2cart|poly|polyder|polyeig|polyfit|polyint|polyval|polyvalm|pow2|ppval|primes|prod|psi|qmr|qr|qrdelete|qrinsert|qrupdate|quad|quadl|quadv|qz|rand|randn|randperm|rank|rat|rats|rcond|real|reallog|realpow|realsqrt|rem|repmat|reshape|residue|roots|rosser|rot90|round|rref|rsf2csf|schur|sec|secd|sech|shiftdim|sign|sin|sind|sinh|size|sort|sortrows|spalloc|sparse|spaugment|spconvert|spdiags|speye|spfun|sph2cart|spline|spones|spparms|sprand|sprandn|sprandsym|sprank|spy|sqrt|sqrtm|squeeze|ss2tf|sub2ind|subspace|sum|svd|svds|symamd|symbfact|symmlq|symrcm|tan|tand|tanh|toeplitz|trace|treelayout|treeplot|tril|triplequad|triu|unmkpp|unwrap|vander|vectorize|vertcat|wilkinson|zeros)\b + name + keyword.mathematics.matlab + + matlab_keyword_operator + + comment + Operator keywords + match + (?<!\.)\b(all|and|any|bitand|bitcmp|bitget|bitmax|bitor|bitset|bitshift|bitxor|eq|ge|gt|isa|isappdata|iscell|iscellstr|ischar|iscom|isdir|isempty|isequal|isequalwithequalnans|isevent|isfield|isfinite|isfloat|isglobal|ishandle|ishold|isinf|isinteger|isinterface|isjava|iskeyword|isletter|islogical|ismac|ismember|ismethod|isnan|isnumeric|isobject|ispc|ispref|isprime|isprop|isreal|isscalar|issorted|isspace|issparse|isstrprop|isstruct|isstudent|isunix|isvarname|isvector|le|lt|mislocked|or|ne|not|setxor|union|unique|xor)\b + name + keyword.operator.matlab + + matlab_keyword_other + + comment + Other keywords + match + (?<!\.)\b(addOptional|addParamValue|addRequired|addtodate|ans|arrayfun|assert|blanks|builtin|calendar|cell|celldisp|cellfun|cellplot|clock|cputime|createCopy|datatipinfo|date|datenum|datestr|datevec|dbmex|deal|deblank|depdir|depfun|echo|eomday|error|etime|eval|evalc|evalin|exist|feval|fieldnames|findstr|func2str|genvarname|getfield|global|inferiorto|inmem|intersect|intwarning|lasterr|lasterror|lastwarn|loadobj|lower|methods|methodsview|mex|mexext|mfilename|mlock|munlock|nargchk|nargoutchk|now|orderfields|parse|pcode|regexp|regexpi|regexprep|regexptranslate|rmfield|run|saveobj|setdiff|setfield|sprintf|sscanf|strcat|strcmp|strcmpi|strfind|strings|strjust|strmatch|strncmp|strncmpi|strread|strrep|strtok|strtrim|structfun|strvcat|subsasgn|subsindex|subsref|substruct|superiorto|swapbytes|symvar|tic|timer|timerfind|timerfindall|toc|typecast|upper|warning|weekday|who|whos)\b + name + keyword.other.matlab + + matlab_storage_control + + comment + File I/O + match + (?<!\.)\b(addframe|ascii|audioplayer|audiorecorder|aufinfo|auread|auwrite|avifile|aviinfo|aviread|beep|binary|cdfepoch|cdfinfo|cdfread|cdfwrite|csvread|csvwrite|daqread|dlmread|dlmwrite|exifread|fclose|feof|ferror|fgetl|fgets|filehandle|filemarker|fileparts|filesep|fitsinfo|fitsread|fopen|fprintf|fread|frewind|fscanf|fseek|ftell|ftp|fullfile|fwrite|gunzip|gzip|hdf|hdf5|hdf5info|hdf5read|hdf5write|hdfinfo|hdfread|hdftool|imfinfo|importdata|imread|imwrite|lin2mu|load|memmapfile|mget|mmfileinfo|movie2avi|mput|mu2lin|multibandread|multibandwrite|open|rename|save|sendmail|sound|soundsc|tar|tempdir|tempname|textread|textscan|todatenum|uiimport|untar|unzip|urlread|urlwrite|wavfinfo|wavplay|wavread|wavrecord|wavwrite|winopen|wk1finfo|wk1read|wk1write|xlsfinfo|xlsread|xlswrite|xmlread|xmlwrite|xslt|zip)\b + name + storage.control.matlab + + matlab_storage_modifier + + comment + Storage modifiers + match + (?<!\.)\b(base2dec|bin2dec|cast|cell2mat|cell2struct|cellstr|char|dec2base|dec2bin|dec2hex|hex2dec|hex2num|int2str|mat2cell|mat2str|num2cell|native2unicode|num2hex|num2str|persistent|str2double|str2func|str2mat|str2num|struct2cell|unicode2native)\b + name + storage.modifier.matlab + + matlab_storage_type + + comment + Storage types + match + (?<!\.)\b(class|double|function|functions|input|inputname|inputParser|int16|int32|int64|int8|logical|single|struct|uint16|uint32|uint64|uint8)\b + name + storage.type.matlab + + matlab_support_external + + comment + External Interfaces + match + (?<!\.)\b(actxcontrol|actxcontrollist|actxcontrolselect|actxGetRunningServer|actxserver|addproperty|calllib|callSoapService|createClassFromWsdl|createSoapMessage|ddeadv|ddeexec|ddeinit|ddepoke|ddereq|ddeterm|ddeunadv|deleteproperty|enableservice|eventlisteners|events|Execute|GetCharArray|GetFullMatrix|GetVariable|GetWorkspaceData|import|instrcallback|instrfind|instrfindall|interfaces|invoke|javaaddpath|javaArray|javachk|javaclasspath|javaMethod|javaObject|javarmpath|libfunctions|libfunctionsview|libisloaded|libpointer|libstruct|loadlibrary|MaximizeCommandWindow|MinimizeCommandWindow|move|parseSoapResponse|PutCharArray|PutFullMatrix|PutWorkspaceData|readasync|record|registerevent|release|send|serial|serialbreak|stopasync|unloadlibrary|unregisterallevents|unregisterevent|usejava)\b + name + support.external.matlab + + matlab_support_function + + comment + Creating Graphical User Interfaces + match + (?<!\.)\b(addpref|align|dialog|errordlg|export2wsdlg|getappdata|getpixelposition|getpref|ginput|guidata|guide|guihandles|helpdlg|inputdlg|inspect|listdlg|listfonts|menu|movegui|msgbox|openfig|printdlg|printpreview|questdlg|rmappdata|rmpref|selectmoveresize|setappdata|setpixelposition|setpref|textwrap|uibuttongroup|uicontextmenu|uicontrol|uigetdir|uigetfile|uigetpref|uimenu|uiopen|uipanel|uipushtool|uiputfile|uiresume|uisave|uisetcolor|uisetfont|uisetpref|uistack|uitoggletool|uitoolbar|uiwait|waitbar|waitfor|waitforbuttonpress|warndlg)\b + name + support.function.matlab + + matlab_support_graphics + + comment + Graphics + match + (?<!\.)\b(alim|allchild|alpha|alphamap|ancestor|annotation|area|axes|axis|bar|bar3|bar3h|barh|box|brighten|camdolly|cameratoolbar|camlight|camlookat|camorbit|campan|campos|camproj|camroll|camtarget|camup|camva|camzoom|caxis|cla|clabel|clf|close|closereq|colorbar|colordef|colormap|colormapeditor|ColorSpec|comet|comet3|compass|coneplot|contour|contour3|contourc|contourf|contourslice|contrast|copyobj|curl|cylinder|daspect|datacursormode|datetick|delaunay|delaunay3|delaunayn|delete|diffuse|divergence|dragrect|drawnow|dsearch|dsearchn|ellipsoid|errorbar|ezcontour|ezcontourf|ezmesh|ezmeshc|ezplot|ezplot3|ezpolar|ezsurf|ezsurfc|feather|figure|figurepalette|fill|fill3|findall|findfigs|findobj|flow|fplot|frame2im|frameedit|gca|gcbf|gcbo|gcf|gco|get|getframe|graymon|grid|gtext|hgexport|hggroup|hgload|hgsave|hgtransform|hidden|hist|histc|hold|hsv2rgb|im2frame|im2java|image|imagesc|imformats|ind2rgb|inpolygon|interpstreamspeed|isocaps|isocolors|isonormals|isosurface|legend|light|lightangle|lighting|line|LineSpec|linkaxes|linkprop|loglog|makehgtform|material|mesh|meshc|meshz|movie|newplot|noanimate|opengl|orient|pan|pareto|patch|pbaspect|pcolor|peaks|pie|pie3|plot|plot3|plotbrowser|plotedit|plotmatrix|plottools|plotyy|polar|polyarea|print|printopt|propedit|propertyeditor|quiver|quiver3|rbbox|rectangle|rectint|reducepatch|reducevolume|refresh|refreshdata|reset|rgb2hsv|rgbplot|ribbon|rose|rotate|rotate3d|saveas|scatter|scatter3|semilogx|semilogy|set|shading|showplottool|shrinkfaces|slice|smooth3|specular|sphere|spinmap|stairs|stem|stem3|stream2|stream3|streamline|streamparticles|streamribbon|streamslice|streamtube|subplot|subvolume|surf|surf2patch|surface|surfc|surfl|surfnorm|tetramesh|texlabel|text|title|trimesh|triplot|trisurf|tsearch|tsearchn|view|viewmtx|volumebounds|voronoi|voronoin|waterfall|whitebg|xlabel|xlim|ylabel|ylim|zlabel|zlim|zoom)\b + name + support.graphics.matlab + + matlab_support_toolbox_aerospace + + comment + Matlab aerospace toolbox + match + (?<!\.)\b(wrldmagm|updateNodes|updateCamera|updateBodies|update|show|saveas|rrtheta|rrsigma|rrdelta|removeViewpoint|removeNode|removeBody|read|quatrotate|quatnormalize|quatnorm|quatmultiply|quatmod|quatinv|quatdivide|quatconj|quat2dcm|quat2angle|play|nodeInfo|moveBody|move|mjuliandate|machnumber|load|lla2ecef|leapyear|juliandate|initialize|initIfNeeded|hide|gravitywgs84|geoidegm96|geod2geoc|geocradius|geoc2geod|generatePatches|findstartstoptimes|fganimation|ecef2lla|dpressure|delete|decyear|dcmecef2ned|dcmbody2wind|dcm2quat|dcm2latlon|dcm2angle|dcm2alphabeta|datcomimport|createBody|correctairspeed|convvel|convtemp|convpres|convmass|convlength|convforce|convdensity|convangvel|convangacc|convang|convacc|atmospalt|atmosnrlmsise00|atmosnonstd|atmoslapse|atmosisa|atmoscoesa|atmoscira|angle2quat|angle2dcm|alphabeta|airspeed|addViewpoint|addRoute|addNode|addBody|VirtualRealityAnimation|Viewpoint|Node|Geometry|GenerateRunScript|Camera|Body|Animation)\b + name + support.toolbox.aerospace.matlab + + matlab_support_toolbox_bioinformatics + + comment + Matlab bioinformatics toolbox + match + (?<!\.)\b(zonebackadj|weights|view|traverse|traceplot|topoorder|swalign|svmtrain|svmsmoset|svmclassify|subtree|sptread|showhmmprof|showalignment|shortestpath|seqwordcount|seqtool|seqshowwords|seqshoworfs|seqreverse|seqrcomplement|seqprofile|seqpdist|seqneighjoin|seqmatch|seqlogo|seqlinkage|seqinsertgaps|seqdotplot|seqdisp|seqconsensus|seqcomplement|seq2regexp|select|scfread|samplealign|rnaplot|rnafold|rnaconvert|rna2dna|rmasummary|rmabackadj|revgeneticcode|restrict|reroot|reorder|redgreencmap|rebasecuts|rankfeatures|randseq|randfeatures|ramachandran|quantilenorm|prune|proteinpropplot|proteinplot|profalign|probesetvalues|probesetplot|probesetlookup|probesetlink|probelibraryinfo|plot|phytreewrite|phytreetool|phytreeread|phytree|pfamhmmread|pdist|pdbwrite|pdbread|pdbdistplot|pam|palindromes|optimalleaforder|oligoprop|nwalign|num2goid|nuc44|ntdensity|nt2int|nt2aa|nmercount|mzxmlread|mzxml2peaks|multialignviewer|multialignread|multialign|msviewer|mssgolay|msresample|msppresample|mspeaks|mspalign|msnorm|mslowess|msheatmap|msdotplot|msbackadj|msalign|molweight|molviewer|minspantree|maxflow|mavolcanoplot|mattest|mapcaplot|manorm|malowess|maloglog|mairplot|mainvarsetnorm|maimage|magetfield|mafdr|maboxplot|knnimpute|knnclassify|joinseq|jcampread|isspantree|isomorphism|isoelectric|isdag|int2nt|int2aa|imageneread|hmmprofstruct|hmmprofmerge|hmmprofgenerate|hmmprofestimate|hmmprofalign|graphtraverse|graphtopoorder|graphshortestpath|graphpred2path|graphminspantree|graphmaxflow|graphisspantree|graphisomorphism|graphisdag|graphconncomp|graphcluster|graphallshortestpaths|gprread|gonnet|goannotread|getrelatives|getpdb|getnodesbyid|getnewickstr|getmatrix|gethmmtree|gethmmprof|gethmmalignment|getgeodata|getgenpept|getgenbank|getembl|getedgesbynodeid|getdescendants|getcanonical|getbyname|getblast|getancestors|get|geosoftread|genpeptread|genevarfilter|geneticcode|generangefilter|geneont|genelowvalfilter|geneentropyfilter|genbankread|gcrmabackadj|gcrma|galread|featuresparse|featuresmap|fastawrite|fastaread|exprprofvar|exprprofrange|evalrasmolscript|emblread|dolayout|dndsml|dnds|dna2rna|dimercount|dayhoff|cytobandread|crossvalind|cpgisland|conncomp|codoncount|codonbias|clustergram|cleave|classperf|chromosomeplot|cghcbs|celintensityread|blosum|blastreadlocal|blastread|blastncbi|blastlocal|blastformat|biograph|baselookup|basecount|atomiccomp|aminolookup|allshortestpaths|agferead|affyread|affyprobeseqread|affyprobeaffinities|affyinvarsetnorm|aacount|aa2nt|aa2int)\b + name + support.toolbox.bioinformatics.matlab + + matlab_support_toolbox_communications + + comment + Matlab communications toolbox + match + (?<!\.)\b(wgn|vitdec|vec2mat|varlms|syndtable|symerr|stdchan|ssbmod|ssbdemod|signlms|shift2mask|seqgen\.pn|seqgen|semianalytic|scatterplot|rsgenpoly|rsencof|rsenc|rsdecof|rsdec|rls|ricianchan|reset|rectpulse|rcosine|rcosiir|rcosflt|rcosfir|rayleighchan|randsrc|randintrlv|randint|randerr|randdeintrlv|quantiz|qfuncinv|qfunc|qammod|qamdemod|pskmod|pskdemod|primpoly|poly2trellis|pmmod|pmdemod|plot|pammod|pamdemod|oqpskmod|oqpskdemod|oct2dec|normlms|noisebw|muxintrlv|muxdeintrlv|mskmod|mskdemod|modnorm|modem\.qammod|modem\.qamdemod|modem\.pskmod|modem\.pskdemod|modem\.pammod|modem\.pamdemod|modem\.oqpskmod|modem\.oqpskdemod|modem\.mskmod|modem\.mskdemod|modem\.genqammod|modem\.genqamdemod|modem\.dpskmod|modem\.dpskdemod|modem|mlseeq|mldivide|minpol|matintrlv|matdeintrlv|mask2shift|marcumq|log|lms|lloyds|lineareq|istrellis|isprimitive|iscatastrophic|intrlv|intdump|ifft|huffmanenco|huffmandict|huffmandeco|hilbiir|helscanintrlv|helscandeintrlv|helintrlv|heldeintrlv|hank2sys|hammgen|gray2bin|gfweight|gftuple|gftrunc|gftable|gfsub|gfroots|gfrepcov|gfrank|gfprimfd|gfprimdf|gfprimck|gfpretty|gfmul|gfminpol|gflineq|gffilter|gfdiv|gfdeconv|gfcosets|gfconv|gfadd|gf|genqammod|genqamdemod|gen2par|fskmod|fskdemod|fmmod|fmdemod|finddelay|filter|fft|fec\.ldpcenc|fec\.ldpcdec|eyediagram|equalize|encode|dvbs2ldpc|dpskmod|dpskdemod|dpcmopt|dpcmenco|dpcmdeco|doppler\.rounded|doppler\.rjakes|doppler\.jakes|doppler\.gaussian|doppler\.flat|doppler\.bigaussian|doppler\.ajakes|doppler|distspec|dftmtx|dfe|deintrlv|decode|de2bi|cyclpoly|cyclgen|cosets|convmtx|convintrlv|convenc|convdeintrlv|compand|commscope\.eyediagram|commscope|cma|bsc|biterr|bin2gray|bi2de|bertool|bersync|berfit|berfading|berconfint|bercoding|berawgn|bchnumerr|bchgenpoly|bchenc|bchdec|awgn|arithenco|arithdeco|ammod|amdemod|alignsignals|algintrlv|algdeintrlv)\b + name + support.toolbox.communications.matlab + + matlab_support_toolbox_control_systems + + comment + Matlab control systems toolbox + match + (?<!\.)\b(zpkdata|zpk|zgrid|zero|totaldelay|tfdata|tf|stepplot|stepinfo|step|stack|stabsep|ssdata|ssbal|ss2ss|ss|sminreal|size|sisotool|sisoinit|sigmaplot|sigma|sgrid|setoptions|setdelaymodel|set|series|rss|rlocusplot|rlocus|reshape|reg|real|pzplot|pzmap|pole|place|parallel|pade|ord2|obsvf|obsv|nyquistplot|nyquist|norm|nicholsplot|nichols|ngrid|ndims|modsep|modred|minreal|margin|lyapchol|lyap|ltiview|ltiprops|ltimodels|lsimplot|lsiminfo|lsim|lqry|lqrd|lqr|lqgreg|lqg|lft|kalmd|kalman|issiso|isproper|isempty|isdt|isct|iopzplot|iopzmap|inv|interp|initialplot|initial|impulseplot|impulse|imag|hsvplot|hsvd|hasdelay|gram|getoptions|getdelaymodel|get|gensig|gdare|gcare|fselect|freqresp|frdata|frd|fnorm|filt|feedback|fcat|evalfr|estim|esort|dssdata|dss|dsort|drss|dlyapchol|dlyap|dlqr|delayss|delay2z|dcgain|dare|damp|d2d|d2c|ctrlpref|ctrbf|ctrb|covar|connect|conj|chgunits|care|canon|c2d|bodeplot|bodemag|bode|bandwidth|balred|balreal|augstate|append|allmargin|acker|abs)\b + name + support.toolbox.control-systems.matlab + + matlab_support_toolbox_curve_fitting + + comment + Matlab curve fitting toolbox + match + (?<!\.)\b(type|smooth|set|probvalues|probnames|predint|plot|numcoeffs|numargs|islinear|integrate|indepnames|get|formula|fittype|fitoptions|fit|feval|excludedata|differentiate|dependnames|datastats|confint|coeffvalues|coeffnames|cftool|cflibhelp|cfit|category|argnames)\b + name + support.toolbox.curve-fitting.matlab + + matlab_support_toolbox_data_acquisition + + comment + Matlab data acquisition toolbox + match + (?<!\.)\b(wait|trigger|stop|start|softscope|size|showdaqevents|setverify|set|save|putvalue|putsample|putdata|propinfo|peekdata|obj2mfile|muxchanidx|makenames|load|length|isvalid|issending|isrunning|islogging|isdioline|ischannel|inspect|getvalue|getsample|getdata|get|flushdata|disp|digitalio|delete|dec2binvec|daqreset|daqregister|daqread|daqmem|daqhwinfo|daqhelp|daqfind|daqcallback|clear|binvec2dec|analogoutput|analoginput|addmuxchannel|addline|addchannel)\b + name + support.toolbox.data-acquisition.matlab + + matlab_support_toolbox_database + + comment + Matlab database toolbox + match + (?<!\.)\b(width|versioncolumns|update|unregister|tables|tableprivileges|supports|sql2native|setdbprefs|set|runstoredprocedure|rsmd|rows|rollback|resultset|register|querytimeout|querybuilder|procedures|procedurecolumns|primarykeys|ping|namecolumn|logintimeout|isurl|isreadonly|isnullcolumn|isjdbc|isdriver|isconnection|insert|indexinfo|importedkeys|getdatasources|get|fetchmulti|fetch|fastinsert|exportedkeys|exec|drivermanager|driver|dmd|database\.fetch|database|cursor\.fetch|crossreference|confds|commit|columns|columnprivileges|columnnames|cols|close|clearwarnings|bestrowid|attr)\b + name + support.toolbox.database.matlab + + matlab_support_toolbox_datafeed + + comment + Matlab datafeed toolbox + match + (?<!\.)\b(yahoo|tables|stop|stockticker|showtrades|reuters|pricevol|nextinfo|kx|isconnection|insert|info|idc|hyperfeed|havertool|haver|get|fred|fetch|factset|exec|datastream|close|bloomberg)\b + name + support.toolbox.datafeed.matlab + + matlab_support_toolbox_design + + comment + Matlab design toolbox + match + (?<!\.)\b(zplane|zpkshiftc|zpkshift|zpkrateup|zpklp2xn|zpklp2xc|zpklp2mbc|zpklp2mb|zpklp2lp|zpklp2hp|zpklp2bsc|zpklp2bs|zpklp2bpc|zpklp2bp|zpkftransf|zpkbpc2bpc|zerophase|window|validstructures|tf2cl|tf2ca|stepz|specifyall|sos|setspecs|set2int|scaleopts|scalecheck|scale|reset|reorder|reffilter|realizemdl|qreport|polyphase|phasez|phasedelay|parallel|order|nstates|normalizefreq|normalize|norm|noisepsdopts|noisepsd|multistage|msesim|msepred|mfilt\.linearinterp|mfilt\.iirwdfinterp|mfilt\.iirwdfdecim|mfilt\.iirinterp|mfilt\.iirdecim|mfilt\.holdinterp|mfilt\.firtdecim|mfilt\.firsrc|mfilt\.firinterp|mfilt\.firfracinterp|mfilt\.firfracdecim|mfilt\.firdecim|mfilt\.fftfirinterp|mfilt\.farrowsrc|mfilt\.cicinterp|mfilt\.cicdecim|mfilt\.cascade|mfilt|measure|maxstep|limitcycle|lagrange|kaiserwin|isstable|issos|isreal|isminphase|ismaxphase|islinphase|isfir|isallpass|int|info|impz|iirshiftc|iirshift|iirrateup|iirpowcomp|iirpeak|iirnotch|iirls|iirlpnormc|iirlpnorm|iirlp2xn|iirlp2xc|iirlp2mbc|iirlp2mb|iirlp2lp|iirlp2hp|iirlp2bsc|iirlp2bs|iirlp2bpc|iirlp2bp|iirlinphase|iirgrpdelay|iirftransf|iircomb|iirbpc2bpc|ifir|help|grpdelay|gain|freqz|freqsamp|freqrespopts|freqrespest|firtype|firpr2chfb|firnyquist|firminphase|firls|firlpnorm|firlp2lp|firlp2hp|firhalfband|firgr|fireqint|firceqrip|fircband|filtstates\.cic|filterbuilder|filter|fftcoeffs|fdesign\.rsrc|fdesign\.peak|fdesign\.parameq|fdesign\.octave|fdesign\.nyquist|fdesign\.notch|fdesign\.lowpass|fdesign\.isinclp|fdesign\.interpolator|fdesign\.hilbert|fdesign\.highpass|fdesign\.halfband|fdesign\.fracdelay|fdesign\.differentiator|fdesign\.decimator|fdesign\.ciccomp|fdesign\.bandstop|fdesign\.bandpass|fdesign\.arbmagnphase|fdesign\.arbmag|fdesign|fdatool|fcfwrite|farrow|euclidfactors|equiripple|ellip|double|disp|dfilt\.wdfallpass|dfilt\.scalar|dfilt\.parallel|dfilt\.latticemamin|dfilt\.latticemamax|dfilt\.latticearma|dfilt\.latticear|dfilt\.latticeallpass|dfilt\.dfsymfir|dfilt\.dffirt|dfilt\.dffir|dfilt\.dfasymfir|dfilt\.df2tsos|dfilt\.df2t|dfilt\.df2sos|dfilt\.df2|dfilt\.df1tsos|dfilt\.df1t|dfilt\.df1sos|dfilt\.df1|dfilt\.cascadewdfallpass|dfilt\.cascadeallpass|dfilt\.cascade|dfilt\.calatticepc|dfilt\.calattice|dfilt\.allpass|dfilt|designopts|designmethods|design|denormalize|cumsec|cost|convert|coewrite|coeread|coeffs|cl2tf|cheby2|cheby1|ca2tf|butter|block|autoscale|allpassshiftc|allpassshift|allpassrateup|allpasslp2xn|allpasslp2xc|allpasslp2mbc|allpasslp2mb|allpasslp2lp|allpasslp2hp|allpasslp2bsc|allpasslp2bs|allpasslp2bpc|allpasslp2bp|allpassbpc2bpc|adaptfilt\.ufdaf|adaptfilt\.tdafdft|adaptfilt\.tdafdct|adaptfilt\.swrls|adaptfilt\.swftf|adaptfilt\.ss|adaptfilt\.se|adaptfilt\.sd|adaptfilt\.rls|adaptfilt\.qrdrls|adaptfilt\.qrdlsl|adaptfilt\.pbufdaf|adaptfilt\.pbfdaf|adaptfilt\.nlms|adaptfilt\.lsl|adaptfilt\.lms|adaptfilt\.hswrls|adaptfilt\.hrls|adaptfilt\.gal|adaptfilt\.ftf|adaptfilt\.filtxlms|adaptfilt\.fdaf|adaptfilt\.dlms|adaptfilt\.blmsfft|adaptfilt\.blms|adaptfilt\.bap|adaptfilt\.apru|adaptfilt\.ap|adaptfilt\.adjlms|adaptfilt)\b + name + support.toolbox.design.matlab + + matlab_support_toolbox_excel_link + + comment + Matlab excel link toolbox + match + (?<!\.)\b(matlabsub|matlabinit|matlabfcn|MLUseFullDesktop|MLUseCellArray|MLStartDir|MLShowMatlabErrors|MLPutVar|MLPutMatrix|MLOpen|MLMissingDataAsNaN|MLGetVar|MLGetMatrix|MLGetFigure|MLEvalString|MLDeleteMatrix|MLClose|MLAutoStart|MLAppendMatrix)\b + name + support.toolbox.excel-link.matlab + + matlab_support_toolbox_filder_design_hdl_coder + + comment + Matlab filder design hdl coder toolbox + match + (?<!\.)\b(generatetbstimulus|generatetb|generatehdl|fdhdltool)\b + name + support.toolbox.filder-design-hdl-coder.matlab + + matlab_support_toolbox_financial + + comment + Matlab financial toolbox + match + (?<!\.)\b(zero2pyld|zero2fwd|zero2disc|zbtyield|zbtprice|yldtbill|yldmat|ylddisc|yearfrac|yeardays|year|xirr|x2mdate|wrkdydif|willpctr|willad|weights2holdings|weekday|wclose|volroc|vertcat|uplus|uminus|uicalendar|ugarchsim|ugarchpred|ugarchllf|ugarch|typprice|tsmovavg|tsmom|tsaccel|tr2bonds|toweekly|totalreturnprice|tosemi|toquoted|toquarterly|tomonthly|todecimal|today|todaily|toannual|times|time2date|tick2ret|thirtytwo2dec|thirdwednesday|tbl2bond|taxedrr|targetreturn|subsref|subsasgn|stochosc|std|spctkd|sortfts|smoothts|size|sharpe|setfield|selectreturn|second|rsindex|rmfield|ret2tick|resamplets|rdivide|pyld2zero|pvvar|pvtrend|pvfix|prtbill|prmat|prdisc|prcroc|prbyzero|power|posvolidx|portvrisk|portstats|portsim|portrand|portopt|portcons|portalpha|portalloc|pointfig|plus|plot|periodicreturns|peravg|pcpval|pcglims|pcgcomp|pcalims|payuni|payper|payodd|payadv|opprofit|onbalvol|nweekdate|now|nomrr|negvolidx|mvnrstd|mvnrobj|mvnrmle|mvnrfish|mtimes|mrdivide|movavg|months|month|mirr|minute|minus|min|merge|medprice|mean|maxdrawdown|max|macd|m2xdate|lweekdate|lpm|log2|log10|log|llow|length|leadts|lbusdate|lagts|issorted|isfield|isequal|iscompatible|isbusday|irr|inforatio|hour|horzcat|holidays|holdings2weights|hist|highlow|hhigh|getnameidx|getfield|geom2arith|fwd2zero|fvvar|fvfix|fvdisc|ftsuniq|ftstool|ftsinfo|ftsgui|ftsbound|fts2mat|fts2ascii|frontier|frontcon|freqstr|freqnum|frac2cur|fpctkd|fints|filter|fillts|fieldnames|fetch|fbusdate|extfield|exp|ewstats|eomday|eomdate|end|emaxdrawdown|elpm|effrr|ecmnstd|ecmnobj|ecmnmle|ecmninit|ecmnhess|ecmnfish|ecmmvnrstd|ecmmvnrobj|ecmmvnrmle|ecmmvnrfish|ecmlsrobj|ecmlsrmle|discrate|disc2zero|diff|depstln|depsoyd|deprdv|depgendb|depfixdb|dec2thirtytwo|daysdif|daysadd|daysact|days365|days360psa|days360isda|days360e|days360|day|datewrkdy|datevec|datestr|datenum|datemnth|datefind|datedisp|dateaxis|date2time|cur2str|cur2frac|cumsum|createholidays|cpnpersz|cpndaysp|cpndaysn|cpndatepq|cpndatep|cpndatenq|cpndaten|cpncount|cov2corr|corr2cov|convertto|convert2sur|chfield|chartfts|chaikvolat|chaikosc|cftimes|cfport|cfdur|cfdates|cfconv|cfamounts|candle|busdays|busdate|boxcox|bollinger|bolling|bndyield|bndspread|bndprice|bnddury|bnddurp|bndconvy|bndconvp|blsvega|blstheta|blsrho|blsprice|blslambda|blsimpv|blsgamma|blsdelta|blkprice|blkimpv|binprice|beytbill|barh|bar3h|bar3|bar|ascii2fts|arith2geom|annuterm|annurate|amortize|adosc|adline|active2abs|acrudisc|acrubond|accrfrac|abs2active)\b + name + support.toolbox.financial.matlab + + matlab_support_toolbox_financial_derivatives + + comment + Matlab financial derivatives toolbox + match + (?<!\.)\b(trintreeshape|trintreepath|treeviewer|treeshape|treepath|time2date|swaptionbyhw|swaptionbyhjm|swaptionbybk|swaptionbybdt|swapbyzero|swapbyhw|swapbyhjm|swapbybk|swapbybdt|stockspec|stockoptspec|ratetimes|rate2disc|optstockbyitt|optstockbyeqp|optstockbycrr|optbndbyhw|optbndbyhjm|optbndbybk|optbndbybdt|mmktbyhjm|mmktbybdt|mktrintree|mktree|mkbush|lookbackbyitt|lookbackbyeqp|lookbackbycrr|itttree|itttimespec|ittsens|ittprice|isafin|intenvset|intenvsens|intenvprice|intenvget|insttypes|instswaption|instswap|instsetfield|instselect|instoptstock|instoptbnd|instlookback|instlength|instgetcell|instget|instfloor|instfloat|instfixed|instfind|instfields|instdisp|instdelete|instcompound|instcf|instcap|instbond|instbarrier|instasian|instaddfield|instadd|hwvolspec|hwtree|hwtimespec|hwsens|hwprice|hjmvolspec|hjmtree|hjmtimespec|hjmsens|hjmprice|hedgeslf|hedgeopt|floorbyhw|floorbyhjm|floorbybk|floorbybdt|floatbyzero|floatbyhw|floatbyhjm|floatbybk|floatbybdt|fixedbyzero|fixedbyhw|fixedbyhjm|fixedbybk|fixedbybdt|eqptree|eqptimespec|eqpsens|eqpprice|disc2rate|derivset|derivget|datedisp|date2time|cvtree|crrtree|crrtimespec|crrsens|crrprice|compoundbyitt|compoundbyeqp|compoundbycrr|classfin|cfbyzero|cfbyhw|cfbyhjm|cfbybk|cfbybdt|capbyhw|capbyhjm|capbybk|capbybdt|bushshape|bushpath|bondbyzero|bondbyhw|bondbyhjm|bondbybk|bondbybdt|bkvolspec|bktree|bktimespec|bksens|bkprice|bdtvolspec|bdttree|bdttimespec|bdtsens|bdtprice|barrierbyitt|barrierbyeqp|barrierbycrr|asianbyitt|asianbyeqp|asianbycrr)\b + name + support.toolbox.financial-derivatives.matlab + + matlab_support_toolbox_fixed_income + + comment + Matlab fixed income toolbox + match + (?<!\.)\b(zeroyield|zeroprice|tfutyieldbyrepo|tfutpricebyrepo|tfutimprepo|tfutbyyield|tfutbyprice|tbillyield2disc|tbillyield|tbillval01|tbillrepo|tbillprice|tbilldisc2yield|stepcpnyield|stepcpnprice|stepcpncfamounts|psaspeed2rate|psaspeed2default|mbsyield2speed|mbsyield2oas|mbsyield|mbswal|mbsprice2speed|mbsprice2oas|mbsprice|mbspassthrough|mbsoas2yield|mbsoas2price|mbsnoprepay|mbsdury|mbsdurp|mbsconvy|mbsconvp|mbscfamounts|liborprice|liborfloat2fixed|liborduration|convfactor|cfamounts|cdyield|cdprice|cdai|cbprice|bkput|bkfloorlet|bkcaplet|bkcall)\b + name + support.toolbox.fixed-income.matlab + + matlab_support_toolbox_fixed_point + + comment + Matlab fixed-point toolbox + match + (?<!\.)\b(zlim|ylim|xlim|wordlength|waterfall|voronoin|voronoi|vertcat|upperbound|uplus|uminus|uint8|uint32|uint16|triu|trisurf|triplot|trimesh|tril|treeplot|transpose|tostring|toeplitz|times|text|surfnorm|surfl|surfc|surf|sum|subsref|subsasgn|sub|stripscaling|streamtube|streamslice|streamribbon|stem3|stem|stairs|squeeze|sqrt|spy|slice|size|single|sign|shiftdim|set|semilogy|semilogx|sdec|scatter3|scatter|savefipref|round|rose|ribbon|rgbplot|reshape|resetlog|reset|rescale|repmat|realmin|realmax|real|range|randquant|quiver3|quiver|quantizer|quantize|pow2|polar|plus|plotyy|plotmatrix|plot3|plot|permute|pcolor|patch|or|oct|nunderflows|numerictype|numberofelements|num2int|num2hex|num2bin|noverflows|not|noperations|ne|ndims|mtimes|mpy|minus|minlog|min|meshz|meshc|mesh|maxlog|max|lt|lsb|lowerbound|loglog|logical|line|length|le|isvector|issigned|isscalar|isrow|isreal|ispropequal|isobject|isnumerictype|isnumeric|isnan|isinf|isfinite|isfimath|isfi|isequal|isempty|iscolumn|ipermute|intmin|intmax|int8|int32|int16|int|innerprodintbits|imag|horzcat|histc|hist|hex2num|hex|hankel|gt|gplot|getmsb|getlsb|get|ge|fractionlength|fplot|flipud|fliplr|flipdim|fipref|fimath|fi|feather|ezsurfc|ezsurf|ezpolar|ezplot3|ezplot|ezmesh|ezcontourf|ezcontour|exponentmin|exponentmax|exponentlength|exponentbias|etreeplot|errorbar|eq|eps|end|double|divide|disp|diag|denormalmin|denormalmax|dec|ctranspose|copyobj|convergent|contourf|contourc|contour3|contour|conj|coneplot|complex|compass|comet3|comet|clabel|buffer|bitxorreduce|bitxor|bitsrl|bitsra|bitsll|bitsliceget|bitshift|bitset|bitror|bitrol|bitorreduce|bitor|bitget|bitconcat|bitcmp|bitandreduce|bitand|bin2num|bin|barh|bar|area|any|and|all|add|abs)\b + name + support.toolbox.fixed-point.matlab + + matlab_support_toolbox_fuzzy_logic + + comment + Matlab fuzzy logic toolbox + match + (?<!\.)\b(zmf|writefis|trimf|trapmf|surfview|subclust|smf|sigmf|showrule|showfis|sffis|setfis|ruleview|ruleedit|rmvar|rmmf|readfis|psigmf|probor|plotmf|plotfis|pimf|parsrule|newfis|mfedit|mf2mf|mam2sug|getfis|gensurf|genfis3|genfis2|genfis1|gbellmf|gaussmf|gauss2mf|fuzzy|fuzblock|fuzarith|findcluster|fcm|evalmf|evalfis|dsigmf|defuzz|convertfis|anfisedit|anfis|addvar|addrule|addmf)\b + name + support.toolbox.fuzzy-logic.matlab + + matlab_support_toolbox_garch + + comment + Matlab GARCH toolbox + match + (?<!\.)\b(ret2price|price2ret|ppTSTest|ppARTest|ppARDTest|parcorr|lratiotest|lbqtest|lagmatrix|hpfilter|garchsim|garchset|garchpred|garchplot|garchma|garchinfer|garchget|garchfit|garchdisp|garchcount|garchar|dfTSTest|dfARTest|dfARDTest|crosscorr|autocorr|archtest|aicbic)\b + name + support.toolbox.garch.matlab + + matlab_support_toolbox_genetic_algorithms + + comment + Matlab genetic algorithms toolbox + match + (?<!\.)\b(threshacceptbnd|simulannealbnd|saoptimset|saoptimget|psoptimset|psoptimget|psearchtool|patternsearch|gatool|gaoptimset|gaoptimget|gamultiobj|ga)\b + name + support.toolbox.genetic-algorithms.matlab + + matlab_support_toolbox_image_acquisition + + comment + Matlab image acquisition toolbox + match + (?<!\.)\b(wait|videoinput|triggerinfo|triggerconfig|trigger|stoppreview|stop|start|set|save|propinfo|preview|peekdata|obj2mfile|load|isvalid|isrunning|islogging|imaqtool|imaqreset|imaqmontage|imaqmem|imaqhwinfo|imaqhelp|imaqfind|getsnapshot|getselectedsource|getdata|get|flushdata|disp|delete|closepreview|clear)\b + name + support.toolbox.image-acquisition.matlab + + matlab_support_toolbox_image_processing + + comment + Matlab image processing toolbox + match + (?<!\.)\b(zoom|ycbcr2rgb|xyz2uint16|xyz2double|wiener2|whitepoint|watershed|warp|uintlut|uint8|uint16|truesize|translate|tonemap|tforminv|tformfwd|tformarray|subimage|stretchlim|strel|stdfilt|std2|roipoly|roifilt2|roifill|roicolor|rgbplot|rgb2ycbcr|rgb2ntsc|rgb2ind|rgb2hsv|rgb2gray|regionprops|reflect|rangefilt|radon|qtsetblk|qtgetblk|qtdecomp|psf2otf|poly2mask|pixval|phantom|para2fan|padarray|otf2psf|ordfilt2|ntsc2rgb|normxcorr2|nlfilter|nitfread|nitfinfo|montage|medfilt2|mean2|mat2gray|maketform|makeresampler|makelut|makecform|makeConstrainToRectFcn|label2rgb|lab2uint8|lab2uint16|lab2double|isrgb|isnitf|isind|isicc|isgray|isflat|isbw|iradon|iptwindowalign|iptsetpref|iptremovecallback|iptnum2ordinal|ipticondir|iptgetpref|iptgetapi|iptdemos|iptcheckstrs|iptchecknargin|iptcheckmap|iptcheckinput|iptcheckhandle|iptcheckconn|iptaddcallback|iptSetPointerBehavior|iptPointerManager|iptGetPointerBehavior|ippl|intlut|interfileread|interfileinfo|ind2rgb|ind2gray|imwrite|imview|imtransform|imtophat|imtool|imsubtract|imshow|imscrollpanel|imsave|imrotate|imresize|imregionalmin|imregionalmax|imrect|imreconstruct|imread|impyramid|imputfile|improfile|impositionrect|impoly|impoint|implay|impixelregionpanel|impixelregion|impixelinfoval|impixelinfo|impixel|imoverviewpanel|imoverview|imopen|imnoise|immultiply|immovie|immagbox|imline|imlincomb|imimposemin|imhmin|imhmax|imhist|imhandles|imgetfile|imgcf|imgca|imfreehand|imfinfo|imfilter|imfill|imextendedmin|imextendedmax|imerode|imellipse|imdivide|imdistline|imdisplayrange|imdilate|imcrop|imcontrast|imcontour|imcomplement|imclose|imclearborder|imbothat|imattributes|imapprox|imagemodel|imageinfo|imadjust|imadd|imabsdiff|im2uint8|im2uint16|im2single|im2java2d|im2java|im2int16|im2double|im2col|im2bw|ifftn|ifft2|ifanbeam|idct2|iccwrite|iccroot|iccread|iccfind|hsv2rgb|houghpeaks|houghlines|hough|histeq|hdrread|graythresh|grayslice|graycoprops|graycomatrix|gray2ind|getsequence|getrect|getrangefromclass|getpts|getnhood|getneighbors|getline|getimagemodel|getimage|getheight|fwind2|fwind1|ftrans2|fspecial|fsamp2|freqz2|freqspace|fliptform|findbounds|filter2|fftshift|fftn|fft2|fanbeam|fan2para|entropyfilt|entropy|edgetaper|edge|double|dither|dicomwrite|dicomuid|dicomread|dicomlookup|dicominfo|dicomdict|dicomanon|demosaic|decorrstretch|deconvwnr|deconvreg|deconvlucy|deconvblind|dctmtx|dct2|cpstruct2pairs|cpselect|cpcorr|cp2tform|corr2|convn|convmtx2|conv2|conndef|colorbar|colfilt|col2im|cmunique|cmpermute|checkerboard|bwunpack|bwulterode|bwtraceboundary|bwselect|bwperim|bwpack|bwmorph|bwlabeln|bwlabel|bwhitmiss|bweuler|bwdist|bwboundaries|bwareaopen|bwarea|brighten|blkproc|bestblk|axes2pix|applylut|applycform|analyze75read|analyze75info|adapthisteq)\b + name + support.toolbox.image-processing.matlab + + matlab_support_toolbox_instrument_control + + comment + Matlab instrument control toolbox + match + (?<!\.)\b(visa|update|udp|trigger|tmtool|tcpip|stopasync|spoll|size|set|serialbreak|serial|selftest|scanstr|save|resolvehost|remove|record|readasync|query|propinfo|obj2mfile|midtest|midedit|methods|memwrite|memunmap|memread|mempoke|mempeek|memmap|makemid|load|length|iviconfigurationstore|isvalid|invoke|instrreset|instrnotify|instrid|instrhwinfo|instrhelp|instrfindall|instrfind|instrcallback|inspect|icdevice|gpib|geterror|get|fwrite|fscanf|fread|fprintf|fopen|flushoutput|flushinput|fgets|fgetl|fclose|echoudp|echotcpip|disp|disconnect|devicereset|delete|connect|commit|clrdevice|clear|binblockwrite|binblockread|add)\b + name + support.toolbox.instrument-control.matlab + + matlab_support_toolbox_mapping + + comment + Matlab mapping toolbox + match + (?<!\.)\b(zerom|zero22pi|zdatam-ui|zdatam|wrapToPi|wrapTo360|wrapTo2Pi|wrapTo180|worldmap|worldfilewrite|worldfileread|westof|vmap0ui|vmap0rhead|vmap0read|vmap0data|vinvtran|viewshed|vfwdtran|vec2mtx|utmzoneui|utmzone|utmgeoid|usgsdems|usgsdem|usgs24kdem|usamap|updategeostruct|unwrapMultipart|unitstr|unitsratio|undotrim|undoclip|uimaptbx|trimdata|trimcart|trackui|trackg|track2|track1|track|toRadians|toDegrees|tissot|timezone|timedim|time2str|tightmap|tigerp|tigermif|tgrline|textm|tbase|tagm-ui|tagm|symbolm|surfm|surflsrm|surflm|surfdist|surfacem|str2angle|stem3m|stdm|stdist|spzerom|spcread|smoothlong|sm2rad|sm2nm|sm2km|sm2deg|sizem|showm-ui|showm|showaxes|shapewrite|shaperead|shapeinfo|shaderel|setpostn|setm|setltln|seedm|sectorg|sec2hr|sec2hms|sec2hm|sdtsinfo|sdtsdemread|scxsc|scirclui|scircleg|scircle2|scircle1|scatterm|scaleruler|satbath|rsphere|roundn|rotatetext|rotatem|rootlayr|rhxrh|restack|resizem|removeExtraNanSeparators|refvec2mat|refmat2vec|reducem|reckon|readmtx|readfk5|readfields|rcurve|rad2sm|rad2nm|rad2km|rad2dms|rad2dm|rad2deg|quiverm|quiver3m|qrydata|putpole|projlist|projinv|projfwd|project|previewmap|polyxpoly|polysplit|polymerge|polyjoin|polycut|polybool|poly2fv|poly2cw|poly2ccw|polcmap|plotm|plot3m|plabel|pixcenters|pix2map|pix2latlon|pcolorm|patchm|patchesm|parallelui|paperscale|panzoom|originui|org2pol|onem|npi2pi|northarrow|nm2sm|nm2rad|nm2km|nm2deg|newpole|neworig|navfix|nanm|nanclip|namem|n2ecc|mobjects|mlayers|mlabelzero22pi|mlabel|minvtran|minaxis|mfwdtran|meshm|meshlsrm|meshgrat|meridianfwd|meridianarc|meanm|mdistort|mat2hms|mat2dms|mapview|maptrims|maptrimp|maptriml|maptrim|maptool|mapshow|maps|mapprofile|mapoutline|maplist|mapbbox|map2pix|makesymbolspec|makerefmat|makemapped|makedbfspec|makeattribspec|majaxis|lv2ecef|ltln2val|los2|linem|linecirc|limitm|lightmui|lightm|legs|lcolorbar|latlon2pix|kmlwrite|km2sm|km2rad|km2nm|km2deg|ispolycw|ismapped|ismap|isShapeMultipart|intrplon|intrplat|interpm|inputm|ind2rgb8|imbedm|hr2sec|hr2hms|hr2hm|hms2sec|hms2mat|hms2hr|hms2hm|histr|hista|hidem-ui|hidem|handlem-ui|handlem|gtopo30s|gtopo30|gtextm|gshhs|grn2eqa|gridm|grid2image|grepfields|gradientm|globedems|globedem|getworldfilename|getseeds|getm|geotiffread|geotiffinfo|geotiff2mstruct|geoshow|geoloc2grid|geodetic2geocentricLat|geodetic2ecef|geocentric2geodeticLat|gcxsc|gcxgc|gcwaypts|gcpmap|gcm|gc2sc|fromRadians|fromDegrees|framem|flatearthpoly|flat2ecc|fipsname|findm|filterm|fillm|fill3m|extractm|extractfield|etopo5|etopo|eqa2grn|epsm|encodem|ellipse1|elevation|egm96geoid|ecef2lv|ecef2geodetic|ecc2n|ecc2flat|eastof|dteds|dted|driftvel|driftcorr|dreckon|dms2rad|dms2mat|dms2dm|dms2degrees|dms2deg|dm2degrees|distortcalc|distdim|distance|dist2str|displaym|departure|demdataui|demcmap|degrees2dms|degrees2dm|deg2sm|deg2rad|deg2nm|deg2km|deg2dms|deg2dm|defaultm|dcwrhead|dcwread|dcwgaz|dcwdata|daspectm|crossfix|convertlat|contourm|contourfm|contourcmap|contour3m|cometm|comet3m|combntns|colorui|colorm|cmapui|clrmenu|closePolygonParts|clmo-ui|clmo|clma|clipdata|clegendm|clabelm|circcirc|changem|cart2grn|camupm|camtargm|camposm|bufferm|azimuth|axesscale|axesmui|axesm|axes2ecc|avhrrlambert|avhrrgoode|areaquad|areamat|areaint|arcgridread|antipode|angledim|angl2str|almanac)\b + name + support.toolbox.mapping.matlab + + matlab_support_toolbox_model_based_calibration + + comment + Matlab model-based calibration toolbox + match + (?<!\.)\b(modelinput|getAlternativeTypes|getAlternativeNames|YData|XDataNames|XData|Widths|Values|Value|UserVariables|UpdateResponseFeatures|UpdateResponse|Units|Type|TestPlans|TestFilters|SummaryStatisticsForTest|SummaryStatistics|StepwiseStatus|StepwiseSelection|StepwiseRegression|Status|StatisticsDialog|SizeOfParameterSet|SingleVIF|SignalUnits|SignalNames|SetupDialog|SetTermStatus|SaveAs|Save|RollbackEdit|RestoreDataForTest|RestoreData|Responses|ResponseSignalName|Response|RemoveVariable|RemoveTestFilter|RemoveOutliersForTest|RemoveOutliers|RemoveFilter|RemoveData|Remove|RecordsPerTest|Properties|PredictedValueForTest|PredictedValue|PartialVIF|Parameters|ParameterStatistics|PEVForTest|PEV|Owner|OutputData|OutlierIndicesForTest|OutlierIndices|NumberOfTests|NumberOfRecords|NumberOfParameters|NumberOfInputs|New|Names|Name|MultipleVIF|ModifyVariable|ModifyTestFilter|ModifyFilter|Modified|ModelSetup|ModelForTest|Model|MakeHierarchicalResponse|LocalResponses|LoadProject|Load|Levels|Level|Jacobian|IsEditable|IsBeingEdited|IsAlternative|InputsPerLevel|Inputs|InputSignalNames|InputSetupDialog|InputData|ImportFromMBCDataStructure|ImportFromFile|GetTermStatus|GetTermLabel|GetIncludedTerms|GetDesignMatrix|GetAllTerms|FitAlgorithm|Fit|Filters|Filename|ExportToMBCDataStructure|Export|Evaluate|DoubleResponseData|DoubleInputData|DiagnosticStatistics|DetachData|DefineTestGroups|DefineNumberOfRecordsPerTest|DefaultModels|DataFileTypes|Data|CreateTestplan|CreateResponseFeature|CreateResponse|CreateProject|CreateModel|CreateData|CreateAlternativeModels|CreateAlgorithm|Covariance|Correlation|CopyData|CommitEdit|ChooseAsBest|Centers|BoxCoxSSE|BeginEdit|AttachData|Append|AlternativeResponses|AlternativeModelStatistics|AliasMatrix|AddVariable|AddTestFilter|AddFilter)\b + name + support.toolbox.model-based-calibration.matlab + + matlab_support_toolbox_model_predictive_control + + comment + Matlab model predictive control toolbox + match + (?<!\.)\b(zpk|trim|tf|ss|size|sim|setoutdist|setname|setmpcsignals|setmpcdata|setindist|setestim|set|qpdantz|plot|pack|mpcverbosity|mpcstate|mpcsimopt|mpcprops|mpcmove|mpchelp|mpc|getoutdist|getname|getmpcdata|getindist|getestim|get|d2d|compare|cloffset)\b + name + support.toolbox.model-predictive-control.matlab + + matlab_support_toolbox_neural_network + + comment + Matlab neural network toolbox + match + (?<!\.)\b(vec2ind|tribas|trainscg|trains|trainrp|trainr|trainoss|trainlm|traingdx|traingdm|traingda|traingd|traincgp|traincgf|traincgb|trainc|trainbr|trainbfgc|trainbfg|trainb|train|tansig|sse|srchhyb|srchgol|srchcha|srchbre|srchbac|sp2narx|softmax|sim|setx|seq2con|scalprod|satlins|satlin|revert|removerows|removeconstantrows|randtop|rands|randnr|randnc|radbas|quant|purelin|processpca|postreg|poslin|pnormc|plotvec|plotv|plotsom|plotpv|plotperf|plotpc|plotes|plotep|plotbr|normr|normprod|normc|nntool|nnt2som|nnt2rb|nnt2p|nnt2lvq|nnt2lin|nnt2hop|nnt2ff|nnt2elm|nnt2c|nftool|newsom|newrbe|newrb|newpnn|newp|newnarxsp|newnarx|newlvq|newlrn|newlind|newlin|newhop|newgrnn|newfftd|newff|newelm|newdtdnn|newcf|newc|network|netsum|netprod|netinv|negdist|mseregec|msereg|mse|minmax|midpoint|maxlinlr|mapstd|mapminmax|mandist|mae|logsig|linkdist|learnwh|learnsom|learnpn|learnp|learnos|learnlv2|learnlv1|learnk|learnis|learnhd|learnh|learngdm|learngd|learncon|initzero|initwb|initnw|initlay|initcon|init|ind2vec|hintonwb|hintonw|hextop|hardlims|hardlim|gridtop|getx|gensim|fixunknowns|errsurf|dotprod|dividerand|divideint|divideind|divideblock|dist|display|disp|convwf|concur|con2seq|compet|combvec|calcperf|calcpd|calcjx|calcjejj|calcgx|boxdist|adapt)\b + name + support.toolbox.neural-network.matlab + + matlab_support_toolbox_opc + + comment + Matlab OPC toolbox + match + (?<!\.)\b(writeasync|write|wait|trend|stop|start|showopcevents|set|serveritems|serveritemprops|save|removepublicgroup|refresh|readasync|read|propinfo|peekdata|openosf|opctool|opcsupport|opcstruct2timeseries|opcstruct2array|opcserverinfo|opcreset|opcregister|opcread|opcqstr|opcqparts|opcqid|opchelp|opcfind|opcda|opccallback|obj2mfile|makepublic|load|isvalid|getnamespace|getdata|get|genslwrite|genslread|flushdata|flatnamespace|disp|disconnect|delete|copyobj|connect|clonegroup|cleareventlog|cancelasync|additem|addgroup)\b + name + support.toolbox.opc.matlab + + matlab_support_toolbox_optimization + + comment + Matlab optimization toolbox + match + (?<!\.)\b(quadprog|optimtool|optimset|optimget|lsqnonneg|lsqnonlin|lsqlin|lsqcurvefit|linprog|gangstr|fzmult|fzero|fsolve|fseminf|fminunc|fminsearch|fminimax|fmincon|fminbnd|fgoalattain|color|bintprog)\b + name + support.toolbox.optimization.matlab + + matlab_support_toolbox_rf + + comment + Matlab RF toolbox + match + (?<!\.)\b(writeva|write|timeresp|smith|setop|semilogy|semilogx|rfmodel\.rational|rfdata\.power|rfdata\.noise|rfdata\.nf|rfdata\.network|rfdata\.mixerspur|rfdata\.ip3|rfdata\.data|rfckt\.txline|rfckt\.twowire|rfckt\.shuntrlc|rfckt\.seriesrlc|rfckt\.series|rfckt\.rlcgline|rfckt\.passive|rfckt\.parallelplate|rfckt\.parallel|rfckt\.mixer|rfckt\.microstrip|rfckt\.lclowpasstee|rfckt\.lclowpasspi|rfckt\.lchighpasstee|rfckt\.lchighpasspi|rfckt\.lcbandstoptee|rfckt\.lcbandstoppi|rfckt\.lcbandpasstee|rfckt\.lcbandpasspi|rfckt\.hybridg|rfckt\.hybrid|rfckt\.delay|rfckt\.datafile|rfckt\.cpw|rfckt\.coaxial|rfckt\.cascade|rfckt\.amplifier|restore|read|polar|plotyy|plot|loglog|listparam|listformat|impulse|getz0|getop|freqresp|extract|circle|calculate|analyze)\b + name + support.toolbox.rf.matlab + + matlab_support_toolbox_robust_control + + comment + Matlab robust control toolbox + match + (?<!\.)\b(wcsens|wcnorm|wcmargin|wcgopt|wcgain|usubs|uss|usimsamp|usiminfo|usimfill|usample|ureal|uplot|umat|ultidyn|ufrd|udyn|ucomplexm|ucomplex|sysic|symdec|stack|stabproj|squeeze|slowfast|skewdec|simplify|showlmi|setmvar|setlmis|sectf|sdlsim|sdhinfsyn|sdhinfnorm|schurmr|robuststab|robustperf|robopt|repmat|reduce|randuss|randumat|randatom|quadstab|quadperf|pvinfo|pvec|psys|psinfo|popov|polydec|pdsimul|pdlstab|normalized2actual|newlmi|ncfsyn|ncfmr|ncfmargin|mussvextract|mussv|msfsyn|modreal|mktito|mkfilter|mixsyn|mincx|matnbr|mat2dec|ltrsyn|ltiarray2uss|loopsyn|loopsens|loopmargin|lmivar|lmiterm|lmireg|lminbr|lmiinfo|lmiedit|lftdata|isuncertain|ispsys|imp2ss|imp2exp|icsignal|iconnect|icomplexify|hinfsyn|hinfgs|hankelsv|hankelmr|h2syn|h2hinfsyn|gridureal|gevp|getlmis|genphase|gapmetric|fitmagfrd|fitfrd|feasp|evallmi|drawmag|dmplot|dksyn|dkitopt|diag|delmvar|dellmi|defcx|decnbr|decinfo|decay|dec2mat|dcgainmr|cpmargin|complexify|cmsclsyn|bstmr|bilin|balancmr|augw|aff2pol|actual2normalized)\b + name + support.toolbox.robust-control.matlab + + matlab_support_toolbox_signal_processing + + comment + Matlab signal processing toolbox + match + (?<!\.)\b(zplane|zp2tf|zp2ss|zp2sos|zerophase|yulewalk|xcov|xcorr2|xcorr|wvtool|wintool|window|vco|upsample|upfirdn|unwrap|uencode|udecode|tukeywin|tripuls|triang|tfestimate|tf2zpk|tf2zp|tf2ss|tf2sos|tf2latc|taylorwin|strips|stmcb|stepz|ss2zp|ss2tf|ss2sos|square|sptool|spectrum\.yulear|spectrum\.welch|spectrum\.periodogram|spectrum\.music|spectrum\.mtm|spectrum\.mcov|spectrum\.eigenvector|spectrum\.cov|spectrum\.burg|spectrum|spectrogram|sosfilt|sos2zp|sos2tf|sos2ss|sos2cell|sinc|sigwin|sgolayfilt|sgolay|seqperiod|schurrc|sawtooth|rootmusic|rooteig|rlevinson|residuez|resample|rectwin|rectpuls|rceps|rc2poly|rc2lar|rc2is|rc2ac|pyulear|pwelch|pulstran|prony|pow2db|polystab|polyscale|poly2rc|poly2lsf|poly2ac|pmusic|pmtm|pmcov|phasez|phasedelay|periodogram|peig|pcov|pburg|parzenwin|nuttallwin|mscohere|modulate|medfilt1|maxflat|lsf2poly|lpc|lp2lp|lp2hp|lp2bs|lp2bp|levinson|latcfilt|latc2tf|lar2rc|kaiserord|kaiser|is2rc|invfreqz|invfreqs|intfilt|interp|impz|impinvar|ifft2|ifft|idct|icceps|hilbert|hann|hamming|grpdelay|goertzel|gmonopuls|gausswin|gaussfir|gauspuls|fvtool|freqz|freqspace|freqs|flattopwin|firrcos|firpmord|firpm|firls|fircls1|fircls|fir2|fir1|findpeaks|filtstates\.dfiir|filtstates|filtic|filtfilt|filternorm|filter2|filter|fftshift|fftfilt|fft2|fft|fdatool|eqtflength|ellipord|ellipap|ellip|dspfwiz|dspdata\.pseudospectrum|dspdata\.psd|dspdata\.msspectrum|dspdata|dpsssave|dpssload|dpssdir|dpssclear|dpss|downsample|diric|digitrevorder|dftmtx|dfilt\.statespace|dfilt\.scalar|dfilt\.parallel|dfilt\.latticemamin|dfilt\.latticemamax|dfilt\.latticearma|dfilt\.latticear|dfilt\.latticeallpass|dfilt\.fftfir|dfilt\.dfsymfir|dfilt\.dffirt|dfilt\.dffir|dfilt\.dfasymfir|dfilt\.df2tsos|dfilt\.df2t|dfilt\.df2sos|dfilt\.df2|dfilt\.df1tsos|dfilt\.df1t|dfilt\.df1sos|dfilt\.df1|dfilt\.delay|dfilt\.cascade|dfilt|demod|deconv|decimate|dct|db2pow|czt|cpsd|cplxpair|cov|corrmtx|corrcoef|convmtx|conv2|conv|chirp|cheby2|cheby1|chebwin|cheb2ord|cheb2ap|cheb1ord|cheb1ap|cfirpm|cell2sos|cconv|cceps|buttord|butter|buttap|buffer|bohmanwin|blackmanharris|blackman|bitrevorder|bilinear|besself|besselap|bartlett|barthannwin|aryule|armcov|arcov|arburg|angle|ac2rc|ac2poly|abs)\b + name + support.toolbox.signal-processing.matlab + + matlab_support_toolbox_spline + + comment + Matlab spline toolbox + match + (?<!\.)\b(tpaps|titanium|subplus|stmak|stcol|spterms|sprpp|spmak|splpp|splinetool|spcrv|spcol|spaps|spapi|spap2|sorted|slvblk|rsmak|rscvn|rpmak|ppmak|optknt|newknt|knt2mlt|knt2brk|getcurve|franke|fnzeros|fnxtr|fnval|fntlr|fnrfn|fnplt|fnmin|fnjmp|fnint|fndir|fnder|fncmb|fnchg|fnbrk|fn2fm|cscvn|csaps|csapi|csape|chbpnt|bspline|bspligui|brk2knt|bkbrk|aveknt|augknt|aptknt)\b + name + support.toolbox.spline.matlab + + matlab_support_toolbox_statistics + + comment + Matlab statistics toolbox + match + (?<!\.)\b(ztest|zscore|x2fx|wishrnd|wblstat|wblrnd|wblplot|wblpdf|wbllike|wblinv|wblfit|wblcdf|view|vartestn|vartest2|vartest|var|upperparams|unifstat|unifrnd|unifpdf|unifit|unifinv|unifcdf|unidstat|unidrnd|unidpdf|unidinv|unidcdf|type|ttest2|ttest|tstat|trnd|trimmean|treeval|treetest|treeprune|treefit|treedisp|tpdf|tinv|tiedrank|test|tdfread|tcdf|tblwrite|tblread|tabulate|surfht|summary|stepwisefit|stepwise|std|statset|statget|squareform|sortrows|sort|slicesample|skewness|silhouette|signtest|signrank|setlabels|set|segment|scatterhist|sampsizepwr|runstest|rstool|rsmdemo|rowexch|rotatefactors|robustfit|robustdemo|risk|ridge|replacedata|reorderlevels|regstats|regress|refline|refcurve|rcoplot|raylstat|raylrnd|raylpdf|raylinv|raylfit|raylcdf|ranksum|range|randtool|randsample|random|randg|quantile|qqplot|prune|procrustes|probplot|princomp|prctile|posterior|polyval|polytool|polyfit|polyconf|poisstat|poissrnd|poisspdf|poissinv|poissfit|poisscdf|perms|pearsrnd|pdist|pdf|pcares|pcacov|partialcorr|paretotails|pareto|parent|parallelcoords|ordinal|numnodes|nsegments|normstat|normspec|normrnd|normplot|normpdf|normlike|norminv|normfit|normcdf|nominal|nodesize|nodeprob|nodeerr|nlpredci|nlparci|nlintool|nlinfit|ncx2stat|ncx2rnd|ncx2pdf|ncx2inv|ncx2cdf|nctstat|nctrnd|nctpdf|nctinv|nctcdf|ncfstat|ncfrnd|ncfpdf|ncfinv|ncfcdf|nbinstat|nbinrnd|nbinpdf|nbininv|nbinfit|nbincdf|nanvar|nansum|nanstd|nanmin|nanmedian|nanmean|nanmax|nancov|mvtrnd|mvtpdf|mvtcdf|mvregresslike|mvregress|mvnrnd|mvnpdf|mvncdf|multivarichart|multcompare|moment|mode|mnrval|mnrnd|mnrfit|mnpdf|mlecov|mle|mhsample|mergelevels|median|mean|mdscale|manovacluster|manova1|maineffectsplot|mahal|mad|lsqnonneg|lsline|lscov|lowerparams|lognstat|lognrnd|lognpdf|lognlike|logninv|lognfit|logncdf|linkage|linhyptest|lillietest|lhsnorm|lhsdesign|leverage|levelcounts|kurtosis|kstest2|kstest|ksdensity|kruskalwallis|kmeans|join|johnsrnd|jbtest|jackknife|iwishrnd|isundefined|ismember|islevel|isbranch|iqr|invpred|interactionplot|inconsistent|icdf|hygestat|hygernd|hygepdf|hygeinv|hygecdf|hougen|hmmviterbi|hmmtrain|hmmgenerate|hmmestimate|hmmdecode|histfit|hist3|hist|harmmean|hadamard|gscatter|grpstats|grp2idx|gpstat|gprnd|gppdf|gplotmatrix|gplike|gpinv|gpfit|gpcdf|gname|gmdistribution|glyphplot|glmval|glmfit|gline|gevstat|gevrnd|gevpdf|gevlike|gevinv|gevfit|gevcdf|getlabels|get|geostat|geornd|geopdf|geomean|geoinv|geocdf|gamstat|gamrnd|gampdf|gamlike|gaminv|gamfit|gamcdf|gagerr|fullfact|fsurfht|fstat|frnd|friedman|fracfactgen|fracfact|fpdf|fit|finv|ff2n|fcdf|factoran|expstat|exprnd|exppdf|explike|expinv|expfit|expcdf|evstat|evrnd|evpdf|evlike|evinv|evfit|evcdf|eval|errorbar|ecdfhist|ecdf|dwtest|dummyvar|droplevels|disttool|dfittool|dendrogram|dcovary|daugment|datasetfun|dataset|cutvar|cuttype|cutpoint|cutcategories|crosstab|coxphfit|cov|corrcov|corrcoef|corr|cordexch|copulastat|copularnd|copulapdf|copulaparam|copulafit|copulacdf|cophenet|controlrules|controlchart|combnk|cmdscale|clusterdata|cluster|classregtree|classprob|classify|classcount|cholcov|children|chi2stat|chi2rnd|chi2pdf|chi2inv|chi2gof|chi2cdf|cdfplot|cdf|ccdesign|casewrite|caseread|capaplot|capability|canoncorr|candgen|candexch|boxplot|boundary|bootstrp|bootci|biplot|binostat|binornd|binopdf|binoinv|binofit|binocdf|betastat|betarnd|betapdf|betalike|betainv|betafit|betacdf|bbdesign|barttest|aoctool|ansaribradley|anovan|anova2|anova1|andrewsplot|addlevels|addedvarplot)\b + name + support.toolbox.statistics.matlab + + matlab_support_toolbox_symbolic_math + + comment + Matlab symbolic math toolbox + match + (?<!\.)\b(ztrans|zeta|vpa|uint8|uint64|uint32|uint16|triu|tril|taylortool|taylor|symsum|syms|sym2poly|sym|svd|subs|subexpr|sort|solve|size|sinint|single|simplify|simple|rsums|rref|round|real|rank|quorem|procread|pretty|poly2sym|poly|numden|null|mod|mhelp|mfunlist|mfun|mapleinit|maple|log2|log10|limit|latex|laplace|lambertw|jordan|jacobian|iztrans|inv|int8|int64|int32|int16|int|imag|ilaplace|ifourier|hypergeom|horner|heaviside|funtool|frac|fourier|fortran|floor|fix|finverse|findsym|factor|ezsurfc|ezsurf|ezpolar|ezplot3|ezplot|ezmeshc|ezmesh|ezcontourf|ezcontour|expm|expand|eq|eig|dsolve|double|dirac|digits|diff|diag|det|cosint|conj|compose|colspace|collect|coeffs|ceil|ccode)\b + name + support.toolbox.symbolic-math.matlab + + matlab_support_toolbox_system_identification + + comment + Matlab system identification toolbox + match + (?<!\.)\b(zpkdata|zpk|wavenet|view|unitgain|treepartition|timestamp|tfdata|tf|struc|step|ssdata|ss|spafdr|spa|size|simsd|sim|sigmoidnet|setstruc|setpname|setpar|setinit|set|selstruc|segment|saturation|rplr|rpem|roe|resid|resample|realdata|rbj|rarx|rarmax|pzmap|pwlinear|present|predict|polyreg|polydata|poly1d|plot|pexcit|pem|pe|oe|nyquist|nuderst|noisecnv|nlhw|nlarx|nkshift|neuralnet|n4sid|misdata|midprefs|merge|lintan|linear|linapp|ivx|ivstruc|ivar|iv4|isreal|init|impulse|ifft|idss|idresamp|idproc|idpoly|idnlmodel|idnlhw|idnlgrey|idnlarx|idmodel|idmdlsim|idinput|idgrey|idfrd|idfilt|ident|iddata|idarx|getreg|getpar|getinit|getexp|get|fselect|freqresp|frd|fpe|fft|ffplot|feedback|fcat|evaluate|etfe|diff|detrend|delayest|deadzone|d2c|customreg|customnet|cra|covf|compare|c2d|bode|bj|balred|arxstruc|arxdata|arx|armax|ar|aic|advice|addreg|EstimationInfo)\b + name + support.toolbox.system-identification.matlab + + matlab_support_toolbox_virtual_reality + + comment + Matlab virtual reality toolbox + match + (?<!\.)\b(vrworld|vrwhos|vrwho|vrview|vrspacemouse|vrsetpref|vrrotvec2mat|vrrotvec|vrrotmat2vec|vrplay|vrori2dir|vrnode|vrlib|vrjoystick|vrinstall|vrgetpref|vrfigure|vrdrawnow|vrdir2ori|vrclose|vrclear)\b + name + support.toolbox.virtual-reality.matlab + + matlab_support_toolbox_wavelet + + comment + Matlab wavelet toolbox + match + (?<!\.)\b(wvarchg|wtreemgr|wthrmngr|wthresh|wthcoef2|wthcoef|wtbxmngr|wtbo|wscalogram|write|wrev|wrcoef2|wrcoef|wpviewcf|wptree|wpthcoef|wpsplt|wprec2|wprec|wprcoef|wpjoin|wpfun|wpdencmp|wpdec2|wpdec|wpcutree|wpcoef|wpbmpen|wp2wtree|wnoisest|wnoise|wmulden|wmspca|wmaxlev|wkeep|wfusmat|wfusimg|wfilters|wfbmesti|wfbm|wextend|wentropy|wenergy2|wenergy|wdencmp|wden|wdcenergy|wdcbm2|wdcbm|wcodemat|wbmpen|waverec2|waverec|wavenames|wavemngr|wavemenu|waveinfo|wavefun2|wavefun|wavedemo|wavedec2|wavedec|wave2lp|upwlev2|upwlev|upcoef2|upcoef|treeord|treedpth|tnodes|thselect|symwavf|symaux|swt2|swt|shanwavf|set|scal2frq|readtree|read|rbiowavf|qmf|plot|pat2cwav|orthfilt|ntree|ntnode|noleaves|nodesplt|nodepar|nodejoin|nodedesc|nodeasc|mswthresh|mswden|mswcmptp|mswcmpscr|mswcmp|morlet|meyeraux|meyer|mexihat|mdwtrec|mdwtdec|mdwtcluster|lwtcoef2|lwtcoef|lwt2|lwt|lsinfo|ls2filt|liftwave|liftfilt|leaves|laurpoly|laurmat|iswt2|iswt|istnode|isnode|intwave|ind2depo|ilwt2|ilwt|idwt2|idwt|get|gauswavf|filt2ls|fbspwavf|entrupd|dyadup|dyaddown|dwtmode|dwt2|dwt|dtree|drawtree|displs|disp|detcoef2|detcoef|depo2ind|ddencmp|dbwavf|dbaux|cwt|coifwavf|cmorwavf|chgwdeccfs|cgauwavf|cfs2wpt|centfrq|bswfun|biorwavf|biorfilt|besttree|bestlevt|appcoef2|appcoef|allnodes|addlift)\b + name + support.toolbox.wavelet.matlab + + matlab_variable_function + + comment + MATLAB variables + match + (?<!\.)\b(nargin|nargout|varargin|varargout)\b + name + variable.other.function.matlab + + not_equal_invalid + + comment + Not equal is written ~= not !=. + match + \s*!=\s* + name + invalid.illegal.invalid-inequality.matlab + + number + + comment + Valid numbers: 1, .1, 1.1, .1e1, 1.1e1, 1e1, 1i, 1j, 1e2j + match + (?<=[\s\-\+\*\/\\=:\[\(\{,]|^)\d*\.?\d+([eE][+-]?\d)?([0-9&&[^\.]])*(i|j)?\b + name + constant.numeric.matlab + + operators + + comment + Operator symbols + match + \s*(==|~=|>|>=|<|<=|&|&&|:|\||\|\||\+|-|\*|\.\*|/|\./|\\|\.\\|\^|\.\^)\s* + name + keyword.operator.symbols.matlab + + parens + + begin + \( + beginCaptures + + 0 + + name + meta.parens.matlab + + + contentName + meta.parens.matlab + end + \) + endCaptures + + 0 + + name + meta.parens.matlab + + + patterns + + + include + #allofem + + + include + #end_in_parens + + + + special_characters + + comment + Operator symbols + match + ((\%([\+\-0]?\d{0,3}(\.\d{1,3})?)(c|d|e|E|f|g|G|s|((b|t)?(o|u|x|X))))|\%\%|\\(b|f|n|r|t|\\)) + name + constant.character.escape.matlab + + string + + begin + ((?<=(\[|\(|\{|=|\s|;|:|,))|^)' + beginCaptures + + 0 + + name + punctuation.definition.string.begin.matlab + + + end + '(?=(\]|\)|\}|=|~|<|>|&|\||-|\+|\*|\.|\^|\||\s|;|:|,)) + endCaptures + + 0 + + name + punctuation.definition.string.end.matlab + + + name + string.quoted.single.matlab + patterns + + + include + #escaped_quote + + + include + #unescaped_quote + + + include + #special_characters + + + + transpose + + match + ((\w+)|(?<=\])|(?<=\)))\.?' + name + keyword.operator.transpose.matlab + + unescaped_quote + + patterns + + + match + '(?=.) + name + invalid.illegal.unescaped-quote.matlab + + + + variable + + comment + Valid variable. Added meta to disable hilightinh + match + \b[a-zA-Z]\w*\b + name + meta.variable.other.valid.matlab + + variable_assignment + + comment + Incomplete variable assignment. + match + =\s*\.{0,2}\s*;?\s*$\n? + name + invalid.illegal.incomplete-variable-assignment.matlab + + variable_invalid + + comment + No variables or function names can start with a number or an underscore. + match + \b(_\w|\d+[_a-df-zA-DF-Z])\w*\b + name + invalid.illegal.invalid-variable-name.matlab + + + scopeName + source.matlab + uuid + 48F8858B-72FF-11D9-BFEE-000D93589AF6 + + \ No newline at end of file diff --git a/Matlab/Matlab.tmLanguage.cache b/Matlab/Matlab.tmLanguage.cache new file mode 100644 index 0000000..6f17fe9 Binary files /dev/null and b/Matlab/Matlab.tmLanguage.cache differ diff --git a/Matlab/Miscellaneous.tmPreferences b/Matlab/Miscellaneous.tmPreferences new file mode 100644 index 0000000..4737c24 --- /dev/null +++ b/Matlab/Miscellaneous.tmPreferences @@ -0,0 +1,66 @@ + + + + + name + Miscellaneous + scope + source.matlab + settings + + decreaseIndentPattern + ^\s*end\b + highlightPairs + + + ( + ) + + + [ + ] + + + { + } + + + " + " + + + increaseIndentPattern + ^\s*\\begin\{.*\} + shellVariables + + + name + TM_COMMENT_START + value + % + + + smartTypingPairs + + + ( + ) + + + [ + ] + + + { + } + + + " + " + + + + uuid + E190EAB2-D99C-4DDC-90A2-0F17A014FE07 + + diff --git a/Matlab/Miscellaneous.tmPreferences.cache b/Matlab/Miscellaneous.tmPreferences.cache new file mode 100644 index 0000000..51d167b Binary files /dev/null and b/Matlab/Miscellaneous.tmPreferences.cache differ diff --git a/Matlab/Octave-function.sublime-snippet b/Matlab/Octave-function.sublime-snippet new file mode 100644 index 0000000..d762c75 --- /dev/null +++ b/Matlab/Octave-function.sublime-snippet @@ -0,0 +1,34 @@ + + . + +## -*- texinfo -*- +## @deftypefn {Function File} {${1:Outputs} = } ${2:Function Name} (${3:Input Arguments) +## ${4:Short Description} +## +## ${5:Long Description} +## +## @seealso{${6:functions}} +## @end deftypefn + +## Author: $TM_FULLNAME + +$0 + +endfunction]]> + octfun + source.matlab + Octave function + diff --git a/Matlab/Symbols.tmPreferences b/Matlab/Symbols.tmPreferences new file mode 100644 index 0000000..17f852e --- /dev/null +++ b/Matlab/Symbols.tmPreferences @@ -0,0 +1,22 @@ + + + + + name + Symbol List: Functions + scope + source.matlab meta.function.with-arguments, source.matlab meta.function.without-arguments + settings + + showInSymbolList + 1 + symbolTransformation + + s/^\s*function\s+//; + s/(?>.*=)\s*//; # remove output args + + + uuid + 5EC2B9C8-1311-4C27-A421-A7982E6418AA + + diff --git a/Matlab/Symbols.tmPreferences.cache b/Matlab/Symbols.tmPreferences.cache new file mode 100644 index 0000000..8fb64f6 Binary files /dev/null and b/Matlab/Symbols.tmPreferences.cache differ diff --git a/Matlab/^.sublime-snippet b/Matlab/^.sublime-snippet new file mode 100644 index 0000000..0da9f7b --- /dev/null +++ b/Matlab/^.sublime-snippet @@ -0,0 +1,6 @@ + + + ^ + source.matlab, source.octave + ^ + diff --git a/Matlab/case.sublime-snippet b/Matlab/case.sublime-snippet new file mode 100644 index 0000000..90281e1 --- /dev/null +++ b/Matlab/case.sublime-snippet @@ -0,0 +1,7 @@ + + + case + source.matlab, source.octave + case + diff --git a/Matlab/clear.sublime-snippet b/Matlab/clear.sublime-snippet new file mode 100644 index 0000000..e03ac3a --- /dev/null +++ b/Matlab/clear.sublime-snippet @@ -0,0 +1,6 @@ + + + clear + source.matlab, source.octave + clear + diff --git a/Matlab/disp-sprintf.sublime-snippet b/Matlab/disp-sprintf.sublime-snippet new file mode 100644 index 0000000..5f6af66 --- /dev/null +++ b/Matlab/disp-sprintf.sublime-snippet @@ -0,0 +1,6 @@ + + + dsp + source.matlab, source.octave + disp sprintf + diff --git a/Matlab/disp.sublime-snippet b/Matlab/disp.sublime-snippet new file mode 100644 index 0000000..053d5bd --- /dev/null +++ b/Matlab/disp.sublime-snippet @@ -0,0 +1,6 @@ + + + disp + source.matlab, source.octave + disp + diff --git a/Matlab/dlmwrite.sublime-snippet b/Matlab/dlmwrite.sublime-snippet new file mode 100644 index 0000000..79f4167 --- /dev/null +++ b/Matlab/dlmwrite.sublime-snippet @@ -0,0 +1,7 @@ + + + dlmwrite + source.matlab, source.octave + dlmwrite + diff --git a/Matlab/else.sublime-snippet b/Matlab/else.sublime-snippet new file mode 100644 index 0000000..dc950cd --- /dev/null +++ b/Matlab/else.sublime-snippet @@ -0,0 +1,7 @@ + + + else + source.matlab, source.octave + else + diff --git a/Matlab/elseif.sublime-snippet b/Matlab/elseif.sublime-snippet new file mode 100644 index 0000000..6a87d3f --- /dev/null +++ b/Matlab/elseif.sublime-snippet @@ -0,0 +1,7 @@ + + + elseif + source.matlab, source.octave + elseif + diff --git a/Matlab/error.sublime-snippet b/Matlab/error.sublime-snippet new file mode 100644 index 0000000..fb24c4a --- /dev/null +++ b/Matlab/error.sublime-snippet @@ -0,0 +1,6 @@ + + + error + source.matlab, source.octave + error + diff --git a/Matlab/exp.sublime-snippet b/Matlab/exp.sublime-snippet new file mode 100644 index 0000000..6135f62 --- /dev/null +++ b/Matlab/exp.sublime-snippet @@ -0,0 +1,6 @@ + + + e + source.matlab, source.octave + exp + diff --git a/Matlab/fprintf.sublime-snippet b/Matlab/fprintf.sublime-snippet new file mode 100644 index 0000000..da6be5e --- /dev/null +++ b/Matlab/fprintf.sublime-snippet @@ -0,0 +1,6 @@ + + + fpr + source.matlab, source.octave + fprintf + diff --git a/Matlab/get.sublime-snippet b/Matlab/get.sublime-snippet new file mode 100644 index 0000000..f248d63 --- /dev/null +++ b/Matlab/get.sublime-snippet @@ -0,0 +1,6 @@ + + + get + source.matlab, source.octave + get + diff --git a/Matlab/griddata.sublime-snippet b/Matlab/griddata.sublime-snippet new file mode 100644 index 0000000..3152c19 --- /dev/null +++ b/Matlab/griddata.sublime-snippet @@ -0,0 +1,6 @@ + + + griddata + source.matlab, source.octave + griddata + diff --git a/Matlab/if-elseif.sublime-snippet b/Matlab/if-elseif.sublime-snippet new file mode 100644 index 0000000..f7cbf30 --- /dev/null +++ b/Matlab/if-elseif.sublime-snippet @@ -0,0 +1,13 @@ + + + ifeif + source.matlab , source.octave + if … elseif … end + diff --git a/Matlab/line.sublime-snippet b/Matlab/line.sublime-snippet new file mode 100644 index 0000000..7afc0d7 --- /dev/null +++ b/Matlab/line.sublime-snippet @@ -0,0 +1,7 @@ + + + line + source.matlab, source.octave + line + diff --git a/Matlab/set.sublime-snippet b/Matlab/set.sublime-snippet new file mode 100644 index 0000000..cf6d844 --- /dev/null +++ b/Matlab/set.sublime-snippet @@ -0,0 +1,6 @@ + + + set + source.matlab , source.octave + set + diff --git a/Matlab/small-function.sublime-snippet b/Matlab/small-function.sublime-snippet new file mode 100644 index 0000000..1db3ecf --- /dev/null +++ b/Matlab/small-function.sublime-snippet @@ -0,0 +1,8 @@ + + + func + source.matlab, source.octave + small function + diff --git a/Matlab/sprintf.sublime-snippet b/Matlab/sprintf.sublime-snippet new file mode 100644 index 0000000..383e6de --- /dev/null +++ b/Matlab/sprintf.sublime-snippet @@ -0,0 +1,6 @@ + + + spr + source.matlab, source.octave + sprintf + diff --git a/Matlab/switch___case___otherwise___end.sublime-snippet b/Matlab/switch___case___otherwise___end.sublime-snippet new file mode 100644 index 0000000..4d4cb53 --- /dev/null +++ b/Matlab/switch___case___otherwise___end.sublime-snippet @@ -0,0 +1,11 @@ + + + switch + source.matlab, source.octave + switch ... case ... otherwise ... end + diff --git a/Matlab/title.sublime-snippet b/Matlab/title.sublime-snippet new file mode 100644 index 0000000..d7b5a1c --- /dev/null +++ b/Matlab/title.sublime-snippet @@ -0,0 +1,6 @@ + + + zla + source.matlab , source.octave + title + diff --git a/Matlab/unix.sublime-snippet b/Matlab/unix.sublime-snippet new file mode 100644 index 0000000..ecf9172 --- /dev/null +++ b/Matlab/unix.sublime-snippet @@ -0,0 +1,6 @@ + + + uni + source.matlab, source.octave + unix + diff --git a/Matlab/unwind_protect-cleanup-end.sublime-snippet b/Matlab/unwind_protect-cleanup-end.sublime-snippet new file mode 100644 index 0000000..53910af --- /dev/null +++ b/Matlab/unwind_protect-cleanup-end.sublime-snippet @@ -0,0 +1,10 @@ + + + unwind + source.matlab + unwind_protect … cleanup … end + diff --git a/Matlab/warning.sublime-snippet b/Matlab/warning.sublime-snippet new file mode 100644 index 0000000..d350072 --- /dev/null +++ b/Matlab/warning.sublime-snippet @@ -0,0 +1,6 @@ + + + war + source.matlab, source.octave + warning + diff --git a/Matlab/while.sublime-snippet b/Matlab/while.sublime-snippet new file mode 100644 index 0000000..7e6d1bd --- /dev/null +++ b/Matlab/while.sublime-snippet @@ -0,0 +1,9 @@ + + + whi + source.matlab , source.octave + while + diff --git a/Matlab/xlabel.sublime-snippet b/Matlab/xlabel.sublime-snippet new file mode 100644 index 0000000..cd8502f --- /dev/null +++ b/Matlab/xlabel.sublime-snippet @@ -0,0 +1,6 @@ + + + xla + source.matlab , source.octave + xlabel + diff --git a/Matlab/xtick.sublime-snippet b/Matlab/xtick.sublime-snippet new file mode 100644 index 0000000..7ab6541 --- /dev/null +++ b/Matlab/xtick.sublime-snippet @@ -0,0 +1,6 @@ + + + xti + source.matlab , source.octave + xtick + diff --git a/Matlab/ylabel.sublime-snippet b/Matlab/ylabel.sublime-snippet new file mode 100644 index 0000000..54a3662 --- /dev/null +++ b/Matlab/ylabel.sublime-snippet @@ -0,0 +1,6 @@ + + + yla + source.matlab , source.octave + ylabel + diff --git a/Matlab/ytick.sublime-snippet b/Matlab/ytick.sublime-snippet new file mode 100644 index 0000000..7a4c1bf --- /dev/null +++ b/Matlab/ytick.sublime-snippet @@ -0,0 +1,6 @@ + + + yti + source.matlab , source.octave + ytick + diff --git a/Matlab/zlabel.sublime-snippet b/Matlab/zlabel.sublime-snippet new file mode 100644 index 0000000..45179a9 --- /dev/null +++ b/Matlab/zlabel.sublime-snippet @@ -0,0 +1,6 @@ + + + zla + source.matlab , source.octave + zlabel + diff --git a/OCaml/Document.sublime-snippet b/OCaml/Document.sublime-snippet new file mode 100644 index 0000000..70522c1 --- /dev/null +++ b/OCaml/Document.sublime-snippet @@ -0,0 +1,6 @@ + + + doc + source.ocaml + Document + diff --git a/OCaml/For-Loop.sublime-snippet b/OCaml/For-Loop.sublime-snippet new file mode 100644 index 0000000..e8ecbde --- /dev/null +++ b/OCaml/For-Loop.sublime-snippet @@ -0,0 +1,9 @@ + + + for + source.ocaml + for loop + diff --git a/OCaml/Indent rules.tmPreferences b/OCaml/Indent rules.tmPreferences new file mode 100644 index 0000000..e4d748c --- /dev/null +++ b/OCaml/Indent rules.tmPreferences @@ -0,0 +1,21 @@ + + + + + name + Indent rules + scope + source.ocaml + settings + + decreaseIndentPattern + ^\s*(end|done|with|in|else)\b|^\s*;;|^[^\("]*\) + increaseIndentPattern + ^.*(\([^)"\n]*|begin)$|\bobject\s*$|\blet [a-zA-Z0-9_-]+( [^ ]+)+ =\s*$|method[ \t]+.*=[ \t]*$|->[ \t]*$|\b(for|while)[ \t]+.*[ \t]+do[ \t]*$|(\btry$|\bif\s+.*\sthen$|\belse|[:=]\s*sig|=\s*struct)\s*$ + indentNextLinePattern + (?!\bif.*then.*(else.*|(;|[ \t]in)[ \t]*$))\bif|\bthen[ \t]*$|\belse[ \t]*$$ + + uuid + AD257FE4-8F09-4FE6-A0C3-CD5E15F75C5D + + diff --git a/OCaml/Indent rules.tmPreferences.cache b/OCaml/Indent rules.tmPreferences.cache new file mode 100644 index 0000000..6960ec6 Binary files /dev/null and b/OCaml/Indent rules.tmPreferences.cache differ diff --git a/OCaml/Miscellaneous.tmPreferences b/OCaml/Miscellaneous.tmPreferences new file mode 100644 index 0000000..963c8ec --- /dev/null +++ b/OCaml/Miscellaneous.tmPreferences @@ -0,0 +1,30 @@ + + + + + name + Comments + scope + source.ocaml + settings + + shellVariables + + + name + TM_COMMENT_START + value + (* + + + name + TM_COMMENT_END + value + *) + + + + uuid + 4C99F5E7-F7D2-47A3-B232-C1E99C828F5D + + diff --git a/OCaml/Miscellaneous.tmPreferences.cache b/OCaml/Miscellaneous.tmPreferences.cache new file mode 100644 index 0000000..b39a4e6 Binary files /dev/null and b/OCaml/Miscellaneous.tmPreferences.cache differ diff --git a/OCaml/OCaml.tmLanguage b/OCaml/OCaml.tmLanguage new file mode 100644 index 0000000..ff53d51 --- /dev/null +++ b/OCaml/OCaml.tmLanguage @@ -0,0 +1,2156 @@ + + + + + fileTypes + + ml + mli + + foldingStartMarker + (\b(module|class|)\s.*?=\s*$|\bbegin|sig|struct|(object(\s*\(_?[a-z]+\))?)\s*$|\bwhile\s.*?\bdo\s*$|^let(?:\s+rec)?\s+[a-z_][a-zA-Z0-9_]*\s+(?!=)\S) + foldingStopMarker + (\bend(\s+in)?[ \t]*(;{1,2}|=)?|\bdone;?|^\s*;;|^\s*in)[ \t]*$ + keyEquivalent + ^~O + name + OCaml + patterns + + + captures + + 1 + + name + keyword.other.module-binding.ocaml + + 2 + + name + keyword.other.module-definition.ocaml + + 3 + + name + support.other.module.ocaml + + 4 + + name + punctuation.separator.module-binding.ocmal + + + match + \b(let)\s+(module)\s+([A-Z][a-zA-Z0-9'_]*)\s*(=) + name + meta.module.binding + + + begin + \b(let|and)\s+(?!\(\*)((rec\s+)([a-z_][a-zA-Z0-9_']*)\b|([a-z_][a-zA-Z0-9_']*|\([^)]+\))(?=\s)((?=\s*=\s*(?=fun(?:ction)\b))|(?!\s*=))) + beginCaptures + + 1 + + name + keyword.other.function-definition.ocaml + + 3 + + name + keyword.other.funtion-definition.ocaml + + 4 + + name + entity.name.function.ocaml + + 5 + + name + entity.name.function.ocaml + + + end + (?:(:)\s*([^=]+))?(?:(=)|(=)\s*(?=fun(?:ction)\b)) + endCaptures + + 1 + + name + punctuation.separator.function.type-constraint.ocaml + + 2 + + name + storage.type.ocaml + + 3 + + name + keyword.operator.ocaml + + 4 + + name + keyword.operator.ocaml + + + name + meta.function.ocaml + patterns + + + include + #variables + + + + + begin + (\(|\s)(?=fun\s) + beginCaptures + + 1 + + name + punctuation.definition.function.anonymous.ocaml + + + end + (\)) + endCaptures + + 1 + + name + punctuation.definition.function.anonymous.ocaml + + + name + meta.function.anonymous.ocaml + patterns + + + begin + (?<=(\(|\s))(fun)\s + beginCaptures + + 2 + + name + keyword.other.function-definition.ocaml + + + end + (->) + endCaptures + + 1 + + name + punctuation.separator.function-definition.ocaml + + + name + meta.function.anonymous.definition.ocaml + patterns + + + include + #variables + + + + + include + $self + + + + + begin + ^\s*(?=type\s) + end + \b(?=let|end|val)|^\s*$ + name + meta.type-definition-group.ocaml + patterns + + + begin + \b(type|and)\s+([^=]*)(=)? + beginCaptures + + 1 + + name + keyword.other.type-definition.ocaml + + 2 + + name + storage.type.ocaml + + 3 + + name + punctuation.separator.type-definition.ocaml + + + end + (?=\b(type|and|let|end|val)\b)|(?=^\s*$) + name + meta.type-definition.ocaml + patterns + + + include + #typedefs + + + + + + + begin + \b(with|function)(?=(\s*$|.*->))\b|((?<!\S)(\|)(?=(\w|\s).*->)) + beginCaptures + + 1 + + name + keyword.control.match-definition.ocaml + + 2 + + name + keyword.other.function-definition.ocaml + + 3 + + name + keyword.control.match-definition.ocaml + + + end + (?:(->)|\b(when)\b|\s(?=\|)) + endCaptures + + 1 + + name + punctuation.separator.match-definition.ocaml + + 2 + + name + keyword.control.match-condition.ocaml + + + name + meta.pattern-match.ocaml + patterns + + + include + #matchpatterns + + + + + captures + + 1 + + name + keyword.other.class-type-definition.ocaml + + 2 + + name + entity.name.type.class-type.ocaml + + 4 + + name + storage.type.ocaml + + + match + ^[ \t]*(class\s+type\s+)((\[\s*('[A-Za-z][a-zA-Z0-9_']*(?:\s*,\s*'[A-Za-z][a-zA-Z0-9_']*)*)\s*\]\s+)?[a-z_][a-zA-Z0-9'_]*) + name + meta.class.type-definition.ocaml + + + begin + ^[ \t]*(class)(?:\s+(?!(?:virtual)\s+))((\[\s*('[A-Za-z][a-zA-Z0-9_']*(?:\s*,\s*'[A-Za-z][a-zA-Z0-9_']*)*)\s*\]\s+)?[a-z_][a-zA-Z0-9'_]*) + beginCaptures + + 1 + + name + keyword.other.class-definition.ocaml + + 2 + + name + entity.name.type.class.ocaml + + 4 + + name + storage.type.ocaml + + + end + (=) + endCaptures + + 1 + + name + keyword.operator.ocaml + + + name + meta.class.ocaml + patterns + + + include + #variables + + + + + begin + ^[ \t]*(class\s+virtual\s+)((\[\s*('[A-Za-z][a-zA-Z0-9_']*(?:\s*,\s*'[A-Za-z][a-zA-Z0-9_']*)*)\s*\]\s+)?[a-z_][a-zA-Z0-9'_]*) + beginCaptures + + 1 + + name + keyword.other.class-definition.ocaml + + 2 + + name + entity.name.type.class.ocaml + + 4 + + name + storage.type.ocaml + + + end + (=) + endCaptures + + 1 + + name + keyword.operator.ocaml + + + name + meta.class.virtual.ocaml + patterns + + + include + #variables + + + + + captures + + 1 + + name + keyword.other.class-type-definition.ocaml + + 2 + + name + entity.name.type.class-type.ocaml + + 4 + + name + storage.type.ocaml + + + match + ^[ \t]*(class\s+type\s+virtual)((\[\s*('[A-Za-z][a-zA-Z0-9_']*(?:\s*,\s*'[A-Za-z][a-zA-Z0-9_']*)*)\s*\]\s+)?[a-z_][a-zA-Z0-9'_]*) + name + meta.class.virtual.type-definition.ocaml + + + begin + (\{) + beginCaptures + + 1 + + name + punctuation.definition.record.ocaml + + + end + (\}) + endCaptures + + 1 + + name + punctuation.definition.record.ocaml + + + name + meta.record.ocaml + patterns + + + match + \bwith\b + name + keyword.other.language.ocaml + + + begin + (\bmutable\s+)?\b([a-z_][a-zA-Z0-9_']*)\s*(:) + beginCaptures + + 1 + + name + keyword.other.storage.modifier.ocaml + + 2 + + name + source.ocaml + + 3 + + name + punctuation.definition.record.ocaml + + + end + (;|(?=})) + endCaptures + + 1 + + name + keyword.operator.ocaml + + + name + meta.record.definition.ocaml + patterns + + + include + #typedefs + + + + + include + $self + + + + + begin + \b(object)\s*(?:(\()(_?[a-z]+)(\)))?\s*$ + beginCaptures + + 1 + + name + keyword.other.object-definition.ocaml + + 2 + + name + punctuation.definition.self-binding.ocaml + + 3 + + name + entity.name.type.self-binding.ocaml + + 4 + + name + punctuation.definition.self-binding.ocaml + + + end + \b(end)\b + endCaptures + + 1 + + name + keyword.control.object.ocaml + + 2 + + name + punctuation.terminator.expression.ocaml + + + name + meta.object.ocaml + patterns + + + begin + \b(method)\s+(virtual\s+)?(private\s+)?([a-z_][a-zA-Z0-9'_]*) + beginCaptures + + 1 + + name + keyword.other.method-definition.ocaml + + 2 + + name + keyword.other.method-definition.ocaml + + 3 + + name + keyword.other.method-restriction.ocaml + + 4 + + name + entity.name.function.method.ocaml + + + end + (=|:) + endCaptures + + 1 + + name + keyword.operator.ocaml + + + name + meta.method.ocaml + patterns + + + include + #variables + + + + + begin + (constraint)\s+([a-z_'][a-zA-Z0-9'_]*)\s+(=) + beginCaptures + + 1 + + name + keyword.other.language.ocaml + + 2 + + name + storage.type.ocaml + + 3 + + name + keyword.operator.ocaml + + + end + (#[a-z_][a-zA-Z0-9'_]*)|(int|char|float|string|list|array|bool|unit|exn|option|int32|int64|nativeint|format4|lazy_t)|([a-z_][a-zA-Z0-9'_]*)\s*$ + endCaptures + + 1 + + name + storage.type.polymorphic-variant.ocaml + + 2 + + name + storage.type.ocaml + + 3 + + name + storage.type.ocaml + + + name + meta.object.type-constraint.ocaml + + + include + $self + + + + + captures + + 1 + + name + punctuation.separator.method-call.ocaml + + + match + (?<=\w|\)|')(#)[a-z_][a-zA-Z0-9'_]* + name + meta.method-call.ocaml + + + captures + + 1 + + name + keyword.other.module-definition.ocaml + + 2 + + name + entity.name.type.module.ocaml + + 3 + + name + punctuation.separator.module-definition.ocaml + + 4 + + name + entity.name.type.module-type.ocaml + + + match + ^[ \t]*(module)\s+([A-Z_][a-zA-Z0-9'_]*)(?:\s*(:)\s*([A-Z][a-zA-Z0-9'_]*)?)? + name + meta.module.ocaml + + + captures + + 1 + + name + keyword.other.module-type-definition.ocaml + + 2 + + name + entity.name.type.module-type.ocaml + + + match + ^[ \t]*(module\s+type\s+)([A-Z][a-zA-Z0-9'_]*) + name + meta.module.type.ocaml + + + begin + \b(sig)\b + beginCaptures + + 1 + + name + keyword.other.module.signature.ocaml + + + end + \b(end)\b + endCaptures + + 1 + + name + keyword.other.module.signature.ocaml + + 2 + + name + punctuation.terminator.expression.ocaml + + 3 + + name + keyword.operator.ocaml + + + name + meta.module.signature.ocaml + patterns + + + include + #module-signature + + + include + $self + + + + + begin + \b(struct)\b + beginCaptures + + 1 + + name + keyword.other.module.structure.ocaml + + + end + \b(end)\b + endCaptures + + 1 + + name + keyword.other.module.structure.ocaml + + + name + meta.module.structure.ocaml + patterns + + + include + $self + + + + + include + #moduleref + + + begin + \b(open)\s+([A-Z][a-zA-Z0-9'_]*)(?=(\.[A-Z][a-zA-Z0-9_]*)*) + beginCaptures + + 1 + + name + keyword.other.ocaml + + 2 + + name + support.other.module.ocaml + + + end + (\s|$) + name + meta.module.open.ocaml + patterns + + + captures + + 1 + + name + punctuation.separator.module-reference.ocaml + + + match + (\.)([A-Z][a-zA-Z0-9'_]*) + name + support.other.module.ocaml + + + + + captures + + 1 + + name + keyword.other.ocaml + + 2 + + name + entity.name.type.exception.ocaml + + + match + \b(exception)\s+([A-Z][a-zA-Z0-9'_]*)\b + name + meta.exception.ocaml + + + begin + (?=(\[<)(?![^\[]+?[^>]])) + end + (>]) + endCaptures + + 1 + + name + punctuation.definition.camlp4-stream.ocaml + + + name + source.camlp4.embedded.ocaml + patterns + + + include + source.camlp4.ocaml + + + + + include + #strings + + + include + #constants + + + include + #comments + + + include + #lists + + + include + #arrays + + + begin + (\()(?=(~[a-z][a-zA-Z0-9_]*:|("(\\"|[^"])*")|[^\(\)~"])+(?<!:)(:>|:(?![:=]))) + beginCaptures + + 1 + + name + punctuation.section.type-constraint.ocaml + + + end + (?<!:)(:>|:(?![:=]))(.*?)(\)) + endCaptures + + 1 + + name + punctuation.separator.type-constraint.ocaml + + 2 + + name + storage.type.ocaml + + 3 + + name + punctuation.section.type-constraint.ocaml + + + name + meta.type-constraint.ocaml + patterns + + + include + $self + + + + + match + ^[ \t]*#[a-zA-Z]+ + name + keyword.other.directive.ocaml + + + match + ^[ \t]*#[0-9]* + name + keyword.other.directive.line-number.ocaml + + + include + #storagetypes + + + match + \b(mutable|ref)\b + name + keyword.other.storage.modifier.ocaml + + + match + `[A-Za-z][a-zA-Z0-9'_]*\b + name + entity.name.type.variant.polymorphic.ocaml + + + match + \b[A-Z][a-zA-Z0-9'_]*\b + name + entity.name.type.variant.ocaml + + + match + !=|:=|>|< + name + keyword.operator.symbol.ocaml + + + match + [*+/-]\. + name + keyword.operator.infix.floating-point.ocaml + + + match + ~-\. + name + keyword.operator.prefix.floating-point.ocaml + + + match + :: + name + punctuation.definition.list.constructor.ocaml + + + match + ;; + name + punctuation.terminator.expression.ocaml + + + match + ; + name + punctuation.separator.ocaml + + + match + -> + name + punctuation.separator.function-return.ocaml + + + match + [=<>@^&+\-*/$%|][|!$%&*+./:<=>?@^~-]* + name + keyword.operator.infix.ocaml + + + match + \bnot\b|!|[!\?~][!$%&*+./:<=>?@^~-]+ + name + keyword.operator.prefix.ocaml + + + captures + + 1 + + name + punctuation.separator.argument-label.ocaml + + + match + ~[a-z][a-z0-9'_]*(:)? + name + entity.name.tag.label.ocaml + + + begin + \b(begin)\b + beginCaptures + + 1 + + name + keyword.control.begin-end.ocaml + + + end + \b(end)\b + endCaptures + + 1 + + name + keyword.control.begin-end.ocaml + + + name + meta.begin-end-group.ocaml + patterns + + + include + $self + + + + + begin + \b(for)\b + beginCaptures + + 1 + + name + keyword.control.for-loop.ocaml + + + end + \b(done)\b + endCaptures + + 1 + + name + keyword.control.for-loop.ocaml + + + name + meta.for-loop.ocaml + patterns + + + match + \bdo\b + name + keyword.control.loop.ocaml + + + include + $self + + + + + begin + \b(while)\b + beginCaptures + + 1 + + name + keyword.control.while-loop.ocaml + + + end + \b(done)\b + endCaptures + + 1 + + name + keyword.control.while-loop.ocaml + + + name + meta.while-loop.ocaml + patterns + + + match + \bdo\b + name + keyword.control.loop.ocaml + + + include + $self + + + + + begin + \( + end + \) + name + meta.paren-group.ocaml + patterns + + + include + $self + + + + + match + \b(and|land|lor|lsl|lsr|lxor|mod|or)\b + name + keyword.operator.ocaml + + + match + \b(downto|if|else|match|then|to|when|with|try)\b + name + keyword.control.ocaml + + + match + \b(as|assert|class|constraint|exception|functor|in|include|inherit|initializer|lazy|let|mod|module|mutable|new|object|open|private|rec|sig|struct|type|virtual)\b + name + keyword.other.ocaml + + + include + #module-signature + + + match + (’|‘|“|”) + name + invalid.illegal.unrecognized-character.ocaml + + + repository + + arrays + + patterns + + + begin + (\[\|) + beginCaptures + + 1 + + name + punctuation.definition.array.begin.ocaml + + + end + (\|]) + endCaptures + + 1 + + name + punctuation.definition.array.end.ocaml + + + name + meta.array.ocaml + patterns + + + include + #arrays + + + include + $self + + + + + + comments + + patterns + + + captures + + 1 + + name + comment.block.empty.ocaml + + + match + \(\*+(\*)\) + name + comment.block.ocaml + + + begin + \(\* + end + \*\) + name + comment.block.ocaml + patterns + + + include + #comments + + + + + begin + (?=[^\\])(") + end + " + name + comment.block.string.quoted.double.ocaml + patterns + + + match + \\(x[a-fA-F0-9][a-fA-F0-9]|[0-2]\d\d|[bnrt'"\\]) + name + comment.block.string.constant.character.escape.ocaml + + + + + + constants + + patterns + + + captures + + 1 + + name + meta.empty-typing-pair.ocaml + + 2 + + name + meta.empty-typing-pair.parens.ocaml + + 3 + + name + meta.empty-typing-pair.ocaml + + + match + (?:\[\s*(\])|\((\))|\(\s*(\))) + name + constant.language.pseudo-variable.ocaml + + + match + \b(true|false)\b + name + constant.language.boolean.ocaml + + + match + \b-?[0-9][0-9_]*((\.([0-9][0-9_]*([eE][+-]??[0-9][0-9_]*)?)?)|([eE][+-]??[0-9][0-9_]*)) + name + constant.numeric.floating-point.ocaml + + + match + \b(-?((0(x|X)[0-9a-fA-F][0-9a-fA-F_]*)|(0(o|O)[0-7][0-7_]*)|(0(b|B)[01][01_]*)|([0-9][0-9_]*)))n + name + constant.numeric.integer.nativeint.ocaml + + + match + \b(-?((0(x|X)[0-9a-fA-F][0-9a-fA-F_]*)|(0(o|O)[0-7][0-7_]*)|(0(b|B)[01][01_]*)|([0-9][0-9_]*)))L + name + constant.numeric.integer.int64.ocaml + + + match + \b(-?((0(x|X)[0-9a-fA-F][0-9a-fA-F_]*)|(0(o|O)[0-7][0-7_]*)|(0(b|B)[01][01_]*)|([0-9][0-9_]*)))l + name + constant.numeric.integer.int32.ocaml + + + match + \b(-?((0(x|X)[0-9a-fA-F][0-9a-fA-F_]*)|(0(o|O)[0-7][0-7_]*)|(0(b|B)[01][01_]*)|([0-9][0-9_]*))) + name + constant.numeric.integer.ocaml + + + match + '(.|\\(x[a-fA-F0-9][a-fA-F0-9]|[0-2]\d\d|[bnrt'"\\]))' + name + constant.character.ocaml + + + + definite_storagetypes + + patterns + + + include + #storagetypes + + + match + \b[a-zA-Z0-9'_]+\b + name + storage.type.ocaml + + + + lists + + patterns + + + begin + (\[)(?!\||<|>) + beginCaptures + + 1 + + name + punctuation.definition.list.begin.ocaml + + + end + (?<!\||>)(]) + endCaptures + + 1 + + name + punctuation.definition.list.end.ocaml + + + name + meta.list.ocaml + patterns + + + include + #lists + + + include + $self + + + + + + matchpatterns + + patterns + + + match + \b_\b + name + constant.language.universal-match.ocaml + + + match + \|(?=\s*\S) + name + punctuation.separator.match-pattern.ocaml + + + begin + (\()(?=(?!=.*?->).*?\|) + beginCaptures + + 1 + + name + punctuation.definition.match-option.ocaml + + + end + (\)) + endCaptures + + 1 + + name + punctuation.definition.match-option.ocaml + + + name + meta.match-option.ocaml + patterns + + + match + \| + name + punctuation.separator.match-option.ocaml + + + include + #matchpatterns + + + + + include + #moduleref + + + include + #constants + + + include + #variables + + + include + $self + + + + module-signature + + patterns + + + begin + (val)\s+([a-z_][a-zA-Z0-9_']*)\s*(:) + beginCaptures + + 1 + + name + keyword.other.ocaml + + 2 + + name + entity.name.type.value-signature.ocaml + + 3 + + name + punctuation.separator.type-constraint.ocaml + + + end + (?=\b(type|val|external|class|module|end)\b)|^\s*$ + name + meta.module.signature.val.ocaml + patterns + + + captures + + 1 + + name + punctuation.definition.optional-parameter.ocaml + + 2 + + name + entity.name.tag.label.optional.ocaml + + 3 + + name + punctuation.separator.optional-parameter.ocaml + + + match + (\?)([a-z][a-zA-Z0-9_]*)\s*(:) + name + variable.parameter.ameter.optional.ocaml + + + begin + ([a-z][a-zA-Z0-9'_]*)\s*(:)\s* + beginCaptures + + 1 + + name + entity.name.tag.label.ocaml + + 2 + + name + punctuation.separator.label.ocaml + + 3 + + name + storage.type.ocaml + + + end + \s + name + variable.parameter.labeled.ocaml + patterns + + + include + #definite_storagetypes + + + + + include + #typedefs + + + + + begin + (external)\s+([a-z_][a-zA-Z0-9_']*)\s*(:) + beginCaptures + + 1 + + name + keyword.other.ocaml + + 2 + + name + entity.name.type.external-signature.ocaml + + 3 + + name + punctuation.separator.type-constraint.ocaml + + + end + (?=\b(type|val|external|class|module|let|end)\b)|^\s*$ + name + meta.module.signature.external.ocaml + patterns + + + captures + + 1 + + name + punctuation.definition.optional-parameter.ocaml + + 2 + + name + entity.name.tag.label.optional.ocaml + + 3 + + name + punctuation.separator.optional-parameter.ocaml + + + match + (\?)([a-z][a-zA-Z0-9_]*)\s*(:) + name + variable.parameter.optional.ocaml + + + begin + (~)([a-z][a-zA-Z0-9'_]*)\s*(:)\s* + beginCaptures + + 1 + + name + punctuation.definition.labeled-parameter.ocaml + + 2 + + name + entity.name.tag.label.ocaml + + 3 + + name + punctuation.separator.label.ocaml + + + end + \s + name + variable.parameter.labeled.ocaml + patterns + + + include + #variables + + + + + include + #strings + + + include + #typedefs + + + + + + moduleref + + patterns + + + beginCaptures + + 1 + + name + support.other.module.ocaml + + 2 + + name + punctuation.separator.module-reference.ocaml + + + match + \b([A-Z][a-zA-Z0-9'_]*)(\.) + name + meta.module-reference.ocaml + + + + storagetypes + + patterns + + + match + \b(int|char|float|string|list|array|bool|unit|exn|option|int32|int64|nativeint|format4|lazy_t)\b + name + storage.type.ocaml + + + match + #[a-z_][a-zA-Z0-9_]* + name + storage.type.variant.polymorphic.ocaml + + + + strings + + patterns + + + begin + (?=[^\\])(") + beginCaptures + + 1 + + name + punctuation.definition.string.begin.ocaml + + + end + (") + endCaptures + + 1 + + name + punctuation.definition.string.end.ocaml + + + name + string.quoted.double.ocaml + patterns + + + match + \\$[ \t]* + name + punctuation.separator.string.ignore-eol.ocaml + + + match + \\(x[a-fA-F0-9][a-fA-F0-9]|[0-2]\d\d|[bnrt'"\\]) + name + constant.character.string.escape.ocaml + + + match + \\[\|\(\)1-9$^.*+?\[\]] + name + constant.character.regexp.escape.ocaml + + + match + \\(?!(x[a-fA-F0-9][a-fA-F0-9]|[0-2]\d\d|[bnrt'"\\]|[\|\(\)1-9$^.*+?\[\]]|$[ \t]*))(?:.) + name + invalid.illegal.character.string.escape + + + + + + typedefs + + patterns + + + match + \| + name + punctuation.separator.variant-definition.ocaml + + + include + #comments + + + begin + \( + end + \) + name + meta.paren-group.ocaml + patterns + + + include + #typedefs + + + + + match + \bof\b + name + keyword.other.ocaml + + + include + #storagetypes + + + match + (?<=\s|\()['a-z_][a-zA-Z0-9_]*\b + name + storage.type.ocaml + + + captures + + 1 + + name + support.other.module.ocaml + + 2 + + name + storage.type.module.ocaml + + + match + \b((?:[A-Z][a-zA-Z0-9'_]*)(?:\.[A-Z][a-zA-Z0-9'_]+)*)(\.[a-zA-Z0-9'_]+) + name + meta.module.type.ocaml + + + begin + (\[(>|<)?) + beginCaptures + + 1 + + name + punctuation.definition.polymorphic-variant.ocaml + + + end + (\]) + endCaptures + + 1 + + name + punctuation.definition.polymorphic-variant.ocaml + + + name + meta.polymorphic-variant.definition.ocaml + patterns + + + include + #typedefs + + + + + include + $self + + + match + \| + name + punctuation.separator.algebraic-type.ocaml + + + + variables + + patterns + + + match + \(\) + name + variable.parameter.unit.ocaml + + + include + #constants + + + include + #moduleref + + + begin + (~)([a-z][a-zA-Z0-9'_]*)(\s*:\s*)? + beginCaptures + + 1 + + name + punctuation.definition.labeled-parameter.ocaml + + 2 + + name + entity.name.tag.label.ocaml + + 3 + + name + punctuation.separator.label.ocaml + + + end + (?=(->|\s)) + name + variable.parameter.labeled.ocaml + patterns + + + include + #variables + + + + + captures + + 1 + + name + punctuation.definition.optional-parameter.ocaml + + 2 + + name + entity.name.tag.label.optional.ocaml + + + match + (\?)([a-z][a-zA-Z0-9_]*) + name + variable.parameter.optional.ocaml + + + begin + (\?)(\()([a-z_][a-zA-Z0-9'_]*)\s*(=) + beginCaptures + + 1 + + name + punctuation.definition.optional-parameter.ocaml + + 2 + + name + punctuation.definition.optional-parameter.ocaml + + 3 + + name + entity.name.tag.label.optional.ocaml + + 4 + + name + punctuation.separator.optional-parameter-assignment.ocaml + + + end + (\)) + endCaptures + + 1 + + name + punctuation.definition.optional-parameter.ocaml + + + name + variable.parameter.optional.ocaml + patterns + + + include + $self + + + + + begin + (\()(?=(~[a-z][a-zA-Z0-9_]*:|("(\\"|[^"])*")|[^\(\)~"])+(?<!:)(:>|:(?![:=]))) + beginCaptures + + 1 + + name + punctuation.section.type-constraint.ocaml + + + end + (\)) + endCaptures + + 1 + + name + punctuation.section.type-constraint.ocaml + + + name + meta.parameter.type-constrained.ocaml + patterns + + + begin + (?<!:)(:>|:(?![:=])) + beginCaptures + + 1 + + name + punctuation.separator.type-constraint.ocaml + + + end + (?=\)) + name + storage.type.ocaml + patterns + + + begin + \( + end + \) + name + meta.paren.group + + + + + include + #variables + + + + + include + #comments + + + begin + \( + end + \) + name + meta.paren-group.ocaml + patterns + + + include + #variables + + + + + begin + (\() + beginCaptures + + 1 + + name + punctuation.definition.tuple.ocaml + + + end + (\)) + endCaptures + + 1 + + name + punctuation.definition.tuple.ocaml + + + name + variable.parameter.tuple.ocaml + patterns + + + include + #matchpatterns + + + include + #variables + + + match + , + name + punctuation.separator.tuple.ocaml + + + + + begin + (\{) + beginCaptures + + 1 + + name + punctuation.definition.record.ocaml + + + end + (\}) + endCaptures + + 1 + + name + punctuation.definition.record.ocaml + + + name + variable.parameter.record.ocaml + patterns + + + include + #moduleref + + + begin + \b([a-z][a-zA-Z0-9'_]*)\s*(=) + beginCaptures + + 1 + + name + entity.name.tag.record.ocaml + + 2 + + name + punctuation.separator.record.field-assignment.ocaml + + + end + (;)|(?=\}) + endCaptures + + 1 + + name + punctuation.separator.record.ocaml + + + name + meta.recordfield.match.ocaml + patterns + + + include + #matchpatterns + + + + + + + include + #storagetypes + + + match + \b[a-z_][a-zA-Z0-9'_]* + name + variable.parameter.ocaml + + + + + scopeName + source.ocaml + uuid + F816FA69-6EE8-11D9-BF2D-000D93589AF6 + + diff --git a/OCaml/OCaml.tmLanguage.cache b/OCaml/OCaml.tmLanguage.cache new file mode 100644 index 0000000..4016176 Binary files /dev/null and b/OCaml/OCaml.tmLanguage.cache differ diff --git a/OCaml/OCamllex.tmLanguage b/OCaml/OCamllex.tmLanguage new file mode 100644 index 0000000..5f90095 --- /dev/null +++ b/OCaml/OCamllex.tmLanguage @@ -0,0 +1,476 @@ + + + + + fileTypes + + mll + + foldingStartMarker + { + foldingStopMarker + } + keyEquivalent + ^~O + name + OCamllex + patterns + + + begin + ^\s*({) + beginCaptures + + 1 + + name + punctuation.section.embedded.ocaml.begin.ocamllex + + + end + ^\s*(}) + endCaptures + + 1 + + name + punctuation.section.embedded.ocaml.end.ocamllex + + + name + meta.embedded.ocaml + patterns + + + include + source.ocaml + + + + + begin + \b(let)\s+([a-z][a-zA-Z0-9'_]*)\s+= + beginCaptures + + 1 + + name + keyword.other.pattern-definition.ocamllex + + 2 + + name + entity.name.type.pattern.stupid-goddamn-hack.ocamllex + + + end + ^(?:\s*let)|(?:\s*(rule|$)) + name + meta.pattern-definition.ocaml + patterns + + + include + #match-patterns + + + + + begin + (rule|and)\s+([a-z][a-zA-Z0-9_]*)\s+(=)\s+(parse)(?=\s*$)|((?<!\|)(\|)(?!\|)) + beginCaptures + + 1 + + name + keyword.other.ocamllex + + 2 + + name + entity.name.function.entrypoint.ocamllex + + 3 + + name + keyword.operator.ocamllex + + 4 + + name + keyword.other.ocamllex + + 5 + + name + punctuation.separator.match-pattern.ocamllex + + + end + (?:^\s*((and)\b|(?=\|)|$)) + endCaptures + + 3 + + name + keyword.other.entry-definition.ocamllex + + + name + meta.pattern-match.ocaml + patterns + + + include + #match-patterns + + + include + #actions + + + + + include + #strings + + + include + #comments + + + match + = + name + keyword.operator.symbol.ocamllex + + + begin + \( + end + \) + name + meta.paren-group.ocamllex + patterns + + + include + $self + + + + + match + (’|‘|“|”) + name + invalid.illegal.unrecognized-character.ocamllex + + + repository + + actions + + patterns + + + begin + [^\']({) + beginCaptures + + 1 + + name + punctuation.definition.action.begin.ocamllex + + + end + (}) + endCaptures + + 1 + + name + punctuation.definition.action.end.ocamllex + + + name + meta.action.ocamllex + patterns + + + include + source.ocaml + + + + + + chars + + patterns + + + captures + + 1 + + name + punctuation.definition.char.begin.ocamllex + + 4 + + name + punctuation.definition.char.end.ocamllex + + + match + (')([^\\]|\\(x[a-fA-F0-9][a-fA-F0-9]|[0-2]\d\d|[bnrt'"\\]))(') + name + constant.character.ocamllex + + + + comments + + patterns + + + captures + + 1 + + name + comment.block.empty.ocaml + + 2 + + name + comment.block.empty.ocaml + + + match + \(\*(?:(\*)| ( )\*)\) + name + comment.block.ocaml + + + begin + \(\* + end + \*\) + name + comment.block.ocaml + patterns + + + include + #comments + + + + + begin + (?=[^\\])(") + end + " + name + comment.block.string.quoted.double.ocaml + patterns + + + match + \\(x[a-fA-F0-9][a-fA-F0-9]|[0-2]\d\d|[bnrt'"\\]) + name + comment.block.string.constant.character.escape.ocaml + + + + + + match-patterns + + patterns + + + begin + (\() + beginCaptures + + 1 + + name + punctuation.definition.sub-pattern.begin.ocamllex + + + end + (\)) + endCaptures + + 1 + + name + punctuation.definition.sub-pattern.end.ocamllex + + + name + meta.pattern.sub-pattern.ocamllex + patterns + + + include + #match-patterns + + + + + match + [a-z][a-zA-Z0-9'_] + name + entity.name.type.pattern.reference.stupid-goddamn-hack.ocamllex + + + match + \bas\b + name + keyword.other.pattern.ocamllex + + + match + eof + name + constant.language.eof.ocamllex + + + match + _ + name + constant.language.universal-match.ocamllex + + + begin + (\[)(\^?) + beginCaptures + + 1 + + name + punctuation.definition.character-class.begin.ocamllex + + 2 + + name + punctuation.definition.character-class.negation.ocamllex + + + end + (])(?!\') + endCaptures + + 1 + + name + punctuation.definition.character-class.end.ocamllex + + + name + meta.pattern.character-class.ocamllex + patterns + + + match + - + name + punctuation.separator.character-class.range.ocamllex + + + include + #chars + + + + + match + \*|\+|\? + name + keyword.operator.pattern.modifier.ocamllex + + + match + \| + name + keyword.operator.pattern.alternation.ocamllex + + + include + #chars + + + include + #strings + + + + strings + + patterns + + + begin + (?=[^\\])(") + beginCaptures + + 1 + + name + punctuation.definition.string.begin.ocaml + + + end + (") + endCaptures + + 1 + + name + punctuation.definition.string.end.ocaml + + + name + string.quoted.double.ocamllex + patterns + + + match + \\$[ \t]* + name + punctuation.separator.string.ignore-eol.ocaml + + + match + \\(x[a-fA-F0-9][a-fA-F0-9]|[0-2]\d\d|[bnrt'"\\]) + name + constant.character.string.escape.ocaml + + + match + \\[\|\(\)1-9$^.*+?\[\]] + name + constant.character.regexp.escape.ocaml + + + match + \\(?!(x[a-fA-F0-9][a-fA-F0-9]|[0-2]\d\d|[bnrt'"\\]|[\|\(\)1-9$^.*+?\[\]]|$[ \t]*))(?:.) + name + invalid.illegal.character.string.escape + + + + + + + scopeName + source.ocamllex + uuid + 007E5263-8E0D-4BEF-B0E1-F01AE32590E8 + + diff --git a/OCaml/OCamllex.tmLanguage.cache b/OCaml/OCamllex.tmLanguage.cache new file mode 100644 index 0000000..67f5517 Binary files /dev/null and b/OCaml/OCamllex.tmLanguage.cache differ diff --git a/OCaml/OCamlyacc.tmLanguage b/OCaml/OCamlyacc.tmLanguage new file mode 100644 index 0000000..95dc858 --- /dev/null +++ b/OCaml/OCamlyacc.tmLanguage @@ -0,0 +1,532 @@ + + + + + fileTypes + + mly + + foldingStartMarker + %{|%% + foldingStopMarker + %}|%% + keyEquivalent + ^~O + name + OCamlyacc + patterns + + + begin + (%{)\s*$ + beginCaptures + + 1 + + name + punctuation.section.header.begin.ocamlyacc + + + end + ^\s*(%}) + endCaptures + + 1 + + name + punctuation.section.header.end.ocamlyacc + + + name + meta.header.ocamlyacc + patterns + + + include + source.ocaml + + + + + begin + (?<=%})\s*$ + end + (?:^)(?=%%) + name + meta.declarations.ocamlyacc + patterns + + + include + #comments + + + include + #declaration-matches + + + + + begin + (%%)\s*$ + beginCaptures + + 1 + + name + punctuation.section.rules.begin.ocamlyacc + + + end + ^\s*(%%) + endCaptures + + 1 + + name + punctuation.section.rules.end.ocamlyacc + + + name + meta.rules.ocamlyacc + patterns + + + include + #comments + + + include + #rules + + + + + include + source.ocaml + + + include + #comments + + + match + (’|‘|“|”) + name + invalid.illegal.unrecognized-character.ocaml + + + repository + + comments + + patterns + + + begin + /\* + end + \*/ + name + comment.block.ocamlyacc + patterns + + + include + #comments + + + + + begin + (?=[^\\])(") + end + " + name + comment.block.string.quoted.double.ocamlyacc + patterns + + + match + \\(x[a-fA-F0-9][a-fA-F0-9]|[0-2]\d\d|[bnrt'"\\]) + name + comment.block.string.constant.character.escape.ocamlyacc + + + + + + declaration-matches + + patterns + + + begin + (%)(token) + beginCaptures + + 1 + + name + keyword.other.decorator.token.ocamlyacc + + 2 + + name + keyword.other.token.ocamlyacc + + + end + ^\s*($|(^\s*(?=%))) + name + meta.token.declaration.ocamlyacc + patterns + + + include + #symbol-types + + + match + [A-Z][A-Za-z0-9_]* + name + entity.name.type.token.ocamlyacc + + + include + #comments + + + + + begin + (%)(left|right|nonassoc) + beginCaptures + + 1 + + name + keyword.other.decorator.token.associativity.ocamlyacc + + 2 + + name + keyword.other.token.associativity.ocamlyacc + + + end + (^\s*$)|(^\s*(?=%)) + name + meta.token.associativity.ocamlyacc + patterns + + + match + [A-Z][A-Za-z0-9_]* + name + entity.name.type.token.ocamlyacc + + + match + [a-z][A-Za-z0-9_]* + name + entity.name.function.non-terminal.reference.ocamlyacc + + + include + #comments + + + + + begin + (%)(start) + beginCaptures + + 1 + + name + keyword.other.decorator.start-symbol.ocamlyacc + + 2 + + name + keyword.other.start-symbol.ocamlyacc + + + end + (^\s*$)|(^\s*(?=%)) + name + meta.start-symbol.ocamlyacc + patterns + + + match + [a-z][A-Za-z0-9_]* + name + entity.name.function.non-terminal.reference.ocamlyacc + + + include + #comments + + + + + begin + (%)(type) + beginCaptures + + 1 + + name + keyword.other.decorator.symbol-type.ocamlyacc + + 2 + + name + keyword.other.symbol-type.ocamlyacc + + + end + $\s*(?!%) + name + meta.symbol-type.ocamlyacc + patterns + + + include + #symbol-types + + + match + [A-Z][A-Za-z0-9_]* + name + entity.name.type.token.reference.ocamlyacc + + + match + [a-z][A-Za-z0-9_]* + name + entity.name.function.non-terminal.reference.ocamlyacc + + + include + #comments + + + + + + precs + + patterns + + + captures + + 1 + + name + keyword.other.decorator.precedence.ocamlyacc + + 2 + + name + keyword.other.precedence.ocamlyacc + + 4 + + name + entity.name.function.non-terminal.reference.ocamlyacc + + 5 + + name + entity.name.type.token.reference.ocamlyacc + + + match + (%)(prec)\s+(([a-z][a-zA-Z0-9_]*)|(([A-Z][a-zA-Z0-9_]*))) + name + meta.precidence.declaration + + + + references + + patterns + + + match + [a-z][a-zA-Z0-9_]* + name + entity.name.function.non-terminal.reference.ocamlyacc + + + match + [A-Z][a-zA-Z0-9_]* + name + entity.name.type.token.reference.ocamlyacc + + + + rule-patterns + + patterns + + + begin + ((?<!\||:)(\||:)(?!\||:)) + beginCaptures + + 0 + + name + punctuation.separator.rule.ocamlyacc + + + end + \s*(?=\||;) + name + meta.rule-match.ocaml + patterns + + + include + #precs + + + include + #semantic-actions + + + include + #references + + + include + #comments + + + + + + rules + + patterns + + + begin + [a-z][a-zA-Z_]* + beginCaptures + + 0 + + name + entity.name.function.non-terminal.ocamlyacc + + + end + ; + endCaptures + + 0 + + name + punctuation.separator.rule.ocamlyacc + + + name + meta.non-terminal.ocamlyacc + patterns + + + include + #rule-patterns + + + + + + semantic-actions + + patterns + + + begin + [^\']({) + beginCaptures + + 1 + + name + punctuation.definition.action.semantic.ocamlyacc + + + end + (}) + endCaptures + + 1 + + name + punctuation.definition.action.semantic.ocamlyacc + + + name + meta.action.semantic.ocamlyacc + patterns + + + include + source.ocaml + + + + + + symbol-types + + patterns + + + begin + < + beginCaptures + + 0 + + name + punctuation.definition.type-declaration.begin.ocamlyacc + + + end + > + endCaptures + + 0 + + name + punctuation.definition.type-declaration.end.ocamlyacc + + + name + meta.token.type-declaration.ocamlyacc + patterns + + + include + source.ocaml + + + + + + + scopeName + source.ocamlyacc + uuid + 1B59327E-9B82-4B78-9411-BC02067DBDF9 + + diff --git a/OCaml/OCamlyacc.tmLanguage.cache b/OCaml/OCamlyacc.tmLanguage.cache new file mode 100644 index 0000000..0bb7476 Binary files /dev/null and b/OCaml/OCamlyacc.tmLanguage.cache differ diff --git a/OCaml/Symbol List%3A Classes.tmPreferences b/OCaml/Symbol List%3A Classes.tmPreferences new file mode 100644 index 0000000..32c362f --- /dev/null +++ b/OCaml/Symbol List%3A Classes.tmPreferences @@ -0,0 +1,19 @@ + + + + + name + Symbol List: Classes + scope + entity.name.type.class.ocaml + settings + + showInSymbolList + 1 + symbolTransformation + s/^/class: / + + uuid + 72C6F9CD-7D1F-4956-8451-22F35339ABAB + + diff --git a/OCaml/Symbol List%3A Classes.tmPreferences.cache b/OCaml/Symbol List%3A Classes.tmPreferences.cache new file mode 100644 index 0000000..f2bdc8a Binary files /dev/null and b/OCaml/Symbol List%3A Classes.tmPreferences.cache differ diff --git a/OCaml/Symbol List%3A Exceptions.tmPreferences b/OCaml/Symbol List%3A Exceptions.tmPreferences new file mode 100644 index 0000000..6b93e8a --- /dev/null +++ b/OCaml/Symbol List%3A Exceptions.tmPreferences @@ -0,0 +1,19 @@ + + + + + name + Symbol List: Exceptions + scope + entity.name.type.exception.ocaml + settings + + showInSymbolList + 1 + symbolTransformation + s/^/exception: / + + uuid + 5852E31D-A343-4FD5-953A-76996068C515 + + diff --git a/OCaml/Symbol List%3A Exceptions.tmPreferences.cache b/OCaml/Symbol List%3A Exceptions.tmPreferences.cache new file mode 100644 index 0000000..dfb295b Binary files /dev/null and b/OCaml/Symbol List%3A Exceptions.tmPreferences.cache differ diff --git a/OCaml/Symbol List%3A Ocamllex pattern definition.tmPreferences b/OCaml/Symbol List%3A Ocamllex pattern definition.tmPreferences new file mode 100644 index 0000000..abec0ea --- /dev/null +++ b/OCaml/Symbol List%3A Ocamllex pattern definition.tmPreferences @@ -0,0 +1,19 @@ + + + + + name + Symbol List: Ocamllex pattern definition + scope + entity.name.type.pattern.stupid-goddamn-hack.ocamllex + settings + + showInSymbolList + 1 + symbolTransformation + s/^/pattern: / + + uuid + 52F126D8-181E-4A22-ABD4-831550FF28AD + + diff --git a/OCaml/Symbol List%3A Ocamllex pattern definition.tmPreferences.cache b/OCaml/Symbol List%3A Ocamllex pattern definition.tmPreferences.cache new file mode 100644 index 0000000..18650ad Binary files /dev/null and b/OCaml/Symbol List%3A Ocamllex pattern definition.tmPreferences.cache differ diff --git a/OCaml/Symbol List%3A Ocamllex pattern references.tmPreferences b/OCaml/Symbol List%3A Ocamllex pattern references.tmPreferences new file mode 100644 index 0000000..0fba63c --- /dev/null +++ b/OCaml/Symbol List%3A Ocamllex pattern references.tmPreferences @@ -0,0 +1,17 @@ + + + + + name + Symbol List: Ocamllex pattern references + scope + entity.name.type.pattern.reference.stupid-goddamn-hack.ocamllex + settings + + showInSymbolList + 0 + + uuid + 4CCB042A-DC5F-4D03-8BD5-96B91397A458 + + diff --git a/OCaml/Symbol List%3A Ocamllex pattern references.tmPreferences.cache b/OCaml/Symbol List%3A Ocamllex pattern references.tmPreferences.cache new file mode 100644 index 0000000..d93c73c Binary files /dev/null and b/OCaml/Symbol List%3A Ocamllex pattern references.tmPreferences.cache differ diff --git a/OCaml/Symbol List%3A Ocamllex rules.tmPreferences b/OCaml/Symbol List%3A Ocamllex rules.tmPreferences new file mode 100644 index 0000000..3a747ca --- /dev/null +++ b/OCaml/Symbol List%3A Ocamllex rules.tmPreferences @@ -0,0 +1,19 @@ + + + + + name + Symbol List: Ocamllex rules + scope + entity.name.function.entrypoint.ocamllex + settings + + showInSymbolList + 1 + symbolTransformation + s/^/entrypoint: / + + uuid + B13DEBC9-0853-42D6-882E-E38F213BD337 + + diff --git a/OCaml/Symbol List%3A Ocamllex rules.tmPreferences.cache b/OCaml/Symbol List%3A Ocamllex rules.tmPreferences.cache new file mode 100644 index 0000000..f58b2e5 Binary files /dev/null and b/OCaml/Symbol List%3A Ocamllex rules.tmPreferences.cache differ diff --git a/OCaml/Symbol List%3A Ocamlyacc non-terminal definition.tmPreferences b/OCaml/Symbol List%3A Ocamlyacc non-terminal definition.tmPreferences new file mode 100644 index 0000000..9ee4f91 --- /dev/null +++ b/OCaml/Symbol List%3A Ocamlyacc non-terminal definition.tmPreferences @@ -0,0 +1,19 @@ + + + + + name + Symbol List: Ocamlyacc non-terminal definition + scope + entity.name.function.non-terminal.ocamlyacc + settings + + showInSymbolList + 1 + symbolTransformation + s/^/non-terminal: / + + uuid + 2169BE86-FF3F-42AD-A396-82905FBF336A + + diff --git a/OCaml/Symbol List%3A Ocamlyacc non-terminal definition.tmPreferences.cache b/OCaml/Symbol List%3A Ocamlyacc non-terminal definition.tmPreferences.cache new file mode 100644 index 0000000..cc3d93b Binary files /dev/null and b/OCaml/Symbol List%3A Ocamlyacc non-terminal definition.tmPreferences.cache differ diff --git a/OCaml/Symbol List%3A Ocamlyacc non-terminal reference.tmPreferences b/OCaml/Symbol List%3A Ocamlyacc non-terminal reference.tmPreferences new file mode 100644 index 0000000..73ca99d --- /dev/null +++ b/OCaml/Symbol List%3A Ocamlyacc non-terminal reference.tmPreferences @@ -0,0 +1,17 @@ + + + + + name + Symbol List: Ocamlyacc non-terminal reference + scope + entity.name.function.non-terminal.reference.ocamlyacc + settings + + showInSymbolList + 0 + + uuid + AC8A21BC-AE1F-4213-AFC1-29EB62E72ABE + + diff --git a/OCaml/Symbol List%3A Ocamlyacc non-terminal reference.tmPreferences.cache b/OCaml/Symbol List%3A Ocamlyacc non-terminal reference.tmPreferences.cache new file mode 100644 index 0000000..3055d5c Binary files /dev/null and b/OCaml/Symbol List%3A Ocamlyacc non-terminal reference.tmPreferences.cache differ diff --git a/OCaml/Symbol List%3A Ocamlyacc token definition.tmPreferences b/OCaml/Symbol List%3A Ocamlyacc token definition.tmPreferences new file mode 100644 index 0000000..287a3d1 --- /dev/null +++ b/OCaml/Symbol List%3A Ocamlyacc token definition.tmPreferences @@ -0,0 +1,19 @@ + + + + + name + Symbol List: Ocamlyacc token definition + scope + entity.name.type.token.ocamlyacc + settings + + showInSymbolList + 1 + symbolTransformation + s/^/token: / + + uuid + 018D26CA-0A0B-492A-B18D-25F518C7AE09 + + diff --git a/OCaml/Symbol List%3A Ocamlyacc token definition.tmPreferences.cache b/OCaml/Symbol List%3A Ocamlyacc token definition.tmPreferences.cache new file mode 100644 index 0000000..a673453 Binary files /dev/null and b/OCaml/Symbol List%3A Ocamlyacc token definition.tmPreferences.cache differ diff --git a/OCaml/Symbol List%3A Ocamlyacc token reference.tmPreferences b/OCaml/Symbol List%3A Ocamlyacc token reference.tmPreferences new file mode 100644 index 0000000..e8eae9e --- /dev/null +++ b/OCaml/Symbol List%3A Ocamlyacc token reference.tmPreferences @@ -0,0 +1,17 @@ + + + + + name + Symbol List: Ocamlyacc token reference + scope + entity.name.type.token.reference.ocamlyacc + settings + + showInSymbolList + 0 + + uuid + 1CB2410B-4D16-48C6-96B8-D3580ECD280D + + diff --git a/OCaml/Symbol List%3A Ocamlyacc token reference.tmPreferences.cache b/OCaml/Symbol List%3A Ocamlyacc token reference.tmPreferences.cache new file mode 100644 index 0000000..820e77a Binary files /dev/null and b/OCaml/Symbol List%3A Ocamlyacc token reference.tmPreferences.cache differ diff --git a/OCaml/Symbol List%3A Types.tmPreferences b/OCaml/Symbol List%3A Types.tmPreferences new file mode 100644 index 0000000..365eebd --- /dev/null +++ b/OCaml/Symbol List%3A Types.tmPreferences @@ -0,0 +1,19 @@ + + + + + name + Symbol List: Types + scope + storage.type.user-defined.ocaml + settings + + showInSymbolList + 1 + symbolTransformation + s/^/type: / + + uuid + 3605208D-9963-4F10-A4BC-C0EF15B84BCF + + diff --git a/OCaml/Symbol List%3A Types.tmPreferences.cache b/OCaml/Symbol List%3A Types.tmPreferences.cache new file mode 100644 index 0000000..8b92896 Binary files /dev/null and b/OCaml/Symbol List%3A Types.tmPreferences.cache differ diff --git a/OCaml/Symbol List%3A Variants.tmPreferences b/OCaml/Symbol List%3A Variants.tmPreferences new file mode 100644 index 0000000..2137bb2 --- /dev/null +++ b/OCaml/Symbol List%3A Variants.tmPreferences @@ -0,0 +1,17 @@ + + + + + name + Symbol List: Variants + scope + entity.name.type.variant.ocaml | entity.name.type.variant.polymorphic.ocaml + settings + + showInSymbolList + 0 + + uuid + A40FC961-E731-454E-AEB3-0B7307EF17E0 + + diff --git a/OCaml/Symbol List%3A Variants.tmPreferences.cache b/OCaml/Symbol List%3A Variants.tmPreferences.cache new file mode 100644 index 0000000..7c857d3 Binary files /dev/null and b/OCaml/Symbol List%3A Variants.tmPreferences.cache differ diff --git a/OCaml/Symbol List_ Classes.tmPreferences b/OCaml/Symbol List_ Classes.tmPreferences new file mode 100644 index 0000000..32c362f --- /dev/null +++ b/OCaml/Symbol List_ Classes.tmPreferences @@ -0,0 +1,19 @@ + + + + + name + Symbol List: Classes + scope + entity.name.type.class.ocaml + settings + + showInSymbolList + 1 + symbolTransformation + s/^/class: / + + uuid + 72C6F9CD-7D1F-4956-8451-22F35339ABAB + + diff --git a/OCaml/Symbol List_ Classes.tmPreferences.cache b/OCaml/Symbol List_ Classes.tmPreferences.cache new file mode 100644 index 0000000..f2bdc8a Binary files /dev/null and b/OCaml/Symbol List_ Classes.tmPreferences.cache differ diff --git a/OCaml/Symbol List_ Exceptions.tmPreferences b/OCaml/Symbol List_ Exceptions.tmPreferences new file mode 100644 index 0000000..6b93e8a --- /dev/null +++ b/OCaml/Symbol List_ Exceptions.tmPreferences @@ -0,0 +1,19 @@ + + + + + name + Symbol List: Exceptions + scope + entity.name.type.exception.ocaml + settings + + showInSymbolList + 1 + symbolTransformation + s/^/exception: / + + uuid + 5852E31D-A343-4FD5-953A-76996068C515 + + diff --git a/OCaml/Symbol List_ Exceptions.tmPreferences.cache b/OCaml/Symbol List_ Exceptions.tmPreferences.cache new file mode 100644 index 0000000..dfb295b Binary files /dev/null and b/OCaml/Symbol List_ Exceptions.tmPreferences.cache differ diff --git a/OCaml/Symbol List_ Ocamllex pattern definition.tmPreferences b/OCaml/Symbol List_ Ocamllex pattern definition.tmPreferences new file mode 100644 index 0000000..abec0ea --- /dev/null +++ b/OCaml/Symbol List_ Ocamllex pattern definition.tmPreferences @@ -0,0 +1,19 @@ + + + + + name + Symbol List: Ocamllex pattern definition + scope + entity.name.type.pattern.stupid-goddamn-hack.ocamllex + settings + + showInSymbolList + 1 + symbolTransformation + s/^/pattern: / + + uuid + 52F126D8-181E-4A22-ABD4-831550FF28AD + + diff --git a/OCaml/Symbol List_ Ocamllex pattern definition.tmPreferences.cache b/OCaml/Symbol List_ Ocamllex pattern definition.tmPreferences.cache new file mode 100644 index 0000000..18650ad Binary files /dev/null and b/OCaml/Symbol List_ Ocamllex pattern definition.tmPreferences.cache differ diff --git a/OCaml/Symbol List_ Ocamllex pattern references.tmPreferences b/OCaml/Symbol List_ Ocamllex pattern references.tmPreferences new file mode 100644 index 0000000..0fba63c --- /dev/null +++ b/OCaml/Symbol List_ Ocamllex pattern references.tmPreferences @@ -0,0 +1,17 @@ + + + + + name + Symbol List: Ocamllex pattern references + scope + entity.name.type.pattern.reference.stupid-goddamn-hack.ocamllex + settings + + showInSymbolList + 0 + + uuid + 4CCB042A-DC5F-4D03-8BD5-96B91397A458 + + diff --git a/OCaml/Symbol List_ Ocamllex pattern references.tmPreferences.cache b/OCaml/Symbol List_ Ocamllex pattern references.tmPreferences.cache new file mode 100644 index 0000000..d93c73c Binary files /dev/null and b/OCaml/Symbol List_ Ocamllex pattern references.tmPreferences.cache differ diff --git a/OCaml/Symbol List_ Ocamllex rules.tmPreferences b/OCaml/Symbol List_ Ocamllex rules.tmPreferences new file mode 100644 index 0000000..3a747ca --- /dev/null +++ b/OCaml/Symbol List_ Ocamllex rules.tmPreferences @@ -0,0 +1,19 @@ + + + + + name + Symbol List: Ocamllex rules + scope + entity.name.function.entrypoint.ocamllex + settings + + showInSymbolList + 1 + symbolTransformation + s/^/entrypoint: / + + uuid + B13DEBC9-0853-42D6-882E-E38F213BD337 + + diff --git a/OCaml/Symbol List_ Ocamllex rules.tmPreferences.cache b/OCaml/Symbol List_ Ocamllex rules.tmPreferences.cache new file mode 100644 index 0000000..f58b2e5 Binary files /dev/null and b/OCaml/Symbol List_ Ocamllex rules.tmPreferences.cache differ diff --git a/OCaml/Symbol List_ Ocamlyacc non-terminal definition.tmPreferences b/OCaml/Symbol List_ Ocamlyacc non-terminal definition.tmPreferences new file mode 100644 index 0000000..9ee4f91 --- /dev/null +++ b/OCaml/Symbol List_ Ocamlyacc non-terminal definition.tmPreferences @@ -0,0 +1,19 @@ + + + + + name + Symbol List: Ocamlyacc non-terminal definition + scope + entity.name.function.non-terminal.ocamlyacc + settings + + showInSymbolList + 1 + symbolTransformation + s/^/non-terminal: / + + uuid + 2169BE86-FF3F-42AD-A396-82905FBF336A + + diff --git a/OCaml/Symbol List_ Ocamlyacc non-terminal definition.tmPreferences.cache b/OCaml/Symbol List_ Ocamlyacc non-terminal definition.tmPreferences.cache new file mode 100644 index 0000000..cc3d93b Binary files /dev/null and b/OCaml/Symbol List_ Ocamlyacc non-terminal definition.tmPreferences.cache differ diff --git a/OCaml/Symbol List_ Ocamlyacc non-terminal reference.tmPreferences b/OCaml/Symbol List_ Ocamlyacc non-terminal reference.tmPreferences new file mode 100644 index 0000000..73ca99d --- /dev/null +++ b/OCaml/Symbol List_ Ocamlyacc non-terminal reference.tmPreferences @@ -0,0 +1,17 @@ + + + + + name + Symbol List: Ocamlyacc non-terminal reference + scope + entity.name.function.non-terminal.reference.ocamlyacc + settings + + showInSymbolList + 0 + + uuid + AC8A21BC-AE1F-4213-AFC1-29EB62E72ABE + + diff --git a/OCaml/Symbol List_ Ocamlyacc non-terminal reference.tmPreferences.cache b/OCaml/Symbol List_ Ocamlyacc non-terminal reference.tmPreferences.cache new file mode 100644 index 0000000..3055d5c Binary files /dev/null and b/OCaml/Symbol List_ Ocamlyacc non-terminal reference.tmPreferences.cache differ diff --git a/OCaml/Symbol List_ Ocamlyacc token definition.tmPreferences b/OCaml/Symbol List_ Ocamlyacc token definition.tmPreferences new file mode 100644 index 0000000..287a3d1 --- /dev/null +++ b/OCaml/Symbol List_ Ocamlyacc token definition.tmPreferences @@ -0,0 +1,19 @@ + + + + + name + Symbol List: Ocamlyacc token definition + scope + entity.name.type.token.ocamlyacc + settings + + showInSymbolList + 1 + symbolTransformation + s/^/token: / + + uuid + 018D26CA-0A0B-492A-B18D-25F518C7AE09 + + diff --git a/OCaml/Symbol List_ Ocamlyacc token definition.tmPreferences.cache b/OCaml/Symbol List_ Ocamlyacc token definition.tmPreferences.cache new file mode 100644 index 0000000..a673453 Binary files /dev/null and b/OCaml/Symbol List_ Ocamlyacc token definition.tmPreferences.cache differ diff --git a/OCaml/Symbol List_ Ocamlyacc token reference.tmPreferences b/OCaml/Symbol List_ Ocamlyacc token reference.tmPreferences new file mode 100644 index 0000000..e8eae9e --- /dev/null +++ b/OCaml/Symbol List_ Ocamlyacc token reference.tmPreferences @@ -0,0 +1,17 @@ + + + + + name + Symbol List: Ocamlyacc token reference + scope + entity.name.type.token.reference.ocamlyacc + settings + + showInSymbolList + 0 + + uuid + 1CB2410B-4D16-48C6-96B8-D3580ECD280D + + diff --git a/OCaml/Symbol List_ Ocamlyacc token reference.tmPreferences.cache b/OCaml/Symbol List_ Ocamlyacc token reference.tmPreferences.cache new file mode 100644 index 0000000..820e77a Binary files /dev/null and b/OCaml/Symbol List_ Ocamlyacc token reference.tmPreferences.cache differ diff --git a/OCaml/Symbol List_ Types.tmPreferences b/OCaml/Symbol List_ Types.tmPreferences new file mode 100644 index 0000000..365eebd --- /dev/null +++ b/OCaml/Symbol List_ Types.tmPreferences @@ -0,0 +1,19 @@ + + + + + name + Symbol List: Types + scope + storage.type.user-defined.ocaml + settings + + showInSymbolList + 1 + symbolTransformation + s/^/type: / + + uuid + 3605208D-9963-4F10-A4BC-C0EF15B84BCF + + diff --git a/OCaml/Symbol List_ Types.tmPreferences.cache b/OCaml/Symbol List_ Types.tmPreferences.cache new file mode 100644 index 0000000..8b92896 Binary files /dev/null and b/OCaml/Symbol List_ Types.tmPreferences.cache differ diff --git a/OCaml/Symbol List_ Variants.tmPreferences b/OCaml/Symbol List_ Variants.tmPreferences new file mode 100644 index 0000000..2137bb2 --- /dev/null +++ b/OCaml/Symbol List_ Variants.tmPreferences @@ -0,0 +1,17 @@ + + + + + name + Symbol List: Variants + scope + entity.name.type.variant.ocaml | entity.name.type.variant.polymorphic.ocaml + settings + + showInSymbolList + 0 + + uuid + A40FC961-E731-454E-AEB3-0B7307EF17E0 + + diff --git a/OCaml/Symbol List_ Variants.tmPreferences.cache b/OCaml/Symbol List_ Variants.tmPreferences.cache new file mode 100644 index 0000000..7c857d3 Binary files /dev/null and b/OCaml/Symbol List_ Variants.tmPreferences.cache differ diff --git a/OCaml/While-Loop.sublime-snippet b/OCaml/While-Loop.sublime-snippet new file mode 100644 index 0000000..9f5c836 --- /dev/null +++ b/OCaml/While-Loop.sublime-snippet @@ -0,0 +1,8 @@ + + + while + source.ocaml + while loop + diff --git a/OCaml/begin.sublime-snippet b/OCaml/begin.sublime-snippet new file mode 100644 index 0000000..7e9f98d --- /dev/null +++ b/OCaml/begin.sublime-snippet @@ -0,0 +1,8 @@ + + + begin + source.ocaml + begin + diff --git a/OCaml/camlp4.tmLanguage b/OCaml/camlp4.tmLanguage new file mode 100644 index 0000000..a3d8378 --- /dev/null +++ b/OCaml/camlp4.tmLanguage @@ -0,0 +1,102 @@ + + + + + foldingStartMarker + (\bEXTEND\B) + foldingStopMarker + (\bEND\b) + name + camlp4 + patterns + + + begin + (\[<)(?=.*?>]) + beginCaptures + + 1 + + name + punctuation.definition.camlp4-stream.ocaml + + + end + (?=>]) + endCaptures + + 1 + + name + punctuation.definition.camlp4-stream.ocaml + + + name + meta.camlp4-stream.ocaml + patterns + + + include + #camlpppp-streams + + + + + match + \[<|>] + name + punctuation.definition.camlp4-stream.ocaml + + + match + \bparser\b|<(<|:)|>>|\$(:|\${0,1}) + name + keyword.other.camlp4.ocaml + + + repository + + camlpppp-streams + + patterns + + + begin + (') + beginCaptures + + 1 + + name + punctuation.definition.camlp4.simple-element.ocaml + + + end + (;)(?=\s*')|(?=\s*>]) + endCaptures + + 1 + + name + punctuation.separator.camlp4.ocaml + + + name + meta.camlp4-stream.element.ocaml + patterns + + + include + source.ocaml + + + + + + + scopeName + source.camlp4.ocaml + uuid + 37538B6B-CEFA-4DAE-B1E4-1218DB82B37F + + diff --git a/OCaml/camlp4.tmLanguage.cache b/OCaml/camlp4.tmLanguage.cache new file mode 100644 index 0000000..0246596 Binary files /dev/null and b/OCaml/camlp4.tmLanguage.cache differ diff --git a/OCaml/class.sublime-snippet b/OCaml/class.sublime-snippet new file mode 100644 index 0000000..1bcc4fc --- /dev/null +++ b/OCaml/class.sublime-snippet @@ -0,0 +1,9 @@ + + + class + source.ocaml + class + diff --git a/OCaml/fun.sublime-snippet b/OCaml/fun.sublime-snippet new file mode 100644 index 0000000..05ba708 --- /dev/null +++ b/OCaml/fun.sublime-snippet @@ -0,0 +1,6 @@ + + ${2:body})]]> + fun + source.ocaml + function + diff --git a/OCaml/func.sublime-snippet b/OCaml/func.sublime-snippet new file mode 100644 index 0000000..986d1ab --- /dev/null +++ b/OCaml/func.sublime-snippet @@ -0,0 +1,8 @@ + + ${2:expr1} +| ${3:patt2} -> ${4:expr2})]]> + func + source.ocaml + function alt + diff --git a/OCaml/function-label.sublime-snippet b/OCaml/function-label.sublime-snippet new file mode 100644 index 0000000..86c9dbb --- /dev/null +++ b/OCaml/function-label.sublime-snippet @@ -0,0 +1,6 @@ + + ${2:body})]]> + ~f + source.ocaml + function label + diff --git a/OCaml/let-in.sublime-snippet b/OCaml/let-in.sublime-snippet new file mode 100644 index 0000000..3646ab4 --- /dev/null +++ b/OCaml/let-in.sublime-snippet @@ -0,0 +1,6 @@ + + + lin + source.ocaml + let in + diff --git a/OCaml/let.sublime-snippet b/OCaml/let.sublime-snippet new file mode 100644 index 0000000..df2b2e0 --- /dev/null +++ b/OCaml/let.sublime-snippet @@ -0,0 +1,6 @@ + + + let + source.ocaml + let + diff --git a/OCaml/match-pattern.sublime-snippet b/OCaml/match-pattern.sublime-snippet new file mode 100644 index 0000000..f3e7d41 --- /dev/null +++ b/OCaml/match-pattern.sublime-snippet @@ -0,0 +1,6 @@ + + $0]]> + | + source.ocaml + match pattern + diff --git a/OCaml/match.sublime-snippet b/OCaml/match.sublime-snippet new file mode 100644 index 0000000..05f7647 --- /dev/null +++ b/OCaml/match.sublime-snippet @@ -0,0 +1,8 @@ + + ${3:expr} +| ${4:_} -> ${5:expr2}]]> + match + source.ocaml + match + diff --git a/OCaml/method-(method).sublime-snippet b/OCaml/method-(method).sublime-snippet new file mode 100644 index 0000000..37c46cc --- /dev/null +++ b/OCaml/method-(method).sublime-snippet @@ -0,0 +1,6 @@ + + + method + source.ocaml + method + diff --git a/OCaml/module-signature.sublime-snippet b/OCaml/module-signature.sublime-snippet new file mode 100644 index 0000000..45002e7 --- /dev/null +++ b/OCaml/module-signature.sublime-snippet @@ -0,0 +1,8 @@ + + + sig + source.ocaml + module signature + diff --git a/OCaml/module-type.sublime-snippet b/OCaml/module-type.sublime-snippet new file mode 100644 index 0000000..1118b33 --- /dev/null +++ b/OCaml/module-type.sublime-snippet @@ -0,0 +1,8 @@ + + + mtype + source.ocaml + module type + diff --git a/OCaml/module.sublime-snippet b/OCaml/module.sublime-snippet new file mode 100644 index 0000000..3fe4aa8 --- /dev/null +++ b/OCaml/module.sublime-snippet @@ -0,0 +1,8 @@ + + + module + source.ocaml + module + diff --git a/OCaml/try.sublime-snippet b/OCaml/try.sublime-snippet new file mode 100644 index 0000000..89009f4 --- /dev/null +++ b/OCaml/try.sublime-snippet @@ -0,0 +1,9 @@ + + failwith "Unknown"]]> + try + source.ocaml + try + diff --git a/OCaml/type-(type).sublime-snippet b/OCaml/type-(type).sublime-snippet new file mode 100644 index 0000000..bec2b01 --- /dev/null +++ b/OCaml/type-(type).sublime-snippet @@ -0,0 +1,6 @@ + + + type + source.ocaml + type + diff --git a/OCaml/untitled.sublime-snippet b/OCaml/untitled.sublime-snippet new file mode 100644 index 0000000..e313ffa --- /dev/null +++ b/OCaml/untitled.sublime-snippet @@ -0,0 +1,8 @@ + + + $0 + ) ())]]> + thread + source.ocaml + untitled + diff --git a/Objective-C/Objective-C++.tmLanguage b/Objective-C/Objective-C++.tmLanguage new file mode 100644 index 0000000..7140930 --- /dev/null +++ b/Objective-C/Objective-C++.tmLanguage @@ -0,0 +1,39 @@ + + + + + fileTypes + + mm + M + h + + foldingStartMarker + (?x) + /\*\*(?!\*) + |^(?![^{]*?//|[^{]*?/\*(?!.*?\*/.*?\{)).*?\{\s*($|//|/\*(?!.*?\*/.*\S)) + |^@(interface|protocol|implementation)\b + + foldingStopMarker + (?<!\*)\*\*/|^\s*\}|^@end\b + keyEquivalent + ^~O + name + Objective-C++ + patterns + + + include + source.c++ + + + include + source.objc + + + scopeName + source.objc++ + uuid + FDAB1813-6B1C-11D9-BCAC-000D93589AF6 + + diff --git a/Objective-C/Objective-C++.tmLanguage.cache b/Objective-C/Objective-C++.tmLanguage.cache new file mode 100644 index 0000000..f9c63d6 Binary files /dev/null and b/Objective-C/Objective-C++.tmLanguage.cache differ diff --git a/Objective-C/Objective-C.tmLanguage b/Objective-C/Objective-C.tmLanguage new file mode 100644 index 0000000..cb6a86c --- /dev/null +++ b/Objective-C/Objective-C.tmLanguage @@ -0,0 +1,1511 @@ + + + + + fileTypes + + m + h + + foldingStartMarker + (?x) + /\*\*(?!\*) + |^(?![^{]*?//|[^{]*?/\*(?!.*?\*/.*?\{)).*?\{\s*($|//|/\*(?!.*?\*/.*\S)) + |^@(interface|protocol|implementation)\b + + foldingStopMarker + (?<!\*)\*\*/|^\s*\}|^@end\b + keyEquivalent + ^~O + name + Objective-C + patterns + + + begin + ((@)(interface|protocol))(?!.+;)\s+([A-Za-z_][A-Za-z0-9_]*)\s*((:)(?:\s*)([A-Za-z][A-Za-z0-9]*))?(\s|\n)? + captures + + 1 + + name + storage.type.objc + + 2 + + name + punctuation.definition.storage.type.objc + + 4 + + name + entity.name.type.objc + + 6 + + name + punctuation.definition.entity.other.inherited-class.objc + + 7 + + name + entity.other.inherited-class.objc + + 8 + + name + meta.divider.objc + + 9 + + name + meta.inherited-class.objc + + + contentName + meta.scope.interface.objc + end + ((@)end)\b + name + meta.interface-or-protocol.objc + patterns + + + include + #interface_innards + + + + + begin + ((@)(implementation))\s+([A-Za-z_][A-Za-z0-9_]*)\s*(?::\s*([A-Za-z][A-Za-z0-9]*))? + captures + + 1 + + name + storage.type.objc + + 2 + + name + punctuation.definition.storage.type.objc + + 4 + + name + entity.name.type.objc + + 5 + + name + entity.other.inherited-class.objc + + + contentName + meta.scope.implementation.objc + end + ((@)end)\b + name + meta.implementation.objc + patterns + + + include + #implementation_innards + + + + + begin + @" + beginCaptures + + 0 + + name + punctuation.definition.string.begin.objc + + + end + " + endCaptures + + 0 + + name + punctuation.definition.string.end.objc + + + name + string.quoted.double.objc + patterns + + + match + \\(\\|[abefnrtv'"?]|[0-3]\d{,2}|[4-7]\d?|x[a-zA-Z0-9]+) + name + constant.character.escape.objc + + + match + \\. + name + invalid.illegal.unknown-escape.objc + + + + + begin + \b(id)\s*(?=<) + beginCaptures + + 1 + + name + storage.type.objc + + + end + (?<=>) + name + meta.id-with-protocol.objc + patterns + + + include + #protocol_list + + + + + match + \b(NS_DURING|NS_HANDLER|NS_ENDHANDLER)\b + name + keyword.control.macro.objc + + + captures + + 1 + + name + punctuation.definition.keyword.objc + + + match + (@)(try|catch|finally|throw)\b + name + keyword.control.exception.objc + + + captures + + 1 + + name + punctuation.definition.keyword.objc + + + match + (@)(synchronized)\b + name + keyword.control.synchronize.objc + + + captures + + 1 + + name + punctuation.definition.keyword.objc + + + match + (@)(defs|encode)\b + name + keyword.other.objc + + + match + \bid\b(\s|\n)? + name + storage.type.id.objc + + + match + \b(IBOutlet|IBAction|BOOL|SEL|id|unichar|IMP|Class)\b + name + storage.type.objc + + + captures + + 1 + + name + punctuation.definition.storage.type.objc + + + match + (@)(class|protocol)\b + name + storage.type.objc + + + begin + ((@)selector)\s*(\() + beginCaptures + + 1 + + name + storage.type.objc + + 2 + + name + punctuation.definition.storage.type.objc + + 3 + + name + punctuation.definition.storage.type.objc + + + contentName + meta.selector.method-name.objc + end + (\)) + endCaptures + + 1 + + name + punctuation.definition.storage.type.objc + + + name + meta.selector.objc + patterns + + + captures + + 1 + + name + punctuation.separator.arguments.objc + + + match + \b(?:[a-zA-Z_:][\w]*)+ + name + support.function.any-method.name-of-parameter.objc + + + + + captures + + 1 + + name + punctuation.definition.storage.modifier.objc + + + match + (@)(synchronized|public|private|protected)\b + name + storage.modifier.objc + + + match + \b(YES|NO|Nil|nil)\b + name + constant.language.objc + + + match + \bNSApp\b + name + support.variable.foundation + + + captures + + 1 + + name + punctuation.whitespace.support.function.cocoa.leopard + + 2 + + name + support.function.cocoa.leopard + + + match + (\s*)\b(NS(Rect(ToCGRect|FromCGRect)|MakeCollectable|S(tringFromProtocol|ize(ToCGSize|FromCGSize))|Draw(NinePartImage|ThreePartImage)|P(oint(ToCGPoint|FromCGPoint)|rotocolFromString)|EventMaskFromType|Value))\b + + + captures + + 1 + + name + punctuation.whitespace.support.function.leading.cocoa + + 2 + + name + support.function.cocoa + + + match + (\s*)\b(NS(R(ound(DownToMultipleOfPageSize|UpToMultipleOfPageSize)|un(CriticalAlertPanel(RelativeToWindow)?|InformationalAlertPanel(RelativeToWindow)?|AlertPanel(RelativeToWindow)?)|e(set(MapTable|HashTable)|c(ycleZone|t(Clip(List)?|F(ill(UsingOperation|List(UsingOperation|With(Grays|Colors(UsingOperation)?))?)?|romString))|ordAllocationEvent)|turnAddress|leaseAlertPanel|a(dPixel|l(MemoryAvailable|locateCollectable))|gisterServicesProvider)|angeFromString)|Get(SizeAndAlignment|CriticalAlertPanel|InformationalAlertPanel|UncaughtExceptionHandler|FileType(s)?|WindowServerMemory|AlertPanel)|M(i(n(X|Y)|d(X|Y))|ouseInRect|a(p(Remove|Get|Member|Insert(IfAbsent|KnownAbsent)?)|ke(R(ect|ange)|Size|Point)|x(Range|X|Y)))|B(itsPer(SampleFromDepth|PixelFromDepth)|e(stDepth|ep|gin(CriticalAlertSheet|InformationalAlertSheet|AlertSheet)))|S(ho(uldRetainWithZone|w(sServicesMenuItem|AnimationEffect))|tringFrom(R(ect|ange)|MapTable|S(ize|elector)|HashTable|Class|Point)|izeFromString|e(t(ShowsServicesMenuItem|ZoneName|UncaughtExceptionHandler|FocusRingStyle)|lectorFromString|archPathForDirectoriesInDomains)|wap(Big(ShortToHost|IntToHost|DoubleToHost|FloatToHost|Long(ToHost|LongToHost))|Short|Host(ShortTo(Big|Little)|IntTo(Big|Little)|DoubleTo(Big|Little)|FloatTo(Big|Little)|Long(To(Big|Little)|LongTo(Big|Little)))|Int|Double|Float|L(ittle(ShortToHost|IntToHost|DoubleToHost|FloatToHost|Long(ToHost|LongToHost))|ong(Long)?)))|H(ighlightRect|o(stByteOrder|meDirectory(ForUser)?)|eight|ash(Remove|Get|Insert(IfAbsent|KnownAbsent)?)|FSType(CodeFromFileType|OfFile))|N(umberOfColorComponents|ext(MapEnumeratorPair|HashEnumeratorItem))|C(o(n(tainsRect|vert(GlyphsToPackedGlyphs|Swapped(DoubleToHost|FloatToHost)|Host(DoubleToSwapped|FloatToSwapped)))|unt(MapTable|HashTable|Frames|Windows(ForContext)?)|py(M(emoryPages|apTableWithZone)|Bits|HashTableWithZone|Object)|lorSpaceFromDepth|mpare(MapTables|HashTables))|lassFromString|reate(MapTable(WithZone)?|HashTable(WithZone)?|Zone|File(namePboardType|ContentsPboardType)))|TemporaryDirectory|I(s(ControllerMarker|EmptyRect|FreedObject)|n(setRect|crementExtraRefCount|te(r(sect(sRect|ionR(ect|ange))|faceStyleForKey)|gralRect)))|Zone(Realloc|Malloc|Name|Calloc|Fr(omPointer|ee))|O(penStepRootDirectory|ffsetRect)|D(i(sableScreenUpdates|videRect)|ottedFrameRect|e(c(imal(Round|Multiply|S(tring|ubtract)|Normalize|Co(py|mpa(ct|re))|IsNotANumber|Divide|Power|Add)|rementExtraRefCountWasZero)|faultMallocZone|allocate(MemoryPages|Object))|raw(Gr(oove|ayBezel)|B(itmap|utton)|ColorTiledRects|TiledRects|DarkBezel|W(hiteBezel|indowBackground)|LightBezel))|U(serName|n(ionR(ect|ange)|registerServicesProvider)|pdateDynamicServices)|Java(Bundle(Setup|Cleanup)|Setup(VirtualMachine)?|Needs(ToLoadClasses|VirtualMachine)|ClassesF(orBundle|romPath)|ObjectNamedInPath|ProvidesClasses)|P(oint(InRect|FromString)|erformService|lanarFromDepth|ageSize)|E(n(d(MapTableEnumeration|HashTableEnumeration)|umerate(MapTable|HashTable)|ableScreenUpdates)|qual(R(ects|anges)|Sizes|Points)|raseRect|xtraRefCount)|F(ileTypeForHFSTypeCode|ullUserName|r(ee(MapTable|HashTable)|ame(Rect(WithWidth(UsingOperation)?)?|Address)))|Wi(ndowList(ForContext)?|dth)|Lo(cationInRange|g(v|PageSize)?)|A(ccessibility(R(oleDescription(ForUIElement)?|aiseBadArgumentException)|Unignored(Children(ForOnlyChild)?|Descendant|Ancestor)|PostNotification|ActionDescription)|pplication(Main|Load)|vailableWindowDepths|ll(MapTable(Values|Keys)|HashTableObjects|ocate(MemoryPages|Collectable|Object)))))\b + + + match + \bNS(RuleEditor|G(arbageCollector|radient)|MapTable|HashTable|Co(ndition|llectionView(Item)?)|T(oolbarItemGroup|extInputClient|r(eeNode|ackingArea))|InvocationOperation|Operation(Queue)?|D(ictionaryController|ockTile)|P(ointer(Functions|Array)|athC(o(ntrol(Delegate)?|mponentCell)|ell(Delegate)?)|r(intPanelAccessorizing|edicateEditor(RowTemplate)?))|ViewController|FastEnumeration|Animat(ionContext|ablePropertyContainer))\b + name + support.class.cocoa.leopard + + + match + \bNS(R(u(nLoop|ler(Marker|View))|e(sponder|cursiveLock|lativeSpecifier)|an(domSpecifier|geSpecifier))|G(etCommand|lyph(Generator|Storage|Info)|raphicsContext)|XML(Node|D(ocument|TD(Node)?)|Parser|Element)|M(iddleSpecifier|ov(ie(View)?|eCommand)|utable(S(tring|et)|C(haracterSet|opying)|IndexSet|D(ictionary|ata)|URLRequest|ParagraphStyle|A(ttributedString|rray))|e(ssagePort(NameServer)?|nu(Item(Cell)?|View)?|t(hodSignature|adata(Item|Query(ResultGroup|AttributeValueTuple)?)))|a(ch(BootstrapServer|Port)|trix))|B(itmapImageRep|ox|u(ndle|tton(Cell)?)|ezierPath|rowser(Cell)?)|S(hadow|c(anner|r(ipt(SuiteRegistry|C(o(ercionHandler|mmand(Description)?)|lassDescription)|ObjectSpecifier|ExecutionContext|WhoseTest)|oll(er|View)|een))|t(epper(Cell)?|atus(Bar|Item)|r(ing|eam))|imple(HorizontalTypesetter|CString)|o(cketPort(NameServer)?|und|rtDescriptor)|p(e(cifierTest|ech(Recognizer|Synthesizer)|ll(Server|Checker))|litView)|e(cureTextField(Cell)?|t(Command)?|archField(Cell)?|rializer|gmentedC(ontrol|ell))|lider(Cell)?|avePanel)|H(ost|TTP(Cookie(Storage)?|URLResponse)|elpManager)|N(ib(Con(nector|trolConnector)|OutletConnector)?|otification(Center|Queue)?|u(ll|mber(Formatter)?)|etService(Browser)?|ameSpecifier)|C(ha(ngeSpelling|racterSet)|o(n(stantString|nection|trol(ler)?|ditionLock)|d(ing|er)|unt(Command|edSet)|pying|lor(Space|P(ick(ing(Custom|Default)|er)|anel)|Well|List)?|m(p(oundPredicate|arisonPredicate)|boBox(Cell)?))|u(stomImageRep|rsor)|IImageRep|ell|l(ipView|o(seCommand|neCommand)|assDescription)|a(ched(ImageRep|URLResponse)|lendar(Date)?)|reateCommand)|T(hread|ypesetter|ime(Zone|r)|o(olbar(Item(Validations)?)?|kenField(Cell)?)|ext(Block|Storage|Container|Tab(le(Block)?)?|Input|View|Field(Cell)?|List|Attachment(Cell)?)?|a(sk|b(le(Header(Cell|View)|Column|View)|View(Item)?))|reeController)|I(n(dex(S(pecifier|et)|Path)|put(Manager|S(tream|erv(iceProvider|er(MouseTracker)?)))|vocation)|gnoreMisspelledWords|mage(Rep|Cell|View)?)|O(ut(putStream|lineView)|pen(GL(Context|Pixel(Buffer|Format)|View)|Panel)|bj(CTypeSerializationCallBack|ect(Controller)?))|D(i(st(antObject(Request)?|ributed(NotificationCenter|Lock))|ctionary|rectoryEnumerator)|ocument(Controller)?|e(serializer|cimalNumber(Behaviors|Handler)?|leteCommand)|at(e(Components|Picker(Cell)?|Formatter)?|a)|ra(wer|ggingInfo))|U(ser(InterfaceValidations|Defaults(Controller)?)|RL(Re(sponse|quest)|Handle(Client)?|C(onnection|ache|redential(Storage)?)|Download(Delegate)?|Prot(ocol(Client)?|ectionSpace)|AuthenticationChallenge(Sender)?)?|n(iqueIDSpecifier|doManager|archiver))|P(ipe|o(sitionalSpecifier|pUpButton(Cell)?|rt(Message|NameServer|Coder)?)|ICTImageRep|ersistentDocument|DFImageRep|a(steboard|nel|ragraphStyle|geLayout)|r(int(Info|er|Operation|Panel)|o(cessInfo|tocolChecker|perty(Specifier|ListSerialization)|gressIndicator|xy)|edicate))|E(numerator|vent|PSImageRep|rror|x(ception|istsCommand|pression))|V(iew(Animation)?|al(idated(ToobarItem|UserInterfaceItem)|ue(Transformer)?))|Keyed(Unarchiver|Archiver)|Qui(ckDrawView|tCommand)|F(ile(Manager|Handle|Wrapper)|o(nt(Manager|Descriptor|Panel)?|rm(Cell|atter)))|W(hoseSpecifier|indow(Controller)?|orkspace)|L(o(c(k(ing)?|ale)|gicalTest)|evelIndicator(Cell)?|ayoutManager)|A(ssertionHandler|nimation|ctionCell|ttributedString|utoreleasePool|TSTypesetter|ppl(ication|e(Script|Event(Manager|Descriptor)))|ffineTransform|lert|r(chiver|ray(Controller)?)))\b + name + support.class.cocoa + + + match + \bNS(R(oundingMode|ule(Editor(RowType|NestingMode)|rOrientation)|e(questUserAttentionType|lativePosition))|G(lyphInscription|radientDrawingOptions)|XML(NodeKind|D(ocumentContentKind|TDNodeKind)|ParserError)|M(ultibyteGlyphPacking|apTableOptions)|B(itmapFormat|oxType|ezierPathElement|ackgroundStyle|rowserDropOperation)|S(tr(ing(CompareOptions|DrawingOptions|EncodingConversionOptions)|eam(Status|Event))|p(eechBoundary|litViewDividerStyle)|e(archPathD(irectory|omainMask)|gmentS(tyle|witchTracking))|liderType|aveOptions)|H(TTPCookieAcceptPolicy|ashTableOptions)|N(otification(SuspensionBehavior|Coalescing)|umberFormatter(RoundingMode|Behavior|Style|PadPosition)|etService(sError|Options))|C(haracterCollection|o(lor(RenderingIntent|SpaceModel|PanelMode)|mp(oundPredicateType|arisonPredicateModifier))|ellStateValue|al(culationError|endarUnit))|T(ypesetterControlCharacterAction|imeZoneNameStyle|e(stComparisonOperation|xt(Block(Dimension|V(erticalAlignment|alueType)|Layer)|TableLayoutAlgorithm|FieldBezelStyle))|ableView(SelectionHighlightStyle|ColumnAutoresizingStyle)|rackingAreaOptions)|I(n(sertionPosition|te(rfaceStyle|ger))|mage(RepLoadStatus|Scaling|CacheMode|FrameStyle|LoadStatus|Alignment))|Ope(nGLPixelFormatAttribute|rationQueuePriority)|Date(Picker(Mode|Style)|Formatter(Behavior|Style))|U(RL(RequestCachePolicy|HandleStatus|C(acheStoragePolicy|redentialPersistence))|Integer)|P(o(stingStyle|int(ingDeviceType|erFunctionsOptions)|pUpArrowPosition)|athStyle|r(int(ing(Orientation|PaginationMode)|erTableStatus|PanelOptions)|opertyList(MutabilityOptions|Format)|edicateOperatorType))|ExpressionType|KeyValue(SetMutationKind|Change)|QTMovieLoopMode|F(indPanel(SubstringMatchType|Action)|o(nt(RenderingMode|FamilyClass)|cusRingPlacement))|W(hoseSubelementIdentifier|ind(ingRule|ow(B(utton|ackingLocation)|SharingType|CollectionBehavior)))|L(ine(MovementDirection|SweepDirection|CapStyle|JoinStyle)|evelIndicatorStyle)|Animation(BlockingMode|Curve))\b + name + support.type.cocoa.leopard + + + match + \bC(I(Sampler|Co(ntext|lor)|Image(Accumulator)?|PlugIn(Registration)?|Vector|Kernel|Filter(Generator|Shape)?)|A(Renderer|MediaTiming(Function)?|BasicAnimation|ScrollLayer|Constraint(LayoutManager)?|T(iledLayer|extLayer|rans(ition|action))|OpenGLLayer|PropertyAnimation|KeyframeAnimation|Layer|A(nimation(Group)?|ction)))\b + name + support.class.quartz + + + match + \bC(G(Float|Point|Size|Rect)|IFormat|AConstraintAttribute)\b + name + support.type.quartz + + + match + \bNS(R(ect(Edge)?|ange)|G(lyph(Relation|LayoutMode)?|radientType)|M(odalSession|a(trixMode|p(Table|Enumerator)))|B(itmapImageFileType|orderType|uttonType|ezelStyle|ackingStoreType|rowserColumnResizingType)|S(cr(oll(er(Part|Arrow)|ArrowPosition)|eenAuxiliaryOpaque)|tringEncoding|ize|ocketNativeHandle|election(Granularity|Direction|Affinity)|wapped(Double|Float)|aveOperationType)|Ha(sh(Table|Enumerator)|ndler(2)?)|C(o(ntrol(Size|Tint)|mp(ositingOperation|arisonResult))|ell(State|Type|ImagePosition|Attribute))|T(hreadPrivate|ypesetterGlyphInfo|i(ckMarkPosition|tlePosition|meInterval)|o(ol(TipTag|bar(SizeMode|DisplayMode))|kenStyle)|IFFCompression|ext(TabType|Alignment)|ab(State|leViewDropOperation|ViewType)|rackingRectTag)|ImageInterpolation|Zone|OpenGL(ContextAuxiliary|PixelFormatAuxiliary)|D(ocumentChangeType|atePickerElementFlags|ra(werState|gOperation))|UsableScrollerParts|P(oint|r(intingPageOrder|ogressIndicator(Style|Th(ickness|readInfo))))|EventType|KeyValueObservingOptions|Fo(nt(SymbolicTraits|TraitMask|Action)|cusRingType)|W(indow(OrderingMode|Depth)|orkspace(IconCreationOptions|LaunchOptions)|ritingDirection)|L(ineBreakMode|ayout(Status|Direction))|A(nimation(Progress|Effect)|ppl(ication(TerminateReply|DelegateReply|PrintReply)|eEventManagerSuspensionID)|ffineTransformStruct|lertStyle))\b + name + support.type.cocoa + + + match + \bNS(NotFound|Ordered(Ascending|Descending|Same))\b + name + support.constant.cocoa + + + match + \bNS(MenuDidBeginTracking|ViewDidUpdateTrackingAreas)?Notification\b + name + support.constant.notification.cocoa.leopard + + + match + \bNS(Menu(Did(RemoveItem|SendAction|ChangeItem|EndTracking|AddItem)|WillSendAction)|S(ystemColorsDidChange|plitView(DidResizeSubviews|WillResizeSubviews))|C(o(nt(extHelpModeDid(Deactivate|Activate)|rolT(intDidChange|extDid(BeginEditing|Change|EndEditing)))|lor(PanelColorDidChange|ListDidChange)|mboBox(Selection(IsChanging|DidChange)|Will(Dismiss|PopUp)))|lassDescriptionNeededForClass)|T(oolbar(DidRemoveItem|WillAddItem)|ext(Storage(DidProcessEditing|WillProcessEditing)|Did(BeginEditing|Change|EndEditing)|View(DidChange(Selection|TypingAttributes)|WillChangeNotifyingTextView))|ableView(Selection(IsChanging|DidChange)|ColumnDid(Resize|Move)))|ImageRepRegistryDidChange|OutlineView(Selection(IsChanging|DidChange)|ColumnDid(Resize|Move)|Item(Did(Collapse|Expand)|Will(Collapse|Expand)))|Drawer(Did(Close|Open)|Will(Close|Open))|PopUpButton(CellWillPopUp|WillPopUp)|View(GlobalFrameDidChange|BoundsDidChange|F(ocusDidChange|rameDidChange))|FontSetChanged|W(indow(Did(Resi(ze|gn(Main|Key))|M(iniaturize|ove)|Become(Main|Key)|ChangeScreen(|Profile)|Deminiaturize|Update|E(ndSheet|xpose))|Will(M(iniaturize|ove)|BeginSheet|Close))|orkspace(SessionDid(ResignActive|BecomeActive)|Did(Mount|TerminateApplication|Unmount|PerformFileOperation|Wake|LaunchApplication)|Will(Sleep|Unmount|PowerOff|LaunchApplication)))|A(ntialiasThresholdChanged|ppl(ication(Did(ResignActive|BecomeActive|Hide|ChangeScreenParameters|U(nhide|pdate)|FinishLaunching)|Will(ResignActive|BecomeActive|Hide|Terminate|U(nhide|pdate)|FinishLaunching))|eEventManagerWillProcessFirstEvent)))Notification\b + name + support.constant.notification.cocoa + + + match + \bNS(RuleEditor(RowType(Simple|Compound)|NestingMode(Si(ngle|mple)|Compound|List))|GradientDraws(BeforeStartingLocation|AfterEndingLocation)|M(inusSetExpressionType|a(chPortDeallocate(ReceiveRight|SendRight|None)|pTable(StrongMemory|CopyIn|ZeroingWeakMemory|ObjectPointerPersonality)))|B(oxCustom|undleExecutableArchitecture(X86|I386|PPC(64)?)|etweenPredicateOperatorType|ackgroundStyle(Raised|Dark|L(ight|owered)))|S(tring(DrawingTruncatesLastVisibleLine|EncodingConversion(ExternalRepresentation|AllowLossy))|ubqueryExpressionType|p(e(ech(SentenceBoundary|ImmediateBoundary|WordBoundary)|llingState(GrammarFlag|SpellingFlag))|litViewDividerStyleThi(n|ck))|e(rvice(RequestTimedOutError|M(iscellaneousError|alformedServiceDictionaryError)|InvalidPasteboardDataError|ErrorM(inimum|aximum)|Application(NotFoundError|LaunchFailedError))|gmentStyle(Round(Rect|ed)|SmallSquare|Capsule|Textured(Rounded|Square)|Automatic)))|H(UDWindowMask|ashTable(StrongMemory|CopyIn|ZeroingWeakMemory|ObjectPointerPersonality))|N(oModeColorPanel|etServiceNoAutoRename)|C(hangeRedone|o(ntainsPredicateOperatorType|l(orRenderingIntent(RelativeColorimetric|Saturation|Default|Perceptual|AbsoluteColorimetric)|lectorDisabledOption))|ellHit(None|ContentArea|TrackableArea|EditableTextArea))|T(imeZoneNameStyle(S(hort(Standard|DaylightSaving)|tandard)|DaylightSaving)|extFieldDatePickerStyle|ableViewSelectionHighlightStyle(Regular|SourceList)|racking(Mouse(Moved|EnteredAndExited)|CursorUpdate|InVisibleRect|EnabledDuringMouseDrag|A(ssumeInside|ctive(In(KeyWindow|ActiveApp)|WhenFirstResponder|Always))))|I(n(tersectSetExpressionType|dexedColorSpaceModel)|mageScale(None|Proportionally(Down|UpOrDown)|AxesIndependently))|Ope(nGLPFAAllowOfflineRenderers|rationQueue(DefaultMaxConcurrentOperationCount|Priority(High|Normal|Very(High|Low)|Low)))|D(iacriticInsensitiveSearch|ownloadsDirectory)|U(nionSetExpressionType|TF(16(BigEndianStringEncoding|StringEncoding|LittleEndianStringEncoding)|32(BigEndianStringEncoding|StringEncoding|LittleEndianStringEncoding)))|P(ointerFunctions(Ma(chVirtualMemory|llocMemory)|Str(ongMemory|uctPersonality)|C(StringPersonality|opyIn)|IntegerPersonality|ZeroingWeakMemory|O(paque(Memory|Personality)|bjectP(ointerPersonality|ersonality)))|at(hStyle(Standard|NavigationBar|PopUp)|ternColorSpaceModel)|rintPanelShows(Scaling|Copies|Orientation|P(a(perSize|ge(Range|SetupAccessory))|review)))|Executable(RuntimeMismatchError|NotLoadableError|ErrorM(inimum|aximum)|L(inkError|oadError)|ArchitectureMismatchError)|KeyValueObservingOption(Initial|Prior)|F(i(ndPanelSubstringMatchType(StartsWith|Contains|EndsWith|FullWord)|leRead(TooLargeError|UnknownStringEncodingError))|orcedOrderingSearch)|Wi(ndow(BackingLocation(MainMemory|Default|VideoMemory)|Sharing(Read(Only|Write)|None)|CollectionBehavior(MoveToActiveSpace|CanJoinAllSpaces|Default))|dthInsensitiveSearch)|AggregateExpressionType)\b + name + support.constant.cocoa.leopard + + + match + \bNS(R(GB(ModeColorPanel|ColorSpaceModel)|ight(Mouse(D(own(Mask)?|ragged(Mask)?)|Up(Mask)?)|T(ext(Movement|Alignment)|ab(sBezelBorder|StopType))|ArrowFunctionKey)|ound(RectBezelStyle|Bankers|ed(BezelStyle|TokenStyle|DisclosureBezelStyle)|Down|Up|Plain|Line(CapStyle|JoinStyle))|un(StoppedResponse|ContinuesResponse|AbortedResponse)|e(s(izableWindowMask|et(CursorRectsRunLoopOrdering|FunctionKey))|ce(ssedBezelStyle|iver(sCantHandleCommandScriptError|EvaluationScriptError))|turnTextMovement|doFunctionKey|quiredArgumentsMissingScriptError|l(evancyLevelIndicatorStyle|ative(Before|After))|gular(SquareBezelStyle|ControlSize)|moveTraitFontAction)|a(n(domSubelement|geDateMode)|tingLevelIndicatorStyle|dio(ModeMatrix|Button)))|G(IFFileType|lyph(Below|Inscribe(B(elow|ase)|Over(strike|Below)|Above)|Layout(WithPrevious|A(tAPoint|gainstAPoint))|A(ttribute(BidiLevel|Soft|Inscribe|Elastic)|bove))|r(ooveBorder|eaterThan(Comparison|OrEqualTo(Comparison|PredicateOperatorType)|PredicateOperatorType)|a(y(ModeColorPanel|ColorSpaceModel)|dient(None|Con(cave(Strong|Weak)|vex(Strong|Weak)))|phiteControlTint)))|XML(N(o(tationDeclarationKind|de(CompactEmptyElement|IsCDATA|OptionsNone|Use(SingleQuotes|DoubleQuotes)|Pre(serve(NamespaceOrder|C(haracterReferences|DATA)|DTD|Prefixes|E(ntities|mptyElements)|Quotes|Whitespace|A(ttributeOrder|ll))|ttyPrint)|ExpandEmptyElement))|amespaceKind)|CommentKind|TextKind|InvalidKind|D(ocument(X(MLKind|HTMLKind|Include)|HTMLKind|T(idy(XML|HTML)|extKind)|IncludeContentTypeDeclaration|Validate|Kind)|TDKind)|P(arser(GTRequiredError|XMLDeclNot(StartedError|FinishedError)|Mi(splaced(XMLDeclarationError|CDATAEndStringError)|xedContentDeclNot(StartedError|FinishedError))|S(t(andaloneValueError|ringNot(StartedError|ClosedError))|paceRequiredError|eparatorRequiredError)|N(MTOKENRequiredError|o(t(ationNot(StartedError|FinishedError)|WellBalancedError)|DTDError)|amespaceDeclarationError|AMERequiredError)|C(haracterRef(In(DTDError|PrologError|EpilogError)|AtEOFError)|o(nditionalSectionNot(StartedError|FinishedError)|mment(NotFinishedError|ContainsDoubleHyphenError))|DATANotFinishedError)|TagNameMismatchError|In(ternalError|valid(HexCharacterRefError|C(haracter(RefError|InEntityError|Error)|onditionalSectionError)|DecimalCharacterRefError|URIError|Encoding(NameError|Error)))|OutOfMemoryError|D(ocumentStartError|elegateAbortedParseError|OCTYPEDeclNotFinishedError)|U(RI(RequiredError|FragmentError)|n(declaredEntityError|parsedEntityError|knownEncodingError|finishedTagError))|P(CDATARequiredError|ublicIdentifierRequiredError|arsedEntityRef(MissingSemiError|NoNameError|In(Internal(SubsetError|Error)|PrologError|EpilogError)|AtEOFError)|r(ocessingInstructionNot(StartedError|FinishedError)|ematureDocumentEndError))|E(n(codingNotSupportedError|tity(Ref(In(DTDError|PrologError|EpilogError)|erence(MissingSemiError|WithoutNameError)|LoopError|AtEOFError)|BoundaryError|Not(StartedError|FinishedError)|Is(ParameterError|ExternalError)|ValueRequiredError))|qualExpectedError|lementContentDeclNot(StartedError|FinishedError)|xt(ernalS(tandaloneEntityError|ubsetNotFinishedError)|raContentError)|mptyDocumentError)|L(iteralNot(StartedError|FinishedError)|T(RequiredError|SlashRequiredError)|essThanSymbolInAttributeError)|Attribute(RedefinedError|HasNoValueError|Not(StartedError|FinishedError)|ListNot(StartedError|FinishedError)))|rocessingInstructionKind)|E(ntity(GeneralKind|DeclarationKind|UnparsedKind|P(ar(sedKind|ameterKind)|redefined))|lement(Declaration(MixedKind|UndefinedKind|E(lementKind|mptyKind)|Kind|AnyKind)|Kind))|Attribute(N(MToken(sKind|Kind)|otationKind)|CDATAKind|ID(Ref(sKind|Kind)|Kind)|DeclarationKind|En(tit(yKind|iesKind)|umerationKind)|Kind))|M(i(n(XEdge|iaturizableWindowMask|YEdge|uteCalendarUnit)|terLineJoinStyle|ddleSubelement|xedState)|o(nthCalendarUnit|deSwitchFunctionKey|use(Moved(Mask)?|E(ntered(Mask)?|ventSubtype|xited(Mask)?))|veToBezierPathElement|mentary(ChangeButton|Push(Button|InButton)|Light(Button)?))|enuFunctionKey|a(c(intoshInterfaceStyle|OSRomanStringEncoding)|tchesPredicateOperatorType|ppedRead|x(XEdge|YEdge))|ACHOperatingSystem)|B(MPFileType|o(ttomTabsBezelBorder|ldFontMask|rderlessWindowMask|x(Se(condary|parator)|OldStyle|Primary))|uttLineCapStyle|e(zelBorder|velLineJoinStyle|low(Bottom|Top)|gin(sWith(Comparison|PredicateOperatorType)|FunctionKey))|lueControlTint|ack(spaceCharacter|tabTextMovement|ingStore(Retained|Buffered|Nonretained)|TabCharacter|wardsSearch|groundTab)|r(owser(NoColumnResizing|UserColumnResizing|AutoColumnResizing)|eakFunctionKey))|S(h(ift(JISStringEncoding|KeyMask)|ow(ControlGlyphs|InvisibleGlyphs)|adowlessSquareBezelStyle)|y(s(ReqFunctionKey|tem(D(omainMask|efined(Mask)?)|FunctionKey))|mbolStringEncoding)|c(a(nnedOption|le(None|ToFit|Proportionally))|r(oll(er(NoPart|Increment(Page|Line|Arrow)|Decrement(Page|Line|Arrow)|Knob(Slot)?|Arrows(M(inEnd|axEnd)|None|DefaultSetting))|Wheel(Mask)?|LockFunctionKey)|eenChangedEventType))|t(opFunctionKey|r(ingDrawing(OneShot|DisableScreenFontSubstitution|Uses(DeviceMetrics|FontLeading|LineFragmentOrigin))|eam(Status(Reading|NotOpen|Closed|Open(ing)?|Error|Writing|AtEnd)|Event(Has(BytesAvailable|SpaceAvailable)|None|OpenCompleted|E(ndEncountered|rrorOccurred)))))|i(ngle(DateMode|UnderlineStyle)|ze(DownFontAction|UpFontAction))|olarisOperatingSystem|unOSOperatingSystem|pecialPageOrder|e(condCalendarUnit|lect(By(Character|Paragraph|Word)|i(ng(Next|Previous)|onAffinity(Downstream|Upstream))|edTab|FunctionKey)|gmentSwitchTracking(Momentary|Select(One|Any)))|quareLineCapStyle|witchButton|ave(ToOperation|Op(tions(Yes|No|Ask)|eration)|AsOperation)|mall(SquareBezelStyle|C(ontrolSize|apsFontMask)|IconButtonBezelStyle))|H(ighlightModeMatrix|SBModeColorPanel|o(ur(Minute(SecondDatePickerElementFlag|DatePickerElementFlag)|CalendarUnit)|rizontalRuler|meFunctionKey)|TTPCookieAcceptPolicy(Never|OnlyFromMainDocumentDomain|Always)|e(lp(ButtonBezelStyle|KeyMask|FunctionKey)|avierFontAction)|PUXOperatingSystem)|Year(MonthDa(yDatePickerElementFlag|tePickerElementFlag)|CalendarUnit)|N(o(n(StandardCharacterSetFontMask|ZeroWindingRule|activatingPanelMask|LossyASCIIStringEncoding)|Border|t(ification(SuspensionBehavior(Hold|Coalesce|D(eliverImmediately|rop))|NoCoalescing|CoalescingOn(Sender|Name)|DeliverImmediately|PostToAllSessions)|PredicateType|EqualToPredicateOperatorType)|S(cr(iptError|ollerParts)|ubelement|pecifierError)|CellMask|T(itle|opLevelContainersSpecifierError|abs(BezelBorder|NoBorder|LineBorder))|I(nterfaceStyle|mage)|UnderlineStyle|FontChangeAction)|u(ll(Glyph|CellType)|m(eric(Search|PadKeyMask)|berFormatter(Round(Half(Down|Up|Even)|Ceiling|Down|Up|Floor)|Behavior(10|Default)|S(cientificStyle|pellOutStyle)|NoStyle|CurrencyStyle|DecimalStyle|P(ercentStyle|ad(Before(Suffix|Prefix)|After(Suffix|Prefix))))))|e(t(Services(BadArgumentError|NotFoundError|C(ollisionError|ancelledError)|TimeoutError|InvalidError|UnknownError|ActivityInProgress)|workDomainMask)|wlineCharacter|xt(StepInterfaceStyle|FunctionKey))|EXTSTEPStringEncoding|a(t(iveShortGlyphPacking|uralTextAlignment)|rrowFontMask))|C(hange(ReadOtherContents|GrayCell(Mask)?|BackgroundCell(Mask)?|Cleared|Done|Undone|Autosaved)|MYK(ModeColorPanel|ColorSpaceModel)|ircular(BezelStyle|Slider)|o(n(stantValueExpressionType|t(inuousCapacityLevelIndicatorStyle|entsCellMask|ain(sComparison|erSpecifierError)|rol(Glyph|KeyMask))|densedFontMask)|lor(Panel(RGBModeMask|GrayModeMask|HSBModeMask|C(MYKModeMask|olorListModeMask|ustomPaletteModeMask|rayonModeMask)|WheelModeMask|AllModesMask)|ListModeColorPanel)|reServiceDirectory|m(p(osite(XOR|Source(In|O(ut|ver)|Atop)|Highlight|C(opy|lear)|Destination(In|O(ut|ver)|Atop)|Plus(Darker|Lighter))|ressedFontMask)|mandKeyMask))|u(stom(SelectorPredicateOperatorType|PaletteModeColorPanel)|r(sor(Update(Mask)?|PointingDevice)|veToBezierPathElement))|e(nterT(extAlignment|abStopType)|ll(State|H(ighlighted|as(Image(Horizontal|OnLeftOrBottom)|OverlappingImage))|ChangesContents|Is(Bordered|InsetButton)|Disabled|Editable|LightsBy(Gray|Background|Contents)|AllowsMixedState))|l(ipPagination|o(s(ePathBezierPathElement|ableWindowMask)|ckAndCalendarDatePickerStyle)|ear(ControlTint|DisplayFunctionKey|LineFunctionKey))|a(seInsensitive(Search|PredicateOption)|n(notCreateScriptCommandError|cel(Button|TextMovement))|chesDirectory|lculation(NoError|Overflow|DivideByZero|Underflow|LossOfPrecision)|rriageReturnCharacter)|r(itical(Request|AlertStyle)|ayonModeColorPanel))|T(hick(SquareBezelStyle|erSquareBezelStyle)|ypesetter(Behavior|HorizontalTabAction|ContainerBreakAction|ZeroAdvancementAction|OriginalBehavior|ParagraphBreakAction|WhitespaceAction|L(ineBreakAction|atestBehavior))|i(ckMark(Right|Below|Left|Above)|tledWindowMask|meZoneDatePickerElementFlag)|o(olbarItemVisibilityPriority(Standard|High|User|Low)|pTabsBezelBorder|ggleButton)|IFF(Compression(N(one|EXT)|CCITTFAX(3|4)|OldJPEG|JPEG|PackBits|LZW)|FileType)|e(rminate(Now|Cancel|Later)|xt(Read(InapplicableDocumentTypeError|WriteErrorM(inimum|aximum))|Block(M(i(nimum(Height|Width)|ddleAlignment)|a(rgin|ximum(Height|Width)))|B(o(ttomAlignment|rder)|aselineAlignment)|Height|TopAlignment|P(ercentageValueType|adding)|Width|AbsoluteValueType)|StorageEdited(Characters|Attributes)|CellType|ured(RoundedBezelStyle|BackgroundWindowMask|SquareBezelStyle)|Table(FixedLayoutAlgorithm|AutomaticLayoutAlgorithm)|Field(RoundedBezel|SquareBezel|AndStepperDatePickerStyle)|WriteInapplicableDocumentTypeError|ListPrependEnclosingMarker))|woByteGlyphPacking|ab(Character|TextMovement|le(tP(oint(Mask|EventSubtype)?|roximity(Mask|EventSubtype)?)|Column(NoResizing|UserResizingMask|AutoresizingMask)|View(ReverseSequentialColumnAutoresizingStyle|GridNone|S(olid(HorizontalGridLineMask|VerticalGridLineMask)|equentialColumnAutoresizingStyle)|NoColumnAutoresizing|UniformColumnAutoresizingStyle|FirstColumnOnlyAutoresizingStyle|LastColumnOnlyAutoresizingStyle)))|rackModeMatrix)|I(n(sert(CharFunctionKey|FunctionKey|LineFunctionKey)|t(Type|ernalS(criptError|pecifierError))|dexSubelement|validIndexSpecifierError|formational(Request|AlertStyle)|PredicateOperatorType)|talicFontMask|SO(2022JPStringEncoding|Latin(1StringEncoding|2StringEncoding))|dentityMappingCharacterCollection|llegalTextMovement|mage(R(ight|ep(MatchesDevice|LoadStatus(ReadingHeader|Completed|InvalidData|Un(expectedEOF|knownType)|WillNeedAllData)))|Below|C(ellType|ache(BySize|Never|Default|Always))|Interpolation(High|None|Default|Low)|O(nly|verlaps)|Frame(Gr(oove|ayBezel)|Button|None|Photo)|L(oadStatus(ReadError|C(ompleted|ancelled)|InvalidData|UnexpectedEOF)|eft)|A(lign(Right|Bottom(Right|Left)?|Center|Top(Right|Left)?|Left)|bove)))|O(n(State|eByteGlyphPacking|OffButton|lyScrollerArrows)|ther(Mouse(D(own(Mask)?|ragged(Mask)?)|Up(Mask)?)|TextMovement)|SF1OperatingSystem|pe(n(GL(GO(Re(setLibrary|tainRenderers)|ClearFormatCache|FormatCacheSize)|PFA(R(obust|endererID)|M(inimumPolicy|ulti(sample|Screen)|PSafe|aximumPolicy)|BackingStore|S(creenMask|te(ncilSize|reo)|ingleRenderer|upersample|ample(s|Buffers|Alpha))|NoRecovery|C(o(lor(Size|Float)|mpliant)|losestPolicy)|OffScreen|D(oubleBuffer|epthSize)|PixelBuffer|VirtualScreenCount|FullScreen|Window|A(cc(umSize|elerated)|ux(Buffers|DepthStencil)|l(phaSize|lRenderers))))|StepUnicodeReservedBase)|rationNotSupportedForKeyS(criptError|pecifierError))|ffState|KButton|rPredicateType|bjC(B(itfield|oolType)|S(hortType|tr(ingType|uctType)|electorType)|NoType|CharType|ObjectType|DoubleType|UnionType|PointerType|VoidType|FloatType|Long(Type|longType)|ArrayType))|D(i(s(c(losureBezelStyle|reteCapacityLevelIndicatorStyle)|playWindowRunLoopOrdering)|acriticInsensitivePredicateOption|rect(Selection|PredicateModifier))|o(c(ModalWindowMask|ument(Directory|ationDirectory))|ubleType|wn(TextMovement|ArrowFunctionKey))|e(s(cendingPageOrder|ktopDirectory)|cimalTabStopType|v(ice(NColorSpaceModel|IndependentModifierFlagsMask)|eloper(Directory|ApplicationDirectory))|fault(ControlTint|TokenStyle)|lete(Char(acter|FunctionKey)|FunctionKey|LineFunctionKey)|moApplicationDirectory)|a(yCalendarUnit|teFormatter(MediumStyle|Behavior(10|Default)|ShortStyle|NoStyle|FullStyle|LongStyle))|ra(wer(Clos(ingState|edState)|Open(ingState|State))|gOperation(Generic|Move|None|Copy|Delete|Private|Every|Link|All)))|U(ser(CancelledError|D(irectory|omainMask)|FunctionKey)|RL(Handle(NotLoaded|Load(Succeeded|InProgress|Failed))|CredentialPersistence(None|Permanent|ForSession))|n(scaledWindowMask|cachedRead|i(codeStringEncoding|talicFontMask|fiedTitleAndToolbarWindowMask)|d(o(CloseGroupingRunLoopOrdering|FunctionKey)|e(finedDateComponent|rline(Style(Single|None|Thick|Double)|Pattern(Solid|D(ot|ash(Dot(Dot)?)?)))))|known(ColorSpaceModel|P(ointingDevice|ageOrder)|KeyS(criptError|pecifierError))|boldFontMask)|tilityWindowMask|TF8StringEncoding|p(dateWindowsRunLoopOrdering|TextMovement|ArrowFunctionKey))|J(ustifiedTextAlignment|PEG(2000FileType|FileType)|apaneseEUC(GlyphPacking|StringEncoding))|P(o(s(t(Now|erFontMask|WhenIdle|ASAP)|iti(on(Replace|Be(fore|ginning)|End|After)|ve(IntType|DoubleType|FloatType)))|pUp(NoArrow|ArrowAt(Bottom|Center))|werOffEventType|rtraitOrientation)|NGFileType|ush(InCell(Mask)?|OnPushOffButton)|e(n(TipMask|UpperSideMask|PointingDevice|LowerSideMask)|riodic(Mask)?)|P(S(caleField|tatus(Title|Field)|aveButton)|N(ote(Title|Field)|ame(Title|Field))|CopiesField|TitleField|ImageButton|OptionsButton|P(a(perFeedButton|ge(Range(To|From)|ChoiceMatrix))|reviewButton)|LayoutButton)|lainTextTokenStyle|a(useFunctionKey|ragraphSeparatorCharacter|ge(DownFunctionKey|UpFunctionKey))|r(int(ing(ReplyLater|Success|Cancelled|Failure)|ScreenFunctionKey|erTable(NotFound|OK|Error)|FunctionKey)|o(p(ertyList(XMLFormat|MutableContainers(AndLeaves)?|BinaryFormat|Immutable|OpenStepFormat)|rietaryStringEncoding)|gressIndicator(BarStyle|SpinningStyle|Preferred(SmallThickness|Thickness|LargeThickness|AquaThickness)))|e(ssedTab|vFunctionKey))|L(HeightForm|CancelButton|TitleField|ImageButton|O(KButton|rientationMatrix)|UnitsButton|PaperNameButton|WidthForm))|E(n(terCharacter|d(sWith(Comparison|PredicateOperatorType)|FunctionKey))|v(e(nOddWindingRule|rySubelement)|aluatedObjectExpressionType)|qualTo(Comparison|PredicateOperatorType)|ra(serPointingDevice|CalendarUnit|DatePickerElementFlag)|x(clude(10|QuickDrawElementsIconCreationOption)|pandedFontMask|ecuteFunctionKey))|V(i(ew(M(in(XMargin|YMargin)|ax(XMargin|YMargin))|HeightSizable|NotSizable|WidthSizable)|aPanelFontAction)|erticalRuler|a(lidationErrorM(inimum|aximum)|riableExpressionType))|Key(SpecifierEvaluationScriptError|Down(Mask)?|Up(Mask)?|PathExpressionType|Value(MinusSetMutation|SetSetMutation|Change(Re(placement|moval)|Setting|Insertion)|IntersectSetMutation|ObservingOption(New|Old)|UnionSetMutation|ValidationError))|QTMovie(NormalPlayback|Looping(BackAndForthPlayback|Playback))|F(1(1FunctionKey|7FunctionKey|2FunctionKey|8FunctionKey|3FunctionKey|9FunctionKey|4FunctionKey|5FunctionKey|FunctionKey|0FunctionKey|6FunctionKey)|7FunctionKey|i(nd(PanelAction(Replace(A(ndFind|ll(InSelection)?))?|S(howFindPanel|e(tFindString|lectAll(InSelection)?))|Next|Previous)|FunctionKey)|tPagination|le(Read(No(SuchFileError|PermissionError)|CorruptFileError|In(validFileNameError|applicableStringEncodingError)|Un(supportedSchemeError|knownError))|HandlingPanel(CancelButton|OKButton)|NoSuchFileError|ErrorM(inimum|aximum)|Write(NoPermissionError|In(validFileNameError|applicableStringEncodingError)|OutOfSpaceError|Un(supportedSchemeError|knownError))|LockingError)|xedPitchFontMask)|2(1FunctionKey|7FunctionKey|2FunctionKey|8FunctionKey|3FunctionKey|9FunctionKey|4FunctionKey|5FunctionKey|FunctionKey|0FunctionKey|6FunctionKey)|o(nt(Mo(noSpaceTrait|dernSerifsClass)|BoldTrait|S(ymbolicClass|criptsClass|labSerifsClass|ansSerifClass)|C(o(ndensedTrait|llectionApplicationOnlyMask)|larendonSerifsClass)|TransitionalSerifsClass|I(ntegerAdvancementsRenderingMode|talicTrait)|O(ldStyleSerifsClass|rnamentalsClass)|DefaultRenderingMode|U(nknownClass|IOptimizedTrait)|Panel(S(hadowEffectModeMask|t(andardModesMask|rikethroughEffectModeMask)|izeModeMask)|CollectionModeMask|TextColorEffectModeMask|DocumentColorEffectModeMask|UnderlineEffectModeMask|FaceModeMask|All(ModesMask|EffectsModeMask))|ExpandedTrait|VerticalTrait|F(amilyClassMask|reeformSerifsClass)|Antialiased(RenderingMode|IntegerAdvancementsRenderingMode))|cusRing(Below|Type(None|Default|Exterior)|Only|Above)|urByteGlyphPacking|rm(attingError(M(inimum|aximum))?|FeedCharacter))|8FunctionKey|unction(ExpressionType|KeyMask)|3(1FunctionKey|2FunctionKey|3FunctionKey|4FunctionKey|5FunctionKey|FunctionKey|0FunctionKey)|9FunctionKey|4FunctionKey|P(RevertButton|S(ize(Title|Field)|etButton)|CurrentField|Preview(Button|Field))|l(oat(ingPointSamplesBitmapFormat|Type)|agsChanged(Mask)?)|axButton|5FunctionKey|6FunctionKey)|W(heelModeColorPanel|indow(s(NTOperatingSystem|CP125(1StringEncoding|2StringEncoding|3StringEncoding|4StringEncoding|0StringEncoding)|95(InterfaceStyle|OperatingSystem))|M(iniaturizeButton|ovedEventType)|Below|CloseButton|ToolbarButton|ZoomButton|Out|DocumentIconButton|ExposedEventType|Above)|orkspaceLaunch(NewInstance|InhibitingBackgroundOnly|Default|PreferringClassic|WithoutA(ctivation|ddingToRecents)|A(sync|nd(Hide(Others)?|Print)|llowingClassicStartup))|eek(day(CalendarUnit|OrdinalCalendarUnit)|CalendarUnit)|a(ntsBidiLevels|rningAlertStyle)|r(itingDirection(RightToLeft|Natural|LeftToRight)|apCalendarComponents))|L(i(stModeMatrix|ne(Moves(Right|Down|Up|Left)|B(order|reakBy(C(harWrapping|lipping)|Truncating(Middle|Head|Tail)|WordWrapping))|S(eparatorCharacter|weep(Right|Down|Up|Left))|ToBezierPathElement|DoesntMove|arSlider)|teralSearch|kePredicateOperatorType|ghterFontAction|braryDirectory)|ocalDomainMask|e(ssThan(Comparison|OrEqualTo(Comparison|PredicateOperatorType)|PredicateOperatorType)|ft(Mouse(D(own(Mask)?|ragged(Mask)?)|Up(Mask)?)|T(ext(Movement|Alignment)|ab(sBezelBorder|StopType))|ArrowFunctionKey))|a(yout(RightToLeft|NotDone|CantFit|OutOfGlyphs|Done|LeftToRight)|ndscapeOrientation)|ABColorSpaceModel)|A(sc(iiWithDoubleByteEUCGlyphPacking|endingPageOrder)|n(y(Type|PredicateModifier|EventMask)|choredSearch|imation(Blocking|Nonblocking(Threaded)?|E(ffect(DisappearingItemDefault|Poof)|ase(In(Out)?|Out))|Linear)|dPredicateType)|t(Bottom|tachmentCharacter|omicWrite|Top)|SCIIStringEncoding|d(obe(GB1CharacterCollection|CNS1CharacterCollection|Japan(1CharacterCollection|2CharacterCollection)|Korea1CharacterCollection)|dTraitFontAction|minApplicationDirectory)|uto(saveOperation|Pagination)|pp(lication(SupportDirectory|D(irectory|e(fined(Mask)?|legateReply(Success|Cancel|Failure)|activatedEventType))|ActivatedEventType)|KitDefined(Mask)?)|l(ternateKeyMask|pha(ShiftKeyMask|NonpremultipliedBitmapFormat|FirstBitmapFormat)|ert(SecondButtonReturn|ThirdButtonReturn|OtherReturn|DefaultReturn|ErrorReturn|FirstButtonReturn|AlternateReturn)|l(ScrollerParts|DomainsMask|PredicateModifier|LibrariesDirectory|ApplicationsDirectory))|rgument(sWrongScriptError|EvaluationScriptError)|bove(Bottom|Top)|WTEventType))\b + name + support.constant.cocoa + + + include + source.c + + + include + #bracketed_content + + + repository + + bracketed_content + + begin + \[ + beginCaptures + + 0 + + name + punctuation.section.scope.begin.objc + + + end + \] + endCaptures + + 0 + + name + punctuation.section.scope.end.objc + + + name + meta.bracketed.objc + patterns + + + begin + (?=predicateWithFormat:)(?<=NSPredicate )(predicateWithFormat:) + beginCaptures + + 1 + + name + support.function.any-method.objc + + 2 + + name + punctuation.separator.arguments.objc + + + end + (?=\]) + name + meta.function-call.predicate.objc + patterns + + + captures + + 1 + + name + punctuation.separator.arguments.objc + + + match + \bargument(Array|s)(:) + name + support.function.any-method.name-of-parameter.objc + + + captures + + 1 + + name + punctuation.separator.arguments.objc + + + match + \b\w+(:) + name + invalid.illegal.unknown-method.objc + + + begin + @" + beginCaptures + + 0 + + name + punctuation.definition.string.begin.objc + + + end + " + endCaptures + + 0 + + name + punctuation.definition.string.end.objc + + + name + string.quoted.double.objc + patterns + + + match + \b(AND|OR|NOT|IN)\b + name + keyword.operator.logical.predicate.cocoa + + + match + \b(ALL|ANY|SOME|NONE)\b + name + constant.language.predicate.cocoa + + + match + \b(NULL|NIL|SELF|TRUE|YES|FALSE|NO|FIRST|LAST|SIZE)\b + name + constant.language.predicate.cocoa + + + match + \b(MATCHES|CONTAINS|BEGINSWITH|ENDSWITH|BETWEEN)\b + name + keyword.operator.comparison.predicate.cocoa + + + match + \bC(ASEINSENSITIVE|I)\b + name + keyword.other.modifier.predicate.cocoa + + + match + \b(ANYKEY|SUBQUERY|CAST|TRUEPREDICATE|FALSEPREDICATE)\b + name + keyword.other.predicate.cocoa + + + match + \\(\\|[abefnrtv'"?]|[0-3]\d{,2}|[4-7]\d?|x[a-zA-Z0-9]+) + name + constant.character.escape.objc + + + match + \\. + name + invalid.illegal.unknown-escape.objc + + + + + include + #special_variables + + + include + #c_functions + + + include + $base + + + + + begin + (?=\w)(?<=[\w\])"] )(\w+(?:(:)|(?=\]))) + beginCaptures + + 1 + + name + support.function.any-method.objc + + 2 + + name + punctuation.separator.arguments.objc + + + end + (?=\]) + name + meta.function-call.objc + patterns + + + captures + + 1 + + name + punctuation.separator.arguments.objc + + + match + \b\w+(:) + name + support.function.any-method.name-of-parameter.objc + + + include + #special_variables + + + include + #c_functions + + + include + $base + + + + + include + #special_variables + + + include + #c_functions + + + include + $self + + + + c_functions + + patterns + + + 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 + + + + comment + + patterns + + + begin + /\* + captures + + 0 + + name + punctuation.definition.comment.objc + + + end + \*/ + name + comment.block.objc + + + begin + // + beginCaptures + + 0 + + name + punctuation.definition.comment.objc + + + 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 + + + + implementation_innards + + patterns + + + include + #preprocessor-rule-enabled-implementation + + + include + #preprocessor-rule-disabled-implementation + + + include + #preprocessor-rule-other-implementation + + + include + #property_directive + + + include + #special_variables + + + include + #method_super + + + include + $base + + + + interface_innards + + patterns + + + include + #preprocessor-rule-enabled-interface + + + include + #preprocessor-rule-disabled-interface + + + include + #preprocessor-rule-other-interface + + + include + #properties + + + include + #protocol_list + + + include + #method + + + include + $base + + + + method + + begin + ^(-|\+)\s* + end + (?=\{|#)|; + name + meta.function.objc + patterns + + + begin + (\() + captures + + 1 + + name + punctuation.definition.type.objc + + 2 + + name + entity.name.function.objc + + + end + (\))\s*(\w+\b) + name + meta.return-type.objc + patterns + + + include + #protocol_list + + + include + #protocol_type_qualifier + + + include + $base + + + + + match + \b\w+(?=:) + name + entity.name.function.name-of-parameter.objc + + + begin + ((:))\s*(\() + beginCaptures + + 1 + + name + entity.name.function.name-of-parameter.objc + + 2 + + name + punctuation.separator.arguments.objc + + 3 + + name + punctuation.definition.type.objc + + + end + (\))\s*(\w+\b)? + endCaptures + + 1 + + name + punctuation.definition.type.objc + + 2 + + name + variable.parameter.function.objc + + + name + meta.argument-type.objc + patterns + + + include + #protocol_list + + + include + #protocol_type_qualifier + + + include + $base + + + + + include + #comment + + + + method_super + + begin + ^(?=-|\+) + end + (?<=\})|(?=#) + name + meta.function-with-body.objc + patterns + + + include + #method + + + 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-implementation + + 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 + #interface_innards + + + + + begin + + end + (?=^\s*#\s*(else|endif)\b.*?(?:(?=(?://|/\*))|$)) + name + comment.block.preprocessor.if-branch.c + patterns + + + include + #disabled + + + include + #pragma-mark + + + + + + preprocessor-rule-disabled-interface + + 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 + #interface_innards + + + + + begin + + end + (?=^\s*#\s*(else|endif)\b.*?(?:(?=(?://|/\*))|$)) + name + comment.block.preprocessor.if-branch.c + patterns + + + include + #disabled + + + include + #pragma-mark + + + + + + preprocessor-rule-enabled-implementation + + 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.c + end + (?=^\s*#\s*endif\b.*?(?:(?=(?://|/\*))|$)) + patterns + + + include + #disabled + + + include + #pragma-mark + + + + + begin + + end + (?=^\s*#\s*(else|endif)\b.*?(?:(?=(?://|/\*))|$)) + patterns + + + include + #implementation_innards + + + + + + preprocessor-rule-enabled-interface + + 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.c + end + (?=^\s*#\s*endif\b.*?(?:(?=(?://|/\*))|$)) + patterns + + + include + #disabled + + + include + #pragma-mark + + + + + begin + + end + (?=^\s*#\s*(else|endif)\b.*?(?:(?=(?://|/\*))|$)) + patterns + + + include + #interface_innards + + + + + + preprocessor-rule-other-implementation + + 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 + #implementation_innards + + + + preprocessor-rule-other-interface + + 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 + #interface_innards + + + + properties + + patterns + + + begin + ((@)property)\s*(\() + beginCaptures + + 1 + + name + keyword.other.property.objc + + 2 + + name + punctuation.definition.keyword.objc + + 3 + + name + punctuation.section.scope.begin.objc + + + end + (\)) + endCaptures + + 1 + + name + punctuation.section.scope.end.objc + + + name + meta.property-with-attributes.objc + patterns + + + match + \b(getter|setter|readonly|readwrite|assign|retain|copy|nonatomic)\b + name + keyword.other.property.attribute + + + + + captures + + 1 + + name + keyword.other.property.objc + + 2 + + name + punctuation.definition.keyword.objc + + + match + ((@)property)\b + name + meta.property.objc + + + + property_directive + + captures + + 1 + + name + punctuation.definition.keyword.objc + + + match + (@)(dynamic|synthesize)\b + name + keyword.other.property.directive.objc + + protocol_list + + begin + (<) + beginCaptures + + 1 + + name + punctuation.section.scope.begin.objc + + + end + (>) + endCaptures + + 1 + + name + punctuation.section.scope.end.objc + + + name + meta.protocol-list.objc + patterns + + + match + \bNS(GlyphStorage|M(utableCopying|enuItem)|C(hangeSpelling|o(ding|pying|lorPicking(Custom|Default)))|T(oolbarItemValidations|ext(Input|AttachmentCell))|I(nputServ(iceProvider|erMouseTracker)|gnoreMisspelledWords)|Obj(CTypeSerializationCallBack|ect)|D(ecimalNumberBehaviors|raggingInfo)|U(serInterfaceValidations|RL(HandleClient|DownloadDelegate|ProtocolClient|AuthenticationChallengeSender))|Validated(ToobarItem|UserInterfaceItem)|Locking)\b + name + support.other.protocol.objc + + + + protocol_type_qualifier + + match + \b(in|out|inout|oneway|bycopy|byref)\b + name + storage.modifier.protocol.objc + + special_variables + + patterns + + + match + \b_cmd\b + name + variable.other.selector.objc + + + match + \b(self|super)\b + name + variable.language.objc + + + + + scopeName + source.objc + uuid + F85CC716-6B1C-11D9-9A20-000D93589AF6 + + diff --git a/Objective-C/Objective-C.tmLanguage.cache b/Objective-C/Objective-C.tmLanguage.cache new file mode 100644 index 0000000..df4b1f0 Binary files /dev/null and b/Objective-C/Objective-C.tmLanguage.cache differ diff --git a/PHP/$GLOBALS[''].sublime-snippet b/PHP/$GLOBALS[''].sublime-snippet new file mode 100644 index 0000000..2dacba0 --- /dev/null +++ b/PHP/$GLOBALS[''].sublime-snippet @@ -0,0 +1,6 @@ + + + globals + source.php + $GLOBALS['…'] + diff --git a/PHP/$_COOKIE[''].sublime-snippet b/PHP/$_COOKIE[''].sublime-snippet new file mode 100644 index 0000000..8829ca8 --- /dev/null +++ b/PHP/$_COOKIE[''].sublime-snippet @@ -0,0 +1,6 @@ + + + $_ + source.php + COOKIE['…'] + diff --git a/PHP/$_ENV[''].sublime-snippet b/PHP/$_ENV[''].sublime-snippet new file mode 100644 index 0000000..79b9984 --- /dev/null +++ b/PHP/$_ENV[''].sublime-snippet @@ -0,0 +1,6 @@ + + + $_ + source.php + ENV['…'] + diff --git a/PHP/$_FILES[''].sublime-snippet b/PHP/$_FILES[''].sublime-snippet new file mode 100644 index 0000000..445f5bb --- /dev/null +++ b/PHP/$_FILES[''].sublime-snippet @@ -0,0 +1,6 @@ + + + $_ + source.php + FILES['…'] + diff --git a/PHP/$_GET[''].sublime-snippet b/PHP/$_GET[''].sublime-snippet new file mode 100644 index 0000000..257e37d --- /dev/null +++ b/PHP/$_GET[''].sublime-snippet @@ -0,0 +1,6 @@ + + + $_ + source.php + GET['…'] + diff --git a/PHP/$_POST[''].sublime-snippet b/PHP/$_POST[''].sublime-snippet new file mode 100644 index 0000000..704157b --- /dev/null +++ b/PHP/$_POST[''].sublime-snippet @@ -0,0 +1,6 @@ + + + $_ + source.php + POST['…'] + diff --git a/PHP/$_REQUEST[''].sublime-snippet b/PHP/$_REQUEST[''].sublime-snippet new file mode 100644 index 0000000..464c566 --- /dev/null +++ b/PHP/$_REQUEST[''].sublime-snippet @@ -0,0 +1,6 @@ + + + $_ + source.php + REQUEST['…'] + diff --git a/PHP/$_SERVER[''].sublime-snippet b/PHP/$_SERVER[''].sublime-snippet new file mode 100644 index 0000000..ecd96a0 --- /dev/null +++ b/PHP/$_SERVER[''].sublime-snippet @@ -0,0 +1,6 @@ + + + $_ + source.php + SERVER['…'] + diff --git a/PHP/$_SESSION[''].sublime-snippet b/PHP/$_SESSION[''].sublime-snippet new file mode 100644 index 0000000..fe52ac6 --- /dev/null +++ b/PHP/$_SESSION[''].sublime-snippet @@ -0,0 +1,6 @@ + + + $_ + source.php + SESSION['…'] + diff --git a/PHP/Comments.tmPreferences b/PHP/Comments.tmPreferences new file mode 100644 index 0000000..62842d6 --- /dev/null +++ b/PHP/Comments.tmPreferences @@ -0,0 +1,42 @@ + + + + + name + Comments + scope + source.php + settings + + shellVariables + + + name + TM_COMMENT_START + value + // + + + name + TM_COMMENT_START_2 + value + # + + + name + TM_COMMENT_START_3 + value + /* + + + name + TM_COMMENT_END_3 + value + */ + + + + uuid + 06276449-AA4E-424F-A2B6-9F4138416E50 + + diff --git a/PHP/Comments.tmPreferences.cache b/PHP/Comments.tmPreferences.cache new file mode 100644 index 0000000..2d37d4f Binary files /dev/null and b/PHP/Comments.tmPreferences.cache differ diff --git a/PHP/Completion Rules.tmPreferences b/PHP/Completion Rules.tmPreferences new file mode 100644 index 0000000..fcaa98c --- /dev/null +++ b/PHP/Completion Rules.tmPreferences @@ -0,0 +1,13 @@ + + + + + scope + source.php + settings + + cancelCompletion + ^\s*(\}?\s*(else|do|try)|(class|function)\s*[a-zA-Z_0-9]+*)$ + + + diff --git a/PHP/Completion Rules.tmPreferences.cache b/PHP/Completion Rules.tmPreferences.cache new file mode 100644 index 0000000..3fd45bd Binary files /dev/null and b/PHP/Completion Rules.tmPreferences.cache differ diff --git a/PHP/Constructor.sublime-snippet b/PHP/Constructor.sublime-snippet new file mode 100644 index 0000000..1ff0cf0 --- /dev/null +++ b/PHP/Constructor.sublime-snippet @@ -0,0 +1,8 @@ + + $0 = \$$0;/}$0 +}]]> + con + source.php + function __construct + diff --git a/PHP/Indentation Rules Annex.tmPreferences b/PHP/Indentation Rules Annex.tmPreferences new file mode 100644 index 0000000..cecac6b --- /dev/null +++ b/PHP/Indentation Rules Annex.tmPreferences @@ -0,0 +1,15 @@ + + + + + name + Indentation Rules Annex + scope + source.php + settings + + unIndentedLinePattern + ^\s*((\*/|#|//| \*).*)?$ + + + diff --git a/PHP/Indentation Rules Annex.tmPreferences.cache b/PHP/Indentation Rules Annex.tmPreferences.cache new file mode 100644 index 0000000..a9f5af6 Binary files /dev/null and b/PHP/Indentation Rules Annex.tmPreferences.cache differ diff --git a/PHP/Indentation Rules.tmPreferences b/PHP/Indentation Rules.tmPreferences new file mode 100644 index 0000000..5925c3d --- /dev/null +++ b/PHP/Indentation Rules.tmPreferences @@ -0,0 +1,26 @@ + + + + + name + Indentation Rules + scope + source.php - comment + settings + + decreaseIndentPattern + (?x) ^ (.*\*/)? \s* \} .* $|<\?(php)?\s+(else(if)?|end(if|for(each)?|while)) + indentNextLinePattern + ^(?!.*(#|//|\*/|<\?))(?!.*[};:]\s*(//|/\*.*\*/\s*$)).*[^\s;:{}]\s*$|<\?php.+?\b(if|else(?:if)?|for(?:each)?|while)\b.*:(?!.*end\1) + + bracketIndentNextLinePattern + (?x) + ^ \s* \b(if|while|else|elseif|foreach)\b [^;]* $ + | ^ \s* \b(for)\b .* $ + + + + uuid + CA15DF69-E80D-46DA-BD45-E88C68E92117 + + diff --git a/PHP/Indentation Rules.tmPreferences.cache b/PHP/Indentation Rules.tmPreferences.cache new file mode 100644 index 0000000..573c6ae Binary files /dev/null and b/PHP/Indentation Rules.tmPreferences.cache differ diff --git a/PHP/PHP.sublime-completions b/PHP/PHP.sublime-completions new file mode 100644 index 0000000..84c61a1 --- /dev/null +++ b/PHP/PHP.sublime-completions @@ -0,0 +1,4147 @@ +{ + "scope": "source.php - variable.other.php", + + "completions": + [ + "php", + + { "trigger": "abs", "contents": "abs(${1:number})" }, + { "trigger": "acos", "contents": "acos(${1:arg})" }, + { "trigger": "acosh", "contents": "acosh(${1:arg})" }, + { "trigger": "addcslashes", "contents": "addcslashes(${1:str}, ${2:charlist})" }, + { "trigger": "addslashes", "contents": "addslashes(${1:str})" }, + { "trigger": "aggregate", "contents": "aggregate(${1:object}, ${2:class_name})" }, + { "trigger": "aggregate_info", "contents": "aggregate_info(${1:object})" }, + { "trigger": "aggregate_methods", "contents": "aggregate_methods(${1:object}, ${2:class_name})" }, + { "trigger": "aggregate_methods_by_list", "contents": "aggregate_methods_by_list(${1:object}, ${2:class_name}, ${3:methods_list})" }, + { "trigger": "aggregate_methods_by_regexp", "contents": "aggregate_methods_by_regexp(${1:object}, ${2:class_name}, ${3:regexp})" }, + { "trigger": "aggregate_properties", "contents": "aggregate_properties(${1:object}, ${2:class_name})" }, + { "trigger": "aggregate_properties_by_list", "contents": "aggregate_properties_by_list(${1:object}, ${2:class_name}, ${3:properties_list})" }, + { "trigger": "aggregate_properties_by_regexp", "contents": "aggregate_properties_by_regexp(${1:object}, ${2:class_name}, ${3:regexp})" }, + { "trigger": "aggregation_info", "contents": "aggregation_info()" }, + { "trigger": "apache_child_terminate", "contents": "apache_child_terminate(${1:oid})" }, + { "trigger": "apache_get_modules", "contents": "apache_get_modules(${1:oid})" }, + { "trigger": "apache_get_version", "contents": "apache_get_version(${1:oid})" }, + { "trigger": "apache_getenv", "contents": "apache_getenv(${1:variable})" }, + { "trigger": "apache_lookup_uri", "contents": "apache_lookup_uri(${1:filename})" }, + { "trigger": "apache_note", "contents": "apache_note(${1:note_name})" }, + { "trigger": "apache_request_headers", "contents": "apache_request_headers(${1:oid})" }, + { "trigger": "apache_reset_timeout", "contents": "apache_reset_timeout(${1:oid})" }, + { "trigger": "apache_response_headers", "contents": "apache_response_headers(${1:oid})" }, + { "trigger": "apache_setenv", "contents": "apache_setenv(${1:variable}, ${2:value})" }, + { "trigger": "apc_add", "contents": "apc_add(${1:key})" }, + { "trigger": "apc_bin_dump", "contents": "apc_bin_dump()" }, + { "trigger": "apc_bin_dumpfile", "contents": "apc_bin_dumpfile(${1:files}, ${2:user_vars}, ${3:filename})" }, + { "trigger": "apc_bin_load", "contents": "apc_bin_load(${1:data})" }, + { "trigger": "apc_bin_loadfile", "contents": "apc_bin_loadfile(${1:filename})" }, + { "trigger": "apc_cache_info", "contents": "apc_cache_info()" }, + { "trigger": "apc_cas", "contents": "apc_cas(${1:key}, ${2:old}, ${3:new})" }, + { "trigger": "apc_clear_cache", "contents": "apc_clear_cache()" }, + { "trigger": "apc_compile_file", "contents": "apc_compile_file(${1:filename})" }, + { "trigger": "apc_dec", "contents": "apc_dec(${1:key})" }, + { "trigger": "apc_define_constants", "contents": "apc_define_constants(${1:key}, ${2:constants})" }, + { "trigger": "apc_delete", "contents": "apc_delete(${1:key})" }, + { "trigger": "apc_delete_file", "contents": "apc_delete_file(${1:keys})" }, + { "trigger": "apc_exists", "contents": "apc_exists(${1:keys})" }, + { "trigger": "apc_fetch", "contents": "apc_fetch(${1:key})" }, + { "trigger": "apc_inc", "contents": "apc_inc(${1:key})" }, + { "trigger": "apc_load_constants", "contents": "apc_load_constants(${1:key})" }, + { "trigger": "apc_sma_info", "contents": "apc_sma_info()" }, + { "trigger": "apc_store", "contents": "apc_store(${1:key}, ${2:var})" }, + { "trigger": "apd_breakpoint", "contents": "apd_breakpoint(${1:debug_level})" }, + { "trigger": "apd_callstack", "contents": "apd_callstack(${1:oid})" }, + { "trigger": "apd_clunk", "contents": "apd_clunk(${1:warning})" }, + { "trigger": "apd_continue", "contents": "apd_continue(${1:debug_level})" }, + { "trigger": "apd_croak", "contents": "apd_croak(${1:warning})" }, + { "trigger": "apd_dump_function_table", "contents": "apd_dump_function_table(${1:oid})" }, + { "trigger": "apd_dump_persistent_resources", "contents": "apd_dump_persistent_resources(${1:oid})" }, + { "trigger": "apd_dump_regular_resources", "contents": "apd_dump_regular_resources(${1:oid})" }, + { "trigger": "apd_echo", "contents": "apd_echo(${1:output})" }, + { "trigger": "apd_get_active_symbols", "contents": "apd_get_active_symbols(${1:oid})" }, + { "trigger": "apd_set_pprof_trace", "contents": "apd_set_pprof_trace()" }, + { "trigger": "apd_set_session", "contents": "apd_set_session(${1:debug_level})" }, + { "trigger": "apd_set_session_trace", "contents": "apd_set_session_trace(${1:debug_level})" }, + { "trigger": "apd_set_session_trace_socket", "contents": "apd_set_session_trace_socket(${1:tcp_server}, ${2:socket_type}, ${3:port}, ${4:debug_level})" }, + { "trigger": "array", "contents": "array()" }, + { "trigger": "array_change_key_case", "contents": "array_change_key_case(${1:input})" }, + { "trigger": "array_chunk", "contents": "array_chunk(${1:input}, ${2:size})" }, + { "trigger": "array_combine", "contents": "array_combine(${1:keys}, ${2:values})" }, + { "trigger": "array_count_values", "contents": "array_count_values(${1:input})" }, + { "trigger": "array_diff", "contents": "array_diff(${1:array1}, ${2:array2})" }, + { "trigger": "array_diff_assoc", "contents": "array_diff_assoc(${1:array1}, ${2:array2})" }, + { "trigger": "array_diff_key", "contents": "array_diff_key(${1:array1}, ${2:array2})" }, + { "trigger": "array_diff_uassoc", "contents": "array_diff_uassoc(${1:array1}, ${2:array2})" }, + { "trigger": "array_diff_ukey", "contents": "array_diff_ukey(${1:array1}, ${2:array2})" }, + { "trigger": "array_fill", "contents": "array_fill(${1:start_index}, ${2:num}, ${3:value})" }, + { "trigger": "array_fill_keys", "contents": "array_fill_keys(${1:keys}, ${2:value})" }, + { "trigger": "array_filter", "contents": "array_filter(${1:input})" }, + { "trigger": "array_flip", "contents": "array_flip(${1:trans})" }, + { "trigger": "array_intersect", "contents": "array_intersect(${1:array1}, ${2:array2})" }, + { "trigger": "array_intersect_assoc", "contents": "array_intersect_assoc(${1:array1}, ${2:array2})" }, + { "trigger": "array_intersect_key", "contents": "array_intersect_key(${1:array1}, ${2:array2})" }, + { "trigger": "array_intersect_uassoc", "contents": "array_intersect_uassoc(${1:array1}, ${2:array2})" }, + { "trigger": "array_intersect_ukey", "contents": "array_intersect_ukey(${1:array1}, ${2:array2})" }, + { "trigger": "array_key_exists", "contents": "array_key_exists(${1:key}, ${2:search})" }, + { "trigger": "array_keys", "contents": "array_keys(${1:input})" }, + { "trigger": "array_map", "contents": "array_map(${1:callback}, ${2:arr1})" }, + { "trigger": "array_merge", "contents": "array_merge(${1:array1})" }, + { "trigger": "array_merge_recursive", "contents": "array_merge_recursive(${1:array1})" }, + { "trigger": "array_multisort", "contents": "array_multisort(${1:arr})" }, + { "trigger": "array_pad", "contents": "array_pad(${1:input}, ${2:pad_size}, ${3:pad_value})" }, + { "trigger": "array_pop", "contents": "array_pop(${1:array})" }, + { "trigger": "array_product", "contents": "array_product(${1:array})" }, + { "trigger": "array_push", "contents": "array_push(${1:array}, ${2:var})" }, + { "trigger": "array_rand", "contents": "array_rand(${1:input})" }, + { "trigger": "array_reduce", "contents": "array_reduce(${1:input}, ${2:function})" }, + { "trigger": "array_replace", "contents": "array_replace(${1:array}, ${2:array1})" }, + { "trigger": "array_replace_recursive", "contents": "array_replace_recursive(${1:array}, ${2:array1})" }, + { "trigger": "array_reverse", "contents": "array_reverse(${1:array})" }, + { "trigger": "array_search", "contents": "array_search(${1:needle}, ${2:haystack})" }, + { "trigger": "array_shift", "contents": "array_shift(${1:array})" }, + { "trigger": "array_slice", "contents": "array_slice(${1:array}, ${2:offset})" }, + { "trigger": "array_splice", "contents": "array_splice(${1:input}, ${2:offset})" }, + { "trigger": "array_sum", "contents": "array_sum(${1:array})" }, + { "trigger": "array_udiff", "contents": "array_udiff(${1:array1}, ${2:array2})" }, + { "trigger": "array_udiff_assoc", "contents": "array_udiff_assoc(${1:array1}, ${2:array2})" }, + { "trigger": "array_udiff_uassoc", "contents": "array_udiff_uassoc(${1:array1}, ${2:array2})" }, + { "trigger": "array_uintersect", "contents": "array_uintersect(${1:array1}, ${2:array2})" }, + { "trigger": "array_uintersect_assoc", "contents": "array_uintersect_assoc(${1:array1}, ${2:array2})" }, + { "trigger": "array_uintersect_uassoc", "contents": "array_uintersect_uassoc(${1:array1}, ${2:array2})" }, + { "trigger": "array_unique", "contents": "array_unique(${1:array})" }, + { "trigger": "array_unshift", "contents": "array_unshift(${1:array}, ${2:var})" }, + { "trigger": "array_values", "contents": "array_values(${1:input})" }, + { "trigger": "array_walk", "contents": "array_walk(${1:array}, ${2:funcname})" }, + { "trigger": "array_walk_recursive", "contents": "array_walk_recursive(${1:input}, ${2:funcname})" }, + { "trigger": "arsort", "contents": "arsort(${1:array})" }, + { "trigger": "asin", "contents": "asin(${1:arg})" }, + { "trigger": "asinh", "contents": "asinh(${1:arg})" }, + { "trigger": "asort", "contents": "asort(${1:array})" }, + { "trigger": "assert", "contents": "assert(${1:assertion})" }, + { "trigger": "assert_options", "contents": "assert_options(${1:what})" }, + { "trigger": "atan", "contents": "atan(${1:arg})" }, + { "trigger": "atan2", "contents": "atan2(${1:y}, ${2:x})" }, + { "trigger": "atanh", "contents": "atanh(${1:arg})" }, + { "trigger": "base64_decode", "contents": "base64_decode(${1:data})" }, + { "trigger": "base64_encode", "contents": "base64_encode(${1:data})" }, + { "trigger": "base_convert", "contents": "base_convert(${1:number}, ${2:frombase}, ${3:tobase})" }, + { "trigger": "basename", "contents": "basename(${1:path})" }, + { "trigger": "bbcode_add_element", "contents": "bbcode_add_element(${1:bbcode_container}, ${2:tag_name}, ${3:tag_rules})" }, + { "trigger": "bbcode_add_smiley", "contents": "bbcode_add_smiley(${1:bbcode_container}, ${2:smiley}, ${3:replace_by})" }, + { "trigger": "bbcode_create", "contents": "bbcode_create()" }, + { "trigger": "bbcode_destroy", "contents": "bbcode_destroy(${1:bbcode_container})" }, + { "trigger": "bbcode_parse", "contents": "bbcode_parse(${1:bbcode_container}, ${2:to_parse})" }, + { "trigger": "bbcode_set_arg_parser", "contents": "bbcode_set_arg_parser(${1:bbcode_container}, ${2:bbcode_arg_parser})" }, + { "trigger": "bbcode_set_flags", "contents": "bbcode_set_flags(${1:bbcode_container}, ${2:flags})" }, + { "trigger": "bcadd", "contents": "bcadd(${1:left_operand}, ${2:right_operand})" }, + { "trigger": "bccomp", "contents": "bccomp(${1:left_operand}, ${2:right_operand})" }, + { "trigger": "bcdiv", "contents": "bcdiv(${1:left_operand}, ${2:right_operand})" }, + { "trigger": "bcmod", "contents": "bcmod(${1:left_operand}, ${2:modulus})" }, + { "trigger": "bcmul", "contents": "bcmul(${1:left_operand}, ${2:right_operand})" }, + { "trigger": "bcompiler_load", "contents": "bcompiler_load(${1:filename})" }, + { "trigger": "bcompiler_load_exe", "contents": "bcompiler_load_exe(${1:filename})" }, + { "trigger": "bcompiler_parse_class", "contents": "bcompiler_parse_class(${1:class}, ${2:callback})" }, + { "trigger": "bcompiler_read", "contents": "bcompiler_read(${1:filehandle})" }, + { "trigger": "bcompiler_write_class", "contents": "bcompiler_write_class(${1:filehandle}, ${2:className})" }, + { "trigger": "bcompiler_write_constant", "contents": "bcompiler_write_constant(${1:filehandle}, ${2:constantName})" }, + { "trigger": "bcompiler_write_exe_footer", "contents": "bcompiler_write_exe_footer(${1:filehandle}, ${2:startpos})" }, + { "trigger": "bcompiler_write_file", "contents": "bcompiler_write_file(${1:filehandle}, ${2:filename})" }, + { "trigger": "bcompiler_write_footer", "contents": "bcompiler_write_footer(${1:filehandle})" }, + { "trigger": "bcompiler_write_function", "contents": "bcompiler_write_function(${1:filehandle}, ${2:functionName})" }, + { "trigger": "bcompiler_write_functions_from_file", "contents": "bcompiler_write_functions_from_file(${1:filehandle}, ${2:fileName})" }, + { "trigger": "bcompiler_write_header", "contents": "bcompiler_write_header(${1:filehandle})" }, + { "trigger": "bcompiler_write_included_filename", "contents": "bcompiler_write_included_filename(${1:filehandle}, ${2:filename})" }, + { "trigger": "bcpow", "contents": "bcpow(${1:left_operand}, ${2:right_operand})" }, + { "trigger": "bcpowmod", "contents": "bcpowmod(${1:left_operand}, ${2:right_operand}, ${3:modulus})" }, + { "trigger": "bcscale", "contents": "bcscale(${1:scale})" }, + { "trigger": "bcsqrt", "contents": "bcsqrt(${1:operand})" }, + { "trigger": "bcsub", "contents": "bcsub(${1:left_operand}, ${2:right_operand})" }, + { "trigger": "bin2hex", "contents": "bin2hex(${1:str})" }, + { "trigger": "bind_textdomain_codeset", "contents": "bind_textdomain_codeset(${1:domain}, ${2:codeset})" }, + { "trigger": "bindec", "contents": "bindec(${1:binary_string})" }, + { "trigger": "bindtextdomain", "contents": "bindtextdomain(${1:domain}, ${2:directory})" }, + { "trigger": "bson_decode", "contents": "bson_decode(${1:bson})" }, + { "trigger": "bson_encode", "contents": "bson_encode(${1:anything})" }, + { "trigger": "bzclose", "contents": "bzclose(${1:bz})" }, + { "trigger": "bzcompress", "contents": "bzcompress(${1:source})" }, + { "trigger": "bzdecompress", "contents": "bzdecompress(${1:source})" }, + { "trigger": "bzerrno", "contents": "bzerrno(${1:bz})" }, + { "trigger": "bzerror", "contents": "bzerror(${1:bz})" }, + { "trigger": "bzerrstr", "contents": "bzerrstr(${1:bz})" }, + { "trigger": "bzflush", "contents": "bzflush(${1:bz})" }, + { "trigger": "bzopen", "contents": "bzopen(${1:filename}, ${2:mode})" }, + { "trigger": "bzread", "contents": "bzread(${1:bz})" }, + { "trigger": "bzwrite", "contents": "bzwrite(${1:bz}, ${2:data})" }, + { "trigger": "cairo_create", "contents": "cairo_create(${1:surface})" }, + { "trigger": "cairo_font_face_get_type", "contents": "cairo_font_face_get_type(${1:fontface})" }, + { "trigger": "cairo_font_face_status", "contents": "cairo_font_face_status(${1:fontface})" }, + { "trigger": "cairo_font_options_create", "contents": "cairo_font_options_create(${1:oid})" }, + { "trigger": "cairo_font_options_equal", "contents": "cairo_font_options_equal(${1:options}, ${2:other})" }, + { "trigger": "cairo_font_options_get_antialias", "contents": "cairo_font_options_get_antialias(${1:options})" }, + { "trigger": "cairo_font_options_get_hint_metrics", "contents": "cairo_font_options_get_hint_metrics(${1:options})" }, + { "trigger": "cairo_font_options_get_hint_style", "contents": "cairo_font_options_get_hint_style(${1:options})" }, + { "trigger": "cairo_font_options_get_subpixel_order", "contents": "cairo_font_options_get_subpixel_order(${1:options})" }, + { "trigger": "cairo_font_options_hash", "contents": "cairo_font_options_hash(${1:options})" }, + { "trigger": "cairo_font_options_merge", "contents": "cairo_font_options_merge(${1:options}, ${2:other})" }, + { "trigger": "cairo_font_options_set_antialias", "contents": "cairo_font_options_set_antialias(${1:options}, ${2:antialias})" }, + { "trigger": "cairo_font_options_set_hint_metrics", "contents": "cairo_font_options_set_hint_metrics(${1:options}, ${2:hint_metrics})" }, + { "trigger": "cairo_font_options_set_hint_style", "contents": "cairo_font_options_set_hint_style(${1:options}, ${2:hint_style})" }, + { "trigger": "cairo_font_options_set_subpixel_order", "contents": "cairo_font_options_set_subpixel_order(${1:options}, ${2:subpixel_order})" }, + { "trigger": "cairo_font_options_status", "contents": "cairo_font_options_status(${1:options})" }, + { "trigger": "cairo_format_stride_for_width", "contents": "cairo_format_stride_for_width(${1:format}, ${2:width})" }, + { "trigger": "cairo_image_surface_create", "contents": "cairo_image_surface_create(${1:format}, ${2:width}, ${3:height})" }, + { "trigger": "cairo_image_surface_create_for_data", "contents": "cairo_image_surface_create_for_data(${1:data}, ${2:format}, ${3:width}, ${4:height})" }, + { "trigger": "cairo_image_surface_create_from_png", "contents": "cairo_image_surface_create_from_png(${1:file})" }, + { "trigger": "cairo_image_surface_get_data", "contents": "cairo_image_surface_get_data(${1:surface})" }, + { "trigger": "cairo_image_surface_get_format", "contents": "cairo_image_surface_get_format(${1:surface})" }, + { "trigger": "cairo_image_surface_get_height", "contents": "cairo_image_surface_get_height(${1:surface})" }, + { "trigger": "cairo_image_surface_get_stride", "contents": "cairo_image_surface_get_stride(${1:surface})" }, + { "trigger": "cairo_image_surface_get_width", "contents": "cairo_image_surface_get_width(${1:surface})" }, + { "trigger": "cairo_matrix_create_scale", "contents": "cairo_matrix_create_scale()" }, + { "trigger": "cairo_matrix_create_translate", "contents": "cairo_matrix_create_translate()" }, + { "trigger": "cairo_matrix_invert", "contents": "cairo_matrix_invert(${1:matrix})" }, + { "trigger": "cairo_matrix_multiply", "contents": "cairo_matrix_multiply(${1:matrix1}, ${2:matrix2})" }, + { "trigger": "cairo_matrix_rotate", "contents": "cairo_matrix_rotate(${1:matrix}, ${2:radians})" }, + { "trigger": "cairo_matrix_transform_distance", "contents": "cairo_matrix_transform_distance(${1:matrix}, ${2:dx}, ${3:dy})" }, + { "trigger": "cairo_matrix_transform_point", "contents": "cairo_matrix_transform_point(${1:matrix}, ${2:dx}, ${3:dy})" }, + { "trigger": "cairo_matrix_translate", "contents": "cairo_matrix_translate(${1:matrix}, ${2:tx}, ${3:ty})" }, + { "trigger": "cairo_pattern_add_color_stop_rgb", "contents": "cairo_pattern_add_color_stop_rgb(${1:pattern}, ${2:offset}, ${3:red}, ${4:green}, ${5:blue})" }, + { "trigger": "cairo_pattern_add_color_stop_rgba", "contents": "cairo_pattern_add_color_stop_rgba(${1:pattern}, ${2:offset}, ${3:red}, ${4:green}, ${5:blue}, ${6:alpha})" }, + { "trigger": "cairo_pattern_create_for_surface", "contents": "cairo_pattern_create_for_surface(${1:surface})" }, + { "trigger": "cairo_pattern_create_linear", "contents": "cairo_pattern_create_linear(${1:x0}, ${2:y0}, ${3:x1}, ${4:y1})" }, + { "trigger": "cairo_pattern_create_radial", "contents": "cairo_pattern_create_radial(${1:x0}, ${2:y0}, ${3:r0}, ${4:x1}, ${5:y1}, ${6:r1})" }, + { "trigger": "cairo_pattern_create_rgb", "contents": "cairo_pattern_create_rgb(${1:red}, ${2:green}, ${3:blue})" }, + { "trigger": "cairo_pattern_create_rgba", "contents": "cairo_pattern_create_rgba(${1:red}, ${2:green}, ${3:blue}, ${4:alpha})" }, + { "trigger": "cairo_pattern_get_color_stop_count", "contents": "cairo_pattern_get_color_stop_count(${1:pattern})" }, + { "trigger": "cairo_pattern_get_color_stop_rgba", "contents": "cairo_pattern_get_color_stop_rgba(${1:pattern}, ${2:index})" }, + { "trigger": "cairo_pattern_get_extend", "contents": "cairo_pattern_get_extend(${1:pattern})" }, + { "trigger": "cairo_pattern_get_filter", "contents": "cairo_pattern_get_filter(${1:pattern})" }, + { "trigger": "cairo_pattern_get_linear_points", "contents": "cairo_pattern_get_linear_points(${1:pattern})" }, + { "trigger": "cairo_pattern_get_matrix", "contents": "cairo_pattern_get_matrix(${1:pattern})" }, + { "trigger": "cairo_pattern_get_radial_circles", "contents": "cairo_pattern_get_radial_circles(${1:pattern})" }, + { "trigger": "cairo_pattern_get_rgba", "contents": "cairo_pattern_get_rgba(${1:pattern})" }, + { "trigger": "cairo_pattern_get_surface", "contents": "cairo_pattern_get_surface(${1:pattern})" }, + { "trigger": "cairo_pattern_get_type", "contents": "cairo_pattern_get_type(${1:pattern})" }, + { "trigger": "cairo_pattern_set_extend", "contents": "cairo_pattern_set_extend(${1:pattern}, ${2:extend})" }, + { "trigger": "cairo_pattern_set_filter", "contents": "cairo_pattern_set_filter(${1:pattern}, ${2:filter})" }, + { "trigger": "cairo_pattern_set_matrix", "contents": "cairo_pattern_set_matrix(${1:pattern}, ${2:matrix})" }, + { "trigger": "cairo_pattern_status", "contents": "cairo_pattern_status(${1:pattern})" }, + { "trigger": "cairo_pdf_surface_create", "contents": "cairo_pdf_surface_create(${1:file}, ${2:width}, ${3:height})" }, + { "trigger": "cairo_pdf_surface_set_size", "contents": "cairo_pdf_surface_set_size(${1:surface}, ${2:width}, ${3:height})" }, + { "trigger": "cairo_ps_get_levels", "contents": "cairo_ps_get_levels(${1:oid})" }, + { "trigger": "cairo_ps_level_to_string", "contents": "cairo_ps_level_to_string(${1:level})" }, + { "trigger": "cairo_ps_surface_create", "contents": "cairo_ps_surface_create(${1:file}, ${2:width}, ${3:height})" }, + { "trigger": "cairo_ps_surface_dsc_begin_page_setup", "contents": "cairo_ps_surface_dsc_begin_page_setup(${1:surface})" }, + { "trigger": "cairo_ps_surface_dsc_begin_setup", "contents": "cairo_ps_surface_dsc_begin_setup(${1:surface})" }, + { "trigger": "cairo_ps_surface_dsc_comment", "contents": "cairo_ps_surface_dsc_comment(${1:surface}, ${2:comment})" }, + { "trigger": "cairo_ps_surface_get_eps", "contents": "cairo_ps_surface_get_eps(${1:surface})" }, + { "trigger": "cairo_ps_surface_restrict_to_level", "contents": "cairo_ps_surface_restrict_to_level(${1:surface}, ${2:level})" }, + { "trigger": "cairo_ps_surface_set_eps", "contents": "cairo_ps_surface_set_eps(${1:surface}, ${2:level})" }, + { "trigger": "cairo_ps_surface_set_size", "contents": "cairo_ps_surface_set_size(${1:surface}, ${2:width}, ${3:height})" }, + { "trigger": "cairo_scaled_font_create", "contents": "cairo_scaled_font_create(${1:fontface}, ${2:matrix}, ${3:ctm}, ${4:fontoptions})" }, + { "trigger": "cairo_scaled_font_extents", "contents": "cairo_scaled_font_extents(${1:scaledfont})" }, + { "trigger": "cairo_scaled_font_get_ctm", "contents": "cairo_scaled_font_get_ctm(${1:scaledfont})" }, + { "trigger": "cairo_scaled_font_get_font_face", "contents": "cairo_scaled_font_get_font_face(${1:scaledfont})" }, + { "trigger": "cairo_scaled_font_get_font_matrix", "contents": "cairo_scaled_font_get_font_matrix(${1:scaledfont})" }, + { "trigger": "cairo_scaled_font_get_font_options", "contents": "cairo_scaled_font_get_font_options(${1:scaledfont})" }, + { "trigger": "cairo_scaled_font_get_scale_matrix", "contents": "cairo_scaled_font_get_scale_matrix(${1:scaledfont})" }, + { "trigger": "cairo_scaled_font_get_type", "contents": "cairo_scaled_font_get_type(${1:scaledfont})" }, + { "trigger": "cairo_scaled_font_glyph_extents", "contents": "cairo_scaled_font_glyph_extents(${1:scaledfont}, ${2:glyphs})" }, + { "trigger": "cairo_scaled_font_status", "contents": "cairo_scaled_font_status(${1:scaledfont})" }, + { "trigger": "cairo_scaled_font_text_extents", "contents": "cairo_scaled_font_text_extents(${1:scaledfont}, ${2:text})" }, + { "trigger": "cairo_surface_copy_page", "contents": "cairo_surface_copy_page(${1:surface})" }, + { "trigger": "cairo_surface_create_similar", "contents": "cairo_surface_create_similar(${1:surface}, ${2:content}, ${3:width}, ${4:height})" }, + { "trigger": "cairo_surface_finish", "contents": "cairo_surface_finish(${1:surface})" }, + { "trigger": "cairo_surface_flush", "contents": "cairo_surface_flush(${1:surface})" }, + { "trigger": "cairo_surface_get_content", "contents": "cairo_surface_get_content(${1:surface})" }, + { "trigger": "cairo_surface_get_device_offset", "contents": "cairo_surface_get_device_offset(${1:surface})" }, + { "trigger": "cairo_surface_get_font_options", "contents": "cairo_surface_get_font_options(${1:surface})" }, + { "trigger": "cairo_surface_get_type", "contents": "cairo_surface_get_type(${1:surface})" }, + { "trigger": "cairo_surface_mark_dirty", "contents": "cairo_surface_mark_dirty(${1:surface})" }, + { "trigger": "cairo_surface_mark_dirty_rectangle", "contents": "cairo_surface_mark_dirty_rectangle(${1:surface}, ${2:x}, ${3:y}, ${4:width}, ${5:height})" }, + { "trigger": "cairo_surface_set_device_offset", "contents": "cairo_surface_set_device_offset(${1:surface}, ${2:x}, ${3:y})" }, + { "trigger": "cairo_surface_set_fallback_resolution", "contents": "cairo_surface_set_fallback_resolution(${1:surface}, ${2:x}, ${3:y})" }, + { "trigger": "cairo_surface_show_page", "contents": "cairo_surface_show_page(${1:surface})" }, + { "trigger": "cairo_surface_status", "contents": "cairo_surface_status(${1:surface})" }, + { "trigger": "cairo_surface_write_to_png", "contents": "cairo_surface_write_to_png(${1:surface}, ${2:stream})" }, + { "trigger": "cairo_svg_surface_create", "contents": "cairo_svg_surface_create(${1:file}, ${2:width}, ${3:height})" }, + { "trigger": "cairo_svg_surface_restrict_to_version", "contents": "cairo_svg_surface_restrict_to_version(${1:surface}, ${2:version})" }, + { "trigger": "cairo_svg_version_to_string", "contents": "cairo_svg_version_to_string(${1:version})" }, + { "trigger": "cal_days_in_month", "contents": "cal_days_in_month(${1:calendar}, ${2:month}, ${3:year})" }, + { "trigger": "cal_from_jd", "contents": "cal_from_jd(${1:jd}, ${2:calendar})" }, + { "trigger": "cal_info", "contents": "cal_info()" }, + { "trigger": "cal_to_jd", "contents": "cal_to_jd(${1:calendar}, ${2:month}, ${3:day}, ${4:year})" }, + { "trigger": "calcul_hmac", "contents": "calcul_hmac(${1:clent}, ${2:siretcode}, ${3:price}, ${4:reference}, ${5:validity}, ${6:taxation}, ${7:devise}, ${8:language})" }, + { "trigger": "calculhmac", "contents": "calculhmac(${1:clent}, ${2:data})" }, + { "trigger": "call_user_func", "contents": "call_user_func(${1:function})" }, + { "trigger": "call_user_func_array", "contents": "call_user_func_array(${1:function}, ${2:param_arr})" }, + { "trigger": "call_user_method", "contents": "call_user_method(${1:method_name}, ${2:obj})" }, + { "trigger": "call_user_method_array", "contents": "call_user_method_array(${1:method_name}, ${2:obj}, ${3:params})" }, + { "trigger": "ceil", "contents": "ceil(${1:value})" }, + { "trigger": "chdb_create", "contents": "chdb_create(${1:pathname}, ${2:data})" }, + { "trigger": "chdir", "contents": "chdir(${1:directory})" }, + { "trigger": "checkdate", "contents": "checkdate(${1:month}, ${2:day}, ${3:year})" }, + { "trigger": "checkdnsrr", "contents": "checkdnsrr(${1:host})" }, + { "trigger": "chgrp", "contents": "chgrp(${1:filename}, ${2:group})" }, + { "trigger": "chmod", "contents": "chmod(${1:filename}, ${2:mode})" }, + { "trigger": "chop", "contents": "chop()" }, + { "trigger": "chown", "contents": "chown(${1:filename}, ${2:user})" }, + { "trigger": "chr", "contents": "chr(${1:ascii})" }, + { "trigger": "chroot", "contents": "chroot(${1:directory})" }, + { "trigger": "chunk_split", "contents": "chunk_split(${1:body})" }, + { "trigger": "class_alias", "contents": "class_alias()" }, + { "trigger": "class_exists", "contents": "class_exists(${1:class_name})" }, + { "trigger": "class_implements", "contents": "class_implements(${1:class})" }, + { "trigger": "class_parents", "contents": "class_parents(${1:class})" }, + { "trigger": "classkit_import", "contents": "classkit_import(${1:filename})" }, + { "trigger": "classkit_method_add", "contents": "classkit_method_add(${1:classname}, ${2:methodname}, ${3:args}, ${4:code})" }, + { "trigger": "classkit_method_copy", "contents": "classkit_method_copy(${1:dClass}, ${2:dMethod}, ${3:sClass})" }, + { "trigger": "classkit_method_redefine", "contents": "classkit_method_redefine(${1:classname}, ${2:methodname}, ${3:args}, ${4:code})" }, + { "trigger": "classkit_method_remove", "contents": "classkit_method_remove(${1:classname}, ${2:methodname})" }, + { "trigger": "classkit_method_rename", "contents": "classkit_method_rename(${1:classname}, ${2:methodname}, ${3:newname})" }, + { "trigger": "clearstatcache", "contents": "clearstatcache()" }, + { "trigger": "closedir", "contents": "closedir()" }, + { "trigger": "closelog", "contents": "closelog(${1:oid})" }, + { "trigger": "com_addref", "contents": "com_addref(${1:oid})" }, + { "trigger": "com_create_guid", "contents": "com_create_guid(${1:oid})" }, + { "trigger": "com_event_sink", "contents": "com_event_sink(${1:comobject}, ${2:sinkobject})" }, + { "trigger": "com_get", "contents": "com_get()" }, + { "trigger": "com_get_active_object", "contents": "com_get_active_object(${1:progid})" }, + { "trigger": "com_invoke", "contents": "com_invoke(${1:com_object}, ${2:function_name})" }, + { "trigger": "com_isenum", "contents": "com_isenum(${1:com_module})" }, + { "trigger": "com_load", "contents": "com_load()" }, + { "trigger": "com_load_typelib", "contents": "com_load_typelib(${1:typelib_name})" }, + { "trigger": "com_message_pump", "contents": "com_message_pump()" }, + { "trigger": "com_print_typeinfo", "contents": "com_print_typeinfo(${1:comobject})" }, + { "trigger": "com_propget", "contents": "com_propget()" }, + { "trigger": "com_propput", "contents": "com_propput()" }, + { "trigger": "com_propset", "contents": "com_propset()" }, + { "trigger": "com_release", "contents": "com_release(${1:oid})" }, + { "trigger": "com_set", "contents": "com_set()" }, + { "trigger": "compact", "contents": "compact(${1:varname})" }, + { "trigger": "connection_aborted", "contents": "connection_aborted(${1:oid})" }, + { "trigger": "connection_status", "contents": "connection_status(${1:oid})" }, + { "trigger": "connection_timeout", "contents": "connection_timeout(${1:oid})" }, + { "trigger": "constant", "contents": "constant(${1:name})" }, + { "trigger": "convert_cyr_string", "contents": "convert_cyr_string(${1:str}, ${2:from}, ${3:to})" }, + { "trigger": "convert_uudecode", "contents": "convert_uudecode(${1:data})" }, + { "trigger": "convert_uuencode", "contents": "convert_uuencode(${1:data})" }, + { "trigger": "copy", "contents": "copy(${1:source}, ${2:dest})" }, + { "trigger": "cos", "contents": "cos(${1:arg})" }, + { "trigger": "cosh", "contents": "cosh(${1:arg})" }, + { "trigger": "count", "contents": "count(${1:var})" }, + { "trigger": "count_chars", "contents": "count_chars(${1:string})" }, + { "trigger": "counter_bump", "contents": "counter_bump(${1:offset})" }, + { "trigger": "counter_bump_value", "contents": "counter_bump_value(${1:counter}, ${2:offset})" }, + { "trigger": "counter_create", "contents": "counter_create(${1:name})" }, + { "trigger": "counter_get", "contents": "counter_get(${1:oid})" }, + { "trigger": "counter_get_meta", "contents": "counter_get_meta(${1:counter}, ${2:attribute})" }, + { "trigger": "counter_get_named", "contents": "counter_get_named(${1:name})" }, + { "trigger": "counter_get_value", "contents": "counter_get_value(${1:counter})" }, + { "trigger": "counter_reset", "contents": "counter_reset(${1:oid})" }, + { "trigger": "counter_reset_value", "contents": "counter_reset_value(${1:counter})" }, + { "trigger": "crack_check", "contents": "crack_check(${1:dictionary}, ${2:password})" }, + { "trigger": "crack_closedict", "contents": "crack_closedict()" }, + { "trigger": "crack_getlastmessage", "contents": "crack_getlastmessage(${1:oid})" }, + { "trigger": "crack_opendict", "contents": "crack_opendict(${1:dictionary})" }, + { "trigger": "crc32", "contents": "crc32(${1:str})" }, + { "trigger": "create_function", "contents": "create_function(${1:args}, ${2:code})" }, + { "trigger": "crypt", "contents": "crypt(${1:str})" }, + { "trigger": "ctype_alnum", "contents": "ctype_alnum(${1:text})" }, + { "trigger": "ctype_alpha", "contents": "ctype_alpha(${1:text})" }, + { "trigger": "ctype_cntrl", "contents": "ctype_cntrl(${1:text})" }, + { "trigger": "ctype_digit", "contents": "ctype_digit(${1:text})" }, + { "trigger": "ctype_graph", "contents": "ctype_graph(${1:text})" }, + { "trigger": "ctype_lower", "contents": "ctype_lower(${1:text})" }, + { "trigger": "ctype_print", "contents": "ctype_print(${1:text})" }, + { "trigger": "ctype_punct", "contents": "ctype_punct(${1:text})" }, + { "trigger": "ctype_space", "contents": "ctype_space(${1:text})" }, + { "trigger": "ctype_upper", "contents": "ctype_upper(${1:text})" }, + { "trigger": "ctype_xdigit", "contents": "ctype_xdigit(${1:text})" }, + { "trigger": "cubrid_affected_rows", "contents": "cubrid_affected_rows()" }, + { "trigger": "cubrid_bind", "contents": "cubrid_bind(${1:req_identifier}, ${2:bind_index}, ${3:bind_value})" }, + { "trigger": "cubrid_client_encoding", "contents": "cubrid_client_encoding()" }, + { "trigger": "cubrid_close", "contents": "cubrid_close()" }, + { "trigger": "cubrid_close_prepare", "contents": "cubrid_close_prepare(${1:req_identifier})" }, + { "trigger": "cubrid_close_request", "contents": "cubrid_close_request(${1:req_identifier})" }, + { "trigger": "cubrid_col_get", "contents": "cubrid_col_get(${1:conn_identifier}, ${2:oid}, ${3:attr_name})" }, + { "trigger": "cubrid_col_size", "contents": "cubrid_col_size(${1:conn_identifier}, ${2:oid}, ${3:attr_name})" }, + { "trigger": "cubrid_column_names", "contents": "cubrid_column_names(${1:req_identifier})" }, + { "trigger": "cubrid_column_types", "contents": "cubrid_column_types(${1:req_identifier})" }, + { "trigger": "cubrid_commit", "contents": "cubrid_commit(${1:conn_identifier})" }, + { "trigger": "cubrid_connect", "contents": "cubrid_connect(${1:host}, ${2:port}, ${3:dbname})" }, + { "trigger": "cubrid_connect_with_url", "contents": "cubrid_connect_with_url(${1:conn_url})" }, + { "trigger": "cubrid_current_oid", "contents": "cubrid_current_oid(${1:req_identifier})" }, + { "trigger": "cubrid_data_seek", "contents": "cubrid_data_seek(${1:req_identifier}, ${2:row_number})" }, + { "trigger": "cubrid_db_name", "contents": "cubrid_db_name(${1:result}, ${2:index})" }, + { "trigger": "cubrid_disconnect", "contents": "cubrid_disconnect(${1:conn_identifier})" }, + { "trigger": "cubrid_drop", "contents": "cubrid_drop(${1:conn_identifier}, ${2:oid})" }, + { "trigger": "cubrid_errno", "contents": "cubrid_errno()" }, + { "trigger": "cubrid_error", "contents": "cubrid_error()" }, + { "trigger": "cubrid_error_code", "contents": "cubrid_error_code(${1:oid})" }, + { "trigger": "cubrid_error_code_facility", "contents": "cubrid_error_code_facility(${1:oid})" }, + { "trigger": "cubrid_error_msg", "contents": "cubrid_error_msg(${1:oid})" }, + { "trigger": "cubrid_execute", "contents": "cubrid_execute(${1:conn_identifier}, ${2:SQL})" }, + { "trigger": "cubrid_fetch", "contents": "cubrid_fetch(${1:result})" }, + { "trigger": "cubrid_fetch_array", "contents": "cubrid_fetch_array(${1:result})" }, + { "trigger": "cubrid_fetch_assoc", "contents": "cubrid_fetch_assoc(${1:result})" }, + { "trigger": "cubrid_fetch_field", "contents": "cubrid_fetch_field(${1:result})" }, + { "trigger": "cubrid_fetch_lengths", "contents": "cubrid_fetch_lengths(${1:result})" }, + { "trigger": "cubrid_fetch_object", "contents": "cubrid_fetch_object(${1:result})" }, + { "trigger": "cubrid_fetch_row", "contents": "cubrid_fetch_row(${1:result})" }, + { "trigger": "cubrid_field_flags", "contents": "cubrid_field_flags(${1:result}, ${2:field_offset})" }, + { "trigger": "cubrid_field_len", "contents": "cubrid_field_len(${1:result}, ${2:field_offset})" }, + { "trigger": "cubrid_field_name", "contents": "cubrid_field_name(${1:result}, ${2:field_offset})" }, + { "trigger": "cubrid_field_seek", "contents": "cubrid_field_seek(${1:result})" }, + { "trigger": "cubrid_field_table", "contents": "cubrid_field_table(${1:result}, ${2:field_offset})" }, + { "trigger": "cubrid_field_type", "contents": "cubrid_field_type(${1:result}, ${2:field_offset})" }, + { "trigger": "cubrid_free_result", "contents": "cubrid_free_result(${1:req_identifier})" }, + { "trigger": "cubrid_get", "contents": "cubrid_get(${1:conn_identifier}, ${2:oid})" }, + { "trigger": "cubrid_get_charset", "contents": "cubrid_get_charset(${1:conn_identifier})" }, + { "trigger": "cubrid_get_class_name", "contents": "cubrid_get_class_name(${1:conn_identifier}, ${2:oid})" }, + { "trigger": "cubrid_get_client_info", "contents": "cubrid_get_client_info(${1:oid})" }, + { "trigger": "cubrid_get_db_parameter", "contents": "cubrid_get_db_parameter(${1:conn_identifier})" }, + { "trigger": "cubrid_get_server_info", "contents": "cubrid_get_server_info(${1:conn_identifier})" }, + { "trigger": "cubrid_insert_id", "contents": "cubrid_insert_id(${1:class_name})" }, + { "trigger": "cubrid_is_instance", "contents": "cubrid_is_instance(${1:conn_identifier}, ${2:oid})" }, + { "trigger": "cubrid_list_dbs", "contents": "cubrid_list_dbs(${1:conn_identifier})" }, + { "trigger": "cubrid_load_from_glo", "contents": "cubrid_load_from_glo(${1:conn_identifier}, ${2:oid}, ${3:file_name})" }, + { "trigger": "cubrid_lob_close", "contents": "cubrid_lob_close(${1:lob_identifier_array})" }, + { "trigger": "cubrid_lob_export", "contents": "cubrid_lob_export(${1:conn_identifier}, ${2:lob_identifier}, ${3:path_name})" }, + { "trigger": "cubrid_lob_get", "contents": "cubrid_lob_get(${1:conn_identifier}, ${2:SQL})" }, + { "trigger": "cubrid_lob_send", "contents": "cubrid_lob_send(${1:conn_identifier}, ${2:lob_identifier})" }, + { "trigger": "cubrid_lob_size", "contents": "cubrid_lob_size(${1:lob_identifier})" }, + { "trigger": "cubrid_lock_read", "contents": "cubrid_lock_read(${1:conn_identifier}, ${2:oid})" }, + { "trigger": "cubrid_lock_write", "contents": "cubrid_lock_write(${1:conn_identifier}, ${2:oid})" }, + { "trigger": "cubrid_move_cursor", "contents": "cubrid_move_cursor(${1:req_identifier}, ${2:offset})" }, + { "trigger": "cubrid_new_glo", "contents": "cubrid_new_glo(${1:conn_identifier}, ${2:class_name}, ${3:file_name})" }, + { "trigger": "cubrid_num_cols", "contents": "cubrid_num_cols(${1:req_identifier})" }, + { "trigger": "cubrid_num_fields", "contents": "cubrid_num_fields(${1:result})" }, + { "trigger": "cubrid_num_rows", "contents": "cubrid_num_rows(${1:req_identifier})" }, + { "trigger": "cubrid_ping", "contents": "cubrid_ping()" }, + { "trigger": "cubrid_prepare", "contents": "cubrid_prepare(${1:conn_identifier}, ${2:prepare_stmt})" }, + { "trigger": "cubrid_put", "contents": "cubrid_put(${1:conn_identifier}, ${2:oid})" }, + { "trigger": "cubrid_query", "contents": "cubrid_query(${1:query})" }, + { "trigger": "cubrid_real_escape_string", "contents": "cubrid_real_escape_string(${1:unescaped_string})" }, + { "trigger": "cubrid_result", "contents": "cubrid_result(${1:result}, ${2:row})" }, + { "trigger": "cubrid_rollback", "contents": "cubrid_rollback(${1:conn_identifier})" }, + { "trigger": "cubrid_save_to_glo", "contents": "cubrid_save_to_glo(${1:conn_identifier}, ${2:oid}, ${3:file_name})" }, + { "trigger": "cubrid_schema", "contents": "cubrid_schema(${1:conn_identifier}, ${2:schema_type})" }, + { "trigger": "cubrid_send_glo", "contents": "cubrid_send_glo(${1:conn_identifier}, ${2:oid})" }, + { "trigger": "cubrid_seq_drop", "contents": "cubrid_seq_drop(${1:conn_identifier}, ${2:oid}, ${3:attr_name}, ${4:index})" }, + { "trigger": "cubrid_seq_insert", "contents": "cubrid_seq_insert(${1:conn_identifier}, ${2:oid}, ${3:attr_name}, ${4:index}, ${5:seq_element})" }, + { "trigger": "cubrid_seq_put", "contents": "cubrid_seq_put(${1:conn_identifier}, ${2:oid}, ${3:attr_name}, ${4:index}, ${5:seq_element})" }, + { "trigger": "cubrid_set_add", "contents": "cubrid_set_add(${1:conn_identifier}, ${2:oid}, ${3:attr_name}, ${4:set_element})" }, + { "trigger": "cubrid_set_drop", "contents": "cubrid_set_drop(${1:conn_identifier}, ${2:oid}, ${3:attr_name}, ${4:set_element})" }, + { "trigger": "cubrid_unbuffered_query", "contents": "cubrid_unbuffered_query(${1:query})" }, + { "trigger": "cubrid_version", "contents": "cubrid_version(${1:oid})" }, + { "trigger": "curl_close", "contents": "curl_close(${1:ch})" }, + { "trigger": "curl_copy_handle", "contents": "curl_copy_handle(${1:ch})" }, + { "trigger": "curl_errno", "contents": "curl_errno(${1:ch})" }, + { "trigger": "curl_error", "contents": "curl_error(${1:ch})" }, + { "trigger": "curl_exec", "contents": "curl_exec(${1:ch})" }, + { "trigger": "curl_getinfo", "contents": "curl_getinfo(${1:ch})" }, + { "trigger": "curl_init", "contents": "curl_init()" }, + { "trigger": "curl_multi_add_handle", "contents": "curl_multi_add_handle(${1:mh}, ${2:ch})" }, + { "trigger": "curl_multi_close", "contents": "curl_multi_close(${1:mh})" }, + { "trigger": "curl_multi_exec", "contents": "curl_multi_exec(${1:mh}, ${2:still_running})" }, + { "trigger": "curl_multi_getcontent", "contents": "curl_multi_getcontent(${1:ch})" }, + { "trigger": "curl_multi_info_read", "contents": "curl_multi_info_read(${1:mh})" }, + { "trigger": "curl_multi_init", "contents": "curl_multi_init(${1:oid})" }, + { "trigger": "curl_multi_remove_handle", "contents": "curl_multi_remove_handle(${1:mh}, ${2:ch})" }, + { "trigger": "curl_multi_select", "contents": "curl_multi_select(${1:mh})" }, + { "trigger": "curl_setopt", "contents": "curl_setopt(${1:ch}, ${2:option}, ${3:value})" }, + { "trigger": "curl_setopt_array", "contents": "curl_setopt_array(${1:ch}, ${2:options})" }, + { "trigger": "curl_version", "contents": "curl_version()" }, + { "trigger": "current", "contents": "current(${1:array})" }, + { "trigger": "cyrus_authenticate", "contents": "cyrus_authenticate(${1:connection})" }, + { "trigger": "cyrus_bind", "contents": "cyrus_bind(${1:connection}, ${2:callbacks})" }, + { "trigger": "cyrus_close", "contents": "cyrus_close(${1:connection})" }, + { "trigger": "cyrus_connect", "contents": "cyrus_connect()" }, + { "trigger": "cyrus_query", "contents": "cyrus_query(${1:connection}, ${2:query})" }, + { "trigger": "cyrus_unbind", "contents": "cyrus_unbind(${1:connection}, ${2:trigger_name})" }, + { "trigger": "date", "contents": "date(${1:format})" }, + { "trigger": "date_add", "contents": "date_add()" }, + { "trigger": "date_create", "contents": "date_create()" }, + { "trigger": "date_create_from_format", "contents": "date_create_from_format()" }, + { "trigger": "date_date_set", "contents": "date_date_set()" }, + { "trigger": "date_default_timezone_get", "contents": "date_default_timezone_get(${1:oid})" }, + { "trigger": "date_default_timezone_set", "contents": "date_default_timezone_set(${1:timezone_identifier})" }, + { "trigger": "date_diff", "contents": "date_diff()" }, + { "trigger": "date_format", "contents": "date_format()" }, + { "trigger": "date_get_last_errors", "contents": "date_get_last_errors()" }, + { "trigger": "date_interval_create_from_date_string", "contents": "date_interval_create_from_date_string()" }, + { "trigger": "date_interval_format", "contents": "date_interval_format()" }, + { "trigger": "date_isodate_set", "contents": "date_isodate_set()" }, + { "trigger": "date_modify", "contents": "date_modify()" }, + { "trigger": "date_offset_get", "contents": "date_offset_get()" }, + { "trigger": "date_parse", "contents": "date_parse(${1:date})" }, + { "trigger": "date_parse_from_format", "contents": "date_parse_from_format(${1:format}, ${2:date})" }, + { "trigger": "date_sub", "contents": "date_sub()" }, + { "trigger": "date_sun_info", "contents": "date_sun_info(${1:time}, ${2:latitude}, ${3:longitude})" }, + { "trigger": "date_sunrise", "contents": "date_sunrise(${1:timestamp})" }, + { "trigger": "date_sunset", "contents": "date_sunset(${1:timestamp})" }, + { "trigger": "date_time_set", "contents": "date_time_set()" }, + { "trigger": "date_timestamp_get", "contents": "date_timestamp_get()" }, + { "trigger": "date_timestamp_set", "contents": "date_timestamp_set()" }, + { "trigger": "date_timezone_get", "contents": "date_timezone_get()" }, + { "trigger": "date_timezone_set", "contents": "date_timezone_set()" }, + { "trigger": "db2_autocommit", "contents": "db2_autocommit(${1:connection})" }, + { "trigger": "db2_bind_param", "contents": "db2_bind_param(${1:stmt}, ${2:parameter-number}, ${3:variable-name})" }, + { "trigger": "db2_client_info", "contents": "db2_client_info(${1:connection})" }, + { "trigger": "db2_close", "contents": "db2_close(${1:connection})" }, + { "trigger": "db2_column_privileges", "contents": "db2_column_privileges(${1:connection})" }, + { "trigger": "db2_columns", "contents": "db2_columns(${1:connection})" }, + { "trigger": "db2_commit", "contents": "db2_commit(${1:connection})" }, + { "trigger": "db2_conn_error", "contents": "db2_conn_error()" }, + { "trigger": "db2_conn_errormsg", "contents": "db2_conn_errormsg()" }, + { "trigger": "db2_connect", "contents": "db2_connect(${1:database}, ${2:username}, ${3:password})" }, + { "trigger": "db2_cursor_type", "contents": "db2_cursor_type(${1:stmt})" }, + { "trigger": "db2_escape_string", "contents": "db2_escape_string(${1:string_literal})" }, + { "trigger": "db2_exec", "contents": "db2_exec(${1:connection}, ${2:statement})" }, + { "trigger": "db2_execute", "contents": "db2_execute(${1:stmt})" }, + { "trigger": "db2_fetch_array", "contents": "db2_fetch_array(${1:stmt})" }, + { "trigger": "db2_fetch_assoc", "contents": "db2_fetch_assoc(${1:stmt})" }, + { "trigger": "db2_fetch_both", "contents": "db2_fetch_both(${1:stmt})" }, + { "trigger": "db2_fetch_object", "contents": "db2_fetch_object(${1:stmt})" }, + { "trigger": "db2_fetch_row", "contents": "db2_fetch_row(${1:stmt})" }, + { "trigger": "db2_field_display_size", "contents": "db2_field_display_size(${1:stmt}, ${2:column})" }, + { "trigger": "db2_field_name", "contents": "db2_field_name(${1:stmt}, ${2:column})" }, + { "trigger": "db2_field_num", "contents": "db2_field_num(${1:stmt}, ${2:column})" }, + { "trigger": "db2_field_precision", "contents": "db2_field_precision(${1:stmt}, ${2:column})" }, + { "trigger": "db2_field_scale", "contents": "db2_field_scale(${1:stmt}, ${2:column})" }, + { "trigger": "db2_field_type", "contents": "db2_field_type(${1:stmt}, ${2:column})" }, + { "trigger": "db2_field_width", "contents": "db2_field_width(${1:stmt}, ${2:column})" }, + { "trigger": "db2_foreign_keys", "contents": "db2_foreign_keys(${1:connection}, ${2:qualifier}, ${3:schema}, ${4:table-name})" }, + { "trigger": "db2_free_result", "contents": "db2_free_result(${1:stmt})" }, + { "trigger": "db2_free_stmt", "contents": "db2_free_stmt(${1:stmt})" }, + { "trigger": "db2_get_option", "contents": "db2_get_option(${1:resource}, ${2:option})" }, + { "trigger": "db2_last_insert_id", "contents": "db2_last_insert_id(${1:resource})" }, + { "trigger": "db2_lob_read", "contents": "db2_lob_read(${1:stmt}, ${2:colnum}, ${3:length})" }, + { "trigger": "db2_next_result", "contents": "db2_next_result(${1:stmt})" }, + { "trigger": "db2_num_fields", "contents": "db2_num_fields(${1:stmt})" }, + { "trigger": "db2_num_rows", "contents": "db2_num_rows(${1:stmt})" }, + { "trigger": "db2_pclose", "contents": "db2_pclose(${1:resource})" }, + { "trigger": "db2_pconnect", "contents": "db2_pconnect(${1:database}, ${2:username}, ${3:password})" }, + { "trigger": "db2_prepare", "contents": "db2_prepare(${1:connection}, ${2:statement})" }, + { "trigger": "db2_primary_keys", "contents": "db2_primary_keys(${1:connection}, ${2:qualifier}, ${3:schema}, ${4:table-name})" }, + { "trigger": "db2_procedure_columns", "contents": "db2_procedure_columns(${1:connection}, ${2:qualifier}, ${3:schema}, ${4:procedure}, ${5:parameter})" }, + { "trigger": "db2_procedures", "contents": "db2_procedures(${1:connection}, ${2:qualifier}, ${3:schema}, ${4:procedure})" }, + { "trigger": "db2_result", "contents": "db2_result(${1:stmt}, ${2:column})" }, + { "trigger": "db2_rollback", "contents": "db2_rollback(${1:connection})" }, + { "trigger": "db2_server_info", "contents": "db2_server_info(${1:connection})" }, + { "trigger": "db2_set_option", "contents": "db2_set_option(${1:resource}, ${2:options}, ${3:type})" }, + { "trigger": "db2_special_columns", "contents": "db2_special_columns(${1:connection}, ${2:qualifier}, ${3:schema}, ${4:table_name}, ${5:scope})" }, + { "trigger": "db2_statistics", "contents": "db2_statistics(${1:connection}, ${2:qualifier}, ${3:schema}, ${4:table-name}, ${5:unique})" }, + { "trigger": "db2_stmt_error", "contents": "db2_stmt_error()" }, + { "trigger": "db2_stmt_errormsg", "contents": "db2_stmt_errormsg()" }, + { "trigger": "db2_table_privileges", "contents": "db2_table_privileges(${1:connection})" }, + { "trigger": "db2_tables", "contents": "db2_tables(${1:connection})" }, + { "trigger": "dba_close", "contents": "dba_close(${1:handle})" }, + { "trigger": "dba_delete", "contents": "dba_delete(${1:key}, ${2:handle})" }, + { "trigger": "dba_exists", "contents": "dba_exists(${1:key}, ${2:handle})" }, + { "trigger": "dba_fetch", "contents": "dba_fetch(${1:key}, ${2:handle})" }, + { "trigger": "dba_firstkey", "contents": "dba_firstkey(${1:handle})" }, + { "trigger": "dba_handlers", "contents": "dba_handlers()" }, + { "trigger": "dba_insert", "contents": "dba_insert(${1:key}, ${2:value}, ${3:handle})" }, + { "trigger": "dba_key_split", "contents": "dba_key_split(${1:key})" }, + { "trigger": "dba_list", "contents": "dba_list(${1:oid})" }, + { "trigger": "dba_nextkey", "contents": "dba_nextkey(${1:handle})" }, + { "trigger": "dba_open", "contents": "dba_open(${1:path}, ${2:mode})" }, + { "trigger": "dba_optimize", "contents": "dba_optimize(${1:handle})" }, + { "trigger": "dba_popen", "contents": "dba_popen(${1:path}, ${2:mode})" }, + { "trigger": "dba_replace", "contents": "dba_replace(${1:key}, ${2:value}, ${3:handle})" }, + { "trigger": "dba_sync", "contents": "dba_sync(${1:handle})" }, + { "trigger": "dbase_add_record", "contents": "dbase_add_record(${1:dbase_identifier}, ${2:record})" }, + { "trigger": "dbase_close", "contents": "dbase_close(${1:dbase_identifier})" }, + { "trigger": "dbase_create", "contents": "dbase_create(${1:filename}, ${2:fields})" }, + { "trigger": "dbase_delete_record", "contents": "dbase_delete_record(${1:dbase_identifier}, ${2:record_number})" }, + { "trigger": "dbase_get_header_info", "contents": "dbase_get_header_info(${1:dbase_identifier})" }, + { "trigger": "dbase_get_record", "contents": "dbase_get_record(${1:dbase_identifier}, ${2:record_number})" }, + { "trigger": "dbase_get_record_with_names", "contents": "dbase_get_record_with_names(${1:dbase_identifier}, ${2:record_number})" }, + { "trigger": "dbase_numfields", "contents": "dbase_numfields(${1:dbase_identifier})" }, + { "trigger": "dbase_numrecords", "contents": "dbase_numrecords(${1:dbase_identifier})" }, + { "trigger": "dbase_open", "contents": "dbase_open(${1:filename}, ${2:mode})" }, + { "trigger": "dbase_pack", "contents": "dbase_pack(${1:dbase_identifier})" }, + { "trigger": "dbase_replace_record", "contents": "dbase_replace_record(${1:dbase_identifier}, ${2:record}, ${3:record_number})" }, + { "trigger": "dbplus_add", "contents": "dbplus_add(${1:relation}, ${2:tuple})" }, + { "trigger": "dbplus_aql", "contents": "dbplus_aql(${1:query})" }, + { "trigger": "dbplus_chdir", "contents": "dbplus_chdir()" }, + { "trigger": "dbplus_close", "contents": "dbplus_close(${1:relation})" }, + { "trigger": "dbplus_curr", "contents": "dbplus_curr(${1:relation}, ${2:tuple})" }, + { "trigger": "dbplus_errcode", "contents": "dbplus_errcode()" }, + { "trigger": "dbplus_errno", "contents": "dbplus_errno(${1:oid})" }, + { "trigger": "dbplus_find", "contents": "dbplus_find(${1:relation}, ${2:constraints}, ${3:tuple})" }, + { "trigger": "dbplus_first", "contents": "dbplus_first(${1:relation}, ${2:tuple})" }, + { "trigger": "dbplus_flush", "contents": "dbplus_flush(${1:relation})" }, + { "trigger": "dbplus_freealllocks", "contents": "dbplus_freealllocks(${1:oid})" }, + { "trigger": "dbplus_freelock", "contents": "dbplus_freelock(${1:relation}, ${2:tuple})" }, + { "trigger": "dbplus_freerlocks", "contents": "dbplus_freerlocks(${1:relation})" }, + { "trigger": "dbplus_getlock", "contents": "dbplus_getlock(${1:relation}, ${2:tuple})" }, + { "trigger": "dbplus_getunique", "contents": "dbplus_getunique(${1:relation}, ${2:uniqueid})" }, + { "trigger": "dbplus_info", "contents": "dbplus_info(${1:relation}, ${2:key}, ${3:result})" }, + { "trigger": "dbplus_last", "contents": "dbplus_last(${1:relation}, ${2:tuple})" }, + { "trigger": "dbplus_lockrel", "contents": "dbplus_lockrel(${1:relation})" }, + { "trigger": "dbplus_next", "contents": "dbplus_next(${1:relation}, ${2:tuple})" }, + { "trigger": "dbplus_open", "contents": "dbplus_open(${1:name})" }, + { "trigger": "dbplus_prev", "contents": "dbplus_prev(${1:relation}, ${2:tuple})" }, + { "trigger": "dbplus_rchperm", "contents": "dbplus_rchperm(${1:relation}, ${2:mask}, ${3:user}, ${4:group})" }, + { "trigger": "dbplus_rcreate", "contents": "dbplus_rcreate(${1:name}, ${2:domlist})" }, + { "trigger": "dbplus_rcrtexact", "contents": "dbplus_rcrtexact(${1:name}, ${2:relation})" }, + { "trigger": "dbplus_rcrtlike", "contents": "dbplus_rcrtlike(${1:name}, ${2:relation})" }, + { "trigger": "dbplus_resolve", "contents": "dbplus_resolve(${1:relation_name})" }, + { "trigger": "dbplus_restorepos", "contents": "dbplus_restorepos(${1:relation}, ${2:tuple})" }, + { "trigger": "dbplus_rkeys", "contents": "dbplus_rkeys(${1:relation}, ${2:domlist})" }, + { "trigger": "dbplus_ropen", "contents": "dbplus_ropen(${1:name})" }, + { "trigger": "dbplus_rquery", "contents": "dbplus_rquery(${1:query})" }, + { "trigger": "dbplus_rrename", "contents": "dbplus_rrename(${1:relation}, ${2:name})" }, + { "trigger": "dbplus_rsecindex", "contents": "dbplus_rsecindex(${1:relation}, ${2:domlist}, ${3:type})" }, + { "trigger": "dbplus_runlink", "contents": "dbplus_runlink(${1:relation})" }, + { "trigger": "dbplus_rzap", "contents": "dbplus_rzap(${1:relation})" }, + { "trigger": "dbplus_savepos", "contents": "dbplus_savepos(${1:relation})" }, + { "trigger": "dbplus_setindex", "contents": "dbplus_setindex(${1:relation}, ${2:idx_name})" }, + { "trigger": "dbplus_setindexbynumber", "contents": "dbplus_setindexbynumber(${1:relation}, ${2:idx_number})" }, + { "trigger": "dbplus_sql", "contents": "dbplus_sql(${1:query})" }, + { "trigger": "dbplus_tcl", "contents": "dbplus_tcl(${1:sid}, ${2:script})" }, + { "trigger": "dbplus_tremove", "contents": "dbplus_tremove(${1:relation}, ${2:tuple})" }, + { "trigger": "dbplus_undo", "contents": "dbplus_undo(${1:relation})" }, + { "trigger": "dbplus_undoprepare", "contents": "dbplus_undoprepare(${1:relation})" }, + { "trigger": "dbplus_unlockrel", "contents": "dbplus_unlockrel(${1:relation})" }, + { "trigger": "dbplus_unselect", "contents": "dbplus_unselect(${1:relation})" }, + { "trigger": "dbplus_update", "contents": "dbplus_update(${1:relation}, ${2:old}, ${3:new})" }, + { "trigger": "dbplus_xlockrel", "contents": "dbplus_xlockrel(${1:relation})" }, + { "trigger": "dbplus_xunlockrel", "contents": "dbplus_xunlockrel(${1:relation})" }, + { "trigger": "dbx_close", "contents": "dbx_close(${1:link_identifier})" }, + { "trigger": "dbx_compare", "contents": "dbx_compare(${1:row_a}, ${2:row_b}, ${3:column_key})" }, + { "trigger": "dbx_connect", "contents": "dbx_connect(${1:module}, ${2:host}, ${3:database}, ${4:username}, ${5:password})" }, + { "trigger": "dbx_error", "contents": "dbx_error(${1:link_identifier})" }, + { "trigger": "dbx_escape_string", "contents": "dbx_escape_string(${1:link_identifier}, ${2:text})" }, + { "trigger": "dbx_fetch_row", "contents": "dbx_fetch_row(${1:result_identifier})" }, + { "trigger": "dbx_query", "contents": "dbx_query(${1:link_identifier}, ${2:sql_statement})" }, + { "trigger": "dbx_sort", "contents": "dbx_sort(${1:result}, ${2:user_compare_function})" }, + { "trigger": "dcgettext", "contents": "dcgettext(${1:domain}, ${2:message}, ${3:category})" }, + { "trigger": "dcngettext", "contents": "dcngettext(${1:domain}, ${2:msgid1}, ${3:msgid2}, ${4:n}, ${5:category})" }, + { "trigger": "deaggregate", "contents": "deaggregate(${1:object})" }, + { "trigger": "debug_backtrace", "contents": "debug_backtrace()" }, + { "trigger": "debug_print_backtrace", "contents": "debug_print_backtrace(${1:oid})" }, + { "trigger": "debug_zval_dump", "contents": "debug_zval_dump(${1:variable})" }, + { "trigger": "decbin", "contents": "decbin(${1:number})" }, + { "trigger": "dechex", "contents": "dechex(${1:number})" }, + { "trigger": "decoct", "contents": "decoct(${1:number})" }, + { "trigger": "define", "contents": "define(${1:name}, ${2:value})" }, + { "trigger": "define_syslog_variables", "contents": "define_syslog_variables(${1:oid})" }, + { "trigger": "defined", "contents": "defined(${1:name})" }, + { "trigger": "deg2rad", "contents": "deg2rad(${1:number})" }, + { "trigger": "delete", "contents": "delete(${1:oid})" }, + { "trigger": "dgettext", "contents": "dgettext(${1:domain}, ${2:message})" }, + { "trigger": "die", "contents": "die()" }, + { "trigger": "dio_close", "contents": "dio_close(${1:fd})" }, + { "trigger": "dio_fcntl", "contents": "dio_fcntl(${1:fd}, ${2:cmd})" }, + { "trigger": "dio_open", "contents": "dio_open(${1:filename}, ${2:flags})" }, + { "trigger": "dio_read", "contents": "dio_read(${1:fd})" }, + { "trigger": "dio_seek", "contents": "dio_seek(${1:fd}, ${2:pos})" }, + { "trigger": "dio_stat", "contents": "dio_stat(${1:fd})" }, + { "trigger": "dio_tcsetattr", "contents": "dio_tcsetattr(${1:fd}, ${2:options})" }, + { "trigger": "dio_truncate", "contents": "dio_truncate(${1:fd}, ${2:offset})" }, + { "trigger": "dio_write", "contents": "dio_write(${1:fd}, ${2:data})" }, + { "trigger": "dirname", "contents": "dirname(${1:path})" }, + { "trigger": "disk_free_space", "contents": "disk_free_space(${1:directory})" }, + { "trigger": "disk_total_space", "contents": "disk_total_space(${1:directory})" }, + { "trigger": "diskfreespace", "contents": "diskfreespace()" }, + { "trigger": "dl", "contents": "dl(${1:library})" }, + { "trigger": "dngettext", "contents": "dngettext(${1:domain}, ${2:msgid1}, ${3:msgid2}, ${4:n})" }, + { "trigger": "dns_check_record", "contents": "dns_check_record()" }, + { "trigger": "dns_get_mx", "contents": "dns_get_mx()" }, + { "trigger": "dns_get_record", "contents": "dns_get_record(${1:hostname})" }, + { "trigger": "dom_import_simplexml", "contents": "dom_import_simplexml(${1:node})" }, + { "trigger": "domxml_new_doc", "contents": "domxml_new_doc(${1:version})" }, + { "trigger": "domxml_open_file", "contents": "domxml_open_file(${1:filename})" }, + { "trigger": "domxml_open_mem", "contents": "domxml_open_mem(${1:str})" }, + { "trigger": "domxml_version", "contents": "domxml_version(${1:oid})" }, + { "trigger": "domxml_xmltree", "contents": "domxml_xmltree(${1:str})" }, + { "trigger": "domxml_xslt_stylesheet", "contents": "domxml_xslt_stylesheet(${1:xsl_buf})" }, + { "trigger": "domxml_xslt_stylesheet_doc", "contents": "domxml_xslt_stylesheet_doc(${1:xsl_doc})" }, + { "trigger": "domxml_xslt_stylesheet_file", "contents": "domxml_xslt_stylesheet_file(${1:xsl_file})" }, + { "trigger": "domxml_xslt_version", "contents": "domxml_xslt_version(${1:oid})" }, + { "trigger": "dotnet_load", "contents": "dotnet_load(${1:assembly_name})" }, + { "trigger": "doubleval", "contents": "doubleval()" }, + { "trigger": "each", "contents": "each(${1:array})" }, + { "trigger": "easter_date", "contents": "easter_date()" }, + { "trigger": "easter_days", "contents": "easter_days()" }, + { "trigger": "echo", "contents": "echo(${1:arg1})" }, + { "trigger": "empty", "contents": "empty(${1:var})" }, + { "trigger": "enchant_broker_describe", "contents": "enchant_broker_describe(${1:broker})" }, + { "trigger": "enchant_broker_dict_exists", "contents": "enchant_broker_dict_exists(${1:broker}, ${2:tag})" }, + { "trigger": "enchant_broker_free", "contents": "enchant_broker_free(${1:broker})" }, + { "trigger": "enchant_broker_free_dict", "contents": "enchant_broker_free_dict(${1:dict})" }, + { "trigger": "enchant_broker_get_error", "contents": "enchant_broker_get_error(${1:broker})" }, + { "trigger": "enchant_broker_init", "contents": "enchant_broker_init(${1:oid})" }, + { "trigger": "enchant_broker_list_dicts", "contents": "enchant_broker_list_dicts(${1:broker})" }, + { "trigger": "enchant_broker_request_dict", "contents": "enchant_broker_request_dict(${1:broker}, ${2:tag})" }, + { "trigger": "enchant_broker_request_pwl_dict", "contents": "enchant_broker_request_pwl_dict(${1:broker}, ${2:filename})" }, + { "trigger": "enchant_broker_set_ordering", "contents": "enchant_broker_set_ordering(${1:broker}, ${2:tag}, ${3:ordering})" }, + { "trigger": "enchant_dict_add_to_personal", "contents": "enchant_dict_add_to_personal(${1:dict}, ${2:word})" }, + { "trigger": "enchant_dict_add_to_session", "contents": "enchant_dict_add_to_session(${1:dict}, ${2:word})" }, + { "trigger": "enchant_dict_check", "contents": "enchant_dict_check(${1:dict}, ${2:word})" }, + { "trigger": "enchant_dict_describe", "contents": "enchant_dict_describe(${1:dict})" }, + { "trigger": "enchant_dict_get_error", "contents": "enchant_dict_get_error(${1:dict})" }, + { "trigger": "enchant_dict_is_in_session", "contents": "enchant_dict_is_in_session(${1:dict}, ${2:word})" }, + { "trigger": "enchant_dict_quick_check", "contents": "enchant_dict_quick_check(${1:dict}, ${2:word})" }, + { "trigger": "enchant_dict_store_replacement", "contents": "enchant_dict_store_replacement(${1:dict}, ${2:mis}, ${3:cor})" }, + { "trigger": "enchant_dict_suggest", "contents": "enchant_dict_suggest(${1:dict}, ${2:word})" }, + { "trigger": "end", "contents": "end(${1:array})" }, + { "trigger": "ereg", "contents": "ereg(${1:pattern}, ${2:string})" }, + { "trigger": "ereg_replace", "contents": "ereg_replace(${1:pattern}, ${2:replacement}, ${3:string})" }, + { "trigger": "eregi", "contents": "eregi(${1:pattern}, ${2:string})" }, + { "trigger": "eregi_replace", "contents": "eregi_replace(${1:pattern}, ${2:replacement}, ${3:string})" }, + { "trigger": "error_get_last", "contents": "error_get_last(${1:oid})" }, + { "trigger": "error_log", "contents": "error_log(${1:message})" }, + { "trigger": "error_reporting", "contents": "error_reporting()" }, + { "trigger": "escapeshellarg", "contents": "escapeshellarg(${1:arg})" }, + { "trigger": "escapeshellcmd", "contents": "escapeshellcmd(${1:command})" }, + { "trigger": "eval", "contents": "eval(${1:code_str})" }, + { "trigger": "event_add", "contents": "event_add(${1:event})" }, + { "trigger": "event_base_free", "contents": "event_base_free(${1:event_base})" }, + { "trigger": "event_base_loop", "contents": "event_base_loop(${1:event_base})" }, + { "trigger": "event_base_loopbreak", "contents": "event_base_loopbreak(${1:event_base})" }, + { "trigger": "event_base_loopexit", "contents": "event_base_loopexit(${1:event_base})" }, + { "trigger": "event_base_new", "contents": "event_base_new(${1:oid})" }, + { "trigger": "event_base_priority_init", "contents": "event_base_priority_init(${1:event_base}, ${2:npriorities})" }, + { "trigger": "event_base_set", "contents": "event_base_set(${1:event}, ${2:event_base})" }, + { "trigger": "event_buffer_base_set", "contents": "event_buffer_base_set(${1:bevent}, ${2:event_base})" }, + { "trigger": "event_buffer_disable", "contents": "event_buffer_disable(${1:bevent}, ${2:events})" }, + { "trigger": "event_buffer_enable", "contents": "event_buffer_enable(${1:bevent}, ${2:events})" }, + { "trigger": "event_buffer_fd_set", "contents": "event_buffer_fd_set(${1:bevent}, ${2:fd})" }, + { "trigger": "event_buffer_free", "contents": "event_buffer_free(${1:bevent})" }, + { "trigger": "event_buffer_new", "contents": "event_buffer_new(${1:stream}, ${2:readcb}, ${3:writecb}, ${4:errorcb})" }, + { "trigger": "event_buffer_priority_set", "contents": "event_buffer_priority_set(${1:bevent}, ${2:priority})" }, + { "trigger": "event_buffer_read", "contents": "event_buffer_read(${1:bevent}, ${2:data_size})" }, + { "trigger": "event_buffer_set_callback", "contents": "event_buffer_set_callback(${1:event}, ${2:readcb}, ${3:writecb}, ${4:errorcb})" }, + { "trigger": "event_buffer_timeout_set", "contents": "event_buffer_timeout_set(${1:bevent}, ${2:read_timeout}, ${3:write_timeout})" }, + { "trigger": "event_buffer_watermark_set", "contents": "event_buffer_watermark_set(${1:bevent}, ${2:events}, ${3:lowmark}, ${4:highmark})" }, + { "trigger": "event_buffer_write", "contents": "event_buffer_write(${1:bevent}, ${2:data})" }, + { "trigger": "event_del", "contents": "event_del(${1:event})" }, + { "trigger": "event_free", "contents": "event_free(${1:event})" }, + { "trigger": "event_new", "contents": "event_new(${1:oid})" }, + { "trigger": "event_set", "contents": "event_set(${1:event}, ${2:fd}, ${3:events}, ${4:callback})" }, + { "trigger": "exec", "contents": "exec(${1:command})" }, + { "trigger": "exif_imagetype", "contents": "exif_imagetype(${1:filename})" }, + { "trigger": "exif_read_data", "contents": "exif_read_data(${1:filename})" }, + { "trigger": "exif_tagname", "contents": "exif_tagname(${1:index})" }, + { "trigger": "exif_thumbnail", "contents": "exif_thumbnail(${1:filename})" }, + { "trigger": "exit", "contents": "exit()" }, + { "trigger": "exp", "contents": "exp(${1:arg})" }, + { "trigger": "expect_expectl", "contents": "expect_expectl(${1:expect}, ${2:cases})" }, + { "trigger": "expect_popen", "contents": "expect_popen(${1:command})" }, + { "trigger": "explode", "contents": "explode(${1:delimiter}, ${2:string})" }, + { "trigger": "expm1", "contents": "expm1(${1:arg})" }, + { "trigger": "extension_loaded", "contents": "extension_loaded(${1:name})" }, + { "trigger": "extract", "contents": "extract(${1:var_array})" }, + { "trigger": "ezmlm_hash", "contents": "ezmlm_hash(${1:addr})" }, + { "trigger": "fam_cancel_monitor", "contents": "fam_cancel_monitor(${1:fam}, ${2:fam_monitor})" }, + { "trigger": "fam_close", "contents": "fam_close(${1:fam})" }, + { "trigger": "fam_monitor_collection", "contents": "fam_monitor_collection(${1:fam}, ${2:dirname}, ${3:depth}, ${4:mask})" }, + { "trigger": "fam_monitor_directory", "contents": "fam_monitor_directory(${1:fam}, ${2:dirname})" }, + { "trigger": "fam_monitor_file", "contents": "fam_monitor_file(${1:fam}, ${2:filename})" }, + { "trigger": "fam_next_event", "contents": "fam_next_event(${1:fam})" }, + { "trigger": "fam_open", "contents": "fam_open()" }, + { "trigger": "fam_pending", "contents": "fam_pending(${1:fam})" }, + { "trigger": "fam_resume_monitor", "contents": "fam_resume_monitor(${1:fam}, ${2:fam_monitor})" }, + { "trigger": "fam_suspend_monitor", "contents": "fam_suspend_monitor(${1:fam}, ${2:fam_monitor})" }, + { "trigger": "fbsql_affected_rows", "contents": "fbsql_affected_rows()" }, + { "trigger": "fbsql_autocommit", "contents": "fbsql_autocommit(${1:link_identifier})" }, + { "trigger": "fbsql_blob_size", "contents": "fbsql_blob_size(${1:blob_handle})" }, + { "trigger": "fbsql_change_user", "contents": "fbsql_change_user(${1:user}, ${2:password})" }, + { "trigger": "fbsql_clob_size", "contents": "fbsql_clob_size(${1:clob_handle})" }, + { "trigger": "fbsql_close", "contents": "fbsql_close()" }, + { "trigger": "fbsql_commit", "contents": "fbsql_commit()" }, + { "trigger": "fbsql_connect", "contents": "fbsql_connect()" }, + { "trigger": "fbsql_create_blob", "contents": "fbsql_create_blob(${1:blob_data})" }, + { "trigger": "fbsql_create_clob", "contents": "fbsql_create_clob(${1:clob_data})" }, + { "trigger": "fbsql_create_db", "contents": "fbsql_create_db(${1:database_name})" }, + { "trigger": "fbsql_data_seek", "contents": "fbsql_data_seek(${1:result}, ${2:row_number})" }, + { "trigger": "fbsql_database", "contents": "fbsql_database(${1:link_identifier})" }, + { "trigger": "fbsql_database_password", "contents": "fbsql_database_password(${1:link_identifier})" }, + { "trigger": "fbsql_db_query", "contents": "fbsql_db_query(${1:database}, ${2:query})" }, + { "trigger": "fbsql_db_status", "contents": "fbsql_db_status(${1:database_name})" }, + { "trigger": "fbsql_drop_db", "contents": "fbsql_drop_db(${1:database_name})" }, + { "trigger": "fbsql_errno", "contents": "fbsql_errno()" }, + { "trigger": "fbsql_error", "contents": "fbsql_error()" }, + { "trigger": "fbsql_fetch_array", "contents": "fbsql_fetch_array(${1:result})" }, + { "trigger": "fbsql_fetch_assoc", "contents": "fbsql_fetch_assoc(${1:result})" }, + { "trigger": "fbsql_fetch_field", "contents": "fbsql_fetch_field(${1:result})" }, + { "trigger": "fbsql_fetch_lengths", "contents": "fbsql_fetch_lengths(${1:result})" }, + { "trigger": "fbsql_fetch_object", "contents": "fbsql_fetch_object(${1:result})" }, + { "trigger": "fbsql_fetch_row", "contents": "fbsql_fetch_row(${1:result})" }, + { "trigger": "fbsql_field_flags", "contents": "fbsql_field_flags(${1:result})" }, + { "trigger": "fbsql_field_len", "contents": "fbsql_field_len(${1:result})" }, + { "trigger": "fbsql_field_name", "contents": "fbsql_field_name(${1:result})" }, + { "trigger": "fbsql_field_seek", "contents": "fbsql_field_seek(${1:result})" }, + { "trigger": "fbsql_field_table", "contents": "fbsql_field_table(${1:result})" }, + { "trigger": "fbsql_field_type", "contents": "fbsql_field_type(${1:result})" }, + { "trigger": "fbsql_free_result", "contents": "fbsql_free_result(${1:result})" }, + { "trigger": "fbsql_get_autostart_info", "contents": "fbsql_get_autostart_info()" }, + { "trigger": "fbsql_hostname", "contents": "fbsql_hostname(${1:link_identifier})" }, + { "trigger": "fbsql_insert_id", "contents": "fbsql_insert_id()" }, + { "trigger": "fbsql_list_dbs", "contents": "fbsql_list_dbs()" }, + { "trigger": "fbsql_list_fields", "contents": "fbsql_list_fields(${1:database_name}, ${2:table_name})" }, + { "trigger": "fbsql_list_tables", "contents": "fbsql_list_tables(${1:database})" }, + { "trigger": "fbsql_next_result", "contents": "fbsql_next_result(${1:result})" }, + { "trigger": "fbsql_num_fields", "contents": "fbsql_num_fields(${1:result})" }, + { "trigger": "fbsql_num_rows", "contents": "fbsql_num_rows(${1:result})" }, + { "trigger": "fbsql_password", "contents": "fbsql_password(${1:link_identifier})" }, + { "trigger": "fbsql_pconnect", "contents": "fbsql_pconnect()" }, + { "trigger": "fbsql_query", "contents": "fbsql_query(${1:query})" }, + { "trigger": "fbsql_read_blob", "contents": "fbsql_read_blob(${1:blob_handle})" }, + { "trigger": "fbsql_read_clob", "contents": "fbsql_read_clob(${1:clob_handle})" }, + { "trigger": "fbsql_result", "contents": "fbsql_result(${1:result})" }, + { "trigger": "fbsql_rollback", "contents": "fbsql_rollback()" }, + { "trigger": "fbsql_rows_fetched", "contents": "fbsql_rows_fetched(${1:result})" }, + { "trigger": "fbsql_select_db", "contents": "fbsql_select_db()" }, + { "trigger": "fbsql_set_characterset", "contents": "fbsql_set_characterset(${1:link_identifier}, ${2:characterset})" }, + { "trigger": "fbsql_set_lob_mode", "contents": "fbsql_set_lob_mode(${1:result}, ${2:lob_mode})" }, + { "trigger": "fbsql_set_password", "contents": "fbsql_set_password(${1:link_identifier}, ${2:user}, ${3:password}, ${4:old_password})" }, + { "trigger": "fbsql_set_transaction", "contents": "fbsql_set_transaction(${1:link_identifier}, ${2:locking}, ${3:isolation})" }, + { "trigger": "fbsql_start_db", "contents": "fbsql_start_db(${1:database_name})" }, + { "trigger": "fbsql_stop_db", "contents": "fbsql_stop_db(${1:database_name})" }, + { "trigger": "fbsql_table_name", "contents": "fbsql_table_name(${1:result}, ${2:index})" }, + { "trigger": "fbsql_tablename", "contents": "fbsql_tablename()" }, + { "trigger": "fbsql_username", "contents": "fbsql_username(${1:link_identifier})" }, + { "trigger": "fbsql_warnings", "contents": "fbsql_warnings()" }, + { "trigger": "fclose", "contents": "fclose(${1:handle})" }, + { "trigger": "fdf_add_doc_javascript", "contents": "fdf_add_doc_javascript(${1:fdf_document}, ${2:script_name}, ${3:script_code})" }, + { "trigger": "fdf_add_template", "contents": "fdf_add_template(${1:fdf_document}, ${2:newpage}, ${3:filename}, ${4:template}, ${5:rename})" }, + { "trigger": "fdf_close", "contents": "fdf_close(${1:fdf_document})" }, + { "trigger": "fdf_create", "contents": "fdf_create(${1:oid})" }, + { "trigger": "fdf_enum_values", "contents": "fdf_enum_values(${1:fdf_document}, ${2:function})" }, + { "trigger": "fdf_errno", "contents": "fdf_errno(${1:oid})" }, + { "trigger": "fdf_error", "contents": "fdf_error()" }, + { "trigger": "fdf_get_ap", "contents": "fdf_get_ap(${1:fdf_document}, ${2:field}, ${3:face}, ${4:filename})" }, + { "trigger": "fdf_get_attachment", "contents": "fdf_get_attachment(${1:fdf_document}, ${2:fieldname}, ${3:savepath})" }, + { "trigger": "fdf_get_encoding", "contents": "fdf_get_encoding(${1:fdf_document})" }, + { "trigger": "fdf_get_file", "contents": "fdf_get_file(${1:fdf_document})" }, + { "trigger": "fdf_get_flags", "contents": "fdf_get_flags(${1:fdf_document}, ${2:fieldname}, ${3:whichflags})" }, + { "trigger": "fdf_get_opt", "contents": "fdf_get_opt(${1:fdf_document}, ${2:fieldname})" }, + { "trigger": "fdf_get_status", "contents": "fdf_get_status(${1:fdf_document})" }, + { "trigger": "fdf_get_value", "contents": "fdf_get_value(${1:fdf_document}, ${2:fieldname})" }, + { "trigger": "fdf_get_version", "contents": "fdf_get_version()" }, + { "trigger": "fdf_header", "contents": "fdf_header(${1:oid})" }, + { "trigger": "fdf_next_field_name", "contents": "fdf_next_field_name(${1:fdf_document})" }, + { "trigger": "fdf_open", "contents": "fdf_open(${1:filename})" }, + { "trigger": "fdf_open_string", "contents": "fdf_open_string(${1:fdf_data})" }, + { "trigger": "fdf_remove_item", "contents": "fdf_remove_item(${1:fdf_document}, ${2:fieldname}, ${3:item})" }, + { "trigger": "fdf_save", "contents": "fdf_save(${1:fdf_document})" }, + { "trigger": "fdf_save_string", "contents": "fdf_save_string(${1:fdf_document})" }, + { "trigger": "fdf_set_ap", "contents": "fdf_set_ap(${1:fdf_document}, ${2:field_name}, ${3:face}, ${4:filename}, ${5:page_number})" }, + { "trigger": "fdf_set_encoding", "contents": "fdf_set_encoding(${1:fdf_document}, ${2:encoding})" }, + { "trigger": "fdf_set_file", "contents": "fdf_set_file(${1:fdf_document}, ${2:url})" }, + { "trigger": "fdf_set_flags", "contents": "fdf_set_flags(${1:fdf_document}, ${2:fieldname}, ${3:whichFlags}, ${4:newFlags})" }, + { "trigger": "fdf_set_javascript_action", "contents": "fdf_set_javascript_action(${1:fdf_document}, ${2:fieldname}, ${3:trigger}, ${4:script})" }, + { "trigger": "fdf_set_on_import_javascript", "contents": "fdf_set_on_import_javascript(${1:fdf_document}, ${2:script}, ${3:before_data_import})" }, + { "trigger": "fdf_set_opt", "contents": "fdf_set_opt(${1:fdf_document}, ${2:fieldname}, ${3:element}, ${4:str1}, ${5:str2})" }, + { "trigger": "fdf_set_status", "contents": "fdf_set_status(${1:fdf_document}, ${2:status})" }, + { "trigger": "fdf_set_submit_form_action", "contents": "fdf_set_submit_form_action(${1:fdf_document}, ${2:fieldname}, ${3:trigger}, ${4:script}, ${5:flags})" }, + { "trigger": "fdf_set_target_frame", "contents": "fdf_set_target_frame(${1:fdf_document}, ${2:frame_name})" }, + { "trigger": "fdf_set_value", "contents": "fdf_set_value(${1:fdf_document}, ${2:fieldname}, ${3:value})" }, + { "trigger": "fdf_set_version", "contents": "fdf_set_version(${1:fdf_document}, ${2:version})" }, + { "trigger": "feof", "contents": "feof(${1:handle})" }, + { "trigger": "fflush", "contents": "fflush(${1:handle})" }, + { "trigger": "fgetc", "contents": "fgetc(${1:handle})" }, + { "trigger": "fgetcsv", "contents": "fgetcsv(${1:handle})" }, + { "trigger": "fgets", "contents": "fgets(${1:handle})" }, + { "trigger": "fgetss", "contents": "fgetss(${1:handle})" }, + { "trigger": "file", "contents": "file(${1:filename})" }, + { "trigger": "file_exists", "contents": "file_exists(${1:filename})" }, + { "trigger": "file_get_contents", "contents": "file_get_contents(${1:filename})" }, + { "trigger": "file_put_contents", "contents": "file_put_contents(${1:filename}, ${2:data})" }, + { "trigger": "fileatime", "contents": "fileatime(${1:filename})" }, + { "trigger": "filectime", "contents": "filectime(${1:filename})" }, + { "trigger": "filegroup", "contents": "filegroup(${1:filename})" }, + { "trigger": "fileinode", "contents": "fileinode(${1:filename})" }, + { "trigger": "filemtime", "contents": "filemtime(${1:filename})" }, + { "trigger": "fileowner", "contents": "fileowner(${1:filename})" }, + { "trigger": "fileperms", "contents": "fileperms(${1:filename})" }, + { "trigger": "filepro", "contents": "filepro(${1:directory})" }, + { "trigger": "filepro_fieldcount", "contents": "filepro_fieldcount(${1:oid})" }, + { "trigger": "filepro_fieldname", "contents": "filepro_fieldname(${1:field_number})" }, + { "trigger": "filepro_fieldtype", "contents": "filepro_fieldtype(${1:field_number})" }, + { "trigger": "filepro_fieldwidth", "contents": "filepro_fieldwidth(${1:field_number})" }, + { "trigger": "filepro_retrieve", "contents": "filepro_retrieve(${1:row_number}, ${2:field_number})" }, + { "trigger": "filepro_rowcount", "contents": "filepro_rowcount(${1:oid})" }, + { "trigger": "filesize", "contents": "filesize(${1:filename})" }, + { "trigger": "filetype", "contents": "filetype(${1:filename})" }, + { "trigger": "filter_has_var", "contents": "filter_has_var(${1:type}, ${2:variable_name})" }, + { "trigger": "filter_id", "contents": "filter_id(${1:filtername})" }, + { "trigger": "filter_input", "contents": "filter_input(${1:type}, ${2:variable_name})" }, + { "trigger": "filter_input_array", "contents": "filter_input_array(${1:type})" }, + { "trigger": "filter_list", "contents": "filter_list(${1:oid})" }, + { "trigger": "filter_var", "contents": "filter_var(${1:variable})" }, + { "trigger": "filter_var_array", "contents": "filter_var_array(${1:data})" }, + { "trigger": "finfo_buffer", "contents": "finfo_buffer(${1:finfo}, ${2:string = NULL})" }, + { "trigger": "finfo_close", "contents": "finfo_close(${1:finfo})" }, + { "trigger": "finfo_file", "contents": "finfo_file(${1:finfo}, ${2:file_name = NULL})" }, + { "trigger": "finfo_set_flags", "contents": "finfo_set_flags(${1:finfo}, ${2:options})" }, + { "trigger": "floatval", "contents": "floatval(${1:var})" }, + { "trigger": "flock", "contents": "flock(${1:handle}, ${2:operation})" }, + { "trigger": "floor", "contents": "floor(${1:value})" }, + { "trigger": "flush", "contents": "flush(${1:oid})" }, + { "trigger": "fmod", "contents": "fmod(${1:x}, ${2:y})" }, + { "trigger": "fnmatch", "contents": "fnmatch(${1:pattern}, ${2:string})" }, + { "trigger": "fopen", "contents": "fopen(${1:filename}, ${2:mode})" }, + { "trigger": "forward_static_call", "contents": "forward_static_call(${1:function})" }, + { "trigger": "forward_static_call_array", "contents": "forward_static_call_array(${1:function}, ${2:parameters})" }, + { "trigger": "fpassthru", "contents": "fpassthru(${1:handle})" }, + { "trigger": "fprintf", "contents": "fprintf(${1:handle}, ${2:format})" }, + { "trigger": "fputcsv", "contents": "fputcsv(${1:handle}, ${2:fields})" }, + { "trigger": "fputs", "contents": "fputs()" }, + { "trigger": "fread", "contents": "fread(${1:handle}, ${2:length})" }, + { "trigger": "FrenchToJD", "contents": "FrenchToJD(${1:month}, ${2:day}, ${3:year})" }, + { "trigger": "fribidi_log2vis", "contents": "fribidi_log2vis(${1:str}, ${2:direction}, ${3:charset})" }, + { "trigger": "fscanf", "contents": "fscanf(${1:handle}, ${2:format})" }, + { "trigger": "fseek", "contents": "fseek(${1:handle}, ${2:offset})" }, + { "trigger": "fsockopen", "contents": "fsockopen(${1:hostname})" }, + { "trigger": "fstat", "contents": "fstat(${1:handle})" }, + { "trigger": "ftell", "contents": "ftell(${1:handle})" }, + { "trigger": "ftok", "contents": "ftok(${1:pathname}, ${2:proj})" }, + { "trigger": "ftp_alloc", "contents": "ftp_alloc(${1:ftp_stream}, ${2:filesize})" }, + { "trigger": "ftp_cdup", "contents": "ftp_cdup(${1:ftp_stream})" }, + { "trigger": "ftp_chdir", "contents": "ftp_chdir(${1:ftp_stream}, ${2:directory})" }, + { "trigger": "ftp_chmod", "contents": "ftp_chmod(${1:ftp_stream}, ${2:mode}, ${3:filename})" }, + { "trigger": "ftp_close", "contents": "ftp_close(${1:ftp_stream})" }, + { "trigger": "ftp_connect", "contents": "ftp_connect(${1:host})" }, + { "trigger": "ftp_delete", "contents": "ftp_delete(${1:ftp_stream}, ${2:path})" }, + { "trigger": "ftp_exec", "contents": "ftp_exec(${1:ftp_stream}, ${2:command})" }, + { "trigger": "ftp_fget", "contents": "ftp_fget(${1:ftp_stream}, ${2:handle}, ${3:remote_file}, ${4:mode})" }, + { "trigger": "ftp_fput", "contents": "ftp_fput(${1:ftp_stream}, ${2:remote_file}, ${3:handle}, ${4:mode})" }, + { "trigger": "ftp_get", "contents": "ftp_get(${1:ftp_stream}, ${2:local_file}, ${3:remote_file}, ${4:mode})" }, + { "trigger": "ftp_get_option", "contents": "ftp_get_option(${1:ftp_stream}, ${2:option})" }, + { "trigger": "ftp_login", "contents": "ftp_login(${1:ftp_stream}, ${2:username}, ${3:password})" }, + { "trigger": "ftp_mdtm", "contents": "ftp_mdtm(${1:ftp_stream}, ${2:remote_file})" }, + { "trigger": "ftp_mkdir", "contents": "ftp_mkdir(${1:ftp_stream}, ${2:directory})" }, + { "trigger": "ftp_nb_continue", "contents": "ftp_nb_continue(${1:ftp_stream})" }, + { "trigger": "ftp_nb_fget", "contents": "ftp_nb_fget(${1:ftp_stream}, ${2:handle}, ${3:remote_file}, ${4:mode})" }, + { "trigger": "ftp_nb_fput", "contents": "ftp_nb_fput(${1:ftp_stream}, ${2:remote_file}, ${3:handle}, ${4:mode})" }, + { "trigger": "ftp_nb_get", "contents": "ftp_nb_get(${1:ftp_stream}, ${2:local_file}, ${3:remote_file}, ${4:mode})" }, + { "trigger": "ftp_nb_put", "contents": "ftp_nb_put(${1:ftp_stream}, ${2:remote_file}, ${3:local_file}, ${4:mode})" }, + { "trigger": "ftp_nlist", "contents": "ftp_nlist(${1:ftp_stream}, ${2:directory})" }, + { "trigger": "ftp_pasv", "contents": "ftp_pasv(${1:ftp_stream}, ${2:pasv})" }, + { "trigger": "ftp_put", "contents": "ftp_put(${1:ftp_stream}, ${2:remote_file}, ${3:local_file}, ${4:mode})" }, + { "trigger": "ftp_pwd", "contents": "ftp_pwd(${1:ftp_stream})" }, + { "trigger": "ftp_quit", "contents": "ftp_quit()" }, + { "trigger": "ftp_raw", "contents": "ftp_raw(${1:ftp_stream}, ${2:command})" }, + { "trigger": "ftp_rawlist", "contents": "ftp_rawlist(${1:ftp_stream}, ${2:directory})" }, + { "trigger": "ftp_rename", "contents": "ftp_rename(${1:ftp_stream}, ${2:oldname}, ${3:newname})" }, + { "trigger": "ftp_rmdir", "contents": "ftp_rmdir(${1:ftp_stream}, ${2:directory})" }, + { "trigger": "ftp_set_option", "contents": "ftp_set_option(${1:ftp_stream}, ${2:option}, ${3:value})" }, + { "trigger": "ftp_site", "contents": "ftp_site(${1:ftp_stream}, ${2:command})" }, + { "trigger": "ftp_size", "contents": "ftp_size(${1:ftp_stream}, ${2:remote_file})" }, + { "trigger": "ftp_ssl_connect", "contents": "ftp_ssl_connect(${1:host})" }, + { "trigger": "ftp_systype", "contents": "ftp_systype(${1:ftp_stream})" }, + { "trigger": "ftruncate", "contents": "ftruncate(${1:handle}, ${2:size})" }, + { "trigger": "func_get_arg", "contents": "func_get_arg(${1:arg_num})" }, + { "trigger": "func_get_args", "contents": "func_get_args(${1:oid})" }, + { "trigger": "func_num_args", "contents": "func_num_args(${1:oid})" }, + { "trigger": "function_exists", "contents": "function_exists(${1:function_name})" }, + { "trigger": "fwrite", "contents": "fwrite(${1:handle}, ${2:string})" }, + { "trigger": "gc_collect_cycles", "contents": "gc_collect_cycles(${1:oid})" }, + { "trigger": "gc_disable", "contents": "gc_disable(${1:oid})" }, + { "trigger": "gc_enable", "contents": "gc_enable(${1:oid})" }, + { "trigger": "gc_enabled", "contents": "gc_enabled(${1:oid})" }, + { "trigger": "gd_info", "contents": "gd_info(${1:oid})" }, + { "trigger": "geoip_continent_code_by_name", "contents": "geoip_continent_code_by_name(${1:hostname})" }, + { "trigger": "geoip_country_code3_by_name", "contents": "geoip_country_code3_by_name(${1:hostname})" }, + { "trigger": "geoip_country_code_by_name", "contents": "geoip_country_code_by_name(${1:hostname})" }, + { "trigger": "geoip_country_name_by_name", "contents": "geoip_country_name_by_name(${1:hostname})" }, + { "trigger": "geoip_database_info", "contents": "geoip_database_info()" }, + { "trigger": "geoip_db_avail", "contents": "geoip_db_avail(${1:database})" }, + { "trigger": "geoip_db_filename", "contents": "geoip_db_filename(${1:database})" }, + { "trigger": "geoip_db_get_all_info", "contents": "geoip_db_get_all_info(${1:oid})" }, + { "trigger": "geoip_id_by_name", "contents": "geoip_id_by_name(${1:hostname})" }, + { "trigger": "geoip_isp_by_name", "contents": "geoip_isp_by_name(${1:hostname})" }, + { "trigger": "geoip_org_by_name", "contents": "geoip_org_by_name(${1:hostname})" }, + { "trigger": "geoip_record_by_name", "contents": "geoip_record_by_name(${1:hostname})" }, + { "trigger": "geoip_region_by_name", "contents": "geoip_region_by_name(${1:hostname})" }, + { "trigger": "geoip_region_name_by_code", "contents": "geoip_region_name_by_code(${1:country_code}, ${2:region_code})" }, + { "trigger": "geoip_time_zone_by_country_and_region", "contents": "geoip_time_zone_by_country_and_region(${1:country_code})" }, + { "trigger": "get_browser", "contents": "get_browser()" }, + { "trigger": "get_called_class", "contents": "get_called_class(${1:oid})" }, + { "trigger": "get_cfg_var", "contents": "get_cfg_var(${1:option})" }, + { "trigger": "get_class", "contents": "get_class()" }, + { "trigger": "get_class_methods", "contents": "get_class_methods(${1:class_name})" }, + { "trigger": "get_class_vars", "contents": "get_class_vars(${1:class_name})" }, + { "trigger": "get_current_user", "contents": "get_current_user(${1:oid})" }, + { "trigger": "get_declared_classes", "contents": "get_declared_classes(${1:oid})" }, + { "trigger": "get_declared_interfaces", "contents": "get_declared_interfaces(${1:oid})" }, + { "trigger": "get_defined_constants", "contents": "get_defined_constants()" }, + { "trigger": "get_defined_functions", "contents": "get_defined_functions(${1:oid})" }, + { "trigger": "get_defined_vars", "contents": "get_defined_vars(${1:oid})" }, + { "trigger": "get_extension_funcs", "contents": "get_extension_funcs(${1:module_name})" }, + { "trigger": "get_headers", "contents": "get_headers(${1:url})" }, + { "trigger": "get_html_translation_table", "contents": "get_html_translation_table()" }, + { "trigger": "get_include_path", "contents": "get_include_path(${1:oid})" }, + { "trigger": "get_included_files", "contents": "get_included_files(${1:oid})" }, + { "trigger": "get_loaded_extensions", "contents": "get_loaded_extensions()" }, + { "trigger": "get_magic_quotes_gpc", "contents": "get_magic_quotes_gpc(${1:oid})" }, + { "trigger": "get_magic_quotes_runtime", "contents": "get_magic_quotes_runtime(${1:oid})" }, + { "trigger": "get_meta_tags", "contents": "get_meta_tags(${1:filename})" }, + { "trigger": "get_object_vars", "contents": "get_object_vars(${1:object})" }, + { "trigger": "get_parent_class", "contents": "get_parent_class()" }, + { "trigger": "get_required_files", "contents": "get_required_files()" }, + { "trigger": "get_resource_type", "contents": "get_resource_type(${1:handle})" }, + { "trigger": "getallheaders", "contents": "getallheaders(${1:oid})" }, + { "trigger": "getcwd", "contents": "getcwd(${1:oid})" }, + { "trigger": "getdate", "contents": "getdate()" }, + { "trigger": "getenv", "contents": "getenv(${1:varname})" }, + { "trigger": "gethostbyaddr", "contents": "gethostbyaddr(${1:ip_address})" }, + { "trigger": "gethostbyname", "contents": "gethostbyname(${1:hostname})" }, + { "trigger": "gethostbynamel", "contents": "gethostbynamel(${1:hostname})" }, + { "trigger": "gethostname", "contents": "gethostname(${1:oid})" }, + { "trigger": "getimagesize", "contents": "getimagesize(${1:filename})" }, + { "trigger": "getlastmod", "contents": "getlastmod(${1:oid})" }, + { "trigger": "getmxrr", "contents": "getmxrr(${1:hostname}, ${2:mxhosts})" }, + { "trigger": "getmygid", "contents": "getmygid(${1:oid})" }, + { "trigger": "getmyinode", "contents": "getmyinode(${1:oid})" }, + { "trigger": "getmypid", "contents": "getmypid(${1:oid})" }, + { "trigger": "getmyuid", "contents": "getmyuid(${1:oid})" }, + { "trigger": "getopt", "contents": "getopt(${1:options})" }, + { "trigger": "getprotobyname", "contents": "getprotobyname(${1:name})" }, + { "trigger": "getprotobynumber", "contents": "getprotobynumber(${1:number})" }, + { "trigger": "getrandmax", "contents": "getrandmax(${1:oid})" }, + { "trigger": "getrusage", "contents": "getrusage()" }, + { "trigger": "getservbyname", "contents": "getservbyname(${1:service}, ${2:protocol})" }, + { "trigger": "getservbyport", "contents": "getservbyport(${1:port}, ${2:protocol})" }, + { "trigger": "gettext", "contents": "gettext(${1:message})" }, + { "trigger": "gettimeofday", "contents": "gettimeofday()" }, + { "trigger": "gettype", "contents": "gettype(${1:var})" }, + { "trigger": "glob", "contents": "glob(${1:pattern})" }, + { "trigger": "gmdate", "contents": "gmdate(${1:format})" }, + { "trigger": "gmmktime", "contents": "gmmktime()" }, + { "trigger": "gmp_abs", "contents": "gmp_abs(${1:a})" }, + { "trigger": "gmp_add", "contents": "gmp_add(${1:a}, ${2:b})" }, + { "trigger": "gmp_and", "contents": "gmp_and(${1:a}, ${2:b})" }, + { "trigger": "gmp_clrbit", "contents": "gmp_clrbit(${1:a}, ${2:index})" }, + { "trigger": "gmp_cmp", "contents": "gmp_cmp(${1:a}, ${2:b})" }, + { "trigger": "gmp_com", "contents": "gmp_com(${1:a})" }, + { "trigger": "gmp_div", "contents": "gmp_div()" }, + { "trigger": "gmp_div_q", "contents": "gmp_div_q(${1:a}, ${2:b})" }, + { "trigger": "gmp_div_qr", "contents": "gmp_div_qr(${1:n}, ${2:d})" }, + { "trigger": "gmp_div_r", "contents": "gmp_div_r(${1:n}, ${2:d})" }, + { "trigger": "gmp_divexact", "contents": "gmp_divexact(${1:n}, ${2:d})" }, + { "trigger": "gmp_fact", "contents": "gmp_fact(${1:a})" }, + { "trigger": "gmp_gcd", "contents": "gmp_gcd(${1:a}, ${2:b})" }, + { "trigger": "gmp_gcdext", "contents": "gmp_gcdext(${1:a}, ${2:b})" }, + { "trigger": "gmp_hamdist", "contents": "gmp_hamdist(${1:a}, ${2:b})" }, + { "trigger": "gmp_init", "contents": "gmp_init(${1:number})" }, + { "trigger": "gmp_intval", "contents": "gmp_intval(${1:gmpnumber})" }, + { "trigger": "gmp_invert", "contents": "gmp_invert(${1:a}, ${2:b})" }, + { "trigger": "gmp_jacobi", "contents": "gmp_jacobi(${1:a}, ${2:p})" }, + { "trigger": "gmp_legendre", "contents": "gmp_legendre(${1:a}, ${2:p})" }, + { "trigger": "gmp_mod", "contents": "gmp_mod(${1:n}, ${2:d})" }, + { "trigger": "gmp_mul", "contents": "gmp_mul(${1:a}, ${2:b})" }, + { "trigger": "gmp_neg", "contents": "gmp_neg(${1:a})" }, + { "trigger": "gmp_nextprime", "contents": "gmp_nextprime(${1:a})" }, + { "trigger": "gmp_or", "contents": "gmp_or(${1:a}, ${2:b})" }, + { "trigger": "gmp_perfect_square", "contents": "gmp_perfect_square(${1:a})" }, + { "trigger": "gmp_popcount", "contents": "gmp_popcount(${1:a})" }, + { "trigger": "gmp_pow", "contents": "gmp_pow(${1:base}, ${2:exp})" }, + { "trigger": "gmp_powm", "contents": "gmp_powm(${1:base}, ${2:exp}, ${3:mod})" }, + { "trigger": "gmp_prob_prime", "contents": "gmp_prob_prime(${1:a})" }, + { "trigger": "gmp_random", "contents": "gmp_random()" }, + { "trigger": "gmp_scan0", "contents": "gmp_scan0(${1:a}, ${2:start})" }, + { "trigger": "gmp_scan1", "contents": "gmp_scan1(${1:a}, ${2:start})" }, + { "trigger": "gmp_setbit", "contents": "gmp_setbit(${1:a}, ${2:index})" }, + { "trigger": "gmp_sign", "contents": "gmp_sign(${1:a})" }, + { "trigger": "gmp_sqrt", "contents": "gmp_sqrt(${1:a})" }, + { "trigger": "gmp_sqrtrem", "contents": "gmp_sqrtrem(${1:a})" }, + { "trigger": "gmp_strval", "contents": "gmp_strval(${1:gmpnumber})" }, + { "trigger": "gmp_sub", "contents": "gmp_sub(${1:a}, ${2:b})" }, + { "trigger": "gmp_testbit", "contents": "gmp_testbit(${1:a}, ${2:index})" }, + { "trigger": "gmp_xor", "contents": "gmp_xor(${1:a}, ${2:b})" }, + { "trigger": "gmstrftime", "contents": "gmstrftime(${1:format})" }, + { "trigger": "gnupg_adddecryptkey", "contents": "gnupg_adddecryptkey(${1:identifier}, ${2:fingerprint}, ${3:passphrase})" }, + { "trigger": "gnupg_addencryptkey", "contents": "gnupg_addencryptkey(${1:identifier}, ${2:fingerprint})" }, + { "trigger": "gnupg_addsignkey", "contents": "gnupg_addsignkey(${1:identifier}, ${2:fingerprint})" }, + { "trigger": "gnupg_cleardecryptkeys", "contents": "gnupg_cleardecryptkeys(${1:identifier})" }, + { "trigger": "gnupg_clearencryptkeys", "contents": "gnupg_clearencryptkeys(${1:identifier})" }, + { "trigger": "gnupg_clearsignkeys", "contents": "gnupg_clearsignkeys(${1:identifier})" }, + { "trigger": "gnupg_decrypt", "contents": "gnupg_decrypt(${1:identifier}, ${2:text})" }, + { "trigger": "gnupg_decryptverify", "contents": "gnupg_decryptverify(${1:identifier}, ${2:text}, ${3:plaintext})" }, + { "trigger": "gnupg_encrypt", "contents": "gnupg_encrypt(${1:identifier}, ${2:plaintext})" }, + { "trigger": "gnupg_encryptsign", "contents": "gnupg_encryptsign(${1:identifier}, ${2:plaintext})" }, + { "trigger": "gnupg_export", "contents": "gnupg_export(${1:identifier}, ${2:fingerprint})" }, + { "trigger": "gnupg_geterror", "contents": "gnupg_geterror(${1:identifier})" }, + { "trigger": "gnupg_getprotocol", "contents": "gnupg_getprotocol(${1:identifier})" }, + { "trigger": "gnupg_import", "contents": "gnupg_import(${1:identifier}, ${2:keydata})" }, + { "trigger": "gnupg_init", "contents": "gnupg_init(${1:oid})" }, + { "trigger": "gnupg_keyinfo", "contents": "gnupg_keyinfo(${1:identifier}, ${2:pattern})" }, + { "trigger": "gnupg_setarmor", "contents": "gnupg_setarmor(${1:identifier}, ${2:armor})" }, + { "trigger": "gnupg_seterrormode", "contents": "gnupg_seterrormode(${1:identifier}, ${2:errormode})" }, + { "trigger": "gnupg_setsignmode", "contents": "gnupg_setsignmode(${1:identifier}, ${2:signmode})" }, + { "trigger": "gnupg_sign", "contents": "gnupg_sign(${1:identifier}, ${2:plaintext})" }, + { "trigger": "gnupg_verify", "contents": "gnupg_verify(${1:identifier}, ${2:signed_text}, ${3:signature})" }, + { "trigger": "gopher_parsedir", "contents": "gopher_parsedir(${1:dirent})" }, + { "trigger": "grapheme_extract", "contents": "grapheme_extract(${1:haystack}, ${2:size})" }, + { "trigger": "grapheme_stripos", "contents": "grapheme_stripos(${1:haystack}, ${2:needle})" }, + { "trigger": "grapheme_stristr", "contents": "grapheme_stristr(${1:haystack}, ${2:needle})" }, + { "trigger": "grapheme_strlen", "contents": "grapheme_strlen(${1:input})" }, + { "trigger": "grapheme_strpos", "contents": "grapheme_strpos(${1:haystack}, ${2:needle})" }, + { "trigger": "grapheme_strripos", "contents": "grapheme_strripos(${1:haystack}, ${2:needle})" }, + { "trigger": "grapheme_strrpos", "contents": "grapheme_strrpos(${1:haystack}, ${2:needle})" }, + { "trigger": "grapheme_strstr", "contents": "grapheme_strstr(${1:haystack}, ${2:needle})" }, + { "trigger": "grapheme_substr", "contents": "grapheme_substr(${1:string}, ${2:start})" }, + { "trigger": "GregorianToJD", "contents": "GregorianToJD(${1:month}, ${2:day}, ${3:year})" }, + { "trigger": "gupnp_context_get_host_ip", "contents": "gupnp_context_get_host_ip(${1:context})" }, + { "trigger": "gupnp_context_get_port", "contents": "gupnp_context_get_port(${1:context})" }, + { "trigger": "gupnp_context_get_subscription_timeout", "contents": "gupnp_context_get_subscription_timeout(${1:context})" }, + { "trigger": "gupnp_context_host_path", "contents": "gupnp_context_host_path(${1:context}, ${2:local_path}, ${3:server_path})" }, + { "trigger": "gupnp_context_new", "contents": "gupnp_context_new()" }, + { "trigger": "gupnp_context_set_subscription_timeout", "contents": "gupnp_context_set_subscription_timeout(${1:context}, ${2:timeout})" }, + { "trigger": "gupnp_context_timeout_add", "contents": "gupnp_context_timeout_add(${1:context}, ${2:timeout}, ${3:callback})" }, + { "trigger": "gupnp_context_unhost_path", "contents": "gupnp_context_unhost_path(${1:context}, ${2:server_path})" }, + { "trigger": "gupnp_control_point_browse_start", "contents": "gupnp_control_point_browse_start(${1:cpoint})" }, + { "trigger": "gupnp_control_point_browse_stop", "contents": "gupnp_control_point_browse_stop(${1:cpoint})" }, + { "trigger": "gupnp_control_point_callback_set", "contents": "gupnp_control_point_callback_set(${1:cpoint}, ${2:signal}, ${3:callback})" }, + { "trigger": "gupnp_control_point_new", "contents": "gupnp_control_point_new(${1:context}, ${2:target})" }, + { "trigger": "gupnp_device_action_callback_set", "contents": "gupnp_device_action_callback_set(${1:root_device}, ${2:signal}, ${3:action_name}, ${4:callback})" }, + { "trigger": "gupnp_device_info_get", "contents": "gupnp_device_info_get(${1:root_device})" }, + { "trigger": "gupnp_device_info_get_service", "contents": "gupnp_device_info_get_service(${1:root_device}, ${2:type})" }, + { "trigger": "gupnp_root_device_get_available", "contents": "gupnp_root_device_get_available(${1:root_device})" }, + { "trigger": "gupnp_root_device_get_relative_location", "contents": "gupnp_root_device_get_relative_location(${1:root_device})" }, + { "trigger": "gupnp_root_device_new", "contents": "gupnp_root_device_new(${1:context}, ${2:location}, ${3:description_dir})" }, + { "trigger": "gupnp_root_device_set_available", "contents": "gupnp_root_device_set_available(${1:root_device}, ${2:available})" }, + { "trigger": "gupnp_root_device_start", "contents": "gupnp_root_device_start(${1:root_device})" }, + { "trigger": "gupnp_root_device_stop", "contents": "gupnp_root_device_stop(${1:root_device})" }, + { "trigger": "gupnp_service_action_get", "contents": "gupnp_service_action_get(${1:action}, ${2:name}, ${3:type})" }, + { "trigger": "gupnp_service_action_return", "contents": "gupnp_service_action_return(${1:action})" }, + { "trigger": "gupnp_service_action_return_error", "contents": "gupnp_service_action_return_error(${1:action}, ${2:error_code})" }, + { "trigger": "gupnp_service_action_set", "contents": "gupnp_service_action_set(${1:action}, ${2:name}, ${3:type}, ${4:value})" }, + { "trigger": "gupnp_service_freeze_notify", "contents": "gupnp_service_freeze_notify(${1:service})" }, + { "trigger": "gupnp_service_info_get", "contents": "gupnp_service_info_get(${1:proxy})" }, + { "trigger": "gupnp_service_info_get_introspection", "contents": "gupnp_service_info_get_introspection(${1:proxy})" }, + { "trigger": "gupnp_service_introspection_get_state_variable", "contents": "gupnp_service_introspection_get_state_variable(${1:introspection}, ${2:variable_name})" }, + { "trigger": "gupnp_service_notify", "contents": "gupnp_service_notify(${1:service}, ${2:name}, ${3:type}, ${4:value})" }, + { "trigger": "gupnp_service_proxy_action_get", "contents": "gupnp_service_proxy_action_get(${1:proxy}, ${2:action}, ${3:name}, ${4:type})" }, + { "trigger": "gupnp_service_proxy_action_set", "contents": "gupnp_service_proxy_action_set(${1:proxy}, ${2:action}, ${3:name}, ${4:value}, ${5:type})" }, + { "trigger": "gupnp_service_proxy_add_notify", "contents": "gupnp_service_proxy_add_notify(${1:proxy}, ${2:value}, ${3:type}, ${4:callback})" }, + { "trigger": "gupnp_service_proxy_callback_set", "contents": "gupnp_service_proxy_callback_set(${1:proxy}, ${2:signal}, ${3:callback})" }, + { "trigger": "gupnp_service_proxy_get_subscribed", "contents": "gupnp_service_proxy_get_subscribed(${1:proxy})" }, + { "trigger": "gupnp_service_proxy_remove_notify", "contents": "gupnp_service_proxy_remove_notify(${1:proxy}, ${2:value})" }, + { "trigger": "gupnp_service_proxy_set_subscribed", "contents": "gupnp_service_proxy_set_subscribed(${1:proxy}, ${2:subscribed})" }, + { "trigger": "gupnp_service_thaw_notify", "contents": "gupnp_service_thaw_notify(${1:service})" }, + { "trigger": "gzclose", "contents": "gzclose(${1:zp})" }, + { "trigger": "gzcompress", "contents": "gzcompress(${1:data})" }, + { "trigger": "gzdecode", "contents": "gzdecode(${1:data})" }, + { "trigger": "gzdeflate", "contents": "gzdeflate(${1:data})" }, + { "trigger": "gzencode", "contents": "gzencode(${1:data})" }, + { "trigger": "gzeof", "contents": "gzeof(${1:zp})" }, + { "trigger": "gzfile", "contents": "gzfile(${1:filename})" }, + { "trigger": "gzgetc", "contents": "gzgetc(${1:zp})" }, + { "trigger": "gzgets", "contents": "gzgets(${1:zp}, ${2:length})" }, + { "trigger": "gzgetss", "contents": "gzgetss(${1:zp}, ${2:length})" }, + { "trigger": "gzinflate", "contents": "gzinflate(${1:data})" }, + { "trigger": "gzopen", "contents": "gzopen(${1:filename}, ${2:mode})" }, + { "trigger": "gzpassthru", "contents": "gzpassthru(${1:zp})" }, + { "trigger": "gzputs", "contents": "gzputs()" }, + { "trigger": "gzread", "contents": "gzread(${1:zp}, ${2:length})" }, + { "trigger": "gzrewind", "contents": "gzrewind(${1:zp})" }, + { "trigger": "gzseek", "contents": "gzseek(${1:zp}, ${2:offset})" }, + { "trigger": "gztell", "contents": "gztell(${1:zp})" }, + { "trigger": "gzuncompress", "contents": "gzuncompress(${1:data})" }, + { "trigger": "gzwrite", "contents": "gzwrite(${1:zp}, ${2:string})" }, + { "trigger": "__halt_compiler", "contents": "__halt_compiler(${1:oid})" }, + { "trigger": "hash", "contents": "hash(${1:algo}, ${2:data})" }, + { "trigger": "hash_algos", "contents": "hash_algos(${1:oid})" }, + { "trigger": "hash_copy", "contents": "hash_copy(${1:context})" }, + { "trigger": "hash_file", "contents": "hash_file(${1:algo}, ${2:filename})" }, + { "trigger": "hash_final", "contents": "hash_final(${1:context})" }, + { "trigger": "hash_hmac", "contents": "hash_hmac(${1:algo}, ${2:data}, ${3:key})" }, + { "trigger": "hash_hmac_file", "contents": "hash_hmac_file(${1:algo}, ${2:filename}, ${3:key})" }, + { "trigger": "hash_init", "contents": "hash_init(${1:algo})" }, + { "trigger": "hash_update", "contents": "hash_update(${1:context}, ${2:data})" }, + { "trigger": "hash_update_file", "contents": "hash_update_file(${1:context}, ${2:filename})" }, + { "trigger": "hash_update_stream", "contents": "hash_update_stream(${1:context}, ${2:handle})" }, + { "trigger": "header", "contents": "header(${1:string})" }, + { "trigger": "header_remove", "contents": "header_remove()" }, + { "trigger": "headers_list", "contents": "headers_list(${1:oid})" }, + { "trigger": "headers_sent", "contents": "headers_sent()" }, + { "trigger": "hebrev", "contents": "hebrev(${1:hebrew_text})" }, + { "trigger": "hebrevc", "contents": "hebrevc(${1:hebrew_text})" }, + { "trigger": "hexdec", "contents": "hexdec(${1:hex_string})" }, + { "trigger": "highlight_file", "contents": "highlight_file(${1:filename})" }, + { "trigger": "highlight_string", "contents": "highlight_string(${1:str})" }, + { "trigger": "html_entity_decode", "contents": "html_entity_decode(${1:string})" }, + { "trigger": "htmlentities", "contents": "htmlentities(${1:string})" }, + { "trigger": "htmlspecialchars", "contents": "htmlspecialchars(${1:string})" }, + { "trigger": "htmlspecialchars_decode", "contents": "htmlspecialchars_decode(${1:string})" }, + { "trigger": "http_build_cookie", "contents": "http_build_cookie(${1:cookie})" }, + { "trigger": "http_build_query", "contents": "http_build_query(${1:query_data})" }, + { "trigger": "http_build_str", "contents": "http_build_str(${1:query})" }, + { "trigger": "http_build_url", "contents": "http_build_url()" }, + { "trigger": "http_cache_etag", "contents": "http_cache_etag()" }, + { "trigger": "http_cache_last_modified", "contents": "http_cache_last_modified()" }, + { "trigger": "http_chunked_decode", "contents": "http_chunked_decode(${1:encoded})" }, + { "trigger": "http_date", "contents": "http_date()" }, + { "trigger": "http_deflate", "contents": "http_deflate(${1:data})" }, + { "trigger": "http_get", "contents": "http_get(${1:url})" }, + { "trigger": "http_get_request_body", "contents": "http_get_request_body(${1:oid})" }, + { "trigger": "http_get_request_body_stream", "contents": "http_get_request_body_stream(${1:oid})" }, + { "trigger": "http_get_request_headers", "contents": "http_get_request_headers(${1:oid})" }, + { "trigger": "http_head", "contents": "http_head(${1:url})" }, + { "trigger": "http_inflate", "contents": "http_inflate(${1:data})" }, + { "trigger": "http_match_etag", "contents": "http_match_etag(${1:etag})" }, + { "trigger": "http_match_modified", "contents": "http_match_modified()" }, + { "trigger": "http_match_request_header", "contents": "http_match_request_header(${1:header}, ${2:value})" }, + { "trigger": "http_negotiate_charset", "contents": "http_negotiate_charset(${1:supported})" }, + { "trigger": "http_negotiate_content_type", "contents": "http_negotiate_content_type(${1:supported})" }, + { "trigger": "http_negotiate_language", "contents": "http_negotiate_language(${1:supported})" }, + { "trigger": "http_parse_cookie", "contents": "http_parse_cookie(${1:cookie})" }, + { "trigger": "http_parse_headers", "contents": "http_parse_headers(${1:header})" }, + { "trigger": "http_parse_message", "contents": "http_parse_message(${1:message})" }, + { "trigger": "http_parse_params", "contents": "http_parse_params(${1:param})" }, + { "trigger": "http_persistent_handles_clean", "contents": "http_persistent_handles_clean()" }, + { "trigger": "http_persistent_handles_count", "contents": "http_persistent_handles_count(${1:oid})" }, + { "trigger": "http_persistent_handles_ident", "contents": "http_persistent_handles_ident()" }, + { "trigger": "http_post_data", "contents": "http_post_data(${1:url}, ${2:data})" }, + { "trigger": "http_post_fields", "contents": "http_post_fields(${1:url}, ${2:data})" }, + { "trigger": "http_put_data", "contents": "http_put_data(${1:url}, ${2:data})" }, + { "trigger": "http_put_file", "contents": "http_put_file(${1:url}, ${2:file})" }, + { "trigger": "http_put_stream", "contents": "http_put_stream(${1:url}, ${2:stream})" }, + { "trigger": "http_redirect", "contents": "http_redirect()" }, + { "trigger": "http_request", "contents": "http_request(${1:method}, ${2:url})" }, + { "trigger": "http_request_body_encode", "contents": "http_request_body_encode(${1:fields}, ${2:files})" }, + { "trigger": "http_request_method_exists", "contents": "http_request_method_exists(${1:method})" }, + { "trigger": "http_request_method_name", "contents": "http_request_method_name(${1:method})" }, + { "trigger": "http_request_method_register", "contents": "http_request_method_register(${1:method})" }, + { "trigger": "http_request_method_unregister", "contents": "http_request_method_unregister(${1:method})" }, + { "trigger": "http_send_content_disposition", "contents": "http_send_content_disposition(${1:filename})" }, + { "trigger": "http_send_content_type", "contents": "http_send_content_type()" }, + { "trigger": "http_send_data", "contents": "http_send_data(${1:data})" }, + { "trigger": "http_send_file", "contents": "http_send_file(${1:file})" }, + { "trigger": "http_send_last_modified", "contents": "http_send_last_modified()" }, + { "trigger": "http_send_status", "contents": "http_send_status(${1:status})" }, + { "trigger": "http_send_stream", "contents": "http_send_stream(${1:stream})" }, + { "trigger": "http_support", "contents": "http_support()" }, + { "trigger": "http_throttle", "contents": "http_throttle(${1:sec})" }, + { "trigger": "hw_Array2Objrec", "contents": "hw_Array2Objrec(${1:object_array})" }, + { "trigger": "hw_changeobject", "contents": "hw_changeobject(${1:link}, ${2:objid}, ${3:attributes})" }, + { "trigger": "hw_Children", "contents": "hw_Children(${1:connection}, ${2:objectID})" }, + { "trigger": "hw_ChildrenObj", "contents": "hw_ChildrenObj(${1:connection}, ${2:objectID})" }, + { "trigger": "hw_Close", "contents": "hw_Close(${1:connection})" }, + { "trigger": "hw_Connect", "contents": "hw_Connect(${1:host}, ${2:port})" }, + { "trigger": "hw_connection_info", "contents": "hw_connection_info(${1:link})" }, + { "trigger": "hw_cp", "contents": "hw_cp(${1:connection}, ${2:object_id_array}, ${3:destination_id})" }, + { "trigger": "hw_Deleteobject", "contents": "hw_Deleteobject(${1:connection}, ${2:object_to_delete})" }, + { "trigger": "hw_DocByAnchor", "contents": "hw_DocByAnchor(${1:connection}, ${2:anchorID})" }, + { "trigger": "hw_DocByAnchorObj", "contents": "hw_DocByAnchorObj(${1:connection}, ${2:anchorID})" }, + { "trigger": "hw_Document_Attributes", "contents": "hw_Document_Attributes(${1:hw_document})" }, + { "trigger": "hw_Document_BodyTag", "contents": "hw_Document_BodyTag(${1:hw_document})" }, + { "trigger": "hw_Document_Content", "contents": "hw_Document_Content(${1:hw_document})" }, + { "trigger": "hw_Document_SetContent", "contents": "hw_Document_SetContent(${1:hw_document}, ${2:content})" }, + { "trigger": "hw_Document_Size", "contents": "hw_Document_Size(${1:hw_document})" }, + { "trigger": "hw_dummy", "contents": "hw_dummy(${1:link}, ${2:id}, ${3:msgid})" }, + { "trigger": "hw_EditText", "contents": "hw_EditText(${1:connection}, ${2:hw_document})" }, + { "trigger": "hw_Error", "contents": "hw_Error(${1:connection})" }, + { "trigger": "hw_ErrorMsg", "contents": "hw_ErrorMsg(${1:connection})" }, + { "trigger": "hw_Free_Document", "contents": "hw_Free_Document(${1:hw_document})" }, + { "trigger": "hw_GetAnchors", "contents": "hw_GetAnchors(${1:connection}, ${2:objectID})" }, + { "trigger": "hw_GetAnchorsObj", "contents": "hw_GetAnchorsObj(${1:connection}, ${2:objectID})" }, + { "trigger": "hw_GetAndLock", "contents": "hw_GetAndLock(${1:connection}, ${2:objectID})" }, + { "trigger": "hw_GetChildColl", "contents": "hw_GetChildColl(${1:connection}, ${2:objectID})" }, + { "trigger": "hw_GetChildCollObj", "contents": "hw_GetChildCollObj(${1:connection}, ${2:objectID})" }, + { "trigger": "hw_GetChildDocColl", "contents": "hw_GetChildDocColl(${1:connection}, ${2:objectID})" }, + { "trigger": "hw_GetChildDocCollObj", "contents": "hw_GetChildDocCollObj(${1:connection}, ${2:objectID})" }, + { "trigger": "hw_GetObject", "contents": "hw_GetObject(${1:connection}, ${2:objectID})" }, + { "trigger": "hw_GetObjectByQuery", "contents": "hw_GetObjectByQuery(${1:connection}, ${2:query}, ${3:max_hits})" }, + { "trigger": "hw_GetObjectByQueryColl", "contents": "hw_GetObjectByQueryColl(${1:connection}, ${2:objectID}, ${3:query}, ${4:max_hits})" }, + { "trigger": "hw_GetObjectByQueryCollObj", "contents": "hw_GetObjectByQueryCollObj(${1:connection}, ${2:objectID}, ${3:query}, ${4:max_hits})" }, + { "trigger": "hw_GetObjectByQueryObj", "contents": "hw_GetObjectByQueryObj(${1:connection}, ${2:query}, ${3:max_hits})" }, + { "trigger": "hw_GetParents", "contents": "hw_GetParents(${1:connection}, ${2:objectID})" }, + { "trigger": "hw_GetParentsObj", "contents": "hw_GetParentsObj(${1:connection}, ${2:objectID})" }, + { "trigger": "hw_getrellink", "contents": "hw_getrellink(${1:link}, ${2:rootid}, ${3:sourceid}, ${4:destid})" }, + { "trigger": "hw_GetRemote", "contents": "hw_GetRemote(${1:connection}, ${2:objectID})" }, + { "trigger": "hw_getremotechildren", "contents": "hw_getremotechildren(${1:connection}, ${2:object_record})" }, + { "trigger": "hw_GetSrcByDestObj", "contents": "hw_GetSrcByDestObj(${1:connection}, ${2:objectID})" }, + { "trigger": "hw_GetText", "contents": "hw_GetText(${1:connection}, ${2:objectID})" }, + { "trigger": "hw_getusername", "contents": "hw_getusername(${1:connection})" }, + { "trigger": "hw_Identify", "contents": "hw_Identify(${1:link}, ${2:username}, ${3:password})" }, + { "trigger": "hw_InCollections", "contents": "hw_InCollections(${1:connection}, ${2:object_id_array}, ${3:collection_id_array}, ${4:return_collections})" }, + { "trigger": "hw_Info", "contents": "hw_Info(${1:connection})" }, + { "trigger": "hw_InsColl", "contents": "hw_InsColl(${1:connection}, ${2:objectID}, ${3:object_array})" }, + { "trigger": "hw_InsDoc", "contents": "hw_InsDoc(${1:connection}, ${2:parentID}, ${3:object_record})" }, + { "trigger": "hw_insertanchors", "contents": "hw_insertanchors(${1:hwdoc}, ${2:anchorecs}, ${3:dest})" }, + { "trigger": "hw_InsertDocument", "contents": "hw_InsertDocument(${1:connection}, ${2:parent_id}, ${3:hw_document})" }, + { "trigger": "hw_InsertObject", "contents": "hw_InsertObject(${1:connection}, ${2:object_rec}, ${3:parameter})" }, + { "trigger": "hw_mapid", "contents": "hw_mapid(${1:connection}, ${2:server_id}, ${3:object_id})" }, + { "trigger": "hw_Modifyobject", "contents": "hw_Modifyobject(${1:connection}, ${2:object_to_change}, ${3:remove}, ${4:add})" }, + { "trigger": "hw_mv", "contents": "hw_mv(${1:connection}, ${2:object_id_array}, ${3:source_id}, ${4:destination_id})" }, + { "trigger": "hw_New_Document", "contents": "hw_New_Document(${1:object_record}, ${2:document_data}, ${3:document_size})" }, + { "trigger": "hw_objrec2array", "contents": "hw_objrec2array(${1:object_record})" }, + { "trigger": "hw_Output_Document", "contents": "hw_Output_Document(${1:hw_document})" }, + { "trigger": "hw_pConnect", "contents": "hw_pConnect(${1:host}, ${2:port})" }, + { "trigger": "hw_PipeDocument", "contents": "hw_PipeDocument(${1:connection}, ${2:objectID})" }, + { "trigger": "hw_Root", "contents": "hw_Root(${1:oid})" }, + { "trigger": "hw_setlinkroot", "contents": "hw_setlinkroot(${1:link}, ${2:rootid})" }, + { "trigger": "hw_stat", "contents": "hw_stat(${1:link})" }, + { "trigger": "hw_Unlock", "contents": "hw_Unlock(${1:connection}, ${2:objectID})" }, + { "trigger": "hw_Who", "contents": "hw_Who(${1:connection})" }, + { "trigger": "hw_api_attribute", "contents": "hw_api_attribute()" }, + { "trigger": "hwapi_hgcsp", "contents": "hwapi_hgcsp(${1:hostname})" }, + { "trigger": "hw_api_content", "contents": "hw_api_content(${1:content}, ${2:mimetype})" }, + { "trigger": "hw_api_object", "contents": "hw_api_object(${1:parameter})" }, + { "trigger": "hypot", "contents": "hypot(${1:x}, ${2:y})" }, + { "trigger": "ibase_add_user", "contents": "ibase_add_user(${1:service_handle}, ${2:user_name}, ${3:password})" }, + { "trigger": "ibase_affected_rows", "contents": "ibase_affected_rows()" }, + { "trigger": "ibase_backup", "contents": "ibase_backup(${1:service_handle}, ${2:source_db}, ${3:dest_file})" }, + { "trigger": "ibase_blob_add", "contents": "ibase_blob_add(${1:blob_handle}, ${2:data})" }, + { "trigger": "ibase_blob_cancel", "contents": "ibase_blob_cancel(${1:blob_handle})" }, + { "trigger": "ibase_blob_close", "contents": "ibase_blob_close(${1:blob_handle})" }, + { "trigger": "ibase_blob_create", "contents": "ibase_blob_create()" }, + { "trigger": "ibase_blob_echo", "contents": "ibase_blob_echo(${1:blob_id})" }, + { "trigger": "ibase_blob_get", "contents": "ibase_blob_get(${1:blob_handle}, ${2:len})" }, + { "trigger": "ibase_blob_import", "contents": "ibase_blob_import(${1:link_identifier}, ${2:file_handle})" }, + { "trigger": "ibase_blob_info", "contents": "ibase_blob_info(${1:link_identifier}, ${2:blob_id})" }, + { "trigger": "ibase_blob_open", "contents": "ibase_blob_open(${1:link_identifier}, ${2:blob_id})" }, + { "trigger": "ibase_close", "contents": "ibase_close()" }, + { "trigger": "ibase_commit", "contents": "ibase_commit()" }, + { "trigger": "ibase_commit_ret", "contents": "ibase_commit_ret()" }, + { "trigger": "ibase_connect", "contents": "ibase_connect()" }, + { "trigger": "ibase_db_info", "contents": "ibase_db_info(${1:service_handle}, ${2:db}, ${3:action})" }, + { "trigger": "ibase_delete_user", "contents": "ibase_delete_user(${1:service_handle}, ${2:user_name})" }, + { "trigger": "ibase_drop_db", "contents": "ibase_drop_db()" }, + { "trigger": "ibase_errcode", "contents": "ibase_errcode(${1:oid})" }, + { "trigger": "ibase_errmsg", "contents": "ibase_errmsg(${1:oid})" }, + { "trigger": "ibase_execute", "contents": "ibase_execute(${1:query})" }, + { "trigger": "ibase_fetch_assoc", "contents": "ibase_fetch_assoc(${1:result})" }, + { "trigger": "ibase_fetch_object", "contents": "ibase_fetch_object(${1:result_id})" }, + { "trigger": "ibase_fetch_row", "contents": "ibase_fetch_row(${1:result_identifier})" }, + { "trigger": "ibase_field_info", "contents": "ibase_field_info(${1:result}, ${2:field_number})" }, + { "trigger": "ibase_free_event_handler", "contents": "ibase_free_event_handler(${1:event})" }, + { "trigger": "ibase_free_query", "contents": "ibase_free_query(${1:query})" }, + { "trigger": "ibase_free_result", "contents": "ibase_free_result(${1:result_identifier})" }, + { "trigger": "ibase_gen_id", "contents": "ibase_gen_id(${1:generator})" }, + { "trigger": "ibase_maintain_db", "contents": "ibase_maintain_db(${1:service_handle}, ${2:db}, ${3:action})" }, + { "trigger": "ibase_modify_user", "contents": "ibase_modify_user(${1:service_handle}, ${2:user_name}, ${3:password})" }, + { "trigger": "ibase_name_result", "contents": "ibase_name_result(${1:result}, ${2:name})" }, + { "trigger": "ibase_num_fields", "contents": "ibase_num_fields(${1:result_id})" }, + { "trigger": "ibase_num_params", "contents": "ibase_num_params(${1:query})" }, + { "trigger": "ibase_param_info", "contents": "ibase_param_info(${1:query}, ${2:param_number})" }, + { "trigger": "ibase_pconnect", "contents": "ibase_pconnect()" }, + { "trigger": "ibase_prepare", "contents": "ibase_prepare(${1:query})" }, + { "trigger": "ibase_query", "contents": "ibase_query()" }, + { "trigger": "ibase_restore", "contents": "ibase_restore(${1:service_handle}, ${2:source_file}, ${3:dest_db})" }, + { "trigger": "ibase_rollback", "contents": "ibase_rollback()" }, + { "trigger": "ibase_rollback_ret", "contents": "ibase_rollback_ret()" }, + { "trigger": "ibase_server_info", "contents": "ibase_server_info(${1:service_handle}, ${2:action})" }, + { "trigger": "ibase_service_attach", "contents": "ibase_service_attach(${1:host}, ${2:dba_username}, ${3:dba_password})" }, + { "trigger": "ibase_service_detach", "contents": "ibase_service_detach(${1:service_handle})" }, + { "trigger": "ibase_set_event_handler", "contents": "ibase_set_event_handler(${1:event_handler}, ${2:event_name1})" }, + { "trigger": "ibase_timefmt", "contents": "ibase_timefmt(${1:format})" }, + { "trigger": "ibase_trans", "contents": "ibase_trans()" }, + { "trigger": "ibase_wait_event", "contents": "ibase_wait_event(${1:event_name1})" }, + { "trigger": "iconv", "contents": "iconv(${1:in_charset}, ${2:out_charset}, ${3:str})" }, + { "trigger": "iconv_get_encoding", "contents": "iconv_get_encoding()" }, + { "trigger": "iconv_mime_decode", "contents": "iconv_mime_decode(${1:encoded_header})" }, + { "trigger": "iconv_mime_decode_headers", "contents": "iconv_mime_decode_headers(${1:encoded_headers})" }, + { "trigger": "iconv_mime_encode", "contents": "iconv_mime_encode(${1:field_name}, ${2:field_value})" }, + { "trigger": "iconv_set_encoding", "contents": "iconv_set_encoding(${1:type}, ${2:charset})" }, + { "trigger": "iconv_strlen", "contents": "iconv_strlen(${1:str})" }, + { "trigger": "iconv_strpos", "contents": "iconv_strpos(${1:haystack}, ${2:needle})" }, + { "trigger": "iconv_strrpos", "contents": "iconv_strrpos(${1:haystack}, ${2:needle})" }, + { "trigger": "iconv_substr", "contents": "iconv_substr(${1:str}, ${2:offset})" }, + { "trigger": "id3_get_frame_long_name", "contents": "id3_get_frame_long_name(${1:frameId})" }, + { "trigger": "id3_get_frame_short_name", "contents": "id3_get_frame_short_name(${1:frameId})" }, + { "trigger": "id3_get_genre_id", "contents": "id3_get_genre_id(${1:genre})" }, + { "trigger": "id3_get_genre_list", "contents": "id3_get_genre_list(${1:oid})" }, + { "trigger": "id3_get_genre_name", "contents": "id3_get_genre_name(${1:genre_id})" }, + { "trigger": "id3_get_tag", "contents": "id3_get_tag(${1:filename})" }, + { "trigger": "id3_get_version", "contents": "id3_get_version(${1:filename})" }, + { "trigger": "id3_remove_tag", "contents": "id3_remove_tag(${1:filename})" }, + { "trigger": "id3_set_tag", "contents": "id3_set_tag(${1:filename}, ${2:tag})" }, + { "trigger": "idate", "contents": "idate(${1:format})" }, + { "trigger": "idn_to_ascii", "contents": "idn_to_ascii(${1:domain})" }, + { "trigger": "idn_to_unicode", "contents": "idn_to_unicode()" }, + { "trigger": "idn_to_utf8", "contents": "idn_to_utf8(${1:domain})" }, + { "trigger": "ifx_affected_rows", "contents": "ifx_affected_rows(${1:result_id})" }, + { "trigger": "ifx_blobinfile_mode", "contents": "ifx_blobinfile_mode(${1:mode})" }, + { "trigger": "ifx_byteasvarchar", "contents": "ifx_byteasvarchar(${1:mode})" }, + { "trigger": "ifx_close", "contents": "ifx_close()" }, + { "trigger": "ifx_connect", "contents": "ifx_connect()" }, + { "trigger": "ifx_copy_blob", "contents": "ifx_copy_blob(${1:bid})" }, + { "trigger": "ifx_create_blob", "contents": "ifx_create_blob(${1:type}, ${2:mode}, ${3:param})" }, + { "trigger": "ifx_create_char", "contents": "ifx_create_char(${1:param})" }, + { "trigger": "ifx_do", "contents": "ifx_do(${1:result_id})" }, + { "trigger": "ifx_error", "contents": "ifx_error()" }, + { "trigger": "ifx_errormsg", "contents": "ifx_errormsg()" }, + { "trigger": "ifx_fetch_row", "contents": "ifx_fetch_row(${1:result_id})" }, + { "trigger": "ifx_fieldproperties", "contents": "ifx_fieldproperties(${1:result_id})" }, + { "trigger": "ifx_fieldtypes", "contents": "ifx_fieldtypes(${1:result_id})" }, + { "trigger": "ifx_free_blob", "contents": "ifx_free_blob(${1:bid})" }, + { "trigger": "ifx_free_char", "contents": "ifx_free_char(${1:bid})" }, + { "trigger": "ifx_free_result", "contents": "ifx_free_result(${1:result_id})" }, + { "trigger": "ifx_get_blob", "contents": "ifx_get_blob(${1:bid})" }, + { "trigger": "ifx_get_char", "contents": "ifx_get_char(${1:bid})" }, + { "trigger": "ifx_getsqlca", "contents": "ifx_getsqlca(${1:result_id})" }, + { "trigger": "ifx_htmltbl_result", "contents": "ifx_htmltbl_result(${1:result_id})" }, + { "trigger": "ifx_nullformat", "contents": "ifx_nullformat(${1:mode})" }, + { "trigger": "ifx_num_fields", "contents": "ifx_num_fields(${1:result_id})" }, + { "trigger": "ifx_num_rows", "contents": "ifx_num_rows(${1:result_id})" }, + { "trigger": "ifx_pconnect", "contents": "ifx_pconnect()" }, + { "trigger": "ifx_prepare", "contents": "ifx_prepare(${1:query}, ${2:link_identifier})" }, + { "trigger": "ifx_query", "contents": "ifx_query(${1:query}, ${2:link_identifier})" }, + { "trigger": "ifx_textasvarchar", "contents": "ifx_textasvarchar(${1:mode})" }, + { "trigger": "ifx_update_blob", "contents": "ifx_update_blob(${1:bid}, ${2:content})" }, + { "trigger": "ifx_update_char", "contents": "ifx_update_char(${1:bid}, ${2:content})" }, + { "trigger": "ifxus_close_slob", "contents": "ifxus_close_slob(${1:bid})" }, + { "trigger": "ifxus_create_slob", "contents": "ifxus_create_slob(${1:mode})" }, + { "trigger": "ifxus_free_slob", "contents": "ifxus_free_slob(${1:bid})" }, + { "trigger": "ifxus_open_slob", "contents": "ifxus_open_slob(${1:bid}, ${2:mode})" }, + { "trigger": "ifxus_read_slob", "contents": "ifxus_read_slob(${1:bid}, ${2:nbytes})" }, + { "trigger": "ifxus_seek_slob", "contents": "ifxus_seek_slob(${1:bid}, ${2:mode}, ${3:offset})" }, + { "trigger": "ifxus_tell_slob", "contents": "ifxus_tell_slob(${1:bid})" }, + { "trigger": "ifxus_write_slob", "contents": "ifxus_write_slob(${1:bid}, ${2:content})" }, + { "trigger": "ignore_user_abort", "contents": "ignore_user_abort()" }, + { "trigger": "iis_add_server", "contents": "iis_add_server(${1:path}, ${2:comment}, ${3:server_ip}, ${4:port}, ${5:host_name}, ${6:rights}, ${7:start_server})" }, + { "trigger": "iis_get_dir_security", "contents": "iis_get_dir_security(${1:server_instance}, ${2:virtual_path})" }, + { "trigger": "iis_get_script_map", "contents": "iis_get_script_map(${1:server_instance}, ${2:virtual_path}, ${3:script_extension})" }, + { "trigger": "iis_get_server_by_comment", "contents": "iis_get_server_by_comment(${1:comment})" }, + { "trigger": "iis_get_server_by_path", "contents": "iis_get_server_by_path(${1:path})" }, + { "trigger": "iis_get_server_rights", "contents": "iis_get_server_rights(${1:server_instance}, ${2:virtual_path})" }, + { "trigger": "iis_get_service_state", "contents": "iis_get_service_state(${1:service_id})" }, + { "trigger": "iis_remove_server", "contents": "iis_remove_server(${1:server_instance})" }, + { "trigger": "iis_set_app_settings", "contents": "iis_set_app_settings(${1:server_instance}, ${2:virtual_path}, ${3:application_scope})" }, + { "trigger": "iis_set_dir_security", "contents": "iis_set_dir_security(${1:server_instance}, ${2:virtual_path}, ${3:directory_flags})" }, + { "trigger": "iis_set_script_map", "contents": "iis_set_script_map(${1:server_instance}, ${2:virtual_path}, ${3:script_extension}, ${4:engine_path}, ${5:allow_scripting})" }, + { "trigger": "iis_set_server_rights", "contents": "iis_set_server_rights(${1:server_instance}, ${2:virtual_path}, ${3:directory_flags})" }, + { "trigger": "iis_start_server", "contents": "iis_start_server(${1:server_instance})" }, + { "trigger": "iis_start_service", "contents": "iis_start_service(${1:service_id})" }, + { "trigger": "iis_stop_server", "contents": "iis_stop_server(${1:server_instance})" }, + { "trigger": "iis_stop_service", "contents": "iis_stop_service(${1:service_id})" }, + { "trigger": "image2wbmp", "contents": "image2wbmp(${1:image})" }, + { "trigger": "image_type_to_extension", "contents": "image_type_to_extension(${1:imagetype})" }, + { "trigger": "image_type_to_mime_type", "contents": "image_type_to_mime_type(${1:imagetype})" }, + { "trigger": "imagealphablending", "contents": "imagealphablending(${1:image}, ${2:blendmode})" }, + { "trigger": "imageantialias", "contents": "imageantialias(${1:image}, ${2:enabled})" }, + { "trigger": "imagearc", "contents": "imagearc(${1:image}, ${2:cx}, ${3:cy}, ${4:width}, ${5:height}, ${6:start}, ${7:end}, ${8:color})" }, + { "trigger": "imagechar", "contents": "imagechar(${1:image}, ${2:font}, ${3:x}, ${4:y}, ${5:c}, ${6:color})" }, + { "trigger": "imagecharup", "contents": "imagecharup(${1:image}, ${2:font}, ${3:x}, ${4:y}, ${5:c}, ${6:color})" }, + { "trigger": "imagecolorallocate", "contents": "imagecolorallocate(${1:image}, ${2:red}, ${3:green}, ${4:blue})" }, + { "trigger": "imagecolorallocatealpha", "contents": "imagecolorallocatealpha(${1:image}, ${2:red}, ${3:green}, ${4:blue}, ${5:alpha})" }, + { "trigger": "imagecolorat", "contents": "imagecolorat(${1:image}, ${2:x}, ${3:y})" }, + { "trigger": "imagecolorclosest", "contents": "imagecolorclosest(${1:image}, ${2:red}, ${3:green}, ${4:blue})" }, + { "trigger": "imagecolorclosestalpha", "contents": "imagecolorclosestalpha(${1:image}, ${2:red}, ${3:green}, ${4:blue}, ${5:alpha})" }, + { "trigger": "imagecolorclosesthwb", "contents": "imagecolorclosesthwb(${1:image}, ${2:red}, ${3:green}, ${4:blue})" }, + { "trigger": "imagecolordeallocate", "contents": "imagecolordeallocate(${1:image}, ${2:color})" }, + { "trigger": "imagecolorexact", "contents": "imagecolorexact(${1:image}, ${2:red}, ${3:green}, ${4:blue})" }, + { "trigger": "imagecolorexactalpha", "contents": "imagecolorexactalpha(${1:image}, ${2:red}, ${3:green}, ${4:blue}, ${5:alpha})" }, + { "trigger": "imagecolormatch", "contents": "imagecolormatch(${1:image1}, ${2:image2})" }, + { "trigger": "imagecolorresolve", "contents": "imagecolorresolve(${1:image}, ${2:red}, ${3:green}, ${4:blue})" }, + { "trigger": "imagecolorresolvealpha", "contents": "imagecolorresolvealpha(${1:image}, ${2:red}, ${3:green}, ${4:blue}, ${5:alpha})" }, + { "trigger": "imagecolorset", "contents": "imagecolorset(${1:image}, ${2:index}, ${3:red}, ${4:green}, ${5:blue})" }, + { "trigger": "imagecolorsforindex", "contents": "imagecolorsforindex(${1:image}, ${2:index})" }, + { "trigger": "imagecolorstotal", "contents": "imagecolorstotal(${1:image})" }, + { "trigger": "imagecolortransparent", "contents": "imagecolortransparent(${1:image})" }, + { "trigger": "imageconvolution", "contents": "imageconvolution(${1:image}, ${2:matrix}, ${3:div}, ${4:offset})" }, + { "trigger": "imagecopy", "contents": "imagecopy(${1:dst_im}, ${2:src_im}, ${3:dst_x}, ${4:dst_y}, ${5:src_x}, ${6:src_y}, ${7:src_w}, ${8:src_h})" }, + { "trigger": "imagecopymerge", "contents": "imagecopymerge(${1:dst_im}, ${2:src_im}, ${3:dst_x}, ${4:dst_y}, ${5:src_x}, ${6:src_y}, ${7:src_w}, ${8:src_h}, ${9:pct})" }, + { "trigger": "imagecopymergegray", "contents": "imagecopymergegray(${1:dst_im}, ${2:src_im}, ${3:dst_x}, ${4:dst_y}, ${5:src_x}, ${6:src_y}, ${7:src_w}, ${8:src_h}, ${9:pct})" }, + { "trigger": "imagecopyresampled", "contents": "imagecopyresampled(${1:dst_image}, ${2:src_image}, ${3:dst_x}, ${4:dst_y}, ${5:src_x}, ${6:src_y}, ${7:dst_w}, ${8:dst_h}, ${9:src_w}, ${10:src_h})" }, + { "trigger": "imagecopyresized", "contents": "imagecopyresized(${1:dst_image}, ${2:src_image}, ${3:dst_x}, ${4:dst_y}, ${5:src_x}, ${6:src_y}, ${7:dst_w}, ${8:dst_h}, ${9:src_w}, ${10:src_h})" }, + { "trigger": "imagecreate", "contents": "imagecreate(${1:width}, ${2:height})" }, + { "trigger": "imagecreatefromgd", "contents": "imagecreatefromgd(${1:filename})" }, + { "trigger": "imagecreatefromgd2", "contents": "imagecreatefromgd2(${1:filename})" }, + { "trigger": "imagecreatefromgd2part", "contents": "imagecreatefromgd2part(${1:filename}, ${2:srcX}, ${3:srcY}, ${4:width}, ${5:height})" }, + { "trigger": "imagecreatefromgif", "contents": "imagecreatefromgif(${1:filename})" }, + { "trigger": "imagecreatefromjpeg", "contents": "imagecreatefromjpeg(${1:filename})" }, + { "trigger": "imagecreatefrompng", "contents": "imagecreatefrompng(${1:filename})" }, + { "trigger": "imagecreatefromstring", "contents": "imagecreatefromstring(${1:data})" }, + { "trigger": "imagecreatefromwbmp", "contents": "imagecreatefromwbmp(${1:filename})" }, + { "trigger": "imagecreatefromxbm", "contents": "imagecreatefromxbm(${1:filename})" }, + { "trigger": "imagecreatefromxpm", "contents": "imagecreatefromxpm(${1:filename})" }, + { "trigger": "imagecreatetruecolor", "contents": "imagecreatetruecolor(${1:width}, ${2:height})" }, + { "trigger": "imagedashedline", "contents": "imagedashedline(${1:image}, ${2:x1}, ${3:y1}, ${4:x2}, ${5:y2}, ${6:color})" }, + { "trigger": "imagedestroy", "contents": "imagedestroy(${1:image})" }, + { "trigger": "imageellipse", "contents": "imageellipse(${1:image}, ${2:cx}, ${3:cy}, ${4:width}, ${5:height}, ${6:color})" }, + { "trigger": "imagefill", "contents": "imagefill(${1:image}, ${2:x}, ${3:y}, ${4:color})" }, + { "trigger": "imagefilledarc", "contents": "imagefilledarc(${1:image}, ${2:cx}, ${3:cy}, ${4:width}, ${5:height}, ${6:start}, ${7:end}, ${8:color}, ${9:style})" }, + { "trigger": "imagefilledellipse", "contents": "imagefilledellipse(${1:image}, ${2:cx}, ${3:cy}, ${4:width}, ${5:height}, ${6:color})" }, + { "trigger": "imagefilledpolygon", "contents": "imagefilledpolygon(${1:image}, ${2:points}, ${3:num_points}, ${4:color})" }, + { "trigger": "imagefilledrectangle", "contents": "imagefilledrectangle(${1:image}, ${2:x1}, ${3:y1}, ${4:x2}, ${5:y2}, ${6:color})" }, + { "trigger": "imagefilltoborder", "contents": "imagefilltoborder(${1:image}, ${2:x}, ${3:y}, ${4:border}, ${5:color})" }, + { "trigger": "imagefilter", "contents": "imagefilter(${1:image}, ${2:filtertype})" }, + { "trigger": "imagefontheight", "contents": "imagefontheight(${1:font})" }, + { "trigger": "imagefontwidth", "contents": "imagefontwidth(${1:font})" }, + { "trigger": "imageftbbox", "contents": "imageftbbox(${1:size}, ${2:angle}, ${3:fontfile}, ${4:text})" }, + { "trigger": "imagefttext", "contents": "imagefttext(${1:image}, ${2:size}, ${3:angle}, ${4:x}, ${5:y}, ${6:color}, ${7:fontfile}, ${8:text})" }, + { "trigger": "imagegammacorrect", "contents": "imagegammacorrect(${1:image}, ${2:inputgamma}, ${3:outputgamma})" }, + { "trigger": "imagegd", "contents": "imagegd(${1:image})" }, + { "trigger": "imagegd2", "contents": "imagegd2(${1:image})" }, + { "trigger": "imagegif", "contents": "imagegif(${1:image})" }, + { "trigger": "imagegrabscreen", "contents": "imagegrabscreen(${1:oid})" }, + { "trigger": "imagegrabwindow", "contents": "imagegrabwindow(${1:window_handle})" }, + { "trigger": "imageinterlace", "contents": "imageinterlace(${1:image})" }, + { "trigger": "imageistruecolor", "contents": "imageistruecolor(${1:image})" }, + { "trigger": "imagejpeg", "contents": "imagejpeg(${1:image})" }, + { "trigger": "imagelayereffect", "contents": "imagelayereffect(${1:image}, ${2:effect})" }, + { "trigger": "imageline", "contents": "imageline(${1:image}, ${2:x1}, ${3:y1}, ${4:x2}, ${5:y2}, ${6:color})" }, + { "trigger": "imageloadfont", "contents": "imageloadfont(${1:file})" }, + { "trigger": "imagepalettecopy", "contents": "imagepalettecopy(${1:destination}, ${2:source})" }, + { "trigger": "imagepng", "contents": "imagepng(${1:image})" }, + { "trigger": "imagepolygon", "contents": "imagepolygon(${1:image}, ${2:points}, ${3:num_points}, ${4:color})" }, + { "trigger": "imagepsbbox", "contents": "imagepsbbox(${1:text}, ${2:font}, ${3:size})" }, + { "trigger": "imagepsencodefont", "contents": "imagepsencodefont(${1:font_index}, ${2:encodingfile})" }, + { "trigger": "imagepsextendfont", "contents": "imagepsextendfont(${1:font_index}, ${2:extend})" }, + { "trigger": "imagepsfreefont", "contents": "imagepsfreefont(${1:font_index})" }, + { "trigger": "imagepsloadfont", "contents": "imagepsloadfont(${1:filename})" }, + { "trigger": "imagepsslantfont", "contents": "imagepsslantfont(${1:font_index}, ${2:slant})" }, + { "trigger": "imagepstext", "contents": "imagepstext(${1:image}, ${2:text}, ${3:font_index}, ${4:size}, ${5:foreground}, ${6:background}, ${7:x}, ${8:y})" }, + { "trigger": "imagerectangle", "contents": "imagerectangle(${1:image}, ${2:x1}, ${3:y1}, ${4:x2}, ${5:y2}, ${6:color})" }, + { "trigger": "imagerotate", "contents": "imagerotate(${1:image}, ${2:angle}, ${3:bgd_color})" }, + { "trigger": "imagesavealpha", "contents": "imagesavealpha(${1:image}, ${2:saveflag})" }, + { "trigger": "imagesetbrush", "contents": "imagesetbrush(${1:image}, ${2:brush})" }, + { "trigger": "imagesetpixel", "contents": "imagesetpixel(${1:image}, ${2:x}, ${3:y}, ${4:color})" }, + { "trigger": "imagesetstyle", "contents": "imagesetstyle(${1:image}, ${2:style})" }, + { "trigger": "imagesetthickness", "contents": "imagesetthickness(${1:image}, ${2:thickness})" }, + { "trigger": "imagesettile", "contents": "imagesettile(${1:image}, ${2:tile})" }, + { "trigger": "imagestring", "contents": "imagestring(${1:image}, ${2:font}, ${3:x}, ${4:y}, ${5:string}, ${6:color})" }, + { "trigger": "imagestringup", "contents": "imagestringup(${1:image}, ${2:font}, ${3:x}, ${4:y}, ${5:string}, ${6:color})" }, + { "trigger": "imagesx", "contents": "imagesx(${1:image})" }, + { "trigger": "imagesy", "contents": "imagesy(${1:image})" }, + { "trigger": "imagetruecolortopalette", "contents": "imagetruecolortopalette(${1:image}, ${2:dither}, ${3:ncolors})" }, + { "trigger": "imagettfbbox", "contents": "imagettfbbox(${1:size}, ${2:angle}, ${3:fontfile}, ${4:text})" }, + { "trigger": "imagettftext", "contents": "imagettftext(${1:image}, ${2:size}, ${3:angle}, ${4:x}, ${5:y}, ${6:color}, ${7:fontfile}, ${8:text})" }, + { "trigger": "imagetypes", "contents": "imagetypes(${1:oid})" }, + { "trigger": "imagewbmp", "contents": "imagewbmp(${1:image})" }, + { "trigger": "imagexbm", "contents": "imagexbm(${1:image}, ${2:filename})" }, + { "trigger": "imap_8bit", "contents": "imap_8bit(${1:string})" }, + { "trigger": "imap_alerts", "contents": "imap_alerts(${1:oid})" }, + { "trigger": "imap_append", "contents": "imap_append(${1:imap_stream}, ${2:mailbox}, ${3:message})" }, + { "trigger": "imap_base64", "contents": "imap_base64(${1:text})" }, + { "trigger": "imap_binary", "contents": "imap_binary(${1:string})" }, + { "trigger": "imap_body", "contents": "imap_body(${1:imap_stream}, ${2:msg_number})" }, + { "trigger": "imap_bodystruct", "contents": "imap_bodystruct(${1:imap_stream}, ${2:msg_number}, ${3:section})" }, + { "trigger": "imap_check", "contents": "imap_check(${1:imap_stream})" }, + { "trigger": "imap_clearflag_full", "contents": "imap_clearflag_full(${1:imap_stream}, ${2:sequence}, ${3:flag})" }, + { "trigger": "imap_close", "contents": "imap_close(${1:imap_stream})" }, + { "trigger": "imap_createmailbox", "contents": "imap_createmailbox(${1:imap_stream}, ${2:mailbox})" }, + { "trigger": "imap_delete", "contents": "imap_delete(${1:imap_stream}, ${2:msg_number})" }, + { "trigger": "imap_deletemailbox", "contents": "imap_deletemailbox(${1:imap_stream}, ${2:mailbox})" }, + { "trigger": "imap_errors", "contents": "imap_errors(${1:oid})" }, + { "trigger": "imap_expunge", "contents": "imap_expunge(${1:imap_stream})" }, + { "trigger": "imap_fetch_overview", "contents": "imap_fetch_overview(${1:imap_stream}, ${2:sequence})" }, + { "trigger": "imap_fetchbody", "contents": "imap_fetchbody(${1:imap_stream}, ${2:msg_number}, ${3:section})" }, + { "trigger": "imap_fetchheader", "contents": "imap_fetchheader(${1:imap_stream}, ${2:msg_number})" }, + { "trigger": "imap_fetchstructure", "contents": "imap_fetchstructure(${1:imap_stream}, ${2:msg_number})" }, + { "trigger": "imap_gc", "contents": "imap_gc(${1:imap_stream}, ${2:caches})" }, + { "trigger": "imap_get_quota", "contents": "imap_get_quota(${1:imap_stream}, ${2:quota_root})" }, + { "trigger": "imap_get_quotaroot", "contents": "imap_get_quotaroot(${1:imap_stream}, ${2:quota_root})" }, + { "trigger": "imap_getacl", "contents": "imap_getacl(${1:imap_stream}, ${2:mailbox})" }, + { "trigger": "imap_getmailboxes", "contents": "imap_getmailboxes(${1:imap_stream}, ${2:ref}, ${3:pattern})" }, + { "trigger": "imap_getsubscribed", "contents": "imap_getsubscribed(${1:imap_stream}, ${2:ref}, ${3:pattern})" }, + { "trigger": "imap_header", "contents": "imap_header()" }, + { "trigger": "imap_headerinfo", "contents": "imap_headerinfo(${1:imap_stream}, ${2:msg_number})" }, + { "trigger": "imap_headers", "contents": "imap_headers(${1:imap_stream})" }, + { "trigger": "imap_last_error", "contents": "imap_last_error(${1:oid})" }, + { "trigger": "imap_list", "contents": "imap_list(${1:imap_stream}, ${2:ref}, ${3:pattern})" }, + { "trigger": "imap_listmailbox", "contents": "imap_listmailbox()" }, + { "trigger": "imap_listscan", "contents": "imap_listscan(${1:imap_stream}, ${2:ref}, ${3:pattern}, ${4:content})" }, + { "trigger": "imap_listsubscribed", "contents": "imap_listsubscribed()" }, + { "trigger": "imap_lsub", "contents": "imap_lsub(${1:imap_stream}, ${2:ref}, ${3:pattern})" }, + { "trigger": "imap_mail", "contents": "imap_mail(${1:to}, ${2:subject}, ${3:message})" }, + { "trigger": "imap_mail_compose", "contents": "imap_mail_compose(${1:envelope}, ${2:body})" }, + { "trigger": "imap_mail_copy", "contents": "imap_mail_copy(${1:imap_stream}, ${2:msglist}, ${3:mailbox})" }, + { "trigger": "imap_mail_move", "contents": "imap_mail_move(${1:imap_stream}, ${2:msglist}, ${3:mailbox})" }, + { "trigger": "imap_mailboxmsginfo", "contents": "imap_mailboxmsginfo(${1:imap_stream})" }, + { "trigger": "imap_mime_header_decode", "contents": "imap_mime_header_decode(${1:text})" }, + { "trigger": "imap_msgno", "contents": "imap_msgno(${1:imap_stream}, ${2:uid})" }, + { "trigger": "imap_num_msg", "contents": "imap_num_msg(${1:imap_stream})" }, + { "trigger": "imap_num_recent", "contents": "imap_num_recent(${1:imap_stream})" }, + { "trigger": "imap_open", "contents": "imap_open(${1:mailbox}, ${2:username}, ${3:password})" }, + { "trigger": "imap_ping", "contents": "imap_ping(${1:imap_stream})" }, + { "trigger": "imap_qprint", "contents": "imap_qprint(${1:string})" }, + { "trigger": "imap_renamemailbox", "contents": "imap_renamemailbox(${1:imap_stream}, ${2:old_mbox}, ${3:new_mbox})" }, + { "trigger": "imap_reopen", "contents": "imap_reopen(${1:imap_stream}, ${2:mailbox})" }, + { "trigger": "imap_rfc822_parse_adrlist", "contents": "imap_rfc822_parse_adrlist(${1:address}, ${2:default_host})" }, + { "trigger": "imap_rfc822_parse_headers", "contents": "imap_rfc822_parse_headers(${1:headers})" }, + { "trigger": "imap_rfc822_write_address", "contents": "imap_rfc822_write_address(${1:mailbox}, ${2:host}, ${3:personal})" }, + { "trigger": "imap_savebody", "contents": "imap_savebody(${1:imap_stream}, ${2:file}, ${3:msg_number})" }, + { "trigger": "imap_scanmailbox", "contents": "imap_scanmailbox()" }, + { "trigger": "imap_search", "contents": "imap_search(${1:imap_stream}, ${2:criteria})" }, + { "trigger": "imap_set_quota", "contents": "imap_set_quota(${1:imap_stream}, ${2:quota_root}, ${3:quota_limit})" }, + { "trigger": "imap_setacl", "contents": "imap_setacl(${1:imap_stream}, ${2:mailbox}, ${3:id}, ${4:rights})" }, + { "trigger": "imap_setflag_full", "contents": "imap_setflag_full(${1:imap_stream}, ${2:sequence}, ${3:flag})" }, + { "trigger": "imap_sort", "contents": "imap_sort(${1:imap_stream}, ${2:criteria}, ${3:reverse})" }, + { "trigger": "imap_status", "contents": "imap_status(${1:imap_stream}, ${2:mailbox}, ${3:options})" }, + { "trigger": "imap_subscribe", "contents": "imap_subscribe(${1:imap_stream}, ${2:mailbox})" }, + { "trigger": "imap_thread", "contents": "imap_thread(${1:imap_stream})" }, + { "trigger": "imap_timeout", "contents": "imap_timeout(${1:timeout_type})" }, + { "trigger": "imap_uid", "contents": "imap_uid(${1:imap_stream}, ${2:msg_number})" }, + { "trigger": "imap_undelete", "contents": "imap_undelete(${1:imap_stream}, ${2:msg_number})" }, + { "trigger": "imap_unsubscribe", "contents": "imap_unsubscribe(${1:imap_stream}, ${2:mailbox})" }, + { "trigger": "imap_utf7_decode", "contents": "imap_utf7_decode(${1:text})" }, + { "trigger": "imap_utf7_encode", "contents": "imap_utf7_encode(${1:data})" }, + { "trigger": "imap_utf8", "contents": "imap_utf8(${1:mime_encoded_text})" }, + { "trigger": "implode", "contents": "implode(${1:glue}, ${2:pieces})" }, + { "trigger": "import_request_variables", "contents": "import_request_variables(${1:types})" }, + { "trigger": "in_array", "contents": "in_array(${1:needle}, ${2:haystack})" }, + { "trigger": "", "contents": "()" }, + { "trigger": "", "contents": "()" }, + { "trigger": "inclued_get_data", "contents": "inclued_get_data(${1:oid})" }, + { "trigger": "inet_ntop", "contents": "inet_ntop(${1:in_addr})" }, + { "trigger": "inet_pton", "contents": "inet_pton(${1:address})" }, + { "trigger": "ingres_autocommit", "contents": "ingres_autocommit(${1:link})" }, + { "trigger": "ingres_autocommit_state", "contents": "ingres_autocommit_state(${1:link})" }, + { "trigger": "ingres_charset", "contents": "ingres_charset(${1:link})" }, + { "trigger": "ingres_close", "contents": "ingres_close(${1:link})" }, + { "trigger": "ingres_commit", "contents": "ingres_commit(${1:link})" }, + { "trigger": "ingres_connect", "contents": "ingres_connect()" }, + { "trigger": "ingres_cursor", "contents": "ingres_cursor(${1:result})" }, + { "trigger": "ingres_errno", "contents": "ingres_errno()" }, + { "trigger": "ingres_error", "contents": "ingres_error()" }, + { "trigger": "ingres_errsqlstate", "contents": "ingres_errsqlstate()" }, + { "trigger": "ingres_escape_string", "contents": "ingres_escape_string(${1:link}, ${2:source_string})" }, + { "trigger": "ingres_execute", "contents": "ingres_execute(${1:result})" }, + { "trigger": "ingres_fetch_array", "contents": "ingres_fetch_array(${1:result})" }, + { "trigger": "ingres_fetch_assoc", "contents": "ingres_fetch_assoc(${1:result})" }, + { "trigger": "ingres_fetch_object", "contents": "ingres_fetch_object(${1:result})" }, + { "trigger": "ingres_fetch_proc_return", "contents": "ingres_fetch_proc_return(${1:result})" }, + { "trigger": "ingres_fetch_row", "contents": "ingres_fetch_row(${1:result})" }, + { "trigger": "ingres_field_length", "contents": "ingres_field_length(${1:result}, ${2:index})" }, + { "trigger": "ingres_field_name", "contents": "ingres_field_name(${1:result}, ${2:index})" }, + { "trigger": "ingres_field_nullable", "contents": "ingres_field_nullable(${1:result}, ${2:index})" }, + { "trigger": "ingres_field_precision", "contents": "ingres_field_precision(${1:result}, ${2:index})" }, + { "trigger": "ingres_field_scale", "contents": "ingres_field_scale(${1:result}, ${2:index})" }, + { "trigger": "ingres_field_type", "contents": "ingres_field_type(${1:result}, ${2:index})" }, + { "trigger": "ingres_free_result", "contents": "ingres_free_result(${1:result})" }, + { "trigger": "ingres_next_error", "contents": "ingres_next_error()" }, + { "trigger": "ingres_num_fields", "contents": "ingres_num_fields(${1:result})" }, + { "trigger": "ingres_num_rows", "contents": "ingres_num_rows(${1:result})" }, + { "trigger": "ingres_pconnect", "contents": "ingres_pconnect()" }, + { "trigger": "ingres_prepare", "contents": "ingres_prepare(${1:link}, ${2:query})" }, + { "trigger": "ingres_query", "contents": "ingres_query(${1:link}, ${2:query})" }, + { "trigger": "ingres_result_seek", "contents": "ingres_result_seek(${1:result}, ${2:position})" }, + { "trigger": "ingres_rollback", "contents": "ingres_rollback(${1:link})" }, + { "trigger": "ingres_set_environment", "contents": "ingres_set_environment(${1:link}, ${2:options})" }, + { "trigger": "ingres_unbuffered_query", "contents": "ingres_unbuffered_query(${1:link}, ${2:query})" }, + { "trigger": "ini_alter", "contents": "ini_alter()" }, + { "trigger": "ini_get", "contents": "ini_get(${1:varname})" }, + { "trigger": "ini_get_all", "contents": "ini_get_all()" }, + { "trigger": "ini_restore", "contents": "ini_restore(${1:varname})" }, + { "trigger": "ini_set", "contents": "ini_set(${1:varname}, ${2:newvalue})" }, + { "trigger": "inotify_add_watch", "contents": "inotify_add_watch(${1:inotify_instance}, ${2:pathname}, ${3:mask})" }, + { "trigger": "inotify_init", "contents": "inotify_init(${1:oid})" }, + { "trigger": "inotify_queue_len", "contents": "inotify_queue_len(${1:inotify_instance})" }, + { "trigger": "inotify_read", "contents": "inotify_read(${1:inotify_instance})" }, + { "trigger": "inotify_rm_watch", "contents": "inotify_rm_watch(${1:inotify_instance}, ${2:watch_descriptor})" }, + { "trigger": "interface_exists", "contents": "interface_exists(${1:interface_name})" }, + { "trigger": "intl_error_name", "contents": "intl_error_name(${1:error_code})" }, + { "trigger": "intl_get_error_code", "contents": "intl_get_error_code(${1:oid})" }, + { "trigger": "intl_get_error_message", "contents": "intl_get_error_message(${1:oid})" }, + { "trigger": "intl_is_failure", "contents": "intl_is_failure(${1:error_code})" }, + { "trigger": "intval", "contents": "intval(${1:var})" }, + { "trigger": "ip2long", "contents": "ip2long(${1:ip_address})" }, + { "trigger": "iptcembed", "contents": "iptcembed(${1:iptcdata}, ${2:jpeg_file_name})" }, + { "trigger": "iptcparse", "contents": "iptcparse(${1:iptcblock})" }, + { "trigger": "is_a", "contents": "is_a(${1:object}, ${2:class_name})" }, + { "trigger": "is_array", "contents": "is_array(${1:var})" }, + { "trigger": "is_bool", "contents": "is_bool(${1:var})" }, + { "trigger": "is_callable", "contents": "is_callable(${1:name})" }, + { "trigger": "is_dir", "contents": "is_dir(${1:filename})" }, + { "trigger": "is_double", "contents": "is_double()" }, + { "trigger": "is_executable", "contents": "is_executable(${1:filename})" }, + { "trigger": "is_file", "contents": "is_file(${1:filename})" }, + { "trigger": "is_finite", "contents": "is_finite(${1:val})" }, + { "trigger": "is_float", "contents": "is_float(${1:var})" }, + { "trigger": "is_infinite", "contents": "is_infinite(${1:val})" }, + { "trigger": "is_int", "contents": "is_int(${1:var})" }, + { "trigger": "is_integer", "contents": "is_integer()" }, + { "trigger": "is_link", "contents": "is_link(${1:filename})" }, + { "trigger": "is_long", "contents": "is_long()" }, + { "trigger": "is_nan", "contents": "is_nan(${1:val})" }, + { "trigger": "is_null", "contents": "is_null(${1:var})" }, + { "trigger": "is_numeric", "contents": "is_numeric(${1:var})" }, + { "trigger": "is_object", "contents": "is_object(${1:var})" }, + { "trigger": "is_readable", "contents": "is_readable(${1:filename})" }, + { "trigger": "is_real", "contents": "is_real()" }, + { "trigger": "is_resource", "contents": "is_resource(${1:var})" }, + { "trigger": "is_scalar", "contents": "is_scalar(${1:var})" }, + { "trigger": "is_soap_fault", "contents": "is_soap_fault(${1:object})" }, + { "trigger": "is_string", "contents": "is_string(${1:var})" }, + { "trigger": "is_subclass_of", "contents": "is_subclass_of(${1:object}, ${2:class_name})" }, + { "trigger": "is_uploaded_file", "contents": "is_uploaded_file(${1:filename})" }, + { "trigger": "is_writable", "contents": "is_writable(${1:filename})" }, + { "trigger": "is_writeable", "contents": "is_writeable()" }, + { "trigger": "isset", "contents": "isset(${1:var})" }, + { "trigger": "iterator_apply", "contents": "iterator_apply(${1:iterator}, ${2:function})" }, + { "trigger": "iterator_count", "contents": "iterator_count(${1:iterator})" }, + { "trigger": "iterator_to_array", "contents": "iterator_to_array(${1:iterator})" }, + { "trigger": "java_last_exception_clear", "contents": "java_last_exception_clear(${1:oid})" }, + { "trigger": "java_last_exception_get", "contents": "java_last_exception_get(${1:oid})" }, + { "trigger": "JDDayOfWeek", "contents": "JDDayOfWeek(${1:julianday})" }, + { "trigger": "JDMonthName", "contents": "JDMonthName(${1:julianday}, ${2:mode})" }, + { "trigger": "JDToFrench", "contents": "JDToFrench(${1:juliandaycount})" }, + { "trigger": "JDToGregorian", "contents": "JDToGregorian(${1:julianday})" }, + { "trigger": "jdtojewish", "contents": "jdtojewish(${1:juliandaycount})" }, + { "trigger": "JDToJulian", "contents": "JDToJulian(${1:julianday})" }, + { "trigger": "jdtounix", "contents": "jdtounix(${1:jday})" }, + { "trigger": "JewishToJD", "contents": "JewishToJD(${1:month}, ${2:day}, ${3:year})" }, + { "trigger": "join", "contents": "join()" }, + { "trigger": "jpeg2wbmp", "contents": "jpeg2wbmp(${1:jpegname}, ${2:wbmpname}, ${3:dest_height}, ${4:dest_width}, ${5:threshold})" }, + { "trigger": "json_decode", "contents": "json_decode(${1:json})" }, + { "trigger": "json_encode", "contents": "json_encode(${1:value})" }, + { "trigger": "json_last_error", "contents": "json_last_error(${1:oid})" }, + { "trigger": "judy_type", "contents": "judy_type(${1:array})" }, + { "trigger": "judy_version", "contents": "judy_version(${1:oid})" }, + { "trigger": "JulianToJD", "contents": "JulianToJD(${1:month}, ${2:day}, ${3:year})" }, + { "trigger": "kadm5_chpass_principal", "contents": "kadm5_chpass_principal(${1:handle}, ${2:principal}, ${3:password})" }, + { "trigger": "kadm5_create_principal", "contents": "kadm5_create_principal(${1:handle}, ${2:principal})" }, + { "trigger": "kadm5_delete_principal", "contents": "kadm5_delete_principal(${1:handle}, ${2:principal})" }, + { "trigger": "kadm5_destroy", "contents": "kadm5_destroy(${1:handle})" }, + { "trigger": "kadm5_flush", "contents": "kadm5_flush(${1:handle})" }, + { "trigger": "kadm5_get_policies", "contents": "kadm5_get_policies(${1:handle})" }, + { "trigger": "kadm5_get_principal", "contents": "kadm5_get_principal(${1:handle}, ${2:principal})" }, + { "trigger": "kadm5_get_principals", "contents": "kadm5_get_principals(${1:handle})" }, + { "trigger": "kadm5_init_with_password", "contents": "kadm5_init_with_password(${1:admin_server}, ${2:realm}, ${3:principal}, ${4:password})" }, + { "trigger": "kadm5_modify_principal", "contents": "kadm5_modify_principal(${1:handle}, ${2:principal}, ${3:options})" }, + { "trigger": "key", "contents": "key(${1:array})" }, + { "trigger": "krsort", "contents": "krsort(${1:array})" }, + { "trigger": "ksort", "contents": "ksort(${1:array})" }, + { "trigger": "lcfirst", "contents": "lcfirst(${1:str})" }, + { "trigger": "lcg_value", "contents": "lcg_value(${1:oid})" }, + { "trigger": "lchgrp", "contents": "lchgrp(${1:filename}, ${2:group})" }, + { "trigger": "lchown", "contents": "lchown(${1:filename}, ${2:user})" }, + { "trigger": "ldap_8859_to_t61", "contents": "ldap_8859_to_t61(${1:value})" }, + { "trigger": "ldap_add", "contents": "ldap_add(${1:link_identifier}, ${2:dn}, ${3:entry})" }, + { "trigger": "ldap_bind", "contents": "ldap_bind(${1:link_identifier})" }, + { "trigger": "ldap_close", "contents": "ldap_close()" }, + { "trigger": "ldap_compare", "contents": "ldap_compare(${1:link_identifier}, ${2:dn}, ${3:attribute}, ${4:value})" }, + { "trigger": "ldap_connect", "contents": "ldap_connect()" }, + { "trigger": "ldap_count_entries", "contents": "ldap_count_entries(${1:link_identifier}, ${2:result_identifier})" }, + { "trigger": "ldap_delete", "contents": "ldap_delete(${1:link_identifier}, ${2:dn})" }, + { "trigger": "ldap_dn2ufn", "contents": "ldap_dn2ufn(${1:dn})" }, + { "trigger": "ldap_err2str", "contents": "ldap_err2str(${1:errno})" }, + { "trigger": "ldap_errno", "contents": "ldap_errno(${1:link_identifier})" }, + { "trigger": "ldap_error", "contents": "ldap_error(${1:link_identifier})" }, + { "trigger": "ldap_explode_dn", "contents": "ldap_explode_dn(${1:dn}, ${2:with_attrib})" }, + { "trigger": "ldap_first_attribute", "contents": "ldap_first_attribute(${1:link_identifier}, ${2:result_entry_identifier})" }, + { "trigger": "ldap_first_entry", "contents": "ldap_first_entry(${1:link_identifier}, ${2:result_identifier})" }, + { "trigger": "ldap_first_reference", "contents": "ldap_first_reference(${1:link}, ${2:result})" }, + { "trigger": "ldap_free_result", "contents": "ldap_free_result(${1:result_identifier})" }, + { "trigger": "ldap_get_attributes", "contents": "ldap_get_attributes(${1:link_identifier}, ${2:result_entry_identifier})" }, + { "trigger": "ldap_get_dn", "contents": "ldap_get_dn(${1:link_identifier}, ${2:result_entry_identifier})" }, + { "trigger": "ldap_get_entries", "contents": "ldap_get_entries(${1:link_identifier}, ${2:result_identifier})" }, + { "trigger": "ldap_get_option", "contents": "ldap_get_option(${1:link_identifier}, ${2:option}, ${3:retval})" }, + { "trigger": "ldap_get_values", "contents": "ldap_get_values(${1:link_identifier}, ${2:result_entry_identifier}, ${3:attribute})" }, + { "trigger": "ldap_get_values_len", "contents": "ldap_get_values_len(${1:link_identifier}, ${2:result_entry_identifier}, ${3:attribute})" }, + { "trigger": "ldap_list", "contents": "ldap_list(${1:link_identifier}, ${2:base_dn}, ${3:filter})" }, + { "trigger": "ldap_mod_add", "contents": "ldap_mod_add(${1:link_identifier}, ${2:dn}, ${3:entry})" }, + { "trigger": "ldap_mod_del", "contents": "ldap_mod_del(${1:link_identifier}, ${2:dn}, ${3:entry})" }, + { "trigger": "ldap_mod_replace", "contents": "ldap_mod_replace(${1:link_identifier}, ${2:dn}, ${3:entry})" }, + { "trigger": "ldap_modify", "contents": "ldap_modify(${1:link_identifier}, ${2:dn}, ${3:entry})" }, + { "trigger": "ldap_next_attribute", "contents": "ldap_next_attribute(${1:link_identifier}, ${2:result_entry_identifier})" }, + { "trigger": "ldap_next_entry", "contents": "ldap_next_entry(${1:link_identifier}, ${2:result_entry_identifier})" }, + { "trigger": "ldap_next_reference", "contents": "ldap_next_reference(${1:link}, ${2:entry})" }, + { "trigger": "ldap_parse_reference", "contents": "ldap_parse_reference(${1:link}, ${2:entry}, ${3:referrals})" }, + { "trigger": "ldap_parse_result", "contents": "ldap_parse_result(${1:link}, ${2:result}, ${3:errcode})" }, + { "trigger": "ldap_read", "contents": "ldap_read(${1:link_identifier}, ${2:base_dn}, ${3:filter})" }, + { "trigger": "ldap_rename", "contents": "ldap_rename(${1:link_identifier}, ${2:dn}, ${3:newrdn}, ${4:newparent}, ${5:deleteoldrdn})" }, + { "trigger": "ldap_sasl_bind", "contents": "ldap_sasl_bind(${1:link})" }, + { "trigger": "ldap_search", "contents": "ldap_search(${1:link_identifier}, ${2:base_dn}, ${3:filter})" }, + { "trigger": "ldap_set_option", "contents": "ldap_set_option(${1:link_identifier}, ${2:option}, ${3:newval})" }, + { "trigger": "ldap_set_rebind_proc", "contents": "ldap_set_rebind_proc(${1:link}, ${2:callback})" }, + { "trigger": "ldap_sort", "contents": "ldap_sort(${1:link}, ${2:result}, ${3:sortfilter})" }, + { "trigger": "ldap_start_tls", "contents": "ldap_start_tls(${1:link})" }, + { "trigger": "ldap_t61_to_8859", "contents": "ldap_t61_to_8859(${1:value})" }, + { "trigger": "ldap_unbind", "contents": "ldap_unbind(${1:link_identifier})" }, + { "trigger": "levenshtein", "contents": "levenshtein(${1:str1}, ${2:str2})" }, + { "trigger": "libxml_clear_errors", "contents": "libxml_clear_errors(${1:oid})" }, + { "trigger": "libxml_disable_entity_loader", "contents": "libxml_disable_entity_loader()" }, + { "trigger": "libxml_get_errors", "contents": "libxml_get_errors(${1:oid})" }, + { "trigger": "libxml_get_last_error", "contents": "libxml_get_last_error(${1:oid})" }, + { "trigger": "libxml_set_streams_context", "contents": "libxml_set_streams_context(${1:streams_context})" }, + { "trigger": "libxml_use_internal_errors", "contents": "libxml_use_internal_errors()" }, + { "trigger": "link", "contents": "link(${1:target}, ${2:link})" }, + { "trigger": "linkinfo", "contents": "linkinfo(${1:path})" }, + { "trigger": "list", "contents": "list(${1:varname})" }, + { "trigger": "localeconv", "contents": "localeconv(${1:oid})" }, + { "trigger": "localtime", "contents": "localtime()" }, + { "trigger": "log", "contents": "log(${1:arg})" }, + { "trigger": "log10", "contents": "log10(${1:arg})" }, + { "trigger": "log1p", "contents": "log1p(${1:number})" }, + { "trigger": "long2ip", "contents": "long2ip(${1:proper_address})" }, + { "trigger": "lstat", "contents": "lstat(${1:filename})" }, + { "trigger": "ltrim", "contents": "ltrim(${1:str})" }, + { "trigger": "lzf_compress", "contents": "lzf_compress(${1:data})" }, + { "trigger": "lzf_decompress", "contents": "lzf_decompress(${1:data})" }, + { "trigger": "lzf_optimized_for", "contents": "lzf_optimized_for(${1:oid})" }, + { "trigger": "m_checkstatus", "contents": "m_checkstatus(${1:conn}, ${2:identifier})" }, + { "trigger": "m_completeauthorizations", "contents": "m_completeauthorizations(${1:conn}, ${2:array})" }, + { "trigger": "m_connect", "contents": "m_connect(${1:conn})" }, + { "trigger": "m_connectionerror", "contents": "m_connectionerror(${1:conn})" }, + { "trigger": "m_deletetrans", "contents": "m_deletetrans(${1:conn}, ${2:identifier})" }, + { "trigger": "m_destroyconn", "contents": "m_destroyconn(${1:conn})" }, + { "trigger": "m_destroyengine", "contents": "m_destroyengine(${1:oid})" }, + { "trigger": "m_getcell", "contents": "m_getcell(${1:conn}, ${2:identifier}, ${3:column}, ${4:row})" }, + { "trigger": "m_getcellbynum", "contents": "m_getcellbynum(${1:conn}, ${2:identifier}, ${3:column}, ${4:row})" }, + { "trigger": "m_getcommadelimited", "contents": "m_getcommadelimited(${1:conn}, ${2:identifier})" }, + { "trigger": "m_getheader", "contents": "m_getheader(${1:conn}, ${2:identifier}, ${3:column_num})" }, + { "trigger": "m_initconn", "contents": "m_initconn(${1:oid})" }, + { "trigger": "m_initengine", "contents": "m_initengine(${1:location})" }, + { "trigger": "m_iscommadelimited", "contents": "m_iscommadelimited(${1:conn}, ${2:identifier})" }, + { "trigger": "m_maxconntimeout", "contents": "m_maxconntimeout(${1:conn}, ${2:secs})" }, + { "trigger": "m_monitor", "contents": "m_monitor(${1:conn})" }, + { "trigger": "m_numcolumns", "contents": "m_numcolumns(${1:conn}, ${2:identifier})" }, + { "trigger": "m_numrows", "contents": "m_numrows(${1:conn}, ${2:identifier})" }, + { "trigger": "m_parsecommadelimited", "contents": "m_parsecommadelimited(${1:conn}, ${2:identifier})" }, + { "trigger": "m_responsekeys", "contents": "m_responsekeys(${1:conn}, ${2:identifier})" }, + { "trigger": "m_responseparam", "contents": "m_responseparam(${1:conn}, ${2:identifier}, ${3:key})" }, + { "trigger": "m_returnstatus", "contents": "m_returnstatus(${1:conn}, ${2:identifier})" }, + { "trigger": "m_setblocking", "contents": "m_setblocking(${1:conn}, ${2:tf})" }, + { "trigger": "m_setdropfile", "contents": "m_setdropfile(${1:conn}, ${2:directory})" }, + { "trigger": "m_setip", "contents": "m_setip(${1:conn}, ${2:host}, ${3:port})" }, + { "trigger": "m_setssl", "contents": "m_setssl(${1:conn}, ${2:host}, ${3:port})" }, + { "trigger": "m_setssl_cafile", "contents": "m_setssl_cafile(${1:conn}, ${2:cafile})" }, + { "trigger": "m_setssl_files", "contents": "m_setssl_files(${1:conn}, ${2:sslkeyfile}, ${3:sslcertfile})" }, + { "trigger": "m_settimeout", "contents": "m_settimeout(${1:conn}, ${2:seconds})" }, + { "trigger": "m_sslcert_gen_hash", "contents": "m_sslcert_gen_hash(${1:filename})" }, + { "trigger": "m_transactionssent", "contents": "m_transactionssent(${1:conn})" }, + { "trigger": "m_transinqueue", "contents": "m_transinqueue(${1:conn})" }, + { "trigger": "m_transkeyval", "contents": "m_transkeyval(${1:conn}, ${2:identifier}, ${3:key}, ${4:value})" }, + { "trigger": "m_transnew", "contents": "m_transnew(${1:conn})" }, + { "trigger": "m_transsend", "contents": "m_transsend(${1:conn}, ${2:identifier})" }, + { "trigger": "m_uwait", "contents": "m_uwait(${1:microsecs})" }, + { "trigger": "m_validateidentifier", "contents": "m_validateidentifier(${1:conn}, ${2:tf})" }, + { "trigger": "m_verifyconnection", "contents": "m_verifyconnection(${1:conn}, ${2:tf})" }, + { "trigger": "m_verifysslcert", "contents": "m_verifysslcert(${1:conn}, ${2:tf})" }, + { "trigger": "magic_quotes_runtime", "contents": "magic_quotes_runtime()" }, + { "trigger": "mail", "contents": "mail(${1:to}, ${2:subject}, ${3:message})" }, + { "trigger": "mailparse_determine_best_xfer_encoding", "contents": "mailparse_determine_best_xfer_encoding(${1:fp})" }, + { "trigger": "mailparse_msg_create", "contents": "mailparse_msg_create(${1:oid})" }, + { "trigger": "mailparse_msg_extract_part", "contents": "mailparse_msg_extract_part(${1:mimemail}, ${2:msgbody})" }, + { "trigger": "mailparse_msg_extract_part_file", "contents": "mailparse_msg_extract_part_file(${1:mimemail}, ${2:filename})" }, + { "trigger": "mailparse_msg_extract_whole_part_file", "contents": "mailparse_msg_extract_whole_part_file(${1:mimemail}, ${2:filename})" }, + { "trigger": "mailparse_msg_free", "contents": "mailparse_msg_free(${1:mimemail})" }, + { "trigger": "mailparse_msg_get_part", "contents": "mailparse_msg_get_part(${1:mimemail}, ${2:mimesection})" }, + { "trigger": "mailparse_msg_get_part_data", "contents": "mailparse_msg_get_part_data(${1:mimemail})" }, + { "trigger": "mailparse_msg_get_structure", "contents": "mailparse_msg_get_structure(${1:mimemail})" }, + { "trigger": "mailparse_msg_parse", "contents": "mailparse_msg_parse(${1:mimemail}, ${2:data})" }, + { "trigger": "mailparse_msg_parse_file", "contents": "mailparse_msg_parse_file(${1:filename})" }, + { "trigger": "mailparse_rfc822_parse_addresses", "contents": "mailparse_rfc822_parse_addresses(${1:addresses})" }, + { "trigger": "mailparse_stream_encode", "contents": "mailparse_stream_encode(${1:sourcefp}, ${2:destfp}, ${3:encoding})" }, + { "trigger": "mailparse_uudecode_all", "contents": "mailparse_uudecode_all(${1:fp})" }, + { "trigger": "main", "contents": "main()" }, + { "trigger": "max", "contents": "max(${1:values})" }, + { "trigger": "maxdb_bind_param", "contents": "maxdb_bind_param()" }, + { "trigger": "maxdb_bind_result", "contents": "maxdb_bind_result()" }, + { "trigger": "maxdb_client_encoding", "contents": "maxdb_client_encoding()" }, + { "trigger": "maxdb_connect_errno", "contents": "maxdb_connect_errno(${1:oid})" }, + { "trigger": "maxdb_connect_error", "contents": "maxdb_connect_error(${1:oid})" }, + { "trigger": "maxdb_debug", "contents": "maxdb_debug(${1:debug})" }, + { "trigger": "maxdb_disable_rpl_parse", "contents": "maxdb_disable_rpl_parse(${1:link})" }, + { "trigger": "maxdb_dump_debug_info", "contents": "maxdb_dump_debug_info(${1:link})" }, + { "trigger": "maxdb_embedded_connect", "contents": "maxdb_embedded_connect()" }, + { "trigger": "maxdb_enable_reads_from_master", "contents": "maxdb_enable_reads_from_master(${1:link})" }, + { "trigger": "maxdb_enable_rpl_parse", "contents": "maxdb_enable_rpl_parse(${1:link})" }, + { "trigger": "maxdb_escape_string", "contents": "maxdb_escape_string()" }, + { "trigger": "maxdb_execute", "contents": "maxdb_execute()" }, + { "trigger": "maxdb_fetch", "contents": "maxdb_fetch()" }, + { "trigger": "maxdb_get_client_info", "contents": "maxdb_get_client_info(${1:oid})" }, + { "trigger": "maxdb_get_client_version", "contents": "maxdb_get_client_version(${1:oid})" }, + { "trigger": "maxdb_get_metadata", "contents": "maxdb_get_metadata()" }, + { "trigger": "maxdb_init", "contents": "maxdb_init(${1:oid})" }, + { "trigger": "maxdb_master_query", "contents": "maxdb_master_query(${1:link}, ${2:query})" }, + { "trigger": "maxdb_param_count", "contents": "maxdb_param_count()" }, + { "trigger": "maxdb_report", "contents": "maxdb_report(${1:flags})" }, + { "trigger": "maxdb_rpl_parse_enabled", "contents": "maxdb_rpl_parse_enabled(${1:link})" }, + { "trigger": "maxdb_rpl_probe", "contents": "maxdb_rpl_probe(${1:link})" }, + { "trigger": "maxdb_send_long_data", "contents": "maxdb_send_long_data()" }, + { "trigger": "maxdb_server_end", "contents": "maxdb_server_end(${1:oid})" }, + { "trigger": "maxdb_server_init", "contents": "maxdb_server_init()" }, + { "trigger": "maxdb_set_opt", "contents": "maxdb_set_opt()" }, + { "trigger": "maxdb_stmt_sqlstate", "contents": "maxdb_stmt_sqlstate(${1:stmt})" }, + { "trigger": "maxdb_thread_safe", "contents": "maxdb_thread_safe(${1:oid})" }, + { "trigger": "mb_check_encoding", "contents": "mb_check_encoding()" }, + { "trigger": "mb_convert_case", "contents": "mb_convert_case(${1:str}, ${2:mode = MB_CASE_UPPER})" }, + { "trigger": "mb_convert_encoding", "contents": "mb_convert_encoding(${1:str}, ${2:to_encoding})" }, + { "trigger": "mb_convert_kana", "contents": "mb_convert_kana(${1:str})" }, + { "trigger": "mb_convert_variables", "contents": "mb_convert_variables(${1:to_encoding}, ${2:from_encoding}, ${3:vars})" }, + { "trigger": "mb_decode_mimeheader", "contents": "mb_decode_mimeheader(${1:str})" }, + { "trigger": "mb_decode_numericentity", "contents": "mb_decode_numericentity(${1:str}, ${2:convmap}, ${3:encoding})" }, + { "trigger": "mb_detect_encoding", "contents": "mb_detect_encoding(${1:str})" }, + { "trigger": "mb_detect_order", "contents": "mb_detect_order()" }, + { "trigger": "mb_encode_mimeheader", "contents": "mb_encode_mimeheader(${1:str})" }, + { "trigger": "mb_encode_numericentity", "contents": "mb_encode_numericentity(${1:str}, ${2:convmap}, ${3:encoding})" }, + { "trigger": "mb_encoding_aliases", "contents": "mb_encoding_aliases(${1:encoding})" }, + { "trigger": "mb_ereg", "contents": "mb_ereg(${1:pattern}, ${2:string})" }, + { "trigger": "mb_ereg_match", "contents": "mb_ereg_match(${1:pattern}, ${2:string})" }, + { "trigger": "mb_ereg_replace", "contents": "mb_ereg_replace(${1:pattern}, ${2:replacement}, ${3:string})" }, + { "trigger": "mb_ereg_search", "contents": "mb_ereg_search()" }, + { "trigger": "mb_ereg_search_getpos", "contents": "mb_ereg_search_getpos(${1:oid})" }, + { "trigger": "mb_ereg_search_getregs", "contents": "mb_ereg_search_getregs(${1:oid})" }, + { "trigger": "mb_ereg_search_init", "contents": "mb_ereg_search_init(${1:string})" }, + { "trigger": "mb_ereg_search_pos", "contents": "mb_ereg_search_pos()" }, + { "trigger": "mb_ereg_search_regs", "contents": "mb_ereg_search_regs()" }, + { "trigger": "mb_ereg_search_setpos", "contents": "mb_ereg_search_setpos(${1:position})" }, + { "trigger": "mb_eregi", "contents": "mb_eregi(${1:pattern}, ${2:string})" }, + { "trigger": "mb_eregi_replace", "contents": "mb_eregi_replace(${1:pattern}, ${2:replace}, ${3:string})" }, + { "trigger": "mb_get_info", "contents": "mb_get_info()" }, + { "trigger": "mb_http_input", "contents": "mb_http_input()" }, + { "trigger": "mb_http_output", "contents": "mb_http_output()" }, + { "trigger": "mb_internal_encoding", "contents": "mb_internal_encoding()" }, + { "trigger": "mb_language", "contents": "mb_language()" }, + { "trigger": "mb_list_encodings", "contents": "mb_list_encodings(${1:oid})" }, + { "trigger": "mb_output_handler", "contents": "mb_output_handler(${1:contents}, ${2:status})" }, + { "trigger": "mb_parse_str", "contents": "mb_parse_str(${1:encoded_string})" }, + { "trigger": "mb_preferred_mime_name", "contents": "mb_preferred_mime_name(${1:encoding})" }, + { "trigger": "mb_regex_encoding", "contents": "mb_regex_encoding()" }, + { "trigger": "mb_regex_set_options", "contents": "mb_regex_set_options()" }, + { "trigger": "mb_send_mail", "contents": "mb_send_mail(${1:to}, ${2:subject}, ${3:message})" }, + { "trigger": "mb_split", "contents": "mb_split(${1:pattern}, ${2:string})" }, + { "trigger": "mb_strcut", "contents": "mb_strcut(${1:str}, ${2:start})" }, + { "trigger": "mb_strimwidth", "contents": "mb_strimwidth(${1:str}, ${2:start}, ${3:width})" }, + { "trigger": "mb_stripos", "contents": "mb_stripos(${1:haystack}, ${2:needle})" }, + { "trigger": "mb_stristr", "contents": "mb_stristr(${1:haystack}, ${2:needle})" }, + { "trigger": "mb_strlen", "contents": "mb_strlen(${1:str})" }, + { "trigger": "mb_strpos", "contents": "mb_strpos(${1:haystack}, ${2:needle})" }, + { "trigger": "mb_strrchr", "contents": "mb_strrchr(${1:haystack}, ${2:needle})" }, + { "trigger": "mb_strrichr", "contents": "mb_strrichr(${1:haystack}, ${2:needle})" }, + { "trigger": "mb_strripos", "contents": "mb_strripos(${1:haystack}, ${2:needle})" }, + { "trigger": "mb_strrpos", "contents": "mb_strrpos(${1:haystack}, ${2:needle})" }, + { "trigger": "mb_strstr", "contents": "mb_strstr(${1:haystack}, ${2:needle})" }, + { "trigger": "mb_strtolower", "contents": "mb_strtolower(${1:str})" }, + { "trigger": "mb_strtoupper", "contents": "mb_strtoupper(${1:str})" }, + { "trigger": "mb_strwidth", "contents": "mb_strwidth(${1:str})" }, + { "trigger": "mb_substitute_character", "contents": "mb_substitute_character()" }, + { "trigger": "mb_substr", "contents": "mb_substr(${1:str}, ${2:start})" }, + { "trigger": "mb_substr_count", "contents": "mb_substr_count(${1:haystack}, ${2:needle})" }, + { "trigger": "mcrypt_cbc", "contents": "mcrypt_cbc(${1:cipher}, ${2:key}, ${3:data}, ${4:mode})" }, + { "trigger": "mcrypt_cfb", "contents": "mcrypt_cfb(${1:cipher}, ${2:key}, ${3:data}, ${4:mode}, ${5:iv})" }, + { "trigger": "mcrypt_create_iv", "contents": "mcrypt_create_iv(${1:size})" }, + { "trigger": "mcrypt_decrypt", "contents": "mcrypt_decrypt(${1:cipher}, ${2:key}, ${3:data}, ${4:mode})" }, + { "trigger": "mcrypt_ecb", "contents": "mcrypt_ecb(${1:cipher}, ${2:key}, ${3:data}, ${4:mode})" }, + { "trigger": "mcrypt_enc_get_algorithms_name", "contents": "mcrypt_enc_get_algorithms_name(${1:td})" }, + { "trigger": "mcrypt_enc_get_block_size", "contents": "mcrypt_enc_get_block_size(${1:td})" }, + { "trigger": "mcrypt_enc_get_iv_size", "contents": "mcrypt_enc_get_iv_size(${1:td})" }, + { "trigger": "mcrypt_enc_get_key_size", "contents": "mcrypt_enc_get_key_size(${1:td})" }, + { "trigger": "mcrypt_enc_get_modes_name", "contents": "mcrypt_enc_get_modes_name(${1:td})" }, + { "trigger": "mcrypt_enc_get_supported_key_sizes", "contents": "mcrypt_enc_get_supported_key_sizes(${1:td})" }, + { "trigger": "mcrypt_enc_is_block_algorithm", "contents": "mcrypt_enc_is_block_algorithm(${1:td})" }, + { "trigger": "mcrypt_enc_is_block_algorithm_mode", "contents": "mcrypt_enc_is_block_algorithm_mode(${1:td})" }, + { "trigger": "mcrypt_enc_is_block_mode", "contents": "mcrypt_enc_is_block_mode(${1:td})" }, + { "trigger": "mcrypt_enc_self_test", "contents": "mcrypt_enc_self_test(${1:td})" }, + { "trigger": "mcrypt_encrypt", "contents": "mcrypt_encrypt(${1:cipher}, ${2:key}, ${3:data}, ${4:mode})" }, + { "trigger": "mcrypt_generic", "contents": "mcrypt_generic(${1:td}, ${2:data})" }, + { "trigger": "mcrypt_generic_deinit", "contents": "mcrypt_generic_deinit(${1:td})" }, + { "trigger": "mcrypt_generic_end", "contents": "mcrypt_generic_end(${1:td})" }, + { "trigger": "mcrypt_generic_init", "contents": "mcrypt_generic_init(${1:td}, ${2:key}, ${3:iv})" }, + { "trigger": "mcrypt_get_block_size", "contents": "mcrypt_get_block_size(${1:cipher})" }, + { "trigger": "mcrypt_get_cipher_name", "contents": "mcrypt_get_cipher_name(${1:cipher})" }, + { "trigger": "mcrypt_get_iv_size", "contents": "mcrypt_get_iv_size(${1:cipher}, ${2:mode})" }, + { "trigger": "mcrypt_get_key_size", "contents": "mcrypt_get_key_size(${1:cipher})" }, + { "trigger": "mcrypt_list_algorithms", "contents": "mcrypt_list_algorithms()" }, + { "trigger": "mcrypt_list_modes", "contents": "mcrypt_list_modes()" }, + { "trigger": "mcrypt_module_close", "contents": "mcrypt_module_close(${1:td})" }, + { "trigger": "mcrypt_module_get_algo_block_size", "contents": "mcrypt_module_get_algo_block_size(${1:algorithm})" }, + { "trigger": "mcrypt_module_get_algo_key_size", "contents": "mcrypt_module_get_algo_key_size(${1:algorithm})" }, + { "trigger": "mcrypt_module_get_supported_key_sizes", "contents": "mcrypt_module_get_supported_key_sizes(${1:algorithm})" }, + { "trigger": "mcrypt_module_is_block_algorithm", "contents": "mcrypt_module_is_block_algorithm(${1:algorithm})" }, + { "trigger": "mcrypt_module_is_block_algorithm_mode", "contents": "mcrypt_module_is_block_algorithm_mode(${1:mode})" }, + { "trigger": "mcrypt_module_is_block_mode", "contents": "mcrypt_module_is_block_mode(${1:mode})" }, + { "trigger": "mcrypt_module_open", "contents": "mcrypt_module_open(${1:algorithm}, ${2:algorithm_directory}, ${3:mode}, ${4:mode_directory})" }, + { "trigger": "mcrypt_module_self_test", "contents": "mcrypt_module_self_test(${1:algorithm})" }, + { "trigger": "mcrypt_ofb", "contents": "mcrypt_ofb(${1:cipher}, ${2:key}, ${3:data}, ${4:mode}, ${5:iv})" }, + { "trigger": "md5", "contents": "md5(${1:str})" }, + { "trigger": "md5_file", "contents": "md5_file(${1:filename})" }, + { "trigger": "mdecrypt_generic", "contents": "mdecrypt_generic(${1:td}, ${2:data})" }, + { "trigger": "memcache_debug", "contents": "memcache_debug(${1:on_off})" }, + { "trigger": "memory_get_peak_usage", "contents": "memory_get_peak_usage()" }, + { "trigger": "memory_get_usage", "contents": "memory_get_usage()" }, + { "trigger": "metaphone", "contents": "metaphone(${1:str})" }, + { "trigger": "method_exists", "contents": "method_exists(${1:object}, ${2:method_name})" }, + { "trigger": "mhash", "contents": "mhash(${1:hash}, ${2:data})" }, + { "trigger": "mhash_count", "contents": "mhash_count(${1:oid})" }, + { "trigger": "mhash_get_block_size", "contents": "mhash_get_block_size(${1:hash})" }, + { "trigger": "mhash_get_hash_name", "contents": "mhash_get_hash_name(${1:hash})" }, + { "trigger": "mhash_keygen_s2k", "contents": "mhash_keygen_s2k(${1:hash}, ${2:password}, ${3:salt}, ${4:bytes})" }, + { "trigger": "microtime", "contents": "microtime()" }, + { "trigger": "mime_content_type", "contents": "mime_content_type(${1:filename})" }, + { "trigger": "min", "contents": "min(${1:values})" }, + { "trigger": "ming_keypress", "contents": "ming_keypress(${1:char})" }, + { "trigger": "ming_setcubicthreshold", "contents": "ming_setcubicthreshold(${1:threshold})" }, + { "trigger": "ming_setscale", "contents": "ming_setscale(${1:scale})" }, + { "trigger": "ming_setswfcompression", "contents": "ming_setswfcompression(${1:level})" }, + { "trigger": "ming_useconstants", "contents": "ming_useconstants(${1:use})" }, + { "trigger": "ming_useswfversion", "contents": "ming_useswfversion(${1:version})" }, + { "trigger": "mkdir", "contents": "mkdir(${1:pathname})" }, + { "trigger": "mktime", "contents": "mktime()" }, + { "trigger": "money_format", "contents": "money_format(${1:format}, ${2:number})" }, + { "trigger": "move_uploaded_file", "contents": "move_uploaded_file(${1:filename}, ${2:destination})" }, + { "trigger": "mqseries_back", "contents": "mqseries_back(${1:hconn}, ${2:compCode}, ${3:reason})" }, + { "trigger": "mqseries_begin", "contents": "mqseries_begin(${1:hconn}, ${2:beginOptions}, ${3:compCode}, ${4:reason})" }, + { "trigger": "mqseries_close", "contents": "mqseries_close(${1:hconn}, ${2:hobj}, ${3:options}, ${4:compCode}, ${5:reason})" }, + { "trigger": "mqseries_cmit", "contents": "mqseries_cmit(${1:hconn}, ${2:compCode}, ${3:reason})" }, + { "trigger": "mqseries_conn", "contents": "mqseries_conn(${1:qManagerName}, ${2:hconn}, ${3:compCode}, ${4:reason})" }, + { "trigger": "mqseries_connx", "contents": "mqseries_connx(${1:qManagerName}, ${2:connOptions}, ${3:hconn}, ${4:compCode}, ${5:reason})" }, + { "trigger": "mqseries_disc", "contents": "mqseries_disc(${1:hconn}, ${2:compCode}, ${3:reason})" }, + { "trigger": "mqseries_get", "contents": "mqseries_get(${1:hConn}, ${2:hObj}, ${3:md}, ${4:gmo}, ${5:bufferLength}, ${6:msg}, ${7:data_length}, ${8:compCode}, ${9:reason})" }, + { "trigger": "mqseries_inq", "contents": "mqseries_inq(${1:hconn}, ${2:hobj}, ${3:selectorCount}, ${4:selectors}, ${5:intAttrCount}, ${6:intAttr}, ${7:charAttrLength}, ${8:charAttr}, ${9:compCode}, ${10:reason})" }, + { "trigger": "mqseries_open", "contents": "mqseries_open(${1:hconn}, ${2:objDesc}, ${3:option}, ${4:hobj}, ${5:compCode}, ${6:reason})" }, + { "trigger": "mqseries_put", "contents": "mqseries_put(${1:hConn}, ${2:hObj}, ${3:md}, ${4:pmo}, ${5:message}, ${6:compCode}, ${7:reason})" }, + { "trigger": "mqseries_put1", "contents": "mqseries_put1(${1:hconn}, ${2:objDesc}, ${3:msgDesc}, ${4:pmo}, ${5:buffer}, ${6:compCode}, ${7:reason})" }, + { "trigger": "mqseries_set", "contents": "mqseries_set(${1:hconn}, ${2:hobj}, ${3:selectorcount}, ${4:selectors}, ${5:intattrcount}, ${6:intattrs}, ${7:charattrlength}, ${8:charattrs}, ${9:compCode}, ${10:reason})" }, + { "trigger": "mqseries_strerror", "contents": "mqseries_strerror(${1:reason})" }, + { "trigger": "msession_connect", "contents": "msession_connect(${1:host}, ${2:port})" }, + { "trigger": "msession_count", "contents": "msession_count(${1:oid})" }, + { "trigger": "msession_create", "contents": "msession_create(${1:session})" }, + { "trigger": "msession_destroy", "contents": "msession_destroy(${1:name})" }, + { "trigger": "msession_disconnect", "contents": "msession_disconnect(${1:oid})" }, + { "trigger": "msession_find", "contents": "msession_find(${1:name}, ${2:value})" }, + { "trigger": "msession_get", "contents": "msession_get(${1:session}, ${2:name}, ${3:value})" }, + { "trigger": "msession_get_array", "contents": "msession_get_array(${1:session})" }, + { "trigger": "msession_get_data", "contents": "msession_get_data(${1:session})" }, + { "trigger": "msession_inc", "contents": "msession_inc(${1:session}, ${2:name})" }, + { "trigger": "msession_list", "contents": "msession_list(${1:oid})" }, + { "trigger": "msession_listvar", "contents": "msession_listvar(${1:name})" }, + { "trigger": "msession_lock", "contents": "msession_lock(${1:name})" }, + { "trigger": "msession_plugin", "contents": "msession_plugin(${1:session}, ${2:val})" }, + { "trigger": "msession_randstr", "contents": "msession_randstr(${1:param})" }, + { "trigger": "msession_set", "contents": "msession_set(${1:session}, ${2:name}, ${3:value})" }, + { "trigger": "msession_set_array", "contents": "msession_set_array(${1:session}, ${2:tuples})" }, + { "trigger": "msession_set_data", "contents": "msession_set_data(${1:session}, ${2:value})" }, + { "trigger": "msession_timeout", "contents": "msession_timeout(${1:session})" }, + { "trigger": "msession_uniq", "contents": "msession_uniq(${1:param})" }, + { "trigger": "msession_unlock", "contents": "msession_unlock(${1:session}, ${2:key})" }, + { "trigger": "msg_get_queue", "contents": "msg_get_queue(${1:key})" }, + { "trigger": "msg_queue_exists", "contents": "msg_queue_exists(${1:key})" }, + { "trigger": "msg_receive", "contents": "msg_receive(${1:queue}, ${2:desiredmsgtype}, ${3:msgtype}, ${4:maxsize}, ${5:message})" }, + { "trigger": "msg_remove_queue", "contents": "msg_remove_queue(${1:queue})" }, + { "trigger": "msg_send", "contents": "msg_send(${1:queue}, ${2:msgtype}, ${3:message})" }, + { "trigger": "msg_set_queue", "contents": "msg_set_queue(${1:queue}, ${2:data})" }, + { "trigger": "msg_stat_queue", "contents": "msg_stat_queue(${1:queue})" }, + { "trigger": "msql", "contents": "msql()" }, + { "trigger": "msql_affected_rows", "contents": "msql_affected_rows(${1:result})" }, + { "trigger": "msql_close", "contents": "msql_close()" }, + { "trigger": "msql_connect", "contents": "msql_connect()" }, + { "trigger": "msql_create_db", "contents": "msql_create_db(${1:database_name})" }, + { "trigger": "msql_createdb", "contents": "msql_createdb()" }, + { "trigger": "msql_data_seek", "contents": "msql_data_seek(${1:result}, ${2:row_number})" }, + { "trigger": "msql_db_query", "contents": "msql_db_query(${1:database}, ${2:query})" }, + { "trigger": "msql_dbname", "contents": "msql_dbname()" }, + { "trigger": "msql_drop_db", "contents": "msql_drop_db(${1:database_name})" }, + { "trigger": "msql_error", "contents": "msql_error(${1:oid})" }, + { "trigger": "msql_fetch_array", "contents": "msql_fetch_array(${1:result})" }, + { "trigger": "msql_fetch_field", "contents": "msql_fetch_field(${1:result})" }, + { "trigger": "msql_fetch_object", "contents": "msql_fetch_object(${1:result})" }, + { "trigger": "msql_fetch_row", "contents": "msql_fetch_row(${1:result})" }, + { "trigger": "msql_field_flags", "contents": "msql_field_flags(${1:result}, ${2:field_offset})" }, + { "trigger": "msql_field_len", "contents": "msql_field_len(${1:result}, ${2:field_offset})" }, + { "trigger": "msql_field_name", "contents": "msql_field_name(${1:result}, ${2:field_offset})" }, + { "trigger": "msql_field_seek", "contents": "msql_field_seek(${1:result}, ${2:field_offset})" }, + { "trigger": "msql_field_table", "contents": "msql_field_table(${1:result}, ${2:field_offset})" }, + { "trigger": "msql_field_type", "contents": "msql_field_type(${1:result}, ${2:field_offset})" }, + { "trigger": "msql_fieldflags", "contents": "msql_fieldflags()" }, + { "trigger": "msql_fieldlen", "contents": "msql_fieldlen()" }, + { "trigger": "msql_fieldname", "contents": "msql_fieldname()" }, + { "trigger": "msql_fieldtable", "contents": "msql_fieldtable()" }, + { "trigger": "msql_fieldtype", "contents": "msql_fieldtype()" }, + { "trigger": "msql_free_result", "contents": "msql_free_result(${1:result})" }, + { "trigger": "msql_list_dbs", "contents": "msql_list_dbs()" }, + { "trigger": "msql_list_fields", "contents": "msql_list_fields(${1:database}, ${2:tablename})" }, + { "trigger": "msql_list_tables", "contents": "msql_list_tables(${1:database})" }, + { "trigger": "msql_num_fields", "contents": "msql_num_fields(${1:result})" }, + { "trigger": "msql_num_rows", "contents": "msql_num_rows(${1:query_identifier})" }, + { "trigger": "msql_numfields", "contents": "msql_numfields()" }, + { "trigger": "msql_numrows", "contents": "msql_numrows()" }, + { "trigger": "msql_pconnect", "contents": "msql_pconnect()" }, + { "trigger": "msql_query", "contents": "msql_query(${1:query})" }, + { "trigger": "msql_regcase", "contents": "msql_regcase()" }, + { "trigger": "msql_result", "contents": "msql_result(${1:result}, ${2:row})" }, + { "trigger": "msql_select_db", "contents": "msql_select_db(${1:database_name})" }, + { "trigger": "msql_tablename", "contents": "msql_tablename()" }, + { "trigger": "mssql_bind", "contents": "mssql_bind(${1:stmt}, ${2:param_name}, ${3:var}, ${4:type})" }, + { "trigger": "mssql_close", "contents": "mssql_close()" }, + { "trigger": "mssql_connect", "contents": "mssql_connect()" }, + { "trigger": "mssql_data_seek", "contents": "mssql_data_seek(${1:result_identifier}, ${2:row_number})" }, + { "trigger": "mssql_execute", "contents": "mssql_execute(${1:stmt})" }, + { "trigger": "mssql_fetch_array", "contents": "mssql_fetch_array(${1:result})" }, + { "trigger": "mssql_fetch_assoc", "contents": "mssql_fetch_assoc(${1:result_id})" }, + { "trigger": "mssql_fetch_batch", "contents": "mssql_fetch_batch(${1:result})" }, + { "trigger": "mssql_fetch_field", "contents": "mssql_fetch_field(${1:result})" }, + { "trigger": "mssql_fetch_object", "contents": "mssql_fetch_object(${1:result})" }, + { "trigger": "mssql_fetch_row", "contents": "mssql_fetch_row(${1:result})" }, + { "trigger": "mssql_field_length", "contents": "mssql_field_length(${1:result})" }, + { "trigger": "mssql_field_name", "contents": "mssql_field_name(${1:result})" }, + { "trigger": "mssql_field_seek", "contents": "mssql_field_seek(${1:result}, ${2:field_offset})" }, + { "trigger": "mssql_field_type", "contents": "mssql_field_type(${1:result})" }, + { "trigger": "mssql_free_result", "contents": "mssql_free_result(${1:result})" }, + { "trigger": "mssql_free_statement", "contents": "mssql_free_statement(${1:stmt})" }, + { "trigger": "mssql_get_last_message", "contents": "mssql_get_last_message(${1:oid})" }, + { "trigger": "mssql_guid_string", "contents": "mssql_guid_string(${1:binary})" }, + { "trigger": "mssql_init", "contents": "mssql_init(${1:sp_name})" }, + { "trigger": "mssql_min_error_severity", "contents": "mssql_min_error_severity(${1:severity})" }, + { "trigger": "mssql_min_message_severity", "contents": "mssql_min_message_severity(${1:severity})" }, + { "trigger": "mssql_next_result", "contents": "mssql_next_result(${1:result_id})" }, + { "trigger": "mssql_num_fields", "contents": "mssql_num_fields(${1:result})" }, + { "trigger": "mssql_num_rows", "contents": "mssql_num_rows(${1:result})" }, + { "trigger": "mssql_pconnect", "contents": "mssql_pconnect()" }, + { "trigger": "mssql_query", "contents": "mssql_query(${1:query})" }, + { "trigger": "mssql_result", "contents": "mssql_result(${1:result}, ${2:row}, ${3:field})" }, + { "trigger": "mssql_rows_affected", "contents": "mssql_rows_affected(${1:link_identifier})" }, + { "trigger": "mssql_select_db", "contents": "mssql_select_db(${1:database_name})" }, + { "trigger": "mt_getrandmax", "contents": "mt_getrandmax(${1:oid})" }, + { "trigger": "mt_rand", "contents": "mt_rand(${1:oid})" }, + { "trigger": "mt_srand", "contents": "mt_srand()" }, + { "trigger": "mysql_affected_rows", "contents": "mysql_affected_rows()" }, + { "trigger": "mysql_client_encoding", "contents": "mysql_client_encoding()" }, + { "trigger": "mysql_close", "contents": "mysql_close()" }, + { "trigger": "mysql_connect", "contents": "mysql_connect()" }, + { "trigger": "mysql_create_db", "contents": "mysql_create_db(${1:database_name})" }, + { "trigger": "mysql_data_seek", "contents": "mysql_data_seek(${1:result}, ${2:row_number})" }, + { "trigger": "mysql_db_name", "contents": "mysql_db_name(${1:result}, ${2:row})" }, + { "trigger": "mysql_db_query", "contents": "mysql_db_query(${1:database}, ${2:query})" }, + { "trigger": "mysql_drop_db", "contents": "mysql_drop_db(${1:database_name})" }, + { "trigger": "mysql_errno", "contents": "mysql_errno()" }, + { "trigger": "mysql_error", "contents": "mysql_error()" }, + { "trigger": "mysql_escape_string", "contents": "mysql_escape_string(${1:unescaped_string})" }, + { "trigger": "mysql_fetch_array", "contents": "mysql_fetch_array(${1:result})" }, + { "trigger": "mysql_fetch_assoc", "contents": "mysql_fetch_assoc(${1:result})" }, + { "trigger": "mysql_fetch_field", "contents": "mysql_fetch_field(${1:result})" }, + { "trigger": "mysql_fetch_lengths", "contents": "mysql_fetch_lengths(${1:result})" }, + { "trigger": "mysql_fetch_object", "contents": "mysql_fetch_object(${1:result})" }, + { "trigger": "mysql_fetch_row", "contents": "mysql_fetch_row(${1:result})" }, + { "trigger": "mysql_field_flags", "contents": "mysql_field_flags(${1:result}, ${2:field_offset})" }, + { "trigger": "mysql_field_len", "contents": "mysql_field_len(${1:result}, ${2:field_offset})" }, + { "trigger": "mysql_field_name", "contents": "mysql_field_name(${1:result}, ${2:field_offset})" }, + { "trigger": "mysql_field_seek", "contents": "mysql_field_seek(${1:result}, ${2:field_offset})" }, + { "trigger": "mysql_field_table", "contents": "mysql_field_table(${1:result}, ${2:field_offset})" }, + { "trigger": "mysql_field_type", "contents": "mysql_field_type(${1:result}, ${2:field_offset})" }, + { "trigger": "mysql_free_result", "contents": "mysql_free_result(${1:result})" }, + { "trigger": "mysql_get_client_info", "contents": "mysql_get_client_info(${1:oid})" }, + { "trigger": "mysql_get_host_info", "contents": "mysql_get_host_info()" }, + { "trigger": "mysql_get_proto_info", "contents": "mysql_get_proto_info()" }, + { "trigger": "mysql_get_server_info", "contents": "mysql_get_server_info()" }, + { "trigger": "mysql_info", "contents": "mysql_info()" }, + { "trigger": "mysql_insert_id", "contents": "mysql_insert_id()" }, + { "trigger": "mysql_list_dbs", "contents": "mysql_list_dbs()" }, + { "trigger": "mysql_list_fields", "contents": "mysql_list_fields(${1:database_name}, ${2:table_name})" }, + { "trigger": "mysql_list_processes", "contents": "mysql_list_processes()" }, + { "trigger": "mysql_list_tables", "contents": "mysql_list_tables(${1:database})" }, + { "trigger": "mysql_num_fields", "contents": "mysql_num_fields(${1:result})" }, + { "trigger": "mysql_num_rows", "contents": "mysql_num_rows(${1:result})" }, + { "trigger": "mysql_pconnect", "contents": "mysql_pconnect()" }, + { "trigger": "mysql_ping", "contents": "mysql_ping()" }, + { "trigger": "mysql_query", "contents": "mysql_query(${1:query})" }, + { "trigger": "mysql_real_escape_string", "contents": "mysql_real_escape_string(${1:unescaped_string})" }, + { "trigger": "mysql_result", "contents": "mysql_result(${1:result}, ${2:row})" }, + { "trigger": "mysql_select_db", "contents": "mysql_select_db(${1:database_name})" }, + { "trigger": "mysql_set_charset", "contents": "mysql_set_charset(${1:charset})" }, + { "trigger": "mysql_stat", "contents": "mysql_stat()" }, + { "trigger": "mysql_tablename", "contents": "mysql_tablename(${1:result}, ${2:i})" }, + { "trigger": "mysql_thread_id", "contents": "mysql_thread_id()" }, + { "trigger": "mysql_unbuffered_query", "contents": "mysql_unbuffered_query(${1:query})" }, + { "trigger": "mysqli_bind_param", "contents": "mysqli_bind_param()" }, + { "trigger": "mysqli_bind_result", "contents": "mysqli_bind_result()" }, + { "trigger": "mysqli_client_encoding", "contents": "mysqli_client_encoding()" }, + { "trigger": "mysqli_connect", "contents": "mysqli_connect()" }, + { "trigger": "mysqli_disable_rpl_parse", "contents": "mysqli_disable_rpl_parse(${1:link})" }, + { "trigger": "mysqli_enable_reads_from_master", "contents": "mysqli_enable_reads_from_master(${1:link})" }, + { "trigger": "mysqli_enable_rpl_parse", "contents": "mysqli_enable_rpl_parse(${1:link})" }, + { "trigger": "mysqli_escape_string", "contents": "mysqli_escape_string()" }, + { "trigger": "mysqli_execute", "contents": "mysqli_execute()" }, + { "trigger": "mysqli_fetch", "contents": "mysqli_fetch()" }, + { "trigger": "mysqli_get_metadata", "contents": "mysqli_get_metadata()" }, + { "trigger": "mysqli_master_query", "contents": "mysqli_master_query(${1:link}, ${2:query})" }, + { "trigger": "mysqli_param_count", "contents": "mysqli_param_count()" }, + { "trigger": "mysqli_report", "contents": "mysqli_report(${1:flags})" }, + { "trigger": "mysqli_rpl_parse_enabled", "contents": "mysqli_rpl_parse_enabled(${1:link})" }, + { "trigger": "mysqli_rpl_probe", "contents": "mysqli_rpl_probe(${1:link})" }, + { "trigger": "mysqli_send_long_data", "contents": "mysqli_send_long_data()" }, + { "trigger": "mysqli_set_opt", "contents": "mysqli_set_opt()" }, + { "trigger": "mysqli_slave_query", "contents": "mysqli_slave_query(${1:link}, ${2:query})" }, + { "trigger": "mysqlnd_qc_change_handler", "contents": "mysqlnd_qc_change_handler(${1:handler})" }, + { "trigger": "mysqlnd_qc_clear_cache", "contents": "mysqlnd_qc_clear_cache(${1:oid})" }, + { "trigger": "mysqlnd_qc_get_cache_info", "contents": "mysqlnd_qc_get_cache_info(${1:oid})" }, + { "trigger": "mysqlnd_qc_get_core_stats", "contents": "mysqlnd_qc_get_core_stats(${1:oid})" }, + { "trigger": "mysqlnd_qc_get_handler", "contents": "mysqlnd_qc_get_handler(${1:oid})" }, + { "trigger": "mysqlnd_qc_get_query_trace_log", "contents": "mysqlnd_qc_get_query_trace_log(${1:oid})" }, + { "trigger": "mysqlnd_qc_set_user_handlers", "contents": "mysqlnd_qc_set_user_handlers(${1:get_hash}, ${2:find_query_in_cache}, ${3:return_to_cache}, ${4:add_query_to_cache_if_not_exists}, ${5:query_is_select}, ${6:update_query_run_time_stats}, ${7:get_stats}, ${8:clear_cache})" }, + { "trigger": "natcasesort", "contents": "natcasesort(${1:array})" }, + { "trigger": "natsort", "contents": "natsort(${1:array})" }, + { "trigger": "ncurses_addch", "contents": "ncurses_addch(${1:ch})" }, + { "trigger": "ncurses_addchnstr", "contents": "ncurses_addchnstr(${1:s}, ${2:n})" }, + { "trigger": "ncurses_addchstr", "contents": "ncurses_addchstr(${1:s})" }, + { "trigger": "ncurses_addnstr", "contents": "ncurses_addnstr(${1:s}, ${2:n})" }, + { "trigger": "ncurses_addstr", "contents": "ncurses_addstr(${1:text})" }, + { "trigger": "ncurses_assume_default_colors", "contents": "ncurses_assume_default_colors(${1:fg}, ${2:bg})" }, + { "trigger": "ncurses_attroff", "contents": "ncurses_attroff(${1:attributes})" }, + { "trigger": "ncurses_attron", "contents": "ncurses_attron(${1:attributes})" }, + { "trigger": "ncurses_attrset", "contents": "ncurses_attrset(${1:attributes})" }, + { "trigger": "ncurses_baudrate", "contents": "ncurses_baudrate(${1:oid})" }, + { "trigger": "ncurses_beep", "contents": "ncurses_beep(${1:oid})" }, + { "trigger": "ncurses_bkgd", "contents": "ncurses_bkgd(${1:attrchar})" }, + { "trigger": "ncurses_bkgdset", "contents": "ncurses_bkgdset(${1:attrchar})" }, + { "trigger": "ncurses_border", "contents": "ncurses_border(${1:left}, ${2:right}, ${3:top}, ${4:bottom}, ${5:tl_corner}, ${6:tr_corner}, ${7:bl_corner}, ${8:br_corner})" }, + { "trigger": "ncurses_bottom_panel", "contents": "ncurses_bottom_panel(${1:panel})" }, + { "trigger": "ncurses_can_change_color", "contents": "ncurses_can_change_color(${1:oid})" }, + { "trigger": "ncurses_cbreak", "contents": "ncurses_cbreak(${1:oid})" }, + { "trigger": "ncurses_clear", "contents": "ncurses_clear(${1:oid})" }, + { "trigger": "ncurses_clrtobot", "contents": "ncurses_clrtobot(${1:oid})" }, + { "trigger": "ncurses_clrtoeol", "contents": "ncurses_clrtoeol(${1:oid})" }, + { "trigger": "ncurses_color_content", "contents": "ncurses_color_content(${1:color}, ${2:r}, ${3:g}, ${4:b})" }, + { "trigger": "ncurses_color_set", "contents": "ncurses_color_set(${1:pair})" }, + { "trigger": "ncurses_curs_set", "contents": "ncurses_curs_set(${1:visibility})" }, + { "trigger": "ncurses_def_prog_mode", "contents": "ncurses_def_prog_mode(${1:oid})" }, + { "trigger": "ncurses_def_shell_mode", "contents": "ncurses_def_shell_mode(${1:oid})" }, + { "trigger": "ncurses_define_key", "contents": "ncurses_define_key(${1:definition}, ${2:keycode})" }, + { "trigger": "ncurses_del_panel", "contents": "ncurses_del_panel(${1:panel})" }, + { "trigger": "ncurses_delay_output", "contents": "ncurses_delay_output(${1:milliseconds})" }, + { "trigger": "ncurses_delch", "contents": "ncurses_delch(${1:oid})" }, + { "trigger": "ncurses_deleteln", "contents": "ncurses_deleteln(${1:oid})" }, + { "trigger": "ncurses_delwin", "contents": "ncurses_delwin(${1:window})" }, + { "trigger": "ncurses_doupdate", "contents": "ncurses_doupdate(${1:oid})" }, + { "trigger": "ncurses_echo", "contents": "ncurses_echo(${1:oid})" }, + { "trigger": "ncurses_echochar", "contents": "ncurses_echochar(${1:character})" }, + { "trigger": "ncurses_end", "contents": "ncurses_end(${1:oid})" }, + { "trigger": "ncurses_erase", "contents": "ncurses_erase(${1:oid})" }, + { "trigger": "ncurses_erasechar", "contents": "ncurses_erasechar(${1:oid})" }, + { "trigger": "ncurses_filter", "contents": "ncurses_filter(${1:oid})" }, + { "trigger": "ncurses_flash", "contents": "ncurses_flash(${1:oid})" }, + { "trigger": "ncurses_flushinp", "contents": "ncurses_flushinp(${1:oid})" }, + { "trigger": "ncurses_getch", "contents": "ncurses_getch(${1:oid})" }, + { "trigger": "ncurses_getmaxyx", "contents": "ncurses_getmaxyx(${1:window}, ${2:y}, ${3:x})" }, + { "trigger": "ncurses_getmouse", "contents": "ncurses_getmouse(${1:mevent})" }, + { "trigger": "ncurses_getyx", "contents": "ncurses_getyx(${1:window}, ${2:y}, ${3:x})" }, + { "trigger": "ncurses_halfdelay", "contents": "ncurses_halfdelay(${1:tenth})" }, + { "trigger": "ncurses_has_colors", "contents": "ncurses_has_colors(${1:oid})" }, + { "trigger": "ncurses_has_ic", "contents": "ncurses_has_ic(${1:oid})" }, + { "trigger": "ncurses_has_il", "contents": "ncurses_has_il(${1:oid})" }, + { "trigger": "ncurses_has_key", "contents": "ncurses_has_key(${1:keycode})" }, + { "trigger": "ncurses_hide_panel", "contents": "ncurses_hide_panel(${1:panel})" }, + { "trigger": "ncurses_hline", "contents": "ncurses_hline(${1:charattr}, ${2:n})" }, + { "trigger": "ncurses_inch", "contents": "ncurses_inch(${1:oid})" }, + { "trigger": "ncurses_init", "contents": "ncurses_init(${1:oid})" }, + { "trigger": "ncurses_init_color", "contents": "ncurses_init_color(${1:color}, ${2:r}, ${3:g}, ${4:b})" }, + { "trigger": "ncurses_init_pair", "contents": "ncurses_init_pair(${1:pair}, ${2:fg}, ${3:bg})" }, + { "trigger": "ncurses_insch", "contents": "ncurses_insch(${1:character})" }, + { "trigger": "ncurses_insdelln", "contents": "ncurses_insdelln(${1:count})" }, + { "trigger": "ncurses_insertln", "contents": "ncurses_insertln(${1:oid})" }, + { "trigger": "ncurses_insstr", "contents": "ncurses_insstr(${1:text})" }, + { "trigger": "ncurses_instr", "contents": "ncurses_instr(${1:buffer})" }, + { "trigger": "ncurses_isendwin", "contents": "ncurses_isendwin(${1:oid})" }, + { "trigger": "ncurses_keyok", "contents": "ncurses_keyok(${1:keycode}, ${2:enable})" }, + { "trigger": "ncurses_keypad", "contents": "ncurses_keypad(${1:window}, ${2:bf})" }, + { "trigger": "ncurses_killchar", "contents": "ncurses_killchar(${1:oid})" }, + { "trigger": "ncurses_longname", "contents": "ncurses_longname(${1:oid})" }, + { "trigger": "ncurses_meta", "contents": "ncurses_meta(${1:window}, ${2:8bit})" }, + { "trigger": "ncurses_mouse_trafo", "contents": "ncurses_mouse_trafo(${1:y}, ${2:x}, ${3:toscreen})" }, + { "trigger": "ncurses_mouseinterval", "contents": "ncurses_mouseinterval(${1:milliseconds})" }, + { "trigger": "ncurses_mousemask", "contents": "ncurses_mousemask(${1:newmask}, ${2:oldmask})" }, + { "trigger": "ncurses_move", "contents": "ncurses_move(${1:y}, ${2:x})" }, + { "trigger": "ncurses_move_panel", "contents": "ncurses_move_panel(${1:panel}, ${2:startx}, ${3:starty})" }, + { "trigger": "ncurses_mvaddch", "contents": "ncurses_mvaddch(${1:y}, ${2:x}, ${3:c})" }, + { "trigger": "ncurses_mvaddchnstr", "contents": "ncurses_mvaddchnstr(${1:y}, ${2:x}, ${3:s}, ${4:n})" }, + { "trigger": "ncurses_mvaddchstr", "contents": "ncurses_mvaddchstr(${1:y}, ${2:x}, ${3:s})" }, + { "trigger": "ncurses_mvaddnstr", "contents": "ncurses_mvaddnstr(${1:y}, ${2:x}, ${3:s}, ${4:n})" }, + { "trigger": "ncurses_mvaddstr", "contents": "ncurses_mvaddstr(${1:y}, ${2:x}, ${3:s})" }, + { "trigger": "ncurses_mvcur", "contents": "ncurses_mvcur(${1:old_y}, ${2:old_x}, ${3:new_y}, ${4:new_x})" }, + { "trigger": "ncurses_mvdelch", "contents": "ncurses_mvdelch(${1:y}, ${2:x})" }, + { "trigger": "ncurses_mvgetch", "contents": "ncurses_mvgetch(${1:y}, ${2:x})" }, + { "trigger": "ncurses_mvhline", "contents": "ncurses_mvhline(${1:y}, ${2:x}, ${3:attrchar}, ${4:n})" }, + { "trigger": "ncurses_mvinch", "contents": "ncurses_mvinch(${1:y}, ${2:x})" }, + { "trigger": "ncurses_mvvline", "contents": "ncurses_mvvline(${1:y}, ${2:x}, ${3:attrchar}, ${4:n})" }, + { "trigger": "ncurses_mvwaddstr", "contents": "ncurses_mvwaddstr(${1:window}, ${2:y}, ${3:x}, ${4:text})" }, + { "trigger": "ncurses_napms", "contents": "ncurses_napms(${1:milliseconds})" }, + { "trigger": "ncurses_new_panel", "contents": "ncurses_new_panel(${1:window})" }, + { "trigger": "ncurses_newpad", "contents": "ncurses_newpad(${1:rows}, ${2:cols})" }, + { "trigger": "ncurses_newwin", "contents": "ncurses_newwin(${1:rows}, ${2:cols}, ${3:y}, ${4:x})" }, + { "trigger": "ncurses_nl", "contents": "ncurses_nl(${1:oid})" }, + { "trigger": "ncurses_nocbreak", "contents": "ncurses_nocbreak(${1:oid})" }, + { "trigger": "ncurses_noecho", "contents": "ncurses_noecho(${1:oid})" }, + { "trigger": "ncurses_nonl", "contents": "ncurses_nonl(${1:oid})" }, + { "trigger": "ncurses_noqiflush", "contents": "ncurses_noqiflush(${1:oid})" }, + { "trigger": "ncurses_noraw", "contents": "ncurses_noraw(${1:oid})" }, + { "trigger": "ncurses_pair_content", "contents": "ncurses_pair_content(${1:pair}, ${2:f}, ${3:b})" }, + { "trigger": "ncurses_panel_above", "contents": "ncurses_panel_above(${1:panel})" }, + { "trigger": "ncurses_panel_below", "contents": "ncurses_panel_below(${1:panel})" }, + { "trigger": "ncurses_panel_window", "contents": "ncurses_panel_window(${1:panel})" }, + { "trigger": "ncurses_pnoutrefresh", "contents": "ncurses_pnoutrefresh(${1:pad}, ${2:pminrow}, ${3:pmincol}, ${4:sminrow}, ${5:smincol}, ${6:smaxrow}, ${7:smaxcol})" }, + { "trigger": "ncurses_prefresh", "contents": "ncurses_prefresh(${1:pad}, ${2:pminrow}, ${3:pmincol}, ${4:sminrow}, ${5:smincol}, ${6:smaxrow}, ${7:smaxcol})" }, + { "trigger": "ncurses_putp", "contents": "ncurses_putp(${1:text})" }, + { "trigger": "ncurses_qiflush", "contents": "ncurses_qiflush(${1:oid})" }, + { "trigger": "ncurses_raw", "contents": "ncurses_raw(${1:oid})" }, + { "trigger": "ncurses_refresh", "contents": "ncurses_refresh(${1:ch})" }, + { "trigger": "ncurses_replace_panel", "contents": "ncurses_replace_panel(${1:panel}, ${2:window})" }, + { "trigger": "ncurses_reset_prog_mode", "contents": "ncurses_reset_prog_mode(${1:oid})" }, + { "trigger": "ncurses_reset_shell_mode", "contents": "ncurses_reset_shell_mode(${1:oid})" }, + { "trigger": "ncurses_resetty", "contents": "ncurses_resetty(${1:oid})" }, + { "trigger": "ncurses_savetty", "contents": "ncurses_savetty(${1:oid})" }, + { "trigger": "ncurses_scr_dump", "contents": "ncurses_scr_dump(${1:filename})" }, + { "trigger": "ncurses_scr_init", "contents": "ncurses_scr_init(${1:filename})" }, + { "trigger": "ncurses_scr_restore", "contents": "ncurses_scr_restore(${1:filename})" }, + { "trigger": "ncurses_scr_set", "contents": "ncurses_scr_set(${1:filename})" }, + { "trigger": "ncurses_scrl", "contents": "ncurses_scrl(${1:count})" }, + { "trigger": "ncurses_show_panel", "contents": "ncurses_show_panel(${1:panel})" }, + { "trigger": "ncurses_slk_attr", "contents": "ncurses_slk_attr(${1:oid})" }, + { "trigger": "ncurses_slk_attroff", "contents": "ncurses_slk_attroff(${1:intarg})" }, + { "trigger": "ncurses_slk_attron", "contents": "ncurses_slk_attron(${1:intarg})" }, + { "trigger": "ncurses_slk_attrset", "contents": "ncurses_slk_attrset(${1:intarg})" }, + { "trigger": "ncurses_slk_clear", "contents": "ncurses_slk_clear(${1:oid})" }, + { "trigger": "ncurses_slk_color", "contents": "ncurses_slk_color(${1:intarg})" }, + { "trigger": "ncurses_slk_init", "contents": "ncurses_slk_init(${1:format})" }, + { "trigger": "ncurses_slk_noutrefresh", "contents": "ncurses_slk_noutrefresh(${1:oid})" }, + { "trigger": "ncurses_slk_refresh", "contents": "ncurses_slk_refresh(${1:oid})" }, + { "trigger": "ncurses_slk_restore", "contents": "ncurses_slk_restore(${1:oid})" }, + { "trigger": "ncurses_slk_set", "contents": "ncurses_slk_set(${1:labelnr}, ${2:label}, ${3:format})" }, + { "trigger": "ncurses_slk_touch", "contents": "ncurses_slk_touch(${1:oid})" }, + { "trigger": "ncurses_standend", "contents": "ncurses_standend(${1:oid})" }, + { "trigger": "ncurses_standout", "contents": "ncurses_standout(${1:oid})" }, + { "trigger": "ncurses_start_color", "contents": "ncurses_start_color(${1:oid})" }, + { "trigger": "ncurses_termattrs", "contents": "ncurses_termattrs(${1:oid})" }, + { "trigger": "ncurses_termname", "contents": "ncurses_termname(${1:oid})" }, + { "trigger": "ncurses_timeout", "contents": "ncurses_timeout(${1:millisec})" }, + { "trigger": "ncurses_top_panel", "contents": "ncurses_top_panel(${1:panel})" }, + { "trigger": "ncurses_typeahead", "contents": "ncurses_typeahead(${1:fd})" }, + { "trigger": "ncurses_ungetch", "contents": "ncurses_ungetch(${1:keycode})" }, + { "trigger": "ncurses_ungetmouse", "contents": "ncurses_ungetmouse(${1:mevent})" }, + { "trigger": "ncurses_update_panels", "contents": "ncurses_update_panels(${1:oid})" }, + { "trigger": "ncurses_use_default_colors", "contents": "ncurses_use_default_colors(${1:oid})" }, + { "trigger": "ncurses_use_env", "contents": "ncurses_use_env(${1:flag})" }, + { "trigger": "ncurses_use_extended_names", "contents": "ncurses_use_extended_names(${1:flag})" }, + { "trigger": "ncurses_vidattr", "contents": "ncurses_vidattr(${1:intarg})" }, + { "trigger": "ncurses_vline", "contents": "ncurses_vline(${1:charattr}, ${2:n})" }, + { "trigger": "ncurses_waddch", "contents": "ncurses_waddch(${1:window}, ${2:ch})" }, + { "trigger": "ncurses_waddstr", "contents": "ncurses_waddstr(${1:window}, ${2:str})" }, + { "trigger": "ncurses_wattroff", "contents": "ncurses_wattroff(${1:window}, ${2:attrs})" }, + { "trigger": "ncurses_wattron", "contents": "ncurses_wattron(${1:window}, ${2:attrs})" }, + { "trigger": "ncurses_wattrset", "contents": "ncurses_wattrset(${1:window}, ${2:attrs})" }, + { "trigger": "ncurses_wborder", "contents": "ncurses_wborder(${1:window}, ${2:left}, ${3:right}, ${4:top}, ${5:bottom}, ${6:tl_corner}, ${7:tr_corner}, ${8:bl_corner}, ${9:br_corner})" }, + { "trigger": "ncurses_wclear", "contents": "ncurses_wclear(${1:window})" }, + { "trigger": "ncurses_wcolor_set", "contents": "ncurses_wcolor_set(${1:window}, ${2:color_pair})" }, + { "trigger": "ncurses_werase", "contents": "ncurses_werase(${1:window})" }, + { "trigger": "ncurses_wgetch", "contents": "ncurses_wgetch(${1:window})" }, + { "trigger": "ncurses_whline", "contents": "ncurses_whline(${1:window}, ${2:charattr}, ${3:n})" }, + { "trigger": "ncurses_wmouse_trafo", "contents": "ncurses_wmouse_trafo(${1:window}, ${2:y}, ${3:x}, ${4:toscreen})" }, + { "trigger": "ncurses_wmove", "contents": "ncurses_wmove(${1:window}, ${2:y}, ${3:x})" }, + { "trigger": "ncurses_wnoutrefresh", "contents": "ncurses_wnoutrefresh(${1:window})" }, + { "trigger": "ncurses_wrefresh", "contents": "ncurses_wrefresh(${1:window})" }, + { "trigger": "ncurses_wstandend", "contents": "ncurses_wstandend(${1:window})" }, + { "trigger": "ncurses_wstandout", "contents": "ncurses_wstandout(${1:window})" }, + { "trigger": "ncurses_wvline", "contents": "ncurses_wvline(${1:window}, ${2:charattr}, ${3:n})" }, + { "trigger": "newt_bell", "contents": "newt_bell(${1:oid})" }, + { "trigger": "newt_button", "contents": "newt_button(${1:left}, ${2:top}, ${3:text})" }, + { "trigger": "newt_button_bar", "contents": "newt_button_bar(${1:buttons})" }, + { "trigger": "newt_centered_window", "contents": "newt_centered_window(${1:width}, ${2:height})" }, + { "trigger": "newt_checkbox", "contents": "newt_checkbox(${1:left}, ${2:top}, ${3:text}, ${4:def_value})" }, + { "trigger": "newt_checkbox_get_value", "contents": "newt_checkbox_get_value(${1:checkbox})" }, + { "trigger": "newt_checkbox_set_flags", "contents": "newt_checkbox_set_flags(${1:checkbox}, ${2:flags}, ${3:sense})" }, + { "trigger": "newt_checkbox_set_value", "contents": "newt_checkbox_set_value(${1:checkbox}, ${2:value})" }, + { "trigger": "newt_checkbox_tree", "contents": "newt_checkbox_tree(${1:left}, ${2:top}, ${3:height})" }, + { "trigger": "newt_checkbox_tree_add_item", "contents": "newt_checkbox_tree_add_item(${1:checkboxtree}, ${2:text}, ${3:data}, ${4:flags}, ${5:index})" }, + { "trigger": "newt_checkbox_tree_find_item", "contents": "newt_checkbox_tree_find_item(${1:checkboxtree}, ${2:data})" }, + { "trigger": "newt_checkbox_tree_get_current", "contents": "newt_checkbox_tree_get_current(${1:checkboxtree})" }, + { "trigger": "newt_checkbox_tree_get_entry_value", "contents": "newt_checkbox_tree_get_entry_value(${1:checkboxtree}, ${2:data})" }, + { "trigger": "newt_checkbox_tree_get_multi_selection", "contents": "newt_checkbox_tree_get_multi_selection(${1:checkboxtree}, ${2:seqnum})" }, + { "trigger": "newt_checkbox_tree_get_selection", "contents": "newt_checkbox_tree_get_selection(${1:checkboxtree})" }, + { "trigger": "newt_checkbox_tree_multi", "contents": "newt_checkbox_tree_multi(${1:left}, ${2:top}, ${3:height}, ${4:seq})" }, + { "trigger": "newt_checkbox_tree_set_current", "contents": "newt_checkbox_tree_set_current(${1:checkboxtree}, ${2:data})" }, + { "trigger": "newt_checkbox_tree_set_entry", "contents": "newt_checkbox_tree_set_entry(${1:checkboxtree}, ${2:data}, ${3:text})" }, + { "trigger": "newt_checkbox_tree_set_entry_value", "contents": "newt_checkbox_tree_set_entry_value(${1:checkboxtree}, ${2:data}, ${3:value})" }, + { "trigger": "newt_checkbox_tree_set_width", "contents": "newt_checkbox_tree_set_width(${1:checkbox_tree}, ${2:width})" }, + { "trigger": "newt_clear_key_buffer", "contents": "newt_clear_key_buffer(${1:oid})" }, + { "trigger": "newt_cls", "contents": "newt_cls(${1:oid})" }, + { "trigger": "newt_compact_button", "contents": "newt_compact_button(${1:left}, ${2:top}, ${3:text})" }, + { "trigger": "newt_component_add_callback", "contents": "newt_component_add_callback(${1:component}, ${2:func_name}, ${3:data})" }, + { "trigger": "newt_component_takes_focus", "contents": "newt_component_takes_focus(${1:component}, ${2:takes_focus})" }, + { "trigger": "newt_create_grid", "contents": "newt_create_grid(${1:cols}, ${2:rows})" }, + { "trigger": "newt_cursor_off", "contents": "newt_cursor_off(${1:oid})" }, + { "trigger": "newt_cursor_on", "contents": "newt_cursor_on(${1:oid})" }, + { "trigger": "newt_delay", "contents": "newt_delay(${1:microseconds})" }, + { "trigger": "newt_draw_form", "contents": "newt_draw_form(${1:form})" }, + { "trigger": "newt_draw_root_text", "contents": "newt_draw_root_text(${1:left}, ${2:top}, ${3:text})" }, + { "trigger": "newt_entry", "contents": "newt_entry(${1:left}, ${2:top}, ${3:width})" }, + { "trigger": "newt_entry_get_value", "contents": "newt_entry_get_value(${1:entry})" }, + { "trigger": "newt_entry_set", "contents": "newt_entry_set(${1:entry}, ${2:value})" }, + { "trigger": "newt_entry_set_filter", "contents": "newt_entry_set_filter(${1:entry}, ${2:filter}, ${3:data})" }, + { "trigger": "newt_entry_set_flags", "contents": "newt_entry_set_flags(${1:entry}, ${2:flags}, ${3:sense})" }, + { "trigger": "newt_finished", "contents": "newt_finished(${1:oid})" }, + { "trigger": "newt_form", "contents": "newt_form()" }, + { "trigger": "newt_form_add_component", "contents": "newt_form_add_component(${1:form}, ${2:component})" }, + { "trigger": "newt_form_add_components", "contents": "newt_form_add_components(${1:form}, ${2:components})" }, + { "trigger": "newt_form_add_hot_key", "contents": "newt_form_add_hot_key(${1:form}, ${2:key})" }, + { "trigger": "newt_form_destroy", "contents": "newt_form_destroy(${1:form})" }, + { "trigger": "newt_form_get_current", "contents": "newt_form_get_current(${1:form})" }, + { "trigger": "newt_form_run", "contents": "newt_form_run(${1:form}, ${2:exit_struct})" }, + { "trigger": "newt_form_set_background", "contents": "newt_form_set_background(${1:from}, ${2:background})" }, + { "trigger": "newt_form_set_height", "contents": "newt_form_set_height(${1:form}, ${2:height})" }, + { "trigger": "newt_form_set_size", "contents": "newt_form_set_size(${1:form})" }, + { "trigger": "newt_form_set_timer", "contents": "newt_form_set_timer(${1:form}, ${2:milliseconds})" }, + { "trigger": "newt_form_set_width", "contents": "newt_form_set_width(${1:form}, ${2:width})" }, + { "trigger": "newt_form_watch_fd", "contents": "newt_form_watch_fd(${1:form}, ${2:stream})" }, + { "trigger": "newt_get_screen_size", "contents": "newt_get_screen_size(${1:cols}, ${2:rows})" }, + { "trigger": "newt_grid_add_components_to_form", "contents": "newt_grid_add_components_to_form(${1:grid}, ${2:form}, ${3:recurse})" }, + { "trigger": "newt_grid_basic_window", "contents": "newt_grid_basic_window(${1:text}, ${2:middle}, ${3:buttons})" }, + { "trigger": "newt_grid_free", "contents": "newt_grid_free(${1:grid}, ${2:recurse})" }, + { "trigger": "newt_grid_get_size", "contents": "newt_grid_get_size(${1:grid}, ${2:width}, ${3:height})" }, + { "trigger": "newt_grid_h_close_stacked", "contents": "newt_grid_h_close_stacked(${1:element1_type}, ${2:element1})" }, + { "trigger": "newt_grid_h_stacked", "contents": "newt_grid_h_stacked(${1:element1_type}, ${2:element1})" }, + { "trigger": "newt_grid_place", "contents": "newt_grid_place(${1:grid}, ${2:left}, ${3:top})" }, + { "trigger": "newt_grid_set_field", "contents": "newt_grid_set_field(${1:grid}, ${2:col}, ${3:row}, ${4:type}, ${5:val}, ${6:pad_left}, ${7:pad_top}, ${8:pad_right}, ${9:pad_bottom}, ${10:anchor})" }, + { "trigger": "newt_grid_simple_window", "contents": "newt_grid_simple_window(${1:text}, ${2:middle}, ${3:buttons})" }, + { "trigger": "newt_grid_v_close_stacked", "contents": "newt_grid_v_close_stacked(${1:element1_type}, ${2:element1})" }, + { "trigger": "newt_grid_v_stacked", "contents": "newt_grid_v_stacked(${1:element1_type}, ${2:element1})" }, + { "trigger": "newt_grid_wrapped_window", "contents": "newt_grid_wrapped_window(${1:grid}, ${2:title})" }, + { "trigger": "newt_grid_wrapped_window_at", "contents": "newt_grid_wrapped_window_at(${1:grid}, ${2:title}, ${3:left}, ${4:top})" }, + { "trigger": "newt_init", "contents": "newt_init(${1:oid})" }, + { "trigger": "newt_label", "contents": "newt_label(${1:left}, ${2:top}, ${3:text})" }, + { "trigger": "newt_label_set_text", "contents": "newt_label_set_text(${1:label}, ${2:text})" }, + { "trigger": "newt_listbox", "contents": "newt_listbox(${1:left}, ${2:top}, ${3:height})" }, + { "trigger": "newt_listbox_append_entry", "contents": "newt_listbox_append_entry(${1:listbox}, ${2:text}, ${3:data})" }, + { "trigger": "newt_listbox_clear", "contents": "newt_listbox_clear(${1:listobx})" }, + { "trigger": "newt_listbox_clear_selection", "contents": "newt_listbox_clear_selection(${1:listbox})" }, + { "trigger": "newt_listbox_delete_entry", "contents": "newt_listbox_delete_entry(${1:listbox}, ${2:key})" }, + { "trigger": "newt_listbox_get_current", "contents": "newt_listbox_get_current(${1:listbox})" }, + { "trigger": "newt_listbox_get_selection", "contents": "newt_listbox_get_selection(${1:listbox})" }, + { "trigger": "newt_listbox_insert_entry", "contents": "newt_listbox_insert_entry(${1:listbox}, ${2:text}, ${3:data}, ${4:key})" }, + { "trigger": "newt_listbox_item_count", "contents": "newt_listbox_item_count(${1:listbox})" }, + { "trigger": "newt_listbox_select_item", "contents": "newt_listbox_select_item(${1:listbox}, ${2:key}, ${3:sense})" }, + { "trigger": "newt_listbox_set_current", "contents": "newt_listbox_set_current(${1:listbox}, ${2:num})" }, + { "trigger": "newt_listbox_set_current_by_key", "contents": "newt_listbox_set_current_by_key(${1:listbox}, ${2:key})" }, + { "trigger": "newt_listbox_set_data", "contents": "newt_listbox_set_data(${1:listbox}, ${2:num}, ${3:data})" }, + { "trigger": "newt_listbox_set_entry", "contents": "newt_listbox_set_entry(${1:listbox}, ${2:num}, ${3:text})" }, + { "trigger": "newt_listbox_set_width", "contents": "newt_listbox_set_width(${1:listbox}, ${2:width})" }, + { "trigger": "newt_listitem", "contents": "newt_listitem(${1:left}, ${2:top}, ${3:text}, ${4:is_default}, ${5:prev_item}, ${6:data})" }, + { "trigger": "newt_listitem_get_data", "contents": "newt_listitem_get_data(${1:item})" }, + { "trigger": "newt_listitem_set", "contents": "newt_listitem_set(${1:item}, ${2:text})" }, + { "trigger": "newt_open_window", "contents": "newt_open_window(${1:left}, ${2:top}, ${3:width}, ${4:height})" }, + { "trigger": "newt_pop_help_line", "contents": "newt_pop_help_line(${1:oid})" }, + { "trigger": "newt_pop_window", "contents": "newt_pop_window(${1:oid})" }, + { "trigger": "newt_push_help_line", "contents": "newt_push_help_line()" }, + { "trigger": "newt_radio_get_current", "contents": "newt_radio_get_current(${1:set_member})" }, + { "trigger": "newt_radiobutton", "contents": "newt_radiobutton(${1:left}, ${2:top}, ${3:text}, ${4:is_default})" }, + { "trigger": "newt_redraw_help_line", "contents": "newt_redraw_help_line(${1:oid})" }, + { "trigger": "newt_reflow_text", "contents": "newt_reflow_text(${1:text}, ${2:width}, ${3:flex_down}, ${4:flex_up}, ${5:actual_width}, ${6:actual_height})" }, + { "trigger": "newt_refresh", "contents": "newt_refresh(${1:oid})" }, + { "trigger": "newt_resize_screen", "contents": "newt_resize_screen()" }, + { "trigger": "newt_resume", "contents": "newt_resume(${1:oid})" }, + { "trigger": "newt_run_form", "contents": "newt_run_form(${1:form})" }, + { "trigger": "newt_scale", "contents": "newt_scale(${1:left}, ${2:top}, ${3:width}, ${4:full_value})" }, + { "trigger": "newt_scale_set", "contents": "newt_scale_set(${1:scale}, ${2:amount})" }, + { "trigger": "newt_scrollbar_set", "contents": "newt_scrollbar_set(${1:scrollbar}, ${2:where}, ${3:total})" }, + { "trigger": "newt_set_help_callback", "contents": "newt_set_help_callback(${1:function})" }, + { "trigger": "newt_set_suspend_callback", "contents": "newt_set_suspend_callback(${1:function}, ${2:data})" }, + { "trigger": "newt_suspend", "contents": "newt_suspend(${1:oid})" }, + { "trigger": "newt_textbox", "contents": "newt_textbox(${1:left}, ${2:top}, ${3:width}, ${4:height})" }, + { "trigger": "newt_textbox_get_num_lines", "contents": "newt_textbox_get_num_lines(${1:textbox})" }, + { "trigger": "newt_textbox_reflowed", "contents": "newt_textbox_reflowed(${1:left}, ${2:top}, ${3:*text}, ${4:width}, ${5:flex_down}, ${6:flex_up})" }, + { "trigger": "newt_textbox_set_height", "contents": "newt_textbox_set_height(${1:textbox}, ${2:height})" }, + { "trigger": "newt_textbox_set_text", "contents": "newt_textbox_set_text(${1:textbox}, ${2:text})" }, + { "trigger": "newt_vertical_scrollbar", "contents": "newt_vertical_scrollbar(${1:left}, ${2:top}, ${3:height})" }, + { "trigger": "newt_wait_for_key", "contents": "newt_wait_for_key(${1:oid})" }, + { "trigger": "newt_win_choice", "contents": "newt_win_choice(${1:title}, ${2:button1_text}, ${3:button2_text}, ${4:format})" }, + { "trigger": "newt_win_entries", "contents": "newt_win_entries(${1:title}, ${2:text}, ${3:suggested_width}, ${4:flex_down}, ${5:flex_up}, ${6:data_width}, ${7:items}, ${8:button1})" }, + { "trigger": "newt_win_menu", "contents": "newt_win_menu(${1:title}, ${2:text}, ${3:suggestedWidth}, ${4:flexDown}, ${5:flexUp}, ${6:maxListHeight}, ${7:items}, ${8:listItem})" }, + { "trigger": "newt_win_message", "contents": "newt_win_message(${1:title}, ${2:button_text}, ${3:format})" }, + { "trigger": "newt_win_messagev", "contents": "newt_win_messagev(${1:title}, ${2:button_text}, ${3:format}, ${4:args})" }, + { "trigger": "newt_win_ternary", "contents": "newt_win_ternary(${1:title}, ${2:button1_text}, ${3:button2_text}, ${4:button3_text}, ${5:format})" }, + { "trigger": "next", "contents": "next(${1:array})" }, + { "trigger": "ngettext", "contents": "ngettext(${1:msgid1}, ${2:msgid2}, ${3:n})" }, + { "trigger": "nl2br", "contents": "nl2br(${1:string})" }, + { "trigger": "nl_langinfo", "contents": "nl_langinfo(${1:item})" }, + { "trigger": "notes_body", "contents": "notes_body(${1:server}, ${2:mailbox}, ${3:msg_number})" }, + { "trigger": "notes_copy_db", "contents": "notes_copy_db(${1:from_database_name}, ${2:to_database_name})" }, + { "trigger": "notes_create_db", "contents": "notes_create_db(${1:database_name})" }, + { "trigger": "notes_create_note", "contents": "notes_create_note(${1:database_name}, ${2:form_name})" }, + { "trigger": "notes_drop_db", "contents": "notes_drop_db(${1:database_name})" }, + { "trigger": "notes_find_note", "contents": "notes_find_note(${1:database_name}, ${2:name})" }, + { "trigger": "notes_header_info", "contents": "notes_header_info(${1:server}, ${2:mailbox}, ${3:msg_number})" }, + { "trigger": "notes_list_msgs", "contents": "notes_list_msgs(${1:db})" }, + { "trigger": "notes_mark_read", "contents": "notes_mark_read(${1:database_name}, ${2:user_name}, ${3:note_id})" }, + { "trigger": "notes_mark_unread", "contents": "notes_mark_unread(${1:database_name}, ${2:user_name}, ${3:note_id})" }, + { "trigger": "notes_nav_create", "contents": "notes_nav_create(${1:database_name}, ${2:name})" }, + { "trigger": "notes_search", "contents": "notes_search(${1:database_name}, ${2:keywords})" }, + { "trigger": "notes_unread", "contents": "notes_unread(${1:database_name}, ${2:user_name})" }, + { "trigger": "notes_version", "contents": "notes_version(${1:database_name})" }, + { "trigger": "nsapi_request_headers", "contents": "nsapi_request_headers(${1:oid})" }, + { "trigger": "nsapi_response_headers", "contents": "nsapi_response_headers(${1:oid})" }, + { "trigger": "nsapi_virtual", "contents": "nsapi_virtual(${1:uri})" }, + { "trigger": "nthmac", "contents": "nthmac(${1:clent}, ${2:data})" }, + { "trigger": "number_format", "contents": "number_format(${1:number})" }, + { "trigger": "oauth_get_sbs", "contents": "oauth_get_sbs(${1:http_method}, ${2:uri})" }, + { "trigger": "oauth_urlencode", "contents": "oauth_urlencode(${1:uri})" }, + { "trigger": "ob_clean", "contents": "ob_clean(${1:oid})" }, + { "trigger": "ob_deflatehandler", "contents": "ob_deflatehandler(${1:data}, ${2:mode})" }, + { "trigger": "ob_end_clean", "contents": "ob_end_clean(${1:oid})" }, + { "trigger": "ob_end_flush", "contents": "ob_end_flush(${1:oid})" }, + { "trigger": "ob_etaghandler", "contents": "ob_etaghandler(${1:data}, ${2:mode})" }, + { "trigger": "ob_flush", "contents": "ob_flush(${1:oid})" }, + { "trigger": "ob_get_clean", "contents": "ob_get_clean(${1:oid})" }, + { "trigger": "ob_get_contents", "contents": "ob_get_contents(${1:oid})" }, + { "trigger": "ob_get_flush", "contents": "ob_get_flush(${1:oid})" }, + { "trigger": "ob_get_length", "contents": "ob_get_length(${1:oid})" }, + { "trigger": "ob_get_level", "contents": "ob_get_level(${1:oid})" }, + { "trigger": "ob_get_status", "contents": "ob_get_status()" }, + { "trigger": "ob_gzhandler", "contents": "ob_gzhandler(${1:buffer}, ${2:mode})" }, + { "trigger": "ob_iconv_handler", "contents": "ob_iconv_handler(${1:contents}, ${2:status})" }, + { "trigger": "ob_implicit_flush", "contents": "ob_implicit_flush()" }, + { "trigger": "ob_inflatehandler", "contents": "ob_inflatehandler(${1:data}, ${2:mode})" }, + { "trigger": "ob_list_handlers", "contents": "ob_list_handlers(${1:oid})" }, + { "trigger": "ob_start", "contents": "ob_start()" }, + { "trigger": "ob_tidyhandler", "contents": "ob_tidyhandler(${1:input})" }, + { "trigger": "oci_bind_array_by_name", "contents": "oci_bind_array_by_name(${1:statement}, ${2:name}, ${3:var_array}, ${4:max_table_length})" }, + { "trigger": "oci_bind_by_name", "contents": "oci_bind_by_name(${1:statement}, ${2:bv_name}, ${3:variable})" }, + { "trigger": "oci_cancel", "contents": "oci_cancel(${1:statement})" }, + { "trigger": "oci_close", "contents": "oci_close(${1:connection})" }, + { "trigger": "oci_commit", "contents": "oci_commit(${1:connection})" }, + { "trigger": "oci_connect", "contents": "oci_connect(${1:username}, ${2:password})" }, + { "trigger": "oci_define_by_name", "contents": "oci_define_by_name(${1:statement}, ${2:column_name}, ${3:variable})" }, + { "trigger": "oci_error", "contents": "oci_error()" }, + { "trigger": "oci_execute", "contents": "oci_execute(${1:statement})" }, + { "trigger": "oci_fetch", "contents": "oci_fetch(${1:statement})" }, + { "trigger": "oci_fetch_all", "contents": "oci_fetch_all(${1:statement}, ${2:output})" }, + { "trigger": "oci_fetch_array", "contents": "oci_fetch_array(${1:statement})" }, + { "trigger": "oci_fetch_assoc", "contents": "oci_fetch_assoc(${1:statement})" }, + { "trigger": "oci_fetch_object", "contents": "oci_fetch_object(${1:statement})" }, + { "trigger": "oci_fetch_row", "contents": "oci_fetch_row(${1:statement})" }, + { "trigger": "oci_field_is_null", "contents": "oci_field_is_null(${1:statement}, ${2:field})" }, + { "trigger": "oci_field_name", "contents": "oci_field_name(${1:statement}, ${2:field})" }, + { "trigger": "oci_field_precision", "contents": "oci_field_precision(${1:statement}, ${2:field})" }, + { "trigger": "oci_field_scale", "contents": "oci_field_scale(${1:statement}, ${2:field})" }, + { "trigger": "oci_field_size", "contents": "oci_field_size(${1:statement}, ${2:field})" }, + { "trigger": "oci_field_type", "contents": "oci_field_type(${1:statement}, ${2:field})" }, + { "trigger": "oci_field_type_raw", "contents": "oci_field_type_raw(${1:statement}, ${2:field})" }, + { "trigger": "oci_free_statement", "contents": "oci_free_statement(${1:statement})" }, + { "trigger": "oci_internal_debug", "contents": "oci_internal_debug(${1:onoff})" }, + { "trigger": "oci_lob_copy", "contents": "oci_lob_copy(${1:lob_to}, ${2:lob_from})" }, + { "trigger": "oci_lob_is_equal", "contents": "oci_lob_is_equal(${1:lob1}, ${2:lob2})" }, + { "trigger": "oci_new_collection", "contents": "oci_new_collection(${1:connection}, ${2:tdo})" }, + { "trigger": "oci_new_connect", "contents": "oci_new_connect(${1:username}, ${2:password})" }, + { "trigger": "oci_new_cursor", "contents": "oci_new_cursor(${1:connection})" }, + { "trigger": "oci_new_descriptor", "contents": "oci_new_descriptor(${1:connection})" }, + { "trigger": "oci_num_fields", "contents": "oci_num_fields(${1:statement})" }, + { "trigger": "oci_num_rows", "contents": "oci_num_rows(${1:statement})" }, + { "trigger": "oci_parse", "contents": "oci_parse(${1:connection}, ${2:sql_text})" }, + { "trigger": "oci_password_change", "contents": "oci_password_change(${1:connection}, ${2:username}, ${3:old_password}, ${4:new_password})" }, + { "trigger": "oci_pconnect", "contents": "oci_pconnect(${1:username}, ${2:password})" }, + { "trigger": "oci_result", "contents": "oci_result(${1:statement}, ${2:field})" }, + { "trigger": "oci_rollback", "contents": "oci_rollback(${1:connection})" }, + { "trigger": "oci_server_version", "contents": "oci_server_version(${1:connection})" }, + { "trigger": "oci_set_action", "contents": "oci_set_action(${1:connection}, ${2:action_name})" }, + { "trigger": "oci_set_client_identifier", "contents": "oci_set_client_identifier(${1:connection}, ${2:client_identifier})" }, + { "trigger": "oci_set_client_info", "contents": "oci_set_client_info(${1:connection}, ${2:client_info})" }, + { "trigger": "oci_set_edition", "contents": "oci_set_edition(${1:edition})" }, + { "trigger": "oci_set_module_name", "contents": "oci_set_module_name(${1:connection}, ${2:module_name})" }, + { "trigger": "oci_set_prefetch", "contents": "oci_set_prefetch(${1:statement}, ${2:rows})" }, + { "trigger": "oci_statement_type", "contents": "oci_statement_type(${1:statement})" }, + { "trigger": "ocibindbyname", "contents": "ocibindbyname()" }, + { "trigger": "ocicancel", "contents": "ocicancel()" }, + { "trigger": "ocicloselob", "contents": "ocicloselob()" }, + { "trigger": "ocicollappend", "contents": "ocicollappend()" }, + { "trigger": "ocicollassign", "contents": "ocicollassign()" }, + { "trigger": "ocicollassignelem", "contents": "ocicollassignelem()" }, + { "trigger": "ocicollgetelem", "contents": "ocicollgetelem()" }, + { "trigger": "ocicollmax", "contents": "ocicollmax()" }, + { "trigger": "ocicollsize", "contents": "ocicollsize()" }, + { "trigger": "ocicolltrim", "contents": "ocicolltrim()" }, + { "trigger": "ocicolumnisnull", "contents": "ocicolumnisnull()" }, + { "trigger": "ocicolumnname", "contents": "ocicolumnname()" }, + { "trigger": "ocicolumnprecision", "contents": "ocicolumnprecision()" }, + { "trigger": "ocicolumnscale", "contents": "ocicolumnscale()" }, + { "trigger": "ocicolumnsize", "contents": "ocicolumnsize()" }, + { "trigger": "ocicolumntype", "contents": "ocicolumntype()" }, + { "trigger": "ocicolumntyperaw", "contents": "ocicolumntyperaw()" }, + { "trigger": "ocicommit", "contents": "ocicommit()" }, + { "trigger": "ocidefinebyname", "contents": "ocidefinebyname()" }, + { "trigger": "ocierror", "contents": "ocierror()" }, + { "trigger": "ociexecute", "contents": "ociexecute()" }, + { "trigger": "ocifetch", "contents": "ocifetch()" }, + { "trigger": "ocifetchinto", "contents": "ocifetchinto(${1:statement}, ${2:result})" }, + { "trigger": "ocifetchstatement", "contents": "ocifetchstatement()" }, + { "trigger": "ocifreecollection", "contents": "ocifreecollection()" }, + { "trigger": "ocifreecursor", "contents": "ocifreecursor()" }, + { "trigger": "ocifreedesc", "contents": "ocifreedesc()" }, + { "trigger": "ocifreestatement", "contents": "ocifreestatement()" }, + { "trigger": "ociinternaldebug", "contents": "ociinternaldebug()" }, + { "trigger": "ociloadlob", "contents": "ociloadlob()" }, + { "trigger": "ocilogoff", "contents": "ocilogoff()" }, + { "trigger": "ocilogon", "contents": "ocilogon()" }, + { "trigger": "ocinewcollection", "contents": "ocinewcollection()" }, + { "trigger": "ocinewcursor", "contents": "ocinewcursor()" }, + { "trigger": "ocinewdescriptor", "contents": "ocinewdescriptor()" }, + { "trigger": "ocinlogon", "contents": "ocinlogon()" }, + { "trigger": "ocinumcols", "contents": "ocinumcols()" }, + { "trigger": "ociparse", "contents": "ociparse()" }, + { "trigger": "ociplogon", "contents": "ociplogon()" }, + { "trigger": "ociresult", "contents": "ociresult()" }, + { "trigger": "ocirollback", "contents": "ocirollback()" }, + { "trigger": "ocirowcount", "contents": "ocirowcount()" }, + { "trigger": "ocisavelob", "contents": "ocisavelob()" }, + { "trigger": "ocisavelobfile", "contents": "ocisavelobfile()" }, + { "trigger": "ociserverversion", "contents": "ociserverversion()" }, + { "trigger": "ocisetprefetch", "contents": "ocisetprefetch()" }, + { "trigger": "ocistatementtype", "contents": "ocistatementtype()" }, + { "trigger": "ociwritelobtofile", "contents": "ociwritelobtofile()" }, + { "trigger": "ociwritetemporarylob", "contents": "ociwritetemporarylob()" }, + { "trigger": "octdec", "contents": "octdec(${1:octal_string})" }, + { "trigger": "odbc_autocommit", "contents": "odbc_autocommit(${1:connection_id})" }, + { "trigger": "odbc_binmode", "contents": "odbc_binmode(${1:result_id}, ${2:mode})" }, + { "trigger": "odbc_close", "contents": "odbc_close(${1:connection_id})" }, + { "trigger": "odbc_close_all", "contents": "odbc_close_all(${1:oid})" }, + { "trigger": "odbc_columnprivileges", "contents": "odbc_columnprivileges(${1:connection_id}, ${2:qualifier}, ${3:owner}, ${4:table_name}, ${5:column_name})" }, + { "trigger": "odbc_columns", "contents": "odbc_columns(${1:connection_id})" }, + { "trigger": "odbc_commit", "contents": "odbc_commit(${1:connection_id})" }, + { "trigger": "odbc_connect", "contents": "odbc_connect(${1:dsn}, ${2:user}, ${3:password})" }, + { "trigger": "odbc_cursor", "contents": "odbc_cursor(${1:result_id})" }, + { "trigger": "odbc_data_source", "contents": "odbc_data_source(${1:connection_id}, ${2:fetch_type})" }, + { "trigger": "odbc_do", "contents": "odbc_do()" }, + { "trigger": "odbc_error", "contents": "odbc_error()" }, + { "trigger": "odbc_errormsg", "contents": "odbc_errormsg()" }, + { "trigger": "odbc_exec", "contents": "odbc_exec(${1:connection_id}, ${2:query_string})" }, + { "trigger": "odbc_execute", "contents": "odbc_execute(${1:result_id})" }, + { "trigger": "odbc_fetch_array", "contents": "odbc_fetch_array(${1:result})" }, + { "trigger": "odbc_fetch_into", "contents": "odbc_fetch_into(${1:result_id}, ${2:result_array})" }, + { "trigger": "odbc_fetch_object", "contents": "odbc_fetch_object(${1:result})" }, + { "trigger": "odbc_fetch_row", "contents": "odbc_fetch_row(${1:result_id})" }, + { "trigger": "odbc_field_len", "contents": "odbc_field_len(${1:result_id}, ${2:field_number})" }, + { "trigger": "odbc_field_name", "contents": "odbc_field_name(${1:result_id}, ${2:field_number})" }, + { "trigger": "odbc_field_num", "contents": "odbc_field_num(${1:result_id}, ${2:field_name})" }, + { "trigger": "odbc_field_precision", "contents": "odbc_field_precision()" }, + { "trigger": "odbc_field_scale", "contents": "odbc_field_scale(${1:result_id}, ${2:field_number})" }, + { "trigger": "odbc_field_type", "contents": "odbc_field_type(${1:result_id}, ${2:field_number})" }, + { "trigger": "odbc_foreignkeys", "contents": "odbc_foreignkeys(${1:connection_id}, ${2:pk_qualifier}, ${3:pk_owner}, ${4:pk_table}, ${5:fk_qualifier}, ${6:fk_owner}, ${7:fk_table})" }, + { "trigger": "odbc_free_result", "contents": "odbc_free_result(${1:result_id})" }, + { "trigger": "odbc_gettypeinfo", "contents": "odbc_gettypeinfo(${1:connection_id})" }, + { "trigger": "odbc_longreadlen", "contents": "odbc_longreadlen(${1:result_id}, ${2:length})" }, + { "trigger": "odbc_next_result", "contents": "odbc_next_result(${1:result_id})" }, + { "trigger": "odbc_num_fields", "contents": "odbc_num_fields(${1:result_id})" }, + { "trigger": "odbc_num_rows", "contents": "odbc_num_rows(${1:result_id})" }, + { "trigger": "odbc_pconnect", "contents": "odbc_pconnect(${1:dsn}, ${2:user}, ${3:password})" }, + { "trigger": "odbc_prepare", "contents": "odbc_prepare(${1:connection_id}, ${2:query_string})" }, + { "trigger": "odbc_primarykeys", "contents": "odbc_primarykeys(${1:connection_id}, ${2:qualifier}, ${3:owner}, ${4:table})" }, + { "trigger": "odbc_procedurecolumns", "contents": "odbc_procedurecolumns(${1:connection_id})" }, + { "trigger": "odbc_procedures", "contents": "odbc_procedures(${1:connection_id})" }, + { "trigger": "odbc_result", "contents": "odbc_result(${1:result_id}, ${2:field})" }, + { "trigger": "odbc_result_all", "contents": "odbc_result_all(${1:result_id})" }, + { "trigger": "odbc_rollback", "contents": "odbc_rollback(${1:connection_id})" }, + { "trigger": "odbc_setoption", "contents": "odbc_setoption(${1:id}, ${2:function}, ${3:option}, ${4:param})" }, + { "trigger": "odbc_specialcolumns", "contents": "odbc_specialcolumns(${1:connection_id}, ${2:type}, ${3:qualifier}, ${4:owner}, ${5:table}, ${6:scope}, ${7:nullable})" }, + { "trigger": "odbc_statistics", "contents": "odbc_statistics(${1:connection_id}, ${2:qualifier}, ${3:owner}, ${4:table_name}, ${5:unique}, ${6:accuracy})" }, + { "trigger": "odbc_tableprivileges", "contents": "odbc_tableprivileges(${1:connection_id}, ${2:qualifier}, ${3:owner}, ${4:name})" }, + { "trigger": "odbc_tables", "contents": "odbc_tables(${1:connection_id})" }, + { "trigger": "openal_buffer_create", "contents": "openal_buffer_create(${1:oid})" }, + { "trigger": "openal_buffer_data", "contents": "openal_buffer_data(${1:buffer}, ${2:format}, ${3:data}, ${4:freq})" }, + { "trigger": "openal_buffer_destroy", "contents": "openal_buffer_destroy(${1:buffer})" }, + { "trigger": "openal_buffer_get", "contents": "openal_buffer_get(${1:buffer}, ${2:property})" }, + { "trigger": "openal_buffer_loadwav", "contents": "openal_buffer_loadwav(${1:buffer}, ${2:wavfile})" }, + { "trigger": "openal_context_create", "contents": "openal_context_create(${1:device})" }, + { "trigger": "openal_context_current", "contents": "openal_context_current(${1:context})" }, + { "trigger": "openal_context_destroy", "contents": "openal_context_destroy(${1:context})" }, + { "trigger": "openal_context_process", "contents": "openal_context_process(${1:context})" }, + { "trigger": "openal_context_suspend", "contents": "openal_context_suspend(${1:context})" }, + { "trigger": "openal_device_close", "contents": "openal_device_close(${1:device})" }, + { "trigger": "openal_device_open", "contents": "openal_device_open()" }, + { "trigger": "openal_listener_get", "contents": "openal_listener_get(${1:property})" }, + { "trigger": "openal_listener_set", "contents": "openal_listener_set(${1:property}, ${2:setting})" }, + { "trigger": "openal_source_create", "contents": "openal_source_create(${1:oid})" }, + { "trigger": "openal_source_destroy", "contents": "openal_source_destroy(${1:source})" }, + { "trigger": "openal_source_get", "contents": "openal_source_get(${1:source}, ${2:property})" }, + { "trigger": "openal_source_pause", "contents": "openal_source_pause(${1:source})" }, + { "trigger": "openal_source_play", "contents": "openal_source_play(${1:source})" }, + { "trigger": "openal_source_rewind", "contents": "openal_source_rewind(${1:source})" }, + { "trigger": "openal_source_set", "contents": "openal_source_set(${1:source}, ${2:property}, ${3:setting})" }, + { "trigger": "openal_source_stop", "contents": "openal_source_stop(${1:source})" }, + { "trigger": "openal_stream", "contents": "openal_stream(${1:source}, ${2:format}, ${3:rate})" }, + { "trigger": "opendir", "contents": "opendir(${1:path})" }, + { "trigger": "openlog", "contents": "openlog(${1:ident}, ${2:option}, ${3:facility})" }, + { "trigger": "openssl_csr_export", "contents": "openssl_csr_export(${1:csr}, ${2:out})" }, + { "trigger": "openssl_csr_export_to_file", "contents": "openssl_csr_export_to_file(${1:csr}, ${2:outfilename})" }, + { "trigger": "openssl_csr_get_public_key", "contents": "openssl_csr_get_public_key(${1:csr})" }, + { "trigger": "openssl_csr_get_subject", "contents": "openssl_csr_get_subject(${1:csr})" }, + { "trigger": "openssl_csr_new", "contents": "openssl_csr_new(${1:dn}, ${2:privkey})" }, + { "trigger": "openssl_csr_sign", "contents": "openssl_csr_sign(${1:csr}, ${2:cacert}, ${3:priv_key}, ${4:days})" }, + { "trigger": "openssl_decrypt", "contents": "openssl_decrypt(${1:data}, ${2:method}, ${3:password})" }, + { "trigger": "openssl_dh_compute_key", "contents": "openssl_dh_compute_key(${1:pub_key}, ${2:dh_key})" }, + { "trigger": "openssl_digest", "contents": "openssl_digest(${1:data}, ${2:method})" }, + { "trigger": "openssl_encrypt", "contents": "openssl_encrypt(${1:data}, ${2:method}, ${3:password})" }, + { "trigger": "openssl_error_string", "contents": "openssl_error_string(${1:oid})" }, + { "trigger": "openssl_free_key", "contents": "openssl_free_key(${1:key_identifier})" }, + { "trigger": "openssl_get_cipher_methods", "contents": "openssl_get_cipher_methods()" }, + { "trigger": "openssl_get_md_methods", "contents": "openssl_get_md_methods()" }, + { "trigger": "openssl_get_privatekey", "contents": "openssl_get_privatekey()" }, + { "trigger": "openssl_get_publickey", "contents": "openssl_get_publickey()" }, + { "trigger": "openssl_open", "contents": "openssl_open(${1:sealed_data}, ${2:open_data}, ${3:env_key}, ${4:priv_key_id})" }, + { "trigger": "openssl_pkcs12_export", "contents": "openssl_pkcs12_export(${1:x509}, ${2:out}, ${3:priv_key}, ${4:pass})" }, + { "trigger": "openssl_pkcs12_export_to_file", "contents": "openssl_pkcs12_export_to_file(${1:x509}, ${2:filename}, ${3:priv_key}, ${4:pass})" }, + { "trigger": "openssl_pkcs12_read", "contents": "openssl_pkcs12_read(${1:pkcs12}, ${2:certs}, ${3:pass})" }, + { "trigger": "openssl_pkcs7_decrypt", "contents": "openssl_pkcs7_decrypt(${1:infilename}, ${2:outfilename}, ${3:recipcert})" }, + { "trigger": "openssl_pkcs7_encrypt", "contents": "openssl_pkcs7_encrypt(${1:infile}, ${2:outfile}, ${3:recipcerts}, ${4:headers})" }, + { "trigger": "openssl_pkcs7_sign", "contents": "openssl_pkcs7_sign(${1:infilename}, ${2:outfilename}, ${3:signcert}, ${4:privkey}, ${5:headers})" }, + { "trigger": "openssl_pkcs7_verify", "contents": "openssl_pkcs7_verify(${1:filename}, ${2:flags})" }, + { "trigger": "openssl_pkey_export", "contents": "openssl_pkey_export(${1:key}, ${2:out})" }, + { "trigger": "openssl_pkey_export_to_file", "contents": "openssl_pkey_export_to_file(${1:key}, ${2:outfilename})" }, + { "trigger": "openssl_pkey_free", "contents": "openssl_pkey_free(${1:key})" }, + { "trigger": "openssl_pkey_get_details", "contents": "openssl_pkey_get_details(${1:key})" }, + { "trigger": "openssl_pkey_get_private", "contents": "openssl_pkey_get_private(${1:key})" }, + { "trigger": "openssl_pkey_get_public", "contents": "openssl_pkey_get_public(${1:certificate})" }, + { "trigger": "openssl_pkey_new", "contents": "openssl_pkey_new()" }, + { "trigger": "openssl_private_decrypt", "contents": "openssl_private_decrypt(${1:data}, ${2:decrypted}, ${3:key})" }, + { "trigger": "openssl_private_encrypt", "contents": "openssl_private_encrypt(${1:data}, ${2:crypted}, ${3:key})" }, + { "trigger": "openssl_public_decrypt", "contents": "openssl_public_decrypt(${1:data}, ${2:decrypted}, ${3:key})" }, + { "trigger": "openssl_public_encrypt", "contents": "openssl_public_encrypt(${1:data}, ${2:crypted}, ${3:key})" }, + { "trigger": "openssl_random_pseudo_bytes", "contents": "openssl_random_pseudo_bytes(${1:length})" }, + { "trigger": "openssl_seal", "contents": "openssl_seal(${1:data}, ${2:sealed_data}, ${3:env_keys}, ${4:pub_key_ids})" }, + { "trigger": "openssl_sign", "contents": "openssl_sign(${1:data}, ${2:signature}, ${3:priv_key_id})" }, + { "trigger": "openssl_verify", "contents": "openssl_verify(${1:data}, ${2:signature}, ${3:pub_key_id})" }, + { "trigger": "openssl_x509_check_private_key", "contents": "openssl_x509_check_private_key(${1:cert}, ${2:key})" }, + { "trigger": "openssl_x509_checkpurpose", "contents": "openssl_x509_checkpurpose(${1:x509cert}, ${2:purpose})" }, + { "trigger": "openssl_x509_export", "contents": "openssl_x509_export(${1:x509}, ${2:output})" }, + { "trigger": "openssl_x509_export_to_file", "contents": "openssl_x509_export_to_file(${1:x509}, ${2:outfilename})" }, + { "trigger": "openssl_x509_free", "contents": "openssl_x509_free(${1:x509cert})" }, + { "trigger": "openssl_x509_parse", "contents": "openssl_x509_parse(${1:x509cert})" }, + { "trigger": "openssl_x509_read", "contents": "openssl_x509_read(${1:x509certdata})" }, + { "trigger": "ord", "contents": "ord(${1:string})" }, + { "trigger": "output_add_rewrite_var", "contents": "output_add_rewrite_var(${1:name}, ${2:value})" }, + { "trigger": "output_reset_rewrite_vars", "contents": "output_reset_rewrite_vars(${1:oid})" }, + { "trigger": "overload", "contents": "overload(${1:class_name})" }, + { "trigger": "override_function", "contents": "override_function(${1:function_name}, ${2:function_args}, ${3:function_code})" }, + { "trigger": "ovrimos_close", "contents": "ovrimos_close(${1:connection})" }, + { "trigger": "ovrimos_commit", "contents": "ovrimos_commit(${1:connection_id})" }, + { "trigger": "ovrimos_connect", "contents": "ovrimos_connect(${1:host}, ${2:dborport}, ${3:user}, ${4:password})" }, + { "trigger": "ovrimos_cursor", "contents": "ovrimos_cursor(${1:result_id})" }, + { "trigger": "ovrimos_exec", "contents": "ovrimos_exec(${1:connection_id}, ${2:query})" }, + { "trigger": "ovrimos_execute", "contents": "ovrimos_execute(${1:result_id})" }, + { "trigger": "ovrimos_fetch_into", "contents": "ovrimos_fetch_into(${1:result_id}, ${2:result_array})" }, + { "trigger": "ovrimos_fetch_row", "contents": "ovrimos_fetch_row(${1:result_id})" }, + { "trigger": "ovrimos_field_len", "contents": "ovrimos_field_len(${1:result_id}, ${2:field_number})" }, + { "trigger": "ovrimos_field_name", "contents": "ovrimos_field_name(${1:result_id}, ${2:field_number})" }, + { "trigger": "ovrimos_field_num", "contents": "ovrimos_field_num(${1:result_id}, ${2:field_name})" }, + { "trigger": "ovrimos_field_type", "contents": "ovrimos_field_type(${1:result_id}, ${2:field_number})" }, + { "trigger": "ovrimos_free_result", "contents": "ovrimos_free_result(${1:result_id})" }, + { "trigger": "ovrimos_longreadlen", "contents": "ovrimos_longreadlen(${1:result_id}, ${2:length})" }, + { "trigger": "ovrimos_num_fields", "contents": "ovrimos_num_fields(${1:result_id})" }, + { "trigger": "ovrimos_num_rows", "contents": "ovrimos_num_rows(${1:result_id})" }, + { "trigger": "ovrimos_prepare", "contents": "ovrimos_prepare(${1:connection_id}, ${2:query})" }, + { "trigger": "ovrimos_result", "contents": "ovrimos_result(${1:result_id}, ${2:field})" }, + { "trigger": "ovrimos_result_all", "contents": "ovrimos_result_all(${1:result_id})" }, + { "trigger": "ovrimos_rollback", "contents": "ovrimos_rollback(${1:connection_id})" }, + { "trigger": "pack", "contents": "pack(${1:format})" }, + { "trigger": "parse_ini_file", "contents": "parse_ini_file(${1:filename})" }, + { "trigger": "parse_ini_string", "contents": "parse_ini_string(${1:ini})" }, + { "trigger": "parse_str", "contents": "parse_str(${1:str})" }, + { "trigger": "parse_url", "contents": "parse_url(${1:url})" }, + { "trigger": "parsekit_compile_file", "contents": "parsekit_compile_file(${1:filename})" }, + { "trigger": "parsekit_compile_string", "contents": "parsekit_compile_string(${1:phpcode})" }, + { "trigger": "parsekit_func_arginfo", "contents": "parsekit_func_arginfo(${1:function})" }, + { "trigger": "passthru", "contents": "passthru(${1:command})" }, + { "trigger": "pathinfo", "contents": "pathinfo(${1:path})" }, + { "trigger": "pclose", "contents": "pclose(${1:handle})" }, + { "trigger": "pcntl_alarm", "contents": "pcntl_alarm(${1:seconds})" }, + { "trigger": "pcntl_exec", "contents": "pcntl_exec(${1:path})" }, + { "trigger": "pcntl_fork", "contents": "pcntl_fork(${1:oid})" }, + { "trigger": "pcntl_getpriority", "contents": "pcntl_getpriority()" }, + { "trigger": "pcntl_setpriority", "contents": "pcntl_setpriority(${1:priority})" }, + { "trigger": "pcntl_signal", "contents": "pcntl_signal(${1:signo}, ${2:handler})" }, + { "trigger": "pcntl_signal_dispatch", "contents": "pcntl_signal_dispatch(${1:oid})" }, + { "trigger": "pcntl_sigprocmask", "contents": "pcntl_sigprocmask(${1:how}, ${2:set})" }, + { "trigger": "pcntl_sigtimedwait", "contents": "pcntl_sigtimedwait(${1:set})" }, + { "trigger": "pcntl_sigwaitinfo", "contents": "pcntl_sigwaitinfo(${1:set})" }, + { "trigger": "pcntl_wait", "contents": "pcntl_wait(${1:status})" }, + { "trigger": "pcntl_waitpid", "contents": "pcntl_waitpid(${1:pid}, ${2:status})" }, + { "trigger": "pcntl_wexitstatus", "contents": "pcntl_wexitstatus(${1:status})" }, + { "trigger": "pcntl_wifexited", "contents": "pcntl_wifexited(${1:status})" }, + { "trigger": "pcntl_wifsignaled", "contents": "pcntl_wifsignaled(${1:status})" }, + { "trigger": "pcntl_wifstopped", "contents": "pcntl_wifstopped(${1:status})" }, + { "trigger": "pcntl_wstopsig", "contents": "pcntl_wstopsig(${1:status})" }, + { "trigger": "pcntl_wtermsig", "contents": "pcntl_wtermsig(${1:status})" }, + { "trigger": "PDF_activate_item", "contents": "PDF_activate_item(${1:pdfdoc}, ${2:id})" }, + { "trigger": "PDF_add_annotation", "contents": "PDF_add_annotation()" }, + { "trigger": "PDF_add_bookmark", "contents": "PDF_add_bookmark()" }, + { "trigger": "PDF_add_launchlink", "contents": "PDF_add_launchlink(${1:pdfdoc}, ${2:llx}, ${3:lly}, ${4:urx}, ${5:ury}, ${6:filename})" }, + { "trigger": "PDF_add_locallink", "contents": "PDF_add_locallink(${1:pdfdoc}, ${2:lowerleftx}, ${3:lowerlefty}, ${4:upperrightx}, ${5:upperrighty}, ${6:page}, ${7:dest})" }, + { "trigger": "PDF_add_nameddest", "contents": "PDF_add_nameddest(${1:pdfdoc}, ${2:name}, ${3:optlist})" }, + { "trigger": "PDF_add_note", "contents": "PDF_add_note(${1:pdfdoc}, ${2:llx}, ${3:lly}, ${4:urx}, ${5:ury}, ${6:contents}, ${7:title}, ${8:icon}, ${9:open})" }, + { "trigger": "PDF_add_outline", "contents": "PDF_add_outline()" }, + { "trigger": "PDF_add_pdflink", "contents": "PDF_add_pdflink(${1:pdfdoc}, ${2:bottom_left_x}, ${3:bottom_left_y}, ${4:up_right_x}, ${5:up_right_y}, ${6:filename}, ${7:page}, ${8:dest})" }, + { "trigger": "PDF_add_table_cell", "contents": "PDF_add_table_cell(${1:pdfdoc}, ${2:table}, ${3:column}, ${4:row}, ${5:text}, ${6:optlist})" }, + { "trigger": "PDF_add_textflow", "contents": "PDF_add_textflow(${1:pdfdoc}, ${2:textflow}, ${3:text}, ${4:optlist})" }, + { "trigger": "PDF_add_thumbnail", "contents": "PDF_add_thumbnail(${1:pdfdoc}, ${2:image})" }, + { "trigger": "PDF_add_weblink", "contents": "PDF_add_weblink(${1:pdfdoc}, ${2:lowerleftx}, ${3:lowerlefty}, ${4:upperrightx}, ${5:upperrighty}, ${6:url})" }, + { "trigger": "PDF_arc", "contents": "PDF_arc(${1:p}, ${2:x}, ${3:y}, ${4:r}, ${5:alpha}, ${6:beta})" }, + { "trigger": "PDF_arcn", "contents": "PDF_arcn(${1:p}, ${2:x}, ${3:y}, ${4:r}, ${5:alpha}, ${6:beta})" }, + { "trigger": "PDF_attach_file", "contents": "PDF_attach_file(${1:pdfdoc}, ${2:llx}, ${3:lly}, ${4:urx}, ${5:ury}, ${6:filename}, ${7:description}, ${8:author}, ${9:mimetype}, ${10:icon})" }, + { "trigger": "PDF_begin_document", "contents": "PDF_begin_document(${1:pdfdoc}, ${2:filename}, ${3:optlist})" }, + { "trigger": "PDF_begin_font", "contents": "PDF_begin_font(${1:pdfdoc}, ${2:filename}, ${3:a}, ${4:b}, ${5:c}, ${6:d}, ${7:e}, ${8:f}, ${9:optlist})" }, + { "trigger": "PDF_begin_glyph", "contents": "PDF_begin_glyph(${1:pdfdoc}, ${2:glyphname}, ${3:wx}, ${4:llx}, ${5:lly}, ${6:urx}, ${7:ury})" }, + { "trigger": "PDF_begin_item", "contents": "PDF_begin_item(${1:pdfdoc}, ${2:tag}, ${3:optlist})" }, + { "trigger": "PDF_begin_layer", "contents": "PDF_begin_layer(${1:pdfdoc}, ${2:layer})" }, + { "trigger": "PDF_begin_page", "contents": "PDF_begin_page(${1:pdfdoc}, ${2:width}, ${3:height})" }, + { "trigger": "PDF_begin_page_ext", "contents": "PDF_begin_page_ext(${1:pdfdoc}, ${2:width}, ${3:height}, ${4:optlist})" }, + { "trigger": "PDF_begin_pattern", "contents": "PDF_begin_pattern(${1:pdfdoc}, ${2:width}, ${3:height}, ${4:xstep}, ${5:ystep}, ${6:painttype})" }, + { "trigger": "PDF_begin_template", "contents": "PDF_begin_template(${1:pdfdoc}, ${2:width}, ${3:height})" }, + { "trigger": "PDF_begin_template_ext", "contents": "PDF_begin_template_ext(${1:pdfdoc}, ${2:width}, ${3:height}, ${4:optlist})" }, + { "trigger": "PDF_circle", "contents": "PDF_circle(${1:pdfdoc}, ${2:x}, ${3:y}, ${4:r})" }, + { "trigger": "PDF_clip", "contents": "PDF_clip(${1:p})" }, + { "trigger": "PDF_close", "contents": "PDF_close(${1:p})" }, + { "trigger": "PDF_close_image", "contents": "PDF_close_image(${1:p}, ${2:image})" }, + { "trigger": "PDF_close_pdi", "contents": "PDF_close_pdi(${1:p}, ${2:doc})" }, + { "trigger": "PDF_close_pdi_page", "contents": "PDF_close_pdi_page(${1:p}, ${2:page})" }, + { "trigger": "PDF_closepath", "contents": "PDF_closepath(${1:p})" }, + { "trigger": "PDF_closepath_fill_stroke", "contents": "PDF_closepath_fill_stroke(${1:p})" }, + { "trigger": "PDF_closepath_stroke", "contents": "PDF_closepath_stroke(${1:p})" }, + { "trigger": "PDF_concat", "contents": "PDF_concat(${1:p}, ${2:a}, ${3:b}, ${4:c}, ${5:d}, ${6:e}, ${7:f})" }, + { "trigger": "PDF_continue_text", "contents": "PDF_continue_text(${1:p}, ${2:text})" }, + { "trigger": "PDF_create_3dview", "contents": "PDF_create_3dview(${1:pdfdoc}, ${2:username}, ${3:optlist})" }, + { "trigger": "PDF_create_action", "contents": "PDF_create_action(${1:pdfdoc}, ${2:type}, ${3:optlist})" }, + { "trigger": "PDF_create_annotation", "contents": "PDF_create_annotation(${1:pdfdoc}, ${2:llx}, ${3:lly}, ${4:urx}, ${5:ury}, ${6:type}, ${7:optlist})" }, + { "trigger": "PDF_create_bookmark", "contents": "PDF_create_bookmark(${1:pdfdoc}, ${2:text}, ${3:optlist})" }, + { "trigger": "PDF_create_field", "contents": "PDF_create_field(${1:pdfdoc}, ${2:llx}, ${3:lly}, ${4:urx}, ${5:ury}, ${6:name}, ${7:type}, ${8:optlist})" }, + { "trigger": "PDF_create_fieldgroup", "contents": "PDF_create_fieldgroup(${1:pdfdoc}, ${2:name}, ${3:optlist})" }, + { "trigger": "PDF_create_gstate", "contents": "PDF_create_gstate(${1:pdfdoc}, ${2:optlist})" }, + { "trigger": "PDF_create_pvf", "contents": "PDF_create_pvf(${1:pdfdoc}, ${2:filename}, ${3:data}, ${4:optlist})" }, + { "trigger": "PDF_create_textflow", "contents": "PDF_create_textflow(${1:pdfdoc}, ${2:text}, ${3:optlist})" }, + { "trigger": "PDF_curveto", "contents": "PDF_curveto(${1:p}, ${2:x1}, ${3:y1}, ${4:x2}, ${5:y2}, ${6:x3}, ${7:y3})" }, + { "trigger": "PDF_define_layer", "contents": "PDF_define_layer(${1:pdfdoc}, ${2:name}, ${3:optlist})" }, + { "trigger": "PDF_delete", "contents": "PDF_delete(${1:pdfdoc})" }, + { "trigger": "PDF_delete_pvf", "contents": "PDF_delete_pvf(${1:pdfdoc}, ${2:filename})" }, + { "trigger": "PDF_delete_table", "contents": "PDF_delete_table(${1:pdfdoc}, ${2:table}, ${3:optlist})" }, + { "trigger": "PDF_delete_textflow", "contents": "PDF_delete_textflow(${1:pdfdoc}, ${2:textflow})" }, + { "trigger": "PDF_encoding_set_char", "contents": "PDF_encoding_set_char(${1:pdfdoc}, ${2:encoding}, ${3:slot}, ${4:glyphname}, ${5:uv})" }, + { "trigger": "PDF_end_document", "contents": "PDF_end_document(${1:pdfdoc}, ${2:optlist})" }, + { "trigger": "PDF_end_font", "contents": "PDF_end_font(${1:pdfdoc})" }, + { "trigger": "PDF_end_glyph", "contents": "PDF_end_glyph(${1:pdfdoc})" }, + { "trigger": "PDF_end_item", "contents": "PDF_end_item(${1:pdfdoc}, ${2:id})" }, + { "trigger": "PDF_end_layer", "contents": "PDF_end_layer(${1:pdfdoc})" }, + { "trigger": "PDF_end_page", "contents": "PDF_end_page(${1:p})" }, + { "trigger": "PDF_end_page_ext", "contents": "PDF_end_page_ext(${1:pdfdoc}, ${2:optlist})" }, + { "trigger": "PDF_end_pattern", "contents": "PDF_end_pattern(${1:p})" }, + { "trigger": "PDF_end_template", "contents": "PDF_end_template(${1:p})" }, + { "trigger": "PDF_endpath", "contents": "PDF_endpath(${1:p})" }, + { "trigger": "PDF_fill", "contents": "PDF_fill(${1:p})" }, + { "trigger": "PDF_fill_imageblock", "contents": "PDF_fill_imageblock(${1:pdfdoc}, ${2:page}, ${3:blockname}, ${4:image}, ${5:optlist})" }, + { "trigger": "PDF_fill_pdfblock", "contents": "PDF_fill_pdfblock(${1:pdfdoc}, ${2:page}, ${3:blockname}, ${4:contents}, ${5:optlist})" }, + { "trigger": "PDF_fill_stroke", "contents": "PDF_fill_stroke(${1:p})" }, + { "trigger": "PDF_fill_textblock", "contents": "PDF_fill_textblock(${1:pdfdoc}, ${2:page}, ${3:blockname}, ${4:text}, ${5:optlist})" }, + { "trigger": "PDF_findfont", "contents": "PDF_findfont(${1:p}, ${2:fontname}, ${3:encoding}, ${4:embed})" }, + { "trigger": "PDF_fit_image", "contents": "PDF_fit_image(${1:pdfdoc}, ${2:image}, ${3:x}, ${4:y}, ${5:optlist})" }, + { "trigger": "PDF_fit_pdi_page", "contents": "PDF_fit_pdi_page(${1:pdfdoc}, ${2:page}, ${3:x}, ${4:y}, ${5:optlist})" }, + { "trigger": "PDF_fit_table", "contents": "PDF_fit_table(${1:pdfdoc}, ${2:table}, ${3:llx}, ${4:lly}, ${5:urx}, ${6:ury}, ${7:optlist})" }, + { "trigger": "PDF_fit_textflow", "contents": "PDF_fit_textflow(${1:pdfdoc}, ${2:textflow}, ${3:llx}, ${4:lly}, ${5:urx}, ${6:ury}, ${7:optlist})" }, + { "trigger": "PDF_fit_textline", "contents": "PDF_fit_textline(${1:pdfdoc}, ${2:text}, ${3:x}, ${4:y}, ${5:optlist})" }, + { "trigger": "PDF_get_apiname", "contents": "PDF_get_apiname(${1:pdfdoc})" }, + { "trigger": "PDF_get_buffer", "contents": "PDF_get_buffer(${1:p})" }, + { "trigger": "PDF_get_errmsg", "contents": "PDF_get_errmsg(${1:pdfdoc})" }, + { "trigger": "PDF_get_errnum", "contents": "PDF_get_errnum(${1:pdfdoc})" }, + { "trigger": "PDF_get_font", "contents": "PDF_get_font()" }, + { "trigger": "PDF_get_fontname", "contents": "PDF_get_fontname()" }, + { "trigger": "PDF_get_fontsize", "contents": "PDF_get_fontsize()" }, + { "trigger": "PDF_get_image_height", "contents": "PDF_get_image_height()" }, + { "trigger": "PDF_get_image_width", "contents": "PDF_get_image_width()" }, + { "trigger": "PDF_get_majorversion", "contents": "PDF_get_majorversion(${1:oid})" }, + { "trigger": "PDF_get_minorversion", "contents": "PDF_get_minorversion(${1:oid})" }, + { "trigger": "PDF_get_parameter", "contents": "PDF_get_parameter(${1:p}, ${2:key}, ${3:modifier})" }, + { "trigger": "PDF_get_pdi_parameter", "contents": "PDF_get_pdi_parameter(${1:p}, ${2:key}, ${3:doc}, ${4:page}, ${5:reserved})" }, + { "trigger": "PDF_get_pdi_value", "contents": "PDF_get_pdi_value(${1:p}, ${2:key}, ${3:doc}, ${4:page}, ${5:reserved})" }, + { "trigger": "PDF_get_value", "contents": "PDF_get_value(${1:p}, ${2:key}, ${3:modifier})" }, + { "trigger": "PDF_info_font", "contents": "PDF_info_font(${1:pdfdoc}, ${2:font}, ${3:keyword}, ${4:optlist})" }, + { "trigger": "PDF_info_matchbox", "contents": "PDF_info_matchbox(${1:pdfdoc}, ${2:boxname}, ${3:num}, ${4:keyword})" }, + { "trigger": "PDF_info_table", "contents": "PDF_info_table(${1:pdfdoc}, ${2:table}, ${3:keyword})" }, + { "trigger": "PDF_info_textflow", "contents": "PDF_info_textflow(${1:pdfdoc}, ${2:textflow}, ${3:keyword})" }, + { "trigger": "PDF_info_textline", "contents": "PDF_info_textline(${1:pdfdoc}, ${2:text}, ${3:keyword}, ${4:optlist})" }, + { "trigger": "PDF_initgraphics", "contents": "PDF_initgraphics(${1:p})" }, + { "trigger": "PDF_lineto", "contents": "PDF_lineto(${1:p}, ${2:x}, ${3:y})" }, + { "trigger": "PDF_load_3ddata", "contents": "PDF_load_3ddata(${1:pdfdoc}, ${2:filename}, ${3:optlist})" }, + { "trigger": "PDF_load_font", "contents": "PDF_load_font(${1:pdfdoc}, ${2:fontname}, ${3:encoding}, ${4:optlist})" }, + { "trigger": "PDF_load_iccprofile", "contents": "PDF_load_iccprofile(${1:pdfdoc}, ${2:profilename}, ${3:optlist})" }, + { "trigger": "PDF_load_image", "contents": "PDF_load_image(${1:pdfdoc}, ${2:imagetype}, ${3:filename}, ${4:optlist})" }, + { "trigger": "PDF_makespotcolor", "contents": "PDF_makespotcolor(${1:p}, ${2:spotname})" }, + { "trigger": "PDF_moveto", "contents": "PDF_moveto(${1:p}, ${2:x}, ${3:y})" }, + { "trigger": "PDF_new", "contents": "PDF_new(${1:oid})" }, + { "trigger": "PDF_open_ccitt", "contents": "PDF_open_ccitt(${1:pdfdoc}, ${2:filename}, ${3:width}, ${4:height}, ${5:BitReverse}, ${6:k}, ${7:Blackls1})" }, + { "trigger": "PDF_open_file", "contents": "PDF_open_file(${1:p}, ${2:filename})" }, + { "trigger": "PDF_open_gif", "contents": "PDF_open_gif()" }, + { "trigger": "PDF_open_image", "contents": "PDF_open_image(${1:p}, ${2:imagetype}, ${3:source}, ${4:data}, ${5:length}, ${6:width}, ${7:height}, ${8:components}, ${9:bpc}, ${10:params})" }, + { "trigger": "PDF_open_image_file", "contents": "PDF_open_image_file(${1:p}, ${2:imagetype}, ${3:filename}, ${4:stringparam}, ${5:intparam})" }, + { "trigger": "PDF_open_jpeg", "contents": "PDF_open_jpeg()" }, + { "trigger": "PDF_open_memory_image", "contents": "PDF_open_memory_image(${1:p}, ${2:image})" }, + { "trigger": "PDF_open_pdi", "contents": "PDF_open_pdi(${1:pdfdoc}, ${2:filename}, ${3:optlist}, ${4:len})" }, + { "trigger": "PDF_open_pdi_document", "contents": "PDF_open_pdi_document(${1:p}, ${2:filename}, ${3:optlist})" }, + { "trigger": "PDF_open_pdi_page", "contents": "PDF_open_pdi_page(${1:p}, ${2:doc}, ${3:pagenumber}, ${4:optlist})" }, + { "trigger": "PDF_open_tiff", "contents": "PDF_open_tiff()" }, + { "trigger": "PDF_pcos_get_number", "contents": "PDF_pcos_get_number(${1:p}, ${2:doc}, ${3:path})" }, + { "trigger": "PDF_pcos_get_stream", "contents": "PDF_pcos_get_stream(${1:p}, ${2:doc}, ${3:optlist}, ${4:path})" }, + { "trigger": "PDF_pcos_get_string", "contents": "PDF_pcos_get_string(${1:p}, ${2:doc}, ${3:path})" }, + { "trigger": "PDF_place_image", "contents": "PDF_place_image(${1:pdfdoc}, ${2:image}, ${3:x}, ${4:y}, ${5:scale})" }, + { "trigger": "PDF_place_pdi_page", "contents": "PDF_place_pdi_page(${1:pdfdoc}, ${2:page}, ${3:x}, ${4:y}, ${5:sx}, ${6:sy})" }, + { "trigger": "PDF_process_pdi", "contents": "PDF_process_pdi(${1:pdfdoc}, ${2:doc}, ${3:page}, ${4:optlist})" }, + { "trigger": "PDF_rect", "contents": "PDF_rect(${1:p}, ${2:x}, ${3:y}, ${4:width}, ${5:height})" }, + { "trigger": "PDF_restore", "contents": "PDF_restore(${1:p})" }, + { "trigger": "PDF_resume_page", "contents": "PDF_resume_page(${1:pdfdoc}, ${2:optlist})" }, + { "trigger": "PDF_rotate", "contents": "PDF_rotate(${1:p}, ${2:phi})" }, + { "trigger": "PDF_save", "contents": "PDF_save(${1:p})" }, + { "trigger": "PDF_scale", "contents": "PDF_scale(${1:p}, ${2:sx}, ${3:sy})" }, + { "trigger": "PDF_set_border_color", "contents": "PDF_set_border_color(${1:p}, ${2:red}, ${3:green}, ${4:blue})" }, + { "trigger": "PDF_set_border_dash", "contents": "PDF_set_border_dash(${1:pdfdoc}, ${2:black}, ${3:white})" }, + { "trigger": "PDF_set_border_style", "contents": "PDF_set_border_style(${1:pdfdoc}, ${2:style}, ${3:width})" }, + { "trigger": "PDF_set_char_spacing", "contents": "PDF_set_char_spacing()" }, + { "trigger": "PDF_set_duration", "contents": "PDF_set_duration()" }, + { "trigger": "PDF_set_gstate", "contents": "PDF_set_gstate(${1:pdfdoc}, ${2:gstate})" }, + { "trigger": "PDF_set_horiz_scaling", "contents": "PDF_set_horiz_scaling()" }, + { "trigger": "PDF_set_info", "contents": "PDF_set_info(${1:p}, ${2:key}, ${3:value})" }, + { "trigger": "PDF_set_info_author", "contents": "PDF_set_info_author()" }, + { "trigger": "PDF_set_info_creator", "contents": "PDF_set_info_creator()" }, + { "trigger": "PDF_set_info_keywords", "contents": "PDF_set_info_keywords()" }, + { "trigger": "PDF_set_info_subject", "contents": "PDF_set_info_subject()" }, + { "trigger": "PDF_set_info_title", "contents": "PDF_set_info_title()" }, + { "trigger": "PDF_set_layer_dependency", "contents": "PDF_set_layer_dependency(${1:pdfdoc}, ${2:type}, ${3:optlist})" }, + { "trigger": "PDF_set_leading", "contents": "PDF_set_leading()" }, + { "trigger": "PDF_set_parameter", "contents": "PDF_set_parameter(${1:p}, ${2:key}, ${3:value})" }, + { "trigger": "PDF_set_text_matrix", "contents": "PDF_set_text_matrix()" }, + { "trigger": "PDF_set_text_pos", "contents": "PDF_set_text_pos(${1:p}, ${2:x}, ${3:y})" }, + { "trigger": "PDF_set_text_rendering", "contents": "PDF_set_text_rendering()" }, + { "trigger": "PDF_set_text_rise", "contents": "PDF_set_text_rise()" }, + { "trigger": "PDF_set_value", "contents": "PDF_set_value(${1:p}, ${2:key}, ${3:value})" }, + { "trigger": "PDF_set_word_spacing", "contents": "PDF_set_word_spacing()" }, + { "trigger": "PDF_setcolor", "contents": "PDF_setcolor(${1:p}, ${2:fstype}, ${3:colorspace}, ${4:c1}, ${5:c2}, ${6:c3}, ${7:c4})" }, + { "trigger": "PDF_setdash", "contents": "PDF_setdash(${1:pdfdoc}, ${2:b}, ${3:w})" }, + { "trigger": "PDF_setdashpattern", "contents": "PDF_setdashpattern(${1:pdfdoc}, ${2:optlist})" }, + { "trigger": "PDF_setflat", "contents": "PDF_setflat(${1:pdfdoc}, ${2:flatness})" }, + { "trigger": "PDF_setfont", "contents": "PDF_setfont(${1:pdfdoc}, ${2:font}, ${3:fontsize})" }, + { "trigger": "PDF_setgray", "contents": "PDF_setgray(${1:p}, ${2:g})" }, + { "trigger": "PDF_setgray_fill", "contents": "PDF_setgray_fill(${1:p}, ${2:g})" }, + { "trigger": "PDF_setgray_stroke", "contents": "PDF_setgray_stroke(${1:p}, ${2:g})" }, + { "trigger": "PDF_setlinecap", "contents": "PDF_setlinecap(${1:p}, ${2:linecap})" }, + { "trigger": "PDF_setlinejoin", "contents": "PDF_setlinejoin(${1:p}, ${2:value})" }, + { "trigger": "PDF_setlinewidth", "contents": "PDF_setlinewidth(${1:p}, ${2:width})" }, + { "trigger": "PDF_setmatrix", "contents": "PDF_setmatrix(${1:p}, ${2:a}, ${3:b}, ${4:c}, ${5:d}, ${6:e}, ${7:f})" }, + { "trigger": "PDF_setmiterlimit", "contents": "PDF_setmiterlimit(${1:pdfdoc}, ${2:miter})" }, + { "trigger": "PDF_setpolydash", "contents": "PDF_setpolydash()" }, + { "trigger": "PDF_setrgbcolor", "contents": "PDF_setrgbcolor(${1:p}, ${2:red}, ${3:green}, ${4:blue})" }, + { "trigger": "PDF_setrgbcolor_fill", "contents": "PDF_setrgbcolor_fill(${1:p}, ${2:red}, ${3:green}, ${4:blue})" }, + { "trigger": "PDF_setrgbcolor_stroke", "contents": "PDF_setrgbcolor_stroke(${1:p}, ${2:red}, ${3:green}, ${4:blue})" }, + { "trigger": "PDF_shading", "contents": "PDF_shading(${1:pdfdoc}, ${2:shtype}, ${3:x0}, ${4:y0}, ${5:x1}, ${6:y1}, ${7:c1}, ${8:c2}, ${9:c3}, ${10:c4}, ${11:optlist})" }, + { "trigger": "PDF_shading_pattern", "contents": "PDF_shading_pattern(${1:pdfdoc}, ${2:shading}, ${3:optlist})" }, + { "trigger": "PDF_shfill", "contents": "PDF_shfill(${1:pdfdoc}, ${2:shading})" }, + { "trigger": "PDF_show", "contents": "PDF_show(${1:pdfdoc}, ${2:text})" }, + { "trigger": "PDF_show_boxed", "contents": "PDF_show_boxed(${1:p}, ${2:text}, ${3:left}, ${4:top}, ${5:width}, ${6:height}, ${7:mode}, ${8:feature})" }, + { "trigger": "PDF_show_xy", "contents": "PDF_show_xy(${1:p}, ${2:text}, ${3:x}, ${4:y})" }, + { "trigger": "PDF_skew", "contents": "PDF_skew(${1:p}, ${2:alpha}, ${3:beta})" }, + { "trigger": "PDF_stringwidth", "contents": "PDF_stringwidth(${1:p}, ${2:text}, ${3:font}, ${4:fontsize})" }, + { "trigger": "PDF_stroke", "contents": "PDF_stroke(${1:p})" }, + { "trigger": "PDF_suspend_page", "contents": "PDF_suspend_page(${1:pdfdoc}, ${2:optlist})" }, + { "trigger": "PDF_translate", "contents": "PDF_translate(${1:p}, ${2:tx}, ${3:ty})" }, + { "trigger": "PDF_utf16_to_utf8", "contents": "PDF_utf16_to_utf8(${1:pdfdoc}, ${2:utf16string})" }, + { "trigger": "PDF_utf32_to_utf16", "contents": "PDF_utf32_to_utf16(${1:pdfdoc}, ${2:utf32string}, ${3:ordering})" }, + { "trigger": "PDF_utf8_to_utf16", "contents": "PDF_utf8_to_utf16(${1:pdfdoc}, ${2:utf8string}, ${3:ordering})" }, + { "trigger": "pfsockopen", "contents": "pfsockopen(${1:hostname})" }, + { "trigger": "pg_affected_rows", "contents": "pg_affected_rows(${1:result})" }, + { "trigger": "pg_cancel_query", "contents": "pg_cancel_query(${1:connection})" }, + { "trigger": "pg_client_encoding", "contents": "pg_client_encoding()" }, + { "trigger": "pg_close", "contents": "pg_close()" }, + { "trigger": "pg_connect", "contents": "pg_connect(${1:connection_string})" }, + { "trigger": "pg_connection_busy", "contents": "pg_connection_busy(${1:connection})" }, + { "trigger": "pg_connection_reset", "contents": "pg_connection_reset(${1:connection})" }, + { "trigger": "pg_connection_status", "contents": "pg_connection_status(${1:connection})" }, + { "trigger": "pg_convert", "contents": "pg_convert(${1:connection}, ${2:table_name}, ${3:assoc_array})" }, + { "trigger": "pg_copy_from", "contents": "pg_copy_from(${1:connection}, ${2:table_name}, ${3:rows})" }, + { "trigger": "pg_copy_to", "contents": "pg_copy_to(${1:connection}, ${2:table_name})" }, + { "trigger": "pg_dbname", "contents": "pg_dbname()" }, + { "trigger": "pg_delete", "contents": "pg_delete(${1:connection}, ${2:table_name}, ${3:assoc_array})" }, + { "trigger": "pg_end_copy", "contents": "pg_end_copy()" }, + { "trigger": "pg_escape_bytea", "contents": "pg_escape_bytea()" }, + { "trigger": "pg_escape_string", "contents": "pg_escape_string()" }, + { "trigger": "pg_execute", "contents": "pg_execute()" }, + { "trigger": "pg_fetch_all", "contents": "pg_fetch_all(${1:result})" }, + { "trigger": "pg_fetch_all_columns", "contents": "pg_fetch_all_columns(${1:result})" }, + { "trigger": "pg_fetch_array", "contents": "pg_fetch_array(${1:result})" }, + { "trigger": "pg_fetch_assoc", "contents": "pg_fetch_assoc(${1:result})" }, + { "trigger": "pg_fetch_object", "contents": "pg_fetch_object(${1:result})" }, + { "trigger": "pg_fetch_result", "contents": "pg_fetch_result(${1:result}, ${2:row}, ${3:field})" }, + { "trigger": "pg_fetch_row", "contents": "pg_fetch_row(${1:result})" }, + { "trigger": "pg_field_is_null", "contents": "pg_field_is_null(${1:result}, ${2:row}, ${3:field})" }, + { "trigger": "pg_field_name", "contents": "pg_field_name(${1:result}, ${2:field_number})" }, + { "trigger": "pg_field_num", "contents": "pg_field_num(${1:result}, ${2:field_name})" }, + { "trigger": "pg_field_prtlen", "contents": "pg_field_prtlen(${1:result}, ${2:row_number}, ${3:field_name_or_number})" }, + { "trigger": "pg_field_size", "contents": "pg_field_size(${1:result}, ${2:field_number})" }, + { "trigger": "pg_field_table", "contents": "pg_field_table(${1:result}, ${2:field_number})" }, + { "trigger": "pg_field_type", "contents": "pg_field_type(${1:result}, ${2:field_number})" }, + { "trigger": "pg_field_type_oid", "contents": "pg_field_type_oid(${1:result}, ${2:field_number})" }, + { "trigger": "pg_free_result", "contents": "pg_free_result(${1:result})" }, + { "trigger": "pg_get_notify", "contents": "pg_get_notify(${1:connection})" }, + { "trigger": "pg_get_pid", "contents": "pg_get_pid(${1:connection})" }, + { "trigger": "pg_get_result", "contents": "pg_get_result()" }, + { "trigger": "pg_host", "contents": "pg_host()" }, + { "trigger": "pg_insert", "contents": "pg_insert(${1:connection}, ${2:table_name}, ${3:assoc_array})" }, + { "trigger": "pg_last_error", "contents": "pg_last_error()" }, + { "trigger": "pg_last_notice", "contents": "pg_last_notice(${1:connection})" }, + { "trigger": "pg_last_oid", "contents": "pg_last_oid(${1:result})" }, + { "trigger": "pg_lo_close", "contents": "pg_lo_close(${1:large_object})" }, + { "trigger": "pg_lo_create", "contents": "pg_lo_create()" }, + { "trigger": "pg_lo_export", "contents": "pg_lo_export()" }, + { "trigger": "pg_lo_import", "contents": "pg_lo_import()" }, + { "trigger": "pg_lo_open", "contents": "pg_lo_open(${1:connection}, ${2:oid}, ${3:mode})" }, + { "trigger": "pg_lo_read", "contents": "pg_lo_read(${1:large_object})" }, + { "trigger": "pg_lo_read_all", "contents": "pg_lo_read_all(${1:large_object})" }, + { "trigger": "pg_lo_seek", "contents": "pg_lo_seek(${1:large_object}, ${2:offset})" }, + { "trigger": "pg_lo_tell", "contents": "pg_lo_tell(${1:large_object})" }, + { "trigger": "pg_lo_unlink", "contents": "pg_lo_unlink(${1:connection}, ${2:oid})" }, + { "trigger": "pg_lo_write", "contents": "pg_lo_write(${1:large_object}, ${2:data})" }, + { "trigger": "pg_meta_data", "contents": "pg_meta_data(${1:connection}, ${2:table_name})" }, + { "trigger": "pg_num_fields", "contents": "pg_num_fields(${1:result})" }, + { "trigger": "pg_num_rows", "contents": "pg_num_rows(${1:result})" }, + { "trigger": "pg_options", "contents": "pg_options()" }, + { "trigger": "pg_parameter_status", "contents": "pg_parameter_status()" }, + { "trigger": "pg_pconnect", "contents": "pg_pconnect(${1:connection_string})" }, + { "trigger": "pg_ping", "contents": "pg_ping()" }, + { "trigger": "pg_port", "contents": "pg_port()" }, + { "trigger": "pg_prepare", "contents": "pg_prepare()" }, + { "trigger": "pg_put_line", "contents": "pg_put_line()" }, + { "trigger": "pg_query", "contents": "pg_query()" }, + { "trigger": "pg_query_params", "contents": "pg_query_params()" }, + { "trigger": "pg_result_error", "contents": "pg_result_error(${1:result})" }, + { "trigger": "pg_result_error_field", "contents": "pg_result_error_field(${1:result}, ${2:fieldcode})" }, + { "trigger": "pg_result_seek", "contents": "pg_result_seek(${1:result}, ${2:offset})" }, + { "trigger": "pg_result_status", "contents": "pg_result_status(${1:result})" }, + { "trigger": "pg_select", "contents": "pg_select(${1:connection}, ${2:table_name}, ${3:assoc_array})" }, + { "trigger": "pg_send_execute", "contents": "pg_send_execute(${1:connection}, ${2:stmtname}, ${3:params})" }, + { "trigger": "pg_send_prepare", "contents": "pg_send_prepare(${1:connection}, ${2:stmtname}, ${3:query})" }, + { "trigger": "pg_send_query", "contents": "pg_send_query(${1:connection}, ${2:query})" }, + { "trigger": "pg_send_query_params", "contents": "pg_send_query_params(${1:connection}, ${2:query}, ${3:params})" }, + { "trigger": "pg_set_client_encoding", "contents": "pg_set_client_encoding()" }, + { "trigger": "pg_set_error_verbosity", "contents": "pg_set_error_verbosity()" }, + { "trigger": "pg_trace", "contents": "pg_trace(${1:pathname})" }, + { "trigger": "pg_transaction_status", "contents": "pg_transaction_status(${1:connection})" }, + { "trigger": "pg_tty", "contents": "pg_tty()" }, + { "trigger": "pg_unescape_bytea", "contents": "pg_unescape_bytea(${1:data})" }, + { "trigger": "pg_untrace", "contents": "pg_untrace()" }, + { "trigger": "pg_update", "contents": "pg_update(${1:connection}, ${2:table_name}, ${3:data}, ${4:condition})" }, + { "trigger": "pg_version", "contents": "pg_version()" }, + { "trigger": "php_check_syntax", "contents": "php_check_syntax(${1:filename})" }, + { "trigger": "php_ini_loaded_file", "contents": "php_ini_loaded_file(${1:oid})" }, + { "trigger": "php_ini_scanned_files", "contents": "php_ini_scanned_files(${1:oid})" }, + { "trigger": "php_logo_guid", "contents": "php_logo_guid(${1:oid})" }, + { "trigger": "php_sapi_name", "contents": "php_sapi_name(${1:oid})" }, + { "trigger": "php_strip_whitespace", "contents": "php_strip_whitespace(${1:filename})" }, + { "trigger": "php_uname", "contents": "php_uname()" }, + { "trigger": "phpcredits", "contents": "phpcredits()" }, + { "trigger": "phpinfo", "contents": "phpinfo()" }, + { "trigger": "phpversion", "contents": "phpversion()" }, + { "trigger": "pi", "contents": "pi(${1:oid})" }, + { "trigger": "png2wbmp", "contents": "png2wbmp(${1:pngname}, ${2:wbmpname}, ${3:dest_height}, ${4:dest_width}, ${5:threshold})" }, + { "trigger": "popen", "contents": "popen(${1:command}, ${2:mode})" }, + { "trigger": "pos", "contents": "pos()" }, + { "trigger": "posix_access", "contents": "posix_access(${1:file})" }, + { "trigger": "posix_ctermid", "contents": "posix_ctermid(${1:oid})" }, + { "trigger": "posix_errno", "contents": "posix_errno()" }, + { "trigger": "posix_get_last_error", "contents": "posix_get_last_error(${1:oid})" }, + { "trigger": "posix_getcwd", "contents": "posix_getcwd(${1:oid})" }, + { "trigger": "posix_getegid", "contents": "posix_getegid(${1:oid})" }, + { "trigger": "posix_geteuid", "contents": "posix_geteuid(${1:oid})" }, + { "trigger": "posix_getgid", "contents": "posix_getgid(${1:oid})" }, + { "trigger": "posix_getgrgid", "contents": "posix_getgrgid(${1:gid})" }, + { "trigger": "posix_getgrnam", "contents": "posix_getgrnam(${1:name})" }, + { "trigger": "posix_getgroups", "contents": "posix_getgroups(${1:oid})" }, + { "trigger": "posix_getlogin", "contents": "posix_getlogin(${1:oid})" }, + { "trigger": "posix_getpgid", "contents": "posix_getpgid(${1:pid})" }, + { "trigger": "posix_getpgrp", "contents": "posix_getpgrp(${1:oid})" }, + { "trigger": "posix_getpid", "contents": "posix_getpid(${1:oid})" }, + { "trigger": "posix_getppid", "contents": "posix_getppid(${1:oid})" }, + { "trigger": "posix_getpwnam", "contents": "posix_getpwnam(${1:username})" }, + { "trigger": "posix_getpwuid", "contents": "posix_getpwuid(${1:uid})" }, + { "trigger": "posix_getrlimit", "contents": "posix_getrlimit(${1:oid})" }, + { "trigger": "posix_getsid", "contents": "posix_getsid(${1:pid})" }, + { "trigger": "posix_getuid", "contents": "posix_getuid(${1:oid})" }, + { "trigger": "posix_initgroups", "contents": "posix_initgroups(${1:name}, ${2:base_group_id})" }, + { "trigger": "posix_isatty", "contents": "posix_isatty(${1:fd})" }, + { "trigger": "posix_kill", "contents": "posix_kill(${1:pid}, ${2:sig})" }, + { "trigger": "posix_mkfifo", "contents": "posix_mkfifo(${1:pathname}, ${2:mode})" }, + { "trigger": "posix_mknod", "contents": "posix_mknod(${1:pathname}, ${2:mode})" }, + { "trigger": "posix_setegid", "contents": "posix_setegid(${1:gid})" }, + { "trigger": "posix_seteuid", "contents": "posix_seteuid(${1:uid})" }, + { "trigger": "posix_setgid", "contents": "posix_setgid(${1:gid})" }, + { "trigger": "posix_setpgid", "contents": "posix_setpgid(${1:pid}, ${2:pgid})" }, + { "trigger": "posix_setsid", "contents": "posix_setsid(${1:oid})" }, + { "trigger": "posix_setuid", "contents": "posix_setuid(${1:uid})" }, + { "trigger": "posix_strerror", "contents": "posix_strerror(${1:errno})" }, + { "trigger": "posix_times", "contents": "posix_times(${1:oid})" }, + { "trigger": "posix_ttyname", "contents": "posix_ttyname(${1:fd})" }, + { "trigger": "posix_uname", "contents": "posix_uname(${1:oid})" }, + { "trigger": "pow", "contents": "pow(${1:base}, ${2:exp})" }, + { "trigger": "preg_filter", "contents": "preg_filter(${1:pattern}, ${2:replacement}, ${3:subject})" }, + { "trigger": "preg_grep", "contents": "preg_grep(${1:pattern}, ${2:input})" }, + { "trigger": "preg_last_error", "contents": "preg_last_error(${1:oid})" }, + { "trigger": "preg_match", "contents": "preg_match(${1:pattern}, ${2:subject})" }, + { "trigger": "preg_match_all", "contents": "preg_match_all(${1:pattern}, ${2:subject}, ${3:matches})" }, + { "trigger": "preg_quote", "contents": "preg_quote(${1:str})" }, + { "trigger": "preg_replace", "contents": "preg_replace(${1:pattern}, ${2:replacement}, ${3:subject})" }, + { "trigger": "preg_replace_callback", "contents": "preg_replace_callback(${1:pattern}, ${2:callback}, ${3:subject})" }, + { "trigger": "preg_split", "contents": "preg_split(${1:pattern}, ${2:subject})" }, + { "trigger": "prev", "contents": "prev(${1:array})" }, + { "trigger": "print", "contents": "print(${1:arg})" }, + { "trigger": "print_r", "contents": "print_r(${1:expression})" }, + { "trigger": "printer_abort", "contents": "printer_abort(${1:printer_handle})" }, + { "trigger": "printer_close", "contents": "printer_close(${1:printer_handle})" }, + { "trigger": "printer_create_brush", "contents": "printer_create_brush(${1:style}, ${2:color})" }, + { "trigger": "printer_create_dc", "contents": "printer_create_dc(${1:printer_handle})" }, + { "trigger": "printer_create_font", "contents": "printer_create_font(${1:face}, ${2:height}, ${3:width}, ${4:font_weight}, ${5:italic}, ${6:underline}, ${7:strikeout}, ${8:orientation})" }, + { "trigger": "printer_create_pen", "contents": "printer_create_pen(${1:style}, ${2:width}, ${3:color})" }, + { "trigger": "printer_delete_brush", "contents": "printer_delete_brush(${1:brush_handle})" }, + { "trigger": "printer_delete_dc", "contents": "printer_delete_dc(${1:printer_handle})" }, + { "trigger": "printer_delete_font", "contents": "printer_delete_font(${1:font_handle})" }, + { "trigger": "printer_delete_pen", "contents": "printer_delete_pen(${1:pen_handle})" }, + { "trigger": "printer_draw_bmp", "contents": "printer_draw_bmp(${1:printer_handle}, ${2:filename}, ${3:x}, ${4:y})" }, + { "trigger": "printer_draw_chord", "contents": "printer_draw_chord(${1:printer_handle}, ${2:rec_x}, ${3:rec_y}, ${4:rec_x1}, ${5:rec_y1}, ${6:rad_x}, ${7:rad_y}, ${8:rad_x1}, ${9:rad_y1})" }, + { "trigger": "printer_draw_elipse", "contents": "printer_draw_elipse(${1:printer_handle}, ${2:ul_x}, ${3:ul_y}, ${4:lr_x}, ${5:lr_y})" }, + { "trigger": "printer_draw_line", "contents": "printer_draw_line(${1:printer_handle}, ${2:from_x}, ${3:from_y}, ${4:to_x}, ${5:to_y})" }, + { "trigger": "printer_draw_pie", "contents": "printer_draw_pie(${1:printer_handle}, ${2:rec_x}, ${3:rec_y}, ${4:rec_x1}, ${5:rec_y1}, ${6:rad1_x}, ${7:rad1_y}, ${8:rad2_x}, ${9:rad2_y})" }, + { "trigger": "printer_draw_rectangle", "contents": "printer_draw_rectangle(${1:printer_handle}, ${2:ul_x}, ${3:ul_y}, ${4:lr_x}, ${5:lr_y})" }, + { "trigger": "printer_draw_roundrect", "contents": "printer_draw_roundrect(${1:printer_handle}, ${2:ul_x}, ${3:ul_y}, ${4:lr_x}, ${5:lr_y}, ${6:width}, ${7:height})" }, + { "trigger": "printer_draw_text", "contents": "printer_draw_text(${1:printer_handle}, ${2:text}, ${3:x}, ${4:y})" }, + { "trigger": "printer_end_doc", "contents": "printer_end_doc(${1:printer_handle})" }, + { "trigger": "printer_end_page", "contents": "printer_end_page(${1:printer_handle})" }, + { "trigger": "printer_get_option", "contents": "printer_get_option(${1:printer_handle}, ${2:option})" }, + { "trigger": "printer_list", "contents": "printer_list(${1:enumtype})" }, + { "trigger": "printer_logical_fontheight", "contents": "printer_logical_fontheight(${1:printer_handle}, ${2:height})" }, + { "trigger": "printer_open", "contents": "printer_open()" }, + { "trigger": "printer_select_brush", "contents": "printer_select_brush(${1:printer_handle}, ${2:brush_handle})" }, + { "trigger": "printer_select_font", "contents": "printer_select_font(${1:printer_handle}, ${2:font_handle})" }, + { "trigger": "printer_select_pen", "contents": "printer_select_pen(${1:printer_handle}, ${2:pen_handle})" }, + { "trigger": "printer_set_option", "contents": "printer_set_option(${1:printer_handle}, ${2:option}, ${3:value})" }, + { "trigger": "printer_start_doc", "contents": "printer_start_doc(${1:printer_handle})" }, + { "trigger": "printer_start_page", "contents": "printer_start_page(${1:printer_handle})" }, + { "trigger": "printer_write", "contents": "printer_write(${1:printer_handle}, ${2:content})" }, + { "trigger": "printf", "contents": "printf(${1:format})" }, + { "trigger": "proc_close", "contents": "proc_close(${1:process})" }, + { "trigger": "proc_get_status", "contents": "proc_get_status(${1:process})" }, + { "trigger": "proc_nice", "contents": "proc_nice(${1:increment})" }, + { "trigger": "proc_open", "contents": "proc_open(${1:cmd}, ${2:descriptorspec}, ${3:pipes})" }, + { "trigger": "proc_terminate", "contents": "proc_terminate(${1:process})" }, + { "trigger": "property_exists", "contents": "property_exists(${1:class}, ${2:property})" }, + { "trigger": "ps_add_bookmark", "contents": "ps_add_bookmark(${1:psdoc}, ${2:text})" }, + { "trigger": "ps_add_launchlink", "contents": "ps_add_launchlink(${1:psdoc}, ${2:llx}, ${3:lly}, ${4:urx}, ${5:ury}, ${6:filename})" }, + { "trigger": "ps_add_locallink", "contents": "ps_add_locallink(${1:psdoc}, ${2:llx}, ${3:lly}, ${4:urx}, ${5:ury}, ${6:page}, ${7:dest})" }, + { "trigger": "ps_add_note", "contents": "ps_add_note(${1:psdoc}, ${2:llx}, ${3:lly}, ${4:urx}, ${5:ury}, ${6:contents}, ${7:title}, ${8:icon}, ${9:open})" }, + { "trigger": "ps_add_pdflink", "contents": "ps_add_pdflink(${1:psdoc}, ${2:llx}, ${3:lly}, ${4:urx}, ${5:ury}, ${6:filename}, ${7:page}, ${8:dest})" }, + { "trigger": "ps_add_weblink", "contents": "ps_add_weblink(${1:psdoc}, ${2:llx}, ${3:lly}, ${4:urx}, ${5:ury}, ${6:url})" }, + { "trigger": "ps_arc", "contents": "ps_arc(${1:psdoc}, ${2:x}, ${3:y}, ${4:radius}, ${5:alpha}, ${6:beta})" }, + { "trigger": "ps_arcn", "contents": "ps_arcn(${1:psdoc}, ${2:x}, ${3:y}, ${4:radius}, ${5:alpha}, ${6:beta})" }, + { "trigger": "ps_begin_page", "contents": "ps_begin_page(${1:psdoc}, ${2:width}, ${3:height})" }, + { "trigger": "ps_begin_pattern", "contents": "ps_begin_pattern(${1:psdoc}, ${2:width}, ${3:height}, ${4:xstep}, ${5:ystep}, ${6:painttype})" }, + { "trigger": "ps_begin_template", "contents": "ps_begin_template(${1:psdoc}, ${2:width}, ${3:height})" }, + { "trigger": "ps_circle", "contents": "ps_circle(${1:psdoc}, ${2:x}, ${3:y}, ${4:radius})" }, + { "trigger": "ps_clip", "contents": "ps_clip(${1:psdoc})" }, + { "trigger": "ps_close", "contents": "ps_close(${1:psdoc})" }, + { "trigger": "ps_close_image", "contents": "ps_close_image(${1:psdoc}, ${2:imageid})" }, + { "trigger": "ps_closepath", "contents": "ps_closepath(${1:psdoc})" }, + { "trigger": "ps_closepath_stroke", "contents": "ps_closepath_stroke(${1:psdoc})" }, + { "trigger": "ps_continue_text", "contents": "ps_continue_text(${1:psdoc}, ${2:text})" }, + { "trigger": "ps_curveto", "contents": "ps_curveto(${1:psdoc}, ${2:x1}, ${3:y1}, ${4:x2}, ${5:y2}, ${6:x3}, ${7:y3})" }, + { "trigger": "ps_delete", "contents": "ps_delete(${1:psdoc})" }, + { "trigger": "ps_end_page", "contents": "ps_end_page(${1:psdoc})" }, + { "trigger": "ps_end_pattern", "contents": "ps_end_pattern(${1:psdoc})" }, + { "trigger": "ps_end_template", "contents": "ps_end_template(${1:psdoc})" }, + { "trigger": "ps_fill", "contents": "ps_fill(${1:psdoc})" }, + { "trigger": "ps_fill_stroke", "contents": "ps_fill_stroke(${1:psdoc})" }, + { "trigger": "ps_findfont", "contents": "ps_findfont(${1:psdoc}, ${2:fontname}, ${3:encoding})" }, + { "trigger": "ps_get_buffer", "contents": "ps_get_buffer(${1:psdoc})" }, + { "trigger": "ps_get_parameter", "contents": "ps_get_parameter(${1:psdoc}, ${2:name})" }, + { "trigger": "ps_get_value", "contents": "ps_get_value(${1:psdoc}, ${2:name})" }, + { "trigger": "ps_hyphenate", "contents": "ps_hyphenate(${1:psdoc}, ${2:text})" }, + { "trigger": "ps_include_file", "contents": "ps_include_file(${1:psdoc}, ${2:file})" }, + { "trigger": "ps_lineto", "contents": "ps_lineto(${1:psdoc}, ${2:x}, ${3:y})" }, + { "trigger": "ps_makespotcolor", "contents": "ps_makespotcolor(${1:psdoc}, ${2:name})" }, + { "trigger": "ps_moveto", "contents": "ps_moveto(${1:psdoc}, ${2:x}, ${3:y})" }, + { "trigger": "ps_new", "contents": "ps_new(${1:oid})" }, + { "trigger": "ps_open_file", "contents": "ps_open_file(${1:psdoc})" }, + { "trigger": "ps_open_image", "contents": "ps_open_image(${1:psdoc}, ${2:type}, ${3:source}, ${4:data}, ${5:lenght}, ${6:width}, ${7:height}, ${8:components}, ${9:bpc}, ${10:params})" }, + { "trigger": "ps_open_image_file", "contents": "ps_open_image_file(${1:psdoc}, ${2:type}, ${3:filename})" }, + { "trigger": "ps_open_memory_image", "contents": "ps_open_memory_image(${1:psdoc}, ${2:gd})" }, + { "trigger": "ps_place_image", "contents": "ps_place_image(${1:psdoc}, ${2:imageid}, ${3:x}, ${4:y}, ${5:scale})" }, + { "trigger": "ps_rect", "contents": "ps_rect(${1:psdoc}, ${2:x}, ${3:y}, ${4:width}, ${5:height})" }, + { "trigger": "ps_restore", "contents": "ps_restore(${1:psdoc})" }, + { "trigger": "ps_rotate", "contents": "ps_rotate(${1:psdoc}, ${2:rot})" }, + { "trigger": "ps_save", "contents": "ps_save(${1:psdoc})" }, + { "trigger": "ps_scale", "contents": "ps_scale(${1:psdoc}, ${2:x}, ${3:y})" }, + { "trigger": "ps_set_border_color", "contents": "ps_set_border_color(${1:psdoc}, ${2:red}, ${3:green}, ${4:blue})" }, + { "trigger": "ps_set_border_dash", "contents": "ps_set_border_dash(${1:psdoc}, ${2:black}, ${3:white})" }, + { "trigger": "ps_set_border_style", "contents": "ps_set_border_style(${1:psdoc}, ${2:style}, ${3:width})" }, + { "trigger": "ps_set_info", "contents": "ps_set_info(${1:p}, ${2:key}, ${3:val})" }, + { "trigger": "ps_set_parameter", "contents": "ps_set_parameter(${1:psdoc}, ${2:name}, ${3:value})" }, + { "trigger": "ps_set_text_pos", "contents": "ps_set_text_pos(${1:psdoc}, ${2:x}, ${3:y})" }, + { "trigger": "ps_set_value", "contents": "ps_set_value(${1:psdoc}, ${2:name}, ${3:value})" }, + { "trigger": "ps_setcolor", "contents": "ps_setcolor(${1:psdoc}, ${2:type}, ${3:colorspace}, ${4:c1}, ${5:c2}, ${6:c3}, ${7:c4})" }, + { "trigger": "ps_setdash", "contents": "ps_setdash(${1:psdoc}, ${2:on}, ${3:off})" }, + { "trigger": "ps_setflat", "contents": "ps_setflat(${1:psdoc}, ${2:value})" }, + { "trigger": "ps_setfont", "contents": "ps_setfont(${1:psdoc}, ${2:fontid}, ${3:size})" }, + { "trigger": "ps_setgray", "contents": "ps_setgray(${1:psdoc}, ${2:gray})" }, + { "trigger": "ps_setlinecap", "contents": "ps_setlinecap(${1:psdoc}, ${2:type})" }, + { "trigger": "ps_setlinejoin", "contents": "ps_setlinejoin(${1:psdoc}, ${2:type})" }, + { "trigger": "ps_setlinewidth", "contents": "ps_setlinewidth(${1:psdoc}, ${2:width})" }, + { "trigger": "ps_setmiterlimit", "contents": "ps_setmiterlimit(${1:psdoc}, ${2:value})" }, + { "trigger": "ps_setoverprintmode", "contents": "ps_setoverprintmode(${1:psdoc}, ${2:mode})" }, + { "trigger": "ps_setpolydash", "contents": "ps_setpolydash(${1:psdoc}, ${2:arr})" }, + { "trigger": "ps_shading", "contents": "ps_shading(${1:psdoc}, ${2:type}, ${3:x0}, ${4:y0}, ${5:x1}, ${6:y1}, ${7:c1}, ${8:c2}, ${9:c3}, ${10:c4}, ${11:optlist})" }, + { "trigger": "ps_shading_pattern", "contents": "ps_shading_pattern(${1:psdoc}, ${2:shadingid}, ${3:optlist})" }, + { "trigger": "ps_shfill", "contents": "ps_shfill(${1:psdoc}, ${2:shadingid})" }, + { "trigger": "ps_show", "contents": "ps_show(${1:psdoc}, ${2:text})" }, + { "trigger": "ps_show2", "contents": "ps_show2(${1:psdoc}, ${2:text}, ${3:len})" }, + { "trigger": "ps_show_boxed", "contents": "ps_show_boxed(${1:psdoc}, ${2:text}, ${3:left}, ${4:bottom}, ${5:width}, ${6:height}, ${7:hmode})" }, + { "trigger": "ps_show_xy", "contents": "ps_show_xy(${1:psdoc}, ${2:text}, ${3:x}, ${4:y})" }, + { "trigger": "ps_show_xy2", "contents": "ps_show_xy2(${1:psdoc}, ${2:text}, ${3:len}, ${4:xcoor}, ${5:ycoor})" }, + { "trigger": "ps_string_geometry", "contents": "ps_string_geometry(${1:psdoc}, ${2:text})" }, + { "trigger": "ps_stringwidth", "contents": "ps_stringwidth(${1:psdoc}, ${2:text})" }, + { "trigger": "ps_stroke", "contents": "ps_stroke(${1:psdoc})" }, + { "trigger": "ps_symbol", "contents": "ps_symbol(${1:psdoc}, ${2:ord})" }, + { "trigger": "ps_symbol_name", "contents": "ps_symbol_name(${1:psdoc}, ${2:ord})" }, + { "trigger": "ps_symbol_width", "contents": "ps_symbol_width(${1:psdoc}, ${2:ord})" }, + { "trigger": "ps_translate", "contents": "ps_translate(${1:psdoc}, ${2:x}, ${3:y})" }, + { "trigger": "pspell_add_to_personal", "contents": "pspell_add_to_personal(${1:dictionary_link}, ${2:word})" }, + { "trigger": "pspell_add_to_session", "contents": "pspell_add_to_session(${1:dictionary_link}, ${2:word})" }, + { "trigger": "pspell_check", "contents": "pspell_check(${1:dictionary_link}, ${2:word})" }, + { "trigger": "pspell_clear_session", "contents": "pspell_clear_session(${1:dictionary_link})" }, + { "trigger": "pspell_config_create", "contents": "pspell_config_create(${1:language})" }, + { "trigger": "pspell_config_data_dir", "contents": "pspell_config_data_dir(${1:conf}, ${2:directory})" }, + { "trigger": "pspell_config_dict_dir", "contents": "pspell_config_dict_dir(${1:conf}, ${2:directory})" }, + { "trigger": "pspell_config_ignore", "contents": "pspell_config_ignore(${1:dictionary_link}, ${2:n})" }, + { "trigger": "pspell_config_mode", "contents": "pspell_config_mode(${1:dictionary_link}, ${2:mode})" }, + { "trigger": "pspell_config_personal", "contents": "pspell_config_personal(${1:dictionary_link}, ${2:file})" }, + { "trigger": "pspell_config_repl", "contents": "pspell_config_repl(${1:dictionary_link}, ${2:file})" }, + { "trigger": "pspell_config_runtogether", "contents": "pspell_config_runtogether(${1:dictionary_link}, ${2:flag})" }, + { "trigger": "pspell_config_save_repl", "contents": "pspell_config_save_repl(${1:dictionary_link}, ${2:flag})" }, + { "trigger": "pspell_new", "contents": "pspell_new(${1:language})" }, + { "trigger": "pspell_new_config", "contents": "pspell_new_config(${1:config})" }, + { "trigger": "pspell_new_personal", "contents": "pspell_new_personal(${1:personal}, ${2:language})" }, + { "trigger": "pspell_save_wordlist", "contents": "pspell_save_wordlist(${1:dictionary_link})" }, + { "trigger": "pspell_store_replacement", "contents": "pspell_store_replacement(${1:dictionary_link}, ${2:misspelled}, ${3:correct})" }, + { "trigger": "pspell_suggest", "contents": "pspell_suggest(${1:dictionary_link}, ${2:word})" }, + { "trigger": "putenv", "contents": "putenv(${1:setting})" }, + { "trigger": "px_close", "contents": "px_close(${1:pxdoc})" }, + { "trigger": "px_create_fp", "contents": "px_create_fp(${1:pxdoc}, ${2:file}, ${3:fielddesc})" }, + { "trigger": "px_date2string", "contents": "px_date2string(${1:pxdoc}, ${2:value}, ${3:format})" }, + { "trigger": "px_delete", "contents": "px_delete(${1:pxdoc})" }, + { "trigger": "px_delete_record", "contents": "px_delete_record(${1:pxdoc}, ${2:num})" }, + { "trigger": "px_get_field", "contents": "px_get_field(${1:pxdoc}, ${2:fieldno})" }, + { "trigger": "px_get_info", "contents": "px_get_info(${1:pxdoc})" }, + { "trigger": "px_get_parameter", "contents": "px_get_parameter(${1:pxdoc}, ${2:name})" }, + { "trigger": "px_get_record", "contents": "px_get_record(${1:pxdoc}, ${2:num})" }, + { "trigger": "px_get_schema", "contents": "px_get_schema(${1:pxdoc})" }, + { "trigger": "px_get_value", "contents": "px_get_value(${1:pxdoc}, ${2:name})" }, + { "trigger": "px_insert_record", "contents": "px_insert_record(${1:pxdoc}, ${2:data})" }, + { "trigger": "px_new", "contents": "px_new(${1:oid})" }, + { "trigger": "px_numfields", "contents": "px_numfields(${1:pxdoc})" }, + { "trigger": "px_numrecords", "contents": "px_numrecords(${1:pxdoc})" }, + { "trigger": "px_open_fp", "contents": "px_open_fp(${1:pxdoc}, ${2:file})" }, + { "trigger": "px_put_record", "contents": "px_put_record(${1:pxdoc}, ${2:record})" }, + { "trigger": "px_retrieve_record", "contents": "px_retrieve_record(${1:pxdoc}, ${2:num})" }, + { "trigger": "px_set_blob_file", "contents": "px_set_blob_file(${1:pxdoc}, ${2:filename})" }, + { "trigger": "px_set_parameter", "contents": "px_set_parameter(${1:pxdoc}, ${2:name}, ${3:value})" }, + { "trigger": "px_set_tablename", "contents": "px_set_tablename(${1:pxdoc}, ${2:name})" }, + { "trigger": "px_set_targetencoding", "contents": "px_set_targetencoding(${1:pxdoc}, ${2:encoding})" }, + { "trigger": "px_set_value", "contents": "px_set_value(${1:pxdoc}, ${2:name}, ${3:value})" }, + { "trigger": "px_timestamp2string", "contents": "px_timestamp2string(${1:pxdoc}, ${2:value}, ${3:format})" }, + { "trigger": "px_update_record", "contents": "px_update_record(${1:pxdoc}, ${2:data}, ${3:num})" }, + { "trigger": "qdom_error", "contents": "qdom_error(${1:oid})" }, + { "trigger": "qdom_tree", "contents": "qdom_tree(${1:doc})" }, + { "trigger": "quoted_printable_decode", "contents": "quoted_printable_decode(${1:str})" }, + { "trigger": "quoted_printable_encode", "contents": "quoted_printable_encode(${1:str})" }, + { "trigger": "quotemeta", "contents": "quotemeta(${1:str})" }, + { "trigger": "rad2deg", "contents": "rad2deg(${1:number})" }, + { "trigger": "radius_acct_open", "contents": "radius_acct_open(${1:oid})" }, + { "trigger": "radius_add_server", "contents": "radius_add_server(${1:radius_handle}, ${2:hostname}, ${3:port}, ${4:secret}, ${5:timeout}, ${6:max_tries})" }, + { "trigger": "radius_auth_open", "contents": "radius_auth_open(${1:oid})" }, + { "trigger": "radius_close", "contents": "radius_close(${1:radius_handle})" }, + { "trigger": "radius_config", "contents": "radius_config(${1:radius_handle}, ${2:file})" }, + { "trigger": "radius_create_request", "contents": "radius_create_request(${1:radius_handle}, ${2:type})" }, + { "trigger": "radius_cvt_addr", "contents": "radius_cvt_addr(${1:data})" }, + { "trigger": "radius_cvt_int", "contents": "radius_cvt_int(${1:data})" }, + { "trigger": "radius_cvt_string", "contents": "radius_cvt_string(${1:data})" }, + { "trigger": "radius_demangle", "contents": "radius_demangle(${1:radius_handle}, ${2:mangled})" }, + { "trigger": "radius_demangle_mppe_key", "contents": "radius_demangle_mppe_key(${1:radius_handle}, ${2:mangled})" }, + { "trigger": "radius_get_attr", "contents": "radius_get_attr(${1:radius_handle})" }, + { "trigger": "radius_get_vendor_attr", "contents": "radius_get_vendor_attr(${1:data})" }, + { "trigger": "radius_put_addr", "contents": "radius_put_addr(${1:radius_handle}, ${2:type}, ${3:addr})" }, + { "trigger": "radius_put_attr", "contents": "radius_put_attr(${1:radius_handle}, ${2:type}, ${3:value})" }, + { "trigger": "radius_put_int", "contents": "radius_put_int(${1:radius_handle}, ${2:type}, ${3:value})" }, + { "trigger": "radius_put_string", "contents": "radius_put_string(${1:radius_handle}, ${2:type}, ${3:value})" }, + { "trigger": "radius_put_vendor_addr", "contents": "radius_put_vendor_addr(${1:radius_handle}, ${2:vendor}, ${3:type}, ${4:addr})" }, + { "trigger": "radius_put_vendor_attr", "contents": "radius_put_vendor_attr(${1:radius_handle}, ${2:vendor}, ${3:type}, ${4:value})" }, + { "trigger": "radius_put_vendor_int", "contents": "radius_put_vendor_int(${1:radius_handle}, ${2:vendor}, ${3:type}, ${4:value})" }, + { "trigger": "radius_put_vendor_string", "contents": "radius_put_vendor_string(${1:radius_handle}, ${2:vendor}, ${3:type}, ${4:value})" }, + { "trigger": "radius_request_authenticator", "contents": "radius_request_authenticator(${1:radius_handle})" }, + { "trigger": "radius_send_request", "contents": "radius_send_request(${1:radius_handle})" }, + { "trigger": "radius_server_secret", "contents": "radius_server_secret(${1:radius_handle})" }, + { "trigger": "radius_strerror", "contents": "radius_strerror(${1:radius_handle})" }, + { "trigger": "rand", "contents": "rand(${1:oid})" }, + { "trigger": "range", "contents": "range(${1:low}, ${2:high})" }, + { "trigger": "rar_wrapper_cache_stats", "contents": "rar_wrapper_cache_stats(${1:oid})" }, + { "trigger": "rawurldecode", "contents": "rawurldecode(${1:str})" }, + { "trigger": "rawurlencode", "contents": "rawurlencode(${1:str})" }, + { "trigger": "read_exif_data", "contents": "read_exif_data()" }, + { "trigger": "readdir", "contents": "readdir()" }, + { "trigger": "readfile", "contents": "readfile(${1:filename})" }, + { "trigger": "readgzfile", "contents": "readgzfile(${1:filename})" }, + { "trigger": "readline", "contents": "readline()" }, + { "trigger": "readline_add_history", "contents": "readline_add_history(${1:line})" }, + { "trigger": "readline_callback_handler_install", "contents": "readline_callback_handler_install(${1:prompt}, ${2:callback})" }, + { "trigger": "readline_callback_handler_remove", "contents": "readline_callback_handler_remove(${1:oid})" }, + { "trigger": "readline_callback_read_char", "contents": "readline_callback_read_char(${1:oid})" }, + { "trigger": "readline_clear_history", "contents": "readline_clear_history(${1:oid})" }, + { "trigger": "readline_completion_function", "contents": "readline_completion_function(${1:function})" }, + { "trigger": "readline_info", "contents": "readline_info()" }, + { "trigger": "readline_list_history", "contents": "readline_list_history(${1:oid})" }, + { "trigger": "readline_on_new_line", "contents": "readline_on_new_line(${1:oid})" }, + { "trigger": "readline_read_history", "contents": "readline_read_history()" }, + { "trigger": "readline_redisplay", "contents": "readline_redisplay(${1:oid})" }, + { "trigger": "readline_write_history", "contents": "readline_write_history()" }, + { "trigger": "readlink", "contents": "readlink(${1:path})" }, + { "trigger": "realpath", "contents": "realpath(${1:path})" }, + { "trigger": "realpath_cache_get", "contents": "realpath_cache_get(${1:oid})" }, + { "trigger": "realpath_cache_size", "contents": "realpath_cache_size(${1:oid})" }, + { "trigger": "recode", "contents": "recode()" }, + { "trigger": "recode_file", "contents": "recode_file(${1:request}, ${2:input}, ${3:output})" }, + { "trigger": "recode_string", "contents": "recode_string(${1:request}, ${2:string})" }, + { "trigger": "", "contents": "(${1:name})" }, + { "trigger": "register_shutdown_function", "contents": "register_shutdown_function(${1:function})" }, + { "trigger": "register_tick_function", "contents": "register_tick_function(${1:function})" }, + { "trigger": "rename", "contents": "rename(${1:oldname}, ${2:newname})" }, + { "trigger": "rename_function", "contents": "rename_function(${1:original_name}, ${2:new_name})" }, + { "trigger": "", "contents": "()" }, + { "trigger": "", "contents": "()" }, + { "trigger": "reset", "contents": "reset(${1:array})" }, + { "trigger": "restore_error_handler", "contents": "restore_error_handler(${1:oid})" }, + { "trigger": "restore_exception_handler", "contents": "restore_exception_handler(${1:oid})" }, + { "trigger": "restore_include_path", "contents": "restore_include_path(${1:oid})" }, + { "trigger": "", "contents": "()" }, + { "trigger": "rewind", "contents": "rewind(${1:handle})" }, + { "trigger": "rewinddir", "contents": "rewinddir()" }, + { "trigger": "rmdir", "contents": "rmdir(${1:dirname})" }, + { "trigger": "round", "contents": "round(${1:val})" }, + { "trigger": "rpm_close", "contents": "rpm_close(${1:rpmr})" }, + { "trigger": "rpm_get_tag", "contents": "rpm_get_tag(${1:rpmr}, ${2:tagnum})" }, + { "trigger": "rpm_is_valid", "contents": "rpm_is_valid(${1:filename})" }, + { "trigger": "rpm_open", "contents": "rpm_open(${1:filename})" }, + { "trigger": "rpm_version", "contents": "rpm_version(${1:oid})" }, + { "trigger": "rsort", "contents": "rsort(${1:array})" }, + { "trigger": "rtrim", "contents": "rtrim(${1:str})" }, + { "trigger": "runkit_class_adopt", "contents": "runkit_class_adopt(${1:classname}, ${2:parentname})" }, + { "trigger": "runkit_class_emancipate", "contents": "runkit_class_emancipate(${1:classname})" }, + { "trigger": "runkit_constant_add", "contents": "runkit_constant_add(${1:constname}, ${2:value})" }, + { "trigger": "runkit_constant_redefine", "contents": "runkit_constant_redefine(${1:constname}, ${2:newvalue})" }, + { "trigger": "runkit_constant_remove", "contents": "runkit_constant_remove(${1:constname})" }, + { "trigger": "runkit_function_add", "contents": "runkit_function_add(${1:funcname}, ${2:arglist}, ${3:code})" }, + { "trigger": "runkit_function_copy", "contents": "runkit_function_copy(${1:funcname}, ${2:targetname})" }, + { "trigger": "runkit_function_redefine", "contents": "runkit_function_redefine(${1:funcname}, ${2:arglist}, ${3:code})" }, + { "trigger": "runkit_function_remove", "contents": "runkit_function_remove(${1:funcname})" }, + { "trigger": "runkit_function_rename", "contents": "runkit_function_rename(${1:funcname}, ${2:newname})" }, + { "trigger": "runkit_import", "contents": "runkit_import(${1:filename})" }, + { "trigger": "runkit_lint", "contents": "runkit_lint(${1:code})" }, + { "trigger": "runkit_lint_file", "contents": "runkit_lint_file(${1:filename})" }, + { "trigger": "runkit_method_add", "contents": "runkit_method_add(${1:classname}, ${2:methodname}, ${3:args}, ${4:code})" }, + { "trigger": "runkit_method_copy", "contents": "runkit_method_copy(${1:dClass}, ${2:dMethod}, ${3:sClass})" }, + { "trigger": "runkit_method_redefine", "contents": "runkit_method_redefine(${1:classname}, ${2:methodname}, ${3:args}, ${4:code})" }, + { "trigger": "runkit_method_remove", "contents": "runkit_method_remove(${1:classname}, ${2:methodname})" }, + { "trigger": "runkit_method_rename", "contents": "runkit_method_rename(${1:classname}, ${2:methodname}, ${3:newname})" }, + { "trigger": "runkit_return_value_used", "contents": "runkit_return_value_used(${1:oid})" }, + { "trigger": "runkit_sandbox_output_handler", "contents": "runkit_sandbox_output_handler(${1:sandbox})" }, + { "trigger": "runkit_superglobals", "contents": "runkit_superglobals(${1:oid})" }, + { "trigger": "scandir", "contents": "scandir(${1:directory})" }, + { "trigger": "sem_acquire", "contents": "sem_acquire(${1:sem_identifier})" }, + { "trigger": "sem_get", "contents": "sem_get(${1:key})" }, + { "trigger": "sem_release", "contents": "sem_release(${1:sem_identifier})" }, + { "trigger": "sem_remove", "contents": "sem_remove(${1:sem_identifier})" }, + { "trigger": "serialize", "contents": "serialize(${1:value})" }, + { "trigger": "session_cache_expire", "contents": "session_cache_expire()" }, + { "trigger": "session_cache_limiter", "contents": "session_cache_limiter()" }, + { "trigger": "session_commit", "contents": "session_commit()" }, + { "trigger": "session_decode", "contents": "session_decode(${1:data})" }, + { "trigger": "session_destroy", "contents": "session_destroy(${1:oid})" }, + { "trigger": "session_encode", "contents": "session_encode(${1:oid})" }, + { "trigger": "session_get_cookie_params", "contents": "session_get_cookie_params(${1:oid})" }, + { "trigger": "session_id", "contents": "session_id()" }, + { "trigger": "session_is_registered", "contents": "session_is_registered(${1:name})" }, + { "trigger": "session_module_name", "contents": "session_module_name()" }, + { "trigger": "session_name", "contents": "session_name()" }, + { "trigger": "session_pgsql_add_error", "contents": "session_pgsql_add_error(${1:error_level})" }, + { "trigger": "session_pgsql_get_error", "contents": "session_pgsql_get_error()" }, + { "trigger": "session_pgsql_get_field", "contents": "session_pgsql_get_field(${1:oid})" }, + { "trigger": "session_pgsql_reset", "contents": "session_pgsql_reset(${1:oid})" }, + { "trigger": "session_pgsql_set_field", "contents": "session_pgsql_set_field(${1:value})" }, + { "trigger": "session_pgsql_status", "contents": "session_pgsql_status(${1:oid})" }, + { "trigger": "session_regenerate_id", "contents": "session_regenerate_id()" }, + { "trigger": "session_register", "contents": "session_register(${1:name})" }, + { "trigger": "session_save_path", "contents": "session_save_path()" }, + { "trigger": "session_set_cookie_params", "contents": "session_set_cookie_params(${1:lifetime})" }, + { "trigger": "session_set_save_handler", "contents": "session_set_save_handler(${1:open}, ${2:close}, ${3:read}, ${4:write}, ${5:destroy}, ${6:gc})" }, + { "trigger": "session_start", "contents": "session_start(${1:oid})" }, + { "trigger": "session_unregister", "contents": "session_unregister(${1:name})" }, + { "trigger": "session_unset", "contents": "session_unset(${1:oid})" }, + { "trigger": "session_write_close", "contents": "session_write_close(${1:oid})" }, + { "trigger": "set_error_handler", "contents": "set_error_handler(${1:error_handler})" }, + { "trigger": "set_exception_handler", "contents": "set_exception_handler(${1:exception_handler})" }, + { "trigger": "set_file_buffer", "contents": "set_file_buffer()" }, + { "trigger": "set_include_path", "contents": "set_include_path(${1:new_include_path})" }, + { "trigger": "set_magic_quotes_runtime", "contents": "set_magic_quotes_runtime(${1:new_setting})" }, + { "trigger": "set_socket_blocking", "contents": "set_socket_blocking()" }, + { "trigger": "set_time_limit", "contents": "set_time_limit(${1:seconds})" }, + { "trigger": "setcookie", "contents": "setcookie(${1:name})" }, + { "trigger": "setlocale", "contents": "setlocale(${1:category}, ${2:locale})" }, + { "trigger": "setrawcookie", "contents": "setrawcookie(${1:name})" }, + { "trigger": "settype", "contents": "settype(${1:var}, ${2:type})" }, + { "trigger": "sha1", "contents": "sha1(${1:str})" }, + { "trigger": "sha1_file", "contents": "sha1_file(${1:filename})" }, + { "trigger": "shell_exec", "contents": "shell_exec(${1:cmd})" }, + { "trigger": "shm_attach", "contents": "shm_attach(${1:key})" }, + { "trigger": "shm_detach", "contents": "shm_detach(${1:shm_identifier})" }, + { "trigger": "shm_get_var", "contents": "shm_get_var(${1:shm_identifier}, ${2:variable_key})" }, + { "trigger": "shm_has_var", "contents": "shm_has_var(${1:shm_identifier}, ${2:variable_key})" }, + { "trigger": "shm_put_var", "contents": "shm_put_var(${1:shm_identifier}, ${2:variable_key}, ${3:variable})" }, + { "trigger": "shm_remove", "contents": "shm_remove(${1:shm_identifier})" }, + { "trigger": "shm_remove_var", "contents": "shm_remove_var(${1:shm_identifier}, ${2:variable_key})" }, + { "trigger": "shmop_close", "contents": "shmop_close(${1:shmid})" }, + { "trigger": "shmop_delete", "contents": "shmop_delete(${1:shmid})" }, + { "trigger": "shmop_open", "contents": "shmop_open(${1:key}, ${2:flags}, ${3:mode}, ${4:size})" }, + { "trigger": "shmop_read", "contents": "shmop_read(${1:shmid}, ${2:start}, ${3:count})" }, + { "trigger": "shmop_size", "contents": "shmop_size(${1:shmid})" }, + { "trigger": "shmop_write", "contents": "shmop_write(${1:shmid}, ${2:data}, ${3:offset})" }, + { "trigger": "show_source", "contents": "show_source()" }, + { "trigger": "shuffle", "contents": "shuffle(${1:array})" }, + { "trigger": "signeurlpaiement", "contents": "signeurlpaiement(${1:clent}, ${2:data})" }, + { "trigger": "similar_text", "contents": "similar_text(${1:first}, ${2:second})" }, + { "trigger": "simplexml_import_dom", "contents": "simplexml_import_dom(${1:node})" }, + { "trigger": "simplexml_load_file", "contents": "simplexml_load_file(${1:filename})" }, + { "trigger": "simplexml_load_string", "contents": "simplexml_load_string(${1:data})" }, + { "trigger": "sin", "contents": "sin(${1:arg})" }, + { "trigger": "sinh", "contents": "sinh(${1:arg})" }, + { "trigger": "sizeof", "contents": "sizeof()" }, + { "trigger": "sleep", "contents": "sleep(${1:seconds})" }, + { "trigger": "snmp2_get", "contents": "snmp2_get(${1:host}, ${2:community}, ${3:object_id})" }, + { "trigger": "snmp2_getnext", "contents": "snmp2_getnext(${1:host}, ${2:community}, ${3:object_id})" }, + { "trigger": "snmp2_real_walk", "contents": "snmp2_real_walk(${1:host}, ${2:community}, ${3:object_id})" }, + { "trigger": "snmp2_set", "contents": "snmp2_set(${1:host}, ${2:community}, ${3:object_id}, ${4:type}, ${5:value})" }, + { "trigger": "snmp2_walk", "contents": "snmp2_walk(${1:host}, ${2:community}, ${3:object_id})" }, + { "trigger": "snmp3_get", "contents": "snmp3_get(${1:host}, ${2:sec_name}, ${3:sec_level}, ${4:auth_protocol}, ${5:auth_passphrase}, ${6:priv_protocol}, ${7:priv_passphrase}, ${8:object_id})" }, + { "trigger": "snmp3_getnext", "contents": "snmp3_getnext(${1:host}, ${2:sec_name}, ${3:sec_level}, ${4:auth_protocol}, ${5:auth_passphrase}, ${6:priv_protocol}, ${7:priv_passphrase}, ${8:object_id})" }, + { "trigger": "snmp3_real_walk", "contents": "snmp3_real_walk(${1:host}, ${2:sec_name}, ${3:sec_level}, ${4:auth_protocol}, ${5:auth_passphrase}, ${6:priv_protocol}, ${7:priv_passphrase}, ${8:object_id})" }, + { "trigger": "snmp3_set", "contents": "snmp3_set(${1:host}, ${2:sec_name}, ${3:sec_level}, ${4:auth_protocol}, ${5:auth_passphrase}, ${6:priv_protocol}, ${7:priv_passphrase}, ${8:object_id}, ${9:type}, ${10:value})" }, + { "trigger": "snmp3_walk", "contents": "snmp3_walk(${1:host}, ${2:sec_name}, ${3:sec_level}, ${4:auth_protocol}, ${5:auth_passphrase}, ${6:priv_protocol}, ${7:priv_passphrase}, ${8:object_id})" }, + { "trigger": "snmp_get_quick_print", "contents": "snmp_get_quick_print(${1:oid})" }, + { "trigger": "snmp_get_valueretrieval", "contents": "snmp_get_valueretrieval(${1:oid})" }, + { "trigger": "snmp_read_mib", "contents": "snmp_read_mib(${1:filename})" }, + { "trigger": "snmp_set_enum_print", "contents": "snmp_set_enum_print(${1:enum_print})" }, + { "trigger": "snmp_set_oid_numeric_print", "contents": "snmp_set_oid_numeric_print(${1:oid_numeric_print})" }, + { "trigger": "snmp_set_oid_output_format", "contents": "snmp_set_oid_output_format(${1:oid_format = SNMP_OID_OUTPUT_MODULE})" }, + { "trigger": "snmp_set_quick_print", "contents": "snmp_set_quick_print(${1:quick_print})" }, + { "trigger": "snmp_set_valueretrieval", "contents": "snmp_set_valueretrieval(${1:method})" }, + { "trigger": "snmpget", "contents": "snmpget(${1:hostname}, ${2:community}, ${3:object_id})" }, + { "trigger": "snmpgetnext", "contents": "snmpgetnext(${1:host}, ${2:community}, ${3:object_id})" }, + { "trigger": "snmprealwalk", "contents": "snmprealwalk(${1:host}, ${2:community}, ${3:object_id})" }, + { "trigger": "snmpset", "contents": "snmpset(${1:host}, ${2:community}, ${3:object_id}, ${4:type}, ${5:value})" }, + { "trigger": "snmpwalk", "contents": "snmpwalk(${1:hostname}, ${2:community}, ${3:object_id})" }, + { "trigger": "snmpwalkoid", "contents": "snmpwalkoid(${1:hostname}, ${2:community}, ${3:object_id})" }, + { "trigger": "socket_accept", "contents": "socket_accept(${1:socket})" }, + { "trigger": "socket_bind", "contents": "socket_bind(${1:socket}, ${2:address})" }, + { "trigger": "socket_clear_error", "contents": "socket_clear_error()" }, + { "trigger": "socket_close", "contents": "socket_close(${1:socket})" }, + { "trigger": "socket_connect", "contents": "socket_connect(${1:socket}, ${2:address})" }, + { "trigger": "socket_create", "contents": "socket_create(${1:domain}, ${2:type}, ${3:protocol})" }, + { "trigger": "socket_create_listen", "contents": "socket_create_listen(${1:port})" }, + { "trigger": "socket_create_pair", "contents": "socket_create_pair(${1:domain}, ${2:type}, ${3:protocol}, ${4:fd})" }, + { "trigger": "socket_get_option", "contents": "socket_get_option(${1:socket}, ${2:level}, ${3:optname})" }, + { "trigger": "socket_get_status", "contents": "socket_get_status()" }, + { "trigger": "socket_getpeername", "contents": "socket_getpeername(${1:socket}, ${2:address})" }, + { "trigger": "socket_getsockname", "contents": "socket_getsockname(${1:socket}, ${2:addr})" }, + { "trigger": "socket_last_error", "contents": "socket_last_error()" }, + { "trigger": "socket_listen", "contents": "socket_listen(${1:socket})" }, + { "trigger": "socket_read", "contents": "socket_read(${1:socket}, ${2:length})" }, + { "trigger": "socket_recv", "contents": "socket_recv(${1:socket}, ${2:buf}, ${3:len}, ${4:flags})" }, + { "trigger": "socket_recvfrom", "contents": "socket_recvfrom(${1:socket}, ${2:buf}, ${3:len}, ${4:flags}, ${5:name})" }, + { "trigger": "socket_select", "contents": "socket_select(${1:read}, ${2:write}, ${3:except}, ${4:tv_sec})" }, + { "trigger": "socket_send", "contents": "socket_send(${1:socket}, ${2:buf}, ${3:len}, ${4:flags})" }, + { "trigger": "socket_sendto", "contents": "socket_sendto(${1:socket}, ${2:buf}, ${3:len}, ${4:flags}, ${5:addr})" }, + { "trigger": "socket_set_block", "contents": "socket_set_block(${1:socket})" }, + { "trigger": "socket_set_blocking", "contents": "socket_set_blocking()" }, + { "trigger": "socket_set_nonblock", "contents": "socket_set_nonblock(${1:socket})" }, + { "trigger": "socket_set_option", "contents": "socket_set_option(${1:socket}, ${2:level}, ${3:optname}, ${4:optval})" }, + { "trigger": "socket_set_timeout", "contents": "socket_set_timeout()" }, + { "trigger": "socket_shutdown", "contents": "socket_shutdown(${1:socket})" }, + { "trigger": "socket_strerror", "contents": "socket_strerror(${1:errno})" }, + { "trigger": "socket_write", "contents": "socket_write(${1:socket}, ${2:buffer})" }, + { "trigger": "solr_get_version", "contents": "solr_get_version(${1:oid})" }, + { "trigger": "sort", "contents": "sort(${1:array})" }, + { "trigger": "soundex", "contents": "soundex(${1:str})" }, + { "trigger": "spl_autoload", "contents": "spl_autoload(${1:class_name})" }, + { "trigger": "spl_autoload_call", "contents": "spl_autoload_call(${1:class_name})" }, + { "trigger": "spl_autoload_extensions", "contents": "spl_autoload_extensions()" }, + { "trigger": "spl_autoload_functions", "contents": "spl_autoload_functions(${1:oid})" }, + { "trigger": "spl_autoload_register", "contents": "spl_autoload_register()" }, + { "trigger": "spl_autoload_unregister", "contents": "spl_autoload_unregister(${1:autoload_function})" }, + { "trigger": "spl_classes", "contents": "spl_classes(${1:oid})" }, + { "trigger": "spl_object_hash", "contents": "spl_object_hash(${1:obj})" }, + { "trigger": "split", "contents": "split(${1:pattern}, ${2:string})" }, + { "trigger": "spliti", "contents": "spliti(${1:pattern}, ${2:string})" }, + { "trigger": "sprintf", "contents": "sprintf(${1:format})" }, + { "trigger": "sql_regcase", "contents": "sql_regcase(${1:string})" }, + { "trigger": "sqlite_close", "contents": "sqlite_close(${1:dbhandle})" }, + { "trigger": "sqlite_error_string", "contents": "sqlite_error_string(${1:error_code})" }, + { "trigger": "sqlite_escape_string", "contents": "sqlite_escape_string(${1:item})" }, + { "trigger": "sqlite_factory", "contents": "sqlite_factory(${1:filename})" }, + { "trigger": "sqlite_fetch_string", "contents": "sqlite_fetch_string()" }, + { "trigger": "sqlite_has_more", "contents": "sqlite_has_more(${1:result})" }, + { "trigger": "sqlite_libencoding", "contents": "sqlite_libencoding(${1:oid})" }, + { "trigger": "sqlite_libversion", "contents": "sqlite_libversion(${1:oid})" }, + { "trigger": "sqlite_open", "contents": "sqlite_open(${1:filename})" }, + { "trigger": "sqlite_popen", "contents": "sqlite_popen(${1:filename})" }, + { "trigger": "sqlite_udf_decode_binary", "contents": "sqlite_udf_decode_binary(${1:data})" }, + { "trigger": "sqlite_udf_encode_binary", "contents": "sqlite_udf_encode_binary(${1:data})" }, + { "trigger": "sqrt", "contents": "sqrt(${1:arg})" }, + { "trigger": "srand", "contents": "srand()" }, + { "trigger": "sscanf", "contents": "sscanf(${1:str}, ${2:format})" }, + { "trigger": "ssdeep_fuzzy_compare", "contents": "ssdeep_fuzzy_compare(${1:signature1}, ${2:signature2})" }, + { "trigger": "ssdeep_fuzzy_hash", "contents": "ssdeep_fuzzy_hash(${1:to_hash})" }, + { "trigger": "ssdeep_fuzzy_hash_filename", "contents": "ssdeep_fuzzy_hash_filename(${1:file_name})" }, + { "trigger": "ssh2_auth_hostbased_file", "contents": "ssh2_auth_hostbased_file(${1:session}, ${2:username}, ${3:hostname}, ${4:pubkeyfile}, ${5:privkeyfile})" }, + { "trigger": "ssh2_auth_none", "contents": "ssh2_auth_none(${1:session}, ${2:username})" }, + { "trigger": "ssh2_auth_password", "contents": "ssh2_auth_password(${1:session}, ${2:username}, ${3:password})" }, + { "trigger": "ssh2_auth_pubkey_file", "contents": "ssh2_auth_pubkey_file(${1:session}, ${2:username}, ${3:pubkeyfile}, ${4:privkeyfile})" }, + { "trigger": "ssh2_connect", "contents": "ssh2_connect(${1:host})" }, + { "trigger": "ssh2_exec", "contents": "ssh2_exec(${1:session}, ${2:command})" }, + { "trigger": "ssh2_fetch_stream", "contents": "ssh2_fetch_stream(${1:channel}, ${2:streamid})" }, + { "trigger": "ssh2_fingerprint", "contents": "ssh2_fingerprint(${1:session})" }, + { "trigger": "ssh2_methods_negotiated", "contents": "ssh2_methods_negotiated(${1:session})" }, + { "trigger": "ssh2_publickey_add", "contents": "ssh2_publickey_add(${1:pkey}, ${2:algoname}, ${3:blob})" }, + { "trigger": "ssh2_publickey_init", "contents": "ssh2_publickey_init(${1:session})" }, + { "trigger": "ssh2_publickey_list", "contents": "ssh2_publickey_list(${1:pkey})" }, + { "trigger": "ssh2_publickey_remove", "contents": "ssh2_publickey_remove(${1:pkey}, ${2:algoname}, ${3:blob})" }, + { "trigger": "ssh2_scp_recv", "contents": "ssh2_scp_recv(${1:session}, ${2:remote_file}, ${3:local_file})" }, + { "trigger": "ssh2_scp_send", "contents": "ssh2_scp_send(${1:session}, ${2:local_file}, ${3:remote_file})" }, + { "trigger": "ssh2_sftp", "contents": "ssh2_sftp(${1:session})" }, + { "trigger": "ssh2_sftp_lstat", "contents": "ssh2_sftp_lstat(${1:sftp}, ${2:path})" }, + { "trigger": "ssh2_sftp_mkdir", "contents": "ssh2_sftp_mkdir(${1:sftp}, ${2:dirname})" }, + { "trigger": "ssh2_sftp_readlink", "contents": "ssh2_sftp_readlink(${1:sftp}, ${2:link})" }, + { "trigger": "ssh2_sftp_realpath", "contents": "ssh2_sftp_realpath(${1:sftp}, ${2:filename})" }, + { "trigger": "ssh2_sftp_rename", "contents": "ssh2_sftp_rename(${1:sftp}, ${2:from}, ${3:to})" }, + { "trigger": "ssh2_sftp_rmdir", "contents": "ssh2_sftp_rmdir(${1:sftp}, ${2:dirname})" }, + { "trigger": "ssh2_sftp_stat", "contents": "ssh2_sftp_stat(${1:sftp}, ${2:path})" }, + { "trigger": "ssh2_sftp_symlink", "contents": "ssh2_sftp_symlink(${1:sftp}, ${2:target}, ${3:link})" }, + { "trigger": "ssh2_sftp_unlink", "contents": "ssh2_sftp_unlink(${1:sftp}, ${2:filename})" }, + { "trigger": "ssh2_shell", "contents": "ssh2_shell(${1:session})" }, + { "trigger": "ssh2_tunnel", "contents": "ssh2_tunnel(${1:session}, ${2:host}, ${3:port})" }, + { "trigger": "stat", "contents": "stat(${1:filename})" }, + { "trigger": "stats_absolute_deviation", "contents": "stats_absolute_deviation(${1:a})" }, + { "trigger": "stats_cdf_beta", "contents": "stats_cdf_beta(${1:par1}, ${2:par2}, ${3:par3}, ${4:which})" }, + { "trigger": "stats_cdf_binomial", "contents": "stats_cdf_binomial(${1:par1}, ${2:par2}, ${3:par3}, ${4:which})" }, + { "trigger": "stats_cdf_cauchy", "contents": "stats_cdf_cauchy(${1:par1}, ${2:par2}, ${3:par3}, ${4:which})" }, + { "trigger": "stats_cdf_chisquare", "contents": "stats_cdf_chisquare(${1:par1}, ${2:par2}, ${3:which})" }, + { "trigger": "stats_cdf_exponential", "contents": "stats_cdf_exponential(${1:par1}, ${2:par2}, ${3:which})" }, + { "trigger": "stats_cdf_f", "contents": "stats_cdf_f(${1:par1}, ${2:par2}, ${3:par3}, ${4:which})" }, + { "trigger": "stats_cdf_gamma", "contents": "stats_cdf_gamma(${1:par1}, ${2:par2}, ${3:par3}, ${4:which})" }, + { "trigger": "stats_cdf_laplace", "contents": "stats_cdf_laplace(${1:par1}, ${2:par2}, ${3:par3}, ${4:which})" }, + { "trigger": "stats_cdf_logistic", "contents": "stats_cdf_logistic(${1:par1}, ${2:par2}, ${3:par3}, ${4:which})" }, + { "trigger": "stats_cdf_negative_binomial", "contents": "stats_cdf_negative_binomial(${1:par1}, ${2:par2}, ${3:par3}, ${4:which})" }, + { "trigger": "stats_cdf_noncentral_chisquare", "contents": "stats_cdf_noncentral_chisquare(${1:par1}, ${2:par2}, ${3:par3}, ${4:which})" }, + { "trigger": "stats_cdf_noncentral_f", "contents": "stats_cdf_noncentral_f(${1:par1}, ${2:par2}, ${3:par3}, ${4:par4}, ${5:which})" }, + { "trigger": "stats_cdf_poisson", "contents": "stats_cdf_poisson(${1:par1}, ${2:par2}, ${3:which})" }, + { "trigger": "stats_cdf_t", "contents": "stats_cdf_t(${1:par1}, ${2:par2}, ${3:which})" }, + { "trigger": "stats_cdf_uniform", "contents": "stats_cdf_uniform(${1:par1}, ${2:par2}, ${3:par3}, ${4:which})" }, + { "trigger": "stats_cdf_weibull", "contents": "stats_cdf_weibull(${1:par1}, ${2:par2}, ${3:par3}, ${4:which})" }, + { "trigger": "stats_covariance", "contents": "stats_covariance(${1:a}, ${2:b})" }, + { "trigger": "stats_den_uniform", "contents": "stats_den_uniform(${1:x}, ${2:a}, ${3:b})" }, + { "trigger": "stats_dens_beta", "contents": "stats_dens_beta(${1:x}, ${2:a}, ${3:b})" }, + { "trigger": "stats_dens_cauchy", "contents": "stats_dens_cauchy(${1:x}, ${2:ave}, ${3:stdev})" }, + { "trigger": "stats_dens_chisquare", "contents": "stats_dens_chisquare(${1:x}, ${2:dfr})" }, + { "trigger": "stats_dens_exponential", "contents": "stats_dens_exponential(${1:x}, ${2:scale})" }, + { "trigger": "stats_dens_f", "contents": "stats_dens_f(${1:x}, ${2:dfr1}, ${3:dfr2})" }, + { "trigger": "stats_dens_gamma", "contents": "stats_dens_gamma(${1:x}, ${2:shape}, ${3:scale})" }, + { "trigger": "stats_dens_laplace", "contents": "stats_dens_laplace(${1:x}, ${2:ave}, ${3:stdev})" }, + { "trigger": "stats_dens_logistic", "contents": "stats_dens_logistic(${1:x}, ${2:ave}, ${3:stdev})" }, + { "trigger": "stats_dens_negative_binomial", "contents": "stats_dens_negative_binomial(${1:x}, ${2:n}, ${3:pi})" }, + { "trigger": "stats_dens_normal", "contents": "stats_dens_normal(${1:x}, ${2:ave}, ${3:stdev})" }, + { "trigger": "stats_dens_pmf_binomial", "contents": "stats_dens_pmf_binomial(${1:x}, ${2:n}, ${3:pi})" }, + { "trigger": "stats_dens_pmf_hypergeometric", "contents": "stats_dens_pmf_hypergeometric(${1:n1}, ${2:n2}, ${3:N1}, ${4:N2})" }, + { "trigger": "stats_dens_pmf_poisson", "contents": "stats_dens_pmf_poisson(${1:x}, ${2:lb})" }, + { "trigger": "stats_dens_t", "contents": "stats_dens_t(${1:x}, ${2:dfr})" }, + { "trigger": "stats_dens_weibull", "contents": "stats_dens_weibull(${1:x}, ${2:a}, ${3:b})" }, + { "trigger": "stats_harmonic_mean", "contents": "stats_harmonic_mean(${1:a})" }, + { "trigger": "stats_kurtosis", "contents": "stats_kurtosis(${1:a})" }, + { "trigger": "stats_rand_gen_beta", "contents": "stats_rand_gen_beta(${1:a}, ${2:b})" }, + { "trigger": "stats_rand_gen_chisquare", "contents": "stats_rand_gen_chisquare(${1:df})" }, + { "trigger": "stats_rand_gen_exponential", "contents": "stats_rand_gen_exponential(${1:av})" }, + { "trigger": "stats_rand_gen_f", "contents": "stats_rand_gen_f(${1:dfn}, ${2:dfd})" }, + { "trigger": "stats_rand_gen_funiform", "contents": "stats_rand_gen_funiform(${1:low}, ${2:high})" }, + { "trigger": "stats_rand_gen_gamma", "contents": "stats_rand_gen_gamma(${1:a}, ${2:r})" }, + { "trigger": "stats_rand_gen_ibinomial", "contents": "stats_rand_gen_ibinomial(${1:n}, ${2:pp})" }, + { "trigger": "stats_rand_gen_ibinomial_negative", "contents": "stats_rand_gen_ibinomial_negative(${1:n}, ${2:p})" }, + { "trigger": "stats_rand_gen_int", "contents": "stats_rand_gen_int(${1:oid})" }, + { "trigger": "stats_rand_gen_ipoisson", "contents": "stats_rand_gen_ipoisson(${1:mu})" }, + { "trigger": "stats_rand_gen_iuniform", "contents": "stats_rand_gen_iuniform(${1:low}, ${2:high})" }, + { "trigger": "stats_rand_gen_noncenral_chisquare", "contents": "stats_rand_gen_noncenral_chisquare(${1:df}, ${2:xnonc})" }, + { "trigger": "stats_rand_gen_noncentral_f", "contents": "stats_rand_gen_noncentral_f(${1:dfn}, ${2:dfd}, ${3:xnonc})" }, + { "trigger": "stats_rand_gen_noncentral_t", "contents": "stats_rand_gen_noncentral_t(${1:df}, ${2:xnonc})" }, + { "trigger": "stats_rand_gen_normal", "contents": "stats_rand_gen_normal(${1:av}, ${2:sd})" }, + { "trigger": "stats_rand_gen_t", "contents": "stats_rand_gen_t(${1:df})" }, + { "trigger": "stats_rand_get_seeds", "contents": "stats_rand_get_seeds(${1:oid})" }, + { "trigger": "stats_rand_phrase_to_seeds", "contents": "stats_rand_phrase_to_seeds(${1:phrase})" }, + { "trigger": "stats_rand_ranf", "contents": "stats_rand_ranf(${1:oid})" }, + { "trigger": "stats_rand_setall", "contents": "stats_rand_setall(${1:iseed1}, ${2:iseed2})" }, + { "trigger": "stats_skew", "contents": "stats_skew(${1:a})" }, + { "trigger": "stats_standard_deviation", "contents": "stats_standard_deviation(${1:a})" }, + { "trigger": "stats_stat_binomial_coef", "contents": "stats_stat_binomial_coef(${1:x}, ${2:n})" }, + { "trigger": "stats_stat_correlation", "contents": "stats_stat_correlation(${1:arr1}, ${2:arr2})" }, + { "trigger": "stats_stat_gennch", "contents": "stats_stat_gennch(${1:n})" }, + { "trigger": "stats_stat_independent_t", "contents": "stats_stat_independent_t(${1:arr1}, ${2:arr2})" }, + { "trigger": "stats_stat_innerproduct", "contents": "stats_stat_innerproduct(${1:arr1}, ${2:arr2})" }, + { "trigger": "stats_stat_noncentral_t", "contents": "stats_stat_noncentral_t(${1:par1}, ${2:par2}, ${3:par3}, ${4:which})" }, + { "trigger": "stats_stat_paired_t", "contents": "stats_stat_paired_t(${1:arr1}, ${2:arr2})" }, + { "trigger": "stats_stat_percentile", "contents": "stats_stat_percentile(${1:df}, ${2:xnonc})" }, + { "trigger": "stats_stat_powersum", "contents": "stats_stat_powersum(${1:arr}, ${2:power})" }, + { "trigger": "stats_variance", "contents": "stats_variance(${1:a})" }, + { "trigger": "stomp_connect_error", "contents": "stomp_connect_error(${1:oid})" }, + { "trigger": "stomp_version", "contents": "stomp_version(${1:oid})" }, + { "trigger": "str_getcsv", "contents": "str_getcsv(${1:input})" }, + { "trigger": "str_ireplace", "contents": "str_ireplace(${1:search}, ${2:replace}, ${3:subject})" }, + { "trigger": "str_pad", "contents": "str_pad(${1:input}, ${2:pad_length})" }, + { "trigger": "str_repeat", "contents": "str_repeat(${1:input}, ${2:multiplier})" }, + { "trigger": "str_replace", "contents": "str_replace(${1:search}, ${2:replace}, ${3:subject})" }, + { "trigger": "str_rot13", "contents": "str_rot13(${1:str})" }, + { "trigger": "str_shuffle", "contents": "str_shuffle(${1:str})" }, + { "trigger": "str_split", "contents": "str_split(${1:string})" }, + { "trigger": "str_word_count", "contents": "str_word_count(${1:string})" }, + { "trigger": "strcasecmp", "contents": "strcasecmp(${1:str1}, ${2:str2})" }, + { "trigger": "strchr", "contents": "strchr()" }, + { "trigger": "strcmp", "contents": "strcmp(${1:str1}, ${2:str2})" }, + { "trigger": "strcoll", "contents": "strcoll(${1:str1}, ${2:str2})" }, + { "trigger": "strcspn", "contents": "strcspn(${1:str1}, ${2:str2})" }, + { "trigger": "stream_bucket_append", "contents": "stream_bucket_append(${1:brigade}, ${2:bucket})" }, + { "trigger": "stream_bucket_make_writeable", "contents": "stream_bucket_make_writeable(${1:brigade})" }, + { "trigger": "stream_bucket_new", "contents": "stream_bucket_new(${1:stream}, ${2:buffer})" }, + { "trigger": "stream_bucket_prepend", "contents": "stream_bucket_prepend(${1:brigade}, ${2:bucket})" }, + { "trigger": "stream_context_create", "contents": "stream_context_create()" }, + { "trigger": "stream_context_get_default", "contents": "stream_context_get_default()" }, + { "trigger": "stream_context_get_options", "contents": "stream_context_get_options(${1:stream_or_context})" }, + { "trigger": "stream_context_get_params", "contents": "stream_context_get_params(${1:stream_or_context})" }, + { "trigger": "stream_context_set_default", "contents": "stream_context_set_default(${1:options})" }, + { "trigger": "stream_context_set_option", "contents": "stream_context_set_option(${1:stream_or_context}, ${2:wrapper}, ${3:option}, ${4:value})" }, + { "trigger": "stream_context_set_params", "contents": "stream_context_set_params(${1:stream_or_context}, ${2:params})" }, + { "trigger": "stream_copy_to_stream", "contents": "stream_copy_to_stream(${1:source}, ${2:dest})" }, + { "trigger": "stream_encoding", "contents": "stream_encoding(${1:stream})" }, + { "trigger": "stream_filter_append", "contents": "stream_filter_append(${1:stream}, ${2:filtername})" }, + { "trigger": "stream_filter_prepend", "contents": "stream_filter_prepend(${1:stream}, ${2:filtername})" }, + { "trigger": "stream_filter_register", "contents": "stream_filter_register(${1:filtername}, ${2:classname})" }, + { "trigger": "stream_filter_remove", "contents": "stream_filter_remove(${1:stream_filter})" }, + { "trigger": "stream_get_contents", "contents": "stream_get_contents(${1:handle})" }, + { "trigger": "stream_get_filters", "contents": "stream_get_filters(${1:oid})" }, + { "trigger": "stream_get_line", "contents": "stream_get_line(${1:handle}, ${2:length})" }, + { "trigger": "stream_get_meta_data", "contents": "stream_get_meta_data(${1:stream})" }, + { "trigger": "stream_get_transports", "contents": "stream_get_transports(${1:oid})" }, + { "trigger": "stream_get_wrappers", "contents": "stream_get_wrappers(${1:oid})" }, + { "trigger": "stream_is_local", "contents": "stream_is_local(${1:stream_or_url})" }, + { "trigger": "stream_notification_callback", "contents": "stream_notification_callback(${1:notification_code}, ${2:severity}, ${3:message}, ${4:message_code}, ${5:bytes_transferred}, ${6:bytes_max})" }, + { "trigger": "stream_register_wrapper", "contents": "stream_register_wrapper()" }, + { "trigger": "stream_resolve_include_path", "contents": "stream_resolve_include_path(${1:filename})" }, + { "trigger": "stream_select", "contents": "stream_select(${1:read}, ${2:write}, ${3:except}, ${4:tv_sec})" }, + { "trigger": "stream_set_blocking", "contents": "stream_set_blocking(${1:stream}, ${2:mode})" }, + { "trigger": "stream_set_read_buffer", "contents": "stream_set_read_buffer(${1:stream}, ${2:buffer})" }, + { "trigger": "stream_set_timeout", "contents": "stream_set_timeout(${1:stream}, ${2:seconds})" }, + { "trigger": "stream_set_write_buffer", "contents": "stream_set_write_buffer(${1:stream}, ${2:buffer})" }, + { "trigger": "stream_socket_accept", "contents": "stream_socket_accept(${1:server_socket})" }, + { "trigger": "stream_socket_client", "contents": "stream_socket_client(${1:remote_socket})" }, + { "trigger": "stream_socket_enable_crypto", "contents": "stream_socket_enable_crypto(${1:stream}, ${2:enable})" }, + { "trigger": "stream_socket_get_name", "contents": "stream_socket_get_name(${1:handle}, ${2:want_peer})" }, + { "trigger": "stream_socket_pair", "contents": "stream_socket_pair(${1:domain}, ${2:type}, ${3:protocol})" }, + { "trigger": "stream_socket_recvfrom", "contents": "stream_socket_recvfrom(${1:socket}, ${2:length})" }, + { "trigger": "stream_socket_sendto", "contents": "stream_socket_sendto(${1:socket}, ${2:data})" }, + { "trigger": "stream_socket_server", "contents": "stream_socket_server(${1:local_socket})" }, + { "trigger": "stream_socket_shutdown", "contents": "stream_socket_shutdown(${1:stream}, ${2:how})" }, + { "trigger": "stream_supports_lock", "contents": "stream_supports_lock(${1:stream})" }, + { "trigger": "stream_wrapper_register", "contents": "stream_wrapper_register(${1:protocol}, ${2:classname})" }, + { "trigger": "stream_wrapper_restore", "contents": "stream_wrapper_restore(${1:protocol})" }, + { "trigger": "stream_wrapper_unregister", "contents": "stream_wrapper_unregister(${1:protocol})" }, + { "trigger": "strftime", "contents": "strftime(${1:format})" }, + { "trigger": "strip_tags", "contents": "strip_tags(${1:str})" }, + { "trigger": "stripcslashes", "contents": "stripcslashes(${1:str})" }, + { "trigger": "stripos", "contents": "stripos(${1:haystack}, ${2:needle})" }, + { "trigger": "stripslashes", "contents": "stripslashes(${1:str})" }, + { "trigger": "stristr", "contents": "stristr(${1:haystack}, ${2:needle})" }, + { "trigger": "strlen", "contents": "strlen(${1:string})" }, + { "trigger": "strnatcasecmp", "contents": "strnatcasecmp(${1:str1}, ${2:str2})" }, + { "trigger": "strnatcmp", "contents": "strnatcmp(${1:str1}, ${2:str2})" }, + { "trigger": "strncasecmp", "contents": "strncasecmp(${1:str1}, ${2:str2}, ${3:len})" }, + { "trigger": "strncmp", "contents": "strncmp(${1:str1}, ${2:str2}, ${3:len})" }, + { "trigger": "strpbrk", "contents": "strpbrk(${1:haystack}, ${2:char_list})" }, + { "trigger": "strpos", "contents": "strpos(${1:haystack}, ${2:needle})" }, + { "trigger": "strptime", "contents": "strptime(${1:date}, ${2:format})" }, + { "trigger": "strrchr", "contents": "strrchr(${1:haystack}, ${2:needle})" }, + { "trigger": "strrev", "contents": "strrev(${1:string})" }, + { "trigger": "strripos", "contents": "strripos(${1:haystack}, ${2:needle})" }, + { "trigger": "strrpos", "contents": "strrpos(${1:haystack}, ${2:needle})" }, + { "trigger": "strspn", "contents": "strspn(${1:subject}, ${2:mask})" }, + { "trigger": "strstr", "contents": "strstr(${1:haystack}, ${2:needle})" }, + { "trigger": "strtok", "contents": "strtok(${1:str}, ${2:token})" }, + { "trigger": "strtolower", "contents": "strtolower(${1:str})" }, + { "trigger": "strtotime", "contents": "strtotime(${1:time})" }, + { "trigger": "strtoupper", "contents": "strtoupper(${1:string})" }, + { "trigger": "strtr", "contents": "strtr(${1:str}, ${2:from}, ${3:to})" }, + { "trigger": "strval", "contents": "strval(${1:var})" }, + { "trigger": "substr", "contents": "substr(${1:string}, ${2:start})" }, + { "trigger": "substr_compare", "contents": "substr_compare(${1:main_str}, ${2:str}, ${3:offset})" }, + { "trigger": "substr_count", "contents": "substr_count(${1:haystack}, ${2:needle})" }, + { "trigger": "substr_replace", "contents": "substr_replace(${1:string}, ${2:replacement}, ${3:start})" }, + { "trigger": "svn_add", "contents": "svn_add(${1:path})" }, + { "trigger": "svn_auth_get_parameter", "contents": "svn_auth_get_parameter(${1:key})" }, + { "trigger": "svn_auth_set_parameter", "contents": "svn_auth_set_parameter(${1:key}, ${2:value})" }, + { "trigger": "svn_blame", "contents": "svn_blame(${1:repository_url})" }, + { "trigger": "svn_cat", "contents": "svn_cat(${1:repos_url})" }, + { "trigger": "svn_checkout", "contents": "svn_checkout(${1:repos}, ${2:targetpath})" }, + { "trigger": "svn_cleanup", "contents": "svn_cleanup(${1:workingdir})" }, + { "trigger": "svn_client_version", "contents": "svn_client_version(${1:oid})" }, + { "trigger": "svn_commit", "contents": "svn_commit(${1:log}, ${2:targets})" }, + { "trigger": "svn_delete", "contents": "svn_delete(${1:path})" }, + { "trigger": "svn_diff", "contents": "svn_diff(${1:path1}, ${2:rev1}, ${3:path2}, ${4:rev2})" }, + { "trigger": "svn_export", "contents": "svn_export(${1:frompath}, ${2:topath})" }, + { "trigger": "svn_fs_abort_txn", "contents": "svn_fs_abort_txn(${1:txn})" }, + { "trigger": "svn_fs_apply_text", "contents": "svn_fs_apply_text(${1:root}, ${2:path})" }, + { "trigger": "svn_fs_begin_txn2", "contents": "svn_fs_begin_txn2(${1:repos}, ${2:rev})" }, + { "trigger": "svn_fs_change_node_prop", "contents": "svn_fs_change_node_prop(${1:root}, ${2:path}, ${3:name}, ${4:value})" }, + { "trigger": "svn_fs_check_path", "contents": "svn_fs_check_path(${1:fsroot}, ${2:path})" }, + { "trigger": "svn_fs_contents_changed", "contents": "svn_fs_contents_changed(${1:root1}, ${2:path1}, ${3:root2}, ${4:path2})" }, + { "trigger": "svn_fs_copy", "contents": "svn_fs_copy(${1:from_root}, ${2:from_path}, ${3:to_root}, ${4:to_path})" }, + { "trigger": "svn_fs_delete", "contents": "svn_fs_delete(${1:root}, ${2:path})" }, + { "trigger": "svn_fs_dir_entries", "contents": "svn_fs_dir_entries(${1:fsroot}, ${2:path})" }, + { "trigger": "svn_fs_file_contents", "contents": "svn_fs_file_contents(${1:fsroot}, ${2:path})" }, + { "trigger": "svn_fs_file_length", "contents": "svn_fs_file_length(${1:fsroot}, ${2:path})" }, + { "trigger": "svn_fs_is_dir", "contents": "svn_fs_is_dir(${1:root}, ${2:path})" }, + { "trigger": "svn_fs_is_file", "contents": "svn_fs_is_file(${1:root}, ${2:path})" }, + { "trigger": "svn_fs_make_dir", "contents": "svn_fs_make_dir(${1:root}, ${2:path})" }, + { "trigger": "svn_fs_make_file", "contents": "svn_fs_make_file(${1:root}, ${2:path})" }, + { "trigger": "svn_fs_node_created_rev", "contents": "svn_fs_node_created_rev(${1:fsroot}, ${2:path})" }, + { "trigger": "svn_fs_node_prop", "contents": "svn_fs_node_prop(${1:fsroot}, ${2:path}, ${3:propname})" }, + { "trigger": "svn_fs_props_changed", "contents": "svn_fs_props_changed(${1:root1}, ${2:path1}, ${3:root2}, ${4:path2})" }, + { "trigger": "svn_fs_revision_prop", "contents": "svn_fs_revision_prop(${1:fs}, ${2:revnum}, ${3:propname})" }, + { "trigger": "svn_fs_revision_root", "contents": "svn_fs_revision_root(${1:fs}, ${2:revnum})" }, + { "trigger": "svn_fs_txn_root", "contents": "svn_fs_txn_root(${1:txn})" }, + { "trigger": "svn_fs_youngest_rev", "contents": "svn_fs_youngest_rev(${1:fs})" }, + { "trigger": "svn_import", "contents": "svn_import(${1:path}, ${2:url}, ${3:nonrecursive})" }, + { "trigger": "svn_log", "contents": "svn_log(${1:repos_url})" }, + { "trigger": "svn_ls", "contents": "svn_ls(${1:repos_url})" }, + { "trigger": "svn_mkdir", "contents": "svn_mkdir(${1:path})" }, + { "trigger": "svn_repos_create", "contents": "svn_repos_create(${1:path})" }, + { "trigger": "svn_repos_fs", "contents": "svn_repos_fs(${1:repos})" }, + { "trigger": "svn_repos_fs_begin_txn_for_commit", "contents": "svn_repos_fs_begin_txn_for_commit(${1:repos}, ${2:rev}, ${3:author}, ${4:log_msg})" }, + { "trigger": "svn_repos_fs_commit_txn", "contents": "svn_repos_fs_commit_txn(${1:txn})" }, + { "trigger": "svn_repos_hotcopy", "contents": "svn_repos_hotcopy(${1:repospath}, ${2:destpath}, ${3:cleanlogs})" }, + { "trigger": "svn_repos_open", "contents": "svn_repos_open(${1:path})" }, + { "trigger": "svn_repos_recover", "contents": "svn_repos_recover(${1:path})" }, + { "trigger": "svn_revert", "contents": "svn_revert(${1:path})" }, + { "trigger": "svn_status", "contents": "svn_status(${1:path})" }, + { "trigger": "svn_update", "contents": "svn_update(${1:path})" }, + { "trigger": "swf_actiongeturl", "contents": "swf_actiongeturl(${1:url}, ${2:target})" }, + { "trigger": "swf_actiongotoframe", "contents": "swf_actiongotoframe(${1:framenumber})" }, + { "trigger": "swf_actiongotolabel", "contents": "swf_actiongotolabel(${1:label})" }, + { "trigger": "swf_actionnextframe", "contents": "swf_actionnextframe(${1:oid})" }, + { "trigger": "swf_actionplay", "contents": "swf_actionplay(${1:oid})" }, + { "trigger": "swf_actionprevframe", "contents": "swf_actionprevframe(${1:oid})" }, + { "trigger": "swf_actionsettarget", "contents": "swf_actionsettarget(${1:target})" }, + { "trigger": "swf_actionstop", "contents": "swf_actionstop(${1:oid})" }, + { "trigger": "swf_actiontogglequality", "contents": "swf_actiontogglequality(${1:oid})" }, + { "trigger": "swf_actionwaitforframe", "contents": "swf_actionwaitforframe(${1:framenumber}, ${2:skipcount})" }, + { "trigger": "swf_addbuttonrecord", "contents": "swf_addbuttonrecord(${1:states}, ${2:shapeid}, ${3:depth})" }, + { "trigger": "swf_addcolor", "contents": "swf_addcolor(${1:r}, ${2:g}, ${3:b}, ${4:a})" }, + { "trigger": "swf_closefile", "contents": "swf_closefile()" }, + { "trigger": "swf_definebitmap", "contents": "swf_definebitmap(${1:objid}, ${2:image_name})" }, + { "trigger": "swf_definefont", "contents": "swf_definefont(${1:fontid}, ${2:fontname})" }, + { "trigger": "swf_defineline", "contents": "swf_defineline(${1:objid}, ${2:x1}, ${3:y1}, ${4:x2}, ${5:y2}, ${6:width})" }, + { "trigger": "swf_definepoly", "contents": "swf_definepoly(${1:objid}, ${2:coords}, ${3:npoints}, ${4:width})" }, + { "trigger": "swf_definerect", "contents": "swf_definerect(${1:objid}, ${2:x1}, ${3:y1}, ${4:x2}, ${5:y2}, ${6:width})" }, + { "trigger": "swf_definetext", "contents": "swf_definetext(${1:objid}, ${2:str}, ${3:docenter})" }, + { "trigger": "swf_endbutton", "contents": "swf_endbutton(${1:oid})" }, + { "trigger": "swf_enddoaction", "contents": "swf_enddoaction(${1:oid})" }, + { "trigger": "swf_endshape", "contents": "swf_endshape(${1:oid})" }, + { "trigger": "swf_endsymbol", "contents": "swf_endsymbol(${1:oid})" }, + { "trigger": "swf_fontsize", "contents": "swf_fontsize(${1:size})" }, + { "trigger": "swf_fontslant", "contents": "swf_fontslant(${1:slant})" }, + { "trigger": "swf_fonttracking", "contents": "swf_fonttracking(${1:tracking})" }, + { "trigger": "swf_getbitmapinfo", "contents": "swf_getbitmapinfo(${1:bitmapid})" }, + { "trigger": "swf_getfontinfo", "contents": "swf_getfontinfo(${1:oid})" }, + { "trigger": "swf_getframe", "contents": "swf_getframe(${1:oid})" }, + { "trigger": "swf_labelframe", "contents": "swf_labelframe(${1:name})" }, + { "trigger": "swf_lookat", "contents": "swf_lookat(${1:view_x}, ${2:view_y}, ${3:view_z}, ${4:reference_x}, ${5:reference_y}, ${6:reference_z}, ${7:twist})" }, + { "trigger": "swf_modifyobject", "contents": "swf_modifyobject(${1:depth}, ${2:how})" }, + { "trigger": "swf_mulcolor", "contents": "swf_mulcolor(${1:r}, ${2:g}, ${3:b}, ${4:a})" }, + { "trigger": "swf_nextid", "contents": "swf_nextid(${1:oid})" }, + { "trigger": "swf_oncondition", "contents": "swf_oncondition(${1:transition})" }, + { "trigger": "swf_openfile", "contents": "swf_openfile(${1:filename}, ${2:width}, ${3:height}, ${4:framerate}, ${5:r}, ${6:g}, ${7:b})" }, + { "trigger": "swf_ortho", "contents": "swf_ortho(${1:xmin}, ${2:xmax}, ${3:ymin}, ${4:ymax}, ${5:zmin}, ${6:zmax})" }, + { "trigger": "swf_ortho2", "contents": "swf_ortho2(${1:xmin}, ${2:xmax}, ${3:ymin}, ${4:ymax})" }, + { "trigger": "swf_perspective", "contents": "swf_perspective(${1:fovy}, ${2:aspect}, ${3:near}, ${4:far})" }, + { "trigger": "swf_placeobject", "contents": "swf_placeobject(${1:objid}, ${2:depth})" }, + { "trigger": "swf_polarview", "contents": "swf_polarview(${1:dist}, ${2:azimuth}, ${3:incidence}, ${4:twist})" }, + { "trigger": "swf_popmatrix", "contents": "swf_popmatrix(${1:oid})" }, + { "trigger": "swf_posround", "contents": "swf_posround(${1:round})" }, + { "trigger": "swf_pushmatrix", "contents": "swf_pushmatrix(${1:oid})" }, + { "trigger": "swf_removeobject", "contents": "swf_removeobject(${1:depth})" }, + { "trigger": "swf_rotate", "contents": "swf_rotate(${1:angle}, ${2:axis})" }, + { "trigger": "swf_scale", "contents": "swf_scale(${1:x}, ${2:y}, ${3:z})" }, + { "trigger": "swf_setfont", "contents": "swf_setfont(${1:fontid})" }, + { "trigger": "swf_setframe", "contents": "swf_setframe(${1:framenumber})" }, + { "trigger": "swf_shapearc", "contents": "swf_shapearc(${1:x}, ${2:y}, ${3:r}, ${4:ang1}, ${5:ang2})" }, + { "trigger": "swf_shapecurveto", "contents": "swf_shapecurveto(${1:x1}, ${2:y1}, ${3:x2}, ${4:y2})" }, + { "trigger": "swf_shapecurveto3", "contents": "swf_shapecurveto3(${1:x1}, ${2:y1}, ${3:x2}, ${4:y2}, ${5:x3}, ${6:y3})" }, + { "trigger": "swf_shapefillbitmapclip", "contents": "swf_shapefillbitmapclip(${1:bitmapid})" }, + { "trigger": "swf_shapefillbitmaptile", "contents": "swf_shapefillbitmaptile(${1:bitmapid})" }, + { "trigger": "swf_shapefilloff", "contents": "swf_shapefilloff(${1:oid})" }, + { "trigger": "swf_shapefillsolid", "contents": "swf_shapefillsolid(${1:r}, ${2:g}, ${3:b}, ${4:a})" }, + { "trigger": "swf_shapelinesolid", "contents": "swf_shapelinesolid(${1:r}, ${2:g}, ${3:b}, ${4:a}, ${5:width})" }, + { "trigger": "swf_shapelineto", "contents": "swf_shapelineto(${1:x}, ${2:y})" }, + { "trigger": "swf_shapemoveto", "contents": "swf_shapemoveto(${1:x}, ${2:y})" }, + { "trigger": "swf_showframe", "contents": "swf_showframe(${1:oid})" }, + { "trigger": "swf_startbutton", "contents": "swf_startbutton(${1:objid}, ${2:type})" }, + { "trigger": "swf_startdoaction", "contents": "swf_startdoaction(${1:oid})" }, + { "trigger": "swf_startshape", "contents": "swf_startshape(${1:objid})" }, + { "trigger": "swf_startsymbol", "contents": "swf_startsymbol(${1:objid})" }, + { "trigger": "swf_textwidth", "contents": "swf_textwidth(${1:str})" }, + { "trigger": "swf_translate", "contents": "swf_translate(${1:x}, ${2:y}, ${3:z})" }, + { "trigger": "swf_viewport", "contents": "swf_viewport(${1:xmin}, ${2:xmax}, ${3:ymin}, ${4:ymax})" }, + { "trigger": "SWFSound", "contents": "SWFSound(${1:filename})" }, + { "trigger": "sybase_affected_rows", "contents": "sybase_affected_rows()" }, + { "trigger": "sybase_close", "contents": "sybase_close()" }, + { "trigger": "sybase_connect", "contents": "sybase_connect()" }, + { "trigger": "sybase_data_seek", "contents": "sybase_data_seek(${1:result_identifier}, ${2:row_number})" }, + { "trigger": "sybase_deadlock_retry_count", "contents": "sybase_deadlock_retry_count(${1:retry_count})" }, + { "trigger": "sybase_fetch_array", "contents": "sybase_fetch_array(${1:result})" }, + { "trigger": "sybase_fetch_assoc", "contents": "sybase_fetch_assoc(${1:result})" }, + { "trigger": "sybase_fetch_field", "contents": "sybase_fetch_field(${1:result})" }, + { "trigger": "sybase_fetch_object", "contents": "sybase_fetch_object(${1:result})" }, + { "trigger": "sybase_fetch_row", "contents": "sybase_fetch_row(${1:result})" }, + { "trigger": "sybase_field_seek", "contents": "sybase_field_seek(${1:result}, ${2:field_offset})" }, + { "trigger": "sybase_free_result", "contents": "sybase_free_result(${1:result})" }, + { "trigger": "sybase_get_last_message", "contents": "sybase_get_last_message(${1:oid})" }, + { "trigger": "sybase_min_client_severity", "contents": "sybase_min_client_severity(${1:severity})" }, + { "trigger": "sybase_min_error_severity", "contents": "sybase_min_error_severity(${1:severity})" }, + { "trigger": "sybase_min_message_severity", "contents": "sybase_min_message_severity(${1:severity})" }, + { "trigger": "sybase_min_server_severity", "contents": "sybase_min_server_severity(${1:severity})" }, + { "trigger": "sybase_num_fields", "contents": "sybase_num_fields(${1:result})" }, + { "trigger": "sybase_num_rows", "contents": "sybase_num_rows(${1:result})" }, + { "trigger": "sybase_pconnect", "contents": "sybase_pconnect()" }, + { "trigger": "sybase_query", "contents": "sybase_query(${1:query})" }, + { "trigger": "sybase_result", "contents": "sybase_result(${1:result}, ${2:row}, ${3:field})" }, + { "trigger": "sybase_select_db", "contents": "sybase_select_db(${1:database_name})" }, + { "trigger": "sybase_set_message_handler", "contents": "sybase_set_message_handler(${1:handler})" }, + { "trigger": "sybase_unbuffered_query", "contents": "sybase_unbuffered_query(${1:query}, ${2:link_identifier})" }, + { "trigger": "symlink", "contents": "symlink(${1:target}, ${2:link})" }, + { "trigger": "sys_get_temp_dir", "contents": "sys_get_temp_dir(${1:oid})" }, + { "trigger": "sys_getloadavg", "contents": "sys_getloadavg(${1:oid})" }, + { "trigger": "syslog", "contents": "syslog(${1:priority}, ${2:message})" }, + { "trigger": "system", "contents": "system(${1:command})" }, + { "trigger": "tan", "contents": "tan(${1:arg})" }, + { "trigger": "tanh", "contents": "tanh(${1:arg})" }, + { "trigger": "tcpwrap_check", "contents": "tcpwrap_check(${1:daemon}, ${2:address})" }, + { "trigger": "tempnam", "contents": "tempnam(${1:dir}, ${2:prefix})" }, + { "trigger": "textdomain", "contents": "textdomain(${1:text_domain})" }, + { "trigger": "tidy_access_count", "contents": "tidy_access_count(${1:object})" }, + { "trigger": "tidy_config_count", "contents": "tidy_config_count(${1:object})" }, + { "trigger": "tidy_error_count", "contents": "tidy_error_count(${1:object})" }, + { "trigger": "tidy_get_error_buffer", "contents": "tidy_get_error_buffer(${1:object})" }, + { "trigger": "tidy_get_output", "contents": "tidy_get_output(${1:object})" }, + { "trigger": "tidy_load_config", "contents": "tidy_load_config(${1:filename}, ${2:encoding})" }, + { "trigger": "tidy_reset_config", "contents": "tidy_reset_config(${1:oid})" }, + { "trigger": "tidy_save_config", "contents": "tidy_save_config(${1:filename})" }, + { "trigger": "tidy_set_encoding", "contents": "tidy_set_encoding(${1:encoding})" }, + { "trigger": "tidy_setopt", "contents": "tidy_setopt(${1:option}, ${2:value})" }, + { "trigger": "tidy_warning_count", "contents": "tidy_warning_count(${1:object})" }, + { "trigger": "time", "contents": "time(${1:oid})" }, + { "trigger": "time_nanosleep", "contents": "time_nanosleep(${1:seconds}, ${2:nanoseconds})" }, + { "trigger": "time_sleep_until", "contents": "time_sleep_until(${1:timestamp})" }, + { "trigger": "timezone_abbreviations_list", "contents": "timezone_abbreviations_list()" }, + { "trigger": "timezone_identifiers_list", "contents": "timezone_identifiers_list()" }, + { "trigger": "timezone_location_get", "contents": "timezone_location_get()" }, + { "trigger": "timezone_name_from_abbr", "contents": "timezone_name_from_abbr(${1:abbr})" }, + { "trigger": "timezone_name_get", "contents": "timezone_name_get()" }, + { "trigger": "timezone_offset_get", "contents": "timezone_offset_get()" }, + { "trigger": "timezone_open", "contents": "timezone_open()" }, + { "trigger": "timezone_transitions_get", "contents": "timezone_transitions_get()" }, + { "trigger": "timezone_version_get", "contents": "timezone_version_get(${1:oid})" }, + { "trigger": "tmpfile", "contents": "tmpfile(${1:oid})" }, + { "trigger": "token_get_all", "contents": "token_get_all(${1:source})" }, + { "trigger": "token_name", "contents": "token_name(${1:token})" }, + { "trigger": "touch", "contents": "touch(${1:filename})" }, + { "trigger": "trigger_error", "contents": "trigger_error(${1:error_msg})" }, + { "trigger": "trim", "contents": "trim(${1:str})" }, + { "trigger": "uasort", "contents": "uasort(${1:array}, ${2:cmp_function})" }, + { "trigger": "ucfirst", "contents": "ucfirst(${1:str})" }, + { "trigger": "ucwords", "contents": "ucwords(${1:str})" }, + { "trigger": "udm_add_search_limit", "contents": "udm_add_search_limit(${1:agent}, ${2:var}, ${3:val})" }, + { "trigger": "udm_alloc_agent", "contents": "udm_alloc_agent(${1:dbaddr})" }, + { "trigger": "udm_alloc_agent_array", "contents": "udm_alloc_agent_array(${1:databases})" }, + { "trigger": "udm_api_version", "contents": "udm_api_version(${1:oid})" }, + { "trigger": "udm_cat_list", "contents": "udm_cat_list(${1:agent}, ${2:category})" }, + { "trigger": "udm_cat_path", "contents": "udm_cat_path(${1:agent}, ${2:category})" }, + { "trigger": "udm_check_charset", "contents": "udm_check_charset(${1:agent}, ${2:charset})" }, + { "trigger": "udm_check_stored", "contents": "udm_check_stored(${1:agent}, ${2:link}, ${3:doc_id})" }, + { "trigger": "udm_clear_search_limits", "contents": "udm_clear_search_limits(${1:agent})" }, + { "trigger": "udm_close_stored", "contents": "udm_close_stored(${1:agent}, ${2:link})" }, + { "trigger": "udm_crc32", "contents": "udm_crc32(${1:agent}, ${2:str})" }, + { "trigger": "udm_errno", "contents": "udm_errno(${1:agent})" }, + { "trigger": "udm_error", "contents": "udm_error(${1:agent})" }, + { "trigger": "udm_find", "contents": "udm_find(${1:agent}, ${2:query})" }, + { "trigger": "udm_free_agent", "contents": "udm_free_agent(${1:agent})" }, + { "trigger": "udm_free_ispell_data", "contents": "udm_free_ispell_data(${1:agent})" }, + { "trigger": "udm_free_res", "contents": "udm_free_res(${1:res})" }, + { "trigger": "udm_get_doc_count", "contents": "udm_get_doc_count(${1:agent})" }, + { "trigger": "udm_get_res_field", "contents": "udm_get_res_field(${1:res}, ${2:row}, ${3:field})" }, + { "trigger": "udm_get_res_param", "contents": "udm_get_res_param(${1:res}, ${2:param})" }, + { "trigger": "udm_hash32", "contents": "udm_hash32(${1:agent}, ${2:str})" }, + { "trigger": "udm_load_ispell_data", "contents": "udm_load_ispell_data(${1:agent}, ${2:var}, ${3:val1}, ${4:val2}, ${5:flag})" }, + { "trigger": "udm_open_stored", "contents": "udm_open_stored(${1:agent}, ${2:storedaddr})" }, + { "trigger": "udm_set_agent_param", "contents": "udm_set_agent_param(${1:agent}, ${2:var}, ${3:val})" }, + { "trigger": "uksort", "contents": "uksort(${1:array}, ${2:cmp_function})" }, + { "trigger": "umask", "contents": "umask()" }, + { "trigger": "uniqid", "contents": "uniqid()" }, + { "trigger": "unixtojd", "contents": "unixtojd()" }, + { "trigger": "unlink", "contents": "unlink(${1:filename})" }, + { "trigger": "unpack", "contents": "unpack(${1:format}, ${2:data})" }, + { "trigger": "unregister_tick_function", "contents": "unregister_tick_function(${1:function_name})" }, + { "trigger": "unserialize", "contents": "unserialize(${1:str})" }, + { "trigger": "unset", "contents": "unset(${1:var})" }, + { "trigger": "urldecode", "contents": "urldecode(${1:str})" }, + { "trigger": "urlencode", "contents": "urlencode(${1:str})" }, + { "trigger": "use_soap_error_handler", "contents": "use_soap_error_handler()" }, + { "trigger": "user_error", "contents": "user_error()" }, + { "trigger": "usleep", "contents": "usleep(${1:micro_seconds})" }, + { "trigger": "usort", "contents": "usort(${1:array}, ${2:cmp_function})" }, + { "trigger": "utf8_decode", "contents": "utf8_decode(${1:data})" }, + { "trigger": "utf8_encode", "contents": "utf8_encode(${1:data})" }, + { "trigger": "var_dump", "contents": "var_dump(${1:expression})" }, + { "trigger": "var_export", "contents": "var_export(${1:expression})" }, + { "trigger": "variant_abs", "contents": "variant_abs(${1:val})" }, + { "trigger": "variant_add", "contents": "variant_add(${1:left}, ${2:right})" }, + { "trigger": "variant_and", "contents": "variant_and(${1:left}, ${2:right})" }, + { "trigger": "variant_cast", "contents": "variant_cast(${1:variant}, ${2:type})" }, + { "trigger": "variant_cat", "contents": "variant_cat(${1:left}, ${2:right})" }, + { "trigger": "variant_cmp", "contents": "variant_cmp(${1:left}, ${2:right})" }, + { "trigger": "variant_date_from_timestamp", "contents": "variant_date_from_timestamp(${1:timestamp})" }, + { "trigger": "variant_date_to_timestamp", "contents": "variant_date_to_timestamp(${1:variant})" }, + { "trigger": "variant_div", "contents": "variant_div(${1:left}, ${2:right})" }, + { "trigger": "variant_eqv", "contents": "variant_eqv(${1:left}, ${2:right})" }, + { "trigger": "variant_fix", "contents": "variant_fix(${1:variant})" }, + { "trigger": "variant_get_type", "contents": "variant_get_type(${1:variant})" }, + { "trigger": "variant_idiv", "contents": "variant_idiv(${1:left}, ${2:right})" }, + { "trigger": "variant_imp", "contents": "variant_imp(${1:left}, ${2:right})" }, + { "trigger": "variant_int", "contents": "variant_int(${1:variant})" }, + { "trigger": "variant_mod", "contents": "variant_mod(${1:left}, ${2:right})" }, + { "trigger": "variant_mul", "contents": "variant_mul(${1:left}, ${2:right})" }, + { "trigger": "variant_neg", "contents": "variant_neg(${1:variant})" }, + { "trigger": "variant_not", "contents": "variant_not(${1:variant})" }, + { "trigger": "variant_or", "contents": "variant_or(${1:left}, ${2:right})" }, + { "trigger": "variant_pow", "contents": "variant_pow(${1:left}, ${2:right})" }, + { "trigger": "variant_round", "contents": "variant_round(${1:variant}, ${2:decimals})" }, + { "trigger": "variant_set", "contents": "variant_set(${1:variant}, ${2:value})" }, + { "trigger": "variant_set_type", "contents": "variant_set_type(${1:variant}, ${2:type})" }, + { "trigger": "variant_sub", "contents": "variant_sub(${1:left}, ${2:right})" }, + { "trigger": "variant_xor", "contents": "variant_xor(${1:left}, ${2:right})" }, + { "trigger": "version_compare", "contents": "version_compare(${1:version1}, ${2:version2})" }, + { "trigger": "vfprintf", "contents": "vfprintf(${1:handle}, ${2:format}, ${3:args})" }, + { "trigger": "virtual", "contents": "virtual(${1:filename})" }, + { "trigger": "vpopmail_add_alias_domain", "contents": "vpopmail_add_alias_domain(${1:domain}, ${2:aliasdomain})" }, + { "trigger": "vpopmail_add_alias_domain_ex", "contents": "vpopmail_add_alias_domain_ex(${1:olddomain}, ${2:newdomain})" }, + { "trigger": "vpopmail_add_domain", "contents": "vpopmail_add_domain(${1:domain}, ${2:dir}, ${3:uid}, ${4:gid})" }, + { "trigger": "vpopmail_add_domain_ex", "contents": "vpopmail_add_domain_ex(${1:domain}, ${2:passwd})" }, + { "trigger": "vpopmail_add_user", "contents": "vpopmail_add_user(${1:user}, ${2:domain}, ${3:password})" }, + { "trigger": "vpopmail_alias_add", "contents": "vpopmail_alias_add(${1:user}, ${2:domain}, ${3:alias})" }, + { "trigger": "vpopmail_alias_del", "contents": "vpopmail_alias_del(${1:user}, ${2:domain})" }, + { "trigger": "vpopmail_alias_del_domain", "contents": "vpopmail_alias_del_domain(${1:domain})" }, + { "trigger": "vpopmail_alias_get", "contents": "vpopmail_alias_get(${1:alias}, ${2:domain})" }, + { "trigger": "vpopmail_alias_get_all", "contents": "vpopmail_alias_get_all(${1:domain})" }, + { "trigger": "vpopmail_auth_user", "contents": "vpopmail_auth_user(${1:user}, ${2:domain}, ${3:password})" }, + { "trigger": "vpopmail_del_domain", "contents": "vpopmail_del_domain(${1:domain})" }, + { "trigger": "vpopmail_del_domain_ex", "contents": "vpopmail_del_domain_ex(${1:domain})" }, + { "trigger": "vpopmail_del_user", "contents": "vpopmail_del_user(${1:user}, ${2:domain})" }, + { "trigger": "vpopmail_error", "contents": "vpopmail_error(${1:oid})" }, + { "trigger": "vpopmail_passwd", "contents": "vpopmail_passwd(${1:user}, ${2:domain}, ${3:password})" }, + { "trigger": "vpopmail_set_user_quota", "contents": "vpopmail_set_user_quota(${1:user}, ${2:domain}, ${3:quota})" }, + { "trigger": "vprintf", "contents": "vprintf(${1:format}, ${2:args})" }, + { "trigger": "vsprintf", "contents": "vsprintf(${1:format}, ${2:args})" }, + { "trigger": "w32api_deftype", "contents": "w32api_deftype(${1:typename}, ${2:member1_type}, ${3:member1_name})" }, + { "trigger": "w32api_init_dtype", "contents": "w32api_init_dtype(${1:typename}, ${2:value})" }, + { "trigger": "w32api_invoke_function", "contents": "w32api_invoke_function(${1:funcname}, ${2:argument})" }, + { "trigger": "w32api_register_function", "contents": "w32api_register_function(${1:library}, ${2:function_name}, ${3:return_type})" }, + { "trigger": "w32api_set_call_method", "contents": "w32api_set_call_method(${1:method})" }, + { "trigger": "wddx_add_vars", "contents": "wddx_add_vars(${1:packet_id}, ${2:var_name})" }, + { "trigger": "wddx_deserialize", "contents": "wddx_deserialize()" }, + { "trigger": "wddx_packet_end", "contents": "wddx_packet_end(${1:packet_id})" }, + { "trigger": "wddx_packet_start", "contents": "wddx_packet_start()" }, + { "trigger": "wddx_serialize_value", "contents": "wddx_serialize_value(${1:var})" }, + { "trigger": "wddx_serialize_vars", "contents": "wddx_serialize_vars(${1:var_name})" }, + { "trigger": "wddx_unserialize", "contents": "wddx_unserialize(${1:packet})" }, + { "trigger": "win32_continue_service", "contents": "win32_continue_service(${1:servicename})" }, + { "trigger": "win32_create_service", "contents": "win32_create_service(${1:details})" }, + { "trigger": "win32_delete_service", "contents": "win32_delete_service(${1:servicename})" }, + { "trigger": "win32_get_last_control_message", "contents": "win32_get_last_control_message(${1:oid})" }, + { "trigger": "win32_pause_service", "contents": "win32_pause_service(${1:servicename})" }, + { "trigger": "win32_ps_list_procs", "contents": "win32_ps_list_procs(${1:oid})" }, + { "trigger": "win32_ps_stat_mem", "contents": "win32_ps_stat_mem(${1:oid})" }, + { "trigger": "win32_ps_stat_proc", "contents": "win32_ps_stat_proc()" }, + { "trigger": "win32_query_service_status", "contents": "win32_query_service_status(${1:servicename})" }, + { "trigger": "win32_set_service_status", "contents": "win32_set_service_status(${1:status})" }, + { "trigger": "win32_start_service", "contents": "win32_start_service(${1:servicename})" }, + { "trigger": "win32_start_service_ctrl_dispatcher", "contents": "win32_start_service_ctrl_dispatcher(${1:name})" }, + { "trigger": "win32_stop_service", "contents": "win32_stop_service(${1:servicename})" }, + { "trigger": "wincache_fcache_fileinfo", "contents": "wincache_fcache_fileinfo()" }, + { "trigger": "wincache_fcache_meminfo", "contents": "wincache_fcache_meminfo(${1:oid})" }, + { "trigger": "wincache_lock", "contents": "wincache_lock(${1:key})" }, + { "trigger": "wincache_ocache_fileinfo", "contents": "wincache_ocache_fileinfo()" }, + { "trigger": "wincache_ocache_meminfo", "contents": "wincache_ocache_meminfo(${1:oid})" }, + { "trigger": "wincache_refresh_if_changed", "contents": "wincache_refresh_if_changed()" }, + { "trigger": "wincache_rplist_fileinfo", "contents": "wincache_rplist_fileinfo()" }, + { "trigger": "wincache_rplist_meminfo", "contents": "wincache_rplist_meminfo(${1:oid})" }, + { "trigger": "wincache_scache_info", "contents": "wincache_scache_info()" }, + { "trigger": "wincache_scache_meminfo", "contents": "wincache_scache_meminfo(${1:oid})" }, + { "trigger": "wincache_ucache_add", "contents": "wincache_ucache_add(${1:key}, ${2:value})" }, + { "trigger": "wincache_ucache_cas", "contents": "wincache_ucache_cas(${1:key}, ${2:old_value}, ${3:new_value})" }, + { "trigger": "wincache_ucache_clear", "contents": "wincache_ucache_clear(${1:oid})" }, + { "trigger": "wincache_ucache_dec", "contents": "wincache_ucache_dec(${1:key})" }, + { "trigger": "wincache_ucache_delete", "contents": "wincache_ucache_delete(${1:key})" }, + { "trigger": "wincache_ucache_exists", "contents": "wincache_ucache_exists(${1:key})" }, + { "trigger": "wincache_ucache_get", "contents": "wincache_ucache_get(${1:key})" }, + { "trigger": "wincache_ucache_inc", "contents": "wincache_ucache_inc(${1:key})" }, + { "trigger": "wincache_ucache_info", "contents": "wincache_ucache_info()" }, + { "trigger": "wincache_ucache_meminfo", "contents": "wincache_ucache_meminfo(${1:oid})" }, + { "trigger": "wincache_ucache_set", "contents": "wincache_ucache_set(${1:key}, ${2:value})" }, + { "trigger": "wincache_unlock", "contents": "wincache_unlock(${1:key})" }, + { "trigger": "wordwrap", "contents": "wordwrap(${1:str})" }, + { "trigger": "xattr_get", "contents": "xattr_get(${1:filename}, ${2:name})" }, + { "trigger": "xattr_list", "contents": "xattr_list(${1:filename})" }, + { "trigger": "xattr_remove", "contents": "xattr_remove(${1:filename}, ${2:name})" }, + { "trigger": "xattr_set", "contents": "xattr_set(${1:filename}, ${2:name}, ${3:value})" }, + { "trigger": "xattr_supported", "contents": "xattr_supported(${1:filename})" }, + { "trigger": "xdiff_file_bdiff", "contents": "xdiff_file_bdiff(${1:old_file}, ${2:new_file}, ${3:dest})" }, + { "trigger": "xdiff_file_bdiff_size", "contents": "xdiff_file_bdiff_size(${1:file})" }, + { "trigger": "xdiff_file_bpatch", "contents": "xdiff_file_bpatch(${1:file}, ${2:patch}, ${3:dest})" }, + { "trigger": "xdiff_file_diff", "contents": "xdiff_file_diff(${1:old_file}, ${2:new_file}, ${3:dest})" }, + { "trigger": "xdiff_file_diff_binary", "contents": "xdiff_file_diff_binary(${1:old_file}, ${2:new_file}, ${3:dest})" }, + { "trigger": "xdiff_file_merge3", "contents": "xdiff_file_merge3(${1:old_file}, ${2:new_file1}, ${3:new_file2}, ${4:dest})" }, + { "trigger": "xdiff_file_patch", "contents": "xdiff_file_patch(${1:file}, ${2:patch}, ${3:dest})" }, + { "trigger": "xdiff_file_patch_binary", "contents": "xdiff_file_patch_binary(${1:file}, ${2:patch}, ${3:dest})" }, + { "trigger": "xdiff_file_rabdiff", "contents": "xdiff_file_rabdiff(${1:old_file}, ${2:new_file}, ${3:dest})" }, + { "trigger": "xdiff_string_bdiff", "contents": "xdiff_string_bdiff(${1:old_data}, ${2:new_data})" }, + { "trigger": "xdiff_string_bdiff_size", "contents": "xdiff_string_bdiff_size(${1:patch})" }, + { "trigger": "xdiff_string_bpatch", "contents": "xdiff_string_bpatch(${1:str}, ${2:patch})" }, + { "trigger": "xdiff_string_diff", "contents": "xdiff_string_diff(${1:old_data}, ${2:new_data})" }, + { "trigger": "xdiff_string_diff_binary", "contents": "xdiff_string_diff_binary(${1:old_data}, ${2:new_data})" }, + { "trigger": "xdiff_string_merge3", "contents": "xdiff_string_merge3(${1:old_data}, ${2:new_data1}, ${3:new_data2})" }, + { "trigger": "xdiff_string_patch", "contents": "xdiff_string_patch(${1:str}, ${2:patch})" }, + { "trigger": "xdiff_string_patch_binary", "contents": "xdiff_string_patch_binary(${1:str}, ${2:patch})" }, + { "trigger": "xdiff_string_rabdiff", "contents": "xdiff_string_rabdiff(${1:old_data}, ${2:new_data})" }, + { "trigger": "xml_error_string", "contents": "xml_error_string(${1:code})" }, + { "trigger": "xml_get_current_byte_index", "contents": "xml_get_current_byte_index(${1:parser})" }, + { "trigger": "xml_get_current_column_number", "contents": "xml_get_current_column_number(${1:parser})" }, + { "trigger": "xml_get_current_line_number", "contents": "xml_get_current_line_number(${1:parser})" }, + { "trigger": "xml_get_error_code", "contents": "xml_get_error_code(${1:parser})" }, + { "trigger": "xml_parse", "contents": "xml_parse(${1:parser}, ${2:data})" }, + { "trigger": "xml_parse_into_struct", "contents": "xml_parse_into_struct(${1:parser}, ${2:data}, ${3:values})" }, + { "trigger": "xml_parser_create", "contents": "xml_parser_create()" }, + { "trigger": "xml_parser_create_ns", "contents": "xml_parser_create_ns()" }, + { "trigger": "xml_parser_free", "contents": "xml_parser_free(${1:parser})" }, + { "trigger": "xml_parser_get_option", "contents": "xml_parser_get_option(${1:parser}, ${2:option})" }, + { "trigger": "xml_parser_set_option", "contents": "xml_parser_set_option(${1:parser}, ${2:option}, ${3:value})" }, + { "trigger": "xml_set_character_data_handler", "contents": "xml_set_character_data_handler(${1:parser}, ${2:handler})" }, + { "trigger": "xml_set_default_handler", "contents": "xml_set_default_handler(${1:parser}, ${2:handler})" }, + { "trigger": "xml_set_element_handler", "contents": "xml_set_element_handler(${1:parser}, ${2:start_element_handler}, ${3:end_element_handler})" }, + { "trigger": "xml_set_end_namespace_decl_handler", "contents": "xml_set_end_namespace_decl_handler(${1:parser}, ${2:handler})" }, + { "trigger": "xml_set_external_entity_ref_handler", "contents": "xml_set_external_entity_ref_handler(${1:parser}, ${2:handler})" }, + { "trigger": "xml_set_notation_decl_handler", "contents": "xml_set_notation_decl_handler(${1:parser}, ${2:handler})" }, + { "trigger": "xml_set_object", "contents": "xml_set_object(${1:parser}, ${2:object})" }, + { "trigger": "xml_set_processing_instruction_handler", "contents": "xml_set_processing_instruction_handler(${1:parser}, ${2:handler})" }, + { "trigger": "xml_set_start_namespace_decl_handler", "contents": "xml_set_start_namespace_decl_handler(${1:parser}, ${2:handler})" }, + { "trigger": "xml_set_unparsed_entity_decl_handler", "contents": "xml_set_unparsed_entity_decl_handler(${1:parser}, ${2:handler})" }, + { "trigger": "xmlrpc_decode", "contents": "xmlrpc_decode(${1:xml})" }, + { "trigger": "xmlrpc_decode_request", "contents": "xmlrpc_decode_request(${1:xml}, ${2:method})" }, + { "trigger": "xmlrpc_encode", "contents": "xmlrpc_encode(${1:value})" }, + { "trigger": "xmlrpc_encode_request", "contents": "xmlrpc_encode_request(${1:method}, ${2:params})" }, + { "trigger": "xmlrpc_get_type", "contents": "xmlrpc_get_type(${1:value})" }, + { "trigger": "xmlrpc_is_fault", "contents": "xmlrpc_is_fault(${1:arg})" }, + { "trigger": "xmlrpc_parse_method_descriptions", "contents": "xmlrpc_parse_method_descriptions(${1:xml})" }, + { "trigger": "xmlrpc_server_add_introspection_data", "contents": "xmlrpc_server_add_introspection_data(${1:server}, ${2:desc})" }, + { "trigger": "xmlrpc_server_call_method", "contents": "xmlrpc_server_call_method(${1:server}, ${2:xml}, ${3:user_data})" }, + { "trigger": "xmlrpc_server_create", "contents": "xmlrpc_server_create(${1:oid})" }, + { "trigger": "xmlrpc_server_destroy", "contents": "xmlrpc_server_destroy(${1:server})" }, + { "trigger": "xmlrpc_server_register_introspection_callback", "contents": "xmlrpc_server_register_introspection_callback(${1:server}, ${2:function})" }, + { "trigger": "xmlrpc_server_register_method", "contents": "xmlrpc_server_register_method(${1:server}, ${2:method_name}, ${3:function})" }, + { "trigger": "xmlrpc_set_type", "contents": "xmlrpc_set_type(${1:value}, ${2:type})" }, + { "trigger": "xpath_eval", "contents": "xpath_eval(${1:xpath_expression})" }, + { "trigger": "xpath_eval_expression", "contents": "xpath_eval_expression(${1:expression})" }, + { "trigger": "xpath_new_context", "contents": "xpath_new_context(${1:dom_document})" }, + { "trigger": "xpath_register_ns", "contents": "xpath_register_ns(${1:xpath_context}, ${2:prefix}, ${3:uri})" }, + { "trigger": "xpath_register_ns_auto", "contents": "xpath_register_ns_auto(${1:xpath_context})" }, + { "trigger": "xptr_eval", "contents": "xptr_eval(${1:eval_str})" }, + { "trigger": "xptr_new_context", "contents": "xptr_new_context(${1:oid})" }, + { "trigger": "xslt_backend_info", "contents": "xslt_backend_info(${1:oid})" }, + { "trigger": "xslt_backend_name", "contents": "xslt_backend_name(${1:oid})" }, + { "trigger": "xslt_backend_version", "contents": "xslt_backend_version(${1:oid})" }, + { "trigger": "xslt_create", "contents": "xslt_create(${1:oid})" }, + { "trigger": "xslt_errno", "contents": "xslt_errno(${1:xh})" }, + { "trigger": "xslt_error", "contents": "xslt_error(${1:xh})" }, + { "trigger": "xslt_free", "contents": "xslt_free(${1:xh})" }, + { "trigger": "xslt_getopt", "contents": "xslt_getopt(${1:processor})" }, + { "trigger": "xslt_process", "contents": "xslt_process(${1:xh}, ${2:xmlcontainer}, ${3:xslcontainer})" }, + { "trigger": "xslt_set_base", "contents": "xslt_set_base(${1:xh}, ${2:uri})" }, + { "trigger": "xslt_set_encoding", "contents": "xslt_set_encoding(${1:xh}, ${2:encoding})" }, + { "trigger": "xslt_set_error_handler", "contents": "xslt_set_error_handler(${1:xh}, ${2:handler})" }, + { "trigger": "xslt_set_log", "contents": "xslt_set_log(${1:xh})" }, + { "trigger": "xslt_set_object", "contents": "xslt_set_object(${1:processor}, ${2:obj})" }, + { "trigger": "xslt_set_sax_handler", "contents": "xslt_set_sax_handler(${1:xh}, ${2:handlers})" }, + { "trigger": "xslt_set_sax_handlers", "contents": "xslt_set_sax_handlers(${1:processor}, ${2:handlers})" }, + { "trigger": "xslt_set_scheme_handler", "contents": "xslt_set_scheme_handler(${1:xh}, ${2:handlers})" }, + { "trigger": "xslt_set_scheme_handlers", "contents": "xslt_set_scheme_handlers(${1:xh}, ${2:handlers})" }, + { "trigger": "xslt_setopt", "contents": "xslt_setopt(${1:processor}, ${2:newmask})" }, + { "trigger": "yaml_emit", "contents": "yaml_emit(${1:data})" }, + { "trigger": "yaml_emit_file", "contents": "yaml_emit_file(${1:filename}, ${2:data})" }, + { "trigger": "yaml_parse", "contents": "yaml_parse(${1:input})" }, + { "trigger": "yaml_parse_file", "contents": "yaml_parse_file(${1:filename})" }, + { "trigger": "yaml_parse_url", "contents": "yaml_parse_url(${1:url})" }, + { "trigger": "yaz_addinfo", "contents": "yaz_addinfo(${1:id})" }, + { "trigger": "yaz_ccl_conf", "contents": "yaz_ccl_conf(${1:id}, ${2:config})" }, + { "trigger": "yaz_ccl_parse", "contents": "yaz_ccl_parse(${1:id}, ${2:query}, ${3:result})" }, + { "trigger": "yaz_close", "contents": "yaz_close(${1:id})" }, + { "trigger": "yaz_connect", "contents": "yaz_connect(${1:zurl})" }, + { "trigger": "yaz_database", "contents": "yaz_database(${1:id}, ${2:databases})" }, + { "trigger": "yaz_element", "contents": "yaz_element(${1:id}, ${2:elementset})" }, + { "trigger": "yaz_errno", "contents": "yaz_errno(${1:id})" }, + { "trigger": "yaz_error", "contents": "yaz_error(${1:id})" }, + { "trigger": "yaz_es", "contents": "yaz_es(${1:id}, ${2:type}, ${3:args})" }, + { "trigger": "yaz_es_result", "contents": "yaz_es_result(${1:id})" }, + { "trigger": "yaz_get_option", "contents": "yaz_get_option(${1:id}, ${2:name})" }, + { "trigger": "yaz_hits", "contents": "yaz_hits(${1:id})" }, + { "trigger": "yaz_itemorder", "contents": "yaz_itemorder(${1:id}, ${2:args})" }, + { "trigger": "yaz_present", "contents": "yaz_present(${1:id})" }, + { "trigger": "yaz_range", "contents": "yaz_range(${1:id}, ${2:start}, ${3:number})" }, + { "trigger": "yaz_record", "contents": "yaz_record(${1:id}, ${2:pos}, ${3:type})" }, + { "trigger": "yaz_scan", "contents": "yaz_scan(${1:id}, ${2:type}, ${3:startterm})" }, + { "trigger": "yaz_scan_result", "contents": "yaz_scan_result(${1:id})" }, + { "trigger": "yaz_schema", "contents": "yaz_schema(${1:id}, ${2:schema})" }, + { "trigger": "yaz_search", "contents": "yaz_search(${1:id}, ${2:type}, ${3:query})" }, + { "trigger": "yaz_set_option", "contents": "yaz_set_option(${1:id}, ${2:name}, ${3:value})" }, + { "trigger": "yaz_sort", "contents": "yaz_sort(${1:id}, ${2:criteria})" }, + { "trigger": "yaz_syntax", "contents": "yaz_syntax(${1:id}, ${2:syntax})" }, + { "trigger": "yaz_wait", "contents": "yaz_wait()" }, + { "trigger": "yp_all", "contents": "yp_all(${1:domain}, ${2:map}, ${3:callback})" }, + { "trigger": "yp_cat", "contents": "yp_cat(${1:domain}, ${2:map})" }, + { "trigger": "yp_err_string", "contents": "yp_err_string(${1:errorcode})" }, + { "trigger": "yp_errno", "contents": "yp_errno(${1:oid})" }, + { "trigger": "yp_first", "contents": "yp_first(${1:domain}, ${2:map})" }, + { "trigger": "yp_get_default_domain", "contents": "yp_get_default_domain(${1:oid})" }, + { "trigger": "yp_master", "contents": "yp_master(${1:domain}, ${2:map})" }, + { "trigger": "yp_match", "contents": "yp_match(${1:domain}, ${2:map}, ${3:key})" }, + { "trigger": "yp_next", "contents": "yp_next(${1:domain}, ${2:map}, ${3:key})" }, + { "trigger": "yp_order", "contents": "yp_order(${1:domain}, ${2:map})" }, + { "trigger": "zend_logo_guid", "contents": "zend_logo_guid(${1:oid})" }, + { "trigger": "zend_thread_id", "contents": "zend_thread_id(${1:oid})" }, + { "trigger": "zend_version", "contents": "zend_version(${1:oid})" }, + { "trigger": "zip_close", "contents": "zip_close(${1:zip})" }, + { "trigger": "zip_entry_close", "contents": "zip_entry_close(${1:zip_entry})" }, + { "trigger": "zip_entry_compressedsize", "contents": "zip_entry_compressedsize(${1:zip_entry})" }, + { "trigger": "zip_entry_compressionmethod", "contents": "zip_entry_compressionmethod(${1:zip_entry})" }, + { "trigger": "zip_entry_filesize", "contents": "zip_entry_filesize(${1:zip_entry})" }, + { "trigger": "zip_entry_name", "contents": "zip_entry_name(${1:zip_entry})" }, + { "trigger": "zip_entry_open", "contents": "zip_entry_open(${1:zip}, ${2:zip_entry})" }, + { "trigger": "zip_entry_read", "contents": "zip_entry_read(${1:zip_entry})" }, + { "trigger": "zip_open", "contents": "zip_open(${1:filename})" }, + { "trigger": "zip_read", "contents": "zip_read(${1:zip})" }, + { "trigger": "zlib_get_coding_type", "contents": "zlib_get_coding_type(${1:oid})" } + ] +} \ No newline at end of file diff --git a/PHP/PHP.tmLanguage b/PHP/PHP.tmLanguage new file mode 100644 index 0000000..d8f504d --- /dev/null +++ b/PHP/PHP.tmLanguage @@ -0,0 +1,3429 @@ + + + + + comment + TODO: +• Try to improve parameters list syntax – scope numbers, ‘=’, ‘,’ and possibly be intelligent about entity ordering +• Is meta.function-call the correct scope? I've added it to my theme but by default it's not highlighted + fileTypes + + + php + + firstLineMatch + ^#!.*(?<!-)php[0-9]{0,1}\b + foldingStartMarker + (/\*|\{\s*$|<<<HTML) + foldingStopMarker + (\*/|^\s*\}|^HTML;) + name + PHP + patterns + + + captures + + 1 + + name + punctuation.whitespace.embedded.leading.php + + 2 + + name + source.php.embedded.line.empty.html + + 3 + + name + punctuation.section.embedded.begin.php + + 4 + + name + meta.consecutive-tags.php + + 5 + + name + source.php + + 6 + + name + punctuation.section.embedded.end.php + + 7 + + name + source.php + + 8 + + name + punctuation.whitespace.embedded.trailing.php + + + comment + Matches empty tags. + match + (?x) + (^\s*)? # 1 - Leading whitespace + ( # 2 - meta.embedded.line.empty.php + ( # 3 - Open Tag + (?: + ((?<=\?>)<) # 4 - Consecutive tags + | < + ) + \?(?i:php|=)? + ) + (\s*) # 5 - Loneliness + ((\?)>) # 6 - Close Tag + # 7 - Scope ? as scope.php + ) + ( + \1 # Match nothing if there was no + # leading whitespace... + | (\s*$\n)? # or match trailing whitespace. + ) + + + + begin + ^\s*(?=<\?) + beginCaptures + + 0 + + name + punctuation.whitespace.embedded.leading.php + + + comment + Catches tags with preceeding whitespace. + end + (?<=\?>)(\s*$\n)? + endCaptures + + 0 + + name + punctuation.whitespace.embedded.trailing.php + + + patterns + + + begin + <\?(?i:php|=)? + beginCaptures + + 0 + + name + punctuation.section.embedded.begin.php + + + end + (\?)> + endCaptures + + 0 + + name + punctuation.section.embedded.end.php + + 1 + + name + source.php + + + name + source.php.embedded.block.html + patterns + + + include + #language + + + + + + + begin + (((?<=\?>)<)|<)\?(?i:php|=)? + beginCaptures + + 0 + + name + punctuation.section.embedded.begin.php + + 2 + + name + meta.consecutive-tags.php + + + comment + Catches the remainder. + end + (\?)> + endCaptures + + 0 + + name + punctuation.section.embedded.end.php + + 1 + + name + source.php + + + name + source.php.embedded.line.html + patterns + + + include + #language + + + + + repository + + constants + + patterns + + + match + (?i)\b(TRUE|FALSE|NULL|__(FILE|FUNCTION|CLASS|METHOD|LINE)__|ON|OFF|YES|NO|NL|BR|TAB)\b + name + constant.language.php + + + match + \b(DEFAULT_INCLUDE_PATH|E_(ALL|COMPILE_(ERROR|WARNING)|CORE_(ERROR|WARNING)|(RECOVERABLE_)?ERROR|NOTICE|PARSE|STRICT|USER_(ERROR|NOTICE|WARNING)|WARNING)|PEAR_(EXTENSION_DIR|INSTALL_DIR)|PHP_(BINDIR|CONFIG_FILE_PATH|DATADIR|E(OL|XTENSION_DIR)|L(IBDIR|OCALSTATEDIR)|O(S|UTPUT_HANDLER_CONT|UTPUT_HANDLER_END|UTPUT_HANDLER_START)|SYSCONFDIR|VERSION))\b + name + support.constant.core.php + + + match + \b(A(B(DAY_([1-7])|MON_([0-9]{1,2}))|LT_DIGITS|M_STR|SSERT_(ACTIVE|BAIL|CALLBACK|QUIET_EVAL|WARNING))|C(ASE_(LOWER|UPPER)|HAR_MAX|O(DESET|NNECTION_(ABORTED|NORMAL|TIMEOUT)|UNT_(NORMAL|RECURSIVE))|REDITS_(ALL|DOCS|FULLPAGE|GENERAL|GROUP|MODULES|QA|SAPI)|RNCYSTR|RYPT_(BLOWFISH|EXT_DES|MD5|SALT_LENGTH|STD_DES)|URRENCY_SYMBOL)|D(AY_([1-7])|ECIMAL_POINT|IRECTORY_SEPARATOR|_(FMT|T_FMT))|E(NT_(COMPAT|NOQUOTES|QUOTES)|RA(|_D_FMT|_D_T_FMT|_T_FMT|_YEAR)|XTR_(IF_EXISTS|OVERWRITE|PREFIX_(ALL|IF_EXISTS|INVALID|SAME)|SKIP))|FRAC_DIGITS|GROUPING|HTML_(ENTITIES|SPECIALCHARS)|IN(FO_(ALL|CONFIGURATION|CREDITS|ENVIRONMENT|GENERAL|LICENSE|MODULES|VARIABLES)|I_(ALL|PERDIR|SYSTEM|USER)|T_(CURR_SYMBOL|FRAC_DIGITS))|L(C_(ALL|COLLATE|CTYPE|MESSAGES|MONETARY|NUMERIC|TIME)|O(CK_(EX|NB|SH|UN)|G_(ALERT|AUTH(|PRIV)|CONS|CRIT|CRON|DAEMON|DEBUG|EMERG|ERR|INFO|KERN|LOCAL([0-7])|LPR|MAIL|NDELAY|NEWS|NOTICE|NOWAIT|ODELAY|PERROR|PID|SYSLOG|USER|UUCP|WARNING)))|M(ON_([0-9]{1,2}|DECIMAL_POINT|GROUPING|THOUSANDS_SEP)|YSQL_(ASSOC|BOTH|NUM)|_(1_PI|2_(PI|SQRTPI)|E|L(N10|N2|OG(10E|2E))|PI(|_2|_4)|SQRT1_2|SQRT2))|N(EGATIVE_SIGN|O(EXPR|STR)|_(CS_PRECEDES|SEP_BY_SPACE|SIGN_POSN))|P(ATH(INFO_(BASENAME|DIRNAME|EXTENSION|FILENAME)|_SEPARATOR)|M_STR|OSITIVE_SIGN|_(CS_PRECEDES|SEP_BY_SPACE|SIGN_POSN))|RADIXCHAR|S(EEK_(CUR|END|SET)|ORT_(ASC|DESC|NUMERIC|REGULAR|STRING)|TR_PAD_(BOTH|LEFT|RIGHT))|T(HOUS(ANDS_SEP|EP)|_(FMT(|_AMPM)))|YES(EXPR|STR))\b + name + support.constant.std.php + + + comment + In PHP, any identifier which is not a variable is taken to be a constant. + However, if there is no constant defined with the given name then a notice + is generated and the constant is assumed to have the value of its name. + match + [a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]* + name + constant.other.php + + + + function-call + + match + [A-Za-z_][A-Za-z_0-9]*(?=\s*\() + name + meta.function-call.php + + instantiation + + captures + + 1 + + name + keyword.other.new.php + + 2 + + name + variable.other.php + + 3 + + name + support.class.php + + 4 + + name + support.class.php + + + match + (?i)\b(new)\s+(?:(\$[a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*)|(\w+))|(\w+)(?=::) + + interpolation + + comment + http://www.php.net/manual/en/language.types.string.php#language.types.string.parsing + patterns + + + match + \\[0-7]{1,3} + name + constant.numeric.octal.php + + + match + \\x[0-9A-Fa-f]{1,2} + name + constant.numeric.hex.php + + + match + \\[nrt\\\$\"] + name + constant.character.escape.php + + + captures + + 1 + + name + variable.other.php + + 2 + + name + punctuation.definition.variable.php + + 4 + + name + punctuation.definition.variable.php + + + comment + Simple syntax with braces: "foo${bar}baz" + match + (?x) + ((\$\{)(?<name>[a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*)(\})) + + + + captures + + 1 + + name + variable.other.php + + 10 + + name + punctuation.definition.variable.php + + 11 + + name + string.unquoted.index.php + + 12 + + name + invalid.illegal.invalid-simple-array-index.php + + 13 + + name + keyword.operator.index-end.php + + 2 + + name + punctuation.definition.variable.php + + 4 + + name + keyword.operator.class.php + + 5 + + name + variable.other.property.php + + 6 + + name + invalid.illegal.php + + 7 + + name + keyword.operator.index-start.php + + 8 + + name + constant.numeric.index.php + + 9 + + name + variable.other.index.php + + + comment + Simple syntax: $foo, $foo[0], $foo[$bar], $foo->bar + match + (?x) + ((\$)(?<name>[a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*)) + (?: + (->) + (?: + (\g<name>) + | + (\$\g<name>) + ) + | + (\[) + (?:(\d+)|((\$)\g<name>)|(\w+)|(.*?)) + (\]) + )? + + + + begin + (?=(?<regex>(?#simple syntax)\$(?<name>[a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*)(?:\[(?<index>[a-zA-Z0-9_\x{7f}-\x{ff}]+|\$\g<name>)\]|->\g<name>(\(.*?\))?)?|(?#simple syntax with braces)\$\{(?:\g<name>(?<indices>\[(?:\g<index>|'(?:\\.|[^'\\])*'|"(?:\g<regex>|\\.|[^"\\])*")\])?|\g<complex>|\$\{\g<complex>\})\}|(?#complex syntax)\{(?<complex>\$(?<segment>\g<name>(\g<indices>*|\(.*?\))?)(?:->\g<segment>)*|\$\g<complex>|\$\{\g<complex>\})\}))\{ + beginCaptures + + 0 + + name + punctuation.definition.variable.php + + + comment + Complex syntax. It seems this now supports complex method calls, as of PHP5. + I've put wildcards into the function call parameter lists to handle this, but this may break the pattern. + It also might be better to disable it as I shouldn't imagine it's used often (hopefully) and it may confuse PHP4 users. + end + \} + endCaptures + + 0 + + name + punctuation.definition.variable.php + + + patterns + + + include + #function-call + + + include + #var_basic + + + include + #object + + + include + #numbers + + + match + \[ + name + keyword.operator.index-start.php + + + match + \] + name + keyword.operator.index-end.php + + + + + + language + + patterns + + + begin + (?=<<<\s*(HTML|XML|SQL|JAVASCRIPT)\s*$) + end + (?!<?<<\s*(HTML|XML|SQL|JAVASCRIPT)\s*$) + name + string.unquoted.heredoc.php + patterns + + + begin + (<<<)\s*(HTML)\s*$\n? + beginCaptures + + 0 + + name + punctuation.section.embedded.begin.php + + 1 + + name + punctuation.definition.string.php + + 2 + + name + keyword.operator.heredoc.php + + + contentName + text.html + end + ^(HTML)(;?)$\n? + endCaptures + + 0 + + name + punctuation.section.embedded.end.php + + 1 + + name + keyword.operator.heredoc.php + + 2 + + name + punctuation.definition.string.php + + + name + meta.embedded.html + patterns + + + include + text.html.basic + + + include + #interpolation + + + + + begin + (<<<)\s*(XML)\s*$\n? + beginCaptures + + 0 + + name + punctuation.section.embedded.begin.php + + 1 + + name + punctuation.definition.string.php + + 2 + + name + keyword.operator.heredoc.php + + + contentName + text.xml + end + ^(XML)(;?)$\n? + endCaptures + + 0 + + name + punctuation.section.embedded.end.php + + 1 + + name + keyword.operator.heredoc.php + + 2 + + name + punctuation.definition.string.php + + + name + meta.embedded.xml + patterns + + + include + text.xml + + + include + #interpolation + + + + + begin + (<<<)\s*(SQL)\s*$\n? + beginCaptures + + 0 + + name + punctuation.section.embedded.begin.php + + 1 + + name + punctuation.definition.string.php + + 2 + + name + keyword.operator.heredoc.php + + + contentName + source.sql + end + ^(SQL)(;?)$\n? + endCaptures + + 0 + + name + punctuation.section.embedded.end.php + + 1 + + name + keyword.operator.heredoc.php + + 2 + + name + punctuation.definition.string.php + + + name + meta.embedded.sql + patterns + + + include + source.sql + + + include + #interpolation + + + + + begin + (<<<)\s*(JAVASCRIPT)\s*$\n? + beginCaptures + + 0 + + name + punctuation.section.embedded.begin.php + + 1 + + name + punctuation.definition.string.php + + 2 + + name + keyword.operator.heredoc.php + + + contentName + source.js + end + ^(JAVASCRIPT)(;?)$\n? + endCaptures + + 0 + + name + punctuation.section.embedded.end.php + + 1 + + name + keyword.operator.heredoc.php + + 2 + + name + punctuation.definition.string.php + + + name + meta.embedded.js + patterns + + + include + source.js + + + include + #interpolation + + + + + + + begin + /\*\*(?:#@\+)?\s*$ + captures + + 0 + + name + punctuation.definition.comment.php + + + comment + This now only highlights a docblock if the first line contains only /** + - this is to stop highlighting everything as invalid when people do comment banners with /******** ... + - Now matches /**#@+ too - used for docblock templates: http://manual.phpdoc.org/HTMLframesConverter/default/phpDocumentor/tutorial_phpDocumentor.howto.pkg.html#basics.docblocktemplate + end + \*/ + name + comment.block.documentation.phpdoc.php + patterns + + + include + #php_doc + + + + + begin + /\* + captures + + 0 + + name + punctuation.definition.comment.php + + + end + \*/ + name + comment.block.php + + + captures + + 1 + + name + punctuation.definition.comment.php + + + match + (//).*?($\n?|(?=\?>)) + name + comment.line.double-slash.php + + + captures + + 1 + + name + punctuation.definition.comment.php + + + match + (#).*?($\n?|(?=\?>)) + name + comment.line.number-sign.php + + + begin + ^(?i)\s*(interface)\s+([a-z0-9_]+)\s*(extends)?\s* + beginCaptures + + 1 + + name + storage.type.interface.php + + 2 + + name + entity.name.type.interface.php + + 3 + + name + storage.modifier.extends.php + + + end + $ + name + meta.interface.php + patterns + + + match + [a-zA-Z0-9_]+ + name + entity.other.inherited-class.php + + + + + begin + (?i)^\s*(abstract|final)?\s*(class)\s+([a-z0-9_]+)\s* + beginCaptures + + 1 + + name + storage.modifier.abstract.php + + 2 + + name + storage.type.class.php + + 3 + + name + entity.name.type.class.php + + + end + $ + name + meta.class.php + patterns + + + captures + + 1 + + name + storage.modifier.extends.php + + 2 + + name + entity.other.inherited-class.php + + + match + (?i:(extends))\s+([a-zA-Z0-9_]+)\s* + + + begin + (?i:(implements))\s+([a-zA-Z0-9_]+)\s* + beginCaptures + + 1 + + name + storage.modifier.implements.php + + 2 + + name + support.class.implements.php + + + end + (?=\s*\b(?i:(extends)))|$ + patterns + + + captures + + 1 + + name + support.class.implements.php + + + match + ,\s*([a-zA-Z0-9_]+)\s* + + + + + + + match + \b(break|c(ase|ontinue)|d(e(clare|fault)|ie|o)|e(lse(if)?|nd(declare|for(each)?|if|switch|while)|xit)|for(each)?|if|return|switch|use|while)\b + name + keyword.control.php + + + begin + (?i)\b((?:require|include)(?:_once)?)\b\s* + beginCaptures + + 1 + + name + keyword.control.import.include.php + + + end + (?=\s|;|$) + name + meta.include.php + patterns + + + include + #language + + + + + captures + + 1 + + name + keyword.control.exception.php + + 2 + + name + support.class.php + + 3 + + name + variable.other.php + + 4 + + name + punctuation.definition.variable.php + + + match + \b(catch)\b\s*\(\s*([A-Za-z_][A-Za-z_0-9]*)\s*((\$+)[a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*)\s*\) + name + meta.catch.php + + + match + \b(catch|try|throw|exception)\b + name + keyword.control.exception.php + + + begin + (?:^\s*)((?:(?:final|abstract|public|private|protected|static)\s+)*)(function)(?:\s+|(\s*&\s*))(?:(__(?:call|(?:con|de)struct|get|(?:is|un)?set|tostring|clone|set_state|sleep|wakeup|autoload))|([a-zA-Z0-9_]+))\s*(\() + beginCaptures + + 1 + + name + storage.modifier.php + + 2 + + name + storage.type.function.php + + 3 + + name + storage.modifier.reference.php + + 4 + + name + support.function.magic.php + + 5 + + name + entity.name.function.php + + 6 + + name + punctuation.definition.parameters.begin.php + + + contentName + meta.function.arguments.php + end + \) + endCaptures + + 1 + + name + punctuation.definition.parameters.end.php + + + name + meta.function.php + patterns + + + begin + (?x) + \s*(array) # Typehint + \s*(&)? # Reference + \s*((\$+)[a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*) # The variable name + \s*(=) # A default value + \s*(array)\s*(\() + + beginCaptures + + 1 + + name + storage.type.php + + 2 + + name + storage.modifier.php + + 3 + + name + variable.other.php + + 4 + + name + punctuation.definition.variable.php + + 5 + + name + keyword.operator.assignment.php + + 6 + + name + support.function.construct.php + + 7 + + name + punctuation.definition.array.begin.php + + + contentName + meta.array.php + end + \) + endCaptures + + 0 + + name + punctuation.definition.array.end.php + + + name + meta.function.argument.array.php + patterns + + + include + #strings + + + include + #numbers + + + + + captures + + 1 + + name + storage.type.php + + 2 + + name + storage.modifier.php + + 3 + + name + variable.other.php + + 4 + + name + punctuation.definition.variable.php + + 5 + + name + keyword.operator.assignment.php + + 6 + + name + constant.language.php + + 7 + + name + invalid.illegal.non-null-typehinted.php + + + match + (?x) + \s*(array) # Typehint + \s*(&)? # Reference + \s*((\$+)[a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*) # The variable name + (?: + \s*(=) # A default value + \s*(?i: + (NULL) + | + (\S.*?) + )? + )? + \s*(?=,|\)) # A closing parentheses (end of argument list) or a comma + + name + meta.function.argument.array.php + + + captures + + 1 + + name + support.class.php + + 2 + + name + storage.modifier.php + + 3 + + name + variable.other.php + + 4 + + name + punctuation.definition.variable.php + + 5 + + name + keyword.operator.assignment.php + + 6 + + name + constant.language.php + + 7 + + name + invalid.illegal.non-null-typehinted.php + + + match + (?x) + \s*([A-Za-z_][A-Za-z_0-9]*) # Typehinted class name + \s*(&)? # Reference + \s*((\$+)[a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*) # The variable name + (?: + \s*(=) # A default value + \s*(?i: + (NULL) + | + (\S.*?) + )? + )? + \s*(?=,|\)) # A closing parentheses (end of argument list) or a comma + + name + meta.function.argument.typehinted.php + + + captures + + 1 + + name + storage.modifier.php + + 2 + + name + variable.other.php + + 3 + + name + punctuation.definition.variable.php + + + match + (\s*&)?\s*((\$+)[a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*)\s*(?=,|\)) + name + meta.function.argument.no-default.php + + + begin + (\s*&)?\s*((\$+)[a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*)(?:\s*(=)\s*)\s* + captures + + 1 + + name + storage.modifier.php + + 2 + + name + variable.other.php + + 3 + + name + punctuation.definition.variable.php + + 4 + + name + keyword.operator.assignment.php + + + end + (?=,|\)) + name + meta.function.argument.default.php + patterns + + + include + #parameter-default-types + + + + + begin + /\* + captures + + 0 + + name + punctuation.definition.comment.php + + + end + \*/ + name + comment.block.php + + + + + match + (?i)\b(real|double|float|int(eger)?|bool(ean)?|string|class|clone|var|function|interface|parent|self|object)\b + name + storage.type.php + + + match + (?i)\b(global|abstract|const|extends|implements|final|p(r(ivate|otected)|ublic)|static)\b + name + storage.modifier.php + + + include + #object + + + captures + + 1 + + name + keyword.operator.class.php + + 2 + + name + meta.function-call.static.php + + 3 + + name + variable.other.class.php + + 4 + + name + punctuation.definition.variable.php + + 5 + + name + constant.other.class.php + + + match + (?x)(::) + (?: + ([A-Za-z_][A-Za-z_0-9]*)\s*\( + | + ((\$+)[a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*) + | + ([a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*) + )? + + + include + #support + + + begin + (<<<)\s*([a-zA-Z_]+[a-zA-Z0-9_]*) + beginCaptures + + 1 + + name + punctuation.definition.string.php + + 2 + + name + keyword.operator.heredoc.php + + + end + ^(\2)(;?)$ + endCaptures + + 1 + + name + keyword.operator.heredoc.php + + 2 + + name + punctuation.definition.string.php + + + name + string.unquoted.heredoc.php + patterns + + + include + #interpolation + + + + + match + => + name + keyword.operator.key.php + + + match + &(?=\s*(\$|new|[A-Za-z_][A-Za-z_0-9]+(?=\s*\())) + name + storage.modifier.reference.php + + + match + ; + name + punctuation.terminator.expression.php + + + match + (@) + name + keyword.operator.error-control.php + + + match + (\-\-|\+\+) + name + keyword.operator.increment-decrement.php + + + match + (\-|\+|\*|/|%) + name + keyword.operator.arithmetic.php + + + match + (?i)(!|&&|\|\|)|\b(and|or|xor|as)\b + name + keyword.operator.logical.php + + + match + <<|>>|~|\^|&|\| + name + keyword.operator.bitwise.php + + + match + (===|==|!==|!=|<=|>=|<>|<|>) + name + keyword.operator.comparison.php + + + match + (\.=|\.) + name + keyword.operator.string.php + + + match + = + name + keyword.operator.assignment.php + + + captures + + 1 + + name + keyword.operator.type.php + + 2 + + name + support.class.php + + + match + (?i)\b(instanceof)\b(?:\s+(\w+))? + + + include + #numbers + + + include + #strings + + + include + #string-backtick + + + include + #function-call + + + include + #variables + + + captures + + 1 + + name + keyword.operator.php + + 2 + + name + variable.other.property.php + + + match + (?<=[a-zA-Z0-9_\x{7f}-\x{ff}])(->)([a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*?)\b + + + include + #instantiation + + + include + #constants + + + + numbers + + match + \b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)\b + name + constant.numeric.php + + object + + captures + + 1 + + name + keyword.operator.class.php + + 2 + + name + meta.function-call.object.php + + 3 + + name + variable.other.property.php + + 4 + + name + punctuation.definition.variable.php + + + match + (?x)(->) + (?: + ([A-Za-z_][A-Za-z_0-9]*)\s*\( + | + ((\$+)?[a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*) + )? + + parameter-default-types + + patterns + + + include + #strings + + + include + #numbers + + + include + #string-backtick + + + include + #variables + + + match + => + name + keyword.operator.key.php + + + match + = + name + keyword.operator.assignment.php + + + match + &(?=\s*\$) + name + storage.modifier.reference.php + + + begin + (array)\s*(\() + beginCaptures + + 1 + + name + support.function.construct.php + + 2 + + name + punctuation.definition.array.begin.php + + + end + \) + endCaptures + + 0 + + name + punctuation.definition.array.end.php + + + name + meta.array.php + patterns + + + include + #parameter-default-types + + + + + include + #instantiation + + + include + #constants + + + + php_doc + + patterns + + + comment + PHPDocumentor only recognises lines with an asterisk as the first non-whitespaces character + match + ^(?!\s*\*).*$\n? + name + invalid.illegal.missing-asterisk.phpdoc.php + + + captures + + 1 + + name + keyword.other.phpdoc.php + + 3 + + name + storage.modifier.php + + 4 + + name + invalid.illegal.wrong-access-type.phpdoc.php + + + match + ^\s*\*\s*(@access)\s+((public|private|protected)|(.+))\s*$ + + + match + ((https?|s?ftp|ftps|file|smb|afp|nfs|(x-)?man|gopher|txmt)://|mailto:)[-:@a-zA-Z0-9_.~%+/?=&#]+(?<![.?:]) + name + markup.underline.link.php + + + captures + + 1 + + name + keyword.other.phpdoc.php + + 2 + + name + markup.underline.link.php + + + match + (@xlink)\s+(.+)\s*$ + + + match + \@(a(bstract|uthor)|c(ategory|opyright)|example|global|internal|li(cense|nk)|pa(ckage|ram)|return|s(ee|ince|tatic|ubpackage)|t(hrows|odo)|v(ar|ersion)|uses|deprecated|final)\b + name + keyword.other.phpdoc.php + + + captures + + 1 + + name + keyword.other.phpdoc.php + + + match + \{(@(link)).+?\} + name + meta.tag.inline.phpdoc.php + + + + regex-double-quoted + + begin + (?x)"/ (?= (\\.|[^"/])++/[imsxeADSUXu]*" ) + beginCaptures + + 0 + + name + punctuation.definition.string.begin.php + + + end + (/)([imsxeADSUXu]*)(") + endCaptures + + 0 + + name + punctuation.definition.string.end.php + + + name + string.regexp.double-quoted.php + patterns + + + comment + Escaped from the regexp – there can also be 2 backslashes (since 1 will escape the first) + match + (\\){1,2}[.$^\[\]{}] + name + constant.character.escape.regex.php + + + include + #interpolation + + + captures + + 1 + + name + punctuation.definition.arbitrary-repitition.php + + 3 + + name + punctuation.definition.arbitrary-repitition.php + + + match + (\{)\d+(,\d+)?(\}) + name + string.regexp.arbitrary-repitition.php + + + begin + \[(?:\^?\])? + captures + + 0 + + name + punctuation.definition.character-class.php + + + end + \] + name + string.regexp.character-class.php + patterns + + + include + #interpolation + + + + + match + [$^+*] + name + keyword.operator.regexp.php + + + + regex-single-quoted + + begin + (?x)'/ (?= (\\.|[^'/])++/[imsxeADSUXu]*' ) + beginCaptures + + 0 + + name + punctuation.definition.string.begin.php + + + end + (/)([imsxeADSUXu]*)(') + endCaptures + + 0 + + name + punctuation.definition.string.end.php + + + name + string.regexp.single-quoted.php + patterns + + + captures + + 1 + + name + punctuation.definition.arbitrary-repitition.php + + 3 + + name + punctuation.definition.arbitrary-repitition.php + + + match + (\{)\d+(,\d+)?(\}) + name + string.regexp.arbitrary-repitition.php + + + comment + Escaped from the regexp – there can also be 2 backslashes (since 1 will escape the first) + match + (\\){1,2}[.$^\[\]{}] + name + constant.character.escape.regex.php + + + comment + Escaped from the PHP string – there can also be 2 backslashes (since 1 will escape the first) + match + \\{1,2}[\\'] + name + constant.character.escape.php + + + begin + \[(?:\^?\])? + captures + + 0 + + name + punctuation.definition.character-class.php + + + end + \] + name + string.regexp.character-class.php + patterns + + + match + \\[\\'\[\]] + name + constant.character.escape.php + + + + + match + [$^+*] + name + keyword.operator.regexp.php + + + + sql-string-double-quoted + + begin + "\s*(?=(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER)\b) + beginCaptures + + 0 + + name + punctuation.definition.string.begin.php + + + contentName + source.sql.embedded.php + end + " + endCaptures + + 0 + + name + punctuation.definition.string.end.php + + + name + string.quoted.double.sql.php + patterns + + + match + #(\\"|[^"])*(?="|$\n?) + name + comment.line.number-sign.sql + + + match + --(\\"|[^"])*(?="|$\n?) + name + comment.line.double-dash.sql + + + begin + '(?=[^']*?") + comment + Unclosed strings must be captured to avoid them eating the remainder of the PHP script + Sample case: $sql = "SELECT * FROM bar WHERE foo = '" . $variable . "'" + end + (?=") + name + string.quoted.single.unclosed.sql + patterns + + + match + \\[\\'] + name + constant.character.escape.php + + + + + begin + `(?=[^`]*?") + comment + Unclosed strings must be captured to avoid them eating the remainder of the PHP script + Sample case: $sql = "SELECT * FROM bar WHERE foo = '" . $variable . "'" + end + (?=") + name + string.quoted.other.backtick.unclosed.sql + patterns + + + match + \\[\\'] + name + constant.character.escape.php + + + + + begin + \\"(?!([^\\"]|\\[^"])*\\")(?=(\\[^"]|.)*?") + comment + Unclosed strings must be captured to avoid them eating the remainder of the PHP script + Sample case: $sql = "SELECT * FROM bar WHERE foo = '" . $variable . "'" + end + (?=") + name + string.quoted.double.unclosed.sql + patterns + + + match + \\[\\'] + name + constant.character.escape.php + + + + + begin + \\" + captures + + 0 + + name + constant.character.escape.php + + + end + \\" + name + string.quoted.double.sql + patterns + + + include + #interpolation + + + + + begin + ` + end + ` + name + string.quoted.other.backtick.sql + patterns + + + include + #interpolation + + + + + begin + ' + end + ' + name + string.quoted.single.sql + patterns + + + include + #interpolation + + + + + match + \\. + name + constant.character.escape.php + + + include + #interpolation + + + include + source.sql + + + + sql-string-single-quoted + + begin + '\s*(?=(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER)\b) + beginCaptures + + 0 + + name + punctuation.definition.string.begin.php + + + contentName + source.sql.embedded.php + end + ' + endCaptures + + 0 + + name + punctuation.definition.string.end.php + + + name + string.quoted.single.sql.php + patterns + + + match + #(\\'|[^'])*(?='|$\n?) + name + comment.line.number-sign.sql + + + match + --(\\'|[^'])*(?='|$\n?) + name + comment.line.double-dash.sql + + + begin + \\'(?!([^\\']|\\[^'])*\\')(?=(\\[^']|.)*?') + comment + Unclosed strings must be captured to avoid them eating the remainder of the PHP script + Sample case: $sql = "SELECT * FROM bar WHERE foo = '" . $variable . "'" + end + (?=') + name + string.quoted.single.unclosed.sql + patterns + + + match + \\[\\'] + name + constant.character.escape.php + + + + + begin + `(?=[^`]*?') + comment + Unclosed strings must be captured to avoid them eating the remainder of the PHP script + Sample case: $sql = "SELECT * FROM bar WHERE foo = '" . $variable . "'" + end + (?=') + name + string.quoted.other.backtick.unclosed.sql + patterns + + + match + \\[\\'] + name + constant.character.escape.php + + + + + begin + "(?=[^"]*?') + comment + Unclosed strings must be captured to avoid them eating the remainder of the PHP script + Sample case: $sql = "SELECT * FROM bar WHERE foo = '" . $variable . "'" + end + (?=') + name + string.quoted.double.unclosed.sql + patterns + + + match + \\[\\'] + name + constant.character.escape.php + + + + + begin + \\' + captures + + 0 + + name + constant.character.escape.php + + + end + \\' + name + string.quoted.single.sql + + + match + \\[\\'] + name + constant.character.escape.php + + + include + source.sql + + + + string-backtick + + begin + ` + beginCaptures + + 0 + + name + punctuation.definition.string.begin.php + + + end + ` + endCaptures + + 0 + + name + punctuation.definition.string.end.php + + + name + string.interpolated.php + patterns + + + match + \\. + name + constant.character.escape.php + + + include + #interpolation + + + + string-double-quoted + + begin + " + beginCaptures + + 0 + + name + punctuation.definition.string.begin.php + + + comment + This contentName is just to allow the usage of “select scope” to select the string contents first, then the string with quotes + contentName + meta.string-contents.quoted.double.php + end + " + endCaptures + + 0 + + name + punctuation.definition.string.end.php + + + name + string.quoted.double.php + patterns + + + include + #interpolation + + + + string-single-quoted + + begin + ' + beginCaptures + + 0 + + name + punctuation.definition.string.begin.php + + + contentName + meta.string-contents.quoted.single.php + end + ' + endCaptures + + 0 + + name + punctuation.definition.string.end.php + + + name + string.quoted.single.php + patterns + + + match + \\[\\'] + name + constant.character.escape.php + + + + strings + + patterns + + + include + #regex-double-quoted + + + include + #sql-string-double-quoted + + + include + #string-double-quoted + + + include + #regex-single-quoted + + + include + #sql-string-single-quoted + + + include + #string-single-quoted + + + + support + + patterns + + + begin + (array)(\() + beginCaptures + + 1 + + name + support.function.construct.php + + 2 + + name + punctuation.definition.array.begin.php + + + end + \) + endCaptures + + 0 + + name + punctuation.definition.array.end.php + + + name + meta.array.php + patterns + + + include + #language + + + + + match + (?i)\b(s(huffle|ort)|n(ext|at(sort|casesort))|c(o(unt|mpact)|urrent)|in_array|u(sort|ksort|asort)|prev|e(nd|xtract)|k(sort|ey|rsort)|a(sort|r(sort|ray_(s(hift|um|plice|earch|lice)|c(h(unk|ange_key_case)|o(unt_values|mbine))|intersect(_(u(key|assoc)|key|assoc))?|diff(_(u(key|assoc)|key|assoc))?|u(n(shift|ique)|intersect(_(uassoc|assoc))?|diff(_(uassoc|assoc))?)|p(op|ush|ad|roduct)|values|key(s|_exists)|f(il(ter|l(_keys)?)|lip)|walk(_recursive)?|r(e(duce|verse)|and)|m(ultisort|erge(_recursive)?|ap))))|r(sort|eset|ange)|m(in|ax))(?=\s*\() + name + support.function.array.php + + + match + (?i)\bassert(_options)?(?=\s*\() + name + support.function.assert.php + + + match + (?i)\bdom_attr_is_id(?=\s*\() + name + support.function.attr.php + + + match + (?i)\bbase64_(decode|encode)(?=\s*\() + name + support.function.base64.php + + + match + (?i)\b(highlight_(string|file)|s(ys_getloadavg|et_(include_path|magic_quotes_runtime)|leep)|c(on(stant|nection_(status|aborted))|all_user_(func(_array)?|method(_array)?))|time_(sleep_until|nanosleep)|i(s_uploaded_file|n(i_(set|restore|get(_all)?)|et_(ntop|pton))|p2long|gnore_user_abort|mport_request_variables)|u(sleep|nregister_tick_function)|error_(log|get_last)|p(hp_strip_whitespace|utenv|arse_ini_file|rint_r)|flush|long2ip|re(store_include_path|gister_(shutdown_function|tick_function))|get(servby(name|port)|opt|_(c(urrent_user|fg_var)|include_path|magic_quotes_(gpc|runtime))|protobyn(umber|ame)|env)|move_uploaded_file)(?=\s*\() + name + support.function.basic_functions.php + + + match + (?i)\bbc(s(cale|ub|qrt)|comp|div|pow(mod)?|add|m(od|ul))(?=\s*\() + name + support.function.bcmath.php + + + match + (?i)\bbirdstep_(c(o(nnect|mmit)|lose)|off_autocommit|exec|f(ieldn(um|ame)|etch|reeresult)|autocommit|r(ollback|esult))(?=\s*\() + name + support.function.birdstep.php + + + match + (?i)\bget_browser(?=\s*\() + name + support.function.browscap.php + + + match + (?i)\b(s(tr(nc(asecmp|mp)|c(asecmp|mp)|len)|et_e(rror_handler|xception_handler))|c(lass_exists|reate_function)|trigger_error|i(s_(subclass_of|a)|nterface_exists)|de(fine(d)?|bug_(print_backtrace|backtrace))|zend_version|property_exists|e(ach|rror_reporting|xtension_loaded)|func(tion_exists|_(num_args|get_arg(s)?))|leak|restore_e(rror_handler|xception_handler)|get_(class(_(vars|methods))?|included_files|de(clared_(classes|interfaces)|fined_(constants|vars|functions))|object_vars|extension_funcs|parent_class|loaded_extensions|resource_type)|method_exists)(?=\s*\() + name + support.function.builtin_functions.php + + + match + (?i)\bbz(compress|decompress|open|err(str|no|or)|read)(?=\s*\() + name + support.function.bz2.php + + + match + (?i)\b(jdtounix|unixtojd)(?=\s*\() + name + support.function.cal_unix.php + + + match + (?i)\b(cal_(to_jd|info|days_in_month|from_jd)|j(d(to(j(ulian|ewish)|french|gregorian)|dayofweek|monthname)|uliantojd|ewishtojd)|frenchtojd|gregoriantojd)(?=\s*\() + name + support.function.calendar.php + + + match + (?i)\bdom_characterdata_(substring_data|insert_data|delete_data|append_data|replace_data)(?=\s*\() + name + support.function.characterdata.php + + + match + (?i)\bcom_(create_guid|print_typeinfo|event_sink|load_typelib|get_active_object|message_pump)(?=\s*\() + name + support.function.com_com.php + + + match + (?i)\bvariant_(s(ub|et(_type)?)|n(ot|eg)|c(a(st|t)|mp)|i(nt|div|mp)|or|d(iv|ate_(to_timestamp|from_timestamp))|pow|eqv|fix|a(nd|dd|bs)|get_type|round|xor|m(od|ul))(?=\s*\() + name + support.function.com_variant.php + + + match + (?i)\bcrc32(?=\s*\() + name + support.function.crc32.php + + + match + (?i)\bcrypt(?=\s*\() + name + support.function.crypt.php + + + match + (?i)\bctype_(space|cntrl|digit|upper|p(unct|rint)|lower|al(num|pha)|graph|xdigit)(?=\s*\() + name + support.function.ctype.php + + + match + (?i)\bconvert_cyr_string(?=\s*\() + name + support.function.cyr_convert.php + + + match + (?i)\bstrptime(?=\s*\() + name + support.function.datetime.php + + + match + (?i)\bdba_(handlers|sync|nextkey|close|insert|delete|op(timize|en)|exists|popen|key_split|f(irstkey|etch)|list|replace)(?=\s*\() + name + support.function.dba.php + + + match + (?i)\bdbase_(num(fields|records)|c(lose|reate)|delete_record|open|pack|add_record|get_(header_info|record(_with_names)?)|replace_record)(?=\s*\() + name + support.function.dbase.php + + + match + (?i)\b(scandir|c(h(dir|root)|losedir)|dir|opendir|re(addir|winddir)|g(etcwd|lob))(?=\s*\() + name + support.function.dir.php + + + match + (?i)\bdl(?=\s*\() + name + support.function.dl.php + + + match + (?i)\b(dns_(check_record|get_(record|mx))|gethostby(name(l)?|addr))(?=\s*\() + name + support.function.dns.php + + + match + (?i)\bdom_document_(s(chema_validate(_file)?|ave(_html(_file)?|xml)?)|normalize_document|create_(c(datasection|omment)|text_node|document_fragment|processing_instruction|e(ntity_reference|lement(_ns)?)|attribute(_ns)?)|import_node|validate|load(_html(_file)?|xml)?|adopt_node|re(name_node|laxNG_validate_(file|xml))|get_element(s_by_tag_name(_ns)?|_by_id)|xinclude)(?=\s*\() + name + support.function.document.php + + + match + (?i)\bdom_domconfiguration_(set_parameter|can_set_parameter|get_parameter)(?=\s*\() + name + support.function.domconfiguration.php + + + match + (?i)\bdom_domerrorhandler_handle_error(?=\s*\() + name + support.function.domerrorhandler.php + + + match + (?i)\bdom_domimplementation_(has_feature|create_document(_type)?|get_feature)(?=\s*\() + name + support.function.domimplementation.php + + + match + (?i)\bdom_domimplementationlist_item(?=\s*\() + name + support.function.domimplementationlist.php + + + match + (?i)\bdom_domimplementationsource_get_domimplementation(s)?(?=\s*\() + name + support.function.domimplementationsource.php + + + match + (?i)\bdom_domstringlist_item(?=\s*\() + name + support.function.domstringlist.php + + + match + (?i)\beaster_da(ys|te)(?=\s*\() + name + support.function.easter.php + + + match + (?i)\bdom_element_(has_attribute(_ns)?|set_(id_attribute(_n(s|ode))?|attribute(_n(s|ode(_ns)?))?)|remove_attribute(_n(s|ode))?|get_(elements_by_tag_name(_ns)?|attribute(_n(s|ode(_ns)?))?))(?=\s*\() + name + support.function.element.php + + + match + (?i)\b(s(hell_exec|ystem)|p(assthru|roc_nice)|e(scapeshell(cmd|arg)|xec))(?=\s*\() + name + support.function.exec.php + + + match + (?i)\bexif_(imagetype|t(humbnail|agname)|read_data)(?=\s*\() + name + support.function.exif.php + + + match + (?i)\bfdf_(header|s(et_(s(tatus|ubmit_form_action)|target_frame|o(n_import_javascript|pt)|javascript_action|encoding|v(ersion|alue)|f(ile|lags)|ap)|ave(_string)?)|next_field_name|c(lose|reate)|open(_string)?|e(num_values|rr(no|or))|add_(template|doc_javascript)|remove_item|get_(status|opt|encoding|v(ersion|alue)|f(ile|lags)|a(ttachment|p)))(?=\s*\() + name + support.function.fdf.php + + + match + (?i)\b(sys_get_temp_dir|copy|t(empnam|mpfile)|u(nlink|mask)|p(close|open)|f(s(canf|tat|eek)|nmatch|close|t(ell|runcate)|ile(_(put_contents|get_contents))?|open|p(utcsv|assthru)|eof|flush|write|lock|read|get(s(s)?|c(sv)?))|r(e(name|a(dfile|lpath)|wind)|mdir)|get_meta_tags|mkdir)(?=\s*\() + name + support.function.file.php + + + match + (?i)\b(stat|c(h(own|grp|mod)|learstatcache)|is_(dir|executable|file|link|writable|readable)|touch|disk_(total_space|free_space)|file(size|ctime|type|inode|owner|_exists|perms|atime|group|mtime)|l(stat|chgrp))(?=\s*\() + name + support.function.filestat.php + + + match + (?i)\bfilter_(has_var|input(_array)?|var(_array)?)(?=\s*\() + name + support.function.filter.php + + + match + (?i)\b(sprintf|printf|v(sprintf|printf|fprintf)|fprintf)(?=\s*\() + name + support.function.formatted_print.php + + + match + (?i)\b(pfsockopen|fsockopen)(?=\s*\() + name + support.function.fsock.php + + + match + (?i)\bftok(?=\s*\() + name + support.function.ftok.php + + + match + (?i)\b(image(s(y|tring(up)?|et(style|t(hickness|ile)|pixel|brush)|avealpha|x)|c(har(up)?|o(nvolution|py(res(ized|ampled)|merge(gray)?)?|lor(s(total|et|forindex)|closest(hwb|alpha)?|transparent|deallocate|exact(alpha)?|a(t|llocate(alpha)?)|resolve(alpha)?|match))|reate(truecolor|from(string|jpeg|png|wbmp|g(if|d(2(part)?)?)|x(pm|bm)))?)|2wbmp|t(ypes|tf(text|bbox)|ruecolortopalette)|i(struecolor|nterlace)|d(estroy|ashedline)|jpeg|ellipse|p(s(slantfont|copyfont|text|e(ncodefont|xtendfont)|freefont|loadfont|bbox)|ng|olygon|alettecopy)|f(t(text|bbox)|il(ter|l(toborder|ed(polygon|ellipse|arc|rectangle))?)|ont(height|width))|wbmp|a(ntialias|lphablending|rc)|l(ine|oadfont|ayereffect)|r(otate|ectangle)|g(if|d(2)?|ammacorrect|rab(screen|window))|xbm)|jpeg2wbmp|png2wbmp|gd_info)(?=\s*\() + name + support.function.gd.php + + + match + (?i)\b(ngettext|textdomain|d(ngettext|c(ngettext|gettext)|gettext)|gettext|bind(textdomain|_textdomain_codeset))(?=\s*\() + name + support.function.gettext.php + + + match + (?i)\bgmp_(hamdist|s(can(1|0)|ign|trval|ub|etbit|qrt(rem)?)|c(om|lrbit|mp)|ne(g|xtprime)|in(tval|it|vert)|or|div(_(q(r)?|r)|exact)|jacobi|p(o(pcount|w(m)?)|erfect_square|rob_prime)|fact|legendre|a(nd|dd|bs)|random|gcd(ext)?|xor|m(od|ul))(?=\s*\() + name + support.function.gmp.php + + + match + (?i)\bhash(_(hmac(_file)?|init|update(_(stream|file))?|fi(nal|le)|algos))?(?=\s*\() + name + support.function.hash.php + + + match + (?i)\bmd5(_file)?(?=\s*\() + name + support.function.hash_md.php + + + match + (?i)\bsha1(_file)?(?=\s*\() + name + support.function.hash_sha.php + + + match + (?i)\b(set(cookie|rawcookie)|header(s_(sent|list))?)(?=\s*\() + name + support.function.head.php + + + match + (?i)\b(html(specialchars(_decode)?|_entity_decode|entities)|get_html_translation_table)(?=\s*\() + name + support.function.html.php + + + match + (?i)\bhttp_build_query(?=\s*\() + name + support.function.http.php + + + match + (?i)\bibase_blob_(c(ancel|lose|reate)|i(nfo|mport)|open|echo|add|get)(?=\s*\() + name + support.function.ibase_blobs.php + + + match + (?i)\bibase_(set_event_handler|free_event_handler|wait_event)(?=\s*\() + name + support.function.ibase_events.php + + + match + (?i)\bibase_(n(um_(params|fields|rows)|ame_result)|execute|p(aram_info|repare)|f(ield_info|etch_(object|assoc|row)|ree_(query|result))|query|affected_rows)(?=\s*\() + name + support.function.ibase_query.php + + + match + (?i)\bibase_(serv(ice_(detach|attach)|er_info)|d(elete_user|b_info)|add_user|restore|backup|m(odify_user|aintain_db))(?=\s*\() + name + support.function.ibase_service.php + + + match + (?i)\b(iconv(_(s(tr(pos|len|rpos)|ubstr|et_encoding)|get_encoding|mime_(decode(_headers)?|encode)))?|ob_iconv_handler)(?=\s*\() + name + support.function.iconv.php + + + match + (?i)\b(image_type_to_(extension|mime_type)|getimagesize)(?=\s*\() + name + support.function.image.php + + + match + (?i)\b(zend_logo_guid|php(credits|info|_(sapi_name|ini_scanned_files|uname|egg_logo_guid|logo_guid|real_logo_guid)|version))(?=\s*\() + name + support.function.info.php + + + match + (?i)\bibase_(c(o(nnect|mmit(_ret)?)|lose)|trans|drop_db|pconnect|err(code|msg)|gen_id|rollback(_ret)?)(?=\s*\() + name + support.function.interbase.php + + + match + (?i)\bcurl_(setopt(_array)?|c(opy_handle|lose)|init|e(rr(no|or)|xec)|version|getinfo)(?=\s*\() + name + support.function.interface.php + + + match + (?i)\biptc(parse|embed)(?=\s*\() + name + support.function.iptc.php + + + match + (?i)\bjson_(decode|encode)(?=\s*\() + name + support.function.json.php + + + match + (?i)\blcg_value(?=\s*\() + name + support.function.lcg.php + + + match + (?i)\bldap_(s(tart_tls|ort|e(t_(option|rebind_proc)|arch)|asl_bind)|next_(entry|attribute|reference)|co(nnect|unt_entries|mpare)|t61_to_8859|8859_to_t61|d(n2ufn|elete)|unbind|parse_re(sult|ference)|e(rr(no|2str|or)|xplode_dn)|f(irst_(entry|attribute|reference)|ree_result)|add|list|get_(option|dn|entries|values_len|attributes)|re(name|ad)|mod_(del|add|replace)|bind)(?=\s*\() + name + support.function.ldap.php + + + match + (?i)\blevenshtein(?=\s*\() + name + support.function.levenshtein.php + + + match + (?i)\blibxml_(set_streams_context|clear_errors|use_internal_errors|get_(errors|last_error))(?=\s*\() + name + support.function.libxml.php + + + match + (?i)\b(symlink|link(info)?|readlink)(?=\s*\() + name + support.function.link.php + + + match + (?i)\b(ezmlm_hash|mail)(?=\s*\() + name + support.function.mail.php + + + match + (?i)\bset_time_limit(?=\s*\() + name + support.function.main.php + + + match + (?i)\b(h(ypot|exdec)|s(in(h)?|qrt)|number_format|c(os(h)?|eil)|is_(nan|infinite|finite)|tan(h)?|octdec|de(c(hex|oct|bin)|g2rad)|exp(m1)?|p(i|ow)|f(loor|mod)|log(1(p|0))?|a(sin(h)?|cos(h)?|tan(h|2)?|bs)|r(ound|ad2deg)|b(indec|ase_convert))(?=\s*\() + name + support.function.math.php + + + match + (?i)\bmb_(s(tr(str|cut|to(upper|lower)|i(str|pos|mwidth)|pos|width|len|r(chr|i(chr|pos)|pos))|ubst(itute_character|r(_count)?)|end_mail)|http_(input|output)|c(heck_encoding|onvert_(case|encoding|variables|kana))|internal_encoding|output_handler|de(code_(numericentity|mimeheader)|tect_(order|encoding))|encode_(numericentity|mimeheader)|p(arse_str|referred_mime_name)|l(ist_(encodings(_alias_names)?|mime_names)|anguage)|get_info)(?=\s*\() + name + support.function.mbstring.php + + + match + (?i)\bm(crypt_(c(fb|reate_iv|bc)|ofb|decrypt|e(cb|nc(_(self_test|is_block_(algorithm(_mode)?|mode)|get_(supported_key_sizes|iv_size|key_size|algorithms_name|modes_name|block_size))|rypt))|list_(algorithms|modes)|ge(neric(_(init|deinit))?|t_(cipher_name|iv_size|key_size|block_size))|module_(self_test|close|is_block_(algorithm(_mode)?|mode)|open|get_(supported_key_sizes|algo_(key_size|block_size))))|decrypt_generic)(?=\s*\() + name + support.function.mcrypt.php + + + match + (?i)\bmd5(_file)?(?=\s*\() + name + support.function.md5.php + + + match + (?i)\bmetaphone(?=\s*\() + name + support.function.metaphone.php + + + match + (?i)\bmhash(_(count|keygen_s2k|get_(hash_name|block_size)))?(?=\s*\() + name + support.function.mhash.php + + + match + (?i)\b(get(timeofday|rusage)|microtime)(?=\s*\() + name + support.function.microtime.php + + + match + (?i)\bmime_content_type(?=\s*\() + name + support.function.mime_magic.php + + + match + (?i)\b(swf(prebuiltclip_init|videostream_init)|ming_(set(scale|cubicthreshold)|use(swfversion|constants)|keypress))(?=\s*\() + name + support.function.ming.php + + + match + (?i)\bcurl_multi_(select|close|in(it|fo_read)|exec|add_handle|getcontent|remove_handle)(?=\s*\() + name + support.function.multi.php + + + match + (?i)\bmysqli_(s(sl_set|t(ore_result|at|mt_(s(tore_result|end_long_data|qlstate)|num_rows|close|in(sert_id|it)|data_seek|p(aram_count|repare)|e(rr(no|or)|xecute)|f(ield_count|etch|ree_result)|a(ttr_(set|get)|ffected_rows)|res(ult_metadata|et)|bind_(param|result)))|e(t_local_infile_(handler|default)|lect_db)|qlstate)|n(um_(fields|rows)|ext_result)|c(ha(nge_user|racter_set_name)|ommit|lose)|thread_(safe|id)|in(sert_id|it|fo)|options|d(ump_debug_info|ebug|ata_seek)|use_result|p(ing|repare)|err(no|or)|kill|f(ield_(seek|count|tell)|etch_(field(s|_direct)?|lengths|row)|ree_result)|warning_count|a(utocommit|ffected_rows)|r(ollback|eal_(connect|escape_string|query))|get_(server_(info|version)|host_info|client_(info|version)|proto_info)|more_results)(?=\s*\() + name + support.function.mysqli_api.php + + + match + (?i)\bmysqli_embedded_server_(start|end)(?=\s*\() + name + support.function.mysqli_embedded.php + + + match + (?i)\bmysqli_(s(tmt_get_warnings|et_charset)|connect(_err(no|or))?|query|fetch_(object|a(ssoc|rray))|get_(charset|warnings)|multi_query)(?=\s*\() + name + support.function.mysqli_nonapi.php + + + match + (?i)\bmysqli_(s(end_query|lave_query)|disable_r(pl_parse|eads_from_master)|enable_r(pl_parse|eads_from_master)|rpl_(p(arse_enabled|robe)|query_type)|master_query)(?=\s*\() + name + support.function.mysqli_repl.php + + + match + (?i)\bmysqli_report(?=\s*\() + name + support.function.mysqli_report.php + + + match + (?i)\bdom_namednodemap_(set_named_item(_ns)?|item|remove_named_item(_ns)?|get_named_item(_ns)?)(?=\s*\() + name + support.function.namednodemap.php + + + match + (?i)\bdom_namelist_get_name(space_uri)?(?=\s*\() + name + support.function.namelist.php + + + match + (?i)\bncurses_(s(how_panel|cr(_(set|init|dump|restore)|l)|ta(nd(out|end)|rt_color)|lk_(set|noutrefresh|c(olor|lear)|init|touch|attr(set|o(n|ff))?|re(store|fresh))|avetty)|h(ide_panel|line|a(s_(colors|i(c|l)|key)|lfdelay))|n(o(nl|cbreak|echo|qiflush|raw)|ew(_panel|pad|win)|apms|l)|c(olor_(set|content)|urs_set|l(ear|rto(eol|bot))|an_change_color|break)|t(ypeahead|imeout|op_panel|erm(name|attrs))|i(sendwin|n(s(str|ch|tr|delln|ertln)|ch|it(_(color|pair))?))|d(oupdate|e(f(ine_key|_(shell_mode|prog_mode))|l(ch|_panel|eteln|ay_output|win)))|u(se_(default_colors|e(nv|xtended_names))|nget(ch|mouse)|pdate_panels)|p(noutrefresh|utp|a(nel_(window|above|below)|ir_content)|refresh)|e(cho(char)?|nd|rase(char)?)|v(idattr|line)|k(illchar|ey(ok|pad))|qiflush|f(ilter|l(ushinp|ash))|longname|w(stand(out|end)|hline|noutrefresh|c(olor_set|lear)|erase|vline|a(ttr(set|o(n|ff))|dd(str|ch))|getch|refresh|mo(use_trafo|ve)|border)|a(ssume_default_colors|ttr(set|o(n|ff))|dd(str|nstr|ch(str|nstr)?))|r(e(set(ty|_(shell_mode|prog_mode))|place_panel|fresh)|aw)|get(yx|ch|m(ouse|axyx))|b(o(ttom_panel|rder)|eep|kgd(set)?|audrate)|m(o(use(interval|_trafo|mask)|ve(_panel)?)|eta|v(hline|cur|inch|delch|vline|waddstr|add(str|nstr|ch(str|nstr)?)|getch)))(?=\s*\() + name + support.function.ncurses_functions.php + + + match + (?i)\bdom_node_(set_user_data|has_(child_nodes|attributes)|normalize|c(ompare_document_position|lone_node)|i(s_(s(upported|ame_node)|default_namespace|equal_node)|nsert_before)|lookup_(namespace_uri|prefix)|append_child|get_(user_data|feature)|re(place_child|move_child))(?=\s*\() + name + support.function.node.php + + + match + (?i)\bdom_nodelist_item(?=\s*\() + name + support.function.nodelist.php + + + match + (?i)\bnsapi_(virtual|re(sponse_headers|quest_headers))(?=\s*\() + name + support.function.nsapi.php + + + match + (?i)\boci(setbufferinglob|_(s(tatement_type|e(t_prefetch|rver_version))|c(o(nnect|llection_(size|trim|element_(assign|get)|a(ssign|ppend)|max)|mmit)|lose|ancel)|n(um_(fields|rows)|ew_(c(o(nnect|llection)|ursor)|descriptor))|internal_debug|define_by_name|p(connect|a(ssword_change|rse))|e(rror|xecute)|f(ield_(s(cale|ize)|name|is_null|type(_raw)?|precision)|etch(_(object|a(ssoc|ll|rray)|row))?|ree_(statement|collection|descriptor))|lob_(s(ize|eek|ave)|c(opy|lose)|t(ell|runcate)|i(s_equal|mport)|e(of|rase|xport)|flush|append|write(_temporary)?|load|re(wind|ad))|r(ollback|esult)|bind_(array_by_name|by_name))|fetchinto|getbufferinglob)(?=\s*\() + name + support.function.oci8_interface.php + + + match + (?i)\bopenssl_(s(ign|eal)|csr_(sign|new|export(_to_file)?|get_(subject|public_key))|open|error_string|p(ublic_(decrypt|encrypt)|k(cs(12_(export(_to_file)?|read)|7_(sign|decrypt|encrypt|verify))|ey_(new|export(_to_file)?|free|get_(details|p(ublic|rivate))))|rivate_(decrypt|encrypt))|verify|x509_(check(_private_key|purpose)|parse|export(_to_file)?|free|read))(?=\s*\() + name + support.function.openssl.php + + + match + (?i)\bo(utput_(add_rewrite_var|reset_rewrite_vars)|b_(start|clean|implicit_flush|end_(clean|flush)|flush|list_handlers|get_(status|c(ontents|lean)|flush|le(ngth|vel))))(?=\s*\() + name + support.function.output.php + + + match + (?i)\b(unpack|pack)(?=\s*\() + name + support.function.pack.php + + + match + (?i)\bget(lastmod|my(inode|uid|pid|gid))(?=\s*\() + name + support.function.pageinfo.php + + + match + (?i)\bpcntl_(s(ignal|etpriority)|exec|fork|w(stopsig|termsig|if(s(ignaled|topped)|exited)|exitstatus|ait(pid)?)|alarm|getpriority)(?=\s*\() + name + support.function.pcntl.php + + + match + (?i)\bpdo_drivers(?=\s*\() + name + support.function.pdo.php + + + match + (?i)\bpdo_drivers(?=\s*\() + name + support.function.pdo_dbh.php + + + match + (?i)\bpg_(se(nd_(execute|prepare|query(_params)?)|t_(client_encoding|error_verbosity)|lect)|host|num_(fields|rows)|c(o(n(nect(ion_(status|reset|busy))?|vert)|py_(to|from))|ancel_query|l(ient_encoding|ose))|insert|t(ty|ra(nsaction_status|ce))|options|d(elete|bname)|u(n(trace|escape_bytea)|pdate)|e(scape_(string|bytea)|nd_copy|xecute)|p(connect|ing|ort|ut_line|arameter_status|repare)|version|f(ield_(size|n(um|ame)|is_null|t(ype(_oid)?|able)|prtlen)|etch_(object|a(ssoc|ll(_columns)?|rray)|r(ow|esult))|ree_result)|query(_params)?|affected_rows|l(o_(seek|c(lose|reate)|tell|import|open|unlink|export|write|read(_all)?)|ast_(notice|oid|error))|get_(notify|pid|result)|result_(s(tatus|eek)|error(_field)?)|meta_data)(?=\s*\() + name + support.function.pgsql.php + + + match + (?i)\b(virtual|apache_(setenv|note|child_terminate|lookup_uri|get_(version|modules)|re(s(et_timeout|ponse_headers)|quest_(s(ome_auth_required|ub_req_(lookup_(uri|file)|method_uri)|e(t_(etag|last_modified)|rver_port)|atisfies)|headers(_(in|out))?|is_initial_req|discard_request_body|update_mtime|err_headers_out|log_error|auth_(name|type)|r(un|emote_host)|meets_conditions)))|getallheaders)(?=\s*\() + name + support.function.php_apache.php + + + match + (?i)\b(str(totime|ftime)|checkdate|time(zone_(name_(from_abbr|get)|identifiers_list|transitions_get|o(pen|ffset_get)|abbreviations_list))?|idate|date(_(sun(set|_info|rise)|create|isodate_set|time(zone_(set|get)|_set)|d(efault_timezone_(set|get)|ate_set)|offset_get|parse|format|modify))?|localtime|g(etdate|m(strftime|date|mktime))|mktime)(?=\s*\() + name + support.function.php_date.php + + + match + (?i)\bdom_import_simplexml(?=\s*\() + name + support.function.php_dom.php + + + match + (?i)\bfbsql_(hostname|s(t(op_db|art_db)|e(t_(characterset|transaction|password|lob_mode)|lect_db))|n(um_(fields|rows)|ext_result)|c(hange_user|o(nnect|mmit)|lo(se|b_size)|reate_(clob|db|blob))|table_name|insert_id|d(ata(_seek|base(_password)?)|rop_db|b_(status|query))|username|err(no|or)|p(connect|assword)|f(ield_(seek|name|t(ype|able)|flags|len)|etch_(object|field|lengths|a(ssoc|rray)|row)|ree_result)|query|warnings|list_(tables|dbs|fields)|a(utocommit|ffected_rows)|get_autostart_info|r(o(ws_fetched|llback)|e(sult|ad_(clob|blob)))|blob_size)(?=\s*\() + name + support.function.php_fbsql.php + + + match + (?i)\bftp_(s(sl_connect|ystype|i(te|ze)|et_option)|n(list|b_(continue|put|f(put|get)|get))|c(h(dir|mod)|dup|onnect|lose)|delete|exec|p(ut|asv|wd)|f(put|get)|alloc|login|get(_option)?|r(ename|aw(list)?|mdir)|m(dtm|kdir))(?=\s*\() + name + support.function.php_ftp.php + + + match + (?i)\b(virtual|apache_(setenv|note|get(_(version|modules)|env)|response_headers)|getallheaders)(?=\s*\() + name + support.function.php_functions.php + + + match + (?i)\bimap_(header(s|info)|s(can|tatus|ort|ubscribe|e(t(_quota|flag_full|acl)|arch)|avebody)|c(heck|l(ose|earflag_full)|reatemailbox)|num_(recent|msg)|t(hread|imeout)|8bit|delete(mailbox)?|open|u(n(subscribe|delete)|id|tf(7_(decode|encode)|8))|e(rrors|xpunge)|ping|qprint|fetch(header|structure|_overview|body)|l(sub|ist|ast_error)|a(ppend|lerts)|get(subscribed|_quota(root)?|acl|mailboxes)|r(e(namemailbox|open)|fc822_(parse_(headers|adrlist)|write_address))|m(sgno|ime_header_decode|ail(_(co(py|mpose)|move)|boxmsginfo)?)|b(inary|ody(struct)?|ase64))(?=\s*\() + name + support.function.php_imap.php + + + match + (?i)\bmb_(split|ereg(i(_replace)?|_(search(_(setpos|init|pos|get(pos|regs)|regs))?|replace|match))?|regex_(set_options|encoding))(?=\s*\() + name + support.function.php_mbregex.php + + + match + (?i)\bsmfi_(set(timeout|flags|reply)|chgheader|delrcpt|add(header|rcpt)|replacebody|getsymval)(?=\s*\() + name + support.function.php_milter.php + + + match + (?i)\bmsql_(select_db|num_(fields|rows)|c(onnect|lose|reate_db)|d(ata_seek|rop_db|b_query)|error|pconnect|f(ield_(seek|name|t(ype|able)|flags|len)|etch_(object|field|array|row)|ree_result)|query|affected_rows|list_(tables|dbs|fields)|result)(?=\s*\() + name + support.function.php_msql.php + + + match + (?i)\bmssql_(select_db|n(um_(fields|rows)|ext_result)|c(onnect|lose)|init|data_seek|execute|pconnect|query|f(ield_(seek|name|type|length)|etch_(object|field|a(ssoc|rray)|row|batch)|ree_(statement|result))|g(uid_string|et_last_message)|r(ows_affected|esult)|bind|min_(error_severity|message_severity))(?=\s*\() + name + support.function.php_mssql.php + + + match + (?i)\bmysql_(s(tat|e(t_charset|lect_db))|num_(fields|rows)|c(onnect|l(ient_encoding|ose)|reate_db)|thread_id|in(sert_id|fo)|d(ata_seek|rop_db|b_query)|unbuffered_query|e(scape_string|rr(no|or))|p(connect|ing)|f(ield_(seek|name|t(ype|able)|flags|len)|etch_(object|field|lengths|a(ssoc|rray)|row)|ree_result)|query|affected_rows|list_(tables|dbs|processes|fields)|re(sult|al_escape_string)|get_(server_info|host_info|client_info|proto_info))(?=\s*\() + name + support.function.php_mysql.php + + + match + (?i)\b(solid_fetch_prev|odbc_(s(tatistics|pecialcolumns|etoption)|n(um_(fields|rows)|ext_result)|c(o(nnect|lumn(s|privileges)|mmit)|ursor|lose(_all)?)|table(s|privileges)|data_source|e(rror(msg)?|xec(ute)?)|p(connect|r(imarykeys|ocedure(s|columns)|epare))|f(ield_(scale|n(um|ame)|type|len)|oreignkeys|etch_(into|object|array|row)|ree_result)|autocommit|longreadlen|gettypeinfo|r(ollback|esult(_all)?)|binmode))(?=\s*\() + name + support.function.php_odbc.php + + + match + (?i)\bpreg_(split|quote|last_error|grep|replace(_callback)?|match(_all)?)(?=\s*\() + name + support.function.php_pcre.php + + + match + (?i)\b(spl_(classes|object_hash|autoload(_(call|unregister|extensions|functions|register))?)|class_(implements|parents))(?=\s*\() + name + support.function.php_spl.php + + + match + (?i)\bsybase_(se(t_message_handler|lect_db)|num_(fields|rows)|c(onnect|lose)|d(eadlock_retry_count|ata_seek)|unbuffered_query|pconnect|f(ield_seek|etch_(object|field|a(ssoc|rray)|row)|ree_result)|query|affected_rows|result|get_last_message|min_(server_severity|client_severity))(?=\s*\() + name + support.function.php_sybase_ct.php + + + match + (?i)\bsybase_(select_db|num_(fields|rows)|c(onnect|lose)|data_seek|pconnect|f(ield_seek|etch_(object|field|array|row)|ree_result)|query|affected_rows|result|get_last_message|min_(error_severity|message_severity))(?=\s*\() + name + support.function.php_sybase_db.php + + + match + (?i)\bxmlwriter_(s(tart_(c(omment|data)|d(td(_(e(ntity|lement)|attlist))?|ocument)|pi|element(_ns)?|attribute(_ns)?)|et_indent(_string)?)|text|o(utput_memory|pen_(uri|memory))|end_(c(omment|data)|d(td(_(e(ntity|lement)|attlist))?|ocument)|pi|element|attribute)|f(ull_end_element|lush)|write_(c(omment|data)|dtd(_(e(ntity|lement)|attlist))?|pi|element(_ns)?|attribute(_ns)?|raw))(?=\s*\() + name + support.function.php_xmlwriter.php + + + match + (?i)\b(s(tat(Name|Index)|et(Comment(Name|Index)|ArchiveComment))|c(lose|reateEmptyDir)|delete(Name|Index)|open|zip_(close|open|entry_(name|c(ompress(ionmethod|edsize)|lose)|open|filesize|read)|read)|unchange(Name|Index|All)|locateName|addF(ile|romString)|rename(Name|Index)|get(Stream|Comment(Name|Index)|NameIndex|From(Name|Index)|ArchiveComment))(?=\s*\() + name + support.function.php_zip.php + + + match + (?i)\bposix_(s(trerror|et(sid|uid|pgid|e(uid|gid)|gid))|ctermid|i(satty|nitgroups)|t(tyname|imes)|uname|kill|access|get(sid|cwd|_last_error|uid|e(uid|gid)|p(id|pid|w(nam|uid)|g(id|rp))|login|rlimit|g(id|r(nam|oups|gid)))|mk(nod|fifo))(?=\s*\() + name + support.function.posix.php + + + match + (?i)\bproc_(close|terminate|open|get_status)(?=\s*\() + name + support.function.proc_open.php + + + match + (?i)\bpspell_(s(tore_replacement|uggest|ave_wordlist)|c(heck|onfig_(save_repl|create|ignore|d(ict_dir|ata_dir)|personal|r(untogether|epl)|mode)|lear_session)|new(_(config|personal))?|add_to_(session|personal))(?=\s*\() + name + support.function.pspell.php + + + match + (?i)\bquoted_printable_decode(?=\s*\() + name + support.function.quot_print.php + + + match + (?i)\b(srand|getrandmax|rand|mt_(srand|getrandmax|rand))(?=\s*\() + name + support.function.rand.php + + + match + (?i)\breadline(_(c(ompletion_function|allback_(handler_(install|remove)|read_char)|lear_history)|info|on_new_line|write_history|list_history|add_history|re(display|ad_history)))?(?=\s*\() + name + support.function.readline.php + + + match + (?i)\brecode_(string|file)(?=\s*\() + name + support.function.recode.php + + + match + (?i)\b(s(plit(i)?|ql_regcase)|ereg(i(_replace)?|_replace)?)(?=\s*\() + name + support.function.reg.php + + + match + (?i)\bsession_(s(tart|et_(save_handler|cookie_params)|ave_path)|cache_(expire|limiter)|name|i(s_registered|d)|de(stroy|code)|un(set|register)|encode|write_close|reg(ister|enerate_id)|get_cookie_params|module_name)(?=\s*\() + name + support.function.session.php + + + match + (?i)\bsha1(_file)?(?=\s*\() + name + support.function.sha1.php + + + match + (?i)\bshmop_(size|close|delete|open|write|read)(?=\s*\() + name + support.function.shmop.php + + + match + (?i)\bsimplexml_(import_dom|load_(string|file))(?=\s*\() + name + support.function.simplexml.php + + + match + (?i)\bconfirm_extname_compiled(?=\s*\() + name + support.function.skeleton.php + + + match + (?i)\b(snmp(set|2_(set|walk|real_walk|get(next)?)|3_(set|walk|real_walk|get(next)?)|_(set_(oid_output_format|enum_print|valueretrieval|quick_print)|read_mib|get_(valueretrieval|quick_print))|walk|realwalk|get(next)?)|php_snmpv3)(?=\s*\() + name + support.function.snmp.php + + + match + (?i)\bsocket_(s(hutdown|trerror|e(nd(to)?|t_(nonblock|option|block)|lect))|c(onnect|l(ose|ear_error)|reate(_(pair|listen))?)|write|l(isten|ast_error)|accept|get(sockname|_option|peername)|re(cv(from)?|ad)|bind)(?=\s*\() + name + support.function.sockets.php + + + match + (?i)\bsoundex(?=\s*\() + name + support.function.soundex.php + + + match + (?i)\biterator_(count|to_array|apply)(?=\s*\() + name + support.function.spl_iterators.php + + + match + (?i)\bsqlite_(has_prev|s(ingle_query|eek)|n(um_(fields|rows)|ext)|c(hanges|olumn|urrent|lose|reate_(function|aggregate))|open|u(nbuffered_query|df_(decode_binary|encode_binary))|e(scape_string|rror_string|xec)|p(open|rev)|key|valid|query|f(ield_name|etch_(single|column_types|object|a(ll|rray))|actory)|l(ib(encoding|version)|ast_(insert_rowid|error))|array_query|rewind|busy_timeout)(?=\s*\() + name + support.function.sqlite.php + + + match + (?i)\bstream_(s(ocket_(s(hutdown|e(ndto|rver))|client|enable_crypto|pair|accept|recvfrom|get_name)|e(t_(timeout|write_buffer|blocking)|lect))|co(ntext_(set_(option|params)|create|get_(default|options))|py_to_stream)|filter_(prepend|append|remove)|get_(contents|transports|line|wrappers|meta_data))(?=\s*\() + name + support.function.streamsfuncs.php + + + match + (?i)\b(hebrev(c)?|s(scanf|imilar_text|tr(s(tr|pn)|natc(asecmp|mp)|c(hr|spn|oll)|i(str|p(slashes|cslashes|os|_tags))|t(o(upper|k|lower)|r)|_(s(huffle|plit)|ireplace|pad|word_count|r(ot13|ep(eat|lace)))|p(os|brk)|r(chr|ipos|ev|pos))|ubstr(_(co(unt|mpare)|replace))?|etlocale)|c(h(unk_split|r)|ount_chars)|nl(2br|_langinfo)|implode|trim|ord|dirname|uc(first|words)|join|pa(thinfo|rse_str)|explode|quotemeta|add(slashes|cslashes)|wordwrap|l(trim|ocaleconv)|rtrim|money_format|b(in2hex|asename))(?=\s*\() + name + support.function.string.php + + + match + (?i)\bdom_string_extend_find_offset(16|32)(?=\s*\() + name + support.function.string_extend.php + + + match + (?i)\b(syslog|closelog|openlog|define_syslog_variables)(?=\s*\() + name + support.function.syslog.php + + + match + (?i)\bmsg_(s(tat_queue|e(nd|t_queue))|re(ceive|move_queue)|get_queue)(?=\s*\() + name + support.function.sysvmsg.php + + + match + (?i)\bsem_(acquire|re(lease|move)|get)(?=\s*\() + name + support.function.sysvsem.php + + + match + (?i)\bshm_(detach|put_var|attach|get_var|remove(_var)?)(?=\s*\() + name + support.function.sysvshm.php + + + match + (?i)\bdom_text_(split_text|is_whitespace_in_element_content|replace_whole_text)(?=\s*\() + name + support.function.text.php + + + match + (?i)\btidy_(c(onfig_count|lean_repair)|is_x(html|ml)|diagnose|error_count|parse_(string|file)|access_count|warning_count|repair_(string|file)|get(opt|_(h(tml(_ver)?|ead)|status|config|o(utput|pt_doc)|error_buffer|r(oot|elease)|body)))(?=\s*\() + name + support.function.tidy.php + + + match + (?i)\btoken_(name|get_all)(?=\s*\() + name + support.function.tokenizer.php + + + match + (?i)\b(s(trval|ettype)|i(s_(s(calar|tring)|callable|nu(ll|meric)|object|float|array|long|resource|bool)|ntval)|floatval|gettype)(?=\s*\() + name + support.function.type.php + + + match + (?i)\buniqid(?=\s*\() + name + support.function.uniqid.php + + + match + (?i)\b(url(decode|encode)|parse_url|get_headers|rawurl(decode|encode))(?=\s*\() + name + support.function.url.php + + + match + (?i)\bstream_(filter_register|get_filters|bucket_(new|prepend|append|make_writeable))(?=\s*\() + name + support.function.user_filters.php + + + match + (?i)\bdom_userdatahandler_handle(?=\s*\() + name + support.function.userdatahandler.php + + + match + (?i)\bstream_wrapper_(unregister|re(store|gister))(?=\s*\() + name + support.function.userspace.php + + + match + (?i)\bconvert_uu(decode|encode)(?=\s*\() + name + support.function.uuencode.php + + + match + (?i)\b(serialize|debug_zval_dump|unserialize|var_(dump|export)|memory_get_(usage|peak_usage))(?=\s*\() + name + support.function.var.php + + + match + (?i)\bversion_compare(?=\s*\() + name + support.function.versioning.php + + + match + (?i)\bwddx_(serialize_va(lue|rs)|deserialize|packet_(start|end)|add_vars)(?=\s*\() + name + support.function.wddx.php + + + match + (?i)\b(utf8_(decode|encode)|xml_(set_(start_namespace_decl_handler|notation_decl_handler|character_data_handler|default_handler|object|unparsed_entity_decl_handler|processing_instruction_handler|e(nd_namespace_decl_handler|lement_handler|xternal_entity_ref_handler))|error_string|parse(_into_struct|r_(set_option|create(_ns)?|free|get_option))?|get_(current_(column_number|line_number|byte_index)|error_code)))(?=\s*\() + name + support.function.xml.php + + + match + (?i)\bxmlrpc_(se(t_type|rver_(c(all_method|reate)|destroy|add_introspection_data|register_(introspection_callback|method)))|is_fault|decode(_request)?|parse_method_descriptions|encode(_request)?|get_type)(?=\s*\() + name + support.function.xmlrpc-epi-php.php + + + match + (?i)\bdom_xpath_(evaluate|query|register_ns)(?=\s*\() + name + support.function.xpath.php + + + match + (?i)\bxsl_xsltprocessor_(has_exslt_support|set_parameter|transform_to_(doc|uri|xml)|import_stylesheet|re(gister_php_functions|move_parameter)|get_parameter)(?=\s*\() + name + support.function.xsltprocessor.php + + + match + (?i)\b(ob_gzhandler|zlib_get_coding_type|readgzfile|gz(compress|inflate|deflate|open|uncompress|encode|file))(?=\s*\() + name + support.function.zlib.php + + + match + (?i)\bis_int(eger)?(?=\s*\() + name + support.function.alias.php + + + match + (?i)\b(Re(cursive(RegexIterator|CachingIterator|IteratorIterator|DirectoryIterator|FilterIterator|ArrayIterator)|flection(Method|Class|Object|Extension|P(arameter|roperty)|Function)?|gexIterator)|s(tdClass|wf(s(hape|ound|prite)|text(field)?|displayitem|f(ill|ont(cha(r)?)?)|action|gradient|mo(vie|rph)|b(itmap|utton)))|XMLReader|tidyNode|S(impleXML(Iterator|Element)|oap(Server|Header|Client|Param|Var|Fault)|pl(TempFileObject|ObjectStorage|File(Info|Object)))|NoRewindIterator|C(OMPersistHelper|achingIterator)|I(nfiniteIterator|teratorIterator)|D(irectoryIterator|OM(XPath|Node|C(omment|dataSection)|Text|Document(Fragment)?|ProcessingInstruction|E(ntityReference|lement)|Attr))|P(DO(Statement)?|arentIterator)|E(rrorException|mptyIterator|xception)|FilterIterator|LimitIterator|A(p(pendIterator|acheRequest)|rray(Iterator|Object)))(?=\s*\() + name + support.class.builtin.php + + + match + (?i)\b((print|echo)\b|(isset|unset|e(val|mpty)|list)(?=\s*\()) + name + support.function.construct.php + + + + var_basic + + captures + + 1 + + name + punctuation.definition.variable.php + + + match + (?x) + (\$+)[a-zA-Z_\x{7f}-\x{ff}] + [a-zA-Z0-9_\x{7f}-\x{ff}]*?\b + name + variable.other.php + + var_global + + captures + + 1 + + name + punctuation.definition.variable.php + + + match + (\$)(_(COOKIE|FILES|GET|POST|REQUEST))\b + name + variable.other.global.php + + var_global_safer + + captures + + 2 + + name + punctuation.definition.variable.php + + + match + ((\$)(GLOBALS|_(ENV|SERVER|SESSION)))|\b(global)\b + name + variable.other.global.safer.php + + variables + + patterns + + + include + #var_global + + + include + #var_global_safer + + + include + #var_basic + + + + + scopeName + source.php + uuid + 22986475-8CA5-11D9-AEDD-000D93C8BE28 + + diff --git a/PHP/PHP.tmLanguage.cache b/PHP/PHP.tmLanguage.cache new file mode 100644 index 0000000..0216f39 Binary files /dev/null and b/PHP/PHP.tmLanguage.cache differ diff --git a/PHP/PHPDoc-class-var.sublime-snippet b/PHP/PHPDoc-class-var.sublime-snippet new file mode 100644 index 0000000..1fb92e5 --- /dev/null +++ b/PHP/PHPDoc-class-var.sublime-snippet @@ -0,0 +1,11 @@ + + + doc_v + source.php + Class Variable + diff --git a/PHP/PHPDoc-class.sublime-snippet b/PHP/PHPDoc-class.sublime-snippet new file mode 100644 index 0000000..d9f48b9 --- /dev/null +++ b/PHP/PHPDoc-class.sublime-snippet @@ -0,0 +1,14 @@ + + + doc_c + source.php + Class + diff --git a/PHP/PHPDoc-constant-definition.sublime-snippet b/PHP/PHPDoc-constant-definition.sublime-snippet new file mode 100644 index 0000000..7778b6f --- /dev/null +++ b/PHP/PHPDoc-constant-definition.sublime-snippet @@ -0,0 +1,9 @@ + + + doc_d + source.php + Constant Definition + diff --git a/PHP/PHPDoc-function-signature.sublime-snippet b/PHP/PHPDoc-function-signature.sublime-snippet new file mode 100644 index 0000000..77073a6 --- /dev/null +++ b/PHP/PHPDoc-function-signature.sublime-snippet @@ -0,0 +1,12 @@ + + + doc_s + source.php + Function Signature + diff --git a/PHP/PHPDoc-function.sublime-snippet b/PHP/PHPDoc-function.sublime-snippet new file mode 100644 index 0000000..c008fc5 --- /dev/null +++ b/PHP/PHPDoc-function.sublime-snippet @@ -0,0 +1,14 @@ + + + doc_f + source.php + Function + diff --git a/PHP/PHPDoc-interface.sublime-snippet b/PHP/PHPDoc-interface.sublime-snippet new file mode 100644 index 0000000..e242f7b --- /dev/null +++ b/PHP/PHPDoc-interface.sublime-snippet @@ -0,0 +1,14 @@ + + + doc_i + source.php + Interface + diff --git a/PHP/Start-Docblock.sublime-snippet b/PHP/Start-Docblock.sublime-snippet new file mode 100644 index 0000000..482f2ad --- /dev/null +++ b/PHP/Start-Docblock.sublime-snippet @@ -0,0 +1,8 @@ + + + /** + source.php + Start Docblock + diff --git a/PHP/Symbol List.tmPreferences b/PHP/Symbol List.tmPreferences new file mode 100644 index 0000000..c6ef004 --- /dev/null +++ b/PHP/Symbol List.tmPreferences @@ -0,0 +1,17 @@ + + + + + name + Symbols List: Indent Functions + scope + entity.name.function.php, support.function.magic.php + settings + + showInSymbolList + 1 + + uuid + 5157F71C-2801-4385-92EA-3D0B72AEE7C5 + + diff --git a/PHP/Symbol List.tmPreferences.cache b/PHP/Symbol List.tmPreferences.cache new file mode 100644 index 0000000..2b9e2e0 Binary files /dev/null and b/PHP/Symbol List.tmPreferences.cache differ diff --git a/PHP/class-{-}.sublime-snippet b/PHP/class-{-}.sublime-snippet new file mode 100644 index 0000000..6120272 --- /dev/null +++ b/PHP/class-{-}.sublime-snippet @@ -0,0 +1,17 @@ + + + class + source.php + class … + diff --git a/PHP/define(-).sublime-snippet b/PHP/define(-).sublime-snippet new file mode 100644 index 0000000..ccc3312 --- /dev/null +++ b/PHP/define(-).sublime-snippet @@ -0,0 +1,7 @@ + + + def + source.php + define(…, …) + diff --git a/PHP/defined(-).sublime-snippet b/PHP/defined(-).sublime-snippet new file mode 100644 index 0000000..b1bf72f --- /dev/null +++ b/PHP/defined(-).sublime-snippet @@ -0,0 +1,6 @@ + + + def? + source.php + defined(…) + diff --git a/PHP/do-while(-).sublime-snippet b/PHP/do-while(-).sublime-snippet new file mode 100644 index 0000000..332e724 --- /dev/null +++ b/PHP/do-while(-).sublime-snippet @@ -0,0 +1,8 @@ + + + do + source.php + do … while … + diff --git a/PHP/echo-___.sublime-snippet b/PHP/echo-___.sublime-snippet new file mode 100644 index 0000000..f90b7cc --- /dev/null +++ b/PHP/echo-___.sublime-snippet @@ -0,0 +1,6 @@ + + + echo + source.php + echo "…" + diff --git a/PHP/elseif(-).sublime-snippet b/PHP/elseif(-).sublime-snippet new file mode 100644 index 0000000..762c7dc --- /dev/null +++ b/PHP/elseif(-).sublime-snippet @@ -0,0 +1,8 @@ + + + elseif + source.php + elseif … + diff --git a/PHP/for(-).sublime-snippet b/PHP/for(-).sublime-snippet new file mode 100644 index 0000000..3c2724e --- /dev/null +++ b/PHP/for(-).sublime-snippet @@ -0,0 +1,8 @@ + + + for + source.php + for … + diff --git a/PHP/foreach(-).sublime-snippet b/PHP/foreach(-).sublime-snippet new file mode 100644 index 0000000..28473b6 --- /dev/null +++ b/PHP/foreach(-).sublime-snippet @@ -0,0 +1,8 @@ + + \$${4:value}}) { + ${0:# code...} +}]]> + foreach + source.php + foreach … + diff --git a/PHP/function-xx(-).sublime-snippet b/PHP/function-xx(-).sublime-snippet new file mode 100644 index 0000000..e8edc08 --- /dev/null +++ b/PHP/function-xx(-).sublime-snippet @@ -0,0 +1,9 @@ + + + fun + source.php + function … + diff --git a/PHP/if(-)-else(-).sublime-snippet b/PHP/if(-)-else(-).sublime-snippet new file mode 100644 index 0000000..1b2d2ae --- /dev/null +++ b/PHP/if(-)-else(-).sublime-snippet @@ -0,0 +1,11 @@ + + + ifelse + source.php + if … else … + diff --git a/PHP/if(-).sublime-snippet b/PHP/if(-).sublime-snippet new file mode 100644 index 0000000..8548a9c --- /dev/null +++ b/PHP/if(-).sublime-snippet @@ -0,0 +1,8 @@ + + + if + source.php + if … + diff --git a/PHP/if-a-b;.sublime-snippet b/PHP/if-a-b;.sublime-snippet new file mode 100644 index 0000000..d8b21c6 --- /dev/null +++ b/PHP/if-a-b;.sublime-snippet @@ -0,0 +1,6 @@ + + + if? + source.php + $… = ( … ) ? … : … + diff --git a/PHP/include(-).sublime-snippet b/PHP/include(-).sublime-snippet new file mode 100644 index 0000000..74684ba --- /dev/null +++ b/PHP/include(-).sublime-snippet @@ -0,0 +1,6 @@ + + + incl + source.php + include … + diff --git a/PHP/include_once(-).sublime-snippet b/PHP/include_once(-).sublime-snippet new file mode 100644 index 0000000..ea40b5c --- /dev/null +++ b/PHP/include_once(-).sublime-snippet @@ -0,0 +1,6 @@ + + + incl1 + source.php + include_once … + diff --git a/PHP/new-array(-).sublime-snippet b/PHP/new-array(-).sublime-snippet new file mode 100644 index 0000000..0d32a80 --- /dev/null +++ b/PHP/new-array(-).sublime-snippet @@ -0,0 +1,6 @@ + + $3${4:,} $0);]]> + array + source.php - variable.other.php + $… = array (…) + diff --git a/PHP/php-$this.sublime-snippet b/PHP/php-$this.sublime-snippet new file mode 100644 index 0000000..b83c9eb --- /dev/null +++ b/PHP/php-$this.sublime-snippet @@ -0,0 +1,6 @@ + + $0 ?>]]> + this + text.html - source + <?php $this->… ?> + diff --git a/PHP/php-echo-$this.sublime-snippet b/PHP/php-echo-$this.sublime-snippet new file mode 100644 index 0000000..f875731 --- /dev/null +++ b/PHP/php-echo-$this.sublime-snippet @@ -0,0 +1,6 @@ + + $0 ?>]]> + ethis + text.html - source.php + <?php echo $this->… ?> + diff --git a/PHP/php-echo-___.sublime-snippet b/PHP/php-echo-___.sublime-snippet new file mode 100644 index 0000000..0a50639 --- /dev/null +++ b/PHP/php-echo-___.sublime-snippet @@ -0,0 +1,6 @@ + + $0]]> + echo + text.html - source.php + <?php echo … ?> + diff --git a/PHP/php-echo-htmlentities(___).sublime-snippet b/PHP/php-echo-htmlentities(___).sublime-snippet new file mode 100644 index 0000000..3288fe0 --- /dev/null +++ b/PHP/php-echo-htmlentities(___).sublime-snippet @@ -0,0 +1,6 @@ + + $0]]> + echoh + text.html - source.php + <?php echo htmlentities(…) ?> + diff --git a/PHP/php-else.sublime-snippet b/PHP/php-else.sublime-snippet new file mode 100644 index 0000000..a7f5dfc --- /dev/null +++ b/PHP/php-else.sublime-snippet @@ -0,0 +1,6 @@ + + ]]> + else + text.html - source + <?php else: ?> + diff --git a/PHP/php-foreach-(___)-___-php-endforeach.sublime-snippet b/PHP/php-foreach-(___)-___-php-endforeach.sublime-snippet new file mode 100644 index 0000000..aa6b7de --- /dev/null +++ b/PHP/php-foreach-(___)-___-php-endforeach.sublime-snippet @@ -0,0 +1,8 @@ + + \$${4:value}}): ?> + ${0} +]]> + foreach + text.html - source + <?php foreach (…) … <?php endforeach ?> + diff --git a/PHP/php-if-(___)-___-php-else-___-php-endif.sublime-snippet b/PHP/php-if-(___)-___-php-else-___-php-endif.sublime-snippet new file mode 100644 index 0000000..712b358 --- /dev/null +++ b/PHP/php-if-(___)-___-php-else-___-php-endif.sublime-snippet @@ -0,0 +1,10 @@ + + + $2 + + $0 +]]> + ifelse + text.html - source + <?php if (…) ?> … <?php else ?> … <?php endif ?> + diff --git a/PHP/php-if-(___)-___-php-endif.sublime-snippet b/PHP/php-if-(___)-___-php-endif.sublime-snippet new file mode 100644 index 0000000..bbac38f --- /dev/null +++ b/PHP/php-if-(___)-___-php-endif.sublime-snippet @@ -0,0 +1,8 @@ + + + $0 +]]> + if + text.html - source + <?php if (…) ?> … <?php endif ?> + diff --git a/PHP/php.sublime-snippet b/PHP/php.sublime-snippet new file mode 100644 index 0000000..a4d54c6 --- /dev/null +++ b/PHP/php.sublime-snippet @@ -0,0 +1,6 @@ + + ]]> + php + text.html - source.php + <?php … ?> + diff --git a/PHP/require(-).sublime-snippet b/PHP/require(-).sublime-snippet new file mode 100644 index 0000000..658016b --- /dev/null +++ b/PHP/require(-).sublime-snippet @@ -0,0 +1,6 @@ + + + req + source.php + require … + diff --git a/PHP/require_once(-).sublime-snippet b/PHP/require_once(-).sublime-snippet new file mode 100644 index 0000000..bcca6e0 --- /dev/null +++ b/PHP/require_once(-).sublime-snippet @@ -0,0 +1,6 @@ + + + req1 + source.php + require_once … + diff --git a/PHP/return-$retVal;.sublime-snippet b/PHP/return-$retVal;.sublime-snippet new file mode 100644 index 0000000..880fb7f --- /dev/null +++ b/PHP/return-$retVal;.sublime-snippet @@ -0,0 +1,6 @@ + + + ret + source.php + return + diff --git a/PHP/return-FALSE;.sublime-snippet b/PHP/return-FALSE;.sublime-snippet new file mode 100644 index 0000000..95f130c --- /dev/null +++ b/PHP/return-FALSE;.sublime-snippet @@ -0,0 +1,6 @@ + + + ret0 + source.php + return false + diff --git a/PHP/return-TRUE;.sublime-snippet b/PHP/return-TRUE;.sublime-snippet new file mode 100644 index 0000000..8991472 --- /dev/null +++ b/PHP/return-TRUE;.sublime-snippet @@ -0,0 +1,6 @@ + + + ret1 + source.php + return true + diff --git a/PHP/switch(-)-case.sublime-snippet b/PHP/switch(-)-case.sublime-snippet new file mode 100644 index 0000000..7963dc8 --- /dev/null +++ b/PHP/switch(-)-case.sublime-snippet @@ -0,0 +1,8 @@ + + + case + source.php + case … + diff --git a/PHP/switch(-).sublime-snippet b/PHP/switch(-).sublime-snippet new file mode 100644 index 0000000..2d9174d --- /dev/null +++ b/PHP/switch(-).sublime-snippet @@ -0,0 +1,14 @@ + + + switch + source.php + switch … + diff --git a/PHP/throw.sublime-snippet b/PHP/throw.sublime-snippet new file mode 100644 index 0000000..0f99939 --- /dev/null +++ b/PHP/throw.sublime-snippet @@ -0,0 +1,7 @@ + + + throw + source.php + Throw Exception + diff --git a/PHP/try-{-___-}-catch-(___)-{-___-}.sublime-snippet b/PHP/try-{-___-}-catch-(___)-{-___-}.sublime-snippet new file mode 100644 index 0000000..2fd1df4 --- /dev/null +++ b/PHP/try-{-___-}-catch-(___)-{-___-}.sublime-snippet @@ -0,0 +1,10 @@ + + + try + source.php + Wrap in try { … } catch (…) { … } + diff --git a/PHP/while(-).sublime-snippet b/PHP/while(-).sublime-snippet new file mode 100644 index 0000000..06bb6ba --- /dev/null +++ b/PHP/while(-).sublime-snippet @@ -0,0 +1,8 @@ + + + while + source.php + while … + diff --git a/Package Control/Default.sublime-commands b/Package Control/Default.sublime-commands new file mode 100644 index 0000000..7d823ee --- /dev/null +++ b/Package Control/Default.sublime-commands @@ -0,0 +1,64 @@ +[ + { + "caption": "Package Control: Add Repository", + "command": "add_repository" + }, + { + "caption": "Package Control: Add Channel", + "command": "add_repository_channel" + }, + { + "caption": "Package Control: Create Binary Package File", + "command": "create_binary_package" + }, + { + "caption": "Package Control: Create Package File", + "command": "create_package" + }, + { + "caption": "Package Control: Disable Package", + "command": "disable_package" + }, + { + "caption": "Package Control: Discover Packages", + "command": "discover_packages" + }, + { + "caption": "Package Control: Enable Package", + "command": "enable_package" + }, + { + "caption": "Package Control: Install Package", + "command": "install_package" + }, + { + "caption": "Package Control: List Packages", + "command": "list_packages" + }, + { + "caption": "Package Control: Remove Package", + "command": "remove_package" + }, + { + "caption": "Package Control: Upgrade Package", + "command": "upgrade_package" + }, + { + "caption": "Package Control: Upgrade/Overwrite All Packages", + "command": "upgrade_all_packages" + }, + { + "caption": "Preferences: Package Control Settings – Default", + "command": "open_file", "args": + { + "file": "${packages}/Package Control/Package Control.sublime-settings" + } + }, + { + "caption": "Preferences: Package Control Settings – User", + "command": "open_file", "args": + { + "file": "${packages}/User/Package Control.sublime-settings" + } + } +] diff --git a/Package Control/Main.sublime-menu b/Package Control/Main.sublime-menu new file mode 100644 index 0000000..cbe83d1 --- /dev/null +++ b/Package Control/Main.sublime-menu @@ -0,0 +1,45 @@ +[ + { + "caption": "Preferences", + "mnemonic": "n", + "id": "preferences", + "children": + [ + { + "caption": "Package Settings", + "mnemonic": "P", + "id": "package-settings", + "children": + [ + { + "caption": "Package Control", + "children": + [ + { + "command": "open_file", "args": + { + "file": "${packages}/Package Control/Package Control.sublime-settings" + }, + "caption": "Settings – Default" + }, + { + "command": "open_file", "args": + { + "file": "${packages}/User/Package Control.sublime-settings" + }, + "caption": "Settings – User" + }, + { "caption": "-" } + ] + } + ] + }, + { + "caption": "Package Control", + "mnemonic": "C", + "command": "show_overlay", + "args": {"overlay": "command_palette", "text": "Package Control: "} + } + ] + } +] diff --git a/Package Control/Package Control.py b/Package Control/Package Control.py new file mode 100644 index 0000000..5994d70 --- /dev/null +++ b/Package Control/Package Control.py @@ -0,0 +1,2391 @@ +# coding=utf-8 +import sublime +import sublime_plugin +import os +import sys +import subprocess +import zipfile +import urllib +import urllib2 +import json +from fnmatch import fnmatch +import re +import threading +import datetime +import time +import shutil +import _strptime +import tempfile + +try: + import ssl + import httplib + import socket + + class InvalidCertificateException(httplib.HTTPException, urllib2.URLError): + def __init__(self, host, cert, reason): + httplib.HTTPException.__init__(self) + self.host = host + self.cert = cert + self.reason = reason + + def __str__(self): + return ('Host %s returned an invalid certificate (%s) %s\n' % + (self.host, self.reason, self.cert)) + + class CertValidatingHTTPSConnection(httplib.HTTPConnection): + default_port = httplib.HTTPS_PORT + + def __init__(self, host, port=None, key_file=None, cert_file=None, + ca_certs=None, strict=None, **kwargs): + httplib.HTTPConnection.__init__(self, host, port, strict, **kwargs) + self.key_file = key_file + self.cert_file = cert_file + self.ca_certs = ca_certs + if self.ca_certs: + self.cert_reqs = ssl.CERT_REQUIRED + else: + self.cert_reqs = ssl.CERT_NONE + + def _GetValidHostsForCert(self, cert): + if 'subjectAltName' in cert: + return [x[1] for x in cert['subjectAltName'] + if x[0].lower() == 'dns'] + else: + return [x[0][1] for x in cert['subject'] + if x[0][0].lower() == 'commonname'] + + def _ValidateCertificateHostname(self, cert, hostname): + hosts = self._GetValidHostsForCert(cert) + for host in hosts: + host_re = host.replace('.', '\.').replace('*', '[^.]*') + if re.search('^%s$' % (host_re,), hostname, re.I): + return True + return False + + def connect(self): + sock = socket.create_connection((self.host, self.port)) + self.sock = ssl.wrap_socket(sock, keyfile=self.key_file, + certfile=self.cert_file, + cert_reqs=self.cert_reqs, + ca_certs=self.ca_certs) + if self.cert_reqs & ssl.CERT_REQUIRED: + cert = self.sock.getpeercert() + hostname = self.host.split(':', 0)[0] + if not self._ValidateCertificateHostname(cert, hostname): + raise InvalidCertificateException(hostname, cert, + 'hostname mismatch') + + if hasattr(urllib2, 'HTTPSHandler'): + class VerifiedHTTPSHandler(urllib2.HTTPSHandler): + def __init__(self, **kwargs): + urllib2.AbstractHTTPHandler.__init__(self) + self._connection_args = kwargs + + def https_open(self, req): + def http_class_wrapper(host, **kwargs): + full_kwargs = dict(self._connection_args) + full_kwargs.update(kwargs) + return CertValidatingHTTPSConnection(host, **full_kwargs) + + try: + return self.do_open(http_class_wrapper, req) + except urllib2.URLError, e: + if type(e.reason) == ssl.SSLError and e.reason.args[0] == 1: + raise InvalidCertificateException(req.host, '', + e.reason.args[1]) + raise + + https_request = urllib2.HTTPSHandler.do_request_ + +except (ImportError): + pass + + +class ThreadProgress(): + def __init__(self, thread, message, success_message): + self.thread = thread + self.message = message + self.success_message = success_message + self.addend = 1 + self.size = 8 + sublime.set_timeout(lambda: self.run(0), 100) + + def run(self, i): + if not self.thread.is_alive(): + if hasattr(self.thread, 'result') and not self.thread.result: + sublime.status_message('') + return + sublime.status_message(self.success_message) + return + + before = i % self.size + after = (self.size - 1) - before + sublime.status_message('%s [%s=%s]' % \ + (self.message, ' ' * before, ' ' * after)) + if not after: + self.addend = -1 + if not before: + self.addend = 1 + i += self.addend + sublime.set_timeout(lambda: self.run(i), 100) + + +class ChannelProvider(): + def __init__(self, channel, package_manager): + self.channel_info = None + self.channel = channel + self.package_manager = package_manager + + def match_url(self): + return True + + def fetch_channel(self): + if self.channel_info != None: + return + + channel_json = self.package_manager.download_url(self.channel, + 'Error downloading channel.') + if channel_json == False: + self.channel_info = False + return + + try: + channel_info = json.loads(channel_json) + except (ValueError): + sublime.error_message(('%s: Error parsing JSON from ' + + 'channel %s.') % (__name__, self.channel)) + channel_info = False + + self.channel_info = channel_info + + def get_name_map(self): + self.fetch_channel() + if self.channel_info == False: + return False + return self.channel_info.get('package_name_map', {}) + + def get_renamed_packages(self): + self.fetch_channel() + if self.channel_info == False: + return False + return self.channel_info.get('renamed_packages', {}) + + def get_repositories(self): + self.fetch_channel() + if self.channel_info == False: + return False + return self.channel_info['repositories'] + + def get_certs(self): + self.fetch_channel() + if self.channel_info == False: + return False + return self.channel_info.get('certs', {}) + + def get_packages(self, repo): + self.fetch_channel() + if self.channel_info == False: + return False + if self.channel_info.get('packages', False) == False: + return False + if self.channel_info['packages'].get(repo, False) == False: + return False + output = {} + for package in self.channel_info['packages'][repo]: + copy = package.copy() + + platforms = copy['platforms'].keys() + if sublime.platform() in platforms: + copy['downloads'] = copy['platforms'][sublime.platform()] + elif '*' in platforms: + copy['downloads'] = copy['platforms']['*'] + else: + continue + del copy['platforms'] + + copy['url'] = copy['homepage'] + del copy['homepage'] + + output[copy['name']] = copy + return output + + +_channel_providers = [ChannelProvider] + + +class PackageProvider(): + def __init__(self, repo, package_manager): + self.repo_info = None + self.repo = repo + self.package_manager = package_manager + + def match_url(self): + return True + + def fetch_repo(self): + if self.repo_info != None: + return + + repository_json = self.package_manager.download_url(self.repo, + 'Error downloading repository.') + if repository_json == False: + self.repo_info = False + return + + try: + self.repo_info = json.loads(repository_json) + except (ValueError): + sublime.error_message(('%s: Error parsing JSON from ' + + 'repository %s.') % (__name__, self.repo)) + self.repo_info = False + + def get_packages(self): + self.fetch_repo() + if self.repo_info == False: + return False + + identifiers = [sublime.platform() + '-' + sublime.arch(), + sublime.platform(), '*'] + output = {} + for package in self.repo_info['packages']: + for id in identifiers: + if not id in package['platforms']: + continue + + downloads = [] + for download in package['platforms'][id]: + downloads.append(download) + + info = { + 'name': package['name'], + 'description': package.get('description'), + 'url': package.get('homepage', self.repo), + 'author': package.get('author'), + 'last_modified': package.get('last_modified'), + 'downloads': downloads + } + + output[package['name']] = info + break + return output + + def get_renamed_packages(self): + return self.repo_info.get('renamed_packages', {}) + + +class GitHubPackageProvider(): + def __init__(self, repo, package_manager): + self.repo_info = None + self.repo = repo + self.package_manager = package_manager + + def match_url(self): + master = re.search('^https?://github.com/[^/]+/[^/]+/?$', self.repo) + branch = re.search('^https?://github.com/[^/]+/[^/]+/tree/[^/]+/?$', + self.repo) + return master != None or branch != None + + def get_packages(self): + branch = 'master' + branch_match = re.search( + '^https?://github.com/[^/]+/[^/]+/tree/([^/]+)/?$', self.repo) + if branch_match != None: + branch = branch_match.group(1) + + api_url = re.sub('^https?://github.com/([^/]+)/([^/]+)($|/.*$)', + 'https://api.github.com/repos/\\1/\\2', self.repo) + + repo_json = self.package_manager.download_url(api_url, + 'Error downloading repository.') + if repo_json == False: + return False + + try: + repo_info = json.loads(repo_json) + except (ValueError): + sublime.error_message(('%s: Error parsing JSON from ' + + 'repository %s.') % (__name__, api_url)) + return False + + commit_api_url = api_url + '/commits?' + \ + urllib.urlencode({'sha': branch, 'per_page': 1}) + + commit_json = self.package_manager.download_url(commit_api_url, + 'Error downloading repository.') + if commit_json == False: + return False + + try: + commit_info = json.loads(commit_json) + except (ValueError): + sublime.error_message(('%s: Error parsing JSON from ' + + 'repository %s.') % (__name__, commit_api_url)) + return False + + download_url = 'https://nodeload.github.com/' + \ + repo_info['owner']['login'] + '/' + \ + repo_info['name'] + '/zipball/' + urllib.quote(branch) + + commit_date = commit_info[0]['commit']['committer']['date'] + timestamp = datetime.datetime.strptime(commit_date[0:19], + '%Y-%m-%dT%H:%M:%S') + utc_timestamp = timestamp.strftime( + '%Y.%m.%d.%H.%M.%S') + + homepage = repo_info['homepage'] + if not homepage: + homepage = repo_info['html_url'] + + package = { + 'name': repo_info['name'], + 'description': repo_info['description'] if \ + repo_info['description'] else 'No description provided', + 'url': homepage, + 'author': repo_info['owner']['login'], + 'last_modified': timestamp.strftime('%Y-%m-%d %H:%M:%S'), + 'downloads': [ + { + 'version': utc_timestamp, + 'url': download_url + } + ] + } + return {package['name']: package} + + def get_renamed_packages(self): + return {} + + +class GitHubUserProvider(): + def __init__(self, repo, package_manager): + self.repo_info = None + self.repo = repo + self.package_manager = package_manager + + def match_url(self): + return re.search('^https?://github.com/[^/]+/?$', self.repo) != None + + def get_packages(self): + user_match = re.search('^https?://github.com/([^/]+)/?$', self.repo) + user = user_match.group(1) + + api_url = 'https://api.github.com/users/%s/repos?per_page=100' % user + + repo_json = self.package_manager.download_url(api_url, + 'Error downloading repository.') + if repo_json == False: + return False + + try: + repo_info = json.loads(repo_json) + except (ValueError): + sublime.error_message(('%s: Error parsing JSON from ' + + 'repository %s.') % (__name__, api_url)) + return False + + packages = {} + for package_info in repo_info: + commit_api_url = ('https://api.github.com/repos/%s/%s/commits' + \ + '?sha=master&per_page=1') % (user, package_info['name']) + + commit_json = self.package_manager.download_url(commit_api_url, + 'Error downloading repository.') + if commit_json == False: + return False + + try: + commit_info = json.loads(commit_json) + except (ValueError): + sublime.error_message(('%s: Error parsing JSON from ' + + 'repository %s.') % (__name__, commit_api_url)) + return False + + commit_date = commit_info[0]['commit']['committer']['date'] + timestamp = datetime.datetime.strptime(commit_date[0:19], + '%Y-%m-%dT%H:%M:%S') + utc_timestamp = timestamp.strftime( + '%Y.%m.%d.%H.%M.%S') + + homepage = package_info['homepage'] + if not homepage: + homepage = package_info['html_url'] + + package = { + 'name': package_info['name'], + 'description': repo_info['description'] if \ + repo_info['description'] else 'No description provided', + 'url': homepage, + 'author': package_info['owner']['login'], + 'last_modified': timestamp.strftime('%Y-%m-%d %H:%M:%S'), + 'downloads': [ + { + 'version': utc_timestamp, + 'url': 'https://nodeload.github.com/' + \ + package_info['owner']['login'] + '/' + \ + package_info['name'] + '/zipball/master' + } + ] + } + packages[package['name']] = package + return packages + + def get_renamed_packages(self): + return {} + + +class BitBucketPackageProvider(): + def __init__(self, repo, package_manager): + self.repo_info = None + self.repo = repo + self.package_manager = package_manager + + def match_url(self): + return re.search('^https?://bitbucket.org', self.repo) != None + + def get_packages(self): + api_url = re.sub('^https?://bitbucket.org/', + 'https://api.bitbucket.org/1.0/repositories/', self.repo) + api_url = api_url.rstrip('/') + repo_json = self.package_manager.download_url(api_url, + 'Error downloading repository.') + if repo_json == False: + return False + try: + repo_info = json.loads(repo_json) + except (ValueError): + sublime.error_message(('%s: Error parsing JSON from ' + + 'repository %s.') % (__name__, api_url)) + return False + + changeset_url = api_url + '/changesets/default' + changeset_json = self.package_manager.download_url(changeset_url, + 'Error downloading repository.') + if changeset_json == False: + return False + try: + last_commit = json.loads(changeset_json) + except (ValueError): + sublime.error_message(('%s: Error parsing JSON from ' + + 'repository %s.') % (__name__, changeset_url)) + return False + commit_date = last_commit['timestamp'] + timestamp = datetime.datetime.strptime(commit_date[0:19], + '%Y-%m-%d %H:%M:%S') + utc_timestamp = timestamp.strftime( + '%Y.%m.%d.%H.%M.%S') + + homepage = repo_info['website'] + if not homepage: + homepage = self.repo + package = { + 'name': repo_info['name'], + 'description': repo_info['description'] if \ + repo_info['description'] else 'No description provided', + 'url': homepage, + 'author': repo_info['owner'], + 'last_modified': timestamp.strftime('%Y-%m-%d %H:%M:%S'), + 'downloads': [ + { + 'version': utc_timestamp, + 'url': self.repo + '/get/' + \ + last_commit['node'] + '.zip' + } + ] + } + return {package['name']: package} + + def get_renamed_packages(self): + return {} + + +_package_providers = [BitBucketPackageProvider, GitHubPackageProvider, + GitHubUserProvider, PackageProvider] + + +class BinaryNotFoundError(Exception): + pass + + +class NonCleanExitError(Exception): + def __init__(self, returncode): + self.returncode = returncode + + def __str__(self): + return repr(self.returncode) + + +class Downloader(): + def check_certs(self, domain, timeout): + cert_info = self.settings.get('certs', {}).get( + domain) + if not cert_info: + print '%s: No CA certs available for %s.' % (__name__, + domain) + return False + cert_path = os.path.join(sublime.packages_path(), 'Package Control', + 'certs', cert_info[0]) + ca_bundle_path = os.path.join(sublime.packages_path(), + 'Package Control', 'certs', 'ca-bundle.crt') + if not os.path.exists(cert_path): + cert_downloader = self.__class__(self.settings) + cert_contents = cert_downloader.download(cert_info[1], + 'Error downloading CA certs for %s.' % (domain), timeout, 1) + if not cert_contents: + return False + with open(cert_path, 'wb') as f: + f.write(cert_contents) + with open(ca_bundle_path, 'ab') as f: + f.write("\n" + cert_contents) + return ca_bundle_path + + +class CliDownloader(Downloader): + def __init__(self, settings): + self.settings = settings + + def find_binary(self, name): + for dir in os.environ['PATH'].split(os.pathsep): + path = os.path.join(dir, name) + if os.path.exists(path): + return path + + raise BinaryNotFoundError('The binary %s could not be located' % name) + + def execute(self, args): + proc = subprocess.Popen(args, stdin=subprocess.PIPE, + stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + + output = proc.stdout.read() + returncode = proc.wait() + if returncode != 0: + error = NonCleanExitError(returncode) + error.output = output + raise error + return output + + +class UrlLib2Downloader(Downloader): + def __init__(self, settings): + self.settings = settings + + def download(self, url, error_message, timeout, tries): + http_proxy = self.settings.get('http_proxy') + https_proxy = self.settings.get('https_proxy') + if http_proxy or https_proxy: + proxies = {} + if http_proxy: + proxies['http'] = http_proxy + if not https_proxy: + proxies['https'] = http_proxy + if https_proxy: + proxies['https'] = https_proxy + proxy_handler = urllib2.ProxyHandler(proxies) + else: + proxy_handler = urllib2.ProxyHandler() + handlers = [proxy_handler] + + secure_url_match = re.match('^https://([^/]+)', url) + if secure_url_match != None: + secure_domain = secure_url_match.group(1) + bundle_path = self.check_certs(secure_domain, timeout) + if not bundle_path: + return False + handlers.append(VerifiedHTTPSHandler(ca_certs=bundle_path)) + urllib2.install_opener(urllib2.build_opener(*handlers)) + + while tries > 0: + tries -= 1 + try: + request = urllib2.Request(url, headers={"User-Agent": + "Sublime Package Control"}) + http_file = urllib2.urlopen(request, timeout=timeout) + return http_file.read() + + except (urllib2.HTTPError) as (e): + # Bitbucket and Github ratelimit using 503 a decent amount + if str(e.code) == '503': + print ('%s: Downloading %s was rate limited, ' + + 'trying again') % (__name__, url) + continue + print '%s: %s HTTP error %s downloading %s.' % (__name__, + error_message, str(e.code), url) + + except (urllib2.URLError) as (e): + # Bitbucket and Github timeout a decent amount + if str(e.reason) == 'The read operation timed out' or \ + str(e.reason) == 'timed out': + print ('%s: Downloading %s timed out, trying ' + + 'again') % (__name__, url) + continue + print '%s: %s URL error %s downloading %s.' % (__name__, + error_message, str(e.reason), url) + break + return False + + +class WgetDownloader(CliDownloader): + def __init__(self, settings): + self.settings = settings + self.wget = self.find_binary('wget') + + def clean_tmp_file(self): + os.remove(self.tmp_file) + + def download(self, url, error_message, timeout, tries): + if not self.wget: + return False + + self.tmp_file = tempfile.NamedTemporaryFile().name + command = [self.wget, '--connect-timeout=' + str(int(timeout)), '-o', + self.tmp_file, '-O', '-', '-U', 'Sublime Package Control'] + + secure_url_match = re.match('^https://([^/]+)', url) + if secure_url_match != None: + secure_domain = secure_url_match.group(1) + bundle_path = self.check_certs(secure_domain, timeout) + if not bundle_path: + return False + command.append(u'--ca-certificate=' + bundle_path) + + command.append(url) + + if self.settings.get('http_proxy'): + os.putenv('http_proxy', self.settings.get('http_proxy')) + if not self.settings.get('https_proxy'): + os.putenv('https_proxy', self.settings.get('http_proxy')) + if self.settings.get('https_proxy'): + os.putenv('https_proxy', self.settings.get('https_proxy')) + + while tries > 0: + tries -= 1 + try: + result = self.execute(command) + self.clean_tmp_file() + return result + except (NonCleanExitError) as (e): + error_line = '' + with open(self.tmp_file) as f: + for line in list(f): + if re.search('ERROR[: ]|failed: ', line): + error_line = line + break + + if e.returncode == 8: + regex = re.compile('^.*ERROR (\d+):.*', re.S) + if re.sub(regex, '\\1', error_line) == '503': + # GitHub and BitBucket seem to rate limit via 503 + print ('%s: Downloading %s was rate limited' + + ', trying again') % (__name__, url) + continue + error_string = 'HTTP error ' + re.sub('^.*? ERROR ', '', + error_line) + + elif e.returncode == 4: + error_string = re.sub('^.*?failed: ', '', error_line) + # GitHub and BitBucket seem to time out a lot + if error_string.find('timed out') != -1: + print ('%s: Downloading %s timed out, ' + + 'trying again') % (__name__, url) + continue + + else: + error_string = re.sub('^.*?(ERROR[: ]|failed: )', '\\1', + error_line) + + error_string = re.sub('\\.?\s*\n\s*$', '', error_string) + print '%s: %s %s downloading %s.' % (__name__, error_message, + error_string, url) + self.clean_tmp_file() + break + return False + + +class CurlDownloader(CliDownloader): + def __init__(self, settings): + self.settings = settings + self.curl = self.find_binary('curl') + + def download(self, url, error_message, timeout, tries): + if not self.curl: + return False + command = [self.curl, '-f', '--user-agent', 'Sublime Package Control', + '--connect-timeout', str(int(timeout)), '-sS'] + + secure_url_match = re.match('^https://([^/]+)', url) + if secure_url_match != None: + secure_domain = secure_url_match.group(1) + bundle_path = self.check_certs(secure_domain, timeout) + if not bundle_path: + return False + command.extend(['--cacert', bundle_path]) + + command.append(url) + + if self.settings.get('http_proxy'): + os.putenv('http_proxy', self.settings.get('http_proxy')) + if not self.settings.get('https_proxy'): + os.putenv('HTTPS_PROXY', self.settings.get('http_proxy')) + if self.settings.get('https_proxy'): + os.putenv('HTTPS_PROXY', self.settings.get('https_proxy')) + + while tries > 0: + tries -= 1 + try: + return self.execute(command) + except (NonCleanExitError) as (e): + if e.returncode == 22: + code = re.sub('^.*?(\d+)\s*$', '\\1', e.output) + if code == '503': + # GitHub and BitBucket seem to rate limit via 503 + print ('%s: Downloading %s was rate limited' + + ', trying again') % (__name__, url) + continue + error_string = 'HTTP error ' + code + elif e.returncode == 6: + error_string = 'URL error host not found' + elif e.returncode == 28: + # GitHub and BitBucket seem to time out a lot + print ('%s: Downloading %s timed out, trying ' + + 'again') % (__name__, url) + continue + else: + error_string = e.output.rstrip() + + print '%s: %s %s downloading %s.' % (__name__, error_message, + error_string, url) + break + return False + +_channel_repository_cache = {} + + +class RepositoryDownloader(threading.Thread): + def __init__(self, package_manager, name_map, repo): + self.package_manager = package_manager + self.repo = repo + self.packages = {} + self.name_map = name_map + threading.Thread.__init__(self) + + def run(self): + for provider_class in _package_providers: + provider = provider_class(self.repo, self.package_manager) + if provider.match_url(): + break + packages = provider.get_packages() + if packages == False: + self.packages = False + return + + mapped_packages = {} + for package in packages.keys(): + mapped_package = self.name_map.get(package, package) + mapped_packages[mapped_package] = packages[package] + mapped_packages[mapped_package]['name'] = mapped_package + packages = mapped_packages + + self.packages = packages + + self.renamed_packages = provider.get_renamed_packages() + + +class VcsUpgrader(): + def __init__(self, vcs_binary, update_command, working_copy, cache_length): + self.binary = vcs_binary + self.update_command = update_command + self.working_copy = working_copy + self.cache_length = cache_length + + def execute(self, args, dir): + startupinfo = None + if os.name == 'nt': + startupinfo = subprocess.STARTUPINFO() + startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW + + proc = subprocess.Popen(args, stdin=subprocess.PIPE, + stdout=subprocess.PIPE, stderr=subprocess.STDOUT, + startupinfo=startupinfo, cwd=dir) + + return proc.stdout.read().replace('\r\n', '\n').rstrip(' \n\r') + + def find_binary(self, name): + if self.binary: + return self.binary + + # Try the path first + for dir in os.environ['PATH'].split(os.pathsep): + path = os.path.join(dir, name) + if os.path.exists(path): + return path + + # This is left in for backwards compatibility and for windows + # users who may have the binary, albeit in a common dir that may + # not be part of the PATH + if os.name == 'nt': + dirs = ['C:\\Program Files\\Git\\bin', + 'C:\\Program Files (x86)\\Git\\bin', + 'C:\\Program Files\\TortoiseGit\\bin', + 'C:\\Program Files\\Mercurial', + 'C:\\Program Files (x86)\\Mercurial', + 'C:\\Program Files (x86)\\TortoiseHg', + 'C:\\Program Files\\TortoiseHg', + 'C:\\cygwin\\bin'] + else: + dirs = ['/usr/local/git/bin'] + + for dir in dirs: + path = os.path.join(dir, name) + if os.path.exists(path): + return path + + return None + + +class GitUpgrader(VcsUpgrader): + def retrieve_binary(self): + name = 'git' + if os.name == 'nt': + name += '.exe' + binary = self.find_binary(name) + if binary and os.path.isdir(binary): + full_path = os.path.join(binary, name) + if os.path.exists(full_path): + binary = full_path + if not binary: + sublime.error_message(('%s: Unable to find %s. ' + + 'Please set the git_binary setting by accessing the ' + + 'Preferences > Package Settings > %s > ' + + u'Settings – User menu entry. The Settings – Default entry ' + + 'can be used for reference, but changes to that will be ' + + 'overwritten upon next upgrade.') % (__name__, name, __name__)) + return False + + if os.name == 'nt': + tortoise_plink = self.find_binary('TortoisePlink.exe') + if tortoise_plink: + os.environ.setdefault('GIT_SSH', tortoise_plink) + return binary + + def run(self): + binary = self.retrieve_binary() + if not binary: + return False + args = [binary] + args.extend(self.update_command) + self.execute(args, self.working_copy) + return True + + def incoming(self): + cache_key = self.working_copy + '.incoming' + working_copy_cache = _channel_repository_cache.get(cache_key) + if working_copy_cache and working_copy_cache.get('time') > \ + time.time(): + return working_copy_cache.get('data') + + binary = self.retrieve_binary() + if not binary: + return False + self.execute([binary, 'fetch'], self.working_copy) + args = [binary, 'log'] + args.append('..' + '/'.join(self.update_command[-2:])) + output = self.execute(args, self.working_copy) + incoming = len(output) > 0 + + _channel_repository_cache[cache_key] = { + 'time': time.time() + self.cache_length, + 'data': incoming + } + return incoming + + +class HgUpgrader(VcsUpgrader): + def retrieve_binary(self): + name = 'hg' + if os.name == 'nt': + name += '.exe' + binary = self.find_binary(name) + if binary and os.path.isdir(binary): + full_path = os.path.join(binary, name) + if os.path.exists(full_path): + binary = full_path + if not binary: + sublime.error_message(('%s: Unable to find %s. ' + + 'Please set the hg_binary setting by accessing the ' + + 'Preferences > Package Settings > %s > ' + + u'Settings – User menu entry. The Settings – Default entry ' + + 'can be used for reference, but changes to that will be ' + + 'overwritten upon next upgrade.') % (__name__, name, __name__)) + return False + return binary + + def run(self): + binary = self.retrieve_binary() + if not binary: + return False + args = [binary] + args.extend(self.update_command) + self.execute(args, self.working_copy) + return True + + def incoming(self): + cache_key = self.working_copy + '.incoming' + working_copy_cache = _channel_repository_cache.get(cache_key) + if working_copy_cache and working_copy_cache.get('time') > \ + time.time(): + return working_copy_cache.get('data') + + binary = self.retrieve_binary() + if not binary: + return False + args = [binary, 'in', '-q'] + args.append(self.update_command[-1]) + output = self.execute(args, self.working_copy) + incoming = len(output) > 0 + + _channel_repository_cache[cache_key] = { + 'time': time.time() + self.cache_length, + 'data': incoming + } + return incoming + + +class PackageManager(): + def __init__(self): + # Here we manually copy the settings since sublime doesn't like + # code accessing settings from threads + self.settings = {} + settings = sublime.load_settings(__name__ + '.sublime-settings') + for setting in ['timeout', 'repositories', 'repository_channels', + 'package_name_map', 'dirs_to_ignore', 'files_to_ignore', + 'package_destination', 'cache_length', 'auto_upgrade', + 'files_to_ignore_binary', 'files_to_keep', 'dirs_to_keep', + 'git_binary', 'git_update_command', 'hg_binary', + 'hg_update_command', 'http_proxy', 'https_proxy', + 'auto_upgrade_ignore', 'auto_upgrade_frequency', + 'submit_usage', 'submit_url', 'renamed_packages', + 'files_to_include', 'files_to_include_binary', 'certs', + 'ignore_vcs_packages']: + if settings.get(setting) == None: + continue + self.settings[setting] = settings.get(setting) + self.settings['platform'] = sublime.platform() + self.settings['version'] = sublime.version() + + def compare_versions(self, version1, version2): + def normalize(v): + # We prepend 0 to all date-based version numbers so that developers + # may switch to explicit versioning from GitHub/BitBucket + # versioning based on commit dates + if re.match('\d{4}\.\d{2}\.\d{2}\.\d{2}\.\d{2}\.\d{2}', v): + v = '0.' + v + return [int(x) for x in re.sub(r'(\.0+)*$', '', v).split(".")] + return cmp(normalize(version1), normalize(version2)) + + def download_url(self, url, error_message): + has_ssl = 'ssl' in sys.modules and hasattr(urllib2, 'HTTPSHandler') + is_ssl = re.search('^https://', url) != None + + if (is_ssl and has_ssl) or not is_ssl: + downloader = UrlLib2Downloader(self.settings) + else: + for downloader_class in [CurlDownloader, WgetDownloader]: + try: + downloader = downloader_class(self.settings) + break + except (BinaryNotFoundError): + pass + + if not downloader: + sublime.error_message(('%s: Unable to download %s due to no ' + + 'ssl module available and no capable program found. Please ' + + 'install curl or wget.') % (__name__, url)) + return False + + timeout = self.settings.get('timeout', 3) + return downloader.download(url.replace(' ', '%20'), error_message, + timeout, 3) + + def get_metadata(self, package): + metadata_filename = os.path.join(self.get_package_dir(package), + 'package-metadata.json') + if os.path.exists(metadata_filename): + with open(metadata_filename) as f: + try: + return json.load(f) + except (ValueError): + return {} + return {} + + def list_repositories(self): + repositories = self.settings.get('repositories') + repository_channels = self.settings.get('repository_channels') + for channel in repository_channels: + channel_repositories = None + + cache_key = channel + '.repositories' + repositories_cache = _channel_repository_cache.get(cache_key) + if repositories_cache and repositories_cache.get('time') > \ + time.time(): + channel_repositories = repositories_cache.get('data') + + name_map_cache_key = channel + '.package_name_map' + name_map_cache = _channel_repository_cache.get( + name_map_cache_key) + if name_map_cache and name_map_cache.get('time') > \ + time.time(): + name_map = name_map_cache.get('data') + name_map.update(self.settings.get('package_name_map', {})) + self.settings['package_name_map'] = name_map + + renamed_cache_key = channel + '.renamed_packages' + renamed_cache = _channel_repository_cache.get( + renamed_cache_key) + if renamed_cache and renamed_cache.get('time') > \ + time.time(): + renamed_packages = renamed_cache.get('data') + renamed_packages.update(self.settings.get('renamed_packages', + {})) + self.settings['renamed_packages'] = renamed_packages + + certs_cache_key = channel + '.certs' + certs_cache = _channel_repository_cache.get(certs_cache_key) + if certs_cache and certs_cache.get('time') > time.time(): + certs = self.settings.get('certs', {}) + certs.update(certs_cache.get('data')) + self.settings['certs'] = certs + + if channel_repositories == None or \ + self.settings.get('package_name_map') == None or \ + self.settings.get('renamed_packages') == None: + for provider_class in _channel_providers: + provider = provider_class(channel, self) + if provider.match_url(): + break + + channel_repositories = provider.get_repositories() + + if channel_repositories == False: + continue + _channel_repository_cache[cache_key] = { + 'time': time.time() + self.settings.get('cache_length', + 300), + 'data': channel_repositories + } + + for repo in channel_repositories: + if provider.get_packages(repo) == False: + continue + packages_cache_key = repo + '.packages' + _channel_repository_cache[packages_cache_key] = { + 'time': time.time() + self.settings.get('cache_length', + 300), + 'data': provider.get_packages(repo) + } + + # Have the local name map override the one from the channel + name_map = provider.get_name_map() + name_map.update(self.settings.get('package_name_map', {})) + self.settings['package_name_map'] = name_map + _channel_repository_cache[name_map_cache_key] = { + 'time': time.time() + self.settings.get('cache_length', + 300), + 'data': name_map + } + + renamed_packages = provider.get_renamed_packages() + _channel_repository_cache[renamed_cache_key] = { + 'time': time.time() + self.settings.get('cache_length', + 300), + 'data': renamed_packages + } + if renamed_packages: + self.settings['renamed_packages'] = self.settings.get( + 'renamed_packages', {}) + self.settings['renamed_packages'].update(renamed_packages) + + certs = provider.get_certs() + _channel_repository_cache[certs_cache_key] = { + 'time': time.time() + self.settings.get('cache_length', + 300), + 'data': certs + } + if certs: + self.settings['certs'] = self.settings.get('certs', {}) + self.settings['certs'].update(certs) + + repositories.extend(channel_repositories) + return repositories + + def list_available_packages(self): + repositories = self.list_repositories() + packages = {} + downloaders = [] + grouped_downloaders = {} + + # Repositories are run in reverse order so that the ones first + # on the list will overwrite those last on the list + for repo in repositories[::-1]: + repository_packages = None + + cache_key = repo + '.packages' + packages_cache = _channel_repository_cache.get(cache_key) + if packages_cache and packages_cache.get('time') > \ + time.time(): + repository_packages = packages_cache.get('data') + packages.update(repository_packages) + + if repository_packages == None: + downloader = RepositoryDownloader(self, + self.settings.get('package_name_map', {}), repo) + domain = re.sub('^https?://[^/]*?(\w+\.\w+)($|/.*$)', '\\1', + repo) + if not grouped_downloaders.get(domain): + grouped_downloaders[domain] = [] + grouped_downloaders[domain].append(downloader) + + def schedule(downloader, delay): + downloader.has_started = False + + def inner(): + downloader.start() + downloader.has_started = True + sublime.set_timeout(inner, delay) + + for domain_downloaders in grouped_downloaders.values(): + for i in range(len(domain_downloaders)): + downloader = domain_downloaders[i] + downloaders.append(downloader) + schedule(downloader, i * 150) + + complete = [] + + while downloaders: + downloader = downloaders.pop() + if downloader.has_started: + downloader.join() + complete.append(downloader) + else: + downloaders.insert(0, downloader) + + for downloader in complete: + repository_packages = downloader.packages + if repository_packages == False: + continue + cache_key = downloader.repo + '.packages' + _channel_repository_cache[cache_key] = { + 'time': time.time() + self.settings.get('cache_length', 300), + 'data': repository_packages + } + packages.update(repository_packages) + + renamed_packages = downloader.renamed_packages + if renamed_packages == False: + continue + renamed_cache_key = downloader.repo + '.renamed_packages' + _channel_repository_cache[renamed_cache_key] = { + 'time': time.time() + self.settings.get('cache_length', 300), + 'data': renamed_packages + } + if renamed_packages: + self.settings['renamed_packages'] = self.settings.get( + 'renamed_packages', {}) + self.settings['renamed_packages'].update(renamed_packages) + + return packages + + def list_packages(self): + package_names = os.listdir(sublime.packages_path()) + package_names = [path for path in package_names if + os.path.isdir(os.path.join(sublime.packages_path(), path))] + # Ignore things to be deleted + ignored_packages = [] + for package in package_names: + cleanup_file = os.path.join(sublime.packages_path(), package, + 'package-control.cleanup') + if os.path.exists(cleanup_file): + ignored_packages.append(package) + packages = list(set(package_names) - set(ignored_packages) - + set(self.list_default_packages())) + packages = sorted(packages, key=lambda s: s.lower()) + return packages + + def list_all_packages(self): + packages = os.listdir(sublime.packages_path()) + packages = sorted(packages, key=lambda s: s.lower()) + return packages + + def list_default_packages(self): + files = os.listdir(os.path.join(os.path.dirname( + sublime.packages_path()), 'Pristine Packages')) + files = list(set(files) - set(os.listdir( + sublime.installed_packages_path()))) + packages = [file.replace('.sublime-package', '') for file in files] + packages = sorted(packages, key=lambda s: s.lower()) + return packages + + def get_package_dir(self, package): + return os.path.join(sublime.packages_path(), package) + + def get_mapped_name(self, package): + return self.settings.get('package_name_map', {}).get(package, package) + + def create_package(self, package_name, package_destination, + binary_package=False): + package_dir = self.get_package_dir(package_name) + '/' + + if not os.path.exists(package_dir): + sublime.error_message(('%s: The folder for the package name ' + + 'specified, %s, does not exist in %s') % + (__name__, package_name, sublime.packages_path())) + return False + + package_filename = package_name + '.sublime-package' + package_path = os.path.join(package_destination, + package_filename) + + if not os.path.exists(sublime.installed_packages_path()): + os.mkdir(sublime.installed_packages_path()) + + if os.path.exists(package_path): + os.remove(package_path) + + try: + package_file = zipfile.ZipFile(package_path, "w", + compression=zipfile.ZIP_DEFLATED) + except (OSError, IOError) as (exception): + sublime.error_message(('%s: An error occurred creating the ' + + 'package file %s in %s. %s') % (__name__, package_filename, + package_destination, str(exception))) + return False + + dirs_to_ignore = self.settings.get('dirs_to_ignore', []) + if not binary_package: + files_to_ignore = self.settings.get('files_to_ignore', []) + files_to_include = self.settings.get('files_to_include', []) + else: + files_to_ignore = self.settings.get('files_to_ignore_binary', []) + files_to_include = self.settings.get('files_to_include_binary', []) + + package_dir_regex = re.compile('^' + re.escape(package_dir)) + for root, dirs, files in os.walk(package_dir): + [dirs.remove(dir) for dir in dirs if dir in dirs_to_ignore] + paths = dirs + paths.extend(files) + for path in paths: + full_path = os.path.join(root, path) + relative_path = re.sub(package_dir_regex, '', full_path) + + ignore_matches = [fnmatch(relative_path, p) for p in files_to_ignore] + include_matches = [fnmatch(relative_path, p) for p in files_to_include] + if any(ignore_matches) and not any(include_matches): + continue + + if os.path.isdir(full_path): + continue + package_file.write(full_path, relative_path) + + package_file.close() + + return True + + def install_package(self, package_name): + packages = self.list_available_packages() + + if package_name not in packages.keys(): + sublime.error_message(('%s: The package specified, %s, is ' + + 'not available.') % (__name__, package_name)) + return False + + download = packages[package_name]['downloads'][0] + url = download['url'] + + package_filename = package_name + \ + '.sublime-package' + package_path = os.path.join(sublime.installed_packages_path(), + package_filename) + pristine_package_path = os.path.join(os.path.dirname( + sublime.packages_path()), 'Pristine Packages', package_filename) + + package_dir = self.get_package_dir(package_name) + + package_metadata_file = os.path.join(package_dir, + 'package-metadata.json') + + if os.path.exists(os.path.join(package_dir, '.git')): + if self.settings.get('ignore_vcs_packages'): + sublime.error_message(('%s: Skipping git package %s since ' + + 'the setting ignore_vcs_packages is set to true') % + (__name__, package_name)) + return False + return GitUpgrader(self.settings['git_binary'], + self.settings['git_update_command'], package_dir, + self.settings['cache_length']).run() + elif os.path.exists(os.path.join(package_dir, '.hg')): + if self.settings.get('ignore_vcs_packages'): + sublime.error_message(('%s: Skipping hg package %s since ' + + 'the setting ignore_vcs_packages is set to true') % + (__name__, package_name)) + return False + return HgUpgrader(self.settings['hg_binary'], + self.settings['hg_update_command'], package_dir, + self.settings['cache_length']).run() + + is_upgrade = os.path.exists(package_metadata_file) + old_version = None + if is_upgrade: + old_version = self.get_metadata(package_name).get('version') + + package_bytes = self.download_url(url, 'Error downloading package.') + if package_bytes == False: + return False + with open(package_path, "wb") as package_file: + package_file.write(package_bytes) + + if not os.path.exists(package_dir): + os.mkdir(package_dir) + + # We create a backup copy incase something was edited + else: + try: + backup_dir = os.path.join(os.path.dirname( + sublime.packages_path()), 'Backup', + datetime.datetime.now().strftime('%Y%m%d%H%M%S')) + if not os.path.exists(backup_dir): + os.makedirs(backup_dir) + package_backup_dir = os.path.join(backup_dir, package_name) + shutil.copytree(package_dir, package_backup_dir) + except (OSError, IOError) as (exception): + sublime.error_message(('%s: An error occurred while trying ' + + 'to backup the package directory for %s. %s') % + (__name__, package_name, str(exception))) + shutil.rmtree(package_backup_dir) + return False + + try: + package_zip = zipfile.ZipFile(package_path, 'r') + except (zipfile.BadZipfile): + sublime.error_message(('%s: An error occurred while ' + + 'trying to unzip the package file for %s. Please try ' + + 'installing the package again.') % (__name__, package_name)) + return False + + root_level_paths = [] + last_path = None + for path in package_zip.namelist(): + last_path = path + if path.find('/') in [len(path) - 1, -1]: + root_level_paths.append(path) + if path[0] == '/' or path.find('../') != -1 or path.find('..\\') != -1: + sublime.error_message(('%s: The package specified, %s, ' + + 'contains files outside of the package dir and cannot ' + + 'be safely installed.') % (__name__, package_name)) + return False + + if last_path and len(root_level_paths) == 0: + root_level_paths.append(last_path[0:last_path.find('/') + 1]) + + os.chdir(package_dir) + + # Here we don’t use .extractall() since it was having issues on OS X + skip_root_dir = len(root_level_paths) == 1 and \ + root_level_paths[0].endswith('/') + extracted_paths = [] + for path in package_zip.namelist(): + dest = path + try: + if not isinstance(dest, unicode): + dest = unicode(dest, 'utf-8', 'strict') + except (UnicodeDecodeError): + dest = unicode(dest, 'cp1252', 'replace') + + if os.name == 'nt': + regex = ':|\*|\?|"|<|>|\|' + if re.search(regex, dest) != None: + print ('%s: Skipping file from package named %s due to ' + + 'an invalid filename') % (__name__, path) + continue + + # If there was only a single directory in the package, we remove + # that folder name from the paths as we extract entries + if skip_root_dir: + dest = dest[len(root_level_paths[0]):] + + if os.name == 'nt': + dest = dest.replace('/', '\\') + else: + dest = dest.replace('\\', '/') + + dest = os.path.join(package_dir, dest) + + def add_extracted_dirs(dir): + while dir not in extracted_paths: + extracted_paths.append(dir) + dir = os.path.dirname(dir) + if dir == package_dir: + break + + if path.endswith('/'): + if not os.path.exists(dest): + os.makedirs(dest) + add_extracted_dirs(dest) + else: + dest_dir = os.path.dirname(dest) + if not os.path.exists(dest_dir): + os.makedirs(dest_dir) + add_extracted_dirs(dest_dir) + extracted_paths.append(dest) + try: + open(dest, 'wb').write(package_zip.read(path)) + except (IOError, UnicodeDecodeError): + print ('%s: Skipping file from package named %s due to ' + + 'an invalid filename') % (__name__, path) + package_zip.close() + + # Here we clean out any files that were not just overwritten + try: + for root, dirs, files in os.walk(package_dir, topdown=False): + paths = [os.path.join(root, f) for f in files] + paths.extend([os.path.join(root, d) for d in dirs]) + + for path in paths: + if path in extracted_paths: + continue + if os.path.isdir(path): + os.rmdir(path) + else: + os.remove(path) + + except (OSError, IOError) as (e): + sublime.error_message(('%s: An error occurred while trying to ' + + 'remove old files from the %s directory. %s') % + (__name__, package_name, str(e))) + return False + + self.print_messages(package_name, package_dir, is_upgrade, old_version) + + with open(package_metadata_file, 'w') as f: + metadata = { + "version": packages[package_name]['downloads'][0]['version'], + "url": packages[package_name]['url'], + "description": packages[package_name]['description'] + } + json.dump(metadata, f) + + # Submit install and upgrade info + if is_upgrade: + params = { + 'package': package_name, + 'operation': 'upgrade', + 'version': packages[package_name]['downloads'][0]['version'], + 'old_version': old_version + } + else: + params = { + 'package': package_name, + 'operation': 'install', + 'version': packages[package_name]['downloads'][0]['version'] + } + self.record_usage(params) + + # Record the install in the settings file so that you can move + # settings across computers and have the same packages installed + def save_package(): + settings = sublime.load_settings(__name__ + '.sublime-settings') + installed_packages = settings.get('installed_packages', []) + if not installed_packages: + installed_packages = [] + installed_packages.append(package_name) + installed_packages = list(set(installed_packages)) + installed_packages = sorted(installed_packages, + key=lambda s: s.lower()) + settings.set('installed_packages', installed_packages) + sublime.save_settings(__name__ + '.sublime-settings') + sublime.set_timeout(save_package, 1) + + # Here we delete the package file from the installed packages directory + # since we don't want to accidentally overwrite user changes + os.remove(package_path) + # We have to remove the pristine package too or else Sublime Text 2 + # will silently delete the package + if os.path.exists(pristine_package_path): + os.remove(pristine_package_path) + + os.chdir(sublime.packages_path()) + return True + + def print_messages(self, package, package_dir, is_upgrade, old_version): + messages_file = os.path.join(package_dir, 'messages.json') + if not os.path.exists(messages_file): + return + + messages_fp = open(messages_file, 'r') + message_info = json.load(messages_fp) + messages_fp.close() + + output = '' + if not is_upgrade and message_info.get('install'): + install_messages = os.path.join(package_dir, + message_info.get('install')) + message = '\n\n%s:\n%s\n\n ' % (package, + ('-' * len(package))) + with open(install_messages, 'r') as f: + message += f.read().replace('\n', '\n ') + output += message + '\n' + + elif is_upgrade and old_version: + upgrade_messages = list(set(message_info.keys()) - + set(['install'])) + upgrade_messages = sorted(upgrade_messages, + cmp=self.compare_versions, reverse=True) + for version in upgrade_messages: + if self.compare_versions(old_version, version) >= 0: + break + if not output: + message = '\n\n%s:\n%s\n' % (package, + ('-' * len(package))) + output += message + upgrade_messages = os.path.join(package_dir, + message_info.get(version)) + message = '\n ' + with open(upgrade_messages, 'r') as f: + message += f.read().replace('\n', '\n ') + output += message + '\n' + + if not output: + return + + def print_to_panel(): + window = sublime.active_window() + + views = window.views() + view = None + for _view in views: + if _view.name() == 'Package Control Messages': + view = _view + break + + if not view: + view = window.new_file() + view.set_name('Package Control Messages') + view.set_scratch(True) + + def write(string): + edit = view.begin_edit() + view.insert(edit, view.size(), string) + view.end_edit(edit) + + if not view.size(): + view.settings().set("word_wrap", True) + write('Package Control Messages\n' + + '========================') + + write(output) + sublime.set_timeout(print_to_panel, 1) + + def remove_package(self, package_name): + installed_packages = self.list_packages() + + if package_name not in installed_packages: + sublime.error_message(('%s: The package specified, %s, is not ' + + 'installed.') % (__name__, package_name)) + return False + + os.chdir(sublime.packages_path()) + + # Give Sublime Text some time to ignore the package + time.sleep(1) + + package_filename = package_name + '.sublime-package' + package_path = os.path.join(sublime.installed_packages_path(), + package_filename) + installed_package_path = os.path.join(os.path.dirname( + sublime.packages_path()), 'Installed Packages', package_filename) + pristine_package_path = os.path.join(os.path.dirname( + sublime.packages_path()), 'Pristine Packages', package_filename) + package_dir = self.get_package_dir(package_name) + + version = self.get_metadata(package_name).get('version') + + try: + if os.path.exists(package_path): + os.remove(package_path) + except (OSError, IOError) as (exception): + sublime.error_message(('%s: An error occurred while trying to ' + + 'remove the package file for %s. %s') % (__name__, + package_name, str(exception))) + return False + + try: + if os.path.exists(installed_package_path): + os.remove(installed_package_path) + except (OSError, IOError) as (exception): + sublime.error_message(('%s: An error occurred while trying to ' + + 'remove the installed package file for %s. %s') % (__name__, + package_name, str(exception))) + return False + + try: + if os.path.exists(pristine_package_path): + os.remove(pristine_package_path) + except (OSError, IOError) as (exception): + sublime.error_message(('%s: An error occurred while trying to ' + + 'remove the pristine package file for %s. %s') % (__name__, + package_name, str(exception))) + return False + + # We don't delete the actual package dir immediately due to a bug + # in sublime_plugin.py + can_delete_dir = True + for path in os.listdir(package_dir): + try: + full_path = os.path.join(package_dir, path) + if not os.path.isdir(full_path): + os.remove(full_path) + else: + shutil.rmtree(full_path) + except (OSError, IOError) as (exception): + # If there is an error deleting now, we will mark it for + # cleanup the next time Sublime Text starts + open(os.path.join(package_dir, 'package-control.cleanup'), + 'w').close() + can_delete_dir = False + + params = { + 'package': package_name, + 'operation': 'remove', + 'version': version + } + self.record_usage(params) + + # Remove the package from the installed packages list + def clear_package(): + settings = sublime.load_settings('%s.sublime-settings' % __name__) + installed_packages = settings.get('installed_packages', []) + if not installed_packages: + installed_packages = [] + installed_packages.remove(package_name) + settings.set('installed_packages', installed_packages) + sublime.save_settings('%s.sublime-settings' % __name__) + sublime.set_timeout(clear_package, 1) + + if can_delete_dir: + os.rmdir(package_dir) + + return True + + def record_usage(self, params): + if not self.settings.get('submit_usage'): + return + params['package_control_version'] = \ + self.get_metadata('Package Control').get('version') + params['sublime_platform'] = self.settings.get('platform') + params['sublime_version'] = self.settings.get('version') + url = self.settings.get('submit_url') + '?' + urllib.urlencode(params) + + result = self.download_url(url, 'Error submitting usage information.') + if result == False: + return + + try: + result = json.loads(result) + if result['result'] != 'success': + raise ValueError() + except (ValueError): + print '%s: Error submitting usage information for %s' % (__name__, + params['package']) + + +class PackageCreator(): + def show_panel(self): + self.manager = PackageManager() + self.packages = self.manager.list_packages() + if not self.packages: + sublime.error_message(('%s: There are no packages available to ' + + 'be packaged.') % (__name__)) + return + self.window.show_quick_panel(self.packages, self.on_done) + + def get_package_destination(self): + destination = self.manager.settings.get('package_destination') + + # We check destination via an if statement instead of using + # the dict.get() method since the key may be set, but to a blank value + if not destination: + destination = os.path.join(os.path.expanduser('~'), 'Desktop') + + return destination + + +class CreatePackageCommand(sublime_plugin.WindowCommand, PackageCreator): + def run(self): + self.show_panel() + + def on_done(self, picked): + if picked == -1: + return + package_name = self.packages[picked] + package_destination = self.get_package_destination() + + if self.manager.create_package(package_name, package_destination): + self.window.run_command('open_dir', {"dir": + package_destination, "file": package_name + + '.sublime-package'}) + + +class CreateBinaryPackageCommand(sublime_plugin.WindowCommand, PackageCreator): + def run(self): + self.show_panel() + + def on_done(self, picked): + if picked == -1: + return + package_name = self.packages[picked] + package_destination = self.get_package_destination() + + if self.manager.create_package(package_name, package_destination, + binary_package=True): + self.window.run_command('open_dir', {"dir": + package_destination, "file": package_name + + '.sublime-package'}) + + +class PackageInstaller(): + def __init__(self): + self.manager = PackageManager() + + def make_package_list(self, ignore_actions=[], override_action=None, + ignore_packages=[]): + packages = self.manager.list_available_packages() + installed_packages = self.manager.list_packages() + + package_list = [] + for package in sorted(packages.iterkeys(), key=lambda s: s.lower()): + if ignore_packages and package in ignore_packages: + continue + package_entry = [package] + info = packages[package] + download = info['downloads'][0] + + if package in installed_packages: + installed = True + metadata = self.manager.get_metadata(package) + if metadata.get('version'): + installed_version = metadata['version'] + else: + installed_version = None + else: + installed = False + + installed_version_name = 'v' + installed_version if \ + installed and installed_version else 'unknown version' + new_version = 'v' + download['version'] + + vcs = None + package_dir = self.manager.get_package_dir(package) + settings = self.manager.settings + + if override_action: + action = override_action + extra = '' + + else: + if os.path.exists(os.path.join(sublime.packages_path(), + package, '.git')): + if settings.get('ignore_vcs_packages'): + continue + vcs = 'git' + incoming = GitUpgrader(settings.get('git_binary'), + settings.get('git_update_command'), package_dir, + settings.get('cache_length')).incoming() + elif os.path.exists(os.path.join(sublime.packages_path(), + package, '.hg')): + if settings.get('ignore_vcs_packages'): + continue + vcs = 'hg' + incoming = HgUpgrader(settings.get('hg_binary'), + settings.get('hg_update_command'), package_dir, + settings.get('cache_length')).incoming() + + if installed: + if not installed_version: + if vcs: + if incoming: + action = 'pull' + extra = ' with ' + vcs + else: + action = 'none' + extra = '' + else: + action = 'overwrite' + extra = ' %s with %s' % (installed_version_name, + new_version) + else: + res = self.manager.compare_versions( + installed_version, download['version']) + if res < 0: + action = 'upgrade' + extra = ' to %s from %s' % (new_version, + installed_version_name) + elif res > 0: + action = 'downgrade' + extra = ' to %s from %s' % (new_version, + installed_version_name) + else: + action = 'reinstall' + extra = ' %s' % new_version + else: + action = 'install' + extra = ' %s' % new_version + extra += ';' + + if action in ignore_actions: + continue + + description = info.get('description') + if not description: + description = 'No description provided' + package_entry.append(description) + package_entry.append(action + extra + ' ' + + re.sub('^https?://', '', info['url'])) + package_list.append(package_entry) + return package_list + + def on_done(self, picked): + if picked == -1: + return + name = self.package_list[picked][0] + thread = PackageInstallerThread(self.manager, name) + thread.start() + ThreadProgress(thread, 'Installing package %s' % name, + 'Package %s successfully %s' % (name, self.completion_type)) + + +class PackageInstallerThread(threading.Thread): + def __init__(self, manager, package): + self.package = package + self.manager = manager + threading.Thread.__init__(self) + + def run(self): + self.result = self.manager.install_package(self.package) + + +class InstallPackageCommand(sublime_plugin.WindowCommand): + def run(self): + thread = InstallPackageThread(self.window) + thread.start() + ThreadProgress(thread, 'Loading repositories', '') + + +class InstallPackageThread(threading.Thread, PackageInstaller): + def __init__(self, window): + self.window = window + self.completion_type = 'installed' + threading.Thread.__init__(self) + PackageInstaller.__init__(self) + + def run(self): + self.package_list = self.make_package_list(['upgrade', 'downgrade', + 'reinstall', 'pull', 'none']) + + def show_quick_panel(): + if not self.package_list: + sublime.error_message(('%s: There are no packages ' + + 'available for installation.') % __name__) + return + self.window.show_quick_panel(self.package_list, self.on_done) + sublime.set_timeout(show_quick_panel, 10) + + +class DiscoverPackagesCommand(sublime_plugin.WindowCommand): + def run(self): + self.window.run_command('open_url', + {'url': 'http://wbond.net/sublime_packages/community'}) + + +class UpgradePackageCommand(sublime_plugin.WindowCommand): + def run(self): + thread = UpgradePackageThread(self.window) + thread.start() + ThreadProgress(thread, 'Loading repositories', '') + + +class UpgradePackageThread(threading.Thread, PackageInstaller): + def __init__(self, window): + self.window = window + self.completion_type = 'upgraded' + threading.Thread.__init__(self) + PackageInstaller.__init__(self) + + def run(self): + self.package_list = self.make_package_list(['install', 'reinstall', + 'none']) + + def show_quick_panel(): + if not self.package_list: + sublime.error_message(('%s: There are no packages ' + + 'ready for upgrade.') % __name__) + return + self.window.show_quick_panel(self.package_list, self.on_done) + sublime.set_timeout(show_quick_panel, 10) + + def on_done(self, picked): + if picked == -1: + return + name = self.package_list[picked][0] + thread = PackageInstallerThread(self.manager, name) + thread.start() + ThreadProgress(thread, 'Upgrading package %s' % name, + 'Package %s successfully %s' % (name, self.completion_type)) + + +class UpgradeAllPackagesCommand(sublime_plugin.WindowCommand): + def run(self): + thread = UpgradeAllPackagesThread(self.window) + thread.start() + ThreadProgress(thread, 'Loading repositories', '') + + +class UpgradeAllPackagesThread(threading.Thread, PackageInstaller): + def __init__(self, window): + self.window = window + self.completion_type = 'upgraded' + threading.Thread.__init__(self) + PackageInstaller.__init__(self) + + def run(self): + for info in self.make_package_list(['install', 'reinstall', 'none']): + thread = PackageInstallerThread(self.manager, info[0]) + thread.start() + ThreadProgress(thread, 'Upgrading package %s' % info[0], + 'Package %s successfully %s' % (info[0], self.completion_type)) + + +class ExistingPackagesCommand(): + def __init__(self): + self.manager = PackageManager() + + def make_package_list(self, action=''): + packages = self.manager.list_packages() + + if action: + action += ' ' + + package_list = [] + for package in sorted(packages, key=lambda s: s.lower()): + package_entry = [package] + metadata = self.manager.get_metadata(package) + package_dir = os.path.join(sublime.packages_path(), package) + + description = metadata.get('description') + if not description: + description = 'No description provided' + package_entry.append(description) + + version = metadata.get('version') + if not version and os.path.exists(os.path.join(package_dir, + '.git')): + installed_version = 'git repository' + elif not version and os.path.exists(os.path.join(package_dir, + '.hg')): + installed_version = 'hg repository' + else: + installed_version = 'v' + version if version else \ + 'unknown version' + + url = metadata.get('url') + if url: + url = '; ' + re.sub('^https?://', '', url) + else: + url = '' + + package_entry.append(action + installed_version + url) + package_list.append(package_entry) + + return package_list + + +class ListPackagesCommand(sublime_plugin.WindowCommand): + def run(self): + ListPackagesThread(self.window).start() + + +class ListPackagesThread(threading.Thread, ExistingPackagesCommand): + def __init__(self, window): + self.window = window + threading.Thread.__init__(self) + ExistingPackagesCommand.__init__(self) + + def run(self): + self.package_list = self.make_package_list() + + def show_quick_panel(): + if not self.package_list: + sublime.error_message(('%s: There are no packages ' + + 'to list.') % __name__) + return + self.window.show_quick_panel(self.package_list, self.on_done) + sublime.set_timeout(show_quick_panel, 10) + + def on_done(self, picked): + if picked == -1: + return + package_name = self.package_list[picked][0] + + def open_dir(): + self.window.run_command('open_dir', + {"dir": os.path.join(sublime.packages_path(), package_name)}) + sublime.set_timeout(open_dir, 10) + + +class RemovePackageCommand(sublime_plugin.WindowCommand, + ExistingPackagesCommand): + def __init__(self, window): + self.window = window + ExistingPackagesCommand.__init__(self) + + def run(self): + self.package_list = self.make_package_list('remove') + if not self.package_list: + sublime.error_message(('%s: There are no packages ' + + 'that can be removed.') % __name__) + return + self.window.show_quick_panel(self.package_list, self.on_done) + + def on_done(self, picked): + if picked == -1: + return + package = self.package_list[picked][0] + settings = sublime.load_settings('Global.sublime-settings') + ignored_packages = settings.get('ignored_packages') + if not ignored_packages: + ignored_packages = [] + if not package in ignored_packages: + ignored_packages.append(package) + settings.set('ignored_packages', ignored_packages) + sublime.save_settings('Global.sublime-settings') + + ignored_packages.remove(package) + thread = RemovePackageThread(self.manager, package, + ignored_packages) + thread.start() + ThreadProgress(thread, 'Removing package %s' % package, + 'Package %s successfully removed' % package) + + +class RemovePackageThread(threading.Thread): + def __init__(self, manager, package, ignored_packages): + self.manager = manager + self.package = package + self.ignored_packages = ignored_packages + threading.Thread.__init__(self) + + def run(self): + self.result = self.manager.remove_package(self.package) + + def unignore_package(): + settings = sublime.load_settings('Global.sublime-settings') + settings.set('ignored_packages', self.ignored_packages) + sublime.save_settings('Global.sublime-settings') + sublime.set_timeout(unignore_package, 10) + + +class AddRepositoryChannelCommand(sublime_plugin.WindowCommand): + def run(self): + self.window.show_input_panel('Channel JSON URL', '', + self.on_done, self.on_change, self.on_cancel) + + def on_done(self, input): + settings = sublime.load_settings('%s.sublime-settings' % __name__) + repository_channels = settings.get('repository_channels', []) + if not repository_channels: + repository_channels = [] + repository_channels.append(input) + settings.set('repository_channels', repository_channels) + sublime.save_settings('%s.sublime-settings' % __name__) + sublime.status_message(('Channel %s successfully ' + + 'added') % input) + + def on_change(self, input): + pass + + def on_cancel(self): + pass + + +class AddRepositoryCommand(sublime_plugin.WindowCommand): + def run(self): + self.window.show_input_panel('GitHub or BitBucket Web URL, or Custom' + + ' JSON Repository URL', '', self.on_done, + self.on_change, self.on_cancel) + + def on_done(self, input): + settings = sublime.load_settings('%s.sublime-settings' % __name__) + repositories = settings.get('repositories', []) + if not repositories: + repositories = [] + repositories.append(input) + settings.set('repositories', repositories) + sublime.save_settings('%s.sublime-settings' % __name__) + sublime.status_message('Repository %s successfully added' % input) + + def on_change(self, input): + pass + + def on_cancel(self): + pass + + +class DisablePackageCommand(sublime_plugin.WindowCommand): + def run(self): + manager = PackageManager() + packages = manager.list_all_packages() + self.settings = sublime.load_settings('Global.sublime-settings') + disabled_packages = self.settings.get('ignored_packages') + if not disabled_packages: + disabled_packages = [] + self.package_list = list(set(packages) - set(disabled_packages)) + self.package_list.sort() + if not self.package_list: + sublime.error_message(('%s: There are no enabled packages' + + 'to disable.') % __name__) + return + self.window.show_quick_panel(self.package_list, self.on_done) + + def on_done(self, picked): + if picked == -1: + return + package = self.package_list[picked] + ignored_packages = self.settings.get('ignored_packages') + if not ignored_packages: + ignored_packages = [] + ignored_packages.append(package) + self.settings.set('ignored_packages', ignored_packages) + sublime.save_settings('Global.sublime-settings') + sublime.status_message(('Package %s successfully added to list of ' + + 'disabled packages - restarting Sublime Text may be required') % + package) + + +class EnablePackageCommand(sublime_plugin.WindowCommand): + def run(self): + self.settings = sublime.load_settings('Global.sublime-settings') + self.disabled_packages = self.settings.get('ignored_packages') + self.disabled_packages.sort() + if not self.disabled_packages: + sublime.error_message(('%s: There are no disabled packages ' + + 'to enable.') % __name__) + return + self.window.show_quick_panel(self.disabled_packages, self.on_done) + + def on_done(self, picked): + if picked == -1: + return + package = self.disabled_packages[picked] + ignored = self.settings.get('ignored_packages') + self.settings.set('ignored_packages', + list(set(ignored) - set([package]))) + sublime.save_settings('Global.sublime-settings') + sublime.status_message(('Package %s successfully removed from list ' + + 'of disabled packages - restarting Sublime Text may be required') % + package) + + +class PackageStartup(): + def load_settings(self): + self.settings_file = '%s.sublime-settings' % __name__ + self.settings = sublime.load_settings(self.settings_file) + self.installed_packages = self.settings.get('installed_packages', []) + if not isinstance(self.installed_packages, list): + self.installed_packages = [] + + def save_packages(self, installed_packages): + installed_packages = list(set(installed_packages)) + installed_packages = sorted(installed_packages, + key=lambda s: s.lower()) + + if installed_packages != self.installed_packages: + self.settings.set('installed_packages', installed_packages) + sublime.save_settings(self.settings_file) + + +class AutomaticUpgrader(threading.Thread, PackageStartup): + def __init__(self, found_packages): + self.installer = PackageInstaller() + self.manager = self.installer.manager + self.load_settings() + + self.auto_upgrade = self.settings.get('auto_upgrade') + self.auto_upgrade_ignore = self.settings.get('auto_upgrade_ignore') + + self.next_run = int(time.time()) + self.last_run = self.settings.get('auto_upgrade_last_run') + + frequency = self.settings.get('auto_upgrade_frequency') + if frequency: + if self.last_run: + self.next_run = int(self.last_run) + (frequency * 60 * 60) + else: + self.next_run = time.time() + + # Detect if a package is missing that should be installed + self.missing_packages = list(set(self.installed_packages) - + set(found_packages)) + + if self.auto_upgrade and self.next_run <= time.time(): + self.settings.set('auto_upgrade_last_run', int(time.time())) + sublime.save_settings(self.settings_file) + + threading.Thread.__init__(self) + + def run(self): + self.install_missing() + + if self.next_run > time.time(): + self.print_skip() + return + + self.rename_packages() + self.upgrade_packages() + + def install_missing(self): + if not self.missing_packages: + return + + print '%s: Installing %s missing packages' % \ + (__name__, len(self.missing_packages)) + for package in self.missing_packages: + self.installer.manager.install_package(package) + print '%s: Installed missing package %s' % \ + (__name__, package) + + def print_skip(self): + last_run = datetime.datetime.fromtimestamp(self.last_run) + next_run = datetime.datetime.fromtimestamp(self.next_run) + date_format = '%Y-%m-%d %H:%M:%S' + print ('%s: Skipping automatic upgrade, last run at ' + + '%s, next run at %s or after') % (__name__, + last_run.strftime(date_format), next_run.strftime(date_format)) + + def rename_packages(self): + # Fetch the packages since that will pull in the renamed packages list + self.manager.list_available_packages() + renamed_packages = self.manager.settings.get('renamed_packages', {}) + if not renamed_packages: + renamed_packages = {} + + installed_pkgs = self.installed_packages + + # Rename directories for packages that have changed names + for package_name in renamed_packages: + package_dir = os.path.join(sublime.packages_path(), package_name) + metadata_path = os.path.join(package_dir, 'package-metadata.json') + if not os.path.exists(metadata_path): + continue + new_package_name = renamed_packages[package_name] + new_package_dir = os.path.join(sublime.packages_path(), + new_package_name) + if not os.path.exists(new_package_dir): + os.rename(package_dir, new_package_dir) + installed_pkgs.append(new_package_name) + print '%s: Renamed %s to %s' % (__name__, package_name, + new_package_name) + else: + self.installer.manager.remove_package(package_name) + print ('%s: Removed %s since package with new name (%s) ' + + 'already exists') % (__name__, package_name, + new_package_name) + try: + installed_pkgs.remove(package_name) + except (ValueError): + pass + + sublime.set_timeout(lambda: self.save_packages(installed_pkgs), 10) + + def upgrade_packages(self): + if not self.auto_upgrade: + return + + packages = self.installer.make_package_list(['install', + 'reinstall', 'downgrade', 'overwrite', 'none'], + ignore_packages=self.auto_upgrade_ignore) + + # If Package Control is being upgraded, just do that and restart + for package in packages: + if package[0] != __name__: + continue + + def reset_last_run(): + settings = sublime.load_settings(self.settings_file) + settings.set('auto_upgrade_last_run', None) + sublime.save_settings(self.settings_file) + sublime.set_timeout(reset_last_run, 1) + packages = [package] + break + + if not packages: + print '%s: No updated packages' % __name__ + return + + print '%s: Installing %s upgrades' % (__name__, len(packages)) + for package in packages: + self.installer.manager.install_package(package[0]) + version = re.sub('^.*?(v[\d\.]+).*?$', '\\1', package[2]) + if version == package[2] and version.find('pull with') != -1: + vcs = re.sub('^pull with (\w+).*?$', '\\1', version) + version = 'latest %s commit' % vcs + print '%s: Upgraded %s to %s' % (__name__, package[0], version) + + +class PackageCleanup(threading.Thread, PackageStartup): + def __init__(self): + self.manager = PackageManager() + self.load_settings() + threading.Thread.__init__(self) + + def run(self): + found_pkgs = [] + installed_pkgs = self.installed_packages + for package_name in os.listdir(sublime.packages_path()): + package_dir = os.path.join(sublime.packages_path(), package_name) + metadata_path = os.path.join(package_dir, 'package-metadata.json') + + # Cleanup packages that could not be removed due to in-use files + cleanup_file = os.path.join(package_dir, 'package-control.cleanup') + if os.path.exists(cleanup_file): + try: + shutil.rmtree(package_dir) + print '%s: Removed old directory for package %s' % \ + (__name__, package_name) + except (OSError) as (e): + if not os.path.exists(cleanup_file): + open(cleanup_file, 'w').close() + print ('%s: Unable to remove old directory for package ' + + '%s - deferring until next start: %s') % (__name__, + package_name, str(e)) + + # This adds previously installed packages from old versions of PC + if os.path.exists(metadata_path) and \ + package_name not in self.installed_packages: + installed_pkgs.append(package_name) + params = { + 'package': package_name, + 'operation': 'install', + 'version': \ + self.manager.get_metadata(package_name).get('version') + } + self.manager.record_usage(params) + + found_pkgs.append(package_name) + + sublime.set_timeout(lambda: self.finish(installed_pkgs, found_pkgs), 10) + + def finish(self, installed_pkgs, found_pkgs): + self.save_packages(installed_pkgs) + AutomaticUpgrader(found_pkgs).start() + + +# Start shortly after Sublime starts so package renames don't cause errors +# with keybindings, settings, etc disappearing in the middle of parsing +sublime.set_timeout(lambda: PackageCleanup().start(), 2000) diff --git a/Package Control/Package Control.pyc b/Package Control/Package Control.pyc new file mode 100644 index 0000000..2dda93e Binary files /dev/null and b/Package Control/Package Control.pyc differ diff --git a/Package Control/Package Control.sublime-settings b/Package Control/Package Control.sublime-settings new file mode 100644 index 0000000..b2b03b5 --- /dev/null +++ b/Package Control/Package Control.sublime-settings @@ -0,0 +1,99 @@ +{ + // A list of URLs that each contain a JSON file with a list of repositories. + // The repositories from these channels are placed in order after the + // repositories from the "repositories" setting + "repository_channels": [ + "https://sublime.wbond.net/repositories.json" + ], + + // A list of URLs that contain a packages JSON file. These repositories + // are placed in order before repositories from the "repository_channels" + // setting + "repositories": [], + + "certs": { + "sublime.wbond.net": ["7f4f8622b4fd001c7f648e09aae7edaa", ""] + }, + + // This helps solve naming issues where a repository it not named the + // same as the package should be. This is primarily only useful for + // GitHub and BitBucket repositories. This mapping will override the + // mapping that is retrieved from the repository channels. + "package_name_map": {}, + + // If package install, upgrade and removal info should be submitted to + // the channel for aggregated statistics + "submit_usage": true, + + // The URL to post install, upgrade and removal notices to + "submit_url": "https://sublime.wbond.net/submit", + + // If packages should be automatically upgraded when ST2 starts + "auto_upgrade": true, + + // The minimum frequency in hours in which to check for automatic upgrades, + // setting this to 0 will always check for automatic upgrades + "auto_upgrade_frequency": 1, + + // Packages to not auto upgrade + "auto_upgrade_ignore": [], + + // Timeout for downloading channels, repositories and packages + "timeout": 30, + + // The number of seconds to cache repository and package info for + "cache_length": 300, + + // An HTTP proxy server to use for requests + "http_proxy": "", + // An HTTPS proxy server to use for requests - if not specified, but + // http_proxy is, http_proxy will be used for https_proxy also + "https_proxy": "", + + // Setting this to true will cause Package Control to ignore all git + // and hg repositories - this may help if trying to list packages to install + // hangs + "ignore_vcs_packages": false, + + // Custom paths to VCS binaries for when they can't be automatically + // found on the system and a package includes a VCS metadata directory + "git_binary": "", + "git_update_command": ["pull", "origin", "master", "--ff", "--commit"], + + "hg_binary": "", + + // Be sure to keep the remote name as the last argument + "hg_update_command": ["pull", "--update", "default"], + + // Directories to ignore when creating a package + "dirs_to_ignore": [ + ".hg", ".git", ".svn", "_darcs", "CVS" + ], + + // Files to ignore when creating a package + "files_to_ignore": [ + ".hgignore", ".gitignore", ".bzrignore", "*.pyc", "*.sublime-project", + "*.sublime-workspace", "*.tmTheme.cache" + ], + + // Files to include, even if they match a pattern in files_to_ignore + "files_to_include": [], + + // Files to ignore when creating a binary package. By default binary + // packages ship with .pyc files instead of .py files. If an __init__.py + // file exists, it will always be included, even if it matches one of + // these patterns. + "files_to_ignore_binary": [ + ".hgignore", ".gitignore", ".bzrignore", "*.py", "*.sublime-project", + "*.sublime-workspace", "*.tmTheme.cache" + ], + + // Files to include for a binary package, even if they match a pattern i + // files_to_ignore_binary + "files_to_include_binary": [ + "__init__.py" + ], + + // When a package is created, copy it to this folder - defaults to Desktop + "package_destination": "" +} \ No newline at end of file diff --git a/Package Control/certs/1c5282418e2cb4989cd6beddcdbab0b5 b/Package Control/certs/1c5282418e2cb4989cd6beddcdbab0b5 new file mode 100644 index 0000000..432b087 --- /dev/null +++ b/Package Control/certs/1c5282418e2cb4989cd6beddcdbab0b5 @@ -0,0 +1,113 @@ +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 0a:5f:11:4d:03:5b:17:91:17:d2:ef:d4:03:8c:3f:3b + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert High Assurance EV Root CA + Validity + Not Before: Apr 2 12:00:00 2008 GMT + Not After : Apr 3 00:00:00 2022 GMT + Subject: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert High Assurance CA-3 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:bf:61:0a:29:10:1f:5e:fe:34:37:51:08:f8:1e: + fb:22:ed:61:be:0b:0d:70:4c:50:63:26:75:15:b9: + 41:88:97:b6:f0:a0:15:bb:08:60:e0:42:e8:05:29: + 10:87:36:8a:28:65:a8:ef:31:07:74:6d:36:97:2f: + 28:46:66:04:c7:2a:79:26:7a:99:d5:8e:c3:6d:4f: + a0:5e:ad:bc:3d:91:c2:59:7b:5e:36:6c:c0:53:cf: + 00:08:32:3e:10:64:58:10:13:69:c7:0c:ee:9c:42: + 51:00:f9:05:44:ee:24:ce:7a:1f:ed:8c:11:bd:12: + a8:f3:15:f4:1c:7a:31:69:01:1b:a7:e6:5d:c0:9a: + 6c:7e:09:9e:e7:52:44:4a:10:3a:23:e4:9b:b6:03: + af:a8:9c:b4:5b:9f:d4:4b:ad:92:8c:ce:b5:11:2a: + aa:37:18:8d:b4:c2:b8:d8:5c:06:8c:f8:ff:23:bd: + 35:5e:d4:7c:3e:7e:83:0e:91:96:05:98:c3:b2:1f: + e3:c8:65:eb:a9:7b:5d:a0:2c:cc:fc:3c:d9:6d:ed: + cc:fa:4b:43:8c:c9:d4:b8:a5:61:1c:b2:40:b6:28: + 12:df:b9:f8:5f:fe:d3:b2:c9:ef:3d:b4:1e:4b:7c: + 1c:4c:99:36:9e:3d:eb:ec:a7:68:5e:1d:df:67:6e: + 5e:fb + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Key Usage: critical + Digital Signature, Certificate Sign, CRL Sign + X509v3 Certificate Policies: + Policy: 2.16.840.1.114412.1.3.0.2 + CPS: http://www.digicert.com/ssl-cps-repository.htm + User Notice: + Explicit Text: + + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + Authority Information Access: + OCSP - URI:http://ocsp.digicert.com + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl3.digicert.com/DigiCertHighAssuranceEVRootCA.crl + + Full Name: + URI:http://crl4.digicert.com/DigiCertHighAssuranceEVRootCA.crl + + X509v3 Authority Key Identifier: + keyid:B1:3E:C3:69:03:F8:BF:47:01:D4:98:26:1A:08:02:EF:63:64:2B:C3 + + X509v3 Subject Key Identifier: + 50:EA:73:89:DB:29:FB:10:8F:9E:E5:01:20:D4:DE:79:99:48:83:F7 + Signature Algorithm: sha1WithRSAEncryption + 1e:e2:a5:48:9e:6c:db:53:38:0f:ef:a6:1a:2a:ac:e2:03:43: + ed:9a:bc:3e:8e:75:1b:f0:fd:2e:22:59:ac:13:c0:61:e2:e7: + fa:e9:99:cd:87:09:75:54:28:bf:46:60:dc:be:51:2c:92:f3: + 1b:91:7c:31:08:70:e2:37:b9:c1:5b:a8:bd:a3:0b:00:fb:1a: + 15:fd:03:ad:58:6a:c5:c7:24:99:48:47:46:31:1e:92:ef:b4: + 5f:4e:34:c7:90:bf:31:c1:f8:b1:84:86:d0:9c:01:aa:df:8a: + 56:06:ce:3a:e9:0e:ae:97:74:5d:d7:71:9a:42:74:5f:de:8d: + 43:7c:de:e9:55:ed:69:00:cb:05:e0:7a:61:61:33:d1:19:4d: + f9:08:ee:a0:39:c5:25:35:b7:2b:c4:0f:b2:dd:f1:a5:b7:0e: + 24:c4:26:28:8d:79:77:f5:2f:f0:57:ba:7c:07:d4:e1:fc:cd: + 5a:30:57:7e:86:10:47:dd:31:1f:d7:fc:a2:c2:bf:30:7c:5d: + 24:aa:e8:f9:ae:5f:6a:74:c2:ce:6b:b3:46:d8:21:be:29:d4: + 8e:5e:15:d6:42:4a:e7:32:6f:a4:b1:6b:51:83:58:be:3f:6d: + c7:fb:da:03:21:cb:6a:16:19:4e:0a:f0:ad:84:ca:5d:94:b3: + 5a:76:f7:61 +-----BEGIN CERTIFICATE----- +MIIGWDCCBUCgAwIBAgIQCl8RTQNbF5EX0u/UA4w/OzANBgkqhkiG9w0BAQUFADBs +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j +ZSBFViBSb290IENBMB4XDTA4MDQwMjEyMDAwMFoXDTIyMDQwMzAwMDAwMFowZjEL +MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3 +LmRpZ2ljZXJ0LmNvbTElMCMGA1UEAxMcRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug +Q0EtMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL9hCikQH17+NDdR +CPge+yLtYb4LDXBMUGMmdRW5QYiXtvCgFbsIYOBC6AUpEIc2iihlqO8xB3RtNpcv +KEZmBMcqeSZ6mdWOw21PoF6tvD2Rwll7XjZswFPPAAgyPhBkWBATaccM7pxCUQD5 +BUTuJM56H+2MEb0SqPMV9Bx6MWkBG6fmXcCabH4JnudSREoQOiPkm7YDr6ictFuf +1EutkozOtREqqjcYjbTCuNhcBoz4/yO9NV7UfD5+gw6RlgWYw7If48hl66l7XaAs +zPw82W3tzPpLQ4zJ1LilYRyyQLYoEt+5+F/+07LJ7z20Hkt8HEyZNp496+ynaF4d +32duXvsCAwEAAaOCAvowggL2MA4GA1UdDwEB/wQEAwIBhjCCAcYGA1UdIASCAb0w +ggG5MIIBtQYLYIZIAYb9bAEDAAIwggGkMDoGCCsGAQUFBwIBFi5odHRwOi8vd3d3 +LmRpZ2ljZXJ0LmNvbS9zc2wtY3BzLXJlcG9zaXRvcnkuaHRtMIIBZAYIKwYBBQUH +AgIwggFWHoIBUgBBAG4AeQAgAHUAcwBlACAAbwBmACAAdABoAGkAcwAgAEMAZQBy +AHQAaQBmAGkAYwBhAHQAZQAgAGMAbwBuAHMAdABpAHQAdQB0AGUAcwAgAGEAYwBj +AGUAcAB0AGEAbgBjAGUAIABvAGYAIAB0AGgAZQAgAEQAaQBnAGkAQwBlAHIAdAAg +AEMAUAAvAEMAUABTACAAYQBuAGQAIAB0AGgAZQAgAFIAZQBsAHkAaQBuAGcAIABQ +AGEAcgB0AHkAIABBAGcAcgBlAGUAbQBlAG4AdAAgAHcAaABpAGMAaAAgAGwAaQBt +AGkAdAAgAGwAaQBhAGIAaQBsAGkAdAB5ACAAYQBuAGQAIABhAHIAZQAgAGkAbgBj +AG8AcgBwAG8AcgBhAHQAZQBkACAAaABlAHIAZQBpAG4AIABiAHkAIAByAGUAZgBl +AHIAZQBuAGMAZQAuMBIGA1UdEwEB/wQIMAYBAf8CAQAwNAYIKwYBBQUHAQEEKDAm +MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wgY8GA1UdHwSB +hzCBhDBAoD6gPIY6aHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0SGln +aEFzc3VyYW5jZUVWUm9vdENBLmNybDBAoD6gPIY6aHR0cDovL2NybDQuZGlnaWNl +cnQuY29tL0RpZ2lDZXJ0SGlnaEFzc3VyYW5jZUVWUm9vdENBLmNybDAfBgNVHSME +GDAWgBSxPsNpA/i/RwHUmCYaCALvY2QrwzAdBgNVHQ4EFgQUUOpzidsp+xCPnuUB +INTeeZlIg/cwDQYJKoZIhvcNAQEFBQADggEBAB7ipUiebNtTOA/vphoqrOIDQ+2a +vD6OdRvw/S4iWawTwGHi5/rpmc2HCXVUKL9GYNy+USyS8xuRfDEIcOI3ucFbqL2j +CwD7GhX9A61YasXHJJlIR0YxHpLvtF9ONMeQvzHB+LGEhtCcAarfilYGzjrpDq6X +dF3XcZpCdF/ejUN83ulV7WkAywXgemFhM9EZTfkI7qA5xSU1tyvED7Ld8aW3DiTE +JiiNeXf1L/BXunwH1OH8zVowV36GEEfdMR/X/KLCvzB8XSSq6PmuX2p0ws5rs0bY +Ib4p1I5eFdZCSucyb6Sxa1GDWL4/bcf72gMhy2oWGU4K8K2Eyl2Us1p292E= +-----END CERTIFICATE----- \ No newline at end of file diff --git a/Package Control/certs/2ef52a20816f8df1e4cb13199caf1e21 b/Package Control/certs/2ef52a20816f8df1e4cb13199caf1e21 new file mode 100644 index 0000000..fc4accc --- /dev/null +++ b/Package Control/certs/2ef52a20816f8df1e4cb13199caf1e21 @@ -0,0 +1,241 @@ +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 769 (0x301) + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=US, O=The Go Daddy Group, Inc., OU=Go Daddy Class 2 Certification Authority + Validity + Not Before: Nov 16 01:54:37 2006 GMT + Not After : Nov 16 01:54:37 2026 GMT + Subject: C=US, ST=Arizona, L=Scottsdale, O=GoDaddy.com, Inc., OU=http://certificates.godaddy.com/repository, CN=Go Daddy Secure Certification Authority/serialNumber=07969287 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + RSA Public Key: (2048 bit) + Modulus (2048 bit): + 00:c4:2d:d5:15:8c:9c:26:4c:ec:32:35:eb:5f:b8: + 59:01:5a:a6:61:81:59:3b:70:63:ab:e3:dc:3d:c7: + 2a:b8:c9:33:d3:79:e4:3a:ed:3c:30:23:84:8e:b3: + 30:14:b6:b2:87:c3:3d:95:54:04:9e:df:99:dd:0b: + 25:1e:21:de:65:29:7e:35:a8:a9:54:eb:f6:f7:32: + 39:d4:26:55:95:ad:ef:fb:fe:58:86:d7:9e:f4:00: + 8d:8c:2a:0c:bd:42:04:ce:a7:3f:04:f6:ee:80:f2: + aa:ef:52:a1:69:66:da:be:1a:ad:5d:da:2c:66:ea: + 1a:6b:bb:e5:1a:51:4a:00:2f:48:c7:98:75:d8:b9: + 29:c8:ee:f8:66:6d:0a:9c:b3:f3:fc:78:7c:a2:f8: + a3:f2:b5:c3:f3:b9:7a:91:c1:a7:e6:25:2e:9c:a8: + ed:12:65:6e:6a:f6:12:44:53:70:30:95:c3:9c:2b: + 58:2b:3d:08:74:4a:f2:be:51:b0:bf:87:d0:4c:27: + 58:6b:b5:35:c5:9d:af:17:31:f8:0b:8f:ee:ad:81: + 36:05:89:08:98:cf:3a:af:25:87:c0:49:ea:a7:fd: + 67:f7:45:8e:97:cc:14:39:e2:36:85:b5:7e:1a:37: + fd:16:f6:71:11:9a:74:30:16:fe:13:94:a3:3f:84: + 0d:4f + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Subject Key Identifier: + FD:AC:61:32:93:6C:45:D6:E2:EE:85:5F:9A:BA:E7:76:99:68:CC:E7 + X509v3 Authority Key Identifier: + keyid:D2:C4:B0:D2:91:D4:4C:11:71:B3:61:CB:3D:A1:FE:DD:A8:6A:D4:E3 + + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + Authority Information Access: + OCSP - URI:http://ocsp.godaddy.com + + X509v3 CRL Distribution Points: + URI:http://certificates.godaddy.com/repository/gdroot.crl + + X509v3 Certificate Policies: + Policy: 2.5.29.32.0 + CPS: http://certificates.godaddy.com/repository + + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + Signature Algorithm: sha1WithRSAEncryption + d2:86:c0:ec:bd:f9:a1:b6:67:ee:66:0b:a2:06:3a:04:50:8e: + 15:72:ac:4a:74:95:53:cb:37:cb:44:49:ef:07:90:6b:33:d9: + 96:f0:94:56:a5:13:30:05:3c:85:32:21:7b:c9:c7:0a:a8:24: + a4:90:de:46:d3:25:23:14:03:67:c2:10:d6:6f:0f:5d:7b:7a: + cc:9f:c5:58:2a:c1:c4:9e:21:a8:5a:f3:ac:a4:46:f3:9e:e4: + 63:cb:2f:90:a4:29:29:01:d9:72:2c:29:df:37:01:27:bc:4f: + ee:68:d3:21:8f:c0:b3:e4:f5:09:ed:d2:10:aa:53:b4:be:f0: + cc:59:0b:d6:3b:96:1c:95:24:49:df:ce:ec:fd:a7:48:91:14: + 45:0e:3a:36:6f:da:45:b3:45:a2:41:c9:d4:d7:44:4e:3e:b9: + 74:76:d5:a2:13:55:2c:c6:87:a3:b5:99:ac:06:84:87:7f:75: + 06:fc:bf:14:4c:0e:cc:6e:c4:df:3d:b7:12:71:f4:e8:f1:51: + 40:22:28:49:e0:1d:4b:87:a8:34:cc:06:a2:dd:12:5a:d1:86: + 36:64:03:35:6f:6f:77:6e:eb:f2:85:50:98:5e:ab:03:53:ad: + 91:23:63:1f:16:9c:cd:b9:b2:05:63:3a:e1:f4:68:1b:17:05: + 35:95:53:ee +-----BEGIN CERTIFICATE----- +MIIE3jCCA8agAwIBAgICAwEwDQYJKoZIhvcNAQEFBQAwYzELMAkGA1UEBhMCVVMx +ITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28g +RGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjExMTYw +MTU0MzdaFw0yNjExMTYwMTU0MzdaMIHKMQswCQYDVQQGEwJVUzEQMA4GA1UECBMH +QXJpem9uYTETMBEGA1UEBxMKU2NvdHRzZGFsZTEaMBgGA1UEChMRR29EYWRkeS5j +b20sIEluYy4xMzAxBgNVBAsTKmh0dHA6Ly9jZXJ0aWZpY2F0ZXMuZ29kYWRkeS5j +b20vcmVwb3NpdG9yeTEwMC4GA1UEAxMnR28gRGFkZHkgU2VjdXJlIENlcnRpZmlj +YXRpb24gQXV0aG9yaXR5MREwDwYDVQQFEwgwNzk2OTI4NzCCASIwDQYJKoZIhvcN +AQEBBQADggEPADCCAQoCggEBAMQt1RWMnCZM7DI161+4WQFapmGBWTtwY6vj3D3H +KrjJM9N55DrtPDAjhI6zMBS2sofDPZVUBJ7fmd0LJR4h3mUpfjWoqVTr9vcyOdQm +VZWt7/v+WIbXnvQAjYwqDL1CBM6nPwT27oDyqu9SoWlm2r4arV3aLGbqGmu75RpR +SgAvSMeYddi5Kcju+GZtCpyz8/x4fKL4o/K1w/O5epHBp+YlLpyo7RJlbmr2EkRT +cDCVw5wrWCs9CHRK8r5RsL+H0EwnWGu1NcWdrxcx+AuP7q2BNgWJCJjPOq8lh8BJ +6qf9Z/dFjpfMFDniNoW1fho3/Rb2cRGadDAW/hOUoz+EDU8CAwEAAaOCATIwggEu +MB0GA1UdDgQWBBT9rGEyk2xF1uLuhV+auud2mWjM5zAfBgNVHSMEGDAWgBTSxLDS +kdRMEXGzYcs9of7dqGrU4zASBgNVHRMBAf8ECDAGAQH/AgEAMDMGCCsGAQUFBwEB +BCcwJTAjBggrBgEFBQcwAYYXaHR0cDovL29jc3AuZ29kYWRkeS5jb20wRgYDVR0f +BD8wPTA7oDmgN4Y1aHR0cDovL2NlcnRpZmljYXRlcy5nb2RhZGR5LmNvbS9yZXBv +c2l0b3J5L2dkcm9vdC5jcmwwSwYDVR0gBEQwQjBABgRVHSAAMDgwNgYIKwYBBQUH +AgEWKmh0dHA6Ly9jZXJ0aWZpY2F0ZXMuZ29kYWRkeS5jb20vcmVwb3NpdG9yeTAO +BgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQEFBQADggEBANKGwOy9+aG2Z+5mC6IG +OgRQjhVyrEp0lVPLN8tESe8HkGsz2ZbwlFalEzAFPIUyIXvJxwqoJKSQ3kbTJSMU +A2fCENZvD117esyfxVgqwcSeIaha86ykRvOe5GPLL5CkKSkB2XIsKd83ASe8T+5o +0yGPwLPk9Qnt0hCqU7S+8MxZC9Y7lhyVJEnfzuz9p0iRFEUOOjZv2kWzRaJBydTX +RE4+uXR21aITVSzGh6O1mawGhId/dQb8vxRMDsxuxN89txJx9OjxUUAiKEngHUuH +qDTMBqLdElrRhjZkAzVvb3du6/KFUJheqwNTrZEjYx8WnM25sgVjOuH0aBsXBTWV +U+4= +-----END CERTIFICATE----- +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 269 (0x10d) + Signature Algorithm: sha1WithRSAEncryption + Issuer: L=ValiCert Validation Network, O=ValiCert, Inc., OU=ValiCert Class 2 Policy Validation Authority, CN=http://www.valicert.com//emailAddress=info@valicert.com + Validity + Not Before: Jun 29 17:06:20 2004 GMT + Not After : Jun 29 17:06:20 2024 GMT + Subject: C=US, O=The Go Daddy Group, Inc., OU=Go Daddy Class 2 Certification Authority + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + RSA Public Key: (2048 bit) + Modulus (2048 bit): + 00:de:9d:d7:ea:57:18:49:a1:5b:eb:d7:5f:48:86: + ea:be:dd:ff:e4:ef:67:1c:f4:65:68:b3:57:71:a0: + 5e:77:bb:ed:9b:49:e9:70:80:3d:56:18:63:08:6f: + da:f2:cc:d0:3f:7f:02:54:22:54:10:d8:b2:81:d4: + c0:75:3d:4b:7f:c7:77:c3:3e:78:ab:1a:03:b5:20: + 6b:2f:6a:2b:b1:c5:88:7e:c4:bb:1e:b0:c1:d8:45: + 27:6f:aa:37:58:f7:87:26:d7:d8:2d:f6:a9:17:b7: + 1f:72:36:4e:a6:17:3f:65:98:92:db:2a:6e:5d:a2: + fe:88:e0:0b:de:7f:e5:8d:15:e1:eb:cb:3a:d5:e2: + 12:a2:13:2d:d8:8e:af:5f:12:3d:a0:08:05:08:b6: + 5c:a5:65:38:04:45:99:1e:a3:60:60:74:c5:41:a5: + 72:62:1b:62:c5:1f:6f:5f:1a:42:be:02:51:65:a8: + ae:23:18:6a:fc:78:03:a9:4d:7f:80:c3:fa:ab:5a: + fc:a1:40:a4:ca:19:16:fe:b2:c8:ef:5e:73:0d:ee: + 77:bd:9a:f6:79:98:bc:b1:07:67:a2:15:0d:dd:a0: + 58:c6:44:7b:0a:3e:62:28:5f:ba:41:07:53:58:cf: + 11:7e:38:74:c5:f8:ff:b5:69:90:8f:84:74:ea:97: + 1b:af + Exponent: 3 (0x3) + X509v3 extensions: + X509v3 Subject Key Identifier: + D2:C4:B0:D2:91:D4:4C:11:71:B3:61:CB:3D:A1:FE:DD:A8:6A:D4:E3 + X509v3 Authority Key Identifier: + DirName:/L=ValiCert Validation Network/O=ValiCert, Inc./OU=ValiCert Class 2 Policy Validation Authority/CN=http://www.valicert.com//emailAddress=info@valicert.com + serial:01 + + X509v3 Basic Constraints: critical + CA:TRUE + Authority Information Access: + OCSP - URI:http://ocsp.godaddy.com + + X509v3 CRL Distribution Points: + URI:http://certificates.godaddy.com/repository/root.crl + + X509v3 Certificate Policies: + Policy: 2.5.29.32.0 + CPS: http://certificates.godaddy.com/repository + + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + Signature Algorithm: sha1WithRSAEncryption + b5:40:f9:a7:1d:f6:ea:fe:a4:1a:42:5a:44:f7:15:d4:85:46: + 89:c0:be:9e:e3:e3:eb:c5:e3:58:89:8f:92:9f:57:a8:71:2c: + 48:d1:81:b2:79:1f:ac:06:35:19:b0:4e:0e:58:1b:14:b3:98: + 81:d1:04:1e:c8:07:c9:83:9f:78:44:0a:18:0b:98:dc:76:7a: + 65:0d:0d:6d:80:c4:0b:01:1c:cb:ad:47:3e:71:be:77:4b:cc: + 06:77:d0:f4:56:6b:1f:4b:13:9a:14:8a:88:23:a8:51:f0:83: + 4c:ab:35:bf:46:7e:39:dc:75:a4:ae:e8:29:fb:ef:39:8f:4f: + 55:67 +-----BEGIN CERTIFICATE----- +MIIE+zCCBGSgAwIBAgICAQ0wDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1Zh +bGlDZXJ0IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIElu +Yy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRpb24g +QXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAe +BgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTA0MDYyOTE3MDYyMFoX +DTI0MDYyOTE3MDYyMFowYzELMAkGA1UEBhMCVVMxITAfBgNVBAoTGFRoZSBHbyBE +YWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28gRGFkZHkgQ2xhc3MgMiBDZXJ0 +aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgC +ggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCAPVYYYwhv +2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6wwdhFJ2+q +N1j3hybX2C32qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXiEqITLdiO +r18SPaAIBQi2XKVlOARFmR6jYGB0xUGlcmIbYsUfb18aQr4CUWWoriMYavx4A6lN +f4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmYvLEHZ6IVDd2gWMZEewo+YihfukEH +U1jPEX44dMX4/7VpkI+EdOqXG68CAQOjggHhMIIB3TAdBgNVHQ4EFgQU0sSw0pHU +TBFxs2HLPaH+3ahq1OMwgdIGA1UdIwSByjCBx6GBwaSBvjCBuzEkMCIGA1UEBxMb +VmFsaUNlcnQgVmFsaWRhdGlvbiBOZXR3b3JrMRcwFQYDVQQKEw5WYWxpQ2VydCwg +SW5jLjE1MDMGA1UECxMsVmFsaUNlcnQgQ2xhc3MgMiBQb2xpY3kgVmFsaWRhdGlv +biBBdXRob3JpdHkxITAfBgNVBAMTGGh0dHA6Ly93d3cudmFsaWNlcnQuY29tLzEg +MB4GCSqGSIb3DQEJARYRaW5mb0B2YWxpY2VydC5jb22CAQEwDwYDVR0TAQH/BAUw +AwEB/zAzBggrBgEFBQcBAQQnMCUwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLmdv +ZGFkZHkuY29tMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9jZXJ0aWZpY2F0ZXMu +Z29kYWRkeS5jb20vcmVwb3NpdG9yeS9yb290LmNybDBLBgNVHSAERDBCMEAGBFUd +IAAwODA2BggrBgEFBQcCARYqaHR0cDovL2NlcnRpZmljYXRlcy5nb2RhZGR5LmNv +bS9yZXBvc2l0b3J5MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOBgQC1 +QPmnHfbq/qQaQlpE9xXUhUaJwL6e4+PrxeNYiY+Sn1eocSxI0YGyeR+sBjUZsE4O +WBsUs5iB0QQeyAfJg594RAoYC5jcdnplDQ1tgMQLARzLrUc+cb53S8wGd9D0Vmsf +SxOaFIqII6hR8INMqzW/Rn453HWkrugp++85j09VZw== +-----END CERTIFICATE----- +Certificate: + Data: + Version: 1 (0x0) + Serial Number: 1 (0x1) + Signature Algorithm: sha1WithRSAEncryption + Issuer: L=ValiCert Validation Network, O=ValiCert, Inc., OU=ValiCert Class 2 Policy Validation Authority, CN=http://www.valicert.com//emailAddress=info@valicert.com + Validity + Not Before: Jun 26 00:19:54 1999 GMT + Not After : Jun 26 00:19:54 2019 GMT + Subject: L=ValiCert Validation Network, O=ValiCert, Inc., OU=ValiCert Class 2 Policy Validation Authority, CN=http://www.valicert.com//emailAddress=info@valicert.com + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + RSA Public Key: (1024 bit) + Modulus (1024 bit): + 00:ce:3a:71:ca:e5:ab:c8:59:92:55:d7:ab:d8:74: + 0e:f9:ee:d9:f6:55:47:59:65:47:0e:05:55:dc:eb: + 98:36:3c:5c:53:5d:d3:30:cf:38:ec:bd:41:89:ed: + 25:42:09:24:6b:0a:5e:b3:7c:dd:52:2d:4c:e6:d4: + d6:7d:5a:59:a9:65:d4:49:13:2d:24:4d:1c:50:6f: + b5:c1:85:54:3b:fe:71:e4:d3:5c:42:f9:80:e0:91: + 1a:0a:5b:39:36:67:f3:3f:55:7c:1b:3f:b4:5f:64: + 73:34:e3:b4:12:bf:87:64:f8:da:12:ff:37:27:c1: + b3:43:bb:ef:7b:6e:2e:69:f7 + Exponent: 65537 (0x10001) + Signature Algorithm: sha1WithRSAEncryption + 3b:7f:50:6f:6f:50:94:99:49:62:38:38:1f:4b:f8:a5:c8:3e: + a7:82:81:f6:2b:c7:e8:c5:ce:e8:3a:10:82:cb:18:00:8e:4d: + bd:a8:58:7f:a1:79:00:b5:bb:e9:8d:af:41:d9:0f:34:ee:21: + 81:19:a0:32:49:28:f4:c4:8e:56:d5:52:33:fd:50:d5:7e:99: + 6c:03:e4:c9:4c:fc:cb:6c:ab:66:b3:4a:21:8c:e5:b5:0c:32: + 3e:10:b2:cc:6c:a1:dc:9a:98:4c:02:5b:f3:ce:b9:9e:a5:72: + 0e:4a:b7:3f:3c:e6:16:68:f8:be:ed:74:4c:bc:5b:d5:62:1f: + 43:dd +-----BEGIN CERTIFICATE----- +MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 +IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz +BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y +aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG +9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMTk1NFoXDTE5MDYy +NjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y +azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs +YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw +Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl +cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOOnHK5avIWZJV16vY +dA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVCCSRrCl6zfN1SLUzm1NZ9 +WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7RfZHM047QS +v4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9v +UJSZSWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTu +IYEZoDJJKPTEjlbVUjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwC +W/POuZ6lcg5Ktz885hZo+L7tdEy8W9ViH0Pd +-----END CERTIFICATE----- \ No newline at end of file diff --git a/Package Control/certs/7f4f8622b4fd001c7f648e09aae7edaa b/Package Control/certs/7f4f8622b4fd001c7f648e09aae7edaa new file mode 100644 index 0000000..cb680c1 --- /dev/null +++ b/Package Control/certs/7f4f8622b4fd001c7f648e09aae7edaa @@ -0,0 +1,165 @@ +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 145105 (0x236d1) + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=US, O=GeoTrust Inc., CN=GeoTrust Global CA + Validity + Not Before: Feb 19 22:45:05 2010 GMT + Not After : Feb 18 22:45:05 2020 GMT + Subject: C=US, O=GeoTrust, Inc., CN=RapidSSL CA + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + RSA Public Key: (2048 bit) + Modulus (2048 bit): + 00:c7:71:f8:56:c7:1e:d9:cc:b5:ad:f6:b4:97:a3: + fb:a1:e6:0b:50:5f:50:aa:3a:da:0f:fc:3d:29:24: + 43:c6:10:29:c1:fc:55:40:72:ee:bd:ea:df:9f:b6: + 41:f4:48:4b:c8:6e:fe:4f:57:12:8b:5b:fa:92:dd: + 5e:e8:ad:f3:f0:1b:b1:7b:4d:fb:cf:fd:d1:e5:f8: + e3:dc:e7:f5:73:7f:df:01:49:cf:8c:56:c1:bd:37: + e3:5b:be:b5:4f:8b:8b:f0:da:4f:c7:e3:dd:55:47: + 69:df:f2:5b:7b:07:4f:3d:e5:ac:21:c1:c8:1d:7a: + e8:e7:f6:0f:a1:aa:f5:6f:de:a8:65:4f:10:89:9c: + 03:f3:89:7a:a5:5e:01:72:33:ed:a9:e9:5a:1e:79: + f3:87:c8:df:c8:c5:fc:37:c8:9a:9a:d7:b8:76:cc: + b0:3e:e7:fd:e6:54:ea:df:5f:52:41:78:59:57:ad: + f1:12:d6:7f:bc:d5:9f:70:d3:05:6c:fa:a3:7d:67: + 58:dd:26:62:1d:31:92:0c:79:79:1c:8e:cf:ca:7b: + c1:66:af:a8:74:48:fb:8e:82:c2:9e:2c:99:5c:7b: + 2d:5d:9b:bc:5b:57:9e:7c:3a:7a:13:ad:f2:a3:18: + 5b:2b:59:0f:cd:5c:3a:eb:68:33:c6:28:1d:82:d1: + 50:8b + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Subject Key Identifier: + 6B:69:3D:6A:18:42:4A:DD:8F:02:65:39:FD:35:24:86:78:91:16:30 + X509v3 Authority Key Identifier: + keyid:C0:7A:98:68:8D:89:FB:AB:05:64:0C:11:7D:AA:7D:65:B8:CA:CC:4E + + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 CRL Distribution Points: + URI:http://crl.geotrust.com/crls/gtglobal.crl + + Authority Information Access: + OCSP - URI:http://ocsp.geotrust.com + + Signature Algorithm: sha1WithRSAEncryption + ab:bc:bc:0a:5d:18:94:e3:c1:b1:c3:a8:4c:55:d6:be:b4:98: + f1:ee:3c:1c:cd:cf:f3:24:24:5c:96:03:27:58:fc:36:ae:a2: + 2f:8f:f1:fe:da:2b:02:c3:33:bd:c8:dd:48:22:2b:60:0f:a5: + 03:10:fd:77:f8:d0:ed:96:67:4f:fd:ea:47:20:70:54:dc:a9: + 0c:55:7e:e1:96:25:8a:d9:b5:da:57:4a:be:8d:8e:49:43:63: + a5:6c:4e:27:87:25:eb:5b:6d:fe:a2:7f:38:28:e0:36:ab:ad: + 39:a5:a5:62:c4:b7:5c:58:2c:aa:5d:01:60:a6:62:67:a3:c0: + c7:62:23:f4:e7:6c:46:ee:b5:d3:80:6a:22:13:d2:2d:3f:74: + 4f:ea:af:8c:5f:b4:38:9c:db:ae:ce:af:84:1e:a6:f6:34:51: + 59:79:d3:e3:75:dc:bc:d7:f3:73:df:92:ec:d2:20:59:6f:9c: + fb:95:f8:92:76:18:0a:7c:0f:2c:a6:ca:de:8a:62:7b:d8:f3: + ce:5f:68:bd:8f:3e:c1:74:bb:15:72:3a:16:83:a9:0b:e6:4d: + 99:9c:d8:57:ec:a8:01:51:c7:6f:57:34:5e:ab:4a:2c:42:f6: + 4f:1c:89:78:de:26:4e:f5:6f:93:4c:15:6b:27:56:4d:00:54: + 6c:7a:b7:b7 +-----BEGIN CERTIFICATE----- +MIID1TCCAr2gAwIBAgIDAjbRMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVT +MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i +YWwgQ0EwHhcNMTAwMjE5MjI0NTA1WhcNMjAwMjE4MjI0NTA1WjA8MQswCQYDVQQG +EwJVUzEXMBUGA1UEChMOR2VvVHJ1c3QsIEluYy4xFDASBgNVBAMTC1JhcGlkU1NM +IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx3H4Vsce2cy1rfa0 +l6P7oeYLUF9QqjraD/w9KSRDxhApwfxVQHLuverfn7ZB9EhLyG7+T1cSi1v6kt1e +6K3z8Buxe037z/3R5fjj3Of1c3/fAUnPjFbBvTfjW761T4uL8NpPx+PdVUdp3/Jb +ewdPPeWsIcHIHXro5/YPoar1b96oZU8QiZwD84l6pV4BcjPtqelaHnnzh8jfyMX8 +N8iamte4dsywPuf95lTq319SQXhZV63xEtZ/vNWfcNMFbPqjfWdY3SZiHTGSDHl5 +HI7PynvBZq+odEj7joLCniyZXHstXZu8W1eefDp6E63yoxhbK1kPzVw662gzxigd +gtFQiwIDAQABo4HZMIHWMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUa2k9ahhC +St2PAmU5/TUkhniRFjAwHwYDVR0jBBgwFoAUwHqYaI2J+6sFZAwRfap9ZbjKzE4w +EgYDVR0TAQH/BAgwBgEB/wIBADA6BgNVHR8EMzAxMC+gLaArhilodHRwOi8vY3Js +Lmdlb3RydXN0LmNvbS9jcmxzL2d0Z2xvYmFsLmNybDA0BggrBgEFBQcBAQQoMCYw +JAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmdlb3RydXN0LmNvbTANBgkqhkiG9w0B +AQUFAAOCAQEAq7y8Cl0YlOPBscOoTFXWvrSY8e48HM3P8yQkXJYDJ1j8Nq6iL4/x +/torAsMzvcjdSCIrYA+lAxD9d/jQ7ZZnT/3qRyBwVNypDFV+4ZYlitm12ldKvo2O +SUNjpWxOJ4cl61tt/qJ/OCjgNqutOaWlYsS3XFgsql0BYKZiZ6PAx2Ij9OdsRu61 +04BqIhPSLT90T+qvjF+0OJzbrs6vhB6m9jRRWXnT43XcvNfzc9+S7NIgWW+c+5X4 +knYYCnwPLKbK3opie9jzzl9ovY8+wXS7FXI6FoOpC+ZNmZzYV+yoAVHHb1c0XqtK +LEL2TxyJeN4mTvVvk0wVaydWTQBUbHq3tw== +-----END CERTIFICATE----- +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 144470 (0x23456) + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=US, O=GeoTrust Inc., CN=GeoTrust Global CA + Validity + Not Before: May 21 04:00:00 2002 GMT + Not After : May 21 04:00:00 2022 GMT + Subject: C=US, O=GeoTrust Inc., CN=GeoTrust Global CA + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + RSA Public Key: (2048 bit) + Modulus (2048 bit): + 00:da:cc:18:63:30:fd:f4:17:23:1a:56:7e:5b:df: + 3c:6c:38:e4:71:b7:78:91:d4:bc:a1:d8:4c:f8:a8: + 43:b6:03:e9:4d:21:07:08:88:da:58:2f:66:39:29: + bd:05:78:8b:9d:38:e8:05:b7:6a:7e:71:a4:e6:c4: + 60:a6:b0:ef:80:e4:89:28:0f:9e:25:d6:ed:83:f3: + ad:a6:91:c7:98:c9:42:18:35:14:9d:ad:98:46:92: + 2e:4f:ca:f1:87:43:c1:16:95:57:2d:50:ef:89:2d: + 80:7a:57:ad:f2:ee:5f:6b:d2:00:8d:b9:14:f8:14: + 15:35:d9:c0:46:a3:7b:72:c8:91:bf:c9:55:2b:cd: + d0:97:3e:9c:26:64:cc:df:ce:83:19:71:ca:4e:e6: + d4:d5:7b:a9:19:cd:55:de:c8:ec:d2:5e:38:53:e5: + 5c:4f:8c:2d:fe:50:23:36:fc:66:e6:cb:8e:a4:39: + 19:00:b7:95:02:39:91:0b:0e:fe:38:2e:d1:1d:05: + 9a:f6:4d:3e:6f:0f:07:1d:af:2c:1e:8f:60:39:e2: + fa:36:53:13:39:d4:5e:26:2b:db:3d:a8:14:bd:32: + eb:18:03:28:52:04:71:e5:ab:33:3d:e1:38:bb:07: + 36:84:62:9c:79:ea:16:30:f4:5f:c0:2b:e8:71:6b: + e4:f9 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE + X509v3 Subject Key Identifier: + C0:7A:98:68:8D:89:FB:AB:05:64:0C:11:7D:AA:7D:65:B8:CA:CC:4E + X509v3 Authority Key Identifier: + keyid:C0:7A:98:68:8D:89:FB:AB:05:64:0C:11:7D:AA:7D:65:B8:CA:CC:4E + + Signature Algorithm: sha1WithRSAEncryption + 35:e3:29:6a:e5:2f:5d:54:8e:29:50:94:9f:99:1a:14:e4:8f: + 78:2a:62:94:a2:27:67:9e:d0:cf:1a:5e:47:e9:c1:b2:a4:cf: + dd:41:1a:05:4e:9b:4b:ee:4a:6f:55:52:b3:24:a1:37:0a:eb: + 64:76:2a:2e:2c:f3:fd:3b:75:90:bf:fa:71:d8:c7:3d:37:d2: + b5:05:95:62:b9:a6:de:89:3d:36:7b:38:77:48:97:ac:a6:20: + 8f:2e:a6:c9:0c:c2:b2:99:45:00:c7:ce:11:51:22:22:e0:a5: + ea:b6:15:48:09:64:ea:5e:4f:74:f7:05:3e:c7:8a:52:0c:db: + 15:b4:bd:6d:9b:e5:c6:b1:54:68:a9:e3:69:90:b6:9a:a5:0f: + b8:b9:3f:20:7d:ae:4a:b5:b8:9c:e4:1d:b6:ab:e6:94:a5:c1: + c7:83:ad:db:f5:27:87:0e:04:6c:d5:ff:dd:a0:5d:ed:87:52: + b7:2b:15:02:ae:39:a6:6a:74:e9:da:c4:e7:bc:4d:34:1e:a9: + 5c:4d:33:5f:92:09:2f:88:66:5d:77:97:c7:1d:76:13:a9:d5: + e5:f1:16:09:11:35:d5:ac:db:24:71:70:2c:98:56:0b:d9:17: + b4:d1:e3:51:2b:5e:75:e8:d5:d0:dc:4f:34:ed:c2:05:66:80: + a1:cb:e6:33 +-----BEGIN CERTIFICATE----- +MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVT +MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i +YWwgQ0EwHhcNMDIwNTIxMDQwMDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQG +EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEbMBkGA1UEAxMSR2VvVHJ1c3Qg +R2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2swYYzD9 +9BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjoBbdq +fnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDv +iS2Aelet8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU +1XupGc1V3sjs0l44U+VcT4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+ +bw8HHa8sHo9gOeL6NlMTOdReJivbPagUvTLrGAMoUgRx5aszPeE4uwc2hGKceeoW +MPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTA +ephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVkDBF9qn1l +uMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKIn +Z57QzxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfS +tQWVYrmm3ok9Nns4d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcF +PseKUgzbFbS9bZvlxrFUaKnjaZC2mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Un +hw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6pXE0zX5IJL4hmXXeXxx12E6nV +5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvmMw== +-----END CERTIFICATE----- \ No newline at end of file diff --git a/Package Control/certs/897abe0b41fd2f64e9e2e351cbc36d76 b/Package Control/certs/897abe0b41fd2f64e9e2e351cbc36d76 new file mode 100644 index 0000000..591907f --- /dev/null +++ b/Package Control/certs/897abe0b41fd2f64e9e2e351cbc36d76 @@ -0,0 +1,285 @@ +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 03:37:b9:28:34:7c:60:a6:ae:c5:ad:b1:21:7f:38:60 + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert High Assurance EV Root CA + Validity + Not Before: Nov 9 12:00:00 2007 GMT + Not After : Nov 10 00:00:00 2021 GMT + Subject: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert High Assurance EV CA-1 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + RSA Public Key: (2048 bit) + Modulus (2048 bit): + 00:f3:96:62:d8:75:6e:19:ff:3f:34:7c:49:4f:31: + 7e:0d:04:4e:99:81:e2:b3:85:55:91:30:b1:c0:af: + 70:bb:2c:a8:e7:18:aa:3f:78:f7:90:68:52:86:01: + 88:97:e2:3b:06:65:90:aa:bd:65:76:c2:ec:be:10: + 5b:37:78:83:60:75:45:c6:bd:74:aa:b6:9f:a4:3a: + 01:50:17:c4:39:69:b9:f1:4f:ef:82:c1:ca:f3:4a: + db:cc:9e:50:4f:4d:40:a3:3a:90:e7:86:66:bc:f0: + 3e:76:28:4c:d1:75:80:9e:6a:35:14:35:03:9e:db: + 0c:8c:c2:28:ad:50:b2:ce:f6:91:a3:c3:a5:0a:58: + 49:f6:75:44:6c:ba:f9:ce:e9:ab:3a:02:e0:4d:f3: + ac:e2:7a:e0:60:22:05:3c:82:d3:52:e2:f3:9c:47: + f8:3b:d8:b2:4b:93:56:4a:bf:70:ab:3e:e9:68:c8: + 1d:8f:58:1d:2a:4d:5e:27:3d:ad:0a:59:2f:5a:11: + 20:40:d9:68:04:68:2d:f4:c0:84:0b:0a:1b:78:df: + ed:1a:58:dc:fb:41:5a:6d:6b:f2:ed:1c:ee:5c:32: + b6:5c:ec:d7:a6:03:32:a6:e8:de:b7:28:27:59:88: + 80:ff:7b:ad:89:58:d5:1e:14:a4:f2:b0:70:d4:a0: + 3e:a7 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Key Usage: critical + Digital Signature, Certificate Sign, CRL Sign + X509v3 Extended Key Usage: + TLS Web Server Authentication, TLS Web Client Authentication, Code Signing, E-mail Protection, Time Stamping + X509v3 Certificate Policies: + Policy: 2.16.840.1.114412.2.1 + CPS: http://www.digicert.com/ssl-cps-repository.htm + User Notice: + Explicit Text: + + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + Authority Information Access: + OCSP - URI:http://ocsp.digicert.com + CA Issuers - URI:http://www.digicert.com/CACerts/DigiCertHighAssuranceEVRootCA.crt + + X509v3 CRL Distribution Points: + URI:http://crl3.digicert.com/DigiCertHighAssuranceEVRootCA.crl + URI:http://crl4.digicert.com/DigiCertHighAssuranceEVRootCA.crl + + X509v3 Subject Key Identifier: + 4C:58:CB:25:F0:41:4F:52:F4:28:C8:81:43:9B:A6:A8:A0:E6:92:E5 + X509v3 Authority Key Identifier: + keyid:B1:3E:C3:69:03:F8:BF:47:01:D4:98:26:1A:08:02:EF:63:64:2B:C3 + + Signature Algorithm: sha1WithRSAEncryption + 4c:7a:17:87:28:5d:17:bc:b2:32:73:bf:cd:2e:f5:58:31:1d: + f0:b1:71:54:9c:d6:9b:67:93:db:2f:03:3e:16:6f:1e:03:c9: + 53:84:a3:56:60:1e:78:94:1b:a2:a8:6f:a3:a4:8b:52:91:d7: + dd:5c:95:bb:ef:b5:16:49:e9:a5:42:4f:34:f2:47:ff:ae:81: + 7f:13:54:b7:20:c4:70:15:cb:81:0a:81:cb:74:57:dc:9c:df: + 24:a4:29:0c:18:f0:1c:e4:ae:07:33:ec:f1:49:3e:55:cf:6e: + 4f:0d:54:7b:d3:c9:e8:15:48:d4:c5:bb:dc:35:1c:77:45:07: + 48:45:85:bd:d7:7e:53:b8:c0:16:d9:95:cd:8b:8d:7d:c9:60: + 4f:d1:a2:9b:e3:d0:30:d6:b4:73:36:e6:d2:f9:03:b2:e3:a4: + f5:e5:b8:3e:04:49:00:ba:2e:a6:4a:72:83:72:9d:f7:0b:8c: + a9:89:e7:b3:d7:64:1f:d6:e3:60:cb:03:c4:dc:88:e9:9d:25: + 01:00:71:cb:03:b4:29:60:25:8f:f9:46:d1:7b:71:ae:cd:53: + 12:5b:84:8e:c2:0f:c7:ed:93:19:d9:c9:fa:8f:58:34:76:32: + 2f:ae:e1:50:14:61:d4:a8:58:a3:c8:30:13:23:ef:c6:25:8c: + 36:8f:1c:80 +-----BEGIN CERTIFICATE----- +MIIG5jCCBc6gAwIBAgIQAze5KDR8YKauxa2xIX84YDANBgkqhkiG9w0BAQUFADBs +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j +ZSBFViBSb290IENBMB4XDTA3MTEwOTEyMDAwMFoXDTIxMTExMDAwMDAwMFowaTEL +MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3 +LmRpZ2ljZXJ0LmNvbTEoMCYGA1UEAxMfRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug +RVYgQ0EtMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAPOWYth1bhn/ +PzR8SU8xfg0ETpmB4rOFVZEwscCvcLssqOcYqj9495BoUoYBiJfiOwZlkKq9ZXbC +7L4QWzd4g2B1Rca9dKq2n6Q6AVAXxDlpufFP74LByvNK28yeUE9NQKM6kOeGZrzw +PnYoTNF1gJ5qNRQ1A57bDIzCKK1Qss72kaPDpQpYSfZ1RGy6+c7pqzoC4E3zrOJ6 +4GAiBTyC01Li85xH+DvYskuTVkq/cKs+6WjIHY9YHSpNXic9rQpZL1oRIEDZaARo +LfTAhAsKG3jf7RpY3PtBWm1r8u0c7lwytlzs16YDMqbo3rcoJ1mIgP97rYlY1R4U +pPKwcNSgPqcCAwEAAaOCA4UwggOBMA4GA1UdDwEB/wQEAwIBhjA7BgNVHSUENDAy +BggrBgEFBQcDAQYIKwYBBQUHAwIGCCsGAQUFBwMDBggrBgEFBQcDBAYIKwYBBQUH +AwgwggHEBgNVHSAEggG7MIIBtzCCAbMGCWCGSAGG/WwCATCCAaQwOgYIKwYBBQUH +AgEWLmh0dHA6Ly93d3cuZGlnaWNlcnQuY29tL3NzbC1jcHMtcmVwb3NpdG9yeS5o +dG0wggFkBggrBgEFBQcCAjCCAVYeggFSAEEAbgB5ACAAdQBzAGUAIABvAGYAIAB0 +AGgAaQBzACAAQwBlAHIAdABpAGYAaQBjAGEAdABlACAAYwBvAG4AcwB0AGkAdAB1 +AHQAZQBzACAAYQBjAGMAZQBwAHQAYQBuAGMAZQAgAG8AZgAgAHQAaABlACAARABp +AGcAaQBDAGUAcgB0ACAARQBWACAAQwBQAFMAIABhAG4AZAAgAHQAaABlACAAUgBl +AGwAeQBpAG4AZwAgAFAAYQByAHQAeQAgAEEAZwByAGUAZQBtAGUAbgB0ACAAdwBo +AGkAYwBoACAAbABpAG0AaQB0ACAAbABpAGEAYgBpAGwAaQB0AHkAIABhAG4AZAAg +AGEAcgBlACAAaQBuAGMAbwByAHAAbwByAGEAdABlAGQAIABoAGUAcgBlAGkAbgAg +AGIAeQAgAHIAZQBmAGUAcgBlAG4AYwBlAC4wEgYDVR0TAQH/BAgwBgEB/wIBADCB +gwYIKwYBBQUHAQEEdzB1MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2Vy +dC5jb20wTQYIKwYBBQUHMAKGQWh0dHA6Ly93d3cuZGlnaWNlcnQuY29tL0NBQ2Vy +dHMvRGlnaUNlcnRIaWdoQXNzdXJhbmNlRVZSb290Q0EuY3J0MIGPBgNVHR8EgYcw +gYQwQKA+oDyGOmh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEhpZ2hB +c3N1cmFuY2VFVlJvb3RDQS5jcmwwQKA+oDyGOmh0dHA6Ly9jcmw0LmRpZ2ljZXJ0 +LmNvbS9EaWdpQ2VydEhpZ2hBc3N1cmFuY2VFVlJvb3RDQS5jcmwwHQYDVR0OBBYE +FExYyyXwQU9S9CjIgUObpqig5pLlMB8GA1UdIwQYMBaAFLE+w2kD+L9HAdSYJhoI +Au9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQBMeheHKF0XvLIyc7/NLvVYMR3wsXFU +nNabZ5PbLwM+Fm8eA8lThKNWYB54lBuiqG+jpItSkdfdXJW777UWSemlQk808kf/ +roF/E1S3IMRwFcuBCoHLdFfcnN8kpCkMGPAc5K4HM+zxST5Vz25PDVR708noFUjU +xbvcNRx3RQdIRYW9135TuMAW2ZXNi419yWBP0aKb49Aw1rRzNubS+QOy46T15bg+ +BEkAui6mSnKDcp33C4ypieez12Qf1uNgywPE3IjpnSUBAHHLA7QpYCWP+UbRe3Gu +zVMSW4SOwg/H7ZMZ2cn6j1g0djIvruFQFGHUqFijyDATI+/GJYw2jxyA +-----END CERTIFICATE----- +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 1116160165 (0x428740a5) + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=US, O=Entrust.net, OU=www.entrust.net/CPS incorp. by ref. (limits liab.), OU=(c) 1999 Entrust.net Limited, CN=Entrust.net Secure Server Certification Authority + Validity + Not Before: Oct 1 05:00:00 2006 GMT + Not After : Jul 26 18:15:15 2014 GMT + Subject: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert High Assurance EV Root CA + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + RSA Public Key: (2048 bit) + Modulus (2048 bit): + 00:c6:cc:e5:73:e6:fb:d4:bb:e5:2d:2d:32:a6:df: + e5:81:3f:c9:cd:25:49:b6:71:2a:c3:d5:94:34:67: + a2:0a:1c:b0:5f:69:a6:40:b1:c4:b7:b2:8f:d0:98: + a4:a9:41:59:3a:d3:dc:94:d6:3c:db:74:38:a4:4a: + cc:4d:25:82:f7:4a:a5:53:12:38:ee:f3:49:6d:71: + 91:7e:63:b6:ab:a6:5f:c3:a4:84:f8:4f:62:51:be: + f8:c5:ec:db:38:92:e3:06:e5:08:91:0c:c4:28:41: + 55:fb:cb:5a:89:15:7e:71:e8:35:bf:4d:72:09:3d: + be:3a:38:50:5b:77:31:1b:8d:b3:c7:24:45:9a:a7: + ac:6d:00:14:5a:04:b7:ba:13:eb:51:0a:98:41:41: + 22:4e:65:61:87:81:41:50:a6:79:5c:89:de:19:4a: + 57:d5:2e:e6:5d:1c:53:2c:7e:98:cd:1a:06:16:a4: + 68:73:d0:34:04:13:5c:a1:71:d3:5a:7c:55:db:5e: + 64:e1:37:87:30:56:04:e5:11:b4:29:80:12:f1:79: + 39:88:a2:02:11:7c:27:66:b7:88:b7:78:f2:ca:0a: + a8:38:ab:0a:64:c2:bf:66:5d:95:84:c1:a1:25:1e: + 87:5d:1a:50:0b:20:12:cc:41:bb:6e:0b:51:38:b8: + 4b:cb + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:1 + X509v3 Extended Key Usage: + TLS Web Server Authentication, TLS Web Client Authentication, E-mail Protection + Authority Information Access: + OCSP - URI:http://ocsp.entrust.net + + X509v3 CRL Distribution Points: + URI:http://crl.entrust.net/server1.crl + + X509v3 Subject Key Identifier: + B1:3E:C3:69:03:F8:BF:47:01:D4:98:26:1A:08:02:EF:63:64:2B:C3 + X509v3 Key Usage: + Certificate Sign, CRL Sign + X509v3 Authority Key Identifier: + keyid:F0:17:62:13:55:3D:B3:FF:0A:00:6B:FB:50:84:97:F3:ED:62:D0:1A + + 1.2.840.113533.7.65.0: + 0 +..V7.1.... + Signature Algorithm: sha1WithRSAEncryption + 48:0e:2b:6f:20:62:4c:28:93:a3:24:3d:58:ab:21:cf:80:f8: + 9a:97:90:6a:22:ed:5a:7c:47:36:99:e7:79:84:75:ab:24:8f: + 92:0a:d5:61:04:ae:c3:6a:5c:b2:cc:d9:e4:44:87:6f:db:8f: + 38:62:f7:44:36:9d:ba:bc:6e:07:c4:d4:8d:e8:1f:d1:0b:60: + a3:b5:9c:ce:63:be:ed:67:dc:f8:ba:de:6e:c9:25:cb:5b:b5: + 9d:76:70:0b:df:42:72:f8:4f:41:11:64:a5:d2:ea:fc:d5:af: + 11:f4:15:38:67:9c:20:a8:4b:77:5a:91:32:42:32:e7:85:b3: + df:36 +-----BEGIN CERTIFICATE----- +MIIEQjCCA6ugAwIBAgIEQodApTANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMC +VVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5u +ZXQvQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMc +KGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UEAxMxRW50cnVzdC5u +ZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEw +MDEwNTAwMDBaFw0xNDA3MjYxODE1MTVaMGwxCzAJBgNVBAYTAlVTMRUwEwYDVQQK +EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xKzApBgNV +BAMTIkRpZ2lDZXJ0IEhpZ2ggQXNzdXJhbmNlIEVWIFJvb3QgQ0EwggEiMA0GCSqG +SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGzOVz5vvUu+UtLTKm3+WBP8nNJUm2cSrD +1ZQ0Z6IKHLBfaaZAscS3so/QmKSpQVk609yU1jzbdDikSsxNJYL3SqVTEjju80lt +cZF+Y7arpl/DpIT4T2JRvvjF7Ns4kuMG5QiRDMQoQVX7y1qJFX5x6DW/TXIJPb46 +OFBbdzEbjbPHJEWap6xtABRaBLe6E+tRCphBQSJOZWGHgUFQpnlcid4ZSlfVLuZd +HFMsfpjNGgYWpGhz0DQEE1yhcdNafFXbXmThN4cwVgTlEbQpgBLxeTmIogIRfCdm +t4i3ePLKCqg4qwpkwr9mXZWEwaElHoddGlALIBLMQbtuC1E4uEvLAgMBAAGjggET +MIIBDzASBgNVHRMBAf8ECDAGAQH/AgEBMCcGA1UdJQQgMB4GCCsGAQUFBwMBBggr +BgEFBQcDAgYIKwYBBQUHAwQwMwYIKwYBBQUHAQEEJzAlMCMGCCsGAQUFBzABhhdo +dHRwOi8vb2NzcC5lbnRydXN0Lm5ldDAzBgNVHR8ELDAqMCigJqAkhiJodHRwOi8v +Y3JsLmVudHJ1c3QubmV0L3NlcnZlcjEuY3JsMB0GA1UdDgQWBBSxPsNpA/i/RwHU +mCYaCALvY2QrwzALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8BdiE1U9s/8KAGv7 +UISX8+1i0BowGQYJKoZIhvZ9B0EABAwwChsEVjcuMQMCAIEwDQYJKoZIhvcNAQEF +BQADgYEASA4rbyBiTCiToyQ9WKshz4D4mpeQaiLtWnxHNpnneYR1qySPkgrVYQSu +w2pcsszZ5ESHb9uPOGL3RDadurxuB8TUjegf0Qtgo7WczmO+7Wfc+Lrebskly1u1 +nXZwC99CcvhPQRFkpdLq/NWvEfQVOGecIKhLd1qRMkIy54Wz3zY= +-----END CERTIFICATE----- +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 927650371 (0x374ad243) + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=US, O=Entrust.net, OU=www.entrust.net/CPS incorp. by ref. (limits liab.), OU=(c) 1999 Entrust.net Limited, CN=Entrust.net Secure Server Certification Authority + Validity + Not Before: May 25 16:09:40 1999 GMT + Not After : May 25 16:39:40 2019 GMT + Subject: C=US, O=Entrust.net, OU=www.entrust.net/CPS incorp. by ref. (limits liab.), OU=(c) 1999 Entrust.net Limited, CN=Entrust.net Secure Server Certification Authority + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + RSA Public Key: (1024 bit) + Modulus (1024 bit): + 00:cd:28:83:34:54:1b:89:f3:0f:af:37:91:31:ff: + af:31:60:c9:a8:e8:b2:10:68:ed:9f:e7:93:36:f1: + 0a:64:bb:47:f5:04:17:3f:23:47:4d:c5:27:19:81: + 26:0c:54:72:0d:88:2d:d9:1f:9a:12:9f:bc:b3:71: + d3:80:19:3f:47:66:7b:8c:35:28:d2:b9:0a:df:24: + da:9c:d6:50:79:81:7a:5a:d3:37:f7:c2:4a:d8:29: + 92:26:64:d1:e4:98:6c:3a:00:8a:f5:34:9b:65:f8: + ed:e3:10:ff:fd:b8:49:58:dc:a0:de:82:39:6b:81: + b1:16:19:61:b9:54:b6:e6:43 + Exponent: 3 (0x3) + X509v3 extensions: + Netscape Cert Type: + SSL CA, S/MIME CA, Object Signing CA + X509v3 CRL Distribution Points: + DirName:/C=US/O=Entrust.net/OU=www.entrust.net/CPS incorp. by ref. (limits liab.)/OU=(c) 1999 Entrust.net Limited/CN=Entrust.net Secure Server Certification Authority/CN=CRL1 + URI:http://www.entrust.net/CRL/net1.crl + + X509v3 Private Key Usage Period: + Not Before: May 25 16:09:40 1999 GMT, Not After: May 25 16:09:40 2019 GMT + X509v3 Key Usage: + Certificate Sign, CRL Sign + X509v3 Authority Key Identifier: + keyid:F0:17:62:13:55:3D:B3:FF:0A:00:6B:FB:50:84:97:F3:ED:62:D0:1A + + X509v3 Subject Key Identifier: + F0:17:62:13:55:3D:B3:FF:0A:00:6B:FB:50:84:97:F3:ED:62:D0:1A + X509v3 Basic Constraints: + CA:TRUE + 1.2.840.113533.7.65.0: + 0 +..V4.0.... + Signature Algorithm: sha1WithRSAEncryption + 90:dc:30:02:fa:64:74:c2:a7:0a:a5:7c:21:8d:34:17:a8:fb: + 47:0e:ff:25:7c:8d:13:0a:fb:e4:98:b5:ef:8c:f8:c5:10:0d: + f7:92:be:f1:c3:d5:d5:95:6a:04:bb:2c:ce:26:36:65:c8:31: + c6:e7:ee:3f:e3:57:75:84:7a:11:ef:46:4f:18:f4:d3:98:bb: + a8:87:32:ba:72:f6:3c:e2:3d:9f:d7:1d:d9:c3:60:43:8c:58: + 0e:22:96:2f:62:a3:2c:1f:ba:ad:05:ef:ab:32:78:87:a0:54: + 73:19:b5:5c:05:f9:52:3e:6d:2d:45:0b:f7:0a:93:ea:ed:06: + f9:b2 +-----BEGIN CERTIFICATE----- +MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMC +VVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5u +ZXQvQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMc +KGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UEAxMxRW50cnVzdC5u +ZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05OTA1 +MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIGA1UE +ChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5j +b3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF +bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUg +U2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUA +A4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQaO2f55M28Qpku0f1BBc/ +I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5gXpa0zf3 +wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OC +AdcwggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHb +oIHYpIHVMIHSMQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5 +BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1p +dHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1pdGVk +MTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRp +b24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu +dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0 +MFqBDzIwMTkwNTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8Bdi +E1U9s/8KAGv7UISX8+1i0BowHQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAa +MAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EABAwwChsEVjQuMAMCBJAwDQYJKoZI +hvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyNEwr75Ji174z4xRAN +95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9n9cd +2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI= +-----END CERTIFICATE----- \ No newline at end of file diff --git a/Package Control/certs/ca-bundle.crt b/Package Control/certs/ca-bundle.crt new file mode 100644 index 0000000..0c8e6b2 --- /dev/null +++ b/Package Control/certs/ca-bundle.crt @@ -0,0 +1,1001 @@ +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 145105 (0x236d1) + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=US, O=GeoTrust Inc., CN=GeoTrust Global CA + Validity + Not Before: Feb 19 22:45:05 2010 GMT + Not After : Feb 18 22:45:05 2020 GMT + Subject: C=US, O=GeoTrust, Inc., CN=RapidSSL CA + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + RSA Public Key: (2048 bit) + Modulus (2048 bit): + 00:c7:71:f8:56:c7:1e:d9:cc:b5:ad:f6:b4:97:a3: + fb:a1:e6:0b:50:5f:50:aa:3a:da:0f:fc:3d:29:24: + 43:c6:10:29:c1:fc:55:40:72:ee:bd:ea:df:9f:b6: + 41:f4:48:4b:c8:6e:fe:4f:57:12:8b:5b:fa:92:dd: + 5e:e8:ad:f3:f0:1b:b1:7b:4d:fb:cf:fd:d1:e5:f8: + e3:dc:e7:f5:73:7f:df:01:49:cf:8c:56:c1:bd:37: + e3:5b:be:b5:4f:8b:8b:f0:da:4f:c7:e3:dd:55:47: + 69:df:f2:5b:7b:07:4f:3d:e5:ac:21:c1:c8:1d:7a: + e8:e7:f6:0f:a1:aa:f5:6f:de:a8:65:4f:10:89:9c: + 03:f3:89:7a:a5:5e:01:72:33:ed:a9:e9:5a:1e:79: + f3:87:c8:df:c8:c5:fc:37:c8:9a:9a:d7:b8:76:cc: + b0:3e:e7:fd:e6:54:ea:df:5f:52:41:78:59:57:ad: + f1:12:d6:7f:bc:d5:9f:70:d3:05:6c:fa:a3:7d:67: + 58:dd:26:62:1d:31:92:0c:79:79:1c:8e:cf:ca:7b: + c1:66:af:a8:74:48:fb:8e:82:c2:9e:2c:99:5c:7b: + 2d:5d:9b:bc:5b:57:9e:7c:3a:7a:13:ad:f2:a3:18: + 5b:2b:59:0f:cd:5c:3a:eb:68:33:c6:28:1d:82:d1: + 50:8b + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Subject Key Identifier: + 6B:69:3D:6A:18:42:4A:DD:8F:02:65:39:FD:35:24:86:78:91:16:30 + X509v3 Authority Key Identifier: + keyid:C0:7A:98:68:8D:89:FB:AB:05:64:0C:11:7D:AA:7D:65:B8:CA:CC:4E + + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 CRL Distribution Points: + URI:http://crl.geotrust.com/crls/gtglobal.crl + + Authority Information Access: + OCSP - URI:http://ocsp.geotrust.com + + Signature Algorithm: sha1WithRSAEncryption + ab:bc:bc:0a:5d:18:94:e3:c1:b1:c3:a8:4c:55:d6:be:b4:98: + f1:ee:3c:1c:cd:cf:f3:24:24:5c:96:03:27:58:fc:36:ae:a2: + 2f:8f:f1:fe:da:2b:02:c3:33:bd:c8:dd:48:22:2b:60:0f:a5: + 03:10:fd:77:f8:d0:ed:96:67:4f:fd:ea:47:20:70:54:dc:a9: + 0c:55:7e:e1:96:25:8a:d9:b5:da:57:4a:be:8d:8e:49:43:63: + a5:6c:4e:27:87:25:eb:5b:6d:fe:a2:7f:38:28:e0:36:ab:ad: + 39:a5:a5:62:c4:b7:5c:58:2c:aa:5d:01:60:a6:62:67:a3:c0: + c7:62:23:f4:e7:6c:46:ee:b5:d3:80:6a:22:13:d2:2d:3f:74: + 4f:ea:af:8c:5f:b4:38:9c:db:ae:ce:af:84:1e:a6:f6:34:51: + 59:79:d3:e3:75:dc:bc:d7:f3:73:df:92:ec:d2:20:59:6f:9c: + fb:95:f8:92:76:18:0a:7c:0f:2c:a6:ca:de:8a:62:7b:d8:f3: + ce:5f:68:bd:8f:3e:c1:74:bb:15:72:3a:16:83:a9:0b:e6:4d: + 99:9c:d8:57:ec:a8:01:51:c7:6f:57:34:5e:ab:4a:2c:42:f6: + 4f:1c:89:78:de:26:4e:f5:6f:93:4c:15:6b:27:56:4d:00:54: + 6c:7a:b7:b7 +-----BEGIN CERTIFICATE----- +MIID1TCCAr2gAwIBAgIDAjbRMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVT +MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i +YWwgQ0EwHhcNMTAwMjE5MjI0NTA1WhcNMjAwMjE4MjI0NTA1WjA8MQswCQYDVQQG +EwJVUzEXMBUGA1UEChMOR2VvVHJ1c3QsIEluYy4xFDASBgNVBAMTC1JhcGlkU1NM +IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx3H4Vsce2cy1rfa0 +l6P7oeYLUF9QqjraD/w9KSRDxhApwfxVQHLuverfn7ZB9EhLyG7+T1cSi1v6kt1e +6K3z8Buxe037z/3R5fjj3Of1c3/fAUnPjFbBvTfjW761T4uL8NpPx+PdVUdp3/Jb +ewdPPeWsIcHIHXro5/YPoar1b96oZU8QiZwD84l6pV4BcjPtqelaHnnzh8jfyMX8 +N8iamte4dsywPuf95lTq319SQXhZV63xEtZ/vNWfcNMFbPqjfWdY3SZiHTGSDHl5 +HI7PynvBZq+odEj7joLCniyZXHstXZu8W1eefDp6E63yoxhbK1kPzVw662gzxigd +gtFQiwIDAQABo4HZMIHWMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUa2k9ahhC +St2PAmU5/TUkhniRFjAwHwYDVR0jBBgwFoAUwHqYaI2J+6sFZAwRfap9ZbjKzE4w +EgYDVR0TAQH/BAgwBgEB/wIBADA6BgNVHR8EMzAxMC+gLaArhilodHRwOi8vY3Js +Lmdlb3RydXN0LmNvbS9jcmxzL2d0Z2xvYmFsLmNybDA0BggrBgEFBQcBAQQoMCYw +JAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmdlb3RydXN0LmNvbTANBgkqhkiG9w0B +AQUFAAOCAQEAq7y8Cl0YlOPBscOoTFXWvrSY8e48HM3P8yQkXJYDJ1j8Nq6iL4/x +/torAsMzvcjdSCIrYA+lAxD9d/jQ7ZZnT/3qRyBwVNypDFV+4ZYlitm12ldKvo2O +SUNjpWxOJ4cl61tt/qJ/OCjgNqutOaWlYsS3XFgsql0BYKZiZ6PAx2Ij9OdsRu61 +04BqIhPSLT90T+qvjF+0OJzbrs6vhB6m9jRRWXnT43XcvNfzc9+S7NIgWW+c+5X4 +knYYCnwPLKbK3opie9jzzl9ovY8+wXS7FXI6FoOpC+ZNmZzYV+yoAVHHb1c0XqtK +LEL2TxyJeN4mTvVvk0wVaydWTQBUbHq3tw== +-----END CERTIFICATE----- +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 144470 (0x23456) + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=US, O=GeoTrust Inc., CN=GeoTrust Global CA + Validity + Not Before: May 21 04:00:00 2002 GMT + Not After : May 21 04:00:00 2022 GMT + Subject: C=US, O=GeoTrust Inc., CN=GeoTrust Global CA + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + RSA Public Key: (2048 bit) + Modulus (2048 bit): + 00:da:cc:18:63:30:fd:f4:17:23:1a:56:7e:5b:df: + 3c:6c:38:e4:71:b7:78:91:d4:bc:a1:d8:4c:f8:a8: + 43:b6:03:e9:4d:21:07:08:88:da:58:2f:66:39:29: + bd:05:78:8b:9d:38:e8:05:b7:6a:7e:71:a4:e6:c4: + 60:a6:b0:ef:80:e4:89:28:0f:9e:25:d6:ed:83:f3: + ad:a6:91:c7:98:c9:42:18:35:14:9d:ad:98:46:92: + 2e:4f:ca:f1:87:43:c1:16:95:57:2d:50:ef:89:2d: + 80:7a:57:ad:f2:ee:5f:6b:d2:00:8d:b9:14:f8:14: + 15:35:d9:c0:46:a3:7b:72:c8:91:bf:c9:55:2b:cd: + d0:97:3e:9c:26:64:cc:df:ce:83:19:71:ca:4e:e6: + d4:d5:7b:a9:19:cd:55:de:c8:ec:d2:5e:38:53:e5: + 5c:4f:8c:2d:fe:50:23:36:fc:66:e6:cb:8e:a4:39: + 19:00:b7:95:02:39:91:0b:0e:fe:38:2e:d1:1d:05: + 9a:f6:4d:3e:6f:0f:07:1d:af:2c:1e:8f:60:39:e2: + fa:36:53:13:39:d4:5e:26:2b:db:3d:a8:14:bd:32: + eb:18:03:28:52:04:71:e5:ab:33:3d:e1:38:bb:07: + 36:84:62:9c:79:ea:16:30:f4:5f:c0:2b:e8:71:6b: + e4:f9 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE + X509v3 Subject Key Identifier: + C0:7A:98:68:8D:89:FB:AB:05:64:0C:11:7D:AA:7D:65:B8:CA:CC:4E + X509v3 Authority Key Identifier: + keyid:C0:7A:98:68:8D:89:FB:AB:05:64:0C:11:7D:AA:7D:65:B8:CA:CC:4E + + Signature Algorithm: sha1WithRSAEncryption + 35:e3:29:6a:e5:2f:5d:54:8e:29:50:94:9f:99:1a:14:e4:8f: + 78:2a:62:94:a2:27:67:9e:d0:cf:1a:5e:47:e9:c1:b2:a4:cf: + dd:41:1a:05:4e:9b:4b:ee:4a:6f:55:52:b3:24:a1:37:0a:eb: + 64:76:2a:2e:2c:f3:fd:3b:75:90:bf:fa:71:d8:c7:3d:37:d2: + b5:05:95:62:b9:a6:de:89:3d:36:7b:38:77:48:97:ac:a6:20: + 8f:2e:a6:c9:0c:c2:b2:99:45:00:c7:ce:11:51:22:22:e0:a5: + ea:b6:15:48:09:64:ea:5e:4f:74:f7:05:3e:c7:8a:52:0c:db: + 15:b4:bd:6d:9b:e5:c6:b1:54:68:a9:e3:69:90:b6:9a:a5:0f: + b8:b9:3f:20:7d:ae:4a:b5:b8:9c:e4:1d:b6:ab:e6:94:a5:c1: + c7:83:ad:db:f5:27:87:0e:04:6c:d5:ff:dd:a0:5d:ed:87:52: + b7:2b:15:02:ae:39:a6:6a:74:e9:da:c4:e7:bc:4d:34:1e:a9: + 5c:4d:33:5f:92:09:2f:88:66:5d:77:97:c7:1d:76:13:a9:d5: + e5:f1:16:09:11:35:d5:ac:db:24:71:70:2c:98:56:0b:d9:17: + b4:d1:e3:51:2b:5e:75:e8:d5:d0:dc:4f:34:ed:c2:05:66:80: + a1:cb:e6:33 +-----BEGIN CERTIFICATE----- +MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVT +MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i +YWwgQ0EwHhcNMDIwNTIxMDQwMDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQG +EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEbMBkGA1UEAxMSR2VvVHJ1c3Qg +R2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2swYYzD9 +9BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjoBbdq +fnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDv +iS2Aelet8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU +1XupGc1V3sjs0l44U+VcT4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+ +bw8HHa8sHo9gOeL6NlMTOdReJivbPagUvTLrGAMoUgRx5aszPeE4uwc2hGKceeoW +MPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTA +ephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVkDBF9qn1l +uMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKIn +Z57QzxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfS +tQWVYrmm3ok9Nns4d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcF +PseKUgzbFbS9bZvlxrFUaKnjaZC2mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Un +hw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6pXE0zX5IJL4hmXXeXxx12E6nV +5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvmMw== +-----END CERTIFICATE----- +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 769 (0x301) + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=US, O=The Go Daddy Group, Inc., OU=Go Daddy Class 2 Certification Authority + Validity + Not Before: Nov 16 01:54:37 2006 GMT + Not After : Nov 16 01:54:37 2026 GMT + Subject: C=US, ST=Arizona, L=Scottsdale, O=GoDaddy.com, Inc., OU=http://certificates.godaddy.com/repository, CN=Go Daddy Secure Certification Authority/serialNumber=07969287 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + RSA Public Key: (2048 bit) + Modulus (2048 bit): + 00:c4:2d:d5:15:8c:9c:26:4c:ec:32:35:eb:5f:b8: + 59:01:5a:a6:61:81:59:3b:70:63:ab:e3:dc:3d:c7: + 2a:b8:c9:33:d3:79:e4:3a:ed:3c:30:23:84:8e:b3: + 30:14:b6:b2:87:c3:3d:95:54:04:9e:df:99:dd:0b: + 25:1e:21:de:65:29:7e:35:a8:a9:54:eb:f6:f7:32: + 39:d4:26:55:95:ad:ef:fb:fe:58:86:d7:9e:f4:00: + 8d:8c:2a:0c:bd:42:04:ce:a7:3f:04:f6:ee:80:f2: + aa:ef:52:a1:69:66:da:be:1a:ad:5d:da:2c:66:ea: + 1a:6b:bb:e5:1a:51:4a:00:2f:48:c7:98:75:d8:b9: + 29:c8:ee:f8:66:6d:0a:9c:b3:f3:fc:78:7c:a2:f8: + a3:f2:b5:c3:f3:b9:7a:91:c1:a7:e6:25:2e:9c:a8: + ed:12:65:6e:6a:f6:12:44:53:70:30:95:c3:9c:2b: + 58:2b:3d:08:74:4a:f2:be:51:b0:bf:87:d0:4c:27: + 58:6b:b5:35:c5:9d:af:17:31:f8:0b:8f:ee:ad:81: + 36:05:89:08:98:cf:3a:af:25:87:c0:49:ea:a7:fd: + 67:f7:45:8e:97:cc:14:39:e2:36:85:b5:7e:1a:37: + fd:16:f6:71:11:9a:74:30:16:fe:13:94:a3:3f:84: + 0d:4f + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Subject Key Identifier: + FD:AC:61:32:93:6C:45:D6:E2:EE:85:5F:9A:BA:E7:76:99:68:CC:E7 + X509v3 Authority Key Identifier: + keyid:D2:C4:B0:D2:91:D4:4C:11:71:B3:61:CB:3D:A1:FE:DD:A8:6A:D4:E3 + + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + Authority Information Access: + OCSP - URI:http://ocsp.godaddy.com + + X509v3 CRL Distribution Points: + URI:http://certificates.godaddy.com/repository/gdroot.crl + + X509v3 Certificate Policies: + Policy: 2.5.29.32.0 + CPS: http://certificates.godaddy.com/repository + + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + Signature Algorithm: sha1WithRSAEncryption + d2:86:c0:ec:bd:f9:a1:b6:67:ee:66:0b:a2:06:3a:04:50:8e: + 15:72:ac:4a:74:95:53:cb:37:cb:44:49:ef:07:90:6b:33:d9: + 96:f0:94:56:a5:13:30:05:3c:85:32:21:7b:c9:c7:0a:a8:24: + a4:90:de:46:d3:25:23:14:03:67:c2:10:d6:6f:0f:5d:7b:7a: + cc:9f:c5:58:2a:c1:c4:9e:21:a8:5a:f3:ac:a4:46:f3:9e:e4: + 63:cb:2f:90:a4:29:29:01:d9:72:2c:29:df:37:01:27:bc:4f: + ee:68:d3:21:8f:c0:b3:e4:f5:09:ed:d2:10:aa:53:b4:be:f0: + cc:59:0b:d6:3b:96:1c:95:24:49:df:ce:ec:fd:a7:48:91:14: + 45:0e:3a:36:6f:da:45:b3:45:a2:41:c9:d4:d7:44:4e:3e:b9: + 74:76:d5:a2:13:55:2c:c6:87:a3:b5:99:ac:06:84:87:7f:75: + 06:fc:bf:14:4c:0e:cc:6e:c4:df:3d:b7:12:71:f4:e8:f1:51: + 40:22:28:49:e0:1d:4b:87:a8:34:cc:06:a2:dd:12:5a:d1:86: + 36:64:03:35:6f:6f:77:6e:eb:f2:85:50:98:5e:ab:03:53:ad: + 91:23:63:1f:16:9c:cd:b9:b2:05:63:3a:e1:f4:68:1b:17:05: + 35:95:53:ee +-----BEGIN CERTIFICATE----- +MIIE3jCCA8agAwIBAgICAwEwDQYJKoZIhvcNAQEFBQAwYzELMAkGA1UEBhMCVVMx +ITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28g +RGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjExMTYw +MTU0MzdaFw0yNjExMTYwMTU0MzdaMIHKMQswCQYDVQQGEwJVUzEQMA4GA1UECBMH +QXJpem9uYTETMBEGA1UEBxMKU2NvdHRzZGFsZTEaMBgGA1UEChMRR29EYWRkeS5j +b20sIEluYy4xMzAxBgNVBAsTKmh0dHA6Ly9jZXJ0aWZpY2F0ZXMuZ29kYWRkeS5j +b20vcmVwb3NpdG9yeTEwMC4GA1UEAxMnR28gRGFkZHkgU2VjdXJlIENlcnRpZmlj +YXRpb24gQXV0aG9yaXR5MREwDwYDVQQFEwgwNzk2OTI4NzCCASIwDQYJKoZIhvcN +AQEBBQADggEPADCCAQoCggEBAMQt1RWMnCZM7DI161+4WQFapmGBWTtwY6vj3D3H +KrjJM9N55DrtPDAjhI6zMBS2sofDPZVUBJ7fmd0LJR4h3mUpfjWoqVTr9vcyOdQm +VZWt7/v+WIbXnvQAjYwqDL1CBM6nPwT27oDyqu9SoWlm2r4arV3aLGbqGmu75RpR +SgAvSMeYddi5Kcju+GZtCpyz8/x4fKL4o/K1w/O5epHBp+YlLpyo7RJlbmr2EkRT +cDCVw5wrWCs9CHRK8r5RsL+H0EwnWGu1NcWdrxcx+AuP7q2BNgWJCJjPOq8lh8BJ +6qf9Z/dFjpfMFDniNoW1fho3/Rb2cRGadDAW/hOUoz+EDU8CAwEAAaOCATIwggEu +MB0GA1UdDgQWBBT9rGEyk2xF1uLuhV+auud2mWjM5zAfBgNVHSMEGDAWgBTSxLDS +kdRMEXGzYcs9of7dqGrU4zASBgNVHRMBAf8ECDAGAQH/AgEAMDMGCCsGAQUFBwEB +BCcwJTAjBggrBgEFBQcwAYYXaHR0cDovL29jc3AuZ29kYWRkeS5jb20wRgYDVR0f +BD8wPTA7oDmgN4Y1aHR0cDovL2NlcnRpZmljYXRlcy5nb2RhZGR5LmNvbS9yZXBv +c2l0b3J5L2dkcm9vdC5jcmwwSwYDVR0gBEQwQjBABgRVHSAAMDgwNgYIKwYBBQUH +AgEWKmh0dHA6Ly9jZXJ0aWZpY2F0ZXMuZ29kYWRkeS5jb20vcmVwb3NpdG9yeTAO +BgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQEFBQADggEBANKGwOy9+aG2Z+5mC6IG +OgRQjhVyrEp0lVPLN8tESe8HkGsz2ZbwlFalEzAFPIUyIXvJxwqoJKSQ3kbTJSMU +A2fCENZvD117esyfxVgqwcSeIaha86ykRvOe5GPLL5CkKSkB2XIsKd83ASe8T+5o +0yGPwLPk9Qnt0hCqU7S+8MxZC9Y7lhyVJEnfzuz9p0iRFEUOOjZv2kWzRaJBydTX +RE4+uXR21aITVSzGh6O1mawGhId/dQb8vxRMDsxuxN89txJx9OjxUUAiKEngHUuH +qDTMBqLdElrRhjZkAzVvb3du6/KFUJheqwNTrZEjYx8WnM25sgVjOuH0aBsXBTWV +U+4= +-----END CERTIFICATE----- +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 269 (0x10d) + Signature Algorithm: sha1WithRSAEncryption + Issuer: L=ValiCert Validation Network, O=ValiCert, Inc., OU=ValiCert Class 2 Policy Validation Authority, CN=http://www.valicert.com//emailAddress=info@valicert.com + Validity + Not Before: Jun 29 17:06:20 2004 GMT + Not After : Jun 29 17:06:20 2024 GMT + Subject: C=US, O=The Go Daddy Group, Inc., OU=Go Daddy Class 2 Certification Authority + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + RSA Public Key: (2048 bit) + Modulus (2048 bit): + 00:de:9d:d7:ea:57:18:49:a1:5b:eb:d7:5f:48:86: + ea:be:dd:ff:e4:ef:67:1c:f4:65:68:b3:57:71:a0: + 5e:77:bb:ed:9b:49:e9:70:80:3d:56:18:63:08:6f: + da:f2:cc:d0:3f:7f:02:54:22:54:10:d8:b2:81:d4: + c0:75:3d:4b:7f:c7:77:c3:3e:78:ab:1a:03:b5:20: + 6b:2f:6a:2b:b1:c5:88:7e:c4:bb:1e:b0:c1:d8:45: + 27:6f:aa:37:58:f7:87:26:d7:d8:2d:f6:a9:17:b7: + 1f:72:36:4e:a6:17:3f:65:98:92:db:2a:6e:5d:a2: + fe:88:e0:0b:de:7f:e5:8d:15:e1:eb:cb:3a:d5:e2: + 12:a2:13:2d:d8:8e:af:5f:12:3d:a0:08:05:08:b6: + 5c:a5:65:38:04:45:99:1e:a3:60:60:74:c5:41:a5: + 72:62:1b:62:c5:1f:6f:5f:1a:42:be:02:51:65:a8: + ae:23:18:6a:fc:78:03:a9:4d:7f:80:c3:fa:ab:5a: + fc:a1:40:a4:ca:19:16:fe:b2:c8:ef:5e:73:0d:ee: + 77:bd:9a:f6:79:98:bc:b1:07:67:a2:15:0d:dd:a0: + 58:c6:44:7b:0a:3e:62:28:5f:ba:41:07:53:58:cf: + 11:7e:38:74:c5:f8:ff:b5:69:90:8f:84:74:ea:97: + 1b:af + Exponent: 3 (0x3) + X509v3 extensions: + X509v3 Subject Key Identifier: + D2:C4:B0:D2:91:D4:4C:11:71:B3:61:CB:3D:A1:FE:DD:A8:6A:D4:E3 + X509v3 Authority Key Identifier: + DirName:/L=ValiCert Validation Network/O=ValiCert, Inc./OU=ValiCert Class 2 Policy Validation Authority/CN=http://www.valicert.com//emailAddress=info@valicert.com + serial:01 + + X509v3 Basic Constraints: critical + CA:TRUE + Authority Information Access: + OCSP - URI:http://ocsp.godaddy.com + + X509v3 CRL Distribution Points: + URI:http://certificates.godaddy.com/repository/root.crl + + X509v3 Certificate Policies: + Policy: 2.5.29.32.0 + CPS: http://certificates.godaddy.com/repository + + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + Signature Algorithm: sha1WithRSAEncryption + b5:40:f9:a7:1d:f6:ea:fe:a4:1a:42:5a:44:f7:15:d4:85:46: + 89:c0:be:9e:e3:e3:eb:c5:e3:58:89:8f:92:9f:57:a8:71:2c: + 48:d1:81:b2:79:1f:ac:06:35:19:b0:4e:0e:58:1b:14:b3:98: + 81:d1:04:1e:c8:07:c9:83:9f:78:44:0a:18:0b:98:dc:76:7a: + 65:0d:0d:6d:80:c4:0b:01:1c:cb:ad:47:3e:71:be:77:4b:cc: + 06:77:d0:f4:56:6b:1f:4b:13:9a:14:8a:88:23:a8:51:f0:83: + 4c:ab:35:bf:46:7e:39:dc:75:a4:ae:e8:29:fb:ef:39:8f:4f: + 55:67 +-----BEGIN CERTIFICATE----- +MIIE+zCCBGSgAwIBAgICAQ0wDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1Zh +bGlDZXJ0IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIElu +Yy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRpb24g +QXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAe +BgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTA0MDYyOTE3MDYyMFoX +DTI0MDYyOTE3MDYyMFowYzELMAkGA1UEBhMCVVMxITAfBgNVBAoTGFRoZSBHbyBE +YWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28gRGFkZHkgQ2xhc3MgMiBDZXJ0 +aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgC +ggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCAPVYYYwhv +2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6wwdhFJ2+q +N1j3hybX2C32qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXiEqITLdiO +r18SPaAIBQi2XKVlOARFmR6jYGB0xUGlcmIbYsUfb18aQr4CUWWoriMYavx4A6lN +f4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmYvLEHZ6IVDd2gWMZEewo+YihfukEH +U1jPEX44dMX4/7VpkI+EdOqXG68CAQOjggHhMIIB3TAdBgNVHQ4EFgQU0sSw0pHU +TBFxs2HLPaH+3ahq1OMwgdIGA1UdIwSByjCBx6GBwaSBvjCBuzEkMCIGA1UEBxMb +VmFsaUNlcnQgVmFsaWRhdGlvbiBOZXR3b3JrMRcwFQYDVQQKEw5WYWxpQ2VydCwg +SW5jLjE1MDMGA1UECxMsVmFsaUNlcnQgQ2xhc3MgMiBQb2xpY3kgVmFsaWRhdGlv +biBBdXRob3JpdHkxITAfBgNVBAMTGGh0dHA6Ly93d3cudmFsaWNlcnQuY29tLzEg +MB4GCSqGSIb3DQEJARYRaW5mb0B2YWxpY2VydC5jb22CAQEwDwYDVR0TAQH/BAUw +AwEB/zAzBggrBgEFBQcBAQQnMCUwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLmdv +ZGFkZHkuY29tMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9jZXJ0aWZpY2F0ZXMu +Z29kYWRkeS5jb20vcmVwb3NpdG9yeS9yb290LmNybDBLBgNVHSAERDBCMEAGBFUd +IAAwODA2BggrBgEFBQcCARYqaHR0cDovL2NlcnRpZmljYXRlcy5nb2RhZGR5LmNv +bS9yZXBvc2l0b3J5MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOBgQC1 +QPmnHfbq/qQaQlpE9xXUhUaJwL6e4+PrxeNYiY+Sn1eocSxI0YGyeR+sBjUZsE4O +WBsUs5iB0QQeyAfJg594RAoYC5jcdnplDQ1tgMQLARzLrUc+cb53S8wGd9D0Vmsf +SxOaFIqII6hR8INMqzW/Rn453HWkrugp++85j09VZw== +-----END CERTIFICATE----- +Certificate: + Data: + Version: 1 (0x0) + Serial Number: 1 (0x1) + Signature Algorithm: sha1WithRSAEncryption + Issuer: L=ValiCert Validation Network, O=ValiCert, Inc., OU=ValiCert Class 2 Policy Validation Authority, CN=http://www.valicert.com//emailAddress=info@valicert.com + Validity + Not Before: Jun 26 00:19:54 1999 GMT + Not After : Jun 26 00:19:54 2019 GMT + Subject: L=ValiCert Validation Network, O=ValiCert, Inc., OU=ValiCert Class 2 Policy Validation Authority, CN=http://www.valicert.com//emailAddress=info@valicert.com + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + RSA Public Key: (1024 bit) + Modulus (1024 bit): + 00:ce:3a:71:ca:e5:ab:c8:59:92:55:d7:ab:d8:74: + 0e:f9:ee:d9:f6:55:47:59:65:47:0e:05:55:dc:eb: + 98:36:3c:5c:53:5d:d3:30:cf:38:ec:bd:41:89:ed: + 25:42:09:24:6b:0a:5e:b3:7c:dd:52:2d:4c:e6:d4: + d6:7d:5a:59:a9:65:d4:49:13:2d:24:4d:1c:50:6f: + b5:c1:85:54:3b:fe:71:e4:d3:5c:42:f9:80:e0:91: + 1a:0a:5b:39:36:67:f3:3f:55:7c:1b:3f:b4:5f:64: + 73:34:e3:b4:12:bf:87:64:f8:da:12:ff:37:27:c1: + b3:43:bb:ef:7b:6e:2e:69:f7 + Exponent: 65537 (0x10001) + Signature Algorithm: sha1WithRSAEncryption + 3b:7f:50:6f:6f:50:94:99:49:62:38:38:1f:4b:f8:a5:c8:3e: + a7:82:81:f6:2b:c7:e8:c5:ce:e8:3a:10:82:cb:18:00:8e:4d: + bd:a8:58:7f:a1:79:00:b5:bb:e9:8d:af:41:d9:0f:34:ee:21: + 81:19:a0:32:49:28:f4:c4:8e:56:d5:52:33:fd:50:d5:7e:99: + 6c:03:e4:c9:4c:fc:cb:6c:ab:66:b3:4a:21:8c:e5:b5:0c:32: + 3e:10:b2:cc:6c:a1:dc:9a:98:4c:02:5b:f3:ce:b9:9e:a5:72: + 0e:4a:b7:3f:3c:e6:16:68:f8:be:ed:74:4c:bc:5b:d5:62:1f: + 43:dd +-----BEGIN CERTIFICATE----- +MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 +IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz +BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y +aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG +9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMTk1NFoXDTE5MDYy +NjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y +azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs +YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw +Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl +cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOOnHK5avIWZJV16vY +dA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVCCSRrCl6zfN1SLUzm1NZ9 +WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7RfZHM047QS +v4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9v +UJSZSWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTu +IYEZoDJJKPTEjlbVUjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwC +W/POuZ6lcg5Ktz885hZo+L7tdEy8W9ViH0Pd +-----END CERTIFICATE----- +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 03:37:b9:28:34:7c:60:a6:ae:c5:ad:b1:21:7f:38:60 + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert High Assurance EV Root CA + Validity + Not Before: Nov 9 12:00:00 2007 GMT + Not After : Nov 10 00:00:00 2021 GMT + Subject: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert High Assurance EV CA-1 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + RSA Public Key: (2048 bit) + Modulus (2048 bit): + 00:f3:96:62:d8:75:6e:19:ff:3f:34:7c:49:4f:31: + 7e:0d:04:4e:99:81:e2:b3:85:55:91:30:b1:c0:af: + 70:bb:2c:a8:e7:18:aa:3f:78:f7:90:68:52:86:01: + 88:97:e2:3b:06:65:90:aa:bd:65:76:c2:ec:be:10: + 5b:37:78:83:60:75:45:c6:bd:74:aa:b6:9f:a4:3a: + 01:50:17:c4:39:69:b9:f1:4f:ef:82:c1:ca:f3:4a: + db:cc:9e:50:4f:4d:40:a3:3a:90:e7:86:66:bc:f0: + 3e:76:28:4c:d1:75:80:9e:6a:35:14:35:03:9e:db: + 0c:8c:c2:28:ad:50:b2:ce:f6:91:a3:c3:a5:0a:58: + 49:f6:75:44:6c:ba:f9:ce:e9:ab:3a:02:e0:4d:f3: + ac:e2:7a:e0:60:22:05:3c:82:d3:52:e2:f3:9c:47: + f8:3b:d8:b2:4b:93:56:4a:bf:70:ab:3e:e9:68:c8: + 1d:8f:58:1d:2a:4d:5e:27:3d:ad:0a:59:2f:5a:11: + 20:40:d9:68:04:68:2d:f4:c0:84:0b:0a:1b:78:df: + ed:1a:58:dc:fb:41:5a:6d:6b:f2:ed:1c:ee:5c:32: + b6:5c:ec:d7:a6:03:32:a6:e8:de:b7:28:27:59:88: + 80:ff:7b:ad:89:58:d5:1e:14:a4:f2:b0:70:d4:a0: + 3e:a7 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Key Usage: critical + Digital Signature, Certificate Sign, CRL Sign + X509v3 Extended Key Usage: + TLS Web Server Authentication, TLS Web Client Authentication, Code Signing, E-mail Protection, Time Stamping + X509v3 Certificate Policies: + Policy: 2.16.840.1.114412.2.1 + CPS: http://www.digicert.com/ssl-cps-repository.htm + User Notice: + Explicit Text: + + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + Authority Information Access: + OCSP - URI:http://ocsp.digicert.com + CA Issuers - URI:http://www.digicert.com/CACerts/DigiCertHighAssuranceEVRootCA.crt + + X509v3 CRL Distribution Points: + URI:http://crl3.digicert.com/DigiCertHighAssuranceEVRootCA.crl + URI:http://crl4.digicert.com/DigiCertHighAssuranceEVRootCA.crl + + X509v3 Subject Key Identifier: + 4C:58:CB:25:F0:41:4F:52:F4:28:C8:81:43:9B:A6:A8:A0:E6:92:E5 + X509v3 Authority Key Identifier: + keyid:B1:3E:C3:69:03:F8:BF:47:01:D4:98:26:1A:08:02:EF:63:64:2B:C3 + + Signature Algorithm: sha1WithRSAEncryption + 4c:7a:17:87:28:5d:17:bc:b2:32:73:bf:cd:2e:f5:58:31:1d: + f0:b1:71:54:9c:d6:9b:67:93:db:2f:03:3e:16:6f:1e:03:c9: + 53:84:a3:56:60:1e:78:94:1b:a2:a8:6f:a3:a4:8b:52:91:d7: + dd:5c:95:bb:ef:b5:16:49:e9:a5:42:4f:34:f2:47:ff:ae:81: + 7f:13:54:b7:20:c4:70:15:cb:81:0a:81:cb:74:57:dc:9c:df: + 24:a4:29:0c:18:f0:1c:e4:ae:07:33:ec:f1:49:3e:55:cf:6e: + 4f:0d:54:7b:d3:c9:e8:15:48:d4:c5:bb:dc:35:1c:77:45:07: + 48:45:85:bd:d7:7e:53:b8:c0:16:d9:95:cd:8b:8d:7d:c9:60: + 4f:d1:a2:9b:e3:d0:30:d6:b4:73:36:e6:d2:f9:03:b2:e3:a4: + f5:e5:b8:3e:04:49:00:ba:2e:a6:4a:72:83:72:9d:f7:0b:8c: + a9:89:e7:b3:d7:64:1f:d6:e3:60:cb:03:c4:dc:88:e9:9d:25: + 01:00:71:cb:03:b4:29:60:25:8f:f9:46:d1:7b:71:ae:cd:53: + 12:5b:84:8e:c2:0f:c7:ed:93:19:d9:c9:fa:8f:58:34:76:32: + 2f:ae:e1:50:14:61:d4:a8:58:a3:c8:30:13:23:ef:c6:25:8c: + 36:8f:1c:80 +-----BEGIN CERTIFICATE----- +MIIG5jCCBc6gAwIBAgIQAze5KDR8YKauxa2xIX84YDANBgkqhkiG9w0BAQUFADBs +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j +ZSBFViBSb290IENBMB4XDTA3MTEwOTEyMDAwMFoXDTIxMTExMDAwMDAwMFowaTEL +MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3 +LmRpZ2ljZXJ0LmNvbTEoMCYGA1UEAxMfRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug +RVYgQ0EtMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAPOWYth1bhn/ +PzR8SU8xfg0ETpmB4rOFVZEwscCvcLssqOcYqj9495BoUoYBiJfiOwZlkKq9ZXbC +7L4QWzd4g2B1Rca9dKq2n6Q6AVAXxDlpufFP74LByvNK28yeUE9NQKM6kOeGZrzw +PnYoTNF1gJ5qNRQ1A57bDIzCKK1Qss72kaPDpQpYSfZ1RGy6+c7pqzoC4E3zrOJ6 +4GAiBTyC01Li85xH+DvYskuTVkq/cKs+6WjIHY9YHSpNXic9rQpZL1oRIEDZaARo +LfTAhAsKG3jf7RpY3PtBWm1r8u0c7lwytlzs16YDMqbo3rcoJ1mIgP97rYlY1R4U +pPKwcNSgPqcCAwEAAaOCA4UwggOBMA4GA1UdDwEB/wQEAwIBhjA7BgNVHSUENDAy +BggrBgEFBQcDAQYIKwYBBQUHAwIGCCsGAQUFBwMDBggrBgEFBQcDBAYIKwYBBQUH +AwgwggHEBgNVHSAEggG7MIIBtzCCAbMGCWCGSAGG/WwCATCCAaQwOgYIKwYBBQUH +AgEWLmh0dHA6Ly93d3cuZGlnaWNlcnQuY29tL3NzbC1jcHMtcmVwb3NpdG9yeS5o +dG0wggFkBggrBgEFBQcCAjCCAVYeggFSAEEAbgB5ACAAdQBzAGUAIABvAGYAIAB0 +AGgAaQBzACAAQwBlAHIAdABpAGYAaQBjAGEAdABlACAAYwBvAG4AcwB0AGkAdAB1 +AHQAZQBzACAAYQBjAGMAZQBwAHQAYQBuAGMAZQAgAG8AZgAgAHQAaABlACAARABp +AGcAaQBDAGUAcgB0ACAARQBWACAAQwBQAFMAIABhAG4AZAAgAHQAaABlACAAUgBl +AGwAeQBpAG4AZwAgAFAAYQByAHQAeQAgAEEAZwByAGUAZQBtAGUAbgB0ACAAdwBo +AGkAYwBoACAAbABpAG0AaQB0ACAAbABpAGEAYgBpAGwAaQB0AHkAIABhAG4AZAAg +AGEAcgBlACAAaQBuAGMAbwByAHAAbwByAGEAdABlAGQAIABoAGUAcgBlAGkAbgAg +AGIAeQAgAHIAZQBmAGUAcgBlAG4AYwBlAC4wEgYDVR0TAQH/BAgwBgEB/wIBADCB +gwYIKwYBBQUHAQEEdzB1MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2Vy +dC5jb20wTQYIKwYBBQUHMAKGQWh0dHA6Ly93d3cuZGlnaWNlcnQuY29tL0NBQ2Vy +dHMvRGlnaUNlcnRIaWdoQXNzdXJhbmNlRVZSb290Q0EuY3J0MIGPBgNVHR8EgYcw +gYQwQKA+oDyGOmh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEhpZ2hB +c3N1cmFuY2VFVlJvb3RDQS5jcmwwQKA+oDyGOmh0dHA6Ly9jcmw0LmRpZ2ljZXJ0 +LmNvbS9EaWdpQ2VydEhpZ2hBc3N1cmFuY2VFVlJvb3RDQS5jcmwwHQYDVR0OBBYE +FExYyyXwQU9S9CjIgUObpqig5pLlMB8GA1UdIwQYMBaAFLE+w2kD+L9HAdSYJhoI +Au9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQBMeheHKF0XvLIyc7/NLvVYMR3wsXFU +nNabZ5PbLwM+Fm8eA8lThKNWYB54lBuiqG+jpItSkdfdXJW777UWSemlQk808kf/ +roF/E1S3IMRwFcuBCoHLdFfcnN8kpCkMGPAc5K4HM+zxST5Vz25PDVR708noFUjU +xbvcNRx3RQdIRYW9135TuMAW2ZXNi419yWBP0aKb49Aw1rRzNubS+QOy46T15bg+ +BEkAui6mSnKDcp33C4ypieez12Qf1uNgywPE3IjpnSUBAHHLA7QpYCWP+UbRe3Gu +zVMSW4SOwg/H7ZMZ2cn6j1g0djIvruFQFGHUqFijyDATI+/GJYw2jxyA +-----END CERTIFICATE----- +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 1116160165 (0x428740a5) + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=US, O=Entrust.net, OU=www.entrust.net/CPS incorp. by ref. (limits liab.), OU=(c) 1999 Entrust.net Limited, CN=Entrust.net Secure Server Certification Authority + Validity + Not Before: Oct 1 05:00:00 2006 GMT + Not After : Jul 26 18:15:15 2014 GMT + Subject: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert High Assurance EV Root CA + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + RSA Public Key: (2048 bit) + Modulus (2048 bit): + 00:c6:cc:e5:73:e6:fb:d4:bb:e5:2d:2d:32:a6:df: + e5:81:3f:c9:cd:25:49:b6:71:2a:c3:d5:94:34:67: + a2:0a:1c:b0:5f:69:a6:40:b1:c4:b7:b2:8f:d0:98: + a4:a9:41:59:3a:d3:dc:94:d6:3c:db:74:38:a4:4a: + cc:4d:25:82:f7:4a:a5:53:12:38:ee:f3:49:6d:71: + 91:7e:63:b6:ab:a6:5f:c3:a4:84:f8:4f:62:51:be: + f8:c5:ec:db:38:92:e3:06:e5:08:91:0c:c4:28:41: + 55:fb:cb:5a:89:15:7e:71:e8:35:bf:4d:72:09:3d: + be:3a:38:50:5b:77:31:1b:8d:b3:c7:24:45:9a:a7: + ac:6d:00:14:5a:04:b7:ba:13:eb:51:0a:98:41:41: + 22:4e:65:61:87:81:41:50:a6:79:5c:89:de:19:4a: + 57:d5:2e:e6:5d:1c:53:2c:7e:98:cd:1a:06:16:a4: + 68:73:d0:34:04:13:5c:a1:71:d3:5a:7c:55:db:5e: + 64:e1:37:87:30:56:04:e5:11:b4:29:80:12:f1:79: + 39:88:a2:02:11:7c:27:66:b7:88:b7:78:f2:ca:0a: + a8:38:ab:0a:64:c2:bf:66:5d:95:84:c1:a1:25:1e: + 87:5d:1a:50:0b:20:12:cc:41:bb:6e:0b:51:38:b8: + 4b:cb + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:1 + X509v3 Extended Key Usage: + TLS Web Server Authentication, TLS Web Client Authentication, E-mail Protection + Authority Information Access: + OCSP - URI:http://ocsp.entrust.net + + X509v3 CRL Distribution Points: + URI:http://crl.entrust.net/server1.crl + + X509v3 Subject Key Identifier: + B1:3E:C3:69:03:F8:BF:47:01:D4:98:26:1A:08:02:EF:63:64:2B:C3 + X509v3 Key Usage: + Certificate Sign, CRL Sign + X509v3 Authority Key Identifier: + keyid:F0:17:62:13:55:3D:B3:FF:0A:00:6B:FB:50:84:97:F3:ED:62:D0:1A + + 1.2.840.113533.7.65.0: + 0 +..V7.1.... + Signature Algorithm: sha1WithRSAEncryption + 48:0e:2b:6f:20:62:4c:28:93:a3:24:3d:58:ab:21:cf:80:f8: + 9a:97:90:6a:22:ed:5a:7c:47:36:99:e7:79:84:75:ab:24:8f: + 92:0a:d5:61:04:ae:c3:6a:5c:b2:cc:d9:e4:44:87:6f:db:8f: + 38:62:f7:44:36:9d:ba:bc:6e:07:c4:d4:8d:e8:1f:d1:0b:60: + a3:b5:9c:ce:63:be:ed:67:dc:f8:ba:de:6e:c9:25:cb:5b:b5: + 9d:76:70:0b:df:42:72:f8:4f:41:11:64:a5:d2:ea:fc:d5:af: + 11:f4:15:38:67:9c:20:a8:4b:77:5a:91:32:42:32:e7:85:b3: + df:36 +-----BEGIN CERTIFICATE----- +MIIEQjCCA6ugAwIBAgIEQodApTANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMC +VVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5u +ZXQvQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMc +KGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UEAxMxRW50cnVzdC5u +ZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEw +MDEwNTAwMDBaFw0xNDA3MjYxODE1MTVaMGwxCzAJBgNVBAYTAlVTMRUwEwYDVQQK +EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xKzApBgNV +BAMTIkRpZ2lDZXJ0IEhpZ2ggQXNzdXJhbmNlIEVWIFJvb3QgQ0EwggEiMA0GCSqG +SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGzOVz5vvUu+UtLTKm3+WBP8nNJUm2cSrD +1ZQ0Z6IKHLBfaaZAscS3so/QmKSpQVk609yU1jzbdDikSsxNJYL3SqVTEjju80lt +cZF+Y7arpl/DpIT4T2JRvvjF7Ns4kuMG5QiRDMQoQVX7y1qJFX5x6DW/TXIJPb46 +OFBbdzEbjbPHJEWap6xtABRaBLe6E+tRCphBQSJOZWGHgUFQpnlcid4ZSlfVLuZd +HFMsfpjNGgYWpGhz0DQEE1yhcdNafFXbXmThN4cwVgTlEbQpgBLxeTmIogIRfCdm +t4i3ePLKCqg4qwpkwr9mXZWEwaElHoddGlALIBLMQbtuC1E4uEvLAgMBAAGjggET +MIIBDzASBgNVHRMBAf8ECDAGAQH/AgEBMCcGA1UdJQQgMB4GCCsGAQUFBwMBBggr +BgEFBQcDAgYIKwYBBQUHAwQwMwYIKwYBBQUHAQEEJzAlMCMGCCsGAQUFBzABhhdo +dHRwOi8vb2NzcC5lbnRydXN0Lm5ldDAzBgNVHR8ELDAqMCigJqAkhiJodHRwOi8v +Y3JsLmVudHJ1c3QubmV0L3NlcnZlcjEuY3JsMB0GA1UdDgQWBBSxPsNpA/i/RwHU +mCYaCALvY2QrwzALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8BdiE1U9s/8KAGv7 +UISX8+1i0BowGQYJKoZIhvZ9B0EABAwwChsEVjcuMQMCAIEwDQYJKoZIhvcNAQEF +BQADgYEASA4rbyBiTCiToyQ9WKshz4D4mpeQaiLtWnxHNpnneYR1qySPkgrVYQSu +w2pcsszZ5ESHb9uPOGL3RDadurxuB8TUjegf0Qtgo7WczmO+7Wfc+Lrebskly1u1 +nXZwC99CcvhPQRFkpdLq/NWvEfQVOGecIKhLd1qRMkIy54Wz3zY= +-----END CERTIFICATE----- +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 927650371 (0x374ad243) + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=US, O=Entrust.net, OU=www.entrust.net/CPS incorp. by ref. (limits liab.), OU=(c) 1999 Entrust.net Limited, CN=Entrust.net Secure Server Certification Authority + Validity + Not Before: May 25 16:09:40 1999 GMT + Not After : May 25 16:39:40 2019 GMT + Subject: C=US, O=Entrust.net, OU=www.entrust.net/CPS incorp. by ref. (limits liab.), OU=(c) 1999 Entrust.net Limited, CN=Entrust.net Secure Server Certification Authority + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + RSA Public Key: (1024 bit) + Modulus (1024 bit): + 00:cd:28:83:34:54:1b:89:f3:0f:af:37:91:31:ff: + af:31:60:c9:a8:e8:b2:10:68:ed:9f:e7:93:36:f1: + 0a:64:bb:47:f5:04:17:3f:23:47:4d:c5:27:19:81: + 26:0c:54:72:0d:88:2d:d9:1f:9a:12:9f:bc:b3:71: + d3:80:19:3f:47:66:7b:8c:35:28:d2:b9:0a:df:24: + da:9c:d6:50:79:81:7a:5a:d3:37:f7:c2:4a:d8:29: + 92:26:64:d1:e4:98:6c:3a:00:8a:f5:34:9b:65:f8: + ed:e3:10:ff:fd:b8:49:58:dc:a0:de:82:39:6b:81: + b1:16:19:61:b9:54:b6:e6:43 + Exponent: 3 (0x3) + X509v3 extensions: + Netscape Cert Type: + SSL CA, S/MIME CA, Object Signing CA + X509v3 CRL Distribution Points: + DirName:/C=US/O=Entrust.net/OU=www.entrust.net/CPS incorp. by ref. (limits liab.)/OU=(c) 1999 Entrust.net Limited/CN=Entrust.net Secure Server Certification Authority/CN=CRL1 + URI:http://www.entrust.net/CRL/net1.crl + + X509v3 Private Key Usage Period: + Not Before: May 25 16:09:40 1999 GMT, Not After: May 25 16:09:40 2019 GMT + X509v3 Key Usage: + Certificate Sign, CRL Sign + X509v3 Authority Key Identifier: + keyid:F0:17:62:13:55:3D:B3:FF:0A:00:6B:FB:50:84:97:F3:ED:62:D0:1A + + X509v3 Subject Key Identifier: + F0:17:62:13:55:3D:B3:FF:0A:00:6B:FB:50:84:97:F3:ED:62:D0:1A + X509v3 Basic Constraints: + CA:TRUE + 1.2.840.113533.7.65.0: + 0 +..V4.0.... + Signature Algorithm: sha1WithRSAEncryption + 90:dc:30:02:fa:64:74:c2:a7:0a:a5:7c:21:8d:34:17:a8:fb: + 47:0e:ff:25:7c:8d:13:0a:fb:e4:98:b5:ef:8c:f8:c5:10:0d: + f7:92:be:f1:c3:d5:d5:95:6a:04:bb:2c:ce:26:36:65:c8:31: + c6:e7:ee:3f:e3:57:75:84:7a:11:ef:46:4f:18:f4:d3:98:bb: + a8:87:32:ba:72:f6:3c:e2:3d:9f:d7:1d:d9:c3:60:43:8c:58: + 0e:22:96:2f:62:a3:2c:1f:ba:ad:05:ef:ab:32:78:87:a0:54: + 73:19:b5:5c:05:f9:52:3e:6d:2d:45:0b:f7:0a:93:ea:ed:06: + f9:b2 +-----BEGIN CERTIFICATE----- +MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMC +VVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5u +ZXQvQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMc +KGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UEAxMxRW50cnVzdC5u +ZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05OTA1 +MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIGA1UE +ChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5j +b3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF +bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUg +U2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUA +A4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQaO2f55M28Qpku0f1BBc/ +I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5gXpa0zf3 +wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OC +AdcwggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHb +oIHYpIHVMIHSMQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5 +BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1p +dHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1pdGVk +MTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRp +b24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu +dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0 +MFqBDzIwMTkwNTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8Bdi +E1U9s/8KAGv7UISX8+1i0BowHQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAa +MAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EABAwwChsEVjQuMAMCBJAwDQYJKoZI +hvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyNEwr75Ji174z4xRAN +95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9n9cd +2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI= +-----END CERTIFICATE----- +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 0a:5f:11:4d:03:5b:17:91:17:d2:ef:d4:03:8c:3f:3b + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert High Assurance EV Root CA + Validity + Not Before: Apr 2 12:00:00 2008 GMT + Not After : Apr 3 00:00:00 2022 GMT + Subject: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert High Assurance CA-3 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + RSA Public Key: (2048 bit) + Modulus (2048 bit): + 00:bf:61:0a:29:10:1f:5e:fe:34:37:51:08:f8:1e: + fb:22:ed:61:be:0b:0d:70:4c:50:63:26:75:15:b9: + 41:88:97:b6:f0:a0:15:bb:08:60:e0:42:e8:05:29: + 10:87:36:8a:28:65:a8:ef:31:07:74:6d:36:97:2f: + 28:46:66:04:c7:2a:79:26:7a:99:d5:8e:c3:6d:4f: + a0:5e:ad:bc:3d:91:c2:59:7b:5e:36:6c:c0:53:cf: + 00:08:32:3e:10:64:58:10:13:69:c7:0c:ee:9c:42: + 51:00:f9:05:44:ee:24:ce:7a:1f:ed:8c:11:bd:12: + a8:f3:15:f4:1c:7a:31:69:01:1b:a7:e6:5d:c0:9a: + 6c:7e:09:9e:e7:52:44:4a:10:3a:23:e4:9b:b6:03: + af:a8:9c:b4:5b:9f:d4:4b:ad:92:8c:ce:b5:11:2a: + aa:37:18:8d:b4:c2:b8:d8:5c:06:8c:f8:ff:23:bd: + 35:5e:d4:7c:3e:7e:83:0e:91:96:05:98:c3:b2:1f: + e3:c8:65:eb:a9:7b:5d:a0:2c:cc:fc:3c:d9:6d:ed: + cc:fa:4b:43:8c:c9:d4:b8:a5:61:1c:b2:40:b6:28: + 12:df:b9:f8:5f:fe:d3:b2:c9:ef:3d:b4:1e:4b:7c: + 1c:4c:99:36:9e:3d:eb:ec:a7:68:5e:1d:df:67:6e: + 5e:fb + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Key Usage: critical + Digital Signature, Certificate Sign, CRL Sign + X509v3 Certificate Policies: + Policy: 2.16.840.1.114412.1.3.0.2 + CPS: http://www.digicert.com/ssl-cps-repository.htm + User Notice: + Explicit Text: + + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + Authority Information Access: + OCSP - URI:http://ocsp.digicert.com + + X509v3 CRL Distribution Points: + URI:http://crl3.digicert.com/DigiCertHighAssuranceEVRootCA.crl + URI:http://crl4.digicert.com/DigiCertHighAssuranceEVRootCA.crl + + X509v3 Authority Key Identifier: + keyid:B1:3E:C3:69:03:F8:BF:47:01:D4:98:26:1A:08:02:EF:63:64:2B:C3 + + X509v3 Subject Key Identifier: + 50:EA:73:89:DB:29:FB:10:8F:9E:E5:01:20:D4:DE:79:99:48:83:F7 + Signature Algorithm: sha1WithRSAEncryption + 1e:e2:a5:48:9e:6c:db:53:38:0f:ef:a6:1a:2a:ac:e2:03:43: + ed:9a:bc:3e:8e:75:1b:f0:fd:2e:22:59:ac:13:c0:61:e2:e7: + fa:e9:99:cd:87:09:75:54:28:bf:46:60:dc:be:51:2c:92:f3: + 1b:91:7c:31:08:70:e2:37:b9:c1:5b:a8:bd:a3:0b:00:fb:1a: + 15:fd:03:ad:58:6a:c5:c7:24:99:48:47:46:31:1e:92:ef:b4: + 5f:4e:34:c7:90:bf:31:c1:f8:b1:84:86:d0:9c:01:aa:df:8a: + 56:06:ce:3a:e9:0e:ae:97:74:5d:d7:71:9a:42:74:5f:de:8d: + 43:7c:de:e9:55:ed:69:00:cb:05:e0:7a:61:61:33:d1:19:4d: + f9:08:ee:a0:39:c5:25:35:b7:2b:c4:0f:b2:dd:f1:a5:b7:0e: + 24:c4:26:28:8d:79:77:f5:2f:f0:57:ba:7c:07:d4:e1:fc:cd: + 5a:30:57:7e:86:10:47:dd:31:1f:d7:fc:a2:c2:bf:30:7c:5d: + 24:aa:e8:f9:ae:5f:6a:74:c2:ce:6b:b3:46:d8:21:be:29:d4: + 8e:5e:15:d6:42:4a:e7:32:6f:a4:b1:6b:51:83:58:be:3f:6d: + c7:fb:da:03:21:cb:6a:16:19:4e:0a:f0:ad:84:ca:5d:94:b3: + 5a:76:f7:61 +-----BEGIN CERTIFICATE----- +MIIGWDCCBUCgAwIBAgIQCl8RTQNbF5EX0u/UA4w/OzANBgkqhkiG9w0BAQUFADBs +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j +ZSBFViBSb290IENBMB4XDTA4MDQwMjEyMDAwMFoXDTIyMDQwMzAwMDAwMFowZjEL +MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3 +LmRpZ2ljZXJ0LmNvbTElMCMGA1UEAxMcRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug +Q0EtMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL9hCikQH17+NDdR +CPge+yLtYb4LDXBMUGMmdRW5QYiXtvCgFbsIYOBC6AUpEIc2iihlqO8xB3RtNpcv +KEZmBMcqeSZ6mdWOw21PoF6tvD2Rwll7XjZswFPPAAgyPhBkWBATaccM7pxCUQD5 +BUTuJM56H+2MEb0SqPMV9Bx6MWkBG6fmXcCabH4JnudSREoQOiPkm7YDr6ictFuf +1EutkozOtREqqjcYjbTCuNhcBoz4/yO9NV7UfD5+gw6RlgWYw7If48hl66l7XaAs +zPw82W3tzPpLQ4zJ1LilYRyyQLYoEt+5+F/+07LJ7z20Hkt8HEyZNp496+ynaF4d +32duXvsCAwEAAaOCAvowggL2MA4GA1UdDwEB/wQEAwIBhjCCAcYGA1UdIASCAb0w +ggG5MIIBtQYLYIZIAYb9bAEDAAIwggGkMDoGCCsGAQUFBwIBFi5odHRwOi8vd3d3 +LmRpZ2ljZXJ0LmNvbS9zc2wtY3BzLXJlcG9zaXRvcnkuaHRtMIIBZAYIKwYBBQUH +AgIwggFWHoIBUgBBAG4AeQAgAHUAcwBlACAAbwBmACAAdABoAGkAcwAgAEMAZQBy +AHQAaQBmAGkAYwBhAHQAZQAgAGMAbwBuAHMAdABpAHQAdQB0AGUAcwAgAGEAYwBj +AGUAcAB0AGEAbgBjAGUAIABvAGYAIAB0AGgAZQAgAEQAaQBnAGkAQwBlAHIAdAAg +AEMAUAAvAEMAUABTACAAYQBuAGQAIAB0AGgAZQAgAFIAZQBsAHkAaQBuAGcAIABQ +AGEAcgB0AHkAIABBAGcAcgBlAGUAbQBlAG4AdAAgAHcAaABpAGMAaAAgAGwAaQBt +AGkAdAAgAGwAaQBhAGIAaQBsAGkAdAB5ACAAYQBuAGQAIABhAHIAZQAgAGkAbgBj +AG8AcgBwAG8AcgBhAHQAZQBkACAAaABlAHIAZQBpAG4AIABiAHkAIAByAGUAZgBl +AHIAZQBuAGMAZQAuMBIGA1UdEwEB/wQIMAYBAf8CAQAwNAYIKwYBBQUHAQEEKDAm +MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wgY8GA1UdHwSB +hzCBhDBAoD6gPIY6aHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0SGln +aEFzc3VyYW5jZUVWUm9vdENBLmNybDBAoD6gPIY6aHR0cDovL2NybDQuZGlnaWNl +cnQuY29tL0RpZ2lDZXJ0SGlnaEFzc3VyYW5jZUVWUm9vdENBLmNybDAfBgNVHSME +GDAWgBSxPsNpA/i/RwHUmCYaCALvY2QrwzAdBgNVHQ4EFgQUUOpzidsp+xCPnuUB +INTeeZlIg/cwDQYJKoZIhvcNAQEFBQADggEBAB7ipUiebNtTOA/vphoqrOIDQ+2a +vD6OdRvw/S4iWawTwGHi5/rpmc2HCXVUKL9GYNy+USyS8xuRfDEIcOI3ucFbqL2j +CwD7GhX9A61YasXHJJlIR0YxHpLvtF9ONMeQvzHB+LGEhtCcAarfilYGzjrpDq6X +dF3XcZpCdF/ejUN83ulV7WkAywXgemFhM9EZTfkI7qA5xSU1tyvED7Ld8aW3DiTE +JiiNeXf1L/BXunwH1OH8zVowV36GEEfdMR/X/KLCvzB8XSSq6PmuX2p0ws5rs0bY +Ib4p1I5eFdZCSucyb6Sxa1GDWL4/bcf72gMhy2oWGU4K8K2Eyl2Us1p292E= +-----END CERTIFICATE----- +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 1116160165 (0x428740a5) + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=US, O=Entrust.net, OU=www.entrust.net/CPS incorp. by ref. (limits liab.), OU=(c) 1999 Entrust.net Limited, CN=Entrust.net Secure Server Certification Authority + Validity + Not Before: Oct 1 05:00:00 2006 GMT + Not After : Jul 26 18:15:15 2014 GMT + Subject: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert High Assurance EV Root CA + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + RSA Public Key: (2048 bit) + Modulus (2048 bit): + 00:c6:cc:e5:73:e6:fb:d4:bb:e5:2d:2d:32:a6:df: + e5:81:3f:c9:cd:25:49:b6:71:2a:c3:d5:94:34:67: + a2:0a:1c:b0:5f:69:a6:40:b1:c4:b7:b2:8f:d0:98: + a4:a9:41:59:3a:d3:dc:94:d6:3c:db:74:38:a4:4a: + cc:4d:25:82:f7:4a:a5:53:12:38:ee:f3:49:6d:71: + 91:7e:63:b6:ab:a6:5f:c3:a4:84:f8:4f:62:51:be: + f8:c5:ec:db:38:92:e3:06:e5:08:91:0c:c4:28:41: + 55:fb:cb:5a:89:15:7e:71:e8:35:bf:4d:72:09:3d: + be:3a:38:50:5b:77:31:1b:8d:b3:c7:24:45:9a:a7: + ac:6d:00:14:5a:04:b7:ba:13:eb:51:0a:98:41:41: + 22:4e:65:61:87:81:41:50:a6:79:5c:89:de:19:4a: + 57:d5:2e:e6:5d:1c:53:2c:7e:98:cd:1a:06:16:a4: + 68:73:d0:34:04:13:5c:a1:71:d3:5a:7c:55:db:5e: + 64:e1:37:87:30:56:04:e5:11:b4:29:80:12:f1:79: + 39:88:a2:02:11:7c:27:66:b7:88:b7:78:f2:ca:0a: + a8:38:ab:0a:64:c2:bf:66:5d:95:84:c1:a1:25:1e: + 87:5d:1a:50:0b:20:12:cc:41:bb:6e:0b:51:38:b8: + 4b:cb + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:1 + X509v3 Extended Key Usage: + TLS Web Server Authentication, TLS Web Client Authentication, E-mail Protection + Authority Information Access: + OCSP - URI:http://ocsp.entrust.net + + X509v3 CRL Distribution Points: + URI:http://crl.entrust.net/server1.crl + + X509v3 Subject Key Identifier: + B1:3E:C3:69:03:F8:BF:47:01:D4:98:26:1A:08:02:EF:63:64:2B:C3 + X509v3 Key Usage: + Certificate Sign, CRL Sign + X509v3 Authority Key Identifier: + keyid:F0:17:62:13:55:3D:B3:FF:0A:00:6B:FB:50:84:97:F3:ED:62:D0:1A + + 1.2.840.113533.7.65.0: + 0 +..V7.1.... + Signature Algorithm: sha1WithRSAEncryption + 48:0e:2b:6f:20:62:4c:28:93:a3:24:3d:58:ab:21:cf:80:f8: + 9a:97:90:6a:22:ed:5a:7c:47:36:99:e7:79:84:75:ab:24:8f: + 92:0a:d5:61:04:ae:c3:6a:5c:b2:cc:d9:e4:44:87:6f:db:8f: + 38:62:f7:44:36:9d:ba:bc:6e:07:c4:d4:8d:e8:1f:d1:0b:60: + a3:b5:9c:ce:63:be:ed:67:dc:f8:ba:de:6e:c9:25:cb:5b:b5: + 9d:76:70:0b:df:42:72:f8:4f:41:11:64:a5:d2:ea:fc:d5:af: + 11:f4:15:38:67:9c:20:a8:4b:77:5a:91:32:42:32:e7:85:b3: + df:36 +-----BEGIN CERTIFICATE----- +MIIEQjCCA6ugAwIBAgIEQodApTANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMC +VVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5u +ZXQvQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMc +KGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UEAxMxRW50cnVzdC5u +ZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEw +MDEwNTAwMDBaFw0xNDA3MjYxODE1MTVaMGwxCzAJBgNVBAYTAlVTMRUwEwYDVQQK +EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xKzApBgNV +BAMTIkRpZ2lDZXJ0IEhpZ2ggQXNzdXJhbmNlIEVWIFJvb3QgQ0EwggEiMA0GCSqG +SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGzOVz5vvUu+UtLTKm3+WBP8nNJUm2cSrD +1ZQ0Z6IKHLBfaaZAscS3so/QmKSpQVk609yU1jzbdDikSsxNJYL3SqVTEjju80lt +cZF+Y7arpl/DpIT4T2JRvvjF7Ns4kuMG5QiRDMQoQVX7y1qJFX5x6DW/TXIJPb46 +OFBbdzEbjbPHJEWap6xtABRaBLe6E+tRCphBQSJOZWGHgUFQpnlcid4ZSlfVLuZd +HFMsfpjNGgYWpGhz0DQEE1yhcdNafFXbXmThN4cwVgTlEbQpgBLxeTmIogIRfCdm +t4i3ePLKCqg4qwpkwr9mXZWEwaElHoddGlALIBLMQbtuC1E4uEvLAgMBAAGjggET +MIIBDzASBgNVHRMBAf8ECDAGAQH/AgEBMCcGA1UdJQQgMB4GCCsGAQUFBwMBBggr +BgEFBQcDAgYIKwYBBQUHAwQwMwYIKwYBBQUHAQEEJzAlMCMGCCsGAQUFBzABhhdo +dHRwOi8vb2NzcC5lbnRydXN0Lm5ldDAzBgNVHR8ELDAqMCigJqAkhiJodHRwOi8v +Y3JsLmVudHJ1c3QubmV0L3NlcnZlcjEuY3JsMB0GA1UdDgQWBBSxPsNpA/i/RwHU +mCYaCALvY2QrwzALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8BdiE1U9s/8KAGv7 +UISX8+1i0BowGQYJKoZIhvZ9B0EABAwwChsEVjcuMQMCAIEwDQYJKoZIhvcNAQEF +BQADgYEASA4rbyBiTCiToyQ9WKshz4D4mpeQaiLtWnxHNpnneYR1qySPkgrVYQSu +w2pcsszZ5ESHb9uPOGL3RDadurxuB8TUjegf0Qtgo7WczmO+7Wfc+Lrebskly1u1 +nXZwC99CcvhPQRFkpdLq/NWvEfQVOGecIKhLd1qRMkIy54Wz3zY= +-----END CERTIFICATE----- +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 0a:5f:11:4d:03:5b:17:91:17:d2:ef:d4:03:8c:3f:3b + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert High Assurance EV Root CA + Validity + Not Before: Apr 2 12:00:00 2008 GMT + Not After : Apr 3 00:00:00 2022 GMT + Subject: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert High Assurance CA-3 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:bf:61:0a:29:10:1f:5e:fe:34:37:51:08:f8:1e: + fb:22:ed:61:be:0b:0d:70:4c:50:63:26:75:15:b9: + 41:88:97:b6:f0:a0:15:bb:08:60:e0:42:e8:05:29: + 10:87:36:8a:28:65:a8:ef:31:07:74:6d:36:97:2f: + 28:46:66:04:c7:2a:79:26:7a:99:d5:8e:c3:6d:4f: + a0:5e:ad:bc:3d:91:c2:59:7b:5e:36:6c:c0:53:cf: + 00:08:32:3e:10:64:58:10:13:69:c7:0c:ee:9c:42: + 51:00:f9:05:44:ee:24:ce:7a:1f:ed:8c:11:bd:12: + a8:f3:15:f4:1c:7a:31:69:01:1b:a7:e6:5d:c0:9a: + 6c:7e:09:9e:e7:52:44:4a:10:3a:23:e4:9b:b6:03: + af:a8:9c:b4:5b:9f:d4:4b:ad:92:8c:ce:b5:11:2a: + aa:37:18:8d:b4:c2:b8:d8:5c:06:8c:f8:ff:23:bd: + 35:5e:d4:7c:3e:7e:83:0e:91:96:05:98:c3:b2:1f: + e3:c8:65:eb:a9:7b:5d:a0:2c:cc:fc:3c:d9:6d:ed: + cc:fa:4b:43:8c:c9:d4:b8:a5:61:1c:b2:40:b6:28: + 12:df:b9:f8:5f:fe:d3:b2:c9:ef:3d:b4:1e:4b:7c: + 1c:4c:99:36:9e:3d:eb:ec:a7:68:5e:1d:df:67:6e: + 5e:fb + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Key Usage: critical + Digital Signature, Certificate Sign, CRL Sign + X509v3 Certificate Policies: + Policy: 2.16.840.1.114412.1.3.0.2 + CPS: http://www.digicert.com/ssl-cps-repository.htm + User Notice: + Explicit Text: + + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + Authority Information Access: + OCSP - URI:http://ocsp.digicert.com + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl3.digicert.com/DigiCertHighAssuranceEVRootCA.crl + + Full Name: + URI:http://crl4.digicert.com/DigiCertHighAssuranceEVRootCA.crl + + X509v3 Authority Key Identifier: + keyid:B1:3E:C3:69:03:F8:BF:47:01:D4:98:26:1A:08:02:EF:63:64:2B:C3 + + X509v3 Subject Key Identifier: + 50:EA:73:89:DB:29:FB:10:8F:9E:E5:01:20:D4:DE:79:99:48:83:F7 + Signature Algorithm: sha1WithRSAEncryption + 1e:e2:a5:48:9e:6c:db:53:38:0f:ef:a6:1a:2a:ac:e2:03:43: + ed:9a:bc:3e:8e:75:1b:f0:fd:2e:22:59:ac:13:c0:61:e2:e7: + fa:e9:99:cd:87:09:75:54:28:bf:46:60:dc:be:51:2c:92:f3: + 1b:91:7c:31:08:70:e2:37:b9:c1:5b:a8:bd:a3:0b:00:fb:1a: + 15:fd:03:ad:58:6a:c5:c7:24:99:48:47:46:31:1e:92:ef:b4: + 5f:4e:34:c7:90:bf:31:c1:f8:b1:84:86:d0:9c:01:aa:df:8a: + 56:06:ce:3a:e9:0e:ae:97:74:5d:d7:71:9a:42:74:5f:de:8d: + 43:7c:de:e9:55:ed:69:00:cb:05:e0:7a:61:61:33:d1:19:4d: + f9:08:ee:a0:39:c5:25:35:b7:2b:c4:0f:b2:dd:f1:a5:b7:0e: + 24:c4:26:28:8d:79:77:f5:2f:f0:57:ba:7c:07:d4:e1:fc:cd: + 5a:30:57:7e:86:10:47:dd:31:1f:d7:fc:a2:c2:bf:30:7c:5d: + 24:aa:e8:f9:ae:5f:6a:74:c2:ce:6b:b3:46:d8:21:be:29:d4: + 8e:5e:15:d6:42:4a:e7:32:6f:a4:b1:6b:51:83:58:be:3f:6d: + c7:fb:da:03:21:cb:6a:16:19:4e:0a:f0:ad:84:ca:5d:94:b3: + 5a:76:f7:61 +-----BEGIN CERTIFICATE----- +MIIGWDCCBUCgAwIBAgIQCl8RTQNbF5EX0u/UA4w/OzANBgkqhkiG9w0BAQUFADBs +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j +ZSBFViBSb290IENBMB4XDTA4MDQwMjEyMDAwMFoXDTIyMDQwMzAwMDAwMFowZjEL +MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3 +LmRpZ2ljZXJ0LmNvbTElMCMGA1UEAxMcRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug +Q0EtMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL9hCikQH17+NDdR +CPge+yLtYb4LDXBMUGMmdRW5QYiXtvCgFbsIYOBC6AUpEIc2iihlqO8xB3RtNpcv +KEZmBMcqeSZ6mdWOw21PoF6tvD2Rwll7XjZswFPPAAgyPhBkWBATaccM7pxCUQD5 +BUTuJM56H+2MEb0SqPMV9Bx6MWkBG6fmXcCabH4JnudSREoQOiPkm7YDr6ictFuf +1EutkozOtREqqjcYjbTCuNhcBoz4/yO9NV7UfD5+gw6RlgWYw7If48hl66l7XaAs +zPw82W3tzPpLQ4zJ1LilYRyyQLYoEt+5+F/+07LJ7z20Hkt8HEyZNp496+ynaF4d +32duXvsCAwEAAaOCAvowggL2MA4GA1UdDwEB/wQEAwIBhjCCAcYGA1UdIASCAb0w +ggG5MIIBtQYLYIZIAYb9bAEDAAIwggGkMDoGCCsGAQUFBwIBFi5odHRwOi8vd3d3 +LmRpZ2ljZXJ0LmNvbS9zc2wtY3BzLXJlcG9zaXRvcnkuaHRtMIIBZAYIKwYBBQUH +AgIwggFWHoIBUgBBAG4AeQAgAHUAcwBlACAAbwBmACAAdABoAGkAcwAgAEMAZQBy +AHQAaQBmAGkAYwBhAHQAZQAgAGMAbwBuAHMAdABpAHQAdQB0AGUAcwAgAGEAYwBj +AGUAcAB0AGEAbgBjAGUAIABvAGYAIAB0AGgAZQAgAEQAaQBnAGkAQwBlAHIAdAAg +AEMAUAAvAEMAUABTACAAYQBuAGQAIAB0AGgAZQAgAFIAZQBsAHkAaQBuAGcAIABQ +AGEAcgB0AHkAIABBAGcAcgBlAGUAbQBlAG4AdAAgAHcAaABpAGMAaAAgAGwAaQBt +AGkAdAAgAGwAaQBhAGIAaQBsAGkAdAB5ACAAYQBuAGQAIABhAHIAZQAgAGkAbgBj +AG8AcgBwAG8AcgBhAHQAZQBkACAAaABlAHIAZQBpAG4AIABiAHkAIAByAGUAZgBl +AHIAZQBuAGMAZQAuMBIGA1UdEwEB/wQIMAYBAf8CAQAwNAYIKwYBBQUHAQEEKDAm +MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wgY8GA1UdHwSB +hzCBhDBAoD6gPIY6aHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0SGln +aEFzc3VyYW5jZUVWUm9vdENBLmNybDBAoD6gPIY6aHR0cDovL2NybDQuZGlnaWNl +cnQuY29tL0RpZ2lDZXJ0SGlnaEFzc3VyYW5jZUVWUm9vdENBLmNybDAfBgNVHSME +GDAWgBSxPsNpA/i/RwHUmCYaCALvY2QrwzAdBgNVHQ4EFgQUUOpzidsp+xCPnuUB +INTeeZlIg/cwDQYJKoZIhvcNAQEFBQADggEBAB7ipUiebNtTOA/vphoqrOIDQ+2a +vD6OdRvw/S4iWawTwGHi5/rpmc2HCXVUKL9GYNy+USyS8xuRfDEIcOI3ucFbqL2j +CwD7GhX9A61YasXHJJlIR0YxHpLvtF9ONMeQvzHB+LGEhtCcAarfilYGzjrpDq6X +dF3XcZpCdF/ejUN83ulV7WkAywXgemFhM9EZTfkI7qA5xSU1tyvED7Ld8aW3DiTE +JiiNeXf1L/BXunwH1OH8zVowV36GEEfdMR/X/KLCvzB8XSSq6PmuX2p0ws5rs0bY +Ib4p1I5eFdZCSucyb6Sxa1GDWL4/bcf72gMhy2oWGU4K8K2Eyl2Us1p292E= +-----END CERTIFICATE----- \ No newline at end of file diff --git a/Package Control/certs/d867a7b2aecc46f9c31afc4f2f50de05 b/Package Control/certs/d867a7b2aecc46f9c31afc4f2f50de05 new file mode 100644 index 0000000..4ebe436 --- /dev/null +++ b/Package Control/certs/d867a7b2aecc46f9c31afc4f2f50de05 @@ -0,0 +1,197 @@ +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 0a:5f:11:4d:03:5b:17:91:17:d2:ef:d4:03:8c:3f:3b + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert High Assurance EV Root CA + Validity + Not Before: Apr 2 12:00:00 2008 GMT + Not After : Apr 3 00:00:00 2022 GMT + Subject: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert High Assurance CA-3 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + RSA Public Key: (2048 bit) + Modulus (2048 bit): + 00:bf:61:0a:29:10:1f:5e:fe:34:37:51:08:f8:1e: + fb:22:ed:61:be:0b:0d:70:4c:50:63:26:75:15:b9: + 41:88:97:b6:f0:a0:15:bb:08:60:e0:42:e8:05:29: + 10:87:36:8a:28:65:a8:ef:31:07:74:6d:36:97:2f: + 28:46:66:04:c7:2a:79:26:7a:99:d5:8e:c3:6d:4f: + a0:5e:ad:bc:3d:91:c2:59:7b:5e:36:6c:c0:53:cf: + 00:08:32:3e:10:64:58:10:13:69:c7:0c:ee:9c:42: + 51:00:f9:05:44:ee:24:ce:7a:1f:ed:8c:11:bd:12: + a8:f3:15:f4:1c:7a:31:69:01:1b:a7:e6:5d:c0:9a: + 6c:7e:09:9e:e7:52:44:4a:10:3a:23:e4:9b:b6:03: + af:a8:9c:b4:5b:9f:d4:4b:ad:92:8c:ce:b5:11:2a: + aa:37:18:8d:b4:c2:b8:d8:5c:06:8c:f8:ff:23:bd: + 35:5e:d4:7c:3e:7e:83:0e:91:96:05:98:c3:b2:1f: + e3:c8:65:eb:a9:7b:5d:a0:2c:cc:fc:3c:d9:6d:ed: + cc:fa:4b:43:8c:c9:d4:b8:a5:61:1c:b2:40:b6:28: + 12:df:b9:f8:5f:fe:d3:b2:c9:ef:3d:b4:1e:4b:7c: + 1c:4c:99:36:9e:3d:eb:ec:a7:68:5e:1d:df:67:6e: + 5e:fb + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Key Usage: critical + Digital Signature, Certificate Sign, CRL Sign + X509v3 Certificate Policies: + Policy: 2.16.840.1.114412.1.3.0.2 + CPS: http://www.digicert.com/ssl-cps-repository.htm + User Notice: + Explicit Text: + + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + Authority Information Access: + OCSP - URI:http://ocsp.digicert.com + + X509v3 CRL Distribution Points: + URI:http://crl3.digicert.com/DigiCertHighAssuranceEVRootCA.crl + URI:http://crl4.digicert.com/DigiCertHighAssuranceEVRootCA.crl + + X509v3 Authority Key Identifier: + keyid:B1:3E:C3:69:03:F8:BF:47:01:D4:98:26:1A:08:02:EF:63:64:2B:C3 + + X509v3 Subject Key Identifier: + 50:EA:73:89:DB:29:FB:10:8F:9E:E5:01:20:D4:DE:79:99:48:83:F7 + Signature Algorithm: sha1WithRSAEncryption + 1e:e2:a5:48:9e:6c:db:53:38:0f:ef:a6:1a:2a:ac:e2:03:43: + ed:9a:bc:3e:8e:75:1b:f0:fd:2e:22:59:ac:13:c0:61:e2:e7: + fa:e9:99:cd:87:09:75:54:28:bf:46:60:dc:be:51:2c:92:f3: + 1b:91:7c:31:08:70:e2:37:b9:c1:5b:a8:bd:a3:0b:00:fb:1a: + 15:fd:03:ad:58:6a:c5:c7:24:99:48:47:46:31:1e:92:ef:b4: + 5f:4e:34:c7:90:bf:31:c1:f8:b1:84:86:d0:9c:01:aa:df:8a: + 56:06:ce:3a:e9:0e:ae:97:74:5d:d7:71:9a:42:74:5f:de:8d: + 43:7c:de:e9:55:ed:69:00:cb:05:e0:7a:61:61:33:d1:19:4d: + f9:08:ee:a0:39:c5:25:35:b7:2b:c4:0f:b2:dd:f1:a5:b7:0e: + 24:c4:26:28:8d:79:77:f5:2f:f0:57:ba:7c:07:d4:e1:fc:cd: + 5a:30:57:7e:86:10:47:dd:31:1f:d7:fc:a2:c2:bf:30:7c:5d: + 24:aa:e8:f9:ae:5f:6a:74:c2:ce:6b:b3:46:d8:21:be:29:d4: + 8e:5e:15:d6:42:4a:e7:32:6f:a4:b1:6b:51:83:58:be:3f:6d: + c7:fb:da:03:21:cb:6a:16:19:4e:0a:f0:ad:84:ca:5d:94:b3: + 5a:76:f7:61 +-----BEGIN CERTIFICATE----- +MIIGWDCCBUCgAwIBAgIQCl8RTQNbF5EX0u/UA4w/OzANBgkqhkiG9w0BAQUFADBs +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j +ZSBFViBSb290IENBMB4XDTA4MDQwMjEyMDAwMFoXDTIyMDQwMzAwMDAwMFowZjEL +MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3 +LmRpZ2ljZXJ0LmNvbTElMCMGA1UEAxMcRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug +Q0EtMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL9hCikQH17+NDdR +CPge+yLtYb4LDXBMUGMmdRW5QYiXtvCgFbsIYOBC6AUpEIc2iihlqO8xB3RtNpcv +KEZmBMcqeSZ6mdWOw21PoF6tvD2Rwll7XjZswFPPAAgyPhBkWBATaccM7pxCUQD5 +BUTuJM56H+2MEb0SqPMV9Bx6MWkBG6fmXcCabH4JnudSREoQOiPkm7YDr6ictFuf +1EutkozOtREqqjcYjbTCuNhcBoz4/yO9NV7UfD5+gw6RlgWYw7If48hl66l7XaAs +zPw82W3tzPpLQ4zJ1LilYRyyQLYoEt+5+F/+07LJ7z20Hkt8HEyZNp496+ynaF4d +32duXvsCAwEAAaOCAvowggL2MA4GA1UdDwEB/wQEAwIBhjCCAcYGA1UdIASCAb0w +ggG5MIIBtQYLYIZIAYb9bAEDAAIwggGkMDoGCCsGAQUFBwIBFi5odHRwOi8vd3d3 +LmRpZ2ljZXJ0LmNvbS9zc2wtY3BzLXJlcG9zaXRvcnkuaHRtMIIBZAYIKwYBBQUH +AgIwggFWHoIBUgBBAG4AeQAgAHUAcwBlACAAbwBmACAAdABoAGkAcwAgAEMAZQBy +AHQAaQBmAGkAYwBhAHQAZQAgAGMAbwBuAHMAdABpAHQAdQB0AGUAcwAgAGEAYwBj +AGUAcAB0AGEAbgBjAGUAIABvAGYAIAB0AGgAZQAgAEQAaQBnAGkAQwBlAHIAdAAg +AEMAUAAvAEMAUABTACAAYQBuAGQAIAB0AGgAZQAgAFIAZQBsAHkAaQBuAGcAIABQ +AGEAcgB0AHkAIABBAGcAcgBlAGUAbQBlAG4AdAAgAHcAaABpAGMAaAAgAGwAaQBt +AGkAdAAgAGwAaQBhAGIAaQBsAGkAdAB5ACAAYQBuAGQAIABhAHIAZQAgAGkAbgBj +AG8AcgBwAG8AcgBhAHQAZQBkACAAaABlAHIAZQBpAG4AIABiAHkAIAByAGUAZgBl +AHIAZQBuAGMAZQAuMBIGA1UdEwEB/wQIMAYBAf8CAQAwNAYIKwYBBQUHAQEEKDAm +MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wgY8GA1UdHwSB +hzCBhDBAoD6gPIY6aHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0SGln +aEFzc3VyYW5jZUVWUm9vdENBLmNybDBAoD6gPIY6aHR0cDovL2NybDQuZGlnaWNl +cnQuY29tL0RpZ2lDZXJ0SGlnaEFzc3VyYW5jZUVWUm9vdENBLmNybDAfBgNVHSME +GDAWgBSxPsNpA/i/RwHUmCYaCALvY2QrwzAdBgNVHQ4EFgQUUOpzidsp+xCPnuUB +INTeeZlIg/cwDQYJKoZIhvcNAQEFBQADggEBAB7ipUiebNtTOA/vphoqrOIDQ+2a +vD6OdRvw/S4iWawTwGHi5/rpmc2HCXVUKL9GYNy+USyS8xuRfDEIcOI3ucFbqL2j +CwD7GhX9A61YasXHJJlIR0YxHpLvtF9ONMeQvzHB+LGEhtCcAarfilYGzjrpDq6X +dF3XcZpCdF/ejUN83ulV7WkAywXgemFhM9EZTfkI7qA5xSU1tyvED7Ld8aW3DiTE +JiiNeXf1L/BXunwH1OH8zVowV36GEEfdMR/X/KLCvzB8XSSq6PmuX2p0ws5rs0bY +Ib4p1I5eFdZCSucyb6Sxa1GDWL4/bcf72gMhy2oWGU4K8K2Eyl2Us1p292E= +-----END CERTIFICATE----- +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 1116160165 (0x428740a5) + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=US, O=Entrust.net, OU=www.entrust.net/CPS incorp. by ref. (limits liab.), OU=(c) 1999 Entrust.net Limited, CN=Entrust.net Secure Server Certification Authority + Validity + Not Before: Oct 1 05:00:00 2006 GMT + Not After : Jul 26 18:15:15 2014 GMT + Subject: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert High Assurance EV Root CA + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + RSA Public Key: (2048 bit) + Modulus (2048 bit): + 00:c6:cc:e5:73:e6:fb:d4:bb:e5:2d:2d:32:a6:df: + e5:81:3f:c9:cd:25:49:b6:71:2a:c3:d5:94:34:67: + a2:0a:1c:b0:5f:69:a6:40:b1:c4:b7:b2:8f:d0:98: + a4:a9:41:59:3a:d3:dc:94:d6:3c:db:74:38:a4:4a: + cc:4d:25:82:f7:4a:a5:53:12:38:ee:f3:49:6d:71: + 91:7e:63:b6:ab:a6:5f:c3:a4:84:f8:4f:62:51:be: + f8:c5:ec:db:38:92:e3:06:e5:08:91:0c:c4:28:41: + 55:fb:cb:5a:89:15:7e:71:e8:35:bf:4d:72:09:3d: + be:3a:38:50:5b:77:31:1b:8d:b3:c7:24:45:9a:a7: + ac:6d:00:14:5a:04:b7:ba:13:eb:51:0a:98:41:41: + 22:4e:65:61:87:81:41:50:a6:79:5c:89:de:19:4a: + 57:d5:2e:e6:5d:1c:53:2c:7e:98:cd:1a:06:16:a4: + 68:73:d0:34:04:13:5c:a1:71:d3:5a:7c:55:db:5e: + 64:e1:37:87:30:56:04:e5:11:b4:29:80:12:f1:79: + 39:88:a2:02:11:7c:27:66:b7:88:b7:78:f2:ca:0a: + a8:38:ab:0a:64:c2:bf:66:5d:95:84:c1:a1:25:1e: + 87:5d:1a:50:0b:20:12:cc:41:bb:6e:0b:51:38:b8: + 4b:cb + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:1 + X509v3 Extended Key Usage: + TLS Web Server Authentication, TLS Web Client Authentication, E-mail Protection + Authority Information Access: + OCSP - URI:http://ocsp.entrust.net + + X509v3 CRL Distribution Points: + URI:http://crl.entrust.net/server1.crl + + X509v3 Subject Key Identifier: + B1:3E:C3:69:03:F8:BF:47:01:D4:98:26:1A:08:02:EF:63:64:2B:C3 + X509v3 Key Usage: + Certificate Sign, CRL Sign + X509v3 Authority Key Identifier: + keyid:F0:17:62:13:55:3D:B3:FF:0A:00:6B:FB:50:84:97:F3:ED:62:D0:1A + + 1.2.840.113533.7.65.0: + 0 +..V7.1.... + Signature Algorithm: sha1WithRSAEncryption + 48:0e:2b:6f:20:62:4c:28:93:a3:24:3d:58:ab:21:cf:80:f8: + 9a:97:90:6a:22:ed:5a:7c:47:36:99:e7:79:84:75:ab:24:8f: + 92:0a:d5:61:04:ae:c3:6a:5c:b2:cc:d9:e4:44:87:6f:db:8f: + 38:62:f7:44:36:9d:ba:bc:6e:07:c4:d4:8d:e8:1f:d1:0b:60: + a3:b5:9c:ce:63:be:ed:67:dc:f8:ba:de:6e:c9:25:cb:5b:b5: + 9d:76:70:0b:df:42:72:f8:4f:41:11:64:a5:d2:ea:fc:d5:af: + 11:f4:15:38:67:9c:20:a8:4b:77:5a:91:32:42:32:e7:85:b3: + df:36 +-----BEGIN CERTIFICATE----- +MIIEQjCCA6ugAwIBAgIEQodApTANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMC +VVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5u +ZXQvQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMc +KGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UEAxMxRW50cnVzdC5u +ZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEw +MDEwNTAwMDBaFw0xNDA3MjYxODE1MTVaMGwxCzAJBgNVBAYTAlVTMRUwEwYDVQQK +EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xKzApBgNV +BAMTIkRpZ2lDZXJ0IEhpZ2ggQXNzdXJhbmNlIEVWIFJvb3QgQ0EwggEiMA0GCSqG +SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGzOVz5vvUu+UtLTKm3+WBP8nNJUm2cSrD +1ZQ0Z6IKHLBfaaZAscS3so/QmKSpQVk609yU1jzbdDikSsxNJYL3SqVTEjju80lt +cZF+Y7arpl/DpIT4T2JRvvjF7Ns4kuMG5QiRDMQoQVX7y1qJFX5x6DW/TXIJPb46 +OFBbdzEbjbPHJEWap6xtABRaBLe6E+tRCphBQSJOZWGHgUFQpnlcid4ZSlfVLuZd +HFMsfpjNGgYWpGhz0DQEE1yhcdNafFXbXmThN4cwVgTlEbQpgBLxeTmIogIRfCdm +t4i3ePLKCqg4qwpkwr9mXZWEwaElHoddGlALIBLMQbtuC1E4uEvLAgMBAAGjggET +MIIBDzASBgNVHRMBAf8ECDAGAQH/AgEBMCcGA1UdJQQgMB4GCCsGAQUFBwMBBggr +BgEFBQcDAgYIKwYBBQUHAwQwMwYIKwYBBQUHAQEEJzAlMCMGCCsGAQUFBzABhhdo +dHRwOi8vb2NzcC5lbnRydXN0Lm5ldDAzBgNVHR8ELDAqMCigJqAkhiJodHRwOi8v +Y3JsLmVudHJ1c3QubmV0L3NlcnZlcjEuY3JsMB0GA1UdDgQWBBSxPsNpA/i/RwHU +mCYaCALvY2QrwzALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8BdiE1U9s/8KAGv7 +UISX8+1i0BowGQYJKoZIhvZ9B0EABAwwChsEVjcuMQMCAIEwDQYJKoZIhvcNAQEF +BQADgYEASA4rbyBiTCiToyQ9WKshz4D4mpeQaiLtWnxHNpnneYR1qySPkgrVYQSu +w2pcsszZ5ESHb9uPOGL3RDadurxuB8TUjegf0Qtgo7WczmO+7Wfc+Lrebskly1u1 +nXZwC99CcvhPQRFkpdLq/NWvEfQVOGecIKhLd1qRMkIy54Wz3zY= +-----END CERTIFICATE----- \ No newline at end of file diff --git a/Package Control/example-messages.json b/Package Control/example-messages.json new file mode 100644 index 0000000..09c7626 --- /dev/null +++ b/Package Control/example-messages.json @@ -0,0 +1,5 @@ +{ + "install": "messages/install.txt", + "1.1.1": "messages/1.1.1.txt", + "1.2.0": "messages/1.2.0.txt" +} \ No newline at end of file diff --git a/Package Control/example-packages.json b/Package Control/example-packages.json new file mode 100644 index 0000000..96945cc --- /dev/null +++ b/Package Control/example-packages.json @@ -0,0 +1,54 @@ +{ + "schema_version": "1.2", + "packages": [ + { + "name": "GitHub Example", + "description": "An example from GitHub, be sure to use the zipball URL", + "author": "John Smith", + "homepage": "http://example.com", + "last_modified": "2011-12-12 05:04:31", + "platforms": { + "*": [ + { + "version": "1.1", + "url": "http://nodeload.github.com/john_smith/github_example/zipball/master" + } + ] + } + }, + { + "name": "BitBucket Example", + "description": "An example from BitBucket, be sure to use the zip URL", + "author": "John Smith", + "homepage": "http://example.com", + "last_modified": "2011-08-12 12:21:09", + "platforms": { + "*": [ + { + "version": "1.0", + "url": "https://bitbucket.org/john_smith/bitbucket_example/get/tip.zip" + } + ] + } + }, + { + "name": "Tortoise", + "description": "Keyboard shortcuts and menu entries to execute TortoiseSVN, TortoiseHg and TortoiseGit commands", + "author": "Will Bond", + "homepage": "http://sublime.wbond.net", + "last_modified": "2011-11-30 22:55:52", + "platforms": { + "windows": [ + { + "version": "1.0", + "url": "http://sublime.wbond.net/Tortoise.sublime-package" + } + ] + } + } + ], + "renamed_packages": { + "sublime-old-package": "NewPackage", + "OldPackage": "NewName" + } +} \ No newline at end of file diff --git a/Package Control/example-repositories.json b/Package Control/example-repositories.json new file mode 100644 index 0000000..9e03b1e --- /dev/null +++ b/Package Control/example-repositories.json @@ -0,0 +1,60 @@ +{ + "schema_version": "1.2", + "repositories": [ + "http://sublime.wbond.net/packages.json", + "https://github.com/buymeasoda/soda-theme", + "https://github.com/SublimeText" + ], + "package_name_map": { + "soda-theme": "Theme - Soda" + }, + "renamed_packages": { + "old-name": "New Name" + }, + "packages": { + "http://sublime.wbond.net/packages.json": [ + { + "name": "GitHub Example", + "description": "An example from GitHub, be sure to use the zipball URL", + "author": "John Smith", + "homepage": "http://example.com", + "platforms": { + "*": [ + { + "version": "1.1", + "url": "http://nodeload.github.com/john_smith/github_example/zipball/master" + } + ] + } + }, + { + "name": "BitBucket Example", + "description": "An example from BitBucket, be sure to use the zip URL", + "author": "John Smith", + "homepage": "http://example.com", + "platforms": { + "*": [ + { + "version": "1.0", + "url": "https://bitbucket.org/john_smith/bitbucket_example/get/tip.zip" + } + ] + } + }, + { + "name": "Tortoise", + "description": "Keyboard shortcuts and menu entries to execute TortoiseSVN, TortoiseHg and TortoiseGit commands", + "author": "Will Bond", + "homepage": "http://sublime.wbond.net", + "platforms": { + "windows": [ + { + "version": "1.0", + "url": "http://sublime.wbond.net/Tortoise.sublime-package" + } + ] + } + } + ] + } +} \ No newline at end of file diff --git a/Package Control/messages.json b/Package Control/messages.json new file mode 100644 index 0000000..e0d969e --- /dev/null +++ b/Package Control/messages.json @@ -0,0 +1,3 @@ +{ + "1.3.0": "messages/1.3.0.txt" +} \ No newline at end of file diff --git a/Package Control/messages/1.3.0.txt b/Package Control/messages/1.3.0.txt new file mode 100644 index 0000000..ebb6d64 --- /dev/null +++ b/Package Control/messages/1.3.0.txt @@ -0,0 +1,16 @@ +Package Control 1.3.0 Changelog: + +Please be sure to restart Sublime Text 2 to start using this new version. + +New Features + - Added tracking of usage (install, upgrade, remove) statistics. Go to + Preferences > Package Settings > Package Control > Settings - User and + set the key "submit_usage" to false. + + - Added local tracking of installed packages in + User/Package Control.sublime-settings via the "installed_packages" key. + This allows distributing a settings file that will automatically install + packages. + + - repositories.json schema version was increased to 1.1 and the + "last_modified" key was added. \ No newline at end of file diff --git a/Package Control/package-metadata.json b/Package Control/package-metadata.json new file mode 100644 index 0000000..c634a81 --- /dev/null +++ b/Package Control/package-metadata.json @@ -0,0 +1 @@ +{"url": "http://wbond.net/sublime_packages/package_control", "version": "1.5.0", "description": "A full-featured package manager"} \ No newline at end of file diff --git a/Package Control/readme.creole b/Package Control/readme.creole new file mode 100644 index 0000000..e128e3d --- /dev/null +++ b/Package Control/readme.creole @@ -0,0 +1,37 @@ += Sublime Package Control + +A Sublime Text 2 (http://www.sublimetext.com/2) package manager for easily +discovering, install, upgrading and removing packages. Also includes an +automatic updater and package creation tool. + +Packages can be installed from GitHub, BitBucket or custom package repositories. +The plugin uses a channel and repository system to allow users to find new +packages over time without any work. It also supports working with packages that +were manually installed. + +Please see http://wbond.net/sublime_packages/package_control for install +instructions, screenshots and documentation. + +== License + +All of Sublime Package Control is licensed under the MIT license. + + Copyright (c) 2011 Will Bond + + 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. \ No newline at end of file diff --git a/Perl/Conditional-if..else-(ife).sublime-snippet b/Perl/Conditional-if..else-(ife).sublime-snippet new file mode 100644 index 0000000..4789241 --- /dev/null +++ b/Perl/Conditional-if..else-(ife).sublime-snippet @@ -0,0 +1,11 @@ + + + ife + source.perl + Conditional if..else + diff --git a/Perl/Conditional-if..elsif..else-(ifee).sublime-snippet b/Perl/Conditional-if..elsif..else-(ifee).sublime-snippet new file mode 100644 index 0000000..2e2f6fa --- /dev/null +++ b/Perl/Conditional-if..elsif..else-(ifee).sublime-snippet @@ -0,0 +1,13 @@ + + + ifee + source.perl + Conditional if..elsif..else + diff --git a/Perl/Conditional-one-line-(unless).sublime-snippet b/Perl/Conditional-one-line-(unless).sublime-snippet new file mode 100644 index 0000000..20a4f05 --- /dev/null +++ b/Perl/Conditional-one-line-(unless).sublime-snippet @@ -0,0 +1,7 @@ + + + xunless + source.perl + Conditional One-line + diff --git a/Perl/Conditional-one-line-(xif).sublime-snippet b/Perl/Conditional-one-line-(xif).sublime-snippet new file mode 100644 index 0000000..6b3ccac --- /dev/null +++ b/Perl/Conditional-one-line-(xif).sublime-snippet @@ -0,0 +1,7 @@ + + + xif + source.perl + Conditional One-line + diff --git a/Perl/Function-(sub).sublime-snippet b/Perl/Function-(sub).sublime-snippet new file mode 100644 index 0000000..a9680d6 --- /dev/null +++ b/Perl/Function-(sub).sublime-snippet @@ -0,0 +1,9 @@ + + + sub + source.perl + Function + diff --git a/Perl/Loop-one-line-(xforeach).sublime-snippet b/Perl/Loop-one-line-(xforeach).sublime-snippet new file mode 100644 index 0000000..8db7895 --- /dev/null +++ b/Perl/Loop-one-line-(xforeach).sublime-snippet @@ -0,0 +1,7 @@ + + + xfore + source.perl + Loop One-line + diff --git a/Perl/Loop-one-line-(xwhile).sublime-snippet b/Perl/Loop-one-line-(xwhile).sublime-snippet new file mode 100644 index 0000000..987a24f --- /dev/null +++ b/Perl/Loop-one-line-(xwhile).sublime-snippet @@ -0,0 +1,7 @@ + + + xwhile + source.perl + Loop One-line + diff --git a/Perl/Miscellaneous.tmPreferences b/Perl/Miscellaneous.tmPreferences new file mode 100644 index 0000000..aa1f239 --- /dev/null +++ b/Perl/Miscellaneous.tmPreferences @@ -0,0 +1,24 @@ + + + + + name + Comments + scope + source.perl + settings + + shellVariables + + + name + TM_COMMENT_START + value + # + + + + uuid + C1EE8DC8-117D-4BC6-8E69-97D51EAA58D2 + + diff --git a/Perl/Miscellaneous.tmPreferences.cache b/Perl/Miscellaneous.tmPreferences.cache new file mode 100644 index 0000000..53e4014 Binary files /dev/null and b/Perl/Miscellaneous.tmPreferences.cache differ diff --git a/Perl/Perl.tmLanguage b/Perl/Perl.tmLanguage new file mode 100644 index 0000000..0acd362 --- /dev/null +++ b/Perl/Perl.tmLanguage @@ -0,0 +1,3209 @@ + + + + + comment + + TODO: Include RegExp syntax + + fileTypes + + pl + pm + pod + t + PL + + firstLineMatch + ^#!.*\bperl\b + foldingStartMarker + (/\*|(\{|\[|\()\s*$) + foldingStopMarker + (\*/|^\s*(\}|\]|\))) + keyEquivalent + ^~P + name + Perl + patterns + + + include + #line_comment + + + begin + ^= + captures + + 0 + + name + punctuation.definition.comment.perl + + + end + ^=cut + name + comment.block.documentation.perl + + + include + #variable + + + applyEndPatternLast + 1 + begin + \b(?=qr\s*[^\s\w]) + comment + string.regexp.compile.perl + end + ((([egimosx]*)))(?=(\s+\S|\s*[;\,\#\{\}\)]|$)) + endCaptures + + 1 + + name + string.regexp.compile.perl + + 2 + + name + punctuation.definition.string.perl + + 3 + + name + keyword.control.regexp-option.perl + + + patterns + + + begin + (qr)\s*\{ + captures + + 0 + + name + punctuation.definition.string.perl + + 1 + + name + support.function.perl + + + end + \} + name + string.regexp.compile.nested_braces.perl + patterns + + + include + #escaped_char + + + include + #variable + + + include + #nested_braces_interpolated + + + + + begin + (qr)\s*\[ + captures + + 0 + + name + punctuation.definition.string.perl + + 1 + + name + support.function.perl + + + end + \] + name + string.regexp.compile.nested_brackets.perl + patterns + + + include + #escaped_char + + + include + #variable + + + include + #nested_brackets_interpolated + + + + + begin + (qr)\s*< + captures + + 0 + + name + punctuation.definition.string.perl + + 1 + + name + support.function.perl + + + end + > + name + string.regexp.compile.nested_ltgt.perl + patterns + + + include + #escaped_char + + + include + #variable + + + include + #nested_ltgt_interpolated + + + + + begin + (qr)\s*\( + captures + + 0 + + name + punctuation.definition.string.perl + + 1 + + name + support.function.perl + + + end + \) + name + string.regexp.compile.nested_parens.perl + patterns + + + include + #escaped_char + + + include + #variable + + + include + #nested_parens_interpolated + + + + + begin + (qr)\s*\' + captures + + 0 + + name + punctuation.definition.string.perl + + 1 + + name + support.function.perl + + + end + \' + name + string.regexp.compile.single-quote.perl + patterns + + + include + #escaped_char + + + + + begin + (qr)\s*([^\s\w\'\{\[\(\<]) + captures + + 0 + + name + punctuation.definition.string.perl + + 1 + + name + support.function.perl + + + end + \2 + name + string.regexp.compile.simple-delimiter.perl + patterns + + + comment + This is to prevent thinks like qr/foo$/ to treat $/ as a variable + match + \$(?=[^\s\w\'\{\[\(\<]) + name + keyword.control.anchor.perl + + + include + #escaped_char + + + include + #variable + + + include + #nested_parens_interpolated + + + + + + + applyEndPatternLast + 1 + begin + \b(?=(?<!\&)(s)(\s+\S|\s*[;\,\#\{\}\(\)\[<]|$)) + comment + string.regexp.replace.perl + end + ((([egimosx]*)))(?=(\s+\S|\s*[;\,\#\{\}\)\]>]|$)) + endCaptures + + 1 + + name + string.regexp.replace.perl + + 2 + + name + punctuation.definition.string.perl + + 3 + + name + keyword.control.regexp-option.perl + + + patterns + + + begin + (s)\s*\{ + captures + + 0 + + name + punctuation.definition.string.perl + + 1 + + name + support.function.perl + + + end + \} + name + string.regexp.nested_braces.perl + patterns + + + include + #escaped_char + + + include + #nested_braces + + + + + begin + (s)\s*\[ + captures + + 0 + + name + punctuation.definition.string.perl + + 1 + + name + support.function.perl + + + end + \] + name + string.regexp.nested_brackets.perl + patterns + + + include + #escaped_char + + + include + #nested_brackets + + + + + begin + (s)\s*< + captures + + 0 + + name + punctuation.definition.string.perl + + 1 + + name + support.function.perl + + + end + > + name + string.regexp.nested_ltgt.perl + patterns + + + include + #escaped_char + + + include + #nested_ltgt + + + + + begin + (s)\s*\( + captures + + 0 + + name + punctuation.definition.string.perl + + 1 + + name + support.function.perl + + + end + \) + name + string.regexp.nested_parens.perl + patterns + + + include + #escaped_char + + + include + #nested_parens + + + + + begin + \{ + captures + + 0 + + name + punctuation.definition.string.perl + + + end + \} + name + string.regexp.format.nested_braces.perl + patterns + + + include + #escaped_char + + + include + #variable + + + include + #nested_braces_interpolated + + + + + begin + \[ + captures + + 0 + + name + punctuation.definition.string.perl + + + end + \] + name + string.regexp.format.nested_brackets.perl + patterns + + + include + #escaped_char + + + include + #variable + + + include + #nested_brackets_interpolated + + + + + begin + < + captures + + 0 + + name + punctuation.definition.string.perl + + + end + > + name + string.regexp.format.nested_ltgt.perl + patterns + + + include + #escaped_char + + + include + #variable + + + include + #nested_ltgt_interpolated + + + + + begin + \( + captures + + 0 + + name + punctuation.definition.string.perl + + + end + \) + name + string.regexp.format.nested_parens.perl + patterns + + + include + #escaped_char + + + include + #variable + + + include + #nested_parens_interpolated + + + + + begin + ' + captures + + 0 + + name + punctuation.definition.string.perl + + + end + ' + name + string.regexp.format.single_quote.perl + patterns + + + match + \\['\\] + name + constant.character.escape.perl + + + + + begin + ([^\s\w\[({<;]) + captures + + 0 + + name + punctuation.definition.string.perl + + + end + \1 + name + string.regexp.format.simple_delimiter.perl + patterns + + + include + #escaped_char + + + include + #variable + + + + + match + \s+ + + + + + begin + \b(?=s([^\s\w\[({<]).*\1([egimos]*)([\}\)\;\,]|\s+)) + comment + string.regexp.replaceXXX + end + ((([egimos]*)))(?=([\}\)\;\,]|\s+|$)) + endCaptures + + 1 + + name + string.regexp.replace.perl + + 2 + + name + punctuation.definition.string.perl + + 3 + + name + keyword.control.regexp-option.perl + + + patterns + + + begin + (s\s*)([^\s\w\[({<]) + captures + + 0 + + name + punctuation.definition.string.perl + + 1 + + name + support.function.perl + + + end + (?=\2) + name + string.regexp.replaceXXX.simple_delimiter.perl + patterns + + + include + #escaped_char + + + + + begin + ' + captures + + 0 + + name + punctuation.definition.string.perl + + + end + ' + name + string.regexp.replaceXXX.format.single_quote.perl + patterns + + + match + \\['\\] + name + constant.character.escape.perl.perl + + + + + begin + ([^\s\w\[({<]) + captures + + 0 + + name + punctuation.definition.string.perl + + + end + \1 + name + string.regexp.replaceXXX.format.simple_delimiter.perl + patterns + + + include + #escaped_char + + + include + #variable + + + + + + + begin + \b(?=(?<!\\)s\s*([^\s\w\[({<])) + comment + string.regexp.replace.extended + end + \2((([egimos]*x[egimos]*)))\b + endCaptures + + 1 + + name + string.regexp.replace.perl + + 2 + + name + punctuation.definition.string.perl + + 3 + + name + keyword.control.regexp-option.perl + + + patterns + + + begin + (s)\s*(.) + captures + + 0 + + name + punctuation.definition.string.perl + + 1 + + name + support.function.perl + + + end + (?=\2) + name + string.regexp.replace.extended.simple_delimiter.perl + patterns + + + include + #escaped_char + + + + + begin + ' + captures + + 0 + + name + punctuation.definition.string.perl + + + end + '(?=[egimos]*x[egimos]*)\b + name + string.regexp.replace.extended.simple_delimiter.perl + patterns + + + include + #escaped_char + + + + + begin + (.) + captures + + 0 + + name + punctuation.definition.string.perl + + + end + \1(?=[egimos]*x[egimos]*)\b + name + string.regexp.replace.extended.simple_delimiter.perl + patterns + + + include + #escaped_char + + + include + #variable + + + + + + + match + \b\w+\s*(?==>) + name + constant.other.key.perl + + + match + (?<={)\s*\w+\s*(?=}) + name + constant.other.bareword.perl + + + captures + + 1 + + name + punctuation.definition.string.perl + + 5 + + name + punctuation.definition.string.perl + + + match + (?<!\\)((~\s*)?\/)(\S.*?)(?<!\\)(\\{2})*(\/) + name + string.regexp.find.perl + + + begin + (?<!\\)(\~\s*\/) + captures + + 0 + + name + punctuation.definition.string.perl + + + end + \/([cgimos]*x[cgimos]*)\b + endCaptures + + 1 + + name + keyword.control.regexp-option.perl + + + name + string.regexp.find.extended.perl + patterns + + + include + #escaped_char + + + include + #variable + + + + + captures + + 1 + + name + keyword.control.perl + + 2 + + name + entity.name.type.class.perl + + 3 + + name + comment.line.number-sign.perl + + 4 + + name + punctuation.definition.comment.perl + + + match + ^\s*(package)\s+(\S+)\s*((#).*)?$\n? + name + meta.class.perl + + + captures + + 1 + + name + storage.type.sub.perl + + 2 + + name + entity.name.function.perl + + 3 + + name + storage.type.method.perl + + + match + ^\s*(sub)\s+([-a-zA-Z0-9_]+)\s*(\([\$\@\*;]*\))? + name + meta.function.perl + + + captures + + 1 + + name + entity.name.function.perl + + 2 + + name + punctuation.definition.parameters.perl + + 3 + + name + variable.parameter.function.perl + + + match + ^\s*(BEGIN|END|DESTROY)\b + name + meta.function.perl + + + begin + ^(?=(\t| {4})) + end + (?=[^\t\s]) + name + meta.leading-tabs + patterns + + + captures + + 1 + + name + meta.odd-tab + + 2 + + name + meta.even-tab + + + match + (\t| {4})(\t| {4})? + + + + + captures + + 1 + + name + support.function.perl + + 2 + + name + punctuation.definition.string.perl + + 5 + + name + punctuation.definition.string.perl + + + match + \b(m)\s*(?<!\\)([^\[\{\(A-Za-z0-9\s])(.*?)(?<!\\)(\\{2})*(\2) + name + string.regexp.find-m.perl + + + begin + \b(m)\s*(?<!\\)\( + beginCaptures + + 0 + + name + punctuation.definition.string.begin.perl + + + end + \) + endCaptures + + 0 + + name + punctuation.definition.string.end.perl + + + name + string.regexp.find-m-paren.perl + patterns + + + include + #escaped_char + + + include + #nested_parens_interpolated + + + include + #variable + + + + + begin + \b(m)\s*(?<!\\)\{ + beginCaptures + + 0 + + name + punctuation.definition.string.begin.perl + + + end + \} + endCaptures + + 0 + + name + punctuation.definition.string.end.perl + + + name + string.regexp.find-m-brace.perl + patterns + + + include + #escaped_char + + + include + #nested_braces_interpolated + + + include + #variable + + + + + begin + \b(m)\s*(?<!\\)\[ + beginCaptures + + 0 + + name + punctuation.definition.string.begin.perl + + + end + \] + endCaptures + + 0 + + name + punctuation.definition.string.end.perl + + + name + string.regexp.find-m-bracket.perl + patterns + + + include + #escaped_char + + + include + #nested_brackets_interpolated + + + include + #variable + + + + + begin + \b(m)\s*(?<!\\)\< + beginCaptures + + 0 + + name + punctuation.definition.string.begin.perl + + + end + \> + endCaptures + + 0 + + name + punctuation.definition.string.end.perl + + + name + string.regexp.find-m-ltgt.perl + patterns + + + include + #escaped_char + + + include + #nested_ltgt_interpolated + + + include + #variable + + + + + captures + + 1 + + name + support.function.perl + + 2 + + name + punctuation.definition.string.perl + + 5 + + name + punctuation.definition.string.perl + + 8 + + name + punctuation.definition.string.perl + + + match + \b(s|tr|y)\s*([^A-Za-z0-9\s])(.*?)(?<!\\)(\\{2})*(\2)(.*?)(?<!\\)(\\{2})*(\2) + name + string.regexp.replace.perl + + + match + \b(__FILE__|__LINE__|__PACKAGE__)\b + name + constant.language.perl + + + match + (?<!->)\b(continue|die|do|else|elsif|exit|for|foreach|goto|if|last|next|redo|return|select|unless|until|wait|while|switch|case|package|require|use|eval)\b + name + keyword.control.perl + + + match + \b(my|our|local)\b + name + storage.modifier.perl + + + match + (?<!\w)\-[rwx0RWXOezsfdlpSbctugkTBMAC]\b + name + keyword.operator.filetest.perl + + + match + \b(and|or|xor|as)\b + name + keyword.operator.logical.perl + + + match + (<=>| =>|->) + name + keyword.operator.comparison.perl + + + begin + ((<<) *"HTML").*\n? + captures + + 0 + + name + punctuation.definition.string.perl + + 1 + + name + string.unquoted.heredoc.doublequote.perl + + 2 + + name + punctuation.definition.heredoc.perl + + + contentName + text.html.embedded.perl + end + (^HTML$) + patterns + + + include + #escaped_char + + + include + #variable + + + include + text.html.basic + + + + + begin + ((<<) *"XML").*\n? + captures + + 0 + + name + punctuation.definition.string.perl + + 1 + + name + string.unquoted.heredoc.doublequote.perl + + 2 + + name + punctuation.definition.heredoc.perl + + + contentName + text.xml.embedded.perl + end + (^XML$) + patterns + + + include + #escaped_char + + + include + #variable + + + include + text.xml + + + + + begin + ((<<) *"CSS").*\n? + captures + + 0 + + name + punctuation.definition.string.perl + + 1 + + name + string.unquoted.heredoc.doublequote.perl + + 2 + + name + punctuation.definition.heredoc.perl + + + contentName + text.css.embedded.perl + end + (^CSS$) + patterns + + + include + #escaped_char + + + include + #variable + + + include + source.css + + + + + begin + ((<<) *"JAVASCRIPT").*\n? + captures + + 0 + + name + punctuation.definition.string.perl + + 1 + + name + string.unquoted.heredoc.doublequote.perl + + 2 + + name + punctuation.definition.heredoc.perl + + + contentName + text.js.embedded.perl + end + (^JAVASCRIPT$) + patterns + + + include + #escaped_char + + + include + #variable + + + include + source.js + + + + + begin + ((<<) *"SQL").*\n? + captures + + 0 + + name + punctuation.definition.string.perl + + 1 + + name + string.unquoted.heredoc.doublequote.perl + + 2 + + name + punctuation.definition.heredoc.perl + + + contentName + source.sql.embedded.perl + end + (^SQL$) + patterns + + + include + #escaped_char + + + include + #variable + + + include + source.sql + + + + + begin + ((<<) *"POSTSCRIPT").*\n? + captures + + 0 + + name + punctuation.definition.string.perl + + 1 + + name + string.unquoted.heredoc.doublequote.perl + + 2 + + name + punctuation.definition.heredoc.perl + + + contentName + text.postscript.embedded.perl + end + (^POSTSCRIPT$) + patterns + + + include + #escaped_char + + + include + #variable + + + include + source.postscript + + + + + begin + ((<<) *"([^"]*)").*\n? + captures + + 0 + + name + punctuation.definition.string.perl + + 1 + + name + string.unquoted.heredoc.doublequote.perl + + 2 + + name + punctuation.definition.heredoc.perl + + + contentName + string.unquoted.heredoc.doublequote.perl + end + (^\3$) + patterns + + + include + #escaped_char + + + include + #variable + + + + + begin + ((<<) *'HTML').*\n? + captures + + 0 + + name + punctuation.definition.string.perl + + 1 + + name + string.unquoted.heredoc.quote.perl + + 2 + + name + punctuation.definition.heredoc.perl + + + contentName + text.html.embedded.perl + end + (^HTML$) + patterns + + + include + text.html.basic + + + + + begin + ((<<) *'XML').*\n? + captures + + 0 + + name + punctuation.definition.string.perl + + 1 + + name + string.unquoted.heredoc.quote.perl + + 2 + + name + punctuation.definition.heredoc.perl + + + contentName + text.xml.embedded.perl + end + (^XML$) + patterns + + + include + text.xml + + + + + begin + ((<<) *'CSS').*\n? + captures + + 0 + + name + punctuation.definition.string.perl + + 1 + + name + string.unquoted.heredoc.quote.perl + + 2 + + name + punctuation.definition.heredoc.perl + + + contentName + text.css.embedded.perl + end + (^CSS$) + patterns + + + include + source.css + + + + + begin + ((<<) *'JAVASCRIPT').*\n? + captures + + 0 + + name + punctuation.definition.string.perl + + 1 + + name + string.unquoted.heredoc.quote.perl + + 2 + + name + punctuation.definition.heredoc.perl + + + contentName + text.js.embedded.perl + end + (^JAVASCRIPT$) + patterns + + + include + source.js + + + + + begin + ((<<) *'SQL').*\n? + captures + + 0 + + name + punctuation.definition.string.perl + + 1 + + name + string.unquoted.heredoc.quote.perl + + 2 + + name + punctuation.definition.heredoc.perl + + + contentName + source.sql.embedded.perl + end + (^SQL$) + patterns + + + include + source.sql + + + + + begin + ((<<) *'POSTSCRIPT').*\n? + captures + + 0 + + name + punctuation.definition.string.perl + + 1 + + name + string.unquoted.heredoc.quote.perl + + 2 + + name + punctuation.definition.heredoc.perl + + + contentName + source.postscript.embedded.perl + end + (^POSTSCRIPT) + patterns + + + include + source.postscript + + + + + begin + ((<<) *'([^']*)').*\n? + captures + + 0 + + name + punctuation.definition.string.perl + + 1 + + name + string.unquoted.heredoc.quote.perl + + 2 + + name + punctuation.definition.heredoc.perl + + + contentName + string.unquoted.heredoc.quote.perl + end + (^\3$) + + + begin + ((<<) *`([^`]*)`).*\n? + captures + + 0 + + name + punctuation.definition.string.perl + + 1 + + name + string.unquoted.heredoc.backtick.perl + + 2 + + name + punctuation.definition.heredoc.perl + + + contentName + string.unquoted.heredoc.backtick.perl + end + (^\3$) + patterns + + + include + #escaped_char + + + include + #variable + + + + + begin + ((<<) *HTML\b).*\n? + captures + + 0 + + name + punctuation.definition.string.perl + + 1 + + name + string.unquoted.heredoc.perl + + 2 + + name + punctuation.definition.heredoc.perl + + + contentName + text.html.embedded.perl + end + (^HTML$) + patterns + + + include + #escaped_char + + + include + #variable + + + include + text.html.basic + + + + + begin + ((<<) *XML\b).*\n? + captures + + 0 + + name + punctuation.definition.string.perl + + 1 + + name + string.unquoted.heredoc.perl + + 2 + + name + punctuation.definition.heredoc.perl + + + contentName + text.xml.embedded.perl + end + (^XML$) + patterns + + + include + #escaped_char + + + include + #variable + + + include + text.xml + + + + + begin + ((<<) *SQL\b).*\n? + captures + + 0 + + name + punctuation.definition.string.perl + + 1 + + name + string.unquoted.heredoc.perl + + 2 + + name + punctuation.definition.heredoc.perl + + + contentName + source.sql.embedded.perl + end + (^SQL$) + patterns + + + include + #escaped_char + + + include + #variable + + + include + source.sql + + + + + begin + ((<<) *POSTSCRIPT\b).*\n? + captures + + 0 + + name + punctuation.definition.string.perl + + 1 + + name + string.unquoted.heredoc.perl + + 2 + + name + punctuation.definition.heredoc.perl + + + contentName + source.postscript.embedded.perl + end + (^POSTSCRIPT) + patterns + + + include + #escaped_char + + + include + #variable + + + include + source.postscript + + + + + begin + ((<<) *((?![=\d\$ ])[^;,'"`\s)]*)).*\n? + captures + + 0 + + name + punctuation.definition.string.perl + + 1 + + name + string.unquoted.heredoc.perl + + 2 + + name + punctuation.definition.heredoc.perl + + + contentName + string.unquoted.heredoc.perl + end + (^\3$) + patterns + + + include + #escaped_char + + + include + #variable + + + + + begin + \bqq\s*([^\(\{\[\<\w\s]) + beginCaptures + + 0 + + name + punctuation.definition.string.begin.perl + + + end + \1 + endCaptures + + 0 + + name + punctuation.definition.string.end.perl + + + name + string.quoted.other.qq.perl + patterns + + + include + #escaped_char + + + include + #variable + + + + + begin + \bqx\s*([^'\(\{\[\<\w\s]) + beginCaptures + + 0 + + name + punctuation.definition.string.begin.perl + + + end + \1 + endCaptures + + 0 + + name + punctuation.definition.string.end.perl + + + name + string.interpolated.qx.perl + patterns + + + include + #escaped_char + + + include + #variable + + + + + begin + \bqx\s*' + beginCaptures + + 0 + + name + punctuation.definition.string.begin.perl + + + end + ' + endCaptures + + 0 + + name + punctuation.definition.string.end.perl + + + name + string.interpolated.qx.single-quote.perl + patterns + + + include + #escaped_char + + + + + begin + " + beginCaptures + + 0 + + name + punctuation.definition.string.begin.perl + + + end + " + endCaptures + + 0 + + name + punctuation.definition.string.end.perl + + + name + string.quoted.double.perl + patterns + + + include + #escaped_char + + + include + #variable + + + + + begin + \bqw?\s*([^\(\{\[\<\w\s]) + beginCaptures + + 0 + + name + punctuation.definition.string.begin.perl + + + end + \1 + endCaptures + + 0 + + name + punctuation.definition.string.end.perl + + + name + string.quoted.other.q.perl + patterns + + + include + #escaped_char + + + + + begin + ' + beginCaptures + + 0 + + name + punctuation.definition.string.begin.perl + + + end + ' + endCaptures + + 0 + + name + punctuation.definition.string.end.perl + + + name + string.quoted.single.perl + patterns + + + match + \\['\\] + name + constant.character.escape.perl + + + + + begin + ` + beginCaptures + + 0 + + name + punctuation.definition.string.begin.perl + + + end + ` + endCaptures + + 0 + + name + punctuation.definition.string.end.perl + + + name + string.interpolated.perl + patterns + + + include + #escaped_char + + + include + #variable + + + + + begin + \bqq\s*\( + beginCaptures + + 0 + + name + punctuation.definition.string.begin.perl + + + end + \) + endCaptures + + 0 + + name + punctuation.definition.string.end.perl + + + name + string.quoted.other.qq-paren.perl + patterns + + + include + #escaped_char + + + include + #nested_parens_interpolated + + + include + #variable + + + + + begin + \bqq\s*\{ + beginCaptures + + 0 + + name + punctuation.definition.string.begin.perl + + + end + \} + endCaptures + + 0 + + name + punctuation.definition.string.end.perl + + + name + string.quoted.other.qq-brace.perl + patterns + + + include + #escaped_char + + + include + #nested_braces_interpolated + + + include + #variable + + + + + begin + \bqq\s*\[ + beginCaptures + + 0 + + name + punctuation.definition.string.begin.perl + + + end + \] + endCaptures + + 0 + + name + punctuation.definition.string.end.perl + + + name + string.quoted.other.qq-bracket.perl + patterns + + + include + #escaped_char + + + include + #nested_brackets_interpolated + + + include + #variable + + + + + begin + \bqq\s*\< + beginCaptures + + 0 + + name + punctuation.definition.string.begin.perl + + + end + \> + endCaptures + + 0 + + name + punctuation.definition.string.end.perl + + + name + string.quoted.other.qq-ltgt.perl + patterns + + + include + #escaped_char + + + include + #nested_ltgt_interpolated + + + include + #variable + + + + + begin + \bqx\s*\( + beginCaptures + + 0 + + name + punctuation.definition.string.begin.perl + + + end + \) + endCaptures + + 0 + + name + punctuation.definition.string.end.perl + + + name + string.interpolated.qx-paren.perl + patterns + + + include + #escaped_char + + + include + #nested_parens_interpolated + + + include + #variable + + + + + begin + \bqx\s*\{ + beginCaptures + + 0 + + name + punctuation.definition.string.begin.perl + + + end + \} + endCaptures + + 0 + + name + punctuation.definition.string.end.perl + + + name + string.interpolated.qx-brace.perl + patterns + + + include + #escaped_char + + + include + #nested_braces_interpolated + + + include + #variable + + + + + begin + \bqx\s*\[ + beginCaptures + + 0 + + name + punctuation.definition.string.begin.perl + + + end + \] + endCaptures + + 0 + + name + punctuation.definition.string.end.perl + + + name + string.interpolated.qx-bracket.perl + patterns + + + include + #escaped_char + + + include + #nested_brackets_interpolated + + + include + #variable + + + + + begin + \bqx\s*\< + beginCaptures + + 0 + + name + punctuation.definition.string.begin.perl + + + end + \> + endCaptures + + 0 + + name + punctuation.definition.string.end.perl + + + name + string.interpolated.qx-ltgt.perl + patterns + + + include + #escaped_char + + + include + #nested_ltgt_interpolated + + + include + #variable + + + + + begin + \bqw?\s*\( + beginCaptures + + 0 + + name + punctuation.definition.string.begin.perl + + + end + \) + endCaptures + + 0 + + name + punctuation.definition.string.end.perl + + + name + string.quoted.other.q-paren.perl + patterns + + + include + #escaped_char + + + include + #nested_parens + + + + + begin + \bqw?\s*\{ + beginCaptures + + 0 + + name + punctuation.definition.string.begin.perl + + + end + \} + endCaptures + + 0 + + name + punctuation.definition.string.end.perl + + + name + string.quoted.other.q-brace.perl + patterns + + + include + #escaped_char + + + include + #nested_braces + + + + + begin + \bqw?\s*\[ + beginCaptures + + 0 + + name + punctuation.definition.string.begin.perl + + + end + \] + endCaptures + + 0 + + name + punctuation.definition.string.end.perl + + + name + string.quoted.other.q-bracket.perl + patterns + + + include + #escaped_char + + + include + #nested_brackets + + + + + begin + \bqw?\s*\< + beginCaptures + + 0 + + name + punctuation.definition.string.begin.perl + + + end + \> + endCaptures + + 0 + + name + punctuation.definition.string.end.perl + + + name + string.quoted.other.q-ltgt.perl + patterns + + + include + #escaped_char + + + include + #nested_ltgt + + + + + begin + ^__\w+__ + beginCaptures + + 0 + + name + punctuation.definition.string.begin.perl + + + end + $ + endCaptures + + 0 + + name + punctuation.definition.string.end.perl + + + name + string.unquoted.program-block.perl + + + begin + \b(format)\s+([A-Za-z]+)\s*= + beginCaptures + + 1 + + name + support.function.perl + + 2 + + name + entity.name.function.format.perl + + + end + ^\.\s*$ + name + meta.format.perl + patterns + + + include + #line_comment + + + include + #variable + + + + + match + \b(ARGV|DATA|ENV|SIG|STDERR|STDIN|STDOUT|atan2|bind|binmode|bless|caller|chdir|chmod|chomp|chop|chown|chr|chroot|close|closedir|cmp|connect|cos|crypt|dbmclose|dbmopen|defined|delete|dump|each|endgrent|endhostent|endnetent|endprotoent|endpwent|endservent|eof|eq|eval|exec|exists|exp|fcntl|fileno|flock|fork|format|formline|ge|getc|getgrent|getgrgid|getgrnam|gethostbyaddr|gethostbyname|gethostent|getlogin|getnetbyaddr|getnetbyname|getnetent|getpeername|getpgrp|getppid|getpriority|getprotobyname|getprotobynumber|getprotoent|getpwent|getpwnam|getpwuid|getservbyname|getservbyport|getservent|getsockname|getsockopt|glob|gmtime|grep|gt|hex|import|index|int|ioctl|join|keys|kill|lc|lcfirst|le|length|link|listen|local|localtime|log|lstat|lt|m|map|mkdir|msgctl|msgget|msgrcv|msgsnd|ne|no|oct|open|opendir|ord|pack|pipe|pop|pos|print|printf|push|q|qq|quotemeta|qw|qx|rand|read|readdir|readlink|recv|ref|rename|reset|reverse|rewinddir|rindex|rmdir|s|scalar|seek|seekdir|semctl|semget|semop|send|setgrent|sethostent|setnetent|setpgrp|setpriority|setprotoent|setpwent|setservent|setsockopt|shift|shmctl|shmget|shmread|shmwrite|shutdown|sin|sleep|socket|socketpair|sort|splice|split|sprintf|sqrt|srand|stat|study|substr|symlink|syscall|sysopen|sysread|system|syswrite|tell|telldir|tie|tied|time|times|tr|truncate|uc|ucfirst|umask|undef|unlink|unpack|unshift|untie|utime|values|vec|waitpid|wantarray|warn|write|y|q|qw|qq|qx)\b + name + support.function.perl + + + repository + + escaped_char + + match + \\. + name + constant.character.escape.perl + + line_comment + + patterns + + + captures + + 1 + + name + comment.line.number-sign.perl + + 2 + + name + punctuation.definition.comment.perl + + + match + ^((#).*$\n?) + name + meta.comment.full-line.perl + + + captures + + 1 + + name + punctuation.definition.comment.perl + + + match + (#).*$\n? + name + comment.line.number-sign.perl + + + + nested_braces + + begin + \{ + captures + + 1 + + name + punctuation.section.scope.perl + + + end + \} + patterns + + + include + #escaped_char + + + include + #nested_braces + + + + nested_braces_interpolated + + begin + \{ + captures + + 1 + + name + punctuation.section.scope.perl + + + end + \} + patterns + + + include + #escaped_char + + + include + #variable + + + include + #nested_braces_interpolated + + + + nested_brackets + + begin + \[ + captures + + 1 + + name + punctuation.section.scope.perl + + + end + \] + patterns + + + include + #escaped_char + + + include + #nested_brackets + + + + nested_brackets_interpolated + + begin + \[ + captures + + 1 + + name + punctuation.section.scope.perl + + + end + \] + patterns + + + include + #escaped_char + + + include + #variable + + + include + #nested_brackets_interpolated + + + + nested_ltgt + + begin + < + captures + + 1 + + name + punctuation.section.scope.perl + + + end + > + patterns + + + include + #nested_ltgt + + + + nested_ltgt_interpolated + + begin + < + captures + + 1 + + name + punctuation.section.scope.perl + + + end + > + patterns + + + include + #variable + + + include + #nested_ltgt_interpolated + + + + nested_parens + + begin + \( + captures + + 1 + + name + punctuation.section.scope.perl + + + end + \) + patterns + + + include + #escaped_char + + + include + #nested_parens + + + + nested_parens_interpolated + + begin + \( + captures + + 1 + + name + punctuation.section.scope.perl + + + end + \) + patterns + + + comment + This is to prevent thinks like qr/foo$/ to treat $/ as a variable + match + \$(?=[^\s\w\'\{\[\(\<]) + name + keyword.control.anchor.perl + + + include + #escaped_char + + + include + #variable + + + include + #nested_parens_interpolated + + + + variable + + patterns + + + captures + + 1 + + name + punctuation.definition.variable.perl + + + match + (\$)&(?![A-Za-z0-9_]) + name + variable.other.regexp.match.perl + + + captures + + 1 + + name + punctuation.definition.variable.perl + + + match + (\$)`(?![A-Za-z0-9_]) + name + variable.other.regexp.pre-match.perl + + + captures + + 1 + + name + punctuation.definition.variable.perl + + + match + (\$)'(?![A-Za-z0-9_]) + name + variable.other.regexp.post-match.perl + + + captures + + 1 + + name + punctuation.definition.variable.perl + + + match + (\$)\+(?![A-Za-z0-9_]) + name + variable.other.regexp.last-paren-match.perl + + + captures + + 1 + + name + punctuation.definition.variable.perl + + + match + (\$)"(?![A-Za-z0-9_]) + name + variable.other.readwrite.list-separator.perl + + + captures + + 1 + + name + punctuation.definition.variable.perl + + + match + (\$)0(?![A-Za-z0-9_]) + name + variable.other.predefined.program-name.perl + + + captures + + 1 + + name + punctuation.definition.variable.perl + + + match + (\$)[_ab\*\.\/\|,\\;#%=\-~^:?!\$<>\(\)\[\]@](?![A-Za-z0-9_]) + name + variable.other.predefined.perl + + + captures + + 1 + + name + punctuation.definition.variable.perl + + + match + (\$)[0-9]+(?![A-Za-z0-9_]) + name + variable.other.subpattern.perl + + + captures + + 1 + + name + punctuation.definition.variable.perl + + + match + ([\$\@\%](#)?)([a-zA-Zx7f-xff\$]|::)([a-zA-Z0-9_x7f-xff\$]|::)*\b + name + variable.other.readwrite.global.perl + + + captures + + 1 + + name + punctuation.definition.variable.perl + + 2 + + name + punctuation.definition.variable.perl + + + match + (\$\{)(?:[a-zA-Zx7f-xff\$]|::)(?:[a-zA-Z0-9_x7f-xff\$]|::)*(\}) + name + variable.other.readwrite.global.perl + + + captures + + 1 + + name + punctuation.definition.variable.perl + + + match + ([\$\@\%](#)?)[0-9_]\b + name + variable.other.readwrite.global.special.perl + + + + + scopeName + source.perl + uuid + EDBFE125-6B1C-11D9-9189-000D93589AF6 + + diff --git a/Perl/Perl.tmLanguage.cache b/Perl/Perl.tmLanguage.cache new file mode 100644 index 0000000..9d0f0e9 Binary files /dev/null and b/Perl/Perl.tmLanguage.cache differ diff --git a/Perl/Test.sublime-snippet b/Perl/Test.sublime-snippet new file mode 100644 index 0000000..6bc2fb3 --- /dev/null +++ b/Perl/Test.sublime-snippet @@ -0,0 +1,13 @@ + + ${1:1}; +use ${2:ModuleName}; + +ok(${3:assertion}); +]]> + test + source.perl + Test + diff --git a/Perl/class.sublime-snippet b/Perl/class.sublime-snippet new file mode 100644 index 0000000..0f3e282 --- /dev/null +++ b/Perl/class.sublime-snippet @@ -0,0 +1,18 @@ + + + class + source.perl + Package + diff --git a/Perl/eval.sublime-snippet b/Perl/eval.sublime-snippet new file mode 100644 index 0000000..2a3ba15 --- /dev/null +++ b/Perl/eval.sublime-snippet @@ -0,0 +1,12 @@ + + + eval + source.perl + Try/Except + diff --git a/Perl/for.sublime-snippet b/Perl/for.sublime-snippet new file mode 100644 index 0000000..f941855 --- /dev/null +++ b/Perl/for.sublime-snippet @@ -0,0 +1,9 @@ + + + for + source.perl + Loop + diff --git a/Perl/foreach.sublime-snippet b/Perl/foreach.sublime-snippet new file mode 100644 index 0000000..9f97460 --- /dev/null +++ b/Perl/foreach.sublime-snippet @@ -0,0 +1,9 @@ + + + fore + source.perl + Loop + diff --git a/Perl/if.sublime-snippet b/Perl/if.sublime-snippet new file mode 100644 index 0000000..aac8272 --- /dev/null +++ b/Perl/if.sublime-snippet @@ -0,0 +1,9 @@ + + + if + source.perl + Conditional + diff --git a/Perl/slurp.sublime-snippet b/Perl/slurp.sublime-snippet new file mode 100644 index 0000000..c79812e --- /dev/null +++ b/Perl/slurp.sublime-snippet @@ -0,0 +1,8 @@ + + ; close FILE } +]]> + slurp + source.perl + Read File + diff --git a/Perl/unless.sublime-snippet b/Perl/unless.sublime-snippet new file mode 100644 index 0000000..ba1a342 --- /dev/null +++ b/Perl/unless.sublime-snippet @@ -0,0 +1,9 @@ + + + unless + source.perl + Conditional + diff --git a/Perl/while.sublime-snippet b/Perl/while.sublime-snippet new file mode 100644 index 0000000..7fc40ca --- /dev/null +++ b/Perl/while.sublime-snippet @@ -0,0 +1,9 @@ + + + while + source.perl + Loop + diff --git a/Python/Completion Rules.tmPreferences b/Python/Completion Rules.tmPreferences new file mode 100644 index 0000000..3fa76f4 --- /dev/null +++ b/Python/Completion Rules.tmPreferences @@ -0,0 +1,13 @@ + + + + + scope + source.python + settings + + cancelCompletion + ^(.*\b(and|or)$)|(\s*(pass|return|and|or|(class|def|import)\s*[a-zA-Z_0-9]+)$) + + + diff --git a/Python/Completion Rules.tmPreferences.cache b/Python/Completion Rules.tmPreferences.cache new file mode 100644 index 0000000..a37397e Binary files /dev/null and b/Python/Completion Rules.tmPreferences.cache differ diff --git a/Python/Miscellaneous.tmPreferences b/Python/Miscellaneous.tmPreferences new file mode 100644 index 0000000..96de249 --- /dev/null +++ b/Python/Miscellaneous.tmPreferences @@ -0,0 +1,36 @@ + + + + + name + Miscellaneous + scope + source.python + settings + + decreaseIndentPattern + ^\s*(elif|else|except|finally)\b.*: + increaseIndentPattern + ^\s*(class|def|elif|else|except|finally|for|if|try|with|while)\b.*:\s*$ + disableIndentNextLinePattern + + shellVariables + + + name + TM_COMMENT_START + value + # + + + name + TM_LINE_TERMINATOR + value + : + + + + uuid + 33877934-69D3-4773-8786-9B5211012A9A + + diff --git a/Python/Miscellaneous.tmPreferences.cache b/Python/Miscellaneous.tmPreferences.cache new file mode 100644 index 0000000..7ee78fe Binary files /dev/null and b/Python/Miscellaneous.tmPreferences.cache differ diff --git a/Python/New-Class.sublime-snippet b/Python/New-Class.sublime-snippet new file mode 100644 index 0000000..0f75839 --- /dev/null +++ b/Python/New-Class.sublime-snippet @@ -0,0 +1,9 @@ + + + class + source.python + New Class + diff --git a/Python/New-Property.sublime-snippet b/Python/New-Property.sublime-snippet new file mode 100644 index 0000000..fa1968a --- /dev/null +++ b/Python/New-Property.sublime-snippet @@ -0,0 +1,15 @@ + + + property + source.python + New Property + diff --git a/Python/Python.sublime-build b/Python/Python.sublime-build new file mode 100644 index 0000000..ba1a6d6 --- /dev/null +++ b/Python/Python.sublime-build @@ -0,0 +1,5 @@ +{ + "cmd": ["python", "-u", "$file"], + "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)", + "selector": "source.python" +} diff --git a/Python/Python.tmLanguage b/Python/Python.tmLanguage new file mode 100644 index 0000000..88e1a63 --- /dev/null +++ b/Python/Python.tmLanguage @@ -0,0 +1,3025 @@ + + + + + bundleUUID + E3BADC20-6B0E-11D9-9DC9-000D93589AF6 + comment + + todo: + list comprehension / generator comprehension scope. + + + fileTypes + + py + rpy + pyw + cpy + SConstruct + Sconstruct + sconstruct + SConscript + + firstLineMatch + ^#!/.*\bpython[0-9.-]*\b + foldingStartMarker + ^\s*(def|class)\s+([.a-zA-Z0-9_ <]+)\s*(\((.*)\))?\s*:|\{\s*$|\(\s*$|\[\s*$|^\s*"""(?=.)(?!.*""") + foldingStopMarker + ^\s*$|^\s*\}|^\s*\]|^\s*\)|^\s*"""\s*$ + keyEquivalent + ^~P + name + Python + patterns + + + captures + + 1 + + name + punctuation.definition.comment.python + + + match + (#).*$\n? + name + comment.line.number-sign.python + + + match + \b(?i:(0x\h*)L) + name + constant.numeric.integer.long.hexadecimal.python + + + match + \b(?i:(0x\h*)) + name + constant.numeric.integer.hexadecimal.python + + + match + \b(?i:(0[0-7]+)L) + name + constant.numeric.integer.long.octal.python + + + match + \b(0[0-7]+) + name + constant.numeric.integer.octal.python + + + match + \b(?i:(((\d+(\.(?=[^a-zA-Z_])\d*)?|(?<=[^0-9a-zA-Z_])\.\d+)(e[\-\+]?\d+)?))J) + name + constant.numeric.complex.python + + + match + \b(?i:(\d+\.\d*(e[\-\+]?\d+)?))(?=[^a-zA-Z_]) + name + constant.numeric.float.python + + + match + (?<=[^0-9a-zA-Z_])(?i:(\.\d+(e[\-\+]?\d+)?)) + name + constant.numeric.float.python + + + match + \b(?i:(\d+e[\-\+]?\d+)) + name + constant.numeric.float.python + + + match + \b(?i:([1-9]+[0-9]*|0)L) + name + constant.numeric.integer.long.decimal.python + + + match + \b([1-9]+[0-9]*|0) + name + constant.numeric.integer.decimal.python + + + captures + + 1 + + name + storage.modifier.global.python + + + match + \b(global)\b + + + captures + + 1 + + name + keyword.control.import.python + + 2 + + name + keyword.control.import.from.python + + + match + \b(?:(import)|(from))\b + + + comment + keywords that delimit flow blocks or alter flow from within a block + match + \b(elif|else|except|finally|for|if|try|while|with|break|continue|pass|raise|return|yield)\b + name + keyword.control.flow.python + + + comment + keyword operators that evaluate to True or False + match + \b(and|in|is|not|or)\b + name + keyword.operator.logical.python + + + captures + + 1 + + name + keyword.other.python + + + comment + keywords that haven't fit into other groups (yet). + match + \b(as|assert|del|exec|print)\b + + + match + <> + name + invalid.deprecated.operator.python + + + match + <\=|>\=|\=\=|<|>|\!\= + name + keyword.operator.comparison.python + + + match + \+\=|-\=|\*\=|/\=|//\=|%\=|&\=|\|\=|\^\=|>>\=|<<\=|\*\*\= + name + keyword.operator.assignment.augmented.python + + + match + \+|\-|\*|\*\*|/|//|%|<<|>>|&|\||\^|~ + name + keyword.operator.arithmetic.python + + + match + \= + name + keyword.operator.assignment.python + + + begin + ^\s*(class)\s+(?=[a-zA-Z_][a-zA-Z_0-9]*\s*\:) + beginCaptures + + 1 + + name + storage.type.class.python + + + contentName + entity.name.type.class.python + end + \s*(:) + endCaptures + + 1 + + name + punctuation.section.class.begin.python + + + name + meta.class.old-style.python + patterns + + + include + #entity_name_class + + + + + begin + ^\s*(class)\s+(?=[a-zA-Z_][a-zA-Z_0-9]*\s*\() + beginCaptures + + 1 + + name + storage.type.class.python + + + end + (\))\s*(?:(\:)|(.*$\n?)) + endCaptures + + 1 + + name + punctuation.definition.inheritance.end.python + + 2 + + name + punctuation.section.class.begin.python + + 3 + + name + invalid.illegal.missing-section-begin.python + + + name + meta.class.python + patterns + + + begin + (?=[A-Za-z_][A-Za-z0-9_]*) + contentName + entity.name.type.class.python + end + (?![A-Za-z0-9_]) + patterns + + + include + #entity_name_class + + + + + begin + (\() + beginCaptures + + 1 + + name + punctuation.definition.inheritance.begin.python + + + contentName + meta.class.inheritance.python + end + (?=\)|:) + patterns + + + begin + (?<=\(|,)\s* + contentName + entity.other.inherited-class.python + end + \s*(?:(,)|(?=\))) + endCaptures + + 1 + + name + punctuation.separator.inheritance.python + + + patterns + + + include + $self + + + + + + + + + begin + ^\s*(class)\s+(?=[a-zA-Z_][a-zA-Z_0-9]) + beginCaptures + + 1 + + name + storage.type.class.python + + + end + (\()|\s*($\n?|#.*$\n?) + endCaptures + + 1 + + name + punctuation.definition.inheritance.begin.python + + 2 + + name + invalid.illegal.missing-inheritance.python + + + name + meta.class.python + patterns + + + begin + (?=[A-Za-z_][A-Za-z0-9_]*) + contentName + entity.name.type.class.python + end + (?![A-Za-z0-9_]) + patterns + + + include + #entity_name_function + + + + + + + begin + ^\s*(def)\s+(?=[A-Za-z_][A-Za-z0-9_]*\s*\() + beginCaptures + + 1 + + name + storage.type.function.python + + + end + (\))\s*(?:(\:)|(.*$\n?)) + endCaptures + + 1 + + name + punctuation.definition.parameters.end.python + + 2 + + name + punctuation.section.function.begin.python + + 3 + + name + invalid.illegal.missing-section-begin.python + + + name + meta.function.python + patterns + + + begin + (?=[A-Za-z_][A-Za-z0-9_]*) + contentName + entity.name.function.python + end + (?![A-Za-z0-9_]) + patterns + + + include + #entity_name_function + + + + + begin + (\() + beginCaptures + + 1 + + name + punctuation.definition.parameters.begin.python + + + contentName + meta.function.parameters.python + end + (?=\)\s*\:) + patterns + + + include + #keyword_arguments + + + captures + + 1 + + name + variable.parameter.function.python + + 2 + + name + punctuation.separator.parameters.python + + + match + \b([a-zA-Z_][a-zA-Z_0-9]*)\s*(?:(,)|(?=[\n\)])) + + + + + + + begin + ^\s*(def)\s+(?=[A-Za-z_][A-Za-z0-9_]*) + beginCaptures + + 1 + + name + storage.type.function.python + + + end + (\()|\s*($\n?|#.*$\n?) + endCaptures + + 1 + + name + punctuation.definition.parameters.begin.python + + 2 + + name + invalid.illegal.missing-parameters.python + + + name + meta.function.python + patterns + + + begin + (?=[A-Za-z_][A-Za-z0-9_]*) + contentName + entity.name.function.python + end + (?![A-Za-z0-9_]) + patterns + + + include + #entity_name_function + + + + + + + begin + (lambda)(?=\s+) + beginCaptures + + 1 + + name + storage.type.function.inline.python + + + end + (\:) + endCaptures + + 1 + + name + punctuation.definition.parameters.end.python + + 2 + + name + punctuation.section.function.begin.python + + 3 + + name + invalid.illegal.missing-section-begin.python + + + name + meta.function.inline.python + patterns + + + begin + \s+ + contentName + meta.function.inline.parameters.python + end + (?=\:) + patterns + + + include + #keyword_arguments + + + captures + + 1 + + name + variable.parameter.function.python + + 2 + + name + punctuation.separator.parameters.python + + + match + \b([a-zA-Z_][a-zA-Z_0-9]*)\s*(?:(,)|(?=[\n\)\:])) + + + + + + + begin + ^\s*(?=@\s*[A-Za-z_][A-Za-z0-9_]*(?:\.[a-zA-Z_][a-zA-Z_0-9]*)*\s*\() + comment + a decorator may be a function call which returns a decorator. + end + (\)) + endCaptures + + 1 + + name + punctuation.definition.arguments.end.python + + + name + meta.function.decorator.python + patterns + + + begin + (?=(@)\s*[A-Za-z_][A-Za-z0-9_]*(?:\.[A-Za-z_][A-Za-z0-9_]*)*\s*\() + beginCaptures + + 1 + + name + punctuation.definition.decorator.python + + + contentName + entity.name.function.decorator.python + end + (?=\s*\() + patterns + + + include + #dotted_name + + + + + begin + (\() + beginCaptures + + 1 + + name + punctuation.definition.arguments.begin.python + + + contentName + meta.function.decorator.arguments.python + end + (?=\)) + patterns + + + include + #keyword_arguments + + + include + $self + + + + + + + begin + ^\s*(?=@\s*[A-Za-z_][A-Za-z0-9_]*(?:\.[a-zA-Z_][a-zA-Z_0-9]*)*) + contentName + entity.name.function.decorator.python + end + (?=\s|$\n?|#) + name + meta.function.decorator.python + patterns + + + begin + (?=(@)\s*[A-Za-z_][A-Za-z0-9_]*(\.[A-Za-z_][A-Za-z0-9_]*)*) + beginCaptures + + 1 + + name + punctuation.definition.decorator.python + + + end + (?=\s|$\n?|#) + patterns + + + include + #dotted_name + + + + + + + begin + (?<=\)|\])\s*(\() + beginCaptures + + 1 + + name + punctuation.definition.arguments.begin.python + + + contentName + meta.function-call.arguments.python + end + (\)) + endCaptures + + 1 + + name + punctuation.definition.arguments.end.python + + + name + meta.function-call.python + patterns + + + include + #keyword_arguments + + + include + $self + + + + + begin + (?=[A-Za-z_][A-Za-z0-9_]*(?:\.[a-zA-Z_][a-zA-Z_0-9]*)*\s*\() + end + (\)) + endCaptures + + 1 + + name + punctuation.definition.arguments.end.python + + + name + meta.function-call.python + patterns + + + begin + (?=[A-Za-z_][A-Za-z0-9_]*(?:\.[A-Za-z_][A-Za-z0-9_]*)*\s*\() + end + (?=\s*\() + patterns + + + include + #dotted_name + + + + + begin + (\() + beginCaptures + + 1 + + name + punctuation.definition.arguments.begin.python + + + contentName + meta.function-call.arguments.python + end + (?=\)) + patterns + + + include + #keyword_arguments + + + include + $self + + + + + + + begin + (?=[A-Za-z_][A-Za-z0-9_]*(?:\.[a-zA-Z_][a-zA-Z_0-9]*)*\s*\[) + end + (\]) + endCaptures + + 1 + + name + punctuation.definition.arguments.end.python + + + name + meta.item-access.python + patterns + + + begin + (?=[A-Za-z_][A-Za-z0-9_]*(?:\.[A-Za-z_][A-Za-z0-9_]*)*\s*\[) + end + (?=\s*\[) + patterns + + + include + #dotted_name + + + + + begin + (\[) + beginCaptures + + 1 + + name + punctuation.definition.arguments.begin.python + + + contentName + meta.item-access.arguments.python + end + (?=\]) + patterns + + + include + $self + + + + + + + begin + (?<=\)|\])\s*(\[) + beginCaptures + + 1 + + name + punctuation.definition.arguments.begin.python + + + contentName + meta.item-access.arguments.python + end + (\]) + endCaptures + + 1 + + name + punctuation.definition.arguments.end.python + + + name + meta.item-access.python + patterns + + + include + $self + + + + + captures + + 1 + + name + storage.type.function.python + + + match + \b(def|lambda)\b + + + captures + + 1 + + name + storage.type.class.python + + + match + \b(class)\b + + + include + #line_continuation + + + include + #language_variables + + + match + \b(None|True|False|Ellipsis|NotImplemented)\b + name + constant.language.python + + + include + #string_quoted_single + + + include + #string_quoted_double + + + include + #dotted_name + + + begin + (\() + end + (\)) + patterns + + + include + $self + + + + + captures + + 1 + + name + punctuation.definition.list.begin.python + + 2 + + name + meta.empty-list.python + + 3 + + name + punctuation.definition.list.end.python + + + match + (\[)(\s*(\]))\b + + + begin + (\[) + beginCaptures + + 1 + + name + punctuation.definition.list.begin.python + + + end + (\]) + endCaptures + + 1 + + name + punctuation.definition.list.end.python + + + name + meta.structure.list.python + patterns + + + begin + (?<=\[|\,)\s*(?![\],]) + contentName + meta.structure.list.item.python + end + \s*(?:(,)|(?=\])) + endCaptures + + 1 + + name + punctuation.separator.list.python + + + patterns + + + include + $self + + + + + + + captures + + 1 + + name + punctuation.definition.tuple.begin.python + + 2 + + name + meta.empty-tuple.python + + 3 + + name + punctuation.definition.tuple.end.python + + + match + (\()(\s*(\))) + name + meta.structure.tuple.python + + + captures + + 1 + + name + punctuation.definition.dictionary.begin.python + + 2 + + name + meta.empty-dictionary.python + + 3 + + name + punctuation.definition.dictionary.end.python + + + match + (\{)(\s*(\})) + name + meta.structure.dictionary.python + + + begin + (\{) + beginCaptures + + 1 + + name + punctuation.definition.dictionary.begin.python + + + end + (\}) + endCaptures + + 1 + + name + punctuation.definition.dictionary.end.python + + + name + meta.structure.dictionary.python + patterns + + + begin + (?<=\{|\,|^)\s*(?![\},]) + contentName + meta.structure.dictionary.key.python + end + \s*(?:(?=\})|(\:)) + endCaptures + + 1 + + name + punctuation.separator.valuepair.dictionary.python + + + patterns + + + include + $self + + + + + begin + (?<=\:|^)\s* + contentName + meta.structure.dictionary.value.python + end + \s*(?:(?=\})|(,)) + endCaptures + + 1 + + name + punctuation.separator.dictionary.python + + + patterns + + + include + $self + + + + + + + repository + + builtin_exceptions + + match + (?x)\b( + ( + Arithmetic|Assertion|Attribute|Buffer|EOF|Environment|FloatingPoint|IO| + Import|Indentation|Index|Key|Lookup|Memory|Name|NotImplemented|OS|Overflow| + Reference|Runtime|Standard|Syntax|System|Tab|Type|UnboundLocal| + Unicode(Encode|Decode|Translate)?| + Value|VMS|Windows|ZeroDivision + )Error| + ((Pending)?Deprecation|Runtime|Syntax|User|Future|Import|Unicode|Bytes)?Warning| + (Base)?Exception| + SystemExit|StopIteration|NotImplemented|KeyboardInterrupt|GeneratorExit + )\b + name + support.type.exception.python + + builtin_functions + + match + (?x)\b( + __import__|all|abs|any|apply|callable|chr|cmp|coerce|compile|delattr|dir| + divmod|eval|execfile|filter|getattr|globals|hasattr|hash|hex|id| + input|intern|isinstance|issubclass|iter|len|locals|map|max|min|oct| + ord|pow|range|raw_input|reduce|reload|repr|round|setattr|sorted| + sum|unichr|vars|zip + )\b + name + support.function.builtin.python + + builtin_types + + match + (?x)\b( + basestring|bool|buffer|classmethod|complex|dict|enumerate|file| + float|frozenset|int|list|long|object|open|property|reversed|set| + slice|staticmethod|str|super|tuple|type|unicode|xrange + )\b + name + support.type.python + + constant_placeholder + + match + (?i:%(\([a-z_]+\))?#?0?\-?[ ]?\+?([0-9]*|\*)(\.([0-9]*|\*))?[hL]?[a-z%]) + name + constant.other.placeholder.python + + docstrings + + patterns + + + begin + ^\s*(?=[uU]?[rR]?""") + end + (?<=""") + name + comment.block.python + patterns + + + include + #string_quoted_double + + + + + begin + ^\s*(?=[uU]?[rR]?''') + end + (?<=''') + name + comment.block.python + patterns + + + include + #string_quoted_single + + + + + + dotted_name + + begin + (?=[A-Za-z_][A-Za-z0-9_]*(?:\.[A-Za-z_][A-Za-z0-9_]*)*) + end + (?![A-Za-z0-9_\.]) + patterns + + + begin + (\.)(?=[A-Za-z_][A-Za-z0-9_]*) + end + (?![A-Za-z0-9_]) + patterns + + + include + #magic_function_names + + + include + #magic_variable_names + + + include + #illegal_names + + + include + #generic_names + + + + + begin + (?<!\.)(?=[A-Za-z_][A-Za-z0-9_]*) + end + (?![A-Za-z0-9_]) + patterns + + + include + #builtin_functions + + + include + #builtin_types + + + include + #builtin_exceptions + + + include + #illegal_names + + + include + #magic_function_names + + + include + #magic_variable_names + + + include + #language_variables + + + include + #generic_names + + + + + + entity_name_class + + patterns + + + include + #illegal_names + + + include + #generic_names + + + + entity_name_function + + patterns + + + include + #magic_function_names + + + include + #illegal_names + + + include + #generic_names + + + + escaped_char + + captures + + 1 + + name + constant.character.escape.hex.python + + 10 + + name + constant.character.escape.linefeed.python + + 11 + + name + constant.character.escape.return.python + + 12 + + name + constant.character.escape.tab.python + + 13 + + name + constant.character.escape.vertical-tab.python + + 2 + + name + constant.character.escape.octal.python + + 3 + + name + constant.character.escape.newline.python + + 4 + + name + constant.character.escape.backlash.python + + 5 + + name + constant.character.escape.double-quote.python + + 6 + + name + constant.character.escape.single-quote.python + + 7 + + name + constant.character.escape.bell.python + + 8 + + name + constant.character.escape.backspace.python + + 9 + + name + constant.character.escape.formfeed.python + + + match + (\\x[0-9A-F]{2})|(\\[0-7]{3})|(\\\n)|(\\\\)|(\\\")|(\\')|(\\a)|(\\b)|(\\f)|(\\n)|(\\r)|(\\t)|(\\v) + + escaped_unicode_char + + captures + + 1 + + name + constant.character.escape.unicode.16-bit-hex.python + + 2 + + name + constant.character.escape.unicode.32-bit-hex.python + + 3 + + name + constant.character.escape.unicode.name.python + + + match + (\\U[0-9A-Fa-f]{8})|(\\u[0-9A-Fa-f]{4})|(\\N\{[a-zA-Z ]+\}) + + function_name + + patterns + + + include + #magic_function_names + + + include + #magic_variable_names + + + include + #builtin_exceptions + + + include + #builtin_functions + + + include + #builtin_types + + + include + #generic_names + + + + generic_names + + match + [A-Za-z_][A-Za-z0-9_]* + + illegal_names + + match + \b(and|as|assert|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|raise|return|try|while|with|yield)\b + name + invalid.illegal.name.python + + keyword_arguments + + begin + \b([a-zA-Z_][a-zA-Z_0-9]*)\s*(=)(?!=) + beginCaptures + + 1 + + name + variable.parameter.function.python + + 2 + + name + keyword.operator.assignment.python + + + end + \s*(?:(,)|(?=$\n?|[\)\:])) + endCaptures + + 1 + + name + punctuation.separator.parameters.python + + + patterns + + + include + $self + + + + language_variables + + match + \b(self|cls)\b + name + variable.language.python + + line_continuation + + captures + + 1 + + name + punctuation.separator.continuation.line.python + + 2 + + name + invalid.illegal.unexpected-text.python + + + match + (\\)(.*)$\n? + + magic_function_names + + comment + these methods have magic interpretation by python and are generally called indirectly through syntactic constructs + match + (?x)\b(__(?: + abs|add|and|call|cmp|coerce|complex|contains|del|delattr| + delete|delitem|delslice|div|divmod|enter|eq|exit|float| + floordiv|ge|get|getattr|getattribute|getitem|getslice|gt| + hash|hex|iadd|iand|idiv|ifloordiv|ilshift|imod|imul|init| + int|invert|ior|ipow|irshift|isub|iter|itruediv|ixor|le|len| + long|lshift|lt|mod|mul|ne|neg|new|nonzero|oct|or|pos|pow| + radd|rand|rdiv|rdivmod|repr|rfloordiv|rlshift|rmod|rmul|ror| + rpow|rrshift|rshift|rsub|rtruediv|rxor|set|setattr|setitem| + setslice|str|sub|truediv|unicode|xor + )__)\b + name + support.function.magic.python + + magic_variable_names + + comment + magic variables which a class/module may have. + match + \b__(all|bases|class|debug|dict|doc|file|members|metaclass|methods|name|slots|weakref)__\b + name + support.variable.magic.python + + regular_expressions + + comment + Changed disabled to 1 to turn off syntax highlighting in “r” strings. + disabled + 0 + patterns + + + include + source.regexp.python + + + + string_quoted_double + + patterns + + + begin + ([uU]r)(""") + beginCaptures + + 1 + + name + storage.type.string.python + + 2 + + name + punctuation.definition.string.begin.python + + + comment + single quoted unicode-raw string + end + ((?<=""")(")""|""") + endCaptures + + 1 + + name + punctuation.definition.string.end.python + + 2 + + name + meta.empty-string.double.python + + + name + string.quoted.double.block.unicode-raw-regex.python + patterns + + + include + #constant_placeholder + + + include + #escaped_unicode_char + + + include + #escaped_char + + + include + #regular_expressions + + + + + begin + ([uU]R)(""") + beginCaptures + + 1 + + name + storage.type.string.python + + 2 + + name + punctuation.definition.string.begin.python + + + comment + single quoted unicode-raw string without regular expression highlighting + end + ((?<=""")(")""|""") + endCaptures + + 1 + + name + punctuation.definition.string.end.python + + 2 + + name + meta.empty-string.double.python + + + name + string.quoted.double.block.unicode-raw.python + patterns + + + include + #constant_placeholder + + + include + #escaped_unicode_char + + + include + #escaped_char + + + + + begin + (r)(""") + beginCaptures + + 1 + + name + storage.type.string.python + + 2 + + name + punctuation.definition.string.begin.python + + + comment + double quoted raw string + end + ((?<=""")(")""|""") + endCaptures + + 1 + + name + punctuation.definition.string.end.python + + 2 + + name + meta.empty-string.double.python + + + name + string.quoted.double.block.raw-regex.python + patterns + + + include + #constant_placeholder + + + include + #escaped_char + + + include + #regular_expressions + + + + + begin + (R)(""") + beginCaptures + + 1 + + name + storage.type.string.python + + 2 + + name + punctuation.definition.string.begin.python + + + comment + double quoted raw string + end + ((?<=""")(")""|""") + endCaptures + + 1 + + name + punctuation.definition.string.end.python + + 2 + + name + meta.empty-string.double.python + + + name + string.quoted.double.block.raw.python + patterns + + + include + #constant_placeholder + + + include + #escaped_char + + + + + begin + ([uU])(""") + beginCaptures + + 1 + + name + storage.type.string.python + + 2 + + name + punctuation.definition.string.begin.python + + + comment + double quoted unicode string + end + ((?<=""")(")""|""") + endCaptures + + 1 + + name + punctuation.definition.string.end.python + + 2 + + name + meta.empty-string.double.python + + + name + string.quoted.double.block.unicode.python + patterns + + + include + #constant_placeholder + + + include + #escaped_unicode_char + + + include + #escaped_char + + + + + begin + ([uU]r)(") + beginCaptures + + 1 + + name + storage.type.string.python + + 2 + + name + punctuation.definition.string.begin.python + + + comment + double-quoted raw string + end + ((?<=")(")|")|(\n) + endCaptures + + 1 + + name + punctuation.definition.string.end.python + + 2 + + name + meta.empty-string.double.python + + 3 + + name + invalid.illegal.unclosed-string.python + + + name + string.quoted.double.single-line.unicode-raw-regex.python + patterns + + + include + #constant_placeholder + + + include + #escaped_unicode_char + + + include + #escaped_char + + + include + #regular_expressions + + + + + begin + ([uU]R)(") + beginCaptures + + 1 + + name + storage.type.string.python + + 2 + + name + punctuation.definition.string.begin.python + + + comment + double-quoted raw string + end + ((?<=")(")|")|(\n) + endCaptures + + 1 + + name + punctuation.definition.string.end.python + + 2 + + name + meta.empty-string.double.python + + 3 + + name + invalid.illegal.unclosed-string.python + + + name + string.quoted.double.single-line.unicode-raw.python + patterns + + + include + #constant_placeholder + + + include + #escaped_unicode_char + + + include + #escaped_char + + + + + begin + (r)(") + beginCaptures + + 1 + + name + storage.type.string.python + + 2 + + name + punctuation.definition.string.begin.python + + + comment + double-quoted raw string + end + ((?<=")(")|")|(\n) + endCaptures + + 1 + + name + punctuation.definition.string.end.python + + 2 + + name + meta.empty-string.double.python + + 3 + + name + invalid.illegal.unclosed-string.python + + + name + string.quoted.double.single-line.raw-regex.python + patterns + + + include + #constant_placeholder + + + include + #escaped_char + + + include + #regular_expressions + + + + + begin + (R)(") + beginCaptures + + 1 + + name + storage.type.string.python + + 2 + + name + punctuation.definition.string.begin.python + + + comment + double-quoted raw string + end + ((?<=")(")|")|(\n) + endCaptures + + 1 + + name + punctuation.definition.string.end.python + + 2 + + name + meta.empty-string.double.python + + 3 + + name + invalid.illegal.unclosed-string.python + + + name + string.quoted.double.single-line.raw.python + patterns + + + include + #constant_placeholder + + + include + #escaped_char + + + + + begin + ([uU])(") + beginCaptures + + 1 + + name + storage.type.string.python + + 2 + + name + punctuation.definition.string.begin.python + + + comment + double quoted unicode string + end + ((?<=")(")|")|(\n) + endCaptures + + 1 + + name + punctuation.definition.string.end.python + + 2 + + name + meta.empty-string.double.python + + 3 + + name + invalid.illegal.unclosed-string.python + + + name + string.quoted.double.single-line.unicode.python + patterns + + + include + #constant_placeholder + + + include + #escaped_unicode_char + + + include + #escaped_char + + + + + begin + (""")(?=\s*(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER)) + beginCaptures + + 1 + + name + punctuation.definition.string.begin.python + + + comment + double quoted string + end + ((?<=""")(")""|""") + endCaptures + + 1 + + name + punctuation.definition.string.end.python + + 2 + + name + meta.empty-string.double.python + + + name + string.quoted.double.block.sql.python + patterns + + + include + #constant_placeholder + + + include + #escaped_char + + + include + source.sql + + + + + begin + (")(?=\s*(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER)) + beginCaptures + + 1 + + name + punctuation.definition.string.begin.python + + + comment + double quoted string + end + ((?<=")(")|")|(\n) + endCaptures + + 1 + + name + punctuation.definition.string.end.python + + 2 + + name + meta.empty-string.double.python + + 3 + + name + invalid.illegal.unclosed-string.python + + + name + string.quoted.double.single-line.sql.python + patterns + + + include + #constant_placeholder + + + include + #escaped_char + + + include + source.sql + + + + + begin + (""") + beginCaptures + + 1 + + name + punctuation.definition.string.begin.python + + + comment + double quoted string + end + ((?<=""")(")""|""") + endCaptures + + 1 + + name + punctuation.definition.string.end.python + + 2 + + name + meta.empty-string.double.python + + + name + string.quoted.double.block.python + patterns + + + include + #constant_placeholder + + + include + #escaped_char + + + + + begin + (") + beginCaptures + + 1 + + name + punctuation.definition.string.begin.python + + + comment + double quoted string + end + ((?<=")(")|")|(\n) + endCaptures + + 1 + + name + punctuation.definition.string.end.python + + 2 + + name + meta.empty-string.double.python + + 3 + + name + invalid.illegal.unclosed-string.python + + + name + string.quoted.double.single-line.python + patterns + + + include + #constant_placeholder + + + include + #escaped_char + + + + + + string_quoted_single + + patterns + + + captures + + 1 + + name + punctuation.definition.string.begin.python + + 2 + + name + punctuation.definition.string.end.python + + 3 + + name + meta.empty-string.single.python + + + match + (?<!')(')(('))(?!') + name + string.quoted.single.single-line.python + + + begin + ([uU]r)(''') + beginCaptures + + 1 + + name + storage.type.string.python + + 2 + + name + punctuation.definition.string.begin.python + + + comment + single quoted unicode-raw string + end + ((?<=''')(')''|''') + endCaptures + + 1 + + name + punctuation.definition.string.end.python + + 2 + + name + meta.empty-string.single.python + + + name + string.quoted.single.block.unicode-raw-regex.python + patterns + + + include + #constant_placeholder + + + include + #escaped_unicode_char + + + include + #escaped_char + + + include + #regular_expressions + + + + + begin + ([uU]R)(''') + beginCaptures + + 1 + + name + storage.type.string.python + + 2 + + name + punctuation.definition.string.begin.python + + + comment + single quoted unicode-raw string + end + ((?<=''')(')''|''') + endCaptures + + 1 + + name + punctuation.definition.string.end.python + + 2 + + name + meta.empty-string.single.python + + + name + string.quoted.single.block.unicode-raw.python + patterns + + + include + #constant_placeholder + + + include + #escaped_unicode_char + + + include + #escaped_char + + + + + begin + (r)(''') + beginCaptures + + 1 + + name + storage.type.string.python + + 2 + + name + punctuation.definition.string.begin.python + + + comment + single quoted raw string + end + ((?<=''')(')''|''') + endCaptures + + 1 + + name + punctuation.definition.string.end.python + + 2 + + name + meta.empty-string.single.python + + + name + string.quoted.single.block.raw-regex.python + patterns + + + include + #constant_placeholder + + + include + #escaped_char + + + include + #regular_expressions + + + + + begin + (R)(''') + beginCaptures + + 1 + + name + storage.type.string.python + + 2 + + name + punctuation.definition.string.begin.python + + + comment + single quoted raw string + end + ((?<=''')(')''|''') + endCaptures + + 1 + + name + punctuation.definition.string.end.python + + 2 + + name + meta.empty-string.single.python + + + name + string.quoted.single.block.raw.python + patterns + + + include + #constant_placeholder + + + include + #escaped_char + + + + + begin + ([uU])(''') + beginCaptures + + 1 + + name + storage.type.string.python + + 2 + + name + punctuation.definition.string.begin.python + + + comment + single quoted unicode string + end + ((?<=''')(')''|''') + endCaptures + + 1 + + name + punctuation.definition.string.end.python + + 2 + + name + meta.empty-string.single.python + + + name + string.quoted.single.block.unicode.python + patterns + + + include + #constant_placeholder + + + include + #escaped_unicode_char + + + include + #escaped_char + + + + + begin + ([uU]r)(') + beginCaptures + + 1 + + name + storage.type.string.python + + 2 + + name + punctuation.definition.string.begin.python + + + comment + single quoted raw string + end + (')|(\n) + endCaptures + + 1 + + name + punctuation.definition.string.end.python + + 2 + + name + invalid.illegal.unclosed-string.python + + + name + string.quoted.single.single-line.unicode-raw-regex.python + patterns + + + include + #constant_placeholder + + + include + #escaped_unicode_char + + + include + #escaped_char + + + include + #regular_expressions + + + + + begin + ([uU]R)(') + beginCaptures + + 1 + + name + storage.type.string.python + + 2 + + name + punctuation.definition.string.begin.python + + + comment + single quoted raw string + end + (')|(\n) + endCaptures + + 1 + + name + punctuation.definition.string.end.python + + 2 + + name + invalid.illegal.unclosed-string.python + + + name + string.quoted.single.single-line.unicode-raw.python + patterns + + + include + #constant_placeholder + + + include + #escaped_unicode_char + + + include + #escaped_char + + + + + begin + (r)(') + beginCaptures + + 1 + + name + storage.type.string.python + + 2 + + name + punctuation.definition.string.begin.python + + + comment + single quoted raw string + end + (')|(\n) + endCaptures + + 1 + + name + punctuation.definition.string.end.python + + 2 + + name + invalid.illegal.unclosed-string.python + + + name + string.quoted.single.single-line.raw-regex.python + patterns + + + include + #constant_placeholder + + + include + #escaped_char + + + include + #regular_expressions + + + + + begin + (R)(') + beginCaptures + + 1 + + name + storage.type.string.python + + 2 + + name + punctuation.definition.string.begin.python + + + comment + single quoted raw string + end + (')|(\n) + endCaptures + + 1 + + name + punctuation.definition.string.end.python + + 2 + + name + invalid.illegal.unclosed-string.python + + + name + string.quoted.single.single-line.raw.python + patterns + + + include + #constant_placeholder + + + include + #escaped_char + + + + + begin + ([uU])(') + beginCaptures + + 1 + + name + storage.type.string.python + + 2 + + name + punctuation.definition.string.begin.python + + + comment + single quoted unicode string + end + (')|(\n) + endCaptures + + 1 + + name + punctuation.definition.string.end.python + + 2 + + name + invalid.illegal.unclosed-string.python + + + name + string.quoted.single.single-line.unicode.python + patterns + + + include + #constant_placeholder + + + include + #escaped_unicode_char + + + include + #escaped_char + + + + + begin + (''')(?=\s*(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER)) + beginCaptures + + 1 + + name + punctuation.definition.string.begin.python + + + comment + single quoted string + end + ((?<=''')(')''|''') + endCaptures + + 1 + + name + punctuation.definition.string.end.python + + 2 + + name + meta.empty-string.single.python + + + name + string.quoted.single.block.python + patterns + + + include + #constant_placeholder + + + include + #escaped_char + + + include + source.sql + + + + + begin + (')(?=\s*(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER)) + beginCaptures + + 1 + + name + punctuation.definition.string.begin.python + + + comment + single quoted string + end + (')|(\n) + endCaptures + + 1 + + name + punctuation.definition.string.end.python + + 2 + + name + invalid.illegal.unclosed-string.python + + + name + string.quoted.single.single-line.python + patterns + + + include + #constant_placeholder + + + include + #escaped_char + + + include + source.sql + + + + + begin + (''') + beginCaptures + + 1 + + name + punctuation.definition.string.begin.python + + + comment + single quoted string + end + ((?<=''')(')''|''') + endCaptures + + 1 + + name + punctuation.definition.string.end.python + + 2 + + name + meta.empty-string.single.python + + + name + string.quoted.single.block.python + patterns + + + include + #constant_placeholder + + + include + #escaped_char + + + + + begin + (') + beginCaptures + + 1 + + name + punctuation.definition.string.begin.python + + + comment + single quoted string + end + (')|(\n) + endCaptures + + 1 + + name + punctuation.definition.string.end.python + + 2 + + name + invalid.illegal.unclosed-string.python + + + name + string.quoted.single.single-line.python + patterns + + + include + #constant_placeholder + + + include + #escaped_char + + + + + + strings + + patterns + + + include + #string_quoted_double + + + include + #string_quoted_single + + + + + scopeName + source.python + uuid + F23DB5B2-7D08-11D9-A709-000D93B6E43C + + diff --git a/Python/Python.tmLanguage.cache b/Python/Python.tmLanguage.cache new file mode 100644 index 0000000..a031d89 Binary files /dev/null and b/Python/Python.tmLanguage.cache differ diff --git a/Python/Regular Expressions (Python).tmLanguage b/Python/Regular Expressions (Python).tmLanguage new file mode 100644 index 0000000..80226aa --- /dev/null +++ b/Python/Regular Expressions (Python).tmLanguage @@ -0,0 +1,299 @@ + + + + + comment + Matches Python's regular expression syntax. + fileTypes + + re + + foldingStartMarker + (/\*|\{|\() + foldingStopMarker + (\*/|\}|\)) + name + Regular Expressions (Python) + patterns + + + match + \\[bBAZzG]|\^|\$ + name + keyword.control.anchor.regexp + + + match + \\[1-9][0-9]? + name + keyword.other.back-reference.regexp + + + match + [?+*][?+]?|\{(\d+,\d+|\d+,|,\d+|\d+)\}\?? + name + keyword.operator.quantifier.regexp + + + match + \| + name + keyword.operator.or.regexp + + + begin + \(\?\# + end + \) + name + comment.block.regexp + + + comment + We are restrictive in what we allow to go after the comment character to avoid false positives, since the availability of comments depend on regexp flags. + match + (?<=^|\s)#\s[[a-zA-Z0-9,. \t?!-:][^\x{00}-\x{7F}]]*$ + name + comment.line.number-sign.regexp + + + match + \(\?[iLmsux]+\) + name + keyword.other.option-toggle.regexp + + + match + (\()(\?P=([a-zA-Z_][a-zA-Z_0-9]*\w*))(\)) + name + keyword.other.back-reference.named.regexp + + + begin + (\()((\?=)|(\?!)|(\?<=)|(\?<!)) + beginCaptures + + 1 + + name + punctuation.definition.group.regexp + + 2 + + name + punctuation.definition.group.assertion.regexp + + 3 + + name + meta.assertion.look-ahead.regexp + + 4 + + name + meta.assertion.negative-look-ahead.regexp + + 5 + + name + meta.assertion.look-behind.regexp + + 6 + + name + meta.assertion.negative-look-behind.regexp + + + end + (\)) + endCaptures + + 1 + + name + punctuation.definition.group.regexp + + + name + meta.group.assertion.regexp + patterns + + + include + $self + + + + + begin + (\()(\?\(([1-9][0-9]?|[a-zA-Z_][a-zA-Z_0-9]*)\)) + beginCaptures + + 1 + + name + punctuation.definition.group.regexp + + 2 + + name + punctuation.definition.group.assertion.conditional.regexp + + 3 + + name + entity.name.section.back-reference.regexp + + + comment + we can make this more sophisticated to match the | character that separates yes-pattern from no-pattern, but it's not really necessary. + end + (\)) + name + meta.group.assertion.conditional.regexp + patterns + + + include + $self + + + + + begin + (\()((\?P<)([a-z]\w*)(>)|(\?:))? + beginCaptures + + 1 + + name + punctuation.definition.group.regexp + + 3 + + name + punctuation.definition.group.capture.regexp + + 4 + + name + entity.name.section.group.regexp + + 5 + + name + punctuation.definition.group.capture.regexp + + 6 + + name + punctuation.definition.group.no-capture.regexp + + + end + (\)) + endCaptures + + 1 + + name + punctuation.definition.group.regexp + + + name + meta.group.regexp + patterns + + + include + $self + + + + + include + #character-class + + + repository + + character-class + + patterns + + + match + \\[wWsSdDhH]|\. + name + constant.character.character-class.regexp + + + match + \\. + name + constant.character.escape.backslash.regexp + + + begin + (\[)(\^)? + beginCaptures + + 1 + + name + punctuation.definition.character-class.regexp + + 2 + + name + keyword.operator.negation.regexp + + + end + (\]) + endCaptures + + 1 + + name + punctuation.definition.character-class.regexp + + + name + constant.other.character-class.set.regexp + patterns + + + include + #character-class + + + captures + + 2 + + name + constant.character.escape.backslash.regexp + + 4 + + name + constant.character.escape.backslash.regexp + + + match + ((\\.)|.)\-((\\.)|[^\]]) + name + constant.other.character-class.range.regexp + + + + + + + scopeName + source.regexp.python + uuid + DD867ABF-1EC6-415D-B047-687F550A1D51 + + diff --git a/Python/Regular Expressions (Python).tmLanguage.cache b/Python/Regular Expressions (Python).tmLanguage.cache new file mode 100644 index 0000000..b687a3f Binary files /dev/null and b/Python/Regular Expressions (Python).tmLanguage.cache differ diff --git a/Python/Symbol List Hide Decorator.tmPreferences b/Python/Symbol List Hide Decorator.tmPreferences new file mode 100644 index 0000000..367aebb --- /dev/null +++ b/Python/Symbol List Hide Decorator.tmPreferences @@ -0,0 +1,17 @@ + + + + + name + Symbol List: Hide Decorator + scope + source.python meta.function.decorator.python entity.name.function.decorator.python + settings + + showInSymbolList + 0 + + uuid + F5CE4B1B-6167-4693-A49B-021D97C18F5A + + diff --git a/Python/Symbol List Hide Decorator.tmPreferences.cache b/Python/Symbol List Hide Decorator.tmPreferences.cache new file mode 100644 index 0000000..8f2e3f1 Binary files /dev/null and b/Python/Symbol List Hide Decorator.tmPreferences.cache differ diff --git a/Python/Symbol List.tmPreferences b/Python/Symbol List.tmPreferences new file mode 100644 index 0000000..0b581f7 --- /dev/null +++ b/Python/Symbol List.tmPreferences @@ -0,0 +1,22 @@ + + + + + name + Symbol List + scope + source.python meta.function.python, source.python meta.class.python + settings + + showInSymbolList + 1 + symbolTransformation + + s/class\s+([A-Za-z_][A-Za-z0-9_]*.+?\)?)(\:|$)/$1/g; + s/def\s+([A-Za-z_][A-Za-z0-9_]*\()(?:(.{0,40}?\))|((.{40}).+?\)))(\:)/$1(?2:$2)(?3:$4…\))/g; + + + uuid + 005BE156-8D74-4036-AF38-283708645115 + + diff --git a/Python/Symbol List.tmPreferences.cache b/Python/Symbol List.tmPreferences.cache new file mode 100644 index 0000000..84d4909 Binary files /dev/null and b/Python/Symbol List.tmPreferences.cache differ diff --git a/Python/Try-Except-Else-Finally.sublime-snippet b/Python/Try-Except-Else-Finally.sublime-snippet new file mode 100644 index 0000000..00c41fb --- /dev/null +++ b/Python/Try-Except-Else-Finally.sublime-snippet @@ -0,0 +1,13 @@ + + + try + source.python + Try/Except/Else/Finally + diff --git a/Python/Try-Except-Else.sublime-snippet b/Python/Try-Except-Else.sublime-snippet new file mode 100644 index 0000000..6845aba --- /dev/null +++ b/Python/Try-Except-Else.sublime-snippet @@ -0,0 +1,11 @@ + + + try + source.python + Try/Except/Else + diff --git a/Python/Try-Except-Finally.sublime-snippet b/Python/Try-Except-Finally.sublime-snippet new file mode 100644 index 0000000..0ee74a4 --- /dev/null +++ b/Python/Try-Except-Finally.sublime-snippet @@ -0,0 +1,11 @@ + + + try + source.python + Try/Except/Finally + diff --git a/Python/Try-Except.sublime-snippet b/Python/Try-Except.sublime-snippet new file mode 100644 index 0000000..bdf36a8 --- /dev/null +++ b/Python/Try-Except.sublime-snippet @@ -0,0 +1,9 @@ + + + try + source.python + Try/Except + diff --git a/Python/__magic__.sublime-snippet b/Python/__magic__.sublime-snippet new file mode 100644 index 0000000..a844f3e --- /dev/null +++ b/Python/__magic__.sublime-snippet @@ -0,0 +1,6 @@ + + + __ + source.python + __magic__ + diff --git a/Python/for.sublime-snippet b/Python/for.sublime-snippet new file mode 100644 index 0000000..3feeefc --- /dev/null +++ b/Python/for.sublime-snippet @@ -0,0 +1,11 @@ + + + for + source.python + For Loop + + + \ No newline at end of file diff --git a/Python/function.sublime-snippet b/Python/function.sublime-snippet new file mode 100644 index 0000000..41dd574 --- /dev/null +++ b/Python/function.sublime-snippet @@ -0,0 +1,8 @@ + + def + source.python + Function + + + \ No newline at end of file diff --git a/Python/if-__name__-==-'__main__'.sublime-snippet b/Python/if-__name__-==-'__main__'.sublime-snippet new file mode 100644 index 0000000..8a2f658 --- /dev/null +++ b/Python/if-__name__-==-'__main__'.sublime-snippet @@ -0,0 +1,7 @@ + + + ifmain + source.python + if __name__ == '__main__' + diff --git a/Python/if.sublime-snippet b/Python/if.sublime-snippet new file mode 100644 index 0000000..5262563 --- /dev/null +++ b/Python/if.sublime-snippet @@ -0,0 +1,10 @@ + + + if + source.python + If Condition + + \ No newline at end of file diff --git a/Python/method.sublime-snippet b/Python/method.sublime-snippet new file mode 100644 index 0000000..3e8c343 --- /dev/null +++ b/Python/method.sublime-snippet @@ -0,0 +1,8 @@ + + defs + source.python + Method + + + \ No newline at end of file diff --git a/Python/self.sublime-snippet b/Python/self.sublime-snippet new file mode 100644 index 0000000..83a819e --- /dev/null +++ b/Python/self.sublime-snippet @@ -0,0 +1,6 @@ + + + . + source.python + self + diff --git a/Python/while.sublime-snippet b/Python/while.sublime-snippet new file mode 100644 index 0000000..d5f6f08 --- /dev/null +++ b/Python/while.sublime-snippet @@ -0,0 +1,10 @@ + + + while + source.python + While Loop + + \ No newline at end of file diff --git a/R/Add-Tick-Marks.sublime-snippet b/R/Add-Tick-Marks.sublime-snippet new file mode 100644 index 0000000..0547b1a --- /dev/null +++ b/R/Add-Tick-Marks.sublime-snippet @@ -0,0 +1,6 @@ + + + rug + source.r, source.rd.console + Add Tick Marks + diff --git a/R/Attach.sublime-snippet b/R/Attach.sublime-snippet new file mode 100644 index 0000000..ab85404 --- /dev/null +++ b/R/Attach.sublime-snippet @@ -0,0 +1,6 @@ + + + att + source.r, source.rd.console + Attach + diff --git a/R/Comments.tmPreferences b/R/Comments.tmPreferences new file mode 100644 index 0000000..732b8e6 --- /dev/null +++ b/R/Comments.tmPreferences @@ -0,0 +1,24 @@ + + + + + name + Comments + scope + source.r + settings + + shellVariables + + + name + TM_COMMENT_START + value + # + + + + uuid + F38E1657-C2D9-48CE-9FFD-3EEA36D8B320 + + diff --git a/R/Comments.tmPreferences.cache b/R/Comments.tmPreferences.cache new file mode 100644 index 0000000..7c6e6be Binary files /dev/null and b/R/Comments.tmPreferences.cache differ diff --git a/R/Cummulative.sublime-snippet b/R/Cummulative.sublime-snippet new file mode 100644 index 0000000..92ec968 --- /dev/null +++ b/R/Cummulative.sublime-snippet @@ -0,0 +1,6 @@ + + + cum + source.r, source.rd.console + Cummulative + diff --git a/R/Density.sublime-snippet b/R/Density.sublime-snippet new file mode 100644 index 0000000..5a157c0 --- /dev/null +++ b/R/Density.sublime-snippet @@ -0,0 +1,6 @@ + + + den + source.r, source.rd.console + Density + diff --git a/R/Detach.sublime-snippet b/R/Detach.sublime-snippet new file mode 100644 index 0000000..4a95230 --- /dev/null +++ b/R/Detach.sublime-snippet @@ -0,0 +1,6 @@ + + + det + source.r, source.rd.console + Detach + diff --git a/R/Divide-Into-Intervals.sublime-snippet b/R/Divide-Into-Intervals.sublime-snippet new file mode 100644 index 0000000..655f0f4 --- /dev/null +++ b/R/Divide-Into-Intervals.sublime-snippet @@ -0,0 +1,6 @@ + + + cut + source.r, source.rd.console + Divide Into Intervals + diff --git a/R/Factor.sublime-snippet b/R/Factor.sublime-snippet new file mode 100644 index 0000000..f43fbe0 --- /dev/null +++ b/R/Factor.sublime-snippet @@ -0,0 +1,6 @@ + + + fac + source.r, source.rd.console + Factor + diff --git a/R/For-Loop.sublime-snippet b/R/For-Loop.sublime-snippet new file mode 100644 index 0000000..b703c7e --- /dev/null +++ b/R/For-Loop.sublime-snippet @@ -0,0 +1,6 @@ + + + for + source.r, source.rd.console + For Loop + diff --git a/R/Function.sublime-snippet b/R/Function.sublime-snippet new file mode 100644 index 0000000..de20e75 --- /dev/null +++ b/R/Function.sublime-snippet @@ -0,0 +1,6 @@ + + + fun + source.r, source.rd.console + Function + diff --git a/R/Ifelse.sublime-snippet b/R/Ifelse.sublime-snippet new file mode 100644 index 0000000..d9c4544 --- /dev/null +++ b/R/Ifelse.sublime-snippet @@ -0,0 +1,6 @@ + + + ife + source.r, source.rd.console + Ifelse + diff --git a/R/Length.sublime-snippet b/R/Length.sublime-snippet new file mode 100644 index 0000000..f4ab84f --- /dev/null +++ b/R/Length.sublime-snippet @@ -0,0 +1,6 @@ + + + len + source.r, source.rd.console + Length + diff --git a/R/Load-Dataset.sublime-snippet b/R/Load-Dataset.sublime-snippet new file mode 100644 index 0000000..f7d673b --- /dev/null +++ b/R/Load-Dataset.sublime-snippet @@ -0,0 +1,6 @@ + + + dat + source.r, source.rd.console + Load Dataset + diff --git a/R/Methods.tmPreferences b/R/Methods.tmPreferences new file mode 100644 index 0000000..4ff85c6 --- /dev/null +++ b/R/Methods.tmPreferences @@ -0,0 +1,19 @@ + + + + + name + Symbol List: Method + scope + meta.method.declaration.r + settings + + showInSymbolList + 1 + symbolTransformation + s/\s*(.+?)\s*\(\s*("|\x27)(.*?)\s*\2/$1 "$3"/; + + uuid + 0AE8C5E0-C202-4965-B877-4CD0B9420A7D + + diff --git a/R/Methods.tmPreferences.cache b/R/Methods.tmPreferences.cache new file mode 100644 index 0000000..b384739 Binary files /dev/null and b/R/Methods.tmPreferences.cache differ diff --git a/R/Polygonal-Line.sublime-snippet b/R/Polygonal-Line.sublime-snippet new file mode 100644 index 0000000..8172456 --- /dev/null +++ b/R/Polygonal-Line.sublime-snippet @@ -0,0 +1,6 @@ + + + lin + source.r, source.rd.console + Polygonal Line + diff --git a/R/R Console.tmLanguage b/R/R Console.tmLanguage new file mode 100644 index 0000000..d47004c --- /dev/null +++ b/R/R Console.tmLanguage @@ -0,0 +1,42 @@ + + + + + fileTypes + + keyEquivalent + ^~R + name + R Console + patterns + + + begin + ^> + beginCaptures + + 0 + + name + punctuation.section.embedded.r-console + + + end + \n|\z + name + source.r.embedded.r-console + patterns + + + include + source.r + + + + + scopeName + source.r-console + uuid + F629C7F3-823B-4A4C-8EEE-9971490C5710 + + diff --git a/R/R Console.tmLanguage.cache b/R/R Console.tmLanguage.cache new file mode 100644 index 0000000..4cb6d23 Binary files /dev/null and b/R/R Console.tmLanguage.cache differ diff --git a/R/R.tmLanguage b/R/R.tmLanguage new file mode 100644 index 0000000..a8a168f --- /dev/null +++ b/R/R.tmLanguage @@ -0,0 +1,220 @@ + + + + + fileTypes + + R + r + s + S + Rprofile + + foldingStartMarker + (\(\s*$|\{\s*$) + foldingStopMarker + (^\s*\)|^\s*\}) + keyEquivalent + ^~R + name + R + patterns + + + captures + + 1 + + name + punctuation.definition.comment.r + + + match + (#).*$\n? + name + comment.line.number-sign.r + + + match + \b(logical|numeric|character|complex|matrix|array|data\.frame|list|factor)(?=\s*\() + name + storage.type.r + + + match + \b(function|if|break|next|repeat|else|for|return|switch|while|in|invisible)\b + name + keyword.control.r + + + 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.r + + + match + \b(TRUE|FALSE|NULL|NA|Inf|NaN)\b + name + constant.language.r + + + match + \b(pi|letters|LETTERS|month\.abb|month\.name)\b + name + support.constant.misc.r + + + match + (\-|\+|\*|\/|%\/%|%%|%\*%|%in%|%o%|%x%|\^) + name + keyword.operator.arithmetic.r + + + match + (=|<-|<<-|->|->>) + name + keyword.operator.assignment.r + + + match + (==|!=|<>|<|>|<=|>=) + name + keyword.operator.comparison.r + + + match + (!|&{1,2}|[|]{1,2}) + name + keyword.operator.logical.r + + + match + (\.\.\.|\$|:|\~) + name + keyword.other.r + + + begin + " + beginCaptures + + 0 + + name + punctuation.definition.string.begin.r + + + end + " + endCaptures + + 0 + + name + punctuation.definition.string.end.r + + + name + string.quoted.double.r + patterns + + + match + \\. + name + constant.character.escape.r + + + + + begin + ' + beginCaptures + + 0 + + name + punctuation.definition.string.begin.r + + + end + ' + endCaptures + + 0 + + name + punctuation.definition.string.end.r + + + name + string.quoted.single.r + patterns + + + match + \\. + name + constant.character.escape.r + + + + + captures + + 1 + + name + entity.name.function.r + + 2 + + name + keyword.operator.assignment.r + + 3 + + name + keyword.control.r + + + match + ([a-zA-Z._][a-zA-Z0-9._]*)\s*(<-)\s*(function) + name + meta.function.r + + + match + ([a-zA-Z._][a-zA-Z0-9._]*)\s*\( + + + captures + + 1 + + name + variable.parameter.r + + 2 + + name + keyword.operator.assignment.r + + + match + ([a-zA-Z._][a-zA-Z0-9._]*)\s*(=)(?=[^=]) + + + match + \b([a-zA-Z._][a-zA-Z0-9._]*)\b + name + variable.other.r + + + scopeName + source.r + uuid + B2E6B78D-6E70-11D9-A369-000D93B3A10E + + diff --git a/R/R.tmLanguage.cache b/R/R.tmLanguage.cache new file mode 100644 index 0000000..26843cf Binary files /dev/null and b/R/R.tmLanguage.cache differ diff --git a/R/Rd (R Documentation).tmLanguage b/R/Rd (R Documentation).tmLanguage new file mode 100644 index 0000000..8024710 --- /dev/null +++ b/R/Rd (R Documentation).tmLanguage @@ -0,0 +1,243 @@ + + + + + fileTypes + + rd + + foldingStartMarker + /\w*\{\s*$ + foldingStopMarker + ^\s*\} + keyEquivalent + ^~R + name + Rd (R Documentation) + patterns + + + begin + ((\\)(?:alias|docType|keyword|name|title))(\{) + beginCaptures + + 1 + + name + keyword.other.section.rd + + 2 + + name + punctuation.definition.function.rd + + 3 + + name + punctuation.definition.arguments.begin.rd + + + contentName + entity.name.tag.rd + end + (\}) + endCaptures + + 1 + + name + punctuation.definition.arguments.end.rd + + + name + meta.section.rd + patterns + + + include + $self + + + + + begin + ((\\)(?:details|format|references|source))(\{) + beginCaptures + + 1 + + name + keyword.other.section.rd + + 2 + + name + punctuation.definition.function.rd + + 3 + + name + punctuation.definition.arguments.begin.rd + + + end + (\}) + endCaptures + + 1 + + name + punctuation.definition.arguments.end.rd + + + name + meta.section.rd + patterns + + + include + $self + + + + + begin + ((\\)(?:usage))(\{)(?:\n)? + beginCaptures + + 1 + + name + keyword.other.usage.rd + + 2 + + name + punctuation.definition.function.rd + + 3 + + name + punctuation.definition.arguments.begin.rd + + + contentName + source.r.embedded + end + (\}) + endCaptures + + 1 + + name + punctuation.definition.arguments.end.rd + + + name + meta.usage.rd + patterns + + + include + source.r + + + + + begin + ((\\)(?:examples))(\{)(?:\n)? + beginCaptures + + 1 + + name + keyword.other.examples.rd + + 2 + + name + punctuation.definition.function.rd + + 3 + + name + punctuation.definition.arguments.begin.rd + + + contentName + source.r.embedded + end + (\}) + endCaptures + + 1 + + name + punctuation.definition.arguments.end.rd + + + name + meta.examples.rd + patterns + + + include + source.r + + + + + captures + + 1 + + name + keyword.other.author.rd + + 2 + + name + punctuation.definition.function.rd + + 3 + + name + punctuation.definition.arguments.begin.rd + + 4 + + name + entity.name.tag.author.rd + + 5 + + name + punctuation.definition.link.rd + + 6 + + name + markup.underline.link.rd + + 7 + + name + punctuation.definition.link.rd + + + match + ((\\)(?:author))(\{)([\w\s]+?)\s+(<)([^>]*)(>) + name + meta.author.rd + + + include + text.tex.latex + + + scopeName + text.tex.latex.rd + uuid + 80A00288-FE7E-4E66-B5BF-4948A2828203 + + diff --git a/R/Rd (R Documentation).tmLanguage.cache b/R/Rd (R Documentation).tmLanguage.cache new file mode 100644 index 0000000..66b6629 Binary files /dev/null and b/R/Rd (R Documentation).tmLanguage.cache differ diff --git a/R/Read-From-File.sublime-snippet b/R/Read-From-File.sublime-snippet new file mode 100644 index 0000000..16e6933 --- /dev/null +++ b/R/Read-From-File.sublime-snippet @@ -0,0 +1,6 @@ + + + rea + source.r, source.rd.console + Read From File + diff --git a/R/Sequence-(from-to-by).sublime-snippet b/R/Sequence-(from-to-by).sublime-snippet new file mode 100644 index 0000000..bc07a1e --- /dev/null +++ b/R/Sequence-(from-to-by).sublime-snippet @@ -0,0 +1,6 @@ + + + seq + source.r, source.rd.console + Sequence (from,to,by) + diff --git a/R/Sort.sublime-snippet b/R/Sort.sublime-snippet new file mode 100644 index 0000000..33a00d9 --- /dev/null +++ b/R/Sort.sublime-snippet @@ -0,0 +1,6 @@ + + + sor + source.r, source.rd.console + Sort + diff --git a/R/Source.sublime-snippet b/R/Source.sublime-snippet new file mode 100644 index 0000000..f330bef --- /dev/null +++ b/R/Source.sublime-snippet @@ -0,0 +1,6 @@ + + + sou + source.r, source.rd.console + Source + diff --git a/R/Symbol List (Rd Documentation).tmPreferences b/R/Symbol List (Rd Documentation).tmPreferences new file mode 100644 index 0000000..e044af4 --- /dev/null +++ b/R/Symbol List (Rd Documentation).tmPreferences @@ -0,0 +1,19 @@ + + + + + name + Symbol List (Rd Documentation) + scope + keyword.other.section.rd + settings + + showInSymbolList + 1 + symbolTransformation + s/\\(.*)/$1/; + + uuid + 5DBBC018-D895-4A52-91D4-60196BC76B49 + + diff --git a/R/Symbol List (Rd Documentation).tmPreferences.cache b/R/Symbol List (Rd Documentation).tmPreferences.cache new file mode 100644 index 0000000..7425e1c Binary files /dev/null and b/R/Symbol List (Rd Documentation).tmPreferences.cache differ diff --git a/R/na_omit.sublime-snippet b/R/na_omit.sublime-snippet new file mode 100644 index 0000000..63b8b6d --- /dev/null +++ b/R/na_omit.sublime-snippet @@ -0,0 +1,6 @@ + + + nao + source.r, source.rd.console + na.omit + diff --git a/RSpec/.gitignore b/RSpec/.gitignore new file mode 100644 index 0000000..2500b0f --- /dev/null +++ b/RSpec/.gitignore @@ -0,0 +1,2 @@ +*.pyc +*.cache \ No newline at end of file diff --git a/RSpec/Default (OSX).sublime-keymap b/RSpec/Default (OSX).sublime-keymap new file mode 100644 index 0000000..2ec310c --- /dev/null +++ b/RSpec/Default (OSX).sublime-keymap @@ -0,0 +1,12 @@ +[ + { "keys": ["super+alt+b"], + "command": "exec", + "args": {"cmd": ["rspec", "*"]}, + "file_regex": "# ([A-Za-z0-9_./ ]+rb):([0-9]+)", + "working_dir": "${folder}" + }, + + { "keys": ["super+period"], "command": "open_rspec_file", "args": {} }, + + { "keys": ["super+alt+n"], "command": "rspec_create_module", "args": {} } +] diff --git a/RSpec/Default (Windows).sublime-keymap b/RSpec/Default (Windows).sublime-keymap new file mode 100644 index 0000000..0312115 --- /dev/null +++ b/RSpec/Default (Windows).sublime-keymap @@ -0,0 +1,12 @@ +[ + { "keys": ["ctrl+f7"], + "command": "exec", + "args": {"cmd": ["rspec.bat", "*"]}, + "file_regex": "# ([A-Za-z0-9_./ ]+rb):([0-9]+)", + "working_dir": "${folder}" + }, + + { "keys": ["ctrl+period"], "command": "open_rspec_file", "args": {} }, + + { "keys": ["ctrl+alt+n"], "command": "rspec_create_module", "args": {} } +] diff --git a/RSpec/OpenRSpecFile.py b/RSpec/OpenRSpecFile.py new file mode 100644 index 0000000..a85407a --- /dev/null +++ b/RSpec/OpenRSpecFile.py @@ -0,0 +1,48 @@ +import sublime +import sublime_plugin +import re, inspect, os +import shared + +class OpenRspecFileCommand(sublime_plugin.WindowCommand): + + def run(self): + if not self.window.active_view(): + return + + self.views = [] + window = self.window + current_file_path = self.window.active_view().file_name() + + if re.search(r"\w+\.rb$", current_file_path): + + current_file = re.search(r"([\w\.]+)$", current_file_path).group(1) + base_name = re.search(r"(\w+)\.(\w+)$", current_file).group(1) + base_name = re.sub('_spec', '', base_name) + + source_matcher = re.compile("[/\\\\]" + base_name + "\.rb$") + test_matcher = re.compile("[/\\\\]" + base_name + "_spec\.rb$") + + target_group = shared.other_group_in_pair(window) + + print "Current file: " + current_file + if re.search(re.compile(base_name + "_spec\.rb$"), current_file): + self.open_project_file(source_matcher, window, target_group) + elif re.search(re.compile(base_name + "\.rb$"), current_file): + self.open_project_file(test_matcher, window, target_group) + else: + print "Current file is not valid for RSpec switch file!" + + def open_project_file(self, file_matcher, window, group=-1): + for root, dirs, files in os.walk(window.folders()[0]): + for f in files: + if re.search(r"\.rb$", f): + cur_file = os.path.join(root, f) + # print "Assessing: " + cur_file + if file_matcher.search(cur_file): + file_view = window.open_file(os.path.join(root, f)) + if group >= 0: # don't set the view unless specified + window.run_command('move_to_group', {'group': group}) + self.views.append(file_view) + print("Opened: " + f) + return + print("No matching files!") diff --git a/RSpec/Preferences/SymbolList-Behaviour.tmPreferences b/RSpec/Preferences/SymbolList-Behaviour.tmPreferences new file mode 100644 index 0000000..e54c3d4 --- /dev/null +++ b/RSpec/Preferences/SymbolList-Behaviour.tmPreferences @@ -0,0 +1,19 @@ + + + + + name + Symbol List: Behaviour + scope + meta.rspec.behaviour + settings + + showInSymbolList + 1 + symbolTransformation + s/^\s*(describe)\s+(.+)\s+do\s*$/$2/ + + uuid + 28F89786-04F4-43D7-82A6-34B046C2BC6B + + diff --git a/RSpec/Preferences/SymbolList-Example.tmPreferences b/RSpec/Preferences/SymbolList-Example.tmPreferences new file mode 100644 index 0000000..ca33e67 --- /dev/null +++ b/RSpec/Preferences/SymbolList-Example.tmPreferences @@ -0,0 +1,19 @@ + + + + + name + Symbol List: Example + scope + meta.rspec.example + settings + + showInSymbolList + 1 + symbolTransformation + s/^\s*(it)\s+(.+)\s+do\s*$/ $2/ + + uuid + 57EF6130-05A6-4117-94CB-C0BD63328334 + + diff --git a/RSpec/Preferences/SymbolList-Pending.tmPreferences b/RSpec/Preferences/SymbolList-Pending.tmPreferences new file mode 100644 index 0000000..900495a --- /dev/null +++ b/RSpec/Preferences/SymbolList-Pending.tmPreferences @@ -0,0 +1,19 @@ + + + + + name + Symbol List: Pending + scope + meta.rspec.pending + settings + + showInSymbolList + 1 + symbolTransformation + s/^\s*(it)\s+(.+)\s*$/ $2 (Pending)/ + + uuid + 377BD4F9-4321-4D14-9A34-6A93033F1906 + + diff --git a/RSpec/README.md b/RSpec/README.md new file mode 100644 index 0000000..bc6826c --- /dev/null +++ b/RSpec/README.md @@ -0,0 +1,15 @@ +Description +=========== +[RSpec](http://rspec.info/) is a BDD (Behavioral-Driven Development) testing framework for Ruby. This package adds support to Sublime Text 2 for testing Ruby applications wioth RSpec. + +Package Installation +==================== +Bring up a command line in the Packages/ folder of your Sublime user folder, and execute the following: +> git clone git://github.com/SublimeText/RSpec.git + +When you launch Sublime Text 2, it will pick up the contents of this package so that you can consume the goodness that it provides. + +Features +======== +* RSpec.sublime-build for executing unit tests for the active module via the S2 *Build* command + * You must assign the builder for your project to 'Ceedling' diff --git a/RSpec/RSpec.sublime-build b/RSpec/RSpec.sublime-build new file mode 100644 index 0000000..6086b6b --- /dev/null +++ b/RSpec/RSpec.sublime-build @@ -0,0 +1,11 @@ +{ + "cmd": ["rspec", "-I ${file_path}", "$file"], + "file_regex": "# ([A-Za-z:0-9_./ ]+rb):([0-9]+)", + "working_dir": "${project_path:${folder:${file_path}}}", + "selector": "source.ruby", + + "windows": + { + "cmd": ["rspec.bat", "-I ${file_path}", "$file"] + } +} diff --git a/RSpec/RSpec.tmLanguage b/RSpec/RSpec.tmLanguage new file mode 100644 index 0000000..5e719ee --- /dev/null +++ b/RSpec/RSpec.tmLanguage @@ -0,0 +1,187 @@ + + + + + fileTypes + + spec.rb + + foldingStartMarker + (?x)^ + (\s*+ + (module|class|def + |unless|if + |case + |begin + |for|while|until + |^=begin + |( "(\\.|[^"])*+" # eat a double quoted string + | '(\\.|[^'])*+' # eat a single quoted string + | [^#"'] # eat all but comments and strings + )* + ( \s (do|begin|case) + | (?<!\$)[-+=&|*/~%^<>~] \s*+ (if|unless) + ) + )\b + (?! [^;]*+ ; .*? \bend\b ) + |( "(\\.|[^"])*+" # eat a double quoted string + | '(\\.|[^'])*+' # eat a single quoted string + | [^#"'] # eat all but comments and strings + )* + ( \{ (?! [^}]*+ \} ) + | \[ (?! [^\]]*+ \] ) + ) + ).*$ + | [#] .*? \(fold\) \s*+ $ # Sune’s special marker + + foldingStopMarker + (?x) + ( (^|;) \s*+ end \s*+ ([#].*)? $ + | (^|;) \s*+ end \. .* $ + | ^ \s*+ [}\]] \s*+ ([#].*)? $ + | [#] .*? \(end\) \s*+ $ # Sune’s special marker + | ^=end + ) + keyEquivalent + ^~R + name + RSpec + patterns + + + match + (?<!\.)\b(before|after|subject|let)\b(?![?!]) + name + keyword.other.rspec + + + include + #behaviour + + + include + #single-line-example + + + include + #pending + + + include + #example + + + include + source.ruby + + + repository + + behaviour + + begin + ^\s*(describe|context)\b + beginCaptures + + 1 + + name + keyword.other.rspec.behaviour + + + end + \b(do(?=\s*$))|{ + endCaptures + + 1 + + name + keyword.control.ruby.start-block + + + name + meta.rspec.behaviour + patterns + + + include + source.ruby + + + + example + + begin + ^\s*(it|specify)\b + beginCaptures + + 1 + + name + keyword.other.rspec.example + + + end + \b(do(?=\s*$))|{ + endCaptures + + 1 + + name + keyword.control.ruby.start-block + + + name + meta.rspec.example + patterns + + + include + source.ruby + + + + pending + + begin + ^\s*(it|specify)\b(?=((?!do|{).)*$) + end + $ + beginCaptures + + 1 + + name + keyword.other.rspec.pending + + + patterns + + + include + source.ruby + + + name + meta.rspec.pending + + single-line-example + + captures + + 1 + + name + keyword.other.rspec.example + + + match + ^\s*(it|specify)\s*{ + + + scopeName + source.ruby.rspec + uuid + 923F0A10-96B9-4792-99A4-94FEF66E0B8C + + diff --git a/RSpec/RSpecCreateModule.py b/RSpec/RSpecCreateModule.py new file mode 100644 index 0000000..dc2b3e8 --- /dev/null +++ b/RSpec/RSpecCreateModule.py @@ -0,0 +1,69 @@ +import sublime, sublime_plugin, time +import re +import shared + +_patterns = dict((k, re.compile('_*' + v)) for (k, v) + in dict(allcamel=r'(?:[A-Z]+[a-z0-9]*)+$', + trailingcamel=r'[a-z]+(?:[A-Z0-9]*[a-z0-9]*)+$', + underscores=r'(?:[a-z]+_*)+[a-z0-9]+$').iteritems()) + +_caseTransition = re.compile('([A-Z][a-z]+)') + +def translate(name, _from, to): + leading_underscores = str() + while name[0] == '_': + leading_underscores += '_' + name = name[1:] + + if _from in ('allcamel', 'trailingcamel'): + words = _caseTransition.split(name) + else: + words = name.split('_') + + words = list(w for w in words if w is not None and 0 < len(w)) + + camelize = lambda words: ''.join(w[0].upper() + w[1:] for w in words) + + v = dict(smushed=lambda: ''.join(words).lower(), + allcamel=lambda: camelize(words), + trailingcamel=lambda: words[0].lower() + camelize(words[1:]), + underscores=lambda: '_'.join(words).lower())[to]() + + return leading_underscores + v + + +class RspecCreateModuleCommand(sublime_plugin.WindowCommand): + def run(self): + # self.view.insert(edit, 0, "Hello, World!") + self.window.show_input_panel("Enter module name:", "", self.on_done, None, None) + + def on_done(self, text): + + # create the module + module = self.window.new_file() + module.set_syntax_file('Packages/Ruby/Ruby.tmLanguage') + module.set_name(translate(text, 'allcamel', 'underscores') + '.rb') + module_template = "\n\ +class " + text + "\n\ +end" + edit = module.begin_edit() + module.insert(edit, 0, module_template) + module.end_edit(edit) + + # create the spec + spec = self.window.new_file() + self.window.run_command('move_to_group', {'group': shared.other_group_in_pair(self.window)}) + spec.set_syntax_file('Packages/Ruby/Ruby.tmLanguage') + spec.set_name(translate(text, 'allcamel', 'underscores') + '_spec.rb') + spec_template = "require 'spec_helper'\n\ +require '" + translate(text, 'allcamel', 'underscores') + "'\n\n\ +describe " + text + " do\n\ +\tit \"should do something\"\n\ +end" + edit = spec.begin_edit() + spec.insert(edit, 0, spec_template) + spec.end_edit(edit) + + # try: + # except ValueError: + # pass \ No newline at end of file diff --git a/RSpec/RSpecDetectFileType.py b/RSpec/RSpecDetectFileType.py new file mode 100644 index 0000000..eb27cb1 --- /dev/null +++ b/RSpec/RSpecDetectFileType.py @@ -0,0 +1,29 @@ +import sublime, sublime_plugin +import os + +class RSpecDetectFileTypeCommand(sublime_plugin.EventListener): + """ Detects current file type if the file's extension isn't conclusive """ + """ Modified for Ruby on Rails and Sublime Text 2 """ + """ Original pastie here: http://pastie.org/private/kz8gtts0cjcvkec0d4quqa """ + + def on_load(self, view): + filename = view.file_name() + if not filename: # buffer has never been saved + return + + name = os.path.basename(filename.lower()) + if name[-8:] == "_spec.rb": + set_syntax(view, "RSpec", "RSpec") + elif name == "factories.rb": + set_syntax(view, "RSpec", "RSpec") + # elif name == "gemfile": + # set_syntax(view, "Ruby on Rails", "Rails") + # elif name[-2:] == "rb": + # set_syntax(view, "Ruby on Rails", "Rails") + + +def set_syntax(view, syntax, path=None): + if path is None: + path = syntax + view.settings().set('syntax', 'Packages/'+ path + '/' + syntax + '.tmLanguage') + print "Switched syntax to: " + syntax \ No newline at end of file diff --git a/RSpec/Snippets/Custom Matcher.tmSnippet b/RSpec/Snippets/Custom Matcher.tmSnippet new file mode 100644 index 0000000..7cff359 --- /dev/null +++ b/RSpec/Snippets/Custom Matcher.tmSnippet @@ -0,0 +1,39 @@ + + + + + content + class ${1:ReverseTo} + def initialize($3) + @$3 = $3 + end + + def matches?(actual) + @actual = actual + # Satisfy expectation here. Return false or raise an error if it's not met. + ${0:@actual.reverse.should == @$3} + true + end + + def failure_message + "expected #{@actual.inspect} to $2 #{@$3.inspect}, but it didn't" + end + + def negative_failure_message + "expected #{@actual.inspect} not to $2 #{@$3.inspect}, but it did" + end +end + +def ${2:reverse_to}(${3:expected}) + $1.new($3) +end + name + Custom Matcher + scope + source.ruby.rspec + tabTrigger + mat + uuid + 55BF6C99-B4C4-4772-B7DC-0A18407E429C + + diff --git a/RSpec/Snippets/Describe.tmSnippet b/RSpec/Snippets/Describe.tmSnippet new file mode 100644 index 0000000..1521c37 --- /dev/null +++ b/RSpec/Snippets/Describe.tmSnippet @@ -0,0 +1,20 @@ + + + + + content + describe "${1:description}" do + it "should ${2:description}" do + $0 + end +end + name + describe (String) + scope + source.ruby.rspec + tabTrigger + des + uuid + 34CBBD13-CE8E-4601-9968-C2CB0D771CA5 + + diff --git a/RSpec/Snippets/Describe_type.tmSnippet b/RSpec/Snippets/Describe_type.tmSnippet new file mode 100644 index 0000000..89766c2 --- /dev/null +++ b/RSpec/Snippets/Describe_type.tmSnippet @@ -0,0 +1,20 @@ + + + + + content + describe ${1:Type} do + it "should ${2:description}" do + $0 + end +end + name + describe (type) + scope + source.ruby.rspec + tabTrigger + dest + uuid + 2ED94046-DAF7-4C91-8D98-771513BB3804 + + diff --git a/RSpec/Snippets/Describe_type_string.tmSnippet b/RSpec/Snippets/Describe_type_string.tmSnippet new file mode 100644 index 0000000..26b1eb5 --- /dev/null +++ b/RSpec/Snippets/Describe_type_string.tmSnippet @@ -0,0 +1,20 @@ + + + + + content + describe ${1:Type}, "${2:description}" do + it "should ${3:description}" do + $0 + end +end + name + describe (type, string) + scope + source.ruby.rspec + tabTrigger + dests + uuid + ACFE21E0-902B-45C4-BF54-D137718FF61C + + diff --git a/RSpec/Snippets/It.tmSnippet b/RSpec/Snippets/It.tmSnippet new file mode 100644 index 0000000..7f11c66 --- /dev/null +++ b/RSpec/Snippets/It.tmSnippet @@ -0,0 +1,18 @@ + + + + + content + it "${1:description}" do + $0 +end + name + it + scope + source.ruby.rspec + tabTrigger + it + uuid + AD51AA2B-09C9-40DE-9720-2FD43C967FA9 + + diff --git a/RSpec/Snippets/Require spec_helper.tmSnippet b/RSpec/Snippets/Require spec_helper.tmSnippet new file mode 100644 index 0000000..2ced723 --- /dev/null +++ b/RSpec/Snippets/Require spec_helper.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + require File.dirname(__FILE__) + '/../spec_helper' + name + Require spec_helper + scope + source.ruby.rspec + tabTrigger + resh + uuid + DAD2B74D-2105-42B0-9FC5-466F3B3D0DB7 + + diff --git a/RSpec/Snippets/Set Controller for Spec.tmSnippet b/RSpec/Snippets/Set Controller for Spec.tmSnippet new file mode 100644 index 0000000..9c18cdd --- /dev/null +++ b/RSpec/Snippets/Set Controller for Spec.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + controller_name :${1:controller} + name + controller_name + scope + source.ruby.rspec + tabTrigger + conn + uuid + 57374EB7-6CCE-4281-97A7-289905315351 + + diff --git a/RSpec/Snippets/Story.tmSnippet b/RSpec/Snippets/Story.tmSnippet new file mode 100644 index 0000000..0cd09a0 --- /dev/null +++ b/RSpec/Snippets/Story.tmSnippet @@ -0,0 +1,21 @@ + + + + + content + Story "${1:title}", %{ + As a${2:role} + I want ${3:feature} + So that ${4:value} +} do +end + name + Story + scope + source.ruby.rspec + tabTrigger + st + uuid + 73A67D49-CA5B-4B8A-9B62-003506276CDD + + diff --git a/RSpec/Snippets/and_raise.tmSnippet b/RSpec/Snippets/and_raise.tmSnippet new file mode 100644 index 0000000..55952b9 --- /dev/null +++ b/RSpec/Snippets/and_raise.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + and_raise(${1:exception}) + name + and_raise + scope + source.ruby.rspec + tabTrigger + anr + uuid + 65B85B0D-26FC-4A08-8D6A-7BF00AA787FC + + diff --git a/RSpec/Snippets/and_return_block.tmSnippet b/RSpec/Snippets/and_return_block.tmSnippet new file mode 100644 index 0000000..10cbb14 --- /dev/null +++ b/RSpec/Snippets/and_return_block.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + and_return { $1 } + name + and_return with block + scope + source.ruby.rspec + tabTrigger + anrb + uuid + C57E9EFD-3FE7-40ED-832E-DD812D1FB769 + + diff --git a/RSpec/Snippets/and_return_value.tmSnippet b/RSpec/Snippets/and_return_value.tmSnippet new file mode 100644 index 0000000..2e67088 --- /dev/null +++ b/RSpec/Snippets/and_return_value.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + and_return(${1:value}) + name + and_return with args + scope + source.ruby.rspec + tabTrigger + anra + uuid + 804A1B15-0756-438F-892F-2B72BE4490F0 + + diff --git a/RSpec/Snippets/and_throw.tmSnippet b/RSpec/Snippets/and_throw.tmSnippet new file mode 100644 index 0000000..550355e --- /dev/null +++ b/RSpec/Snippets/and_throw.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + and_throw(${1:sym}) + name + and_throw + scope + source.ruby.rspec + tabTrigger + ant + uuid + 2CC293EE-496A-4B66-928C-332DDCBEE884 + + diff --git a/RSpec/Snippets/and_yield.tmSnippet b/RSpec/Snippets/and_yield.tmSnippet new file mode 100644 index 0000000..9b877bf --- /dev/null +++ b/RSpec/Snippets/and_yield.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + and_yield(${1:values}) + name + and_yield + scope + source.ruby.rspec + tabTrigger + any + uuid + ED3A9BE5-8695-44FF-9B6B-A7FF4C13727C + + diff --git a/RSpec/Snippets/any_number_of_times.tmSnippet b/RSpec/Snippets/any_number_of_times.tmSnippet new file mode 100644 index 0000000..5b2603f --- /dev/null +++ b/RSpec/Snippets/any_number_of_times.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + any_number_of_times + name + any_number_of_times + scope + source.ruby.rspec + tabTrigger + annot + uuid + D5E64C38-9CBC-4825-9A66-5718DA91AAD6 + + diff --git a/RSpec/Snippets/at_least.tmSnippet b/RSpec/Snippets/at_least.tmSnippet new file mode 100644 index 0000000..ac2a1f4 --- /dev/null +++ b/RSpec/Snippets/at_least.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + at_least(${1:n}).times + name + at_least + scope + source.ruby.rspec + tabTrigger + atl + uuid + F2FDA911-B713-4788-81BF-EF33E9A4FB26 + + diff --git a/RSpec/Snippets/at_most.tmSnippet b/RSpec/Snippets/at_most.tmSnippet new file mode 100644 index 0000000..19fae85 --- /dev/null +++ b/RSpec/Snippets/at_most.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + at_most(${1:n}).times + name + at_most + scope + source.ruby.rspec + tabTrigger + atm + uuid + 9A891C8D-4285-4C7D-BA03-6CA50A89F9C0 + + diff --git a/RSpec/Snippets/context.tmSnippet b/RSpec/Snippets/context.tmSnippet new file mode 100644 index 0000000..68294d2 --- /dev/null +++ b/RSpec/Snippets/context.tmSnippet @@ -0,0 +1,18 @@ + + + + + content + context "${1:description}" do + $0 +end + name + context + scope + source.ruby.rspec + tabTrigger + context + uuid + AD51AA2B-09C9-40DE-9720-2FD43C967FA9 + + diff --git a/RSpec/Snippets/controller_context.tmSnippet b/RSpec/Snippets/controller_context.tmSnippet new file mode 100644 index 0000000..ccfd712 --- /dev/null +++ b/RSpec/Snippets/controller_context.tmSnippet @@ -0,0 +1,20 @@ + + + + + content + require File.dirname(__FILE__) + '/../spec_helper' + +describe ${1:controller} do + $0 +end + name + describe (Controller) + scope + source.ruby.rspec + tabTrigger + desc + uuid + FC8C2948-3653-41B3-965A-5D0B7C64CB41 + + diff --git a/RSpec/Snippets/controller_context_RESTful.tmSnippet b/RSpec/Snippets/controller_context_RESTful.tmSnippet new file mode 100644 index 0000000..aae5cfa --- /dev/null +++ b/RSpec/Snippets/controller_context_RESTful.tmSnippet @@ -0,0 +1,18 @@ + + + + + content + describe ${1:controller}, "${2:GET|POST|PUT|DELETE} ${3:/some/path}${4: with some parameters}" do + $0 +end + name + describe (RESTful Controller) + scope + source.ruby.rspec + tabTrigger + desrc + uuid + 0ED99C84-1F7B-471E-BB88-B59C5D08FA6B + + diff --git a/RSpec/Snippets/exactly.tmSnippet b/RSpec/Snippets/exactly.tmSnippet new file mode 100644 index 0000000..69f8e87 --- /dev/null +++ b/RSpec/Snippets/exactly.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + exactly(${1:n}).times + name + exactly + scope + source.ruby.rspec + tabTrigger + ex + uuid + 1A3662E4-DB9D-4F29-8E42-984755A419FA + + diff --git a/RSpec/Snippets/it_should_behave_like.tmSnippet b/RSpec/Snippets/it_should_behave_like.tmSnippet new file mode 100644 index 0000000..988494b --- /dev/null +++ b/RSpec/Snippets/it_should_behave_like.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + it_should_behave_like ${2:"$1"}$0 + name + it_should_behave_like + scope + source.ruby.rspec + tabTrigger + itsbl + uuid + D13C48F3-C62B-4456-B075-36B424D573CC + + diff --git a/RSpec/Snippets/mock.tmSnippet b/RSpec/Snippets/mock.tmSnippet new file mode 100644 index 0000000..0bb1a7d --- /dev/null +++ b/RSpec/Snippets/mock.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:var} = mock("${2:mock_name}"${3:, :null_object => true}) +$0 + name + mock + scope + source.ruby.rspec + tabTrigger + moc + uuid + AA3D9F87-FE8F-4808-A732-F368CCB9DED6 + + diff --git a/RSpec/Snippets/once.tmSnippet b/RSpec/Snippets/once.tmSnippet new file mode 100644 index 0000000..f9a6fa4 --- /dev/null +++ b/RSpec/Snippets/once.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + once + name + once + scope + source.ruby.rspec + tabTrigger + on + uuid + 695ECDF3-FEFC-4702-AF71-641E64017907 + + diff --git a/RSpec/Snippets/ordered.tmSnippet b/RSpec/Snippets/ordered.tmSnippet new file mode 100644 index 0000000..d503659 --- /dev/null +++ b/RSpec/Snippets/ordered.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + ordered + name + ordered + scope + source.ruby.rspec + tabTrigger + ord + uuid + F0524EA5-3438-4238-871C-A5AAAAFC8CA3 + + diff --git a/RSpec/Snippets/response_should_be_success.tmSnippet b/RSpec/Snippets/response_should_be_success.tmSnippet new file mode 100644 index 0000000..1206cf3 --- /dev/null +++ b/RSpec/Snippets/response_should_be_success.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + response.should be_success +$0 + name + should be_success + scope + source.ruby.rspec + tabTrigger + shbs + uuid + 0A118507-983C-4441-8B00-73AF7E931FC5 + + diff --git a/RSpec/Snippets/response_should_not_be_success.tmSnippet b/RSpec/Snippets/response_should_not_be_success.tmSnippet new file mode 100644 index 0000000..34de2b7 --- /dev/null +++ b/RSpec/Snippets/response_should_not_be_success.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + response.should_not be_success +$0 + name + should_not be_success + scope + source.ruby.rspec + tabTrigger + shnbs + uuid + 8303E848-4F07-4D3C-98FA-19DA4676812E + + diff --git a/RSpec/Snippets/setup.tmSnippet b/RSpec/Snippets/setup.tmSnippet new file mode 100644 index 0000000..fdaadaf --- /dev/null +++ b/RSpec/Snippets/setup.tmSnippet @@ -0,0 +1,18 @@ + + + + + content + before(${1::each}) do + $0 +end + name + before + scope + source.ruby.rspec + tabTrigger + bef + uuid + 7D960FC5-4859-4328-A06B-73A3CF6763E0 + + diff --git a/RSpec/Snippets/should ==.tmSnippet b/RSpec/Snippets/should ==.tmSnippet new file mode 100644 index 0000000..3af2a2d --- /dev/null +++ b/RSpec/Snippets/should ==.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should == ${2:value} +$0 + name + should == + scope + source.ruby.rspec + tabTrigger + sh= + uuid + AF99B458-D589-414D-87C7-8FACD2EF9FD5 + + diff --git a/RSpec/Snippets/should =~.tmSnippet b/RSpec/Snippets/should =~.tmSnippet new file mode 100644 index 0000000..94415cf --- /dev/null +++ b/RSpec/Snippets/should =~.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should =~ /${2:regexp}/ +$0 + name + should =~ + scope + source.ruby.rspec + tabTrigger + shm + uuid + 0BD5A07E-5FB3-44A3-991F-ABA04BA632D7 + + diff --git a/RSpec/Snippets/should eql.tmSnippet b/RSpec/Snippets/should eql.tmSnippet new file mode 100644 index 0000000..a7565f7 --- /dev/null +++ b/RSpec/Snippets/should eql.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should eql(${2:value}) +$0 + name + should eql + scope + source.ruby.rspec + tabTrigger + she + uuid + 0F03467B-16F7-4764-99C6-B7F123E95E5C + + diff --git a/RSpec/Snippets/should_be.tmSnippet b/RSpec/Snippets/should_be.tmSnippet new file mode 100644 index 0000000..c1d2845 --- /dev/null +++ b/RSpec/Snippets/should_be.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should be(${2:result}) +$0 + name + should be + scope + source.ruby.rspec + tabTrigger + shb + uuid + F401AA03-A119-4965-8677-BDAAE8312F13 + + diff --git a/RSpec/Snippets/should_be_a_kind_of.tmSnippet b/RSpec/Snippets/should_be_a_kind_of.tmSnippet new file mode 100644 index 0000000..61dfc79 --- /dev/null +++ b/RSpec/Snippets/should_be_a_kind_of.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should be_a_kind_of(${2:klass}) +$0 + name + should be_kind_of + scope + source.ruby.rspec + tabTrigger + shbko + uuid + 29BF3286-6D33-418D-9BD5-79BAB0797FE4 + + diff --git a/RSpec/Snippets/should_be_an_instance_of.tmSnippet b/RSpec/Snippets/should_be_an_instance_of.tmSnippet new file mode 100644 index 0000000..aa0cbc1 --- /dev/null +++ b/RSpec/Snippets/should_be_an_instance_of.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should be_instance_of(${2:klass}) +$0 + name + should be_instance_of + scope + source.ruby.rspec + tabTrigger + shbio + uuid + 8C5B6597-E115-4569-AE58-EF04042B21CD + + diff --git a/RSpec/Snippets/should_be_close.tmSnippet b/RSpec/Snippets/should_be_close.tmSnippet new file mode 100644 index 0000000..6612aca --- /dev/null +++ b/RSpec/Snippets/should_be_close.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should be_close(${2:result}, ${3:tolerance}) +$0 + name + should be_close + scope + source.ruby.rspec + tabTrigger + shbc + uuid + 5A203680-6F32-482F-A6A3-50CB7EE99E0E + + diff --git a/RSpec/Snippets/should_be_redirect.tmSnippet b/RSpec/Snippets/should_be_redirect.tmSnippet new file mode 100644 index 0000000..b15ccf4 --- /dev/null +++ b/RSpec/Snippets/should_be_redirect.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + response.should be_redirect +$0 + name + should be_redirect + scope + source.ruby.rspec + tabTrigger + shbr + uuid + E4DA45B3-736F-40DF-8344-25A79E073730 + + diff --git a/RSpec/Snippets/should_equal.tmSnippet b/RSpec/Snippets/should_equal.tmSnippet new file mode 100644 index 0000000..ea20d68 --- /dev/null +++ b/RSpec/Snippets/should_equal.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should equal(${2:value}) +$0 + name + should equal + scope + source.ruby.rspec + tabTrigger + she + uuid + 7DB5AC43-745F-488A-99F1-54CD923DCC38 + + diff --git a/RSpec/Snippets/should_have.tmSnippet b/RSpec/Snippets/should_have.tmSnippet new file mode 100644 index 0000000..02c27cd --- /dev/null +++ b/RSpec/Snippets/should_have.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should have(${2:num}).${3:things} +$0 + name + should have + scope + source.ruby.rspec + tabTrigger + shh + uuid + 42B1F497-2BAF-425D-9829-57E35456E7FE + + diff --git a/RSpec/Snippets/should_have_at_least.tmSnippet b/RSpec/Snippets/should_have_at_least.tmSnippet new file mode 100644 index 0000000..2a20f30 --- /dev/null +++ b/RSpec/Snippets/should_have_at_least.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should have_at_least(${2:num}).${3:things} +$0 + name + should have_at_least + scope + source.ruby.rspec + tabTrigger + shhal + uuid + 8A4F8C8E-B347-4D18-9203-247256874C47 + + diff --git a/RSpec/Snippets/should_have_at_most.tmSnippet b/RSpec/Snippets/should_have_at_most.tmSnippet new file mode 100644 index 0000000..ed33e96 --- /dev/null +++ b/RSpec/Snippets/should_have_at_most.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should have_at_most(${2:num}).${3:things} +$0 + name + should have_at_most + scope + source.ruby.rspec + tabTrigger + shham + uuid + 1BE271C6-3310-46A8-83E1-88C45BBE27AC + + diff --git a/RSpec/Snippets/should_have_records.tmSnippet b/RSpec/Snippets/should_have_records.tmSnippet new file mode 100644 index 0000000..5b65517 --- /dev/null +++ b/RSpec/Snippets/should_have_records.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should have(${2:x}).records +$0 + name + should have_records + scope + source.ruby.rspec + tabTrigger + shhr + uuid + 9605BD4A-93E5-4D57-99FB-D8844D40F183 + + diff --git a/RSpec/Snippets/should_match.tmSnippet b/RSpec/Snippets/should_match.tmSnippet new file mode 100644 index 0000000..c8e66eb --- /dev/null +++ b/RSpec/Snippets/should_match.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should match(/${2:regexp}/) +$0 + name + should match + scope + source.ruby.rspec + tabTrigger + shm + uuid + D6CE8D1B-16EC-4E0E-8089-62F193D3D048 + + diff --git a/RSpec/Snippets/should_not ==.tmSnippet b/RSpec/Snippets/should_not ==.tmSnippet new file mode 100644 index 0000000..0a484fb --- /dev/null +++ b/RSpec/Snippets/should_not ==.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should_not == ${2:value} +$0 + name + should_not == + scope + source.ruby.rspec + tabTrigger + shn= + uuid + 3A699BC3-3E17-4CFD-844C-2285F971379C + + diff --git a/RSpec/Snippets/should_not =~.tmSnippet b/RSpec/Snippets/should_not =~.tmSnippet new file mode 100644 index 0000000..48a2c5b --- /dev/null +++ b/RSpec/Snippets/should_not =~.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should_not =~ /${2:regexp}/ +$0 + name + should_not =~ + scope + source.ruby.rspec + tabTrigger + shnm + uuid + 7563CED5-5FD8-454C-972C-AC240D549E8B + + diff --git a/RSpec/Snippets/should_not eql.tmSnippet b/RSpec/Snippets/should_not eql.tmSnippet new file mode 100644 index 0000000..730c666 --- /dev/null +++ b/RSpec/Snippets/should_not eql.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should_not eql(${2:value}) +$0 + name + should_not eql + scope + source.ruby.rspec + tabTrigger + shne + uuid + 04BED613-C9EF-4E41-82D7-9958BBDBE0E3 + + diff --git a/RSpec/Snippets/should_not_be.tmSnippet b/RSpec/Snippets/should_not_be.tmSnippet new file mode 100644 index 0000000..17c2088 --- /dev/null +++ b/RSpec/Snippets/should_not_be.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should_not be(${2:result}) +$0 + name + should_not be + scope + source.ruby.rspec + tabTrigger + shnb + uuid + BD1CBF13-3A1F-49AB-8B3A-25967B437FD7 + + diff --git a/RSpec/Snippets/should_not_be_a_kind_of.tmSnippet b/RSpec/Snippets/should_not_be_a_kind_of.tmSnippet new file mode 100644 index 0000000..ce6c086 --- /dev/null +++ b/RSpec/Snippets/should_not_be_a_kind_of.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should_not be_a_kind_of(${2:klass}) +$0 + name + should_not be_kind_of + scope + source.ruby.rspec + tabTrigger + shkof + uuid + 96C5A0CC-08D9-4DCE-B127-78370964E64E + + diff --git a/RSpec/Snippets/should_not_be_an_instance_of.tmSnippet b/RSpec/Snippets/should_not_be_an_instance_of.tmSnippet new file mode 100644 index 0000000..518869b --- /dev/null +++ b/RSpec/Snippets/should_not_be_an_instance_of.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should_not be_instance_of(${2:klass}) +$0 + name + should_not be_instance_of + scope + source.ruby.rspec + tabTrigger + shbio + uuid + 364B3C9C-409C-4FC8-A12A-9A05CFB476CF + + diff --git a/RSpec/Snippets/should_not_be_close.tmSnippet b/RSpec/Snippets/should_not_be_close.tmSnippet new file mode 100644 index 0000000..b5f5a6c --- /dev/null +++ b/RSpec/Snippets/should_not_be_close.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should_not be_close(${2:result}, ${3:tolerance}) +$0 + name + should_not be_close + scope + source.ruby.rspec + tabTrigger + shnbc + uuid + 259BCEC6-878E-411F-A6B7-69B038B75CE1 + + diff --git a/RSpec/Snippets/should_not_be_redirect.tmSnippet b/RSpec/Snippets/should_not_be_redirect.tmSnippet new file mode 100644 index 0000000..e496b0e --- /dev/null +++ b/RSpec/Snippets/should_not_be_redirect.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + response.should_not be_redirect +$0 + name + should_not be_redirect + scope + source.ruby.rspec + tabTrigger + shnbr + uuid + E79DAF3F-8960-47C1-A34C-3D0E4B0AF926 + + diff --git a/RSpec/Snippets/should_not_equal.tmSnippet b/RSpec/Snippets/should_not_equal.tmSnippet new file mode 100644 index 0000000..7c1d7ad --- /dev/null +++ b/RSpec/Snippets/should_not_equal.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should_not equal(${2:value}) +$0 + name + should_not equal + scope + source.ruby.rspec + tabTrigger + shne + uuid + A6966089-6A33-4836-B85D-9CB72DBEB0A5 + + diff --git a/RSpec/Snippets/should_not_match.tmSnippet b/RSpec/Snippets/should_not_match.tmSnippet new file mode 100644 index 0000000..cdfc94d --- /dev/null +++ b/RSpec/Snippets/should_not_match.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should_not match(/${2:regexp}/) +$0 + name + should_not match + scope + source.ruby.rspec + tabTrigger + shnm + uuid + 014285F3-D908-427F-B535-E5A4AEF09339 + + diff --git a/RSpec/Snippets/should_not_predicate.tmSnippet b/RSpec/Snippets/should_not_predicate.tmSnippet new file mode 100644 index 0000000..2f53fa9 --- /dev/null +++ b/RSpec/Snippets/should_not_predicate.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should_not ${2:be_${3:predicate}} $4 +$0 + name + should_not predicate + scope + source.ruby.rspec + tabTrigger + shnp + uuid + 1D0BB312-A029-4A43-A024-EF6C03506CEC + + diff --git a/RSpec/Snippets/should_not_raise.tmSnippet b/RSpec/Snippets/should_not_raise.tmSnippet new file mode 100644 index 0000000..2bdd372 --- /dev/null +++ b/RSpec/Snippets/should_not_raise.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + lambda { $1 }.should_not raise_error(${2:error}) +$0 + name + should_not raise_error + scope + source.ruby.rspec + tabTrigger + shnre + uuid + D6B8DA1B-D07A-4C1E-A27B-59C502104BEA + + diff --git a/RSpec/Snippets/should_not_receive.tmSnippet b/RSpec/Snippets/should_not_receive.tmSnippet new file mode 100644 index 0000000..1cc0982 --- /dev/null +++ b/RSpec/Snippets/should_not_receive.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + ${1:mock}${1/^.+$/./}should_not_receive(:${2:message}) + name + should_not_receive + scope + source.ruby.rspec + tabTrigger + shnr + uuid + 4CBCCACF-D6DA-49A6-9A8E-EC2F9CD15E94 + + diff --git a/RSpec/Snippets/should_not_respond_to.tmSnippet b/RSpec/Snippets/should_not_respond_to.tmSnippet new file mode 100644 index 0000000..5f2ec30 --- /dev/null +++ b/RSpec/Snippets/should_not_respond_to.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should_not respond_to(:${2:sym}) +$0 + name + should_not respond_to + scope + source.ruby.rspec + tabTrigger + shnrt + uuid + E352E5F0-C83B-4C36-AC72-7BFC4F58DBF0 + + diff --git a/RSpec/Snippets/should_not_satisfy.tmSnippet b/RSpec/Snippets/should_not_satisfy.tmSnippet new file mode 100644 index 0000000..dc608ec --- /dev/null +++ b/RSpec/Snippets/should_not_satisfy.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should_not satisfy { |obj| $2 } +$0 + name + should_not satisfy + scope + source.ruby.rspec + tabTrigger + shns + uuid + E573AF3E-F301-4105-ACA3-C9913431E6ED + + diff --git a/RSpec/Snippets/should_not_throw.tmSnippet b/RSpec/Snippets/should_not_throw.tmSnippet new file mode 100644 index 0000000..9077aec --- /dev/null +++ b/RSpec/Snippets/should_not_throw.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + lambda { $1 }.should_not throw_symbol(:${2:symbol}) +$0 + name + should_not throw + scope + source.ruby.rspec + tabTrigger + shnt + uuid + EF7CD2D2-68BC-425B-9C49-7E3597EFE804 + + diff --git a/RSpec/Snippets/should_predicate.tmSnippet b/RSpec/Snippets/should_predicate.tmSnippet new file mode 100644 index 0000000..0e673e4 --- /dev/null +++ b/RSpec/Snippets/should_predicate.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should ${2:be_${3:predicate}} $4 +$0 + name + should predicate + scope + source.ruby.rspec + tabTrigger + shp + uuid + FCFC8C47-F477-4674-BFDD-2E0B8D475CE0 + + diff --git a/RSpec/Snippets/should_raise.tmSnippet b/RSpec/Snippets/should_raise.tmSnippet new file mode 100644 index 0000000..7329797 --- /dev/null +++ b/RSpec/Snippets/should_raise.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + lambda { $1 }.should raise_error(${2:error}) +$0 + name + should raise_error + scope + source.ruby.rspec + tabTrigger + shre + uuid + 813263F0-A2C0-465F-A617-69ECBAF8F7DD + + diff --git a/RSpec/Snippets/should_receive.tmSnippet b/RSpec/Snippets/should_receive.tmSnippet new file mode 100644 index 0000000..018fbb3 --- /dev/null +++ b/RSpec/Snippets/should_receive.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + ${1:mock}${1/^.+$/./}should_receive(:${2:message}) + name + should_receive + scope + source.ruby.rspec + tabTrigger + shr + uuid + 0A7E08E5-4756-49BA-B015-FB3A4D11EA45 + + diff --git a/RSpec/Snippets/should_receive_with_args.tmSnippet b/RSpec/Snippets/should_receive_with_args.tmSnippet new file mode 100644 index 0000000..4f5edf9 --- /dev/null +++ b/RSpec/Snippets/should_receive_with_args.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + with(${1:args}) + name + with args + scope + source.ruby.rspec + tabTrigger + wia + uuid + 3F3E8066-8C1A-40D1-85C7-9DC18C6A34BA + + diff --git a/RSpec/Snippets/should_redirect_to.tmSnippet b/RSpec/Snippets/should_redirect_to.tmSnippet new file mode 100644 index 0000000..fbf7ff8 --- /dev/null +++ b/RSpec/Snippets/should_redirect_to.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + response.should redirect_to(${1:url}) +$0 + name + should redirect_to + scope + source.ruby.rspec + tabTrigger + shrt + uuid + 96F0A193-32F1-4A75-9093-5D20E36593EC + + diff --git a/RSpec/Snippets/should_render.tmSnippet b/RSpec/Snippets/should_render.tmSnippet new file mode 100644 index 0000000..eb1e7b4 --- /dev/null +++ b/RSpec/Snippets/should_render.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + response.should render_template(:${1:template}) +$0 + name + should render_template + scope + source.ruby.rspec + tabTrigger + shrt + uuid + 647C94D6-42FE-40F0-8618-73F7725BF59E + + diff --git a/RSpec/Snippets/should_respond_to.tmSnippet b/RSpec/Snippets/should_respond_to.tmSnippet new file mode 100644 index 0000000..603fdb5 --- /dev/null +++ b/RSpec/Snippets/should_respond_to.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should respond_to(:${2:sym}) +$0 + name + should respond_to + scope + source.ruby.rspec + tabTrigger + shrt + uuid + D139CA8C-AACC-4314-AB86-BB3021D31B12 + + diff --git a/RSpec/Snippets/should_satisfy.tmSnippet b/RSpec/Snippets/should_satisfy.tmSnippet new file mode 100644 index 0000000..d112e86 --- /dev/null +++ b/RSpec/Snippets/should_satisfy.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should satisfy { |obj| $2 } +$0 + name + should satisfy + scope + source.ruby.rspec + tabTrigger + shs + uuid + 3FF9AC90-799D-4BFD-8203-58199A1AD429 + + diff --git a/RSpec/Snippets/should_throw.tmSnippet b/RSpec/Snippets/should_throw.tmSnippet new file mode 100644 index 0000000..4a92aa0 --- /dev/null +++ b/RSpec/Snippets/should_throw.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + lambda { $1 }.should throw_symbol(:${2:symbol}) +$0 + name + should throw + scope + source.ruby.rspec + tabTrigger + sht + uuid + C41E8AD6-00F5-44E7-9809-F79666FE79F0 + + diff --git a/RSpec/Snippets/teardown.tmSnippet b/RSpec/Snippets/teardown.tmSnippet new file mode 100644 index 0000000..eeada4b --- /dev/null +++ b/RSpec/Snippets/teardown.tmSnippet @@ -0,0 +1,18 @@ + + + + + content + after(${1::each}) do + $0 +end + name + after + scope + source.ruby.rspec + tabTrigger + aft + uuid + 1201777F-3AC4-4B2A-9A46-C215F891B07A + + diff --git a/RSpec/Snippets/twice.tmSnippet b/RSpec/Snippets/twice.tmSnippet new file mode 100644 index 0000000..999d445 --- /dev/null +++ b/RSpec/Snippets/twice.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + twice + name + twice + scope + source.ruby.rspec + tabTrigger + tw + uuid + 85E6D1EE-74A4-4B4A-8A00-942B788FF599 + + diff --git a/RSpec/package-metadata.json b/RSpec/package-metadata.json new file mode 100644 index 0000000..9f61f4d --- /dev/null +++ b/RSpec/package-metadata.json @@ -0,0 +1 @@ +{"url": "https://github.com/SublimeText/RSpec", "version": "2012.08.11.14.13.57", "description": "Sublime Text 2 plugin for RSpec BDD Framework"} \ No newline at end of file diff --git a/RSpec/shared.py b/RSpec/shared.py new file mode 100644 index 0000000..b3ebe83 --- /dev/null +++ b/RSpec/shared.py @@ -0,0 +1,7 @@ +"""Returns the neighbour focus group for the current window.""" +def other_group_in_pair(window): + if window.active_group() % 2 == 0: + target_group = window.active_group()+1 + else: + target_group = window.active_group()-1 + return min(target_group, window.num_groups()-1) diff --git a/Rails/$LABEL.sublime-snippet b/Rails/$LABEL.sublime-snippet new file mode 100644 index 0000000..c8a683b --- /dev/null +++ b/Rails/$LABEL.sublime-snippet @@ -0,0 +1,6 @@ + + + $L + source.yaml + $LABEL + diff --git a/Rails/%3C%=-Fixtures_identify(%3Asymbol)-%%3E.sublime-snippet b/Rails/%3C%=-Fixtures_identify(%3Asymbol)-%%3E.sublime-snippet new file mode 100644 index 0000000..dff6ebd --- /dev/null +++ b/Rails/%3C%=-Fixtures_identify(%3Asymbol)-%%3E.sublime-snippet @@ -0,0 +1,6 @@ + + + fi + source.yaml + <%= Fixtures.identify(:symbol) %> + diff --git a/Rails/180-rails-form_tag.sublime-snippet b/Rails/180-rails-form_tag.sublime-snippet new file mode 100644 index 0000000..e00b325 --- /dev/null +++ b/Rails/180-rails-form_tag.sublime-snippet @@ -0,0 +1,8 @@ + + "${5:update}"}${6:, {:${8:class} => "${9:form}"\}}) do${TM_RAILS_TEMPLATE_END_RUBY_EXPR} + $0 +${TM_RAILS_TEMPLATE_END_RUBY_BLOCK}]]> + ft + text.html.ruby, text.haml + form_tag + diff --git a/Rails/Create-binary-column.sublime-snippet b/Rails/Create-binary-column.sublime-snippet new file mode 100644 index 0000000..af72221 --- /dev/null +++ b/Rails/Create-binary-column.sublime-snippet @@ -0,0 +1,7 @@ + + ${3:2}.megabytes} +$0]]> + tcbi + meta.rails.migration.create_table, meta.rails.migration.change_table + Table column binary + diff --git a/Rails/Create-boolean-column.sublime-snippet b/Rails/Create-boolean-column.sublime-snippet new file mode 100644 index 0000000..df9ae62 --- /dev/null +++ b/Rails/Create-boolean-column.sublime-snippet @@ -0,0 +1,7 @@ + + + tcb + meta.rails.migration.create_table, meta.rails.migration.change_table + Table column boolean + diff --git a/Rails/Create-controller-class.sublime-snippet b/Rails/Create-controller-class.sublime-snippet new file mode 100644 index 0000000..f10ba6d --- /dev/null +++ b/Rails/Create-controller-class.sublime-snippet @@ -0,0 +1,15 @@ + + + cla + source.ruby + Create controller class + diff --git a/Rails/Create-date-column.sublime-snippet b/Rails/Create-date-column.sublime-snippet new file mode 100644 index 0000000..1f0a402 --- /dev/null +++ b/Rails/Create-date-column.sublime-snippet @@ -0,0 +1,7 @@ + + + tcda + meta.rails.migration.create_table, meta.rails.migration.change_table + Table column date + diff --git a/Rails/Create-datetime-column.sublime-snippet b/Rails/Create-datetime-column.sublime-snippet new file mode 100644 index 0000000..d5cbb70 --- /dev/null +++ b/Rails/Create-datetime-column.sublime-snippet @@ -0,0 +1,7 @@ + + + tcdt + meta.rails.migration.create_table, meta.rails.migration.change_table + Table column datetime + diff --git a/Rails/Create-decimal-column.sublime-snippet b/Rails/Create-decimal-column.sublime-snippet new file mode 100644 index 0000000..a7d797c --- /dev/null +++ b/Rails/Create-decimal-column.sublime-snippet @@ -0,0 +1,7 @@ + + ${4:10}}${5:, :scale => ${6:2}}} +$0]]> + tcd + meta.rails.migration.create_table, meta.rails.migration.change_table + Table column decimal + diff --git a/Rails/Create-float-column.sublime-snippet b/Rails/Create-float-column.sublime-snippet new file mode 100644 index 0000000..85a8f97 --- /dev/null +++ b/Rails/Create-float-column.sublime-snippet @@ -0,0 +1,7 @@ + + + tcf + meta.rails.migration.create_table, meta.rails.migration.change_table + Table column float + diff --git a/Rails/Create-functional-test-class.sublime-snippet b/Rails/Create-functional-test-class.sublime-snippet new file mode 100644 index 0000000..1baf51c --- /dev/null +++ b/Rails/Create-functional-test-class.sublime-snippet @@ -0,0 +1,11 @@ + + + cla + source.ruby + Create functional test class + diff --git a/Rails/Create-integer-column.sublime-snippet b/Rails/Create-integer-column.sublime-snippet new file mode 100644 index 0000000..170bf2b --- /dev/null +++ b/Rails/Create-integer-column.sublime-snippet @@ -0,0 +1,7 @@ + + + tci + meta.rails.migration.create_table, meta.rails.migration.change_table + Table column integer + diff --git a/Rails/Create-lock_version-column.sublime-snippet b/Rails/Create-lock_version-column.sublime-snippet new file mode 100644 index 0000000..9d3133f --- /dev/null +++ b/Rails/Create-lock_version-column.sublime-snippet @@ -0,0 +1,7 @@ + + false, :default => 0 +$0]]> + tcl + meta.rails.migration.create_table, meta.rails.migration.change_table + Table column lock_version + diff --git a/Rails/Create-references-column.sublime-snippet b/Rails/Create-references-column.sublime-snippet new file mode 100644 index 0000000..0e7f92b --- /dev/null +++ b/Rails/Create-references-column.sublime-snippet @@ -0,0 +1,7 @@ + + ${3:{ :default => '${4:Photo}' \}}} +$0]]> + tcr + meta.rails.migration.create_table, meta.rails.migration.change_table + Table column(s) references + diff --git a/Rails/Create-string-column.sublime-snippet b/Rails/Create-string-column.sublime-snippet new file mode 100644 index 0000000..024500a --- /dev/null +++ b/Rails/Create-string-column.sublime-snippet @@ -0,0 +1,7 @@ + + + tcs + meta.rails.migration.create_table, meta.rails.migration.change_table + Table column string + diff --git a/Rails/Create-text-column.sublime-snippet b/Rails/Create-text-column.sublime-snippet new file mode 100644 index 0000000..fb71fa1 --- /dev/null +++ b/Rails/Create-text-column.sublime-snippet @@ -0,0 +1,7 @@ + + + tct + meta.rails.migration.create_table, meta.rails.migration.change_table + Table column text + diff --git a/Rails/Create-time-column.sublime-snippet b/Rails/Create-time-column.sublime-snippet new file mode 100644 index 0000000..82f3f86 --- /dev/null +++ b/Rails/Create-time-column.sublime-snippet @@ -0,0 +1,7 @@ + + + tcti + meta.rails.migration.create_table, meta.rails.migration.change_table + Table column time + diff --git a/Rails/Create-timestamp-column.sublime-snippet b/Rails/Create-timestamp-column.sublime-snippet new file mode 100644 index 0000000..29aa34f --- /dev/null +++ b/Rails/Create-timestamp-column.sublime-snippet @@ -0,0 +1,7 @@ + + + tcts + meta.rails.migration.create_table, meta.rails.migration.change_table + Table column timestamp + diff --git a/Rails/Create-timestamps-columns.sublime-snippet b/Rails/Create-timestamps-columns.sublime-snippet new file mode 100644 index 0000000..8807f4b --- /dev/null +++ b/Rails/Create-timestamps-columns.sublime-snippet @@ -0,0 +1,7 @@ + + + tctss + meta.rails.migration.create_table, meta.rails.migration.change_table + Table column timestamps + diff --git a/Rails/HTML (Rails).tmLanguage b/Rails/HTML (Rails).tmLanguage new file mode 100644 index 0000000..7fae1a3 --- /dev/null +++ b/Rails/HTML (Rails).tmLanguage @@ -0,0 +1,92 @@ + + + + + fileTypes + + rhtml + erb + html.erb + + foldingStartMarker + (?x) + (<(?i:head|body|table|thead|tbody|tfoot|tr|div|select|fieldset|style|script|ul|ol|form|dl)\b.*?> + |<!--(?!.*-->) + |\{\s*($|\?>\s*$|//|/\*(.*\*/\s*$|(?!.*?\*/))) + ) + foldingStopMarker + (?x) + (</(?i:head|body|table|thead|tbody|tfoot|tr|div|select|fieldset|style|script|ul|ol|form|dl)> + |^\s*--> + |(^|\s)\} + ) + keyEquivalent + ^~R + name + HTML (Rails) + patterns + + + begin + <%+# + captures + + 0 + + name + punctuation.definition.comment.erb + + + end + %> + name + comment.block.erb + + + begin + <%+(?!>)[-=]? + captures + + 0 + + name + punctuation.section.embedded.ruby + + + end + -?%> + name + source.ruby.rails.embedded.html + patterns + + + captures + + 1 + + name + punctuation.definition.comment.ruby + + + match + (#).*?(?=-?%>) + name + comment.line.number-sign.ruby + + + include + source.ruby.rails + + + + + include + text.html.basic + + + scopeName + text.html.ruby + uuid + 45D7E1FC-7D0B-4105-A1A2-3D10BB555A5C + + diff --git a/Rails/HTML (Rails).tmLanguage.cache b/Rails/HTML (Rails).tmLanguage.cache new file mode 100644 index 0000000..f840edf Binary files /dev/null and b/Rails/HTML (Rails).tmLanguage.cache differ diff --git a/Rails/JavaScript (Rails).tmLanguage b/Rails/JavaScript (Rails).tmLanguage new file mode 100644 index 0000000..fb9a9bc --- /dev/null +++ b/Rails/JavaScript (Rails).tmLanguage @@ -0,0 +1,82 @@ + + + + + fileTypes + + js.erb + + foldingStartMarker + /\*\*|\{\s*$ + foldingStopMarker + \*\*/|^\s*\} + keyEquivalent + ^~J + name + JavaScript (Rails) + patterns + + + begin + <%+# + captures + + 0 + + name + punctuation.definition.comment.erb + + + end + %> + name + comment.block.erb + + + begin + <%+(?!>)[-=]? + captures + + 0 + + name + punctuation.section.embedded.ruby + + + end + -?%> + name + source.ruby.rails.erb + patterns + + + captures + + 1 + + name + punctuation.definition.comment.ruby + + + match + (#).*?(?=-?%>) + name + comment.line.number-sign.ruby + + + include + source.ruby.rails + + + + + include + source.js + + + scopeName + source.js.rails + uuid + 4A3E6DA7-67A3-45B1-9EE0-ECFF9C7FA6C0 + + diff --git a/Rails/JavaScript (Rails).tmLanguage.cache b/Rails/JavaScript (Rails).tmLanguage.cache new file mode 100644 index 0000000..c3f7b6a Binary files /dev/null and b/Rails/JavaScript (Rails).tmLanguage.cache differ diff --git a/Rails/Migration-Create-Column-(mcc).sublime-snippet b/Rails/Migration-Create-Column-(mcc).sublime-snippet new file mode 100644 index 0000000..55be931 --- /dev/null +++ b/Rails/Migration-Create-Column-(mcc).sublime-snippet @@ -0,0 +1,7 @@ + + + mcol + meta.rails.migration.create_table + Create Column in Table + diff --git a/Rails/Migration-Create-Column-Continue-(mccc).sublime-snippet b/Rails/Migration-Create-Column-Continue-(mccc).sublime-snippet new file mode 100644 index 0000000..8dcc32d --- /dev/null +++ b/Rails/Migration-Create-Column-Continue-(mccc).sublime-snippet @@ -0,0 +1,7 @@ + + + mccc + meta.rails.migration.create_table + Create Several Columns in Table + diff --git a/Rails/Migration-Drop-Create-Table-(mdct).sublime-snippet b/Rails/Migration-Drop-Create-Table-(mdct).sublime-snippet new file mode 100644 index 0000000..2d9325b --- /dev/null +++ b/Rails/Migration-Drop-Create-Table-(mdct).sublime-snippet @@ -0,0 +1,6 @@ + + + mtab + meta.rails.migration - meta.rails.migration.create_table - meta.rails.migration.change_table + Drop / Create Table + diff --git a/Rails/Migration-Remove-and-Add-Column-(mrac).sublime-snippet b/Rails/Migration-Remove-and-Add-Column-(mrac).sublime-snippet new file mode 100644 index 0000000..a2389c6 --- /dev/null +++ b/Rails/Migration-Remove-and-Add-Column-(mrac).sublime-snippet @@ -0,0 +1,6 @@ + + + mcol + meta.rails.migration - meta.rails.migration.create_table - meta.rails.migration.change_table + Remove / Add Column + diff --git a/Rails/RAILS_DEFAULT_LOGGER.debug-(rdb).sublime-snippet b/Rails/RAILS_DEFAULT_LOGGER.debug-(rdb).sublime-snippet new file mode 100644 index 0000000..f287425 --- /dev/null +++ b/Rails/RAILS_DEFAULT_LOGGER.debug-(rdb).sublime-snippet @@ -0,0 +1,6 @@ + + + rdb + source.ruby.rails + RAILS_DEFAULT_LOGGER.debug + diff --git a/Rails/Ruby Haml Comments.tmPreferences b/Rails/Ruby Haml Comments.tmPreferences new file mode 100644 index 0000000..a3fe204 --- /dev/null +++ b/Rails/Ruby Haml Comments.tmPreferences @@ -0,0 +1,24 @@ + + + + + name + Comments + scope + text.haml + settings + + shellVariables + + + name + TM_COMMENT_START + value + / + + + + uuid + 4C2E088A-2EDB-44DF-9C62-CE0112B4C237 + + diff --git a/Rails/Ruby Haml Comments.tmPreferences.cache b/Rails/Ruby Haml Comments.tmPreferences.cache new file mode 100644 index 0000000..628d8da Binary files /dev/null and b/Rails/Ruby Haml Comments.tmPreferences.cache differ diff --git a/Rails/Ruby Haml.tmLanguage b/Rails/Ruby Haml.tmLanguage new file mode 100644 index 0000000..88d43f2 --- /dev/null +++ b/Rails/Ruby Haml.tmLanguage @@ -0,0 +1,248 @@ + + + + + fileTypes + + haml + sass + + foldingStartMarker + ^\s*([-%#\:\.\w\=].*)\s$ + foldingStopMarker + ^\s*$ + keyEquivalent + ^~H + name + Ruby Haml + patterns + + + captures + + 1 + + name + punctuation.definition.prolog.haml + + + match + ^(!!!)($|\s.*) + name + meta.prolog.haml + + + captures + + 1 + + name + punctuation.section.comment.haml + + + match + ^ *(/)\s*\S.*$\n? + name + comment.line.slash.haml + + + begin + ^( *)(/)\s*$ + beginCaptures + + 2 + + name + punctuation.section.comment.haml + + + end + ^(?!\1 ) + name + comment.block.haml + patterns + + + include + text.haml + + + + + begin + ^\s*(?:((%)([\w:]+))|(?=\.|#)) + captures + + 1 + + name + meta.tag.haml + + 2 + + name + punctuation.definition.tag.haml + + 3 + + name + entity.name.tag.haml + + + end + $|(?!\.|#|\{|\[|=|-|~|/) + patterns + + + match + \.[\w-]+ + name + entity.name.tag.class.haml + + + match + #[\w-]+ + name + entity.name.tag.id.haml + + + begin + \{(?=.*\}|.*\|\s*$) + end + \}|$|^(?!.*\|\s*$) + name + meta.section.attributes.haml + patterns + + + include + source.ruby.rails + + + include + #continuation + + + + + begin + \[(?=.*\]|.*\|\s*$) + end + \]|$|^(?!.*\|\s*$) + name + meta.section.object.haml + patterns + + + include + source.ruby.rails + + + include + #continuation + + + + + include + #rubyline + + + match + / + name + punctuation.terminator.tag.haml + + + + + captures + + 1 + + name + meta.escape.haml + + + match + ^\s*(\\.) + + + begin + ^\s*(?==|-|~) + end + $ + patterns + + + include + #rubyline + + + + + repository + + continuation + + captures + + 1 + + name + punctuation.separator.continuation.haml + + + match + (\|)\s*\n + + rubyline + + begin + =|-|~ + contentName + source.ruby.embedded.haml + end + ((do|\{)( \|[^|]+\|)?)$|$|^(?!.*\|\s*$) + endCaptures + + 1 + + name + source.ruby.embedded.html + + 2 + + name + keyword.control.ruby.start-block + + + name + meta.line.ruby.haml + patterns + + + comment + Hack to let ruby comments work in this context properly + match + #.*$ + name + comment.line.number-sign.ruby + + + include + source.ruby.rails + + + include + #continuation + + + + + scopeName + text.haml + uuid + 3D727049-DD05-45DF-92A5-D50EA36FD035 + + diff --git a/Rails/Ruby Haml.tmLanguage.cache b/Rails/Ruby Haml.tmLanguage.cache new file mode 100644 index 0000000..e7fbdc3 Binary files /dev/null and b/Rails/Ruby Haml.tmLanguage.cache differ diff --git a/Rails/Ruby on Rails.tmLanguage b/Rails/Ruby on Rails.tmLanguage new file mode 100644 index 0000000..f9901de --- /dev/null +++ b/Rails/Ruby on Rails.tmLanguage @@ -0,0 +1,287 @@ + + + + + fileTypes + + rxml + builder + + foldingStartMarker + (?x)^ + (\s*+ + (module|class|def + |unless|if + |case + |begin + |for|while|until + |( "(\\.|[^"])*+" # eat a double quoted string + | '(\\.|[^'])*+' # eat a single quoted string + | [^#"'] # eat all but comments and strings + )* + ( \s (do|begin|case) + | [-+=&|*/~%^<>~] \s*+ (if|unless) + ) + )\b + (?! [^;]*+ ; .*? \bend\b ) + |( "(\\.|[^"])*+" # eat a double quoted string + | '(\\.|[^'])*+' # eat a single quoted string + | [^#"'] # eat all but comments and strings + )* + ( \{ (?! [^}]*+ \} ) + | \[ (?! [^\]]*+ \] ) + ) + ).*$ + | [#] .*? \(fold\) \s*+ $ # Sune’s special marker + + foldingStopMarker + (?x) + ( (^|;) \s*+ end \s*+ ([#].*)? $ + | ^ \s*+ [}\]] \s*+ ([#].*)? $ + | [#] .*? \(end\) \s*+ $ # Sune’s special marker + ) + keyEquivalent + ^~R + name + Ruby on Rails + patterns + + + begin + (^\s*)(?=class\s+(([.a-zA-Z0-9_:]+ControllerTest(\s*<\s*[.a-zA-Z0-9_:]+)?))) + comment + Uses lookahead to match classes with the ControllerTest suffix; includes 'source.ruby' to avoid infinite recursion + end + ^\1(?=end)\b + name + meta.rails.functional_test + patterns + + + include + source.ruby + + + include + $self + + + + + begin + (^\s*)(?=class\s+(([.a-zA-Z0-9_:]+Controller\b(\s*<\s*[.a-zA-Z0-9_:]+)?)|(<<\s*[.a-zA-Z0-9_:]+)))(?!.+\bend\b) + comment + Uses lookahead to match classes with the Controller suffix; includes 'source.ruby' to avoid infinite recursion + end + ^\1(?=end)\b + name + meta.rails.controller + patterns + + + include + source.ruby + + + include + $self + + + + + begin + (^\s*)(?=module\s+((([A-Z]\w*::)*)[A-Z]\w*)Helper) + comment + Uses lookahead to match modules with the Helper suffix; includes 'source.ruby' to avoid infinite recursion + end + ^\1(?=end)\b + name + meta.rails.helper + patterns + + + include + source.ruby + + + include + $self + + + + + begin + (^\s*)(?=class\s+(([.a-zA-Z0-9_:]+(\s*<\s*ActionMailer::Base)))) + comment + Uses lookahead to match classes that inherit from ActionMailer::Base; includes 'source.ruby' to avoid infinite recursion + end + ^\1(?=end)\b + name + meta.rails.mailer + patterns + + + include + source.ruby + + + include + $self + + + + + begin + (^\s*)(?=class\s+.+ActiveRecord::Base) + comment + Uses lookahead to match classes that (may) inherit from ActiveRecord::Base; includes 'source.ruby' to avoid infinite recursion + end + ^\1(?=end)\b + name + meta.rails.model + patterns + + + include + source.ruby + + + include + $self + + + + + begin + (^\s*)(?=class\s+.+ActiveRecord::Migration) + comment + Uses lookahead to match classes that (may) inherit from ActiveRecord::Migration; includes 'source.ruby' to avoid infinite recursion + end + ^\1(?=end)\b + name + meta.rails.migration + patterns + + + begin + (^\s*)(?=change_table)\b + comment + Uses lookahead to match methods change_table; includes 'source.ruby' to avoid infinite recursion + contentName + meta.rails.migration.change_table + end + ^\1(?=end)\b + patterns + + + include + source.ruby + + + include + $self + + + + + begin + (^\s*)(?=create_table)\b + comment + Uses lookahead to match methods create_table; includes 'source.ruby' to avoid infinite recursion + contentName + meta.rails.migration.create_table + end + ^\1(?=end)\b + patterns + + + include + source.ruby + + + include + $self + + + + + include + source.ruby + + + include + $self + + + + + begin + (^\s*)(?=class\s+(?![.a-zA-Z0-9_:]+ControllerTest)(([.a-zA-Z0-9_:]+Test(\s*<\s*[.a-zA-Z0-9_:]+)?)|(<<\s*[.a-zA-Z0-9_:]+))) + comment + Uses lookahead to match classes with the Test suffix; includes 'source.ruby' to avoid infinite recursion + end + ^\1(?=end)\b + name + meta.rails.unit_test + patterns + + + include + source.ruby + + + include + $self + + + + + begin + (^\s*)ActionController::Routing::Routes + comment + Uses ActionController::Routing::Routes to determine it is a routes file; includes 'source.ruby' to avoid infinite recursion + end + ^\1(?=end)\b + name + meta.rails.routes + patterns + + + include + source.ruby + + + include + $self + + + + + match + \b(before_filter|skip_before_filter|skip_after_filter|after_filter|around_filter|filter|filter_parameter_logging|layout|require_dependency|render|render_action|render_text|render_file|render_template|render_nothing|render_component|render_without_layout|rescue_from|url_for|redirect_to|redirect_to_path|redirect_to_url|respond_to|helper|helper_method|model|service|observer|serialize|scaffold|verify|hide_action)\b + name + support.function.actionpack.rails + + + match + \b(named_scope|after_create|after_destroy|after_save|after_update|after_validation|after_validation_on_create|after_validation_on_update|before_create|before_destroy|before_save|before_update|before_validation|before_validation_on_create|before_validation_on_update|composed_of|belongs_to|has_one|has_many|has_and_belongs_to_many|validate|validate_on_create|validates_numericality_of|validate_on_update|validates_acceptance_of|validates_associated|validates_confirmation_of|validates_each|validates_format_of|validates_inclusion_of|validates_exclusion_of|validates_length_of|validates_presence_of|validates_size_of|validates_uniqueness_of|attr_protected|attr_accessible|attr_readonly)\b + name + support.function.activerecord.rails + + + match + \b(alias_method_chain|alias_attribute|delegate|cattr_accessor|mattr_accessor|returning)\b + name + support.function.activesupport.rails + + + include + source.ruby + + + scopeName + source.ruby.rails + uuid + 54D6E91E-8F31-11D9-90C5-0011242E4184 + + diff --git a/Rails/Ruby on Rails.tmLanguage.cache b/Rails/Ruby on Rails.tmLanguage.cache new file mode 100644 index 0000000..1ed9eba Binary files /dev/null and b/Rails/Ruby on Rails.tmLanguage.cache differ diff --git a/Rails/SQL (Rails).tmLanguage b/Rails/SQL (Rails).tmLanguage new file mode 100644 index 0000000..cfb581e --- /dev/null +++ b/Rails/SQL (Rails).tmLanguage @@ -0,0 +1,51 @@ + + + + + fileTypes + + erbsql + sql.erb + + foldingStartMarker + \s*\(\s*$ + foldingStopMarker + ^\s*\) + keyEquivalent + ^~R + name + SQL (Rails) + patterns + + + begin + <%+(?!>)=? + end + %> + name + source.ruby.rails.embedded.sql + patterns + + + match + #.*?(?=%>) + name + comment.line.number-sign.ruby + + + include + source.ruby.rails + + + + + include + source.sql + + + scopeName + source.sql.ruby + uuid + D54FBDED-5481-4CC7-B75F-66465A499882 + + diff --git a/Rails/SQL (Rails).tmLanguage.cache b/Rails/SQL (Rails).tmLanguage.cache new file mode 100644 index 0000000..6a2649a Binary files /dev/null and b/Rails/SQL (Rails).tmLanguage.cache differ diff --git a/Rails/Table-column(s)-rename.sublime-snippet b/Rails/Table-column(s)-rename.sublime-snippet new file mode 100644 index 0000000..a6e010b --- /dev/null +++ b/Rails/Table-column(s)-rename.sublime-snippet @@ -0,0 +1,7 @@ + + + tre + meta.rails.migration.create_table, meta.rails.migration.change_table + Table column(s) rename + diff --git a/Rails/Template (ERB).tmPreferences b/Rails/Template (ERB).tmPreferences new file mode 100644 index 0000000..7a830fb --- /dev/null +++ b/Rails/Template (ERB).tmPreferences @@ -0,0 +1,48 @@ + + + + + name + Template (ERB) + scope + text.html.ruby + settings + + shellVariables + + + name + TM_RAILS_TEMPLATE_START_RUBY_EXPR + value + <%= + + + name + TM_RAILS_TEMPLATE_END_RUBY_EXPR + value + %> + + + name + TM_RAILS_TEMPLATE_START_RUBY_INLINE + value + <% + + + name + TM_RAILS_TEMPLATE_END_RUBY_INLINE + value + -%> + + + name + TM_RAILS_TEMPLATE_END_RUBY_BLOCK + value + <% end -%> + + + + uuid + 87EF33FE-E918-11DC-A399-00112475D960 + + diff --git a/Rails/Template (ERB).tmPreferences.cache b/Rails/Template (ERB).tmPreferences.cache new file mode 100644 index 0000000..c0ebc47 Binary files /dev/null and b/Rails/Template (ERB).tmPreferences.cache differ diff --git a/Rails/Template (Haml).tmPreferences b/Rails/Template (Haml).tmPreferences new file mode 100644 index 0000000..7fec5a1 --- /dev/null +++ b/Rails/Template (Haml).tmPreferences @@ -0,0 +1,48 @@ + + + + + name + Template (Haml) + scope + text.haml + settings + + shellVariables + + + name + TM_RAILS_TEMPLATE_START_RUBY_EXPR + value + = + + + name + TM_RAILS_TEMPLATE_END_RUBY_EXPR + value + + + + name + TM_RAILS_TEMPLATE_START_RUBY_INLINE + value + - + + + name + TM_RAILS_TEMPLATE_END_RUBY_INLINE + value + + + + name + TM_RAILS_TEMPLATE_END_RUBY_BLOCK + value + + + + + uuid + C0FD2646-E924-11DC-A399-00112475D960 + + diff --git a/Rails/Template (Haml).tmPreferences.cache b/Rails/Template (Haml).tmPreferences.cache new file mode 100644 index 0000000..afc4d23 Binary files /dev/null and b/Rails/Template (Haml).tmPreferences.cache differ diff --git a/Rails/Test-Assert-Redirected-To-(art).sublime-snippet b/Rails/Test-Assert-Redirected-To-(art).sublime-snippet new file mode 100644 index 0000000..69e5bde --- /dev/null +++ b/Rails/Test-Assert-Redirected-To-(art).sublime-snippet @@ -0,0 +1,6 @@ + + "${1:index}"}]]> + art + source.ruby.rails + assert_redirected_to + diff --git a/Rails/Test-Assert-Response-(are).sublime-snippet b/Rails/Test-Assert-Response-(are).sublime-snippet new file mode 100644 index 0000000..65acd16 --- /dev/null +++ b/Rails/Test-Assert-Response-(are).sublime-snippet @@ -0,0 +1,6 @@ + + + asre + source.ruby.rails + assert_response + diff --git a/Rails/after_create.sublime-snippet b/Rails/after_create.sublime-snippet new file mode 100644 index 0000000..4c916ac --- /dev/null +++ b/Rails/after_create.sublime-snippet @@ -0,0 +1,6 @@ + + + aftc + source.ruby.rails + after_create + diff --git a/Rails/after_destroy.sublime-snippet b/Rails/after_destroy.sublime-snippet new file mode 100644 index 0000000..ed1caf1 --- /dev/null +++ b/Rails/after_destroy.sublime-snippet @@ -0,0 +1,6 @@ + + + aftd + source.ruby.rails + after_destroy + diff --git a/Rails/after_save.sublime-snippet b/Rails/after_save.sublime-snippet new file mode 100644 index 0000000..a3b32e3 --- /dev/null +++ b/Rails/after_save.sublime-snippet @@ -0,0 +1,6 @@ + + + afts + source.ruby.rails + after_save + diff --git a/Rails/after_update.sublime-snippet b/Rails/after_update.sublime-snippet new file mode 100644 index 0000000..67776db --- /dev/null +++ b/Rails/after_update.sublime-snippet @@ -0,0 +1,6 @@ + + + aftu + source.ruby.rails + after_update + diff --git a/Rails/after_validation.sublime-snippet b/Rails/after_validation.sublime-snippet new file mode 100644 index 0000000..e8e9bdf --- /dev/null +++ b/Rails/after_validation.sublime-snippet @@ -0,0 +1,6 @@ + + + aftv + source.ruby.rails + after_validation + diff --git a/Rails/after_validation_on_create.sublime-snippet b/Rails/after_validation_on_create.sublime-snippet new file mode 100644 index 0000000..dfed764 --- /dev/null +++ b/Rails/after_validation_on_create.sublime-snippet @@ -0,0 +1,6 @@ + + + aftvoc + source.ruby.rails + after_validation_on_create + diff --git a/Rails/after_validation_on_update.sublime-snippet b/Rails/after_validation_on_update.sublime-snippet new file mode 100644 index 0000000..c3984b3 --- /dev/null +++ b/Rails/after_validation_on_update.sublime-snippet @@ -0,0 +1,6 @@ + + + aftvou + source.ruby.rails + after_validation_on_update + diff --git a/Rails/assert(var-=-assigns(%3Avar)).sublime-snippet b/Rails/assert(var-=-assigns(%3Avar)).sublime-snippet new file mode 100644 index 0000000..9cbe200 --- /dev/null +++ b/Rails/assert(var-=-assigns(%3Avar)).sublime-snippet @@ -0,0 +1,7 @@ + + + asg + source.ruby + assert(var = assigns(:var)) + diff --git a/Rails/assert_difference.sublime-snippet b/Rails/assert_difference.sublime-snippet new file mode 100644 index 0000000..8d70d58 --- /dev/null +++ b/Rails/assert_difference.sublime-snippet @@ -0,0 +1,8 @@ + + + asd + source.ruby + assert_difference + diff --git a/Rails/assert_no_difference.sublime-snippet b/Rails/assert_no_difference.sublime-snippet new file mode 100644 index 0000000..ab17f1a --- /dev/null +++ b/Rails/assert_no_difference.sublime-snippet @@ -0,0 +1,8 @@ + + + asnd + source.ruby + assert_no_difference + diff --git a/Rails/assert_redirected_to-(nested-path).sublime-snippet b/Rails/assert_redirected_to-(nested-path).sublime-snippet new file mode 100644 index 0000000..9d9f9ad --- /dev/null +++ b/Rails/assert_redirected_to-(nested-path).sublime-snippet @@ -0,0 +1,6 @@ + + + artnp + source.ruby.rails + assert_redirected_to (nested path) + diff --git a/Rails/assert_redirected_to-(nested-path-plural).sublime-snippet b/Rails/assert_redirected_to-(nested-path-plural).sublime-snippet new file mode 100644 index 0000000..c3c0049 --- /dev/null +++ b/Rails/assert_redirected_to-(nested-path-plural).sublime-snippet @@ -0,0 +1,6 @@ + + + artnpp + source.ruby.rails + assert_redirected_to (nested path plural) + diff --git a/Rails/assert_redirected_to-(path).sublime-snippet b/Rails/assert_redirected_to-(path).sublime-snippet new file mode 100644 index 0000000..ccc43fc --- /dev/null +++ b/Rails/assert_redirected_to-(path).sublime-snippet @@ -0,0 +1,6 @@ + + + artp + source.ruby.rails + assert_redirected_to (path) + diff --git a/Rails/assert_redirected_to-(path-plural).sublime-snippet b/Rails/assert_redirected_to-(path-plural).sublime-snippet new file mode 100644 index 0000000..2d3d099 --- /dev/null +++ b/Rails/assert_redirected_to-(path-plural).sublime-snippet @@ -0,0 +1,6 @@ + + + artpp + source.ruby.rails + assert_redirected_to (path plural) + diff --git a/Rails/assert_rjs.sublime-snippet b/Rails/assert_rjs.sublime-snippet new file mode 100644 index 0000000..606e494 --- /dev/null +++ b/Rails/assert_rjs.sublime-snippet @@ -0,0 +1,6 @@ + + + asrj + source.ruby.rails + assert_rjs + diff --git a/Rails/assert_select.sublime-snippet b/Rails/assert_select.sublime-snippet new file mode 100644 index 0000000..00f9244 --- /dev/null +++ b/Rails/assert_select.sublime-snippet @@ -0,0 +1,8 @@ + + ${4:'${5:inner_html}'}}${6: do + $0 +end}]]> + ass + source.ruby.rails + assert_select + diff --git a/Rails/before_create.sublime-snippet b/Rails/before_create.sublime-snippet new file mode 100644 index 0000000..bf36840 --- /dev/null +++ b/Rails/before_create.sublime-snippet @@ -0,0 +1,6 @@ + + + befc + source.ruby.rails + before_create + diff --git a/Rails/before_destroy.sublime-snippet b/Rails/before_destroy.sublime-snippet new file mode 100644 index 0000000..faa370d --- /dev/null +++ b/Rails/before_destroy.sublime-snippet @@ -0,0 +1,6 @@ + + + befd + source.ruby.rails + before_destroy + diff --git a/Rails/before_save.sublime-snippet b/Rails/before_save.sublime-snippet new file mode 100644 index 0000000..3bba935 --- /dev/null +++ b/Rails/before_save.sublime-snippet @@ -0,0 +1,6 @@ + + + befs + source.ruby.rails + before_save + diff --git a/Rails/before_update.sublime-snippet b/Rails/before_update.sublime-snippet new file mode 100644 index 0000000..53db71b --- /dev/null +++ b/Rails/before_update.sublime-snippet @@ -0,0 +1,6 @@ + + + befu + source.ruby.rails + before_update + diff --git a/Rails/before_validation.sublime-snippet b/Rails/before_validation.sublime-snippet new file mode 100644 index 0000000..eac68f6 --- /dev/null +++ b/Rails/before_validation.sublime-snippet @@ -0,0 +1,6 @@ + + + befv + source.ruby.rails + before_validation + diff --git a/Rails/before_validation_on_create.sublime-snippet b/Rails/before_validation_on_create.sublime-snippet new file mode 100644 index 0000000..e52c7c4 --- /dev/null +++ b/Rails/before_validation_on_create.sublime-snippet @@ -0,0 +1,6 @@ + + + befvoc + source.ruby.rails + before_validation_on_create + diff --git a/Rails/before_validation_on_update.sublime-snippet b/Rails/before_validation_on_update.sublime-snippet new file mode 100644 index 0000000..e8521b7 --- /dev/null +++ b/Rails/before_validation_on_update.sublime-snippet @@ -0,0 +1,6 @@ + + + befvou + source.ruby.rails + before_validation_on_update + diff --git a/Rails/belongs_to-(bt).sublime-snippet b/Rails/belongs_to-(bt).sublime-snippet new file mode 100644 index 0000000..df214c6 --- /dev/null +++ b/Rails/belongs_to-(bt).sublime-snippet @@ -0,0 +1,6 @@ + + "${3:${1/[[:alpha:]]+|(_)/(?1::\u$0)/g}}", :foreign_key => "${4:${1}_id}"}]]> + bt + source.ruby.rails + belongs_to + diff --git a/Rails/cattr_accessor.sublime-snippet b/Rails/cattr_accessor.sublime-snippet new file mode 100644 index 0000000..c87f1aa --- /dev/null +++ b/Rails/cattr_accessor.sublime-snippet @@ -0,0 +1,6 @@ + + + crw + source.ruby.rails + cattr_accessor + diff --git a/Rails/def-create-resource.sublime-snippet b/Rails/def-create-resource.sublime-snippet new file mode 100644 index 0000000..ae94de2 --- /dev/null +++ b/Rails/def-create-resource.sublime-snippet @@ -0,0 +1,20 @@ + + @$1, :status => :created, :location => @$1 } + else + wants.html { render :action => "new" } + wants.xml { render :xml => @$1.errors, :status => :unprocessable_entity } + end + end +end +]]> + defcreate + meta.rails.controller + def create - resource + diff --git a/Rails/def-get-request.sublime-snippet b/Rails/def-get-request.sublime-snippet new file mode 100644 index 0000000..219f138 --- /dev/null +++ b/Rails/def-get-request.sublime-snippet @@ -0,0 +1,11 @@ + + @$3.to_param} + assert_response :success + $0 +end]]> + deftg + meta.rails.functional_test + def test_should_get_action + diff --git a/Rails/def-post-request.sublime-snippet b/Rails/def-post-request.sublime-snippet new file mode 100644 index 0000000..dee4804 --- /dev/null +++ b/Rails/def-post-request.sublime-snippet @@ -0,0 +1,11 @@ + + @$2.to_param}, :${2:model} => { $0 } + assert_response :redirect + +end]]> + deftp + meta.rails.functional_test + def test_should_post_action + diff --git a/Rails/end.sublime-snippet b/Rails/end.sublime-snippet new file mode 100644 index 0000000..3628a3e --- /dev/null +++ b/Rails/end.sublime-snippet @@ -0,0 +1,6 @@ + + ]]> + end + text.html.ruby + end (ERB) + diff --git a/Rails/find(%3Aall).sublime-snippet b/Rails/find(%3Aall).sublime-snippet new file mode 100644 index 0000000..38cac15 --- /dev/null +++ b/Rails/find(%3Aall).sublime-snippet @@ -0,0 +1,6 @@ + + ['${2:${3:field} = ?}', ${5:true}]})]]> + fina + source.ruby.rails + find(:all) + diff --git a/Rails/find(%3Afirst).sublime-snippet b/Rails/find(%3Afirst).sublime-snippet new file mode 100644 index 0000000..8bdad9b --- /dev/null +++ b/Rails/find(%3Afirst).sublime-snippet @@ -0,0 +1,6 @@ + + ['${2:${3:field} = ?}', ${5:true}]})]]> + finf + source.ruby.rails + find(:first) + diff --git a/Rails/find(id).sublime-snippet b/Rails/find(id).sublime-snippet new file mode 100644 index 0000000..c372fdd --- /dev/null +++ b/Rails/find(id).sublime-snippet @@ -0,0 +1,6 @@ + + + fini + source.ruby.rails + find(id) + diff --git a/Rails/for-loop-erb.sublime-snippet b/Rails/for-loop-erb.sublime-snippet new file mode 100644 index 0000000..ff61312 --- /dev/null +++ b/Rails/for-loop-erb.sublime-snippet @@ -0,0 +1,13 @@ + + + <% for ${2:item} in ${1} %> + $3 + <% end %> +<% else %> + $4 +<% end %> +]]> + for + text.html.ruby + for loop in rhtml + diff --git a/Rails/form_for-check_box.sublime-snippet b/Rails/form_for-check_box.sublime-snippet new file mode 100644 index 0000000..06a552e --- /dev/null +++ b/Rails/form_for-check_box.sublime-snippet @@ -0,0 +1,6 @@ + + + ffcb + text.html.ruby, text.haml + form_for check_box + diff --git a/Rails/form_for-checkbox.sublime-snippet b/Rails/form_for-checkbox.sublime-snippet new file mode 100644 index 0000000..d63b8e8 --- /dev/null +++ b/Rails/form_for-checkbox.sublime-snippet @@ -0,0 +1,6 @@ + + + f. + text.html.ruby, text.haml + f.check_box (ffcb) + diff --git a/Rails/form_for-file_field-2.sublime-snippet b/Rails/form_for-file_field-2.sublime-snippet new file mode 100644 index 0000000..3320e79 --- /dev/null +++ b/Rails/form_for-file_field-2.sublime-snippet @@ -0,0 +1,6 @@ + + + ffff + text.html.ruby, text.haml + form_for file_field + diff --git a/Rails/form_for-file_field.sublime-snippet b/Rails/form_for-file_field.sublime-snippet new file mode 100644 index 0000000..ef836f2 --- /dev/null +++ b/Rails/form_for-file_field.sublime-snippet @@ -0,0 +1,6 @@ + + + f. + text.html.ruby, text.haml + f.file_field (ffff) + diff --git a/Rails/form_for-hidden_field-2.sublime-snippet b/Rails/form_for-hidden_field-2.sublime-snippet new file mode 100644 index 0000000..ed20af4 --- /dev/null +++ b/Rails/form_for-hidden_field-2.sublime-snippet @@ -0,0 +1,6 @@ + + + ffhf + text.html.ruby, text.haml + form_for hidden_field + diff --git a/Rails/form_for-hidden_field.sublime-snippet b/Rails/form_for-hidden_field.sublime-snippet new file mode 100644 index 0000000..0843ddb --- /dev/null +++ b/Rails/form_for-hidden_field.sublime-snippet @@ -0,0 +1,6 @@ + + + f. + text.html.ruby, text.haml + f.hidden_field (ffhf) + diff --git a/Rails/form_for-label-2.sublime-snippet b/Rails/form_for-label-2.sublime-snippet new file mode 100644 index 0000000..a9f48bf --- /dev/null +++ b/Rails/form_for-label-2.sublime-snippet @@ -0,0 +1,6 @@ + + + ffl + text.html.ruby, text.haml + form_for label + diff --git a/Rails/form_for-label.sublime-snippet b/Rails/form_for-label.sublime-snippet new file mode 100644 index 0000000..998e5e5 --- /dev/null +++ b/Rails/form_for-label.sublime-snippet @@ -0,0 +1,6 @@ + + + f. + text.html.ruby, text.haml + f.label (ffl) + diff --git a/Rails/form_for-password_field-2.sublime-snippet b/Rails/form_for-password_field-2.sublime-snippet new file mode 100644 index 0000000..ef05e4a --- /dev/null +++ b/Rails/form_for-password_field-2.sublime-snippet @@ -0,0 +1,6 @@ + + + ffpf + text.html.ruby, text.haml + form_for password_field + diff --git a/Rails/form_for-password_field.sublime-snippet b/Rails/form_for-password_field.sublime-snippet new file mode 100644 index 0000000..c310dec --- /dev/null +++ b/Rails/form_for-password_field.sublime-snippet @@ -0,0 +1,6 @@ + + + f. + text.html.ruby, text.haml + f.password_field (ffpf) + diff --git a/Rails/form_for-radio_box-2.sublime-snippet b/Rails/form_for-radio_box-2.sublime-snippet new file mode 100644 index 0000000..9c4b608 --- /dev/null +++ b/Rails/form_for-radio_box-2.sublime-snippet @@ -0,0 +1,6 @@ + + + ffrb + text.html.ruby, text.haml + form_for radio_box + diff --git a/Rails/form_for-radio_box.sublime-snippet b/Rails/form_for-radio_box.sublime-snippet new file mode 100644 index 0000000..95de722 --- /dev/null +++ b/Rails/form_for-radio_box.sublime-snippet @@ -0,0 +1,6 @@ + + + f. + text.html.ruby, text.haml + f.radio_box (ffrb) + diff --git a/Rails/form_for-submit-2.sublime-snippet b/Rails/form_for-submit-2.sublime-snippet new file mode 100644 index 0000000..5f901f7 --- /dev/null +++ b/Rails/form_for-submit-2.sublime-snippet @@ -0,0 +1,6 @@ + + '${3:$1ing...}'}${TM_RAILS_TEMPLATE_END_RUBY_EXPR}]]> + ffs + text.html.ruby, text.haml + form_for submit + diff --git a/Rails/form_for-submit.sublime-snippet b/Rails/form_for-submit.sublime-snippet new file mode 100644 index 0000000..3eff45a --- /dev/null +++ b/Rails/form_for-submit.sublime-snippet @@ -0,0 +1,6 @@ + + '${3:$1ing...}'}${TM_RAILS_TEMPLATE_END_RUBY_EXPR}]]> + f. + text.html.ruby, text.haml + f.submit (ffs) + diff --git a/Rails/form_for-text_area-2.sublime-snippet b/Rails/form_for-text_area-2.sublime-snippet new file mode 100644 index 0000000..07d508a --- /dev/null +++ b/Rails/form_for-text_area-2.sublime-snippet @@ -0,0 +1,6 @@ + + + ffta + text.html.ruby, text.haml + form_for text_area + diff --git a/Rails/form_for-text_area.sublime-snippet b/Rails/form_for-text_area.sublime-snippet new file mode 100644 index 0000000..0027bc5 --- /dev/null +++ b/Rails/form_for-text_area.sublime-snippet @@ -0,0 +1,6 @@ + + + f. + text.html.ruby, text.haml + f.text_area (ffta) + diff --git a/Rails/form_for-text_field-2.sublime-snippet b/Rails/form_for-text_field-2.sublime-snippet new file mode 100644 index 0000000..ca88af8 --- /dev/null +++ b/Rails/form_for-text_field-2.sublime-snippet @@ -0,0 +1,6 @@ + + + fftf + text.html.ruby, text.haml + form_for text_field + diff --git a/Rails/form_for-text_field.sublime-snippet b/Rails/form_for-text_field.sublime-snippet new file mode 100644 index 0000000..1cb7632 --- /dev/null +++ b/Rails/form_for-text_field.sublime-snippet @@ -0,0 +1,6 @@ + + + f. + text.html.ruby, text.haml + f.text_field (fftf) + diff --git a/Rails/form_for-with-errors.sublime-snippet b/Rails/form_for-with-errors.sublime-snippet new file mode 100644 index 0000000..441326a --- /dev/null +++ b/Rails/form_for-with-errors.sublime-snippet @@ -0,0 +1,10 @@ + + + ffe + text.html.ruby, text.haml + form_for with errors + diff --git a/Rails/form_for.sublime-snippet b/Rails/form_for.sublime-snippet new file mode 100644 index 0000000..6ee0544 --- /dev/null +++ b/Rails/form_for.sublime-snippet @@ -0,0 +1,8 @@ + + + ff + text.html.ruby, text.haml + form_for + diff --git a/Rails/has_and_belongs_to_many-(habtm).sublime-snippet b/Rails/has_and_belongs_to_many-(habtm).sublime-snippet new file mode 100644 index 0000000..8ff1068 --- /dev/null +++ b/Rails/has_and_belongs_to_many-(habtm).sublime-snippet @@ -0,0 +1,6 @@ + + "${3:table_name}", :foreign_key => "${4:${1}_id}"}]]> + habtm + source.ruby.rails + has_and_belongs_to_many + diff --git a/Rails/has_many-(hm).sublime-snippet b/Rails/has_many-(hm).sublime-snippet new file mode 100644 index 0000000..e3ad971 --- /dev/null +++ b/Rails/has_many-(hm).sublime-snippet @@ -0,0 +1,6 @@ + + "${1}", :foreign_key => "${4:reference}_id"}]]> + hm + source.ruby.rails + has_many + diff --git a/Rails/has_many-(through).sublime-snippet b/Rails/has_many-(through).sublime-snippet new file mode 100644 index 0000000..c3df530 --- /dev/null +++ b/Rails/has_many-(through).sublime-snippet @@ -0,0 +1,6 @@ + + :${2:join_association}${3:, :source => :${4:${2}_table_foreign_key_to_${1}_table}}]]> + hmt + source.ruby.rails + has_many (through) + diff --git a/Rails/has_many-dependent-=-destroy.sublime-snippet b/Rails/has_many-dependent-=-destroy.sublime-snippet new file mode 100644 index 0000000..02c4655 --- /dev/null +++ b/Rails/has_many-dependent-=-destroy.sublime-snippet @@ -0,0 +1,6 @@ + + "${1}", :foreign_key => "${4:reference}_id"}, :dependent => :destroy$0]]> + hmd + source.ruby.rails + has_many :dependent => :destroy + diff --git a/Rails/has_one-(ho).sublime-snippet b/Rails/has_one-(ho).sublime-snippet new file mode 100644 index 0000000..381bff0 --- /dev/null +++ b/Rails/has_one-(ho).sublime-snippet @@ -0,0 +1,6 @@ + + "${3:${1/[[:alpha:]]+|(_)/(?1::\u$0)/g}}", :foreign_key => "${4:${1}_id}"}]]> + ho + source.ruby.rails + has_one + diff --git a/Rails/image_submit_tag.sublime-snippet b/Rails/image_submit_tag.sublime-snippet new file mode 100644 index 0000000..9e5e56f --- /dev/null +++ b/Rails/image_submit_tag.sublime-snippet @@ -0,0 +1,6 @@ + + "${4:${1/^(\w+)(\.\w*)?$/$1/}}"}${5:, :name => "${6:${1/^(\w+)(\.\w*)?$/$1/}}"}${7:, :class => "${8:${1/^(\w+)(\.\w*)?$/$1/}-button}"}${9:, :disabled => ${10:false}}})${TM_RAILS_TEMPLATE_END_RUBY_EXPR}]]> + ist + text.html.ruby, text.haml + image_submit_tag + diff --git a/Rails/javascript_include_tag.sublime-snippet b/Rails/javascript_include_tag.sublime-snippet new file mode 100644 index 0000000..6dcd6de --- /dev/null +++ b/Rails/javascript_include_tag.sublime-snippet @@ -0,0 +1,6 @@ + + ${3:true}}${TM_RAILS_TEMPLATE_END_RUBY_EXPR}]]> + jit + text.html.ruby + javascript_include_tag + diff --git a/Rails/lia.sublime-snippet b/Rails/lia.sublime-snippet new file mode 100644 index 0000000..175d032 --- /dev/null +++ b/Rails/lia.sublime-snippet @@ -0,0 +1,6 @@ + + "${2:index}"${TM_RAILS_TEMPLATE_END_RUBY_EXPR}]]> + lia + text.html.ruby, text.haml + link_to (action) + diff --git a/Rails/liai.sublime-snippet b/Rails/liai.sublime-snippet new file mode 100644 index 0000000..f871fd7 --- /dev/null +++ b/Rails/liai.sublime-snippet @@ -0,0 +1,6 @@ + + "${2:edit}", :id => ${3:@item}${TM_RAILS_TEMPLATE_END_RUBY_EXPR}]]> + liai + text.html.ruby, text.haml + link_to (action, id) + diff --git a/Rails/lic.sublime-snippet b/Rails/lic.sublime-snippet new file mode 100644 index 0000000..709fcc7 --- /dev/null +++ b/Rails/lic.sublime-snippet @@ -0,0 +1,6 @@ + + "${2:items}"${TM_RAILS_TEMPLATE_END_RUBY_EXPR}]]> + lic + text.html.ruby, text.haml + link_to (controller) + diff --git a/Rails/lica.sublime-snippet b/Rails/lica.sublime-snippet new file mode 100644 index 0000000..a97ffea --- /dev/null +++ b/Rails/lica.sublime-snippet @@ -0,0 +1,6 @@ + + "${2:items}", :action => "${3:index}"${TM_RAILS_TEMPLATE_END_RUBY_EXPR}]]> + lica + text.html.ruby, text.haml + link_to (controller, action) + diff --git a/Rails/licai.sublime-snippet b/Rails/licai.sublime-snippet new file mode 100644 index 0000000..704a4d0 --- /dev/null +++ b/Rails/licai.sublime-snippet @@ -0,0 +1,6 @@ + + "${2:items}", :action => "${3:edit}", :id => ${4:@item}${TM_RAILS_TEMPLATE_END_RUBY_EXPR}]]> + licai + text.html.ruby, text.haml + link_to (controller, action, id) + diff --git a/Rails/link_to-(nested-path).sublime-snippet b/Rails/link_to-(nested-path).sublime-snippet new file mode 100644 index 0000000..b90cfe4 --- /dev/null +++ b/Rails/link_to-(nested-path).sublime-snippet @@ -0,0 +1,6 @@ + + + linp + text.html.ruby, text.haml + link_to (nested path) + diff --git a/Rails/link_to-(nested-path-plural).sublime-snippet b/Rails/link_to-(nested-path-plural).sublime-snippet new file mode 100644 index 0000000..2b5f6de --- /dev/null +++ b/Rails/link_to-(nested-path-plural).sublime-snippet @@ -0,0 +1,6 @@ + + + linpp + text.html.ruby, text.haml + link_to (nested path plural) + diff --git a/Rails/link_to-(path).sublime-snippet b/Rails/link_to-(path).sublime-snippet new file mode 100644 index 0000000..e1f1128 --- /dev/null +++ b/Rails/link_to-(path).sublime-snippet @@ -0,0 +1,6 @@ + + + lip + text.html.ruby, text.haml + link_to (path) + diff --git a/Rails/link_to-(path-plural).sublime-snippet b/Rails/link_to-(path-plural).sublime-snippet new file mode 100644 index 0000000..ea25408 --- /dev/null +++ b/Rails/link_to-(path-plural).sublime-snippet @@ -0,0 +1,6 @@ + + + lipp + text.html.ruby, text.haml + link_to (path plural) + diff --git a/Rails/link_to-model.sublime-snippet b/Rails/link_to-model.sublime-snippet new file mode 100644 index 0000000..ff35f83 --- /dev/null +++ b/Rails/link_to-model.sublime-snippet @@ -0,0 +1,6 @@ + + + lim + text.html.ruby, text.haml + link_to model + diff --git a/Rails/logger_debug.sublime-snippet b/Rails/logger_debug.sublime-snippet new file mode 100644 index 0000000..8dfa5e5 --- /dev/null +++ b/Rails/logger_debug.sublime-snippet @@ -0,0 +1,6 @@ + + + logd + source.ruby.rails + logger.debug + diff --git a/Rails/logger_error.sublime-snippet b/Rails/logger_error.sublime-snippet new file mode 100644 index 0000000..8f2c64c --- /dev/null +++ b/Rails/logger_error.sublime-snippet @@ -0,0 +1,6 @@ + + + loge + source.ruby.rails + logger.error + diff --git a/Rails/logger_fatal.sublime-snippet b/Rails/logger_fatal.sublime-snippet new file mode 100644 index 0000000..eea40b5 --- /dev/null +++ b/Rails/logger_fatal.sublime-snippet @@ -0,0 +1,6 @@ + + + logf + source.ruby.rails + logger.fatal + diff --git a/Rails/logger_info.sublime-snippet b/Rails/logger_info.sublime-snippet new file mode 100644 index 0000000..480d3e5 --- /dev/null +++ b/Rails/logger_info.sublime-snippet @@ -0,0 +1,6 @@ + + + logi + source.ruby.rails + logger.info + diff --git a/Rails/logger_warn.sublime-snippet b/Rails/logger_warn.sublime-snippet new file mode 100644 index 0000000..410c9e6 --- /dev/null +++ b/Rails/logger_warn.sublime-snippet @@ -0,0 +1,6 @@ + + + logw + source.ruby.rails + logger.warn + diff --git a/Rails/map(-%3Asym_proc).sublime-snippet b/Rails/map(-%3Asym_proc).sublime-snippet new file mode 100644 index 0000000..013596a --- /dev/null +++ b/Rails/map(-%3Asym_proc).sublime-snippet @@ -0,0 +1,6 @@ + + + mp + source.ruby.rails + map(&:sym_proc) + diff --git a/Rails/map_catch_all.sublime-snippet b/Rails/map_catch_all.sublime-snippet new file mode 100644 index 0000000..e1eb7d0 --- /dev/null +++ b/Rails/map_catch_all.sublime-snippet @@ -0,0 +1,7 @@ + + "${3:default}", :action => "${4:error}" +]]> + mapca + meta.rails.routes + map.catch_all + diff --git a/Rails/map_named_route.sublime-snippet b/Rails/map_named_route.sublime-snippet new file mode 100644 index 0000000..0120bc7 --- /dev/null +++ b/Rails/map_named_route.sublime-snippet @@ -0,0 +1,6 @@ + + + map + meta.rails.routes + map.named_route + diff --git a/Rails/map_resource.sublime-snippet b/Rails/map_resource.sublime-snippet new file mode 100644 index 0000000..6f5d7af --- /dev/null +++ b/Rails/map_resource.sublime-snippet @@ -0,0 +1,8 @@ + + + mapr + meta.rails.routes + map.resource + diff --git a/Rails/map_resources.sublime-snippet b/Rails/map_resources.sublime-snippet new file mode 100644 index 0000000..6894321 --- /dev/null +++ b/Rails/map_resources.sublime-snippet @@ -0,0 +1,8 @@ + + + maprs + meta.rails.routes + map.resources + diff --git a/Rails/map_with_options.sublime-snippet b/Rails/map_with_options.sublime-snippet new file mode 100644 index 0000000..889a2be --- /dev/null +++ b/Rails/map_with_options.sublime-snippet @@ -0,0 +1,9 @@ + + '${3:thing}' do |${4:$3}| + $0 +end +]]> + mapwo + meta.rails.routes + map.with_options + diff --git a/Rails/mattr_accessor.sublime-snippet b/Rails/mattr_accessor.sublime-snippet new file mode 100644 index 0000000..ab52d0b --- /dev/null +++ b/Rails/mattr_accessor.sublime-snippet @@ -0,0 +1,6 @@ + + + mrw + source.ruby.rails + mattr_accessor + diff --git a/Rails/named_scope-lambda.sublime-snippet b/Rails/named_scope-lambda.sublime-snippet new file mode 100644 index 0000000..e5455d8 --- /dev/null +++ b/Rails/named_scope-lambda.sublime-snippet @@ -0,0 +1,7 @@ + + ${3:['${4:${5:field} = ?}', ${6:$1}]} } } +]]> + ncl + source.ruby.rails + named_scope lambda + diff --git a/Rails/named_scope.sublime-snippet b/Rails/named_scope.sublime-snippet new file mode 100644 index 0000000..abea181 --- /dev/null +++ b/Rails/named_scope.sublime-snippet @@ -0,0 +1,7 @@ + + :${2:table}}, :conditions => ${3:['${4:${5:field} = ?}', ${6:true}]} +]]> + nc + source.ruby.rails + named_scope + diff --git a/Rails/page_hide-(%2Aids).sublime-snippet b/Rails/page_hide-(%2Aids).sublime-snippet new file mode 100644 index 0000000..ad90e4e --- /dev/null +++ b/Rails/page_hide-(%2Aids).sublime-snippet @@ -0,0 +1,6 @@ + + + hide + source.ruby.rails.rjs + page.hide (*ids) + diff --git a/Rails/page_insert_html-(position-id-partial).sublime-snippet b/Rails/page_insert_html-(position-id-partial).sublime-snippet new file mode 100644 index 0000000..2800777 --- /dev/null +++ b/Rails/page_insert_html-(position-id-partial).sublime-snippet @@ -0,0 +1,6 @@ + + "${5:template}"}]]> + ins + source.ruby.rails.rjs + page.insert_html (position, id, partial) + diff --git a/Rails/page_replace-(id-partial).sublime-snippet b/Rails/page_replace-(id-partial).sublime-snippet new file mode 100644 index 0000000..ece738d --- /dev/null +++ b/Rails/page_replace-(id-partial).sublime-snippet @@ -0,0 +1,6 @@ + + "${4:template}"}]]> + rep + source.ruby.rails.rjs + page.replace (id, partial) + diff --git a/Rails/page_replace_html-(id-partial).sublime-snippet b/Rails/page_replace_html-(id-partial).sublime-snippet new file mode 100644 index 0000000..8c3513e --- /dev/null +++ b/Rails/page_replace_html-(id-partial).sublime-snippet @@ -0,0 +1,6 @@ + + "${4:template}"}]]> + reph + source.ruby.rails.rjs + page.replace_html (id, partial) + diff --git a/Rails/page_show-(%2Aids).sublime-snippet b/Rails/page_show-(%2Aids).sublime-snippet new file mode 100644 index 0000000..9a25be7 --- /dev/null +++ b/Rails/page_show-(%2Aids).sublime-snippet @@ -0,0 +1,6 @@ + + + show + source.ruby.rails.rjs + page.show (*ids) + diff --git a/Rails/page_toggle-(%2Aids).sublime-snippet b/Rails/page_toggle-(%2Aids).sublime-snippet new file mode 100644 index 0000000..c1445fa --- /dev/null +++ b/Rails/page_toggle-(%2Aids).sublime-snippet @@ -0,0 +1,6 @@ + + + tog + source.ruby.rails.rjs + page.toggle (*ids) + diff --git a/Rails/page_visual_effect-(effect-id).sublime-snippet b/Rails/page_visual_effect-(effect-id).sublime-snippet new file mode 100644 index 0000000..a9a712e --- /dev/null +++ b/Rails/page_visual_effect-(effect-id).sublime-snippet @@ -0,0 +1,6 @@ + + + vis + source.ruby.rails.rjs + page.visual_effect (effect, id) + diff --git a/Rails/rails-flash.sublime-snippet b/Rails/rails-flash.sublime-snippet new file mode 100644 index 0000000..a604919 --- /dev/null +++ b/Rails/rails-flash.sublime-snippet @@ -0,0 +1,6 @@ + + + flash + source.ruby.rails + flash[…] + diff --git a/Rails/rea.sublime-snippet b/Rails/rea.sublime-snippet new file mode 100644 index 0000000..d786a28 --- /dev/null +++ b/Rails/rea.sublime-snippet @@ -0,0 +1,6 @@ + + "${1:index}"]]> + rea + source.ruby.rails + redirect_to (action) + diff --git a/Rails/reai.sublime-snippet b/Rails/reai.sublime-snippet new file mode 100644 index 0000000..8d682d6 --- /dev/null +++ b/Rails/reai.sublime-snippet @@ -0,0 +1,6 @@ + + "${1:show}", :id => ${0:@item}]]> + reai + source.ruby.rails + redirect_to (action, id) + diff --git a/Rails/rec.sublime-snippet b/Rails/rec.sublime-snippet new file mode 100644 index 0000000..d4adf9e --- /dev/null +++ b/Rails/rec.sublime-snippet @@ -0,0 +1,6 @@ + + "${1:items}"]]> + rec + source.ruby.rails + redirect_to (controller) + diff --git a/Rails/reca.sublime-snippet b/Rails/reca.sublime-snippet new file mode 100644 index 0000000..e297296 --- /dev/null +++ b/Rails/reca.sublime-snippet @@ -0,0 +1,6 @@ + + "${1:items}", :action => "${2:list}"]]> + reca + source.ruby.rails + redirect_to (controller, action) + diff --git a/Rails/recai.sublime-snippet b/Rails/recai.sublime-snippet new file mode 100644 index 0000000..f6685ca --- /dev/null +++ b/Rails/recai.sublime-snippet @@ -0,0 +1,6 @@ + + "${1:items}", :action => "${2:show}", :id => ${0:@item}]]> + recai + source.ruby.rails + redirect_to (controller, action, id) + diff --git a/Rails/redirect_to-(nested-path).sublime-snippet b/Rails/redirect_to-(nested-path).sublime-snippet new file mode 100644 index 0000000..7b47ee4 --- /dev/null +++ b/Rails/redirect_to-(nested-path).sublime-snippet @@ -0,0 +1,6 @@ + + + renp + source.ruby.rails + redirect_to (nested path) + diff --git a/Rails/redirect_to-(nested-path-plural).sublime-snippet b/Rails/redirect_to-(nested-path-plural).sublime-snippet new file mode 100644 index 0000000..39d17a3 --- /dev/null +++ b/Rails/redirect_to-(nested-path-plural).sublime-snippet @@ -0,0 +1,6 @@ + + + renpp + source.ruby.rails + redirect_to (nested path plural) + diff --git a/Rails/redirect_to-(path).sublime-snippet b/Rails/redirect_to-(path).sublime-snippet new file mode 100644 index 0000000..b5f3048 --- /dev/null +++ b/Rails/redirect_to-(path).sublime-snippet @@ -0,0 +1,6 @@ + + + rep + source.ruby.rails + redirect_to (path) + diff --git a/Rails/redirect_to-(path-plural).sublime-snippet b/Rails/redirect_to-(path-plural).sublime-snippet new file mode 100644 index 0000000..0ac16c5 --- /dev/null +++ b/Rails/redirect_to-(path-plural).sublime-snippet @@ -0,0 +1,6 @@ + + + repp + source.ruby.rails + redirect_to (path plural) + diff --git a/Rails/render-(action)...-(ra).sublime-snippet b/Rails/render-(action)...-(ra).sublime-snippet new file mode 100644 index 0000000..bab4465 --- /dev/null +++ b/Rails/render-(action)...-(ra).sublime-snippet @@ -0,0 +1,6 @@ + + "${1:action}"]]> + ra + source.ruby.rails + render (action) + diff --git a/Rails/render-(action-layout)-(ral).sublime-snippet b/Rails/render-(action-layout)-(ral).sublime-snippet new file mode 100644 index 0000000..b0a7260 --- /dev/null +++ b/Rails/render-(action-layout)-(ral).sublime-snippet @@ -0,0 +1,6 @@ + + "${1:action}", :layout => "${2:layoutname}"]]> + ral + source.ruby.rails + render (action, layout) + diff --git a/Rails/render-(file)-(rf).sublime-snippet b/Rails/render-(file)-(rf).sublime-snippet new file mode 100644 index 0000000..5e837c7 --- /dev/null +++ b/Rails/render-(file)-(rf).sublime-snippet @@ -0,0 +1,6 @@ + + "${1:filepath}"]]> + rf + source.ruby.rails + render (file) + diff --git a/Rails/render-(file-use_full_path)-(rfu).sublime-snippet b/Rails/render-(file-use_full_path)-(rfu).sublime-snippet new file mode 100644 index 0000000..75e9351 --- /dev/null +++ b/Rails/render-(file-use_full_path)-(rfu).sublime-snippet @@ -0,0 +1,6 @@ + + "${1:filepath}", :use_full_path => ${2:false}]]> + rfu + source.ruby.rails + render (file, use_full_path) + diff --git a/Rails/render-(inline)-(ri).sublime-snippet b/Rails/render-(inline)-(ri).sublime-snippet new file mode 100644 index 0000000..d35ce6b --- /dev/null +++ b/Rails/render-(inline)-(ri).sublime-snippet @@ -0,0 +1,6 @@ + + "${1:<%= 'hello' %>}"]]> + ri + source.ruby.rails + render (inline) + diff --git a/Rails/render-(inline-locals)-(ril).sublime-snippet b/Rails/render-(inline-locals)-(ril).sublime-snippet new file mode 100644 index 0000000..04e596a --- /dev/null +++ b/Rails/render-(inline-locals)-(ril).sublime-snippet @@ -0,0 +1,6 @@ + + "${1:<%= 'hello' %>}", :locals => { ${2::name} => "${3:value}"$4 }]]> + ril + source.ruby.rails + render (inline, locals) + diff --git a/Rails/render-(inline-type)-(rit).sublime-snippet b/Rails/render-(inline-type)-(rit).sublime-snippet new file mode 100644 index 0000000..b28eaa3 --- /dev/null +++ b/Rails/render-(inline-type)-(rit).sublime-snippet @@ -0,0 +1,6 @@ + + "${1:<%= 'hello' %>}", :type => ${2::rxml}]]> + rit + source.ruby.rails + render (inline, type) + diff --git a/Rails/render-(layout)-(rl).sublime-snippet b/Rails/render-(layout)-(rl).sublime-snippet new file mode 100644 index 0000000..022d433 --- /dev/null +++ b/Rails/render-(layout)-(rl).sublime-snippet @@ -0,0 +1,6 @@ + + "${1:layoutname}"]]> + rl + source.ruby.rails + render (layout) + diff --git a/Rails/render-(nothing)-(rn).sublime-snippet b/Rails/render-(nothing)-(rn).sublime-snippet new file mode 100644 index 0000000..95c149e --- /dev/null +++ b/Rails/render-(nothing)-(rn).sublime-snippet @@ -0,0 +1,6 @@ + + ${1:true}]]> + rn + source.ruby.rails + render (nothing) + diff --git a/Rails/render-(nothing-status)-(rns).sublime-snippet b/Rails/render-(nothing-status)-(rns).sublime-snippet new file mode 100644 index 0000000..0f5ecf2 --- /dev/null +++ b/Rails/render-(nothing-status)-(rns).sublime-snippet @@ -0,0 +1,6 @@ + + ${1:true}, :status => ${2:401}]]> + rns + source.ruby.rails + render (nothing, status) + diff --git a/Rails/render-(partial)-(rp).sublime-snippet b/Rails/render-(partial)-(rp).sublime-snippet new file mode 100644 index 0000000..14ca7af --- /dev/null +++ b/Rails/render-(partial)-(rp).sublime-snippet @@ -0,0 +1,6 @@ + + "${1:item}"]]> + rp + source.ruby.rails + render (partial) + diff --git a/Rails/render-(partial-collection)-(rpc).sublime-snippet b/Rails/render-(partial-collection)-(rpc).sublime-snippet new file mode 100644 index 0000000..d1cb23b --- /dev/null +++ b/Rails/render-(partial-collection)-(rpc).sublime-snippet @@ -0,0 +1,6 @@ + + "${1:item}", :collection => ${2:@$1s}]]> + rpc + source.ruby.rails + render (partial, collection) + diff --git a/Rails/render-(partial-locals)-(rpl).sublime-snippet b/Rails/render-(partial-locals)-(rpl).sublime-snippet new file mode 100644 index 0000000..faa5531 --- /dev/null +++ b/Rails/render-(partial-locals)-(rpl).sublime-snippet @@ -0,0 +1,6 @@ + + "${1:item}", :locals => { :${2:$1} => ${3:@$1}$0 }]]> + rpl + source.ruby.rails + render (partial, locals) + diff --git a/Rails/render-(partial-object)-(rpo).sublime-snippet b/Rails/render-(partial-object)-(rpo).sublime-snippet new file mode 100644 index 0000000..d3dae43 --- /dev/null +++ b/Rails/render-(partial-object)-(rpo).sublime-snippet @@ -0,0 +1,6 @@ + + "${1:item}", :object => ${2:@$1}]]> + rpo + source.ruby.rails + render (partial, object) + diff --git a/Rails/render-(partial-status)-(rps).sublime-snippet b/Rails/render-(partial-status)-(rps).sublime-snippet new file mode 100644 index 0000000..5708fae --- /dev/null +++ b/Rails/render-(partial-status)-(rps).sublime-snippet @@ -0,0 +1,6 @@ + + "${1:item}", :status => ${2:500}]]> + rps + source.ruby.rails + render (partial, status) + diff --git a/Rails/render-(text)-(rt).sublime-snippet b/Rails/render-(text)-(rt).sublime-snippet new file mode 100644 index 0000000..a0252e2 --- /dev/null +++ b/Rails/render-(text)-(rt).sublime-snippet @@ -0,0 +1,6 @@ + + "${1:text to render...}"]]> + rt + source.ruby.rails + render (text) + diff --git a/Rails/render-(text-layout)-(rtl).sublime-snippet b/Rails/render-(text-layout)-(rtl).sublime-snippet new file mode 100644 index 0000000..cea062e --- /dev/null +++ b/Rails/render-(text-layout)-(rtl).sublime-snippet @@ -0,0 +1,6 @@ + + "${1:text to render...}", :layout => "${2:layoutname}"]]> + rtl + source.ruby.rails + render (text, layout) + diff --git a/Rails/render-(text-layout=%3Etrue)-(rtlt).sublime-snippet b/Rails/render-(text-layout=%3Etrue)-(rtlt).sublime-snippet new file mode 100644 index 0000000..4c03a1a --- /dev/null +++ b/Rails/render-(text-layout=%3Etrue)-(rtlt).sublime-snippet @@ -0,0 +1,6 @@ + + "${1:text to render...}", :layout => ${2:true}]]> + rtlt + source.ruby.rails + render (text, layout => true) + diff --git a/Rails/render-(text-status)-(rts).sublime-snippet b/Rails/render-(text-status)-(rts).sublime-snippet new file mode 100644 index 0000000..2480e2e --- /dev/null +++ b/Rails/render-(text-status)-(rts).sublime-snippet @@ -0,0 +1,6 @@ + + "${1:text to render...}", :status => ${2:401}]]> + rts + source.ruby.rails + render (text, status) + diff --git a/Rails/render-(update).sublime-snippet b/Rails/render-(update).sublime-snippet new file mode 100644 index 0000000..ba451e2 --- /dev/null +++ b/Rails/render-(update).sublime-snippet @@ -0,0 +1,8 @@ + + + ru + source.ruby.rails + render (update) + diff --git a/Rails/respond_to.sublime-snippet b/Rails/respond_to.sublime-snippet new file mode 100644 index 0000000..be60c6d --- /dev/null +++ b/Rails/respond_to.sublime-snippet @@ -0,0 +1,8 @@ + + + rest + meta.rails.controller + respond_to + diff --git a/Rails/returning-do-%7Cvariable%7C-%E2%80%A6-end.sublime-snippet b/Rails/returning-do-%7Cvariable%7C-%E2%80%A6-end.sublime-snippet new file mode 100644 index 0000000..7f7332f --- /dev/null +++ b/Rails/returning-do-%7Cvariable%7C-%E2%80%A6-end.sublime-snippet @@ -0,0 +1,8 @@ + + \s*[a-z_][a-zA-Z0-9_]*\s*)(,\g)*,?\s*$)|.*/(?1: |)/}${2:v}${2/(^(?\s*[a-z_][a-zA-Z0-9_]*\s*)(,\g)*,?\s*$)|.*/(?1:|)/} + $0 +end]]> + returning + source.ruby.rails + returning do |variable| … end + diff --git a/Rails/stylesheet_link_tag.sublime-snippet b/Rails/stylesheet_link_tag.sublime-snippet new file mode 100644 index 0000000..7a83972 --- /dev/null +++ b/Rails/stylesheet_link_tag.sublime-snippet @@ -0,0 +1,6 @@ + + ${3:true}}${TM_RAILS_TEMPLATE_END_RUBY_EXPR}]]> + slt + text.html.ruby + stylesheet_link_tag + diff --git a/Rails/submit_tag.sublime-snippet b/Rails/submit_tag.sublime-snippet new file mode 100644 index 0000000..edf3a5f --- /dev/null +++ b/Rails/submit_tag.sublime-snippet @@ -0,0 +1,6 @@ + + "${3:submit}"}${4:, :name => "${5:$3}"}${6:, :class => "${7:form_$3}"}${8:, :disabled => ${9:false}}${10:, :disable_with => "${11:Please wait...}"}${TM_RAILS_TEMPLATE_END_RUBY_EXPR}]]> + st + text.html.ruby, text.haml + submit_tag + diff --git a/Rails/t_binary-(tcbi).sublime-snippet b/Rails/t_binary-(tcbi).sublime-snippet new file mode 100644 index 0000000..a459e0c --- /dev/null +++ b/Rails/t_binary-(tcbi).sublime-snippet @@ -0,0 +1,7 @@ + + ${3:2}.megabytes} +t.$0]]> + t. + meta.rails.migration.create_table, meta.rails.migration.change_table + t.binary (tcbi) + diff --git a/Rails/t_boolean-(tcb).sublime-snippet b/Rails/t_boolean-(tcb).sublime-snippet new file mode 100644 index 0000000..48b1b7c --- /dev/null +++ b/Rails/t_boolean-(tcb).sublime-snippet @@ -0,0 +1,7 @@ + + + t. + meta.rails.migration.create_table, meta.rails.migration.change_table + t.boolean (tcb) + diff --git a/Rails/t_date-(tcda).sublime-snippet b/Rails/t_date-(tcda).sublime-snippet new file mode 100644 index 0000000..9fba3b7 --- /dev/null +++ b/Rails/t_date-(tcda).sublime-snippet @@ -0,0 +1,7 @@ + + + t. + meta.rails.migration.create_table, meta.rails.migration.change_table + t.date (tcda) + diff --git a/Rails/t_datetime-(tcdt).sublime-snippet b/Rails/t_datetime-(tcdt).sublime-snippet new file mode 100644 index 0000000..fade547 --- /dev/null +++ b/Rails/t_datetime-(tcdt).sublime-snippet @@ -0,0 +1,7 @@ + + + t. + meta.rails.migration.create_table, meta.rails.migration.change_table + t.datetime (tcdt) + diff --git a/Rails/t_decimal-(tcd).sublime-snippet b/Rails/t_decimal-(tcd).sublime-snippet new file mode 100644 index 0000000..6e1e9ba --- /dev/null +++ b/Rails/t_decimal-(tcd).sublime-snippet @@ -0,0 +1,7 @@ + + ${4:10}}${5:, :scale => ${6:2}}} +t.$0]]> + t. + meta.rails.migration.create_table, meta.rails.migration.change_table + t.decimal (tcd) + diff --git a/Rails/t_float-(tcf).sublime-snippet b/Rails/t_float-(tcf).sublime-snippet new file mode 100644 index 0000000..385d8f3 --- /dev/null +++ b/Rails/t_float-(tcf).sublime-snippet @@ -0,0 +1,7 @@ + + + t. + meta.rails.migration.create_table, meta.rails.migration.change_table + t.float (tcf) + diff --git a/Rails/t_integer-(tci).sublime-snippet b/Rails/t_integer-(tci).sublime-snippet new file mode 100644 index 0000000..9a3def9 --- /dev/null +++ b/Rails/t_integer-(tci).sublime-snippet @@ -0,0 +1,7 @@ + + + t. + meta.rails.migration.create_table, meta.rails.migration.change_table + t.integer (tci) + diff --git a/Rails/t_lock_version-(tcl).sublime-snippet b/Rails/t_lock_version-(tcl).sublime-snippet new file mode 100644 index 0000000..9aa0073 --- /dev/null +++ b/Rails/t_lock_version-(tcl).sublime-snippet @@ -0,0 +1,7 @@ + + false, :default => 0 +t.$0]]> + t. + meta.rails.migration.create_table, meta.rails.migration.change_table + t.lock_version (tcl) + diff --git a/Rails/t_references-(tcr).sublime-snippet b/Rails/t_references-(tcr).sublime-snippet new file mode 100644 index 0000000..1897276 --- /dev/null +++ b/Rails/t_references-(tcr).sublime-snippet @@ -0,0 +1,7 @@ + + ${3:{ :default => '${4:Photo}' \}}} +t.$0]]> + t. + meta.rails.migration.create_table, meta.rails.migration.change_table + t.references (tcr) + diff --git a/Rails/t_rename-(tre).sublime-snippet b/Rails/t_rename-(tre).sublime-snippet new file mode 100644 index 0000000..8e0bc1d --- /dev/null +++ b/Rails/t_rename-(tre).sublime-snippet @@ -0,0 +1,7 @@ + + + t. + meta.rails.migration.create_table, meta.rails.migration.change_table + t.rename (tre) + diff --git a/Rails/t_string-(tcs).sublime-snippet b/Rails/t_string-(tcs).sublime-snippet new file mode 100644 index 0000000..93bf6fb --- /dev/null +++ b/Rails/t_string-(tcs).sublime-snippet @@ -0,0 +1,7 @@ + + + t. + meta.rails.migration.create_table, meta.rails.migration.change_table + t.string (tcs) + diff --git a/Rails/t_text-(tct).sublime-snippet b/Rails/t_text-(tct).sublime-snippet new file mode 100644 index 0000000..8f6dcdf --- /dev/null +++ b/Rails/t_text-(tct).sublime-snippet @@ -0,0 +1,7 @@ + + + t. + meta.rails.migration.create_table, meta.rails.migration.change_table + t.text (tct) + diff --git a/Rails/t_time-(tcti).sublime-snippet b/Rails/t_time-(tcti).sublime-snippet new file mode 100644 index 0000000..6382199 --- /dev/null +++ b/Rails/t_time-(tcti).sublime-snippet @@ -0,0 +1,7 @@ + + + t. + meta.rails.migration.create_table, meta.rails.migration.change_table + t.time (tcti) + diff --git a/Rails/t_timestamp-(tcts).sublime-snippet b/Rails/t_timestamp-(tcts).sublime-snippet new file mode 100644 index 0000000..75da612 --- /dev/null +++ b/Rails/t_timestamp-(tcts).sublime-snippet @@ -0,0 +1,7 @@ + + + t. + meta.rails.migration.create_table, meta.rails.migration.change_table + t.timestamp (tcts) + diff --git a/Rails/t_timestamps-(tctss).sublime-snippet b/Rails/t_timestamps-(tctss).sublime-snippet new file mode 100644 index 0000000..27b63d5 --- /dev/null +++ b/Rails/t_timestamps-(tctss).sublime-snippet @@ -0,0 +1,7 @@ + + + t. + meta.rails.migration.create_table, meta.rails.migration.change_table + t.timestamps (tctss) + diff --git a/Rails/validates_acceptance_of-if.sublime-snippet b/Rails/validates_acceptance_of-if.sublime-snippet new file mode 100644 index 0000000..64e9da2 --- /dev/null +++ b/Rails/validates_acceptance_of-if.sublime-snippet @@ -0,0 +1,6 @@ + + "${4:1}"}${5:, :message => "${6:You must accept the terms of service}"}}, :if => proc { |obj| ${7:obj.condition?} }}]]> + vaoif + source.ruby.rails + validates_acceptance_of if + diff --git a/Rails/validates_acceptance_of.sublime-snippet b/Rails/validates_acceptance_of.sublime-snippet new file mode 100644 index 0000000..cb03d87 --- /dev/null +++ b/Rails/validates_acceptance_of.sublime-snippet @@ -0,0 +1,6 @@ + + "${4:1}"}${5:, :message => "${6:You must accept the terms of service}"}}]]> + vao + source.ruby.rails + validates_acceptance_of + diff --git a/Rails/validates_associated-(va).sublime-snippet b/Rails/validates_associated-(va).sublime-snippet new file mode 100644 index 0000000..7e81be0 --- /dev/null +++ b/Rails/validates_associated-(va).sublime-snippet @@ -0,0 +1,6 @@ + + :${3:create}}]]> + va + source.ruby.rails + validates_associated + diff --git a/Rails/validates_associated-if-(vaif).sublime-snippet b/Rails/validates_associated-if-(vaif).sublime-snippet new file mode 100644 index 0000000..adc19e7 --- /dev/null +++ b/Rails/validates_associated-if-(vaif).sublime-snippet @@ -0,0 +1,6 @@ + + :${3:create}, :if => proc { |obj| ${5:obj.condition?} }}]]> + vaif + source.ruby.rails + validates_associated if + diff --git a/Rails/validates_confirmation_of-(vc).sublime-snippet b/Rails/validates_confirmation_of-(vc).sublime-snippet new file mode 100644 index 0000000..f6f7858 --- /dev/null +++ b/Rails/validates_confirmation_of-(vc).sublime-snippet @@ -0,0 +1,6 @@ + + :${3:create}, :message => "${4:should match confirmation}"}]]> + vc + source.ruby.rails + validates_confirmation_of + diff --git a/Rails/validates_confirmation_of-if-(vcif).sublime-snippet b/Rails/validates_confirmation_of-if-(vcif).sublime-snippet new file mode 100644 index 0000000..1f0111c --- /dev/null +++ b/Rails/validates_confirmation_of-if-(vcif).sublime-snippet @@ -0,0 +1,6 @@ + + :${3:create}, :message => "${4:should match confirmation}", :if => proc { |obj| ${5:obj.condition?} }}]]> + vcif + source.ruby.rails + validates_confirmation_of if + diff --git a/Rails/validates_exclusion_of-(ve).sublime-snippet b/Rails/validates_exclusion_of-(ve).sublime-snippet new file mode 100644 index 0000000..db9d39c --- /dev/null +++ b/Rails/validates_exclusion_of-(ve).sublime-snippet @@ -0,0 +1,6 @@ + + ${3:%w( ${4:mov avi} )}, :on => :${5:create}, :message => "${6:extension %s is not allowed}"}]]> + ve + source.ruby.rails + validates_exclusion_of + diff --git a/Rails/validates_exclusion_of-if-(veif).sublime-snippet b/Rails/validates_exclusion_of-if-(veif).sublime-snippet new file mode 100644 index 0000000..1003161 --- /dev/null +++ b/Rails/validates_exclusion_of-if-(veif).sublime-snippet @@ -0,0 +1,6 @@ + + ${3:%w( ${4:mov avi} )}, :on => :${5:create}, :message => "${6:extension %s is not allowed}"}, :if => proc { |obj| ${7:obj.condition?} }}]]> + veif + source.ruby.rails + validates_exclusion_of if + diff --git a/Rails/validates_format_of-if.sublime-snippet b/Rails/validates_format_of-if.sublime-snippet new file mode 100644 index 0000000..9ce1b91 --- /dev/null +++ b/Rails/validates_format_of-if.sublime-snippet @@ -0,0 +1,6 @@ + + /${2:^[${3:\w\d}]+\$}/${4:, :on => :${5:create}, :message => "${6:is invalid}"}, :if => proc { |obj| ${7:obj.condition?} }}]]> + vfif + source.ruby.rails + validates_format_of if + diff --git a/Rails/validates_format_of.sublime-snippet b/Rails/validates_format_of.sublime-snippet new file mode 100644 index 0000000..d800a2f --- /dev/null +++ b/Rails/validates_format_of.sublime-snippet @@ -0,0 +1,6 @@ + + /${2:^[${3:\w\d}]+\$}/${4:, :on => :${5:create}, :message => "${6:is invalid}"}]]> + vf + source.ruby.rails + validates_format_of + diff --git a/Rails/validates_inclusion_of-if.sublime-snippet b/Rails/validates_inclusion_of-if.sublime-snippet new file mode 100644 index 0000000..c66c336 --- /dev/null +++ b/Rails/validates_inclusion_of-if.sublime-snippet @@ -0,0 +1,6 @@ + + ${3:%w( ${4:mov avi} )}, :on => :${5:create}, :message => "${6:extension %s is not included in the list}"}, :if => proc { |obj| ${7:obj.condition?} }}]]> + viif + source.ruby.rails + validates_inclusion_of if + diff --git a/Rails/validates_inclusion_of.sublime-snippet b/Rails/validates_inclusion_of.sublime-snippet new file mode 100644 index 0000000..8f88309 --- /dev/null +++ b/Rails/validates_inclusion_of.sublime-snippet @@ -0,0 +1,6 @@ + + ${3:%w( ${4:mov avi} )}, :on => :${5:create}, :message => "${6:extension %s is not included in the list}"}]]> + vi + source.ruby.rails + validates_inclusion_of + diff --git a/Rails/validates_length_of-(vl).sublime-snippet b/Rails/validates_length_of-(vl).sublime-snippet new file mode 100644 index 0000000..347937d --- /dev/null +++ b/Rails/validates_length_of-(vl).sublime-snippet @@ -0,0 +1,6 @@ + + ${2:3..20}${3:, :on => :${4:create}, :message => "${5:must be present}"}]]> + vl + source.ruby.rails + validates_length_of + diff --git a/Rails/validates_length_of-if.sublime-snippet b/Rails/validates_length_of-if.sublime-snippet new file mode 100644 index 0000000..1e108e8 --- /dev/null +++ b/Rails/validates_length_of-if.sublime-snippet @@ -0,0 +1,6 @@ + + ${2:3..20}${3:, :on => :${4:create}, :message => "${5:must be present}"}, :if => proc { |obj| ${6:obj.condition?} }}]]> + vlif + source.ruby.rails + validates_length_of if + diff --git a/Rails/validates_numericality_of-if.sublime-snippet b/Rails/validates_numericality_of-if.sublime-snippet new file mode 100644 index 0000000..6f5848a --- /dev/null +++ b/Rails/validates_numericality_of-if.sublime-snippet @@ -0,0 +1,6 @@ + + :${3:create}, :message => "${4:is not a number}"}, :if => proc { |obj| ${5:obj.condition?} }}]]> + vnif + source.ruby.rails + validates_numericality_of if + diff --git a/Rails/validates_numericality_of.sublime-snippet b/Rails/validates_numericality_of.sublime-snippet new file mode 100644 index 0000000..a899187 --- /dev/null +++ b/Rails/validates_numericality_of.sublime-snippet @@ -0,0 +1,6 @@ + + :${3:create}, :message => "${4:is not a number}"}]]> + vn + source.ruby.rails + validates_numericality_of + diff --git a/Rails/validates_presence_of-(vp).sublime-snippet b/Rails/validates_presence_of-(vp).sublime-snippet new file mode 100644 index 0000000..5ab6905 --- /dev/null +++ b/Rails/validates_presence_of-(vp).sublime-snippet @@ -0,0 +1,6 @@ + + :${3:create}, :message => "${4:can't be blank}"}]]> + vp + source.ruby.rails + validates_presence_of + diff --git a/Rails/validates_presence_of-if-(vpif)-2.sublime-snippet b/Rails/validates_presence_of-if-(vpif)-2.sublime-snippet new file mode 100644 index 0000000..68f89df --- /dev/null +++ b/Rails/validates_presence_of-if-(vpif)-2.sublime-snippet @@ -0,0 +1,6 @@ + + :${3:create}, :message => "${4:can't be blank}"}, :if => proc { |obj| ${5:obj.condition?} }}]]> + vpif + source.ruby.rails + validates_presence_of if + diff --git a/Rails/validates_uniqueness_of-(vu).sublime-snippet b/Rails/validates_uniqueness_of-(vu).sublime-snippet new file mode 100644 index 0000000..c725a69 --- /dev/null +++ b/Rails/validates_uniqueness_of-(vu).sublime-snippet @@ -0,0 +1,6 @@ + + :${3:create}, :message => "${4:must be unique}"}]]> + vu + source.ruby.rails + validates_uniqueness_of + diff --git a/Rails/validates_uniqueness_of-if-(vuif).sublime-snippet b/Rails/validates_uniqueness_of-if-(vuif).sublime-snippet new file mode 100644 index 0000000..6517d8f --- /dev/null +++ b/Rails/validates_uniqueness_of-if-(vuif).sublime-snippet @@ -0,0 +1,6 @@ + + :${3:create}, :message => "${4:must be unique}", :if => proc { |obj| ${6:obj.condition?} }}]]> + vuif + source.ruby.rails + validates_uniqueness_of if + diff --git a/Rails/verify-(verify).sublime-snippet b/Rails/verify-(verify).sublime-snippet new file mode 100644 index 0000000..a612aa2 --- /dev/null +++ b/Rails/verify-(verify).sublime-snippet @@ -0,0 +1,7 @@ + + [:$1], :method => :post, :render => {:status => 500, :text => "use HTTP-POST"} +]]> + verify + source.ruby.rails + verify — render + diff --git a/Rails/verify-redirect-(verify).sublime-snippet b/Rails/verify-redirect-(verify).sublime-snippet new file mode 100644 index 0000000..5714ddc --- /dev/null +++ b/Rails/verify-redirect-(verify).sublime-snippet @@ -0,0 +1,7 @@ + + [:$1], :session => :user, :params => :id, :redirect_to => {:action => '${2:index}'} +]]> + verify + source.ruby.rails + verify — redirect + diff --git a/Rails/wants_format.sublime-snippet b/Rails/wants_format.sublime-snippet new file mode 100644 index 0000000..99a229d --- /dev/null +++ b/Rails/wants_format.sublime-snippet @@ -0,0 +1,6 @@ + + + wants + meta.rails.controller + wants.format + diff --git a/Rails/xhr-delete.sublime-snippet b/Rails/xhr-delete.sublime-snippet new file mode 100644 index 0000000..0b45fbe --- /dev/null +++ b/Rails/xhr-delete.sublime-snippet @@ -0,0 +1,6 @@ + + ${2:1}$0]]> + xdelete + source.ruby.rails + xhr delete + diff --git a/Rails/xhr-get.sublime-snippet b/Rails/xhr-get.sublime-snippet new file mode 100644 index 0000000..efc72d7 --- /dev/null +++ b/Rails/xhr-get.sublime-snippet @@ -0,0 +1,6 @@ + + ${3:1}}$0]]> + xget + source.ruby.rails + xhr get + diff --git a/Rails/xhr-post.sublime-snippet b/Rails/xhr-post.sublime-snippet new file mode 100644 index 0000000..28bf373 --- /dev/null +++ b/Rails/xhr-post.sublime-snippet @@ -0,0 +1,6 @@ + + { $3 }]]> + xpost + source.ruby.rails + xhr post + diff --git a/Rails/xhr-put.sublime-snippet b/Rails/xhr-put.sublime-snippet new file mode 100644 index 0000000..37cc29d --- /dev/null +++ b/Rails/xhr-put.sublime-snippet @@ -0,0 +1,6 @@ + + ${2:1}, :${3:object} => { $4 }$0]]> + xput + source.ruby.rails + xhr put + diff --git a/Regular Expressions/RegExp.tmLanguage b/Regular Expressions/RegExp.tmLanguage new file mode 100644 index 0000000..e0b6971 --- /dev/null +++ b/Regular Expressions/RegExp.tmLanguage @@ -0,0 +1,142 @@ + + + + + comment + Matches Oniguruma's Ruby regexp syntax (TextMate uses Oniguruma in Ruby mode). + fileTypes + + re + + foldingStartMarker + (/\*|\{|\() + foldingStopMarker + (\*/|\}|\)) + keyEquivalent + ^~R + name + Regular Expression + patterns + + + match + \| + name + keyword.operator.regexp + + + match + \\[bBAZzG^$] + name + keyword.control.anchors.regexp + + + include + #character_class + + + include + #escaped_char + + + begin + \[(?:\^?\])? + end + \] + name + keyword.control.set.regexp + patterns + + + include + #character_class + + + include + #escaped_char + + + match + .-. + name + constant.other.range.regexp + + + match + .&&. + name + keyword.operator.intersection.regexp + + + + + begin + \( + end + \) + name + string.regexp.group + patterns + + + include + source.regexp + + + match + (?<=\()\?(<[=!]|>|=|:|!) + name + constant.other.assertion.regexp + + + match + (?<=\()\?# + name + comment.line.number-sign.regexp + + + + + match + \\(\n\d+|\k\w+|(?<!\|)\g\w+) + name + keyword.other.backref-and-recursion.regexp + + + match + \\([tvnrbfae]|[0-8]{3}|x\H\H\{7\H{7}\}|x\H\H|c\d+|C-\d+|M-\d+|M-\\C-\d+) + name + constant.character.escape.regexp + + + match + ((?<!\()[?*+][?+]?)|\{\d*,\d*\} + name + keyword.operator.quantifier.regexp + + + repository + + character_class + + match + \\[wWsSdDhH] + name + keyword.control.character-class.regexp + + escaped_char + + comment + escaped character + match + \\. + name + constant.character.escape.regexp + + + scopeName + source.regexp + uuid + BAFE4C4F-8D59-48CD-A3BC-52A2084531C9 + + diff --git a/Regular Expressions/RegExp.tmLanguage.cache b/Regular Expressions/RegExp.tmLanguage.cache new file mode 100644 index 0000000..f37cb15 Binary files /dev/null and b/Regular Expressions/RegExp.tmLanguage.cache differ diff --git a/RestructuredText/Comments.tmPreferences b/RestructuredText/Comments.tmPreferences new file mode 100644 index 0000000..63c2e32 --- /dev/null +++ b/RestructuredText/Comments.tmPreferences @@ -0,0 +1,24 @@ + + + + + name + Miscellaneous + scope + text.restructuredtext + settings + + shellVariables + + + name + TM_COMMENT_START + value + .. + + + + uuid + 1200212D-C322-42FE-8349-DCDA065B97A4 + + \ No newline at end of file diff --git a/RestructuredText/Comments.tmPreferences.cache b/RestructuredText/Comments.tmPreferences.cache new file mode 100644 index 0000000..0df3699 Binary files /dev/null and b/RestructuredText/Comments.tmPreferences.cache differ diff --git a/RestructuredText/reStructuredText.tmLanguage b/RestructuredText/reStructuredText.tmLanguage new file mode 100644 index 0000000..a0c8b8b --- /dev/null +++ b/RestructuredText/reStructuredText.tmLanguage @@ -0,0 +1,654 @@ + + + + + comment + syntax highlighting for reStructuredText http://docutils.sourceforge.net, based on rst mode from jEdit + fileTypes + + rst + rest + + keyEquivalent + ^~R + name + reStructuredText + patterns + + + begin + ^([ \t]*)(?=\S) + contentName + meta.paragraph.restructuredtext + end + ^(?!\1(?=\S)) + patterns + + + include + #inline + + + + + repository + + inline + + patterns + + + begin + ^([ \t]*)((\.\.)\sraw(::)) html + captures + + 2 + + name + meta.directive.restructuredtext + + 3 + + name + punctuation.definition.directive.restructuredtext + + 4 + + name + punctuation.separator.key-value.restructuredtext + + + comment + directives.html + end + ^(?!\1[ \t]) + patterns + + + include + text.html.basic + + + + + captures + + 1 + + name + punctuation.definition.directive.restructuredtext + + 2 + + name + punctuation.separator.key-value.restructuredtext + + + comment + directives + match + (\.\.)\s[A-z][A-z0-9-_]+(::)\s*$ + name + meta.other.directive.restructuredtext + + + begin + ^([ \t]*).*?((::)) + captures + + 2 + + name + markup.raw.restructuredtext + + 3 + + name + punctuation.definition.raw.restructuredtext + + + comment + verbatim blocks + end + ^(?=\1[^\s]+) + name + meta.raw.block.restructuredtext + patterns + + + match + .+ + name + markup.raw.restructuredtext + + + + + comment + directives + match + :: + name + meta.startraw.restructuredtext + + + captures + + 1 + + name + punctuation.definition.italic.restructuredtext + + 2 + + name + punctuation.definition.italic.restructuredtext + + + comment + strong emphasis + match + (\*\*)[^*]+(\*\*) + name + markup.bold.restructuredtext + + + captures + + 1 + + name + punctuation.definition.italic.restructuredtext + + 2 + + name + punctuation.definition.italic.restructuredtext + + + comment + emphasis + match + (\*)\w[^*]+\w(\*) + name + markup.italic.restructuredtext + + + captures + + 1 + + name + punctuation.definition.link.restructuredtext + + 2 + + name + punctuation.definition.string.restructuredtext + + 3 + + name + string.other.link.title.restructuredtext + + 4 + + name + punctuation.separator.key-value.restructuredtext + + 5 + + name + markup.underline.link.restructuredtext + + + comment + replacement + match + (\.\.)\s+(_)([\w\s]+)(:)\s+(.*) + name + meta.link.reference.def.restructuredtext + + + captures + + 1 + + name + punctuation.definition.substitution.restructuredtext + + + comment + substitution + match + (\|)[^|]+(\|_{0,2}) + name + markup.underline.substitution.restructuredtext + + + captures + + 1 + + name + string.other.link.title.restructuredtext + + 2 + + name + punctuation.definition.link.restructuredtext + + + comment + links `...`_ or `...`__ + match + \b(\w+)(_)\b + name + meta.link.reference + + + captures + + 1 + + name + punctuation.definition.link.restructuredtext + + 2 + + name + string.other.link.title.restructuredtext + + 3 + + name + punctuation.definition.link.restructuredtext + + + comment + links `...`_ or `...`__ + match + (`)([\w\s]+)(`_) + name + meta.link.reference + + + captures + + 1 + + name + punctuation.definition.link.restructuredtext + + 2 + + name + string.other.link.title.restructuredtext + + 3 + + name + punctuation.definition.location.restructuredtext + + 4 + + name + markup.underline.link.restructuredtext + + 5 + + name + punctuation.definition.location.restructuredtext + + 6 + + name + punctuation.definition.link.restructuredtext + + + comment + links `...`_ + match + (`)([\w\s]+)\s+(<)(.*?)(>)(`_) + name + meta.link.inline.restructuredtext + + + captures + + 1 + + name + punctuation.definition.link.restructuredtext + + 2 + + name + constant.other.footnote.link.restructuredtext + + 3 + + name + punctuation.definition.constant.restructuredtext + + 6 + + name + punctuation.definition.constant.restructuredtext + + 7 + + name + punctuation.definition.constant.restructuredtext + + 8 + + name + string.other.footnote.restructuredtext + + + comment + replacement + match + ^(\.\.)\s+((\[)(((#?)[^]]*?)|\*)(\]))\s+(.*) + name + meta.link.footnote.def.restructuredtext + + + captures + + 1 + + name + constant.other.footnote.link + + 2 + + name + punctuation.definition.constant.restructuredtext + + 3 + + name + punctuation.definition.constant.restructuredtext + + 4 + + name + punctuation.definition.constant.restructuredtext + + + comment + footnote reference: [0]_ + match + ((\[)[0-9]+(\]))(_) + name + meta.link.footnote.numeric.restructuredtext + + + captures + + 1 + + name + constant.other.footnote.link + + 2 + + name + punctuation.definition.constant.restructuredtext + + 3 + + name + punctuation.definition.constant.restructuredtext + + 4 + + name + punctuation.definition.constant.restructuredtext + + + comment + footnote reference [#]_ or [#foo]_ + match + ((\[#)[A-z0-9_]*(\]))(_) + name + meta.link.footnote.auto.restructuredtext + + + captures + + 1 + + name + constant.other.footnote.link.restructuredtext + + 2 + + name + punctuation.definition.constant.restructuredtext + + 3 + + name + punctuation.definition.constant.restructuredtext + + 4 + + name + punctuation.definition.constant.restructuredtext + + + comment + footnote reference [*]_ + match + ((\[)\*(\]))(_) + name + meta.link.footnote.symbol.auto.restructuredtext + + + captures + + 1 + + name + punctuation.definition.link.restructuredtext + + 2 + + name + constant.other.citation.link.restructuredtext + + 3 + + name + punctuation.definition.constant.restructuredtext + + 4 + + name + punctuation.definition.constant.restructuredtext + + 5 + + name + punctuation.definition.constant.restructuredtext + + 6 + + name + string.other.citation.restructuredtext + + + comment + replacement + match + ^(\.\.)\s+((\[)[A-z][A-z0-9]*(\]))(_)\s+(.*) + name + meta.link.citation.def.restructuredtext + + + captures + + 1 + + name + constant.other.citation.link.restructuredtext + + 2 + + name + punctuation.definition.constant.restructuredtext + + 3 + + name + punctuation.definition.constant.restructuredtext + + 4 + + name + punctuation.definition.constant.restructuredtext + + + comment + citation reference + match + ((\[)[A-z][A-z0-9_-]*(\]))(_) + name + meta.link.citation.restructuredtext + + + begin + `` + captures + + 0 + + name + punctuation.definition.raw.restructuredtext + + + comment + inline literal + end + `` + name + markup.raw.restructuredtext + + + captures + + 1 + + name + punctuation.definition.intepreted.restructuredtext + + 2 + + name + punctuation.definition.intepreted.restructuredtext + + + comment + intepreted text + match + (`)[^`]+(`)(?!_) + name + markup.other.command.restructuredtext + + + captures + + 1 + + name + punctuation.definition.field.restructuredtext + + 2 + + name + punctuation.definition.field.restructuredtext + + + comment + field list + match + (:)[A-z][A-z0-9 =\s\t_]*(:) + name + entity.name.tag.restructuredtext + + + captures + + 0 + + name + punctuation.definition.table.restructuredtext + + + comment + table + match + \+-[+-]+ + name + markup.other.table.restructuredtext + + + captures + + 0 + + name + punctuation.definition.table.restructuredtext + + + comment + table + match + \+=[+=]+ + name + markup.other.table.restructuredtext + + + captures + + 1 + + name + punctuation.definition.heading.restructuredtext + + + match + (^(=|-|~|`|#|"|\^|\+|\*){3,}$){1,1}? + name + markup.heading.restructuredtext + + + begin + ^(\.\.) + beginCaptures + + 1 + + name + punctuation.definition.comment.restructuredtext + + + comment + comment + end + $\n? + name + comment.line.double-dot.restructuredtext + + + + + scopeName + text.restructuredtext + uuid + 62DA9AD6-36E1-4AB7-BB87-E933AD9FD1A4 + + \ No newline at end of file diff --git a/RestructuredText/reStructuredText.tmLanguage.cache b/RestructuredText/reStructuredText.tmLanguage.cache new file mode 100644 index 0000000..bcda7ad Binary files /dev/null and b/RestructuredText/reStructuredText.tmLanguage.cache differ diff --git a/Ruby Haml/Ruby Haml.tmLanguage b/Ruby Haml/Ruby Haml.tmLanguage new file mode 100755 index 0000000..9f1b6b7 --- /dev/null +++ b/Ruby Haml/Ruby Haml.tmLanguage @@ -0,0 +1,402 @@ + + + + + fileTypes + + haml + + foldingStartMarker + ^\s*([-%#\:\.\w\=].*)\s$ + foldingStopMarker + ^\s*$ + keyEquivalent + ^~H + name + Ruby Haml + patterns + + + begin + ^\s*== + contentName + string.quoted.double.ruby + end + $\n? + patterns + + + include + #interpolated_ruby + + + + + captures + + 1 + + name + punctuation.definition.prolog.haml + + + match + ^(!!!)($|\s.*) + name + meta.prolog.haml + + + captures + + 1 + + name + punctuation.section.comment.haml + + + match + ^ *(/)\s*\S.*$\n? + name + comment.line.slash.haml + + + begin + ^( *)(/)\s*$ + beginCaptures + + 2 + + name + punctuation.section.comment.haml + + + end + ^(?!\1 ) + name + comment.block.haml + patterns + + + include + text.haml + + + + + begin + ^\s*(?:((%)([\w:]+))|(?=\.|#)) + captures + + 1 + + name + meta.tag.haml + + 2 + + name + punctuation.definition.tag.haml + + 3 + + name + entity.name.tag.haml + + + end + $|(?!\.|#|\{|\[|=|-|~|/) + patterns + + + begin + == + contentName + string.quoted.double.ruby + end + $\n? + patterns + + + include + #interpolated_ruby + + + + + match + \.[\w-]+ + name + entity.name.tag.class.haml + + + match + #[\w-]+ + name + entity.name.tag.id.haml + + + begin + \{(?=.*\}|.*\|\s*$) + end + \}|$|^(?!.*\|\s*$) + name + meta.section.attributes.haml + patterns + + + include + source.ruby.rails + + + include + #continuation + + + + + begin + \[(?=.*\]|.*\|\s*$) + end + \]|$|^(?!.*\|\s*$) + name + meta.section.object.haml + patterns + + + include + source.ruby.rails + + + include + #continuation + + + + + include + #rubyline + + + match + / + name + punctuation.terminator.tag.haml + + + + + captures + + 1 + + name + meta.escape.haml + + + match + ^\s*(\\.) + + + begin + ^\s*(?==|-|~) + end + $ + patterns + + + include + #rubyline + + + + + repository + + continuation + + captures + + 1 + + name + punctuation.separator.continuation.haml + + + match + (\|)\s*\n + + interpolated_ruby + + patterns + + + captures + + 0 + + name + punctuation.section.embedded.ruby + + 1 + + name + source.ruby.embedded.source.empty + + + match + #\{(\}) + name + source.ruby.embedded.source + + + begin + #\{ + captures + + 0 + + name + punctuation.section.embedded.ruby + + + end + (\}) + name + source.ruby.embedded.source + patterns + + + include + #nest_curly_and_self + + + include + source.ruby + + + + + captures + + 1 + + name + punctuation.definition.variable.ruby + + + match + (#@)[a-zA-Z_]\w* + name + variable.other.readwrite.instance.ruby + + + captures + + 1 + + name + punctuation.definition.variable.ruby + + + match + (#@@)[a-zA-Z_]\w* + name + variable.other.readwrite.class.ruby + + + captures + + 1 + + name + punctuation.definition.variable.ruby + + + match + (#\$)[a-zA-Z_]\w* + name + variable.other.readwrite.global.ruby + + + + nest_curly_and_self + + patterns + + + begin + \{ + captures + + 0 + + name + punctuation.section.scope.ruby + + + end + \} + patterns + + + include + #nest_curly_and_self + + + + + include + source.ruby + + + + rubyline + + begin + =|-|~ + contentName + source.ruby.embedded.haml + end + ((do|\{)( \|[^|]+\|)?)$|$|^(?!.*\|\s*$) + endCaptures + + 1 + + name + source.ruby.embedded.html + + 2 + + name + keyword.control.ruby.start-block + + + name + meta.line.ruby.haml + patterns + + + comment + Hack to let ruby comments work in this context properly + match + #.*$ + name + comment.line.number-sign.ruby + + + include + source.ruby.rails + + + include + #continuation + + + + + scopeName + text.haml + uuid + 3D727049-DD05-45DF-92A5-D50EA36FD035 + + diff --git a/Ruby Haml/Ruby Haml.tmLanguage.cache b/Ruby Haml/Ruby Haml.tmLanguage.cache new file mode 100644 index 0000000..29186c2 Binary files /dev/null and b/Ruby Haml/Ruby Haml.tmLanguage.cache differ diff --git a/Ruby Sass/Ruby Sass.tmLanguage b/Ruby Sass/Ruby Sass.tmLanguage new file mode 100755 index 0000000..2982394 --- /dev/null +++ b/Ruby Sass/Ruby Sass.tmLanguage @@ -0,0 +1,937 @@ + + + + + comment + + fileTypes + + sass + + foldingStartMarker + ^\s*([-%#\:\.\w\=].*)\s$ + foldingStopMarker + ^\s*$ + keyEquivalent + ^~S + name + Ruby Sass + patterns + + + begin + ^(\!|\$)([a-zA-Z0-9_-]+)\s*((?:\|\|)?=|:) + beginCaptures + + 1 + + name + punctuation.definition.entity.sass + + 2 + + name + variable.other.sass + + 3 + + name + punctuation.definition.entity.sass + + + end + (;)?$ + endCaptures + + 1 + + name + invalid.illegal.punctuation.sass + + + name + meta.variable-declaration.sass + patterns + + + include + #property-value + + + + + begin + ^(=|@mixin\s+)([a-zA-Z0-9_-]+) + beginCaptures + + 1 + + name + keyword.control.at-rule.mixin.sass + + 2 + + name + variable.other.sass + + 3 + + name + punctuation.definition.entity.sass + + + end + (;)?$ + endCaptures + + 1 + + name + invalid.illegal.punctuation.sass + + + name + meta.variable-declaration.sass.mixin + patterns + + + include + #property-value + + + + + begin + ^\s*(\+|@include\s+)([a-zA-Z0-9_-]+) + beginCaptures + + 1 + + name + keyword.control.at-rule.import.sass + + 2 + + name + variable.other.sass + + 3 + + name + punctuation.definition.entity.sass + + + end + (;)?$ + endCaptures + + 1 + + name + invalid.illegal.punctuation.sass + + + name + meta.function.include.sass + patterns + + + include + #property-value + + + + + captures + + 1 + + name + keyword.control.at-rule.extend.sass + + 2 + + name + variable.other.sass + + 3 + + name + invalid.illegal.punctuation.sass + + + match + ^\s*(@extend)\s+([.*&#a-zA-Z][:.*&#a-zA-Z]*)\s*(;)?\s*$ + name + meta.function.extend.sass + + + begin + ^\s*(\+)([a-zA-Z0-9_-]+) + beginCaptures + + 1 + + name + punctuation.definition.entity.sass + + 2 + + name + variable.other.sass + + 3 + + name + punctuation.definition.entity.sass + + + end + (;)?$ + endCaptures + + 1 + + name + invalid.illegal.punctuation.sass + + + name + meta.variable-usage.sass + patterns + + + captures + + 1 + + name + punctuation.definition.entity.css + + 2 + + name + variable.other.sass + + + match + (\!|\$)([a-zA-Z0-9_-]+) + name + meta.variable-usage.sass + + + include + #string-single + + + include + #string-double + + + + + begin + (?=[.*&#a-zA-Z][:.*&#a-zA-Z]*) + end + (;)?$ + endCaptures + + 1 + + name + invalid.illegal.punctuation.sass + + + name + meta.selector.css + patterns + + + include + #comment-block + + + match + (&) + name + keyword.other.parent-reference.sass + + + match + (?x)\b + (a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body| + br|button|canvas|caption|cite|code|col|colgroup|command|datalist|dd|del| + details|dfn|div|dl|dt|em|embed|fieldset|figure|footer|form|frame|frameset| + (h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|keygen| + label|legend|li|link|map|mark|meta|meter|nav|noframes|noscript|object| + ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|samp|script| + section|select|small|source|span|strike|strong|sub|sup|table|tbody|td| + textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)\b + name + entity.name.tag.css.sass + + + captures + + 1 + + name + punctuation.definition.entity.css + + + match + (\.)[a-zA-Z0-9_-]+ + name + entity.other.attribute-name.class.sass + + + captures + + 1 + + name + punctuation.definition.entity.sass + + + match + (#)[a-zA-Z][a-zA-Z0-9_-]* + name + entity.other.attribute-name.id.css.sass + + + match + \* + name + entity.name.tag.wildcard.sass + + + captures + + 1 + + name + punctuation.definition.entity.sass + + + match + (:+)\b(after|before|first-child|first-letter|first-line|last-child|selection)\b + name + entity.other.attribute-name.pseudo-element.sass + + + captures + + 1 + + name + punctuation.definition.entity.sass + + + match + (:)\b(active|hover|link|visited|focus)\b + name + entity.other.attribute-name.pseudo-class.css.sass + + + captures + + 1 + + name + punctuation.definition.entity.sass + + 2 + + name + entity.other.attribute-name.attribute.sass + + 3 + + name + punctuation.separator.operator.sass + + 4 + + name + string.unquoted.attribute-value.sass + + 5 + + name + string.quoted.double.attribute-value.sass + + 6 + + name + punctuation.definition.string.begin.sass + + 7 + + name + punctuation.definition.string.end.sass + + + 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.sass + + + + + include + #comment-block + + + begin + ^\s*((@)import\b) + beginCaptures + + 1 + + name + keyword.control.at-rule.import.sass + + 2 + + name + punctuation.definition.keyword.sass + + + end + (;)?$ + endCaptures + + 1 + + name + invalid.illegal.punctuation.sass + + + name + meta.at-rule.import.sass + patterns + + + include + #string-double + + + begin + (url)\s*(\()\s* + beginCaptures + + 1 + + name + support.function.url.sass + + 2 + + name + punctuation.section.function.sass + + + end + \s*(\))\s* + endCaptures + + 1 + + name + punctuation.section.function.sass + + + patterns + + + match + [^'") \t]+ + name + variable.parameter.url.sass + + + include + #string-single + + + include + #string-double + + + + + match + ([^"'\n;]+) + name + variable.parameter.url.sass + + + + + begin + ^\s*((@)media)\s+(((all|aural|braille|embossed|handheld|print|projection|screen|tty|tv)\s*,?\s*)+)\s*{ + captures + + 1 + + name + keyword.control.at-rule.media.sass + + 2 + + name + punctuation.definition.keyword.sass + + 3 + + name + support.constant.media.sass + + + end + \s*((?=;|\})) + name + meta.at-rule.media.sass + patterns + + + include + $self + + + + + begin + (?<!|\$[-a-z])(:)(?=[-a-z]) + beginCaptures + + 1 + + name + punctuation.definition.entity.css.sass + + + end + (;)?$ + endCaptures + + 1 + + name + invalid.illegal.punctuation.sass + + + name + meta.property-name.sass + patterns + + + match + (?x) + (azimuth|background-attachment|background-color|background-image| + background-position|background-repeat|background|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-radius|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| + box-shadow|caption-side|clear|clip|color|content|counter-increment| + counter-reset| cue-after|cue-before|cue|cursor|decoration|direction|display| + elevation|empty-cells|family|float|font-family|font-size-adjust|font-size| + font-stretch|font-style|font-variant|font-weight|font|height|image|indent| + 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|-moz-box-shadow|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|position|quotes|repeat|richness|right|shadow| + size|speak-header|speak-numeral|speak-punctuation|speech-rate|speak|src| + stress|style|table-layout|text|text-align|text-decoration|text-indent| + text-shadow|text-transform|top|transform|unicode-bidi|vertical-align| + visibility|voice-family|volume|weight|white-space|widows|width|word-spacing| + z-index)\b + name + support.type.property-name.css.sass + + + include + #property-value + + + + + begin + (?x)^[\s\t]+ + (align|azimuth|background-attachment|background-color|background-image| + background-position|background-repeat|background|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-radius| + 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|box-shadow|caption-side|clear|clip|color|content| + counter-increment|counter-reset|cue-after|cue-before|cue|cursor|decoration|direction| + display|elevation|empty-cells|family|float|font-family|font-size-adjust|font-size| + font-stretch|font-style|font-variant|font-weight|font|height|image|indent|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|-moz-box-shadow| + 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|position|quotes|repeat|richness|right|shadow|size|speak-header| + speak-numeral|speak-punctuation|speech-rate|speak|src|stress|style|table-layout|text| + text-align|text-decoration|text-indent|text-shadow|text-transform|top|transform| + unicode-bidi|vertical-align|visibility|voice-family|volume|-webkit-border-radius| + -webkit-box-shadow|weight|white-space|widows|width|word-spacing|z-index + )\b(:|\s?=) + beginCaptures + + 1 + + name + support.type.property-name.css.sass + + 2 + + name + punctuation.definition.entity.css.sass + + + end + (;)?$ + endCaptures + + 1 + + name + invalid.illegal.punctuation.sass + + + name + meta.property-name.sass + patterns + + + include + #property-value + + + + + repository + + comment-block + + begin + ^(\s*)(\/\/|\/\*) + captures + + 0 + + name + punctuation.definition.comment.sass + + + end + ^(?!\1\s) + name + comment.sass + + property-value + + begin + (:)?\s?+ + beginCaptures + + 1 + + name + invalid.illegal.punctuation.sass + + + end + (;)?$ + endCaptures + + 1 + + name + invalid.illegal.punctuation.sass + + + name + meta.property-value.sass + patterns + + + match + ([-=+*/]) + name + punctuation.definition.entity.css + + + captures + + 1 + + name + punctuation.definition.entity.css + + 2 + + name + variable.other.sass + + + match + (\!|\$)([a-zA-Z0-9_-]+) + name + meta.variable-usage.sass + + + match + (?x)\b(absolute|all-scroll|always|auto|baseline|below|bidi-override|block|bold| + bolder|both|bottom|break-all|break-word|capitalize|center|char|circle| + col-resize|collapse|crosshair|dashed|decimal|default|disabled|disc| + distribute-all-lines|distribute-letter|distribute-space|distribute|dotted| + double|e-resize|ellipsis|fixed|groove|hand|help|hidden|horizontal| + ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space| + inactive|inherit|inline-block|inline|inset|inside|inter-ideograph| + inter-word|italic|justify|keep-all|left|lighter|line-edge|line-through| + line|list-item|loose|lower-alpha|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|outset|outside|overline|pointer|progress| + relative|repeat-x|repeat-y|repeat|right|ridge|row-resize|rtl|s-resize| + scroll|se-resize|separate|small-caps|solid|square|static|strict|super| + sw-resize|table-footer-group|table-header-group|tb-rl|text-bottom|text-top| + text|thick|thin|top|transparent|underline|upper-alpha|upper-roman|uppercase| + vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace + )\b + name + support.constant.property-value.css.sass + + + match + (?x)(\b(?i:arial|century|comic|courier|garamond|georgia|helvetica|impact| + lucida(?: sans)?|symbol|system|tahoma|times(?: new roman)?|trebuchet|utopia|verdana| + webdings|sans-serif|serif|mono|monospace)\b) + name + support.constant.font-name.css.sass + + + match + (\b((?:x{1,2}-)?small|smaller|medium|(?:x{1,2}-)?large|larger)\b) + name + support.constant.font-size.css.sass + + + comment + http://www.w3schools.com/css/css_colors.asp + match + (?x)\b(aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|purple| + red|silver|teal|white|yellow)\b + name + support.constant.color.w3c-standard-color-name.css.sass + + + comment + These colours are mostly recognised but will not validate. ref: http://www.w3schools.com/css/css_colornames.asp + match + (?x)\b(seagreen|hotpink|lawngreen|darkgreen|violet|darkred|crimson|green| + sandybrown|navy|magenta|darkslategray|steelblue|silver|darkgrey|mistyrose|gray| + aliceblue|blueviolet|lightpink|saddlebrown|chocolate|limegreen|lightslategray| + yellowgreen|pink|lightskyblue|indigo|lightblue|floralwhite|navajowhite| + mediumvioletred|honeydew|aquamarine|blue|olivedrab|palegreen|slategray|lavenderblush| + wheat|moccasin|mediumturquoise|mediumspringgreen|lightcoral|mintcream|tomato| + lightgrey|black|darkmagenta|dimgray|darkturquoise|midnightblue|plum|indianred|coral| + lightcyan|mediumslateblue|darkcyan|darkslateblue|darkkhaki|ivory|azure|khaki| + powderblue|darkgoldenrod|orangered|burlywood|turquoise|royalblue|maroon|cornsilk| + antiquewhite|yellow|teal|orange|grey|darkslategrey|slateblue|seashell|darkorchid| + snow|lightslategrey|cyan|greenyellow|palevioletred|goldenrod|deepskyblue|lightyellow| + lightseagreen|sienna|lemonchiffon|darkviolet|paleturquoise|slategrey|skyblue|purple| + mediumpurple|cadetblue|fuchsia|chartreuse|darksalmon|lightgoldenrodyellow|white| + springgreen|olive|forestgreen|peachpuff|peru|dimgrey|mediumseagreen|thistle|firebrick| + darkgray|mediumaquamarine|darkolivegreen|mediumblue|palegoldenrod|blanchedalmond| + ghostwhite|gold|gainsboro|darkseagreen|cornflowerblue|lime|lavender|beige|orchid| + mediumorchid|whitesmoke|bisque|lightgray|tan|salmon|rosybrown|red|dodgerblue|brown| + aqua|oldlace|deeppink|papayawhip|lightsalmon|lightsteelblue|darkorange|darkblue|linen| + lightgreen)\b + name + invalid.deprecated.color.w3c-non-standard-color-name.css.sass + + + match + (-|\+)?\s*[0-9]+(\.[0-9]+)? + name + constant.numeric.css + + + match + (?<=[\d])(px|pt|cm|mm|in|em|ex|pc)\b|% + name + keyword.other.unit.css + + + 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 + + + include + #string-double + + + include + #string-single + + + begin + (rgb|url|attr|counter|counters|local|format)\s*(\() + beginCaptures + + 1 + + name + support.function.misc.sass + + 2 + + name + punctuation.section.function.sass + + + end + (\)) + endCaptures + + 1 + + name + punctuation.section.function.sass + + + patterns + + + include + #string-single + + + include + #string-double + + + match + (\b0*((1?[0-9]{1,2})|(2([0-4][0-9]|5[0-5])))\s*,\s*)(0*((1?[0-9]{1,2})|(2([0-4][0-9]|5[0-5])))\s*,\s*)(0*((1?[0-9]{1,2})|(2([0-4][0-9]|5[0-5])))\b) + name + constant.other.color.rgb-value.sass + + + 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.sass + + + match + [^'") \t]+ + name + variable.parameter.misc.sass + + + + + match + \!\s*important + name + keyword.other.important.sass + + + + string-double + + begin + " + beginCaptures + + 0 + + name + punctuation.definition.string.begin.sass + + + end + " + endCaptures + + 0 + + name + punctuation.definition.string.end.sass + + + name + string.quoted.double.sass + patterns + + + match + \\. + name + constant.character.escape.sass + + + + string-single + + begin + ' + beginCaptures + + 0 + + name + punctuation.definition.string.begin.sass + + + end + ' + endCaptures + + 0 + + name + punctuation.definition.string.end.sass + + + name + string.quoted.single.sass + patterns + + + match + \\. + name + constant.character.escape.sass + + + + + scopeName + source.sass + uuid + F73505F1-0CD8-4ED1-93AA-B88050B3D8D4 + + diff --git a/Ruby Sass/Ruby Sass.tmLanguage.cache b/Ruby Sass/Ruby Sass.tmLanguage.cache new file mode 100644 index 0000000..e4ceab1 Binary files /dev/null and b/Ruby Sass/Ruby Sass.tmLanguage.cache differ diff --git a/Ruby/#!;usr;local;bin;ruby-w.sublime-snippet b/Ruby/#!;usr;local;bin;ruby-w.sublime-snippet new file mode 100644 index 0000000..184c7a8 --- /dev/null +++ b/Ruby/#!;usr;local;bin;ruby-w.sublime-snippet @@ -0,0 +1,7 @@ + + + rb + source.ruby + #!/usr/bin/env ruby -wKU + diff --git a/Ruby/060-ruby-if-else.sublime-snippet b/Ruby/060-ruby-if-else.sublime-snippet new file mode 100644 index 0000000..65fd378 --- /dev/null +++ b/Ruby/060-ruby-if-else.sublime-snippet @@ -0,0 +1,10 @@ + + + ife + source.ruby + if … else … end + diff --git a/Ruby/070-ruby-if.sublime-snippet b/Ruby/070-ruby-if.sublime-snippet new file mode 100644 index 0000000..c7d93d9 --- /dev/null +++ b/Ruby/070-ruby-if.sublime-snippet @@ -0,0 +1,8 @@ + + + if + source.ruby + if … end + diff --git a/Ruby/080-ruby-case.sublime-snippet b/Ruby/080-ruby-case.sublime-snippet new file mode 100644 index 0000000..04600de --- /dev/null +++ b/Ruby/080-ruby-case.sublime-snippet @@ -0,0 +1,9 @@ + + + case + source.ruby + case … end + diff --git a/Ruby/Add-'#-=-'-Marker.sublime-snippet b/Ruby/Add-'#-=-'-Marker.sublime-snippet new file mode 100644 index 0000000..2b49530 --- /dev/null +++ b/Ruby/Add-'#-=-'-Marker.sublime-snippet @@ -0,0 +1,6 @@ + + ]]> + # + source.ruby + Add ‘# =>’ Marker + diff --git a/Ruby/Array.new(10)-{-i-..-}-(Arr).sublime-snippet b/Ruby/Array.new(10)-{-i-..-}-(Arr).sublime-snippet new file mode 100644 index 0000000..69d828a --- /dev/null +++ b/Ruby/Array.new(10)-{-i-..-}-(Arr).sublime-snippet @@ -0,0 +1,6 @@ + + \s*(?:\*|\*?[a-z_])[a-zA-Z0-9_]*\s*)(,\g)*,?\s*$)|.*/(?1:|)/}${2:i}${2/(^(?\s*(?:\*|\*?[a-z_])[a-zA-Z0-9_]*\s*)(,\g)*,?\s*$)|.*/(?1:| )/}$0 }]]> + Array + source.ruby + Array.new(10) { |i| .. } + diff --git a/Ruby/Benchmark_bmbm(__)-do-__-end.sublime-snippet b/Ruby/Benchmark_bmbm(__)-do-__-end.sublime-snippet new file mode 100644 index 0000000..a3baeb5 --- /dev/null +++ b/Ruby/Benchmark_bmbm(__)-do-__-end.sublime-snippet @@ -0,0 +1,9 @@ + + + bm- + source.ruby + Benchmark.bmbm do .. end + diff --git a/Ruby/Comments.tmPreferences b/Ruby/Comments.tmPreferences new file mode 100644 index 0000000..8e0a72e --- /dev/null +++ b/Ruby/Comments.tmPreferences @@ -0,0 +1,38 @@ + + + + + name + Comments + scope + source.ruby + settings + + shellVariables + + + name + TM_COMMENT_START + value + # + + + name + TM_COMMENT_START_2 + value + =begin + + + + name + TM_COMMENT_END_2 + value + =end + + + + + uuid + 1D26F26C-C6F7-434F-84F8-FEE895372E8A + + diff --git a/Ruby/Comments.tmPreferences.cache b/Ruby/Comments.tmPreferences.cache new file mode 100644 index 0000000..ea2063f Binary files /dev/null and b/Ruby/Comments.tmPreferences.cache differ diff --git a/Ruby/Completion Rules.tmPreferences b/Ruby/Completion Rules.tmPreferences new file mode 100644 index 0000000..9aea773 --- /dev/null +++ b/Ruby/Completion Rules.tmPreferences @@ -0,0 +1,13 @@ + + + + + scope + source.ruby + settings + + cancelCompletion + ^\s*(else|end|do|begin|rescue|(class|def|module|include)\s*[a-zA-Z_0-9]+)$ + + + diff --git a/Ruby/Completion Rules.tmPreferences.cache b/Ruby/Completion Rules.tmPreferences.cache new file mode 100644 index 0000000..45c3b77 Binary files /dev/null and b/Ruby/Completion Rules.tmPreferences.cache differ diff --git a/Ruby/Default.sublime-keymap b/Ruby/Default.sublime-keymap new file mode 100644 index 0000000..caaa492 --- /dev/null +++ b/Ruby/Default.sublime-keymap @@ -0,0 +1,13 @@ +[ + { "keys": ["#"], "command": "insert_snippet", "args": {"contents": "#{${1:$SELECTION}}$0"}, "context": + [ + { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, + { + "operand": "(string.quoted.double.ruby | string.interpolated.ruby) - string source", + "operator": "equal", + "match_all": true, + "key": "selector" + } + ] + } +] \ No newline at end of file diff --git a/Ruby/Dir.glob(-..-)-do-file-..-end-(Dir).sublime-snippet b/Ruby/Dir.glob(-..-)-do-file-..-end-(Dir).sublime-snippet new file mode 100644 index 0000000..c898dff --- /dev/null +++ b/Ruby/Dir.glob(-..-)-do-file-..-end-(Dir).sublime-snippet @@ -0,0 +1,6 @@ + + + Dir + source.ruby + Dir.glob("..") { |file| .. } + diff --git a/Ruby/Dir[-__-].sublime-snippet b/Ruby/Dir[-__-].sublime-snippet new file mode 100644 index 0000000..d3670e9 --- /dev/null +++ b/Ruby/Dir[-__-].sublime-snippet @@ -0,0 +1,6 @@ + + + Dir + source.ruby + Dir[".."] + diff --git a/Ruby/File.foreach-(-..-)-do-line-..-end-(File).sublime-snippet b/Ruby/File.foreach-(-..-)-do-line-..-end-(File).sublime-snippet new file mode 100644 index 0000000..88e1224 --- /dev/null +++ b/Ruby/File.foreach-(-..-)-do-line-..-end-(File).sublime-snippet @@ -0,0 +1,6 @@ + + + File + source.ruby + File.foreach ("..") { |line| .. } + diff --git a/Ruby/File_open(-__-)-{-file-__-}.sublime-snippet b/Ruby/File_open(-__-)-{-file-__-}.sublime-snippet new file mode 100644 index 0000000..79836d1 --- /dev/null +++ b/Ruby/File_open(-__-)-{-file-__-}.sublime-snippet @@ -0,0 +1,6 @@ + + + File + source.ruby + File.open("..") { |file| .. } + diff --git a/Ruby/File_read(-__-).sublime-snippet b/Ruby/File_read(-__-).sublime-snippet new file mode 100644 index 0000000..cc2aef4 --- /dev/null +++ b/Ruby/File_read(-__-).sublime-snippet @@ -0,0 +1,6 @@ + + + File + source.ruby + File.read("..") + diff --git a/Ruby/Hash.new-{-hash-key-hash[key]-=-..-}-(Has).sublime-snippet b/Ruby/Hash.new-{-hash-key-hash[key]-=-..-}-(Has).sublime-snippet new file mode 100644 index 0000000..d249474 --- /dev/null +++ b/Ruby/Hash.new-{-hash-key-hash[key]-=-..-}-(Has).sublime-snippet @@ -0,0 +1,6 @@ + + + Hash + source.ruby + Hash.new { |hash, key| hash[key] = .. } + diff --git a/Ruby/Marshal.dump(obj-file)-(Md).sublime-snippet b/Ruby/Marshal.dump(obj-file)-(Md).sublime-snippet new file mode 100644 index 0000000..21b23fb --- /dev/null +++ b/Ruby/Marshal.dump(obj-file)-(Md).sublime-snippet @@ -0,0 +1,6 @@ + + + Md + source.ruby + Marshal.dump(.., file) + diff --git a/Ruby/Marshal.load(obj)-(Ml).sublime-snippet b/Ruby/Marshal.load(obj)-(Ml).sublime-snippet new file mode 100644 index 0000000..b46ad10 --- /dev/null +++ b/Ruby/Marshal.load(obj)-(Ml).sublime-snippet @@ -0,0 +1,6 @@ + + + Ml + source.ruby + Marshal.load(obj) + diff --git a/Ruby/Miscellaneous.tmPreferences b/Ruby/Miscellaneous.tmPreferences new file mode 100644 index 0000000..81bd040 --- /dev/null +++ b/Ruby/Miscellaneous.tmPreferences @@ -0,0 +1,44 @@ + + + + + name + Indent + scope + source.ruby + settings + + decreaseIndentPattern + ^\s*([}\]]\s*$|(end|rescue|ensure|else|elsif|when)\b) + increaseIndentPattern + (?x)^ + (\s* + (module|class|def + |unless|if|else|elsif + |case|when + |begin|rescue|ensure + |for|while|until + |(?= .*? \b(do|begin|case|if|unless)\b ) + # the look-ahead above is to quickly discard non-candidates + ( "(\\.|[^\\"])*+" # eat a double quoted string + | '(\\.|[^\\'])*+' # eat a single quoted string + | [^#"'] # eat all but comments and strings + )* + ( \s (do|begin|case) + | [-+=&|*/~%^<>~](?<!\$.) \s*+ (if|unless) + ) + )\b + (?! [^;]*+ ; .*? \bend\b ) + |( "(\\.|[^\\"])*+" # eat a double quoted string + | '(\\.|[^\\'])*+' # eat a single quoted string + | [^#"'] # eat all but comments and strings + )* + ( \{ (?! [^}]*+ \} ) + | \[ (?! [^\]]*+ \] ) + ) + ).*$ + + uuid + 6FEAF60F-F0F3-4618-9259-DE93285F50D1 + + diff --git a/Ruby/Miscellaneous.tmPreferences.cache b/Ruby/Miscellaneous.tmPreferences.cache new file mode 100644 index 0000000..95f0b0c Binary files /dev/null and b/Ruby/Miscellaneous.tmPreferences.cache differ diff --git a/Ruby/PStore_new(-__-).sublime-snippet b/Ruby/PStore_new(-__-).sublime-snippet new file mode 100644 index 0000000..92b768f --- /dev/null +++ b/Ruby/PStore_new(-__-).sublime-snippet @@ -0,0 +1,6 @@ + + + Pn- + source.ruby + PStore.new( .. ) + diff --git a/Ruby/RDoc-documentation-block.sublime-snippet b/Ruby/RDoc-documentation-block.sublime-snippet new file mode 100644 index 0000000..726f0d9 --- /dev/null +++ b/Ruby/RDoc-documentation-block.sublime-snippet @@ -0,0 +1,8 @@ + + + =b + source.ruby + New Block + diff --git a/Ruby/Ruby.sublime-build b/Ruby/Ruby.sublime-build new file mode 100644 index 0000000..afd4e37 --- /dev/null +++ b/Ruby/Ruby.sublime-build @@ -0,0 +1,5 @@ +{ + "cmd": ["ruby", "$file"], + "file_regex": "^(...*?):([0-9]*):?([0-9]*)", + "selector": "source.ruby" +} diff --git a/Ruby/Ruby.tmLanguage b/Ruby/Ruby.tmLanguage new file mode 100644 index 0000000..a1ea6df --- /dev/null +++ b/Ruby/Ruby.tmLanguage @@ -0,0 +1,2854 @@ + + + + + comment + + TODO: unresolved issues + + text: + "p << end + print me! + end" + symptoms: + not recognized as a heredoc + solution: + there is no way to distinguish perfectly between the << operator and the start + of a heredoc. Currently, we require assignment to recognize a heredoc. More + refinement is possible. + • Heredocs with indented terminators (<<-) are always distinguishable, however. + • Nested heredocs are not really supportable at present + + text: + print <<-'THERE' + This is single quoted. + The above used #{Time.now} + THERE + symtoms: + From Programming Ruby p306; should be a non-interpolated heredoc. + + text: + "a\332a" + symptoms: + '\332' is not recognized as slash3.. which should be octal 332. + solution: + plain regexp.. should be easy. + + text: + val?(a):p(b) + val?'a':'b' + symptoms: + ':p' is recognized as a symbol.. its 2 things ':' and 'p'. + :'b' has same problem. + solution: + ternary operator rule, precedence stuff, symbol rule. + but also consider 'a.b?(:c)' ?? + + fileTypes + + rb + rbx + rjs + Rakefile + rake + cgi + fcgi + gemspec + irbrc + capfile + Gemfile + + firstLineMatch + ^#!/.*\bruby + foldingStartMarker + (?x)^ + (\s*+ + (module|class|def(?!.*\bend\s*$) + |unless|if + |case + |begin + |for|while|until + |^=begin + |( "(\\.|[^"])*+" # eat a double quoted string + | '(\\.|[^'])*+' # eat a single quoted string + | [^#"'] # eat all but comments and strings + )* + ( \s (do|begin|case) + | (?<!\$)[-+=&|*/~%^<>~] \s*+ (if|unless) + ) + )\b + (?! [^;]*+ ; .*? \bend\b ) + |( "(\\.|[^"])*+" # eat a double quoted string + | '(\\.|[^'])*+' # eat a single quoted string + | [^#"'] # eat all but comments and strings + )* + ( \{ (?! [^}]*+ \} ) + | \[ (?! [^\]]*+ \] ) + ) + ).*$ + | [#] .*? \(fold\) \s*+ $ # Sune’s special marker + + foldingStopMarker + (?x) + ( (^|;) \s*+ end \s*+ ([#].*)? $ + | (^|;) \s*+ end \. .* $ + | ^ \s*+ [}\]] ,? \s*+ ([#].*)? $ + | [#] .*? \(end\) \s*+ $ # Sune’s special marker + | ^=end + ) + keyEquivalent + ^~R + name + Ruby + patterns + + + captures + + 1 + + name + keyword.control.class.ruby + + 2 + + name + entity.name.type.class.ruby + + 4 + + name + entity.other.inherited-class.ruby + + 5 + + name + punctuation.separator.inheritance.ruby + + 6 + + name + variable.other.object.ruby + + 7 + + name + punctuation.definition.variable.ruby + + + match + ^\s*(class)\s+(([.a-zA-Z0-9_:]+(\s*(<)\s*[.a-zA-Z0-9_:]+)?)|((<<)\s*[.a-zA-Z0-9_:]+)) + name + meta.class.ruby + + + captures + + 1 + + name + keyword.control.module.ruby + + 2 + + name + entity.name.type.module.ruby + + 3 + + name + entity.other.inherited-class.module.first.ruby + + 4 + + name + punctuation.separator.inheritance.ruby + + 5 + + name + entity.other.inherited-class.module.second.ruby + + 6 + + name + punctuation.separator.inheritance.ruby + + 7 + + name + entity.other.inherited-class.module.third.ruby + + 8 + + name + punctuation.separator.inheritance.ruby + + + match + ^\s*(module)\s+(([A-Z]\w*(::))?([A-Z]\w*(::))?([A-Z]\w*(::))*[A-Z]\w*) + name + meta.module.ruby + + + comment + else if is a common mistake carried over from other languages. it works if you put in a second end, but it’s never what you want. + match + (?<!\.)\belse(\s)+if\b + name + invalid.deprecated.ruby + + + comment + everything being a reserved word, not a value and needing a 'end' is a.. + match + (?<!\.)\b(BEGIN|begin|case|class|else|elsif|END|end|ensure|for|if|in|module|rescue|then|unless|until|when|while)\b(?![?!]) + name + keyword.control.ruby + + + comment + contextual smart pair support for block parameters + match + (?<!\.)\bdo\b\s* + name + keyword.control.start-block.ruby + + + comment + contextual smart pair support + match + (?<=\{)(\s+) + name + meta.syntax.ruby.start-block + + + comment + as above, just doesn't need a 'end' and does a logic operation + match + (?<!\.)\b(and|not|or)\b + name + keyword.operator.logical.ruby + + + comment + just as above but being not a logical operation + match + (?<!\.)\b(alias|alias_method|break|next|redo|retry|return|super|undef|yield)\b(?![?!])|\bdefined\?|\bblock_given\? + name + keyword.control.pseudo-method.ruby + + + match + \b(nil|true|false)\b(?![?!]) + name + constant.language.ruby + + + match + \b(__(FILE|LINE)__|self)\b(?![?!]) + name + variable.language.ruby + + + comment + everything being a method but having a special function is a.. + match + \b(initialize|new|loop|include|extend|raise|attr_reader|attr_writer|attr_accessor|attr|catch|throw|private|module_function|public|protected)\b(?![?!]) + name + keyword.other.special-method.ruby + + + begin + \b(require|gem)\b + captures + + 1 + + name + keyword.other.special-method.ruby + + + end + $|(?=#) + name + meta.require.ruby + patterns + + + include + $self + + + + + captures + + 1 + + name + punctuation.definition.variable.ruby + + + match + (@)[a-zA-Z_]\w* + name + variable.other.readwrite.instance.ruby + + + captures + + 1 + + name + punctuation.definition.variable.ruby + + + match + (@@)[a-zA-Z_]\w* + name + variable.other.readwrite.class.ruby + + + captures + + 1 + + name + punctuation.definition.variable.ruby + + + match + (\$)[a-zA-Z_]\w* + name + variable.other.readwrite.global.ruby + + + captures + + 1 + + name + punctuation.definition.variable.ruby + + + match + (\$)(!|@|&|`|'|\+|\d+|~|=|/|\\|,|;|\.|<|>|_|\*|\$|\?|:|"|-[0adFiIlpv]) + name + variable.other.readwrite.global.pre-defined.ruby + + + begin + \b(ENV)\[ + beginCaptures + + 1 + + name + variable.other.constant.ruby + + + end + \] + name + meta.environment-variable.ruby + patterns + + + include + $self + + + + + match + \b[A-Z]\w*(?=((\.|::)[A-Za-z]|\[)) + name + support.class.ruby + + + match + \b[A-Z]\w*\b + name + variable.other.constant.ruby + + + begin + (?x) + (?=def\b) # an optimization to help Oniguruma fail fast + (?<=^|\s)(def)\s+ # the def keyword + ( (?>[a-zA-Z_]\w*(?>\.|::))? # a method name prefix + (?>[a-zA-Z_]\w*(?>[?!]|=(?!>))? # the method name + |===?|>[>=]?|<=>|<[<=]?|[%&`/\|]|\*\*?|=?~|[-+]@?|\[\]=?) ) # …or an operator method + \s*(\() # the openning parenthesis for arguments + + beginCaptures + + 1 + + name + keyword.control.def.ruby + + 2 + + name + entity.name.function.ruby + + 3 + + name + punctuation.definition.parameters.ruby + + + comment + the method pattern comes from the symbol pattern, see there for a explaination + contentName + variable.parameter.function.ruby + end + \) + endCaptures + + 0 + + name + punctuation.definition.parameters.ruby + + + name + meta.function.method.with-arguments.ruby + patterns + + + include + $self + + + + + begin + (?x) + (?=def\b) # an optimization to help Oniguruma fail fast + (?<=^|\s)(def)\s+ # the def keyword + ( (?>[a-zA-Z_]\w*(?>\.|::))? # a method name prefix + (?>[a-zA-Z_]\w*(?>[?!]|=(?!>))? # the method name + |===?|>[>=]?|<=>|<[<=]?|[%&`/\|]|\*\*?|=?~|[-+]@?|\[\]=?) ) # …or an operator method + [ \t] # the space separating the arguments + (?=[ \t]*[^\s#;]) # make sure arguments and not a comment follow + + beginCaptures + + 1 + + name + keyword.control.def.ruby + + 2 + + name + entity.name.function.ruby + + + comment + same as the previous rule, but without parentheses around the arguments + contentName + variable.parameter.function.ruby + end + $ + name + meta.function.method.with-arguments.ruby + patterns + + + include + $self + + + + + captures + + 1 + + name + keyword.control.def.ruby + + 3 + + name + entity.name.function.ruby + + + comment + the optional name is just to catch the def also without a method-name + match + (?x) + (?=def\b) # an optimization to help Oniguruma fail fast + (?<=^|\s)(def)\b # the def keyword + ( \s+ # an optional group of whitespace followed by… + ( (?>[a-zA-Z_]\w*(?>\.|::))? # a method name prefix + (?>[a-zA-Z_]\w*(?>[?!]|=(?!>))? # the method name + |===?|>[>=]?|<=>|<[<=]?|[%&`/\|]|\*\*?|=?~|[-+]@?|\[\]=?) ) )? # …or an operator method + + name + meta.function.method.without-arguments.ruby + + + match + \b(0[xX]\h(?>_?\h)*|\d(?>_?\d)*(\.(?![^[:space:][:digit:]])(?>_?\d)*)?([eE][-+]?\d(?>_?\d)*)?|0[bB][01]+)\b + name + constant.numeric.ruby + + + begin + :' + captures + + 0 + + name + punctuation.definition.constant.ruby + + + end + ' + name + constant.other.symbol.single-quoted.ruby + patterns + + + match + \\['\\] + name + constant.character.escape.ruby + + + + + begin + :" + captures + + 0 + + name + punctuation.definition.constant.ruby + + + end + " + name + constant.other.symbol.double-quoted.ruby + patterns + + + include + #interpolated_ruby + + + include + #escaped_char + + + + + comment + Needs higher precidence than regular expressions. + match + /= + name + keyword.operator.assignment.augmented.ruby + + + begin + ' + beginCaptures + + 0 + + name + punctuation.definition.string.begin.ruby + + + comment + single quoted string (does not allow interpolation) + end + ' + endCaptures + + 0 + + name + punctuation.definition.string.end.ruby + + + name + string.quoted.single.ruby + patterns + + + match + \\'|\\\\ + name + constant.character.escape.ruby + + + + + begin + " + beginCaptures + + 0 + + name + punctuation.definition.string.begin.ruby + + + comment + double quoted string (allows for interpolation) + end + " + endCaptures + + 0 + + name + punctuation.definition.string.end.ruby + + + name + string.quoted.double.ruby + patterns + + + include + #interpolated_ruby + + + include + #escaped_char + + + + + begin + ` + beginCaptures + + 0 + + name + punctuation.definition.string.begin.ruby + + + comment + execute string (allows for interpolation) + end + ` + endCaptures + + 0 + + name + punctuation.definition.string.end.ruby + + + name + string.interpolated.ruby + patterns + + + include + #interpolated_ruby + + + include + #escaped_char + + + + + begin + %x\{ + beginCaptures + + 0 + + name + punctuation.definition.string.begin.ruby + + + comment + execute string (allow for interpolation) + end + \} + endCaptures + + 0 + + name + punctuation.definition.string.end.ruby + + + name + string.interpolated.ruby + patterns + + + include + #interpolated_ruby + + + include + #escaped_char + + + include + #nest_curly_i + + + + + begin + %x\[ + beginCaptures + + 0 + + name + punctuation.definition.string.begin.ruby + + + comment + execute string (allow for interpolation) + end + \] + endCaptures + + 0 + + name + punctuation.definition.string.end.ruby + + + name + string.interpolated.ruby + patterns + + + include + #interpolated_ruby + + + include + #escaped_char + + + include + #nest_brackets_i + + + + + begin + %x\< + beginCaptures + + 0 + + name + punctuation.definition.string.begin.ruby + + + comment + execute string (allow for interpolation) + end + \> + endCaptures + + 0 + + name + punctuation.definition.string.end.ruby + + + name + string.interpolated.ruby + patterns + + + include + #interpolated_ruby + + + include + #escaped_char + + + include + #nest_ltgt_i + + + + + begin + %x\( + beginCaptures + + 0 + + name + punctuation.definition.string.begin.ruby + + + comment + execute string (allow for interpolation) + end + \) + endCaptures + + 0 + + name + punctuation.definition.string.end.ruby + + + name + string.interpolated.ruby + patterns + + + include + #interpolated_ruby + + + include + #escaped_char + + + include + #nest_parens_i + + + + + begin + %x([^\w]) + beginCaptures + + 0 + + name + punctuation.definition.string.begin.ruby + + + comment + execute string (allow for interpolation) + end + \1 + endCaptures + + 0 + + name + punctuation.definition.string.end.ruby + + + name + string.interpolated.ruby + patterns + + + include + #interpolated_ruby + + + include + #escaped_char + + + + + begin + (?x) + (?: + ^ # beginning of line + | (?<= # or look-behind on: + [=>~(?:\[,|&;] + | [\s;]if\s # keywords + | [\s;]elsif\s + | [\s;]while\s + | [\s;]unless\s + | [\s;]when\s + | [\s;]assert_match\s + | [\s;]or\s # boolean opperators + | [\s;]and\s + | [\s;]not\s + | [\s.]index\s # methods + | [\s.]scan\s + | [\s.]sub\s + | [\s.]sub!\s + | [\s.]gsub\s + | [\s.]gsub!\s + | [\s.]match\s + ) + | (?<= # or a look-behind with line anchor: + ^when\s # duplication necessary due to limits of regex + | ^if\s + | ^elsif\s + | ^while\s + | ^unless\s + ) + ) + \s*((/))(?![*+{}?]) + + captures + + 1 + + name + string.regexp.classic.ruby + + 2 + + name + punctuation.definition.string.ruby + + + comment + regular expressions (normal) + we only start a regexp if the character before it (excluding whitespace) + is what we think is before a regexp + + contentName + string.regexp.classic.ruby + end + ((/[eimnosux]*)) + patterns + + + include + #regex_sub + + + + + begin + %r\{ + beginCaptures + + 0 + + name + punctuation.definition.string.begin.ruby + + + comment + regular expressions (literal) + end + \}[eimnosux]* + endCaptures + + 0 + + name + punctuation.definition.string.end.ruby + + + name + string.regexp.mod-r.ruby + patterns + + + include + #regex_sub + + + include + #nest_curly_r + + + + + begin + %r\[ + beginCaptures + + 0 + + name + punctuation.definition.string.begin.ruby + + + comment + regular expressions (literal) + end + \][eimnosux]* + endCaptures + + 0 + + name + punctuation.definition.string.end.ruby + + + name + string.regexp.mod-r.ruby + patterns + + + include + #regex_sub + + + include + #nest_brackets_r + + + + + begin + %r\( + beginCaptures + + 0 + + name + punctuation.definition.string.begin.ruby + + + comment + regular expressions (literal) + end + \)[eimnosux]* + endCaptures + + 0 + + name + punctuation.definition.string.end.ruby + + + name + string.regexp.mod-r.ruby + patterns + + + include + #regex_sub + + + include + #nest_parens_r + + + + + begin + %r\< + beginCaptures + + 0 + + name + punctuation.definition.string.begin.ruby + + + comment + regular expressions (literal) + end + \>[eimnosux]* + endCaptures + + 0 + + name + punctuation.definition.string.end.ruby + + + name + string.regexp.mod-r.ruby + patterns + + + include + #regex_sub + + + include + #nest_ltgt_r + + + + + begin + %r([^\w]) + beginCaptures + + 0 + + name + punctuation.definition.string.begin.ruby + + + comment + regular expressions (literal) + end + \1[eimnosux]* + endCaptures + + 0 + + name + punctuation.definition.string.end.ruby + + + name + string.regexp.mod-r.ruby + patterns + + + include + #regex_sub + + + + + begin + %[QWSR]?\( + beginCaptures + + 0 + + name + punctuation.definition.string.begin.ruby + + + comment + literal capable of interpolation () + end + \) + endCaptures + + 0 + + name + punctuation.definition.string.end.ruby + + + name + string.quoted.other.literal.upper.ruby + patterns + + + include + #interpolated_ruby + + + include + #escaped_char + + + include + #nest_parens_i + + + + + begin + %[QWSR]?\[ + beginCaptures + + 0 + + name + punctuation.definition.string.begin.ruby + + + comment + literal capable of interpolation [] + end + \] + endCaptures + + 0 + + name + punctuation.definition.string.end.ruby + + + name + string.quoted.other.literal.upper.ruby + patterns + + + include + #interpolated_ruby + + + include + #escaped_char + + + include + #nest_brackets_i + + + + + begin + %[QWSR]?\< + beginCaptures + + 0 + + name + punctuation.definition.string.begin.ruby + + + comment + literal capable of interpolation <> + end + \> + endCaptures + + 0 + + name + punctuation.definition.string.end.ruby + + + name + string.quoted.other.literal.upper.ruby + patterns + + + include + #interpolated_ruby + + + include + #escaped_char + + + include + #nest_ltgt_i + + + + + begin + %[QWSR]?\{ + beginCaptures + + 0 + + name + punctuation.definition.string.begin.ruby + + + comment + literal capable of interpolation -- {} + end + \} + endCaptures + + 0 + + name + punctuation.definition.string.end.ruby + + + name + string.quoted.double.ruby.mod + patterns + + + include + #interpolated_ruby + + + include + #escaped_char + + + include + #nest_curly_i + + + + + begin + %[QWSR]([^\w]) + beginCaptures + + 0 + + name + punctuation.definition.string.begin.ruby + + + comment + literal capable of interpolation -- wildcard + end + \1 + endCaptures + + 0 + + name + punctuation.definition.string.end.ruby + + + name + string.quoted.other.literal.upper.ruby + patterns + + + include + #interpolated_ruby + + + include + #escaped_char + + + + + begin + %([^\w\s=]) + beginCaptures + + 0 + + name + punctuation.definition.string.begin.ruby + + + comment + literal capable of interpolation -- wildcard + end + \1 + endCaptures + + 0 + + name + punctuation.definition.string.end.ruby + + + name + string.quoted.other.literal.other.ruby + patterns + + + include + #interpolated_ruby + + + include + #escaped_char + + + + + begin + %[qws]\( + beginCaptures + + 0 + + name + punctuation.definition.string.begin.ruby + + + comment + literal incapable of interpolation -- () + end + \) + endCaptures + + 0 + + name + punctuation.definition.string.end.ruby + + + name + string.quoted.other.literal.lower.ruby + patterns + + + match + \\\)|\\\\ + name + constant.character.escape.ruby + + + include + #nest_parens + + + + + begin + %[qws]\< + beginCaptures + + 0 + + name + punctuation.definition.string.begin.ruby + + + comment + literal incapable of interpolation -- <> + end + \> + endCaptures + + 0 + + name + punctuation.definition.string.end.ruby + + + name + string.quoted.other.literal.lower.ruby + patterns + + + match + \\\>|\\\\ + name + constant.character.escape.ruby + + + include + #nest_ltgt + + + + + begin + %[qws]\[ + beginCaptures + + 0 + + name + punctuation.definition.string.begin.ruby + + + comment + literal incapable of interpolation -- [] + end + \] + endCaptures + + 0 + + name + punctuation.definition.string.end.ruby + + + name + string.quoted.other.literal.lower.ruby + patterns + + + match + \\\]|\\\\ + name + constant.character.escape.ruby + + + include + #nest_brackets + + + + + begin + %[qws]\{ + beginCaptures + + 0 + + name + punctuation.definition.string.begin.ruby + + + comment + literal incapable of interpolation -- {} + end + \} + endCaptures + + 0 + + name + punctuation.definition.string.end.ruby + + + name + string.quoted.other.literal.lower.ruby + patterns + + + match + \\\}|\\\\ + name + constant.character.escape.ruby + + + include + #nest_curly + + + + + begin + %[qws]([^\w]) + beginCaptures + + 0 + + name + punctuation.definition.string.begin.ruby + + + comment + literal incapable of interpolation -- wildcard + end + \1 + endCaptures + + 0 + + name + punctuation.definition.string.end.ruby + + + name + string.quoted.other.literal.lower.ruby + patterns + + + comment + Cant be named because its not neccesarily an escape. + match + \\. + + + + + captures + + 1 + + name + punctuation.definition.constant.ruby + + + comment + symbols + match + (?<!:)(:)(?>[a-zA-Z_]\w*(?>[?!]|=(?![>=]))?|===?|>[>=]?|<[<=]?|<=>|[%&`/\|]|\*\*?|=?~|[-+]@?|\[\]=?|@@?[a-zA-Z_]\w*) + name + constant.other.symbol.ruby + + + captures + + 1 + + name + punctuation.definition.constant.ruby + + + comment + symbols + match + (?>[a-zA-Z_]\w*(?>[?!])?)(:)(?!:) + name + constant.other.symbol.ruby.19syntax + + + begin + ^=begin + captures + + 0 + + name + punctuation.definition.comment.ruby + + + comment + multiline comments + end + ^=end + name + comment.block.documentation.ruby + + + captures + + 1 + + name + punctuation.definition.comment.ruby + + + match + (?:^[ \t]+)?(#).*$\n? + name + comment.line.number-sign.ruby + + + comment + + matches questionmark-letters. + + examples (1st alternation = hex): + ?\x1 ?\x61 + + examples (2nd alternation = octal): + ?\0 ?\07 ?\017 + + examples (3rd alternation = escaped): + ?\n ?\b + + examples (4th alternation = meta-ctrl): + ?\C-a ?\M-a ?\C-\M-\C-\M-a + + examples (4th alternation = normal): + ?a ?A ?0 + ?* ?" ?( + ?. ?# + + + the negative lookbehind prevents against matching + p(42.tainted?) + + match + (?<!\w)\?(\\(x\h{1,2}(?!\h)\b|0[0-7]{0,2}(?![0-7])\b|[^x0MC])|(\\[MC]-)+\w|[^\s\\]) + name + constant.numeric.ruby + + + begin + ^__END__\n + captures + + 0 + + name + string.unquoted.program-block.ruby + + + comment + __END__ marker + contentName + text.plain + end + (?=not)impossible + patterns + + + begin + (?=<?xml|<(?i:html\b)|!DOCTYPE (?i:html\b)) + end + (?=not)impossible + name + text.html.embedded.ruby + patterns + + + include + text.html.basic + + + + + + + begin + (?><<-("?)((?:[_\w]+_|)HTML)\b\1) + beginCaptures + + 0 + + name + punctuation.definition.string.begin.ruby + + + comment + heredoc with embedded HTML and indented terminator + contentName + text.html.embedded.ruby + end + \s*\2$ + endCaptures + + 0 + + name + punctuation.definition.string.end.ruby + + + name + string.unquoted.embedded.html.ruby + patterns + + + include + #heredoc + + + include + text.html.basic + + + include + #interpolated_ruby + + + include + #escaped_char + + + + + begin + (?><<-("?)((?:[_\w]+_|)SQL)\b\1) + beginCaptures + + 0 + + name + punctuation.definition.string.begin.ruby + + + comment + heredoc with embedded SQL and indented terminator + contentName + text.sql.embedded.ruby + end + \s*\2$ + endCaptures + + 0 + + name + punctuation.definition.string.end.ruby + + + name + string.unquoted.embedded.sql.ruby + patterns + + + include + #heredoc + + + include + source.sql + + + include + #interpolated_ruby + + + include + #escaped_char + + + + + begin + (?><<-("?)((?:[_\w]+_|)CSS)\b\1) + beginCaptures + + 0 + + name + punctuation.definition.string.begin.ruby + + + comment + heredoc with embedded css and intented terminator + contentName + text.css.embedded.ruby + end + \s*\2$ + endCaptures + + 0 + + name + punctuation.definition.string.end.ruby + + + name + string.unquoted.embedded.css.ruby + patterns + + + include + #heredoc + + + include + source.css + + + include + #interpolated_ruby + + + include + #escaped_char + + + + + begin + (?><<-("?)((?:[_\w]+_|)CPP)\b\1) + beginCaptures + + 0 + + name + punctuation.definition.string.begin.ruby + + + comment + heredoc with embedded c++ and intented terminator + contentName + text.c++.embedded.ruby + end + \s*\2$ + endCaptures + + 0 + + name + punctuation.definition.string.end.ruby + + + name + string.unquoted.embedded.cplusplus.ruby + patterns + + + include + #heredoc + + + include + source.c++ + + + include + #interpolated_ruby + + + include + #escaped_char + + + + + begin + (?><<-("?)((?:[_\w]+_|)C)\b\1) + beginCaptures + + 0 + + name + punctuation.definition.string.begin.ruby + + + comment + heredoc with embedded c++ and intented terminator + contentName + text.c.embedded.ruby + end + \s*\2$ + endCaptures + + 0 + + name + punctuation.definition.string.end.ruby + + + name + string.unquoted.embedded.c.ruby + patterns + + + include + #heredoc + + + include + source.c + + + include + #interpolated_ruby + + + include + #escaped_char + + + + + begin + (?><<-("?)((?:[_\w]+_|)(?:JS|JAVASCRIPT))\b\1) + beginCaptures + + 0 + + name + punctuation.definition.string.begin.ruby + + + comment + heredoc with embedded javascript and intented terminator + contentName + text.js.embedded.ruby + end + \s*\2$ + endCaptures + + 0 + + name + punctuation.definition.string.end.ruby + + + name + string.unquoted.embedded.js.ruby + patterns + + + include + #heredoc + + + include + source.js + + + include + #interpolated_ruby + + + include + #escaped_char + + + + + begin + (?><<-("?)((?:[_\w]+_|)JQUERY)\b\1) + beginCaptures + + 0 + + name + punctuation.definition.string.begin.ruby + + + comment + heredoc with embedded javascript and intented terminator + contentName + text.js.jquery.embedded.ruby + end + \s*\2$ + endCaptures + + 0 + + name + punctuation.definition.string.end.ruby + + + name + string.unquoted.embedded.js.jquery.ruby + patterns + + + include + #heredoc + + + include + source.js.jquery + + + include + #interpolated_ruby + + + include + #escaped_char + + + + + begin + (?><<-("?)((?:[_\w]+_|)(?:SH|SHELL))\b\1) + beginCaptures + + 0 + + name + punctuation.definition.string.begin.ruby + + + comment + heredoc with embedded shell and intented terminator + contentName + text.shell.embedded.ruby + end + \s*\2$ + endCaptures + + 0 + + name + punctuation.definition.string.end.ruby + + + name + string.unquoted.embedded.shell.ruby + patterns + + + include + #heredoc + + + include + source.shell + + + include + #interpolated_ruby + + + include + #escaped_char + + + + + begin + (?><<-("?)((?:[_\w]+_|)RUBY)\b\1) + beginCaptures + + 0 + + name + punctuation.definition.string.begin.ruby + + + comment + heredoc with embedded ruby and intented terminator + contentName + text.ruby.embedded.ruby + end + \s*\2$ + endCaptures + + 0 + + name + punctuation.definition.string.end.ruby + + + name + string.unquoted.embedded.ruby.ruby + patterns + + + include + #heredoc + + + include + source.ruby + + + include + #interpolated_ruby + + + include + #escaped_char + + + + + begin + (?>\=\s*<<(\w+)) + beginCaptures + + 0 + + name + punctuation.definition.string.begin.ruby + + + end + ^\1$ + endCaptures + + 0 + + name + punctuation.definition.string.end.ruby + + + name + string.unquoted.heredoc.ruby + patterns + + + include + #heredoc + + + include + #interpolated_ruby + + + include + #escaped_char + + + + + begin + (?><<-(\w+)) + beginCaptures + + 0 + + name + punctuation.definition.string.begin.ruby + + + comment + heredoc with indented terminator + end + \s*\1$ + endCaptures + + 0 + + name + punctuation.definition.string.end.ruby + + + name + string.unquoted.heredoc.ruby + patterns + + + include + #heredoc + + + include + #interpolated_ruby + + + include + #escaped_char + + + + + begin + (?<=\{|do|\{\s|do\s)(\|) + captures + + 1 + + name + punctuation.separator.variable.ruby + + + end + (\|) + patterns + + + match + [_a-zA-Z][_a-zA-Z0-9]* + name + variable.other.block.ruby + + + match + , + name + punctuation.separator.variable.ruby + + + + + match + => + name + punctuation.separator.key-value + + + match + <<=|%=|&=|\*=|\*\*=|\+=|\-=|\^=|\|{1,2}=|<< + name + keyword.operator.assignment.augmented.ruby + + + match + <=>|<(?!<|=)|>(?!<|=|>)|<=|>=|===|==|=~|!=|!~|(?<=[ \t])\? + name + keyword.operator.comparison.ruby + + + match + (?<=[ \t])!+|\bnot\b|&&|\band\b|\|\||\bor\b|\^ + name + keyword.operator.logical.ruby + + + match + (%|&|\*\*|\*|\+|\-|/) + name + keyword.operator.arithmetic.ruby + + + match + = + name + keyword.operator.assignment.ruby + + + match + \||~|>> + name + keyword.operator.other.ruby + + + match + : + name + punctuation.separator.other.ruby + + + match + \; + name + punctuation.separator.statement.ruby + + + match + , + name + punctuation.separator.object.ruby + + + match + \.|:: + name + punctuation.separator.method.ruby + + + match + \{|\} + name + punctuation.section.scope.ruby + + + match + \[|\] + name + punctuation.section.array.ruby + + + match + \(|\) + name + punctuation.section.function.ruby + + + repository + + escaped_char + + match + \\(?:[0-7]{1,3}|x[\da-fA-F]{1,2}|.) + name + constant.character.escape.ruby + + heredoc + + begin + ^<<-?\w+ + end + $ + patterns + + + include + $self + + + + interpolated_ruby + + patterns + + + captures + + 0 + + name + punctuation.section.embedded.ruby + + 1 + + name + source.ruby.embedded.source.empty + + + match + #\{(\}) + name + source.ruby.embedded.source + + + begin + #\{ + captures + + 0 + + name + punctuation.section.embedded.ruby + + + end + \} + name + source.ruby.embedded.source + patterns + + + include + #nest_curly_and_self + + + include + $self + + + + + captures + + 1 + + name + punctuation.definition.variable.ruby + + + match + (#@)[a-zA-Z_]\w* + name + variable.other.readwrite.instance.ruby + + + captures + + 1 + + name + punctuation.definition.variable.ruby + + + match + (#@@)[a-zA-Z_]\w* + name + variable.other.readwrite.class.ruby + + + captures + + 1 + + name + punctuation.definition.variable.ruby + + + match + (#\$)[a-zA-Z_]\w* + name + variable.other.readwrite.global.ruby + + + + nest_brackets + + begin + \[ + captures + + 0 + + name + punctuation.section.scope.ruby + + + end + \] + patterns + + + include + #nest_brackets + + + + nest_brackets_i + + begin + \[ + captures + + 0 + + name + punctuation.section.scope.ruby + + + end + \] + patterns + + + include + #interpolated_ruby + + + include + #escaped_char + + + include + #nest_brackets_i + + + + nest_brackets_r + + begin + \[ + captures + + 0 + + name + punctuation.section.scope.ruby + + + end + \] + patterns + + + include + #regex_sub + + + include + #nest_brackets_r + + + + nest_curly + + begin + \{ + captures + + 0 + + name + punctuation.section.scope.ruby + + + end + \} + patterns + + + include + #nest_curly + + + + nest_curly_and_self + + patterns + + + begin + \{ + captures + + 0 + + name + punctuation.section.scope.ruby + + + end + \} + patterns + + + include + #nest_curly_and_self + + + + + include + $self + + + + nest_curly_i + + begin + \{ + captures + + 0 + + name + punctuation.section.scope.ruby + + + end + \} + patterns + + + include + #interpolated_ruby + + + include + #escaped_char + + + include + #nest_curly_i + + + + nest_curly_r + + begin + \{ + captures + + 0 + + name + punctuation.section.scope.ruby + + + end + \} + patterns + + + include + #regex_sub + + + include + #nest_curly_r + + + + nest_ltgt + + begin + \< + captures + + 0 + + name + punctuation.section.scope.ruby + + + end + \> + patterns + + + include + #nest_ltgt + + + + nest_ltgt_i + + begin + \< + captures + + 0 + + name + punctuation.section.scope.ruby + + + end + \> + patterns + + + include + #interpolated_ruby + + + include + #escaped_char + + + include + #nest_ltgt_i + + + + nest_ltgt_r + + begin + \< + captures + + 0 + + name + punctuation.section.scope.ruby + + + end + \> + patterns + + + include + #regex_sub + + + include + #nest_ltgt_r + + + + nest_parens + + begin + \( + captures + + 0 + + name + punctuation.section.scope.ruby + + + end + \) + patterns + + + include + #nest_parens + + + + nest_parens_i + + begin + \( + captures + + 0 + + name + punctuation.section.scope.ruby + + + end + \) + patterns + + + include + #interpolated_ruby + + + include + #escaped_char + + + include + #nest_parens_i + + + + nest_parens_r + + begin + \( + captures + + 0 + + name + punctuation.section.scope.ruby + + + end + \) + patterns + + + include + #regex_sub + + + include + #nest_parens_r + + + + regex_sub + + patterns + + + include + #interpolated_ruby + + + include + #escaped_char + + + captures + + 1 + + name + punctuation.definition.arbitrary-repitition.ruby + + 3 + + name + punctuation.definition.arbitrary-repitition.ruby + + + match + (\{)\d+(,\d+)?(\}) + name + string.regexp.arbitrary-repitition.ruby + + + begin + \[(?:\^?\])? + captures + + 0 + + name + punctuation.definition.character-class.ruby + + + end + \] + name + string.regexp.character-class.ruby + patterns + + + include + #escaped_char + + + + + begin + \( + captures + + 0 + + name + punctuation.definition.group.ruby + + + end + \) + name + string.regexp.group.ruby + patterns + + + include + #regex_sub + + + + + captures + + 1 + + name + punctuation.definition.comment.ruby + + + comment + We are restrictive in what we allow to go after the comment character to avoid false positives, since the availability of comments depend on regexp flags. + match + (?<=^|\s)(#)\s[[a-zA-Z0-9,. \t?!-][^\x{00}-\x{7F}]]*$ + name + comment.line.number-sign.ruby + + + + + scopeName + source.ruby + uuid + E00B62AC-6B1C-11D9-9B1F-000D93589AF6 + + diff --git a/Ruby/Ruby.tmLanguage.cache b/Ruby/Ruby.tmLanguage.cache new file mode 100644 index 0000000..76e58a2 Binary files /dev/null and b/Ruby/Ruby.tmLanguage.cache differ diff --git a/Ruby/Symbo List%3A Method.tmPreferences b/Ruby/Symbo List%3A Method.tmPreferences new file mode 100644 index 0000000..3550829 --- /dev/null +++ b/Ruby/Symbo List%3A Method.tmPreferences @@ -0,0 +1,19 @@ + + + + + name + Symbol List: Method + scope + source.ruby meta.function + settings + + showInSymbolList + 1 + symbolTransformation + s/^\s*def\s+// + + uuid + 92E190C9-A861-4025-92D4-D6B5A24C22D4 + + diff --git a/Ruby/Symbo List%3A Method.tmPreferences.cache b/Ruby/Symbo List%3A Method.tmPreferences.cache new file mode 100644 index 0000000..69ea05e Binary files /dev/null and b/Ruby/Symbo List%3A Method.tmPreferences.cache differ diff --git a/Ruby/Symbol List%3A No Function Call.tmPreferences b/Ruby/Symbol List%3A No Function Call.tmPreferences new file mode 100644 index 0000000..0b963aa --- /dev/null +++ b/Ruby/Symbol List%3A No Function Call.tmPreferences @@ -0,0 +1,17 @@ + + + + + name + Symbol List: No Function Call + scope + source.ruby meta.function-call entity.name.function + settings + + showInSymbolList + 0 + + uuid + A5D50494-EB97-48DE-A2BE-322DF52A7A7A + + diff --git a/Ruby/Symbol List%3A No Function Call.tmPreferences.cache b/Ruby/Symbol List%3A No Function Call.tmPreferences.cache new file mode 100644 index 0000000..8d3e482 Binary files /dev/null and b/Ruby/Symbol List%3A No Function Call.tmPreferences.cache differ diff --git a/Ruby/Wrap-in-Begin-Rescue-End.sublime-snippet b/Ruby/Wrap-in-Begin-Rescue-End.sublime-snippet new file mode 100644 index 0000000..da87d9d --- /dev/null +++ b/Ruby/Wrap-in-Begin-Rescue-End.sublime-snippet @@ -0,0 +1,11 @@ + + /}${2:e} +${TM_SELECTED_TEXT/([\t ]*).*/$1/m} $0 +${TM_SELECTED_TEXT/([\t ]*).*/$1/m}end +]]> + begin + source.ruby - comment + begin … rescue … end + diff --git a/Ruby/YAML.dump(..-file)-(Yd-).sublime-snippet b/Ruby/YAML.dump(..-file)-(Yd-).sublime-snippet new file mode 100644 index 0000000..f9255a7 --- /dev/null +++ b/Ruby/YAML.dump(..-file)-(Yd-).sublime-snippet @@ -0,0 +1,6 @@ + + + Yd- + source.ruby + YAML.dump(.., file) + diff --git a/Ruby/YAML.load(file)-(Yl-).sublime-snippet b/Ruby/YAML.load(file)-(Yl-).sublime-snippet new file mode 100644 index 0000000..2eda2f1 --- /dev/null +++ b/Ruby/YAML.load(file)-(Yl-).sublime-snippet @@ -0,0 +1,6 @@ + + + Yl- + source.ruby + YAML.load(file) + diff --git a/Ruby/alias_method-..-(am).sublime-snippet b/Ruby/alias_method-..-(am).sublime-snippet new file mode 100644 index 0000000..5cb876d --- /dev/null +++ b/Ruby/alias_method-..-(am).sublime-snippet @@ -0,0 +1,6 @@ + + + am + source.ruby + alias_method .. + diff --git a/Ruby/all-{-e-..-}-(all).sublime-snippet b/Ruby/all-{-e-..-}-(all).sublime-snippet new file mode 100644 index 0000000..737cb06 --- /dev/null +++ b/Ruby/all-{-e-..-}-(all).sublime-snippet @@ -0,0 +1,6 @@ + + + all + source.ruby + all? { |e| .. } + diff --git a/Ruby/any-{-e-..-}-(any).sublime-snippet b/Ruby/any-{-e-..-}-(any).sublime-snippet new file mode 100644 index 0000000..fe3b332 --- /dev/null +++ b/Ruby/any-{-e-..-}-(any).sublime-snippet @@ -0,0 +1,6 @@ + + + any + source.ruby + any? { |e| .. } + diff --git a/Ruby/application_code-..-(app).sublime-snippet b/Ruby/application_code-..-(app).sublime-snippet new file mode 100644 index 0000000..10740e6 --- /dev/null +++ b/Ruby/application_code-..-(app).sublime-snippet @@ -0,0 +1,8 @@ + + + app + source.ruby + application { .. } + diff --git a/Ruby/assert(..)-(as).sublime-snippet b/Ruby/assert(..)-(as).sublime-snippet new file mode 100644 index 0000000..6f15661 --- /dev/null +++ b/Ruby/assert(..)-(as).sublime-snippet @@ -0,0 +1,6 @@ + + + as + source.ruby + assert(..) + diff --git a/Ruby/assert_equal.sublime-snippet b/Ruby/assert_equal.sublime-snippet new file mode 100644 index 0000000..49d1663 --- /dev/null +++ b/Ruby/assert_equal.sublime-snippet @@ -0,0 +1,6 @@ + + + ase + source.ruby + assert_equal(..) + diff --git a/Ruby/assert_in_delta(..)-(asid).sublime-snippet b/Ruby/assert_in_delta(..)-(asid).sublime-snippet new file mode 100644 index 0000000..2b8b902 --- /dev/null +++ b/Ruby/assert_in_delta(..)-(asid).sublime-snippet @@ -0,0 +1,6 @@ + + + asid + source.ruby + assert_in_delta(..) + diff --git a/Ruby/assert_instance_of(..)-(asio).sublime-snippet b/Ruby/assert_instance_of(..)-(asio).sublime-snippet new file mode 100644 index 0000000..fd0ba6e --- /dev/null +++ b/Ruby/assert_instance_of(..)-(asio).sublime-snippet @@ -0,0 +1,6 @@ + + + asio + source.ruby + assert_instance_of(..) + diff --git a/Ruby/assert_kind_of(..)-(asko).sublime-snippet b/Ruby/assert_kind_of(..)-(asko).sublime-snippet new file mode 100644 index 0000000..6755a52 --- /dev/null +++ b/Ruby/assert_kind_of(..)-(asko).sublime-snippet @@ -0,0 +1,6 @@ + + + asko + source.ruby + assert_kind_of(..) + diff --git a/Ruby/assert_match(..)-(asm).sublime-snippet b/Ruby/assert_match(..)-(asm).sublime-snippet new file mode 100644 index 0000000..8418458 --- /dev/null +++ b/Ruby/assert_match(..)-(asm).sublime-snippet @@ -0,0 +1,6 @@ + + + asm + source.ruby + assert_match(..) + diff --git a/Ruby/assert_nil(..)-(asn).sublime-snippet b/Ruby/assert_nil(..)-(asn).sublime-snippet new file mode 100644 index 0000000..413ff76 --- /dev/null +++ b/Ruby/assert_nil(..)-(asn).sublime-snippet @@ -0,0 +1,6 @@ + + + asn + source.ruby + assert_nil(..) + diff --git a/Ruby/assert_no_match(..)-(asnm).sublime-snippet b/Ruby/assert_no_match(..)-(asnm).sublime-snippet new file mode 100644 index 0000000..f7f7416 --- /dev/null +++ b/Ruby/assert_no_match(..)-(asnm).sublime-snippet @@ -0,0 +1,6 @@ + + + asnm + source.ruby + assert_no_match(..) + diff --git a/Ruby/assert_not_equal(..)-(asne).sublime-snippet b/Ruby/assert_not_equal(..)-(asne).sublime-snippet new file mode 100644 index 0000000..4b5e161 --- /dev/null +++ b/Ruby/assert_not_equal(..)-(asne).sublime-snippet @@ -0,0 +1,6 @@ + + + asne + source.ruby + assert_not_equal(..) + diff --git a/Ruby/assert_not_nil(..)-(asnn).sublime-snippet b/Ruby/assert_not_nil(..)-(asnn).sublime-snippet new file mode 100644 index 0000000..ccabeaa --- /dev/null +++ b/Ruby/assert_not_nil(..)-(asnn).sublime-snippet @@ -0,0 +1,6 @@ + + + asnn + source.ruby + assert_not_nil(..) + diff --git a/Ruby/assert_not_same(..)-(asns).sublime-snippet b/Ruby/assert_not_same(..)-(asns).sublime-snippet new file mode 100644 index 0000000..495b60d --- /dev/null +++ b/Ruby/assert_not_same(..)-(asns).sublime-snippet @@ -0,0 +1,6 @@ + + + asns + source.ruby + assert_not_same(..) + diff --git a/Ruby/assert_nothing_raised(..)-{-..-}-(asnr).sublime-snippet b/Ruby/assert_nothing_raised(..)-{-..-}-(asnr).sublime-snippet new file mode 100644 index 0000000..baf6b0a --- /dev/null +++ b/Ruby/assert_nothing_raised(..)-{-..-}-(asnr).sublime-snippet @@ -0,0 +1,6 @@ + + + asnr + source.ruby + assert_nothing_raised(..) { .. } + diff --git a/Ruby/assert_nothing_thrown-{-..-}-(asnt).sublime-snippet b/Ruby/assert_nothing_thrown-{-..-}-(asnt).sublime-snippet new file mode 100644 index 0000000..6cf5c0d --- /dev/null +++ b/Ruby/assert_nothing_thrown-{-..-}-(asnt).sublime-snippet @@ -0,0 +1,6 @@ + + + asnt + source.ruby + assert_nothing_thrown { .. } + diff --git a/Ruby/assert_operator(..)-(aso).sublime-snippet b/Ruby/assert_operator(..)-(aso).sublime-snippet new file mode 100644 index 0000000..d2378e9 --- /dev/null +++ b/Ruby/assert_operator(..)-(aso).sublime-snippet @@ -0,0 +1,6 @@ + + + aso + source.ruby + assert_operator(..) + diff --git a/Ruby/assert_raise(..)-{-..-}-(asr).sublime-snippet b/Ruby/assert_raise(..)-{-..-}-(asr).sublime-snippet new file mode 100644 index 0000000..747b288 --- /dev/null +++ b/Ruby/assert_raise(..)-{-..-}-(asr).sublime-snippet @@ -0,0 +1,6 @@ + + + asr + source.ruby + assert_raise(..) { .. } + diff --git a/Ruby/assert_respond_to(..)-(asrt).sublime-snippet b/Ruby/assert_respond_to(..)-(asrt).sublime-snippet new file mode 100644 index 0000000..3b90e15 --- /dev/null +++ b/Ruby/assert_respond_to(..)-(asrt).sublime-snippet @@ -0,0 +1,6 @@ + + + asrt + source.ruby + assert_respond_to(..) + diff --git a/Ruby/assert_same(..)-(ass).sublime-snippet b/Ruby/assert_same(..)-(ass).sublime-snippet new file mode 100644 index 0000000..64aa680 --- /dev/null +++ b/Ruby/assert_same(..)-(ass).sublime-snippet @@ -0,0 +1,6 @@ + + + ass + source.ruby + assert_same(..) + diff --git a/Ruby/assert_send(..)-(ass).sublime-snippet b/Ruby/assert_send(..)-(ass).sublime-snippet new file mode 100644 index 0000000..48c2bc5 --- /dev/null +++ b/Ruby/assert_send(..)-(ass).sublime-snippet @@ -0,0 +1,6 @@ + + + ass + source.ruby + assert_send(..) + diff --git a/Ruby/assert_throws(..)-{-..-}-(ast).sublime-snippet b/Ruby/assert_throws(..)-{-..-}-(ast).sublime-snippet new file mode 100644 index 0000000..fae4a9a --- /dev/null +++ b/Ruby/assert_throws(..)-{-..-}-(ast).sublime-snippet @@ -0,0 +1,6 @@ + + + ast + source.ruby + assert_throws(..) { .. } + diff --git a/Ruby/attr_accessor-..-(rw).sublime-snippet b/Ruby/attr_accessor-..-(rw).sublime-snippet new file mode 100644 index 0000000..da88ef2 --- /dev/null +++ b/Ruby/attr_accessor-..-(rw).sublime-snippet @@ -0,0 +1,6 @@ + + + rw + source.ruby + attr_accessor .. + diff --git a/Ruby/attr_reader-..-(r).sublime-snippet b/Ruby/attr_reader-..-(r).sublime-snippet new file mode 100644 index 0000000..c075b74 --- /dev/null +++ b/Ruby/attr_reader-..-(r).sublime-snippet @@ -0,0 +1,6 @@ + + + r + source.ruby + attr_reader .. + diff --git a/Ruby/attr_writer-..-(w).sublime-snippet b/Ruby/attr_writer-..-(w).sublime-snippet new file mode 100644 index 0000000..28a5817 --- /dev/null +++ b/Ruby/attr_writer-..-(w).sublime-snippet @@ -0,0 +1,6 @@ + + + w + source.ruby + attr_writer .. + diff --git a/Ruby/class-..-DelegateClass-..-initialize-..-end-(class).sublime-snippet b/Ruby/class-..-DelegateClass-..-initialize-..-end-(class).sublime-snippet new file mode 100644 index 0000000..1b7c10c --- /dev/null +++ b/Ruby/class-..-DelegateClass-..-initialize-..-end-(class).sublime-snippet @@ -0,0 +1,14 @@ + + + cla- + source.ruby + class .. < DelegateClass .. initialize .. end + diff --git a/Ruby/class-..-ParentClass-..-initialize-..-end.sublime-snippet b/Ruby/class-..-ParentClass-..-initialize-..-end.sublime-snippet new file mode 100644 index 0000000..f758697 --- /dev/null +++ b/Ruby/class-..-ParentClass-..-initialize-..-end.sublime-snippet @@ -0,0 +1,12 @@ + + + cla + source.ruby + class .. < ParentClass .. initialize .. end + diff --git a/Ruby/class-..-Struct-..-initialize-..-end.sublime-snippet b/Ruby/class-..-Struct-..-initialize-..-end.sublime-snippet new file mode 100644 index 0000000..b190f8d --- /dev/null +++ b/Ruby/class-..-Struct-..-initialize-..-end.sublime-snippet @@ -0,0 +1,12 @@ + + + cla + source.ruby + ClassName = Struct .. do .. end + diff --git a/Ruby/class-..-Test;;Unit;;TestCase-..-end-(tc).sublime-snippet b/Ruby/class-..-Test;;Unit;;TestCase-..-end-(tc).sublime-snippet new file mode 100644 index 0000000..0db17d7 --- /dev/null +++ b/Ruby/class-..-Test;;Unit;;TestCase-..-end-(tc).sublime-snippet @@ -0,0 +1,14 @@ + + + tc + source.ruby + class .. < Test::Unit::TestCase .. end + diff --git a/Ruby/class-..-end-(cla).sublime-snippet b/Ruby/class-..-end-(cla).sublime-snippet new file mode 100644 index 0000000..f67f651 --- /dev/null +++ b/Ruby/class-..-end-(cla).sublime-snippet @@ -0,0 +1,8 @@ + + + cla + source.ruby + class .. end + diff --git a/Ruby/class-..-initialize-..-end.sublime-snippet b/Ruby/class-..-initialize-..-end.sublime-snippet new file mode 100644 index 0000000..5f32f8b --- /dev/null +++ b/Ruby/class-..-initialize-..-end.sublime-snippet @@ -0,0 +1,12 @@ + + + cla + source.ruby + class .. initialize .. end + diff --git a/Ruby/class-..-instance_methods-..-undef-..-initialize-..-end-(class).sublime-snippet b/Ruby/class-..-instance_methods-..-undef-..-initialize-..-end-(class).sublime-snippet new file mode 100644 index 0000000..2c2b64a --- /dev/null +++ b/Ruby/class-..-instance_methods-..-undef-..-initialize-..-end-(class).sublime-snippet @@ -0,0 +1,20 @@ + + + cla + source.ruby + class BlankSlate .. initialize .. end + diff --git a/Ruby/class-self-__-end.sublime-snippet b/Ruby/class-self-__-end.sublime-snippet new file mode 100644 index 0000000..a6ecc7c --- /dev/null +++ b/Ruby/class-self-__-end.sublime-snippet @@ -0,0 +1,8 @@ + + + cla + source.ruby + class << self .. end + diff --git a/Ruby/class_from_name()-(clafn).sublime-snippet b/Ruby/class_from_name()-(clafn).sublime-snippet new file mode 100644 index 0000000..dfb9004 --- /dev/null +++ b/Ruby/class_from_name()-(clafn).sublime-snippet @@ -0,0 +1,6 @@ + + + clafn + source.ruby + class_from_name() + diff --git a/Ruby/classify-{-e-..-}-(clas).sublime-snippet b/Ruby/classify-{-e-..-}-(clas).sublime-snippet new file mode 100644 index 0000000..0b91a57 --- /dev/null +++ b/Ruby/classify-{-e-..-}-(clas).sublime-snippet @@ -0,0 +1,6 @@ + + + cl + source.ruby + classify { |e| .. } + diff --git a/Ruby/collect-{-e-..-}-(col).sublime-snippet b/Ruby/collect-{-e-..-}-(col).sublime-snippet new file mode 100644 index 0000000..c924446 --- /dev/null +++ b/Ruby/collect-{-e-..-}-(col).sublime-snippet @@ -0,0 +1,6 @@ + + + col + source.ruby + collect { |e| .. } + diff --git a/Ruby/deep_copy(..)-(dee).sublime-snippet b/Ruby/deep_copy(..)-(dee).sublime-snippet new file mode 100644 index 0000000..b709b16 --- /dev/null +++ b/Ruby/deep_copy(..)-(dee).sublime-snippet @@ -0,0 +1,6 @@ + + + deec + source.ruby + deep_copy(..) + diff --git a/Ruby/def-end.sublime-snippet b/Ruby/def-end.sublime-snippet new file mode 100644 index 0000000..3b67e64 --- /dev/null +++ b/Ruby/def-end.sublime-snippet @@ -0,0 +1,8 @@ + + + def + source.ruby + def … end + diff --git a/Ruby/def-method_missing-..-end-(mm).sublime-snippet b/Ruby/def-method_missing-..-end-(mm).sublime-snippet new file mode 100644 index 0000000..892657f --- /dev/null +++ b/Ruby/def-method_missing-..-end-(mm).sublime-snippet @@ -0,0 +1,8 @@ + + + defmm + source.ruby + def method_missing .. end + diff --git a/Ruby/def-self-..-end-(defs).sublime-snippet b/Ruby/def-self-..-end-(defs).sublime-snippet new file mode 100644 index 0000000..42c5449 --- /dev/null +++ b/Ruby/def-self-..-end-(defs).sublime-snippet @@ -0,0 +1,8 @@ + + + defs + source.ruby + def self .. end + diff --git a/Ruby/def-test_-..-end-(t).sublime-snippet b/Ruby/def-test_-..-end-(t).sublime-snippet new file mode 100644 index 0000000..ec19c4b --- /dev/null +++ b/Ruby/def-test_-..-end-(t).sublime-snippet @@ -0,0 +1,8 @@ + + + deft + source.ruby + def test_ .. end + diff --git a/Ruby/def_delegator-..-(defd).sublime-snippet b/Ruby/def_delegator-..-(defd).sublime-snippet new file mode 100644 index 0000000..9695dce --- /dev/null +++ b/Ruby/def_delegator-..-(defd).sublime-snippet @@ -0,0 +1,6 @@ + + + defd + source.ruby + def_delegator .. + diff --git a/Ruby/def_delegators-..-(defds).sublime-snippet b/Ruby/def_delegators-..-(defds).sublime-snippet new file mode 100644 index 0000000..dfc64c2 --- /dev/null +++ b/Ruby/def_delegators-..-(defds).sublime-snippet @@ -0,0 +1,6 @@ + + + defds + source.ruby + def_delegators .. + diff --git a/Ruby/delete_if-{-e-..-}-(deli).sublime-snippet b/Ruby/delete_if-{-e-..-}-(deli).sublime-snippet new file mode 100644 index 0000000..d4809ba --- /dev/null +++ b/Ruby/delete_if-{-e-..-}-(deli).sublime-snippet @@ -0,0 +1,6 @@ + + + deli + source.ruby + delete_if { |e| .. } + diff --git a/Ruby/detect-{-e-..-}-(det).sublime-snippet b/Ruby/detect-{-e-..-}-(det).sublime-snippet new file mode 100644 index 0000000..f1a2bf9 --- /dev/null +++ b/Ruby/detect-{-e-..-}-(det).sublime-snippet @@ -0,0 +1,6 @@ + + + det + source.ruby + detect { |e| .. } + diff --git a/Ruby/directory().sublime-snippet b/Ruby/directory().sublime-snippet new file mode 100644 index 0000000..bec9cd8 --- /dev/null +++ b/Ruby/directory().sublime-snippet @@ -0,0 +1,6 @@ + + + dir + source.ruby + directory() + diff --git a/Ruby/do-obj-..-end-(doo).sublime-snippet b/Ruby/do-obj-..-end-(doo).sublime-snippet new file mode 100644 index 0000000..9502de8 --- /dev/null +++ b/Ruby/do-obj-..-end-(doo).sublime-snippet @@ -0,0 +1,8 @@ + + + dob + source.ruby + Insert do |variable| … end + diff --git a/Ruby/downto(0)-{-n-..-}-(dow).sublime-snippet b/Ruby/downto(0)-{-n-..-}-(dow).sublime-snippet new file mode 100644 index 0000000..311a5af --- /dev/null +++ b/Ruby/downto(0)-{-n-..-}-(dow).sublime-snippet @@ -0,0 +1,6 @@ + + \s*(?:\*|\*?[a-z_])[a-zA-Z0-9_]*\s*)(,\g)*,?\s*$)|.*/(?1:|)/}${2:n}${2/(^(?\s*(?:\*|\*?[a-z_])[a-zA-Z0-9_]*\s*)(,\g)*,?\s*$)|.*/(?1:| )/}$0 }]]> + dow + source.ruby + downto(0) { |n| .. } + diff --git a/Ruby/each-{-e-..-}-(ea).sublime-snippet b/Ruby/each-{-e-..-}-(ea).sublime-snippet new file mode 100644 index 0000000..b618903 --- /dev/null +++ b/Ruby/each-{-e-..-}-(ea).sublime-snippet @@ -0,0 +1,6 @@ + + + ea + source.ruby + each { |e| .. } + diff --git a/Ruby/each_byte-{-byte-..-}-(eab).sublime-snippet b/Ruby/each_byte-{-byte-..-}-(eab).sublime-snippet new file mode 100644 index 0000000..96fe2a1 --- /dev/null +++ b/Ruby/each_byte-{-byte-..-}-(eab).sublime-snippet @@ -0,0 +1,6 @@ + + + eab + source.ruby + each_byte { |byte| .. } + diff --git a/Ruby/each_char-{-chr-..-}-(eac-).sublime-snippet b/Ruby/each_char-{-chr-..-}-(eac-).sublime-snippet new file mode 100644 index 0000000..33e3874 --- /dev/null +++ b/Ruby/each_char-{-chr-..-}-(eac-).sublime-snippet @@ -0,0 +1,6 @@ + + + eac- + source.ruby + each_char { |chr| .. } + diff --git a/Ruby/each_cons(..)-{-group-..-}-(eac-).sublime-snippet b/Ruby/each_cons(..)-{-group-..-}-(eac-).sublime-snippet new file mode 100644 index 0000000..7b3c669 --- /dev/null +++ b/Ruby/each_cons(..)-{-group-..-}-(eac-).sublime-snippet @@ -0,0 +1,6 @@ + + + eac- + source.ruby + each_cons(..) { |group| .. } + diff --git a/Ruby/each_index-{-i-..-}-(eai).sublime-snippet b/Ruby/each_index-{-i-..-}-(eai).sublime-snippet new file mode 100644 index 0000000..391f900 --- /dev/null +++ b/Ruby/each_index-{-i-..-}-(eai).sublime-snippet @@ -0,0 +1,6 @@ + + + eai + source.ruby + each_index { |i| .. } + diff --git a/Ruby/each_key-{-key-..-}-(eak).sublime-snippet b/Ruby/each_key-{-key-..-}-(eak).sublime-snippet new file mode 100644 index 0000000..ffdce0e --- /dev/null +++ b/Ruby/each_key-{-key-..-}-(eak).sublime-snippet @@ -0,0 +1,6 @@ + + + eak + source.ruby + each_key { |key| .. } + diff --git a/Ruby/each_line-{-line-..-}-(eal).sublime-snippet b/Ruby/each_line-{-line-..-}-(eal).sublime-snippet new file mode 100644 index 0000000..70d129b --- /dev/null +++ b/Ruby/each_line-{-line-..-}-(eal).sublime-snippet @@ -0,0 +1,6 @@ + + + eal + source.ruby + each_line { |line| .. } + diff --git a/Ruby/each_pair-{-name-val-..-}-(eap).sublime-snippet b/Ruby/each_pair-{-name-val-..-}-(eap).sublime-snippet new file mode 100644 index 0000000..d7866d1 --- /dev/null +++ b/Ruby/each_pair-{-name-val-..-}-(eap).sublime-snippet @@ -0,0 +1,6 @@ + + + eap + source.ruby + each_pair { |name, val| .. } + diff --git a/Ruby/each_slice-{-group-..-}-(eas).sublime-snippet b/Ruby/each_slice-{-group-..-}-(eas).sublime-snippet new file mode 100644 index 0000000..042286b --- /dev/null +++ b/Ruby/each_slice-{-group-..-}-(eas).sublime-snippet @@ -0,0 +1,6 @@ + + + eas- + source.ruby + each_slice(..) { |group| .. } + diff --git a/Ruby/each_value-{-val-..-}-(eav).sublime-snippet b/Ruby/each_value-{-val-..-}-(eav).sublime-snippet new file mode 100644 index 0000000..91150ad --- /dev/null +++ b/Ruby/each_value-{-val-..-}-(eav).sublime-snippet @@ -0,0 +1,6 @@ + + + eav + source.ruby + each_value { |val| .. } + diff --git a/Ruby/each_with_index-{-e-i-..-}-(eawi).sublime-snippet b/Ruby/each_with_index-{-e-i-..-}-(eawi).sublime-snippet new file mode 100644 index 0000000..e19b706 --- /dev/null +++ b/Ruby/each_with_index-{-e-i-..-}-(eawi).sublime-snippet @@ -0,0 +1,6 @@ + + + eawi + source.ruby + each_with_index { |e, i| .. } + diff --git a/Ruby/elsif-___.sublime-snippet b/Ruby/elsif-___.sublime-snippet new file mode 100644 index 0000000..bcbccae --- /dev/null +++ b/Ruby/elsif-___.sublime-snippet @@ -0,0 +1,7 @@ + + + elsif + source.ruby + elsif ... + diff --git a/Ruby/extend-Forwardable-(Forw).sublime-snippet b/Ruby/extend-Forwardable-(Forw).sublime-snippet new file mode 100644 index 0000000..4b95a56 --- /dev/null +++ b/Ruby/extend-Forwardable-(Forw).sublime-snippet @@ -0,0 +1,6 @@ + + + Forw- + source.ruby + extend Forwardable + diff --git a/Ruby/fetch(name)-{-key-..-}-(fet).sublime-snippet b/Ruby/fetch(name)-{-key-..-}-(fet).sublime-snippet new file mode 100644 index 0000000..660c899 --- /dev/null +++ b/Ruby/fetch(name)-{-key-..-}-(fet).sublime-snippet @@ -0,0 +1,6 @@ + + \s*(?:\*|\*?[a-z_])[a-zA-Z0-9_]*\s*)(,\g)*,?\s*$)|.*/(?1:|)/}${2:key}${2/(^(?\s*(?:\*|\*?[a-z_])[a-zA-Z0-9_]*\s*)(,\g)*,?\s*$)|.*/(?1:| )/}$0 }]]> + fet + source.ruby + fetch(name) { |key| .. } + diff --git a/Ruby/fill(range)-{-i-..-}-(fil).sublime-snippet b/Ruby/fill(range)-{-i-..-}-(fil).sublime-snippet new file mode 100644 index 0000000..55bdc0b --- /dev/null +++ b/Ruby/fill(range)-{-i-..-}-(fil).sublime-snippet @@ -0,0 +1,6 @@ + + \s*(?:\*|\*?[a-z_])[a-zA-Z0-9_]*\s*)(,\g)*,?\s*$)|.*/(?1:|)/}${2:i}${2/(^(?\s*(?:\*|\*?[a-z_])[a-zA-Z0-9_]*\s*)(,\g)*,?\s*$)|.*/(?1:| )/}$0 }]]> + fil + source.ruby + fill(range) { |i| .. } + diff --git a/Ruby/find-{-e-..-}-(fin).sublime-snippet b/Ruby/find-{-e-..-}-(fin).sublime-snippet new file mode 100644 index 0000000..0862bc9 --- /dev/null +++ b/Ruby/find-{-e-..-}-(fin).sublime-snippet @@ -0,0 +1,6 @@ + + + fin + source.ruby + find { |e| .. } + diff --git a/Ruby/find_all-{-e-..-}-(fina).sublime-snippet b/Ruby/find_all-{-e-..-}-(fina).sublime-snippet new file mode 100644 index 0000000..aaf08ab --- /dev/null +++ b/Ruby/find_all-{-e-..-}-(fina).sublime-snippet @@ -0,0 +1,6 @@ + + + fina + source.ruby + find_all { |e| .. } + diff --git a/Ruby/flatten_once-(fla).sublime-snippet b/Ruby/flatten_once-(fla).sublime-snippet new file mode 100644 index 0000000..0f09b31 --- /dev/null +++ b/Ruby/flatten_once-(fla).sublime-snippet @@ -0,0 +1,6 @@ + + + flao + source.ruby + flatten_once() + diff --git a/Ruby/flunk(..)-(fl).sublime-snippet b/Ruby/flunk(..)-(fl).sublime-snippet new file mode 100644 index 0000000..ea8128e --- /dev/null +++ b/Ruby/flunk(..)-(fl).sublime-snippet @@ -0,0 +1,6 @@ + + + fl + source.ruby + flunk(..) + diff --git a/Ruby/grep(;pattern;)-{-match-..-}-(gre).sublime-snippet b/Ruby/grep(;pattern;)-{-match-..-}-(gre).sublime-snippet new file mode 100644 index 0000000..5d98dc7 --- /dev/null +++ b/Ruby/grep(;pattern;)-{-match-..-}-(gre).sublime-snippet @@ -0,0 +1,6 @@ + + + gre + source.ruby + grep(/pattern/) { |match| .. } + diff --git a/Ruby/gsub(;..;)-{-match-..-}-(gsu).sublime-snippet b/Ruby/gsub(;..;)-{-match-..-}-(gsu).sublime-snippet new file mode 100644 index 0000000..3c0ad13 --- /dev/null +++ b/Ruby/gsub(;..;)-{-match-..-}-(gsu).sublime-snippet @@ -0,0 +1,6 @@ + + \s*(?:\*|\*?[a-z_])[a-zA-Z0-9_]*\s*)(,\g)*,?\s*$)|.*/(?1:|)/}${2:match}${2/(^(?\s*(?:\*|\*?[a-z_])[a-zA-Z0-9_]*\s*)(,\g)*,?\s*$)|.*/(?1:| )/}$0 }]]> + gsu + source.ruby + gsub(/../) { |match| .. } + diff --git a/Ruby/hash-pair-(-).sublime-snippet b/Ruby/hash-pair-(-).sublime-snippet new file mode 100644 index 0000000..d2e3b99 --- /dev/null +++ b/Ruby/hash-pair-(-).sublime-snippet @@ -0,0 +1,6 @@ + + ${2:"${3:value}"}${4:, }]]> + : + source.ruby + Hash Pair — :key => "value" + diff --git a/Ruby/include-Comparable-..-(Comp).sublime-snippet b/Ruby/include-Comparable-..-(Comp).sublime-snippet new file mode 100644 index 0000000..76571d9 --- /dev/null +++ b/Ruby/include-Comparable-..-(Comp).sublime-snippet @@ -0,0 +1,10 @@ + + (other) + $0 +end]]> + Comp + source.ruby + include Comparable .. + diff --git a/Ruby/include-Enumerable-..-(Enum).sublime-snippet b/Ruby/include-Enumerable-..-(Enum).sublime-snippet new file mode 100644 index 0000000..07bd891 --- /dev/null +++ b/Ruby/include-Enumerable-..-(Enum).sublime-snippet @@ -0,0 +1,10 @@ + + + Enum + source.ruby + include Enumerable .. + diff --git a/Ruby/inject(init)-{-mem-var-..-}-(inj).sublime-snippet b/Ruby/inject(init)-{-mem-var-..-}-(inj).sublime-snippet new file mode 100644 index 0000000..8d599a4 --- /dev/null +++ b/Ruby/inject(init)-{-mem-var-..-}-(inj).sublime-snippet @@ -0,0 +1,6 @@ + + + inj + source.ruby + inject(init) { |mem, var| .. } + diff --git a/Ruby/lambda-{-args-..-}-(lam).sublime-snippet b/Ruby/lambda-{-args-..-}-(lam).sublime-snippet new file mode 100644 index 0000000..3580f2c --- /dev/null +++ b/Ruby/lambda-{-args-..-}-(lam).sublime-snippet @@ -0,0 +1,6 @@ + + \s*(?:\*|\*?[a-z_])[a-zA-Z0-9_]*\s*)(,\g)*,?\s*$)|.*/(?1:|)/}${1:args}${1/(^(?\s*(?:\*|\*?[a-z_])[a-zA-Z0-9_]*\s*)(,\g)*,?\s*$)|.*/(?1:| )/}$0 }]]> + lam + source.ruby + lambda { |args| .. } + diff --git a/Ruby/loop-{-__-}.sublime-snippet b/Ruby/loop-{-__-}.sublime-snippet new file mode 100644 index 0000000..c6c60fe --- /dev/null +++ b/Ruby/loop-{-__-}.sublime-snippet @@ -0,0 +1,6 @@ + + + loo + source.ruby + loop { .. } + diff --git a/Ruby/map-{-e-..-}-(map).sublime-snippet b/Ruby/map-{-e-..-}-(map).sublime-snippet new file mode 100644 index 0000000..0e78dbf --- /dev/null +++ b/Ruby/map-{-e-..-}-(map).sublime-snippet @@ -0,0 +1,6 @@ + + + map + source.ruby + map { |e| .. } + diff --git a/Ruby/map_with_index-{-e-i-..-}-(mapwi).sublime-snippet b/Ruby/map_with_index-{-e-i-..-}-(mapwi).sublime-snippet new file mode 100644 index 0000000..ee9c739 --- /dev/null +++ b/Ruby/map_with_index-{-e-i-..-}-(mapwi).sublime-snippet @@ -0,0 +1,6 @@ + + + mapwi- + source.ruby + map_with_index { |e, i| .. } + diff --git a/Ruby/max-{-a-b-..-}-(max).sublime-snippet b/Ruby/max-{-a-b-..-}-(max).sublime-snippet new file mode 100644 index 0000000..aa57eee --- /dev/null +++ b/Ruby/max-{-a-b-..-}-(max).sublime-snippet @@ -0,0 +1,6 @@ + + + max + source.ruby + max { |a, b| .. } + diff --git a/Ruby/min-{-a-b-..-}-(min).sublime-snippet b/Ruby/min-{-a-b-..-}-(min).sublime-snippet new file mode 100644 index 0000000..35ebc07 --- /dev/null +++ b/Ruby/min-{-a-b-..-}-(min).sublime-snippet @@ -0,0 +1,6 @@ + + + min + source.ruby + min { |a, b| .. } + diff --git a/Ruby/module-..-ClassMethods-..-end.sublime-snippet b/Ruby/module-..-ClassMethods-..-end.sublime-snippet new file mode 100644 index 0000000..e3d73a6 --- /dev/null +++ b/Ruby/module-..-ClassMethods-..-end.sublime-snippet @@ -0,0 +1,19 @@ + + + mod + source.ruby + module .. ClassMethods .. end + diff --git a/Ruby/module-..-end.sublime-snippet b/Ruby/module-..-end.sublime-snippet new file mode 100644 index 0000000..95e007d --- /dev/null +++ b/Ruby/module-..-end.sublime-snippet @@ -0,0 +1,8 @@ + + + mod + source.ruby + module .. end + diff --git a/Ruby/module-..-module_function-..-end.sublime-snippet b/Ruby/module-..-module_function-..-end.sublime-snippet new file mode 100644 index 0000000..138110d --- /dev/null +++ b/Ruby/module-..-module_function-..-end.sublime-snippet @@ -0,0 +1,10 @@ + + + mod + source.ruby + module .. module_function .. end + diff --git a/Ruby/namespace-__-do-__-end.sublime-snippet b/Ruby/namespace-__-do-__-end.sublime-snippet new file mode 100644 index 0000000..848183b --- /dev/null +++ b/Ruby/namespace-__-do-__-end.sublime-snippet @@ -0,0 +1,8 @@ + + + nam + source.ruby + namespace :.. do .. end + diff --git a/Ruby/open(-path;or;url-w-)-do-doc-..-end-(ope).sublime-snippet b/Ruby/open(-path;or;url-w-)-do-doc-..-end-(ope).sublime-snippet new file mode 100644 index 0000000..2866c1e --- /dev/null +++ b/Ruby/open(-path;or;url-w-)-do-doc-..-end-(ope).sublime-snippet @@ -0,0 +1,6 @@ + + + ope + source.ruby + open("path/or/url", "w") { |io| .. } + diff --git a/Ruby/open-yield-block-({).sublime-snippet b/Ruby/open-yield-block-({).sublime-snippet new file mode 100644 index 0000000..9dca87b --- /dev/null +++ b/Ruby/open-yield-block-({).sublime-snippet @@ -0,0 +1,6 @@ + + \s*[a-z_][a-zA-Z0-9_]*\s*)(,\g)*,?\s*$)|.*/(?1:|)/}${1:variable}${1/(^(?\s*[a-z_][a-zA-Z0-9_]*\s*)(,\g)*,?\s*$)|.*/(?1:| )/}${2:$TM_SELECTED_TEXT} ]]> + { + source.ruby - string - comment + Insert { |variable| … } + diff --git a/Ruby/option_parse-{-..-}-(optp).sublime-snippet b/Ruby/option_parse-{-..-}-(optp).sublime-snippet new file mode 100644 index 0000000..a6c7cdb --- /dev/null +++ b/Ruby/option_parse-{-..-}-(optp).sublime-snippet @@ -0,0 +1,33 @@ + + "args"}} + +ARGV.options do |opts| + opts.banner = "Usage: #{File.basename(\$PROGRAM_NAME)} [OPTIONS]${2/^\s*$|(.*\S.*)/(?1: )/}${2:OTHER_ARGS}" + + opts.separator "" + opts.separator "Specific Options:" + + $0 + + opts.separator "Common Options:" + + opts.on( "-h", "--help", + "Show this message." ) do + puts opts + exit + end + + begin + opts.parse! + rescue + puts opts + exit + end +end +]]> + optp + source.ruby + option_parse { .. } + diff --git a/Ruby/partition-{-e-..-}-(par).sublime-snippet b/Ruby/partition-{-e-..-}-(par).sublime-snippet new file mode 100644 index 0000000..948ae59 --- /dev/null +++ b/Ruby/partition-{-e-..-}-(par).sublime-snippet @@ -0,0 +1,6 @@ + + + par + source.ruby + partition { |e| .. } + diff --git a/Ruby/path_from_here(-__-).sublime-snippet b/Ruby/path_from_here(-__-).sublime-snippet new file mode 100644 index 0000000..8d4bbae --- /dev/null +++ b/Ruby/path_from_here(-__-).sublime-snippet @@ -0,0 +1,6 @@ + + + patfh + source.ruby + path_from_here( .. ) + diff --git a/Ruby/randomize-(ran).sublime-snippet b/Ruby/randomize-(ran).sublime-snippet new file mode 100644 index 0000000..ba966d1 --- /dev/null +++ b/Ruby/randomize-(ran).sublime-snippet @@ -0,0 +1,6 @@ + + + ran + source.ruby + randomize() + diff --git a/Ruby/reject-{-e-..-}-(rej).sublime-snippet b/Ruby/reject-{-e-..-}-(rej).sublime-snippet new file mode 100644 index 0000000..7027421 --- /dev/null +++ b/Ruby/reject-{-e-..-}-(rej).sublime-snippet @@ -0,0 +1,6 @@ + + + rej + source.ruby + reject { |e| .. } + diff --git a/Ruby/require-..-(req).sublime-snippet b/Ruby/require-..-(req).sublime-snippet new file mode 100644 index 0000000..9837ec1 --- /dev/null +++ b/Ruby/require-..-(req).sublime-snippet @@ -0,0 +1,6 @@ + + + req + source.ruby + require ".." + diff --git a/Ruby/require-tc_..-..-(ts).sublime-snippet b/Ruby/require-tc_..-..-(ts).sublime-snippet new file mode 100644 index 0000000..ceec9ac --- /dev/null +++ b/Ruby/require-tc_..-..-(ts).sublime-snippet @@ -0,0 +1,10 @@ + + + ts + source.ruby + require "tc_.." .. + diff --git a/Ruby/require_gem-__.sublime-snippet b/Ruby/require_gem-__.sublime-snippet new file mode 100644 index 0000000..39f94ff --- /dev/null +++ b/Ruby/require_gem-__.sublime-snippet @@ -0,0 +1,6 @@ + + + reqg- + source.ruby + require_gem ".." + diff --git a/Ruby/results_report(__)-{-__-}.sublime-snippet b/Ruby/results_report(__)-{-__-}.sublime-snippet new file mode 100644 index 0000000..2e068cb --- /dev/null +++ b/Ruby/results_report(__)-{-__-}.sublime-snippet @@ -0,0 +1,6 @@ + + + rep + source.ruby + results.report(..) { .. } + diff --git a/Ruby/reverse_each-{-e-..-}-(rea).sublime-snippet b/Ruby/reverse_each-{-e-..-}-(rea).sublime-snippet new file mode 100644 index 0000000..c2e562f --- /dev/null +++ b/Ruby/reverse_each-{-e-..-}-(rea).sublime-snippet @@ -0,0 +1,6 @@ + + + reve + source.ruby + reverse_each { |e| .. } + diff --git a/Ruby/scan(;..;)-{-match-..-}-(sca).sublime-snippet b/Ruby/scan(;..;)-{-match-..-}-(sca).sublime-snippet new file mode 100644 index 0000000..3768518 --- /dev/null +++ b/Ruby/scan(;..;)-{-match-..-}-(sca).sublime-snippet @@ -0,0 +1,6 @@ + + + sca + source.ruby + scan(/../) { |match| .. } + diff --git a/Ruby/select-{-e-..-}-(sel).sublime-snippet b/Ruby/select-{-e-..-}-(sel).sublime-snippet new file mode 100644 index 0000000..bed5edb --- /dev/null +++ b/Ruby/select-{-e-..-}-(sel).sublime-snippet @@ -0,0 +1,6 @@ + + + sel + source.ruby + select { |e| .. } + diff --git a/Ruby/singleton_class().sublime-snippet b/Ruby/singleton_class().sublime-snippet new file mode 100644 index 0000000..8d91e02 --- /dev/null +++ b/Ruby/singleton_class().sublime-snippet @@ -0,0 +1,6 @@ + + + sinc + source.ruby + singleton_class() + diff --git a/Ruby/sort-{-a-b-..-}-(sor).sublime-snippet b/Ruby/sort-{-a-b-..-}-(sor).sublime-snippet new file mode 100644 index 0000000..ea3e1de --- /dev/null +++ b/Ruby/sort-{-a-b-..-}-(sor).sublime-snippet @@ -0,0 +1,6 @@ + + + sor + source.ruby + sort { |a, b| .. } + diff --git a/Ruby/sort_by-{-e-..-}-(sorb).sublime-snippet b/Ruby/sort_by-{-e-..-}-(sorb).sublime-snippet new file mode 100644 index 0000000..fbc21e5 --- /dev/null +++ b/Ruby/sort_by-{-e-..-}-(sorb).sublime-snippet @@ -0,0 +1,6 @@ + + + sorb + source.ruby + sort_by { |e| .. } + diff --git a/Ruby/step(2)-{-e-..-}-(ste).sublime-snippet b/Ruby/step(2)-{-e-..-}-(ste).sublime-snippet new file mode 100644 index 0000000..2cbc97b --- /dev/null +++ b/Ruby/step(2)-{-e-..-}-(ste).sublime-snippet @@ -0,0 +1,6 @@ + + \s*(?:\*|\*?[a-z_])[a-zA-Z0-9_]*\s*)(,\g)*,?\s*$)|.*/(?1:|)/}${2:n}${2/(^(?\s*(?:\*|\*?[a-z_])[a-zA-Z0-9_]*\s*)(,\g)*,?\s*$)|.*/(?1:| )/}$0 }]]> + ste + source.ruby + step(2) { |e| .. } + diff --git a/Ruby/sub(;..;)-{-match-..-}-(sub).sublime-snippet b/Ruby/sub(;..;)-{-match-..-}-(sub).sublime-snippet new file mode 100644 index 0000000..0f1be89 --- /dev/null +++ b/Ruby/sub(;..;)-{-match-..-}-(sub).sublime-snippet @@ -0,0 +1,6 @@ + + \s*(?:\*|\*?[a-z_])[a-zA-Z0-9_]*\s*)(,\g)*,?\s*$)|.*/(?1:|)/}${2:match}${2/(^(?\s*(?:\*|\*?[a-z_])[a-zA-Z0-9_]*\s*)(,\g)*,?\s*$)|.*/(?1:| )/}$0 }]]> + sub + source.ruby + sub(/../) { |match| .. } + diff --git a/Ruby/task-task_name-=-[-dependent-tasks]-do-__-end.sublime-snippet b/Ruby/task-task_name-=-[-dependent-tasks]-do-__-end.sublime-snippet new file mode 100644 index 0000000..c8f69df --- /dev/null +++ b/Ruby/task-task_name-=-[-dependent-tasks]-do-__-end.sublime-snippet @@ -0,0 +1,9 @@ + + ${4:[:${5:dependent, :tasks}]}} do + $0 +end]]> + tas + source.ruby + task :task_name => [:dependent, :tasks] do .. end + diff --git a/Ruby/times-{-n-..-}-(tim).sublime-snippet b/Ruby/times-{-n-..-}-(tim).sublime-snippet new file mode 100644 index 0000000..aee0ba4 --- /dev/null +++ b/Ruby/times-{-n-..-}-(tim).sublime-snippet @@ -0,0 +1,6 @@ + + \s*(?:\*|\*?[a-z_])[a-zA-Z0-9_]*\s*)(,\g)*,?\s*$)|.*/(?1:|)/}${1:n}${1/(^(?\s*(?:\*|\*?[a-z_])[a-zA-Z0-9_]*\s*)(,\g)*,?\s*$)|.*/(?1:| )/}$0 }]]> + tim + source.ruby + times { |n| .. } + diff --git a/Ruby/transaction(-__-)-do-__-end.sublime-snippet b/Ruby/transaction(-__-)-do-__-end.sublime-snippet new file mode 100644 index 0000000..2861b57 --- /dev/null +++ b/Ruby/transaction(-__-)-do-__-end.sublime-snippet @@ -0,0 +1,6 @@ + + + tra + source.ruby + transaction( .. ) { .. } + diff --git a/Ruby/unix_filter-..-(uni).sublime-snippet b/Ruby/unix_filter-..-(uni).sublime-snippet new file mode 100644 index 0000000..be7b32f --- /dev/null +++ b/Ruby/unix_filter-..-(uni).sublime-snippet @@ -0,0 +1,8 @@ + + + unif + source.ruby + unix_filter { .. } + diff --git a/Ruby/unless-(unless).sublime-snippet b/Ruby/unless-(unless).sublime-snippet new file mode 100644 index 0000000..3c6deba --- /dev/null +++ b/Ruby/unless-(unless).sublime-snippet @@ -0,0 +1,8 @@ + + + unless + source.ruby + unless … end + diff --git a/Ruby/until-___-end.sublime-snippet b/Ruby/until-___-end.sublime-snippet new file mode 100644 index 0000000..8fbdba6 --- /dev/null +++ b/Ruby/until-___-end.sublime-snippet @@ -0,0 +1,8 @@ + + + until + source.ruby + until ... end + diff --git a/Ruby/untitled.sublime-snippet b/Ruby/untitled.sublime-snippet new file mode 100644 index 0000000..24d95fc --- /dev/null +++ b/Ruby/untitled.sublime-snippet @@ -0,0 +1,9 @@ + + + opt + source.ruby + option(..) + diff --git a/Ruby/upto(1.0;0.0)-{-n-..-}-(upt).sublime-snippet b/Ruby/upto(1.0;0.0)-{-n-..-}-(upt).sublime-snippet new file mode 100644 index 0000000..ccfff1d --- /dev/null +++ b/Ruby/upto(1.0;0.0)-{-n-..-}-(upt).sublime-snippet @@ -0,0 +1,6 @@ + + \s*(?:\*|\*?[a-z_])[a-zA-Z0-9_]*\s*)(,\g)*,?\s*$)|.*/(?1:|)/}${2:n}${2/(^(?\s*(?:\*|\*?[a-z_])[a-zA-Z0-9_]*\s*)(,\g)*,?\s*$)|.*/(?1:| )/}$0 }]]> + upt + source.ruby + upto(1.0/0.0) { |n| .. } + diff --git a/Ruby/usage_if()-(usai).sublime-snippet b/Ruby/usage_if()-(usai).sublime-snippet new file mode 100644 index 0000000..8f95ec1 --- /dev/null +++ b/Ruby/usage_if()-(usai).sublime-snippet @@ -0,0 +1,8 @@ + + + usai + source.ruby + usage_if() + diff --git a/Ruby/usage_unless()-(usau).sublime-snippet b/Ruby/usage_unless()-(usau).sublime-snippet new file mode 100644 index 0000000..75bf665 --- /dev/null +++ b/Ruby/usage_unless()-(usau).sublime-snippet @@ -0,0 +1,8 @@ + + + usau + source.ruby + usage_unless() + diff --git a/Ruby/when.sublime-snippet b/Ruby/when.sublime-snippet new file mode 100644 index 0000000..bb6ced7 --- /dev/null +++ b/Ruby/when.sublime-snippet @@ -0,0 +1,7 @@ + + + when + source.ruby + when … + diff --git a/Ruby/while-___-end.sublime-snippet b/Ruby/while-___-end.sublime-snippet new file mode 100644 index 0000000..ce2eefc --- /dev/null +++ b/Ruby/while-___-end.sublime-snippet @@ -0,0 +1,8 @@ + + + while + source.ruby + while ... end + diff --git a/Ruby/xmlread(__).sublime-snippet b/Ruby/xmlread(__).sublime-snippet new file mode 100644 index 0000000..bb49512 --- /dev/null +++ b/Ruby/xmlread(__).sublime-snippet @@ -0,0 +1,6 @@ + + + xml- + source.ruby + xmlread(..) + diff --git a/Ruby/xpath(__)-{-__-}.sublime-snippet b/Ruby/xpath(__)-{-__-}.sublime-snippet new file mode 100644 index 0000000..25bc720 --- /dev/null +++ b/Ruby/xpath(__)-{-__-}.sublime-snippet @@ -0,0 +1,8 @@ + + + xpa + source.ruby + xpath(..) { .. } + diff --git a/Ruby/yields-RDoc-comment.sublime-snippet b/Ruby/yields-RDoc-comment.sublime-snippet new file mode 100644 index 0000000..e35ac0a --- /dev/null +++ b/Ruby/yields-RDoc-comment.sublime-snippet @@ -0,0 +1,6 @@ + + + y + source.ruby comment + :yields: + diff --git a/Ruby/zip(enums)-{-row-..-}-(zip).sublime-snippet b/Ruby/zip(enums)-{-row-..-}-(zip).sublime-snippet new file mode 100644 index 0000000..09020f0 --- /dev/null +++ b/Ruby/zip(enums)-{-row-..-}-(zip).sublime-snippet @@ -0,0 +1,6 @@ + + + zip + source.ruby + zip(enums) { |row| .. } + diff --git a/SQL/Comments.tmPreferences b/SQL/Comments.tmPreferences new file mode 100644 index 0000000..e6b0777 --- /dev/null +++ b/SQL/Comments.tmPreferences @@ -0,0 +1,36 @@ + + + + + name + Comments + scope + source.sql + settings + + shellVariables + + + name + TM_COMMENT_START + value + -- + + + name + TM_COMMENT_START_2 + value + /* + + + name + TM_COMMENT_END_2 + value + */ + + + + uuid + C9969F41-A409-4118-8753-CA95A9228FF7 + + diff --git a/SQL/Comments.tmPreferences.cache b/SQL/Comments.tmPreferences.cache new file mode 100644 index 0000000..f560cd4 Binary files /dev/null and b/SQL/Comments.tmPreferences.cache differ diff --git a/SQL/Miscellaneous.tmPreferences b/SQL/Miscellaneous.tmPreferences new file mode 100644 index 0000000..87b9569 --- /dev/null +++ b/SQL/Miscellaneous.tmPreferences @@ -0,0 +1,19 @@ + + + + + name + Miscellaneous + scope + source.sql + settings + + decreaseIndentPattern + \)(?!=.*\() + increaseIndentPattern + ^\s*(create|grant|insert|delete|update)\b|\((?!.*\)) + + uuid + 9C3A0A63-E661-4B0B-855B-710EDBBDB00F + + diff --git a/SQL/Miscellaneous.tmPreferences.cache b/SQL/Miscellaneous.tmPreferences.cache new file mode 100644 index 0000000..ae9b912 Binary files /dev/null and b/SQL/Miscellaneous.tmPreferences.cache differ diff --git a/SQL/SQL.tmLanguage b/SQL/SQL.tmLanguage new file mode 100644 index 0000000..3c3af42 --- /dev/null +++ b/SQL/SQL.tmLanguage @@ -0,0 +1,706 @@ + + + + + fileTypes + + sql + ddl + dml + + foldingStartMarker + \s*\(\s*$ + foldingStopMarker + ^\s*\) + keyEquivalent + ^~S + name + SQL + patterns + + + include + #comments + + + captures + + 1 + + name + keyword.other.create.sql + + 2 + + name + keyword.other.sql + + 5 + + name + entity.name.function.sql + + + match + (?i:^\s*(create)\s+(aggregate|conversion|database|domain|function|group|(unique\s+)?index|language|operator class|operator|rule|schema|sequence|table|tablespace|trigger|type|user|view)\s+)(['"`]?)(\w+)\4 + name + meta.create.sql + + + captures + + 1 + + name + keyword.other.create.sql + + 2 + + name + keyword.other.sql + + + match + (?i:^\s*(drop)\s+(aggregate|conversion|database|domain|function|group|index|language|operator class|operator|rule|schema|sequence|table|tablespace|trigger|type|user|view)) + name + meta.drop.sql + + + captures + + 1 + + name + keyword.other.create.sql + + 2 + + name + keyword.other.table.sql + + 3 + + name + entity.name.function.sql + + 4 + + name + keyword.other.cascade.sql + + + match + (?i:\s*(drop)\s+(table)\s+(\w+)(\s+cascade)?\b) + name + meta.drop.sql + + + captures + + 1 + + name + keyword.other.create.sql + + 2 + + name + keyword.other.table.sql + + + match + (?i:^\s*(alter)\s+(aggregate|conversion|database|domain|function|group|index|language|operator class|operator|rule|schema|sequence|table|tablespace|trigger|type|user|view)\s+) + name + meta.alter.sql + + + captures + + 1 + + name + storage.type.sql + + 10 + + name + constant.numeric.sql + + 11 + + name + storage.type.sql + + 12 + + name + storage.type.sql + + 13 + + name + storage.type.sql + + 14 + + name + constant.numeric.sql + + 15 + + name + storage.type.sql + + 2 + + name + storage.type.sql + + 3 + + name + constant.numeric.sql + + 4 + + name + storage.type.sql + + 5 + + name + constant.numeric.sql + + 6 + + name + storage.type.sql + + 7 + + name + constant.numeric.sql + + 8 + + name + constant.numeric.sql + + 9 + + name + storage.type.sql + + + match + (?xi) + + # normal stuff, capture 1 + \b(bigint|bigserial|bit|boolean|box|bytea|cidr|circle|date|double\sprecision|inet|int|integer|line|lseg|macaddr|money|oid|path|point|polygon|real|serial|smallint|sysdate|text)\b + + # numeric suffix, capture 2 + 3i + |\b(bit\svarying|character\s(?:varying)?|tinyint|var\schar|float|interval)\((\d+)\) + + # optional numeric suffix, capture 4 + 5i + |\b(char|number|varchar\d?)\b(?:\((\d+)\))? + + # special case, capture 6 + 7i + 8i + |\b(numeric)\b(?:\((\d+),(\d+)\))? + + # special case, captures 9, 10i, 11 + |\b(times)(?:\((\d+)\))(\swithoutstimeszone\b)? + + # special case, captures 12, 13, 14i, 15 + |\b(timestamp)(?:(s)\((\d+)\)(\swithoutstimeszone\b)?)? + + + + + match + (?i:\b((?:primary|foreign)\s+key|references|on\sdelete(\s+cascade)?|check|constraint)\b) + name + storage.modifier.sql + + + match + \b\d+\b + name + constant.numeric.sql + + + match + (?i:\b(select(\s+distinct)?|insert\s+(ignore\s+)?into|update|delete|from|set|where|group\sby|or|like|and|union(\s+all)?|having|order\sby|limit|(inner|cross)\s+join|straight_join|(left|right)(\s+outer)?\s+join|natural(\s+(left|right)(\s+outer)?)?\s+join)\b) + name + keyword.other.DML.sql + + + match + (?i:\b(on|((is\s+)?not\s+)?null)\b) + name + keyword.other.DDL.create.II.sql + + + match + (?i:\bvalues\b) + name + keyword.other.DML.II.sql + + + match + (?i:\b(begin(\s+work)?|start\s+transaction|commit(\s+work)?|rollback(\s+work)?)\b) + name + keyword.other.LUW.sql + + + match + (?i:\b(grant(\swith\sgrant\soption)?|revoke)\b) + name + keyword.other.authorization.sql + + + match + (?i:\bin\b) + name + keyword.other.data-integrity.sql + + + match + (?i:^\s*(comment\s+on\s+(table|column|aggregate|constraint|database|domain|function|index|operator|rule|schema|sequence|trigger|type|view))\s+.*?\s+(is)\s+) + name + keyword.other.object-comments.sql + + + match + (?i)\bAS\b + name + keyword.other.alias.sql + + + match + (?i)\b(DESC|ASC)\b + name + keyword.other.order.sql + + + match + \* + name + keyword.operator.star.sql + + + match + [!<>]?=|<>|<|> + name + keyword.operator.comparison.sql + + + match + -|\+|/ + name + keyword.operator.math.sql + + + match + \|\| + name + keyword.operator.concatenator.sql + + + comment + List of SQL99 built-in functions from http://www.oreilly.com/catalog/sqlnut/chapter/ch04.html + match + (?i)\b(CURRENT_(DATE|TIME(STAMP)?|USER)|(SESSION|SYSTEM)_USER)\b + name + support.function.scalar.sql + + + comment + List of SQL99 built-in functions from http://www.oreilly.com/catalog/sqlnut/chapter/ch04.html + match + (?i)\b(AVG|COUNT|MIN|MAX|SUM)(?=\s*\() + name + support.function.aggregate.sql + + + match + (?i)\b(CONCATENATE|CONVERT|LOWER|SUBSTRING|TRANSLATE|TRIM|UPPER)\b + name + support.function.string.sql + + + captures + + 1 + + name + constant.other.database-name.sql + + 2 + + name + constant.other.table-name.sql + + + match + \b(\w+?)\.(\w+)\b + + + + include + #strings + + + include + #regexps + + + repository + + comments + + patterns + + + captures + + 1 + + name + punctuation.definition.comment.sql + + + match + (--).*$\n? + name + comment.line.double-dash.sql + + + captures + + 1 + + name + punctuation.definition.comment.sql + + + match + (#).*$\n? + name + comment.line.number-sign.sql + + + begin + /\* + captures + + 0 + + name + punctuation.definition.comment.sql + + + end + \*/ + name + comment.block.c + + + + regexps + + patterns + + + begin + /(?=\S.*/) + beginCaptures + + 0 + + name + punctuation.definition.string.begin.sql + + + end + / + endCaptures + + 0 + + name + punctuation.definition.string.end.sql + + + name + string.regexp.sql + patterns + + + include + #string_interpolation + + + match + \\/ + name + constant.character.escape.slash.sql + + + + + begin + %r\{ + beginCaptures + + 0 + + name + punctuation.definition.string.begin.sql + + + comment + We should probably handle nested bracket pairs!?! -- Allan + end + \} + endCaptures + + 0 + + name + punctuation.definition.string.end.sql + + + name + string.regexp.modr.sql + patterns + + + include + #string_interpolation + + + + + + string_escape + + match + \\. + name + constant.character.escape.sql + + string_interpolation + + captures + + 1 + + name + punctuation.definition.string.end.sql + + + match + (#\{)([^\}]*)(\}) + name + string.interpolated.sql + + strings + + patterns + + + captures + + 1 + + name + punctuation.definition.string.begin.sql + + 3 + + name + punctuation.definition.string.end.sql + + + comment + this is faster than the next begin/end rule since sub-pattern will match till end-of-line and SQL files tend to have very long lines. + match + (')[^'\\]*(') + name + string.quoted.single.sql + + + begin + ' + beginCaptures + + 0 + + name + punctuation.definition.string.begin.sql + + + end + ' + endCaptures + + 0 + + name + punctuation.definition.string.end.sql + + + name + string.quoted.single.sql + patterns + + + include + #string_escape + + + + + captures + + 1 + + name + punctuation.definition.string.begin.sql + + 3 + + name + punctuation.definition.string.end.sql + + + comment + this is faster than the next begin/end rule since sub-pattern will match till end-of-line and SQL files tend to have very long lines. + match + (`)[^`\\]*(`) + name + string.quoted.other.backtick.sql + + + begin + ` + beginCaptures + + 0 + + name + punctuation.definition.string.begin.sql + + + end + ` + endCaptures + + 0 + + name + punctuation.definition.string.end.sql + + + name + string.quoted.other.backtick.sql + patterns + + + include + #string_escape + + + + + captures + + 1 + + name + punctuation.definition.string.begin.sql + + 3 + + name + punctuation.definition.string.end.sql + + + comment + this is faster than the next begin/end rule since sub-pattern will match till end-of-line and SQL files tend to have very long lines. + match + (")[^"#]*(") + name + string.quoted.double.sql + + + begin + " + beginCaptures + + 0 + + name + punctuation.definition.string.begin.sql + + + end + " + endCaptures + + 0 + + name + punctuation.definition.string.end.sql + + + name + string.quoted.double.sql + patterns + + + include + #string_interpolation + + + + + begin + %\{ + beginCaptures + + 0 + + name + punctuation.definition.string.begin.sql + + + end + \} + endCaptures + + 0 + + name + punctuation.definition.string.end.sql + + + name + string.other.quoted.brackets.sql + patterns + + + include + #string_interpolation + + + + + + + scopeName + source.sql + uuid + C49120AC-6ECC-11D9-ACC8-000D93589AF6 + + diff --git a/SQL/SQL.tmLanguage.cache b/SQL/SQL.tmLanguage.cache new file mode 100644 index 0000000..beab613 Binary files /dev/null and b/SQL/SQL.tmLanguage.cache differ diff --git a/Scala/Comments.tmPreferences b/Scala/Comments.tmPreferences new file mode 100644 index 0000000..d5315d0 --- /dev/null +++ b/Scala/Comments.tmPreferences @@ -0,0 +1,36 @@ + + + + + name + Comments + scope + source.scala + settings + + shellVariables + + + name + TM_COMMENT_START + value + // + + + name + TM_COMMENT_START_2 + value + /* + + + name + TM_COMMENT_END_2 + value + */ + + + + uuid + 99FB23BA-DD49-447F-9F1A-FF07630CB940 + + diff --git a/Scala/Comments.tmPreferences.cache b/Scala/Comments.tmPreferences.cache new file mode 100644 index 0000000..95f21df Binary files /dev/null and b/Scala/Comments.tmPreferences.cache differ diff --git a/Scala/Scala.tmLanguage b/Scala/Scala.tmLanguage new file mode 100644 index 0000000..396c653 --- /dev/null +++ b/Scala/Scala.tmLanguage @@ -0,0 +1,652 @@ + + + + + bundleUUID + 452017E8-0065-49EF-AB9D-7849B27D9367 + fileTypes + + scala + + foldingStartMarker + /\*\*|\{\s*$ + foldingStopMarker + \*\*/|^\s*\} + keyEquivalent + ^~S + name + Scala + patterns + + + include + #storage-modifiers + + + include + #keywords + + + include + #declarations + + + include + #inheritance + + + include + #imports + + + include + #comments + + + include + #block-comments + + + include + #strings + + + include + #initialization + + + include + #constants + + + include + #char-literal + + + include + #scala-symbol + + + include + #empty-parentheses + + + include + #parameter-list + + + include + #qualifiedClassName + + + include + #xml-literal + + + repository + + block-comments + + begin + /\* + end + \*/ + name + comment.block.scala + patterns + + + include + #block-comments + + + match + (?x) + (?! /\*) + (?! \*/) + + + + + char-literal + + match + '\\?.' + name + constant.character.literal.scala + + comments + + patterns + + + captures + + 1 + + name + punctuation.definition.comment.scala + + + match + (//).*$\n? + name + comment.line.double-slash.scala + + + captures + + 0 + + name + punctuation.definition.comment.scala + + + match + /\*\*/ + name + comment.block.empty.scala + + + begin + (^\s*)?/\*\* + captures + + 0 + + name + punctuation.definition.comment.scala + + + end + \*/(\s*\n)? + name + comment.block.documentation.scala + patterns + + + match + (@\w+\s) + name + keyword.other.documentation.scaladoc.scala + + + match + \{@link\s+[^\}]*\} + name + keyword.other.documentation.scaladoc.link.scala + + + + + + constants + + patterns + + + match + \b(false|null|true|Nil|None)\b + name + constant.language.scala + + + 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.scala + + + match + \b(this|super|self)\b + name + variable.language.scala + + + match + \b(Unit|Boolean|Byte|Char|Short|Int|Float|Long|Double)\b + name + storage.type.primitive.scala + + + + declarations + + patterns + + + captures + + 1 + + name + keyword.declaration.scala + + 2 + + name + entity.name.function.declaration + + + match + (?x) + \b(def)\s+ + (([a-zA-Z$_][a-zA-Z0-9$_]*(_[^a-zA-Z0-9\s]+)?)|`.*`|[^\w\[\(\:\_\s]+) + + + captures + + 1 + + name + keyword.declaration.scala + + 2 + + name + keyword.declaration.scala + + 3 + + name + entity.name.class.declaration + + + match + (case)?\b(class|trait|object)\s+([^\s\{\(\[]+) + + + captures + + 1 + + name + keyword.declaration.scala + + 2 + + name + entity.name.type.declaration + + + match + \b(type)\s+(([a-zA-Z$_][a-zA-Z0-9$_]*(_[^a-zA-Z0-9\s]+)?)|`.*`) + + + captures + + 1 + + name + keyword.declaration.stable.scala + + 2 + + name + keyword.declaration.volatile.scala + + 3 + + name + entity.name.val.declaration + + + match + \b(?:(val)|(var))\s+(([a-zA-Z$_][a-zA-Z0-9$_]*(_[^a-zA-Z0-9\s]+)?)|`.*`)? + + + captures + + 1 + + name + keyword.declaration.scala + + 2 + + name + entity.name.class.declaration + + + match + \b(package object)\s+([^\s\{\(\[]+) + + + captures + + 1 + + name + keyword.other.scoping.scala + + 2 + + name + entity.name.package.scala + + + match + \b(package)\s+([\w\.]+) + name + meta.package.scala + + + + empty-parentheses + + match + \(\) + name + meta.parentheses.scala + + imports + + begin + \b(import)\s+ + beginCaptures + + 1 + + name + keyword.other.import.scala + + + end + (?<=[\n;]) + name + meta.import.scala + patterns + + + include + #comments + + + match + ([^\s{;.]+)\s*\.\s* + name + variable.package.scala + + + match + ([^\s{;.]+)\s* + name + variable.import.scala + + + begin + { + end + } + name + meta.import.selector.scala + patterns + + + captures + + 1 + + name + variable.import.renamed-from.scala + + 2 + + name + keyword.other.arrow.scala + + 3 + + name + variable.import.renamed-to.scala + + + match + (?x) \s* + ([^\s.,}]+) \s* + (=>) \s* + ([^\s.,}]+) \s* + + + + match + ([^\s.,}]+) + name + variable.import.scala + + + + + + inheritance + + patterns + + + captures + + 1 + + name + keyword.declaration.scala + + 2 + + name + entity.other.inherited-class.scala + + + match + (extends|with)\s+([^\s\{\(\[\]]+) + + + + initialization + + captures + + 1 + + name + keyword + + 2 + + name + entity.name.class + + + match + \b(new)\s+([^\s\{\(\[]+) + + keywords + + patterns + + + match + \b(return|throw)\b + name + keyword.control.flow.jump.scala + + + match + \b(else|if|do|while|for|yield|match|case)\b + name + keyword.control.flow.scala + + + match + \b(catch|finally|try)\b + name + keyword.control.exception.scala + + + + parameter-list + + patterns + + + captures + + 1 + + name + variable.parameter + + 2 + + name + entity.name.class + + + match + ([a-zA-Z$_][a-zA-Z0-9$_]*)\s*:\s*([A-Za-z0-9][\w|_|?|\.]*)?,? + + + + qualifiedClassName + + captures + + 1 + + name + entity.name.class + + + match + (\b([A-Z][\w]*)) + + scala-symbol + + captures + + 1 + + name + entity.name.symbol + + + match + ('\w+) + + storage-modifiers + + patterns + + + match + \b(private\[\S+\]|protected\[\S+\]|private|protected)\b + name + storage.modifier.access + + + match + \b(synchronized|@volatile|abstract|final|lazy|sealed|implicit|override|@transient|@native)\b + name + storage.modifier.other + + + + strings + + patterns + + + begin + """ + end + """ + name + string.quoted.triple.scala + + + begin + (?<!\\)" + end + " + name + string.quoted.double.scala + patterns + + + match + \n + name + invalid.string.newline + + + match + \\. + name + constant.character.escape.scala + + + + + + xml-attribute + + patterns + + + captures + + 1 + + name + entity.other.attribute-name + + 2 + + name + string.quoted.double + + + match + (\w+)=("[^"]*") + + + + xml-literal + + patterns + + + begin + </?([a-zA-Z0-9]+) + beginCaptures + + 1 + + name + entity.name.tag + + + end + /?> + name + text.xml + patterns + + + include + #xml-literal + + + include + #xml-attribute + + + + + + + scopeName + source.scala + uuid + 158C0929-299A-40C8-8D89-316BE0C446E8 + + diff --git a/Scala/Scala.tmLanguage.cache b/Scala/Scala.tmLanguage.cache new file mode 100644 index 0000000..807b894 Binary files /dev/null and b/Scala/Scala.tmLanguage.cache differ diff --git a/Scala/Special-Return Inside parentheses.tmSnippet b/Scala/Special-Return Inside parentheses.tmSnippet new file mode 100644 index 0000000..c90785a --- /dev/null +++ b/Scala/Special-Return Inside parentheses.tmSnippet @@ -0,0 +1,18 @@ + + + + + content + + $0 + + keyEquivalent + + name + Special: Return Inside parentheses + scope + meta.parentheses.scala + uuid + E364F26E-C766-4068-BAAF-C010FA1F5F92 + + diff --git a/Scala/Symbols.tmPreferences b/Scala/Symbols.tmPreferences new file mode 100644 index 0000000..a99b0bb --- /dev/null +++ b/Scala/Symbols.tmPreferences @@ -0,0 +1,17 @@ + + + + + name + Symbol List + scope + entity.name.function.declaration, entity.name.class.declaration, entity.name.val.declaration, entity.name.type.declaration + settings + + showInSymbolList + 1 + + uuid + 31262BFB-520A-4253-A81C-60023C0CFC8B + + diff --git a/Scala/Symbols.tmPreferences.cache b/Scala/Symbols.tmPreferences.cache new file mode 100644 index 0000000..704d02f Binary files /dev/null and b/Scala/Symbols.tmPreferences.cache differ diff --git a/Scala/case class scaffolding.tmSnippet b/Scala/case class scaffolding.tmSnippet new file mode 100644 index 0000000..d641227 --- /dev/null +++ b/Scala/case class scaffolding.tmSnippet @@ -0,0 +1,29 @@ + + + + + content + class ${1:Class}(${2/(\S+\s*:)/val $1/g}) { + override def hashCode = 0 ${2/(\S+)\s*:[^,]+(,?)/+ $1.##/g} + override def equals(other: Any) = $1.unapply(this) == $1.unapply(other) + override def canEqual(other: Any) = other.isInstanceOf[$1] +} + +object $1 { + def apply(${2:arguments}): $1 = new $1(${2/(\S+)\s*:[^,]+/$1/g}) + def unapply(other: Any) = other match { + case x: $1 => import x._ ; Some(${2/(\S+)\s*:[^,]+/$1/g}) + case _ => None + } +} + + name + case class scaffolding + scope + source.scala + tabTrigger + ccc + uuid + CC643A92-5A38-4998-AB95-041EAF15ECF9 + + diff --git a/Scala/case class.tmSnippet b/Scala/case class.tmSnippet new file mode 100644 index 0000000..5c7e1bc --- /dev/null +++ b/Scala/case class.tmSnippet @@ -0,0 +1,18 @@ + + + + + content + case class ${1:${TM_FILENAME/(.*)\.scala/$1/}}${2:($3)} ${4:extends ${5:Any} }{ + $0 +} + name + case class + scope + source.scala + tabTrigger + case class + uuid + 493A836C-428D-4CA5-9E29-E2C927C8B642 + + diff --git a/Scala/case.tmSnippet b/Scala/case.tmSnippet new file mode 100644 index 0000000..4283d50 --- /dev/null +++ b/Scala/case.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + case ${1:_} => ${0} + name + case + scope + source.scala + tabTrigger + case + uuid + C32C1AFB-F874-454E-8C82-86832CA296FD + + diff --git a/Scala/class.tmSnippet b/Scala/class.tmSnippet new file mode 100644 index 0000000..e2added --- /dev/null +++ b/Scala/class.tmSnippet @@ -0,0 +1,18 @@ + + + + + content + class ${1:${TM_FILENAME/(.*)\.scala/$1/}}${2:($3)} ${4:extends ${5:Any} }{ + $0 +} + name + class + scope + source.scala + tabTrigger + class + uuid + E79DCC79-E834-4B6C-8280-EBE0B9A0A41F + + diff --git a/Scala/enumeration.tmSnippet b/Scala/enumeration.tmSnippet new file mode 100644 index 0000000..02d4bcd --- /dev/null +++ b/Scala/enumeration.tmSnippet @@ -0,0 +1,22 @@ + + + + + content + object ${1:MyEnumeration} extends Enumeration { + type $1 = Value + val ${2:${3:MyEnumeration1}, ${4:MyEnumeration2}} = Value +} + +${5:import $1._} +${0} + name + enumeration + tabTrigger + enumeration + scope + source.scala + uuid + 0097F60C-0AAC-4CC0-8815-C6BA0E77606F + + diff --git a/Scala/for - Block.tmSnippet b/Scala/for - Block.tmSnippet new file mode 100644 index 0000000..b4c636a --- /dev/null +++ b/Scala/for - Block.tmSnippet @@ -0,0 +1,18 @@ + + + + + content + for( $1 <- ${2:${3:0} to ${4:10}}) { + $0 +} + name + for - Block + scope + source.scala + tabTrigger + for + uuid + ADF7CCBE-80DD-488E-A2A9-B3B8B582F69F + + diff --git a/Scala/for - Yield.tmSnippet b/Scala/for - Yield.tmSnippet new file mode 100644 index 0000000..8765410 --- /dev/null +++ b/Scala/for - Yield.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + for( $1 <- ${2:${3:0} to ${4:10}}) yield $0 + name + for - Yield + scope + source.scala + tabTrigger + for + uuid + E0E52BED-94DD-4D9F-8ED5-BEE344AB3FDC + + diff --git a/Scala/if.tmSnippet b/Scala/if.tmSnippet new file mode 100644 index 0000000..152739e --- /dev/null +++ b/Scala/if.tmSnippet @@ -0,0 +1,19 @@ + + + + + content + if($1){ +$2 +} + + name + if + scope + source.scala + tabTrigger + if + uuid + 9D749173-9874-4BEC-80A1-BAE8AF266AD9 + + diff --git a/Scala/import mutable immutable.tmSnippet b/Scala/import mutable immutable.tmSnippet new file mode 100644 index 0000000..7f49d64 --- /dev/null +++ b/Scala/import mutable immutable.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + import scala.collection.{ mutable, immutable, generic } + name + import mutable/immutable + scope + source.scala + tabTrigger + impc + uuid + F38BFF4F-BE1D-4CE2-8BE8-8BEDF5EB7277 + + diff --git a/Scala/info.plist b/Scala/info.plist new file mode 100644 index 0000000..876f6d5 --- /dev/null +++ b/Scala/info.plist @@ -0,0 +1,10 @@ + + + + + contactEmailRot13 + mads379@gmail.com + contactName + Mads Hartmann + + \ No newline at end of file diff --git a/Scala/lambda.tmSnippet b/Scala/lambda.tmSnippet new file mode 100644 index 0000000..7d03342 --- /dev/null +++ b/Scala/lambda.tmSnippet @@ -0,0 +1,18 @@ + + + + + bundleUUID + 452017E8-0065-49EF-AB9D-7849B27D9367 + content + ($1) => ${2:{${3:}\}} + name + lambda + scope + source.scala + tabTrigger + lam + uuid + 92B4042E-2409-466F-A0B6-80A46B36679F + + diff --git a/Scala/left arrow.tmSnippet b/Scala/left arrow.tmSnippet new file mode 100644 index 0000000..c599b7f --- /dev/null +++ b/Scala/left arrow.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + ${1:"${2}"} <- ${3:"${4}"} + name + left arrow + scope + source.scala + tabTrigger + <- + uuid + 20512DA9-649C-420F-A0E1-F7DD04A349EE + + diff --git a/Scala/main.tmSnippet b/Scala/main.tmSnippet new file mode 100644 index 0000000..2c7eda7 --- /dev/null +++ b/Scala/main.tmSnippet @@ -0,0 +1,19 @@ + + + + + content + def main(args: Array[String]): Unit = { + $1 +} + + name + main + scope + source.scala + tabTrigger + main + uuid + 6CCA6D38-8C03-4D29-97BD-45CED52713FB + + diff --git a/Scala/match.tmSnippet b/Scala/match.tmSnippet new file mode 100644 index 0000000..1d703d6 --- /dev/null +++ b/Scala/match.tmSnippet @@ -0,0 +1,19 @@ + + + + + content + match { + case ${1:_} => $0 +} + + name + match + scope + source.scala + tabTrigger + match + uuid + 6851152B-CD07-4E27-9932-631A86102B5C + + diff --git a/Scala/method.tmSnippet b/Scala/method.tmSnippet new file mode 100644 index 0000000..32a9a0e --- /dev/null +++ b/Scala/method.tmSnippet @@ -0,0 +1,18 @@ + + + + + content + def ${1:method}${2:(${4:arg}: ${5:Type})} = { + ${0} +} + name + method + scope + source.scala + tabTrigger + def + uuid + D03DC03A-8622-4F4F-BDAC-3AD1E8D51705 + + diff --git a/Scala/object with main method.tmSnippet b/Scala/object with main method.tmSnippet new file mode 100644 index 0000000..9ab41af --- /dev/null +++ b/Scala/object with main method.tmSnippet @@ -0,0 +1,23 @@ + + + + + bundleUUID + 452017E8-0065-49EF-AB9D-7849B27D9367 + content + object ${1:${TM_FILENAME/(.*)\.scala/$1/}} { + def main(args: Array[String]): Unit = { + $2 + } +} + + name + object with main method + scope + source.scala + tabTrigger + omain + uuid + 853C1915-7B23-4C79-AAAA-AEDFB21CA08C + + diff --git a/Scala/object.tmSnippet b/Scala/object.tmSnippet new file mode 100644 index 0000000..b2c45eb --- /dev/null +++ b/Scala/object.tmSnippet @@ -0,0 +1,18 @@ + + + + + content + object ${1:${TM_FILENAME/(.*)\.scala/$1/}} ${2:extends ${3:Any} }{ + $0 +} + name + object + scope + source.scala + tabTrigger + object + uuid + 97CB4393-6DCC-45B4-8830-61D6B5D036B2 + + diff --git a/Scala/right arrow.tmSnippet b/Scala/right arrow.tmSnippet new file mode 100644 index 0000000..fd2ffe1 --- /dev/null +++ b/Scala/right arrow.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + ${1:"${2}"} -> ${3:"${4}"} + name + right arrow + scope + source.scala + tabTrigger + -> + uuid + 53B78E1D-F3C2-49C6-89D3-6BE30961C14D + + diff --git a/Scala/script header.tmSnippet b/Scala/script header.tmSnippet new file mode 100644 index 0000000..9ffc5e7 --- /dev/null +++ b/Scala/script header.tmSnippet @@ -0,0 +1,20 @@ + + + + + content + #!/bin/sh + exec scala "\$0" "\$@" +!# + +$1 + name + script header + tabTrigger + script + scope + source.scala + uuid + 11D5086B-FD25-4B33-92E3-4DEADCF4119D + + diff --git a/Scala/shortcut - case class.tmSnippet b/Scala/shortcut - case class.tmSnippet new file mode 100644 index 0000000..2ce922e --- /dev/null +++ b/Scala/shortcut - case class.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + case class + name + shortcut - case class + scope + source.scala + tabTrigger + cc + uuid + 909A1E64-9672-4FC1-87B3-608A57257E5D + + diff --git a/Scala/shortcut - class.tmSnippet b/Scala/shortcut - class.tmSnippet new file mode 100644 index 0000000..f1e5592 --- /dev/null +++ b/Scala/shortcut - class.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + class + name + shortcut - class + scope + source.scala + tabTrigger + c + uuid + EEB7E161-EF45-410A-91CD-7C74F94449A4 + + diff --git a/Scala/shortcut - enumeration.tmSnippet b/Scala/shortcut - enumeration.tmSnippet new file mode 100644 index 0000000..8a06cc5 --- /dev/null +++ b/Scala/shortcut - enumeration.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + enumeration + name + shortcut - enumeration + scope + source.scala + tabTrigger + enum + uuid + FFD2A2D6-000C-4AD6-BA36-A1ACD05A392B + + diff --git a/Scala/shortcut - match.tmSnippet b/Scala/shortcut - match.tmSnippet new file mode 100644 index 0000000..763d854 --- /dev/null +++ b/Scala/shortcut - match.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + match + name + shortcut - match + scope + source.scala + tabTrigger + m + uuid + 7BE0DE43-86F5-48C6-A8DF-A7AC891A68EE + + diff --git a/Scala/shortcut - object.tmSnippet b/Scala/shortcut - object.tmSnippet new file mode 100644 index 0000000..f20a923 --- /dev/null +++ b/Scala/shortcut - object.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + object + name + shortcut - object + scope + source.scala + tabTrigger + obj + uuid + CEAD5E83-C0D9-4D3D-9E73-C37634DD410D + + diff --git a/Scala/shortcut - trait.tmSnippet b/Scala/shortcut - trait.tmSnippet new file mode 100644 index 0000000..ec373dc --- /dev/null +++ b/Scala/shortcut - trait.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + trait + name + shortcut - trait + scope + source.scala + tabTrigger + t + uuid + 1D85F938-738B-42DD-9206-A4D250B744DD + + diff --git a/Scala/toString.tmSnippet b/Scala/toString.tmSnippet new file mode 100644 index 0000000..9a3443e --- /dev/null +++ b/Scala/toString.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + override def toString(): String = $0 + + name + toString + scope + source.scala + tabTrigger + tostr + uuid + E3CAD7C5-59B2-4CD2-9D9F-5D225998E2ED + + diff --git a/Scala/trait.tmSnippet b/Scala/trait.tmSnippet new file mode 100644 index 0000000..29a8e92 --- /dev/null +++ b/Scala/trait.tmSnippet @@ -0,0 +1,18 @@ + + + + + content + trait ${1:${TM_FILENAME/(.*)\.scala/$1/}} { + $0 +} + name + trait + scope + source.scala + tabTrigger + trait + uuid + BAD79DCF-1B14-42CE-BE6E-7EE5A56190B3 + + diff --git a/Scala/try catch.tmSnippet b/Scala/try catch.tmSnippet new file mode 100644 index 0000000..655cd28 --- /dev/null +++ b/Scala/try catch.tmSnippet @@ -0,0 +1,20 @@ + + + + + content + try { + ${1:// ...} +} catch { + case e: Exception => $0 +} + name + try/catch + scope + source.scala + tabTrigger + try + uuid + 833B549D-AA46-4BC9-AC05-CBF4CD1DA723 + + diff --git a/Scala/with.tmSnippet b/Scala/with.tmSnippet new file mode 100644 index 0000000..d986e5b --- /dev/null +++ b/Scala/with.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + with ${1:Any} + name + with + scope + source.scala + tabTrigger + with + uuid + 56D7D5D4-355C-4BAA-8F38-DA5A5FCA33C8 + + diff --git a/ShellScript/#!-usr-bin-env-(!env).sublime-snippet b/ShellScript/#!-usr-bin-env-(!env).sublime-snippet new file mode 100644 index 0000000..40f056d --- /dev/null +++ b/ShellScript/#!-usr-bin-env-(!env).sublime-snippet @@ -0,0 +1,7 @@ + + + !env + + #!/usr/bin/env + diff --git a/ShellScript/Comments.tmPreferences b/ShellScript/Comments.tmPreferences new file mode 100644 index 0000000..adfb3fd --- /dev/null +++ b/ShellScript/Comments.tmPreferences @@ -0,0 +1,24 @@ + + + + + name + Comments + scope + source.shell + settings + + shellVariables + + + name + TM_COMMENT_START + value + # + + + + uuid + 858E140E-51E5-4863-829F-EF6B4B8FA816 + + diff --git a/ShellScript/Comments.tmPreferences.cache b/ShellScript/Comments.tmPreferences.cache new file mode 100644 index 0000000..ec63fcf Binary files /dev/null and b/ShellScript/Comments.tmPreferences.cache differ diff --git a/ShellScript/Miscellaneous.tmPreferences b/ShellScript/Miscellaneous.tmPreferences new file mode 100644 index 0000000..b919e00 --- /dev/null +++ b/ShellScript/Miscellaneous.tmPreferences @@ -0,0 +1,21 @@ + + + + + name + Miscellaneous + scope + source.shell + settings + + decreaseIndentPattern + ^\s*(\}|(elif|else|fi|esac|done)\b) + increaseIndentPattern + ^\s*(if|elif|else|case)\b|^.*(\{|\b(do)\b)$ + indentNextLinePattern + ^.*[^\\]\\$ + + uuid + E3637B21-3DAB-41D2-AD9D-03735778D7EE + + diff --git a/ShellScript/Miscellaneous.tmPreferences.cache b/ShellScript/Miscellaneous.tmPreferences.cache new file mode 100644 index 0000000..c54bcb7 Binary files /dev/null and b/ShellScript/Miscellaneous.tmPreferences.cache differ diff --git a/ShellScript/Shell-Unix-Generic.tmLanguage b/ShellScript/Shell-Unix-Generic.tmLanguage new file mode 100644 index 0000000..db039cd --- /dev/null +++ b/ShellScript/Shell-Unix-Generic.tmLanguage @@ -0,0 +1,1856 @@ + + + + + fileTypes + + sh + bash + zsh + .bashrc + .bash_profile + .bash_login + .profile + .bash_logout + .textmate_init + + firstLineMatch + ^#!.*\b(bash|zsh|sh|tcsh)|^#\s*-\*-[^*]*mode:\s*shell-script[^*]*-\*- + foldingStartMarker + \b(if|case)\b|(\{|\b(do)\b)$ + foldingStopMarker + ^\s*(\}|(done|fi|esac)\b) + keyEquivalent + ^~S + name + Shell Script (Bash) + patterns + + + include + #comment + + + include + #pipeline + + + include + #list + + + include + #compound-command + + + include + #loop + + + include + #function-definition + + + include + #string + + + include + #variable + + + include + #interpolation + + + include + #heredoc + + + include + #herestring + + + include + #redirection + + + include + #pathname + + + include + #keyword + + + include + #support + + + repository + + case-clause + + patterns + + + begin + (?=\S) + end + ;; + endCaptures + + 0 + + name + punctuation.terminator.case-clause.shell + + + name + meta.scope.case-clause.shell + patterns + + + begin + (\(|(?=\S)) + captures + + 0 + + name + punctuation.definition.case-pattern.shell + + + end + \) + name + meta.scope.case-pattern.shell + patterns + + + match + \| + name + punctuation.separator.pipe-sign.shell + + + include + #string + + + include + #variable + + + include + #interpolation + + + include + #pathname + + + + + begin + (?<=\)) + end + (?=;;) + name + meta.scope.case-clause-body.shell + patterns + + + include + $self + + + + + + + + comment + + patterns + + + captures + + 1 + + name + punctuation.definition.comment.shell + + + match + (?<!\S)(#)(?!\{).*$\n? + name + comment.line.number-sign.shell + + + + compound-command + + patterns + + + begin + (\[{2}) + captures + + 1 + + name + punctuation.definition.logical-expression.shell + + + end + (\]{2}) + name + meta.scope.logical-expression.shell + patterns + + + include + #logical-expression + + + include + $self + + + + + begin + (\({2}) + beginCaptures + + 0 + + name + punctuation.definition.string.begin.shell + + + end + (\){2}) + endCaptures + + 0 + + name + punctuation.definition.string.end.shell + + + name + string.other.math.shell + patterns + + + include + #math + + + + + begin + (\() + captures + + 1 + + name + punctuation.definition.subshell.shell + + + end + (\)) + name + meta.scope.subshell.shell + patterns + + + include + $self + + + + + begin + (?<=\s|^)(\{)(?=\s|$) + captures + + 1 + + name + punctuation.definition.group.shell + + + end + (?<=^|;)\s*(\}) + name + meta.scope.group.shell + patterns + + + include + $self + + + + + + function-definition + + patterns + + + begin + \b(function)\s+([^\s\\]+)(?:\s*(\(\)))? + beginCaptures + + 1 + + name + storage.type.function.shell + + 2 + + name + entity.name.function.shell + + 3 + + name + punctuation.definition.arguments.shell + + + end + ;|&|$ + endCaptures + + 0 + + name + punctuation.definition.function.shell + + + name + meta.function.shell + patterns + + + include + $self + + + + + begin + \b([^\s\\=]+)\s*(\(\)) + beginCaptures + + 1 + + name + entity.name.function.shell + + 2 + + name + punctuation.definition.arguments.shell + + + end + ;|&|$ + endCaptures + + 0 + + name + punctuation.definition.function.shell + + + name + meta.function.shell + patterns + + + include + $self + + + + + + heredoc + + patterns + + + begin + (<<)-("|'|)(RUBY)\2 + beginCaptures + + 1 + + name + keyword.operator.heredoc.shell + + 3 + + name + keyword.control.heredoc-token.shell + + + captures + + 0 + + name + punctuation.definition.string.shell + + + contentName + source.ruby.embedded.shell + end + ^\t*(RUBY)\b + endCaptures + + 1 + + name + keyword.control.heredoc-token.shell + + + name + string.unquoted.heredoc.no-indent.ruby.shell + patterns + + + include + source.ruby + + + + + begin + (<<)("|'|)(RUBY)\2 + beginCaptures + + 1 + + name + keyword.operator.heredoc.shell + + 3 + + name + keyword.control.heredoc-token.shell + + + captures + + 0 + + name + punctuation.definition.string.shell + + + contentName + source.ruby.embedded.shell + end + ^(RUBY)\b + endCaptures + + 1 + + name + keyword.control.heredoc-token.shell + + + name + string.unquoted.heredoc.ruby.shell + patterns + + + include + source.ruby + + + + + begin + (<<)-("|'|)(PYTHON)\2 + beginCaptures + + 1 + + name + keyword.operator.heredoc.shell + + 3 + + name + keyword.control.heredoc-token.shell + + + captures + + 0 + + name + punctuation.definition.string.shell + + + contentName + source.python.embedded.shell + end + ^\t*(PYTHON)\b + endCaptures + + 1 + + name + keyword.control.heredoc-token.shell + + + name + string.unquoted.heredoc.no-indent.python.shell + patterns + + + include + source.python + + + + + begin + (<<)("|'|)(PYTHON)\2 + beginCaptures + + 1 + + name + keyword.operator.heredoc.shell + + 3 + + name + keyword.control.heredoc-token.shell + + + captures + + 0 + + name + punctuation.definition.string.shell + + + contentName + source.python.embedded.shell + end + ^(PYTHON)\b + endCaptures + + 1 + + name + keyword.control.heredoc-token.shell + + + name + string.unquoted.heredoc.python.shell + patterns + + + include + source.python + + + + + begin + (<<)-("|'|)(APPLESCRIPT)\2 + beginCaptures + + 1 + + name + keyword.operator.heredoc.shell + + 3 + + name + keyword.control.heredoc-token.shell + + + captures + + 0 + + name + punctuation.definition.string.shell + + + contentName + source.applescript.embedded.shell + end + ^\t*(APPLESCRIPT)\b + endCaptures + + 1 + + name + keyword.control.heredoc-token.shell + + + name + string.unquoted.heredoc.no-indent.applescript.shell + patterns + + + include + source.applescript + + + + + begin + (<<)("|'|)(APPLESCRIPT)\2 + beginCaptures + + 1 + + name + keyword.operator.heredoc.shell + + 3 + + name + keyword.control.heredoc-token.shell + + + captures + + 0 + + name + punctuation.definition.string.shell + + + contentName + source.applescript.embedded.shell + end + ^(APPLESCRIPT)\b + endCaptures + + 1 + + name + keyword.control.heredoc-token.shell + + + name + string.unquoted.heredoc.applescript.shell + patterns + + + include + source.applescript + + + + + begin + (<<)-("|'|)(HTML)\2 + beginCaptures + + 1 + + name + keyword.operator.heredoc.shell + + 3 + + name + keyword.control.heredoc-token.shell + + + captures + + 0 + + name + punctuation.definition.string.shell + + + contentName + text.html.embedded.shell + end + ^\t*(HTML)\b + endCaptures + + 1 + + name + keyword.control.heredoc-token.shell + + + name + string.unquoted.heredoc.no-indent.html.shell + patterns + + + include + text.html.basic + + + + + begin + (<<)("|'|)(HTML)\2 + beginCaptures + + 1 + + name + keyword.operator.heredoc.shell + + 3 + + name + keyword.control.heredoc-token.shell + + + captures + + 0 + + name + punctuation.definition.string.shell + + + contentName + text.html.embedded.shell + end + ^(HTML)\b + endCaptures + + 1 + + name + keyword.control.heredoc-token.shell + + + name + string.unquoted.heredoc.html.shell + patterns + + + include + text.html.basic + + + + + begin + (<<)-("|'|)(MARKDOWN)\2 + beginCaptures + + 1 + + name + keyword.operator.heredoc.shell + + 3 + + name + keyword.control.heredoc-token.shell + + + captures + + 0 + + name + punctuation.definition.string.shell + + + contentName + text.html.markdown.embedded.shell + end + ^\t*(MARKDOWN)\b + endCaptures + + 1 + + name + keyword.control.heredoc-token.shell + + + name + string.unquoted.heredoc.no-indent.markdown.shell + patterns + + + include + text.html.markdown + + + + + begin + (<<)("|'|)(MARKDOWN)\2 + beginCaptures + + 1 + + name + keyword.operator.heredoc.shell + + 3 + + name + keyword.control.heredoc-token.shell + + + captures + + 0 + + name + punctuation.definition.string.shell + + + contentName + text.html.markdown.embedded.shell + end + ^(MARKDOWN)\b + endCaptures + + 1 + + name + keyword.control.heredoc-token.shell + + + name + string.unquoted.heredoc.markdown.shell + patterns + + + include + text.html.markdown + + + + + begin + (<<)-("|'|)(TEXTILE)\2 + beginCaptures + + 1 + + name + keyword.operator.heredoc.shell + + 3 + + name + keyword.control.heredoc-token.shell + + + captures + + 0 + + name + punctuation.definition.string.shell + + + contentName + text.html.textile.embedded.shell + end + ^\t*(TEXTILE)\b + endCaptures + + 1 + + name + keyword.control.heredoc-token.shell + + + name + string.unquoted.heredoc.no-indent.textile.shell + patterns + + + include + text.html.textile + + + + + begin + (<<)("|'|)(TEXTILE)\2 + beginCaptures + + 1 + + name + keyword.operator.heredoc.shell + + 3 + + name + keyword.control.heredoc-token.shell + + + captures + + 0 + + name + punctuation.definition.string.shell + + + contentName + text.html.textile.embedded.shell + end + ^(TEXTILE)\b + endCaptures + + 1 + + name + keyword.control.heredoc-token.shell + + + name + string.unquoted.heredoc.textile.shell + patterns + + + include + text.html.textile + + + + + begin + (<<)-("|'|)\\?(\w+)\2 + beginCaptures + + 1 + + name + keyword.operator.heredoc.shell + + 3 + + name + keyword.control.heredoc-token.shell + + + captures + + 0 + + name + punctuation.definition.string.shell + + + end + ^\t*(\3)\b + endCaptures + + 1 + + name + keyword.control.heredoc-token.shell + + + name + string.unquoted.heredoc.no-indent.shell + + + begin + (<<)("|'|)\\?(\w+)\2 + beginCaptures + + 1 + + name + keyword.operator.heredoc.shell + + 3 + + name + keyword.control.heredoc-token.shell + + + captures + + 0 + + name + punctuation.definition.string.shell + + + end + ^(\3)\b + endCaptures + + 1 + + name + keyword.control.heredoc-token.shell + + + name + string.unquoted.heredoc.shell + + + + herestring + + patterns + + + captures + + 1 + + name + keyword.operator.herestring.shell + + 2 + + name + string.quoted.single.herestring.shell + + 3 + + name + punctuation.definition.string.begin.shell + + 4 + + name + punctuation.definition.string.end.shell + + + match + (<<<)((')[^']*(')) + name + meta.herestring.shell + + + captures + + 1 + + name + keyword.operator.herestring.shell + + 2 + + name + string.quoted.double.herestring.shell + + 3 + + name + punctuation.definition.string.begin.shell + + 6 + + name + punctuation.definition.string.end.shell + + + match + (<<<)((")(\\("|\\)|[^"])*(")) + name + meta.herestring.shell + + + captures + + 1 + + name + keyword.operator.herestring.shell + + 2 + + name + string.unquoted.herestring.shell + + + match + (<<<)(([^\s\\]|\\.)+) + name + meta.herestring.shell + + + + interpolation + + patterns + + + begin + \$\({2} + beginCaptures + + 0 + + name + punctuation.definition.string.begin.shell + + + end + \){2} + endCaptures + + 0 + + name + punctuation.definition.string.end.shell + + + name + string.other.math.shell + patterns + + + include + #math + + + + + begin + ` + beginCaptures + + 0 + + name + punctuation.definition.string.begin.shell + + + end + ` + endCaptures + + 0 + + name + punctuation.definition.string.end.shell + + + name + string.interpolated.backtick.shell + patterns + + + match + \\[`\\$] + name + constant.character.escape.shell + + + include + $self + + + + + begin + \$\( + beginCaptures + + 0 + + name + punctuation.definition.string.begin.shell + + + end + \) + endCaptures + + 0 + + name + punctuation.definition.string.end.shell + + + name + string.interpolated.dollar.shell + patterns + + + include + $self + + + + + + keyword + + patterns + + + match + \b(?:if|then|else|elif|fi|for|in|do|done|select|case|continue|esac|while|until|return)\b + name + keyword.control.shell + + + match + (?<![-/])\b(?:export|declare|typeset|local|readonly)\b + name + storage.modifier.shell + + + + list + + patterns + + + match + ;|&&|&|\|\| + name + keyword.operator.list.shell + + + + logical-expression + + patterns + + + comment + do we want a special rule for ( expr )? + match + =[=~]?|!=?|<|>|&&|\|\| + name + keyword.operator.logical.shell + + + match + (?<!\S)-(nt|ot|ef|eq|ne|l[te]|g[te]|[a-hknoprstuwxzOGLSN]) + name + keyword.operator.logical.shell + + + + loop + + patterns + + + begin + \b(for)\s+(?=\({2}) + captures + + 1 + + name + keyword.control.shell + + + end + \b(done)\b + name + meta.scope.for-loop.shell + patterns + + + include + $self + + + + + begin + \b(for)\s+((?:[^\s\\]|\\.)+)\b + beginCaptures + + 1 + + name + keyword.control.shell + + 2 + + name + variable.other.loop.shell + + + end + \b(done)\b + endCaptures + + 1 + + name + keyword.control.shell + + + name + meta.scope.for-in-loop.shell + patterns + + + include + $self + + + + + begin + \b(while|until)\b + captures + + 1 + + name + keyword.control.shell + + + end + \b(done)\b + name + meta.scope.while-loop.shell + patterns + + + include + $self + + + + + begin + \b(select)\s+((?:[^\s\\]|\\.)+)\b + beginCaptures + + 1 + + name + keyword.control.shell + + 2 + + name + variable.other.loop.shell + + + end + \b(done)\b + endCaptures + + 1 + + name + keyword.control.shell + + + name + meta.scope.select-block.shell + patterns + + + include + $self + + + + + begin + \b(case)\b + captures + + 1 + + name + keyword.control.shell + + + end + \b(esac)\b + name + meta.scope.case-block.shell + patterns + + + begin + \b(?:in)\b + beginCaptures + + 1 + + name + keyword.control.shell + + + end + (?=\b(?:esac)\b) + name + meta.scope.case-body.shell + patterns + + + include + #comment + + + include + #case-clause + + + include + $self + + + + + include + $self + + + + + begin + \b(if)\b + captures + + 1 + + name + keyword.control.shell + + + end + \b(fi)\b + name + meta.scope.if-block.shell + patterns + + + include + $self + + + + + + math + + patterns + + + include + #variable + + + match + \+{1,2}|-{1,2}|!|~|\*{1,2}|/|%|<[<=]?|>[>=]?|==|!=|^|\|{1,2}|&{1,2}|\?|\:|,|=|[*/%+\-&^|]=|<<=|>>= + name + keyword.operator.arithmetic.shell + + + match + 0[xX]\h+ + name + constant.numeric.hex.shell + + + match + 0\d+ + name + constant.numeric.octal.shell + + + match + \d{1,2}#[0-9a-zA-Z@_]+ + name + constant.numeric.other.shell + + + match + \d+ + name + constant.numeric.integer.shell + + + + pathname + + patterns + + + match + (?<=\s|:|=|^)~ + name + keyword.operator.tilde.shell + + + match + \*|\? + name + keyword.operator.glob.shell + + + begin + ([?*+@!])(\() + beginCaptures + + 1 + + name + keyword.operator.extglob.shell + + 2 + + name + punctuation.definition.extglob.shell + + + end + (\)) + endCaptures + + 1 + + name + punctuation.definition.extglob.shell + + + name + meta.structure.extglob.shell + patterns + + + include + $self + + + + + + pipeline + + patterns + + + match + \b(time)\b + name + keyword.other.shell + + + match + [|!] + name + keyword.operator.pipe.shell + + + + redirection + + patterns + + + begin + [><]\( + beginCaptures + + 0 + + name + punctuation.definition.string.begin.shell + + + end + \) + endCaptures + + 0 + + name + punctuation.definition.string.end.shell + + + name + string.interpolated.process-substitution.shell + patterns + + + include + $self + + + + + comment + valid: &>word >&word >word [n]>&[n] [n]<word [n]>word [n]>>word [n]<&word (last one is duplicate) + match + &>|\d*>&\d*|\d*(>>|>|<)|\d*<&|\d*<> + name + keyword.operator.redirect.shell + + + + string + + patterns + + + match + \\. + name + constant.character.escape.shell + + + begin + ' + beginCaptures + + 0 + + name + punctuation.definition.string.begin.shell + + + end + ' + endCaptures + + 0 + + name + punctuation.definition.string.end.shell + + + name + string.quoted.single.shell + + + begin + \$?" + beginCaptures + + 0 + + name + punctuation.definition.string.begin.shell + + + end + " + endCaptures + + 0 + + name + punctuation.definition.string.end.shell + + + name + string.quoted.double.shell + patterns + + + match + \\[\$`"\\\n] + name + constant.character.escape.shell + + + include + #variable + + + include + #interpolation + + + + + begin + \$' + beginCaptures + + 0 + + name + punctuation.definition.string.begin.shell + + + end + ' + endCaptures + + 0 + + name + punctuation.definition.string.end.shell + + + name + string.quoted.single.dollar.shell + patterns + + + match + \\(a|b|e|f|n|r|t|v|\\|') + name + constant.character.escape.ansi-c.shell + + + match + \\[0-9]{3} + name + constant.character.escape.octal.shell + + + match + \\x[0-9a-fA-F]{2} + name + constant.character.escape.hex.shell + + + match + \\c. + name + constant.character.escape.control-char.shell + + + + + + support + + patterns + + + match + (?<=^|\s)(?::|\.)(?=\s|;|&|$) + name + support.function.builtin.shell + + + match + (?<![-/])\b(?:alias|bg|bind|break|builtin|caller|cd|command|compgen|complete|dirs|disown|echo|enable|eval|exec|exit|false|fc|fg|getopts|hash|help|history|jobs|kill|let|logout|popd|printf|pushd|pwd|read|readonly|set|shift|shopt|source|suspend|test|times|trap|true|type|ulimit|umask|unalias|unset|wait)\b + name + support.function.builtin.shell + + + + variable + + patterns + + + captures + + 1 + + name + punctuation.definition.variable.shell + + + match + (\$)[-*@#?$!0_] + name + variable.other.special.shell + + + captures + + 1 + + name + punctuation.definition.variable.shell + + + match + (\$)[1-9] + name + variable.other.positional.shell + + + captures + + 1 + + name + punctuation.definition.variable.shell + + + match + (\$)[a-zA-Z_][a-zA-Z0-9_]* + name + variable.other.normal.shell + + + begin + \$\{ + captures + + 0 + + name + punctuation.definition.variable.shell + + + end + \} + name + variable.other.bracket.shell + patterns + + + match + !|:[-=?]?|\*|@|#{1,2}|%{1,2}|/ + name + keyword.operator.expansion.shell + + + captures + + 1 + + name + punctuation.section.array.shell + + 3 + + name + punctuation.section.array.shell + + + match + (\[)([^\]]+)(\]) + + + + + + + scopeName + source.shell + uuid + DDEEA3ED-6B1C-11D9-8B10-000D93589AF6 + + diff --git a/ShellScript/Shell-Unix-Generic.tmLanguage.cache b/ShellScript/Shell-Unix-Generic.tmLanguage.cache new file mode 100644 index 0000000..8ac84c2 Binary files /dev/null and b/ShellScript/Shell-Unix-Generic.tmLanguage.cache differ diff --git a/ShellScript/case-..-esac-(case).sublime-snippet b/ShellScript/case-..-esac-(case).sublime-snippet new file mode 100644 index 0000000..5f94b66 --- /dev/null +++ b/ShellScript/case-..-esac-(case).sublime-snippet @@ -0,0 +1,9 @@ + + + case + source.shell + case … esac + diff --git a/ShellScript/elif-..-(elif).sublime-snippet b/ShellScript/elif-..-(elif).sublime-snippet new file mode 100644 index 0000000..0631c7b --- /dev/null +++ b/ShellScript/elif-..-(elif).sublime-snippet @@ -0,0 +1,7 @@ + + + elif + source.shell + elif … + diff --git a/ShellScript/for-...-done-(for).sublime-snippet b/ShellScript/for-...-done-(for).sublime-snippet new file mode 100644 index 0000000..40b211c --- /dev/null +++ b/ShellScript/for-...-done-(for).sublime-snippet @@ -0,0 +1,8 @@ + + + for + source.shell + for … done + diff --git a/ShellScript/for-in-done-(forin).sublime-snippet b/ShellScript/for-in-done-(forin).sublime-snippet new file mode 100644 index 0000000..79b657f --- /dev/null +++ b/ShellScript/for-in-done-(forin).sublime-snippet @@ -0,0 +1,8 @@ + + + forin + source.shell + for … in … done + diff --git a/ShellScript/if-...-then-(if).sublime-snippet b/ShellScript/if-...-then-(if).sublime-snippet new file mode 100644 index 0000000..7ef28e9 --- /dev/null +++ b/ShellScript/if-...-then-(if).sublime-snippet @@ -0,0 +1,8 @@ + + + if + source.shell + if … fi + diff --git a/ShellScript/until-(done).sublime-snippet b/ShellScript/until-(done).sublime-snippet new file mode 100644 index 0000000..996802c --- /dev/null +++ b/ShellScript/until-(done).sublime-snippet @@ -0,0 +1,8 @@ + + + until + source.shell + until … done + diff --git a/ShellScript/while-(done).sublime-snippet b/ShellScript/while-(done).sublime-snippet new file mode 100644 index 0000000..647dae3 --- /dev/null +++ b/ShellScript/while-(done).sublime-snippet @@ -0,0 +1,8 @@ + + + while + source.shell + while … done + diff --git a/SublimeLinter/.codeintel/config b/SublimeLinter/.codeintel/config new file mode 100644 index 0000000..cadb2ed --- /dev/null +++ b/SublimeLinter/.codeintel/config @@ -0,0 +1,9 @@ +{ + "Python": { + "pythonExtraPaths": [ + "libs", + "~/Applications/Sublime Text 2.app/Contents/MacOS", + "/Applications/Sublime Text 2.app/Contents/MacOS" + ] + } +} diff --git a/SublimeLinter/.gitignore b/SublimeLinter/.gitignore new file mode 100644 index 0000000..6c81281 --- /dev/null +++ b/SublimeLinter/.gitignore @@ -0,0 +1,7 @@ +.git +.hg +.svn + +*.pyc +*.pyo + diff --git a/SublimeLinter/Default (Linux).sublime-keymap b/SublimeLinter/Default (Linux).sublime-keymap new file mode 100644 index 0000000..c7c19ed --- /dev/null +++ b/SublimeLinter/Default (Linux).sublime-keymap @@ -0,0 +1,5 @@ +[ + { "keys": ["ctrl+alt+l"], "command": "sublimelinter", "args": {"action": "lint"} }, + { "keys": ["ctrl+alt+e"], "command": "find_next_lint_error" }, + { "keys": ["ctrl+alt+shift+e"], "command": "find_previous_lint_error" } +] diff --git a/SublimeLinter/Default (OSX).sublime-keymap b/SublimeLinter/Default (OSX).sublime-keymap new file mode 100644 index 0000000..0000d03 --- /dev/null +++ b/SublimeLinter/Default (OSX).sublime-keymap @@ -0,0 +1,5 @@ +[ + { "keys": ["ctrl+super+l"], "command": "sublimelinter", "args": {"action": "lint"} }, + { "keys": ["ctrl+super+e"], "command": "find_next_lint_error" }, + { "keys": ["ctrl+super+shift+e"], "command": "find_previous_lint_error" } +] diff --git a/SublimeLinter/Default (Windows).sublime-keymap b/SublimeLinter/Default (Windows).sublime-keymap new file mode 100644 index 0000000..c7c19ed --- /dev/null +++ b/SublimeLinter/Default (Windows).sublime-keymap @@ -0,0 +1,5 @@ +[ + { "keys": ["ctrl+alt+l"], "command": "sublimelinter", "args": {"action": "lint"} }, + { "keys": ["ctrl+alt+e"], "command": "find_next_lint_error" }, + { "keys": ["ctrl+alt+shift+e"], "command": "find_previous_lint_error" } +] diff --git a/SublimeLinter/Default.sublime-commands b/SublimeLinter/Default.sublime-commands new file mode 100644 index 0000000..39c5aa9 --- /dev/null +++ b/SublimeLinter/Default.sublime-commands @@ -0,0 +1,37 @@ +[ + { + "caption": "SublimeLinter: Lint Current File", + "command": "sublimelinter_lint", + "args": {"action": "lint"} + }, + { + "caption": "SublimeLinter: Show Error List", + "command": "sublimelinter_show_errors", + "args": {"action": "lint", "show_popup": true} + }, + { + "caption": "SublimeLinter: Enable Background Linting", + "command": "sublimelinter_lint", + "args": {"action": "on"} + }, + { + "caption": "SublimeLinter: Enable Load-Save Linting", + "command": "sublimelinter_enable_load_save", + "args": {"action": "load-save"} + }, + { + "caption": "SublimeLinter: Disable Background Linting", + "command": "sublimelinter_disable", + "args": {"action": "off"} + }, + { + "caption": "SublimeLinter: Extract Annotations", + "command": "sublimelinter_annotations", + "args": {} + }, + { + "caption": "SublimeLinter: Reset", + "command": "sublimelinter_lint", + "args": {"action": "reset"} + } +] diff --git a/SublimeLinter/Kronuz-SublimeLinter-74b14ea/.codeintel/config b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/.codeintel/config new file mode 100644 index 0000000..cadb2ed --- /dev/null +++ b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/.codeintel/config @@ -0,0 +1,9 @@ +{ + "Python": { + "pythonExtraPaths": [ + "libs", + "~/Applications/Sublime Text 2.app/Contents/MacOS", + "/Applications/Sublime Text 2.app/Contents/MacOS" + ] + } +} diff --git a/SublimeLinter/Kronuz-SublimeLinter-74b14ea/.gitignore b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/.gitignore new file mode 100644 index 0000000..6c81281 --- /dev/null +++ b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/.gitignore @@ -0,0 +1,7 @@ +.git +.hg +.svn + +*.pyc +*.pyo + diff --git a/SublimeLinter/Kronuz-SublimeLinter-74b14ea/Default (Linux).sublime-keymap b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/Default (Linux).sublime-keymap new file mode 100644 index 0000000..c7c19ed --- /dev/null +++ b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/Default (Linux).sublime-keymap @@ -0,0 +1,5 @@ +[ + { "keys": ["ctrl+alt+l"], "command": "sublimelinter", "args": {"action": "lint"} }, + { "keys": ["ctrl+alt+e"], "command": "find_next_lint_error" }, + { "keys": ["ctrl+alt+shift+e"], "command": "find_previous_lint_error" } +] diff --git a/SublimeLinter/Kronuz-SublimeLinter-74b14ea/Default (OSX).sublime-keymap b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/Default (OSX).sublime-keymap new file mode 100644 index 0000000..0000d03 --- /dev/null +++ b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/Default (OSX).sublime-keymap @@ -0,0 +1,5 @@ +[ + { "keys": ["ctrl+super+l"], "command": "sublimelinter", "args": {"action": "lint"} }, + { "keys": ["ctrl+super+e"], "command": "find_next_lint_error" }, + { "keys": ["ctrl+super+shift+e"], "command": "find_previous_lint_error" } +] diff --git a/SublimeLinter/Kronuz-SublimeLinter-74b14ea/Default (Windows).sublime-keymap b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/Default (Windows).sublime-keymap new file mode 100644 index 0000000..c7c19ed --- /dev/null +++ b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/Default (Windows).sublime-keymap @@ -0,0 +1,5 @@ +[ + { "keys": ["ctrl+alt+l"], "command": "sublimelinter", "args": {"action": "lint"} }, + { "keys": ["ctrl+alt+e"], "command": "find_next_lint_error" }, + { "keys": ["ctrl+alt+shift+e"], "command": "find_previous_lint_error" } +] diff --git a/SublimeLinter/Kronuz-SublimeLinter-74b14ea/Default.sublime-commands b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/Default.sublime-commands new file mode 100644 index 0000000..39c5aa9 --- /dev/null +++ b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/Default.sublime-commands @@ -0,0 +1,37 @@ +[ + { + "caption": "SublimeLinter: Lint Current File", + "command": "sublimelinter_lint", + "args": {"action": "lint"} + }, + { + "caption": "SublimeLinter: Show Error List", + "command": "sublimelinter_show_errors", + "args": {"action": "lint", "show_popup": true} + }, + { + "caption": "SublimeLinter: Enable Background Linting", + "command": "sublimelinter_lint", + "args": {"action": "on"} + }, + { + "caption": "SublimeLinter: Enable Load-Save Linting", + "command": "sublimelinter_enable_load_save", + "args": {"action": "load-save"} + }, + { + "caption": "SublimeLinter: Disable Background Linting", + "command": "sublimelinter_disable", + "args": {"action": "off"} + }, + { + "caption": "SublimeLinter: Extract Annotations", + "command": "sublimelinter_annotations", + "args": {} + }, + { + "caption": "SublimeLinter: Reset", + "command": "sublimelinter_lint", + "args": {"action": "reset"} + } +] diff --git a/SublimeLinter/Kronuz-SublimeLinter-74b14ea/Main.sublime-menu b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/Main.sublime-menu new file mode 100644 index 0000000..d5d0d08 --- /dev/null +++ b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/Main.sublime-menu @@ -0,0 +1,99 @@ +[ + { + "caption": "Preferences", + "mnemonic": "n", + "id": "preferences", + "children": + [ + { + "caption": "Package Settings", + "mnemonic": "P", + "id": "package-settings", + "children": + [ + { + "caption": "SublimeLinter", + "children": + [ + { + "command": "open_file", + "args": {"file": "${packages}/SublimeLinter/README.rst"}, + "caption": "README" + }, + { + "command": "open_file", + "args": {"file": "${packages}/SublimeLinter/changelog.txt"}, + "caption": "Change Log" + }, + { "caption": "-" }, + { + "command": "open_file", + "args": {"file": "${packages}/SublimeLinter/SublimeLinter.sublime-settings"}, + "caption": "Settings – Default" + }, + { + "command": "open_file", + "args": {"file": "${packages}/User/SublimeLinter.sublime-settings"}, + "caption": "Settings – User" + }, + { + "command": "open_file_settings", + "caption": "Settings – Syntax Specific – User" + }, + { "caption": "-" }, + { + "command": "open_file", + "args": { + "file": "${packages}/SublimeLinter/Default (OSX).sublime-keymap", + "platform": "OSX" + }, + "caption": "Key Bindings – Default" + }, + { + "command": "open_file", + "args": { + "file": "${packages}/SublimeLinter/Default (Linux).sublime-keymap", + "platform": "Linux" + }, + "caption": "Key Bindings – Default" + }, + { + "command": "open_file", + "args": { + "file": "${packages}/SublimeLinter/Default (Windows).sublime-keymap", + "platform": "Windows" + }, + "caption": "Key Bindings – Default" + }, + { + "command": "open_file", + "args": { + "file": "${packages}/User/Default (OSX).sublime-keymap", + "platform": "OSX" + }, + "caption": "Key Bindings – User" + }, + { + "command": "open_file", + "args": { + "file": "${packages}/User/Default (Linux).sublime-keymap", + "platform": "Linux" + }, + "caption": "Key Bindings – User" + }, + { + "command": "open_file", + "args": { + "file": "${packages}/User/Default (Windows).sublime-keymap", + "platform": "Windows" + }, + "caption": "Key Bindings – User" + }, + { "caption": "-" } + ] + } + ] + } + ] + } +] diff --git a/SublimeLinter/Kronuz-SublimeLinter-74b14ea/README.rst b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/README.rst new file mode 100644 index 0000000..63f4d39 --- /dev/null +++ b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/README.rst @@ -0,0 +1,330 @@ +SublimeLinter +============= + +SublimeLinter is a plugin that supports "lint" programs (known as "linters"). SublimeLinter highlights +lines of code the linter deems to contain (potential) errors. It also +supports highlighting special annotations (for example: TODO) so that they +can be quickly located. + +SublimeLinter has built in linters for the following languages: + +* Javascript - lint via built in `jshint `_ or the `closure linter (gjslint) `_ (if installed) +* Objective-J - lint via built-in `capp_lint `_ +* python - native, moderately-complete lint +* ruby - syntax checking via "ruby -wc" +* php - syntax checking via "php -l" +* java - lint via "javac -Xlint" +* perl - syntax+deprecation checking via "perl -c" + + +Installing +---------- +**With the Package Control plugin:** The easiest way to install SublimeLinter is through Package Control, which can be found at this site: http://wbond.net/sublime_packages/package_control + +Once you install Package Control, restart ST2 and bring up the Command Palette (``Command+Shift+P`` on OS X, ``Control+Shift+P`` on Linux/Windows). Select "Package Control: Install Package", wait while Package Control fetches the latest package list, then select SublimeLinter when the list appears. The advantage of using this method is that Package Control will automatically keep SublimeLinter up to date with the latest version. + +**Without Git:** Download the latest source from `GitHub `_ and copy the SublimeLinter folder to your Sublime Text "Packages" directory. + +**With Git:** Clone the repository in your Sublime Text "Packages" directory:: + + git clone git://github.com/Kronuz/SublimeLinter.git + + +The "Packages" directory is located at: + +* OS X:: + + ~/Library/Application Support/Sublime Text 2/Packages/ + +* Linux:: + + ~/.config/sublime-text-2/Packages/ + +* Windows:: + + %APPDATA%/Sublime Text 2/Packages/ + +Using +----- +SublimeLinter runs in one of three modes, which is determined by the "sublimelinter" user setting: + +* **Background mode (the default)** - When the "sublimelinter" setting is true, linting is performed in the background as you modify a file (if the relevant linter supports it). If you like instant feedback, this is the best way to use SublimeLinter. If you want feedback, but not instantly, you can try another mode or set a minimum queue delay so that the linter will only run after a certain amount of idle time. +* **Load-save mode** - When the "sublimelinter" setting is "load-save", linting is performed only when a file is loaded and after saving. Errors are cleared as soon as the file is modified. +* **On demand mode** - When the "sublimelinter" setting is false, linting is performed only when initiated by you. Use the Control+Command+l (OS X) or Control+Alt+l (Linux/Windows) key equivalent or the Command Palette to lint the current file. If the current file has no associated linter, the command will not be available. + +Within a file whose language/syntax is supported by SublimeLinter, you can control SublimeLinter via the Command Palette (Command+Shift+P on OS X, Control+Shift+P on Linux/Windows). The available commands are: + +* **SublimeLinter: Lint Current File** - Lints the current file, highlights any errors and displays how many errors were found. +* **SublimeLinter: Show Error List** - Lints the current file, highlights any errors and displays a quick panel with any errors that are found. Selecting an item from the quick panel jumps to that line. +* **SublimeLinter: Enable Background Linting** - Enables background linting mode for the current view and lints it. +* **SublimeLinter: Disable Background Linting** - Disables background linting mode for the current view and clears all lint errors. +* **SublimeLinter: Enable Load-Save Linting** - Enables load-save linting mode for the current view and clears all lint errors. +* **SublimeLinter: Reset** - Clears all lint errors and sets the linting mode to the value in the SublimeLinter.sublime-settings file. + +Depending on the file and the current state of background enabling, some of the commands will not be available. + +When an error is highlighted by the linter, putting the cursor on the offending line will result in the error message being displayed on the status bar. + +If you want to be shown a popup list of all errors whenever a file is saved, modify the user setting:: + + "sublimelinter_popup_errors_on_save": true + +If there are errors in the file, a quick panel will appear which shows the error message, line number and source code for each error. The starting location of all errors on the line are marked with "^". Selecting an error in the quick panel jumps directly to the location of the first error on that line. + +While editing a file, you can quickly move to the next/previous lint error with the following key equivalents: + +* **OS X**:: + + next: Control+Command+e + prev: Control+Command+Shift+e + +* **Linux, Windows**:: + + next: Control+Alt+e + prev: Control+Alt+Shift+e + +By default the search will wrap. You can turn wrapping off with the user setting:: + + "sublimelinter_wrap_find": false + +Linter-specific notes +~~~~~~~~~~~~~~~~~~~~~ +Following are notes specific to individual linters that you should be aware of: + +* **JavaScript** - If the "javascript_linter" setting is "jshint", this linter runs `jshint `_ using JavaScriptCore on Mac OS X or node.js on other platforms, which can be downloaded from `the node.js site `. After installation, if node cannot be found by SublimeLinter, you may have to set the path to node in the "sublimelinter\_executable\_map" setting. See "Configuring" below for info on SublimeLinter settings. + + If the "javascript_linter" setting is "gjslint", this linter runs the `closure linter (gjslint) `_. After installation, if gjslint cannot be found by SublimeLinter, you may have to set the path to gjslint in the "sublimelinter\_executable\_map" setting. + + You may want to modify the options passed to jshint or gjslint. This can be done globally or on a per-project basis by using the **jshint_options** or **gjslint_options** setting. Refer to the jshint.org site or run ``gjslint --help`` for more information on the configuration options available. + +* **ruby** - If you are using rvm or rbenv, you will probably have to specify the full path to the ruby you are using in the ``sublimelinter_executable_map`` setting. See "Configuring" below for more info. + +* **java** - Because it uses ``javac`` to do linting, each time you run the linter the entire dependency graph of the current file will be checked. Depending on the number of classes you import, this can be **extremely** slow. Also note that you **must** provide the ``-sourcepath``, ``-classpath``, ``-Xlint`` and ``{filename}`` arguments to ``javac`` in your per-project settings. See "Per-project settings" below for more information. + +Configuring +----------- +There are a number of configuration options available to customize the behavior of SublimeLinter and its linters. For the latest information on what options are available, select the menu item ``Preferences->Package Settings->SublimeLinter->Settings - Default``. To change the options in your user settings, select the menu item ``Preferences->File Settings - User``. + +**NOTE:** Any settings you specify in your user settings will **completely** replace the setting in the default file. + +Per-project settings +~~~~~~~~~~~~~~~~~~~~ +SublimeLinter supports per-project/per-language settings. This is useful if a linter requires path configuration on a per-project basis. To edit your project settings, select the menu item ``Project->Edit Project``. If there is no "settings" object at the top level, add one and then add a "SublimeLinter" sub-object, like this:: + + { + "folders": + [ + { + "path": "/Users/aparajita/Projects/foo/src" + } + ], + "settings": + { + "SublimeLinter": + { + } + } + } + +Within the "SublimeLinter" object, you can add a settings object for each language. The language name must match the language item in the linter's CONFIG object, which can be found in the linter's source file in the SublimeLinter/sublimelinter/modules folder. Each language can have two settings: + +* "working_directory" - If present and a valid absolute directory path, the working directory is set to this path before the linter executes. This is useful if you are providing linter arguments that contain paths and you want to use working directory-relative paths instead of absolute paths. +* "lint_args" - If present, it must be a sequence of string arguments to pass to the linter. If your linter expects a filename as an argument, use the argument "{filename}" as a placeholder. Note that if you provide this item, you are responsible for passing **all** required arguments to the linter. + +For example, let's say we are editing a Java project and want to use the "java" linter, which requires a source path and class path. In addition, we want to ignore serialization errors. Our project settings might look like this:: + + { + "folders": + [ + { + "path": "/Users/aparajita/Projects/foo/src" + } + ], + "settings": + { + "SublimeLinter": + { + "java": + { + "working_directory": "/Users/aparajita/Projects/foo", + + "lint_args": + [ + "-sourcepath", "src", + "-classpath", "libs/log4j-1.2.9.jar:libs/commons-logging-1.1.jar", + "-Xlint", "-Xlint:-serial", + "{filename}" + ] + } + } + } + } + + +Customizing colors +~~~~~~~~~~~~~~~~~~ +**IMPORTANT** - The theme style names have recently changed. The old and new color +names are:: + + Old New + --------------------- ----------------------------- + sublimelinter. sublimelinter.outline. + invalid. sublimelinter.underline. + +Please change the names in your color themes accordingly. + +There are three types of "errors" flagged by SublimeLinter: illegal, +violation, and warning. For each type, SublimeLinter will indicate the offending +line and the character position at which the error occurred on the line. + +By default SublimeLinter will outline offending lines using the background color +of the "sublimelinter.outline." theme style, and underline the character position +using the background color of the "sublimelinter.underline." theme style, where +is one of the three error types. + +If these styles are not defined, the color will be black when there is a light +background color and black when there is a dark background color. You may +define a single "sublimelinter.outline" or "sublimelinter.underline" style to color all three types, +or define separate substyles for one or more types to color them differently. + +If you want to make the offending lines glaringly obvious (perhaps for those +who tend to ignore lint errors), you can set the user setting:: + + "sublimelinter_fill_outlines": true + +When this is set true, lines that have errors will be colored with the background +and foreground color of the "sublime.outline." theme style. Unless you have defined +those styles, this setting should be left false. + +You may also mark lines with errors by putting an "x" in the gutter with the user setting:: + + "sublimelinter_gutter_marks": true + +To customize the colors used for highlighting errors and user notes, add the following +to your theme (adapting the color to your liking):: + + + name + SublimeLinter Annotations + scope + sublimelinter.notes + settings + + background + #FFFFAA + foreground + #FFFFFF + + + + name + SublimeLinter Error Outline + scope + sublimelinter.outline.illegal + settings + + background + #FF4A52 + foreground + #FFFFFF + + + + name + SublimeLinter Error Underline + scope + sublimelinter.underline.illegal + settings + + background + #FF0000 + + + + name + SublimeLinter Warning Outline + scope + sublimelinter.outline.warning + settings + + background + #DF9400 + foreground + #FFFFFF + + + + name + SublimeLinter Warning Underline + scope + sublimelinter.underline.warning + settings + + background + #FF0000 + + + + name + SublimeLinter Violation Outline + scope + sublimelinter.outline.violation + settings + + background + #ffffff33 + foreground + #FFFFFF + + + + name + SublimeLinter Violation Underline + scope + sublimelinter.underline.violation + settings + + background + #FF0000 + + + + +Troubleshooting +--------------- +If a linter does not seem to be working, you can check the ST2 console to see if it was enabled. When SublimeLinter is loaded, you will see messages in the console like this:: + + Reloading plugin /Users/aparajita/Library/Application Support/Sublime Text 2/Packages/SublimeLinter/sublimelinter_plugin.py + SublimeLinter: JavaScript loaded + SublimeLinter: annotations loaded + SublimeLinter: Objective-J loaded + SublimeLinter: perl loaded + SublimeLinter: php loaded + SublimeLinter: python loaded + SublimeLinter: ruby loaded + SublimeLinter: pylint loaded + +The first time a linter is asked to lint, it will check to see if it can be enabled. You will then see messages like this:: + + SublimeLinter: JavaScript enabled (using JavaScriptCore) + SublimeLinter: Ruby enabled (using "ruby" for executable) + +Let's say the ruby linter is not working. If you look at the console, you may see a message like this:: + + SublimeLinter: ruby disabled ("ruby" cannot be found) + +This means that the ruby executable cannot be found on your system, which means it is not installed or not in your executable path. + +Creating New Linters +-------------------- +If you wish to create a new linter to support a new language, SublimeLinter makes it easy. Here are the steps involved: + +* Create a new file in sublimelinter/modules. If your linter uses an external executable, you will probably want to copy perl.py. If your linter uses built in code, copy objective-j.py. The convention is to name the file the same as the language that will be linted. + +* Configure the CONFIG dict in your module. See the comments in base\_linter.py for information on the values in that dict. You only need to set the values in your module that differ from the defaults in base\_linter.py, as your module's CONFIG is merged with the default. Note that if your linter uses an external executable that does not take stdin, setting 'input\_method' to INPUT\_METHOD\_TEMP\_FILE will allow interactive linting with that executable. + +* If your linter uses built in code, override ``built_in_check()`` and return the errors found. + +* Override ``parse_errors()`` and process the errors. If your linter overrides ``built_in_check()``, ``parse_errors()`` will receive the result of that method. If your linter uses an external executable, ``parse_errors()`` receives the raw output of the executable, stripped of leading and trailing whitespace. + +If your linter has more complex requirements, see the comments for CONFIG in base\_linter.py, and use the existing linters as guides. diff --git a/SublimeLinter/Kronuz-SublimeLinter-74b14ea/SublimeLinter.py b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/SublimeLinter.py new file mode 100644 index 0000000..94f01c3 --- /dev/null +++ b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/SublimeLinter.py @@ -0,0 +1,892 @@ +# -*- coding: utf-8 -*- +import os +import re +import sys +import time +import threading + +import sublime +import sublime_plugin + +from sublimelinter.loader import Loader +from sublimelinter.modules.base_linter import INPUT_METHOD_FILE + +LINTERS = {} # mapping of language name to linter module +QUEUE = {} # views waiting to be processed by linter +ERRORS = {} # error messages on given line obtained from linter; they are + # displayed in the status bar when cursor is on line with error +VIOLATIONS = {} # violation messages, they are displayed in the status bar +WARNINGS = {} # warning messages, they are displayed in the status bar +UNDERLINES = {} # underline regions related to each lint message +TIMES = {} # collects how long it took the linting to complete +MOD_LOAD = Loader(os.getcwd(), LINTERS) # utility to load (and reload + # if necessary) linter modules [useful when working on plugin] + + +# For snappier linting, different delays are used for different linting times: +# (linting time, delays) +DELAYS = ( + (50, (50, 100)), + (100, (100, 300)), + (200, (200, 500)), + (400, (400, 1000)), + (800, (800, 2000)), + (1600, (1600, 3000)), +) + +MARKS = { + 'violation': ('', 'dot'), + 'warning': ('', 'dot'), + 'illegal': ('', 'circle'), +} + +# All available settings for SublimeLinter; +# only these are inherited from SublimeLinter.sublime-settings +ALL_SETTINGS = [ + 'sublimelinter', + 'sublimelinter_executable_map', + 'sublimelinter_syntax_map', + 'sublimelinter_disable', + 'sublimelinter_delay', + 'sublimelinter_fill_outlines', + 'sublimelinter_gutter_marks', + 'sublimelinter_wrap_find', + 'sublimelinter_popup_errors_on_save', + 'javascript_linter', + 'jshint_options', + 'gjslint_options', + 'gjslint_ignore', + 'pep8_ignore', + 'pyflakes_ignore', + 'pyflakes_ignore_import_*', + 'sublimelinter_objj_check_ascii', + 'sublimelinter_notes', + 'annotations' +] + +WHITESPACE_RE = re.compile(r'\s+') + + +def get_delay(t, view): + delay = 0 + for _t, d in DELAYS: + if _t <= t: + delay = d + delay = delay or DELAYS[0][1] + + # If the user specifies a delay greater than the built in delay, + # figure they only want to see marks when idle. + minDelay = int(view.settings().get('sublimelinter_delay', 0) * 1000) + if minDelay > delay[1]: + erase_lint_marks(view) + + return (minDelay, minDelay) if minDelay > delay[1] else delay + + +def last_selected_lineno(view): + viewSel = view.sel() + if not viewSel: + return None + return view.rowcol(viewSel[0].end())[0] + + +def update_statusbar(view): + vid = view.id() + lineno = last_selected_lineno(view) + errors = [] + + if lineno is not None: + if vid in ERRORS and lineno in ERRORS[vid]: + errors.extend(ERRORS[vid][lineno]) + + if vid in VIOLATIONS and lineno in VIOLATIONS[vid]: + errors.extend(VIOLATIONS[vid][lineno]) + + if vid in WARNINGS and lineno in WARNINGS[vid]: + errors.extend(WARNINGS[vid][lineno]) + + if errors: + view.set_status('Linter', '; '.join(errors)) + else: + view.erase_status('Linter') + + +def background_run(linter, view, **kwargs): + '''run a linter on a given view if settings is set appropriately''' + if linter: + run_once(linter, view, **kwargs) + + if view.settings().get('sublimelinter_notes'): + highlight_notes(view) + + +def run_once(linter, view, event=None, **kwargs): + '''run a linter on a given view regardless of user setting''' + if linter == LINTERS.get('annotations', None): + highlight_notes(view) + return + + vid = view.id() + ERRORS[vid] = {} + VIOLATIONS[vid] = {} + WARNINGS[vid] = {} + start = time.time() + text = view.substr(sublime.Region(0, view.size())).encode('utf-8') + lines, error_underlines, violation_underlines, warning_underlines, ERRORS[vid], VIOLATIONS[vid], WARNINGS[vid] = linter.run(view, text, view.file_name() or '') + + UNDERLINES[vid] = error_underlines[:] + UNDERLINES[vid].extend(violation_underlines) + UNDERLINES[vid].extend(warning_underlines) + + add_lint_marks(view, lines, error_underlines, violation_underlines, warning_underlines) + update_statusbar(view) + end = time.time() + TIMES[vid] = (end - start) * 1000 # Keep how long it took to lint + + if event == 'on_post_save' and view.settings().get('sublimelinter_popup_errors_on_save'): + popup_error_list(view) + + +def popup_error_list(view): + vid = view.id() + errors = ERRORS[vid].copy() + + for message_map in [VIOLATIONS[vid], WARNINGS[vid]]: + for line, messages in message_map.items(): + if line in errors: + errors[line].extend(messages) + else: + errors[line] = messages + + # Flatten the errors into a list + error_list = [] + + for line in sorted(errors.keys()): + for index, message in enumerate(errors[line]): + error_list.append({'line': line, 'message': message}) + + panel_items = [] + + for error in error_list: + line_text = view.substr(view.full_line(view.text_point(error['line'], 0))) + item = [error['message'], u'{0}: {1}'.format(error['line'] + 1, line_text.strip())] + panel_items.append(item) + + def on_done(selected_item): + if selected_item == -1: + return + + selected = view.sel() + selected.clear() + + error = error_list[selected_item] + region_begin = view.text_point(error['line'], 0) + + # Go to the first non-whitespace character of the line + line_text = view.substr(view.full_line(region_begin)) + match = WHITESPACE_RE.match(line_text) + + if (match): + region_begin += len(match.group(0)) + + selected.add(sublime.Region(region_begin, region_begin)) + # We have to force a move to update the cursor position + view.run_command('move', {'by': 'characters', 'forward': True}) + view.run_command('move', {'by': 'characters', 'forward': False}) + view.show_at_center(region_begin) + + view.window().show_quick_panel(panel_items, on_done) + + +def add_lint_marks(view, lines, error_underlines, violation_underlines, warning_underlines): + '''Adds lint marks to view.''' + vid = view.id() + erase_lint_marks(view) + types = {'warning': warning_underlines, 'violation': violation_underlines, 'illegal': error_underlines} + + for type_name, underlines in types.items(): + if underlines: + view.add_regions('lint-underline-' + type_name, underlines, 'sublimelinter.underline.' + type_name, sublime.DRAW_EMPTY_AS_OVERWRITE) + + if lines: + fill_outlines = view.settings().get('sublimelinter_fill_outlines', False) + gutter_mark_enabled = True if view.settings().get('sublimelinter_gutter_marks', False) else False + + outlines = {'warning': [], 'violation': [], 'illegal': []} + + for line in ERRORS[vid]: + outlines['illegal'].append(view.full_line(view.text_point(line, 0))) + + for line in WARNINGS[vid]: + outlines['warning'].append(view.full_line(view.text_point(line, 0))) + + for line in VIOLATIONS[vid]: + outlines['violation'].append(view.full_line(view.text_point(line, 0))) + + for lint_type in outlines: + if outlines[lint_type]: + args = [ + 'lint-outlines-{0}'.format(lint_type), + outlines[lint_type], + 'sublimelinter.outline.{0}'.format(lint_type), + MARKS[lint_type][gutter_mark_enabled] + ] + if not fill_outlines: + args.append(sublime.DRAW_OUTLINED) + view.add_regions(*args) + + +def erase_lint_marks(view): + '''erase all "lint" error marks from view''' + view.erase_regions('lint-underline-illegal') + view.erase_regions('lint-underline-violation') + view.erase_regions('lint-underline-warning') + view.erase_regions('lint-outlines-illegal') + view.erase_regions('lint-outlines-violation') + view.erase_regions('lint-outlines-warning') + view.erase_regions('lint-annotations') + + +def get_lint_regions(view, reverse=False, coalesce=False): + vid = view.id() + underlines = UNDERLINES[vid][:] + + if (coalesce): + # Each of these regions is one character, so transform it into the character points + points = sorted([region.begin() for region in underlines]) + + # Now coalesce adjacent characters into a single region + underlines = [] + last_point = -999 + + for point in points: + if point != last_point + 1: + underlines.append(sublime.Region(point, point)) + else: + region = underlines[-1] + underlines[-1] = sublime.Region(region.begin(), point) + + last_point = point + + # Now get all outlines, which includes the entire line where underlines are + outlines = view.get_regions('lint-outlines-illegal') + outlines.extend(view.get_regions('lint-outlines-violation')) + outlines.extend(view.get_regions('lint-outlines-warning')) + outlines.extend(view.get_regions('lint-annotations')) + + # If an outline region contains an underline region, use only the underline + regions = underlines + + for outline in outlines: + contains_underlines = False + + for underline in underlines: + if outline.contains(underline): + contains_underlines = True + break + + if not contains_underlines: + regions.append(outline) + + return sorted(regions, key=lambda x: x.begin(), reverse=reverse) + + +def select_lint_region(view, region): + selected = view.sel() + selected.clear() + + # Find the first underline region within the region to select. + # If there are none, put the cursor at the beginning of the line. + underlineRegion = find_underline_within(view, region) + + if underlineRegion is None: + underlineRegion = sublime.Region(region.begin(), region.begin()) + + selected.add(underlineRegion) + view.show(underlineRegion, True) + + +def find_underline_within(view, region): + underlines = view.get_regions('lint-underline-illegal') + underlines.extend(view.get_regions('lint-underline-violation')) + underlines.extend(view.get_regions('lint-underline-warning')) + underlines.sort(key=lambda x: x.begin()) + + for underline in underlines: + if region.contains(underline): + return underline + + return None + + +def syntax_name(view): + syntax = os.path.basename(view.settings().get('syntax')) + syntax = os.path.splitext(syntax)[0] + return syntax + + +def select_linter(view, ignore_disabled=False): + '''selects the appropriate linter to use based on language in current view''' + syntax = syntax_name(view) + lc_syntax = syntax.lower() + language = None + linter = None + syntaxMap = view.settings().get('sublimelinter_syntax_map', {}) + + if syntax in syntaxMap: + language = syntaxMap[syntax] + elif lc_syntax in syntaxMap: + language = syntaxMap[lc_syntax] + elif lc_syntax in LINTERS: + language = lc_syntax + + if language: + if ignore_disabled: + disabled = [] + else: + disabled = view.settings().get('sublimelinter_disable', []) + + if language not in disabled: + linter = LINTERS[language] + + # If the enabled state is False, it must be checked. + # Enabled checking has to be deferred to first view use because + # user settings cannot be loaded during plugin startup. + if not linter.enabled: + enabled, message = linter.check_enabled(view) + print 'SublimeLinter: {0} {1} ({2})'.format(language, 'enabled' if enabled else 'disabled', message) + + if not enabled: + del LINTERS[language] + linter = None + + return linter + + +def highlight_notes(view): + '''highlight user-specified annotations in a file''' + view.erase_regions('lint-annotations') + text = view.substr(sublime.Region(0, view.size())) + regions = LINTERS['annotations'].built_in_check(view, text, '') + + if regions: + view.add_regions('lint-annotations', regions, 'sublimelinter.annotations', sublime.DRAW_EMPTY_AS_OVERWRITE) + + +def queue_linter(linter, view, timeout, busy_timeout, preemptive=False): + '''Put the current view in a queue to be examined by a linter''' + if linter is None: + erase_lint_marks(view) # may have changed file type and left marks behind + + # No point in queuing anything if no linters will run + if not view.settings().get('sublimelinter_notes'): + return + + # user annotations could be present in all types of files + def _update_view(view): + linter = select_linter(view) + try: + background_run(linter, view) + except RuntimeError, ex: + print ex + + queue(view, _update_view, timeout, busy_timeout, preemptive) + + +def background_linter(): + __lock_.acquire() + try: + views = QUEUE.values() + QUEUE.clear() + finally: + __lock_.release() + + for view, callback, args, kwargs in views: + def _callback(): + callback(view, *args, **kwargs) + sublime.set_timeout(_callback, 0) + +################################################################################ +# Queue dispatcher system: + +queue_dispatcher = background_linter +queue_thread_name = 'background linter' +MAX_DELAY = 10 + + +def queue_loop(): + '''An infinite loop running the linter in a background thread meant to + update the view after user modifies it and then does no further + modifications for some time as to not slow down the UI with linting.''' + global __signaled_, __signaled_first_ + + while __loop_: + #print 'acquire...' + __semaphore_.acquire() + __signaled_first_ = 0 + __signaled_ = 0 + #print 'DISPATCHING!', len(QUEUE) + queue_dispatcher() + + +def queue(view, callback, timeout, busy_timeout=None, preemptive=False, args=[], kwargs={}): + global __signaled_, __signaled_first_ + now = time.time() + __lock_.acquire() + + try: + QUEUE[view.id()] = (view, callback, args, kwargs) + if now < __signaled_ + timeout * 4: + timeout = busy_timeout or timeout + + __signaled_ = now + _delay_queue(timeout, preemptive) + if not __signaled_first_: + __signaled_first_ = __signaled_ + #print 'first', + #print 'queued in', (__signaled_ - now) + finally: + __lock_.release() + + +def _delay_queue(timeout, preemptive): + global __signaled_, __queued_ + now = time.time() + + if not preemptive and now <= __queued_ + 0.01: + return # never delay queues too fast (except preemptively) + + __queued_ = now + _timeout = float(timeout) / 1000 + + if __signaled_first_: + if MAX_DELAY > 0 and now - __signaled_first_ + _timeout > MAX_DELAY: + _timeout -= now - __signaled_first_ + if _timeout < 0: + _timeout = 0 + timeout = int(round(_timeout * 1000, 0)) + + new__signaled_ = now + _timeout - 0.01 + + if __signaled_ >= now - 0.01 and (preemptive or new__signaled_ >= __signaled_ - 0.01): + __signaled_ = new__signaled_ + #print 'delayed to', (preemptive, __signaled_ - now) + + def _signal(): + if time.time() < __signaled_: + return + __semaphore_.release() + sublime.set_timeout(_signal, timeout) + + +def delay_queue(timeout): + __lock_.acquire() + try: + _delay_queue(timeout, False) + finally: + __lock_.release() + + +# only start the thread once - otherwise the plugin will get laggy +# when saving it often. +__semaphore_ = threading.Semaphore(0) +__lock_ = threading.Lock() +__queued_ = 0 +__signaled_ = 0 +__signaled_first_ = 0 + +# First finalize old standing threads: +__loop_ = False +__pre_initialized_ = False + + +def queue_finalize(timeout=None): + global __pre_initialized_ + + for thread in threading.enumerate(): + if thread.isAlive() and thread.name == queue_thread_name: + __pre_initialized_ = True + thread.__semaphore_.release() + thread.join(timeout) +queue_finalize() + +# Initialize background thread: +__loop_ = True +__active_linter_thread = threading.Thread(target=queue_loop, name=queue_thread_name) +__active_linter_thread.__semaphore_ = __semaphore_ +__active_linter_thread.start() + +################################################################################ + +UNRECOGNIZED = ''' +* Unrecognized option * : %s +============================================== + +''' + + +def view_in_tab(view, title, text, file_type): + '''Helper function to display information in a tab. + ''' + tab = view.window().new_file() + tab.set_name(title) + _id = tab.buffer_id() + tab.set_scratch(_id) + tab.settings().set('gutter', True) + tab.settings().set('line_numbers', False) + tab.set_syntax_file(file_type) + ed = tab.begin_edit() + tab.insert(ed, 0, text) + tab.end_edit(ed) + return tab, _id + + +def lint_views(linter): + if not linter: + return + + viewsToLint = [] + + for window in sublime.windows(): + for view in window.views(): + viewLinter = select_linter(view) + + if viewLinter == linter: + viewsToLint.append(view) + + for view in viewsToLint: + queue_linter(linter, view, 0, 0, True) + + +def reload_view_module(view): + for name, linter in LINTERS.items(): + module = sys.modules[linter.__module__] + + if module.__file__ == view.file_name(): + print 'SublimeLinter: reloading language:', linter.language + MOD_LOAD.reload_module(module) + lint_views(linter) + break + + +def settings_changed(): + for window in sublime.windows(): + for view in window.views(): + linter = select_linter(view) + + if (linter): + reload_settings(view) + + +def reload_settings(view): + '''Restores user settings.''' + settings = sublime.load_settings(__name__ + '.sublime-settings') + settings.clear_on_change(__name__) + settings.add_on_change(__name__, settings_changed) + + for setting in ALL_SETTINGS: + if settings.get(setting) != None: + view.settings().set(setting, settings.get(setting)) + + if view.settings().get('sublimelinter') == None: + view.settings().set('sublimelinter', True) + + +class LintCommand(sublime_plugin.TextCommand): + '''command to interact with linters''' + + def __init__(self, view): + self.view = view + self.help_called = False + + def run_(self, action): + '''method called by default via view.run_command; + used to dispatch to appropriate method''' + if not action: + return + + try: + lc_action = action.lower() + except AttributeError: + return + + if lc_action == 'reset': + self.reset() + elif lc_action == 'on': + self.on() + elif lc_action == 'load-save': + self.enable_load_save() + elif lc_action == 'off': + self.off() + elif action.lower() in LINTERS: + self._run(lc_action) + + def reset(self): + '''Removes existing lint marks and restores user settings.''' + erase_lint_marks(self.view) + reload_settings(self.view) + + def on(self): + '''Turns background linting on.''' + self.view.settings().set('sublimelinter', True) + queue_linter(select_linter(self.view), self.view, 0, 0, True) + + def enable_load_save(self): + '''Turns load-save linting on.''' + self.view.settings().set('sublimelinter', 'load-save') + erase_lint_marks(self.view) + + def off(self): + '''Turns background linting off.''' + self.view.settings().set('sublimelinter', False) + erase_lint_marks(self.view) + + def _run(self, name): + '''runs an existing linter''' + run_once(LINTERS[name.lower()], self.view) + + +class BackgroundLinter(sublime_plugin.EventListener): + '''This plugin controls a linter meant to work in the background + to provide interactive feedback as a file is edited. It can be + turned off via a setting. + ''' + + def __init__(self): + super(BackgroundLinter, self).__init__() + self.lastSelectedLineNo = -1 + + def on_modified(self, view): + if view.is_scratch(): + return + + if view.settings().get('sublimelinter') != True: + erase_lint_marks(view) + return + + linter = select_linter(view) + + # File-based linters are not invoked during a modify + if linter and linter.input_method == INPUT_METHOD_FILE: + erase_lint_marks(view) + return + + # Reset the last selected line number so that the current line will show error messages + # when update_statusbar is called. + self.lastSelectedLineNo = -1 + delay = get_delay(TIMES.get(view.id(), 100), view) + queue_linter(linter, view, *delay) + + def on_load(self, view): + reload_settings(view) + + if view.is_scratch() or view.settings().get('sublimelinter') == False: + return + + background_run(select_linter(view), view, event='on_load') + + def on_post_save(self, view): + if view.is_scratch() or view.settings().get('sublimelinter') == False: + return + + reload_view_module(view) + linter = select_linter(view) + background_run(linter, view, event='on_post_save') + + def on_selection_modified(self, view): + if view.is_scratch(): + return + delay_queue(1000) # on movement, delay queue (to make movement responsive) + + # We only display errors in the status bar for the last line in the current selection. + # If that line number has not changed, there is no point in updating the status bar. + lastSelectedLineNo = last_selected_lineno(view) + + if lastSelectedLineNo != self.lastSelectedLineNo: + self.lastSelectedLineNo = lastSelectedLineNo + update_statusbar(view) + + +class FindLintErrorCommand(sublime_plugin.TextCommand): + '''This command is just a superclass for other commands, it is never enabled.''' + def is_enabled(self): + return select_linter(self.view) is not None + + def find_lint_error(self, forward): + regions = get_lint_regions(self.view, reverse=not forward, coalesce=True) + + if len(regions) == 0: + sublime.error_message('No lint errors.') + return + + selected = self.view.sel() + point = selected[0].begin() if forward else selected[-1].end() + regionToSelect = None + + # If going forward, find the first region beginning after the point. + # If going backward, find the first region ending before the point. + # If nothing is found in the given direction, wrap to the first/last region. + if forward: + for index, region in enumerate(regions): + if point < region.begin(): + regionToSelect = region + break + else: + for index, region in enumerate(regions): + if point > region.end(): + regionToSelect = region + break + + # If there is only one error line and the cursor is in that line, we cannot move. + # Otherwise wrap to the first/last error line unless settings disallow that. + if regionToSelect is None and (len(regions) > 1 or not regions[0].contains(point)): + if self.view.settings().get('sublimelinter_wrap_find', True): + regionToSelect = regions[0] + + if regionToSelect is not None: + select_lint_region(self.view, regionToSelect) + else: + sublime.error_message('No {0} lint errors.'.format('next' if forward else 'previous')) + + return regionToSelect + + +class FindNextLintErrorCommand(FindLintErrorCommand): + def run(self, edit): + ''' + Move the cursor to the next lint error in the current view. + The search will wrap to the top unless the sublimelinter_wrap_find + setting is set to false. + ''' + self.find_lint_error(forward=True) + + +class FindPreviousLintErrorCommand(FindLintErrorCommand): + def run(self, edit): + ''' + Move the cursor to the previous lint error in the current view. + The search will wrap to the bottom unless the sublimelinter_wrap_find + setting is set to false. + ''' + self.find_lint_error(forward=False) + + +class SublimelinterWindowCommand(sublime_plugin.WindowCommand): + def is_enabled(self): + view = self.window.active_view() + + if view: + if view.is_scratch(): + return False + else: + return True + else: + return False + + def run_(self, args): + pass + + +class SublimelinterAnnotationsCommand(SublimelinterWindowCommand): + '''Commands to extract annotations and display them in + a file + ''' + def run_(self, args): + linter = LINTERS.get('annotations', None) + + if linter is None: + return + + view = self.window.active_view() + + if not view: + return + + text = view.substr(sublime.Region(0, view.size())) + filename = view.file_name() + notes = linter.extract_annotations(text, view, filename) + _, filename = os.path.split(filename) + annotations_view, _id = view_in_tab(view, 'Annotations from {0}'.format(filename), notes, '') + + +class SublimelinterCommand(SublimelinterWindowCommand): + def is_enabled(self): + enabled = super(SublimelinterCommand, self).is_enabled() + + if not enabled: + return False + + linter = select_linter(self.window.active_view(), ignore_disabled=True) + return linter is not None + + def run_(self, args={}): + view = self.window.active_view() + action = args.get('action', '') + + if view and action: + if action == 'lint': + self.lint_view(view, show_popup_list=args.get('show_popup', False)) + else: + view.run_command('lint', action) + + def lint_view(self, view, show_popup_list): + linter = select_linter(view, ignore_disabled=True) + + if linter: + view.run_command('lint', linter.language) + regions = get_lint_regions(view, coalesce=True) + + if regions: + if show_popup_list: + popup_error_list(view) + else: + sublime.error_message('{0} lint error{1}.'.format(len(regions), 's' if len(regions) != 1 else '')) + else: + sublime.error_message('No lint errors.') + else: + syntax = syntax_name(view) + sublime.error_message('No linter for the syntax "{0}"'.format(syntax)) + + +class SublimelinterLintCommand(SublimelinterCommand): + def is_enabled(self): + enabled = super(SublimelinterLintCommand, self).is_enabled() + + if enabled: + view = self.window.active_view() + + if view and view.settings().get('sublimelinter') == True: + return False + + return enabled + + +class SublimelinterShowErrorsCommand(SublimelinterCommand): + def is_enabled(self): + return super(SublimelinterShowErrorsCommand, self).is_enabled() + + +class SublimelinterEnableLoadSaveCommand(SublimelinterCommand): + def is_enabled(self): + enabled = super(SublimelinterEnableLoadSaveCommand, self).is_enabled() + + if enabled: + view = self.window.active_view() + + if view and view.settings().get('sublimelinter') == 'load-save': + return False + + return enabled + + +class SublimelinterDisableCommand(SublimelinterCommand): + def is_enabled(self): + enabled = super(SublimelinterDisableCommand, self).is_enabled() + + if enabled: + view = self.window.active_view() + + if view and not view.settings().get('sublimelinter') == True: + return False + + return enabled diff --git a/SublimeLinter/Kronuz-SublimeLinter-74b14ea/SublimeLinter.sublime-settings b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/SublimeLinter.sublime-settings new file mode 100644 index 0000000..6e25fb4 --- /dev/null +++ b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/SublimeLinter.sublime-settings @@ -0,0 +1,139 @@ +/* + SublimeLinter default settings +*/ +{ + /* + Sets the mode in which SublimeLinter runs: + + true - Linting occurs in the background as you type (the default). + false - Linting only occurs when you initiate it. + "load-save" - Linting occurs only when a file is loaded and saved. + */ + "sublimelinter": true, + + /* + Maps linters to executables for non-built in linters. If the executable + is not in the default system path, or on posix systems in /usr/local/bin + or ~/bin, then you must specify the full path to the executable. + Linter names should be lowercase. + + This is the effective default map; your mappings may override these. + + "sublimelinter_executable_map": + { + "perl": "perl", + "php": "php", + "ruby": "ruby" + }, + */ + "sublimelinter_executable_map": + { + }, + + /* + Maps syntax names to linters. This allows variations on a syntax + (for example "Python (Django)") to be linted. The key is + the base filename of the .tmLanguage syntax files, and the value + is the linter name (lowercase) the syntax maps to. + */ + "sublimelinter_syntax_map": + { + "Python Django": "python" + }, + + // An array of linter names to disable. Names should be lowercase. + "sublimelinter_disable": + [ + ], + + /* + The minimum delay in seconds (fractional seconds are okay) before + a linter is run when the "sublimelinter" setting is true. This allows + you to have background linting active, but defer the actual linting + until you are idle. When this value is greater than the built in linting delay, + errors are erased when the file is modified, since the assumption is + you don't want to see errors while you type. + */ + "sublimelinter_delay": 0, + + // If true, lines with errors or warnings will be filled in with the outline color. + "sublimelinter_fill_outlines": false, + + // If true, lines with errors or warnings will have a gutter mark. + "sublimelinter_gutter_marks": false, + + // If true, the find next/previous error commands will wrap. + "sublimelinter_wrap_find": true, + + // If true, when the file is saved any errors will appear in a popup list + "sublimelinter_popup_errors_on_save": false, + + // Javascript linter: "gjslint" to use the closure javascript linter (if available), + // or "jshint" to use the built in jshint linter. + "javascript_linter": "jshint", + + // jshint: options for linting JavaScript. See http://jshint.com/#docs for more info. + // By deault, eval is allowed. + "jshint_options": + { + "evil": true, + "regexdash": true, + "browser": true, + "wsh": true, + "trailing": true, + "sub": true + }, + + // A list of command line options to send to gjslint. --nobeep is always sent. + "gjslint_options": + [ + ], + + // A list of gjslint error numbers to ignore. The list of error codes is here: + // http://closure-linter.googlecode.com/svn/trunk/closure_linter/errors.py + "gjslint_ignore": + [ + 110 // line too long + ], + + // A list of pep8 error numbers to ignore. By default "line too long" errors are ignored. + // The list of error codes is in this file: https://github.com/jcrocholl/pep8/blob/master/pep8.py. + // Search for "Ennn:", where nnn is a 3-digit number. + "pep8_ignore": + [ + "E501" + ], + + /* + If you use SublimeLinter for pyflakes checks, you can ignore some of the "undefined name xxx" + errors (comes in handy if you work with post-processors, globals/builtins available only at runtime, etc.). + You can control what names will be ignored with the user setting "pyflakes_ignore". + + Example: + + "pyflakes_ignore": + [ + "some_custom_builtin_o_mine", + "A_GLOBAL_CONSTANT" + ], + */ + "pyflakes_ignore": + [ + ], + + /* + Ordinarily pyflakes will issue a warning when 'from foo import *' is used, + but it is ignored since the warning is not that helpful. If you want to see this warning, + set this option to false. + */ + "pyflakes_ignore_import_*": true, + + // Objective-J: if true, non-ascii characters are flagged as an error. + "sublimelinter_objj_check_ascii": false, + + // Set to true to highlight annotations + "sublimelinter_notes": false, + + // The set of annotation phrases to highlight + "annotations": ["TODO", "README", "FIXME"] +} diff --git a/SublimeLinter/Kronuz-SublimeLinter-74b14ea/changelog.txt b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/changelog.txt new file mode 100644 index 0000000..3fbedbe --- /dev/null +++ b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/changelog.txt @@ -0,0 +1,111 @@ +SublimeLinter 1.5.1 changelog +============================= +NEW FEATURES + +- SublimeLinter keeps its settings in its own settings file now: + SublimeLinter.sublime-settings. You will need to copy your + user settings to this file. To do so, follow these steps: + + 1. Select "Preferences->Settings - User" in one tab/window. + The title of this tab should be "Preferences.sublime-settings". + 2. Open another tab/window and select "Preferences->Package Settings-> + SublimeLinter->Settings - User". The title of this window should be + "SublimeLinter.sublime-settings". + 3. Copy/cut any of the following settings from Preferences.sublime-settings + to SublimeLinter.sublime-settings: + + sublimelinter + sublimelinter_executable_map + sublimelinter_syntax_map + sublimelinter_disable + sublimelinter_delay + sublimelinter_fill_outlines + sublimelinter_gutter_marks + sublimelinter_wrap_find + sublimelinter_popup_errors_on_save + javascript_linter + jshint_options + pep8_ignore + pyflakes_ignore + pyflakes_ignore_import_* + sublimelinter_objj_check_ascii + + 4. Save SublimeLinter.sublime-settings. The changes may not take + effect until you restart Sublime Text. + + When changes are made to the user SublimeLinter settings, they + are immediately reloaded into every open view. Note that this will + override any temporary changes you may have made to the settings in + a given view. + +- The google closure Javascript linter (gjslint) is now supported + (https://developers.google.com/closure/utilities/docs/linter_howto). + There is a new setting, "javascript_linter", which determines which + linter to use, jshint or gjslinter. You may also customize gjslint + behavior with the "gjslint_options" and "gjslint_ignore" settings. + Please select "Preferences->Package Settings->SublimeLinter->Settings - Default" + for more information on these settings. + +- The color theme names have been changed to avoid clashes with + built in names. + + Old New + --------------------- ----------------------------- + sublimelinter. sublimelinter.outline. + invalid. sublimelinter.underline. + + You will have to update your color themes accordingly. Please select + "Preferences->Package Settings->SublimeLinter->README" and search + for "Customizing colors" for more information. + +- When selecting an error from the popup error list, the view is centered + on the error line. + + +CHANGES/FIXES + +- The PHP error regex has been updated to work with PHP 5.3.8 on Mac OS X. + +- The popup error list will no longer choke on non-ASCII text. + +- Selecting an error from the popup error list no longer attempts to go + directly to the point of an error as this could not be done reliably. + It will jump to the first non-whitespace character of the error's line. + +- Go to next/previous error works correctly when an error line has no underlines. + +- If an exception is thrown by jshint (e.g. too many errors), the errors + captured up to that point are displayed. + +- The built in jshint has been updated from the master jshint. + +- Fixed errors that would occur with the popup error list when there was + more than error on a line. + + +SublimeLinter 1.5.3 changelog +============================= +CHANGES/FIXES + +- Annotations have been fixed. + +- Entries in "sublimelinter_syntax_map" take precedence over built in mappings. + +- Lint errors in PHP files will hopefully not be logged to the PHP log file. + + +SublimeLinter 1.5.4 changelog +============================= +CHANGES/FIXES + +- jshint.js has been updated to the latest master version. + +- [issue #128] An "unsafe" option has been added to jshint. If set true, + any UTF-8 characters are allowed in the source. + + +SublimeLinter 1.5.5 changelog +============================= +CHANGES/FIXES + +- This change log is available from the SublimeLinter preferences menu. diff --git a/SublimeLinter/Kronuz-SublimeLinter-74b14ea/messages.json b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/messages.json new file mode 100644 index 0000000..d6ae10c --- /dev/null +++ b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/messages.json @@ -0,0 +1,6 @@ +{ + "install": "README.rst", + "1.5.1": "messages/1.5.1.txt", + "1.5.3": "messages/1.5.3.txt" + "1.5.4": "messages/1.5.4.txt" +} diff --git a/SublimeLinter/Kronuz-SublimeLinter-74b14ea/messages/1.5.1.txt b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/messages/1.5.1.txt new file mode 100644 index 0000000..1d62027 --- /dev/null +++ b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/messages/1.5.1.txt @@ -0,0 +1,85 @@ +SublimeLinter 1.5.1 changelog + +Please restart Sublime Text 2 after reading this. + +NEW FEATURES + +- SublimeLinter keeps its settings in its own settings file now: + SublimeLinter.sublime-settings. You will need to copy your + user settings to this file. To do so, follow these steps: + + 1. Select "Preferences->Settings - User" in one tab/window. + The title of this tab should be "Preferences.sublime-settings". + 2. Open another tab/window and select "Preferences->Package Settings-> + SublimeLinter->Settings - User". The title of this window should be + "SublimeLinter.sublime-settings". + 3. Copy/cut any of the following settings from Preferences.sublime-settings + to SublimeLinter.sublime-settings: + + sublimelinter + sublimelinter_executable_map + sublimelinter_syntax_map + sublimelinter_disable + sublimelinter_delay + sublimelinter_fill_outlines + sublimelinter_gutter_marks + sublimelinter_wrap_find + sublimelinter_popup_errors_on_save + javascript_linter + jshint_options + pep8_ignore + pyflakes_ignore + pyflakes_ignore_import_* + sublimelinter_objj_check_ascii + + 4. Save SublimeLinter.sublime-settings. The changes may not take + effect until you restart Sublime Text. + + When changes are made to the user SublimeLinter settings, they + are immediately reloaded into every open view. Note that this will + override any temporary changes you may have made to the settings in + a given view. + +- The google closure Javascript linter (gjslint) is now supported + (https://developers.google.com/closure/utilities/docs/linter_howto). + There is a new setting, "javascript_linter", which determines which + linter to use, jshint or gjslinter. You may also customize gjslint + behavior with the "gjslint_options" and "gjslint_ignore" settings. + Please select "Preferences->Package Settings->SublimeLinter->Settings - Default" + for more information on these settings. + +- The color theme names have been changed to avoid clashes with + built in names. + + Old New + --------------------- ----------------------------- + sublimelinter. sublimelinter.outline. + invalid. sublimelinter.underline. + + You will have to update your color themes accordingly. Please select + "Preferences->Package Settings->SublimeLinter->README" and search + for "Customizing colors" for more information. + +- When selecting an error from the popup error list, the view is centered + on the error line. + + +CHANGES/FIXES + +- The PHP error regex has been updated to work with PHP 5.3.8 on Mac OS X. + +- The popup error list will no longer choke on non-ASCII text. + +- Selecting an error from the popup error list no longer attempts to go + directly to the point of an error as this could not be done reliably. + It will jump to the first non-whitespace character of the error's line. + +- Go to next/previous error works correctly when an error line has no underlines. + +- If an exception is thrown by jshint (e.g. too many errors), the errors + captured up to that point are displayed. + +- The built in jshint has been updated from the master jshint. + +- Fixed errors that would occur with the popup error list when there was + more than error on a line. diff --git a/SublimeLinter/Kronuz-SublimeLinter-74b14ea/messages/1.5.3.txt b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/messages/1.5.3.txt new file mode 100644 index 0000000..a9edca8 --- /dev/null +++ b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/messages/1.5.3.txt @@ -0,0 +1,11 @@ +SublimeLinter 1.5.3 changelog + +Please restart Sublime Text 2 after reading this. + +CHANGES/FIXES + +- Annotations have been fixed. + +- Entries in "sublimelinter_syntax_map" take precedence over built in mappings. + +- Lint errors in PHP files will hopefully not be logged to the PHP log file. diff --git a/SublimeLinter/Kronuz-SublimeLinter-74b14ea/messages/1.5.4.txt b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/messages/1.5.4.txt new file mode 100644 index 0000000..5326ecd --- /dev/null +++ b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/messages/1.5.4.txt @@ -0,0 +1,10 @@ +SublimeLinter 1.5.4 changelog + +Please restart Sublime Text 2 after reading this. + +CHANGES/FIXES + +- jshint.js has been updated to the latest master version. + +- [issue #128] An "unsafe" option has been added to jshint. If set true, + any UTF-8 characters are allowed in the source. diff --git a/SublimeLinter/Kronuz-SublimeLinter-74b14ea/messages/1.5.5.txt b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/messages/1.5.5.txt new file mode 100644 index 0000000..440d4eb --- /dev/null +++ b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/messages/1.5.5.txt @@ -0,0 +1,5 @@ +SublimeLinter 1.5.5 changelog + +CHANGES/FIXES + +- The full change log is available from the SublimeLinter preferences menu. diff --git a/SublimeLinter/Kronuz-SublimeLinter-74b14ea/package_control.json b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/package_control.json new file mode 100644 index 0000000..c79cad0 --- /dev/null +++ b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/package_control.json @@ -0,0 +1,20 @@ +{ + "schema_version": "1.1", + "packages": [ + { + "name": "SublimeLinter", + "description": "Inline lint highlighting for the Sublime Text 2 editor", + "author": "Kronuz, Aparajita Fishman, Jake Swartwood", + "homepage": "http://github.com/Kronuz/SublimeLinter", + "last_modified": "2012-03-21 18:27:31", + "platforms": { + "*": [ + { + "version": "1.5.5", + "url": "https://nodeload.github.com/Kronuz/SublimeLinter/zipball/v1.5.5" + } + ] + } + } + ] +} diff --git a/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/.tempfiles/Foo.class b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/.tempfiles/Foo.class new file mode 100644 index 0000000..1a4b715 Binary files /dev/null and b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/.tempfiles/Foo.class differ diff --git a/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/.tempfiles/Gender.class b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/.tempfiles/Gender.class new file mode 100644 index 0000000..b8b5c61 Binary files /dev/null and b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/.tempfiles/Gender.class differ diff --git a/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/__init__.py b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/loader.py b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/loader.py new file mode 100644 index 0000000..7ec0882 --- /dev/null +++ b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/loader.py @@ -0,0 +1,120 @@ +# Note: Unlike linter modules, changes made to this module will NOT take effect until +# Sublime Text is restarted. + +import glob +import os +import os.path +import sys + +import modules.base_linter as base_linter + +libs_path = os.path.abspath(os.path.join(os.path.dirname(__file__), 'modules', 'libs')) + +if libs_path not in sys.path: + sys.path.insert(0, libs_path) + + +class Loader(object): + '''utility class to load (and reload if necessary) SublimeLinter modules''' + def __init__(self, basedir, linters): + '''assign relevant variables and load all existing linter modules''' + self.basedir = basedir + self.basepath = 'sublimelinter/modules' + self.linters = linters + self.modpath = self.basepath.replace('/', '.') + self.ignored = ('__init__', 'base_linter') + self.fix_path() + self.load_all() + + def fix_path(self): + if os.name != 'posix': + return + + path = os.environ['PATH'] + + if path: + dirs = path.split(':') + + if '/usr/local/bin' not in dirs: + dirs.insert(0, '/usr/local/bin') + + if '~/bin' not in dirs and '$HOME/bin' not in dirs: + dirs.append('$HOME/bin') + + os.environ['PATH'] = ':'.join(dirs) + + def load_all(self): + '''loads all existing linter modules''' + for modf in glob.glob('{0}/*.py'.format(self.basepath)): + base, name = os.path.split(modf) + name = name.split('.', 1)[0] + + if name in self.ignored: + continue + + self.load_module(name) + + def load_module(self, name): + '''loads a single linter module''' + fullmod = '{0}.{1}'.format(self.modpath, name) + + # make sure the path didn't change on us (this is needed for submodule reload) + pushd = os.getcwd() + os.chdir(self.basedir) + + __import__(fullmod) + + # this following line of code does two things: + # first, we get the actual module from sys.modules, + # not the base mod returned by __import__ + # second, we get an updated version with reload() + # so module development is easier + # (to make sublime text reload language submodule, + # just save sublimelinter_plugin.py ) + mod = sys.modules[fullmod] = reload(sys.modules[fullmod]) + + # update module's __file__ to absolute path so we can reload it + # if saved with sublime text + mod.__file__ = os.path.abspath(mod.__file__).rstrip('co') + + language = '' + + try: + config = base_linter.CONFIG.copy() + + try: + config.update(mod.CONFIG) + language = config['language'] + except (AttributeError, KeyError): + pass + + if language: + if hasattr(mod, 'Linter'): + linter = mod.Linter(config) + else: + linter = base_linter.BaseLinter(config) + + lc_language = language.lower() + self.linters[lc_language] = linter + print 'SublimeLinter: {0} loaded'.format(language) + else: + print 'SublimeLinter: {0} disabled (no language specified in module)'.format(name) + + except KeyError: + print 'SublimeLinter: general error importing {0} ({1})'.format(name, language or '') + is_enabled = False + + os.chdir(pushd) + + def reload_module(self, module): + '''reload a single linter module + This method is meant to be used when editing a given + linter module so that changes can be viewed immediately + upon saving without having to restart Sublime Text''' + fullmod = module.__name__ + + if not fullmod.startswith(self.modpath): + return + + name = fullmod.replace(self.modpath + '.', '', 1) + self.load_module(name) diff --git a/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/__init__.py b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/base_linter.py b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/base_linter.py new file mode 100644 index 0000000..629a045 --- /dev/null +++ b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/base_linter.py @@ -0,0 +1,298 @@ +# -*- coding: utf-8 -*- +# base_linter.py - base class for linters + +import os +import os.path +import re +import subprocess + +import sublime + +# If the linter uses an executable that takes stdin, use this input method. +INPUT_METHOD_STDIN = 1 + +# If the linter uses an executable that does not take stdin but you wish to use +# a temp file so that the current view can be linted interactively, use this input method. +# If the current view has been saved, the tempfile will have the same name as the +# view's file, which is necessary for some linters. +INPUT_METHOD_TEMP_FILE = 2 + +# If the linter uses an executable that does not take stdin and you wish to have +# linting occur only on file load and save, use this input method. +INPUT_METHOD_FILE = 3 + +CONFIG = { + # The display language name for this linter. + 'language': '', + + # Linters may either use built in code or use an external executable. This item may have + # one of the following values: + # + # string - An external command (or path to a command) to execute + # None - The linter is considered to be built in + # + # Alternately, your linter class may define the method get_executable(), + # which should return the three-tuple (, , ): + # must be a boolean than indicates whether the executable is available and usable. + # If is True, must be one of: + # - A command string (or path to a command) if an external executable will be used + # - None if built in code will be used + # - False if no suitable executable can be found or the linter should be disabled + # for some other reason. + # is the message that will be shown in the console when the linter is + # loaded, to aid the user in knowing what the status of the linter is. If None or an empty string, + # a default message will be returned based on the value of . Otherwise it + # must be a string. + 'executable': None, + + # If an external executable is being used, this item specifies the arguments + # used when checking the existence of the executable to determine if the linter can be enabled. + # If more than one argument needs to be passed, use a tuple/list. + # Defaults to '-v' if this item is missing. + 'test_existence_args': '-v', + + # If an external executable is being used, this item specifies the arguments to be passed + # when linting. If there is more than one argument, use a tuple/list. + # If the input method is anything other than INPUT_METHOD_STDIN, put a {filename} placeholder in + # the args where the filename should go. + # + # Alternately, if your linter class may define the method get_lint_args(), which should return + # None for no arguments or a tuple/list for one or more arguments. + 'lint_args': None, + + # If an external executable is being used, the method used to pass input to it. Defaults to STDIN. + 'input_method': INPUT_METHOD_STDIN +} + +TEMPFILES_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '.tempfiles')) + +if not os.path.exists(TEMPFILES_DIR): + os.mkdir(TEMPFILES_DIR) + + +class BaseLinter(object): + '''A base class for linters. Your linter module needs to do the following: + + - Set the relevant values in CONFIG + - Override built_in_check() if it uses a built in linter. You may return + whatever value you want, this value will be passed to parse_errors(). + - Override parse_errors() and populate the relevant lists/dicts. The errors + argument passed to parse_errors() is the output of the executable run through strip(). + + If you do subclass and override __init__, be sure to call super(MyLinter, self).__init__(config). + ''' + + def __init__(self, config): + self.language = config['language'] + self.enabled = False + self.executable = config.get('executable', None) + self.test_existence_args = config.get('test_existence_args', ('-v',)) + + if isinstance(self.test_existence_args, basestring): + self.test_existence_args = (self.test_existence_args,) + + self.input_method = config.get('input_method', INPUT_METHOD_STDIN) + self.filename = None + self.lint_args = config.get('lint_args', ()) + + if isinstance(self.lint_args, basestring): + self.lint_args = (self.lint_args,) + + def check_enabled(self, view): + if hasattr(self, 'get_executable'): + try: + self.enabled, self.executable, message = self.get_executable(view) + + if self.enabled and not message: + message = 'using "{0}"'.format(self.executable) if self.executable else 'built in' + except Exception as ex: + self.enabled = False + message = unicode(ex) + else: + self.enabled, message = self._check_enabled(view) + + return (self.enabled, message or '') + + def _check_enabled(self, view): + if self.executable is None: + return (True, 'built in') + elif isinstance(self.executable, basestring): + self.executable = self.get_mapped_executable(view, self.executable) + elif isinstance(self.executable, bool) and self.executable == False: + return (False, 'unknown error') + else: + return (False, 'bad type for CONFIG["executable"]') + + # If we get this far, the executable is external. Test that it can be executed + # and capture stdout and stderr so they don't end up in the system log. + try: + args = [self.executable] + args.extend(self.test_existence_args) + subprocess.Popen(args, startupinfo=self.get_startupinfo(), + stdout=subprocess.PIPE, stderr=subprocess.STDOUT).communicate() + except OSError: + return (False, '"{0}" cannot be found'.format(self.executable)) + + return (True, 'using "{0}" for executable'.format(self.executable)) + + def _get_lint_args(self, view, code, filename): + if hasattr(self, 'get_lint_args'): + return self.get_lint_args(view, code, filename) or () + else: + lintArgs = self.lint_args or [] + settings = view.settings().get('SublimeLinter', {}).get(self.language, {}) + + if settings: + args = settings.get('lint_args', []) + lintArgs.extend(args) + + cwd = settings.get('working_directory') + + if cwd and os.path.isabs(cwd) and os.path.isdir(cwd): + os.chdir(cwd) + + return [arg.format(filename=filename) for arg in lintArgs] + + def built_in_check(self, view, code, filename): + return '' + + def executable_check(self, view, code, filename): + args = [self.executable] + tempfilePath = None + + if self.input_method == INPUT_METHOD_STDIN: + args.extend(self._get_lint_args(view, code, filename)) + + elif self.input_method == INPUT_METHOD_TEMP_FILE: + if filename: + filename = os.path.basename(filename) + else: + filename = 'view{0}'.format(view.id()) + + tempfilePath = os.path.join(TEMPFILES_DIR, filename) + + with open(tempfilePath, 'w') as f: + f.write(code) + + args.extend(self._get_lint_args(view, code, tempfilePath)) + code = '' + + elif self.input_method == INPUT_METHOD_FILE: + args.extend(self._get_lint_args(view, code, filename)) + code = '' + + else: + return '' + + try: + process = subprocess.Popen(args, + stdin=subprocess.PIPE, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + startupinfo=self.get_startupinfo()) + result = process.communicate(code)[0] + finally: + if tempfilePath: + os.remove(tempfilePath) + + return result.strip() + + def parse_errors(self, view, errors, lines, errorUnderlines, violationUnderlines, warningUnderlines, errorMessages, violationMessages, warningMessages): + pass + + def add_message(self, lineno, lines, message, messages): + # Assume lineno is one-based, ST2 wants zero-based line numbers + lineno -= 1 + lines.add(lineno) + message = message[0].upper() + message[1:] + + # Remove trailing period from error message + if message[-1] == '.': + message = message[:-1] + + if lineno in messages: + messages[lineno].append(message) + else: + messages[lineno] = [message] + + def underline_range(self, view, lineno, position, underlines, length=1): + # Assume lineno is one-based, ST2 wants zero-based line numbers + lineno -= 1 + line = view.full_line(view.text_point(lineno, 0)) + position += line.begin() + + for i in xrange(length): + underlines.append(sublime.Region(position + i)) + + def underline_regex(self, view, lineno, regex, lines, underlines, wordmatch=None, linematch=None): + # Assume lineno is one-based, ST2 wants zero-based line numbers + lineno -= 1 + lines.add(lineno) + offset = 0 + line = view.full_line(view.text_point(lineno, 0)) + lineText = view.substr(line) + + if linematch: + match = re.match(linematch, lineText) + + if match: + lineText = match.group('match') + offset = match.start('match') + else: + return + + iters = re.finditer(regex, lineText) + results = [(result.start('underline'), result.end('underline')) for result in iters + if not wordmatch or result.group('underline') == wordmatch] + + # Make the lineno one-based again for underline_range + lineno += 1 + + for start, end in results: + self.underline_range(view, lineno, start + offset, underlines, end - start) + + def run(self, view, code, filename=None): + self.filename = filename + + if self.executable is None: + errors = self.built_in_check(view, code, filename) + else: + errors = self.executable_check(view, code, filename) + + lines = set() + errorUnderlines = [] # leave this here for compatibility with original plugin + errorMessages = {} + violationUnderlines = [] + violationMessages = {} + warningUnderlines = [] + warningMessages = {} + + self.parse_errors(view, errors, lines, errorUnderlines, violationUnderlines, warningUnderlines, errorMessages, violationMessages, warningMessages) + return lines, errorUnderlines, violationUnderlines, warningUnderlines, errorMessages, violationMessages, warningMessages + + def get_mapped_executable(self, view, default): + map = view.settings().get('sublimelinter_executable_map') + + if map: + lang = self.language.lower() + + if lang in map: + return map[lang] + + return default + + def get_startupinfo(self): + info = None + + if os.name == 'nt': + info = subprocess.STARTUPINFO() + info.dwFlags |= subprocess.STARTF_USESHOWWINDOW + info.wShowWindow = subprocess.SW_HIDE + + return info + + def execute_get_output(self, args): + try: + return subprocess.Popen(args, self.get_startupinfo()).communicate()[0] + except: + return '' diff --git a/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/coffeescript.py b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/coffeescript.py new file mode 100644 index 0000000..0dceac9 --- /dev/null +++ b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/coffeescript.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +# coffeescript.py - sublimelint package for checking coffee files + +import re +import os + +from base_linter import BaseLinter + +CONFIG = { + 'language': 'coffeescript', + 'executable': 'coffee.cmd' if os.name == 'nt' else 'coffee', + 'lint_args': '-l' +} + + +class Linter(BaseLinter): + def parse_errors(self, view, errors, lines, errorUnderlines, + violationUnderlines, warningUnderlines, errorMessages, + violationMessages, warningMessages): + for line in errors.splitlines(): + match = re.match(r'.*?Error: In .+?, Parse error on line ' + r'(?P\d+): (?P.+)', line) + if not match: + match = re.match(r'.*?Error: In .+?, (?P.+) ' + r'on line (?P\d+)', line) + + if match: + line, error = match.group('line'), match.group('error') + self.add_message(int(line), lines, error, errorMessages) diff --git a/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/java.py b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/java.py new file mode 100644 index 0000000..00cd8b7 --- /dev/null +++ b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/java.py @@ -0,0 +1,59 @@ +# -*- coding: utf-8 -*- +# java.py - sublimelint package for checking java files + +import os +import os.path +import re + +from base_linter import BaseLinter, INPUT_METHOD_FILE + +CONFIG = { + 'language': 'java', + 'executable': 'javac', + 'test_existence_args': '-version', + 'input_method': INPUT_METHOD_FILE +} + +ERROR_RE = re.compile(r'^(?P.*\.java):(?P\d+): (?Pwarning: )?(?:\[\w+\] )?(?P.*)') +MARK_RE = re.compile(r'^(?P\s*)\^$') + + +class Linter(BaseLinter): + def parse_errors(self, view, errors, lines, errorUnderlines, + violationUnderlines, warningUnderlines, errorMessages, + violationMessages, warningMessages): + it = iter(errors.splitlines()) + + for line in it: + match = re.match(ERROR_RE, line) + + if match: + path = os.path.abspath(match.group('path')) + + if path != self.filename: + continue + + lineNumber = int(match.group('line')) + warning = match.group('warning') + error = match.group('error') + + if warning: + messages = warningMessages + underlines = warningUnderlines + else: + messages = errorMessages + underlines = errorUnderlines + + # Skip forward until we find the marker + position = -1 + + while True: + line = it.next() + match = re.match(MARK_RE, line) + + if match: + position = len(match.group('mark')) + break + + self.add_message(lineNumber, lines, error, messages) + self.underline_range(view, lineNumber, position, underlines) diff --git a/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/javascript.py b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/javascript.py new file mode 100644 index 0000000..6c73d13 --- /dev/null +++ b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/javascript.py @@ -0,0 +1,91 @@ +# -*- coding: utf-8 -*- +# javascript.py - sublimelint package for checking Javascript files + +import os +import json +import re +import subprocess + +from base_linter import BaseLinter, INPUT_METHOD_TEMP_FILE + +CONFIG = { + 'language': 'JavaScript' +} + + +class Linter(BaseLinter): + JSC_PATH = '/System/Library/Frameworks/JavaScriptCore.framework/Versions/A/Resources/jsc' + GJSLINT_RE = re.compile(r'Line (?P\d+),\s*E:(?P\d+):\s*(?P.+)') + + def __init__(self, config): + super(Linter, self).__init__(config) + self.use_jsc = False + self.linter = None + + def get_executable(self, view): + self.linter = view.settings().get('javascript_linter', 'jshint') + + if (self.linter == 'jshint'): + if os.path.exists(self.JSC_PATH): + self.use_jsc = True + return (True, self.JSC_PATH, 'using JavaScriptCore') + try: + path = self.get_mapped_executable(view, 'node') + subprocess.call([path, '-v'], startupinfo=self.get_startupinfo()) + return (True, path, '') + except OSError: + return (False, '', 'JavaScriptCore or node.js is required') + elif (self.linter == 'gjslint'): + try: + path = self.get_mapped_executable(view, 'gjslint') + subprocess.call([path, '--help'], startupinfo=self.get_startupinfo()) + self.input_method = INPUT_METHOD_TEMP_FILE + return (True, path, 'using gjslint') + except OSError: + return (False, '', 'gjslint cannot be found') + else: + return (False, '', '"{0}" is not a valid javascript linter'.format(self.linter)) + + def get_lint_args(self, view, code, filename): + if (self.linter == 'gjslint'): + args = [] + gjslint_options = view.settings().get("gjslint_options", []) + args.extend(gjslint_options) + args.extend(['--nobeep', filename]) + return args + elif (self.linter == 'jshint'): + path = self.jshint_path() + jshint_options = json.dumps(view.settings().get("jshint_options") or {}) + + if self.use_jsc: + args = (os.path.join(path, 'jshint_jsc.js'), '--', str(code.count('\n')), jshint_options, path + os.path.sep) + else: + args = (os.path.join(path, 'jshint_node.js'), jshint_options) + + return args + else: + return [] + + def jshint_path(self): + return os.path.join(os.path.dirname(__file__), 'libs', 'jshint') + + def parse_errors(self, view, errors, lines, errorUnderlines, violationUnderlines, warningUnderlines, errorMessages, violationMessages, warningMessages): + if (self.linter == 'gjslint'): + ignore = view.settings().get('gjslint_ignore', []) + + for line in errors.splitlines(): + match = self.GJSLINT_RE.match(line) + + if match: + line, errnum, message = match.group('line'), match.group('errnum'), match.group('message') + + if (int(errnum) not in ignore): + self.add_message(int(line), lines, message, errorMessages) + + elif (self.linter == 'jshint'): + errors = json.loads(errors.strip() or '[]') + + for error in errors: + lineno = error['line'] + self.add_message(lineno, lines, error['reason'], errorMessages) + self.underline_range(view, lineno, error['character'] - 1, errorUnderlines) diff --git a/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/libs/capp_lint.py b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/libs/capp_lint.py new file mode 100644 index 0000000..eda4923 --- /dev/null +++ b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/libs/capp_lint.py @@ -0,0 +1,1021 @@ +#!/usr/bin/env python +# +# capp_lint.py - Check Objective-J source code formatting, +# according to Cappuccino standards: +# +# http://cappuccino.org/contribute/coding-style.php +# +# Copyright (C) 2011 Aparajita Fishman + +# 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. + +from __future__ import with_statement +from optparse import OptionParser +from string import Template +import cgi +import cStringIO +import os +import os.path +import re +import sys + +import sublime + + +EXIT_CODE_SHOW_HTML = 205 +EXIT_CODE_SHOW_TOOLTIP = 206 + + +def exit_show_html(html): + sys.stdout.write(html.encode('utf-8')) + sys.exit(EXIT_CODE_SHOW_HTML) + + +def exit_show_tooltip(text): + sys.stdout.write(text) + sys.exit(EXIT_CODE_SHOW_TOOLTIP) + + +def within_textmate(): + return os.getenv('TM_APP_PATH') is not None + + +def tabs2spaces(text, positions=None): + while True: + index = text.find(u'\t') + + if index < 0: + return text + + spaces = u' ' * (4 - (index % 4)) + text = text[0:index] + spaces + text[index + 1:] + + if positions is not None: + positions.append(index) + + +def relative_path(basedir, filename): + if filename.find(basedir) == 0: + filename = filename[len(basedir) + 1:] + + return filename + + +class LintChecker(object): + + VAR_BLOCK_START_RE = re.compile(ur'''(?x) + (?P\s*) # indent before a var keyword + (?Pvar\s+) # var keyword and whitespace after + (?P[a-zA-Z_$]\w*)\s* + (?: + (?P=)\s* + (?P.*) + | + (?P[,;+\-/*%^&|=\\]) + ) + ''') + + SEPARATOR_RE = re.compile(ur'''(?x) + (?P.*) # Everything up to the line separator + (?P[,;+\-/*%^&|=\\]) # The line separator + \s* # Optional whitespace after + $ # End of expression + ''') + + INDENTED_EXPRESSION_RE_TEMPLATE = ur'''(?x) + [ ]{%d} # Placeholder for indent of first identifier that started block + (?P.+) # Expression + ''' + + VAR_BLOCK_RE_TEMPLATE = ur'''(?x) + [ ]{%d} # Placeholder for indent of first identifier that started block + (?P\s*) # Capture any further indent + (?: + (?P[\[\{].*) + | + (?P[a-zA-Z_$]\w*)\s* + (?: + (?P=)\s* + (?P.*) + | + (?P[,;+\-/*%%^&|=\\]) + ) + | + (?P.+) + ) + ''' + + STATEMENT_RE = re.compile(ur'''(?x) + \s*((continue|do|for|function|if|else|return|switch|while|with)\b|\[+\s*[a-zA-Z_$]\w*\s+[a-zA-Z_$]\w*\s*[:\]]) + ''') + + TRAILING_WHITESPACE_RE = re.compile(ur'^.*(\s+)$') + STRIP_LINE_COMMENT_RE = re.compile(ur'(.*)\s*(?://.*|/\*.*\*/\s*)$') + LINE_COMMENT_RE = re.compile(ur'\s*(?:/\*.*\*/\s*|//.*)$') + BLOCK_COMMENT_START_RE = re.compile(ur'\s*/\*.*(?!\*/\s*)$') + BLOCK_COMMENT_END_RE = re.compile(ur'.*?\*/') + METHOD_RE = ur'[-+]\s*\([a-zA-Z_$]\w*\)\s*[a-zA-Z_$]\w*' + FUNCTION_RE = re.compile(ur'\s*function\s*(?P[a-zA-Z_$]\w*)?\(.*\)\s*\{?') + STRING_LITERAL_RE = re.compile(ur'(?]*\)\s*\w+|[a-zA-Z_$]\w*(\+\+|--)|([ -+*/%^&|<>!]=?|&&|\|\||<<|>>>|={1,3}|!==?)\s*[-+][\w(\[])'), 'pass': False}, + + # Replace the contents of literal strings with spaces so we don't get false matches within them + 'preprocess': ( + {'regex': STRIP_LINE_COMMENT_RE, 'replace': ''}, + {'regex': STRING_LITERAL_RE, 'replace': EMPTY_STRING_LITERAL_FUNCTION}, + ), + 'regex': re.compile(ur'(?<=[\w)\]"\']|([ ]))([-+*/%^]|&&?|\|\|?|<<|>>>?)(?=[\w({\["\']|(?(1)\b\b|[ ]))'), + 'error': 'binary operator without surrounding spaces', + 'showPositionForGroup': 2, + 'type': ERROR_TYPE_WARNING + }, + { + # Filter out @import statements, method declarations + 'filter': {'regex': re.compile(ur'^(@import\b|\s*' + METHOD_RE + ')'), 'pass': False}, + + # Replace the contents of literal strings with spaces so we don't get false matches within them + 'preprocess': ( + {'regex': STRIP_LINE_COMMENT_RE, 'replace': ''}, + {'regex': STRING_LITERAL_RE, 'replace': EMPTY_STRING_LITERAL_FUNCTION}, + ), + 'regex': re.compile(ur'(?:[-*/%^&|<>!]=?|&&|\|\||<<|>>>|={1,3}|!==?)\s*(?>>?=)(?=[\w({\["\']|(?(1)\b\b|[ ]))'), + 'error': 'assignment operator without surrounding spaces', + 'showPositionForGroup': 2, + 'type': ERROR_TYPE_WARNING + }, + { + # Filter out @import statements and @implementation/method declarations + 'filter': {'regex': re.compile(ur'^(@import\b|@implementation\b|\s*' + METHOD_RE + ')'), 'pass': False}, + + # Replace the contents of literal strings with spaces so we don't get false matches within them + 'preprocess': ( + {'regex': STRIP_LINE_COMMENT_RE, 'replace': ''}, + {'regex': STRING_LITERAL_RE, 'replace': EMPTY_STRING_LITERAL_FUNCTION}, + ), + 'regex': re.compile(ur'(?<=[\w)\]"\']|([ ]))(===?|!==?|[<>]=?)(?=[\w({\["\']|(?(1)\b\b|[ ]))'), + 'error': 'comparison operator without surrounding spaces', + 'showPositionForGroup': 2, + 'type': ERROR_TYPE_WARNING + }, + { + 'regex': re.compile(ur'^(\s+)' + METHOD_RE + '|^\s*[-+](\()[a-zA-Z_$][\w]*\)\s*[a-zA-Z_$]\w*|^\s*[-+]\s*\([a-zA-Z_$][\w]*\)(\s+)[a-zA-Z_$]\w*'), + 'error': 'extra or missing space in a method declaration', + 'showPositionForGroup': 0, + 'type': ERROR_TYPE_WARNING + }, + { + # Check for brace following a class or method declaration + 'regex': re.compile(ur'^(?:\s*[-+]\s*\([a-zA-Z_$]\w*\)|@implementation)\s*[a-zA-Z_$][\w]*.*?\s*(\{)\s*(?:$|//.*$)'), + 'error': 'braces should be on their own line', + 'showPositionForGroup': 0, + 'type': ERROR_TYPE_ILLEGAL + }, + { + 'regex': re.compile(ur'^\s*var\s+[a-zA-Z_$]\w*\s*=\s*function\s+([a-zA-Z_$]\w*)\s*\('), + 'error': 'function name is ignored', + 'showPositionForGroup': 1, + 'skip': True, + 'type': ERROR_TYPE_WARNING + }, + ) + + VAR_DECLARATIONS = ['none', 'single', 'strict'] + VAR_DECLARATIONS_NONE = 0 + VAR_DECLARATIONS_SINGLE = 1 + VAR_DECLARATIONS_STRICT = 2 + + DIRS_TO_SKIP = ('.git', 'Frameworks', 'Build', 'Resources', 'CommonJS', 'Objective-J') + + ERROR_FORMATS = ('text', 'html') + TEXT_ERROR_SINGLE_FILE_TEMPLATE = Template(u'$lineNum: $message.\n+$line\n') + TEXT_ERROR_MULTI_FILE_TEMPLATE = Template(u'$filename:$lineNum: $message.\n+$line\n') + + def __init__(self, view, basedir='', var_declarations=VAR_DECLARATIONS_SINGLE, verbose=False): + self.view = view + self.basedir = unicode(basedir, 'utf-8') + self.errors = [] + self.errorFiles = [] + self.filesToCheck = [] + self.varDeclarations = var_declarations + self.verbose = verbose + self.sourcefile = None + self.filename = u'' + self.line = u'' + self.lineNum = 0 + self.varIndent = u'' + self.identifierIndent = u'' + + self.fileChecklist = ( + {'title': 'Check variable blocks', 'action': self.check_var_blocks}, + ) + + def run_line_checks(self): + for check in self.LINE_CHECKLIST: + option = check.get('option') + + if option: + default = check.get('optionDefault', False) + + if not self.view.settings().get(option, default): + continue + + line = self.line + lineFilter = check.get('filter') + + if lineFilter: + match = lineFilter['regex'].search(line) + + if (match and not lineFilter['pass']) or (not match and lineFilter['pass']): + continue + + preprocess = check.get('preprocess') + + if preprocess: + if not isinstance(preprocess, (list, tuple)): + preprocess = (preprocess,) + + for processor in preprocess: + regex = processor.get('regex') + + if regex: + line = regex.sub(processor.get('replace', ''), line) + + regex = check.get('regex') + + if not regex: + continue + + match = regex.search(line) + + if not match: + continue + + positions = [] + group = check.get('showPositionForGroup') + + if (check.get('id') == 'tabs'): + line = tabs2spaces(line, positions=positions) + elif group is not None: + line = tabs2spaces(line) + + for match in regex.finditer(line): + if group > 0: + positions.append(match.start(group)) + else: + # group 0 means show the first non-empty match + for i in range(1, len(match.groups()) + 1): + if match.start(i) >= 0: + positions.append(match.start(i)) + break + + self.error(check['error'], line=line, positions=positions, type=check['type']) + + def next_statement(self, expect_line=False, check_line=True): + try: + while True: + raw_line = self.sourcefile.next()[:-1] # strip EOL + + try: + self.line = unicode(raw_line, 'utf-8', 'strict') # convert to Unicode + self.lineNum += 1 + except UnicodeDecodeError: + self.line = unicode(raw_line, 'utf-8', 'replace') + self.lineNum += 1 + self.error('line contains invalid unicode character(s)', type=self.ERROR_TYPE_ILLEGAL) + + if self.verbose: + print u'%d: %s' % (self.lineNum, tabs2spaces(self.line)) + + if check_line: + self.run_line_checks() + + if not self.is_statement(): + continue + + return True + except StopIteration: + if expect_line: + self.error('unexpected EOF', type=self.ERROR_TYPE_ILLEGAL) + raise + + def is_statement(self): + # Skip empty lines + if len(self.line.strip()) == 0: + return False + + # See if we have a line comment, skip that + match = self.LINE_COMMENT_RE.match(self.line) + + if match: + return False + + # Match a block comment start next so we can find its end, + # otherwise we might get false matches on the contents of the block comment. + match = self.BLOCK_COMMENT_START_RE.match(self.line) + + if match: + self.block_comment() + return False + + return True + + def is_expression(self): + match = self.STATEMENT_RE.match(self.line) + return match is None + + def strip_comment(self): + match = self.STRIP_LINE_COMMENT_RE.match(self.expression) + + if match: + self.expression = match.group(1) + + def get_expression(self, lineMatch): + groupdict = lineMatch.groupdict() + + self.expression = groupdict.get('expression') + + if self.expression is None: + self.expression = groupdict.get('bracket') + + if self.expression is None: + self.expression = groupdict.get('indented_expression') + + if self.expression is None: + self.expression = '' + return + + # Remove all quoted strings from the expression so that we don't + # count unmatched pairs inside the strings. + self.expression = self.STRING_LITERAL_RE.sub(self.EMPTY_SELF_STRING_LITERAL_FUNCTION, self.expression) + + self.strip_comment() + self.expression = self.expression.strip() + + def block_comment(self): + 'Find the end of a block comment' + + commentOpenCount = self.line.count('/*') + commentOpenCount -= self.line.count('*/') + + # If there is an open comment block, eat it + if commentOpenCount: + if self.verbose: + print u'%d: BLOCK COMMENT START' % self.lineNum + else: + return + + match = None + + while not match and self.next_statement(expect_line=True, check_line=False): + match = self.BLOCK_COMMENT_END_RE.match(self.line) + + if self.verbose: + print u'%d: BLOCK COMMENT END' % self.lineNum + + def balance_pairs(self, squareOpenCount, curlyOpenCount, parenOpenCount): + # The following lines have to be indented at least as much as the first identifier + # after the var keyword at the start of the block. + if self.verbose: + print "%d: BALANCE BRACKETS: '['=%d, '{'=%d, '('=%d" % (self.lineNum, squareOpenCount, curlyOpenCount, parenOpenCount) + + lineRE = re.compile(self.INDENTED_EXPRESSION_RE_TEMPLATE % len(self.identifierIndent)) + + while True: + # If the expression has open brackets and is terminated, it's an error + match = self.SEPARATOR_RE.match(self.expression) + + if match and match.group('separator') == ';': + unterminated = [] + + if squareOpenCount: + unterminated.append('[') + + if curlyOpenCount: + unterminated.append('{') + + if parenOpenCount: + unterminated.append('(') + + self.error('unbalanced %s' % ' and '.join(unterminated), type=self.ERROR_TYPE_ILLEGAL) + return False + + self.next_statement(expect_line=True) + match = lineRE.match(self.line) + + if not match: + # If it doesn't match, the indent is wrong check the whole line + self.error('incorrect indentation') + self.expression = self.line + self.strip_comment() + else: + # It matches, extract the expression + self.get_expression(match) + + # Update the bracket counts + squareOpenCount += self.expression.count('[') + squareOpenCount -= self.expression.count(']') + curlyOpenCount += self.expression.count('{') + curlyOpenCount -= self.expression.count('}') + parenOpenCount += self.expression.count('(') + parenOpenCount -= self.expression.count(')') + + if squareOpenCount == 0 and curlyOpenCount == 0 and parenOpenCount == 0: + if self.verbose: + print u'%d: BRACKETS BALANCED' % self.lineNum + + # The brackets are closed, this line must be separated + match = self.SEPARATOR_RE.match(self.expression) + + if not match: + self.error('missing statement separator', type=self.ERROR_TYPE_ILLEGAL) + return False + + return True + + def pairs_balanced(self, lineMatchOrBlockMatch): + + groups = lineMatchOrBlockMatch.groupdict() + + if 'assignment' in groups or 'bracket' in groups: + squareOpenCount = self.expression.count('[') + squareOpenCount -= self.expression.count(']') + + curlyOpenCount = self.expression.count('{') + curlyOpenCount -= self.expression.count('}') + + parenOpenCount = self.expression.count('(') + parenOpenCount -= self.expression.count(')') + + if squareOpenCount or curlyOpenCount or parenOpenCount: + # If the brackets were not properly closed or the statement was + # missing a separator, skip the rest of the var block. + if not self.balance_pairs(squareOpenCount, curlyOpenCount, parenOpenCount): + return False + + return True + + def var_block(self, blockMatch): + """ + Parse a var block, return a tuple (haveLine, isSingleVar), where haveLine + indicates whether self.line is the next line to be parsed. + """ + + # Keep track of whether this var block has multiple declarations + isSingleVar = True + + # Keep track of the indent of the var keyword to compare with following lines + self.varIndent = blockMatch.group('indent') + + # Keep track of how far the first variable name is indented to make sure + # following lines line up with that + self.identifierIndent = self.varIndent + blockMatch.group('var') + + # Check the expression to see if we have any open [ or { or /* + self.get_expression(blockMatch) + + if not self.pairs_balanced(blockMatch): + return (False, False) + + separator = '' + + if self.expression: + match = self.SEPARATOR_RE.match(self.expression) + + if not match: + self.error('missing statement separator', type=self.ERROR_TYPE_ILLEGAL) + else: + separator = match.group('separator') + elif blockMatch.group('separator'): + separator = blockMatch.group('separator') + + # If the block has a semicolon, there should be no more lines in the block + blockHasSemicolon = separator == ';' + + # We may not catch an error till after the line that is wrong, so keep + # the most recent declaration and its line number. + lastBlockLine = self.line + lastBlockLineNum = self.lineNum + + # Now construct an RE that will match any lines indented at least as much + # as the var keyword that started the block. + blockRE = re.compile(self.VAR_BLOCK_RE_TEMPLATE % len(self.identifierIndent)) + + while self.next_statement(expect_line=not blockHasSemicolon): + + if not self.is_statement(): + continue + + # Is the line indented at least as much as the var keyword that started the block? + match = blockRE.match(self.line) + + if match: + if self.is_expression(): + lastBlockLine = self.line + lastBlockLineNum = self.lineNum + + # If the line is indented farther than the first identifier in the block, + # it is considered a formatting error. + if match.group('indent') and not match.group('indented_expression'): + self.error('incorrect indentation') + + self.get_expression(match) + + if not self.pairs_balanced(match): + return (False, isSingleVar) + + if self.expression: + separatorMatch = self.SEPARATOR_RE.match(self.expression) + + if separatorMatch is None: + # If the assignment does not have a separator, it's an error + self.error('missing statement separator', type=self.ERROR_TYPE_ILLEGAL) + else: + separator = separatorMatch.group('separator') + + if blockHasSemicolon: + # If the block already has a semicolon, we have an accidental global declaration + self.error('accidental global variable', type=self.ERROR_TYPE_ILLEGAL) + elif (separator == ';'): + blockHasSemicolon = True + elif match.group('separator'): + separator = match.group('separator') + + isSingleVar = False + else: + # If the line is a control statement of some kind, then it should not be indented this far. + self.error('statement should be outdented from preceding var block') + return (True, False) + + else: + # If the line does not match, it is not an assignment or is outdented from the block. + # In either case, the block is considered closed. If the most recent separator was not ';', + # the block was not properly terminated. + if separator != ';': + self.error('unterminated var block', lineNum=lastBlockLineNum, line=lastBlockLine, type=self.ERROR_TYPE_ILLEGAL) + + return (True, isSingleVar) + + def check_var_blocks(self): + lastStatementWasVar = False + lastVarWasSingle = False + haveLine = True + + while True: + if not haveLine: + haveLine = self.next_statement() + + if not self.is_statement(): + haveLine = False + continue + + match = self.VAR_BLOCK_START_RE.match(self.line) + + if match is None: + lastStatementWasVar = False + haveLine = False + continue + + # It might be a function definition, in which case we continue + expression = match.group('expression') + + if expression: + functionMatch = self.FUNCTION_RE.match(expression) + + if functionMatch: + lastStatementWasVar = False + haveLine = False + continue + + # Now we have the start of a variable block + if self.verbose: + print u'%d: VAR BLOCK' % self.lineNum + + varLineNum = self.lineNum + varLine = self.line + + haveLine, isSingleVar = self.var_block(match) + + if self.verbose: + print u'%d: END VAR BLOCK:' % self.lineNum, + + if isSingleVar: + print u'SINGLE' + else: + print u'MULTIPLE' + + if lastStatementWasVar and self.varDeclarations != self.VAR_DECLARATIONS_NONE: + if (self.varDeclarations == self.VAR_DECLARATIONS_SINGLE and lastVarWasSingle and isSingleVar) or \ + (self.varDeclarations == self.VAR_DECLARATIONS_STRICT and (lastVarWasSingle or isSingleVar)): + self.error('consecutive var declarations', lineNum=varLineNum, line=varLine) + + lastStatementWasVar = True + lastVarWasSingle = isSingleVar + + def run_file_checks(self): + for check in self.fileChecklist: + self.sourcefile.seek(0) + self.lineNum = 0 + + if self.verbose: + print u'%s: %s' % (check['title'], self.sourcefile.name) + + check['action']() + + def lint(self, filesToCheck): + # Recursively walk any directories and eliminate duplicates + self.filesToCheck = [] + + for filename in filesToCheck: + filename = unicode(filename, 'utf-8') + fullpath = os.path.join(self.basedir, filename) + + if fullpath not in self.filesToCheck: + if os.path.isdir(fullpath): + for root, dirs, files in os.walk(fullpath): + for skipDir in self.DIRS_TO_SKIP: + if skipDir in dirs: + dirs.remove(skipDir) + + for filename in files: + if not filename.endswith('.j'): + continue + + fullpath = os.path.join(root, filename) + + if fullpath not in self.filesToCheck: + self.filesToCheck.append(fullpath) + else: + self.filesToCheck.append(fullpath) + + for filename in self.filesToCheck: + try: + with open(filename) as self.sourcefile: + self.filename = relative_path(self.basedir, filename) + self.run_file_checks() + + except IOError: + self.lineNum = 0 + self.line = None + self.error('file not found', type=self.ERROR_TYPE_ILLEGAL) + + except StopIteration: + if self.verbose: + print u'EOF\n' + pass + + def lint_text(self, text, filename): + self.filename = filename + self.filesToCheck = [] + + try: + self.sourcefile = cStringIO.StringIO(text) + self.run_file_checks() + except StopIteration: + if self.verbose: + print u'EOF\n' + pass + + def count_files_checked(self): + return len(self.filesToCheck) + + def error(self, message, **kwargs): + info = { + 'filename': self.filename, + 'message': message, + 'type': kwargs.get('type', self.ERROR_TYPE_WARNING) + } + + line = kwargs.get('line', self.line) + lineNum = kwargs.get('lineNum', self.lineNum) + + if line and lineNum: + info['line'] = tabs2spaces(line) + info['lineNum'] = lineNum + + positions = kwargs.get('positions') + + if positions: + info['positions'] = positions + + self.errors.append(info) + + if self.filename not in self.errorFiles: + self.errorFiles.append(self.filename) + + def has_errors(self): + return len(self.errors) != 0 + + def print_errors(self, format='text'): + if not self.errors: + return + + if format == 'text': + self.print_text_errors() + elif format == 'html': + self.print_textmate_html_errors() + elif format == 'tooltip': + self.print_tooltip_errors() + + def print_text_errors(self): + sys.stdout.write('%d error' % len(self.errors)) + + if len(self.errors) > 1: + sys.stdout.write('s') + + if len(self.filesToCheck) == 1: + template = self.TEXT_ERROR_SINGLE_FILE_TEMPLATE + else: + sys.stdout.write(' in %d files' % len(self.errorFiles)) + template = self.TEXT_ERROR_MULTI_FILE_TEMPLATE + + sys.stdout.write(':\n\n') + + for error in self.errors: + if 'lineNum' in error and 'line' in error: + sys.stdout.write(template.substitute(error).encode('utf-8')) + + if error.get('positions'): + markers = ' ' * len(error['line']) + + for position in error['positions']: + markers = markers[:position] + '^' + markers[position + 1:] + + # Add a space at the beginning of the markers to account for the '+' at the beginning + # of the source line. + sys.stdout.write(' %s\n' % markers) + else: + sys.stdout.write('%s: %s.\n' % (error['filename'], error['message'])) + + sys.stdout.write('\n') + + def print_textmate_html_errors(self): + html = """ + + + Cappuccino Lint Report + + + + """ + + html += '

    Results: %d error' % len(self.errors) + + if len(self.errors) > 1: + html += 's' + + if len(self.filesToCheck) > 1: + html += ' in %d files' % len(self.errorFiles) + + html += '

    ' + + for error in self.errors: + message = cgi.escape(error['message']) + + if len(self.filesToCheck) > 1: + filename = cgi.escape(error['filename']) + ':' + else: + filename = '' + + html += '

    ' + + if 'line' in error and 'lineNum' in error: + filepath = cgi.escape(os.path.join(self.basedir, error['filename'])) + lineNum = error['lineNum'] + line = error['line'] + positions = error.get('positions') + firstPos = -1 + source = '' + + if positions: + firstPos = positions[0] + 1 + lastPos = 0 + + for pos in error.get('positions'): + if pos < len(line): + charToHighlight = line[pos] + else: + charToHighlight = '' + + source += '%s%s' % (cgi.escape(line[lastPos:pos]), cgi.escape(charToHighlight)) + lastPos = pos + 1 + + if lastPos <= len(line): + source += cgi.escape(line[lastPos:]) + else: + source = line + + link = '' % (filepath, lineNum, firstPos) + + if len(self.filesToCheck) > 1: + errorMsg = '%s%d: %s' % (filename, lineNum, message) + else: + errorMsg = '%d: %s' % (lineNum, message) + + html += '%(link)s%(errorMsg)s

    \n

    %(link)s%(source)s

    \n' % {'link': link, 'errorMsg': errorMsg, 'source': source} + else: + html += '%s%s

    \n' % (filename, message) + + html += """ + + +""" + exit_show_html(html) + + +if __name__ == '__main__': + usage = 'usage: %prog [options] [file ... | -]' + parser = OptionParser(usage=usage, version='1.02') + parser.add_option('-f', '--format', action='store', type='string', dest='format', default='text', help='the format to use for the report: text (default) or html (HTML in which errors can be clicked on to view in TextMate)') + parser.add_option('-b', '--basedir', action='store', type='string', dest='basedir', help='the base directory relative to which filenames are resolved, defaults to the current working directory') + parser.add_option('-d', '--var-declarations', action='store', type='string', dest='var_declarations', default='single', help='set the policy for flagging consecutive var declarations (%s)' % ', '.join(LintChecker.VAR_DECLARATIONS)) + parser.add_option('-v', '--verbose', action='store_true', dest='verbose', default=False, help='show what lint is doing') + parser.add_option('-q', '--quiet', action='store_true', dest='quiet', default=False, help='do not display errors, only return an exit code') + + (options, args) = parser.parse_args() + + if options.var_declarations not in LintChecker.VAR_DECLARATIONS: + parser.error('--var-declarations must be one of [' + ', '.join(LintChecker.VAR_DECLARATIONS) + ']') + + if options.verbose and options.quiet: + parser.error('options -v/--verbose and -q/--quiet are mutually exclusive') + + options.format = options.format.lower() + + if not options.format in LintChecker.ERROR_FORMATS: + parser.error('format must be one of ' + '/'.join(LintChecker.ERROR_FORMATS)) + + if options.format == 'html' and not within_textmate(): + parser.error('html format can only be used within TextMate.') + + if options.basedir: + basedir = options.basedir + + if basedir[-1] == '/': + basedir = basedir[:-1] + else: + basedir = os.getcwd() + + # We accept a list of filenames (relative to the cwd) either from the command line or from stdin + filenames = args + + if args and args[0] == '-': + filenames = [name.rstrip() for name in sys.stdin.readlines()] + + if not filenames: + print usage.replace('%prog', os.path.basename(sys.argv[0])) + sys.exit(0) + + checker = LintChecker(basedir=basedir, var_declarations=LintChecker.VAR_DECLARATIONS.index(options.var_declarations), verbose=options.verbose) + pathsToCheck = [] + + for filename in filenames: + filename = filename.strip('"\'') + path = os.path.join(basedir, filename) + + if (os.path.isdir(path) and not path.endswith('Frameworks')) or filename.endswith('.j'): + pathsToCheck.append(relative_path(basedir, filename)) + + if len(pathsToCheck) == 0: + if within_textmate(): + exit_show_tooltip('No Objective-J files found.') + + sys.exit(0) + + checker.lint(pathsToCheck) + + if checker.has_errors(): + if not options.quiet: + checker.print_errors(options.format) + + sys.exit(1) + else: + if within_textmate(): + exit_show_tooltip('Everything looks clean.') + + sys.exit(0) diff --git a/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/libs/jshint/jshint.js b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/libs/jshint/jshint.js new file mode 100644 index 0000000..b44494d --- /dev/null +++ b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/libs/jshint/jshint.js @@ -0,0 +1,4470 @@ +/*! + * JSHint, by JSHint Community. + * + * Licensed under the same slightly modified MIT license that JSLint is. + * It stops evil-doers everywhere. + * + * JSHint is a derivative work of JSLint: + * + * Copyright (c) 2002 Douglas Crockford (www.JSLint.com) + * + * 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 shall be used for Good, not Evil. + * + * 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. + * + * JSHint was forked from 2010-12-16 edition of JSLint. + * + */ + +/* + JSHINT is a global function. It takes two parameters. + + var myResult = JSHINT(source, option); + + The first parameter is either a string or an array of strings. If it is a + string, it will be split on '\n' or '\r'. If it is an array of strings, it + is assumed that each string represents one line. The source can be a + JavaScript text or a JSON text. + + The second parameter is an optional object of options which control the + operation of JSHINT. Most of the options are booleans: They are all + optional and have a default value of false. One of the options, predef, + can be an array of names, which will be used to declare global variables, + or an object whose keys are used as global names, with a boolean value + that determines if they are assignable. + + If it checks out, JSHINT returns true. Otherwise, it returns false. + + If false, you can inspect JSHINT.errors to find out the problems. + JSHINT.errors is an array of objects containing these members: + + { + line : The line (relative to 0) at which the lint was found + character : The character (relative to 0) at which the lint was found + reason : The problem + evidence : The text line in which the problem occurred + raw : The raw message before the details were inserted + a : The first detail + b : The second detail + c : The third detail + d : The fourth detail + } + + If a fatal error was found, a null will be the last element of the + JSHINT.errors array. + + You can request a Function Report, which shows all of the functions + and the parameters and vars that they use. This can be used to find + implied global variables and other problems. The report is in HTML and + can be inserted in an HTML . + + var myReport = JSHINT.report(limited); + + If limited is true, then the report will be limited to only errors. + + You can request a data structure which contains JSHint's results. + + var myData = JSHINT.data(); + + It returns a structure with this form: + + { + errors: [ + { + line: NUMBER, + character: NUMBER, + reason: STRING, + evidence: STRING + } + ], + functions: [ + name: STRING, + line: NUMBER, + last: NUMBER, + param: [ + STRING + ], + closure: [ + STRING + ], + var: [ + STRING + ], + exception: [ + STRING + ], + outer: [ + STRING + ], + unused: [ + STRING + ], + global: [ + STRING + ], + label: [ + STRING + ] + ], + globals: [ + STRING + ], + member: { + STRING: NUMBER + }, + unused: [ + { + name: STRING, + line: NUMBER + } + ], + implieds: [ + { + name: STRING, + line: NUMBER + } + ], + urls: [ + STRING + ], + json: BOOLEAN + } + + Empty arrays will not be included. + +*/ + +/*jshint + evil: true, nomen: false, onevar: false, regexp: false, strict: true, boss: true, + undef: true, maxlen: 100, indent:4 +*/ + +/*members "\b", "\t", "\n", "\f", "\r", "!=", "!==", "\"", "%", "(begin)", + "(breakage)", "(context)", "(error)", "(global)", "(identifier)", "(last)", + "(line)", "(loopage)", "(name)", "(onevar)", "(params)", "(scope)", + "(statement)", "(verb)", "*", "+", "++", "-", "--", "\/", "<", "<=", "==", + "===", ">", ">=", $, $$, $A, $F, $H, $R, $break, $continue, $w, Abstract, Ajax, + __filename, __dirname, ActiveXObject, Array, ArrayBuffer, ArrayBufferView, Audio, + Autocompleter, Assets, Boolean, Builder, Buffer, Browser, COM, CScript, Canvas, + CustomAnimation, Class, Control, Chain, Color, Cookie, Core, DataView, Date, + Debug, Draggable, Draggables, Droppables, Document, DomReady, DOMReady, DOMParser, Drag, + E, Enumerator, Enumerable, Element, Elements, Error, Effect, EvalError, Event, + Events, FadeAnimation, Field, Flash, Float32Array, Float64Array, Form, + FormField, Frame, FormData, Function, Fx, GetObject, Group, Hash, HotKey, + HTMLElement, HTMLAnchorElement, HTMLBaseElement, HTMLBlockquoteElement, + HTMLBodyElement, HTMLBRElement, HTMLButtonElement, HTMLCanvasElement, HTMLDirectoryElement, + HTMLDivElement, HTMLDListElement, HTMLFieldSetElement, + HTMLFontElement, HTMLFormElement, HTMLFrameElement, HTMLFrameSetElement, + HTMLHeadElement, HTMLHeadingElement, HTMLHRElement, HTMLHtmlElement, + HTMLIFrameElement, HTMLImageElement, HTMLInputElement, HTMLIsIndexElement, + HTMLLabelElement, HTMLLayerElement, HTMLLegendElement, HTMLLIElement, + HTMLLinkElement, HTMLMapElement, HTMLMenuElement, HTMLMetaElement, + HTMLModElement, HTMLObjectElement, HTMLOListElement, HTMLOptGroupElement, + HTMLOptionElement, HTMLParagraphElement, HTMLParamElement, HTMLPreElement, + HTMLQuoteElement, HTMLScriptElement, HTMLSelectElement, HTMLStyleElement, + HtmlTable, HTMLTableCaptionElement, HTMLTableCellElement, HTMLTableColElement, + HTMLTableElement, HTMLTableRowElement, HTMLTableSectionElement, + HTMLTextAreaElement, HTMLTitleElement, HTMLUListElement, HTMLVideoElement, + Iframe, IframeShim, Image, Int16Array, Int32Array, Int8Array, + Insertion, InputValidator, JSON, Keyboard, Locale, LN10, LN2, LOG10E, LOG2E, + MAX_VALUE, MIN_VALUE, Mask, Math, MenuItem, MessageChannel, MessageEvent, MessagePort, + MoveAnimation, MooTools, Native, NEGATIVE_INFINITY, Number, Object, ObjectRange, Option, + Options, OverText, PI, POSITIVE_INFINITY, PeriodicalExecuter, Point, Position, Prototype, + RangeError, Rectangle, ReferenceError, RegExp, ResizeAnimation, Request, RotateAnimation, + SQRT1_2, SQRT2, ScrollBar, ScriptEngine, ScriptEngineBuildVersion, + ScriptEngineMajorVersion, ScriptEngineMinorVersion, Scriptaculous, Scroller, + Slick, Slider, Selector, SharedWorker, String, Style, SyntaxError, Sortable, Sortables, + SortableObserver, Sound, Spinner, System, Swiff, Text, TextArea, Template, + Timer, Tips, Type, TypeError, Toggle, Try, "use strict", unescape, URI, URIError, URL, + VBArray, WSH, WScript, XDomainRequest, Web, Window, XMLDOM, XMLHttpRequest, XMLSerializer, + XPathEvaluator, XPathException, XPathExpression, XPathNamespace, XPathNSResolver, XPathResult, + "\\", a, addEventListener, address, alert, apply, applicationCache, arguments, arity, asi, atob, + b, basic, basicToken, bitwise, block, blur, boolOptions, boss, browser, btoa, c, call, callee, + caller, cases, charAt, charCodeAt, character, clearInterval, clearTimeout, + close, closed, closure, comment, condition, confirm, console, constructor, + content, couch, create, css, curly, d, data, datalist, dd, debug, decodeURI, + decodeURIComponent, defaultStatus, defineClass, deserialize, devel, document, + dojo, dijit, dojox, define, else, emit, encodeURI, encodeURIComponent, + entityify, eqeqeq, eqnull, errors, es5, escape, esnext, eval, event, evidence, evil, + ex, exception, exec, exps, expr, exports, FileReader, first, floor, focus, + forin, fragment, frames, from, fromCharCode, fud, funcscope, funct, function, functions, + g, gc, getComputedStyle, getRow, getter, getterToken, GLOBAL, global, globals, globalstrict, + hasOwnProperty, help, history, i, id, identifier, immed, implieds, importPackage, include, + indent, indexOf, init, ins, instanceOf, isAlpha, isApplicationRunning, isArray, + isDigit, isFinite, isNaN, iterator, java, join, jshint, + JSHINT, json, jquery, jQuery, keys, label, labelled, last, lastsemic, laxbreak, laxcomma, + latedef, lbp, led, left, length, line, load, loadClass, localStorage, location, + log, loopfunc, m, match, maxerr, maxlen, member,message, meta, module, moveBy, + moveTo, mootools, multistr, name, navigator, new, newcap, noarg, node, noempty, nomen, + nonew, nonstandard, nud, onbeforeunload, onblur, onerror, onevar, onecase, onfocus, + onload, onresize, onunload, open, openDatabase, openURL, opener, opera, options, outer, param, + parent, parseFloat, parseInt, passfail, plusplus, predef, print, process, prompt, + proto, prototype, prototypejs, provides, push, quit, range, raw, reach, reason, regexp, + readFile, readUrl, regexdash, removeEventListener, replace, report, require, + reserved, resizeBy, resizeTo, resolvePath, resumeUpdates, respond, rhino, right, + runCommand, scroll, screen, scripturl, scrollBy, scrollTo, scrollbar, search, seal, + send, serialize, sessionStorage, setInterval, setTimeout, setter, setterToken, shift, slice, + smarttabs, sort, spawn, split, stack, status, start, strict, sub, substr, supernew, shadow, + supplant, sum, sync, test, toLowerCase, toString, toUpperCase, toint32, token, top, trailing, + type, typeOf, Uint16Array, Uint32Array, Uint8Array, undef, undefs, unsafe, unused, urls, validthis, + value, valueOf, var, version, WebSocket, withstmt, white, window, Worker, wsh*/ + +/*global exports: false */ + +// We build the application inside a function so that we produce only a single +// global variable. That function will be invoked immediately, and its return +// value is the JSHINT function itself. + +var JSHINT = (function () { + "use strict"; + + var anonname, // The guessed name for anonymous functions. + +// These are operators that should not be used with the ! operator. + + bang = { + '<' : true, + '<=' : true, + '==' : true, + '===': true, + '!==': true, + '!=' : true, + '>' : true, + '>=' : true, + '+' : true, + '-' : true, + '*' : true, + '/' : true, + '%' : true + }, + + // These are the JSHint boolean options. + boolOptions = { + asi : true, // if automatic semicolon insertion should be tolerated + bitwise : true, // if bitwise operators should not be allowed + boss : true, // if advanced usage of assignments should be allowed + browser : true, // if the standard browser globals should be predefined + couch : true, // if CouchDB globals should be predefined + curly : true, // if curly braces around all blocks should be required + debug : true, // if debugger statements should be allowed + devel : true, // if logging globals should be predefined (console, + // alert, etc.) + dojo : true, // if Dojo Toolkit globals should be predefined + eqeqeq : true, // if === should be required + eqnull : true, // if == null comparisons should be tolerated + es5 : true, // if ES5 syntax should be allowed + esnext : true, // if es.next specific syntax should be allowed + evil : true, // if eval should be allowed + expr : true, // if ExpressionStatement should be allowed as Programs + forin : true, // if for in statements must filter + funcscope : true, // if only function scope should be used for scope tests + globalstrict: true, // if global "use strict"; should be allowed (also + // enables 'strict') + immed : true, // if immediate invocations must be wrapped in parens + iterator : true, // if the `__iterator__` property should be allowed + jquery : true, // if jQuery globals should be predefined + lastsemic : true, // if semicolons may be ommitted for the trailing + // statements inside of a one-line blocks. + latedef : true, // if the use before definition should not be tolerated + laxbreak : true, // if line breaks should not be checked + laxcomma : true, // if line breaks should not be checked around commas + loopfunc : true, // if functions should be allowed to be defined within + // loops + mootools : true, // if MooTools globals should be predefined + multistr : true, // allow multiline strings + newcap : true, // if constructor names must be capitalized + noarg : true, // if arguments.caller and arguments.callee should be + // disallowed + node : true, // if the Node.js environment globals should be + // predefined + noempty : true, // if empty blocks should be disallowed + nonew : true, // if using `new` for side-effects should be disallowed + nonstandard : true, // if non-standard (but widely adopted) globals should + // be predefined + nomen : true, // if names should be checked + onevar : true, // if only one var statement per function should be + // allowed + onecase : true, // if one case switch statements should be allowed + passfail : true, // if the scan should stop on first error + plusplus : true, // if increment/decrement should not be allowed + proto : true, // if the `__proto__` property should be allowed + prototypejs : true, // if Prototype and Scriptaculous globals should be + // predefined + regexdash : true, // if unescaped first/last dash (-) inside brackets + // should be tolerated + regexp : true, // if the . should not be allowed in regexp literals + rhino : true, // if the Rhino environment globals should be predefined + undef : true, // if variables should be declared before used + scripturl : true, // if script-targeted URLs should be tolerated + shadow : true, // if variable shadowing should be tolerated + smarttabs : true, // if smarttabs should be tolerated + // (http://www.emacswiki.org/emacs/SmartTabs) + strict : true, // require the "use strict"; pragma + sub : true, // if all forms of subscript notation are tolerated + supernew : true, // if `new function () { ... };` and `new Object;` + // should be tolerated + trailing : true, // if trailing whitespace rules apply + unsafe : true, // if "unsafe" characters should be allowed + validthis : true, // if 'this' inside a non-constructor function is valid. + // This is a function scoped option only. + withstmt : true, // if with statements should be allowed + white : true, // if strict whitespace rules apply + wsh : true // if the Windows Scripting Host environment globals + // should be predefined + }, + + // These are the JSHint options that can take any value + // (we use this object to detect invalid options) + valOptions = { + maxlen: false, + indent: false, + maxerr: false, + predef: false + }, + + + // browser contains a set of global names which are commonly provided by a + // web browser environment. + browser = { + ArrayBuffer : false, + ArrayBufferView : false, + Audio : false, + addEventListener : false, + applicationCache : false, + atob : false, + blur : false, + btoa : false, + clearInterval : false, + clearTimeout : false, + close : false, + closed : false, + DataView : false, + DOMParser : false, + defaultStatus : false, + document : false, + event : false, + FileReader : false, + Float32Array : false, + Float64Array : false, + FormData : false, + focus : false, + frames : false, + getComputedStyle : false, + HTMLElement : false, + HTMLAnchorElement : false, + HTMLBaseElement : false, + HTMLBlockquoteElement : false, + HTMLBodyElement : false, + HTMLBRElement : false, + HTMLButtonElement : false, + HTMLCanvasElement : false, + HTMLDirectoryElement : false, + HTMLDivElement : false, + HTMLDListElement : false, + HTMLFieldSetElement : false, + HTMLFontElement : false, + HTMLFormElement : false, + HTMLFrameElement : false, + HTMLFrameSetElement : false, + HTMLHeadElement : false, + HTMLHeadingElement : false, + HTMLHRElement : false, + HTMLHtmlElement : false, + HTMLIFrameElement : false, + HTMLImageElement : false, + HTMLInputElement : false, + HTMLIsIndexElement : false, + HTMLLabelElement : false, + HTMLLayerElement : false, + HTMLLegendElement : false, + HTMLLIElement : false, + HTMLLinkElement : false, + HTMLMapElement : false, + HTMLMenuElement : false, + HTMLMetaElement : false, + HTMLModElement : false, + HTMLObjectElement : false, + HTMLOListElement : false, + HTMLOptGroupElement : false, + HTMLOptionElement : false, + HTMLParagraphElement : false, + HTMLParamElement : false, + HTMLPreElement : false, + HTMLQuoteElement : false, + HTMLScriptElement : false, + HTMLSelectElement : false, + HTMLStyleElement : false, + HTMLTableCaptionElement : false, + HTMLTableCellElement : false, + HTMLTableColElement : false, + HTMLTableElement : false, + HTMLTableRowElement : false, + HTMLTableSectionElement : false, + HTMLTextAreaElement : false, + HTMLTitleElement : false, + HTMLUListElement : false, + HTMLVideoElement : false, + history : false, + Int16Array : false, + Int32Array : false, + Int8Array : false, + Image : false, + length : false, + localStorage : false, + location : false, + MessageChannel : false, + MessageEvent : false, + MessagePort : false, + moveBy : false, + moveTo : false, + name : false, + navigator : false, + onbeforeunload : true, + onblur : true, + onerror : true, + onfocus : true, + onload : true, + onresize : true, + onunload : true, + open : false, + openDatabase : false, + opener : false, + Option : false, + parent : false, + print : false, + removeEventListener : false, + resizeBy : false, + resizeTo : false, + screen : false, + scroll : false, + scrollBy : false, + scrollTo : false, + sessionStorage : false, + setInterval : false, + setTimeout : false, + SharedWorker : false, + status : false, + top : false, + Uint16Array : false, + Uint32Array : false, + Uint8Array : false, + WebSocket : false, + window : false, + Worker : false, + XMLHttpRequest : false, + XMLSerializer : false, + XPathEvaluator : false, + XPathException : false, + XPathExpression : false, + XPathNamespace : false, + XPathNSResolver : false, + XPathResult : false + }, + + couch = { + "require" : false, + respond : false, + getRow : false, + emit : false, + send : false, + start : false, + sum : false, + log : false, + exports : false, + module : false, + provides : false + }, + + devel = { + alert : false, + confirm : false, + console : false, + Debug : false, + opera : false, + prompt : false + }, + + dojo = { + dojo : false, + dijit : false, + dojox : false, + define : false, + "require" : false + }, + + escapes = { + '\b': '\\b', + '\t': '\\t', + '\n': '\\n', + '\f': '\\f', + '\r': '\\r', + '"' : '\\"', + '/' : '\\/', + '\\': '\\\\' + }, + + funct, // The current function + + functionicity = [ + 'closure', 'exception', 'global', 'label', + 'outer', 'unused', 'var' + ], + + functions, // All of the functions + + global, // The global scope + implied, // Implied globals + inblock, + indent, + jsonmode, + + jquery = { + '$' : false, + jQuery : false + }, + + lines, + lookahead, + member, + membersOnly, + + mootools = { + '$' : false, + '$$' : false, + Assets : false, + Browser : false, + Chain : false, + Class : false, + Color : false, + Cookie : false, + Core : false, + Document : false, + DomReady : false, + DOMReady : false, + Drag : false, + Element : false, + Elements : false, + Event : false, + Events : false, + Fx : false, + Group : false, + Hash : false, + HtmlTable : false, + Iframe : false, + IframeShim : false, + InputValidator : false, + instanceOf : false, + Keyboard : false, + Locale : false, + Mask : false, + MooTools : false, + Native : false, + Options : false, + OverText : false, + Request : false, + Scroller : false, + Slick : false, + Slider : false, + Sortables : false, + Spinner : false, + Swiff : false, + Tips : false, + Type : false, + typeOf : false, + URI : false, + Window : false + }, + + nexttoken, + + node = { + __filename : false, + __dirname : false, + Buffer : false, + console : false, + exports : false, + GLOBAL : false, + global : false, + module : false, + process : false, + require : false, + setTimeout : false, + clearTimeout : false, + setInterval : false, + clearInterval : false + }, + + noreach, + option, + predefined, // Global variables defined by option + prereg, + prevtoken, + + prototypejs = { + '$' : false, + '$$' : false, + '$A' : false, + '$F' : false, + '$H' : false, + '$R' : false, + '$break' : false, + '$continue' : false, + '$w' : false, + Abstract : false, + Ajax : false, + Class : false, + Enumerable : false, + Element : false, + Event : false, + Field : false, + Form : false, + Hash : false, + Insertion : false, + ObjectRange : false, + PeriodicalExecuter: false, + Position : false, + Prototype : false, + Selector : false, + Template : false, + Toggle : false, + Try : false, + Autocompleter : false, + Builder : false, + Control : false, + Draggable : false, + Draggables : false, + Droppables : false, + Effect : false, + Sortable : false, + SortableObserver : false, + Sound : false, + Scriptaculous : false + }, + + rhino = { + defineClass : false, + deserialize : false, + gc : false, + help : false, + importPackage: false, + "java" : false, + load : false, + loadClass : false, + print : false, + quit : false, + readFile : false, + readUrl : false, + runCommand : false, + seal : false, + serialize : false, + spawn : false, + sync : false, + toint32 : false, + version : false + }, + + scope, // The current scope + stack, + + // standard contains the global names that are provided by the + // ECMAScript standard. + standard = { + Array : false, + Boolean : false, + Date : false, + decodeURI : false, + decodeURIComponent : false, + encodeURI : false, + encodeURIComponent : false, + Error : false, + 'eval' : false, + EvalError : false, + Function : false, + hasOwnProperty : false, + isFinite : false, + isNaN : false, + JSON : false, + Math : false, + Number : false, + Object : false, + parseInt : false, + parseFloat : false, + RangeError : false, + ReferenceError : false, + RegExp : false, + String : false, + SyntaxError : false, + TypeError : false, + URIError : false + }, + + // widely adopted global names that are not part of ECMAScript standard + nonstandard = { + escape : false, + unescape : false + }, + + standard_member = { + E : true, + LN2 : true, + LN10 : true, + LOG2E : true, + LOG10E : true, + MAX_VALUE : true, + MIN_VALUE : true, + NEGATIVE_INFINITY : true, + PI : true, + POSITIVE_INFINITY : true, + SQRT1_2 : true, + SQRT2 : true + }, + + directive, + syntax = {}, + tab, + token, + urls, + useESNextSyntax, + warnings, + + wsh = { + ActiveXObject : true, + Enumerator : true, + GetObject : true, + ScriptEngine : true, + ScriptEngineBuildVersion : true, + ScriptEngineMajorVersion : true, + ScriptEngineMinorVersion : true, + VBArray : true, + WSH : true, + WScript : true, + XDomainRequest : true + }; + + // Regular expressions. Some of these are stupidly long. + var ax, cx, tx, nx, nxg, lx, ix, jx, ft; + (function () { + /*jshint maxlen:300 */ + + // unsafe comment or string + ax = /@cc|<\/?|script|\]\s*\]|<\s*!|</i; + + // unsafe characters that are silently deleted by one or more browsers + cx = /[\u0000-\u001f\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/; + + // token + tx = /^\s*([(){}\[.,:;'"~\?\]#@]|==?=?|\/(\*(jshint|jslint|members?|global)?|=|\/)?|\*[\/=]?|\+(?:=|\++)?|-(?:=|-+)?|%=?|&[&=]?|\|[|=]?|>>?>?=?|<([\/=!]|\!(\[|--)?|<=?)?|\^=?|\!=?=?|[a-zA-Z_$][a-zA-Z0-9_$]*|[0-9]+([xX][0-9a-fA-F]+|\.[0-9]*)?([eE][+\-]?[0-9]+)?)/; + + // characters in strings that need escapement + nx = /[\u0000-\u001f&<"\/\\\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/; + nxg = /[\u0000-\u001f&<"\/\\\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g; + + // star slash + lx = /\*\/|\/\*/; + + // identifier + ix = /^([a-zA-Z_$][a-zA-Z0-9_$]*)$/; + + // javascript url + jx = /^(?:javascript|jscript|ecmascript|vbscript|mocha|livescript)\s*:/i; + + // catches /* falls through */ comments + ft = /^\s*\/\*\s*falls\sthrough\s*\*\/\s*$/; + }()); + + function F() {} // Used by Object.create + + function is_own(object, name) { + +// The object.hasOwnProperty method fails when the property under consideration +// is named 'hasOwnProperty'. So we have to use this more convoluted form. + + return Object.prototype.hasOwnProperty.call(object, name); + } + + function checkOption(name, t) { + if (valOptions[name] === undefined && boolOptions[name] === undefined) { + warning("Bad option: '" + name + "'.", t); + } + } + +// Provide critical ES5 functions to ES3. + + if (typeof Array.isArray !== 'function') { + Array.isArray = function (o) { + return Object.prototype.toString.apply(o) === '[object Array]'; + }; + } + + if (typeof Object.create !== 'function') { + Object.create = function (o) { + F.prototype = o; + return new F(); + }; + } + + if (typeof Object.keys !== 'function') { + Object.keys = function (o) { + var a = [], k; + for (k in o) { + if (is_own(o, k)) { + a.push(k); + } + } + return a; + }; + } + +// Non standard methods + + if (typeof String.prototype.entityify !== 'function') { + String.prototype.entityify = function () { + return this + .replace(/&/g, '&') + .replace(//g, '>'); + }; + } + + if (typeof String.prototype.isAlpha !== 'function') { + String.prototype.isAlpha = function () { + return (this >= 'a' && this <= 'z\uffff') || + (this >= 'A' && this <= 'Z\uffff'); + }; + } + + if (typeof String.prototype.isDigit !== 'function') { + String.prototype.isDigit = function () { + return (this >= '0' && this <= '9'); + }; + } + + if (typeof String.prototype.supplant !== 'function') { + String.prototype.supplant = function (o) { + return this.replace(/\{([^{}]*)\}/g, function (a, b) { + var r = o[b]; + return typeof r === 'string' || typeof r === 'number' ? r : a; + }); + }; + } + + if (typeof String.prototype.name !== 'function') { + String.prototype.name = function () { + +// If the string looks like an identifier, then we can return it as is. +// If the string contains no control characters, no quote characters, and no +// backslash characters, then we can simply slap some quotes around it. +// Otherwise we must also replace the offending characters with safe +// sequences. + + if (ix.test(this)) { + return this; + } + if (nx.test(this)) { + return '"' + this.replace(nxg, function (a) { + var c = escapes[a]; + if (c) { + return c; + } + return '\\u' + ('0000' + a.charCodeAt().toString(16)).slice(-4); + }) + '"'; + } + return '"' + this + '"'; + }; + } + + + function combine(t, o) { + var n; + for (n in o) { + if (is_own(o, n)) { + t[n] = o[n]; + } + } + } + + function assume() { + if (option.couch) { + combine(predefined, couch); + } + + if (option.rhino) { + combine(predefined, rhino); + } + + if (option.prototypejs) { + combine(predefined, prototypejs); + } + + if (option.node) { + combine(predefined, node); + option.globalstrict = true; + } + + if (option.devel) { + combine(predefined, devel); + } + + if (option.dojo) { + combine(predefined, dojo); + } + + if (option.browser) { + combine(predefined, browser); + } + + if (option.nonstandard) { + combine(predefined, nonstandard); + } + + if (option.jquery) { + combine(predefined, jquery); + } + + if (option.mootools) { + combine(predefined, mootools); + } + + if (option.wsh) { + combine(predefined, wsh); + } + + if (option.esnext) { + useESNextSyntax(); + } + + if (option.globalstrict && option.strict !== false) { + option.strict = true; + } + } + + + // Produce an error warning. + function quit(message, line, chr) { + var percentage = Math.floor((line / lines.length) * 100); + + throw { + name: 'JSHintError', + line: line, + character: chr, + message: message + " (" + percentage + "% scanned).", + raw: message + }; + } + + function isundef(scope, m, t, a) { + return JSHINT.undefs.push([scope, m, t, a]); + } + + function warning(m, t, a, b, c, d) { + var ch, l, w; + t = t || nexttoken; + if (t.id === '(end)') { // `~ + t = token; + } + l = t.line || 0; + ch = t.from || 0; + w = { + id: '(error)', + raw: m, + evidence: lines[l - 1] || '', + line: l, + character: ch, + a: a, + b: b, + c: c, + d: d + }; + w.reason = m.supplant(w); + JSHINT.errors.push(w); + if (option.passfail) { + quit('Stopping. ', l, ch); + } + warnings += 1; + if (warnings >= option.maxerr) { + quit("Too many errors.", l, ch); + } + return w; + } + + function warningAt(m, l, ch, a, b, c, d) { + return warning(m, { + line: l, + from: ch + }, a, b, c, d); + } + + function error(m, t, a, b, c, d) { + var w = warning(m, t, a, b, c, d); + } + + function errorAt(m, l, ch, a, b, c, d) { + return error(m, { + line: l, + from: ch + }, a, b, c, d); + } + + + +// lexical analysis and token construction + + var lex = (function lex() { + var character, from, line, s; + +// Private lex methods + + function nextLine() { + var at, + tw; // trailing whitespace check + + if (line >= lines.length) + return false; + + character = 1; + s = lines[line]; + line += 1; + + // If smarttabs option is used check for spaces followed by tabs only. + // Otherwise check for any occurence of mixed tabs and spaces. + if (option.smarttabs) + at = s.search(/ \t/); + else + at = s.search(/ \t|\t /); + + if (at >= 0) + warningAt("Mixed spaces and tabs.", line, at + 1); + + s = s.replace(/\t/g, tab); + + if (!option.unsafe) { + at = s.search(cx); + + if (at >= 0) + warningAt("Unsafe character.", line, at); + } + + if (option.maxlen && option.maxlen < s.length) + warningAt("Line too long.", line, s.length); + + // Check for trailing whitespaces + tw = option.trailing && s.match(/^(.*?)\s+$/); + if (tw && !/^\s+$/.test(s)) { + warningAt("Trailing whitespace.", line, tw[1].length + 1); + } + return true; + } + +// Produce a token object. The token inherits from a syntax symbol. + + function it(type, value) { + var i, t; + if (type === '(color)' || type === '(range)') { + t = {type: type}; + } else if (type === '(punctuator)' || + (type === '(identifier)' && is_own(syntax, value))) { + t = syntax[value] || syntax['(error)']; + } else { + t = syntax[type]; + } + t = Object.create(t); + if (type === '(string)' || type === '(range)') { + if (!option.scripturl && jx.test(value)) { + warningAt("Script URL.", line, from); + } + } + if (type === '(identifier)') { + t.identifier = true; + if (value === '__proto__' && !option.proto) { + warningAt("The '{a}' property is deprecated.", + line, from, value); + } else if (value === '__iterator__' && !option.iterator) { + warningAt("'{a}' is only available in JavaScript 1.7.", + line, from, value); + } else if (option.nomen && (value.charAt(0) === '_' || + value.charAt(value.length - 1) === '_')) { + if (!option.node || token.id === '.' || + (value !== '__dirname' && value !== '__filename')) { + warningAt("Unexpected {a} in '{b}'.", line, from, "dangling '_'", value); + } + } + } + t.value = value; + t.line = line; + t.character = character; + t.from = from; + i = t.id; + if (i !== '(endline)') { + prereg = i && + (('(,=:[!&|?{};'.indexOf(i.charAt(i.length - 1)) >= 0) || + i === 'return' || + i === 'case'); + } + return t; + } + + // Public lex methods + return { + init: function (source) { + if (typeof source === 'string') { + lines = source + .replace(/\r\n/g, '\n') + .replace(/\r/g, '\n') + .split('\n'); + } else { + lines = source; + } + + // If the first line is a shebang (#!), make it a blank and move on. + // Shebangs are used by Node scripts. + if (lines[0] && lines[0].substr(0, 2) === '#!') + lines[0] = ''; + + line = 0; + nextLine(); + from = 1; + }, + + range: function (begin, end) { + var c, value = ''; + from = character; + if (s.charAt(0) !== begin) { + errorAt("Expected '{a}' and instead saw '{b}'.", + line, character, begin, s.charAt(0)); + } + for (;;) { + s = s.slice(1); + character += 1; + c = s.charAt(0); + switch (c) { + case '': + errorAt("Missing '{a}'.", line, character, c); + break; + case end: + s = s.slice(1); + character += 1; + return it('(range)', value); + case '\\': + warningAt("Unexpected '{a}'.", line, character, c); + } + value += c; + } + + }, + + + // token -- this is called by advance to get the next token + token: function () { + var b, c, captures, d, depth, high, i, l, low, q, t, isLiteral, isInRange, n; + + function match(x) { + var r = x.exec(s), r1; + if (r) { + l = r[0].length; + r1 = r[1]; + c = r1.charAt(0); + s = s.substr(l); + from = character + l - r1.length; + character += l; + return r1; + } + } + + function string(x) { + var c, j, r = '', allowNewLine = false; + + if (jsonmode && x !== '"') { + warningAt("Strings must use doublequote.", + line, character); + } + + function esc(n) { + var i = parseInt(s.substr(j + 1, n), 16); + j += n; + if (i >= 32 && i <= 126 && + i !== 34 && i !== 92 && i !== 39) { + warningAt("Unnecessary escapement.", line, character); + } + character += n; + c = String.fromCharCode(i); + } + j = 0; +unclosedString: for (;;) { + while (j >= s.length) { + j = 0; + + var cl = line, cf = from; + if (!nextLine()) { + errorAt("Unclosed string.", cl, cf); + break unclosedString; + } + + if (allowNewLine) { + allowNewLine = false; + } else { + warningAt("Unclosed string.", cl, cf); + } + } + c = s.charAt(j); + if (c === x) { + character += 1; + s = s.substr(j + 1); + return it('(string)', r, x); + } + if (c < ' ') { + if (c === '\n' || c === '\r') { + break; + } + warningAt("Control character in string: {a}.", + line, character + j, s.slice(0, j)); + } else if (c === '\\') { + j += 1; + character += 1; + c = s.charAt(j); + n = s.charAt(j + 1); + switch (c) { + case '\\': + case '"': + case '/': + break; + case '\'': + if (jsonmode) { + warningAt("Avoid \\'.", line, character); + } + break; + case 'b': + c = '\b'; + break; + case 'f': + c = '\f'; + break; + case 'n': + c = '\n'; + break; + case 'r': + c = '\r'; + break; + case 't': + c = '\t'; + break; + case '0': + c = '\0'; + // Octal literals fail in strict mode + // check if the number is between 00 and 07 + // where 'n' is the token next to 'c' + if (n >= 0 && n <= 7 && directive["use strict"]) { + warningAt( + "Octal literals are not allowed in strict mode.", + line, character); + } + break; + case 'u': + esc(4); + break; + case 'v': + if (jsonmode) { + warningAt("Avoid \\v.", line, character); + } + c = '\v'; + break; + case 'x': + if (jsonmode) { + warningAt("Avoid \\x-.", line, character); + } + esc(2); + break; + case '': + // last character is escape character + // always allow new line if escaped, but show + // warning if option is not set + allowNewLine = true; + if (option.multistr) { + if (jsonmode) { + warningAt("Avoid EOL escapement.", line, character); + } + c = ''; + character -= 1; + break; + } + warningAt("Bad escapement of EOL. Use option multistr if needed.", + line, character); + break; + default: + warningAt("Bad escapement.", line, character); + } + } + r += c; + character += 1; + j += 1; + } + } + + for (;;) { + if (!s) { + return it(nextLine() ? '(endline)' : '(end)', ''); + } + t = match(tx); + if (!t) { + t = ''; + c = ''; + while (s && s < '!') { + s = s.substr(1); + } + if (s) { + errorAt("Unexpected '{a}'.", line, character, s.substr(0, 1)); + s = ''; + } + } else { + + // identifier + + if (c.isAlpha() || c === '_' || c === '$') { + return it('(identifier)', t); + } + + // number + + if (c.isDigit()) { + if (!isFinite(Number(t))) { + warningAt("Bad number '{a}'.", + line, character, t); + } + if (s.substr(0, 1).isAlpha()) { + warningAt("Missing space after '{a}'.", + line, character, t); + } + if (c === '0') { + d = t.substr(1, 1); + if (d.isDigit()) { + if (token.id !== '.') { + warningAt("Don't use extra leading zeros '{a}'.", + line, character, t); + } + } else if (jsonmode && (d === 'x' || d === 'X')) { + warningAt("Avoid 0x-. '{a}'.", + line, character, t); + } + } + if (t.substr(t.length - 1) === '.') { + warningAt( +"A trailing decimal point can be confused with a dot '{a}'.", line, character, t); + } + return it('(number)', t); + } + switch (t) { + + // string + + case '"': + case "'": + return string(t); + + // // comment + + case '//': + s = ''; + token.comment = true; + break; + + // /* comment + + case '/*': + for (;;) { + i = s.search(lx); + if (i >= 0) { + break; + } + if (!nextLine()) { + errorAt("Unclosed comment.", line, character); + } + } + character += i + 2; + if (s.substr(i, 1) === '/') { + errorAt("Nested comment.", line, character); + } + s = s.substr(i + 2); + token.comment = true; + break; + + // /*members /*jshint /*global + + case '/*members': + case '/*member': + case '/*jshint': + case '/*jslint': + case '/*global': + case '*/': + return { + value: t, + type: 'special', + line: line, + character: character, + from: from + }; + + case '': + break; + // / + case '/': + if (token.id === '/=') { + errorAt("A regular expression literal can be confused with '/='.", + line, from); + } + if (prereg) { + depth = 0; + captures = 0; + l = 0; + for (;;) { + b = true; + c = s.charAt(l); + l += 1; + switch (c) { + case '': + errorAt("Unclosed regular expression.", line, from); + return quit('Stopping.', line, from); + case '/': + if (depth > 0) { + warningAt("{a} unterminated regular expression " + + "group(s).", line, from + l, depth); + } + c = s.substr(0, l - 1); + q = { + g: true, + i: true, + m: true + }; + while (q[s.charAt(l)] === true) { + q[s.charAt(l)] = false; + l += 1; + } + character += l; + s = s.substr(l); + q = s.charAt(0); + if (q === '/' || q === '*') { + errorAt("Confusing regular expression.", + line, from); + } + return it('(regexp)', c); + case '\\': + c = s.charAt(l); + if (c < ' ') { + warningAt( +"Unexpected control character in regular expression.", line, from + l); + } else if (c === '<') { + warningAt( +"Unexpected escaped character '{a}' in regular expression.", line, from + l, c); + } + l += 1; + break; + case '(': + depth += 1; + b = false; + if (s.charAt(l) === '?') { + l += 1; + switch (s.charAt(l)) { + case ':': + case '=': + case '!': + l += 1; + break; + default: + warningAt( +"Expected '{a}' and instead saw '{b}'.", line, from + l, ':', s.charAt(l)); + } + } else { + captures += 1; + } + break; + case '|': + b = false; + break; + case ')': + if (depth === 0) { + warningAt("Unescaped '{a}'.", + line, from + l, ')'); + } else { + depth -= 1; + } + break; + case ' ': + q = 1; + while (s.charAt(l) === ' ') { + l += 1; + q += 1; + } + if (q > 1) { + warningAt( +"Spaces are hard to count. Use {{a}}.", line, from + l, q); + } + break; + case '[': + c = s.charAt(l); + if (c === '^') { + l += 1; + if (option.regexp) { + warningAt("Insecure '{a}'.", + line, from + l, c); + } else if (s.charAt(l) === ']') { + errorAt("Unescaped '{a}'.", + line, from + l, '^'); + } + } + if (c === ']') { + warningAt("Empty class.", line, + from + l - 1); + } + isLiteral = false; + isInRange = false; +klass: do { + c = s.charAt(l); + l += 1; + switch (c) { + case '[': + case '^': + warningAt("Unescaped '{a}'.", + line, from + l, c); + if (isInRange) { + isInRange = false; + } else { + isLiteral = true; + } + break; + case '-': + if (isLiteral && !isInRange) { + isLiteral = false; + isInRange = true; + } else if (isInRange) { + isInRange = false; + } else if (s.charAt(l) === ']') { + isInRange = true; + } else { + if (option.regexdash !== (l === 2 || (l === 3 && + s.charAt(1) === '^'))) { + warningAt("Unescaped '{a}'.", + line, from + l - 1, '-'); + } + isLiteral = true; + } + break; + case ']': + if (isInRange && !option.regexdash) { + warningAt("Unescaped '{a}'.", + line, from + l - 1, '-'); + } + break klass; + case '\\': + c = s.charAt(l); + if (c < ' ') { + warningAt( +"Unexpected control character in regular expression.", line, from + l); + } else if (c === '<') { + warningAt( +"Unexpected escaped character '{a}' in regular expression.", line, from + l, c); + } + l += 1; + + // \w, \s and \d are never part of a character range + if (/[wsd]/i.test(c)) { + if (isInRange) { + warningAt("Unescaped '{a}'.", + line, from + l, '-'); + isInRange = false; + } + isLiteral = false; + } else if (isInRange) { + isInRange = false; + } else { + isLiteral = true; + } + break; + case '/': + warningAt("Unescaped '{a}'.", + line, from + l - 1, '/'); + + if (isInRange) { + isInRange = false; + } else { + isLiteral = true; + } + break; + case '<': + if (isInRange) { + isInRange = false; + } else { + isLiteral = true; + } + break; + default: + if (isInRange) { + isInRange = false; + } else { + isLiteral = true; + } + } + } while (c); + break; + case '.': + if (option.regexp) { + warningAt("Insecure '{a}'.", line, + from + l, c); + } + break; + case ']': + case '?': + case '{': + case '}': + case '+': + case '*': + warningAt("Unescaped '{a}'.", line, + from + l, c); + } + if (b) { + switch (s.charAt(l)) { + case '?': + case '+': + case '*': + l += 1; + if (s.charAt(l) === '?') { + l += 1; + } + break; + case '{': + l += 1; + c = s.charAt(l); + if (c < '0' || c > '9') { + warningAt( +"Expected a number and instead saw '{a}'.", line, from + l, c); + } + l += 1; + low = +c; + for (;;) { + c = s.charAt(l); + if (c < '0' || c > '9') { + break; + } + l += 1; + low = +c + (low * 10); + } + high = low; + if (c === ',') { + l += 1; + high = Infinity; + c = s.charAt(l); + if (c >= '0' && c <= '9') { + l += 1; + high = +c; + for (;;) { + c = s.charAt(l); + if (c < '0' || c > '9') { + break; + } + l += 1; + high = +c + (high * 10); + } + } + } + if (s.charAt(l) !== '}') { + warningAt( +"Expected '{a}' and instead saw '{b}'.", line, from + l, '}', c); + } else { + l += 1; + } + if (s.charAt(l) === '?') { + l += 1; + } + if (low > high) { + warningAt( +"'{a}' should not be greater than '{b}'.", line, from + l, low, high); + } + } + } + } + c = s.substr(0, l - 1); + character += l; + s = s.substr(l); + return it('(regexp)', c); + } + return it('(punctuator)', t); + + // punctuator + + case '#': + return it('(punctuator)', t); + default: + return it('(punctuator)', t); + } + } + } + } + }; + }()); + + + function addlabel(t, type) { + + if (t === 'hasOwnProperty') { + warning("'hasOwnProperty' is a really bad name."); + } + +// Define t in the current function in the current scope. + if (is_own(funct, t) && !funct['(global)']) { + if (funct[t] === true) { + if (option.latedef) + warning("'{a}' was used before it was defined.", nexttoken, t); + } else { + if (!option.shadow && type !== "exception") + warning("'{a}' is already defined.", nexttoken, t); + } + } + + funct[t] = type; + if (funct['(global)']) { + global[t] = funct; + if (is_own(implied, t)) { + if (option.latedef) + warning("'{a}' was used before it was defined.", nexttoken, t); + delete implied[t]; + } + } else { + scope[t] = funct; + } + } + + + function doOption() { + var b, obj, filter, o = nexttoken.value, t, v; + + switch (o) { + case '*/': + error("Unbegun comment."); + break; + case '/*members': + case '/*member': + o = '/*members'; + if (!membersOnly) { + membersOnly = {}; + } + obj = membersOnly; + break; + case '/*jshint': + case '/*jslint': + obj = option; + filter = boolOptions; + break; + case '/*global': + obj = predefined; + break; + default: + error("What?"); + } + + t = lex.token(); +loop: for (;;) { + for (;;) { + if (t.type === 'special' && t.value === '*/') { + break loop; + } + if (t.id !== '(endline)' && t.id !== ',') { + break; + } + t = lex.token(); + } + if (t.type !== '(string)' && t.type !== '(identifier)' && + o !== '/*members') { + error("Bad option.", t); + } + + v = lex.token(); + if (v.id === ':') { + v = lex.token(); + + if (obj === membersOnly) { + error("Expected '{a}' and instead saw '{b}'.", + t, '*/', ':'); + } + + if (o === '/*jshint') { + checkOption(t.value, t); + } + + if (t.value === 'indent' && (o === '/*jshint' || o === '/*jslint')) { + b = +v.value; + if (typeof b !== 'number' || !isFinite(b) || b <= 0 || + Math.floor(b) !== b) { + error("Expected a small integer and instead saw '{a}'.", + v, v.value); + } + obj.white = true; + obj.indent = b; + } else if (t.value === 'maxerr' && (o === '/*jshint' || o === '/*jslint')) { + b = +v.value; + if (typeof b !== 'number' || !isFinite(b) || b <= 0 || + Math.floor(b) !== b) { + error("Expected a small integer and instead saw '{a}'.", + v, v.value); + } + obj.maxerr = b; + } else if (t.value === 'maxlen' && (o === '/*jshint' || o === '/*jslint')) { + b = +v.value; + if (typeof b !== 'number' || !isFinite(b) || b <= 0 || + Math.floor(b) !== b) { + error("Expected a small integer and instead saw '{a}'.", + v, v.value); + } + obj.maxlen = b; + } else if (t.value === 'validthis') { + if (funct['(global)']) { + error("Option 'validthis' can't be used in a global scope."); + } else { + if (v.value === 'true' || v.value === 'false') + obj[t.value] = v.value === 'true'; + else + error("Bad option value.", v); + } + } else if (v.value === 'true') { + obj[t.value] = true; + } else if (v.value === 'false') { + obj[t.value] = false; + } else { + error("Bad option value.", v); + } + t = lex.token(); + } else { + if (o === '/*jshint' || o === '/*jslint') { + error("Missing option value.", t); + } + obj[t.value] = false; + t = v; + } + } + if (filter) { + assume(); + } + } + + +// We need a peek function. If it has an argument, it peeks that much farther +// ahead. It is used to distinguish +// for ( var i in ... +// from +// for ( var i = ... + + function peek(p) { + var i = p || 0, j = 0, t; + + while (j <= i) { + t = lookahead[j]; + if (!t) { + t = lookahead[j] = lex.token(); + } + j += 1; + } + return t; + } + + + +// Produce the next token. It looks for programming errors. + + function advance(id, t) { + switch (token.id) { + case '(number)': + if (nexttoken.id === '.') { + warning("A dot following a number can be confused with a decimal point.", token); + } + break; + case '-': + if (nexttoken.id === '-' || nexttoken.id === '--') { + warning("Confusing minusses."); + } + break; + case '+': + if (nexttoken.id === '+' || nexttoken.id === '++') { + warning("Confusing plusses."); + } + break; + } + + if (token.type === '(string)' || token.identifier) { + anonname = token.value; + } + + if (id && nexttoken.id !== id) { + if (t) { + if (nexttoken.id === '(end)') { + warning("Unmatched '{a}'.", t, t.id); + } else { + warning("Expected '{a}' to match '{b}' from line {c} and instead saw '{d}'.", + nexttoken, id, t.id, t.line, nexttoken.value); + } + } else if (nexttoken.type !== '(identifier)' || + nexttoken.value !== id) { + warning("Expected '{a}' and instead saw '{b}'.", + nexttoken, id, nexttoken.value); + } + } + + prevtoken = token; + token = nexttoken; + for (;;) { + nexttoken = lookahead.shift() || lex.token(); + if (nexttoken.id === '(end)' || nexttoken.id === '(error)') { + return; + } + if (nexttoken.type === 'special') { + doOption(); + } else { + if (nexttoken.id !== '(endline)') { + break; + } + } + } + } + + +// This is the heart of JSHINT, the Pratt parser. In addition to parsing, it +// is looking for ad hoc lint patterns. We add .fud to Pratt's model, which is +// like .nud except that it is only used on the first token of a statement. +// Having .fud makes it much easier to define statement-oriented languages like +// JavaScript. I retained Pratt's nomenclature. + +// .nud Null denotation +// .fud First null denotation +// .led Left denotation +// lbp Left binding power +// rbp Right binding power + +// They are elements of the parsing method called Top Down Operator Precedence. + + function expression(rbp, initial) { + var left, isArray = false, isObject = false; + + if (nexttoken.id === '(end)') + error("Unexpected early end of program.", token); + + advance(); + if (initial) { + anonname = 'anonymous'; + funct['(verb)'] = token.value; + } + if (initial === true && token.fud) { + left = token.fud(); + } else { + if (token.nud) { + left = token.nud(); + } else { + if (nexttoken.type === '(number)' && token.id === '.') { + warning("A leading decimal point can be confused with a dot: '.{a}'.", + token, nexttoken.value); + advance(); + return token; + } else { + error("Expected an identifier and instead saw '{a}'.", + token, token.id); + } + } + while (rbp < nexttoken.lbp) { + isArray = token.value === 'Array'; + isObject = token.value === 'Object'; + advance(); + if (isArray && token.id === '(' && nexttoken.id === ')') + warning("Use the array literal notation [].", token); + if (isObject && token.id === '(' && nexttoken.id === ')') + warning("Use the object literal notation {}.", token); + if (token.led) { + left = token.led(left); + } else { + error("Expected an operator and instead saw '{a}'.", + token, token.id); + } + } + } + return left; + } + + +// Functions for conformance of style. + + function adjacent(left, right) { + left = left || token; + right = right || nexttoken; + if (option.white) { + if (left.character !== right.from && left.line === right.line) { + left.from += (left.character - left.from); + warning("Unexpected space after '{a}'.", left, left.value); + } + } + } + + function nobreak(left, right) { + left = left || token; + right = right || nexttoken; + if (option.white && (left.character !== right.from || left.line !== right.line)) { + warning("Unexpected space before '{a}'.", right, right.value); + } + } + + function nospace(left, right) { + left = left || token; + right = right || nexttoken; + if (option.white && !left.comment) { + if (left.line === right.line) { + adjacent(left, right); + } + } + } + + function nonadjacent(left, right) { + if (option.white) { + left = left || token; + right = right || nexttoken; + if (left.line === right.line && left.character === right.from) { + left.from += (left.character - left.from); + warning("Missing space after '{a}'.", + left, left.value); + } + } + } + + function nobreaknonadjacent(left, right) { + left = left || token; + right = right || nexttoken; + if (!option.laxbreak && left.line !== right.line) { + warning("Bad line breaking before '{a}'.", right, right.id); + } else if (option.white) { + left = left || token; + right = right || nexttoken; + if (left.character === right.from) { + left.from += (left.character - left.from); + warning("Missing space after '{a}'.", + left, left.value); + } + } + } + + function indentation(bias) { + var i; + if (option.white && nexttoken.id !== '(end)') { + i = indent + (bias || 0); + if (nexttoken.from !== i) { + warning( +"Expected '{a}' to have an indentation at {b} instead at {c}.", + nexttoken, nexttoken.value, i, nexttoken.from); + } + } + } + + function nolinebreak(t) { + t = t || token; + if (t.line !== nexttoken.line) { + warning("Line breaking error '{a}'.", t, t.value); + } + } + + + function comma() { + if (token.line !== nexttoken.line) { + if (!option.laxcomma) { + if (comma.first) { + warning("Comma warnings can be turned off with 'laxcomma'"); + comma.first = false; + } + warning("Bad line breaking before '{a}'.", token, nexttoken.id); + } + } else if (!token.comment && token.character !== nexttoken.from && option.white) { + token.from += (token.character - token.from); + warning("Unexpected space after '{a}'.", token, token.value); + } + advance(','); + nonadjacent(token, nexttoken); + } + + +// Functional constructors for making the symbols that will be inherited by +// tokens. + + function symbol(s, p) { + var x = syntax[s]; + if (!x || typeof x !== 'object') { + syntax[s] = x = { + id: s, + lbp: p, + value: s + }; + } + return x; + } + + + function delim(s) { + return symbol(s, 0); + } + + + function stmt(s, f) { + var x = delim(s); + x.identifier = x.reserved = true; + x.fud = f; + return x; + } + + + function blockstmt(s, f) { + var x = stmt(s, f); + x.block = true; + return x; + } + + + function reserveName(x) { + var c = x.id.charAt(0); + if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) { + x.identifier = x.reserved = true; + } + return x; + } + + + function prefix(s, f) { + var x = symbol(s, 150); + reserveName(x); + x.nud = (typeof f === 'function') ? f : function () { + this.right = expression(150); + this.arity = 'unary'; + if (this.id === '++' || this.id === '--') { + if (option.plusplus) { + warning("Unexpected use of '{a}'.", this, this.id); + } else if ((!this.right.identifier || this.right.reserved) && + this.right.id !== '.' && this.right.id !== '[') { + warning("Bad operand.", this); + } + } + return this; + }; + return x; + } + + + function type(s, f) { + var x = delim(s); + x.type = s; + x.nud = f; + return x; + } + + + function reserve(s, f) { + var x = type(s, f); + x.identifier = x.reserved = true; + return x; + } + + + function reservevar(s, v) { + return reserve(s, function () { + if (typeof v === 'function') { + v(this); + } + return this; + }); + } + + + function infix(s, f, p, w) { + var x = symbol(s, p); + reserveName(x); + x.led = function (left) { + if (!w) { + nobreaknonadjacent(prevtoken, token); + nonadjacent(token, nexttoken); + } + if (s === "in" && left.id === "!") { + warning("Confusing use of '{a}'.", left, '!'); + } + if (typeof f === 'function') { + return f(left, this); + } else { + this.left = left; + this.right = expression(p); + return this; + } + }; + return x; + } + + + function relation(s, f) { + var x = symbol(s, 100); + x.led = function (left) { + nobreaknonadjacent(prevtoken, token); + nonadjacent(token, nexttoken); + var right = expression(100); + if ((left && left.id === 'NaN') || (right && right.id === 'NaN')) { + warning("Use the isNaN function to compare with NaN.", this); + } else if (f) { + f.apply(this, [left, right]); + } + if (left.id === '!') { + warning("Confusing use of '{a}'.", left, '!'); + } + if (right.id === '!') { + warning("Confusing use of '{a}'.", right, '!'); + } + this.left = left; + this.right = right; + return this; + }; + return x; + } + + + function isPoorRelation(node) { + return node && + ((node.type === '(number)' && +node.value === 0) || + (node.type === '(string)' && node.value === '') || + (node.type === 'null' && !option.eqnull) || + node.type === 'true' || + node.type === 'false' || + node.type === 'undefined'); + } + + + function assignop(s, f) { + symbol(s, 20).exps = true; + return infix(s, function (left, that) { + var l; + that.left = left; + if (predefined[left.value] === false && + scope[left.value]['(global)'] === true) { + warning("Read only.", left); + } else if (left['function']) { + warning("'{a}' is a function.", left, left.value); + } + if (left) { + if (option.esnext && funct[left.value] === 'const') { + warning("Attempting to override '{a}' which is a constant", left, left.value); + } + if (left.id === '.' || left.id === '[') { + if (!left.left || left.left.value === 'arguments') { + warning('Bad assignment.', that); + } + that.right = expression(19); + return that; + } else if (left.identifier && !left.reserved) { + if (funct[left.value] === 'exception') { + warning("Do not assign to the exception parameter.", left); + } + that.right = expression(19); + return that; + } + if (left === syntax['function']) { + warning( +"Expected an identifier in an assignment and instead saw a function invocation.", + token); + } + } + error("Bad assignment.", that); + }, 20); + } + + + function bitwise(s, f, p) { + var x = symbol(s, p); + reserveName(x); + x.led = (typeof f === 'function') ? f : function (left) { + if (option.bitwise) { + warning("Unexpected use of '{a}'.", this, this.id); + } + this.left = left; + this.right = expression(p); + return this; + }; + return x; + } + + + function bitwiseassignop(s) { + symbol(s, 20).exps = true; + return infix(s, function (left, that) { + if (option.bitwise) { + warning("Unexpected use of '{a}'.", that, that.id); + } + nonadjacent(prevtoken, token); + nonadjacent(token, nexttoken); + if (left) { + if (left.id === '.' || left.id === '[' || + (left.identifier && !left.reserved)) { + expression(19); + return that; + } + if (left === syntax['function']) { + warning( +"Expected an identifier in an assignment, and instead saw a function invocation.", + token); + } + return that; + } + error("Bad assignment.", that); + }, 20); + } + + + function suffix(s, f) { + var x = symbol(s, 150); + x.led = function (left) { + if (option.plusplus) { + warning("Unexpected use of '{a}'.", this, this.id); + } else if ((!left.identifier || left.reserved) && + left.id !== '.' && left.id !== '[') { + warning("Bad operand.", this); + } + this.left = left; + return this; + }; + return x; + } + + + // fnparam means that this identifier is being defined as a function + // argument (see identifier()) + function optionalidentifier(fnparam) { + if (nexttoken.identifier) { + advance(); + if (token.reserved && !option.es5) { + // `undefined` as a function param is a common pattern to protect + // against the case when somebody does `undefined = true` and + // help with minification. More info: https://gist.github.com/315916 + if (!fnparam || token.value !== 'undefined') { + warning("Expected an identifier and instead saw '{a}' (a reserved word).", + token, token.id); + } + } + return token.value; + } + } + + // fnparam means that this identifier is being defined as a function + // argument + function identifier(fnparam) { + var i = optionalidentifier(fnparam); + if (i) { + return i; + } + if (token.id === 'function' && nexttoken.id === '(') { + warning("Missing name in function declaration."); + } else { + error("Expected an identifier and instead saw '{a}'.", + nexttoken, nexttoken.value); + } + } + + + function reachable(s) { + var i = 0, t; + if (nexttoken.id !== ';' || noreach) { + return; + } + for (;;) { + t = peek(i); + if (t.reach) { + return; + } + if (t.id !== '(endline)') { + if (t.id === 'function') { + if (!option.latedef) { + break; + } + warning( +"Inner functions should be listed at the top of the outer function.", t); + break; + } + warning("Unreachable '{a}' after '{b}'.", t, t.value, s); + break; + } + i += 1; + } + } + + + function statement(noindent) { + var i = indent, r, s = scope, t = nexttoken; + + if (t.id === ";") { + advance(";"); + return; + } + +// Is this a labelled statement? + + if (t.identifier && !t.reserved && peek().id === ':') { + advance(); + advance(':'); + scope = Object.create(s); + addlabel(t.value, 'label'); + if (!nexttoken.labelled) { + warning("Label '{a}' on {b} statement.", + nexttoken, t.value, nexttoken.value); + } + if (jx.test(t.value + ':')) { + warning("Label '{a}' looks like a javascript url.", + t, t.value); + } + nexttoken.label = t.value; + t = nexttoken; + } + +// Parse the statement. + + if (!noindent) { + indentation(); + } + r = expression(0, true); + + // Look for the final semicolon. + if (!t.block) { + if (!option.expr && (!r || !r.exps)) { + warning("Expected an assignment or function call and instead saw an expression.", + token); + } else if (option.nonew && r.id === '(' && r.left.id === 'new') { + warning("Do not use 'new' for side effects."); + } + + if (nexttoken.id === ',') { + return comma(); + } + + if (nexttoken.id !== ';') { + if (!option.asi) { + // If this is the last statement in a block that ends on + // the same line *and* option lastsemic is on, ignore the warning. + // Otherwise, complain about missing semicolon. + if (!option.lastsemic || nexttoken.id !== '}' || + nexttoken.line !== token.line) { + warningAt("Missing semicolon.", token.line, token.character); + } + } + } else { + adjacent(token, nexttoken); + advance(';'); + nonadjacent(token, nexttoken); + } + } + +// Restore the indentation. + + indent = i; + scope = s; + return r; + } + + + function statements(startLine) { + var a = [], f, p; + + while (!nexttoken.reach && nexttoken.id !== '(end)') { + if (nexttoken.id === ';') { + p = peek(); + if (!p || p.id !== "(") { + warning("Unnecessary semicolon."); + } + advance(';'); + } else { + a.push(statement(startLine === nexttoken.line)); + } + } + return a; + } + + + /* + * read all directives + * recognizes a simple form of asi, but always + * warns, if it is used + */ + function directives() { + var i, p, pn; + + for (;;) { + if (nexttoken.id === "(string)") { + p = peek(0); + if (p.id === "(endline)") { + i = 1; + do { + pn = peek(i); + i = i + 1; + } while (pn.id === "(endline)"); + + if (pn.id !== ";") { + if (pn.id !== "(string)" && pn.id !== "(number)" && + pn.id !== "(regexp)" && pn.identifier !== true && + pn.id !== "}") { + break; + } + warning("Missing semicolon.", nexttoken); + } else { + p = pn; + } + } else if (p.id === "}") { + // directive with no other statements, warn about missing semicolon + warning("Missing semicolon.", p); + } else if (p.id !== ";") { + break; + } + + indentation(); + advance(); + if (directive[token.value]) { + warning("Unnecessary directive \"{a}\".", token, token.value); + } + + if (token.value === "use strict") { + option.newcap = true; + option.undef = true; + } + + // there's no directive negation, so always set to true + directive[token.value] = true; + + if (p.id === ";") { + advance(";"); + } + continue; + } + break; + } + } + + + /* + * Parses a single block. A block is a sequence of statements wrapped in + * braces. + * + * ordinary - true for everything but function bodies and try blocks. + * stmt - true if block can be a single statement (e.g. in if/for/while). + * isfunc - true if block is a function body + */ + function block(ordinary, stmt, isfunc) { + var a, + b = inblock, + old_indent = indent, + m, + s = scope, + t, + line, + d; + + inblock = ordinary; + if (!ordinary || !option.funcscope) scope = Object.create(scope); + nonadjacent(token, nexttoken); + t = nexttoken; + + if (nexttoken.id === '{') { + advance('{'); + line = token.line; + if (nexttoken.id !== '}') { + indent += option.indent; + while (!ordinary && nexttoken.from > indent) { + indent += option.indent; + } + + if (isfunc) { + m = {}; + for (d in directive) { + if (is_own(directive, d)) { + m[d] = directive[d]; + } + } + directives(); + + if (option.strict && funct['(context)']['(global)']) { + if (!m["use strict"] && !directive["use strict"]) { + warning("Missing \"use strict\" statement."); + } + } + } + + a = statements(line); + + if (isfunc) { + directive = m; + } + + indent -= option.indent; + if (line !== nexttoken.line) { + indentation(); + } + } else if (line !== nexttoken.line) { + indentation(); + } + advance('}', t); + indent = old_indent; + } else if (!ordinary) { + error("Expected '{a}' and instead saw '{b}'.", + nexttoken, '{', nexttoken.value); + } else { + if (!stmt || option.curly) + warning("Expected '{a}' and instead saw '{b}'.", + nexttoken, '{', nexttoken.value); + + noreach = true; + indent += option.indent; + // test indentation only if statement is in new line + a = [statement(nexttoken.line === token.line)]; + indent -= option.indent; + noreach = false; + } + funct['(verb)'] = null; + if (!ordinary || !option.funcscope) scope = s; + inblock = b; + if (ordinary && option.noempty && (!a || a.length === 0)) { + warning("Empty block."); + } + return a; + } + + + function countMember(m) { + if (membersOnly && typeof membersOnly[m] !== 'boolean') { + warning("Unexpected /*member '{a}'.", token, m); + } + if (typeof member[m] === 'number') { + member[m] += 1; + } else { + member[m] = 1; + } + } + + + function note_implied(token) { + var name = token.value, line = token.line, a = implied[name]; + if (typeof a === 'function') { + a = false; + } + + if (!a) { + a = [line]; + implied[name] = a; + } else if (a[a.length - 1] !== line) { + a.push(line); + } + } + + + // Build the syntax table by declaring the syntactic elements of the language. + + type('(number)', function () { + return this; + }); + + type('(string)', function () { + return this; + }); + + syntax['(identifier)'] = { + type: '(identifier)', + lbp: 0, + identifier: true, + nud: function () { + var v = this.value, + s = scope[v], + f; + + if (typeof s === 'function') { + // Protection against accidental inheritance. + s = undefined; + } else if (typeof s === 'boolean') { + f = funct; + funct = functions[0]; + addlabel(v, 'var'); + s = funct; + funct = f; + } + + // The name is in scope and defined in the current function. + if (funct === s) { + // Change 'unused' to 'var', and reject labels. + switch (funct[v]) { + case 'unused': + funct[v] = 'var'; + break; + case 'unction': + funct[v] = 'function'; + this['function'] = true; + break; + case 'function': + this['function'] = true; + break; + case 'label': + warning("'{a}' is a statement label.", token, v); + break; + } + } else if (funct['(global)']) { + // The name is not defined in the function. If we are in the global + // scope, then we have an undefined variable. + // + // Operators typeof and delete do not raise runtime errors even if + // the base object of a reference is null so no need to display warning + // if we're inside of typeof or delete. + + if (option.undef && typeof predefined[v] !== 'boolean') { + // Attempting to subscript a null reference will throw an + // error, even within the typeof and delete operators + if (!(anonname === 'typeof' || anonname === 'delete') || + (nexttoken && (nexttoken.value === '.' || nexttoken.value === '['))) { + + isundef(funct, "'{a}' is not defined.", token, v); + } + } + note_implied(token); + } else { + // If the name is already defined in the current + // function, but not as outer, then there is a scope error. + + switch (funct[v]) { + case 'closure': + case 'function': + case 'var': + case 'unused': + warning("'{a}' used out of scope.", token, v); + break; + case 'label': + warning("'{a}' is a statement label.", token, v); + break; + case 'outer': + case 'global': + break; + default: + // If the name is defined in an outer function, make an outer entry, + // and if it was unused, make it var. + if (s === true) { + funct[v] = true; + } else if (s === null) { + warning("'{a}' is not allowed.", token, v); + note_implied(token); + } else if (typeof s !== 'object') { + // Operators typeof and delete do not raise runtime errors even + // if the base object of a reference is null so no need to + // display warning if we're inside of typeof or delete. + if (option.undef) { + // Attempting to subscript a null reference will throw an + // error, even within the typeof and delete operators + if (!(anonname === 'typeof' || anonname === 'delete') || + (nexttoken && + (nexttoken.value === '.' || nexttoken.value === '['))) { + + isundef(funct, "'{a}' is not defined.", token, v); + } + } + funct[v] = true; + note_implied(token); + } else { + switch (s[v]) { + case 'function': + case 'unction': + this['function'] = true; + s[v] = 'closure'; + funct[v] = s['(global)'] ? 'global' : 'outer'; + break; + case 'var': + case 'unused': + s[v] = 'closure'; + funct[v] = s['(global)'] ? 'global' : 'outer'; + break; + case 'closure': + case 'parameter': + funct[v] = s['(global)'] ? 'global' : 'outer'; + break; + case 'label': + warning("'{a}' is a statement label.", token, v); + } + } + } + } + return this; + }, + led: function () { + error("Expected an operator and instead saw '{a}'.", + nexttoken, nexttoken.value); + } + }; + + type('(regexp)', function () { + return this; + }); + + +// ECMAScript parser + + delim('(endline)'); + delim('(begin)'); + delim('(end)').reach = true; + delim(''); + delim('(error)').reach = true; + delim('}').reach = true; + delim(')'); + delim(']'); + delim('"').reach = true; + delim("'").reach = true; + delim(';'); + delim(':').reach = true; + delim(','); + delim('#'); + delim('@'); + reserve('else'); + reserve('case').reach = true; + reserve('catch'); + reserve('default').reach = true; + reserve('finally'); + reservevar('arguments', function (x) { + if (directive['use strict'] && funct['(global)']) { + warning("Strict violation.", x); + } + }); + reservevar('eval'); + reservevar('false'); + reservevar('Infinity'); + reservevar('NaN'); + reservevar('null'); + reservevar('this', function (x) { + if (directive['use strict'] && !option.validthis && ((funct['(statement)'] && + funct['(name)'].charAt(0) > 'Z') || funct['(global)'])) { + warning("Possible strict violation.", x); + } + }); + reservevar('true'); + reservevar('undefined'); + assignop('=', 'assign', 20); + assignop('+=', 'assignadd', 20); + assignop('-=', 'assignsub', 20); + assignop('*=', 'assignmult', 20); + assignop('/=', 'assigndiv', 20).nud = function () { + error("A regular expression literal can be confused with '/='."); + }; + assignop('%=', 'assignmod', 20); + bitwiseassignop('&=', 'assignbitand', 20); + bitwiseassignop('|=', 'assignbitor', 20); + bitwiseassignop('^=', 'assignbitxor', 20); + bitwiseassignop('<<=', 'assignshiftleft', 20); + bitwiseassignop('>>=', 'assignshiftright', 20); + bitwiseassignop('>>>=', 'assignshiftrightunsigned', 20); + infix('?', function (left, that) { + that.left = left; + that.right = expression(10); + advance(':'); + that['else'] = expression(10); + return that; + }, 30); + + infix('||', 'or', 40); + infix('&&', 'and', 50); + bitwise('|', 'bitor', 70); + bitwise('^', 'bitxor', 80); + bitwise('&', 'bitand', 90); + relation('==', function (left, right) { + var eqnull = option.eqnull && (left.value === 'null' || right.value === 'null'); + + if (!eqnull && option.eqeqeq) + warning("Expected '{a}' and instead saw '{b}'.", this, '===', '=='); + else if (isPoorRelation(left)) + warning("Use '{a}' to compare with '{b}'.", this, '===', left.value); + else if (isPoorRelation(right)) + warning("Use '{a}' to compare with '{b}'.", this, '===', right.value); + + return this; + }); + relation('==='); + relation('!=', function (left, right) { + var eqnull = option.eqnull && + (left.value === 'null' || right.value === 'null'); + + if (!eqnull && option.eqeqeq) { + warning("Expected '{a}' and instead saw '{b}'.", + this, '!==', '!='); + } else if (isPoorRelation(left)) { + warning("Use '{a}' to compare with '{b}'.", + this, '!==', left.value); + } else if (isPoorRelation(right)) { + warning("Use '{a}' to compare with '{b}'.", + this, '!==', right.value); + } + return this; + }); + relation('!=='); + relation('<'); + relation('>'); + relation('<='); + relation('>='); + bitwise('<<', 'shiftleft', 120); + bitwise('>>', 'shiftright', 120); + bitwise('>>>', 'shiftrightunsigned', 120); + infix('in', 'in', 120); + infix('instanceof', 'instanceof', 120); + infix('+', function (left, that) { + var right = expression(130); + if (left && right && left.id === '(string)' && right.id === '(string)') { + left.value += right.value; + left.character = right.character; + if (!option.scripturl && jx.test(left.value)) { + warning("JavaScript URL.", left); + } + return left; + } + that.left = left; + that.right = right; + return that; + }, 130); + prefix('+', 'num'); + prefix('+++', function () { + warning("Confusing pluses."); + this.right = expression(150); + this.arity = 'unary'; + return this; + }); + infix('+++', function (left) { + warning("Confusing pluses."); + this.left = left; + this.right = expression(130); + return this; + }, 130); + infix('-', 'sub', 130); + prefix('-', 'neg'); + prefix('---', function () { + warning("Confusing minuses."); + this.right = expression(150); + this.arity = 'unary'; + return this; + }); + infix('---', function (left) { + warning("Confusing minuses."); + this.left = left; + this.right = expression(130); + return this; + }, 130); + infix('*', 'mult', 140); + infix('/', 'div', 140); + infix('%', 'mod', 140); + + suffix('++', 'postinc'); + prefix('++', 'preinc'); + syntax['++'].exps = true; + + suffix('--', 'postdec'); + prefix('--', 'predec'); + syntax['--'].exps = true; + prefix('delete', function () { + var p = expression(0); + if (!p || (p.id !== '.' && p.id !== '[')) { + warning("Variables should not be deleted."); + } + this.first = p; + return this; + }).exps = true; + + prefix('~', function () { + if (option.bitwise) { + warning("Unexpected '{a}'.", this, '~'); + } + expression(150); + return this; + }); + + prefix('!', function () { + this.right = expression(150); + this.arity = 'unary'; + if (bang[this.right.id] === true) { + warning("Confusing use of '{a}'.", this, '!'); + } + return this; + }); + prefix('typeof', 'typeof'); + prefix('new', function () { + var c = expression(155), i; + if (c && c.id !== 'function') { + if (c.identifier) { + c['new'] = true; + switch (c.value) { + case 'Number': + case 'String': + case 'Boolean': + case 'Math': + case 'JSON': + warning("Do not use {a} as a constructor.", token, c.value); + break; + case 'Function': + if (!option.evil) { + warning("The Function constructor is eval."); + } + break; + case 'Date': + case 'RegExp': + break; + default: + if (c.id !== 'function') { + i = c.value.substr(0, 1); + if (option.newcap && (i < 'A' || i > 'Z')) { + warning("A constructor name should start with an uppercase letter.", + token); + } + } + } + } else { + if (c.id !== '.' && c.id !== '[' && c.id !== '(') { + warning("Bad constructor.", token); + } + } + } else { + if (!option.supernew) + warning("Weird construction. Delete 'new'.", this); + } + adjacent(token, nexttoken); + if (nexttoken.id !== '(' && !option.supernew) { + warning("Missing '()' invoking a constructor."); + } + this.first = c; + return this; + }); + syntax['new'].exps = true; + + prefix('void').exps = true; + + infix('.', function (left, that) { + adjacent(prevtoken, token); + nobreak(); + var m = identifier(); + if (typeof m === 'string') { + countMember(m); + } + that.left = left; + that.right = m; + if (left && left.value === 'arguments' && (m === 'callee' || m === 'caller')) { + if (option.noarg) + warning("Avoid arguments.{a}.", left, m); + else if (directive['use strict']) + error('Strict violation.'); + } else if (!option.evil && left && left.value === 'document' && + (m === 'write' || m === 'writeln')) { + warning("document.write can be a form of eval.", left); + } + if (!option.evil && (m === 'eval' || m === 'execScript')) { + warning('eval is evil.'); + } + return that; + }, 160, true); + + infix('(', function (left, that) { + if (prevtoken.id !== '}' && prevtoken.id !== ')') { + nobreak(prevtoken, token); + } + nospace(); + if (option.immed && !left.immed && left.id === 'function') { + warning("Wrap an immediate function invocation in parentheses " + + "to assist the reader in understanding that the expression " + + "is the result of a function, and not the function itself."); + } + var n = 0, + p = []; + if (left) { + if (left.type === '(identifier)') { + if (left.value.match(/^[A-Z]([A-Z0-9_$]*[a-z][A-Za-z0-9_$]*)?$/)) { + if (left.value !== 'Number' && left.value !== 'String' && + left.value !== 'Boolean' && + left.value !== 'Date') { + if (left.value === 'Math') { + warning("Math is not a function.", left); + } else if (option.newcap) { + warning( +"Missing 'new' prefix when invoking a constructor.", left); + } + } + } + } + } + if (nexttoken.id !== ')') { + for (;;) { + p[p.length] = expression(10); + n += 1; + if (nexttoken.id !== ',') { + break; + } + comma(); + } + } + advance(')'); + nospace(prevtoken, token); + if (typeof left === 'object') { + if (left.value === 'parseInt' && n === 1) { + warning("Missing radix parameter.", left); + } + if (!option.evil) { + if (left.value === 'eval' || left.value === 'Function' || + left.value === 'execScript') { + warning("eval is evil.", left); + } else if (p[0] && p[0].id === '(string)' && + (left.value === 'setTimeout' || + left.value === 'setInterval')) { + warning( + "Implied eval is evil. Pass a function instead of a string.", left); + } + } + if (!left.identifier && left.id !== '.' && left.id !== '[' && + left.id !== '(' && left.id !== '&&' && left.id !== '||' && + left.id !== '?') { + warning("Bad invocation.", left); + } + } + that.left = left; + return that; + }, 155, true).exps = true; + + prefix('(', function () { + nospace(); + if (nexttoken.id === 'function') { + nexttoken.immed = true; + } + var v = expression(0); + advance(')', this); + nospace(prevtoken, token); + if (option.immed && v.id === 'function') { + if (nexttoken.id === '(' || + (nexttoken.id === '.' && (peek().value === 'call' || peek().value === 'apply'))) { + warning( +"Move the invocation into the parens that contain the function.", nexttoken); + } else { + warning( +"Do not wrap function literals in parens unless they are to be immediately invoked.", + this); + } + } + return v; + }); + + infix('[', function (left, that) { + nobreak(prevtoken, token); + nospace(); + var e = expression(0), s; + if (e && e.type === '(string)') { + if (!option.evil && (e.value === 'eval' || e.value === 'execScript')) { + warning("eval is evil.", that); + } + countMember(e.value); + if (!option.sub && ix.test(e.value)) { + s = syntax[e.value]; + if (!s || !s.reserved) { + warning("['{a}'] is better written in dot notation.", + e, e.value); + } + } + } + advance(']', that); + nospace(prevtoken, token); + that.left = left; + that.right = e; + return that; + }, 160, true); + + prefix('[', function () { + var b = token.line !== nexttoken.line; + this.first = []; + if (b) { + indent += option.indent; + if (nexttoken.from === indent + option.indent) { + indent += option.indent; + } + } + while (nexttoken.id !== '(end)') { + while (nexttoken.id === ',') { + warning("Extra comma."); + advance(','); + } + if (nexttoken.id === ']') { + break; + } + if (b && token.line !== nexttoken.line) { + indentation(); + } + this.first.push(expression(10)); + if (nexttoken.id === ',') { + comma(); + if (nexttoken.id === ']' && !option.es5) { + warning("Extra comma.", token); + break; + } + } else { + break; + } + } + if (b) { + indent -= option.indent; + indentation(); + } + advance(']', this); + return this; + }, 160); + + + function property_name() { + var id = optionalidentifier(true); + if (!id) { + if (nexttoken.id === '(string)') { + id = nexttoken.value; + advance(); + } else if (nexttoken.id === '(number)') { + id = nexttoken.value.toString(); + advance(); + } + } + return id; + } + + + function functionparams() { + var i, t = nexttoken, p = []; + advance('('); + nospace(); + if (nexttoken.id === ')') { + advance(')'); + return; + } + for (;;) { + i = identifier(true); + p.push(i); + addlabel(i, 'parameter'); + if (nexttoken.id === ',') { + comma(); + } else { + advance(')', t); + nospace(prevtoken, token); + return p; + } + } + } + + + function doFunction(i, statement) { + var f, + oldOption = option, + oldScope = scope; + + option = Object.create(option); + scope = Object.create(scope); + + funct = { + '(name)' : i || '"' + anonname + '"', + '(line)' : nexttoken.line, + '(context)' : funct, + '(breakage)' : 0, + '(loopage)' : 0, + '(scope)' : scope, + '(statement)': statement + }; + f = funct; + token.funct = funct; + functions.push(funct); + if (i) { + addlabel(i, 'function'); + } + funct['(params)'] = functionparams(); + + block(false, false, true); + scope = oldScope; + option = oldOption; + funct['(last)'] = token.line; + funct = funct['(context)']; + return f; + } + + + (function (x) { + x.nud = function () { + var b, f, i, j, p, t; + var props = {}; // All properties, including accessors + + function saveProperty(name, token) { + if (props[name] && is_own(props, name)) + warning("Duplicate member '{a}'.", nexttoken, i); + else + props[name] = {}; + + props[name].basic = true; + props[name].basicToken = token; + } + + function saveSetter(name, token) { + if (props[name] && is_own(props, name)) { + if (props[name].basic || props[name].setter) + warning("Duplicate member '{a}'.", nexttoken, i); + } else { + props[name] = {}; + } + + props[name].setter = true; + props[name].setterToken = token; + } + + function saveGetter(name) { + if (props[name] && is_own(props, name)) { + if (props[name].basic || props[name].getter) + warning("Duplicate member '{a}'.", nexttoken, i); + } else { + props[name] = {}; + } + + props[name].getter = true; + props[name].getterToken = token; + } + + b = token.line !== nexttoken.line; + if (b) { + indent += option.indent; + if (nexttoken.from === indent + option.indent) { + indent += option.indent; + } + } + for (;;) { + if (nexttoken.id === '}') { + break; + } + if (b) { + indentation(); + } + if (nexttoken.value === 'get' && peek().id !== ':') { + advance('get'); + if (!option.es5) { + error("get/set are ES5 features."); + } + i = property_name(); + if (!i) { + error("Missing property name."); + } + saveGetter(i); + t = nexttoken; + adjacent(token, nexttoken); + f = doFunction(); + p = f['(params)']; + if (p) { + warning("Unexpected parameter '{a}' in get {b} function.", t, p[0], i); + } + adjacent(token, nexttoken); + } else if (nexttoken.value === 'set' && peek().id !== ':') { + advance('set'); + if (!option.es5) { + error("get/set are ES5 features."); + } + i = property_name(); + if (!i) { + error("Missing property name."); + } + saveSetter(i, nexttoken); + t = nexttoken; + adjacent(token, nexttoken); + f = doFunction(); + p = f['(params)']; + if (!p || p.length !== 1) { + warning("Expected a single parameter in set {a} function.", t, i); + } + } else { + i = property_name(); + saveProperty(i, nexttoken); + if (typeof i !== 'string') { + break; + } + advance(':'); + nonadjacent(token, nexttoken); + expression(10); + } + + countMember(i); + if (nexttoken.id === ',') { + comma(); + if (nexttoken.id === ',') { + warning("Extra comma.", token); + } else if (nexttoken.id === '}' && !option.es5) { + warning("Extra comma.", token); + } + } else { + break; + } + } + if (b) { + indent -= option.indent; + indentation(); + } + advance('}', this); + + // Check for lonely setters if in the ES5 mode. + if (option.es5) { + for (var name in props) { + if (is_own(props, name) && props[name].setter && !props[name].getter) { + warning("Setter is defined without getter.", props[name].setterToken); + } + } + } + return this; + }; + x.fud = function () { + error("Expected to see a statement and instead saw a block.", token); + }; + }(delim('{'))); + +// This Function is called when esnext option is set to true +// it adds the `const` statement to JSHINT + + useESNextSyntax = function () { + var conststatement = stmt('const', function (prefix) { + var id, name, value; + + this.first = []; + for (;;) { + nonadjacent(token, nexttoken); + id = identifier(); + if (funct[id] === "const") { + warning("const '" + id + "' has already been declared"); + } + if (funct['(global)'] && predefined[id] === false) { + warning("Redefinition of '{a}'.", token, id); + } + addlabel(id, 'const'); + if (prefix) { + break; + } + name = token; + this.first.push(token); + + if (nexttoken.id !== "=") { + warning("const " + + "'{a}' is initialized to 'undefined'.", token, id); + } + + if (nexttoken.id === '=') { + nonadjacent(token, nexttoken); + advance('='); + nonadjacent(token, nexttoken); + if (nexttoken.id === 'undefined') { + warning("It is not necessary to initialize " + + "'{a}' to 'undefined'.", token, id); + } + if (peek(0).id === '=' && nexttoken.identifier) { + error("Constant {a} was not declared correctly.", + nexttoken, nexttoken.value); + } + value = expression(0); + name.first = value; + } + + if (nexttoken.id !== ',') { + break; + } + comma(); + } + return this; + }); + conststatement.exps = true; + }; + + var varstatement = stmt('var', function (prefix) { + // JavaScript does not have block scope. It only has function scope. So, + // declaring a variable in a block can have unexpected consequences. + var id, name, value; + + if (funct['(onevar)'] && option.onevar) { + warning("Too many var statements."); + } else if (!funct['(global)']) { + funct['(onevar)'] = true; + } + this.first = []; + for (;;) { + nonadjacent(token, nexttoken); + id = identifier(); + if (option.esnext && funct[id] === "const") { + warning("const '" + id + "' has already been declared"); + } + if (funct['(global)'] && predefined[id] === false) { + warning("Redefinition of '{a}'.", token, id); + } + addlabel(id, 'unused'); + if (prefix) { + break; + } + name = token; + this.first.push(token); + if (nexttoken.id === '=') { + nonadjacent(token, nexttoken); + advance('='); + nonadjacent(token, nexttoken); + if (nexttoken.id === 'undefined') { + warning("It is not necessary to initialize '{a}' to 'undefined'.", token, id); + } + if (peek(0).id === '=' && nexttoken.identifier) { + error("Variable {a} was not declared correctly.", + nexttoken, nexttoken.value); + } + value = expression(0); + name.first = value; + } + if (nexttoken.id !== ',') { + break; + } + comma(); + } + return this; + }); + varstatement.exps = true; + + blockstmt('function', function () { + if (inblock) { + warning("Function declarations should not be placed in blocks. " + + "Use a function expression or move the statement to the top of " + + "the outer function.", token); + + } + var i = identifier(); + if (option.esnext && funct[i] === "const") { + warning("const '" + i + "' has already been declared"); + } + adjacent(token, nexttoken); + addlabel(i, 'unction'); + doFunction(i, true); + if (nexttoken.id === '(' && nexttoken.line === token.line) { + error( +"Function declarations are not invocable. Wrap the whole function invocation in parens."); + } + return this; + }); + + prefix('function', function () { + var i = optionalidentifier(); + if (i) { + adjacent(token, nexttoken); + } else { + nonadjacent(token, nexttoken); + } + doFunction(i); + if (!option.loopfunc && funct['(loopage)']) { + warning("Don't make functions within a loop."); + } + return this; + }); + + blockstmt('if', function () { + var t = nexttoken; + advance('('); + nonadjacent(this, t); + nospace(); + expression(20); + if (nexttoken.id === '=') { + if (!option.boss) + warning("Expected a conditional expression and instead saw an assignment."); + advance('='); + expression(20); + } + advance(')', t); + nospace(prevtoken, token); + block(true, true); + if (nexttoken.id === 'else') { + nonadjacent(token, nexttoken); + advance('else'); + if (nexttoken.id === 'if' || nexttoken.id === 'switch') { + statement(true); + } else { + block(true, true); + } + } + return this; + }); + + blockstmt('try', function () { + var b, e, s; + + block(false); + if (nexttoken.id === 'catch') { + advance('catch'); + nonadjacent(token, nexttoken); + advance('('); + s = scope; + scope = Object.create(s); + e = nexttoken.value; + if (nexttoken.type !== '(identifier)') { + warning("Expected an identifier and instead saw '{a}'.", + nexttoken, e); + } else { + addlabel(e, 'exception'); + } + advance(); + advance(')'); + block(false); + b = true; + scope = s; + } + if (nexttoken.id === 'finally') { + advance('finally'); + block(false); + return; + } else if (!b) { + error("Expected '{a}' and instead saw '{b}'.", + nexttoken, 'catch', nexttoken.value); + } + return this; + }); + + blockstmt('while', function () { + var t = nexttoken; + funct['(breakage)'] += 1; + funct['(loopage)'] += 1; + advance('('); + nonadjacent(this, t); + nospace(); + expression(20); + if (nexttoken.id === '=') { + if (!option.boss) + warning("Expected a conditional expression and instead saw an assignment."); + advance('='); + expression(20); + } + advance(')', t); + nospace(prevtoken, token); + block(true, true); + funct['(breakage)'] -= 1; + funct['(loopage)'] -= 1; + return this; + }).labelled = true; + + blockstmt('with', function () { + var t = nexttoken; + if (directive['use strict']) { + error("'with' is not allowed in strict mode.", token); + } else if (!option.withstmt) { + warning("Don't use 'with'.", token); + } + + advance('('); + nonadjacent(this, t); + nospace(); + expression(0); + advance(')', t); + nospace(prevtoken, token); + block(true, true); + + return this; + }); + + blockstmt('switch', function () { + var t = nexttoken, + g = false; + funct['(breakage)'] += 1; + advance('('); + nonadjacent(this, t); + nospace(); + this.condition = expression(20); + advance(')', t); + nospace(prevtoken, token); + nonadjacent(token, nexttoken); + t = nexttoken; + advance('{'); + nonadjacent(token, nexttoken); + indent += option.indent; + this.cases = []; + for (;;) { + switch (nexttoken.id) { + case 'case': + switch (funct['(verb)']) { + case 'break': + case 'case': + case 'continue': + case 'return': + case 'switch': + case 'throw': + break; + default: + // You can tell JSHint that you don't use break intentionally by + // adding a comment /* falls through */ on a line just before + // the next `case`. + if (!ft.test(lines[nexttoken.line - 2])) { + warning( + "Expected a 'break' statement before 'case'.", + token); + } + } + indentation(-option.indent); + advance('case'); + this.cases.push(expression(20)); + g = true; + advance(':'); + funct['(verb)'] = 'case'; + break; + case 'default': + switch (funct['(verb)']) { + case 'break': + case 'continue': + case 'return': + case 'throw': + break; + default: + if (!ft.test(lines[nexttoken.line - 2])) { + warning( + "Expected a 'break' statement before 'default'.", + token); + } + } + indentation(-option.indent); + advance('default'); + g = true; + advance(':'); + break; + case '}': + indent -= option.indent; + indentation(); + advance('}', t); + if (this.cases.length === 1 || this.condition.id === 'true' || + this.condition.id === 'false') { + if (!option.onecase) + warning("This 'switch' should be an 'if'.", this); + } + funct['(breakage)'] -= 1; + funct['(verb)'] = undefined; + return; + case '(end)': + error("Missing '{a}'.", nexttoken, '}'); + return; + default: + if (g) { + switch (token.id) { + case ',': + error("Each value should have its own case label."); + return; + case ':': + g = false; + statements(); + break; + default: + error("Missing ':' on a case clause.", token); + return; + } + } else { + if (token.id === ':') { + advance(':'); + error("Unexpected '{a}'.", token, ':'); + statements(); + } else { + error("Expected '{a}' and instead saw '{b}'.", + nexttoken, 'case', nexttoken.value); + return; + } + } + } + } + }).labelled = true; + + stmt('debugger', function () { + if (!option.debug) { + warning("All 'debugger' statements should be removed."); + } + return this; + }).exps = true; + + (function () { + var x = stmt('do', function () { + funct['(breakage)'] += 1; + funct['(loopage)'] += 1; + this.first = block(true); + advance('while'); + var t = nexttoken; + nonadjacent(token, t); + advance('('); + nospace(); + expression(20); + if (nexttoken.id === '=') { + if (!option.boss) + warning("Expected a conditional expression and instead saw an assignment."); + advance('='); + expression(20); + } + advance(')', t); + nospace(prevtoken, token); + funct['(breakage)'] -= 1; + funct['(loopage)'] -= 1; + return this; + }); + x.labelled = true; + x.exps = true; + }()); + + blockstmt('for', function () { + var s, t = nexttoken; + funct['(breakage)'] += 1; + funct['(loopage)'] += 1; + advance('('); + nonadjacent(this, t); + nospace(); + if (peek(nexttoken.id === 'var' ? 1 : 0).id === 'in') { + if (nexttoken.id === 'var') { + advance('var'); + varstatement.fud.call(varstatement, true); + } else { + switch (funct[nexttoken.value]) { + case 'unused': + funct[nexttoken.value] = 'var'; + break; + case 'var': + break; + default: + warning("Bad for in variable '{a}'.", + nexttoken, nexttoken.value); + } + advance(); + } + advance('in'); + expression(20); + advance(')', t); + s = block(true, true); + if (option.forin && s && (s.length > 1 || typeof s[0] !== 'object' || + s[0].value !== 'if')) { + warning("The body of a for in should be wrapped in an if statement to filter " + + "unwanted properties from the prototype.", this); + } + funct['(breakage)'] -= 1; + funct['(loopage)'] -= 1; + return this; + } else { + if (nexttoken.id !== ';') { + if (nexttoken.id === 'var') { + advance('var'); + varstatement.fud.call(varstatement); + } else { + for (;;) { + expression(0, 'for'); + if (nexttoken.id !== ',') { + break; + } + comma(); + } + } + } + nolinebreak(token); + advance(';'); + if (nexttoken.id !== ';') { + expression(20); + if (nexttoken.id === '=') { + if (!option.boss) + warning("Expected a conditional expression and instead saw an assignment."); + advance('='); + expression(20); + } + } + nolinebreak(token); + advance(';'); + if (nexttoken.id === ';') { + error("Expected '{a}' and instead saw '{b}'.", + nexttoken, ')', ';'); + } + if (nexttoken.id !== ')') { + for (;;) { + expression(0, 'for'); + if (nexttoken.id !== ',') { + break; + } + comma(); + } + } + advance(')', t); + nospace(prevtoken, token); + block(true, true); + funct['(breakage)'] -= 1; + funct['(loopage)'] -= 1; + return this; + } + }).labelled = true; + + + stmt('break', function () { + var v = nexttoken.value; + + if (funct['(breakage)'] === 0) + warning("Unexpected '{a}'.", nexttoken, this.value); + + if (!option.asi) + nolinebreak(this); + + if (nexttoken.id !== ';') { + if (token.line === nexttoken.line) { + if (funct[v] !== 'label') { + warning("'{a}' is not a statement label.", nexttoken, v); + } else if (scope[v] !== funct) { + warning("'{a}' is out of scope.", nexttoken, v); + } + this.first = nexttoken; + advance(); + } + } + reachable('break'); + return this; + }).exps = true; + + + stmt('continue', function () { + var v = nexttoken.value; + + if (funct['(breakage)'] === 0) + warning("Unexpected '{a}'.", nexttoken, this.value); + + if (!option.asi) + nolinebreak(this); + + if (nexttoken.id !== ';') { + if (token.line === nexttoken.line) { + if (funct[v] !== 'label') { + warning("'{a}' is not a statement label.", nexttoken, v); + } else if (scope[v] !== funct) { + warning("'{a}' is out of scope.", nexttoken, v); + } + this.first = nexttoken; + advance(); + } + } else if (!funct['(loopage)']) { + warning("Unexpected '{a}'.", nexttoken, this.value); + } + reachable('continue'); + return this; + }).exps = true; + + + stmt('return', function () { + if (this.line === nexttoken.line) { + if (nexttoken.id === '(regexp)') + warning("Wrap the /regexp/ literal in parens to disambiguate the slash operator."); + + if (nexttoken.id !== ';' && !nexttoken.reach) { + nonadjacent(token, nexttoken); + if (peek().value === "=" && !option.boss) { + warningAt("Did you mean to return a conditional instead of an assignment?", + token.line, token.character + 1); + } + this.first = expression(0); + } + } else if (!option.asi) { + nolinebreak(this); // always warn (Line breaking error) + } + reachable('return'); + return this; + }).exps = true; + + + stmt('throw', function () { + nolinebreak(this); + nonadjacent(token, nexttoken); + this.first = expression(20); + reachable('throw'); + return this; + }).exps = true; + +// Superfluous reserved words + + reserve('class'); + reserve('const'); + reserve('enum'); + reserve('export'); + reserve('extends'); + reserve('import'); + reserve('super'); + + reserve('let'); + reserve('yield'); + reserve('implements'); + reserve('interface'); + reserve('package'); + reserve('private'); + reserve('protected'); + reserve('public'); + reserve('static'); + + +// Parse JSON + + function jsonValue() { + + function jsonObject() { + var o = {}, t = nexttoken; + advance('{'); + if (nexttoken.id !== '}') { + for (;;) { + if (nexttoken.id === '(end)') { + error("Missing '}' to match '{' from line {a}.", + nexttoken, t.line); + } else if (nexttoken.id === '}') { + warning("Unexpected comma.", token); + break; + } else if (nexttoken.id === ',') { + error("Unexpected comma.", nexttoken); + } else if (nexttoken.id !== '(string)') { + warning("Expected a string and instead saw {a}.", + nexttoken, nexttoken.value); + } + if (o[nexttoken.value] === true) { + warning("Duplicate key '{a}'.", + nexttoken, nexttoken.value); + } else if ((nexttoken.value === '__proto__' && + !option.proto) || (nexttoken.value === '__iterator__' && + !option.iterator)) { + warning("The '{a}' key may produce unexpected results.", + nexttoken, nexttoken.value); + } else { + o[nexttoken.value] = true; + } + advance(); + advance(':'); + jsonValue(); + if (nexttoken.id !== ',') { + break; + } + advance(','); + } + } + advance('}'); + } + + function jsonArray() { + var t = nexttoken; + advance('['); + if (nexttoken.id !== ']') { + for (;;) { + if (nexttoken.id === '(end)') { + error("Missing ']' to match '[' from line {a}.", + nexttoken, t.line); + } else if (nexttoken.id === ']') { + warning("Unexpected comma.", token); + break; + } else if (nexttoken.id === ',') { + error("Unexpected comma.", nexttoken); + } + jsonValue(); + if (nexttoken.id !== ',') { + break; + } + advance(','); + } + } + advance(']'); + } + + switch (nexttoken.id) { + case '{': + jsonObject(); + break; + case '[': + jsonArray(); + break; + case 'true': + case 'false': + case 'null': + case '(number)': + case '(string)': + advance(); + break; + case '-': + advance('-'); + if (token.character !== nexttoken.from) { + warning("Unexpected space after '-'.", token); + } + adjacent(token, nexttoken); + advance('(number)'); + break; + default: + error("Expected a JSON value.", nexttoken); + } + } + + +// The actual JSHINT function itself. + + var itself = function (s, o, g) { + var a, i, k; + JSHINT.errors = []; + JSHINT.undefs = []; + predefined = Object.create(standard); + combine(predefined, g || {}); + if (o) { + a = o.predef; + if (a) { + if (Array.isArray(a)) { + for (i = 0; i < a.length; i += 1) { + predefined[a[i]] = true; + } + } else if (typeof a === 'object') { + k = Object.keys(a); + for (i = 0; i < k.length; i += 1) { + predefined[k[i]] = !!a[k[i]]; + } + } + } + option = o; + } else { + option = {}; + } + option.indent = option.indent || 4; + option.maxerr = option.maxerr || 50; + + tab = ''; + for (i = 0; i < option.indent; i += 1) { + tab += ' '; + } + indent = 1; + global = Object.create(predefined); + scope = global; + funct = { + '(global)': true, + '(name)': '(global)', + '(scope)': scope, + '(breakage)': 0, + '(loopage)': 0 + }; + functions = [funct]; + urls = []; + stack = null; + member = {}; + membersOnly = null; + implied = {}; + inblock = false; + lookahead = []; + jsonmode = false; + warnings = 0; + lex.init(s); + prereg = true; + directive = {}; + + prevtoken = token = nexttoken = syntax['(begin)']; + + // Check options + for (var name in o) { + if (is_own(o, name)) { + checkOption(name, token); + } + } + + assume(); + + // combine the passed globals after we've assumed all our options + combine(predefined, g || {}); + + //reset values + comma.first = true; + + try { + advance(); + switch (nexttoken.id) { + case '{': + case '[': + option.laxbreak = true; + jsonmode = true; + jsonValue(); + break; + default: + directives(); + if (directive["use strict"] && !option.globalstrict) { + warning("Use the function form of \"use strict\".", prevtoken); + } + + statements(); + } + advance('(end)'); + + var markDefined = function (name, context) { + do { + if (typeof context[name] === 'string') { + // JSHINT marks unused variables as 'unused' and + // unused function declaration as 'unction'. This + // code changes such instances back 'var' and + // 'closure' so that the code in JSHINT.data() + // doesn't think they're unused. + + if (context[name] === 'unused') + context[name] = 'var'; + else if (context[name] === 'unction') + context[name] = 'closure'; + + return true; + } + + context = context['(context)']; + } while (context); + + return false; + }; + + var clearImplied = function (name, line) { + if (!implied[name]) + return; + + var newImplied = []; + for (var i = 0; i < implied[name].length; i += 1) { + if (implied[name][i] !== line) + newImplied.push(implied[name][i]); + } + + if (newImplied.length === 0) + delete implied[name]; + else + implied[name] = newImplied; + }; + + // Check queued 'x is not defined' instances to see if they're still undefined. + for (i = 0; i < JSHINT.undefs.length; i += 1) { + k = JSHINT.undefs[i].slice(0); + + if (markDefined(k[2].value, k[0])) { + clearImplied(k[2].value, k[2].line); + } else { + warning.apply(warning, k.slice(1)); + } + } + } catch (e) { + if (e) { + var nt = nexttoken || {}; + JSHINT.errors.push({ + raw : e.raw, + reason : e.message, + line : e.line || nt.line, + character : e.character || nt.from + }, null); + } + } + + return JSHINT.errors.length === 0; + }; + + // Data summary. + itself.data = function () { + + var data = { functions: [], options: option }, fu, globals, implieds = [], f, i, j, + members = [], n, unused = [], v; + if (itself.errors.length) { + data.errors = itself.errors; + } + + if (jsonmode) { + data.json = true; + } + + for (n in implied) { + if (is_own(implied, n)) { + implieds.push({ + name: n, + line: implied[n] + }); + } + } + if (implieds.length > 0) { + data.implieds = implieds; + } + + if (urls.length > 0) { + data.urls = urls; + } + + globals = Object.keys(scope); + if (globals.length > 0) { + data.globals = globals; + } + for (i = 1; i < functions.length; i += 1) { + f = functions[i]; + fu = {}; + for (j = 0; j < functionicity.length; j += 1) { + fu[functionicity[j]] = []; + } + for (n in f) { + if (is_own(f, n) && n.charAt(0) !== '(') { + v = f[n]; + if (v === 'unction') { + v = 'unused'; + } + if (Array.isArray(fu[v])) { + fu[v].push(n); + if (v === 'unused') { + unused.push({ + name: n, + line: f['(line)'], + 'function': f['(name)'] + }); + } + } + } + } + for (j = 0; j < functionicity.length; j += 1) { + if (fu[functionicity[j]].length === 0) { + delete fu[functionicity[j]]; + } + } + fu.name = f['(name)']; + fu.param = f['(params)']; + fu.line = f['(line)']; + fu.last = f['(last)']; + data.functions.push(fu); + } + + if (unused.length > 0) { + data.unused = unused; + } + + members = []; + for (n in member) { + if (typeof member[n] === 'number') { + data.member = member; + break; + } + } + + return data; + }; + + itself.report = function (option) { + var data = itself.data(); + + var a = [], c, e, err, f, i, k, l, m = '', n, o = [], s; + + function detail(h, array) { + var b, i, singularity; + if (array) { + o.push('
    ' + h + ' '); + array = array.sort(); + for (i = 0; i < array.length; i += 1) { + if (array[i] !== singularity) { + singularity = array[i]; + o.push((b ? ', ' : '') + singularity); + b = true; + } + } + o.push('
    '); + } + } + + + if (data.errors || data.implieds || data.unused) { + err = true; + o.push('
    Error:'); + if (data.errors) { + for (i = 0; i < data.errors.length; i += 1) { + c = data.errors[i]; + if (c) { + e = c.evidence || ''; + o.push('

    Problem' + (isFinite(c.line) ? ' at line ' + + c.line + ' character ' + c.character : '') + + ': ' + c.reason.entityify() + + '

    ' + + (e && (e.length > 80 ? e.slice(0, 77) + '...' : + e).entityify()) + '

    '); + } + } + } + + if (data.implieds) { + s = []; + for (i = 0; i < data.implieds.length; i += 1) { + s[i] = '' + data.implieds[i].name + ' ' + + data.implieds[i].line + ''; + } + o.push('

    Implied global: ' + s.join(', ') + '

    '); + } + + if (data.unused) { + s = []; + for (i = 0; i < data.unused.length; i += 1) { + s[i] = '' + data.unused[i].name + ' ' + + data.unused[i].line + ' ' + + data.unused[i]['function'] + ''; + } + o.push('

    Unused variable: ' + s.join(', ') + '

    '); + } + if (data.json) { + o.push('

    JSON: bad.

    '); + } + o.push('
    '); + } + + if (!option) { + + o.push('
    '); + + if (data.urls) { + detail("URLs
    ", data.urls, '
    '); + } + + if (data.json && !err) { + o.push('

    JSON: good.

    '); + } else if (data.globals) { + o.push('
    Global ' + + data.globals.sort().join(', ') + '
    '); + } else { + o.push('
    No new global variables introduced.
    '); + } + + for (i = 0; i < data.functions.length; i += 1) { + f = data.functions[i]; + + o.push('
    ' + f.line + '-' + + f.last + ' ' + (f.name || '') + '(' + + (f.param ? f.param.join(', ') : '') + ')
    '); + detail('Unused', f.unused); + detail('Closure', f.closure); + detail('Variable', f['var']); + detail('Exception', f.exception); + detail('Outer', f.outer); + detail('Global', f.global); + detail('Label', f.label); + } + + if (data.member) { + a = Object.keys(data.member); + if (a.length) { + a = a.sort(); + m = '
    /*members ';
    +                    l = 10;
    +                    for (i = 0; i < a.length; i += 1) {
    +                        k = a[i];
    +                        n = k.name();
    +                        if (l + n.length > 72) {
    +                            o.push(m + '
    '); + m = ' '; + l = 1; + } + l += n.length + 2; + if (data.member[k] === 1) { + n = '' + n + ''; + } + if (i < a.length - 1) { + n += ', '; + } + m += n; + } + o.push(m + '
    */
    '); + } + o.push('
    '); + } + } + return o.join(''); + }; + + itself.jshint = itself; + + return itself; +}()); + +// Make JSHINT a Node module, if possible. +if (typeof exports === 'object' && exports) + exports.JSHINT = JSHINT; diff --git a/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/libs/jshint/jshint_jsc.js b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/libs/jshint/jshint_jsc.js new file mode 100644 index 0000000..8e70b3b --- /dev/null +++ b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/libs/jshint/jshint_jsc.js @@ -0,0 +1,65 @@ +/*jshint boss: true, evil: true */ +/*globals load quit readline JSHINT */ + +// usage: +// jsc ${envHome}/jsc.js -- ${lineCount} {option1:true,option2:false} ${envHome} +var envHome = ''; + +if (arguments.length > 2) { + envHome = arguments[2].toString().replace(/\/env$/, '/'); +} + +load(envHome + "jshint.js"); + +if (typeof(JSHINT) === 'undefined') { + print('jshint: Could not load jshint.js, tried "' + envHome + 'jshint.js".'); + quit(); +} + +var process = function (args) { + var lineCount = parseInt(args[0], 10), + opts = (function (arg) { + switch (arg) { + case undefined: + case '': + return {}; + default: + return eval('(' + arg + ')'); + } + })(args[1]); + + if (isNaN(lineCount)) { + print('jshint: Must provide number of lines to read from stdin.'); + quit(); + } + + var input = readline(); + + for (var i = 0; i < lineCount; ++i) { + input += '\n' + readline(); + } + + var results = [], + err; + + try + { + if (!JSHINT(input, opts)) { + for (i = 0; err = JSHINT.errors[i]; i++) { + results.push(err); + } + } + } + catch (e) { + results.push({line: 1, character: 1, reason: e.message}); + + for (i = 0; err = JSHINT.errors[i]; i++) { + results.push(err); + } + } + + print(JSON.stringify(results)); + quit(); +}; + +process(arguments); diff --git a/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/libs/jshint/jshint_node.js b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/libs/jshint/jshint_node.js new file mode 100644 index 0000000..d44db6a --- /dev/null +++ b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/libs/jshint/jshint_node.js @@ -0,0 +1,74 @@ +/*jshint node:true */ + +/* + Created by Aparajita Fishman (https://github.com/aparajita) + + This code is adapted from the node.js jshint module to work with stdin instead of a file, + and to take jshint options from the command line rather than a file. + + ** Licensed Under ** + + The MIT License + http://www.opensource.org/licenses/mit-license.php + + usage: node /path/to/jshint_node.js ["{option1:true,option2:false}"] + */ + +var _fs = require('fs'), + _util = require('util'), + _path = require('path'), + _jshint = require(_path.join(_path.dirname(process.argv[1]), 'jshint.js')); + +function hint(code, config) +{ + var results = []; + + try { + if (!_jshint.JSHINT(code, config)) { + _jshint.JSHINT.errors.forEach(function (error) { + if (error) { + results.push(error); + } + }); + } + } + catch (e) { + results.push({line: 1, character: 1, reason: e.message}); + + _jshint.JSHINT.errors.forEach(function (error) { + if (error) { + results.push(error); + } + }); + } + + _util.puts(JSON.stringify(results)); + process.exit(0); +} + +function run() +{ + var code = '', + config = JSON.parse(process.argv[2] || '{}'), + filename = process.argv[3] || ''; + + if (filename) + { + hint(_fs.readFileSync(filename, 'utf-8'), config); + } + else + { + process.stdin.resume(); + process.stdin.setEncoding('utf8'); + + process.stdin.on('data', function (chunk) { + code += chunk; + }); + + process.stdin.on('end', function () { + hint(code, config); + }); + } +} + +run(); diff --git a/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/libs/pep8.py b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/libs/pep8.py new file mode 100644 index 0000000..227a9a3 --- /dev/null +++ b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/libs/pep8.py @@ -0,0 +1,1360 @@ +#!/usr/bin/python +# pep8.py - Check Python source code formatting, according to PEP 8 +# Copyright (C) 2006 Johann C. Rocholl +# +# 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. + +""" +Check Python source code formatting, according to PEP 8: +http://www.python.org/dev/peps/pep-0008/ + +For usage and a list of options, try this: +$ python pep8.py -h + +This program and its regression test suite live here: +http://github.com/jcrocholl/pep8 + +Groups of errors and warnings: +E errors +W warnings +100 indentation +200 whitespace +300 blank lines +400 imports +500 line length +600 deprecation +700 statements + +You can add checks to this program by writing plugins. Each plugin is +a simple function that is called for each line of source code, either +physical or logical. + +Physical line: +- Raw line of text from the input file. + +Logical line: +- Multi-line statements converted to a single line. +- Stripped left and right. +- Contents of strings replaced with 'xxx' of same length. +- Comments removed. + +The check function requests physical or logical lines by the name of +the first argument: + +def maximum_line_length(physical_line) +def extraneous_whitespace(logical_line) +def blank_lines(logical_line, blank_lines, indent_level, line_number) + +The last example above demonstrates how check plugins can request +additional information with extra arguments. All attributes of the +Checker object are available. Some examples: + +lines: a list of the raw lines from the input file +tokens: the tokens that contribute to this logical line +line_number: line number in the input file +blank_lines: blank lines before this one +indent_char: first indentation character in this file (' ' or '\t') +indent_level: indentation (with tabs expanded to multiples of 8) +previous_indent_level: indentation on previous line +previous_logical: previous logical line + +The docstring of each check function shall be the relevant part of +text from PEP 8. It is printed if the user enables --show-pep8. +Several docstrings contain examples directly from the PEP 8 document. + +Okay: spam(ham[1], {eggs: 2}) +E201: spam( ham[1], {eggs: 2}) + +These examples are verified automatically when pep8.py is run with the +--doctest option. You can add examples for your own check functions. +The format is simple: "Okay" or error/warning code followed by colon +and space, the rest of the line is example source code. If you put 'r' +before the docstring, you can use \n for newline, \t for tab and \s +for space. + +""" + +__version__ = '0.5.1dev' + +import os +import sys +import re +import time +import inspect +import keyword +import tokenize +from optparse import OptionParser +from fnmatch import fnmatch +try: + frozenset +except NameError: + from sets import ImmutableSet as frozenset + + +DEFAULT_EXCLUDE = '.svn,CVS,.bzr,.hg,.git' +DEFAULT_IGNORE = 'E24' +MAX_LINE_LENGTH = 79 + +INDENT_REGEX = re.compile(r'([ \t]*)') +RAISE_COMMA_REGEX = re.compile(r'raise\s+\w+\s*(,)') +SELFTEST_REGEX = re.compile(r'(Okay|[EW]\d{3}):\s(.*)') +ERRORCODE_REGEX = re.compile(r'[EW]\d{3}') +DOCSTRING_REGEX = re.compile(r'u?r?["\']') +WHITESPACE_AROUND_OPERATOR_REGEX = \ + re.compile('([^\w\s]*)\s*(\t| )\s*([^\w\s]*)') +EXTRANEOUS_WHITESPACE_REGEX = re.compile(r'[[({] | []}),;:]') +WHITESPACE_AROUND_NAMED_PARAMETER_REGEX = \ + re.compile(r'[()]|\s=[^=]|[^=!<>]=\s') + + +WHITESPACE = ' \t' + +BINARY_OPERATORS = frozenset(['**=', '*=', '+=', '-=', '!=', '<>', + '%=', '^=', '&=', '|=', '==', '/=', '//=', '<=', '>=', '<<=', '>>=', + '%', '^', '&', '|', '=', '/', '//', '<', '>', '<<']) +UNARY_OPERATORS = frozenset(['>>', '**', '*', '+', '-']) +OPERATORS = BINARY_OPERATORS | UNARY_OPERATORS +SKIP_TOKENS = frozenset([tokenize.COMMENT, tokenize.NL, tokenize.INDENT, + tokenize.DEDENT, tokenize.NEWLINE]) +E225NOT_KEYWORDS = (frozenset(keyword.kwlist + ['print']) - + frozenset(['False', 'None', 'True'])) +BENCHMARK_KEYS = ('directories', 'files', 'logical lines', 'physical lines') + +options = None +args = None + + +############################################################################## +# Plugins (check functions) for physical lines +############################################################################## + + +def tabs_or_spaces(physical_line, indent_char): + r""" + Never mix tabs and spaces. + + The most popular way of indenting Python is with spaces only. The + second-most popular way is with tabs only. Code indented with a mixture + of tabs and spaces should be converted to using spaces exclusively. When + invoking the Python command line interpreter with the -t option, it issues + warnings about code that illegally mixes tabs and spaces. When using -tt + these warnings become errors. These options are highly recommended! + + Okay: if a == 0:\n a = 1\n b = 1 + E101: if a == 0:\n a = 1\n\tb = 1 + """ + indent = INDENT_REGEX.match(physical_line).group(1) + for offset, char in enumerate(indent): + if char != indent_char: + return offset, "E101 indentation contains mixed spaces and tabs" + + +def tabs_obsolete(physical_line): + r""" + For new projects, spaces-only are strongly recommended over tabs. Most + editors have features that make this easy to do. + + Okay: if True:\n return + W191: if True:\n\treturn + """ + indent = INDENT_REGEX.match(physical_line).group(1) + if indent.count('\t'): + return indent.index('\t'), "W191 indentation contains tabs" + + +def trailing_whitespace(physical_line): + r""" + JCR: Trailing whitespace is superfluous. + FBM: Except when it occurs as part of a blank line (i.e. the line is + nothing but whitespace). According to Python docs[1] a line with only + whitespace is considered a blank line, and is to be ignored. However, + matching a blank line to its indentation level avoids mistakenly + terminating a multi-line statement (e.g. class declaration) when + pasting code into the standard Python interpreter. + + [1] http://docs.python.org/reference/lexical_analysis.html#blank-lines + + The warning returned varies on whether the line itself is blank, for easier + filtering for those who want to indent their blank lines. + + Okay: spam(1) + W291: spam(1)\s + W293: class Foo(object):\n \n bang = 12 + """ + physical_line = physical_line.rstrip('\n') # chr(10), newline + physical_line = physical_line.rstrip('\r') # chr(13), carriage return + physical_line = physical_line.rstrip('\x0c') # chr(12), form feed, ^L + stripped = physical_line.rstrip() + if physical_line != stripped: + if stripped: + return len(stripped), "W291 trailing whitespace" + else: + return 0, "W293 blank line contains whitespace" + + +def trailing_blank_lines(physical_line, lines, line_number): + r""" + JCR: Trailing blank lines are superfluous. + + Okay: spam(1) + W391: spam(1)\n + """ + if physical_line.strip() == '' and line_number == len(lines): + return 0, "W391 blank line at end of file" + + +def missing_newline(physical_line): + """ + JCR: The last line should have a newline. + """ + if physical_line.rstrip() == physical_line: + return len(physical_line), "W292 no newline at end of file" + + +def maximum_line_length(physical_line): + """ + Limit all lines to a maximum of 79 characters. + + There are still many devices around that are limited to 80 character + lines; plus, limiting windows to 80 characters makes it possible to have + several windows side-by-side. The default wrapping on such devices looks + ugly. Therefore, please limit all lines to a maximum of 79 characters. + For flowing long blocks of text (docstrings or comments), limiting the + length to 72 characters is recommended. + """ + line = physical_line.rstrip() + length = len(line) + if length > MAX_LINE_LENGTH: + try: + # The line could contain multi-byte characters + if not hasattr(line, 'decode'): # Python 3 + line = line.encode('latin-1') + length = len(line.decode('utf-8')) + except UnicodeDecodeError: + pass + if length > MAX_LINE_LENGTH: + return MAX_LINE_LENGTH, "E501 line too long (%d characters)" % length + + +############################################################################## +# Plugins (check functions) for logical lines +############################################################################## + + +def blank_lines(logical_line, blank_lines, indent_level, line_number, + previous_logical, previous_indent_level, + blank_lines_before_comment): + r""" + Separate top-level function and class definitions with two blank lines. + + Method definitions inside a class are separated by a single blank line. + + Extra blank lines may be used (sparingly) to separate groups of related + functions. Blank lines may be omitted between a bunch of related + one-liners (e.g. a set of dummy implementations). + + Use blank lines in functions, sparingly, to indicate logical sections. + + Okay: def a():\n pass\n\n\ndef b():\n pass + Okay: def a():\n pass\n\n\n# Foo\n# Bar\n\ndef b():\n pass + + E301: class Foo:\n b = 0\n def bar():\n pass + E302: def a():\n pass\n\ndef b(n):\n pass + E303: def a():\n pass\n\n\n\ndef b(n):\n pass + E303: def a():\n\n\n\n pass + E304: @decorator\n\ndef a():\n pass + """ + if line_number == 1: + return # Don't expect blank lines before the first line + max_blank_lines = max(blank_lines, blank_lines_before_comment) + if previous_logical.startswith('@'): + if max_blank_lines: + return 0, "E304 blank lines found after function decorator" + elif max_blank_lines > 2 or (indent_level and max_blank_lines == 2): + return 0, "E303 too many blank lines (%d)" % max_blank_lines + elif (logical_line.startswith('def ') or + logical_line.startswith('class ') or + logical_line.startswith('@')): + if indent_level: + if not (max_blank_lines or previous_indent_level < indent_level or + DOCSTRING_REGEX.match(previous_logical)): + return 0, "E301 expected 1 blank line, found 0" + elif max_blank_lines != 2: + return 0, "E302 expected 2 blank lines, found %d" % max_blank_lines + + +def extraneous_whitespace(logical_line): + """ + Avoid extraneous whitespace in the following situations: + + - Immediately inside parentheses, brackets or braces. + + - Immediately before a comma, semicolon, or colon. + + Okay: spam(ham[1], {eggs: 2}) + E201: spam( ham[1], {eggs: 2}) + E201: spam(ham[ 1], {eggs: 2}) + E201: spam(ham[1], { eggs: 2}) + E202: spam(ham[1], {eggs: 2} ) + E202: spam(ham[1 ], {eggs: 2}) + E202: spam(ham[1], {eggs: 2 }) + + E203: if x == 4: print x, y; x, y = y , x + E203: if x == 4: print x, y ; x, y = y, x + E203: if x == 4 : print x, y; x, y = y, x + """ + line = logical_line + for match in EXTRANEOUS_WHITESPACE_REGEX.finditer(line): + text = match.group() + char = text.strip() + found = match.start() + if text == char + ' ' and char in '([{': + return found + 1, "E201 whitespace after '%s'" % char + if text == ' ' + char and line[found - 1] != ',': + if char in '}])': + return found, "E202 whitespace before '%s'" % char + if char in ',;:': + return found, "E203 whitespace before '%s'" % char + + +def missing_whitespace(logical_line): + """ + JCR: Each comma, semicolon or colon should be followed by whitespace. + + Okay: [a, b] + Okay: (3,) + Okay: a[1:4] + Okay: a[:4] + Okay: a[1:] + Okay: a[1:4:2] + E231: ['a','b'] + E231: foo(bar,baz) + """ + line = logical_line + for index in range(len(line) - 1): + char = line[index] + if char in ',;:' and line[index + 1] not in WHITESPACE: + before = line[:index] + if char == ':' and before.count('[') > before.count(']'): + continue # Slice syntax, no space required + if char == ',' and line[index + 1] == ')': + continue # Allow tuple with only one element: (3,) + return index, "E231 missing whitespace after '%s'" % char + + +def indentation(logical_line, previous_logical, indent_char, + indent_level, previous_indent_level): + r""" + Use 4 spaces per indentation level. + + For really old code that you don't want to mess up, you can continue to + use 8-space tabs. + + Okay: a = 1 + Okay: if a == 0:\n a = 1 + E111: a = 1 + + Okay: for item in items:\n pass + E112: for item in items:\npass + + Okay: a = 1\nb = 2 + E113: a = 1\n b = 2 + """ + if indent_char == ' ' and indent_level % 4: + return 0, "E111 indentation is not a multiple of four" + indent_expect = previous_logical.endswith(':') + if indent_expect and indent_level <= previous_indent_level: + return 0, "E112 expected an indented block" + if indent_level > previous_indent_level and not indent_expect: + return 0, "E113 unexpected indentation" + + +def whitespace_before_parameters(logical_line, tokens): + """ + Avoid extraneous whitespace in the following situations: + + - Immediately before the open parenthesis that starts the argument + list of a function call. + + - Immediately before the open parenthesis that starts an indexing or + slicing. + + Okay: spam(1) + E211: spam (1) + + Okay: dict['key'] = list[index] + E211: dict ['key'] = list[index] + E211: dict['key'] = list [index] + """ + prev_type = tokens[0][0] + prev_text = tokens[0][1] + prev_end = tokens[0][3] + for index in range(1, len(tokens)): + token_type, text, start, end, line = tokens[index] + if (token_type == tokenize.OP and + text in '([' and + start != prev_end and + (prev_type == tokenize.NAME or prev_text in '}])') and + # Syntax "class A (B):" is allowed, but avoid it + (index < 2 or tokens[index - 2][1] != 'class') and + # Allow "return (a.foo for a in range(5))" + (not keyword.iskeyword(prev_text))): + return prev_end, "E211 whitespace before '%s'" % text + prev_type = token_type + prev_text = text + prev_end = end + + +def whitespace_around_operator(logical_line): + """ + Avoid extraneous whitespace in the following situations: + + - More than one space around an assignment (or other) operator to + align it with another. + + Okay: a = 12 + 3 + E221: a = 4 + 5 + E222: a = 4 + 5 + E223: a = 4\t+ 5 + E224: a = 4 +\t5 + """ + for match in WHITESPACE_AROUND_OPERATOR_REGEX.finditer(logical_line): + before, whitespace, after = match.groups() + tab = whitespace == '\t' + offset = match.start(2) + if before in OPERATORS: + return offset, (tab and "E224 tab after operator" or + "E222 multiple spaces after operator") + elif after in OPERATORS: + return offset, (tab and "E223 tab before operator" or + "E221 multiple spaces before operator") + + +def missing_whitespace_around_operator(logical_line, tokens): + r""" + - Always surround these binary operators with a single space on + either side: assignment (=), augmented assignment (+=, -= etc.), + comparisons (==, <, >, !=, <>, <=, >=, in, not in, is, is not), + Booleans (and, or, not). + + - Use spaces around arithmetic operators. + + Okay: i = i + 1 + Okay: submitted += 1 + Okay: x = x * 2 - 1 + Okay: hypot2 = x * x + y * y + Okay: c = (a + b) * (a - b) + Okay: foo(bar, key='word', *args, **kwargs) + Okay: baz(**kwargs) + Okay: negative = -1 + Okay: spam(-1) + Okay: alpha[:-i] + Okay: if not -5 < x < +5:\n pass + Okay: lambda *args, **kw: (args, kw) + + E225: i=i+1 + E225: submitted +=1 + E225: x = x*2 - 1 + E225: hypot2 = x*x + y*y + E225: c = (a+b) * (a-b) + E225: c = alpha -4 + E225: z = x **y + """ + parens = 0 + need_space = False + prev_type = tokenize.OP + prev_text = prev_end = None + for token_type, text, start, end, line in tokens: + if token_type in (tokenize.NL, tokenize.NEWLINE, tokenize.ERRORTOKEN): + # ERRORTOKEN is triggered by backticks in Python 3000 + continue + if text in ('(', 'lambda'): + parens += 1 + elif text == ')': + parens -= 1 + if need_space: + if start != prev_end: + need_space = False + elif text == '>' and prev_text == '<': + # Tolerate the "<>" operator, even if running Python 3 + pass + else: + return prev_end, "E225 missing whitespace around operator" + elif token_type == tokenize.OP and prev_end is not None: + if text == '=' and parens: + # Allow keyword args or defaults: foo(bar=None). + pass + elif text in BINARY_OPERATORS: + need_space = True + elif text in UNARY_OPERATORS: + # Allow unary operators: -123, -x, +1. + # Allow argument unpacking: foo(*args, **kwargs). + if prev_type == tokenize.OP: + if prev_text in '}])': + need_space = True + elif prev_type == tokenize.NAME: + if prev_text not in E225NOT_KEYWORDS: + need_space = True + else: + need_space = True + if need_space and start == prev_end: + return prev_end, "E225 missing whitespace around operator" + prev_type = token_type + prev_text = text + prev_end = end + + +def whitespace_around_comma(logical_line): + """ + Avoid extraneous whitespace in the following situations: + + - More than one space around an assignment (or other) operator to + align it with another. + + JCR: This should also be applied around comma etc. + Note: these checks are disabled by default + + Okay: a = (1, 2) + E241: a = (1, 2) + E242: a = (1,\t2) + """ + line = logical_line + for separator in ',;:': + found = line.find(separator + ' ') + if found > -1: + return found + 1, "E241 multiple spaces after '%s'" % separator + found = line.find(separator + '\t') + if found > -1: + return found + 1, "E242 tab after '%s'" % separator + + +def whitespace_around_named_parameter_equals(logical_line): + """ + Don't use spaces around the '=' sign when used to indicate a + keyword argument or a default parameter value. + + Okay: def complex(real, imag=0.0): + Okay: return magic(r=real, i=imag) + Okay: boolean(a == b) + Okay: boolean(a != b) + Okay: boolean(a <= b) + Okay: boolean(a >= b) + + E251: def complex(real, imag = 0.0): + E251: return magic(r = real, i = imag) + """ + parens = 0 + for match in WHITESPACE_AROUND_NAMED_PARAMETER_REGEX.finditer( + logical_line): + text = match.group() + if parens and len(text) == 3: + issue = "E251 no spaces around keyword / parameter equals" + return match.start(), issue + if text == '(': + parens += 1 + elif text == ')': + parens -= 1 + + +def whitespace_before_inline_comment(logical_line, tokens): + """ + Separate inline comments by at least two spaces. + + An inline comment is a comment on the same line as a statement. Inline + comments should be separated by at least two spaces from the statement. + They should start with a # and a single space. + + Okay: x = x + 1 # Increment x + Okay: x = x + 1 # Increment x + E261: x = x + 1 # Increment x + E262: x = x + 1 #Increment x + E262: x = x + 1 # Increment x + """ + prev_end = (0, 0) + for token_type, text, start, end, line in tokens: + if token_type == tokenize.NL: + continue + if token_type == tokenize.COMMENT: + if not line[:start[1]].strip(): + continue + if prev_end[0] == start[0] and start[1] < prev_end[1] + 2: + return (prev_end, + "E261 at least two spaces before inline comment") + if (len(text) > 1 and text.startswith('# ') + or not text.startswith('# ')): + return start, "E262 inline comment should start with '# '" + else: + prev_end = end + + +def imports_on_separate_lines(logical_line): + r""" + Imports should usually be on separate lines. + + Okay: import os\nimport sys + E401: import sys, os + + Okay: from subprocess import Popen, PIPE + Okay: from myclas import MyClass + Okay: from foo.bar.yourclass import YourClass + Okay: import myclass + Okay: import foo.bar.yourclass + """ + line = logical_line + if line.startswith('import '): + found = line.find(',') + if found > -1: + return found, "E401 multiple imports on one line" + + +def compound_statements(logical_line): + r""" + Compound statements (multiple statements on the same line) are + generally discouraged. + + While sometimes it's okay to put an if/for/while with a small body + on the same line, never do this for multi-clause statements. Also + avoid folding such long lines! + + Okay: if foo == 'blah':\n do_blah_thing() + Okay: do_one() + Okay: do_two() + Okay: do_three() + + E701: if foo == 'blah': do_blah_thing() + E701: for x in lst: total += x + E701: while t < 10: t = delay() + E701: if foo == 'blah': do_blah_thing() + E701: else: do_non_blah_thing() + E701: try: something() + E701: finally: cleanup() + E701: if foo == 'blah': one(); two(); three() + + E702: do_one(); do_two(); do_three() + """ + line = logical_line + found = line.find(':') + if -1 < found < len(line) - 1: + before = line[:found] + if (before.count('{') <= before.count('}') and # {'a': 1} (dict) + before.count('[') <= before.count(']') and # [1:2] (slice) + not re.search(r'\blambda\b', before)): # lambda x: x + return found, "E701 multiple statements on one line (colon)" + found = line.find(';') + if -1 < found: + return found, "E702 multiple statements on one line (semicolon)" + + +def python_3000_has_key(logical_line): + """ + The {}.has_key() method will be removed in the future version of + Python. Use the 'in' operation instead, like: + d = {"a": 1, "b": 2} + if "b" in d: + print d["b"] + """ + pos = logical_line.find('.has_key(') + if pos > -1: + return pos, "W601 .has_key() is deprecated, use 'in'" + + +def python_3000_raise_comma(logical_line): + """ + When raising an exception, use "raise ValueError('message')" + instead of the older form "raise ValueError, 'message'". + + The paren-using form is preferred because when the exception arguments + are long or include string formatting, you don't need to use line + continuation characters thanks to the containing parentheses. The older + form will be removed in Python 3000. + """ + match = RAISE_COMMA_REGEX.match(logical_line) + if match: + return match.start(1), "W602 deprecated form of raising exception" + + +def python_3000_not_equal(logical_line): + """ + != can also be written <>, but this is an obsolete usage kept for + backwards compatibility only. New code should always use !=. + The older syntax is removed in Python 3000. + """ + pos = logical_line.find('<>') + if pos > -1: + return pos, "W603 '<>' is deprecated, use '!='" + + +def python_3000_backticks(logical_line): + """ + Backticks are removed in Python 3000. + Use repr() instead. + """ + pos = logical_line.find('`') + if pos > -1: + return pos, "W604 backticks are deprecated, use 'repr()'" + + +############################################################################## +# Helper functions +############################################################################## + + +if '' == ''.encode(): + # Python 2: implicit encoding. + def readlines(filename): + return open(filename).readlines() +else: + # Python 3: decode to latin-1. + # This function is lazy, it does not read the encoding declaration. + # XXX: use tokenize.detect_encoding() + def readlines(filename): + return open(filename, encoding='latin-1').readlines() + + +def expand_indent(line): + """ + Return the amount of indentation. + Tabs are expanded to the next multiple of 8. + + >>> expand_indent(' ') + 4 + >>> expand_indent('\\t') + 8 + >>> expand_indent(' \\t') + 8 + >>> expand_indent(' \\t') + 8 + >>> expand_indent(' \\t') + 16 + """ + result = 0 + for char in line: + if char == '\t': + result = result // 8 * 8 + 8 + elif char == ' ': + result += 1 + else: + break + return result + + +def mute_string(text): + """ + Replace contents with 'xxx' to prevent syntax matching. + + >>> mute_string('"abc"') + '"xxx"' + >>> mute_string("'''abc'''") + "'''xxx'''" + >>> mute_string("r'abc'") + "r'xxx'" + """ + start = 1 + end = len(text) - 1 + # String modifiers (e.g. u or r) + if text.endswith('"'): + start += text.index('"') + elif text.endswith("'"): + start += text.index("'") + # Triple quotes + if text.endswith('"""') or text.endswith("'''"): + start += 2 + end -= 2 + return text[:start] + 'x' * (end - start) + text[end:] + + +def message(text): + """Print a message.""" + # print >> sys.stderr, options.prog + ': ' + text + # print >> sys.stderr, text + print(text) + + +############################################################################## +# Framework to run all checks +############################################################################## + + +def find_checks(argument_name): + """ + Find all globally visible functions where the first argument name + starts with argument_name. + """ + checks = [] + for name, function in globals().items(): + if not inspect.isfunction(function): + continue + args = inspect.getargspec(function)[0] + if args and args[0].startswith(argument_name): + codes = ERRORCODE_REGEX.findall(inspect.getdoc(function) or '') + for code in codes or ['']: + if not code or not ignore_code(code): + checks.append((name, function, args)) + break + checks.sort() + return checks + + +class Checker(object): + """ + Load a Python source file, tokenize it, check coding style. + """ + + def __init__(self, filename, lines=None): + self.filename = filename + if filename is None: + self.filename = 'stdin' + self.lines = lines or [] + elif lines is None: + self.lines = readlines(filename) + else: + self.lines = lines + options.counters['physical lines'] += len(self.lines) + + def readline(self): + """ + Get the next line from the input buffer. + """ + self.line_number += 1 + if self.line_number > len(self.lines): + return '' + return self.lines[self.line_number - 1] + + def readline_check_physical(self): + """ + Check and return the next physical line. This method can be + used to feed tokenize.generate_tokens. + """ + line = self.readline() + if line: + self.check_physical(line) + return line + + def run_check(self, check, argument_names): + """ + Run a check plugin. + """ + arguments = [] + for name in argument_names: + arguments.append(getattr(self, name)) + return check(*arguments) + + def check_physical(self, line): + """ + Run all physical checks on a raw input line. + """ + self.physical_line = line + if self.indent_char is None and len(line) and line[0] in ' \t': + self.indent_char = line[0] + for name, check, argument_names in options.physical_checks: + result = self.run_check(check, argument_names) + if result is not None: + offset, text = result + self.report_error(self.line_number, offset, text, check) + + def build_tokens_line(self): + """ + Build a logical line from tokens. + """ + self.mapping = [] + logical = [] + length = 0 + previous = None + for token in self.tokens: + token_type, text = token[0:2] + if token_type in SKIP_TOKENS: + continue + if token_type == tokenize.STRING: + text = mute_string(text) + if previous: + end_line, end = previous[3] + start_line, start = token[2] + if end_line != start_line: # different row + prev_text = self.lines[end_line - 1][end - 1] + if prev_text == ',' or (prev_text not in '{[(' + and text not in '}])'): + logical.append(' ') + length += 1 + elif end != start: # different column + fill = self.lines[end_line - 1][end:start] + logical.append(fill) + length += len(fill) + self.mapping.append((length, token)) + logical.append(text) + length += len(text) + previous = token + self.logical_line = ''.join(logical) + assert self.logical_line.lstrip() == self.logical_line + assert self.logical_line.rstrip() == self.logical_line + + def check_logical(self): + """ + Build a line from tokens and run all logical checks on it. + """ + options.counters['logical lines'] += 1 + self.build_tokens_line() + first_line = self.lines[self.mapping[0][1][2][0] - 1] + indent = first_line[:self.mapping[0][1][2][1]] + self.previous_indent_level = self.indent_level + self.indent_level = expand_indent(indent) + if options.verbose >= 2: + print(self.logical_line[:80].rstrip()) + for name, check, argument_names in options.logical_checks: + if options.verbose >= 4: + print(' ' + name) + result = self.run_check(check, argument_names) + if result is not None: + offset, text = result + if isinstance(offset, tuple): + original_number, original_offset = offset + else: + for token_offset, token in self.mapping: + if offset >= token_offset: + original_number = token[2][0] + original_offset = (token[2][1] + + offset - token_offset) + self.report_error(original_number, original_offset, + text, check) + self.previous_logical = self.logical_line + + def check_all(self, expected=None, line_offset=0): + """ + Run all checks on the input file. + """ + self.expected = expected or () + self.line_offset = line_offset + self.line_number = 0 + self.file_errors = 0 + self.indent_char = None + self.indent_level = 0 + self.previous_logical = '' + self.blank_lines = 0 + self.blank_lines_before_comment = 0 + self.tokens = [] + parens = 0 + for token in tokenize.generate_tokens(self.readline_check_physical): + if options.verbose >= 3: + if token[2][0] == token[3][0]: + pos = '[%s:%s]' % (token[2][1] or '', token[3][1]) + else: + pos = 'l.%s' % token[3][0] + print('l.%s\t%s\t%s\t%r' % + (token[2][0], pos, tokenize.tok_name[token[0]], token[1])) + self.tokens.append(token) + token_type, text = token[0:2] + if token_type == tokenize.OP and text in '([{': + parens += 1 + if token_type == tokenize.OP and text in '}])': + parens -= 1 + if token_type == tokenize.NEWLINE and not parens: + self.check_logical() + self.blank_lines = 0 + self.blank_lines_before_comment = 0 + self.tokens = [] + if token_type == tokenize.NL and not parens: + if len(self.tokens) <= 1: + # The physical line contains only this token. + self.blank_lines += 1 + self.tokens = [] + if token_type == tokenize.COMMENT: + source_line = token[4] + token_start = token[2][1] + if source_line[:token_start].strip() == '': + self.blank_lines_before_comment = max(self.blank_lines, + self.blank_lines_before_comment) + self.blank_lines = 0 + if text.endswith('\n') and not parens: + # The comment also ends a physical line. This works around + # Python < 2.6 behaviour, which does not generate NL after + # a comment which is on a line by itself. + self.tokens = [] + return self.file_errors + + def report_error(self, line_number, offset, text, check): + """ + Report an error, according to options. + """ + code = text[:4] + if ignore_code(code): + return + if options.quiet == 1 and not self.file_errors: + message(self.filename) + if code in options.counters: + options.counters[code] += 1 + else: + options.counters[code] = 1 + options.messages[code] = text[5:] + if options.quiet or code in self.expected: + # Don't care about expected errors or warnings + return + self.file_errors += 1 + if options.counters[code] == 1 or options.repeat: + message("%s:%s:%d: %s" % + (self.filename, self.line_offset + line_number, + offset + 1, text)) + if options.show_source: + line = self.lines[line_number - 1] + message(line.rstrip()) + message(' ' * offset + '^') + if options.show_pep8: + message(check.__doc__.lstrip('\n').rstrip()) + + +def input_file(filename): + """ + Run all checks on a Python source file. + """ + if options.verbose: + message('checking ' + filename) + errors = Checker(filename).check_all() + + +def input_dir(dirname, runner=None): + """ + Check all Python source files in this directory and all subdirectories. + """ + dirname = dirname.rstrip('/') + if excluded(dirname): + return + if runner is None: + runner = input_file + for root, dirs, files in os.walk(dirname): + if options.verbose: + message('directory ' + root) + options.counters['directories'] += 1 + dirs.sort() + for subdir in dirs: + if excluded(subdir): + dirs.remove(subdir) + files.sort() + for filename in files: + if filename_match(filename) and not excluded(filename): + options.counters['files'] += 1 + runner(os.path.join(root, filename)) + + +def excluded(filename): + """ + Check if options.exclude contains a pattern that matches filename. + """ + basename = os.path.basename(filename) + for pattern in options.exclude: + if fnmatch(basename, pattern): + # print basename, 'excluded because it matches', pattern + return True + + +def filename_match(filename): + """ + Check if options.filename contains a pattern that matches filename. + If options.filename is unspecified, this always returns True. + """ + if not options.filename: + return True + for pattern in options.filename: + if fnmatch(filename, pattern): + return True + + +def ignore_code(code): + """ + Check if options.ignore contains a prefix of the error code. + If options.select contains a prefix of the error code, do not ignore it. + """ + for select in options.select: + if code.startswith(select): + return False + for ignore in options.ignore: + if code.startswith(ignore): + return True + + +def reset_counters(): + for key in list(options.counters.keys()): + if key not in BENCHMARK_KEYS: + del options.counters[key] + options.messages = {} + + +def get_error_statistics(): + """Get error statistics.""" + return get_statistics("E") + + +def get_warning_statistics(): + """Get warning statistics.""" + return get_statistics("W") + + +def get_statistics(prefix=''): + """ + Get statistics for message codes that start with the prefix. + + prefix='' matches all errors and warnings + prefix='E' matches all errors + prefix='W' matches all warnings + prefix='E4' matches all errors that have to do with imports + """ + stats = [] + keys = list(options.messages.keys()) + keys.sort() + for key in keys: + if key.startswith(prefix): + stats.append('%-7s %s %s' % + (options.counters[key], key, options.messages[key])) + return stats + + +def get_count(prefix=''): + """Return the total count of errors and warnings.""" + keys = list(options.messages.keys()) + count = 0 + for key in keys: + if key.startswith(prefix): + count += options.counters[key] + return count + + +def print_statistics(prefix=''): + """Print overall statistics (number of errors and warnings).""" + for line in get_statistics(prefix): + print(line) + + +def print_benchmark(elapsed): + """ + Print benchmark numbers. + """ + print('%-7.2f %s' % (elapsed, 'seconds elapsed')) + for key in BENCHMARK_KEYS: + print('%-7d %s per second (%d total)' % ( + options.counters[key] / elapsed, key, + options.counters[key])) + + +def run_tests(filename): + """ + Run all the tests from a file. + + A test file can provide many tests. Each test starts with a declaration. + This declaration is a single line starting with '#:'. + It declares codes of expected failures, separated by spaces or 'Okay' + if no failure is expected. + If the file does not contain such declaration, it should pass all tests. + If the declaration is empty, following lines are not checked, until next + declaration. + + Examples: + + * Only E224 and W701 are expected: #: E224 W701 + * Following example is conform: #: Okay + * Don't check these lines: #: + """ + lines = readlines(filename) + ['#:\n'] + line_offset = 0 + codes = ['Okay'] + testcase = [] + for index, line in enumerate(lines): + if not line.startswith('#:'): + if codes: + # Collect the lines of the test case + testcase.append(line) + continue + if codes and index > 0: + label = '%s:%s:1' % (filename, line_offset + 1) + codes = [c for c in codes if c != 'Okay'] + # Run the checker + errors = Checker(filename, testcase).check_all(codes, line_offset) + # Check if the expected errors were found + for code in codes: + if not options.counters.get(code): + errors += 1 + message('%s: error %s not found' % (label, code)) + if options.verbose and not errors: + message('%s: passed (%s)' % (label, ' '.join(codes))) + # Keep showing errors for multiple tests + reset_counters() + # output the real line numbers + line_offset = index + # configure the expected errors + codes = line.split()[1:] + # empty the test case buffer + del testcase[:] + + +def selftest(): + """ + Test all check functions with test cases in docstrings. + """ + count_passed = 0 + count_failed = 0 + checks = options.physical_checks + options.logical_checks + for name, check, argument_names in checks: + for line in check.__doc__.splitlines(): + line = line.lstrip() + match = SELFTEST_REGEX.match(line) + if match is None: + continue + code, source = match.groups() + checker = Checker(None) + for part in source.split(r'\n'): + part = part.replace(r'\t', '\t') + part = part.replace(r'\s', ' ') + checker.lines.append(part + '\n') + options.quiet = 2 + checker.check_all() + error = None + if code == 'Okay': + if len(options.counters) > len(BENCHMARK_KEYS): + codes = [key for key in options.counters.keys() + if key not in BENCHMARK_KEYS] + error = "incorrectly found %s" % ', '.join(codes) + elif not options.counters.get(code): + error = "failed to find %s" % code + # Reset the counters + reset_counters() + if not error: + count_passed += 1 + else: + count_failed += 1 + if len(checker.lines) == 1: + print("pep8.py: %s: %s" % + (error, checker.lines[0].rstrip())) + else: + print("pep8.py: %s:" % error) + for line in checker.lines: + print(line.rstrip()) + if options.verbose: + print("%d passed and %d failed." % (count_passed, count_failed)) + if count_failed: + print("Test failed.") + else: + print("Test passed.") + + +def process_options(arglist=None): + """ + Process options passed either via arglist or via command line args. + """ + global options, args + parser = OptionParser(version=__version__, + usage="%prog [options] input ...") + parser.add_option('-v', '--verbose', default=0, action='count', + help="print status messages, or debug with -vv") + parser.add_option('-q', '--quiet', default=0, action='count', + help="report only file names, or nothing with -qq") + parser.add_option('-r', '--repeat', action='store_true', + help="show all occurrences of the same error") + parser.add_option('--exclude', metavar='patterns', default=DEFAULT_EXCLUDE, + help="exclude files or directories which match these " + "comma separated patterns (default: %s)" % + DEFAULT_EXCLUDE) + parser.add_option('--filename', metavar='patterns', default='*.py', + help="when parsing directories, only check filenames " + "matching these comma separated patterns (default: " + "*.py)") + parser.add_option('--select', metavar='errors', default='', + help="select errors and warnings (e.g. E,W6)") + parser.add_option('--ignore', metavar='errors', default='', + help="skip errors and warnings (e.g. E4,W)") + parser.add_option('--show-source', action='store_true', + help="show source code for each error") + parser.add_option('--show-pep8', action='store_true', + help="show text of PEP 8 for each error") + parser.add_option('--statistics', action='store_true', + help="count errors and warnings") + parser.add_option('--count', action='store_true', + help="print total number of errors and warnings " + "to standard error and set exit code to 1 if " + "total is not null") + parser.add_option('--benchmark', action='store_true', + help="measure processing speed") + parser.add_option('--testsuite', metavar='dir', + help="run regression tests from dir") + parser.add_option('--doctest', action='store_true', + help="run doctest on myself") + options, args = parser.parse_args(arglist) + if options.testsuite: + args.append(options.testsuite) + if not args and not options.doctest: + parser.error('input not specified') + options.prog = os.path.basename(sys.argv[0]) + options.exclude = options.exclude.split(',') + for index in range(len(options.exclude)): + options.exclude[index] = options.exclude[index].rstrip('/') + if options.filename: + options.filename = options.filename.split(',') + if options.select: + options.select = options.select.split(',') + else: + options.select = [] + if options.ignore: + options.ignore = options.ignore.split(',') + elif options.select: + # Ignore all checks which are not explicitly selected + options.ignore = [''] + elif options.testsuite or options.doctest: + # For doctest and testsuite, all checks are required + options.ignore = [] + else: + # The default choice: ignore controversial checks + options.ignore = DEFAULT_IGNORE.split(',') + options.physical_checks = find_checks('physical_line') + options.logical_checks = find_checks('logical_line') + options.counters = dict.fromkeys(BENCHMARK_KEYS, 0) + options.messages = {} + return options, args + + +def _main(): + """ + Parse options and run checks on Python source. + """ + options, args = process_options() + if options.doctest: + import doctest + doctest.testmod(verbose=options.verbose) + selftest() + if options.testsuite: + runner = run_tests + else: + runner = input_file + start_time = time.time() + for path in args: + if os.path.isdir(path): + input_dir(path, runner=runner) + elif not excluded(path): + options.counters['files'] += 1 + runner(path) + elapsed = time.time() - start_time + if options.statistics: + print_statistics() + if options.benchmark: + print_benchmark(elapsed) + count = get_count() + if count: + if options.count: + sys.stderr.write(str(count) + '\n') + sys.exit(1) + + +if __name__ == '__main__': + _main() diff --git a/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/libs/pyflakes/__init__.py b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/libs/pyflakes/__init__.py new file mode 100644 index 0000000..abeeedb --- /dev/null +++ b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/libs/pyflakes/__init__.py @@ -0,0 +1 @@ +__version__ = '0.4.0' diff --git a/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/libs/pyflakes/checker.py b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/libs/pyflakes/checker.py new file mode 100644 index 0000000..fa2494e --- /dev/null +++ b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/libs/pyflakes/checker.py @@ -0,0 +1,635 @@ +# -*- test-case-name: pyflakes -*- +# (c) 2005-2010 Divmod, Inc. +# See LICENSE file for details + +import __builtin__ +import os.path +import _ast + +from pyflakes import messages + + +# utility function to iterate over an AST node's children, adapted +# from Python 2.6's standard ast module +try: + import ast + iter_child_nodes = ast.iter_child_nodes +except (ImportError, AttributeError): + def iter_child_nodes(node, astcls=_ast.AST): + """ + Yield all direct child nodes of *node*, that is, all fields that are nodes + and all items of fields that are lists of nodes. + """ + for name in node._fields: + field = getattr(node, name, None) + if isinstance(field, astcls): + yield field + elif isinstance(field, list): + for item in field: + yield item + + +class Binding(object): + """ + Represents the binding of a value to a name. + + The checker uses this to keep track of which names have been bound and + which names have not. See L{Assignment} for a special type of binding that + is checked with stricter rules. + + @ivar used: pair of (L{Scope}, line-number) indicating the scope and + line number that this binding was last used + """ + + def __init__(self, name, source): + self.name = name + self.source = source + self.used = False + + + def __str__(self): + return self.name + + + def __repr__(self): + return '<%s object %r from line %r at 0x%x>' % (self.__class__.__name__, + self.name, + self.source.lineno, + id(self)) + + + +class UnBinding(Binding): + '''Created by the 'del' operator.''' + + + +class Importation(Binding): + """ + A binding created by an import statement. + + @ivar fullName: The complete name given to the import statement, + possibly including multiple dotted components. + @type fullName: C{str} + """ + def __init__(self, name, source): + self.fullName = name + name = name.split('.')[0] + super(Importation, self).__init__(name, source) + + + +class Argument(Binding): + """ + Represents binding a name as an argument. + """ + + + +class Assignment(Binding): + """ + Represents binding a name with an explicit assignment. + + The checker will raise warnings for any Assignment that isn't used. Also, + the checker does not consider assignments in tuple/list unpacking to be + Assignments, rather it treats them as simple Bindings. + """ + + + +class FunctionDefinition(Binding): + _property_decorator = False + + + +class ExportBinding(Binding): + """ + A binding created by an C{__all__} assignment. If the names in the list + can be determined statically, they will be treated as names for export and + additional checking applied to them. + + The only C{__all__} assignment that can be recognized is one which takes + the value of a literal list containing literal strings. For example:: + + __all__ = ["foo", "bar"] + + Names which are imported and not otherwise used but appear in the value of + C{__all__} will not have an unused import warning reported for them. + """ + def names(self): + """ + Return a list of the names referenced by this binding. + """ + names = [] + if isinstance(self.source, _ast.List): + for node in self.source.elts: + if isinstance(node, _ast.Str): + names.append(node.s) + return names + + + +class Scope(dict): + importStarred = False # set to True when import * is found + + + def __repr__(self): + return '<%s at 0x%x %s>' % (self.__class__.__name__, id(self), dict.__repr__(self)) + + + def __init__(self): + super(Scope, self).__init__() + + + +class ClassScope(Scope): + pass + + + +class FunctionScope(Scope): + """ + I represent a name scope for a function. + + @ivar globals: Names declared 'global' in this function. + """ + def __init__(self): + super(FunctionScope, self).__init__() + self.globals = {} + + + +class ModuleScope(Scope): + pass + + +# Globally defined names which are not attributes of the __builtin__ module. +_MAGIC_GLOBALS = ['__file__', '__builtins__'] + + + +class Checker(object): + """ + I check the cleanliness and sanity of Python code. + + @ivar _deferredFunctions: Tracking list used by L{deferFunction}. Elements + of the list are two-tuples. The first element is the callable passed + to L{deferFunction}. The second element is a copy of the scope stack + at the time L{deferFunction} was called. + + @ivar _deferredAssignments: Similar to C{_deferredFunctions}, but for + callables which are deferred assignment checks. + """ + + nodeDepth = 0 + traceTree = False + + def __init__(self, tree, filename=None): + if filename is None: + filename = '(none)' + self._deferredFunctions = [] + self._deferredAssignments = [] + self.dead_scopes = [] + self.messages = [] + self.filename = filename + self.scopeStack = [ModuleScope()] + self.futuresAllowed = True + self.handleChildren(tree) + self._runDeferred(self._deferredFunctions) + # Set _deferredFunctions to None so that deferFunction will fail + # noisily if called after we've run through the deferred functions. + self._deferredFunctions = None + self._runDeferred(self._deferredAssignments) + # Set _deferredAssignments to None so that deferAssignment will fail + # noisly if called after we've run through the deferred assignments. + self._deferredAssignments = None + del self.scopeStack[1:] + self.popScope() + self.check_dead_scopes() + + + def deferFunction(self, callable): + ''' + Schedule a function handler to be called just before completion. + + This is used for handling function bodies, which must be deferred + because code later in the file might modify the global scope. When + `callable` is called, the scope at the time this is called will be + restored, however it will contain any new bindings added to it. + ''' + self._deferredFunctions.append((callable, self.scopeStack[:])) + + + def deferAssignment(self, callable): + """ + Schedule an assignment handler to be called just after deferred + function handlers. + """ + self._deferredAssignments.append((callable, self.scopeStack[:])) + + + def _runDeferred(self, deferred): + """ + Run the callables in C{deferred} using their associated scope stack. + """ + for handler, scope in deferred: + self.scopeStack = scope + handler() + + + def scope(self): + return self.scopeStack[-1] + scope = property(scope) + + def popScope(self): + self.dead_scopes.append(self.scopeStack.pop()) + + + def check_dead_scopes(self): + """ + Look at scopes which have been fully examined and report names in them + which were imported but unused. + """ + for scope in self.dead_scopes: + export = isinstance(scope.get('__all__'), ExportBinding) + if export: + all = scope['__all__'].names() + if os.path.split(self.filename)[1] != '__init__.py': + # Look for possible mistakes in the export list + undefined = set(all) - set(scope) + for name in undefined: + self.report( + messages.UndefinedExport, + scope['__all__'].source, + name) + else: + all = [] + + # Look for imported names that aren't used. + for importation in scope.itervalues(): + if isinstance(importation, Importation): + if not importation.used and importation.name not in all: + self.report( + messages.UnusedImport, + importation.source, + importation.name) + + + def pushFunctionScope(self): + self.scopeStack.append(FunctionScope()) + + def pushClassScope(self): + self.scopeStack.append(ClassScope()) + + def report(self, messageClass, *args, **kwargs): + self.messages.append(messageClass(self.filename, *args, **kwargs)) + + def handleChildren(self, tree): + for node in iter_child_nodes(tree): + self.handleNode(node, tree) + + def isDocstring(self, node): + """ + Determine if the given node is a docstring, as long as it is at the + correct place in the node tree. + """ + return isinstance(node, _ast.Str) or \ + (isinstance(node, _ast.Expr) and + isinstance(node.value, _ast.Str)) + + def handleNode(self, node, parent): + node.parent = parent + if self.traceTree: + print ' ' * self.nodeDepth + node.__class__.__name__ + self.nodeDepth += 1 + if self.futuresAllowed and not \ + (isinstance(node, _ast.ImportFrom) or self.isDocstring(node)): + self.futuresAllowed = False + nodeType = node.__class__.__name__.upper() + try: + handler = getattr(self, nodeType) + handler(node) + finally: + self.nodeDepth -= 1 + if self.traceTree: + print ' ' * self.nodeDepth + 'end ' + node.__class__.__name__ + + def ignore(self, node): + pass + + # "stmt" type nodes + RETURN = DELETE = PRINT = WHILE = IF = WITH = RAISE = TRYEXCEPT = \ + TRYFINALLY = ASSERT = EXEC = EXPR = handleChildren + + CONTINUE = BREAK = PASS = ignore + + # "expr" type nodes + BOOLOP = BINOP = UNARYOP = IFEXP = DICT = SET = YIELD = COMPARE = \ + CALL = REPR = ATTRIBUTE = SUBSCRIPT = LIST = TUPLE = handleChildren + + NUM = STR = ELLIPSIS = ignore + + # "slice" type nodes + SLICE = EXTSLICE = INDEX = handleChildren + + # expression contexts are node instances too, though being constants + LOAD = STORE = DEL = AUGLOAD = AUGSTORE = PARAM = ignore + + # same for operators + AND = OR = ADD = SUB = MULT = DIV = MOD = POW = LSHIFT = RSHIFT = \ + BITOR = BITXOR = BITAND = FLOORDIV = INVERT = NOT = UADD = USUB = \ + EQ = NOTEQ = LT = LTE = GT = GTE = IS = ISNOT = IN = NOTIN = ignore + + # additional node types + COMPREHENSION = EXCEPTHANDLER = KEYWORD = handleChildren + + def addBinding(self, loc, value, reportRedef=True): + '''Called when a binding is altered. + + - `loc` is the location (an object with lineno and optionally + col_offset attributes) of the statement responsible for the change + - `value` is the optional new value, a Binding instance, associated + with the binding; if None, the binding is deleted if it exists. + - if `reportRedef` is True (default), rebinding while unused will be + reported. + ''' + if (isinstance(self.scope.get(value.name), FunctionDefinition) + and isinstance(value, FunctionDefinition)): + if not value._property_decorator: + self.report(messages.RedefinedFunction, + loc, value.name, self.scope[value.name].source) + + if not isinstance(self.scope, ClassScope): + for scope in self.scopeStack[::-1]: + existing = scope.get(value.name) + if (isinstance(existing, Importation) + and not existing.used + and (not isinstance(value, Importation) or value.fullName == existing.fullName) + and reportRedef): + + self.report(messages.RedefinedWhileUnused, + loc, value.name, scope[value.name].source) + + if isinstance(value, UnBinding): + try: + del self.scope[value.name] + except KeyError: + self.report(messages.UndefinedName, loc, value.name) + else: + self.scope[value.name] = value + + def GLOBAL(self, node): + """ + Keep track of globals declarations. + """ + if isinstance(self.scope, FunctionScope): + self.scope.globals.update(dict.fromkeys(node.names)) + + def LISTCOMP(self, node): + # handle generators before element + for gen in node.generators: + self.handleNode(gen, node) + self.handleNode(node.elt, node) + + GENERATOREXP = SETCOMP = LISTCOMP + + # dictionary comprehensions; introduced in Python 2.7 + def DICTCOMP(self, node): + for gen in node.generators: + self.handleNode(gen, node) + self.handleNode(node.key, node) + self.handleNode(node.value, node) + + def FOR(self, node): + """ + Process bindings for loop variables. + """ + vars = [] + def collectLoopVars(n): + if isinstance(n, _ast.Name): + vars.append(n.id) + elif isinstance(n, _ast.expr_context): + return + else: + for c in iter_child_nodes(n): + collectLoopVars(c) + + collectLoopVars(node.target) + for varn in vars: + if (isinstance(self.scope.get(varn), Importation) + # unused ones will get an unused import warning + and self.scope[varn].used): + self.report(messages.ImportShadowedByLoopVar, + node, varn, self.scope[varn].source) + + self.handleChildren(node) + + def NAME(self, node): + """ + Handle occurrence of Name (which can be a load/store/delete access.) + """ + # Locate the name in locals / function / globals scopes. + if isinstance(node.ctx, (_ast.Load, _ast.AugLoad)): + # try local scope + importStarred = self.scope.importStarred + try: + self.scope[node.id].used = (self.scope, node) + except KeyError: + pass + else: + return + + # try enclosing function scopes + + for scope in self.scopeStack[-2:0:-1]: + importStarred = importStarred or scope.importStarred + if not isinstance(scope, FunctionScope): + continue + try: + scope[node.id].used = (self.scope, node) + except KeyError: + pass + else: + return + + # try global scope + + importStarred = importStarred or self.scopeStack[0].importStarred + try: + self.scopeStack[0][node.id].used = (self.scope, node) + except KeyError: + if ((not hasattr(__builtin__, node.id)) + and node.id not in _MAGIC_GLOBALS + and not importStarred): + if (os.path.basename(self.filename) == '__init__.py' and + node.id == '__path__'): + # the special name __path__ is valid only in packages + pass + else: + self.report(messages.UndefinedName, node, node.id) + elif isinstance(node.ctx, (_ast.Store, _ast.AugStore)): + # if the name hasn't already been defined in the current scope + if isinstance(self.scope, FunctionScope) and node.id not in self.scope: + # for each function or module scope above us + for scope in self.scopeStack[:-1]: + if not isinstance(scope, (FunctionScope, ModuleScope)): + continue + # if the name was defined in that scope, and the name has + # been accessed already in the current scope, and hasn't + # been declared global + if (node.id in scope + and scope[node.id].used + and scope[node.id].used[0] is self.scope + and node.id not in self.scope.globals): + # then it's probably a mistake + self.report(messages.UndefinedLocal, + scope[node.id].used[1], + node.id, + scope[node.id].source) + break + + if isinstance(node.parent, + (_ast.For, _ast.comprehension, _ast.Tuple, _ast.List)): + binding = Binding(node.id, node) + elif (node.id == '__all__' and + isinstance(self.scope, ModuleScope)): + binding = ExportBinding(node.id, node.parent.value) + else: + binding = Assignment(node.id, node) + if node.id in self.scope: + binding.used = self.scope[node.id].used + self.addBinding(node, binding) + elif isinstance(node.ctx, _ast.Del): + if isinstance(self.scope, FunctionScope) and \ + node.id in self.scope.globals: + del self.scope.globals[node.id] + else: + self.addBinding(node, UnBinding(node.id, node)) + else: + # must be a Param context -- this only happens for names in function + # arguments, but these aren't dispatched through here + raise RuntimeError( + "Got impossible expression context: %r" % (node.ctx,)) + + + def FUNCTIONDEF(self, node): + # the decorators attribute is called decorator_list as of Python 2.6 + if hasattr(node, 'decorators'): + for deco in node.decorators: + self.handleNode(deco, node) + else: + for deco in node.decorator_list: + self.handleNode(deco, node) + + # Check for property decorator + func_def = FunctionDefinition(node.name, node) + for decorator in node.decorator_list: + if getattr(decorator, 'attr', None) in ('setter', 'deleter'): + func_def._property_decorator = True + + self.addBinding(node, func_def) + self.LAMBDA(node) + + def LAMBDA(self, node): + for default in node.args.defaults: + self.handleNode(default, node) + + def runFunction(): + args = [] + + def addArgs(arglist): + for arg in arglist: + if isinstance(arg, _ast.Tuple): + addArgs(arg.elts) + else: + if arg.id in args: + self.report(messages.DuplicateArgument, + node, arg.id) + args.append(arg.id) + + self.pushFunctionScope() + addArgs(node.args.args) + # vararg/kwarg identifiers are not Name nodes + if node.args.vararg: + args.append(node.args.vararg) + if node.args.kwarg: + args.append(node.args.kwarg) + for name in args: + self.addBinding(node, Argument(name, node), reportRedef=False) + if isinstance(node.body, list): + # case for FunctionDefs + for stmt in node.body: + self.handleNode(stmt, node) + else: + # case for Lambdas + self.handleNode(node.body, node) + def checkUnusedAssignments(): + """ + Check to see if any assignments have not been used. + """ + for name, binding in self.scope.iteritems(): + if (not binding.used and not name in self.scope.globals + and isinstance(binding, Assignment)): + self.report(messages.UnusedVariable, + binding.source, name) + self.deferAssignment(checkUnusedAssignments) + self.popScope() + + self.deferFunction(runFunction) + + + def CLASSDEF(self, node): + """ + Check names used in a class definition, including its decorators, base + classes, and the body of its definition. Additionally, add its name to + the current scope. + """ + # decorator_list is present as of Python 2.6 + for deco in getattr(node, 'decorator_list', []): + self.handleNode(deco, node) + for baseNode in node.bases: + self.handleNode(baseNode, node) + self.pushClassScope() + for stmt in node.body: + self.handleNode(stmt, node) + self.popScope() + self.addBinding(node, Binding(node.name, node)) + + def ASSIGN(self, node): + self.handleNode(node.value, node) + for target in node.targets: + self.handleNode(target, node) + + def AUGASSIGN(self, node): + # AugAssign is awkward: must set the context explicitly and visit twice, + # once with AugLoad context, once with AugStore context + node.target.ctx = _ast.AugLoad() + self.handleNode(node.target, node) + self.handleNode(node.value, node) + node.target.ctx = _ast.AugStore() + self.handleNode(node.target, node) + + def IMPORT(self, node): + for alias in node.names: + name = alias.asname or alias.name + importation = Importation(name, node) + self.addBinding(node, importation) + + def IMPORTFROM(self, node): + if node.module == '__future__': + if not self.futuresAllowed: + self.report(messages.LateFutureImport, node, + [n.name for n in node.names]) + else: + self.futuresAllowed = False + + for alias in node.names: + if alias.name == '*': + self.scope.importStarred = True + self.report(messages.ImportStarUsed, node, node.module) + continue + name = alias.asname or alias.name + importation = Importation(name, node) + if node.module == '__future__': + importation.used = (self.scope, node) + self.addBinding(node, importation) diff --git a/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/libs/pyflakes/messages.py b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/libs/pyflakes/messages.py new file mode 100644 index 0000000..7be1a52 --- /dev/null +++ b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/libs/pyflakes/messages.py @@ -0,0 +1,128 @@ +# (c) 2005 Divmod, Inc. See LICENSE file for details + + +class Message(object): + message = '' + + def __init__(self, filename, loc, use_column=True, level='W', message_args=()): + self.filename = filename + self.lineno = loc.lineno + self.col = getattr(loc, 'col_offset', None) if use_column else None + self.level = level + self.message_args = message_args + + def __str__(self): + if self.col is not None: + return '%s:%s(%d): [%s] %s' % (self.filename, self.lineno, self.col, self.level, self.message % self.message_args) + else: + return '%s:%s: [%s] %s' % (self.filename, self.lineno, self.level, self.message % self.message_args) + + +class UnusedImport(Message): + message = '%r imported but unused' + + def __init__(self, filename, loc, name): + Message.__init__(self, filename, loc, use_column=False, message_args=(name,)) + self.name = name + + +class RedefinedWhileUnused(Message): + message = 'redefinition of unused %r from line %r' + + def __init__(self, filename, loc, name, orig_loc): + Message.__init__(self, filename, loc, message_args=(name, orig_loc.lineno)) + self.name = name + self.orig_loc = orig_loc + + +class ImportShadowedByLoopVar(Message): + message = 'import %r from line %r shadowed by loop variable' + + def __init__(self, filename, loc, name, orig_loc): + Message.__init__(self, filename, loc, message_args=(name, orig_loc.lineno)) + self.name = name + self.orig_loc = orig_loc + + +class ImportStarUsed(Message): + message = "'from %s import *' used; unable to detect undefined names" + + def __init__(self, filename, loc, modname): + Message.__init__(self, filename, loc, message_args=(modname,)) + self.name = modname + + +class UndefinedName(Message): + message = 'undefined name %r' + + def __init__(self, filename, loc, name): + Message.__init__(self, filename, loc, level='E', message_args=(name,)) + self.name = name + + +class UndefinedExport(Message): + message = 'undefined name %r in __all__' + + def __init__(self, filename, loc, name): + Message.__init__(self, filename, loc, level='E', message_args=(name,)) + self.name = name + + +class UndefinedLocal(Message): + message = "local variable %r (defined in enclosing scope on line %r) referenced before assignment" + + def __init__(self, filename, loc, name, orig_loc): + Message.__init__(self, filename, loc, level='E', message_args=(name, orig_loc.lineno)) + self.name = name + self.orig_loc = orig_loc + + +class DuplicateArgument(Message): + message = 'duplicate argument %r in function definition' + + def __init__(self, filename, loc, name): + Message.__init__(self, filename, loc, level='E', message_args=(name,)) + self.name = name + + +class RedefinedFunction(Message): + message = 'redefinition of function %r from line %r' + + def __init__(self, filename, loc, name, orig_loc): + Message.__init__(self, filename, loc, message_args=(name, orig_loc.lineno)) + self.name = name + self.orig_loc = orig_loc + + +class CouldNotCompile(Message): + def __init__(self, filename, loc, msg=None, line=None): + if msg and line: + self.message = 'could not compile: %s\n%s' + message_args = (msg, line) + else: + self.message = 'could not compile' + message_args = () + Message.__init__(self, filename, loc, level='E', message_args=message_args) + self.msg = msg + self.line = line + + +class LateFutureImport(Message): + message = 'future import(s) %r after other statements' + + def __init__(self, filename, loc, names): + Message.__init__(self, filename, loc, message_args=(names,)) + self.names = names + + +class UnusedVariable(Message): + """ + Indicates that a variable has been explicity assigned to but not actually + used. + """ + + message = 'local variable %r is assigned to but never used' + + def __init__(self, filename, loc, name): + Message.__init__(self, filename, loc, message_args=(name,)) + self.name = name diff --git a/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/notes.py b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/notes.py new file mode 100644 index 0000000..89e0fb6 --- /dev/null +++ b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/notes.py @@ -0,0 +1,85 @@ +# -*- coding: utf-8 -*- +'''notes.py + +Used to highlight user-defined "annotations" such as TODO, README, etc., +depending user choice. +''' + +import sublime + +from base_linter import BaseLinter + +CONFIG = { + 'language': 'annotations' +} + + +class Linter(BaseLinter): + DEFAULT_NOTES = ["TODO", "README", "FIXME"] + + def built_in_check(self, view, code, filename): + annotations = self.select_annotations(view) + regions = [] + + for annotation in annotations: + regions.extend(self.find_all(code, annotation, view)) + + return regions + + def select_annotations(self, view): + '''selects the list of annotations to use''' + return view.settings().get("annotations", self.DEFAULT_NOTES) + + def extract_annotations(self, code, view, filename): + '''extract all lines with annotations''' + annotations = self.select_annotations(view) + annotation_starts = [] + + for annotation in annotations: + start = 0 + length = len(annotation) + + while True: + start = code.find(annotation, start) + + if start != -1: + end = start + length + annotation_starts.append(start) + start = end + else: + break + + regions_with_notes = set([]) + + for point in annotation_starts: + regions_with_notes.add(view.extract_scope(point)) + + regions_with_notes = sorted(list(regions_with_notes)) + text = [] + + for region in regions_with_notes: + row, col = view.rowcol(region.begin()) + text.append("[{0}:{1}]".format(filename, row + 1)) + text.append(view.substr(region)) + + return '\n'.join(text) + + def find_all(self, text, string, view): + ''' finds all occurences of "string" in "text" and notes their positions + as a sublime Region + ''' + found = [] + length = len(string) + start = 0 + + while True: + start = text.find(string, start) + + if start != -1: + end = start + length + found.append(sublime.Region(start, end)) + start = end + else: + break + + return found diff --git a/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/objective-j.py b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/objective-j.py new file mode 100644 index 0000000..35f0e0e --- /dev/null +++ b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/objective-j.py @@ -0,0 +1,59 @@ +# -*- coding: utf-8 -*- +# objective-j.py - Lint checking for Objective-J - given filename and contents of the code: +# It provides a list of line numbers to outline and offsets to highlight. +# +# This specific module is part of the SublimeLinter project. +# It is a fork of the original SublimeLint project, +# (c) 2011 Ryan Hileman and licensed under the MIT license. +# URL: http://bochs.info/ +# +# The original copyright notices for this file/project follows: +# +# (c) 2005-2008 Divmod, Inc. +# See LICENSE file for details +# +# The LICENSE file is as follows: +# +# Copyright (c) 2005 Divmod, Inc., http://www.divmod.com/ +# +# 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. +# + +from capp_lint import LintChecker +from base_linter import BaseLinter + +CONFIG = { + 'language': 'Objective-J' +} + + +class Linter(BaseLinter): + def built_in_check(self, view, code, filename): + checker = LintChecker(view) + checker.lint_text(code, filename) + return checker.errors + + def parse_errors(self, view, errors, lines, errorUnderlines, violationUnderlines, warningUnderlines, errorMessages, violationMessages, warningMessages): + for error in errors: + lineno = error['lineNum'] + self.add_message(lineno, lines, error['message'], errorMessages if type == LintChecker.ERROR_TYPE_ILLEGAL else warningMessages) + + for position in error.get('positions', []): + self.underline_range(view, lineno, position, errorUnderlines if type == LintChecker.ERROR_TYPE_ILLEGAL else warningUnderlines) diff --git a/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/perl.py b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/perl.py new file mode 100644 index 0000000..732832b --- /dev/null +++ b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/perl.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +# perl.py - sublimelint package for checking perl files + +import re + +from base_linter import BaseLinter + +CONFIG = { + 'language': 'perl', + 'executable': 'perl', + 'lint_args': '-c' +} + + +class Linter(BaseLinter): + def parse_errors(self, view, errors, lines, errorUnderlines, violationUnderlines, warningUnderlines, errorMessages, violationMessages, warningMessages): + for line in errors.splitlines(): + match = re.match(r'(?P.+?) at .+? line (?P\d+)(, near "(?P.+?)")?', line) + + if match: + error, line = match.group('error'), match.group('line') + lineno = int(line) + near = match.group('near') + + if near: + error = '{0}, near "{1}"'.format(error, near) + self.underline_regex(view, lineno, '(?P{0})'.format(re.escape(near)), lines, errorUnderlines) + + self.add_message(lineno, lines, error, errorMessages) diff --git a/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/php.py b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/php.py new file mode 100644 index 0000000..19c18cf --- /dev/null +++ b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/php.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +# php.py - sublimelint package for checking php files + +import re + +from base_linter import BaseLinter + +CONFIG = { + 'language': 'php', + 'executable': 'php', + 'lint_args': ('-l', '-d display_errors=On', '-d log_errors=Off') +} + + +class Linter(BaseLinter): + def parse_errors(self, view, errors, lines, errorUnderlines, violationUnderlines, warningUnderlines, errorMessages, violationMessages, warningMessages): + for line in errors.splitlines(): + match = re.match(r'^Parse error:\s*(?:\w+ error,\s*)?(?P.+?)\s+in\s+.+?\s*line\s+(?P\d+)', line) + + if match: + error, line = match.group('error'), match.group('line') + self.add_message(int(line), lines, error, errorMessages) diff --git a/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/python.py b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/python.py new file mode 100644 index 0000000..53fe9bd --- /dev/null +++ b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/python.py @@ -0,0 +1,262 @@ +# -*- coding: utf-8 -*- +# python.py - Lint checking for Python - given filename and contents of the code: +# It provides a list of line numbers to outline and offsets to highlight. +# +# This specific module is part of the SublimeLinter project. +# It is a fork by André Roberge from the original SublimeLint project, +# (c) 2011 Ryan Hileman and licensed under the MIT license. +# URL: http://bochs.info/ +# +# The original copyright notices for this file/project follows: +# +# (c) 2005-2008 Divmod, Inc. +# See LICENSE file for details +# +# The LICENSE file is as follows: +# +# Copyright (c) 2005 Divmod, Inc., http://www.divmod.com/ +# +# 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. +# + +# TODO: +# * fix regex for variable names inside strings (quotes) + +import re +import _ast + +import pep8 +import pyflakes.checker as pyflakes + +from base_linter import BaseLinter + +pyflakes.messages.Message.__str__ = lambda self: self.message % self.message_args + +CONFIG = { + 'language': 'python' +} + + +class Pep8Error(pyflakes.messages.Message): + message = 'PEP 8 (%s): %s' + + def __init__(self, filename, loc, code, text): + # PEP 8 Errors are downgraded to "warnings" + pyflakes.messages.Message.__init__(self, filename, loc, level='W', message_args=(code, text)) + self.text = text + + +class Pep8Warning(pyflakes.messages.Message): + message = 'PEP 8 (%s): %s' + + def __init__(self, filename, loc, code, text): + # PEP 8 Warnings are downgraded to "violations" + pyflakes.messages.Message.__init__(self, filename, loc, level='V', message_args=(code, text)) + self.text = text + + +class OffsetError(pyflakes.messages.Message): + message = '%r at column %r' + + def __init__(self, filename, loc, text, offset): + pyflakes.messages.Message.__init__(self, filename, loc, level='E', message_args=(text, offset + 1)) + self.text = text + self.offset = offset + + +class PythonError(pyflakes.messages.Message): + message = '%r' + + def __init__(self, filename, loc, text): + pyflakes.messages.Message.__init__(self, filename, loc, level='E', message_args=(text,)) + self.text = text + + +class Dict2Obj: + def __init__(self, **kwargs): + self.__dict__.update(kwargs) + + +class Linter(BaseLinter): + def pyflakes_check(self, code, filename, ignore=None): + try: + tree = compile(code, filename, "exec", _ast.PyCF_ONLY_AST) + except (SyntaxError, IndentationError), value: + msg = value.args[0] + + (lineno, offset, text) = value.lineno, value.offset, value.text + + # If there's an encoding problem with the file, the text is None. + if text is None: + # Avoid using msg, since for the only known case, it contains a + # bogus message that claims the encoding the file declared was + # unknown. + if msg.startswith('duplicate argument'): + arg = msg.split('duplicate argument ', 1)[1].split(' ', 1)[0].strip('\'"') + error = pyflakes.messages.DuplicateArgument(filename, value, arg) + else: + error = PythonError(filename, value, msg) + else: + line = text.splitlines()[-1] + + if offset is not None: + offset = offset - (len(text) - len(line)) + + if offset is not None: + error = OffsetError(filename, value, msg, offset) + else: + error = PythonError(filename, value, msg) + return [error] + except ValueError, e: + return [PythonError(filename, 0, e.args[0])] + else: + # Okay, it's syntactically valid. Now check it. + if ignore is not None: + old_magic_globals = pyflakes._MAGIC_GLOBALS + pyflakes._MAGIC_GLOBALS += ignore + w = pyflakes.Checker(tree, filename) + if ignore is not None: + pyflakes._MAGIC_GLOBALS = old_magic_globals + return w.messages + + def pep8_check(self, code, filename, ignore=None): + messages = [] + _lines = code.split('\n') + + if _lines: + def report_error(self, line_number, offset, text, check): + code = text[:4] + msg = text[5:] + + if pep8.ignore_code(code): + return + elif code.startswith('E'): + messages.append(Pep8Error(filename, Dict2Obj(lineno=line_number, col_offset=offset), code, msg)) + else: + messages.append(Pep8Warning(filename, Dict2Obj(lineno=line_number, col_offset=offset), code, msg)) + + pep8.Checker.report_error = report_error + _ignore = ignore + pep8.DEFAULT_IGNORE.split(',') + + class FakeOptions: + verbose = 0 + select = [] + ignore = _ignore + + pep8.options = FakeOptions() + pep8.options.physical_checks = pep8.find_checks('physical_line') + pep8.options.logical_checks = pep8.find_checks('logical_line') + pep8.options.counters = dict.fromkeys(pep8.BENCHMARK_KEYS, 0) + good_lines = [l + '\n' for l in _lines] + good_lines[-1] = good_lines[-1].rstrip('\n') + + if not good_lines[-1]: + good_lines = good_lines[:-1] + + try: + pep8.Checker(filename, good_lines).check_all() + except: + pass + + return messages + + def built_in_check(self, view, code, filename): + errors = [] + + if view.settings().get("pep8", True): + errors.extend(self.pep8_check(code, filename, ignore=view.settings().get('pep8_ignore', []))) + + pyflakes_ignore = view.settings().get('pyflakes_ignore', None) + pyflakes_disabled = view.settings().get('pyflakes_disabled', False) + + if not pyflakes_disabled: + errors.extend(self.pyflakes_check(code, filename, pyflakes_ignore)) + + return errors + + def parse_errors(self, view, errors, lines, errorUnderlines, violationUnderlines, warningUnderlines, errorMessages, violationMessages, warningMessages): + + def underline_word(lineno, word, underlines): + regex = r'((and|or|not|if|elif|while|in)\s+|[+\-*^%%<>=\(\{{])*\s*(?P[\w\.]*{0}[\w]*)'.format(re.escape(word)) + self.underline_regex(view, lineno, regex, lines, underlines, word) + + def underline_import(lineno, word, underlines): + linematch = '(from\s+[\w_\.]+\s+)?import\s+(?P[^#;]+)' + regex = '(^|\s+|,\s*|as\s+)(?P[\w]*{0}[\w]*)'.format(re.escape(word)) + self.underline_regex(view, lineno, regex, lines, underlines, word, linematch) + + def underline_for_var(lineno, word, underlines): + regex = 'for\s+(?P[\w]*{0}[\w*])'.format(re.escape(word)) + self.underline_regex(view, lineno, regex, lines, underlines, word) + + def underline_duplicate_argument(lineno, word, underlines): + regex = 'def [\w_]+\(.*?(?P[\w]*{0}[\w]*)'.format(re.escape(word)) + self.underline_regex(view, lineno, regex, lines, underlines, word) + + errors.sort(lambda a, b: cmp(a.lineno, b.lineno)) + ignoreImportStar = view.settings().get('pyflakes_ignore_import_*', True) + + for error in errors: + if error.level == 'E': + messages = errorMessages + underlines = errorUnderlines + elif error.level == 'V': + messages = violationMessages + underlines = violationUnderlines + elif error.level == 'W': + messages = warningMessages + underlines = warningUnderlines + + if isinstance(error, pyflakes.messages.ImportStarUsed) and ignoreImportStar: + continue + + self.add_message(error.lineno, lines, str(error), messages) + + if isinstance(error, (Pep8Error, Pep8Warning)): + self.underline_range(view, error.lineno, error.col, underlines) + + elif isinstance(error, OffsetError): + self.underline_range(view, error.lineno, error.offset, underlines) + + elif isinstance(error, (pyflakes.messages.RedefinedWhileUnused, + pyflakes.messages.UndefinedName, + pyflakes.messages.UndefinedExport, + pyflakes.messages.UndefinedLocal, + pyflakes.messages.RedefinedFunction, + pyflakes.messages.UnusedVariable)): + underline_word(error.lineno, error.name, underlines) + + elif isinstance(error, pyflakes.messages.ImportShadowedByLoopVar): + underline_for_var(error.lineno, error.name, underlines) + + elif isinstance(error, pyflakes.messages.UnusedImport): + underline_import(error.lineno, error.name, underlines) + + elif isinstance(error, pyflakes.messages.ImportStarUsed): + underline_import(error.lineno, '*', underlines) + + elif isinstance(error, pyflakes.messages.DuplicateArgument): + underline_duplicate_argument(error.lineno, error.name, underlines) + + elif isinstance(error, pyflakes.messages.LateFutureImport): + pass + + else: + print 'Oops, we missed an error type!', type(error) diff --git a/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/ruby.py b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/ruby.py new file mode 100644 index 0000000..adf7bed --- /dev/null +++ b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/ruby.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +# ruby.py - sublimelint package for checking ruby files + +import re + +from base_linter import BaseLinter + +CONFIG = { + 'language': 'ruby', + 'executable': 'ruby', + 'lint_args': '-wc' +} + + +class Linter(BaseLinter): + def parse_errors(self, view, errors, lines, errorUnderlines, violationUnderlines, warningUnderlines, errorMessages, violationMessages, warningMessages): + for line in errors.splitlines(): + match = re.match(r'^.+:(?P\d+):\s+(?P.+)', line) + + if match: + error, line = match.group('error'), match.group('line') + self.add_message(int(line), lines, error, errorMessages) diff --git a/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/sublime_pylint.py b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/sublime_pylint.py new file mode 100644 index 0000000..00702d7 --- /dev/null +++ b/SublimeLinter/Kronuz-SublimeLinter-74b14ea/sublimelinter/modules/sublime_pylint.py @@ -0,0 +1,83 @@ +''' sublime_pylint.py - sublimelint package for checking python files + +pylint is not available as a checker that runs in the background +as it generally takes much too long. +''' + +from StringIO import StringIO +import tempfile + +try: + from pylint import checkers + from pylint import lint + PYLINT_AVAILABLE = True +except ImportError: + PYLINT_AVAILABLE = False + +from base_linter import BaseLinter + +CONFIG = { + 'language': 'pylint' +} + + +class Linter(BaseLinter): + def get_executable(self, view): + return (PYLINT_AVAILABLE, None, 'built in' if PYLINT_AVAILABLE else 'the pylint module could not be imported') + + def built_in_check(self, view, code, filename): + linter = lint.PyLinter() + checkers.initialize(linter) + + # Disable some errors. + linter.load_command_line_configuration([ + '--module-rgx=.*', # don't check the module name + '--reports=n', # remove tables + '--persistent=n', # don't save the old score (no sense for temp) + ]) + + temp = tempfile.NamedTemporaryFile(suffix='.py') + temp.write(code) + temp.flush() + + output_buffer = StringIO() + linter.reporter.set_output(output_buffer) + linter.check(temp.name) + report = output_buffer.getvalue().replace(temp.name, 'line ') + + output_buffer.close() + temp.close() + + return report + + def remove_unwanted(self, errors): + '''remove unwanted warnings''' + ## todo: investigate how this can be set by a user preference + # as it appears that the user pylint configuration file is ignored. + lines = errors.split('\n') + wanted = [] + unwanted = ["Found indentation with tabs instead of spaces", + "************* Module"] + + for line in lines: + for not_include in unwanted: + if not_include in line: + break + else: + wanted.append(line) + + return '\n'.join(wanted) + + def parse_errors(self, view, errors, lines, errorUnderlines, violationUnderlines, warningUnderlines, errorMessages, violationMessages, warningMessages): + errors = self.remove_unwanted(errors) + + for line in errors.splitlines(): + info = line.split(":") + + try: + lineno = info[1] + except IndexError: + print info + + message = ":".join(info[2:]) + self.add_message(int(lineno), lines, message, errorMessages) diff --git a/SublimeLinter/Main.sublime-menu b/SublimeLinter/Main.sublime-menu new file mode 100644 index 0000000..d5d0d08 --- /dev/null +++ b/SublimeLinter/Main.sublime-menu @@ -0,0 +1,99 @@ +[ + { + "caption": "Preferences", + "mnemonic": "n", + "id": "preferences", + "children": + [ + { + "caption": "Package Settings", + "mnemonic": "P", + "id": "package-settings", + "children": + [ + { + "caption": "SublimeLinter", + "children": + [ + { + "command": "open_file", + "args": {"file": "${packages}/SublimeLinter/README.rst"}, + "caption": "README" + }, + { + "command": "open_file", + "args": {"file": "${packages}/SublimeLinter/changelog.txt"}, + "caption": "Change Log" + }, + { "caption": "-" }, + { + "command": "open_file", + "args": {"file": "${packages}/SublimeLinter/SublimeLinter.sublime-settings"}, + "caption": "Settings – Default" + }, + { + "command": "open_file", + "args": {"file": "${packages}/User/SublimeLinter.sublime-settings"}, + "caption": "Settings – User" + }, + { + "command": "open_file_settings", + "caption": "Settings – Syntax Specific – User" + }, + { "caption": "-" }, + { + "command": "open_file", + "args": { + "file": "${packages}/SublimeLinter/Default (OSX).sublime-keymap", + "platform": "OSX" + }, + "caption": "Key Bindings – Default" + }, + { + "command": "open_file", + "args": { + "file": "${packages}/SublimeLinter/Default (Linux).sublime-keymap", + "platform": "Linux" + }, + "caption": "Key Bindings – Default" + }, + { + "command": "open_file", + "args": { + "file": "${packages}/SublimeLinter/Default (Windows).sublime-keymap", + "platform": "Windows" + }, + "caption": "Key Bindings – Default" + }, + { + "command": "open_file", + "args": { + "file": "${packages}/User/Default (OSX).sublime-keymap", + "platform": "OSX" + }, + "caption": "Key Bindings – User" + }, + { + "command": "open_file", + "args": { + "file": "${packages}/User/Default (Linux).sublime-keymap", + "platform": "Linux" + }, + "caption": "Key Bindings – User" + }, + { + "command": "open_file", + "args": { + "file": "${packages}/User/Default (Windows).sublime-keymap", + "platform": "Windows" + }, + "caption": "Key Bindings – User" + }, + { "caption": "-" } + ] + } + ] + } + ] + } +] diff --git a/SublimeLinter/README.rst b/SublimeLinter/README.rst new file mode 100644 index 0000000..63f4d39 --- /dev/null +++ b/SublimeLinter/README.rst @@ -0,0 +1,330 @@ +SublimeLinter +============= + +SublimeLinter is a plugin that supports "lint" programs (known as "linters"). SublimeLinter highlights +lines of code the linter deems to contain (potential) errors. It also +supports highlighting special annotations (for example: TODO) so that they +can be quickly located. + +SublimeLinter has built in linters for the following languages: + +* Javascript - lint via built in `jshint `_ or the `closure linter (gjslint) `_ (if installed) +* Objective-J - lint via built-in `capp_lint `_ +* python - native, moderately-complete lint +* ruby - syntax checking via "ruby -wc" +* php - syntax checking via "php -l" +* java - lint via "javac -Xlint" +* perl - syntax+deprecation checking via "perl -c" + + +Installing +---------- +**With the Package Control plugin:** The easiest way to install SublimeLinter is through Package Control, which can be found at this site: http://wbond.net/sublime_packages/package_control + +Once you install Package Control, restart ST2 and bring up the Command Palette (``Command+Shift+P`` on OS X, ``Control+Shift+P`` on Linux/Windows). Select "Package Control: Install Package", wait while Package Control fetches the latest package list, then select SublimeLinter when the list appears. The advantage of using this method is that Package Control will automatically keep SublimeLinter up to date with the latest version. + +**Without Git:** Download the latest source from `GitHub `_ and copy the SublimeLinter folder to your Sublime Text "Packages" directory. + +**With Git:** Clone the repository in your Sublime Text "Packages" directory:: + + git clone git://github.com/Kronuz/SublimeLinter.git + + +The "Packages" directory is located at: + +* OS X:: + + ~/Library/Application Support/Sublime Text 2/Packages/ + +* Linux:: + + ~/.config/sublime-text-2/Packages/ + +* Windows:: + + %APPDATA%/Sublime Text 2/Packages/ + +Using +----- +SublimeLinter runs in one of three modes, which is determined by the "sublimelinter" user setting: + +* **Background mode (the default)** - When the "sublimelinter" setting is true, linting is performed in the background as you modify a file (if the relevant linter supports it). If you like instant feedback, this is the best way to use SublimeLinter. If you want feedback, but not instantly, you can try another mode or set a minimum queue delay so that the linter will only run after a certain amount of idle time. +* **Load-save mode** - When the "sublimelinter" setting is "load-save", linting is performed only when a file is loaded and after saving. Errors are cleared as soon as the file is modified. +* **On demand mode** - When the "sublimelinter" setting is false, linting is performed only when initiated by you. Use the Control+Command+l (OS X) or Control+Alt+l (Linux/Windows) key equivalent or the Command Palette to lint the current file. If the current file has no associated linter, the command will not be available. + +Within a file whose language/syntax is supported by SublimeLinter, you can control SublimeLinter via the Command Palette (Command+Shift+P on OS X, Control+Shift+P on Linux/Windows). The available commands are: + +* **SublimeLinter: Lint Current File** - Lints the current file, highlights any errors and displays how many errors were found. +* **SublimeLinter: Show Error List** - Lints the current file, highlights any errors and displays a quick panel with any errors that are found. Selecting an item from the quick panel jumps to that line. +* **SublimeLinter: Enable Background Linting** - Enables background linting mode for the current view and lints it. +* **SublimeLinter: Disable Background Linting** - Disables background linting mode for the current view and clears all lint errors. +* **SublimeLinter: Enable Load-Save Linting** - Enables load-save linting mode for the current view and clears all lint errors. +* **SublimeLinter: Reset** - Clears all lint errors and sets the linting mode to the value in the SublimeLinter.sublime-settings file. + +Depending on the file and the current state of background enabling, some of the commands will not be available. + +When an error is highlighted by the linter, putting the cursor on the offending line will result in the error message being displayed on the status bar. + +If you want to be shown a popup list of all errors whenever a file is saved, modify the user setting:: + + "sublimelinter_popup_errors_on_save": true + +If there are errors in the file, a quick panel will appear which shows the error message, line number and source code for each error. The starting location of all errors on the line are marked with "^". Selecting an error in the quick panel jumps directly to the location of the first error on that line. + +While editing a file, you can quickly move to the next/previous lint error with the following key equivalents: + +* **OS X**:: + + next: Control+Command+e + prev: Control+Command+Shift+e + +* **Linux, Windows**:: + + next: Control+Alt+e + prev: Control+Alt+Shift+e + +By default the search will wrap. You can turn wrapping off with the user setting:: + + "sublimelinter_wrap_find": false + +Linter-specific notes +~~~~~~~~~~~~~~~~~~~~~ +Following are notes specific to individual linters that you should be aware of: + +* **JavaScript** - If the "javascript_linter" setting is "jshint", this linter runs `jshint `_ using JavaScriptCore on Mac OS X or node.js on other platforms, which can be downloaded from `the node.js site `. After installation, if node cannot be found by SublimeLinter, you may have to set the path to node in the "sublimelinter\_executable\_map" setting. See "Configuring" below for info on SublimeLinter settings. + + If the "javascript_linter" setting is "gjslint", this linter runs the `closure linter (gjslint) `_. After installation, if gjslint cannot be found by SublimeLinter, you may have to set the path to gjslint in the "sublimelinter\_executable\_map" setting. + + You may want to modify the options passed to jshint or gjslint. This can be done globally or on a per-project basis by using the **jshint_options** or **gjslint_options** setting. Refer to the jshint.org site or run ``gjslint --help`` for more information on the configuration options available. + +* **ruby** - If you are using rvm or rbenv, you will probably have to specify the full path to the ruby you are using in the ``sublimelinter_executable_map`` setting. See "Configuring" below for more info. + +* **java** - Because it uses ``javac`` to do linting, each time you run the linter the entire dependency graph of the current file will be checked. Depending on the number of classes you import, this can be **extremely** slow. Also note that you **must** provide the ``-sourcepath``, ``-classpath``, ``-Xlint`` and ``{filename}`` arguments to ``javac`` in your per-project settings. See "Per-project settings" below for more information. + +Configuring +----------- +There are a number of configuration options available to customize the behavior of SublimeLinter and its linters. For the latest information on what options are available, select the menu item ``Preferences->Package Settings->SublimeLinter->Settings - Default``. To change the options in your user settings, select the menu item ``Preferences->File Settings - User``. + +**NOTE:** Any settings you specify in your user settings will **completely** replace the setting in the default file. + +Per-project settings +~~~~~~~~~~~~~~~~~~~~ +SublimeLinter supports per-project/per-language settings. This is useful if a linter requires path configuration on a per-project basis. To edit your project settings, select the menu item ``Project->Edit Project``. If there is no "settings" object at the top level, add one and then add a "SublimeLinter" sub-object, like this:: + + { + "folders": + [ + { + "path": "/Users/aparajita/Projects/foo/src" + } + ], + "settings": + { + "SublimeLinter": + { + } + } + } + +Within the "SublimeLinter" object, you can add a settings object for each language. The language name must match the language item in the linter's CONFIG object, which can be found in the linter's source file in the SublimeLinter/sublimelinter/modules folder. Each language can have two settings: + +* "working_directory" - If present and a valid absolute directory path, the working directory is set to this path before the linter executes. This is useful if you are providing linter arguments that contain paths and you want to use working directory-relative paths instead of absolute paths. +* "lint_args" - If present, it must be a sequence of string arguments to pass to the linter. If your linter expects a filename as an argument, use the argument "{filename}" as a placeholder. Note that if you provide this item, you are responsible for passing **all** required arguments to the linter. + +For example, let's say we are editing a Java project and want to use the "java" linter, which requires a source path and class path. In addition, we want to ignore serialization errors. Our project settings might look like this:: + + { + "folders": + [ + { + "path": "/Users/aparajita/Projects/foo/src" + } + ], + "settings": + { + "SublimeLinter": + { + "java": + { + "working_directory": "/Users/aparajita/Projects/foo", + + "lint_args": + [ + "-sourcepath", "src", + "-classpath", "libs/log4j-1.2.9.jar:libs/commons-logging-1.1.jar", + "-Xlint", "-Xlint:-serial", + "{filename}" + ] + } + } + } + } + + +Customizing colors +~~~~~~~~~~~~~~~~~~ +**IMPORTANT** - The theme style names have recently changed. The old and new color +names are:: + + Old New + --------------------- ----------------------------- + sublimelinter. sublimelinter.outline. + invalid. sublimelinter.underline. + +Please change the names in your color themes accordingly. + +There are three types of "errors" flagged by SublimeLinter: illegal, +violation, and warning. For each type, SublimeLinter will indicate the offending +line and the character position at which the error occurred on the line. + +By default SublimeLinter will outline offending lines using the background color +of the "sublimelinter.outline." theme style, and underline the character position +using the background color of the "sublimelinter.underline." theme style, where +is one of the three error types. + +If these styles are not defined, the color will be black when there is a light +background color and black when there is a dark background color. You may +define a single "sublimelinter.outline" or "sublimelinter.underline" style to color all three types, +or define separate substyles for one or more types to color them differently. + +If you want to make the offending lines glaringly obvious (perhaps for those +who tend to ignore lint errors), you can set the user setting:: + + "sublimelinter_fill_outlines": true + +When this is set true, lines that have errors will be colored with the background +and foreground color of the "sublime.outline." theme style. Unless you have defined +those styles, this setting should be left false. + +You may also mark lines with errors by putting an "x" in the gutter with the user setting:: + + "sublimelinter_gutter_marks": true + +To customize the colors used for highlighting errors and user notes, add the following +to your theme (adapting the color to your liking):: + + + name + SublimeLinter Annotations + scope + sublimelinter.notes + settings + + background + #FFFFAA + foreground + #FFFFFF + + + + name + SublimeLinter Error Outline + scope + sublimelinter.outline.illegal + settings + + background + #FF4A52 + foreground + #FFFFFF + + + + name + SublimeLinter Error Underline + scope + sublimelinter.underline.illegal + settings + + background + #FF0000 + + + + name + SublimeLinter Warning Outline + scope + sublimelinter.outline.warning + settings + + background + #DF9400 + foreground + #FFFFFF + + + + name + SublimeLinter Warning Underline + scope + sublimelinter.underline.warning + settings + + background + #FF0000 + + + + name + SublimeLinter Violation Outline + scope + sublimelinter.outline.violation + settings + + background + #ffffff33 + foreground + #FFFFFF + + + + name + SublimeLinter Violation Underline + scope + sublimelinter.underline.violation + settings + + background + #FF0000 + + + + +Troubleshooting +--------------- +If a linter does not seem to be working, you can check the ST2 console to see if it was enabled. When SublimeLinter is loaded, you will see messages in the console like this:: + + Reloading plugin /Users/aparajita/Library/Application Support/Sublime Text 2/Packages/SublimeLinter/sublimelinter_plugin.py + SublimeLinter: JavaScript loaded + SublimeLinter: annotations loaded + SublimeLinter: Objective-J loaded + SublimeLinter: perl loaded + SublimeLinter: php loaded + SublimeLinter: python loaded + SublimeLinter: ruby loaded + SublimeLinter: pylint loaded + +The first time a linter is asked to lint, it will check to see if it can be enabled. You will then see messages like this:: + + SublimeLinter: JavaScript enabled (using JavaScriptCore) + SublimeLinter: Ruby enabled (using "ruby" for executable) + +Let's say the ruby linter is not working. If you look at the console, you may see a message like this:: + + SublimeLinter: ruby disabled ("ruby" cannot be found) + +This means that the ruby executable cannot be found on your system, which means it is not installed or not in your executable path. + +Creating New Linters +-------------------- +If you wish to create a new linter to support a new language, SublimeLinter makes it easy. Here are the steps involved: + +* Create a new file in sublimelinter/modules. If your linter uses an external executable, you will probably want to copy perl.py. If your linter uses built in code, copy objective-j.py. The convention is to name the file the same as the language that will be linted. + +* Configure the CONFIG dict in your module. See the comments in base\_linter.py for information on the values in that dict. You only need to set the values in your module that differ from the defaults in base\_linter.py, as your module's CONFIG is merged with the default. Note that if your linter uses an external executable that does not take stdin, setting 'input\_method' to INPUT\_METHOD\_TEMP\_FILE will allow interactive linting with that executable. + +* If your linter uses built in code, override ``built_in_check()`` and return the errors found. + +* Override ``parse_errors()`` and process the errors. If your linter overrides ``built_in_check()``, ``parse_errors()`` will receive the result of that method. If your linter uses an external executable, ``parse_errors()`` receives the raw output of the executable, stripped of leading and trailing whitespace. + +If your linter has more complex requirements, see the comments for CONFIG in base\_linter.py, and use the existing linters as guides. diff --git a/SublimeLinter/SublimeLinter.py b/SublimeLinter/SublimeLinter.py new file mode 100644 index 0000000..94f01c3 --- /dev/null +++ b/SublimeLinter/SublimeLinter.py @@ -0,0 +1,892 @@ +# -*- coding: utf-8 -*- +import os +import re +import sys +import time +import threading + +import sublime +import sublime_plugin + +from sublimelinter.loader import Loader +from sublimelinter.modules.base_linter import INPUT_METHOD_FILE + +LINTERS = {} # mapping of language name to linter module +QUEUE = {} # views waiting to be processed by linter +ERRORS = {} # error messages on given line obtained from linter; they are + # displayed in the status bar when cursor is on line with error +VIOLATIONS = {} # violation messages, they are displayed in the status bar +WARNINGS = {} # warning messages, they are displayed in the status bar +UNDERLINES = {} # underline regions related to each lint message +TIMES = {} # collects how long it took the linting to complete +MOD_LOAD = Loader(os.getcwd(), LINTERS) # utility to load (and reload + # if necessary) linter modules [useful when working on plugin] + + +# For snappier linting, different delays are used for different linting times: +# (linting time, delays) +DELAYS = ( + (50, (50, 100)), + (100, (100, 300)), + (200, (200, 500)), + (400, (400, 1000)), + (800, (800, 2000)), + (1600, (1600, 3000)), +) + +MARKS = { + 'violation': ('', 'dot'), + 'warning': ('', 'dot'), + 'illegal': ('', 'circle'), +} + +# All available settings for SublimeLinter; +# only these are inherited from SublimeLinter.sublime-settings +ALL_SETTINGS = [ + 'sublimelinter', + 'sublimelinter_executable_map', + 'sublimelinter_syntax_map', + 'sublimelinter_disable', + 'sublimelinter_delay', + 'sublimelinter_fill_outlines', + 'sublimelinter_gutter_marks', + 'sublimelinter_wrap_find', + 'sublimelinter_popup_errors_on_save', + 'javascript_linter', + 'jshint_options', + 'gjslint_options', + 'gjslint_ignore', + 'pep8_ignore', + 'pyflakes_ignore', + 'pyflakes_ignore_import_*', + 'sublimelinter_objj_check_ascii', + 'sublimelinter_notes', + 'annotations' +] + +WHITESPACE_RE = re.compile(r'\s+') + + +def get_delay(t, view): + delay = 0 + for _t, d in DELAYS: + if _t <= t: + delay = d + delay = delay or DELAYS[0][1] + + # If the user specifies a delay greater than the built in delay, + # figure they only want to see marks when idle. + minDelay = int(view.settings().get('sublimelinter_delay', 0) * 1000) + if minDelay > delay[1]: + erase_lint_marks(view) + + return (minDelay, minDelay) if minDelay > delay[1] else delay + + +def last_selected_lineno(view): + viewSel = view.sel() + if not viewSel: + return None + return view.rowcol(viewSel[0].end())[0] + + +def update_statusbar(view): + vid = view.id() + lineno = last_selected_lineno(view) + errors = [] + + if lineno is not None: + if vid in ERRORS and lineno in ERRORS[vid]: + errors.extend(ERRORS[vid][lineno]) + + if vid in VIOLATIONS and lineno in VIOLATIONS[vid]: + errors.extend(VIOLATIONS[vid][lineno]) + + if vid in WARNINGS and lineno in WARNINGS[vid]: + errors.extend(WARNINGS[vid][lineno]) + + if errors: + view.set_status('Linter', '; '.join(errors)) + else: + view.erase_status('Linter') + + +def background_run(linter, view, **kwargs): + '''run a linter on a given view if settings is set appropriately''' + if linter: + run_once(linter, view, **kwargs) + + if view.settings().get('sublimelinter_notes'): + highlight_notes(view) + + +def run_once(linter, view, event=None, **kwargs): + '''run a linter on a given view regardless of user setting''' + if linter == LINTERS.get('annotations', None): + highlight_notes(view) + return + + vid = view.id() + ERRORS[vid] = {} + VIOLATIONS[vid] = {} + WARNINGS[vid] = {} + start = time.time() + text = view.substr(sublime.Region(0, view.size())).encode('utf-8') + lines, error_underlines, violation_underlines, warning_underlines, ERRORS[vid], VIOLATIONS[vid], WARNINGS[vid] = linter.run(view, text, view.file_name() or '') + + UNDERLINES[vid] = error_underlines[:] + UNDERLINES[vid].extend(violation_underlines) + UNDERLINES[vid].extend(warning_underlines) + + add_lint_marks(view, lines, error_underlines, violation_underlines, warning_underlines) + update_statusbar(view) + end = time.time() + TIMES[vid] = (end - start) * 1000 # Keep how long it took to lint + + if event == 'on_post_save' and view.settings().get('sublimelinter_popup_errors_on_save'): + popup_error_list(view) + + +def popup_error_list(view): + vid = view.id() + errors = ERRORS[vid].copy() + + for message_map in [VIOLATIONS[vid], WARNINGS[vid]]: + for line, messages in message_map.items(): + if line in errors: + errors[line].extend(messages) + else: + errors[line] = messages + + # Flatten the errors into a list + error_list = [] + + for line in sorted(errors.keys()): + for index, message in enumerate(errors[line]): + error_list.append({'line': line, 'message': message}) + + panel_items = [] + + for error in error_list: + line_text = view.substr(view.full_line(view.text_point(error['line'], 0))) + item = [error['message'], u'{0}: {1}'.format(error['line'] + 1, line_text.strip())] + panel_items.append(item) + + def on_done(selected_item): + if selected_item == -1: + return + + selected = view.sel() + selected.clear() + + error = error_list[selected_item] + region_begin = view.text_point(error['line'], 0) + + # Go to the first non-whitespace character of the line + line_text = view.substr(view.full_line(region_begin)) + match = WHITESPACE_RE.match(line_text) + + if (match): + region_begin += len(match.group(0)) + + selected.add(sublime.Region(region_begin, region_begin)) + # We have to force a move to update the cursor position + view.run_command('move', {'by': 'characters', 'forward': True}) + view.run_command('move', {'by': 'characters', 'forward': False}) + view.show_at_center(region_begin) + + view.window().show_quick_panel(panel_items, on_done) + + +def add_lint_marks(view, lines, error_underlines, violation_underlines, warning_underlines): + '''Adds lint marks to view.''' + vid = view.id() + erase_lint_marks(view) + types = {'warning': warning_underlines, 'violation': violation_underlines, 'illegal': error_underlines} + + for type_name, underlines in types.items(): + if underlines: + view.add_regions('lint-underline-' + type_name, underlines, 'sublimelinter.underline.' + type_name, sublime.DRAW_EMPTY_AS_OVERWRITE) + + if lines: + fill_outlines = view.settings().get('sublimelinter_fill_outlines', False) + gutter_mark_enabled = True if view.settings().get('sublimelinter_gutter_marks', False) else False + + outlines = {'warning': [], 'violation': [], 'illegal': []} + + for line in ERRORS[vid]: + outlines['illegal'].append(view.full_line(view.text_point(line, 0))) + + for line in WARNINGS[vid]: + outlines['warning'].append(view.full_line(view.text_point(line, 0))) + + for line in VIOLATIONS[vid]: + outlines['violation'].append(view.full_line(view.text_point(line, 0))) + + for lint_type in outlines: + if outlines[lint_type]: + args = [ + 'lint-outlines-{0}'.format(lint_type), + outlines[lint_type], + 'sublimelinter.outline.{0}'.format(lint_type), + MARKS[lint_type][gutter_mark_enabled] + ] + if not fill_outlines: + args.append(sublime.DRAW_OUTLINED) + view.add_regions(*args) + + +def erase_lint_marks(view): + '''erase all "lint" error marks from view''' + view.erase_regions('lint-underline-illegal') + view.erase_regions('lint-underline-violation') + view.erase_regions('lint-underline-warning') + view.erase_regions('lint-outlines-illegal') + view.erase_regions('lint-outlines-violation') + view.erase_regions('lint-outlines-warning') + view.erase_regions('lint-annotations') + + +def get_lint_regions(view, reverse=False, coalesce=False): + vid = view.id() + underlines = UNDERLINES[vid][:] + + if (coalesce): + # Each of these regions is one character, so transform it into the character points + points = sorted([region.begin() for region in underlines]) + + # Now coalesce adjacent characters into a single region + underlines = [] + last_point = -999 + + for point in points: + if point != last_point + 1: + underlines.append(sublime.Region(point, point)) + else: + region = underlines[-1] + underlines[-1] = sublime.Region(region.begin(), point) + + last_point = point + + # Now get all outlines, which includes the entire line where underlines are + outlines = view.get_regions('lint-outlines-illegal') + outlines.extend(view.get_regions('lint-outlines-violation')) + outlines.extend(view.get_regions('lint-outlines-warning')) + outlines.extend(view.get_regions('lint-annotations')) + + # If an outline region contains an underline region, use only the underline + regions = underlines + + for outline in outlines: + contains_underlines = False + + for underline in underlines: + if outline.contains(underline): + contains_underlines = True + break + + if not contains_underlines: + regions.append(outline) + + return sorted(regions, key=lambda x: x.begin(), reverse=reverse) + + +def select_lint_region(view, region): + selected = view.sel() + selected.clear() + + # Find the first underline region within the region to select. + # If there are none, put the cursor at the beginning of the line. + underlineRegion = find_underline_within(view, region) + + if underlineRegion is None: + underlineRegion = sublime.Region(region.begin(), region.begin()) + + selected.add(underlineRegion) + view.show(underlineRegion, True) + + +def find_underline_within(view, region): + underlines = view.get_regions('lint-underline-illegal') + underlines.extend(view.get_regions('lint-underline-violation')) + underlines.extend(view.get_regions('lint-underline-warning')) + underlines.sort(key=lambda x: x.begin()) + + for underline in underlines: + if region.contains(underline): + return underline + + return None + + +def syntax_name(view): + syntax = os.path.basename(view.settings().get('syntax')) + syntax = os.path.splitext(syntax)[0] + return syntax + + +def select_linter(view, ignore_disabled=False): + '''selects the appropriate linter to use based on language in current view''' + syntax = syntax_name(view) + lc_syntax = syntax.lower() + language = None + linter = None + syntaxMap = view.settings().get('sublimelinter_syntax_map', {}) + + if syntax in syntaxMap: + language = syntaxMap[syntax] + elif lc_syntax in syntaxMap: + language = syntaxMap[lc_syntax] + elif lc_syntax in LINTERS: + language = lc_syntax + + if language: + if ignore_disabled: + disabled = [] + else: + disabled = view.settings().get('sublimelinter_disable', []) + + if language not in disabled: + linter = LINTERS[language] + + # If the enabled state is False, it must be checked. + # Enabled checking has to be deferred to first view use because + # user settings cannot be loaded during plugin startup. + if not linter.enabled: + enabled, message = linter.check_enabled(view) + print 'SublimeLinter: {0} {1} ({2})'.format(language, 'enabled' if enabled else 'disabled', message) + + if not enabled: + del LINTERS[language] + linter = None + + return linter + + +def highlight_notes(view): + '''highlight user-specified annotations in a file''' + view.erase_regions('lint-annotations') + text = view.substr(sublime.Region(0, view.size())) + regions = LINTERS['annotations'].built_in_check(view, text, '') + + if regions: + view.add_regions('lint-annotations', regions, 'sublimelinter.annotations', sublime.DRAW_EMPTY_AS_OVERWRITE) + + +def queue_linter(linter, view, timeout, busy_timeout, preemptive=False): + '''Put the current view in a queue to be examined by a linter''' + if linter is None: + erase_lint_marks(view) # may have changed file type and left marks behind + + # No point in queuing anything if no linters will run + if not view.settings().get('sublimelinter_notes'): + return + + # user annotations could be present in all types of files + def _update_view(view): + linter = select_linter(view) + try: + background_run(linter, view) + except RuntimeError, ex: + print ex + + queue(view, _update_view, timeout, busy_timeout, preemptive) + + +def background_linter(): + __lock_.acquire() + try: + views = QUEUE.values() + QUEUE.clear() + finally: + __lock_.release() + + for view, callback, args, kwargs in views: + def _callback(): + callback(view, *args, **kwargs) + sublime.set_timeout(_callback, 0) + +################################################################################ +# Queue dispatcher system: + +queue_dispatcher = background_linter +queue_thread_name = 'background linter' +MAX_DELAY = 10 + + +def queue_loop(): + '''An infinite loop running the linter in a background thread meant to + update the view after user modifies it and then does no further + modifications for some time as to not slow down the UI with linting.''' + global __signaled_, __signaled_first_ + + while __loop_: + #print 'acquire...' + __semaphore_.acquire() + __signaled_first_ = 0 + __signaled_ = 0 + #print 'DISPATCHING!', len(QUEUE) + queue_dispatcher() + + +def queue(view, callback, timeout, busy_timeout=None, preemptive=False, args=[], kwargs={}): + global __signaled_, __signaled_first_ + now = time.time() + __lock_.acquire() + + try: + QUEUE[view.id()] = (view, callback, args, kwargs) + if now < __signaled_ + timeout * 4: + timeout = busy_timeout or timeout + + __signaled_ = now + _delay_queue(timeout, preemptive) + if not __signaled_first_: + __signaled_first_ = __signaled_ + #print 'first', + #print 'queued in', (__signaled_ - now) + finally: + __lock_.release() + + +def _delay_queue(timeout, preemptive): + global __signaled_, __queued_ + now = time.time() + + if not preemptive and now <= __queued_ + 0.01: + return # never delay queues too fast (except preemptively) + + __queued_ = now + _timeout = float(timeout) / 1000 + + if __signaled_first_: + if MAX_DELAY > 0 and now - __signaled_first_ + _timeout > MAX_DELAY: + _timeout -= now - __signaled_first_ + if _timeout < 0: + _timeout = 0 + timeout = int(round(_timeout * 1000, 0)) + + new__signaled_ = now + _timeout - 0.01 + + if __signaled_ >= now - 0.01 and (preemptive or new__signaled_ >= __signaled_ - 0.01): + __signaled_ = new__signaled_ + #print 'delayed to', (preemptive, __signaled_ - now) + + def _signal(): + if time.time() < __signaled_: + return + __semaphore_.release() + sublime.set_timeout(_signal, timeout) + + +def delay_queue(timeout): + __lock_.acquire() + try: + _delay_queue(timeout, False) + finally: + __lock_.release() + + +# only start the thread once - otherwise the plugin will get laggy +# when saving it often. +__semaphore_ = threading.Semaphore(0) +__lock_ = threading.Lock() +__queued_ = 0 +__signaled_ = 0 +__signaled_first_ = 0 + +# First finalize old standing threads: +__loop_ = False +__pre_initialized_ = False + + +def queue_finalize(timeout=None): + global __pre_initialized_ + + for thread in threading.enumerate(): + if thread.isAlive() and thread.name == queue_thread_name: + __pre_initialized_ = True + thread.__semaphore_.release() + thread.join(timeout) +queue_finalize() + +# Initialize background thread: +__loop_ = True +__active_linter_thread = threading.Thread(target=queue_loop, name=queue_thread_name) +__active_linter_thread.__semaphore_ = __semaphore_ +__active_linter_thread.start() + +################################################################################ + +UNRECOGNIZED = ''' +* Unrecognized option * : %s +============================================== + +''' + + +def view_in_tab(view, title, text, file_type): + '''Helper function to display information in a tab. + ''' + tab = view.window().new_file() + tab.set_name(title) + _id = tab.buffer_id() + tab.set_scratch(_id) + tab.settings().set('gutter', True) + tab.settings().set('line_numbers', False) + tab.set_syntax_file(file_type) + ed = tab.begin_edit() + tab.insert(ed, 0, text) + tab.end_edit(ed) + return tab, _id + + +def lint_views(linter): + if not linter: + return + + viewsToLint = [] + + for window in sublime.windows(): + for view in window.views(): + viewLinter = select_linter(view) + + if viewLinter == linter: + viewsToLint.append(view) + + for view in viewsToLint: + queue_linter(linter, view, 0, 0, True) + + +def reload_view_module(view): + for name, linter in LINTERS.items(): + module = sys.modules[linter.__module__] + + if module.__file__ == view.file_name(): + print 'SublimeLinter: reloading language:', linter.language + MOD_LOAD.reload_module(module) + lint_views(linter) + break + + +def settings_changed(): + for window in sublime.windows(): + for view in window.views(): + linter = select_linter(view) + + if (linter): + reload_settings(view) + + +def reload_settings(view): + '''Restores user settings.''' + settings = sublime.load_settings(__name__ + '.sublime-settings') + settings.clear_on_change(__name__) + settings.add_on_change(__name__, settings_changed) + + for setting in ALL_SETTINGS: + if settings.get(setting) != None: + view.settings().set(setting, settings.get(setting)) + + if view.settings().get('sublimelinter') == None: + view.settings().set('sublimelinter', True) + + +class LintCommand(sublime_plugin.TextCommand): + '''command to interact with linters''' + + def __init__(self, view): + self.view = view + self.help_called = False + + def run_(self, action): + '''method called by default via view.run_command; + used to dispatch to appropriate method''' + if not action: + return + + try: + lc_action = action.lower() + except AttributeError: + return + + if lc_action == 'reset': + self.reset() + elif lc_action == 'on': + self.on() + elif lc_action == 'load-save': + self.enable_load_save() + elif lc_action == 'off': + self.off() + elif action.lower() in LINTERS: + self._run(lc_action) + + def reset(self): + '''Removes existing lint marks and restores user settings.''' + erase_lint_marks(self.view) + reload_settings(self.view) + + def on(self): + '''Turns background linting on.''' + self.view.settings().set('sublimelinter', True) + queue_linter(select_linter(self.view), self.view, 0, 0, True) + + def enable_load_save(self): + '''Turns load-save linting on.''' + self.view.settings().set('sublimelinter', 'load-save') + erase_lint_marks(self.view) + + def off(self): + '''Turns background linting off.''' + self.view.settings().set('sublimelinter', False) + erase_lint_marks(self.view) + + def _run(self, name): + '''runs an existing linter''' + run_once(LINTERS[name.lower()], self.view) + + +class BackgroundLinter(sublime_plugin.EventListener): + '''This plugin controls a linter meant to work in the background + to provide interactive feedback as a file is edited. It can be + turned off via a setting. + ''' + + def __init__(self): + super(BackgroundLinter, self).__init__() + self.lastSelectedLineNo = -1 + + def on_modified(self, view): + if view.is_scratch(): + return + + if view.settings().get('sublimelinter') != True: + erase_lint_marks(view) + return + + linter = select_linter(view) + + # File-based linters are not invoked during a modify + if linter and linter.input_method == INPUT_METHOD_FILE: + erase_lint_marks(view) + return + + # Reset the last selected line number so that the current line will show error messages + # when update_statusbar is called. + self.lastSelectedLineNo = -1 + delay = get_delay(TIMES.get(view.id(), 100), view) + queue_linter(linter, view, *delay) + + def on_load(self, view): + reload_settings(view) + + if view.is_scratch() or view.settings().get('sublimelinter') == False: + return + + background_run(select_linter(view), view, event='on_load') + + def on_post_save(self, view): + if view.is_scratch() or view.settings().get('sublimelinter') == False: + return + + reload_view_module(view) + linter = select_linter(view) + background_run(linter, view, event='on_post_save') + + def on_selection_modified(self, view): + if view.is_scratch(): + return + delay_queue(1000) # on movement, delay queue (to make movement responsive) + + # We only display errors in the status bar for the last line in the current selection. + # If that line number has not changed, there is no point in updating the status bar. + lastSelectedLineNo = last_selected_lineno(view) + + if lastSelectedLineNo != self.lastSelectedLineNo: + self.lastSelectedLineNo = lastSelectedLineNo + update_statusbar(view) + + +class FindLintErrorCommand(sublime_plugin.TextCommand): + '''This command is just a superclass for other commands, it is never enabled.''' + def is_enabled(self): + return select_linter(self.view) is not None + + def find_lint_error(self, forward): + regions = get_lint_regions(self.view, reverse=not forward, coalesce=True) + + if len(regions) == 0: + sublime.error_message('No lint errors.') + return + + selected = self.view.sel() + point = selected[0].begin() if forward else selected[-1].end() + regionToSelect = None + + # If going forward, find the first region beginning after the point. + # If going backward, find the first region ending before the point. + # If nothing is found in the given direction, wrap to the first/last region. + if forward: + for index, region in enumerate(regions): + if point < region.begin(): + regionToSelect = region + break + else: + for index, region in enumerate(regions): + if point > region.end(): + regionToSelect = region + break + + # If there is only one error line and the cursor is in that line, we cannot move. + # Otherwise wrap to the first/last error line unless settings disallow that. + if regionToSelect is None and (len(regions) > 1 or not regions[0].contains(point)): + if self.view.settings().get('sublimelinter_wrap_find', True): + regionToSelect = regions[0] + + if regionToSelect is not None: + select_lint_region(self.view, regionToSelect) + else: + sublime.error_message('No {0} lint errors.'.format('next' if forward else 'previous')) + + return regionToSelect + + +class FindNextLintErrorCommand(FindLintErrorCommand): + def run(self, edit): + ''' + Move the cursor to the next lint error in the current view. + The search will wrap to the top unless the sublimelinter_wrap_find + setting is set to false. + ''' + self.find_lint_error(forward=True) + + +class FindPreviousLintErrorCommand(FindLintErrorCommand): + def run(self, edit): + ''' + Move the cursor to the previous lint error in the current view. + The search will wrap to the bottom unless the sublimelinter_wrap_find + setting is set to false. + ''' + self.find_lint_error(forward=False) + + +class SublimelinterWindowCommand(sublime_plugin.WindowCommand): + def is_enabled(self): + view = self.window.active_view() + + if view: + if view.is_scratch(): + return False + else: + return True + else: + return False + + def run_(self, args): + pass + + +class SublimelinterAnnotationsCommand(SublimelinterWindowCommand): + '''Commands to extract annotations and display them in + a file + ''' + def run_(self, args): + linter = LINTERS.get('annotations', None) + + if linter is None: + return + + view = self.window.active_view() + + if not view: + return + + text = view.substr(sublime.Region(0, view.size())) + filename = view.file_name() + notes = linter.extract_annotations(text, view, filename) + _, filename = os.path.split(filename) + annotations_view, _id = view_in_tab(view, 'Annotations from {0}'.format(filename), notes, '') + + +class SublimelinterCommand(SublimelinterWindowCommand): + def is_enabled(self): + enabled = super(SublimelinterCommand, self).is_enabled() + + if not enabled: + return False + + linter = select_linter(self.window.active_view(), ignore_disabled=True) + return linter is not None + + def run_(self, args={}): + view = self.window.active_view() + action = args.get('action', '') + + if view and action: + if action == 'lint': + self.lint_view(view, show_popup_list=args.get('show_popup', False)) + else: + view.run_command('lint', action) + + def lint_view(self, view, show_popup_list): + linter = select_linter(view, ignore_disabled=True) + + if linter: + view.run_command('lint', linter.language) + regions = get_lint_regions(view, coalesce=True) + + if regions: + if show_popup_list: + popup_error_list(view) + else: + sublime.error_message('{0} lint error{1}.'.format(len(regions), 's' if len(regions) != 1 else '')) + else: + sublime.error_message('No lint errors.') + else: + syntax = syntax_name(view) + sublime.error_message('No linter for the syntax "{0}"'.format(syntax)) + + +class SublimelinterLintCommand(SublimelinterCommand): + def is_enabled(self): + enabled = super(SublimelinterLintCommand, self).is_enabled() + + if enabled: + view = self.window.active_view() + + if view and view.settings().get('sublimelinter') == True: + return False + + return enabled + + +class SublimelinterShowErrorsCommand(SublimelinterCommand): + def is_enabled(self): + return super(SublimelinterShowErrorsCommand, self).is_enabled() + + +class SublimelinterEnableLoadSaveCommand(SublimelinterCommand): + def is_enabled(self): + enabled = super(SublimelinterEnableLoadSaveCommand, self).is_enabled() + + if enabled: + view = self.window.active_view() + + if view and view.settings().get('sublimelinter') == 'load-save': + return False + + return enabled + + +class SublimelinterDisableCommand(SublimelinterCommand): + def is_enabled(self): + enabled = super(SublimelinterDisableCommand, self).is_enabled() + + if enabled: + view = self.window.active_view() + + if view and not view.settings().get('sublimelinter') == True: + return False + + return enabled diff --git a/SublimeLinter/SublimeLinter.sublime-settings b/SublimeLinter/SublimeLinter.sublime-settings new file mode 100644 index 0000000..e1bf72a --- /dev/null +++ b/SublimeLinter/SublimeLinter.sublime-settings @@ -0,0 +1,141 @@ +/* + SublimeLinter default settings +*/ +{ + /* + Sets the mode in which SublimeLinter runs: + + true - Linting occurs in the background as you type (the default). + false - Linting only occurs when you initiate it. + "load-save" - Linting occurs only when a file is loaded and saved. + */ + "sublimelinter": true, + + /* + Maps linters to executables for non-built in linters. If the executable + is not in the default system path, or on posix systems in /usr/local/bin + or ~/bin, then you must specify the full path to the executable. + Linter names should be lowercase. + + This is the effective default map; your mappings may override these. + + "sublimelinter_executable_map": + { + "perl": "perl", + "php": "php", + "ruby": "ruby" + }, + */ + "sublimelinter_executable_map": + { + "ruby": "~/.rvm/rubies/ruby-1.9.3-p0/bin/ruby" + }, + + /* + Maps syntax names to linters. This allows variations on a syntax + (for example "Python (Django)") to be linted. The key is + the base filename of the .tmLanguage syntax files, and the value + is the linter name (lowercase) the syntax maps to. + */ + "sublimelinter_syntax_map": + { + "Python Django": "python" + }, + + // An array of linter names to disable. Names should be lowercase. + "sublimelinter_disable": + [ + ], + + /* + The minimum delay in seconds (fractional seconds are okay) before + a linter is run when the "sublimelinter" setting is true. This allows + you to have background linting active, but defer the actual linting + until you are idle. When this value is greater than the built in linting delay, + errors are erased when the file is modified, since the assumption is + you don't want to see errors while you type. + */ + "sublimelinter_delay": 0, + + // If true, lines with errors or warnings will be filled in with the outline color. + "sublimelinter_fill_outlines": false, + + // If true, lines with errors or warnings will have a gutter mark. + "sublimelinter_gutter_marks": false, + + // If true, the find next/previous error commands will wrap. + "sublimelinter_wrap_find": true, + + // If true, when the file is saved any errors will appear in a popup list + "sublimelinter_popup_errors_on_save": false, + + // Javascript linter: "gjslint" to use the closure javascript linter (if available), + // or "jshint" to use the built in jshint linter. + "javascript_linter": "jshint", + + // jshint: options for linting JavaScript. See http://jshint.com/#docs for more info. + // By deault, eval is allowed. + "jshint_options": + { + "evil": true, + "regexdash": true, + "browser": true, + "wsh": true, + "trailing": true, + "sub": true, + "expr": false + }, + + // A list of command line options to send to gjslint. --nobeep is always sent. + "gjslint_options": + [ + ], + + // A list of gjslint error numbers to ignore. The list of error codes is here: + // http://closure-linter.googlecode.com/svn/trunk/closure_linter/errors.py + "gjslint_ignore": + [ + 110 // line too long + ], + + // A list of pep8 error numbers to ignore. By default "line too long" errors are ignored. + // The list of error codes is in this file: https://github.com/jcrocholl/pep8/blob/master/pep8.py. + // Search for "Ennn:", where nnn is a 3-digit number. + "pep8_ignore": + [ + "E501" + ], + + /* + If you use SublimeLinter for pyflakes checks, you can ignore some of the "undefined name xxx" + errors (comes in handy if you work with post-processors, globals/builtins available only at runtime, etc.). + You can control what names will be ignored with the user setting "pyflakes_ignore". + + Example: + + "pyflakes_ignore": + [ + "some_custom_builtin_o_mine", + "A_GLOBAL_CONSTANT" + ], + */ + "pyflakes_ignore": + [ + ], + + /* + Ordinarily pyflakes will issue a warning when 'from foo import *' is used, + but it is ignored since the warning is not that helpful. If you want to see this warning, + set this option to false. + */ + "pyflakes_ignore_import_*": true, + + // Objective-J: if true, non-ascii characters are flagged as an error. + "sublimelinter_objj_check_ascii": false, + + // Set to true to highlight annotations + "sublimelinter_notes": false, + + // The set of annotation phrases to highlight + "annotations": ["TODO", "README", "FIXME"] +} diff --git a/SublimeLinter/changelog.txt b/SublimeLinter/changelog.txt new file mode 100644 index 0000000..3fbedbe --- /dev/null +++ b/SublimeLinter/changelog.txt @@ -0,0 +1,111 @@ +SublimeLinter 1.5.1 changelog +============================= +NEW FEATURES + +- SublimeLinter keeps its settings in its own settings file now: + SublimeLinter.sublime-settings. You will need to copy your + user settings to this file. To do so, follow these steps: + + 1. Select "Preferences->Settings - User" in one tab/window. + The title of this tab should be "Preferences.sublime-settings". + 2. Open another tab/window and select "Preferences->Package Settings-> + SublimeLinter->Settings - User". The title of this window should be + "SublimeLinter.sublime-settings". + 3. Copy/cut any of the following settings from Preferences.sublime-settings + to SublimeLinter.sublime-settings: + + sublimelinter + sublimelinter_executable_map + sublimelinter_syntax_map + sublimelinter_disable + sublimelinter_delay + sublimelinter_fill_outlines + sublimelinter_gutter_marks + sublimelinter_wrap_find + sublimelinter_popup_errors_on_save + javascript_linter + jshint_options + pep8_ignore + pyflakes_ignore + pyflakes_ignore_import_* + sublimelinter_objj_check_ascii + + 4. Save SublimeLinter.sublime-settings. The changes may not take + effect until you restart Sublime Text. + + When changes are made to the user SublimeLinter settings, they + are immediately reloaded into every open view. Note that this will + override any temporary changes you may have made to the settings in + a given view. + +- The google closure Javascript linter (gjslint) is now supported + (https://developers.google.com/closure/utilities/docs/linter_howto). + There is a new setting, "javascript_linter", which determines which + linter to use, jshint or gjslinter. You may also customize gjslint + behavior with the "gjslint_options" and "gjslint_ignore" settings. + Please select "Preferences->Package Settings->SublimeLinter->Settings - Default" + for more information on these settings. + +- The color theme names have been changed to avoid clashes with + built in names. + + Old New + --------------------- ----------------------------- + sublimelinter. sublimelinter.outline. + invalid. sublimelinter.underline. + + You will have to update your color themes accordingly. Please select + "Preferences->Package Settings->SublimeLinter->README" and search + for "Customizing colors" for more information. + +- When selecting an error from the popup error list, the view is centered + on the error line. + + +CHANGES/FIXES + +- The PHP error regex has been updated to work with PHP 5.3.8 on Mac OS X. + +- The popup error list will no longer choke on non-ASCII text. + +- Selecting an error from the popup error list no longer attempts to go + directly to the point of an error as this could not be done reliably. + It will jump to the first non-whitespace character of the error's line. + +- Go to next/previous error works correctly when an error line has no underlines. + +- If an exception is thrown by jshint (e.g. too many errors), the errors + captured up to that point are displayed. + +- The built in jshint has been updated from the master jshint. + +- Fixed errors that would occur with the popup error list when there was + more than error on a line. + + +SublimeLinter 1.5.3 changelog +============================= +CHANGES/FIXES + +- Annotations have been fixed. + +- Entries in "sublimelinter_syntax_map" take precedence over built in mappings. + +- Lint errors in PHP files will hopefully not be logged to the PHP log file. + + +SublimeLinter 1.5.4 changelog +============================= +CHANGES/FIXES + +- jshint.js has been updated to the latest master version. + +- [issue #128] An "unsafe" option has been added to jshint. If set true, + any UTF-8 characters are allowed in the source. + + +SublimeLinter 1.5.5 changelog +============================= +CHANGES/FIXES + +- This change log is available from the SublimeLinter preferences menu. diff --git a/SublimeLinter/messages.json b/SublimeLinter/messages.json new file mode 100644 index 0000000..d6ae10c --- /dev/null +++ b/SublimeLinter/messages.json @@ -0,0 +1,6 @@ +{ + "install": "README.rst", + "1.5.1": "messages/1.5.1.txt", + "1.5.3": "messages/1.5.3.txt" + "1.5.4": "messages/1.5.4.txt" +} diff --git a/SublimeLinter/messages/1.5.1.txt b/SublimeLinter/messages/1.5.1.txt new file mode 100644 index 0000000..1d62027 --- /dev/null +++ b/SublimeLinter/messages/1.5.1.txt @@ -0,0 +1,85 @@ +SublimeLinter 1.5.1 changelog + +Please restart Sublime Text 2 after reading this. + +NEW FEATURES + +- SublimeLinter keeps its settings in its own settings file now: + SublimeLinter.sublime-settings. You will need to copy your + user settings to this file. To do so, follow these steps: + + 1. Select "Preferences->Settings - User" in one tab/window. + The title of this tab should be "Preferences.sublime-settings". + 2. Open another tab/window and select "Preferences->Package Settings-> + SublimeLinter->Settings - User". The title of this window should be + "SublimeLinter.sublime-settings". + 3. Copy/cut any of the following settings from Preferences.sublime-settings + to SublimeLinter.sublime-settings: + + sublimelinter + sublimelinter_executable_map + sublimelinter_syntax_map + sublimelinter_disable + sublimelinter_delay + sublimelinter_fill_outlines + sublimelinter_gutter_marks + sublimelinter_wrap_find + sublimelinter_popup_errors_on_save + javascript_linter + jshint_options + pep8_ignore + pyflakes_ignore + pyflakes_ignore_import_* + sublimelinter_objj_check_ascii + + 4. Save SublimeLinter.sublime-settings. The changes may not take + effect until you restart Sublime Text. + + When changes are made to the user SublimeLinter settings, they + are immediately reloaded into every open view. Note that this will + override any temporary changes you may have made to the settings in + a given view. + +- The google closure Javascript linter (gjslint) is now supported + (https://developers.google.com/closure/utilities/docs/linter_howto). + There is a new setting, "javascript_linter", which determines which + linter to use, jshint or gjslinter. You may also customize gjslint + behavior with the "gjslint_options" and "gjslint_ignore" settings. + Please select "Preferences->Package Settings->SublimeLinter->Settings - Default" + for more information on these settings. + +- The color theme names have been changed to avoid clashes with + built in names. + + Old New + --------------------- ----------------------------- + sublimelinter. sublimelinter.outline. + invalid. sublimelinter.underline. + + You will have to update your color themes accordingly. Please select + "Preferences->Package Settings->SublimeLinter->README" and search + for "Customizing colors" for more information. + +- When selecting an error from the popup error list, the view is centered + on the error line. + + +CHANGES/FIXES + +- The PHP error regex has been updated to work with PHP 5.3.8 on Mac OS X. + +- The popup error list will no longer choke on non-ASCII text. + +- Selecting an error from the popup error list no longer attempts to go + directly to the point of an error as this could not be done reliably. + It will jump to the first non-whitespace character of the error's line. + +- Go to next/previous error works correctly when an error line has no underlines. + +- If an exception is thrown by jshint (e.g. too many errors), the errors + captured up to that point are displayed. + +- The built in jshint has been updated from the master jshint. + +- Fixed errors that would occur with the popup error list when there was + more than error on a line. diff --git a/SublimeLinter/messages/1.5.3.txt b/SublimeLinter/messages/1.5.3.txt new file mode 100644 index 0000000..a9edca8 --- /dev/null +++ b/SublimeLinter/messages/1.5.3.txt @@ -0,0 +1,11 @@ +SublimeLinter 1.5.3 changelog + +Please restart Sublime Text 2 after reading this. + +CHANGES/FIXES + +- Annotations have been fixed. + +- Entries in "sublimelinter_syntax_map" take precedence over built in mappings. + +- Lint errors in PHP files will hopefully not be logged to the PHP log file. diff --git a/SublimeLinter/messages/1.5.4.txt b/SublimeLinter/messages/1.5.4.txt new file mode 100644 index 0000000..5326ecd --- /dev/null +++ b/SublimeLinter/messages/1.5.4.txt @@ -0,0 +1,10 @@ +SublimeLinter 1.5.4 changelog + +Please restart Sublime Text 2 after reading this. + +CHANGES/FIXES + +- jshint.js has been updated to the latest master version. + +- [issue #128] An "unsafe" option has been added to jshint. If set true, + any UTF-8 characters are allowed in the source. diff --git a/SublimeLinter/messages/1.5.5.txt b/SublimeLinter/messages/1.5.5.txt new file mode 100644 index 0000000..440d4eb --- /dev/null +++ b/SublimeLinter/messages/1.5.5.txt @@ -0,0 +1,5 @@ +SublimeLinter 1.5.5 changelog + +CHANGES/FIXES + +- The full change log is available from the SublimeLinter preferences menu. diff --git a/SublimeLinter/package_control.json b/SublimeLinter/package_control.json new file mode 100644 index 0000000..c79cad0 --- /dev/null +++ b/SublimeLinter/package_control.json @@ -0,0 +1,20 @@ +{ + "schema_version": "1.1", + "packages": [ + { + "name": "SublimeLinter", + "description": "Inline lint highlighting for the Sublime Text 2 editor", + "author": "Kronuz, Aparajita Fishman, Jake Swartwood", + "homepage": "http://github.com/Kronuz/SublimeLinter", + "last_modified": "2012-03-21 18:27:31", + "platforms": { + "*": [ + { + "version": "1.5.5", + "url": "https://nodeload.github.com/Kronuz/SublimeLinter/zipball/v1.5.5" + } + ] + } + } + ] +} diff --git a/SublimeLinter/sublimelinter/.tempfiles/Foo.class b/SublimeLinter/sublimelinter/.tempfiles/Foo.class new file mode 100644 index 0000000..1a4b715 Binary files /dev/null and b/SublimeLinter/sublimelinter/.tempfiles/Foo.class differ diff --git a/SublimeLinter/sublimelinter/.tempfiles/Gender.class b/SublimeLinter/sublimelinter/.tempfiles/Gender.class new file mode 100644 index 0000000..b8b5c61 Binary files /dev/null and b/SublimeLinter/sublimelinter/.tempfiles/Gender.class differ diff --git a/SublimeLinter/sublimelinter/__init__.py b/SublimeLinter/sublimelinter/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/SublimeLinter/sublimelinter/loader.py b/SublimeLinter/sublimelinter/loader.py new file mode 100644 index 0000000..7ec0882 --- /dev/null +++ b/SublimeLinter/sublimelinter/loader.py @@ -0,0 +1,120 @@ +# Note: Unlike linter modules, changes made to this module will NOT take effect until +# Sublime Text is restarted. + +import glob +import os +import os.path +import sys + +import modules.base_linter as base_linter + +libs_path = os.path.abspath(os.path.join(os.path.dirname(__file__), 'modules', 'libs')) + +if libs_path not in sys.path: + sys.path.insert(0, libs_path) + + +class Loader(object): + '''utility class to load (and reload if necessary) SublimeLinter modules''' + def __init__(self, basedir, linters): + '''assign relevant variables and load all existing linter modules''' + self.basedir = basedir + self.basepath = 'sublimelinter/modules' + self.linters = linters + self.modpath = self.basepath.replace('/', '.') + self.ignored = ('__init__', 'base_linter') + self.fix_path() + self.load_all() + + def fix_path(self): + if os.name != 'posix': + return + + path = os.environ['PATH'] + + if path: + dirs = path.split(':') + + if '/usr/local/bin' not in dirs: + dirs.insert(0, '/usr/local/bin') + + if '~/bin' not in dirs and '$HOME/bin' not in dirs: + dirs.append('$HOME/bin') + + os.environ['PATH'] = ':'.join(dirs) + + def load_all(self): + '''loads all existing linter modules''' + for modf in glob.glob('{0}/*.py'.format(self.basepath)): + base, name = os.path.split(modf) + name = name.split('.', 1)[0] + + if name in self.ignored: + continue + + self.load_module(name) + + def load_module(self, name): + '''loads a single linter module''' + fullmod = '{0}.{1}'.format(self.modpath, name) + + # make sure the path didn't change on us (this is needed for submodule reload) + pushd = os.getcwd() + os.chdir(self.basedir) + + __import__(fullmod) + + # this following line of code does two things: + # first, we get the actual module from sys.modules, + # not the base mod returned by __import__ + # second, we get an updated version with reload() + # so module development is easier + # (to make sublime text reload language submodule, + # just save sublimelinter_plugin.py ) + mod = sys.modules[fullmod] = reload(sys.modules[fullmod]) + + # update module's __file__ to absolute path so we can reload it + # if saved with sublime text + mod.__file__ = os.path.abspath(mod.__file__).rstrip('co') + + language = '' + + try: + config = base_linter.CONFIG.copy() + + try: + config.update(mod.CONFIG) + language = config['language'] + except (AttributeError, KeyError): + pass + + if language: + if hasattr(mod, 'Linter'): + linter = mod.Linter(config) + else: + linter = base_linter.BaseLinter(config) + + lc_language = language.lower() + self.linters[lc_language] = linter + print 'SublimeLinter: {0} loaded'.format(language) + else: + print 'SublimeLinter: {0} disabled (no language specified in module)'.format(name) + + except KeyError: + print 'SublimeLinter: general error importing {0} ({1})'.format(name, language or '') + is_enabled = False + + os.chdir(pushd) + + def reload_module(self, module): + '''reload a single linter module + This method is meant to be used when editing a given + linter module so that changes can be viewed immediately + upon saving without having to restart Sublime Text''' + fullmod = module.__name__ + + if not fullmod.startswith(self.modpath): + return + + name = fullmod.replace(self.modpath + '.', '', 1) + self.load_module(name) diff --git a/SublimeLinter/sublimelinter/modules/__init__.py b/SublimeLinter/sublimelinter/modules/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/SublimeLinter/sublimelinter/modules/base_linter.py b/SublimeLinter/sublimelinter/modules/base_linter.py new file mode 100644 index 0000000..629a045 --- /dev/null +++ b/SublimeLinter/sublimelinter/modules/base_linter.py @@ -0,0 +1,298 @@ +# -*- coding: utf-8 -*- +# base_linter.py - base class for linters + +import os +import os.path +import re +import subprocess + +import sublime + +# If the linter uses an executable that takes stdin, use this input method. +INPUT_METHOD_STDIN = 1 + +# If the linter uses an executable that does not take stdin but you wish to use +# a temp file so that the current view can be linted interactively, use this input method. +# If the current view has been saved, the tempfile will have the same name as the +# view's file, which is necessary for some linters. +INPUT_METHOD_TEMP_FILE = 2 + +# If the linter uses an executable that does not take stdin and you wish to have +# linting occur only on file load and save, use this input method. +INPUT_METHOD_FILE = 3 + +CONFIG = { + # The display language name for this linter. + 'language': '', + + # Linters may either use built in code or use an external executable. This item may have + # one of the following values: + # + # string - An external command (or path to a command) to execute + # None - The linter is considered to be built in + # + # Alternately, your linter class may define the method get_executable(), + # which should return the three-tuple (, , ): + # must be a boolean than indicates whether the executable is available and usable. + # If is True, must be one of: + # - A command string (or path to a command) if an external executable will be used + # - None if built in code will be used + # - False if no suitable executable can be found or the linter should be disabled + # for some other reason. + # is the message that will be shown in the console when the linter is + # loaded, to aid the user in knowing what the status of the linter is. If None or an empty string, + # a default message will be returned based on the value of . Otherwise it + # must be a string. + 'executable': None, + + # If an external executable is being used, this item specifies the arguments + # used when checking the existence of the executable to determine if the linter can be enabled. + # If more than one argument needs to be passed, use a tuple/list. + # Defaults to '-v' if this item is missing. + 'test_existence_args': '-v', + + # If an external executable is being used, this item specifies the arguments to be passed + # when linting. If there is more than one argument, use a tuple/list. + # If the input method is anything other than INPUT_METHOD_STDIN, put a {filename} placeholder in + # the args where the filename should go. + # + # Alternately, if your linter class may define the method get_lint_args(), which should return + # None for no arguments or a tuple/list for one or more arguments. + 'lint_args': None, + + # If an external executable is being used, the method used to pass input to it. Defaults to STDIN. + 'input_method': INPUT_METHOD_STDIN +} + +TEMPFILES_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '.tempfiles')) + +if not os.path.exists(TEMPFILES_DIR): + os.mkdir(TEMPFILES_DIR) + + +class BaseLinter(object): + '''A base class for linters. Your linter module needs to do the following: + + - Set the relevant values in CONFIG + - Override built_in_check() if it uses a built in linter. You may return + whatever value you want, this value will be passed to parse_errors(). + - Override parse_errors() and populate the relevant lists/dicts. The errors + argument passed to parse_errors() is the output of the executable run through strip(). + + If you do subclass and override __init__, be sure to call super(MyLinter, self).__init__(config). + ''' + + def __init__(self, config): + self.language = config['language'] + self.enabled = False + self.executable = config.get('executable', None) + self.test_existence_args = config.get('test_existence_args', ('-v',)) + + if isinstance(self.test_existence_args, basestring): + self.test_existence_args = (self.test_existence_args,) + + self.input_method = config.get('input_method', INPUT_METHOD_STDIN) + self.filename = None + self.lint_args = config.get('lint_args', ()) + + if isinstance(self.lint_args, basestring): + self.lint_args = (self.lint_args,) + + def check_enabled(self, view): + if hasattr(self, 'get_executable'): + try: + self.enabled, self.executable, message = self.get_executable(view) + + if self.enabled and not message: + message = 'using "{0}"'.format(self.executable) if self.executable else 'built in' + except Exception as ex: + self.enabled = False + message = unicode(ex) + else: + self.enabled, message = self._check_enabled(view) + + return (self.enabled, message or '') + + def _check_enabled(self, view): + if self.executable is None: + return (True, 'built in') + elif isinstance(self.executable, basestring): + self.executable = self.get_mapped_executable(view, self.executable) + elif isinstance(self.executable, bool) and self.executable == False: + return (False, 'unknown error') + else: + return (False, 'bad type for CONFIG["executable"]') + + # If we get this far, the executable is external. Test that it can be executed + # and capture stdout and stderr so they don't end up in the system log. + try: + args = [self.executable] + args.extend(self.test_existence_args) + subprocess.Popen(args, startupinfo=self.get_startupinfo(), + stdout=subprocess.PIPE, stderr=subprocess.STDOUT).communicate() + except OSError: + return (False, '"{0}" cannot be found'.format(self.executable)) + + return (True, 'using "{0}" for executable'.format(self.executable)) + + def _get_lint_args(self, view, code, filename): + if hasattr(self, 'get_lint_args'): + return self.get_lint_args(view, code, filename) or () + else: + lintArgs = self.lint_args or [] + settings = view.settings().get('SublimeLinter', {}).get(self.language, {}) + + if settings: + args = settings.get('lint_args', []) + lintArgs.extend(args) + + cwd = settings.get('working_directory') + + if cwd and os.path.isabs(cwd) and os.path.isdir(cwd): + os.chdir(cwd) + + return [arg.format(filename=filename) for arg in lintArgs] + + def built_in_check(self, view, code, filename): + return '' + + def executable_check(self, view, code, filename): + args = [self.executable] + tempfilePath = None + + if self.input_method == INPUT_METHOD_STDIN: + args.extend(self._get_lint_args(view, code, filename)) + + elif self.input_method == INPUT_METHOD_TEMP_FILE: + if filename: + filename = os.path.basename(filename) + else: + filename = 'view{0}'.format(view.id()) + + tempfilePath = os.path.join(TEMPFILES_DIR, filename) + + with open(tempfilePath, 'w') as f: + f.write(code) + + args.extend(self._get_lint_args(view, code, tempfilePath)) + code = '' + + elif self.input_method == INPUT_METHOD_FILE: + args.extend(self._get_lint_args(view, code, filename)) + code = '' + + else: + return '' + + try: + process = subprocess.Popen(args, + stdin=subprocess.PIPE, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + startupinfo=self.get_startupinfo()) + result = process.communicate(code)[0] + finally: + if tempfilePath: + os.remove(tempfilePath) + + return result.strip() + + def parse_errors(self, view, errors, lines, errorUnderlines, violationUnderlines, warningUnderlines, errorMessages, violationMessages, warningMessages): + pass + + def add_message(self, lineno, lines, message, messages): + # Assume lineno is one-based, ST2 wants zero-based line numbers + lineno -= 1 + lines.add(lineno) + message = message[0].upper() + message[1:] + + # Remove trailing period from error message + if message[-1] == '.': + message = message[:-1] + + if lineno in messages: + messages[lineno].append(message) + else: + messages[lineno] = [message] + + def underline_range(self, view, lineno, position, underlines, length=1): + # Assume lineno is one-based, ST2 wants zero-based line numbers + lineno -= 1 + line = view.full_line(view.text_point(lineno, 0)) + position += line.begin() + + for i in xrange(length): + underlines.append(sublime.Region(position + i)) + + def underline_regex(self, view, lineno, regex, lines, underlines, wordmatch=None, linematch=None): + # Assume lineno is one-based, ST2 wants zero-based line numbers + lineno -= 1 + lines.add(lineno) + offset = 0 + line = view.full_line(view.text_point(lineno, 0)) + lineText = view.substr(line) + + if linematch: + match = re.match(linematch, lineText) + + if match: + lineText = match.group('match') + offset = match.start('match') + else: + return + + iters = re.finditer(regex, lineText) + results = [(result.start('underline'), result.end('underline')) for result in iters + if not wordmatch or result.group('underline') == wordmatch] + + # Make the lineno one-based again for underline_range + lineno += 1 + + for start, end in results: + self.underline_range(view, lineno, start + offset, underlines, end - start) + + def run(self, view, code, filename=None): + self.filename = filename + + if self.executable is None: + errors = self.built_in_check(view, code, filename) + else: + errors = self.executable_check(view, code, filename) + + lines = set() + errorUnderlines = [] # leave this here for compatibility with original plugin + errorMessages = {} + violationUnderlines = [] + violationMessages = {} + warningUnderlines = [] + warningMessages = {} + + self.parse_errors(view, errors, lines, errorUnderlines, violationUnderlines, warningUnderlines, errorMessages, violationMessages, warningMessages) + return lines, errorUnderlines, violationUnderlines, warningUnderlines, errorMessages, violationMessages, warningMessages + + def get_mapped_executable(self, view, default): + map = view.settings().get('sublimelinter_executable_map') + + if map: + lang = self.language.lower() + + if lang in map: + return map[lang] + + return default + + def get_startupinfo(self): + info = None + + if os.name == 'nt': + info = subprocess.STARTUPINFO() + info.dwFlags |= subprocess.STARTF_USESHOWWINDOW + info.wShowWindow = subprocess.SW_HIDE + + return info + + def execute_get_output(self, args): + try: + return subprocess.Popen(args, self.get_startupinfo()).communicate()[0] + except: + return '' diff --git a/SublimeLinter/sublimelinter/modules/coffeescript.py b/SublimeLinter/sublimelinter/modules/coffeescript.py new file mode 100644 index 0000000..0dceac9 --- /dev/null +++ b/SublimeLinter/sublimelinter/modules/coffeescript.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +# coffeescript.py - sublimelint package for checking coffee files + +import re +import os + +from base_linter import BaseLinter + +CONFIG = { + 'language': 'coffeescript', + 'executable': 'coffee.cmd' if os.name == 'nt' else 'coffee', + 'lint_args': '-l' +} + + +class Linter(BaseLinter): + def parse_errors(self, view, errors, lines, errorUnderlines, + violationUnderlines, warningUnderlines, errorMessages, + violationMessages, warningMessages): + for line in errors.splitlines(): + match = re.match(r'.*?Error: In .+?, Parse error on line ' + r'(?P\d+): (?P.+)', line) + if not match: + match = re.match(r'.*?Error: In .+?, (?P.+) ' + r'on line (?P\d+)', line) + + if match: + line, error = match.group('line'), match.group('error') + self.add_message(int(line), lines, error, errorMessages) diff --git a/SublimeLinter/sublimelinter/modules/java.py b/SublimeLinter/sublimelinter/modules/java.py new file mode 100644 index 0000000..00cd8b7 --- /dev/null +++ b/SublimeLinter/sublimelinter/modules/java.py @@ -0,0 +1,59 @@ +# -*- coding: utf-8 -*- +# java.py - sublimelint package for checking java files + +import os +import os.path +import re + +from base_linter import BaseLinter, INPUT_METHOD_FILE + +CONFIG = { + 'language': 'java', + 'executable': 'javac', + 'test_existence_args': '-version', + 'input_method': INPUT_METHOD_FILE +} + +ERROR_RE = re.compile(r'^(?P.*\.java):(?P\d+): (?Pwarning: )?(?:\[\w+\] )?(?P.*)') +MARK_RE = re.compile(r'^(?P\s*)\^$') + + +class Linter(BaseLinter): + def parse_errors(self, view, errors, lines, errorUnderlines, + violationUnderlines, warningUnderlines, errorMessages, + violationMessages, warningMessages): + it = iter(errors.splitlines()) + + for line in it: + match = re.match(ERROR_RE, line) + + if match: + path = os.path.abspath(match.group('path')) + + if path != self.filename: + continue + + lineNumber = int(match.group('line')) + warning = match.group('warning') + error = match.group('error') + + if warning: + messages = warningMessages + underlines = warningUnderlines + else: + messages = errorMessages + underlines = errorUnderlines + + # Skip forward until we find the marker + position = -1 + + while True: + line = it.next() + match = re.match(MARK_RE, line) + + if match: + position = len(match.group('mark')) + break + + self.add_message(lineNumber, lines, error, messages) + self.underline_range(view, lineNumber, position, underlines) diff --git a/SublimeLinter/sublimelinter/modules/javascript.py b/SublimeLinter/sublimelinter/modules/javascript.py new file mode 100644 index 0000000..6c73d13 --- /dev/null +++ b/SublimeLinter/sublimelinter/modules/javascript.py @@ -0,0 +1,91 @@ +# -*- coding: utf-8 -*- +# javascript.py - sublimelint package for checking Javascript files + +import os +import json +import re +import subprocess + +from base_linter import BaseLinter, INPUT_METHOD_TEMP_FILE + +CONFIG = { + 'language': 'JavaScript' +} + + +class Linter(BaseLinter): + JSC_PATH = '/System/Library/Frameworks/JavaScriptCore.framework/Versions/A/Resources/jsc' + GJSLINT_RE = re.compile(r'Line (?P\d+),\s*E:(?P\d+):\s*(?P.+)') + + def __init__(self, config): + super(Linter, self).__init__(config) + self.use_jsc = False + self.linter = None + + def get_executable(self, view): + self.linter = view.settings().get('javascript_linter', 'jshint') + + if (self.linter == 'jshint'): + if os.path.exists(self.JSC_PATH): + self.use_jsc = True + return (True, self.JSC_PATH, 'using JavaScriptCore') + try: + path = self.get_mapped_executable(view, 'node') + subprocess.call([path, '-v'], startupinfo=self.get_startupinfo()) + return (True, path, '') + except OSError: + return (False, '', 'JavaScriptCore or node.js is required') + elif (self.linter == 'gjslint'): + try: + path = self.get_mapped_executable(view, 'gjslint') + subprocess.call([path, '--help'], startupinfo=self.get_startupinfo()) + self.input_method = INPUT_METHOD_TEMP_FILE + return (True, path, 'using gjslint') + except OSError: + return (False, '', 'gjslint cannot be found') + else: + return (False, '', '"{0}" is not a valid javascript linter'.format(self.linter)) + + def get_lint_args(self, view, code, filename): + if (self.linter == 'gjslint'): + args = [] + gjslint_options = view.settings().get("gjslint_options", []) + args.extend(gjslint_options) + args.extend(['--nobeep', filename]) + return args + elif (self.linter == 'jshint'): + path = self.jshint_path() + jshint_options = json.dumps(view.settings().get("jshint_options") or {}) + + if self.use_jsc: + args = (os.path.join(path, 'jshint_jsc.js'), '--', str(code.count('\n')), jshint_options, path + os.path.sep) + else: + args = (os.path.join(path, 'jshint_node.js'), jshint_options) + + return args + else: + return [] + + def jshint_path(self): + return os.path.join(os.path.dirname(__file__), 'libs', 'jshint') + + def parse_errors(self, view, errors, lines, errorUnderlines, violationUnderlines, warningUnderlines, errorMessages, violationMessages, warningMessages): + if (self.linter == 'gjslint'): + ignore = view.settings().get('gjslint_ignore', []) + + for line in errors.splitlines(): + match = self.GJSLINT_RE.match(line) + + if match: + line, errnum, message = match.group('line'), match.group('errnum'), match.group('message') + + if (int(errnum) not in ignore): + self.add_message(int(line), lines, message, errorMessages) + + elif (self.linter == 'jshint'): + errors = json.loads(errors.strip() or '[]') + + for error in errors: + lineno = error['line'] + self.add_message(lineno, lines, error['reason'], errorMessages) + self.underline_range(view, lineno, error['character'] - 1, errorUnderlines) diff --git a/SublimeLinter/sublimelinter/modules/libs/capp_lint.py b/SublimeLinter/sublimelinter/modules/libs/capp_lint.py new file mode 100644 index 0000000..eda4923 --- /dev/null +++ b/SublimeLinter/sublimelinter/modules/libs/capp_lint.py @@ -0,0 +1,1021 @@ +#!/usr/bin/env python +# +# capp_lint.py - Check Objective-J source code formatting, +# according to Cappuccino standards: +# +# http://cappuccino.org/contribute/coding-style.php +# +# Copyright (C) 2011 Aparajita Fishman + +# 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. + +from __future__ import with_statement +from optparse import OptionParser +from string import Template +import cgi +import cStringIO +import os +import os.path +import re +import sys + +import sublime + + +EXIT_CODE_SHOW_HTML = 205 +EXIT_CODE_SHOW_TOOLTIP = 206 + + +def exit_show_html(html): + sys.stdout.write(html.encode('utf-8')) + sys.exit(EXIT_CODE_SHOW_HTML) + + +def exit_show_tooltip(text): + sys.stdout.write(text) + sys.exit(EXIT_CODE_SHOW_TOOLTIP) + + +def within_textmate(): + return os.getenv('TM_APP_PATH') is not None + + +def tabs2spaces(text, positions=None): + while True: + index = text.find(u'\t') + + if index < 0: + return text + + spaces = u' ' * (4 - (index % 4)) + text = text[0:index] + spaces + text[index + 1:] + + if positions is not None: + positions.append(index) + + +def relative_path(basedir, filename): + if filename.find(basedir) == 0: + filename = filename[len(basedir) + 1:] + + return filename + + +class LintChecker(object): + + VAR_BLOCK_START_RE = re.compile(ur'''(?x) + (?P\s*) # indent before a var keyword + (?Pvar\s+) # var keyword and whitespace after + (?P[a-zA-Z_$]\w*)\s* + (?: + (?P=)\s* + (?P.*) + | + (?P[,;+\-/*%^&|=\\]) + ) + ''') + + SEPARATOR_RE = re.compile(ur'''(?x) + (?P.*) # Everything up to the line separator + (?P[,;+\-/*%^&|=\\]) # The line separator + \s* # Optional whitespace after + $ # End of expression + ''') + + INDENTED_EXPRESSION_RE_TEMPLATE = ur'''(?x) + [ ]{%d} # Placeholder for indent of first identifier that started block + (?P.+) # Expression + ''' + + VAR_BLOCK_RE_TEMPLATE = ur'''(?x) + [ ]{%d} # Placeholder for indent of first identifier that started block + (?P\s*) # Capture any further indent + (?: + (?P[\[\{].*) + | + (?P[a-zA-Z_$]\w*)\s* + (?: + (?P=)\s* + (?P.*) + | + (?P[,;+\-/*%%^&|=\\]) + ) + | + (?P.+) + ) + ''' + + STATEMENT_RE = re.compile(ur'''(?x) + \s*((continue|do|for|function|if|else|return|switch|while|with)\b|\[+\s*[a-zA-Z_$]\w*\s+[a-zA-Z_$]\w*\s*[:\]]) + ''') + + TRAILING_WHITESPACE_RE = re.compile(ur'^.*(\s+)$') + STRIP_LINE_COMMENT_RE = re.compile(ur'(.*)\s*(?://.*|/\*.*\*/\s*)$') + LINE_COMMENT_RE = re.compile(ur'\s*(?:/\*.*\*/\s*|//.*)$') + BLOCK_COMMENT_START_RE = re.compile(ur'\s*/\*.*(?!\*/\s*)$') + BLOCK_COMMENT_END_RE = re.compile(ur'.*?\*/') + METHOD_RE = ur'[-+]\s*\([a-zA-Z_$]\w*\)\s*[a-zA-Z_$]\w*' + FUNCTION_RE = re.compile(ur'\s*function\s*(?P[a-zA-Z_$]\w*)?\(.*\)\s*\{?') + STRING_LITERAL_RE = re.compile(ur'(?]*\)\s*\w+|[a-zA-Z_$]\w*(\+\+|--)|([ -+*/%^&|<>!]=?|&&|\|\||<<|>>>|={1,3}|!==?)\s*[-+][\w(\[])'), 'pass': False}, + + # Replace the contents of literal strings with spaces so we don't get false matches within them + 'preprocess': ( + {'regex': STRIP_LINE_COMMENT_RE, 'replace': ''}, + {'regex': STRING_LITERAL_RE, 'replace': EMPTY_STRING_LITERAL_FUNCTION}, + ), + 'regex': re.compile(ur'(?<=[\w)\]"\']|([ ]))([-+*/%^]|&&?|\|\|?|<<|>>>?)(?=[\w({\["\']|(?(1)\b\b|[ ]))'), + 'error': 'binary operator without surrounding spaces', + 'showPositionForGroup': 2, + 'type': ERROR_TYPE_WARNING + }, + { + # Filter out @import statements, method declarations + 'filter': {'regex': re.compile(ur'^(@import\b|\s*' + METHOD_RE + ')'), 'pass': False}, + + # Replace the contents of literal strings with spaces so we don't get false matches within them + 'preprocess': ( + {'regex': STRIP_LINE_COMMENT_RE, 'replace': ''}, + {'regex': STRING_LITERAL_RE, 'replace': EMPTY_STRING_LITERAL_FUNCTION}, + ), + 'regex': re.compile(ur'(?:[-*/%^&|<>!]=?|&&|\|\||<<|>>>|={1,3}|!==?)\s*(?>>?=)(?=[\w({\["\']|(?(1)\b\b|[ ]))'), + 'error': 'assignment operator without surrounding spaces', + 'showPositionForGroup': 2, + 'type': ERROR_TYPE_WARNING + }, + { + # Filter out @import statements and @implementation/method declarations + 'filter': {'regex': re.compile(ur'^(@import\b|@implementation\b|\s*' + METHOD_RE + ')'), 'pass': False}, + + # Replace the contents of literal strings with spaces so we don't get false matches within them + 'preprocess': ( + {'regex': STRIP_LINE_COMMENT_RE, 'replace': ''}, + {'regex': STRING_LITERAL_RE, 'replace': EMPTY_STRING_LITERAL_FUNCTION}, + ), + 'regex': re.compile(ur'(?<=[\w)\]"\']|([ ]))(===?|!==?|[<>]=?)(?=[\w({\["\']|(?(1)\b\b|[ ]))'), + 'error': 'comparison operator without surrounding spaces', + 'showPositionForGroup': 2, + 'type': ERROR_TYPE_WARNING + }, + { + 'regex': re.compile(ur'^(\s+)' + METHOD_RE + '|^\s*[-+](\()[a-zA-Z_$][\w]*\)\s*[a-zA-Z_$]\w*|^\s*[-+]\s*\([a-zA-Z_$][\w]*\)(\s+)[a-zA-Z_$]\w*'), + 'error': 'extra or missing space in a method declaration', + 'showPositionForGroup': 0, + 'type': ERROR_TYPE_WARNING + }, + { + # Check for brace following a class or method declaration + 'regex': re.compile(ur'^(?:\s*[-+]\s*\([a-zA-Z_$]\w*\)|@implementation)\s*[a-zA-Z_$][\w]*.*?\s*(\{)\s*(?:$|//.*$)'), + 'error': 'braces should be on their own line', + 'showPositionForGroup': 0, + 'type': ERROR_TYPE_ILLEGAL + }, + { + 'regex': re.compile(ur'^\s*var\s+[a-zA-Z_$]\w*\s*=\s*function\s+([a-zA-Z_$]\w*)\s*\('), + 'error': 'function name is ignored', + 'showPositionForGroup': 1, + 'skip': True, + 'type': ERROR_TYPE_WARNING + }, + ) + + VAR_DECLARATIONS = ['none', 'single', 'strict'] + VAR_DECLARATIONS_NONE = 0 + VAR_DECLARATIONS_SINGLE = 1 + VAR_DECLARATIONS_STRICT = 2 + + DIRS_TO_SKIP = ('.git', 'Frameworks', 'Build', 'Resources', 'CommonJS', 'Objective-J') + + ERROR_FORMATS = ('text', 'html') + TEXT_ERROR_SINGLE_FILE_TEMPLATE = Template(u'$lineNum: $message.\n+$line\n') + TEXT_ERROR_MULTI_FILE_TEMPLATE = Template(u'$filename:$lineNum: $message.\n+$line\n') + + def __init__(self, view, basedir='', var_declarations=VAR_DECLARATIONS_SINGLE, verbose=False): + self.view = view + self.basedir = unicode(basedir, 'utf-8') + self.errors = [] + self.errorFiles = [] + self.filesToCheck = [] + self.varDeclarations = var_declarations + self.verbose = verbose + self.sourcefile = None + self.filename = u'' + self.line = u'' + self.lineNum = 0 + self.varIndent = u'' + self.identifierIndent = u'' + + self.fileChecklist = ( + {'title': 'Check variable blocks', 'action': self.check_var_blocks}, + ) + + def run_line_checks(self): + for check in self.LINE_CHECKLIST: + option = check.get('option') + + if option: + default = check.get('optionDefault', False) + + if not self.view.settings().get(option, default): + continue + + line = self.line + lineFilter = check.get('filter') + + if lineFilter: + match = lineFilter['regex'].search(line) + + if (match and not lineFilter['pass']) or (not match and lineFilter['pass']): + continue + + preprocess = check.get('preprocess') + + if preprocess: + if not isinstance(preprocess, (list, tuple)): + preprocess = (preprocess,) + + for processor in preprocess: + regex = processor.get('regex') + + if regex: + line = regex.sub(processor.get('replace', ''), line) + + regex = check.get('regex') + + if not regex: + continue + + match = regex.search(line) + + if not match: + continue + + positions = [] + group = check.get('showPositionForGroup') + + if (check.get('id') == 'tabs'): + line = tabs2spaces(line, positions=positions) + elif group is not None: + line = tabs2spaces(line) + + for match in regex.finditer(line): + if group > 0: + positions.append(match.start(group)) + else: + # group 0 means show the first non-empty match + for i in range(1, len(match.groups()) + 1): + if match.start(i) >= 0: + positions.append(match.start(i)) + break + + self.error(check['error'], line=line, positions=positions, type=check['type']) + + def next_statement(self, expect_line=False, check_line=True): + try: + while True: + raw_line = self.sourcefile.next()[:-1] # strip EOL + + try: + self.line = unicode(raw_line, 'utf-8', 'strict') # convert to Unicode + self.lineNum += 1 + except UnicodeDecodeError: + self.line = unicode(raw_line, 'utf-8', 'replace') + self.lineNum += 1 + self.error('line contains invalid unicode character(s)', type=self.ERROR_TYPE_ILLEGAL) + + if self.verbose: + print u'%d: %s' % (self.lineNum, tabs2spaces(self.line)) + + if check_line: + self.run_line_checks() + + if not self.is_statement(): + continue + + return True + except StopIteration: + if expect_line: + self.error('unexpected EOF', type=self.ERROR_TYPE_ILLEGAL) + raise + + def is_statement(self): + # Skip empty lines + if len(self.line.strip()) == 0: + return False + + # See if we have a line comment, skip that + match = self.LINE_COMMENT_RE.match(self.line) + + if match: + return False + + # Match a block comment start next so we can find its end, + # otherwise we might get false matches on the contents of the block comment. + match = self.BLOCK_COMMENT_START_RE.match(self.line) + + if match: + self.block_comment() + return False + + return True + + def is_expression(self): + match = self.STATEMENT_RE.match(self.line) + return match is None + + def strip_comment(self): + match = self.STRIP_LINE_COMMENT_RE.match(self.expression) + + if match: + self.expression = match.group(1) + + def get_expression(self, lineMatch): + groupdict = lineMatch.groupdict() + + self.expression = groupdict.get('expression') + + if self.expression is None: + self.expression = groupdict.get('bracket') + + if self.expression is None: + self.expression = groupdict.get('indented_expression') + + if self.expression is None: + self.expression = '' + return + + # Remove all quoted strings from the expression so that we don't + # count unmatched pairs inside the strings. + self.expression = self.STRING_LITERAL_RE.sub(self.EMPTY_SELF_STRING_LITERAL_FUNCTION, self.expression) + + self.strip_comment() + self.expression = self.expression.strip() + + def block_comment(self): + 'Find the end of a block comment' + + commentOpenCount = self.line.count('/*') + commentOpenCount -= self.line.count('*/') + + # If there is an open comment block, eat it + if commentOpenCount: + if self.verbose: + print u'%d: BLOCK COMMENT START' % self.lineNum + else: + return + + match = None + + while not match and self.next_statement(expect_line=True, check_line=False): + match = self.BLOCK_COMMENT_END_RE.match(self.line) + + if self.verbose: + print u'%d: BLOCK COMMENT END' % self.lineNum + + def balance_pairs(self, squareOpenCount, curlyOpenCount, parenOpenCount): + # The following lines have to be indented at least as much as the first identifier + # after the var keyword at the start of the block. + if self.verbose: + print "%d: BALANCE BRACKETS: '['=%d, '{'=%d, '('=%d" % (self.lineNum, squareOpenCount, curlyOpenCount, parenOpenCount) + + lineRE = re.compile(self.INDENTED_EXPRESSION_RE_TEMPLATE % len(self.identifierIndent)) + + while True: + # If the expression has open brackets and is terminated, it's an error + match = self.SEPARATOR_RE.match(self.expression) + + if match and match.group('separator') == ';': + unterminated = [] + + if squareOpenCount: + unterminated.append('[') + + if curlyOpenCount: + unterminated.append('{') + + if parenOpenCount: + unterminated.append('(') + + self.error('unbalanced %s' % ' and '.join(unterminated), type=self.ERROR_TYPE_ILLEGAL) + return False + + self.next_statement(expect_line=True) + match = lineRE.match(self.line) + + if not match: + # If it doesn't match, the indent is wrong check the whole line + self.error('incorrect indentation') + self.expression = self.line + self.strip_comment() + else: + # It matches, extract the expression + self.get_expression(match) + + # Update the bracket counts + squareOpenCount += self.expression.count('[') + squareOpenCount -= self.expression.count(']') + curlyOpenCount += self.expression.count('{') + curlyOpenCount -= self.expression.count('}') + parenOpenCount += self.expression.count('(') + parenOpenCount -= self.expression.count(')') + + if squareOpenCount == 0 and curlyOpenCount == 0 and parenOpenCount == 0: + if self.verbose: + print u'%d: BRACKETS BALANCED' % self.lineNum + + # The brackets are closed, this line must be separated + match = self.SEPARATOR_RE.match(self.expression) + + if not match: + self.error('missing statement separator', type=self.ERROR_TYPE_ILLEGAL) + return False + + return True + + def pairs_balanced(self, lineMatchOrBlockMatch): + + groups = lineMatchOrBlockMatch.groupdict() + + if 'assignment' in groups or 'bracket' in groups: + squareOpenCount = self.expression.count('[') + squareOpenCount -= self.expression.count(']') + + curlyOpenCount = self.expression.count('{') + curlyOpenCount -= self.expression.count('}') + + parenOpenCount = self.expression.count('(') + parenOpenCount -= self.expression.count(')') + + if squareOpenCount or curlyOpenCount or parenOpenCount: + # If the brackets were not properly closed or the statement was + # missing a separator, skip the rest of the var block. + if not self.balance_pairs(squareOpenCount, curlyOpenCount, parenOpenCount): + return False + + return True + + def var_block(self, blockMatch): + """ + Parse a var block, return a tuple (haveLine, isSingleVar), where haveLine + indicates whether self.line is the next line to be parsed. + """ + + # Keep track of whether this var block has multiple declarations + isSingleVar = True + + # Keep track of the indent of the var keyword to compare with following lines + self.varIndent = blockMatch.group('indent') + + # Keep track of how far the first variable name is indented to make sure + # following lines line up with that + self.identifierIndent = self.varIndent + blockMatch.group('var') + + # Check the expression to see if we have any open [ or { or /* + self.get_expression(blockMatch) + + if not self.pairs_balanced(blockMatch): + return (False, False) + + separator = '' + + if self.expression: + match = self.SEPARATOR_RE.match(self.expression) + + if not match: + self.error('missing statement separator', type=self.ERROR_TYPE_ILLEGAL) + else: + separator = match.group('separator') + elif blockMatch.group('separator'): + separator = blockMatch.group('separator') + + # If the block has a semicolon, there should be no more lines in the block + blockHasSemicolon = separator == ';' + + # We may not catch an error till after the line that is wrong, so keep + # the most recent declaration and its line number. + lastBlockLine = self.line + lastBlockLineNum = self.lineNum + + # Now construct an RE that will match any lines indented at least as much + # as the var keyword that started the block. + blockRE = re.compile(self.VAR_BLOCK_RE_TEMPLATE % len(self.identifierIndent)) + + while self.next_statement(expect_line=not blockHasSemicolon): + + if not self.is_statement(): + continue + + # Is the line indented at least as much as the var keyword that started the block? + match = blockRE.match(self.line) + + if match: + if self.is_expression(): + lastBlockLine = self.line + lastBlockLineNum = self.lineNum + + # If the line is indented farther than the first identifier in the block, + # it is considered a formatting error. + if match.group('indent') and not match.group('indented_expression'): + self.error('incorrect indentation') + + self.get_expression(match) + + if not self.pairs_balanced(match): + return (False, isSingleVar) + + if self.expression: + separatorMatch = self.SEPARATOR_RE.match(self.expression) + + if separatorMatch is None: + # If the assignment does not have a separator, it's an error + self.error('missing statement separator', type=self.ERROR_TYPE_ILLEGAL) + else: + separator = separatorMatch.group('separator') + + if blockHasSemicolon: + # If the block already has a semicolon, we have an accidental global declaration + self.error('accidental global variable', type=self.ERROR_TYPE_ILLEGAL) + elif (separator == ';'): + blockHasSemicolon = True + elif match.group('separator'): + separator = match.group('separator') + + isSingleVar = False + else: + # If the line is a control statement of some kind, then it should not be indented this far. + self.error('statement should be outdented from preceding var block') + return (True, False) + + else: + # If the line does not match, it is not an assignment or is outdented from the block. + # In either case, the block is considered closed. If the most recent separator was not ';', + # the block was not properly terminated. + if separator != ';': + self.error('unterminated var block', lineNum=lastBlockLineNum, line=lastBlockLine, type=self.ERROR_TYPE_ILLEGAL) + + return (True, isSingleVar) + + def check_var_blocks(self): + lastStatementWasVar = False + lastVarWasSingle = False + haveLine = True + + while True: + if not haveLine: + haveLine = self.next_statement() + + if not self.is_statement(): + haveLine = False + continue + + match = self.VAR_BLOCK_START_RE.match(self.line) + + if match is None: + lastStatementWasVar = False + haveLine = False + continue + + # It might be a function definition, in which case we continue + expression = match.group('expression') + + if expression: + functionMatch = self.FUNCTION_RE.match(expression) + + if functionMatch: + lastStatementWasVar = False + haveLine = False + continue + + # Now we have the start of a variable block + if self.verbose: + print u'%d: VAR BLOCK' % self.lineNum + + varLineNum = self.lineNum + varLine = self.line + + haveLine, isSingleVar = self.var_block(match) + + if self.verbose: + print u'%d: END VAR BLOCK:' % self.lineNum, + + if isSingleVar: + print u'SINGLE' + else: + print u'MULTIPLE' + + if lastStatementWasVar and self.varDeclarations != self.VAR_DECLARATIONS_NONE: + if (self.varDeclarations == self.VAR_DECLARATIONS_SINGLE and lastVarWasSingle and isSingleVar) or \ + (self.varDeclarations == self.VAR_DECLARATIONS_STRICT and (lastVarWasSingle or isSingleVar)): + self.error('consecutive var declarations', lineNum=varLineNum, line=varLine) + + lastStatementWasVar = True + lastVarWasSingle = isSingleVar + + def run_file_checks(self): + for check in self.fileChecklist: + self.sourcefile.seek(0) + self.lineNum = 0 + + if self.verbose: + print u'%s: %s' % (check['title'], self.sourcefile.name) + + check['action']() + + def lint(self, filesToCheck): + # Recursively walk any directories and eliminate duplicates + self.filesToCheck = [] + + for filename in filesToCheck: + filename = unicode(filename, 'utf-8') + fullpath = os.path.join(self.basedir, filename) + + if fullpath not in self.filesToCheck: + if os.path.isdir(fullpath): + for root, dirs, files in os.walk(fullpath): + for skipDir in self.DIRS_TO_SKIP: + if skipDir in dirs: + dirs.remove(skipDir) + + for filename in files: + if not filename.endswith('.j'): + continue + + fullpath = os.path.join(root, filename) + + if fullpath not in self.filesToCheck: + self.filesToCheck.append(fullpath) + else: + self.filesToCheck.append(fullpath) + + for filename in self.filesToCheck: + try: + with open(filename) as self.sourcefile: + self.filename = relative_path(self.basedir, filename) + self.run_file_checks() + + except IOError: + self.lineNum = 0 + self.line = None + self.error('file not found', type=self.ERROR_TYPE_ILLEGAL) + + except StopIteration: + if self.verbose: + print u'EOF\n' + pass + + def lint_text(self, text, filename): + self.filename = filename + self.filesToCheck = [] + + try: + self.sourcefile = cStringIO.StringIO(text) + self.run_file_checks() + except StopIteration: + if self.verbose: + print u'EOF\n' + pass + + def count_files_checked(self): + return len(self.filesToCheck) + + def error(self, message, **kwargs): + info = { + 'filename': self.filename, + 'message': message, + 'type': kwargs.get('type', self.ERROR_TYPE_WARNING) + } + + line = kwargs.get('line', self.line) + lineNum = kwargs.get('lineNum', self.lineNum) + + if line and lineNum: + info['line'] = tabs2spaces(line) + info['lineNum'] = lineNum + + positions = kwargs.get('positions') + + if positions: + info['positions'] = positions + + self.errors.append(info) + + if self.filename not in self.errorFiles: + self.errorFiles.append(self.filename) + + def has_errors(self): + return len(self.errors) != 0 + + def print_errors(self, format='text'): + if not self.errors: + return + + if format == 'text': + self.print_text_errors() + elif format == 'html': + self.print_textmate_html_errors() + elif format == 'tooltip': + self.print_tooltip_errors() + + def print_text_errors(self): + sys.stdout.write('%d error' % len(self.errors)) + + if len(self.errors) > 1: + sys.stdout.write('s') + + if len(self.filesToCheck) == 1: + template = self.TEXT_ERROR_SINGLE_FILE_TEMPLATE + else: + sys.stdout.write(' in %d files' % len(self.errorFiles)) + template = self.TEXT_ERROR_MULTI_FILE_TEMPLATE + + sys.stdout.write(':\n\n') + + for error in self.errors: + if 'lineNum' in error and 'line' in error: + sys.stdout.write(template.substitute(error).encode('utf-8')) + + if error.get('positions'): + markers = ' ' * len(error['line']) + + for position in error['positions']: + markers = markers[:position] + '^' + markers[position + 1:] + + # Add a space at the beginning of the markers to account for the '+' at the beginning + # of the source line. + sys.stdout.write(' %s\n' % markers) + else: + sys.stdout.write('%s: %s.\n' % (error['filename'], error['message'])) + + sys.stdout.write('\n') + + def print_textmate_html_errors(self): + html = """ + + + Cappuccino Lint Report + + + + """ + + html += '

    Results: %d error' % len(self.errors) + + if len(self.errors) > 1: + html += 's' + + if len(self.filesToCheck) > 1: + html += ' in %d files' % len(self.errorFiles) + + html += '

    ' + + for error in self.errors: + message = cgi.escape(error['message']) + + if len(self.filesToCheck) > 1: + filename = cgi.escape(error['filename']) + ':' + else: + filename = '' + + html += '

    ' + + if 'line' in error and 'lineNum' in error: + filepath = cgi.escape(os.path.join(self.basedir, error['filename'])) + lineNum = error['lineNum'] + line = error['line'] + positions = error.get('positions') + firstPos = -1 + source = '' + + if positions: + firstPos = positions[0] + 1 + lastPos = 0 + + for pos in error.get('positions'): + if pos < len(line): + charToHighlight = line[pos] + else: + charToHighlight = '' + + source += '%s%s' % (cgi.escape(line[lastPos:pos]), cgi.escape(charToHighlight)) + lastPos = pos + 1 + + if lastPos <= len(line): + source += cgi.escape(line[lastPos:]) + else: + source = line + + link = '' % (filepath, lineNum, firstPos) + + if len(self.filesToCheck) > 1: + errorMsg = '%s%d: %s' % (filename, lineNum, message) + else: + errorMsg = '%d: %s' % (lineNum, message) + + html += '%(link)s%(errorMsg)s

    \n

    %(link)s%(source)s

    \n' % {'link': link, 'errorMsg': errorMsg, 'source': source} + else: + html += '%s%s

    \n' % (filename, message) + + html += """ + + +""" + exit_show_html(html) + + +if __name__ == '__main__': + usage = 'usage: %prog [options] [file ... | -]' + parser = OptionParser(usage=usage, version='1.02') + parser.add_option('-f', '--format', action='store', type='string', dest='format', default='text', help='the format to use for the report: text (default) or html (HTML in which errors can be clicked on to view in TextMate)') + parser.add_option('-b', '--basedir', action='store', type='string', dest='basedir', help='the base directory relative to which filenames are resolved, defaults to the current working directory') + parser.add_option('-d', '--var-declarations', action='store', type='string', dest='var_declarations', default='single', help='set the policy for flagging consecutive var declarations (%s)' % ', '.join(LintChecker.VAR_DECLARATIONS)) + parser.add_option('-v', '--verbose', action='store_true', dest='verbose', default=False, help='show what lint is doing') + parser.add_option('-q', '--quiet', action='store_true', dest='quiet', default=False, help='do not display errors, only return an exit code') + + (options, args) = parser.parse_args() + + if options.var_declarations not in LintChecker.VAR_DECLARATIONS: + parser.error('--var-declarations must be one of [' + ', '.join(LintChecker.VAR_DECLARATIONS) + ']') + + if options.verbose and options.quiet: + parser.error('options -v/--verbose and -q/--quiet are mutually exclusive') + + options.format = options.format.lower() + + if not options.format in LintChecker.ERROR_FORMATS: + parser.error('format must be one of ' + '/'.join(LintChecker.ERROR_FORMATS)) + + if options.format == 'html' and not within_textmate(): + parser.error('html format can only be used within TextMate.') + + if options.basedir: + basedir = options.basedir + + if basedir[-1] == '/': + basedir = basedir[:-1] + else: + basedir = os.getcwd() + + # We accept a list of filenames (relative to the cwd) either from the command line or from stdin + filenames = args + + if args and args[0] == '-': + filenames = [name.rstrip() for name in sys.stdin.readlines()] + + if not filenames: + print usage.replace('%prog', os.path.basename(sys.argv[0])) + sys.exit(0) + + checker = LintChecker(basedir=basedir, var_declarations=LintChecker.VAR_DECLARATIONS.index(options.var_declarations), verbose=options.verbose) + pathsToCheck = [] + + for filename in filenames: + filename = filename.strip('"\'') + path = os.path.join(basedir, filename) + + if (os.path.isdir(path) and not path.endswith('Frameworks')) or filename.endswith('.j'): + pathsToCheck.append(relative_path(basedir, filename)) + + if len(pathsToCheck) == 0: + if within_textmate(): + exit_show_tooltip('No Objective-J files found.') + + sys.exit(0) + + checker.lint(pathsToCheck) + + if checker.has_errors(): + if not options.quiet: + checker.print_errors(options.format) + + sys.exit(1) + else: + if within_textmate(): + exit_show_tooltip('Everything looks clean.') + + sys.exit(0) diff --git a/SublimeLinter/sublimelinter/modules/libs/jshint/jshint.js b/SublimeLinter/sublimelinter/modules/libs/jshint/jshint.js new file mode 100644 index 0000000..b44494d --- /dev/null +++ b/SublimeLinter/sublimelinter/modules/libs/jshint/jshint.js @@ -0,0 +1,4470 @@ +/*! + * JSHint, by JSHint Community. + * + * Licensed under the same slightly modified MIT license that JSLint is. + * It stops evil-doers everywhere. + * + * JSHint is a derivative work of JSLint: + * + * Copyright (c) 2002 Douglas Crockford (www.JSLint.com) + * + * 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 shall be used for Good, not Evil. + * + * 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. + * + * JSHint was forked from 2010-12-16 edition of JSLint. + * + */ + +/* + JSHINT is a global function. It takes two parameters. + + var myResult = JSHINT(source, option); + + The first parameter is either a string or an array of strings. If it is a + string, it will be split on '\n' or '\r'. If it is an array of strings, it + is assumed that each string represents one line. The source can be a + JavaScript text or a JSON text. + + The second parameter is an optional object of options which control the + operation of JSHINT. Most of the options are booleans: They are all + optional and have a default value of false. One of the options, predef, + can be an array of names, which will be used to declare global variables, + or an object whose keys are used as global names, with a boolean value + that determines if they are assignable. + + If it checks out, JSHINT returns true. Otherwise, it returns false. + + If false, you can inspect JSHINT.errors to find out the problems. + JSHINT.errors is an array of objects containing these members: + + { + line : The line (relative to 0) at which the lint was found + character : The character (relative to 0) at which the lint was found + reason : The problem + evidence : The text line in which the problem occurred + raw : The raw message before the details were inserted + a : The first detail + b : The second detail + c : The third detail + d : The fourth detail + } + + If a fatal error was found, a null will be the last element of the + JSHINT.errors array. + + You can request a Function Report, which shows all of the functions + and the parameters and vars that they use. This can be used to find + implied global variables and other problems. The report is in HTML and + can be inserted in an HTML . + + var myReport = JSHINT.report(limited); + + If limited is true, then the report will be limited to only errors. + + You can request a data structure which contains JSHint's results. + + var myData = JSHINT.data(); + + It returns a structure with this form: + + { + errors: [ + { + line: NUMBER, + character: NUMBER, + reason: STRING, + evidence: STRING + } + ], + functions: [ + name: STRING, + line: NUMBER, + last: NUMBER, + param: [ + STRING + ], + closure: [ + STRING + ], + var: [ + STRING + ], + exception: [ + STRING + ], + outer: [ + STRING + ], + unused: [ + STRING + ], + global: [ + STRING + ], + label: [ + STRING + ] + ], + globals: [ + STRING + ], + member: { + STRING: NUMBER + }, + unused: [ + { + name: STRING, + line: NUMBER + } + ], + implieds: [ + { + name: STRING, + line: NUMBER + } + ], + urls: [ + STRING + ], + json: BOOLEAN + } + + Empty arrays will not be included. + +*/ + +/*jshint + evil: true, nomen: false, onevar: false, regexp: false, strict: true, boss: true, + undef: true, maxlen: 100, indent:4 +*/ + +/*members "\b", "\t", "\n", "\f", "\r", "!=", "!==", "\"", "%", "(begin)", + "(breakage)", "(context)", "(error)", "(global)", "(identifier)", "(last)", + "(line)", "(loopage)", "(name)", "(onevar)", "(params)", "(scope)", + "(statement)", "(verb)", "*", "+", "++", "-", "--", "\/", "<", "<=", "==", + "===", ">", ">=", $, $$, $A, $F, $H, $R, $break, $continue, $w, Abstract, Ajax, + __filename, __dirname, ActiveXObject, Array, ArrayBuffer, ArrayBufferView, Audio, + Autocompleter, Assets, Boolean, Builder, Buffer, Browser, COM, CScript, Canvas, + CustomAnimation, Class, Control, Chain, Color, Cookie, Core, DataView, Date, + Debug, Draggable, Draggables, Droppables, Document, DomReady, DOMReady, DOMParser, Drag, + E, Enumerator, Enumerable, Element, Elements, Error, Effect, EvalError, Event, + Events, FadeAnimation, Field, Flash, Float32Array, Float64Array, Form, + FormField, Frame, FormData, Function, Fx, GetObject, Group, Hash, HotKey, + HTMLElement, HTMLAnchorElement, HTMLBaseElement, HTMLBlockquoteElement, + HTMLBodyElement, HTMLBRElement, HTMLButtonElement, HTMLCanvasElement, HTMLDirectoryElement, + HTMLDivElement, HTMLDListElement, HTMLFieldSetElement, + HTMLFontElement, HTMLFormElement, HTMLFrameElement, HTMLFrameSetElement, + HTMLHeadElement, HTMLHeadingElement, HTMLHRElement, HTMLHtmlElement, + HTMLIFrameElement, HTMLImageElement, HTMLInputElement, HTMLIsIndexElement, + HTMLLabelElement, HTMLLayerElement, HTMLLegendElement, HTMLLIElement, + HTMLLinkElement, HTMLMapElement, HTMLMenuElement, HTMLMetaElement, + HTMLModElement, HTMLObjectElement, HTMLOListElement, HTMLOptGroupElement, + HTMLOptionElement, HTMLParagraphElement, HTMLParamElement, HTMLPreElement, + HTMLQuoteElement, HTMLScriptElement, HTMLSelectElement, HTMLStyleElement, + HtmlTable, HTMLTableCaptionElement, HTMLTableCellElement, HTMLTableColElement, + HTMLTableElement, HTMLTableRowElement, HTMLTableSectionElement, + HTMLTextAreaElement, HTMLTitleElement, HTMLUListElement, HTMLVideoElement, + Iframe, IframeShim, Image, Int16Array, Int32Array, Int8Array, + Insertion, InputValidator, JSON, Keyboard, Locale, LN10, LN2, LOG10E, LOG2E, + MAX_VALUE, MIN_VALUE, Mask, Math, MenuItem, MessageChannel, MessageEvent, MessagePort, + MoveAnimation, MooTools, Native, NEGATIVE_INFINITY, Number, Object, ObjectRange, Option, + Options, OverText, PI, POSITIVE_INFINITY, PeriodicalExecuter, Point, Position, Prototype, + RangeError, Rectangle, ReferenceError, RegExp, ResizeAnimation, Request, RotateAnimation, + SQRT1_2, SQRT2, ScrollBar, ScriptEngine, ScriptEngineBuildVersion, + ScriptEngineMajorVersion, ScriptEngineMinorVersion, Scriptaculous, Scroller, + Slick, Slider, Selector, SharedWorker, String, Style, SyntaxError, Sortable, Sortables, + SortableObserver, Sound, Spinner, System, Swiff, Text, TextArea, Template, + Timer, Tips, Type, TypeError, Toggle, Try, "use strict", unescape, URI, URIError, URL, + VBArray, WSH, WScript, XDomainRequest, Web, Window, XMLDOM, XMLHttpRequest, XMLSerializer, + XPathEvaluator, XPathException, XPathExpression, XPathNamespace, XPathNSResolver, XPathResult, + "\\", a, addEventListener, address, alert, apply, applicationCache, arguments, arity, asi, atob, + b, basic, basicToken, bitwise, block, blur, boolOptions, boss, browser, btoa, c, call, callee, + caller, cases, charAt, charCodeAt, character, clearInterval, clearTimeout, + close, closed, closure, comment, condition, confirm, console, constructor, + content, couch, create, css, curly, d, data, datalist, dd, debug, decodeURI, + decodeURIComponent, defaultStatus, defineClass, deserialize, devel, document, + dojo, dijit, dojox, define, else, emit, encodeURI, encodeURIComponent, + entityify, eqeqeq, eqnull, errors, es5, escape, esnext, eval, event, evidence, evil, + ex, exception, exec, exps, expr, exports, FileReader, first, floor, focus, + forin, fragment, frames, from, fromCharCode, fud, funcscope, funct, function, functions, + g, gc, getComputedStyle, getRow, getter, getterToken, GLOBAL, global, globals, globalstrict, + hasOwnProperty, help, history, i, id, identifier, immed, implieds, importPackage, include, + indent, indexOf, init, ins, instanceOf, isAlpha, isApplicationRunning, isArray, + isDigit, isFinite, isNaN, iterator, java, join, jshint, + JSHINT, json, jquery, jQuery, keys, label, labelled, last, lastsemic, laxbreak, laxcomma, + latedef, lbp, led, left, length, line, load, loadClass, localStorage, location, + log, loopfunc, m, match, maxerr, maxlen, member,message, meta, module, moveBy, + moveTo, mootools, multistr, name, navigator, new, newcap, noarg, node, noempty, nomen, + nonew, nonstandard, nud, onbeforeunload, onblur, onerror, onevar, onecase, onfocus, + onload, onresize, onunload, open, openDatabase, openURL, opener, opera, options, outer, param, + parent, parseFloat, parseInt, passfail, plusplus, predef, print, process, prompt, + proto, prototype, prototypejs, provides, push, quit, range, raw, reach, reason, regexp, + readFile, readUrl, regexdash, removeEventListener, replace, report, require, + reserved, resizeBy, resizeTo, resolvePath, resumeUpdates, respond, rhino, right, + runCommand, scroll, screen, scripturl, scrollBy, scrollTo, scrollbar, search, seal, + send, serialize, sessionStorage, setInterval, setTimeout, setter, setterToken, shift, slice, + smarttabs, sort, spawn, split, stack, status, start, strict, sub, substr, supernew, shadow, + supplant, sum, sync, test, toLowerCase, toString, toUpperCase, toint32, token, top, trailing, + type, typeOf, Uint16Array, Uint32Array, Uint8Array, undef, undefs, unsafe, unused, urls, validthis, + value, valueOf, var, version, WebSocket, withstmt, white, window, Worker, wsh*/ + +/*global exports: false */ + +// We build the application inside a function so that we produce only a single +// global variable. That function will be invoked immediately, and its return +// value is the JSHINT function itself. + +var JSHINT = (function () { + "use strict"; + + var anonname, // The guessed name for anonymous functions. + +// These are operators that should not be used with the ! operator. + + bang = { + '<' : true, + '<=' : true, + '==' : true, + '===': true, + '!==': true, + '!=' : true, + '>' : true, + '>=' : true, + '+' : true, + '-' : true, + '*' : true, + '/' : true, + '%' : true + }, + + // These are the JSHint boolean options. + boolOptions = { + asi : true, // if automatic semicolon insertion should be tolerated + bitwise : true, // if bitwise operators should not be allowed + boss : true, // if advanced usage of assignments should be allowed + browser : true, // if the standard browser globals should be predefined + couch : true, // if CouchDB globals should be predefined + curly : true, // if curly braces around all blocks should be required + debug : true, // if debugger statements should be allowed + devel : true, // if logging globals should be predefined (console, + // alert, etc.) + dojo : true, // if Dojo Toolkit globals should be predefined + eqeqeq : true, // if === should be required + eqnull : true, // if == null comparisons should be tolerated + es5 : true, // if ES5 syntax should be allowed + esnext : true, // if es.next specific syntax should be allowed + evil : true, // if eval should be allowed + expr : true, // if ExpressionStatement should be allowed as Programs + forin : true, // if for in statements must filter + funcscope : true, // if only function scope should be used for scope tests + globalstrict: true, // if global "use strict"; should be allowed (also + // enables 'strict') + immed : true, // if immediate invocations must be wrapped in parens + iterator : true, // if the `__iterator__` property should be allowed + jquery : true, // if jQuery globals should be predefined + lastsemic : true, // if semicolons may be ommitted for the trailing + // statements inside of a one-line blocks. + latedef : true, // if the use before definition should not be tolerated + laxbreak : true, // if line breaks should not be checked + laxcomma : true, // if line breaks should not be checked around commas + loopfunc : true, // if functions should be allowed to be defined within + // loops + mootools : true, // if MooTools globals should be predefined + multistr : true, // allow multiline strings + newcap : true, // if constructor names must be capitalized + noarg : true, // if arguments.caller and arguments.callee should be + // disallowed + node : true, // if the Node.js environment globals should be + // predefined + noempty : true, // if empty blocks should be disallowed + nonew : true, // if using `new` for side-effects should be disallowed + nonstandard : true, // if non-standard (but widely adopted) globals should + // be predefined + nomen : true, // if names should be checked + onevar : true, // if only one var statement per function should be + // allowed + onecase : true, // if one case switch statements should be allowed + passfail : true, // if the scan should stop on first error + plusplus : true, // if increment/decrement should not be allowed + proto : true, // if the `__proto__` property should be allowed + prototypejs : true, // if Prototype and Scriptaculous globals should be + // predefined + regexdash : true, // if unescaped first/last dash (-) inside brackets + // should be tolerated + regexp : true, // if the . should not be allowed in regexp literals + rhino : true, // if the Rhino environment globals should be predefined + undef : true, // if variables should be declared before used + scripturl : true, // if script-targeted URLs should be tolerated + shadow : true, // if variable shadowing should be tolerated + smarttabs : true, // if smarttabs should be tolerated + // (http://www.emacswiki.org/emacs/SmartTabs) + strict : true, // require the "use strict"; pragma + sub : true, // if all forms of subscript notation are tolerated + supernew : true, // if `new function () { ... };` and `new Object;` + // should be tolerated + trailing : true, // if trailing whitespace rules apply + unsafe : true, // if "unsafe" characters should be allowed + validthis : true, // if 'this' inside a non-constructor function is valid. + // This is a function scoped option only. + withstmt : true, // if with statements should be allowed + white : true, // if strict whitespace rules apply + wsh : true // if the Windows Scripting Host environment globals + // should be predefined + }, + + // These are the JSHint options that can take any value + // (we use this object to detect invalid options) + valOptions = { + maxlen: false, + indent: false, + maxerr: false, + predef: false + }, + + + // browser contains a set of global names which are commonly provided by a + // web browser environment. + browser = { + ArrayBuffer : false, + ArrayBufferView : false, + Audio : false, + addEventListener : false, + applicationCache : false, + atob : false, + blur : false, + btoa : false, + clearInterval : false, + clearTimeout : false, + close : false, + closed : false, + DataView : false, + DOMParser : false, + defaultStatus : false, + document : false, + event : false, + FileReader : false, + Float32Array : false, + Float64Array : false, + FormData : false, + focus : false, + frames : false, + getComputedStyle : false, + HTMLElement : false, + HTMLAnchorElement : false, + HTMLBaseElement : false, + HTMLBlockquoteElement : false, + HTMLBodyElement : false, + HTMLBRElement : false, + HTMLButtonElement : false, + HTMLCanvasElement : false, + HTMLDirectoryElement : false, + HTMLDivElement : false, + HTMLDListElement : false, + HTMLFieldSetElement : false, + HTMLFontElement : false, + HTMLFormElement : false, + HTMLFrameElement : false, + HTMLFrameSetElement : false, + HTMLHeadElement : false, + HTMLHeadingElement : false, + HTMLHRElement : false, + HTMLHtmlElement : false, + HTMLIFrameElement : false, + HTMLImageElement : false, + HTMLInputElement : false, + HTMLIsIndexElement : false, + HTMLLabelElement : false, + HTMLLayerElement : false, + HTMLLegendElement : false, + HTMLLIElement : false, + HTMLLinkElement : false, + HTMLMapElement : false, + HTMLMenuElement : false, + HTMLMetaElement : false, + HTMLModElement : false, + HTMLObjectElement : false, + HTMLOListElement : false, + HTMLOptGroupElement : false, + HTMLOptionElement : false, + HTMLParagraphElement : false, + HTMLParamElement : false, + HTMLPreElement : false, + HTMLQuoteElement : false, + HTMLScriptElement : false, + HTMLSelectElement : false, + HTMLStyleElement : false, + HTMLTableCaptionElement : false, + HTMLTableCellElement : false, + HTMLTableColElement : false, + HTMLTableElement : false, + HTMLTableRowElement : false, + HTMLTableSectionElement : false, + HTMLTextAreaElement : false, + HTMLTitleElement : false, + HTMLUListElement : false, + HTMLVideoElement : false, + history : false, + Int16Array : false, + Int32Array : false, + Int8Array : false, + Image : false, + length : false, + localStorage : false, + location : false, + MessageChannel : false, + MessageEvent : false, + MessagePort : false, + moveBy : false, + moveTo : false, + name : false, + navigator : false, + onbeforeunload : true, + onblur : true, + onerror : true, + onfocus : true, + onload : true, + onresize : true, + onunload : true, + open : false, + openDatabase : false, + opener : false, + Option : false, + parent : false, + print : false, + removeEventListener : false, + resizeBy : false, + resizeTo : false, + screen : false, + scroll : false, + scrollBy : false, + scrollTo : false, + sessionStorage : false, + setInterval : false, + setTimeout : false, + SharedWorker : false, + status : false, + top : false, + Uint16Array : false, + Uint32Array : false, + Uint8Array : false, + WebSocket : false, + window : false, + Worker : false, + XMLHttpRequest : false, + XMLSerializer : false, + XPathEvaluator : false, + XPathException : false, + XPathExpression : false, + XPathNamespace : false, + XPathNSResolver : false, + XPathResult : false + }, + + couch = { + "require" : false, + respond : false, + getRow : false, + emit : false, + send : false, + start : false, + sum : false, + log : false, + exports : false, + module : false, + provides : false + }, + + devel = { + alert : false, + confirm : false, + console : false, + Debug : false, + opera : false, + prompt : false + }, + + dojo = { + dojo : false, + dijit : false, + dojox : false, + define : false, + "require" : false + }, + + escapes = { + '\b': '\\b', + '\t': '\\t', + '\n': '\\n', + '\f': '\\f', + '\r': '\\r', + '"' : '\\"', + '/' : '\\/', + '\\': '\\\\' + }, + + funct, // The current function + + functionicity = [ + 'closure', 'exception', 'global', 'label', + 'outer', 'unused', 'var' + ], + + functions, // All of the functions + + global, // The global scope + implied, // Implied globals + inblock, + indent, + jsonmode, + + jquery = { + '$' : false, + jQuery : false + }, + + lines, + lookahead, + member, + membersOnly, + + mootools = { + '$' : false, + '$$' : false, + Assets : false, + Browser : false, + Chain : false, + Class : false, + Color : false, + Cookie : false, + Core : false, + Document : false, + DomReady : false, + DOMReady : false, + Drag : false, + Element : false, + Elements : false, + Event : false, + Events : false, + Fx : false, + Group : false, + Hash : false, + HtmlTable : false, + Iframe : false, + IframeShim : false, + InputValidator : false, + instanceOf : false, + Keyboard : false, + Locale : false, + Mask : false, + MooTools : false, + Native : false, + Options : false, + OverText : false, + Request : false, + Scroller : false, + Slick : false, + Slider : false, + Sortables : false, + Spinner : false, + Swiff : false, + Tips : false, + Type : false, + typeOf : false, + URI : false, + Window : false + }, + + nexttoken, + + node = { + __filename : false, + __dirname : false, + Buffer : false, + console : false, + exports : false, + GLOBAL : false, + global : false, + module : false, + process : false, + require : false, + setTimeout : false, + clearTimeout : false, + setInterval : false, + clearInterval : false + }, + + noreach, + option, + predefined, // Global variables defined by option + prereg, + prevtoken, + + prototypejs = { + '$' : false, + '$$' : false, + '$A' : false, + '$F' : false, + '$H' : false, + '$R' : false, + '$break' : false, + '$continue' : false, + '$w' : false, + Abstract : false, + Ajax : false, + Class : false, + Enumerable : false, + Element : false, + Event : false, + Field : false, + Form : false, + Hash : false, + Insertion : false, + ObjectRange : false, + PeriodicalExecuter: false, + Position : false, + Prototype : false, + Selector : false, + Template : false, + Toggle : false, + Try : false, + Autocompleter : false, + Builder : false, + Control : false, + Draggable : false, + Draggables : false, + Droppables : false, + Effect : false, + Sortable : false, + SortableObserver : false, + Sound : false, + Scriptaculous : false + }, + + rhino = { + defineClass : false, + deserialize : false, + gc : false, + help : false, + importPackage: false, + "java" : false, + load : false, + loadClass : false, + print : false, + quit : false, + readFile : false, + readUrl : false, + runCommand : false, + seal : false, + serialize : false, + spawn : false, + sync : false, + toint32 : false, + version : false + }, + + scope, // The current scope + stack, + + // standard contains the global names that are provided by the + // ECMAScript standard. + standard = { + Array : false, + Boolean : false, + Date : false, + decodeURI : false, + decodeURIComponent : false, + encodeURI : false, + encodeURIComponent : false, + Error : false, + 'eval' : false, + EvalError : false, + Function : false, + hasOwnProperty : false, + isFinite : false, + isNaN : false, + JSON : false, + Math : false, + Number : false, + Object : false, + parseInt : false, + parseFloat : false, + RangeError : false, + ReferenceError : false, + RegExp : false, + String : false, + SyntaxError : false, + TypeError : false, + URIError : false + }, + + // widely adopted global names that are not part of ECMAScript standard + nonstandard = { + escape : false, + unescape : false + }, + + standard_member = { + E : true, + LN2 : true, + LN10 : true, + LOG2E : true, + LOG10E : true, + MAX_VALUE : true, + MIN_VALUE : true, + NEGATIVE_INFINITY : true, + PI : true, + POSITIVE_INFINITY : true, + SQRT1_2 : true, + SQRT2 : true + }, + + directive, + syntax = {}, + tab, + token, + urls, + useESNextSyntax, + warnings, + + wsh = { + ActiveXObject : true, + Enumerator : true, + GetObject : true, + ScriptEngine : true, + ScriptEngineBuildVersion : true, + ScriptEngineMajorVersion : true, + ScriptEngineMinorVersion : true, + VBArray : true, + WSH : true, + WScript : true, + XDomainRequest : true + }; + + // Regular expressions. Some of these are stupidly long. + var ax, cx, tx, nx, nxg, lx, ix, jx, ft; + (function () { + /*jshint maxlen:300 */ + + // unsafe comment or string + ax = /@cc|<\/?|script|\]\s*\]|<\s*!|</i; + + // unsafe characters that are silently deleted by one or more browsers + cx = /[\u0000-\u001f\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/; + + // token + tx = /^\s*([(){}\[.,:;'"~\?\]#@]|==?=?|\/(\*(jshint|jslint|members?|global)?|=|\/)?|\*[\/=]?|\+(?:=|\++)?|-(?:=|-+)?|%=?|&[&=]?|\|[|=]?|>>?>?=?|<([\/=!]|\!(\[|--)?|<=?)?|\^=?|\!=?=?|[a-zA-Z_$][a-zA-Z0-9_$]*|[0-9]+([xX][0-9a-fA-F]+|\.[0-9]*)?([eE][+\-]?[0-9]+)?)/; + + // characters in strings that need escapement + nx = /[\u0000-\u001f&<"\/\\\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/; + nxg = /[\u0000-\u001f&<"\/\\\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g; + + // star slash + lx = /\*\/|\/\*/; + + // identifier + ix = /^([a-zA-Z_$][a-zA-Z0-9_$]*)$/; + + // javascript url + jx = /^(?:javascript|jscript|ecmascript|vbscript|mocha|livescript)\s*:/i; + + // catches /* falls through */ comments + ft = /^\s*\/\*\s*falls\sthrough\s*\*\/\s*$/; + }()); + + function F() {} // Used by Object.create + + function is_own(object, name) { + +// The object.hasOwnProperty method fails when the property under consideration +// is named 'hasOwnProperty'. So we have to use this more convoluted form. + + return Object.prototype.hasOwnProperty.call(object, name); + } + + function checkOption(name, t) { + if (valOptions[name] === undefined && boolOptions[name] === undefined) { + warning("Bad option: '" + name + "'.", t); + } + } + +// Provide critical ES5 functions to ES3. + + if (typeof Array.isArray !== 'function') { + Array.isArray = function (o) { + return Object.prototype.toString.apply(o) === '[object Array]'; + }; + } + + if (typeof Object.create !== 'function') { + Object.create = function (o) { + F.prototype = o; + return new F(); + }; + } + + if (typeof Object.keys !== 'function') { + Object.keys = function (o) { + var a = [], k; + for (k in o) { + if (is_own(o, k)) { + a.push(k); + } + } + return a; + }; + } + +// Non standard methods + + if (typeof String.prototype.entityify !== 'function') { + String.prototype.entityify = function () { + return this + .replace(/&/g, '&') + .replace(//g, '>'); + }; + } + + if (typeof String.prototype.isAlpha !== 'function') { + String.prototype.isAlpha = function () { + return (this >= 'a' && this <= 'z\uffff') || + (this >= 'A' && this <= 'Z\uffff'); + }; + } + + if (typeof String.prototype.isDigit !== 'function') { + String.prototype.isDigit = function () { + return (this >= '0' && this <= '9'); + }; + } + + if (typeof String.prototype.supplant !== 'function') { + String.prototype.supplant = function (o) { + return this.replace(/\{([^{}]*)\}/g, function (a, b) { + var r = o[b]; + return typeof r === 'string' || typeof r === 'number' ? r : a; + }); + }; + } + + if (typeof String.prototype.name !== 'function') { + String.prototype.name = function () { + +// If the string looks like an identifier, then we can return it as is. +// If the string contains no control characters, no quote characters, and no +// backslash characters, then we can simply slap some quotes around it. +// Otherwise we must also replace the offending characters with safe +// sequences. + + if (ix.test(this)) { + return this; + } + if (nx.test(this)) { + return '"' + this.replace(nxg, function (a) { + var c = escapes[a]; + if (c) { + return c; + } + return '\\u' + ('0000' + a.charCodeAt().toString(16)).slice(-4); + }) + '"'; + } + return '"' + this + '"'; + }; + } + + + function combine(t, o) { + var n; + for (n in o) { + if (is_own(o, n)) { + t[n] = o[n]; + } + } + } + + function assume() { + if (option.couch) { + combine(predefined, couch); + } + + if (option.rhino) { + combine(predefined, rhino); + } + + if (option.prototypejs) { + combine(predefined, prototypejs); + } + + if (option.node) { + combine(predefined, node); + option.globalstrict = true; + } + + if (option.devel) { + combine(predefined, devel); + } + + if (option.dojo) { + combine(predefined, dojo); + } + + if (option.browser) { + combine(predefined, browser); + } + + if (option.nonstandard) { + combine(predefined, nonstandard); + } + + if (option.jquery) { + combine(predefined, jquery); + } + + if (option.mootools) { + combine(predefined, mootools); + } + + if (option.wsh) { + combine(predefined, wsh); + } + + if (option.esnext) { + useESNextSyntax(); + } + + if (option.globalstrict && option.strict !== false) { + option.strict = true; + } + } + + + // Produce an error warning. + function quit(message, line, chr) { + var percentage = Math.floor((line / lines.length) * 100); + + throw { + name: 'JSHintError', + line: line, + character: chr, + message: message + " (" + percentage + "% scanned).", + raw: message + }; + } + + function isundef(scope, m, t, a) { + return JSHINT.undefs.push([scope, m, t, a]); + } + + function warning(m, t, a, b, c, d) { + var ch, l, w; + t = t || nexttoken; + if (t.id === '(end)') { // `~ + t = token; + } + l = t.line || 0; + ch = t.from || 0; + w = { + id: '(error)', + raw: m, + evidence: lines[l - 1] || '', + line: l, + character: ch, + a: a, + b: b, + c: c, + d: d + }; + w.reason = m.supplant(w); + JSHINT.errors.push(w); + if (option.passfail) { + quit('Stopping. ', l, ch); + } + warnings += 1; + if (warnings >= option.maxerr) { + quit("Too many errors.", l, ch); + } + return w; + } + + function warningAt(m, l, ch, a, b, c, d) { + return warning(m, { + line: l, + from: ch + }, a, b, c, d); + } + + function error(m, t, a, b, c, d) { + var w = warning(m, t, a, b, c, d); + } + + function errorAt(m, l, ch, a, b, c, d) { + return error(m, { + line: l, + from: ch + }, a, b, c, d); + } + + + +// lexical analysis and token construction + + var lex = (function lex() { + var character, from, line, s; + +// Private lex methods + + function nextLine() { + var at, + tw; // trailing whitespace check + + if (line >= lines.length) + return false; + + character = 1; + s = lines[line]; + line += 1; + + // If smarttabs option is used check for spaces followed by tabs only. + // Otherwise check for any occurence of mixed tabs and spaces. + if (option.smarttabs) + at = s.search(/ \t/); + else + at = s.search(/ \t|\t /); + + if (at >= 0) + warningAt("Mixed spaces and tabs.", line, at + 1); + + s = s.replace(/\t/g, tab); + + if (!option.unsafe) { + at = s.search(cx); + + if (at >= 0) + warningAt("Unsafe character.", line, at); + } + + if (option.maxlen && option.maxlen < s.length) + warningAt("Line too long.", line, s.length); + + // Check for trailing whitespaces + tw = option.trailing && s.match(/^(.*?)\s+$/); + if (tw && !/^\s+$/.test(s)) { + warningAt("Trailing whitespace.", line, tw[1].length + 1); + } + return true; + } + +// Produce a token object. The token inherits from a syntax symbol. + + function it(type, value) { + var i, t; + if (type === '(color)' || type === '(range)') { + t = {type: type}; + } else if (type === '(punctuator)' || + (type === '(identifier)' && is_own(syntax, value))) { + t = syntax[value] || syntax['(error)']; + } else { + t = syntax[type]; + } + t = Object.create(t); + if (type === '(string)' || type === '(range)') { + if (!option.scripturl && jx.test(value)) { + warningAt("Script URL.", line, from); + } + } + if (type === '(identifier)') { + t.identifier = true; + if (value === '__proto__' && !option.proto) { + warningAt("The '{a}' property is deprecated.", + line, from, value); + } else if (value === '__iterator__' && !option.iterator) { + warningAt("'{a}' is only available in JavaScript 1.7.", + line, from, value); + } else if (option.nomen && (value.charAt(0) === '_' || + value.charAt(value.length - 1) === '_')) { + if (!option.node || token.id === '.' || + (value !== '__dirname' && value !== '__filename')) { + warningAt("Unexpected {a} in '{b}'.", line, from, "dangling '_'", value); + } + } + } + t.value = value; + t.line = line; + t.character = character; + t.from = from; + i = t.id; + if (i !== '(endline)') { + prereg = i && + (('(,=:[!&|?{};'.indexOf(i.charAt(i.length - 1)) >= 0) || + i === 'return' || + i === 'case'); + } + return t; + } + + // Public lex methods + return { + init: function (source) { + if (typeof source === 'string') { + lines = source + .replace(/\r\n/g, '\n') + .replace(/\r/g, '\n') + .split('\n'); + } else { + lines = source; + } + + // If the first line is a shebang (#!), make it a blank and move on. + // Shebangs are used by Node scripts. + if (lines[0] && lines[0].substr(0, 2) === '#!') + lines[0] = ''; + + line = 0; + nextLine(); + from = 1; + }, + + range: function (begin, end) { + var c, value = ''; + from = character; + if (s.charAt(0) !== begin) { + errorAt("Expected '{a}' and instead saw '{b}'.", + line, character, begin, s.charAt(0)); + } + for (;;) { + s = s.slice(1); + character += 1; + c = s.charAt(0); + switch (c) { + case '': + errorAt("Missing '{a}'.", line, character, c); + break; + case end: + s = s.slice(1); + character += 1; + return it('(range)', value); + case '\\': + warningAt("Unexpected '{a}'.", line, character, c); + } + value += c; + } + + }, + + + // token -- this is called by advance to get the next token + token: function () { + var b, c, captures, d, depth, high, i, l, low, q, t, isLiteral, isInRange, n; + + function match(x) { + var r = x.exec(s), r1; + if (r) { + l = r[0].length; + r1 = r[1]; + c = r1.charAt(0); + s = s.substr(l); + from = character + l - r1.length; + character += l; + return r1; + } + } + + function string(x) { + var c, j, r = '', allowNewLine = false; + + if (jsonmode && x !== '"') { + warningAt("Strings must use doublequote.", + line, character); + } + + function esc(n) { + var i = parseInt(s.substr(j + 1, n), 16); + j += n; + if (i >= 32 && i <= 126 && + i !== 34 && i !== 92 && i !== 39) { + warningAt("Unnecessary escapement.", line, character); + } + character += n; + c = String.fromCharCode(i); + } + j = 0; +unclosedString: for (;;) { + while (j >= s.length) { + j = 0; + + var cl = line, cf = from; + if (!nextLine()) { + errorAt("Unclosed string.", cl, cf); + break unclosedString; + } + + if (allowNewLine) { + allowNewLine = false; + } else { + warningAt("Unclosed string.", cl, cf); + } + } + c = s.charAt(j); + if (c === x) { + character += 1; + s = s.substr(j + 1); + return it('(string)', r, x); + } + if (c < ' ') { + if (c === '\n' || c === '\r') { + break; + } + warningAt("Control character in string: {a}.", + line, character + j, s.slice(0, j)); + } else if (c === '\\') { + j += 1; + character += 1; + c = s.charAt(j); + n = s.charAt(j + 1); + switch (c) { + case '\\': + case '"': + case '/': + break; + case '\'': + if (jsonmode) { + warningAt("Avoid \\'.", line, character); + } + break; + case 'b': + c = '\b'; + break; + case 'f': + c = '\f'; + break; + case 'n': + c = '\n'; + break; + case 'r': + c = '\r'; + break; + case 't': + c = '\t'; + break; + case '0': + c = '\0'; + // Octal literals fail in strict mode + // check if the number is between 00 and 07 + // where 'n' is the token next to 'c' + if (n >= 0 && n <= 7 && directive["use strict"]) { + warningAt( + "Octal literals are not allowed in strict mode.", + line, character); + } + break; + case 'u': + esc(4); + break; + case 'v': + if (jsonmode) { + warningAt("Avoid \\v.", line, character); + } + c = '\v'; + break; + case 'x': + if (jsonmode) { + warningAt("Avoid \\x-.", line, character); + } + esc(2); + break; + case '': + // last character is escape character + // always allow new line if escaped, but show + // warning if option is not set + allowNewLine = true; + if (option.multistr) { + if (jsonmode) { + warningAt("Avoid EOL escapement.", line, character); + } + c = ''; + character -= 1; + break; + } + warningAt("Bad escapement of EOL. Use option multistr if needed.", + line, character); + break; + default: + warningAt("Bad escapement.", line, character); + } + } + r += c; + character += 1; + j += 1; + } + } + + for (;;) { + if (!s) { + return it(nextLine() ? '(endline)' : '(end)', ''); + } + t = match(tx); + if (!t) { + t = ''; + c = ''; + while (s && s < '!') { + s = s.substr(1); + } + if (s) { + errorAt("Unexpected '{a}'.", line, character, s.substr(0, 1)); + s = ''; + } + } else { + + // identifier + + if (c.isAlpha() || c === '_' || c === '$') { + return it('(identifier)', t); + } + + // number + + if (c.isDigit()) { + if (!isFinite(Number(t))) { + warningAt("Bad number '{a}'.", + line, character, t); + } + if (s.substr(0, 1).isAlpha()) { + warningAt("Missing space after '{a}'.", + line, character, t); + } + if (c === '0') { + d = t.substr(1, 1); + if (d.isDigit()) { + if (token.id !== '.') { + warningAt("Don't use extra leading zeros '{a}'.", + line, character, t); + } + } else if (jsonmode && (d === 'x' || d === 'X')) { + warningAt("Avoid 0x-. '{a}'.", + line, character, t); + } + } + if (t.substr(t.length - 1) === '.') { + warningAt( +"A trailing decimal point can be confused with a dot '{a}'.", line, character, t); + } + return it('(number)', t); + } + switch (t) { + + // string + + case '"': + case "'": + return string(t); + + // // comment + + case '//': + s = ''; + token.comment = true; + break; + + // /* comment + + case '/*': + for (;;) { + i = s.search(lx); + if (i >= 0) { + break; + } + if (!nextLine()) { + errorAt("Unclosed comment.", line, character); + } + } + character += i + 2; + if (s.substr(i, 1) === '/') { + errorAt("Nested comment.", line, character); + } + s = s.substr(i + 2); + token.comment = true; + break; + + // /*members /*jshint /*global + + case '/*members': + case '/*member': + case '/*jshint': + case '/*jslint': + case '/*global': + case '*/': + return { + value: t, + type: 'special', + line: line, + character: character, + from: from + }; + + case '': + break; + // / + case '/': + if (token.id === '/=') { + errorAt("A regular expression literal can be confused with '/='.", + line, from); + } + if (prereg) { + depth = 0; + captures = 0; + l = 0; + for (;;) { + b = true; + c = s.charAt(l); + l += 1; + switch (c) { + case '': + errorAt("Unclosed regular expression.", line, from); + return quit('Stopping.', line, from); + case '/': + if (depth > 0) { + warningAt("{a} unterminated regular expression " + + "group(s).", line, from + l, depth); + } + c = s.substr(0, l - 1); + q = { + g: true, + i: true, + m: true + }; + while (q[s.charAt(l)] === true) { + q[s.charAt(l)] = false; + l += 1; + } + character += l; + s = s.substr(l); + q = s.charAt(0); + if (q === '/' || q === '*') { + errorAt("Confusing regular expression.", + line, from); + } + return it('(regexp)', c); + case '\\': + c = s.charAt(l); + if (c < ' ') { + warningAt( +"Unexpected control character in regular expression.", line, from + l); + } else if (c === '<') { + warningAt( +"Unexpected escaped character '{a}' in regular expression.", line, from + l, c); + } + l += 1; + break; + case '(': + depth += 1; + b = false; + if (s.charAt(l) === '?') { + l += 1; + switch (s.charAt(l)) { + case ':': + case '=': + case '!': + l += 1; + break; + default: + warningAt( +"Expected '{a}' and instead saw '{b}'.", line, from + l, ':', s.charAt(l)); + } + } else { + captures += 1; + } + break; + case '|': + b = false; + break; + case ')': + if (depth === 0) { + warningAt("Unescaped '{a}'.", + line, from + l, ')'); + } else { + depth -= 1; + } + break; + case ' ': + q = 1; + while (s.charAt(l) === ' ') { + l += 1; + q += 1; + } + if (q > 1) { + warningAt( +"Spaces are hard to count. Use {{a}}.", line, from + l, q); + } + break; + case '[': + c = s.charAt(l); + if (c === '^') { + l += 1; + if (option.regexp) { + warningAt("Insecure '{a}'.", + line, from + l, c); + } else if (s.charAt(l) === ']') { + errorAt("Unescaped '{a}'.", + line, from + l, '^'); + } + } + if (c === ']') { + warningAt("Empty class.", line, + from + l - 1); + } + isLiteral = false; + isInRange = false; +klass: do { + c = s.charAt(l); + l += 1; + switch (c) { + case '[': + case '^': + warningAt("Unescaped '{a}'.", + line, from + l, c); + if (isInRange) { + isInRange = false; + } else { + isLiteral = true; + } + break; + case '-': + if (isLiteral && !isInRange) { + isLiteral = false; + isInRange = true; + } else if (isInRange) { + isInRange = false; + } else if (s.charAt(l) === ']') { + isInRange = true; + } else { + if (option.regexdash !== (l === 2 || (l === 3 && + s.charAt(1) === '^'))) { + warningAt("Unescaped '{a}'.", + line, from + l - 1, '-'); + } + isLiteral = true; + } + break; + case ']': + if (isInRange && !option.regexdash) { + warningAt("Unescaped '{a}'.", + line, from + l - 1, '-'); + } + break klass; + case '\\': + c = s.charAt(l); + if (c < ' ') { + warningAt( +"Unexpected control character in regular expression.", line, from + l); + } else if (c === '<') { + warningAt( +"Unexpected escaped character '{a}' in regular expression.", line, from + l, c); + } + l += 1; + + // \w, \s and \d are never part of a character range + if (/[wsd]/i.test(c)) { + if (isInRange) { + warningAt("Unescaped '{a}'.", + line, from + l, '-'); + isInRange = false; + } + isLiteral = false; + } else if (isInRange) { + isInRange = false; + } else { + isLiteral = true; + } + break; + case '/': + warningAt("Unescaped '{a}'.", + line, from + l - 1, '/'); + + if (isInRange) { + isInRange = false; + } else { + isLiteral = true; + } + break; + case '<': + if (isInRange) { + isInRange = false; + } else { + isLiteral = true; + } + break; + default: + if (isInRange) { + isInRange = false; + } else { + isLiteral = true; + } + } + } while (c); + break; + case '.': + if (option.regexp) { + warningAt("Insecure '{a}'.", line, + from + l, c); + } + break; + case ']': + case '?': + case '{': + case '}': + case '+': + case '*': + warningAt("Unescaped '{a}'.", line, + from + l, c); + } + if (b) { + switch (s.charAt(l)) { + case '?': + case '+': + case '*': + l += 1; + if (s.charAt(l) === '?') { + l += 1; + } + break; + case '{': + l += 1; + c = s.charAt(l); + if (c < '0' || c > '9') { + warningAt( +"Expected a number and instead saw '{a}'.", line, from + l, c); + } + l += 1; + low = +c; + for (;;) { + c = s.charAt(l); + if (c < '0' || c > '9') { + break; + } + l += 1; + low = +c + (low * 10); + } + high = low; + if (c === ',') { + l += 1; + high = Infinity; + c = s.charAt(l); + if (c >= '0' && c <= '9') { + l += 1; + high = +c; + for (;;) { + c = s.charAt(l); + if (c < '0' || c > '9') { + break; + } + l += 1; + high = +c + (high * 10); + } + } + } + if (s.charAt(l) !== '}') { + warningAt( +"Expected '{a}' and instead saw '{b}'.", line, from + l, '}', c); + } else { + l += 1; + } + if (s.charAt(l) === '?') { + l += 1; + } + if (low > high) { + warningAt( +"'{a}' should not be greater than '{b}'.", line, from + l, low, high); + } + } + } + } + c = s.substr(0, l - 1); + character += l; + s = s.substr(l); + return it('(regexp)', c); + } + return it('(punctuator)', t); + + // punctuator + + case '#': + return it('(punctuator)', t); + default: + return it('(punctuator)', t); + } + } + } + } + }; + }()); + + + function addlabel(t, type) { + + if (t === 'hasOwnProperty') { + warning("'hasOwnProperty' is a really bad name."); + } + +// Define t in the current function in the current scope. + if (is_own(funct, t) && !funct['(global)']) { + if (funct[t] === true) { + if (option.latedef) + warning("'{a}' was used before it was defined.", nexttoken, t); + } else { + if (!option.shadow && type !== "exception") + warning("'{a}' is already defined.", nexttoken, t); + } + } + + funct[t] = type; + if (funct['(global)']) { + global[t] = funct; + if (is_own(implied, t)) { + if (option.latedef) + warning("'{a}' was used before it was defined.", nexttoken, t); + delete implied[t]; + } + } else { + scope[t] = funct; + } + } + + + function doOption() { + var b, obj, filter, o = nexttoken.value, t, v; + + switch (o) { + case '*/': + error("Unbegun comment."); + break; + case '/*members': + case '/*member': + o = '/*members'; + if (!membersOnly) { + membersOnly = {}; + } + obj = membersOnly; + break; + case '/*jshint': + case '/*jslint': + obj = option; + filter = boolOptions; + break; + case '/*global': + obj = predefined; + break; + default: + error("What?"); + } + + t = lex.token(); +loop: for (;;) { + for (;;) { + if (t.type === 'special' && t.value === '*/') { + break loop; + } + if (t.id !== '(endline)' && t.id !== ',') { + break; + } + t = lex.token(); + } + if (t.type !== '(string)' && t.type !== '(identifier)' && + o !== '/*members') { + error("Bad option.", t); + } + + v = lex.token(); + if (v.id === ':') { + v = lex.token(); + + if (obj === membersOnly) { + error("Expected '{a}' and instead saw '{b}'.", + t, '*/', ':'); + } + + if (o === '/*jshint') { + checkOption(t.value, t); + } + + if (t.value === 'indent' && (o === '/*jshint' || o === '/*jslint')) { + b = +v.value; + if (typeof b !== 'number' || !isFinite(b) || b <= 0 || + Math.floor(b) !== b) { + error("Expected a small integer and instead saw '{a}'.", + v, v.value); + } + obj.white = true; + obj.indent = b; + } else if (t.value === 'maxerr' && (o === '/*jshint' || o === '/*jslint')) { + b = +v.value; + if (typeof b !== 'number' || !isFinite(b) || b <= 0 || + Math.floor(b) !== b) { + error("Expected a small integer and instead saw '{a}'.", + v, v.value); + } + obj.maxerr = b; + } else if (t.value === 'maxlen' && (o === '/*jshint' || o === '/*jslint')) { + b = +v.value; + if (typeof b !== 'number' || !isFinite(b) || b <= 0 || + Math.floor(b) !== b) { + error("Expected a small integer and instead saw '{a}'.", + v, v.value); + } + obj.maxlen = b; + } else if (t.value === 'validthis') { + if (funct['(global)']) { + error("Option 'validthis' can't be used in a global scope."); + } else { + if (v.value === 'true' || v.value === 'false') + obj[t.value] = v.value === 'true'; + else + error("Bad option value.", v); + } + } else if (v.value === 'true') { + obj[t.value] = true; + } else if (v.value === 'false') { + obj[t.value] = false; + } else { + error("Bad option value.", v); + } + t = lex.token(); + } else { + if (o === '/*jshint' || o === '/*jslint') { + error("Missing option value.", t); + } + obj[t.value] = false; + t = v; + } + } + if (filter) { + assume(); + } + } + + +// We need a peek function. If it has an argument, it peeks that much farther +// ahead. It is used to distinguish +// for ( var i in ... +// from +// for ( var i = ... + + function peek(p) { + var i = p || 0, j = 0, t; + + while (j <= i) { + t = lookahead[j]; + if (!t) { + t = lookahead[j] = lex.token(); + } + j += 1; + } + return t; + } + + + +// Produce the next token. It looks for programming errors. + + function advance(id, t) { + switch (token.id) { + case '(number)': + if (nexttoken.id === '.') { + warning("A dot following a number can be confused with a decimal point.", token); + } + break; + case '-': + if (nexttoken.id === '-' || nexttoken.id === '--') { + warning("Confusing minusses."); + } + break; + case '+': + if (nexttoken.id === '+' || nexttoken.id === '++') { + warning("Confusing plusses."); + } + break; + } + + if (token.type === '(string)' || token.identifier) { + anonname = token.value; + } + + if (id && nexttoken.id !== id) { + if (t) { + if (nexttoken.id === '(end)') { + warning("Unmatched '{a}'.", t, t.id); + } else { + warning("Expected '{a}' to match '{b}' from line {c} and instead saw '{d}'.", + nexttoken, id, t.id, t.line, nexttoken.value); + } + } else if (nexttoken.type !== '(identifier)' || + nexttoken.value !== id) { + warning("Expected '{a}' and instead saw '{b}'.", + nexttoken, id, nexttoken.value); + } + } + + prevtoken = token; + token = nexttoken; + for (;;) { + nexttoken = lookahead.shift() || lex.token(); + if (nexttoken.id === '(end)' || nexttoken.id === '(error)') { + return; + } + if (nexttoken.type === 'special') { + doOption(); + } else { + if (nexttoken.id !== '(endline)') { + break; + } + } + } + } + + +// This is the heart of JSHINT, the Pratt parser. In addition to parsing, it +// is looking for ad hoc lint patterns. We add .fud to Pratt's model, which is +// like .nud except that it is only used on the first token of a statement. +// Having .fud makes it much easier to define statement-oriented languages like +// JavaScript. I retained Pratt's nomenclature. + +// .nud Null denotation +// .fud First null denotation +// .led Left denotation +// lbp Left binding power +// rbp Right binding power + +// They are elements of the parsing method called Top Down Operator Precedence. + + function expression(rbp, initial) { + var left, isArray = false, isObject = false; + + if (nexttoken.id === '(end)') + error("Unexpected early end of program.", token); + + advance(); + if (initial) { + anonname = 'anonymous'; + funct['(verb)'] = token.value; + } + if (initial === true && token.fud) { + left = token.fud(); + } else { + if (token.nud) { + left = token.nud(); + } else { + if (nexttoken.type === '(number)' && token.id === '.') { + warning("A leading decimal point can be confused with a dot: '.{a}'.", + token, nexttoken.value); + advance(); + return token; + } else { + error("Expected an identifier and instead saw '{a}'.", + token, token.id); + } + } + while (rbp < nexttoken.lbp) { + isArray = token.value === 'Array'; + isObject = token.value === 'Object'; + advance(); + if (isArray && token.id === '(' && nexttoken.id === ')') + warning("Use the array literal notation [].", token); + if (isObject && token.id === '(' && nexttoken.id === ')') + warning("Use the object literal notation {}.", token); + if (token.led) { + left = token.led(left); + } else { + error("Expected an operator and instead saw '{a}'.", + token, token.id); + } + } + } + return left; + } + + +// Functions for conformance of style. + + function adjacent(left, right) { + left = left || token; + right = right || nexttoken; + if (option.white) { + if (left.character !== right.from && left.line === right.line) { + left.from += (left.character - left.from); + warning("Unexpected space after '{a}'.", left, left.value); + } + } + } + + function nobreak(left, right) { + left = left || token; + right = right || nexttoken; + if (option.white && (left.character !== right.from || left.line !== right.line)) { + warning("Unexpected space before '{a}'.", right, right.value); + } + } + + function nospace(left, right) { + left = left || token; + right = right || nexttoken; + if (option.white && !left.comment) { + if (left.line === right.line) { + adjacent(left, right); + } + } + } + + function nonadjacent(left, right) { + if (option.white) { + left = left || token; + right = right || nexttoken; + if (left.line === right.line && left.character === right.from) { + left.from += (left.character - left.from); + warning("Missing space after '{a}'.", + left, left.value); + } + } + } + + function nobreaknonadjacent(left, right) { + left = left || token; + right = right || nexttoken; + if (!option.laxbreak && left.line !== right.line) { + warning("Bad line breaking before '{a}'.", right, right.id); + } else if (option.white) { + left = left || token; + right = right || nexttoken; + if (left.character === right.from) { + left.from += (left.character - left.from); + warning("Missing space after '{a}'.", + left, left.value); + } + } + } + + function indentation(bias) { + var i; + if (option.white && nexttoken.id !== '(end)') { + i = indent + (bias || 0); + if (nexttoken.from !== i) { + warning( +"Expected '{a}' to have an indentation at {b} instead at {c}.", + nexttoken, nexttoken.value, i, nexttoken.from); + } + } + } + + function nolinebreak(t) { + t = t || token; + if (t.line !== nexttoken.line) { + warning("Line breaking error '{a}'.", t, t.value); + } + } + + + function comma() { + if (token.line !== nexttoken.line) { + if (!option.laxcomma) { + if (comma.first) { + warning("Comma warnings can be turned off with 'laxcomma'"); + comma.first = false; + } + warning("Bad line breaking before '{a}'.", token, nexttoken.id); + } + } else if (!token.comment && token.character !== nexttoken.from && option.white) { + token.from += (token.character - token.from); + warning("Unexpected space after '{a}'.", token, token.value); + } + advance(','); + nonadjacent(token, nexttoken); + } + + +// Functional constructors for making the symbols that will be inherited by +// tokens. + + function symbol(s, p) { + var x = syntax[s]; + if (!x || typeof x !== 'object') { + syntax[s] = x = { + id: s, + lbp: p, + value: s + }; + } + return x; + } + + + function delim(s) { + return symbol(s, 0); + } + + + function stmt(s, f) { + var x = delim(s); + x.identifier = x.reserved = true; + x.fud = f; + return x; + } + + + function blockstmt(s, f) { + var x = stmt(s, f); + x.block = true; + return x; + } + + + function reserveName(x) { + var c = x.id.charAt(0); + if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) { + x.identifier = x.reserved = true; + } + return x; + } + + + function prefix(s, f) { + var x = symbol(s, 150); + reserveName(x); + x.nud = (typeof f === 'function') ? f : function () { + this.right = expression(150); + this.arity = 'unary'; + if (this.id === '++' || this.id === '--') { + if (option.plusplus) { + warning("Unexpected use of '{a}'.", this, this.id); + } else if ((!this.right.identifier || this.right.reserved) && + this.right.id !== '.' && this.right.id !== '[') { + warning("Bad operand.", this); + } + } + return this; + }; + return x; + } + + + function type(s, f) { + var x = delim(s); + x.type = s; + x.nud = f; + return x; + } + + + function reserve(s, f) { + var x = type(s, f); + x.identifier = x.reserved = true; + return x; + } + + + function reservevar(s, v) { + return reserve(s, function () { + if (typeof v === 'function') { + v(this); + } + return this; + }); + } + + + function infix(s, f, p, w) { + var x = symbol(s, p); + reserveName(x); + x.led = function (left) { + if (!w) { + nobreaknonadjacent(prevtoken, token); + nonadjacent(token, nexttoken); + } + if (s === "in" && left.id === "!") { + warning("Confusing use of '{a}'.", left, '!'); + } + if (typeof f === 'function') { + return f(left, this); + } else { + this.left = left; + this.right = expression(p); + return this; + } + }; + return x; + } + + + function relation(s, f) { + var x = symbol(s, 100); + x.led = function (left) { + nobreaknonadjacent(prevtoken, token); + nonadjacent(token, nexttoken); + var right = expression(100); + if ((left && left.id === 'NaN') || (right && right.id === 'NaN')) { + warning("Use the isNaN function to compare with NaN.", this); + } else if (f) { + f.apply(this, [left, right]); + } + if (left.id === '!') { + warning("Confusing use of '{a}'.", left, '!'); + } + if (right.id === '!') { + warning("Confusing use of '{a}'.", right, '!'); + } + this.left = left; + this.right = right; + return this; + }; + return x; + } + + + function isPoorRelation(node) { + return node && + ((node.type === '(number)' && +node.value === 0) || + (node.type === '(string)' && node.value === '') || + (node.type === 'null' && !option.eqnull) || + node.type === 'true' || + node.type === 'false' || + node.type === 'undefined'); + } + + + function assignop(s, f) { + symbol(s, 20).exps = true; + return infix(s, function (left, that) { + var l; + that.left = left; + if (predefined[left.value] === false && + scope[left.value]['(global)'] === true) { + warning("Read only.", left); + } else if (left['function']) { + warning("'{a}' is a function.", left, left.value); + } + if (left) { + if (option.esnext && funct[left.value] === 'const') { + warning("Attempting to override '{a}' which is a constant", left, left.value); + } + if (left.id === '.' || left.id === '[') { + if (!left.left || left.left.value === 'arguments') { + warning('Bad assignment.', that); + } + that.right = expression(19); + return that; + } else if (left.identifier && !left.reserved) { + if (funct[left.value] === 'exception') { + warning("Do not assign to the exception parameter.", left); + } + that.right = expression(19); + return that; + } + if (left === syntax['function']) { + warning( +"Expected an identifier in an assignment and instead saw a function invocation.", + token); + } + } + error("Bad assignment.", that); + }, 20); + } + + + function bitwise(s, f, p) { + var x = symbol(s, p); + reserveName(x); + x.led = (typeof f === 'function') ? f : function (left) { + if (option.bitwise) { + warning("Unexpected use of '{a}'.", this, this.id); + } + this.left = left; + this.right = expression(p); + return this; + }; + return x; + } + + + function bitwiseassignop(s) { + symbol(s, 20).exps = true; + return infix(s, function (left, that) { + if (option.bitwise) { + warning("Unexpected use of '{a}'.", that, that.id); + } + nonadjacent(prevtoken, token); + nonadjacent(token, nexttoken); + if (left) { + if (left.id === '.' || left.id === '[' || + (left.identifier && !left.reserved)) { + expression(19); + return that; + } + if (left === syntax['function']) { + warning( +"Expected an identifier in an assignment, and instead saw a function invocation.", + token); + } + return that; + } + error("Bad assignment.", that); + }, 20); + } + + + function suffix(s, f) { + var x = symbol(s, 150); + x.led = function (left) { + if (option.plusplus) { + warning("Unexpected use of '{a}'.", this, this.id); + } else if ((!left.identifier || left.reserved) && + left.id !== '.' && left.id !== '[') { + warning("Bad operand.", this); + } + this.left = left; + return this; + }; + return x; + } + + + // fnparam means that this identifier is being defined as a function + // argument (see identifier()) + function optionalidentifier(fnparam) { + if (nexttoken.identifier) { + advance(); + if (token.reserved && !option.es5) { + // `undefined` as a function param is a common pattern to protect + // against the case when somebody does `undefined = true` and + // help with minification. More info: https://gist.github.com/315916 + if (!fnparam || token.value !== 'undefined') { + warning("Expected an identifier and instead saw '{a}' (a reserved word).", + token, token.id); + } + } + return token.value; + } + } + + // fnparam means that this identifier is being defined as a function + // argument + function identifier(fnparam) { + var i = optionalidentifier(fnparam); + if (i) { + return i; + } + if (token.id === 'function' && nexttoken.id === '(') { + warning("Missing name in function declaration."); + } else { + error("Expected an identifier and instead saw '{a}'.", + nexttoken, nexttoken.value); + } + } + + + function reachable(s) { + var i = 0, t; + if (nexttoken.id !== ';' || noreach) { + return; + } + for (;;) { + t = peek(i); + if (t.reach) { + return; + } + if (t.id !== '(endline)') { + if (t.id === 'function') { + if (!option.latedef) { + break; + } + warning( +"Inner functions should be listed at the top of the outer function.", t); + break; + } + warning("Unreachable '{a}' after '{b}'.", t, t.value, s); + break; + } + i += 1; + } + } + + + function statement(noindent) { + var i = indent, r, s = scope, t = nexttoken; + + if (t.id === ";") { + advance(";"); + return; + } + +// Is this a labelled statement? + + if (t.identifier && !t.reserved && peek().id === ':') { + advance(); + advance(':'); + scope = Object.create(s); + addlabel(t.value, 'label'); + if (!nexttoken.labelled) { + warning("Label '{a}' on {b} statement.", + nexttoken, t.value, nexttoken.value); + } + if (jx.test(t.value + ':')) { + warning("Label '{a}' looks like a javascript url.", + t, t.value); + } + nexttoken.label = t.value; + t = nexttoken; + } + +// Parse the statement. + + if (!noindent) { + indentation(); + } + r = expression(0, true); + + // Look for the final semicolon. + if (!t.block) { + if (!option.expr && (!r || !r.exps)) { + warning("Expected an assignment or function call and instead saw an expression.", + token); + } else if (option.nonew && r.id === '(' && r.left.id === 'new') { + warning("Do not use 'new' for side effects."); + } + + if (nexttoken.id === ',') { + return comma(); + } + + if (nexttoken.id !== ';') { + if (!option.asi) { + // If this is the last statement in a block that ends on + // the same line *and* option lastsemic is on, ignore the warning. + // Otherwise, complain about missing semicolon. + if (!option.lastsemic || nexttoken.id !== '}' || + nexttoken.line !== token.line) { + warningAt("Missing semicolon.", token.line, token.character); + } + } + } else { + adjacent(token, nexttoken); + advance(';'); + nonadjacent(token, nexttoken); + } + } + +// Restore the indentation. + + indent = i; + scope = s; + return r; + } + + + function statements(startLine) { + var a = [], f, p; + + while (!nexttoken.reach && nexttoken.id !== '(end)') { + if (nexttoken.id === ';') { + p = peek(); + if (!p || p.id !== "(") { + warning("Unnecessary semicolon."); + } + advance(';'); + } else { + a.push(statement(startLine === nexttoken.line)); + } + } + return a; + } + + + /* + * read all directives + * recognizes a simple form of asi, but always + * warns, if it is used + */ + function directives() { + var i, p, pn; + + for (;;) { + if (nexttoken.id === "(string)") { + p = peek(0); + if (p.id === "(endline)") { + i = 1; + do { + pn = peek(i); + i = i + 1; + } while (pn.id === "(endline)"); + + if (pn.id !== ";") { + if (pn.id !== "(string)" && pn.id !== "(number)" && + pn.id !== "(regexp)" && pn.identifier !== true && + pn.id !== "}") { + break; + } + warning("Missing semicolon.", nexttoken); + } else { + p = pn; + } + } else if (p.id === "}") { + // directive with no other statements, warn about missing semicolon + warning("Missing semicolon.", p); + } else if (p.id !== ";") { + break; + } + + indentation(); + advance(); + if (directive[token.value]) { + warning("Unnecessary directive \"{a}\".", token, token.value); + } + + if (token.value === "use strict") { + option.newcap = true; + option.undef = true; + } + + // there's no directive negation, so always set to true + directive[token.value] = true; + + if (p.id === ";") { + advance(";"); + } + continue; + } + break; + } + } + + + /* + * Parses a single block. A block is a sequence of statements wrapped in + * braces. + * + * ordinary - true for everything but function bodies and try blocks. + * stmt - true if block can be a single statement (e.g. in if/for/while). + * isfunc - true if block is a function body + */ + function block(ordinary, stmt, isfunc) { + var a, + b = inblock, + old_indent = indent, + m, + s = scope, + t, + line, + d; + + inblock = ordinary; + if (!ordinary || !option.funcscope) scope = Object.create(scope); + nonadjacent(token, nexttoken); + t = nexttoken; + + if (nexttoken.id === '{') { + advance('{'); + line = token.line; + if (nexttoken.id !== '}') { + indent += option.indent; + while (!ordinary && nexttoken.from > indent) { + indent += option.indent; + } + + if (isfunc) { + m = {}; + for (d in directive) { + if (is_own(directive, d)) { + m[d] = directive[d]; + } + } + directives(); + + if (option.strict && funct['(context)']['(global)']) { + if (!m["use strict"] && !directive["use strict"]) { + warning("Missing \"use strict\" statement."); + } + } + } + + a = statements(line); + + if (isfunc) { + directive = m; + } + + indent -= option.indent; + if (line !== nexttoken.line) { + indentation(); + } + } else if (line !== nexttoken.line) { + indentation(); + } + advance('}', t); + indent = old_indent; + } else if (!ordinary) { + error("Expected '{a}' and instead saw '{b}'.", + nexttoken, '{', nexttoken.value); + } else { + if (!stmt || option.curly) + warning("Expected '{a}' and instead saw '{b}'.", + nexttoken, '{', nexttoken.value); + + noreach = true; + indent += option.indent; + // test indentation only if statement is in new line + a = [statement(nexttoken.line === token.line)]; + indent -= option.indent; + noreach = false; + } + funct['(verb)'] = null; + if (!ordinary || !option.funcscope) scope = s; + inblock = b; + if (ordinary && option.noempty && (!a || a.length === 0)) { + warning("Empty block."); + } + return a; + } + + + function countMember(m) { + if (membersOnly && typeof membersOnly[m] !== 'boolean') { + warning("Unexpected /*member '{a}'.", token, m); + } + if (typeof member[m] === 'number') { + member[m] += 1; + } else { + member[m] = 1; + } + } + + + function note_implied(token) { + var name = token.value, line = token.line, a = implied[name]; + if (typeof a === 'function') { + a = false; + } + + if (!a) { + a = [line]; + implied[name] = a; + } else if (a[a.length - 1] !== line) { + a.push(line); + } + } + + + // Build the syntax table by declaring the syntactic elements of the language. + + type('(number)', function () { + return this; + }); + + type('(string)', function () { + return this; + }); + + syntax['(identifier)'] = { + type: '(identifier)', + lbp: 0, + identifier: true, + nud: function () { + var v = this.value, + s = scope[v], + f; + + if (typeof s === 'function') { + // Protection against accidental inheritance. + s = undefined; + } else if (typeof s === 'boolean') { + f = funct; + funct = functions[0]; + addlabel(v, 'var'); + s = funct; + funct = f; + } + + // The name is in scope and defined in the current function. + if (funct === s) { + // Change 'unused' to 'var', and reject labels. + switch (funct[v]) { + case 'unused': + funct[v] = 'var'; + break; + case 'unction': + funct[v] = 'function'; + this['function'] = true; + break; + case 'function': + this['function'] = true; + break; + case 'label': + warning("'{a}' is a statement label.", token, v); + break; + } + } else if (funct['(global)']) { + // The name is not defined in the function. If we are in the global + // scope, then we have an undefined variable. + // + // Operators typeof and delete do not raise runtime errors even if + // the base object of a reference is null so no need to display warning + // if we're inside of typeof or delete. + + if (option.undef && typeof predefined[v] !== 'boolean') { + // Attempting to subscript a null reference will throw an + // error, even within the typeof and delete operators + if (!(anonname === 'typeof' || anonname === 'delete') || + (nexttoken && (nexttoken.value === '.' || nexttoken.value === '['))) { + + isundef(funct, "'{a}' is not defined.", token, v); + } + } + note_implied(token); + } else { + // If the name is already defined in the current + // function, but not as outer, then there is a scope error. + + switch (funct[v]) { + case 'closure': + case 'function': + case 'var': + case 'unused': + warning("'{a}' used out of scope.", token, v); + break; + case 'label': + warning("'{a}' is a statement label.", token, v); + break; + case 'outer': + case 'global': + break; + default: + // If the name is defined in an outer function, make an outer entry, + // and if it was unused, make it var. + if (s === true) { + funct[v] = true; + } else if (s === null) { + warning("'{a}' is not allowed.", token, v); + note_implied(token); + } else if (typeof s !== 'object') { + // Operators typeof and delete do not raise runtime errors even + // if the base object of a reference is null so no need to + // display warning if we're inside of typeof or delete. + if (option.undef) { + // Attempting to subscript a null reference will throw an + // error, even within the typeof and delete operators + if (!(anonname === 'typeof' || anonname === 'delete') || + (nexttoken && + (nexttoken.value === '.' || nexttoken.value === '['))) { + + isundef(funct, "'{a}' is not defined.", token, v); + } + } + funct[v] = true; + note_implied(token); + } else { + switch (s[v]) { + case 'function': + case 'unction': + this['function'] = true; + s[v] = 'closure'; + funct[v] = s['(global)'] ? 'global' : 'outer'; + break; + case 'var': + case 'unused': + s[v] = 'closure'; + funct[v] = s['(global)'] ? 'global' : 'outer'; + break; + case 'closure': + case 'parameter': + funct[v] = s['(global)'] ? 'global' : 'outer'; + break; + case 'label': + warning("'{a}' is a statement label.", token, v); + } + } + } + } + return this; + }, + led: function () { + error("Expected an operator and instead saw '{a}'.", + nexttoken, nexttoken.value); + } + }; + + type('(regexp)', function () { + return this; + }); + + +// ECMAScript parser + + delim('(endline)'); + delim('(begin)'); + delim('(end)').reach = true; + delim(''); + delim('(error)').reach = true; + delim('}').reach = true; + delim(')'); + delim(']'); + delim('"').reach = true; + delim("'").reach = true; + delim(';'); + delim(':').reach = true; + delim(','); + delim('#'); + delim('@'); + reserve('else'); + reserve('case').reach = true; + reserve('catch'); + reserve('default').reach = true; + reserve('finally'); + reservevar('arguments', function (x) { + if (directive['use strict'] && funct['(global)']) { + warning("Strict violation.", x); + } + }); + reservevar('eval'); + reservevar('false'); + reservevar('Infinity'); + reservevar('NaN'); + reservevar('null'); + reservevar('this', function (x) { + if (directive['use strict'] && !option.validthis && ((funct['(statement)'] && + funct['(name)'].charAt(0) > 'Z') || funct['(global)'])) { + warning("Possible strict violation.", x); + } + }); + reservevar('true'); + reservevar('undefined'); + assignop('=', 'assign', 20); + assignop('+=', 'assignadd', 20); + assignop('-=', 'assignsub', 20); + assignop('*=', 'assignmult', 20); + assignop('/=', 'assigndiv', 20).nud = function () { + error("A regular expression literal can be confused with '/='."); + }; + assignop('%=', 'assignmod', 20); + bitwiseassignop('&=', 'assignbitand', 20); + bitwiseassignop('|=', 'assignbitor', 20); + bitwiseassignop('^=', 'assignbitxor', 20); + bitwiseassignop('<<=', 'assignshiftleft', 20); + bitwiseassignop('>>=', 'assignshiftright', 20); + bitwiseassignop('>>>=', 'assignshiftrightunsigned', 20); + infix('?', function (left, that) { + that.left = left; + that.right = expression(10); + advance(':'); + that['else'] = expression(10); + return that; + }, 30); + + infix('||', 'or', 40); + infix('&&', 'and', 50); + bitwise('|', 'bitor', 70); + bitwise('^', 'bitxor', 80); + bitwise('&', 'bitand', 90); + relation('==', function (left, right) { + var eqnull = option.eqnull && (left.value === 'null' || right.value === 'null'); + + if (!eqnull && option.eqeqeq) + warning("Expected '{a}' and instead saw '{b}'.", this, '===', '=='); + else if (isPoorRelation(left)) + warning("Use '{a}' to compare with '{b}'.", this, '===', left.value); + else if (isPoorRelation(right)) + warning("Use '{a}' to compare with '{b}'.", this, '===', right.value); + + return this; + }); + relation('==='); + relation('!=', function (left, right) { + var eqnull = option.eqnull && + (left.value === 'null' || right.value === 'null'); + + if (!eqnull && option.eqeqeq) { + warning("Expected '{a}' and instead saw '{b}'.", + this, '!==', '!='); + } else if (isPoorRelation(left)) { + warning("Use '{a}' to compare with '{b}'.", + this, '!==', left.value); + } else if (isPoorRelation(right)) { + warning("Use '{a}' to compare with '{b}'.", + this, '!==', right.value); + } + return this; + }); + relation('!=='); + relation('<'); + relation('>'); + relation('<='); + relation('>='); + bitwise('<<', 'shiftleft', 120); + bitwise('>>', 'shiftright', 120); + bitwise('>>>', 'shiftrightunsigned', 120); + infix('in', 'in', 120); + infix('instanceof', 'instanceof', 120); + infix('+', function (left, that) { + var right = expression(130); + if (left && right && left.id === '(string)' && right.id === '(string)') { + left.value += right.value; + left.character = right.character; + if (!option.scripturl && jx.test(left.value)) { + warning("JavaScript URL.", left); + } + return left; + } + that.left = left; + that.right = right; + return that; + }, 130); + prefix('+', 'num'); + prefix('+++', function () { + warning("Confusing pluses."); + this.right = expression(150); + this.arity = 'unary'; + return this; + }); + infix('+++', function (left) { + warning("Confusing pluses."); + this.left = left; + this.right = expression(130); + return this; + }, 130); + infix('-', 'sub', 130); + prefix('-', 'neg'); + prefix('---', function () { + warning("Confusing minuses."); + this.right = expression(150); + this.arity = 'unary'; + return this; + }); + infix('---', function (left) { + warning("Confusing minuses."); + this.left = left; + this.right = expression(130); + return this; + }, 130); + infix('*', 'mult', 140); + infix('/', 'div', 140); + infix('%', 'mod', 140); + + suffix('++', 'postinc'); + prefix('++', 'preinc'); + syntax['++'].exps = true; + + suffix('--', 'postdec'); + prefix('--', 'predec'); + syntax['--'].exps = true; + prefix('delete', function () { + var p = expression(0); + if (!p || (p.id !== '.' && p.id !== '[')) { + warning("Variables should not be deleted."); + } + this.first = p; + return this; + }).exps = true; + + prefix('~', function () { + if (option.bitwise) { + warning("Unexpected '{a}'.", this, '~'); + } + expression(150); + return this; + }); + + prefix('!', function () { + this.right = expression(150); + this.arity = 'unary'; + if (bang[this.right.id] === true) { + warning("Confusing use of '{a}'.", this, '!'); + } + return this; + }); + prefix('typeof', 'typeof'); + prefix('new', function () { + var c = expression(155), i; + if (c && c.id !== 'function') { + if (c.identifier) { + c['new'] = true; + switch (c.value) { + case 'Number': + case 'String': + case 'Boolean': + case 'Math': + case 'JSON': + warning("Do not use {a} as a constructor.", token, c.value); + break; + case 'Function': + if (!option.evil) { + warning("The Function constructor is eval."); + } + break; + case 'Date': + case 'RegExp': + break; + default: + if (c.id !== 'function') { + i = c.value.substr(0, 1); + if (option.newcap && (i < 'A' || i > 'Z')) { + warning("A constructor name should start with an uppercase letter.", + token); + } + } + } + } else { + if (c.id !== '.' && c.id !== '[' && c.id !== '(') { + warning("Bad constructor.", token); + } + } + } else { + if (!option.supernew) + warning("Weird construction. Delete 'new'.", this); + } + adjacent(token, nexttoken); + if (nexttoken.id !== '(' && !option.supernew) { + warning("Missing '()' invoking a constructor."); + } + this.first = c; + return this; + }); + syntax['new'].exps = true; + + prefix('void').exps = true; + + infix('.', function (left, that) { + adjacent(prevtoken, token); + nobreak(); + var m = identifier(); + if (typeof m === 'string') { + countMember(m); + } + that.left = left; + that.right = m; + if (left && left.value === 'arguments' && (m === 'callee' || m === 'caller')) { + if (option.noarg) + warning("Avoid arguments.{a}.", left, m); + else if (directive['use strict']) + error('Strict violation.'); + } else if (!option.evil && left && left.value === 'document' && + (m === 'write' || m === 'writeln')) { + warning("document.write can be a form of eval.", left); + } + if (!option.evil && (m === 'eval' || m === 'execScript')) { + warning('eval is evil.'); + } + return that; + }, 160, true); + + infix('(', function (left, that) { + if (prevtoken.id !== '}' && prevtoken.id !== ')') { + nobreak(prevtoken, token); + } + nospace(); + if (option.immed && !left.immed && left.id === 'function') { + warning("Wrap an immediate function invocation in parentheses " + + "to assist the reader in understanding that the expression " + + "is the result of a function, and not the function itself."); + } + var n = 0, + p = []; + if (left) { + if (left.type === '(identifier)') { + if (left.value.match(/^[A-Z]([A-Z0-9_$]*[a-z][A-Za-z0-9_$]*)?$/)) { + if (left.value !== 'Number' && left.value !== 'String' && + left.value !== 'Boolean' && + left.value !== 'Date') { + if (left.value === 'Math') { + warning("Math is not a function.", left); + } else if (option.newcap) { + warning( +"Missing 'new' prefix when invoking a constructor.", left); + } + } + } + } + } + if (nexttoken.id !== ')') { + for (;;) { + p[p.length] = expression(10); + n += 1; + if (nexttoken.id !== ',') { + break; + } + comma(); + } + } + advance(')'); + nospace(prevtoken, token); + if (typeof left === 'object') { + if (left.value === 'parseInt' && n === 1) { + warning("Missing radix parameter.", left); + } + if (!option.evil) { + if (left.value === 'eval' || left.value === 'Function' || + left.value === 'execScript') { + warning("eval is evil.", left); + } else if (p[0] && p[0].id === '(string)' && + (left.value === 'setTimeout' || + left.value === 'setInterval')) { + warning( + "Implied eval is evil. Pass a function instead of a string.", left); + } + } + if (!left.identifier && left.id !== '.' && left.id !== '[' && + left.id !== '(' && left.id !== '&&' && left.id !== '||' && + left.id !== '?') { + warning("Bad invocation.", left); + } + } + that.left = left; + return that; + }, 155, true).exps = true; + + prefix('(', function () { + nospace(); + if (nexttoken.id === 'function') { + nexttoken.immed = true; + } + var v = expression(0); + advance(')', this); + nospace(prevtoken, token); + if (option.immed && v.id === 'function') { + if (nexttoken.id === '(' || + (nexttoken.id === '.' && (peek().value === 'call' || peek().value === 'apply'))) { + warning( +"Move the invocation into the parens that contain the function.", nexttoken); + } else { + warning( +"Do not wrap function literals in parens unless they are to be immediately invoked.", + this); + } + } + return v; + }); + + infix('[', function (left, that) { + nobreak(prevtoken, token); + nospace(); + var e = expression(0), s; + if (e && e.type === '(string)') { + if (!option.evil && (e.value === 'eval' || e.value === 'execScript')) { + warning("eval is evil.", that); + } + countMember(e.value); + if (!option.sub && ix.test(e.value)) { + s = syntax[e.value]; + if (!s || !s.reserved) { + warning("['{a}'] is better written in dot notation.", + e, e.value); + } + } + } + advance(']', that); + nospace(prevtoken, token); + that.left = left; + that.right = e; + return that; + }, 160, true); + + prefix('[', function () { + var b = token.line !== nexttoken.line; + this.first = []; + if (b) { + indent += option.indent; + if (nexttoken.from === indent + option.indent) { + indent += option.indent; + } + } + while (nexttoken.id !== '(end)') { + while (nexttoken.id === ',') { + warning("Extra comma."); + advance(','); + } + if (nexttoken.id === ']') { + break; + } + if (b && token.line !== nexttoken.line) { + indentation(); + } + this.first.push(expression(10)); + if (nexttoken.id === ',') { + comma(); + if (nexttoken.id === ']' && !option.es5) { + warning("Extra comma.", token); + break; + } + } else { + break; + } + } + if (b) { + indent -= option.indent; + indentation(); + } + advance(']', this); + return this; + }, 160); + + + function property_name() { + var id = optionalidentifier(true); + if (!id) { + if (nexttoken.id === '(string)') { + id = nexttoken.value; + advance(); + } else if (nexttoken.id === '(number)') { + id = nexttoken.value.toString(); + advance(); + } + } + return id; + } + + + function functionparams() { + var i, t = nexttoken, p = []; + advance('('); + nospace(); + if (nexttoken.id === ')') { + advance(')'); + return; + } + for (;;) { + i = identifier(true); + p.push(i); + addlabel(i, 'parameter'); + if (nexttoken.id === ',') { + comma(); + } else { + advance(')', t); + nospace(prevtoken, token); + return p; + } + } + } + + + function doFunction(i, statement) { + var f, + oldOption = option, + oldScope = scope; + + option = Object.create(option); + scope = Object.create(scope); + + funct = { + '(name)' : i || '"' + anonname + '"', + '(line)' : nexttoken.line, + '(context)' : funct, + '(breakage)' : 0, + '(loopage)' : 0, + '(scope)' : scope, + '(statement)': statement + }; + f = funct; + token.funct = funct; + functions.push(funct); + if (i) { + addlabel(i, 'function'); + } + funct['(params)'] = functionparams(); + + block(false, false, true); + scope = oldScope; + option = oldOption; + funct['(last)'] = token.line; + funct = funct['(context)']; + return f; + } + + + (function (x) { + x.nud = function () { + var b, f, i, j, p, t; + var props = {}; // All properties, including accessors + + function saveProperty(name, token) { + if (props[name] && is_own(props, name)) + warning("Duplicate member '{a}'.", nexttoken, i); + else + props[name] = {}; + + props[name].basic = true; + props[name].basicToken = token; + } + + function saveSetter(name, token) { + if (props[name] && is_own(props, name)) { + if (props[name].basic || props[name].setter) + warning("Duplicate member '{a}'.", nexttoken, i); + } else { + props[name] = {}; + } + + props[name].setter = true; + props[name].setterToken = token; + } + + function saveGetter(name) { + if (props[name] && is_own(props, name)) { + if (props[name].basic || props[name].getter) + warning("Duplicate member '{a}'.", nexttoken, i); + } else { + props[name] = {}; + } + + props[name].getter = true; + props[name].getterToken = token; + } + + b = token.line !== nexttoken.line; + if (b) { + indent += option.indent; + if (nexttoken.from === indent + option.indent) { + indent += option.indent; + } + } + for (;;) { + if (nexttoken.id === '}') { + break; + } + if (b) { + indentation(); + } + if (nexttoken.value === 'get' && peek().id !== ':') { + advance('get'); + if (!option.es5) { + error("get/set are ES5 features."); + } + i = property_name(); + if (!i) { + error("Missing property name."); + } + saveGetter(i); + t = nexttoken; + adjacent(token, nexttoken); + f = doFunction(); + p = f['(params)']; + if (p) { + warning("Unexpected parameter '{a}' in get {b} function.", t, p[0], i); + } + adjacent(token, nexttoken); + } else if (nexttoken.value === 'set' && peek().id !== ':') { + advance('set'); + if (!option.es5) { + error("get/set are ES5 features."); + } + i = property_name(); + if (!i) { + error("Missing property name."); + } + saveSetter(i, nexttoken); + t = nexttoken; + adjacent(token, nexttoken); + f = doFunction(); + p = f['(params)']; + if (!p || p.length !== 1) { + warning("Expected a single parameter in set {a} function.", t, i); + } + } else { + i = property_name(); + saveProperty(i, nexttoken); + if (typeof i !== 'string') { + break; + } + advance(':'); + nonadjacent(token, nexttoken); + expression(10); + } + + countMember(i); + if (nexttoken.id === ',') { + comma(); + if (nexttoken.id === ',') { + warning("Extra comma.", token); + } else if (nexttoken.id === '}' && !option.es5) { + warning("Extra comma.", token); + } + } else { + break; + } + } + if (b) { + indent -= option.indent; + indentation(); + } + advance('}', this); + + // Check for lonely setters if in the ES5 mode. + if (option.es5) { + for (var name in props) { + if (is_own(props, name) && props[name].setter && !props[name].getter) { + warning("Setter is defined without getter.", props[name].setterToken); + } + } + } + return this; + }; + x.fud = function () { + error("Expected to see a statement and instead saw a block.", token); + }; + }(delim('{'))); + +// This Function is called when esnext option is set to true +// it adds the `const` statement to JSHINT + + useESNextSyntax = function () { + var conststatement = stmt('const', function (prefix) { + var id, name, value; + + this.first = []; + for (;;) { + nonadjacent(token, nexttoken); + id = identifier(); + if (funct[id] === "const") { + warning("const '" + id + "' has already been declared"); + } + if (funct['(global)'] && predefined[id] === false) { + warning("Redefinition of '{a}'.", token, id); + } + addlabel(id, 'const'); + if (prefix) { + break; + } + name = token; + this.first.push(token); + + if (nexttoken.id !== "=") { + warning("const " + + "'{a}' is initialized to 'undefined'.", token, id); + } + + if (nexttoken.id === '=') { + nonadjacent(token, nexttoken); + advance('='); + nonadjacent(token, nexttoken); + if (nexttoken.id === 'undefined') { + warning("It is not necessary to initialize " + + "'{a}' to 'undefined'.", token, id); + } + if (peek(0).id === '=' && nexttoken.identifier) { + error("Constant {a} was not declared correctly.", + nexttoken, nexttoken.value); + } + value = expression(0); + name.first = value; + } + + if (nexttoken.id !== ',') { + break; + } + comma(); + } + return this; + }); + conststatement.exps = true; + }; + + var varstatement = stmt('var', function (prefix) { + // JavaScript does not have block scope. It only has function scope. So, + // declaring a variable in a block can have unexpected consequences. + var id, name, value; + + if (funct['(onevar)'] && option.onevar) { + warning("Too many var statements."); + } else if (!funct['(global)']) { + funct['(onevar)'] = true; + } + this.first = []; + for (;;) { + nonadjacent(token, nexttoken); + id = identifier(); + if (option.esnext && funct[id] === "const") { + warning("const '" + id + "' has already been declared"); + } + if (funct['(global)'] && predefined[id] === false) { + warning("Redefinition of '{a}'.", token, id); + } + addlabel(id, 'unused'); + if (prefix) { + break; + } + name = token; + this.first.push(token); + if (nexttoken.id === '=') { + nonadjacent(token, nexttoken); + advance('='); + nonadjacent(token, nexttoken); + if (nexttoken.id === 'undefined') { + warning("It is not necessary to initialize '{a}' to 'undefined'.", token, id); + } + if (peek(0).id === '=' && nexttoken.identifier) { + error("Variable {a} was not declared correctly.", + nexttoken, nexttoken.value); + } + value = expression(0); + name.first = value; + } + if (nexttoken.id !== ',') { + break; + } + comma(); + } + return this; + }); + varstatement.exps = true; + + blockstmt('function', function () { + if (inblock) { + warning("Function declarations should not be placed in blocks. " + + "Use a function expression or move the statement to the top of " + + "the outer function.", token); + + } + var i = identifier(); + if (option.esnext && funct[i] === "const") { + warning("const '" + i + "' has already been declared"); + } + adjacent(token, nexttoken); + addlabel(i, 'unction'); + doFunction(i, true); + if (nexttoken.id === '(' && nexttoken.line === token.line) { + error( +"Function declarations are not invocable. Wrap the whole function invocation in parens."); + } + return this; + }); + + prefix('function', function () { + var i = optionalidentifier(); + if (i) { + adjacent(token, nexttoken); + } else { + nonadjacent(token, nexttoken); + } + doFunction(i); + if (!option.loopfunc && funct['(loopage)']) { + warning("Don't make functions within a loop."); + } + return this; + }); + + blockstmt('if', function () { + var t = nexttoken; + advance('('); + nonadjacent(this, t); + nospace(); + expression(20); + if (nexttoken.id === '=') { + if (!option.boss) + warning("Expected a conditional expression and instead saw an assignment."); + advance('='); + expression(20); + } + advance(')', t); + nospace(prevtoken, token); + block(true, true); + if (nexttoken.id === 'else') { + nonadjacent(token, nexttoken); + advance('else'); + if (nexttoken.id === 'if' || nexttoken.id === 'switch') { + statement(true); + } else { + block(true, true); + } + } + return this; + }); + + blockstmt('try', function () { + var b, e, s; + + block(false); + if (nexttoken.id === 'catch') { + advance('catch'); + nonadjacent(token, nexttoken); + advance('('); + s = scope; + scope = Object.create(s); + e = nexttoken.value; + if (nexttoken.type !== '(identifier)') { + warning("Expected an identifier and instead saw '{a}'.", + nexttoken, e); + } else { + addlabel(e, 'exception'); + } + advance(); + advance(')'); + block(false); + b = true; + scope = s; + } + if (nexttoken.id === 'finally') { + advance('finally'); + block(false); + return; + } else if (!b) { + error("Expected '{a}' and instead saw '{b}'.", + nexttoken, 'catch', nexttoken.value); + } + return this; + }); + + blockstmt('while', function () { + var t = nexttoken; + funct['(breakage)'] += 1; + funct['(loopage)'] += 1; + advance('('); + nonadjacent(this, t); + nospace(); + expression(20); + if (nexttoken.id === '=') { + if (!option.boss) + warning("Expected a conditional expression and instead saw an assignment."); + advance('='); + expression(20); + } + advance(')', t); + nospace(prevtoken, token); + block(true, true); + funct['(breakage)'] -= 1; + funct['(loopage)'] -= 1; + return this; + }).labelled = true; + + blockstmt('with', function () { + var t = nexttoken; + if (directive['use strict']) { + error("'with' is not allowed in strict mode.", token); + } else if (!option.withstmt) { + warning("Don't use 'with'.", token); + } + + advance('('); + nonadjacent(this, t); + nospace(); + expression(0); + advance(')', t); + nospace(prevtoken, token); + block(true, true); + + return this; + }); + + blockstmt('switch', function () { + var t = nexttoken, + g = false; + funct['(breakage)'] += 1; + advance('('); + nonadjacent(this, t); + nospace(); + this.condition = expression(20); + advance(')', t); + nospace(prevtoken, token); + nonadjacent(token, nexttoken); + t = nexttoken; + advance('{'); + nonadjacent(token, nexttoken); + indent += option.indent; + this.cases = []; + for (;;) { + switch (nexttoken.id) { + case 'case': + switch (funct['(verb)']) { + case 'break': + case 'case': + case 'continue': + case 'return': + case 'switch': + case 'throw': + break; + default: + // You can tell JSHint that you don't use break intentionally by + // adding a comment /* falls through */ on a line just before + // the next `case`. + if (!ft.test(lines[nexttoken.line - 2])) { + warning( + "Expected a 'break' statement before 'case'.", + token); + } + } + indentation(-option.indent); + advance('case'); + this.cases.push(expression(20)); + g = true; + advance(':'); + funct['(verb)'] = 'case'; + break; + case 'default': + switch (funct['(verb)']) { + case 'break': + case 'continue': + case 'return': + case 'throw': + break; + default: + if (!ft.test(lines[nexttoken.line - 2])) { + warning( + "Expected a 'break' statement before 'default'.", + token); + } + } + indentation(-option.indent); + advance('default'); + g = true; + advance(':'); + break; + case '}': + indent -= option.indent; + indentation(); + advance('}', t); + if (this.cases.length === 1 || this.condition.id === 'true' || + this.condition.id === 'false') { + if (!option.onecase) + warning("This 'switch' should be an 'if'.", this); + } + funct['(breakage)'] -= 1; + funct['(verb)'] = undefined; + return; + case '(end)': + error("Missing '{a}'.", nexttoken, '}'); + return; + default: + if (g) { + switch (token.id) { + case ',': + error("Each value should have its own case label."); + return; + case ':': + g = false; + statements(); + break; + default: + error("Missing ':' on a case clause.", token); + return; + } + } else { + if (token.id === ':') { + advance(':'); + error("Unexpected '{a}'.", token, ':'); + statements(); + } else { + error("Expected '{a}' and instead saw '{b}'.", + nexttoken, 'case', nexttoken.value); + return; + } + } + } + } + }).labelled = true; + + stmt('debugger', function () { + if (!option.debug) { + warning("All 'debugger' statements should be removed."); + } + return this; + }).exps = true; + + (function () { + var x = stmt('do', function () { + funct['(breakage)'] += 1; + funct['(loopage)'] += 1; + this.first = block(true); + advance('while'); + var t = nexttoken; + nonadjacent(token, t); + advance('('); + nospace(); + expression(20); + if (nexttoken.id === '=') { + if (!option.boss) + warning("Expected a conditional expression and instead saw an assignment."); + advance('='); + expression(20); + } + advance(')', t); + nospace(prevtoken, token); + funct['(breakage)'] -= 1; + funct['(loopage)'] -= 1; + return this; + }); + x.labelled = true; + x.exps = true; + }()); + + blockstmt('for', function () { + var s, t = nexttoken; + funct['(breakage)'] += 1; + funct['(loopage)'] += 1; + advance('('); + nonadjacent(this, t); + nospace(); + if (peek(nexttoken.id === 'var' ? 1 : 0).id === 'in') { + if (nexttoken.id === 'var') { + advance('var'); + varstatement.fud.call(varstatement, true); + } else { + switch (funct[nexttoken.value]) { + case 'unused': + funct[nexttoken.value] = 'var'; + break; + case 'var': + break; + default: + warning("Bad for in variable '{a}'.", + nexttoken, nexttoken.value); + } + advance(); + } + advance('in'); + expression(20); + advance(')', t); + s = block(true, true); + if (option.forin && s && (s.length > 1 || typeof s[0] !== 'object' || + s[0].value !== 'if')) { + warning("The body of a for in should be wrapped in an if statement to filter " + + "unwanted properties from the prototype.", this); + } + funct['(breakage)'] -= 1; + funct['(loopage)'] -= 1; + return this; + } else { + if (nexttoken.id !== ';') { + if (nexttoken.id === 'var') { + advance('var'); + varstatement.fud.call(varstatement); + } else { + for (;;) { + expression(0, 'for'); + if (nexttoken.id !== ',') { + break; + } + comma(); + } + } + } + nolinebreak(token); + advance(';'); + if (nexttoken.id !== ';') { + expression(20); + if (nexttoken.id === '=') { + if (!option.boss) + warning("Expected a conditional expression and instead saw an assignment."); + advance('='); + expression(20); + } + } + nolinebreak(token); + advance(';'); + if (nexttoken.id === ';') { + error("Expected '{a}' and instead saw '{b}'.", + nexttoken, ')', ';'); + } + if (nexttoken.id !== ')') { + for (;;) { + expression(0, 'for'); + if (nexttoken.id !== ',') { + break; + } + comma(); + } + } + advance(')', t); + nospace(prevtoken, token); + block(true, true); + funct['(breakage)'] -= 1; + funct['(loopage)'] -= 1; + return this; + } + }).labelled = true; + + + stmt('break', function () { + var v = nexttoken.value; + + if (funct['(breakage)'] === 0) + warning("Unexpected '{a}'.", nexttoken, this.value); + + if (!option.asi) + nolinebreak(this); + + if (nexttoken.id !== ';') { + if (token.line === nexttoken.line) { + if (funct[v] !== 'label') { + warning("'{a}' is not a statement label.", nexttoken, v); + } else if (scope[v] !== funct) { + warning("'{a}' is out of scope.", nexttoken, v); + } + this.first = nexttoken; + advance(); + } + } + reachable('break'); + return this; + }).exps = true; + + + stmt('continue', function () { + var v = nexttoken.value; + + if (funct['(breakage)'] === 0) + warning("Unexpected '{a}'.", nexttoken, this.value); + + if (!option.asi) + nolinebreak(this); + + if (nexttoken.id !== ';') { + if (token.line === nexttoken.line) { + if (funct[v] !== 'label') { + warning("'{a}' is not a statement label.", nexttoken, v); + } else if (scope[v] !== funct) { + warning("'{a}' is out of scope.", nexttoken, v); + } + this.first = nexttoken; + advance(); + } + } else if (!funct['(loopage)']) { + warning("Unexpected '{a}'.", nexttoken, this.value); + } + reachable('continue'); + return this; + }).exps = true; + + + stmt('return', function () { + if (this.line === nexttoken.line) { + if (nexttoken.id === '(regexp)') + warning("Wrap the /regexp/ literal in parens to disambiguate the slash operator."); + + if (nexttoken.id !== ';' && !nexttoken.reach) { + nonadjacent(token, nexttoken); + if (peek().value === "=" && !option.boss) { + warningAt("Did you mean to return a conditional instead of an assignment?", + token.line, token.character + 1); + } + this.first = expression(0); + } + } else if (!option.asi) { + nolinebreak(this); // always warn (Line breaking error) + } + reachable('return'); + return this; + }).exps = true; + + + stmt('throw', function () { + nolinebreak(this); + nonadjacent(token, nexttoken); + this.first = expression(20); + reachable('throw'); + return this; + }).exps = true; + +// Superfluous reserved words + + reserve('class'); + reserve('const'); + reserve('enum'); + reserve('export'); + reserve('extends'); + reserve('import'); + reserve('super'); + + reserve('let'); + reserve('yield'); + reserve('implements'); + reserve('interface'); + reserve('package'); + reserve('private'); + reserve('protected'); + reserve('public'); + reserve('static'); + + +// Parse JSON + + function jsonValue() { + + function jsonObject() { + var o = {}, t = nexttoken; + advance('{'); + if (nexttoken.id !== '}') { + for (;;) { + if (nexttoken.id === '(end)') { + error("Missing '}' to match '{' from line {a}.", + nexttoken, t.line); + } else if (nexttoken.id === '}') { + warning("Unexpected comma.", token); + break; + } else if (nexttoken.id === ',') { + error("Unexpected comma.", nexttoken); + } else if (nexttoken.id !== '(string)') { + warning("Expected a string and instead saw {a}.", + nexttoken, nexttoken.value); + } + if (o[nexttoken.value] === true) { + warning("Duplicate key '{a}'.", + nexttoken, nexttoken.value); + } else if ((nexttoken.value === '__proto__' && + !option.proto) || (nexttoken.value === '__iterator__' && + !option.iterator)) { + warning("The '{a}' key may produce unexpected results.", + nexttoken, nexttoken.value); + } else { + o[nexttoken.value] = true; + } + advance(); + advance(':'); + jsonValue(); + if (nexttoken.id !== ',') { + break; + } + advance(','); + } + } + advance('}'); + } + + function jsonArray() { + var t = nexttoken; + advance('['); + if (nexttoken.id !== ']') { + for (;;) { + if (nexttoken.id === '(end)') { + error("Missing ']' to match '[' from line {a}.", + nexttoken, t.line); + } else if (nexttoken.id === ']') { + warning("Unexpected comma.", token); + break; + } else if (nexttoken.id === ',') { + error("Unexpected comma.", nexttoken); + } + jsonValue(); + if (nexttoken.id !== ',') { + break; + } + advance(','); + } + } + advance(']'); + } + + switch (nexttoken.id) { + case '{': + jsonObject(); + break; + case '[': + jsonArray(); + break; + case 'true': + case 'false': + case 'null': + case '(number)': + case '(string)': + advance(); + break; + case '-': + advance('-'); + if (token.character !== nexttoken.from) { + warning("Unexpected space after '-'.", token); + } + adjacent(token, nexttoken); + advance('(number)'); + break; + default: + error("Expected a JSON value.", nexttoken); + } + } + + +// The actual JSHINT function itself. + + var itself = function (s, o, g) { + var a, i, k; + JSHINT.errors = []; + JSHINT.undefs = []; + predefined = Object.create(standard); + combine(predefined, g || {}); + if (o) { + a = o.predef; + if (a) { + if (Array.isArray(a)) { + for (i = 0; i < a.length; i += 1) { + predefined[a[i]] = true; + } + } else if (typeof a === 'object') { + k = Object.keys(a); + for (i = 0; i < k.length; i += 1) { + predefined[k[i]] = !!a[k[i]]; + } + } + } + option = o; + } else { + option = {}; + } + option.indent = option.indent || 4; + option.maxerr = option.maxerr || 50; + + tab = ''; + for (i = 0; i < option.indent; i += 1) { + tab += ' '; + } + indent = 1; + global = Object.create(predefined); + scope = global; + funct = { + '(global)': true, + '(name)': '(global)', + '(scope)': scope, + '(breakage)': 0, + '(loopage)': 0 + }; + functions = [funct]; + urls = []; + stack = null; + member = {}; + membersOnly = null; + implied = {}; + inblock = false; + lookahead = []; + jsonmode = false; + warnings = 0; + lex.init(s); + prereg = true; + directive = {}; + + prevtoken = token = nexttoken = syntax['(begin)']; + + // Check options + for (var name in o) { + if (is_own(o, name)) { + checkOption(name, token); + } + } + + assume(); + + // combine the passed globals after we've assumed all our options + combine(predefined, g || {}); + + //reset values + comma.first = true; + + try { + advance(); + switch (nexttoken.id) { + case '{': + case '[': + option.laxbreak = true; + jsonmode = true; + jsonValue(); + break; + default: + directives(); + if (directive["use strict"] && !option.globalstrict) { + warning("Use the function form of \"use strict\".", prevtoken); + } + + statements(); + } + advance('(end)'); + + var markDefined = function (name, context) { + do { + if (typeof context[name] === 'string') { + // JSHINT marks unused variables as 'unused' and + // unused function declaration as 'unction'. This + // code changes such instances back 'var' and + // 'closure' so that the code in JSHINT.data() + // doesn't think they're unused. + + if (context[name] === 'unused') + context[name] = 'var'; + else if (context[name] === 'unction') + context[name] = 'closure'; + + return true; + } + + context = context['(context)']; + } while (context); + + return false; + }; + + var clearImplied = function (name, line) { + if (!implied[name]) + return; + + var newImplied = []; + for (var i = 0; i < implied[name].length; i += 1) { + if (implied[name][i] !== line) + newImplied.push(implied[name][i]); + } + + if (newImplied.length === 0) + delete implied[name]; + else + implied[name] = newImplied; + }; + + // Check queued 'x is not defined' instances to see if they're still undefined. + for (i = 0; i < JSHINT.undefs.length; i += 1) { + k = JSHINT.undefs[i].slice(0); + + if (markDefined(k[2].value, k[0])) { + clearImplied(k[2].value, k[2].line); + } else { + warning.apply(warning, k.slice(1)); + } + } + } catch (e) { + if (e) { + var nt = nexttoken || {}; + JSHINT.errors.push({ + raw : e.raw, + reason : e.message, + line : e.line || nt.line, + character : e.character || nt.from + }, null); + } + } + + return JSHINT.errors.length === 0; + }; + + // Data summary. + itself.data = function () { + + var data = { functions: [], options: option }, fu, globals, implieds = [], f, i, j, + members = [], n, unused = [], v; + if (itself.errors.length) { + data.errors = itself.errors; + } + + if (jsonmode) { + data.json = true; + } + + for (n in implied) { + if (is_own(implied, n)) { + implieds.push({ + name: n, + line: implied[n] + }); + } + } + if (implieds.length > 0) { + data.implieds = implieds; + } + + if (urls.length > 0) { + data.urls = urls; + } + + globals = Object.keys(scope); + if (globals.length > 0) { + data.globals = globals; + } + for (i = 1; i < functions.length; i += 1) { + f = functions[i]; + fu = {}; + for (j = 0; j < functionicity.length; j += 1) { + fu[functionicity[j]] = []; + } + for (n in f) { + if (is_own(f, n) && n.charAt(0) !== '(') { + v = f[n]; + if (v === 'unction') { + v = 'unused'; + } + if (Array.isArray(fu[v])) { + fu[v].push(n); + if (v === 'unused') { + unused.push({ + name: n, + line: f['(line)'], + 'function': f['(name)'] + }); + } + } + } + } + for (j = 0; j < functionicity.length; j += 1) { + if (fu[functionicity[j]].length === 0) { + delete fu[functionicity[j]]; + } + } + fu.name = f['(name)']; + fu.param = f['(params)']; + fu.line = f['(line)']; + fu.last = f['(last)']; + data.functions.push(fu); + } + + if (unused.length > 0) { + data.unused = unused; + } + + members = []; + for (n in member) { + if (typeof member[n] === 'number') { + data.member = member; + break; + } + } + + return data; + }; + + itself.report = function (option) { + var data = itself.data(); + + var a = [], c, e, err, f, i, k, l, m = '', n, o = [], s; + + function detail(h, array) { + var b, i, singularity; + if (array) { + o.push('
    ' + h + ' '); + array = array.sort(); + for (i = 0; i < array.length; i += 1) { + if (array[i] !== singularity) { + singularity = array[i]; + o.push((b ? ', ' : '') + singularity); + b = true; + } + } + o.push('
    '); + } + } + + + if (data.errors || data.implieds || data.unused) { + err = true; + o.push('
    Error:'); + if (data.errors) { + for (i = 0; i < data.errors.length; i += 1) { + c = data.errors[i]; + if (c) { + e = c.evidence || ''; + o.push('

    Problem' + (isFinite(c.line) ? ' at line ' + + c.line + ' character ' + c.character : '') + + ': ' + c.reason.entityify() + + '

    ' + + (e && (e.length > 80 ? e.slice(0, 77) + '...' : + e).entityify()) + '

    '); + } + } + } + + if (data.implieds) { + s = []; + for (i = 0; i < data.implieds.length; i += 1) { + s[i] = '' + data.implieds[i].name + ' ' + + data.implieds[i].line + ''; + } + o.push('

    Implied global: ' + s.join(', ') + '

    '); + } + + if (data.unused) { + s = []; + for (i = 0; i < data.unused.length; i += 1) { + s[i] = '' + data.unused[i].name + ' ' + + data.unused[i].line + ' ' + + data.unused[i]['function'] + ''; + } + o.push('

    Unused variable: ' + s.join(', ') + '

    '); + } + if (data.json) { + o.push('

    JSON: bad.

    '); + } + o.push('
    '); + } + + if (!option) { + + o.push('
    '); + + if (data.urls) { + detail("URLs
    ", data.urls, '
    '); + } + + if (data.json && !err) { + o.push('

    JSON: good.

    '); + } else if (data.globals) { + o.push('
    Global ' + + data.globals.sort().join(', ') + '
    '); + } else { + o.push('
    No new global variables introduced.
    '); + } + + for (i = 0; i < data.functions.length; i += 1) { + f = data.functions[i]; + + o.push('
    ' + f.line + '-' + + f.last + ' ' + (f.name || '') + '(' + + (f.param ? f.param.join(', ') : '') + ')
    '); + detail('Unused', f.unused); + detail('Closure', f.closure); + detail('Variable', f['var']); + detail('Exception', f.exception); + detail('Outer', f.outer); + detail('Global', f.global); + detail('Label', f.label); + } + + if (data.member) { + a = Object.keys(data.member); + if (a.length) { + a = a.sort(); + m = '
    /*members ';
    +                    l = 10;
    +                    for (i = 0; i < a.length; i += 1) {
    +                        k = a[i];
    +                        n = k.name();
    +                        if (l + n.length > 72) {
    +                            o.push(m + '
    '); + m = ' '; + l = 1; + } + l += n.length + 2; + if (data.member[k] === 1) { + n = '' + n + ''; + } + if (i < a.length - 1) { + n += ', '; + } + m += n; + } + o.push(m + '
    */
    '); + } + o.push('
    '); + } + } + return o.join(''); + }; + + itself.jshint = itself; + + return itself; +}()); + +// Make JSHINT a Node module, if possible. +if (typeof exports === 'object' && exports) + exports.JSHINT = JSHINT; diff --git a/SublimeLinter/sublimelinter/modules/libs/jshint/jshint_jsc.js b/SublimeLinter/sublimelinter/modules/libs/jshint/jshint_jsc.js new file mode 100644 index 0000000..8e70b3b --- /dev/null +++ b/SublimeLinter/sublimelinter/modules/libs/jshint/jshint_jsc.js @@ -0,0 +1,65 @@ +/*jshint boss: true, evil: true */ +/*globals load quit readline JSHINT */ + +// usage: +// jsc ${envHome}/jsc.js -- ${lineCount} {option1:true,option2:false} ${envHome} +var envHome = ''; + +if (arguments.length > 2) { + envHome = arguments[2].toString().replace(/\/env$/, '/'); +} + +load(envHome + "jshint.js"); + +if (typeof(JSHINT) === 'undefined') { + print('jshint: Could not load jshint.js, tried "' + envHome + 'jshint.js".'); + quit(); +} + +var process = function (args) { + var lineCount = parseInt(args[0], 10), + opts = (function (arg) { + switch (arg) { + case undefined: + case '': + return {}; + default: + return eval('(' + arg + ')'); + } + })(args[1]); + + if (isNaN(lineCount)) { + print('jshint: Must provide number of lines to read from stdin.'); + quit(); + } + + var input = readline(); + + for (var i = 0; i < lineCount; ++i) { + input += '\n' + readline(); + } + + var results = [], + err; + + try + { + if (!JSHINT(input, opts)) { + for (i = 0; err = JSHINT.errors[i]; i++) { + results.push(err); + } + } + } + catch (e) { + results.push({line: 1, character: 1, reason: e.message}); + + for (i = 0; err = JSHINT.errors[i]; i++) { + results.push(err); + } + } + + print(JSON.stringify(results)); + quit(); +}; + +process(arguments); diff --git a/SublimeLinter/sublimelinter/modules/libs/jshint/jshint_node.js b/SublimeLinter/sublimelinter/modules/libs/jshint/jshint_node.js new file mode 100644 index 0000000..d44db6a --- /dev/null +++ b/SublimeLinter/sublimelinter/modules/libs/jshint/jshint_node.js @@ -0,0 +1,74 @@ +/*jshint node:true */ + +/* + Created by Aparajita Fishman (https://github.com/aparajita) + + This code is adapted from the node.js jshint module to work with stdin instead of a file, + and to take jshint options from the command line rather than a file. + + ** Licensed Under ** + + The MIT License + http://www.opensource.org/licenses/mit-license.php + + usage: node /path/to/jshint_node.js ["{option1:true,option2:false}"] + */ + +var _fs = require('fs'), + _util = require('util'), + _path = require('path'), + _jshint = require(_path.join(_path.dirname(process.argv[1]), 'jshint.js')); + +function hint(code, config) +{ + var results = []; + + try { + if (!_jshint.JSHINT(code, config)) { + _jshint.JSHINT.errors.forEach(function (error) { + if (error) { + results.push(error); + } + }); + } + } + catch (e) { + results.push({line: 1, character: 1, reason: e.message}); + + _jshint.JSHINT.errors.forEach(function (error) { + if (error) { + results.push(error); + } + }); + } + + _util.puts(JSON.stringify(results)); + process.exit(0); +} + +function run() +{ + var code = '', + config = JSON.parse(process.argv[2] || '{}'), + filename = process.argv[3] || ''; + + if (filename) + { + hint(_fs.readFileSync(filename, 'utf-8'), config); + } + else + { + process.stdin.resume(); + process.stdin.setEncoding('utf8'); + + process.stdin.on('data', function (chunk) { + code += chunk; + }); + + process.stdin.on('end', function () { + hint(code, config); + }); + } +} + +run(); diff --git a/SublimeLinter/sublimelinter/modules/libs/pep8.py b/SublimeLinter/sublimelinter/modules/libs/pep8.py new file mode 100644 index 0000000..227a9a3 --- /dev/null +++ b/SublimeLinter/sublimelinter/modules/libs/pep8.py @@ -0,0 +1,1360 @@ +#!/usr/bin/python +# pep8.py - Check Python source code formatting, according to PEP 8 +# Copyright (C) 2006 Johann C. Rocholl +# +# 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. + +""" +Check Python source code formatting, according to PEP 8: +http://www.python.org/dev/peps/pep-0008/ + +For usage and a list of options, try this: +$ python pep8.py -h + +This program and its regression test suite live here: +http://github.com/jcrocholl/pep8 + +Groups of errors and warnings: +E errors +W warnings +100 indentation +200 whitespace +300 blank lines +400 imports +500 line length +600 deprecation +700 statements + +You can add checks to this program by writing plugins. Each plugin is +a simple function that is called for each line of source code, either +physical or logical. + +Physical line: +- Raw line of text from the input file. + +Logical line: +- Multi-line statements converted to a single line. +- Stripped left and right. +- Contents of strings replaced with 'xxx' of same length. +- Comments removed. + +The check function requests physical or logical lines by the name of +the first argument: + +def maximum_line_length(physical_line) +def extraneous_whitespace(logical_line) +def blank_lines(logical_line, blank_lines, indent_level, line_number) + +The last example above demonstrates how check plugins can request +additional information with extra arguments. All attributes of the +Checker object are available. Some examples: + +lines: a list of the raw lines from the input file +tokens: the tokens that contribute to this logical line +line_number: line number in the input file +blank_lines: blank lines before this one +indent_char: first indentation character in this file (' ' or '\t') +indent_level: indentation (with tabs expanded to multiples of 8) +previous_indent_level: indentation on previous line +previous_logical: previous logical line + +The docstring of each check function shall be the relevant part of +text from PEP 8. It is printed if the user enables --show-pep8. +Several docstrings contain examples directly from the PEP 8 document. + +Okay: spam(ham[1], {eggs: 2}) +E201: spam( ham[1], {eggs: 2}) + +These examples are verified automatically when pep8.py is run with the +--doctest option. You can add examples for your own check functions. +The format is simple: "Okay" or error/warning code followed by colon +and space, the rest of the line is example source code. If you put 'r' +before the docstring, you can use \n for newline, \t for tab and \s +for space. + +""" + +__version__ = '0.5.1dev' + +import os +import sys +import re +import time +import inspect +import keyword +import tokenize +from optparse import OptionParser +from fnmatch import fnmatch +try: + frozenset +except NameError: + from sets import ImmutableSet as frozenset + + +DEFAULT_EXCLUDE = '.svn,CVS,.bzr,.hg,.git' +DEFAULT_IGNORE = 'E24' +MAX_LINE_LENGTH = 79 + +INDENT_REGEX = re.compile(r'([ \t]*)') +RAISE_COMMA_REGEX = re.compile(r'raise\s+\w+\s*(,)') +SELFTEST_REGEX = re.compile(r'(Okay|[EW]\d{3}):\s(.*)') +ERRORCODE_REGEX = re.compile(r'[EW]\d{3}') +DOCSTRING_REGEX = re.compile(r'u?r?["\']') +WHITESPACE_AROUND_OPERATOR_REGEX = \ + re.compile('([^\w\s]*)\s*(\t| )\s*([^\w\s]*)') +EXTRANEOUS_WHITESPACE_REGEX = re.compile(r'[[({] | []}),;:]') +WHITESPACE_AROUND_NAMED_PARAMETER_REGEX = \ + re.compile(r'[()]|\s=[^=]|[^=!<>]=\s') + + +WHITESPACE = ' \t' + +BINARY_OPERATORS = frozenset(['**=', '*=', '+=', '-=', '!=', '<>', + '%=', '^=', '&=', '|=', '==', '/=', '//=', '<=', '>=', '<<=', '>>=', + '%', '^', '&', '|', '=', '/', '//', '<', '>', '<<']) +UNARY_OPERATORS = frozenset(['>>', '**', '*', '+', '-']) +OPERATORS = BINARY_OPERATORS | UNARY_OPERATORS +SKIP_TOKENS = frozenset([tokenize.COMMENT, tokenize.NL, tokenize.INDENT, + tokenize.DEDENT, tokenize.NEWLINE]) +E225NOT_KEYWORDS = (frozenset(keyword.kwlist + ['print']) - + frozenset(['False', 'None', 'True'])) +BENCHMARK_KEYS = ('directories', 'files', 'logical lines', 'physical lines') + +options = None +args = None + + +############################################################################## +# Plugins (check functions) for physical lines +############################################################################## + + +def tabs_or_spaces(physical_line, indent_char): + r""" + Never mix tabs and spaces. + + The most popular way of indenting Python is with spaces only. The + second-most popular way is with tabs only. Code indented with a mixture + of tabs and spaces should be converted to using spaces exclusively. When + invoking the Python command line interpreter with the -t option, it issues + warnings about code that illegally mixes tabs and spaces. When using -tt + these warnings become errors. These options are highly recommended! + + Okay: if a == 0:\n a = 1\n b = 1 + E101: if a == 0:\n a = 1\n\tb = 1 + """ + indent = INDENT_REGEX.match(physical_line).group(1) + for offset, char in enumerate(indent): + if char != indent_char: + return offset, "E101 indentation contains mixed spaces and tabs" + + +def tabs_obsolete(physical_line): + r""" + For new projects, spaces-only are strongly recommended over tabs. Most + editors have features that make this easy to do. + + Okay: if True:\n return + W191: if True:\n\treturn + """ + indent = INDENT_REGEX.match(physical_line).group(1) + if indent.count('\t'): + return indent.index('\t'), "W191 indentation contains tabs" + + +def trailing_whitespace(physical_line): + r""" + JCR: Trailing whitespace is superfluous. + FBM: Except when it occurs as part of a blank line (i.e. the line is + nothing but whitespace). According to Python docs[1] a line with only + whitespace is considered a blank line, and is to be ignored. However, + matching a blank line to its indentation level avoids mistakenly + terminating a multi-line statement (e.g. class declaration) when + pasting code into the standard Python interpreter. + + [1] http://docs.python.org/reference/lexical_analysis.html#blank-lines + + The warning returned varies on whether the line itself is blank, for easier + filtering for those who want to indent their blank lines. + + Okay: spam(1) + W291: spam(1)\s + W293: class Foo(object):\n \n bang = 12 + """ + physical_line = physical_line.rstrip('\n') # chr(10), newline + physical_line = physical_line.rstrip('\r') # chr(13), carriage return + physical_line = physical_line.rstrip('\x0c') # chr(12), form feed, ^L + stripped = physical_line.rstrip() + if physical_line != stripped: + if stripped: + return len(stripped), "W291 trailing whitespace" + else: + return 0, "W293 blank line contains whitespace" + + +def trailing_blank_lines(physical_line, lines, line_number): + r""" + JCR: Trailing blank lines are superfluous. + + Okay: spam(1) + W391: spam(1)\n + """ + if physical_line.strip() == '' and line_number == len(lines): + return 0, "W391 blank line at end of file" + + +def missing_newline(physical_line): + """ + JCR: The last line should have a newline. + """ + if physical_line.rstrip() == physical_line: + return len(physical_line), "W292 no newline at end of file" + + +def maximum_line_length(physical_line): + """ + Limit all lines to a maximum of 79 characters. + + There are still many devices around that are limited to 80 character + lines; plus, limiting windows to 80 characters makes it possible to have + several windows side-by-side. The default wrapping on such devices looks + ugly. Therefore, please limit all lines to a maximum of 79 characters. + For flowing long blocks of text (docstrings or comments), limiting the + length to 72 characters is recommended. + """ + line = physical_line.rstrip() + length = len(line) + if length > MAX_LINE_LENGTH: + try: + # The line could contain multi-byte characters + if not hasattr(line, 'decode'): # Python 3 + line = line.encode('latin-1') + length = len(line.decode('utf-8')) + except UnicodeDecodeError: + pass + if length > MAX_LINE_LENGTH: + return MAX_LINE_LENGTH, "E501 line too long (%d characters)" % length + + +############################################################################## +# Plugins (check functions) for logical lines +############################################################################## + + +def blank_lines(logical_line, blank_lines, indent_level, line_number, + previous_logical, previous_indent_level, + blank_lines_before_comment): + r""" + Separate top-level function and class definitions with two blank lines. + + Method definitions inside a class are separated by a single blank line. + + Extra blank lines may be used (sparingly) to separate groups of related + functions. Blank lines may be omitted between a bunch of related + one-liners (e.g. a set of dummy implementations). + + Use blank lines in functions, sparingly, to indicate logical sections. + + Okay: def a():\n pass\n\n\ndef b():\n pass + Okay: def a():\n pass\n\n\n# Foo\n# Bar\n\ndef b():\n pass + + E301: class Foo:\n b = 0\n def bar():\n pass + E302: def a():\n pass\n\ndef b(n):\n pass + E303: def a():\n pass\n\n\n\ndef b(n):\n pass + E303: def a():\n\n\n\n pass + E304: @decorator\n\ndef a():\n pass + """ + if line_number == 1: + return # Don't expect blank lines before the first line + max_blank_lines = max(blank_lines, blank_lines_before_comment) + if previous_logical.startswith('@'): + if max_blank_lines: + return 0, "E304 blank lines found after function decorator" + elif max_blank_lines > 2 or (indent_level and max_blank_lines == 2): + return 0, "E303 too many blank lines (%d)" % max_blank_lines + elif (logical_line.startswith('def ') or + logical_line.startswith('class ') or + logical_line.startswith('@')): + if indent_level: + if not (max_blank_lines or previous_indent_level < indent_level or + DOCSTRING_REGEX.match(previous_logical)): + return 0, "E301 expected 1 blank line, found 0" + elif max_blank_lines != 2: + return 0, "E302 expected 2 blank lines, found %d" % max_blank_lines + + +def extraneous_whitespace(logical_line): + """ + Avoid extraneous whitespace in the following situations: + + - Immediately inside parentheses, brackets or braces. + + - Immediately before a comma, semicolon, or colon. + + Okay: spam(ham[1], {eggs: 2}) + E201: spam( ham[1], {eggs: 2}) + E201: spam(ham[ 1], {eggs: 2}) + E201: spam(ham[1], { eggs: 2}) + E202: spam(ham[1], {eggs: 2} ) + E202: spam(ham[1 ], {eggs: 2}) + E202: spam(ham[1], {eggs: 2 }) + + E203: if x == 4: print x, y; x, y = y , x + E203: if x == 4: print x, y ; x, y = y, x + E203: if x == 4 : print x, y; x, y = y, x + """ + line = logical_line + for match in EXTRANEOUS_WHITESPACE_REGEX.finditer(line): + text = match.group() + char = text.strip() + found = match.start() + if text == char + ' ' and char in '([{': + return found + 1, "E201 whitespace after '%s'" % char + if text == ' ' + char and line[found - 1] != ',': + if char in '}])': + return found, "E202 whitespace before '%s'" % char + if char in ',;:': + return found, "E203 whitespace before '%s'" % char + + +def missing_whitespace(logical_line): + """ + JCR: Each comma, semicolon or colon should be followed by whitespace. + + Okay: [a, b] + Okay: (3,) + Okay: a[1:4] + Okay: a[:4] + Okay: a[1:] + Okay: a[1:4:2] + E231: ['a','b'] + E231: foo(bar,baz) + """ + line = logical_line + for index in range(len(line) - 1): + char = line[index] + if char in ',;:' and line[index + 1] not in WHITESPACE: + before = line[:index] + if char == ':' and before.count('[') > before.count(']'): + continue # Slice syntax, no space required + if char == ',' and line[index + 1] == ')': + continue # Allow tuple with only one element: (3,) + return index, "E231 missing whitespace after '%s'" % char + + +def indentation(logical_line, previous_logical, indent_char, + indent_level, previous_indent_level): + r""" + Use 4 spaces per indentation level. + + For really old code that you don't want to mess up, you can continue to + use 8-space tabs. + + Okay: a = 1 + Okay: if a == 0:\n a = 1 + E111: a = 1 + + Okay: for item in items:\n pass + E112: for item in items:\npass + + Okay: a = 1\nb = 2 + E113: a = 1\n b = 2 + """ + if indent_char == ' ' and indent_level % 4: + return 0, "E111 indentation is not a multiple of four" + indent_expect = previous_logical.endswith(':') + if indent_expect and indent_level <= previous_indent_level: + return 0, "E112 expected an indented block" + if indent_level > previous_indent_level and not indent_expect: + return 0, "E113 unexpected indentation" + + +def whitespace_before_parameters(logical_line, tokens): + """ + Avoid extraneous whitespace in the following situations: + + - Immediately before the open parenthesis that starts the argument + list of a function call. + + - Immediately before the open parenthesis that starts an indexing or + slicing. + + Okay: spam(1) + E211: spam (1) + + Okay: dict['key'] = list[index] + E211: dict ['key'] = list[index] + E211: dict['key'] = list [index] + """ + prev_type = tokens[0][0] + prev_text = tokens[0][1] + prev_end = tokens[0][3] + for index in range(1, len(tokens)): + token_type, text, start, end, line = tokens[index] + if (token_type == tokenize.OP and + text in '([' and + start != prev_end and + (prev_type == tokenize.NAME or prev_text in '}])') and + # Syntax "class A (B):" is allowed, but avoid it + (index < 2 or tokens[index - 2][1] != 'class') and + # Allow "return (a.foo for a in range(5))" + (not keyword.iskeyword(prev_text))): + return prev_end, "E211 whitespace before '%s'" % text + prev_type = token_type + prev_text = text + prev_end = end + + +def whitespace_around_operator(logical_line): + """ + Avoid extraneous whitespace in the following situations: + + - More than one space around an assignment (or other) operator to + align it with another. + + Okay: a = 12 + 3 + E221: a = 4 + 5 + E222: a = 4 + 5 + E223: a = 4\t+ 5 + E224: a = 4 +\t5 + """ + for match in WHITESPACE_AROUND_OPERATOR_REGEX.finditer(logical_line): + before, whitespace, after = match.groups() + tab = whitespace == '\t' + offset = match.start(2) + if before in OPERATORS: + return offset, (tab and "E224 tab after operator" or + "E222 multiple spaces after operator") + elif after in OPERATORS: + return offset, (tab and "E223 tab before operator" or + "E221 multiple spaces before operator") + + +def missing_whitespace_around_operator(logical_line, tokens): + r""" + - Always surround these binary operators with a single space on + either side: assignment (=), augmented assignment (+=, -= etc.), + comparisons (==, <, >, !=, <>, <=, >=, in, not in, is, is not), + Booleans (and, or, not). + + - Use spaces around arithmetic operators. + + Okay: i = i + 1 + Okay: submitted += 1 + Okay: x = x * 2 - 1 + Okay: hypot2 = x * x + y * y + Okay: c = (a + b) * (a - b) + Okay: foo(bar, key='word', *args, **kwargs) + Okay: baz(**kwargs) + Okay: negative = -1 + Okay: spam(-1) + Okay: alpha[:-i] + Okay: if not -5 < x < +5:\n pass + Okay: lambda *args, **kw: (args, kw) + + E225: i=i+1 + E225: submitted +=1 + E225: x = x*2 - 1 + E225: hypot2 = x*x + y*y + E225: c = (a+b) * (a-b) + E225: c = alpha -4 + E225: z = x **y + """ + parens = 0 + need_space = False + prev_type = tokenize.OP + prev_text = prev_end = None + for token_type, text, start, end, line in tokens: + if token_type in (tokenize.NL, tokenize.NEWLINE, tokenize.ERRORTOKEN): + # ERRORTOKEN is triggered by backticks in Python 3000 + continue + if text in ('(', 'lambda'): + parens += 1 + elif text == ')': + parens -= 1 + if need_space: + if start != prev_end: + need_space = False + elif text == '>' and prev_text == '<': + # Tolerate the "<>" operator, even if running Python 3 + pass + else: + return prev_end, "E225 missing whitespace around operator" + elif token_type == tokenize.OP and prev_end is not None: + if text == '=' and parens: + # Allow keyword args or defaults: foo(bar=None). + pass + elif text in BINARY_OPERATORS: + need_space = True + elif text in UNARY_OPERATORS: + # Allow unary operators: -123, -x, +1. + # Allow argument unpacking: foo(*args, **kwargs). + if prev_type == tokenize.OP: + if prev_text in '}])': + need_space = True + elif prev_type == tokenize.NAME: + if prev_text not in E225NOT_KEYWORDS: + need_space = True + else: + need_space = True + if need_space and start == prev_end: + return prev_end, "E225 missing whitespace around operator" + prev_type = token_type + prev_text = text + prev_end = end + + +def whitespace_around_comma(logical_line): + """ + Avoid extraneous whitespace in the following situations: + + - More than one space around an assignment (or other) operator to + align it with another. + + JCR: This should also be applied around comma etc. + Note: these checks are disabled by default + + Okay: a = (1, 2) + E241: a = (1, 2) + E242: a = (1,\t2) + """ + line = logical_line + for separator in ',;:': + found = line.find(separator + ' ') + if found > -1: + return found + 1, "E241 multiple spaces after '%s'" % separator + found = line.find(separator + '\t') + if found > -1: + return found + 1, "E242 tab after '%s'" % separator + + +def whitespace_around_named_parameter_equals(logical_line): + """ + Don't use spaces around the '=' sign when used to indicate a + keyword argument or a default parameter value. + + Okay: def complex(real, imag=0.0): + Okay: return magic(r=real, i=imag) + Okay: boolean(a == b) + Okay: boolean(a != b) + Okay: boolean(a <= b) + Okay: boolean(a >= b) + + E251: def complex(real, imag = 0.0): + E251: return magic(r = real, i = imag) + """ + parens = 0 + for match in WHITESPACE_AROUND_NAMED_PARAMETER_REGEX.finditer( + logical_line): + text = match.group() + if parens and len(text) == 3: + issue = "E251 no spaces around keyword / parameter equals" + return match.start(), issue + if text == '(': + parens += 1 + elif text == ')': + parens -= 1 + + +def whitespace_before_inline_comment(logical_line, tokens): + """ + Separate inline comments by at least two spaces. + + An inline comment is a comment on the same line as a statement. Inline + comments should be separated by at least two spaces from the statement. + They should start with a # and a single space. + + Okay: x = x + 1 # Increment x + Okay: x = x + 1 # Increment x + E261: x = x + 1 # Increment x + E262: x = x + 1 #Increment x + E262: x = x + 1 # Increment x + """ + prev_end = (0, 0) + for token_type, text, start, end, line in tokens: + if token_type == tokenize.NL: + continue + if token_type == tokenize.COMMENT: + if not line[:start[1]].strip(): + continue + if prev_end[0] == start[0] and start[1] < prev_end[1] + 2: + return (prev_end, + "E261 at least two spaces before inline comment") + if (len(text) > 1 and text.startswith('# ') + or not text.startswith('# ')): + return start, "E262 inline comment should start with '# '" + else: + prev_end = end + + +def imports_on_separate_lines(logical_line): + r""" + Imports should usually be on separate lines. + + Okay: import os\nimport sys + E401: import sys, os + + Okay: from subprocess import Popen, PIPE + Okay: from myclas import MyClass + Okay: from foo.bar.yourclass import YourClass + Okay: import myclass + Okay: import foo.bar.yourclass + """ + line = logical_line + if line.startswith('import '): + found = line.find(',') + if found > -1: + return found, "E401 multiple imports on one line" + + +def compound_statements(logical_line): + r""" + Compound statements (multiple statements on the same line) are + generally discouraged. + + While sometimes it's okay to put an if/for/while with a small body + on the same line, never do this for multi-clause statements. Also + avoid folding such long lines! + + Okay: if foo == 'blah':\n do_blah_thing() + Okay: do_one() + Okay: do_two() + Okay: do_three() + + E701: if foo == 'blah': do_blah_thing() + E701: for x in lst: total += x + E701: while t < 10: t = delay() + E701: if foo == 'blah': do_blah_thing() + E701: else: do_non_blah_thing() + E701: try: something() + E701: finally: cleanup() + E701: if foo == 'blah': one(); two(); three() + + E702: do_one(); do_two(); do_three() + """ + line = logical_line + found = line.find(':') + if -1 < found < len(line) - 1: + before = line[:found] + if (before.count('{') <= before.count('}') and # {'a': 1} (dict) + before.count('[') <= before.count(']') and # [1:2] (slice) + not re.search(r'\blambda\b', before)): # lambda x: x + return found, "E701 multiple statements on one line (colon)" + found = line.find(';') + if -1 < found: + return found, "E702 multiple statements on one line (semicolon)" + + +def python_3000_has_key(logical_line): + """ + The {}.has_key() method will be removed in the future version of + Python. Use the 'in' operation instead, like: + d = {"a": 1, "b": 2} + if "b" in d: + print d["b"] + """ + pos = logical_line.find('.has_key(') + if pos > -1: + return pos, "W601 .has_key() is deprecated, use 'in'" + + +def python_3000_raise_comma(logical_line): + """ + When raising an exception, use "raise ValueError('message')" + instead of the older form "raise ValueError, 'message'". + + The paren-using form is preferred because when the exception arguments + are long or include string formatting, you don't need to use line + continuation characters thanks to the containing parentheses. The older + form will be removed in Python 3000. + """ + match = RAISE_COMMA_REGEX.match(logical_line) + if match: + return match.start(1), "W602 deprecated form of raising exception" + + +def python_3000_not_equal(logical_line): + """ + != can also be written <>, but this is an obsolete usage kept for + backwards compatibility only. New code should always use !=. + The older syntax is removed in Python 3000. + """ + pos = logical_line.find('<>') + if pos > -1: + return pos, "W603 '<>' is deprecated, use '!='" + + +def python_3000_backticks(logical_line): + """ + Backticks are removed in Python 3000. + Use repr() instead. + """ + pos = logical_line.find('`') + if pos > -1: + return pos, "W604 backticks are deprecated, use 'repr()'" + + +############################################################################## +# Helper functions +############################################################################## + + +if '' == ''.encode(): + # Python 2: implicit encoding. + def readlines(filename): + return open(filename).readlines() +else: + # Python 3: decode to latin-1. + # This function is lazy, it does not read the encoding declaration. + # XXX: use tokenize.detect_encoding() + def readlines(filename): + return open(filename, encoding='latin-1').readlines() + + +def expand_indent(line): + """ + Return the amount of indentation. + Tabs are expanded to the next multiple of 8. + + >>> expand_indent(' ') + 4 + >>> expand_indent('\\t') + 8 + >>> expand_indent(' \\t') + 8 + >>> expand_indent(' \\t') + 8 + >>> expand_indent(' \\t') + 16 + """ + result = 0 + for char in line: + if char == '\t': + result = result // 8 * 8 + 8 + elif char == ' ': + result += 1 + else: + break + return result + + +def mute_string(text): + """ + Replace contents with 'xxx' to prevent syntax matching. + + >>> mute_string('"abc"') + '"xxx"' + >>> mute_string("'''abc'''") + "'''xxx'''" + >>> mute_string("r'abc'") + "r'xxx'" + """ + start = 1 + end = len(text) - 1 + # String modifiers (e.g. u or r) + if text.endswith('"'): + start += text.index('"') + elif text.endswith("'"): + start += text.index("'") + # Triple quotes + if text.endswith('"""') or text.endswith("'''"): + start += 2 + end -= 2 + return text[:start] + 'x' * (end - start) + text[end:] + + +def message(text): + """Print a message.""" + # print >> sys.stderr, options.prog + ': ' + text + # print >> sys.stderr, text + print(text) + + +############################################################################## +# Framework to run all checks +############################################################################## + + +def find_checks(argument_name): + """ + Find all globally visible functions where the first argument name + starts with argument_name. + """ + checks = [] + for name, function in globals().items(): + if not inspect.isfunction(function): + continue + args = inspect.getargspec(function)[0] + if args and args[0].startswith(argument_name): + codes = ERRORCODE_REGEX.findall(inspect.getdoc(function) or '') + for code in codes or ['']: + if not code or not ignore_code(code): + checks.append((name, function, args)) + break + checks.sort() + return checks + + +class Checker(object): + """ + Load a Python source file, tokenize it, check coding style. + """ + + def __init__(self, filename, lines=None): + self.filename = filename + if filename is None: + self.filename = 'stdin' + self.lines = lines or [] + elif lines is None: + self.lines = readlines(filename) + else: + self.lines = lines + options.counters['physical lines'] += len(self.lines) + + def readline(self): + """ + Get the next line from the input buffer. + """ + self.line_number += 1 + if self.line_number > len(self.lines): + return '' + return self.lines[self.line_number - 1] + + def readline_check_physical(self): + """ + Check and return the next physical line. This method can be + used to feed tokenize.generate_tokens. + """ + line = self.readline() + if line: + self.check_physical(line) + return line + + def run_check(self, check, argument_names): + """ + Run a check plugin. + """ + arguments = [] + for name in argument_names: + arguments.append(getattr(self, name)) + return check(*arguments) + + def check_physical(self, line): + """ + Run all physical checks on a raw input line. + """ + self.physical_line = line + if self.indent_char is None and len(line) and line[0] in ' \t': + self.indent_char = line[0] + for name, check, argument_names in options.physical_checks: + result = self.run_check(check, argument_names) + if result is not None: + offset, text = result + self.report_error(self.line_number, offset, text, check) + + def build_tokens_line(self): + """ + Build a logical line from tokens. + """ + self.mapping = [] + logical = [] + length = 0 + previous = None + for token in self.tokens: + token_type, text = token[0:2] + if token_type in SKIP_TOKENS: + continue + if token_type == tokenize.STRING: + text = mute_string(text) + if previous: + end_line, end = previous[3] + start_line, start = token[2] + if end_line != start_line: # different row + prev_text = self.lines[end_line - 1][end - 1] + if prev_text == ',' or (prev_text not in '{[(' + and text not in '}])'): + logical.append(' ') + length += 1 + elif end != start: # different column + fill = self.lines[end_line - 1][end:start] + logical.append(fill) + length += len(fill) + self.mapping.append((length, token)) + logical.append(text) + length += len(text) + previous = token + self.logical_line = ''.join(logical) + assert self.logical_line.lstrip() == self.logical_line + assert self.logical_line.rstrip() == self.logical_line + + def check_logical(self): + """ + Build a line from tokens and run all logical checks on it. + """ + options.counters['logical lines'] += 1 + self.build_tokens_line() + first_line = self.lines[self.mapping[0][1][2][0] - 1] + indent = first_line[:self.mapping[0][1][2][1]] + self.previous_indent_level = self.indent_level + self.indent_level = expand_indent(indent) + if options.verbose >= 2: + print(self.logical_line[:80].rstrip()) + for name, check, argument_names in options.logical_checks: + if options.verbose >= 4: + print(' ' + name) + result = self.run_check(check, argument_names) + if result is not None: + offset, text = result + if isinstance(offset, tuple): + original_number, original_offset = offset + else: + for token_offset, token in self.mapping: + if offset >= token_offset: + original_number = token[2][0] + original_offset = (token[2][1] + + offset - token_offset) + self.report_error(original_number, original_offset, + text, check) + self.previous_logical = self.logical_line + + def check_all(self, expected=None, line_offset=0): + """ + Run all checks on the input file. + """ + self.expected = expected or () + self.line_offset = line_offset + self.line_number = 0 + self.file_errors = 0 + self.indent_char = None + self.indent_level = 0 + self.previous_logical = '' + self.blank_lines = 0 + self.blank_lines_before_comment = 0 + self.tokens = [] + parens = 0 + for token in tokenize.generate_tokens(self.readline_check_physical): + if options.verbose >= 3: + if token[2][0] == token[3][0]: + pos = '[%s:%s]' % (token[2][1] or '', token[3][1]) + else: + pos = 'l.%s' % token[3][0] + print('l.%s\t%s\t%s\t%r' % + (token[2][0], pos, tokenize.tok_name[token[0]], token[1])) + self.tokens.append(token) + token_type, text = token[0:2] + if token_type == tokenize.OP and text in '([{': + parens += 1 + if token_type == tokenize.OP and text in '}])': + parens -= 1 + if token_type == tokenize.NEWLINE and not parens: + self.check_logical() + self.blank_lines = 0 + self.blank_lines_before_comment = 0 + self.tokens = [] + if token_type == tokenize.NL and not parens: + if len(self.tokens) <= 1: + # The physical line contains only this token. + self.blank_lines += 1 + self.tokens = [] + if token_type == tokenize.COMMENT: + source_line = token[4] + token_start = token[2][1] + if source_line[:token_start].strip() == '': + self.blank_lines_before_comment = max(self.blank_lines, + self.blank_lines_before_comment) + self.blank_lines = 0 + if text.endswith('\n') and not parens: + # The comment also ends a physical line. This works around + # Python < 2.6 behaviour, which does not generate NL after + # a comment which is on a line by itself. + self.tokens = [] + return self.file_errors + + def report_error(self, line_number, offset, text, check): + """ + Report an error, according to options. + """ + code = text[:4] + if ignore_code(code): + return + if options.quiet == 1 and not self.file_errors: + message(self.filename) + if code in options.counters: + options.counters[code] += 1 + else: + options.counters[code] = 1 + options.messages[code] = text[5:] + if options.quiet or code in self.expected: + # Don't care about expected errors or warnings + return + self.file_errors += 1 + if options.counters[code] == 1 or options.repeat: + message("%s:%s:%d: %s" % + (self.filename, self.line_offset + line_number, + offset + 1, text)) + if options.show_source: + line = self.lines[line_number - 1] + message(line.rstrip()) + message(' ' * offset + '^') + if options.show_pep8: + message(check.__doc__.lstrip('\n').rstrip()) + + +def input_file(filename): + """ + Run all checks on a Python source file. + """ + if options.verbose: + message('checking ' + filename) + errors = Checker(filename).check_all() + + +def input_dir(dirname, runner=None): + """ + Check all Python source files in this directory and all subdirectories. + """ + dirname = dirname.rstrip('/') + if excluded(dirname): + return + if runner is None: + runner = input_file + for root, dirs, files in os.walk(dirname): + if options.verbose: + message('directory ' + root) + options.counters['directories'] += 1 + dirs.sort() + for subdir in dirs: + if excluded(subdir): + dirs.remove(subdir) + files.sort() + for filename in files: + if filename_match(filename) and not excluded(filename): + options.counters['files'] += 1 + runner(os.path.join(root, filename)) + + +def excluded(filename): + """ + Check if options.exclude contains a pattern that matches filename. + """ + basename = os.path.basename(filename) + for pattern in options.exclude: + if fnmatch(basename, pattern): + # print basename, 'excluded because it matches', pattern + return True + + +def filename_match(filename): + """ + Check if options.filename contains a pattern that matches filename. + If options.filename is unspecified, this always returns True. + """ + if not options.filename: + return True + for pattern in options.filename: + if fnmatch(filename, pattern): + return True + + +def ignore_code(code): + """ + Check if options.ignore contains a prefix of the error code. + If options.select contains a prefix of the error code, do not ignore it. + """ + for select in options.select: + if code.startswith(select): + return False + for ignore in options.ignore: + if code.startswith(ignore): + return True + + +def reset_counters(): + for key in list(options.counters.keys()): + if key not in BENCHMARK_KEYS: + del options.counters[key] + options.messages = {} + + +def get_error_statistics(): + """Get error statistics.""" + return get_statistics("E") + + +def get_warning_statistics(): + """Get warning statistics.""" + return get_statistics("W") + + +def get_statistics(prefix=''): + """ + Get statistics for message codes that start with the prefix. + + prefix='' matches all errors and warnings + prefix='E' matches all errors + prefix='W' matches all warnings + prefix='E4' matches all errors that have to do with imports + """ + stats = [] + keys = list(options.messages.keys()) + keys.sort() + for key in keys: + if key.startswith(prefix): + stats.append('%-7s %s %s' % + (options.counters[key], key, options.messages[key])) + return stats + + +def get_count(prefix=''): + """Return the total count of errors and warnings.""" + keys = list(options.messages.keys()) + count = 0 + for key in keys: + if key.startswith(prefix): + count += options.counters[key] + return count + + +def print_statistics(prefix=''): + """Print overall statistics (number of errors and warnings).""" + for line in get_statistics(prefix): + print(line) + + +def print_benchmark(elapsed): + """ + Print benchmark numbers. + """ + print('%-7.2f %s' % (elapsed, 'seconds elapsed')) + for key in BENCHMARK_KEYS: + print('%-7d %s per second (%d total)' % ( + options.counters[key] / elapsed, key, + options.counters[key])) + + +def run_tests(filename): + """ + Run all the tests from a file. + + A test file can provide many tests. Each test starts with a declaration. + This declaration is a single line starting with '#:'. + It declares codes of expected failures, separated by spaces or 'Okay' + if no failure is expected. + If the file does not contain such declaration, it should pass all tests. + If the declaration is empty, following lines are not checked, until next + declaration. + + Examples: + + * Only E224 and W701 are expected: #: E224 W701 + * Following example is conform: #: Okay + * Don't check these lines: #: + """ + lines = readlines(filename) + ['#:\n'] + line_offset = 0 + codes = ['Okay'] + testcase = [] + for index, line in enumerate(lines): + if not line.startswith('#:'): + if codes: + # Collect the lines of the test case + testcase.append(line) + continue + if codes and index > 0: + label = '%s:%s:1' % (filename, line_offset + 1) + codes = [c for c in codes if c != 'Okay'] + # Run the checker + errors = Checker(filename, testcase).check_all(codes, line_offset) + # Check if the expected errors were found + for code in codes: + if not options.counters.get(code): + errors += 1 + message('%s: error %s not found' % (label, code)) + if options.verbose and not errors: + message('%s: passed (%s)' % (label, ' '.join(codes))) + # Keep showing errors for multiple tests + reset_counters() + # output the real line numbers + line_offset = index + # configure the expected errors + codes = line.split()[1:] + # empty the test case buffer + del testcase[:] + + +def selftest(): + """ + Test all check functions with test cases in docstrings. + """ + count_passed = 0 + count_failed = 0 + checks = options.physical_checks + options.logical_checks + for name, check, argument_names in checks: + for line in check.__doc__.splitlines(): + line = line.lstrip() + match = SELFTEST_REGEX.match(line) + if match is None: + continue + code, source = match.groups() + checker = Checker(None) + for part in source.split(r'\n'): + part = part.replace(r'\t', '\t') + part = part.replace(r'\s', ' ') + checker.lines.append(part + '\n') + options.quiet = 2 + checker.check_all() + error = None + if code == 'Okay': + if len(options.counters) > len(BENCHMARK_KEYS): + codes = [key for key in options.counters.keys() + if key not in BENCHMARK_KEYS] + error = "incorrectly found %s" % ', '.join(codes) + elif not options.counters.get(code): + error = "failed to find %s" % code + # Reset the counters + reset_counters() + if not error: + count_passed += 1 + else: + count_failed += 1 + if len(checker.lines) == 1: + print("pep8.py: %s: %s" % + (error, checker.lines[0].rstrip())) + else: + print("pep8.py: %s:" % error) + for line in checker.lines: + print(line.rstrip()) + if options.verbose: + print("%d passed and %d failed." % (count_passed, count_failed)) + if count_failed: + print("Test failed.") + else: + print("Test passed.") + + +def process_options(arglist=None): + """ + Process options passed either via arglist or via command line args. + """ + global options, args + parser = OptionParser(version=__version__, + usage="%prog [options] input ...") + parser.add_option('-v', '--verbose', default=0, action='count', + help="print status messages, or debug with -vv") + parser.add_option('-q', '--quiet', default=0, action='count', + help="report only file names, or nothing with -qq") + parser.add_option('-r', '--repeat', action='store_true', + help="show all occurrences of the same error") + parser.add_option('--exclude', metavar='patterns', default=DEFAULT_EXCLUDE, + help="exclude files or directories which match these " + "comma separated patterns (default: %s)" % + DEFAULT_EXCLUDE) + parser.add_option('--filename', metavar='patterns', default='*.py', + help="when parsing directories, only check filenames " + "matching these comma separated patterns (default: " + "*.py)") + parser.add_option('--select', metavar='errors', default='', + help="select errors and warnings (e.g. E,W6)") + parser.add_option('--ignore', metavar='errors', default='', + help="skip errors and warnings (e.g. E4,W)") + parser.add_option('--show-source', action='store_true', + help="show source code for each error") + parser.add_option('--show-pep8', action='store_true', + help="show text of PEP 8 for each error") + parser.add_option('--statistics', action='store_true', + help="count errors and warnings") + parser.add_option('--count', action='store_true', + help="print total number of errors and warnings " + "to standard error and set exit code to 1 if " + "total is not null") + parser.add_option('--benchmark', action='store_true', + help="measure processing speed") + parser.add_option('--testsuite', metavar='dir', + help="run regression tests from dir") + parser.add_option('--doctest', action='store_true', + help="run doctest on myself") + options, args = parser.parse_args(arglist) + if options.testsuite: + args.append(options.testsuite) + if not args and not options.doctest: + parser.error('input not specified') + options.prog = os.path.basename(sys.argv[0]) + options.exclude = options.exclude.split(',') + for index in range(len(options.exclude)): + options.exclude[index] = options.exclude[index].rstrip('/') + if options.filename: + options.filename = options.filename.split(',') + if options.select: + options.select = options.select.split(',') + else: + options.select = [] + if options.ignore: + options.ignore = options.ignore.split(',') + elif options.select: + # Ignore all checks which are not explicitly selected + options.ignore = [''] + elif options.testsuite or options.doctest: + # For doctest and testsuite, all checks are required + options.ignore = [] + else: + # The default choice: ignore controversial checks + options.ignore = DEFAULT_IGNORE.split(',') + options.physical_checks = find_checks('physical_line') + options.logical_checks = find_checks('logical_line') + options.counters = dict.fromkeys(BENCHMARK_KEYS, 0) + options.messages = {} + return options, args + + +def _main(): + """ + Parse options and run checks on Python source. + """ + options, args = process_options() + if options.doctest: + import doctest + doctest.testmod(verbose=options.verbose) + selftest() + if options.testsuite: + runner = run_tests + else: + runner = input_file + start_time = time.time() + for path in args: + if os.path.isdir(path): + input_dir(path, runner=runner) + elif not excluded(path): + options.counters['files'] += 1 + runner(path) + elapsed = time.time() - start_time + if options.statistics: + print_statistics() + if options.benchmark: + print_benchmark(elapsed) + count = get_count() + if count: + if options.count: + sys.stderr.write(str(count) + '\n') + sys.exit(1) + + +if __name__ == '__main__': + _main() diff --git a/SublimeLinter/sublimelinter/modules/libs/pyflakes/__init__.py b/SublimeLinter/sublimelinter/modules/libs/pyflakes/__init__.py new file mode 100644 index 0000000..abeeedb --- /dev/null +++ b/SublimeLinter/sublimelinter/modules/libs/pyflakes/__init__.py @@ -0,0 +1 @@ +__version__ = '0.4.0' diff --git a/SublimeLinter/sublimelinter/modules/libs/pyflakes/checker.py b/SublimeLinter/sublimelinter/modules/libs/pyflakes/checker.py new file mode 100644 index 0000000..fa2494e --- /dev/null +++ b/SublimeLinter/sublimelinter/modules/libs/pyflakes/checker.py @@ -0,0 +1,635 @@ +# -*- test-case-name: pyflakes -*- +# (c) 2005-2010 Divmod, Inc. +# See LICENSE file for details + +import __builtin__ +import os.path +import _ast + +from pyflakes import messages + + +# utility function to iterate over an AST node's children, adapted +# from Python 2.6's standard ast module +try: + import ast + iter_child_nodes = ast.iter_child_nodes +except (ImportError, AttributeError): + def iter_child_nodes(node, astcls=_ast.AST): + """ + Yield all direct child nodes of *node*, that is, all fields that are nodes + and all items of fields that are lists of nodes. + """ + for name in node._fields: + field = getattr(node, name, None) + if isinstance(field, astcls): + yield field + elif isinstance(field, list): + for item in field: + yield item + + +class Binding(object): + """ + Represents the binding of a value to a name. + + The checker uses this to keep track of which names have been bound and + which names have not. See L{Assignment} for a special type of binding that + is checked with stricter rules. + + @ivar used: pair of (L{Scope}, line-number) indicating the scope and + line number that this binding was last used + """ + + def __init__(self, name, source): + self.name = name + self.source = source + self.used = False + + + def __str__(self): + return self.name + + + def __repr__(self): + return '<%s object %r from line %r at 0x%x>' % (self.__class__.__name__, + self.name, + self.source.lineno, + id(self)) + + + +class UnBinding(Binding): + '''Created by the 'del' operator.''' + + + +class Importation(Binding): + """ + A binding created by an import statement. + + @ivar fullName: The complete name given to the import statement, + possibly including multiple dotted components. + @type fullName: C{str} + """ + def __init__(self, name, source): + self.fullName = name + name = name.split('.')[0] + super(Importation, self).__init__(name, source) + + + +class Argument(Binding): + """ + Represents binding a name as an argument. + """ + + + +class Assignment(Binding): + """ + Represents binding a name with an explicit assignment. + + The checker will raise warnings for any Assignment that isn't used. Also, + the checker does not consider assignments in tuple/list unpacking to be + Assignments, rather it treats them as simple Bindings. + """ + + + +class FunctionDefinition(Binding): + _property_decorator = False + + + +class ExportBinding(Binding): + """ + A binding created by an C{__all__} assignment. If the names in the list + can be determined statically, they will be treated as names for export and + additional checking applied to them. + + The only C{__all__} assignment that can be recognized is one which takes + the value of a literal list containing literal strings. For example:: + + __all__ = ["foo", "bar"] + + Names which are imported and not otherwise used but appear in the value of + C{__all__} will not have an unused import warning reported for them. + """ + def names(self): + """ + Return a list of the names referenced by this binding. + """ + names = [] + if isinstance(self.source, _ast.List): + for node in self.source.elts: + if isinstance(node, _ast.Str): + names.append(node.s) + return names + + + +class Scope(dict): + importStarred = False # set to True when import * is found + + + def __repr__(self): + return '<%s at 0x%x %s>' % (self.__class__.__name__, id(self), dict.__repr__(self)) + + + def __init__(self): + super(Scope, self).__init__() + + + +class ClassScope(Scope): + pass + + + +class FunctionScope(Scope): + """ + I represent a name scope for a function. + + @ivar globals: Names declared 'global' in this function. + """ + def __init__(self): + super(FunctionScope, self).__init__() + self.globals = {} + + + +class ModuleScope(Scope): + pass + + +# Globally defined names which are not attributes of the __builtin__ module. +_MAGIC_GLOBALS = ['__file__', '__builtins__'] + + + +class Checker(object): + """ + I check the cleanliness and sanity of Python code. + + @ivar _deferredFunctions: Tracking list used by L{deferFunction}. Elements + of the list are two-tuples. The first element is the callable passed + to L{deferFunction}. The second element is a copy of the scope stack + at the time L{deferFunction} was called. + + @ivar _deferredAssignments: Similar to C{_deferredFunctions}, but for + callables which are deferred assignment checks. + """ + + nodeDepth = 0 + traceTree = False + + def __init__(self, tree, filename=None): + if filename is None: + filename = '(none)' + self._deferredFunctions = [] + self._deferredAssignments = [] + self.dead_scopes = [] + self.messages = [] + self.filename = filename + self.scopeStack = [ModuleScope()] + self.futuresAllowed = True + self.handleChildren(tree) + self._runDeferred(self._deferredFunctions) + # Set _deferredFunctions to None so that deferFunction will fail + # noisily if called after we've run through the deferred functions. + self._deferredFunctions = None + self._runDeferred(self._deferredAssignments) + # Set _deferredAssignments to None so that deferAssignment will fail + # noisly if called after we've run through the deferred assignments. + self._deferredAssignments = None + del self.scopeStack[1:] + self.popScope() + self.check_dead_scopes() + + + def deferFunction(self, callable): + ''' + Schedule a function handler to be called just before completion. + + This is used for handling function bodies, which must be deferred + because code later in the file might modify the global scope. When + `callable` is called, the scope at the time this is called will be + restored, however it will contain any new bindings added to it. + ''' + self._deferredFunctions.append((callable, self.scopeStack[:])) + + + def deferAssignment(self, callable): + """ + Schedule an assignment handler to be called just after deferred + function handlers. + """ + self._deferredAssignments.append((callable, self.scopeStack[:])) + + + def _runDeferred(self, deferred): + """ + Run the callables in C{deferred} using their associated scope stack. + """ + for handler, scope in deferred: + self.scopeStack = scope + handler() + + + def scope(self): + return self.scopeStack[-1] + scope = property(scope) + + def popScope(self): + self.dead_scopes.append(self.scopeStack.pop()) + + + def check_dead_scopes(self): + """ + Look at scopes which have been fully examined and report names in them + which were imported but unused. + """ + for scope in self.dead_scopes: + export = isinstance(scope.get('__all__'), ExportBinding) + if export: + all = scope['__all__'].names() + if os.path.split(self.filename)[1] != '__init__.py': + # Look for possible mistakes in the export list + undefined = set(all) - set(scope) + for name in undefined: + self.report( + messages.UndefinedExport, + scope['__all__'].source, + name) + else: + all = [] + + # Look for imported names that aren't used. + for importation in scope.itervalues(): + if isinstance(importation, Importation): + if not importation.used and importation.name not in all: + self.report( + messages.UnusedImport, + importation.source, + importation.name) + + + def pushFunctionScope(self): + self.scopeStack.append(FunctionScope()) + + def pushClassScope(self): + self.scopeStack.append(ClassScope()) + + def report(self, messageClass, *args, **kwargs): + self.messages.append(messageClass(self.filename, *args, **kwargs)) + + def handleChildren(self, tree): + for node in iter_child_nodes(tree): + self.handleNode(node, tree) + + def isDocstring(self, node): + """ + Determine if the given node is a docstring, as long as it is at the + correct place in the node tree. + """ + return isinstance(node, _ast.Str) or \ + (isinstance(node, _ast.Expr) and + isinstance(node.value, _ast.Str)) + + def handleNode(self, node, parent): + node.parent = parent + if self.traceTree: + print ' ' * self.nodeDepth + node.__class__.__name__ + self.nodeDepth += 1 + if self.futuresAllowed and not \ + (isinstance(node, _ast.ImportFrom) or self.isDocstring(node)): + self.futuresAllowed = False + nodeType = node.__class__.__name__.upper() + try: + handler = getattr(self, nodeType) + handler(node) + finally: + self.nodeDepth -= 1 + if self.traceTree: + print ' ' * self.nodeDepth + 'end ' + node.__class__.__name__ + + def ignore(self, node): + pass + + # "stmt" type nodes + RETURN = DELETE = PRINT = WHILE = IF = WITH = RAISE = TRYEXCEPT = \ + TRYFINALLY = ASSERT = EXEC = EXPR = handleChildren + + CONTINUE = BREAK = PASS = ignore + + # "expr" type nodes + BOOLOP = BINOP = UNARYOP = IFEXP = DICT = SET = YIELD = COMPARE = \ + CALL = REPR = ATTRIBUTE = SUBSCRIPT = LIST = TUPLE = handleChildren + + NUM = STR = ELLIPSIS = ignore + + # "slice" type nodes + SLICE = EXTSLICE = INDEX = handleChildren + + # expression contexts are node instances too, though being constants + LOAD = STORE = DEL = AUGLOAD = AUGSTORE = PARAM = ignore + + # same for operators + AND = OR = ADD = SUB = MULT = DIV = MOD = POW = LSHIFT = RSHIFT = \ + BITOR = BITXOR = BITAND = FLOORDIV = INVERT = NOT = UADD = USUB = \ + EQ = NOTEQ = LT = LTE = GT = GTE = IS = ISNOT = IN = NOTIN = ignore + + # additional node types + COMPREHENSION = EXCEPTHANDLER = KEYWORD = handleChildren + + def addBinding(self, loc, value, reportRedef=True): + '''Called when a binding is altered. + + - `loc` is the location (an object with lineno and optionally + col_offset attributes) of the statement responsible for the change + - `value` is the optional new value, a Binding instance, associated + with the binding; if None, the binding is deleted if it exists. + - if `reportRedef` is True (default), rebinding while unused will be + reported. + ''' + if (isinstance(self.scope.get(value.name), FunctionDefinition) + and isinstance(value, FunctionDefinition)): + if not value._property_decorator: + self.report(messages.RedefinedFunction, + loc, value.name, self.scope[value.name].source) + + if not isinstance(self.scope, ClassScope): + for scope in self.scopeStack[::-1]: + existing = scope.get(value.name) + if (isinstance(existing, Importation) + and not existing.used + and (not isinstance(value, Importation) or value.fullName == existing.fullName) + and reportRedef): + + self.report(messages.RedefinedWhileUnused, + loc, value.name, scope[value.name].source) + + if isinstance(value, UnBinding): + try: + del self.scope[value.name] + except KeyError: + self.report(messages.UndefinedName, loc, value.name) + else: + self.scope[value.name] = value + + def GLOBAL(self, node): + """ + Keep track of globals declarations. + """ + if isinstance(self.scope, FunctionScope): + self.scope.globals.update(dict.fromkeys(node.names)) + + def LISTCOMP(self, node): + # handle generators before element + for gen in node.generators: + self.handleNode(gen, node) + self.handleNode(node.elt, node) + + GENERATOREXP = SETCOMP = LISTCOMP + + # dictionary comprehensions; introduced in Python 2.7 + def DICTCOMP(self, node): + for gen in node.generators: + self.handleNode(gen, node) + self.handleNode(node.key, node) + self.handleNode(node.value, node) + + def FOR(self, node): + """ + Process bindings for loop variables. + """ + vars = [] + def collectLoopVars(n): + if isinstance(n, _ast.Name): + vars.append(n.id) + elif isinstance(n, _ast.expr_context): + return + else: + for c in iter_child_nodes(n): + collectLoopVars(c) + + collectLoopVars(node.target) + for varn in vars: + if (isinstance(self.scope.get(varn), Importation) + # unused ones will get an unused import warning + and self.scope[varn].used): + self.report(messages.ImportShadowedByLoopVar, + node, varn, self.scope[varn].source) + + self.handleChildren(node) + + def NAME(self, node): + """ + Handle occurrence of Name (which can be a load/store/delete access.) + """ + # Locate the name in locals / function / globals scopes. + if isinstance(node.ctx, (_ast.Load, _ast.AugLoad)): + # try local scope + importStarred = self.scope.importStarred + try: + self.scope[node.id].used = (self.scope, node) + except KeyError: + pass + else: + return + + # try enclosing function scopes + + for scope in self.scopeStack[-2:0:-1]: + importStarred = importStarred or scope.importStarred + if not isinstance(scope, FunctionScope): + continue + try: + scope[node.id].used = (self.scope, node) + except KeyError: + pass + else: + return + + # try global scope + + importStarred = importStarred or self.scopeStack[0].importStarred + try: + self.scopeStack[0][node.id].used = (self.scope, node) + except KeyError: + if ((not hasattr(__builtin__, node.id)) + and node.id not in _MAGIC_GLOBALS + and not importStarred): + if (os.path.basename(self.filename) == '__init__.py' and + node.id == '__path__'): + # the special name __path__ is valid only in packages + pass + else: + self.report(messages.UndefinedName, node, node.id) + elif isinstance(node.ctx, (_ast.Store, _ast.AugStore)): + # if the name hasn't already been defined in the current scope + if isinstance(self.scope, FunctionScope) and node.id not in self.scope: + # for each function or module scope above us + for scope in self.scopeStack[:-1]: + if not isinstance(scope, (FunctionScope, ModuleScope)): + continue + # if the name was defined in that scope, and the name has + # been accessed already in the current scope, and hasn't + # been declared global + if (node.id in scope + and scope[node.id].used + and scope[node.id].used[0] is self.scope + and node.id not in self.scope.globals): + # then it's probably a mistake + self.report(messages.UndefinedLocal, + scope[node.id].used[1], + node.id, + scope[node.id].source) + break + + if isinstance(node.parent, + (_ast.For, _ast.comprehension, _ast.Tuple, _ast.List)): + binding = Binding(node.id, node) + elif (node.id == '__all__' and + isinstance(self.scope, ModuleScope)): + binding = ExportBinding(node.id, node.parent.value) + else: + binding = Assignment(node.id, node) + if node.id in self.scope: + binding.used = self.scope[node.id].used + self.addBinding(node, binding) + elif isinstance(node.ctx, _ast.Del): + if isinstance(self.scope, FunctionScope) and \ + node.id in self.scope.globals: + del self.scope.globals[node.id] + else: + self.addBinding(node, UnBinding(node.id, node)) + else: + # must be a Param context -- this only happens for names in function + # arguments, but these aren't dispatched through here + raise RuntimeError( + "Got impossible expression context: %r" % (node.ctx,)) + + + def FUNCTIONDEF(self, node): + # the decorators attribute is called decorator_list as of Python 2.6 + if hasattr(node, 'decorators'): + for deco in node.decorators: + self.handleNode(deco, node) + else: + for deco in node.decorator_list: + self.handleNode(deco, node) + + # Check for property decorator + func_def = FunctionDefinition(node.name, node) + for decorator in node.decorator_list: + if getattr(decorator, 'attr', None) in ('setter', 'deleter'): + func_def._property_decorator = True + + self.addBinding(node, func_def) + self.LAMBDA(node) + + def LAMBDA(self, node): + for default in node.args.defaults: + self.handleNode(default, node) + + def runFunction(): + args = [] + + def addArgs(arglist): + for arg in arglist: + if isinstance(arg, _ast.Tuple): + addArgs(arg.elts) + else: + if arg.id in args: + self.report(messages.DuplicateArgument, + node, arg.id) + args.append(arg.id) + + self.pushFunctionScope() + addArgs(node.args.args) + # vararg/kwarg identifiers are not Name nodes + if node.args.vararg: + args.append(node.args.vararg) + if node.args.kwarg: + args.append(node.args.kwarg) + for name in args: + self.addBinding(node, Argument(name, node), reportRedef=False) + if isinstance(node.body, list): + # case for FunctionDefs + for stmt in node.body: + self.handleNode(stmt, node) + else: + # case for Lambdas + self.handleNode(node.body, node) + def checkUnusedAssignments(): + """ + Check to see if any assignments have not been used. + """ + for name, binding in self.scope.iteritems(): + if (not binding.used and not name in self.scope.globals + and isinstance(binding, Assignment)): + self.report(messages.UnusedVariable, + binding.source, name) + self.deferAssignment(checkUnusedAssignments) + self.popScope() + + self.deferFunction(runFunction) + + + def CLASSDEF(self, node): + """ + Check names used in a class definition, including its decorators, base + classes, and the body of its definition. Additionally, add its name to + the current scope. + """ + # decorator_list is present as of Python 2.6 + for deco in getattr(node, 'decorator_list', []): + self.handleNode(deco, node) + for baseNode in node.bases: + self.handleNode(baseNode, node) + self.pushClassScope() + for stmt in node.body: + self.handleNode(stmt, node) + self.popScope() + self.addBinding(node, Binding(node.name, node)) + + def ASSIGN(self, node): + self.handleNode(node.value, node) + for target in node.targets: + self.handleNode(target, node) + + def AUGASSIGN(self, node): + # AugAssign is awkward: must set the context explicitly and visit twice, + # once with AugLoad context, once with AugStore context + node.target.ctx = _ast.AugLoad() + self.handleNode(node.target, node) + self.handleNode(node.value, node) + node.target.ctx = _ast.AugStore() + self.handleNode(node.target, node) + + def IMPORT(self, node): + for alias in node.names: + name = alias.asname or alias.name + importation = Importation(name, node) + self.addBinding(node, importation) + + def IMPORTFROM(self, node): + if node.module == '__future__': + if not self.futuresAllowed: + self.report(messages.LateFutureImport, node, + [n.name for n in node.names]) + else: + self.futuresAllowed = False + + for alias in node.names: + if alias.name == '*': + self.scope.importStarred = True + self.report(messages.ImportStarUsed, node, node.module) + continue + name = alias.asname or alias.name + importation = Importation(name, node) + if node.module == '__future__': + importation.used = (self.scope, node) + self.addBinding(node, importation) diff --git a/SublimeLinter/sublimelinter/modules/libs/pyflakes/messages.py b/SublimeLinter/sublimelinter/modules/libs/pyflakes/messages.py new file mode 100644 index 0000000..7be1a52 --- /dev/null +++ b/SublimeLinter/sublimelinter/modules/libs/pyflakes/messages.py @@ -0,0 +1,128 @@ +# (c) 2005 Divmod, Inc. See LICENSE file for details + + +class Message(object): + message = '' + + def __init__(self, filename, loc, use_column=True, level='W', message_args=()): + self.filename = filename + self.lineno = loc.lineno + self.col = getattr(loc, 'col_offset', None) if use_column else None + self.level = level + self.message_args = message_args + + def __str__(self): + if self.col is not None: + return '%s:%s(%d): [%s] %s' % (self.filename, self.lineno, self.col, self.level, self.message % self.message_args) + else: + return '%s:%s: [%s] %s' % (self.filename, self.lineno, self.level, self.message % self.message_args) + + +class UnusedImport(Message): + message = '%r imported but unused' + + def __init__(self, filename, loc, name): + Message.__init__(self, filename, loc, use_column=False, message_args=(name,)) + self.name = name + + +class RedefinedWhileUnused(Message): + message = 'redefinition of unused %r from line %r' + + def __init__(self, filename, loc, name, orig_loc): + Message.__init__(self, filename, loc, message_args=(name, orig_loc.lineno)) + self.name = name + self.orig_loc = orig_loc + + +class ImportShadowedByLoopVar(Message): + message = 'import %r from line %r shadowed by loop variable' + + def __init__(self, filename, loc, name, orig_loc): + Message.__init__(self, filename, loc, message_args=(name, orig_loc.lineno)) + self.name = name + self.orig_loc = orig_loc + + +class ImportStarUsed(Message): + message = "'from %s import *' used; unable to detect undefined names" + + def __init__(self, filename, loc, modname): + Message.__init__(self, filename, loc, message_args=(modname,)) + self.name = modname + + +class UndefinedName(Message): + message = 'undefined name %r' + + def __init__(self, filename, loc, name): + Message.__init__(self, filename, loc, level='E', message_args=(name,)) + self.name = name + + +class UndefinedExport(Message): + message = 'undefined name %r in __all__' + + def __init__(self, filename, loc, name): + Message.__init__(self, filename, loc, level='E', message_args=(name,)) + self.name = name + + +class UndefinedLocal(Message): + message = "local variable %r (defined in enclosing scope on line %r) referenced before assignment" + + def __init__(self, filename, loc, name, orig_loc): + Message.__init__(self, filename, loc, level='E', message_args=(name, orig_loc.lineno)) + self.name = name + self.orig_loc = orig_loc + + +class DuplicateArgument(Message): + message = 'duplicate argument %r in function definition' + + def __init__(self, filename, loc, name): + Message.__init__(self, filename, loc, level='E', message_args=(name,)) + self.name = name + + +class RedefinedFunction(Message): + message = 'redefinition of function %r from line %r' + + def __init__(self, filename, loc, name, orig_loc): + Message.__init__(self, filename, loc, message_args=(name, orig_loc.lineno)) + self.name = name + self.orig_loc = orig_loc + + +class CouldNotCompile(Message): + def __init__(self, filename, loc, msg=None, line=None): + if msg and line: + self.message = 'could not compile: %s\n%s' + message_args = (msg, line) + else: + self.message = 'could not compile' + message_args = () + Message.__init__(self, filename, loc, level='E', message_args=message_args) + self.msg = msg + self.line = line + + +class LateFutureImport(Message): + message = 'future import(s) %r after other statements' + + def __init__(self, filename, loc, names): + Message.__init__(self, filename, loc, message_args=(names,)) + self.names = names + + +class UnusedVariable(Message): + """ + Indicates that a variable has been explicity assigned to but not actually + used. + """ + + message = 'local variable %r is assigned to but never used' + + def __init__(self, filename, loc, name): + Message.__init__(self, filename, loc, message_args=(name,)) + self.name = name diff --git a/SublimeLinter/sublimelinter/modules/notes.py b/SublimeLinter/sublimelinter/modules/notes.py new file mode 100644 index 0000000..89e0fb6 --- /dev/null +++ b/SublimeLinter/sublimelinter/modules/notes.py @@ -0,0 +1,85 @@ +# -*- coding: utf-8 -*- +'''notes.py + +Used to highlight user-defined "annotations" such as TODO, README, etc., +depending user choice. +''' + +import sublime + +from base_linter import BaseLinter + +CONFIG = { + 'language': 'annotations' +} + + +class Linter(BaseLinter): + DEFAULT_NOTES = ["TODO", "README", "FIXME"] + + def built_in_check(self, view, code, filename): + annotations = self.select_annotations(view) + regions = [] + + for annotation in annotations: + regions.extend(self.find_all(code, annotation, view)) + + return regions + + def select_annotations(self, view): + '''selects the list of annotations to use''' + return view.settings().get("annotations", self.DEFAULT_NOTES) + + def extract_annotations(self, code, view, filename): + '''extract all lines with annotations''' + annotations = self.select_annotations(view) + annotation_starts = [] + + for annotation in annotations: + start = 0 + length = len(annotation) + + while True: + start = code.find(annotation, start) + + if start != -1: + end = start + length + annotation_starts.append(start) + start = end + else: + break + + regions_with_notes = set([]) + + for point in annotation_starts: + regions_with_notes.add(view.extract_scope(point)) + + regions_with_notes = sorted(list(regions_with_notes)) + text = [] + + for region in regions_with_notes: + row, col = view.rowcol(region.begin()) + text.append("[{0}:{1}]".format(filename, row + 1)) + text.append(view.substr(region)) + + return '\n'.join(text) + + def find_all(self, text, string, view): + ''' finds all occurences of "string" in "text" and notes their positions + as a sublime Region + ''' + found = [] + length = len(string) + start = 0 + + while True: + start = text.find(string, start) + + if start != -1: + end = start + length + found.append(sublime.Region(start, end)) + start = end + else: + break + + return found diff --git a/SublimeLinter/sublimelinter/modules/objective-j.py b/SublimeLinter/sublimelinter/modules/objective-j.py new file mode 100644 index 0000000..35f0e0e --- /dev/null +++ b/SublimeLinter/sublimelinter/modules/objective-j.py @@ -0,0 +1,59 @@ +# -*- coding: utf-8 -*- +# objective-j.py - Lint checking for Objective-J - given filename and contents of the code: +# It provides a list of line numbers to outline and offsets to highlight. +# +# This specific module is part of the SublimeLinter project. +# It is a fork of the original SublimeLint project, +# (c) 2011 Ryan Hileman and licensed under the MIT license. +# URL: http://bochs.info/ +# +# The original copyright notices for this file/project follows: +# +# (c) 2005-2008 Divmod, Inc. +# See LICENSE file for details +# +# The LICENSE file is as follows: +# +# Copyright (c) 2005 Divmod, Inc., http://www.divmod.com/ +# +# 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. +# + +from capp_lint import LintChecker +from base_linter import BaseLinter + +CONFIG = { + 'language': 'Objective-J' +} + + +class Linter(BaseLinter): + def built_in_check(self, view, code, filename): + checker = LintChecker(view) + checker.lint_text(code, filename) + return checker.errors + + def parse_errors(self, view, errors, lines, errorUnderlines, violationUnderlines, warningUnderlines, errorMessages, violationMessages, warningMessages): + for error in errors: + lineno = error['lineNum'] + self.add_message(lineno, lines, error['message'], errorMessages if type == LintChecker.ERROR_TYPE_ILLEGAL else warningMessages) + + for position in error.get('positions', []): + self.underline_range(view, lineno, position, errorUnderlines if type == LintChecker.ERROR_TYPE_ILLEGAL else warningUnderlines) diff --git a/SublimeLinter/sublimelinter/modules/perl.py b/SublimeLinter/sublimelinter/modules/perl.py new file mode 100644 index 0000000..732832b --- /dev/null +++ b/SublimeLinter/sublimelinter/modules/perl.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +# perl.py - sublimelint package for checking perl files + +import re + +from base_linter import BaseLinter + +CONFIG = { + 'language': 'perl', + 'executable': 'perl', + 'lint_args': '-c' +} + + +class Linter(BaseLinter): + def parse_errors(self, view, errors, lines, errorUnderlines, violationUnderlines, warningUnderlines, errorMessages, violationMessages, warningMessages): + for line in errors.splitlines(): + match = re.match(r'(?P.+?) at .+? line (?P\d+)(, near "(?P.+?)")?', line) + + if match: + error, line = match.group('error'), match.group('line') + lineno = int(line) + near = match.group('near') + + if near: + error = '{0}, near "{1}"'.format(error, near) + self.underline_regex(view, lineno, '(?P{0})'.format(re.escape(near)), lines, errorUnderlines) + + self.add_message(lineno, lines, error, errorMessages) diff --git a/SublimeLinter/sublimelinter/modules/php.py b/SublimeLinter/sublimelinter/modules/php.py new file mode 100644 index 0000000..19c18cf --- /dev/null +++ b/SublimeLinter/sublimelinter/modules/php.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +# php.py - sublimelint package for checking php files + +import re + +from base_linter import BaseLinter + +CONFIG = { + 'language': 'php', + 'executable': 'php', + 'lint_args': ('-l', '-d display_errors=On', '-d log_errors=Off') +} + + +class Linter(BaseLinter): + def parse_errors(self, view, errors, lines, errorUnderlines, violationUnderlines, warningUnderlines, errorMessages, violationMessages, warningMessages): + for line in errors.splitlines(): + match = re.match(r'^Parse error:\s*(?:\w+ error,\s*)?(?P.+?)\s+in\s+.+?\s*line\s+(?P\d+)', line) + + if match: + error, line = match.group('error'), match.group('line') + self.add_message(int(line), lines, error, errorMessages) diff --git a/SublimeLinter/sublimelinter/modules/python.py b/SublimeLinter/sublimelinter/modules/python.py new file mode 100644 index 0000000..53fe9bd --- /dev/null +++ b/SublimeLinter/sublimelinter/modules/python.py @@ -0,0 +1,262 @@ +# -*- coding: utf-8 -*- +# python.py - Lint checking for Python - given filename and contents of the code: +# It provides a list of line numbers to outline and offsets to highlight. +# +# This specific module is part of the SublimeLinter project. +# It is a fork by André Roberge from the original SublimeLint project, +# (c) 2011 Ryan Hileman and licensed under the MIT license. +# URL: http://bochs.info/ +# +# The original copyright notices for this file/project follows: +# +# (c) 2005-2008 Divmod, Inc. +# See LICENSE file for details +# +# The LICENSE file is as follows: +# +# Copyright (c) 2005 Divmod, Inc., http://www.divmod.com/ +# +# 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. +# + +# TODO: +# * fix regex for variable names inside strings (quotes) + +import re +import _ast + +import pep8 +import pyflakes.checker as pyflakes + +from base_linter import BaseLinter + +pyflakes.messages.Message.__str__ = lambda self: self.message % self.message_args + +CONFIG = { + 'language': 'python' +} + + +class Pep8Error(pyflakes.messages.Message): + message = 'PEP 8 (%s): %s' + + def __init__(self, filename, loc, code, text): + # PEP 8 Errors are downgraded to "warnings" + pyflakes.messages.Message.__init__(self, filename, loc, level='W', message_args=(code, text)) + self.text = text + + +class Pep8Warning(pyflakes.messages.Message): + message = 'PEP 8 (%s): %s' + + def __init__(self, filename, loc, code, text): + # PEP 8 Warnings are downgraded to "violations" + pyflakes.messages.Message.__init__(self, filename, loc, level='V', message_args=(code, text)) + self.text = text + + +class OffsetError(pyflakes.messages.Message): + message = '%r at column %r' + + def __init__(self, filename, loc, text, offset): + pyflakes.messages.Message.__init__(self, filename, loc, level='E', message_args=(text, offset + 1)) + self.text = text + self.offset = offset + + +class PythonError(pyflakes.messages.Message): + message = '%r' + + def __init__(self, filename, loc, text): + pyflakes.messages.Message.__init__(self, filename, loc, level='E', message_args=(text,)) + self.text = text + + +class Dict2Obj: + def __init__(self, **kwargs): + self.__dict__.update(kwargs) + + +class Linter(BaseLinter): + def pyflakes_check(self, code, filename, ignore=None): + try: + tree = compile(code, filename, "exec", _ast.PyCF_ONLY_AST) + except (SyntaxError, IndentationError), value: + msg = value.args[0] + + (lineno, offset, text) = value.lineno, value.offset, value.text + + # If there's an encoding problem with the file, the text is None. + if text is None: + # Avoid using msg, since for the only known case, it contains a + # bogus message that claims the encoding the file declared was + # unknown. + if msg.startswith('duplicate argument'): + arg = msg.split('duplicate argument ', 1)[1].split(' ', 1)[0].strip('\'"') + error = pyflakes.messages.DuplicateArgument(filename, value, arg) + else: + error = PythonError(filename, value, msg) + else: + line = text.splitlines()[-1] + + if offset is not None: + offset = offset - (len(text) - len(line)) + + if offset is not None: + error = OffsetError(filename, value, msg, offset) + else: + error = PythonError(filename, value, msg) + return [error] + except ValueError, e: + return [PythonError(filename, 0, e.args[0])] + else: + # Okay, it's syntactically valid. Now check it. + if ignore is not None: + old_magic_globals = pyflakes._MAGIC_GLOBALS + pyflakes._MAGIC_GLOBALS += ignore + w = pyflakes.Checker(tree, filename) + if ignore is not None: + pyflakes._MAGIC_GLOBALS = old_magic_globals + return w.messages + + def pep8_check(self, code, filename, ignore=None): + messages = [] + _lines = code.split('\n') + + if _lines: + def report_error(self, line_number, offset, text, check): + code = text[:4] + msg = text[5:] + + if pep8.ignore_code(code): + return + elif code.startswith('E'): + messages.append(Pep8Error(filename, Dict2Obj(lineno=line_number, col_offset=offset), code, msg)) + else: + messages.append(Pep8Warning(filename, Dict2Obj(lineno=line_number, col_offset=offset), code, msg)) + + pep8.Checker.report_error = report_error + _ignore = ignore + pep8.DEFAULT_IGNORE.split(',') + + class FakeOptions: + verbose = 0 + select = [] + ignore = _ignore + + pep8.options = FakeOptions() + pep8.options.physical_checks = pep8.find_checks('physical_line') + pep8.options.logical_checks = pep8.find_checks('logical_line') + pep8.options.counters = dict.fromkeys(pep8.BENCHMARK_KEYS, 0) + good_lines = [l + '\n' for l in _lines] + good_lines[-1] = good_lines[-1].rstrip('\n') + + if not good_lines[-1]: + good_lines = good_lines[:-1] + + try: + pep8.Checker(filename, good_lines).check_all() + except: + pass + + return messages + + def built_in_check(self, view, code, filename): + errors = [] + + if view.settings().get("pep8", True): + errors.extend(self.pep8_check(code, filename, ignore=view.settings().get('pep8_ignore', []))) + + pyflakes_ignore = view.settings().get('pyflakes_ignore', None) + pyflakes_disabled = view.settings().get('pyflakes_disabled', False) + + if not pyflakes_disabled: + errors.extend(self.pyflakes_check(code, filename, pyflakes_ignore)) + + return errors + + def parse_errors(self, view, errors, lines, errorUnderlines, violationUnderlines, warningUnderlines, errorMessages, violationMessages, warningMessages): + + def underline_word(lineno, word, underlines): + regex = r'((and|or|not|if|elif|while|in)\s+|[+\-*^%%<>=\(\{{])*\s*(?P[\w\.]*{0}[\w]*)'.format(re.escape(word)) + self.underline_regex(view, lineno, regex, lines, underlines, word) + + def underline_import(lineno, word, underlines): + linematch = '(from\s+[\w_\.]+\s+)?import\s+(?P[^#;]+)' + regex = '(^|\s+|,\s*|as\s+)(?P[\w]*{0}[\w]*)'.format(re.escape(word)) + self.underline_regex(view, lineno, regex, lines, underlines, word, linematch) + + def underline_for_var(lineno, word, underlines): + regex = 'for\s+(?P[\w]*{0}[\w*])'.format(re.escape(word)) + self.underline_regex(view, lineno, regex, lines, underlines, word) + + def underline_duplicate_argument(lineno, word, underlines): + regex = 'def [\w_]+\(.*?(?P[\w]*{0}[\w]*)'.format(re.escape(word)) + self.underline_regex(view, lineno, regex, lines, underlines, word) + + errors.sort(lambda a, b: cmp(a.lineno, b.lineno)) + ignoreImportStar = view.settings().get('pyflakes_ignore_import_*', True) + + for error in errors: + if error.level == 'E': + messages = errorMessages + underlines = errorUnderlines + elif error.level == 'V': + messages = violationMessages + underlines = violationUnderlines + elif error.level == 'W': + messages = warningMessages + underlines = warningUnderlines + + if isinstance(error, pyflakes.messages.ImportStarUsed) and ignoreImportStar: + continue + + self.add_message(error.lineno, lines, str(error), messages) + + if isinstance(error, (Pep8Error, Pep8Warning)): + self.underline_range(view, error.lineno, error.col, underlines) + + elif isinstance(error, OffsetError): + self.underline_range(view, error.lineno, error.offset, underlines) + + elif isinstance(error, (pyflakes.messages.RedefinedWhileUnused, + pyflakes.messages.UndefinedName, + pyflakes.messages.UndefinedExport, + pyflakes.messages.UndefinedLocal, + pyflakes.messages.RedefinedFunction, + pyflakes.messages.UnusedVariable)): + underline_word(error.lineno, error.name, underlines) + + elif isinstance(error, pyflakes.messages.ImportShadowedByLoopVar): + underline_for_var(error.lineno, error.name, underlines) + + elif isinstance(error, pyflakes.messages.UnusedImport): + underline_import(error.lineno, error.name, underlines) + + elif isinstance(error, pyflakes.messages.ImportStarUsed): + underline_import(error.lineno, '*', underlines) + + elif isinstance(error, pyflakes.messages.DuplicateArgument): + underline_duplicate_argument(error.lineno, error.name, underlines) + + elif isinstance(error, pyflakes.messages.LateFutureImport): + pass + + else: + print 'Oops, we missed an error type!', type(error) diff --git a/SublimeLinter/sublimelinter/modules/ruby.py b/SublimeLinter/sublimelinter/modules/ruby.py new file mode 100644 index 0000000..adf7bed --- /dev/null +++ b/SublimeLinter/sublimelinter/modules/ruby.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +# ruby.py - sublimelint package for checking ruby files + +import re + +from base_linter import BaseLinter + +CONFIG = { + 'language': 'ruby', + 'executable': 'ruby', + 'lint_args': '-wc' +} + + +class Linter(BaseLinter): + def parse_errors(self, view, errors, lines, errorUnderlines, violationUnderlines, warningUnderlines, errorMessages, violationMessages, warningMessages): + for line in errors.splitlines(): + match = re.match(r'^.+:(?P\d+):\s+(?P.+)', line) + + if match: + error, line = match.group('error'), match.group('line') + self.add_message(int(line), lines, error, errorMessages) diff --git a/SublimeLinter/sublimelinter/modules/sublime_pylint.py b/SublimeLinter/sublimelinter/modules/sublime_pylint.py new file mode 100644 index 0000000..00702d7 --- /dev/null +++ b/SublimeLinter/sublimelinter/modules/sublime_pylint.py @@ -0,0 +1,83 @@ +''' sublime_pylint.py - sublimelint package for checking python files + +pylint is not available as a checker that runs in the background +as it generally takes much too long. +''' + +from StringIO import StringIO +import tempfile + +try: + from pylint import checkers + from pylint import lint + PYLINT_AVAILABLE = True +except ImportError: + PYLINT_AVAILABLE = False + +from base_linter import BaseLinter + +CONFIG = { + 'language': 'pylint' +} + + +class Linter(BaseLinter): + def get_executable(self, view): + return (PYLINT_AVAILABLE, None, 'built in' if PYLINT_AVAILABLE else 'the pylint module could not be imported') + + def built_in_check(self, view, code, filename): + linter = lint.PyLinter() + checkers.initialize(linter) + + # Disable some errors. + linter.load_command_line_configuration([ + '--module-rgx=.*', # don't check the module name + '--reports=n', # remove tables + '--persistent=n', # don't save the old score (no sense for temp) + ]) + + temp = tempfile.NamedTemporaryFile(suffix='.py') + temp.write(code) + temp.flush() + + output_buffer = StringIO() + linter.reporter.set_output(output_buffer) + linter.check(temp.name) + report = output_buffer.getvalue().replace(temp.name, 'line ') + + output_buffer.close() + temp.close() + + return report + + def remove_unwanted(self, errors): + '''remove unwanted warnings''' + ## todo: investigate how this can be set by a user preference + # as it appears that the user pylint configuration file is ignored. + lines = errors.split('\n') + wanted = [] + unwanted = ["Found indentation with tabs instead of spaces", + "************* Module"] + + for line in lines: + for not_include in unwanted: + if not_include in line: + break + else: + wanted.append(line) + + return '\n'.join(wanted) + + def parse_errors(self, view, errors, lines, errorUnderlines, violationUnderlines, warningUnderlines, errorMessages, violationMessages, warningMessages): + errors = self.remove_unwanted(errors) + + for line in errors.splitlines(): + info = line.split(":") + + try: + lineno = info[1] + except IndexError: + print info + + message = ":".join(info[2:]) + self.add_message(int(lineno), lines, message, errorMessages) diff --git a/TCL/Comments.tmPreferences b/TCL/Comments.tmPreferences new file mode 100644 index 0000000..dfa6c66 --- /dev/null +++ b/TCL/Comments.tmPreferences @@ -0,0 +1,24 @@ + + + + + name + Comments + scope + source.tcl + settings + + shellVariables + + + name + TM_COMMENT_START + value + # + + + + uuid + 742ABED6-94AD-4150-B0C8-329825E18B61 + + diff --git a/TCL/Comments.tmPreferences.cache b/TCL/Comments.tmPreferences.cache new file mode 100644 index 0000000..9a460fb Binary files /dev/null and b/TCL/Comments.tmPreferences.cache differ diff --git a/TCL/HTML (Tcl).tmLanguage b/TCL/HTML (Tcl).tmLanguage new file mode 100644 index 0000000..9e6b59d --- /dev/null +++ b/TCL/HTML (Tcl).tmLanguage @@ -0,0 +1,68 @@ + + + + + fileTypes + + + adp + + + foldingStartMarker + (<(?i:(head|table|div|style|script|ul|ol|form|dl))\b.*?>|\{) + foldingStopMarker + (</(?i:(head|table|div|style|script|ul|ol|form|dl))>|\}) + keyEquivalent + ^~T + name + HTML (Tcl) + patterns + + + begin + <% + beginCaptures + + 0 + + name + punctuation.section.embedded.begin.tcl + + + end + %> + endCaptures + + 0 + + name + punctuation.section.embedded.end.tcl + + + name + source.tcl.embedded.html + patterns + + + match + (env|ns_adp_argc|ns_adp_argv|ns_adp_bind_args|ns_adp_break|ns_adp_debug|ns_adp_dir|ns_adp_dump|ns_adp_eval|ns_adp_exception|ns_adp_include|ns_adp_parse|ns_adp_puts|ns_adp_registertag|ns_adp_return|ns_adp_stream|ns_adp_tell|ns_adp_trunc|ns_atclose|ns_atexit|ns_atshutdown|ns_atsignal|ns_cache_flush|ns_cache_names|ns_cache_size|ns_cache_stats|ns_checkurl|ns_chmod|ns_cond|ns_config|ns_configsection|ns_configsections|ns_conn|ns_conncptofp|ns_connsendfp|ns_cp|ns_cpfp|ns_critsec|ns_crypt|ns_db|ns_dbconfigpath|ns_dberror|ns_dbformvalue|ns_dbformvalueput|ns_dbquotename|ns_dbquotevalue|ns_deleterow|ns_eval|ns_event|ns_ext|ns_findrowbyid|ns_fmttime|ns_ftruncate|ns_getcsv|ns_getform|ns_get_multipart_formdata|ns_geturl|ns_gifsize|ns_gmtime|ns_guesstype|ns_hostbyaddr|ns_hrefs|ns_httpget|ns_httpopen|ns_httptime|ns_info|ns_insertrow|ns_jpegsize|ns_kill|ns_library|ns_link|ns_localsqltimestamp|ns_localtime|ns_log|ns_logroll|ns_markfordelete|ns_mkdir|ns_mktemp|ns_modulepath|ns_mutex|ns_normalizepath|ns_param|ns_parseheader|ns_parsehttptime|ns_parsequery|ns_passwordcheck|ns_perm|ns_permpasswd|ns_pooldescription|ns_puts|ns_queryexists|ns_queryget|ns_querygetall|ns_quotehtml|ns_rand|ns_register_adptag|ns_register_filter|ns_register_proc|ns_register_trace|ns_rename|ns_requestauthorize|ns_respond|ns_return|ns_returnredirect|ns_rmdir|ns_rollfile|ns_rwlock|ns_schedule_daily|ns_schedule_proc|ns_schedule_weekly|ns_section|ns_sema|ns_sendmail|ns_server|ns_set|ns_setexpires|ns_set_precision|ns_share|ns_shutdown|ns_sleep|ns_sockaccept|ns_sockblocking|ns_sockcallback|ns_sockcheck|ns_socketpair|ns_socklistencallback|ns_socknonblocking|ns_socknread|ns_sockopen|ns_sockselect|ns_striphtml|ns_symlink|ns_thread|ns_time|ns_tmpnam|ns_truncate|ns_unlink|ns_unschedule_proc|ns_url2file|ns_urldecode|ns_urlencode|ns_uudecode|ns_uuencode|ns_write|ns_writecontent|ns_writefp|nsv_incr)\b + name + keyword.other.tcl.aolserver + + + include + source.tcl + + + + + include + text.html.basic + + + scopeName + text.html.tcl + uuid + 42F00A35-6D17-44B8-8C9B-438F9FE9E241 + + diff --git a/TCL/HTML (Tcl).tmLanguage.cache b/TCL/HTML (Tcl).tmLanguage.cache new file mode 100644 index 0000000..a858bba Binary files /dev/null and b/TCL/HTML (Tcl).tmLanguage.cache differ diff --git a/TCL/Tcl.tmLanguage b/TCL/Tcl.tmLanguage new file mode 100644 index 0000000..e999ef8 --- /dev/null +++ b/TCL/Tcl.tmLanguage @@ -0,0 +1,432 @@ + + + + + fileTypes + + tcl + + foldingStartMarker + \{\s*$ + foldingStopMarker + ^\s*\} + keyEquivalent + ^~T + name + Tcl + patterns + + + begin + (?<=^|;)\s*((#)) + beginCaptures + + 1 + + name + comment.line.number-sign.tcl + + 2 + + name + punctuation.definition.comment.tcl + + + contentName + comment.line.number-sign.tcl + end + \n + patterns + + + match + (\\\\|\\\n) + + + + + captures + + 1 + + name + keyword.control.tcl + + + match + (?<=^|[\[{;])\s*(if|while|for|catch|return|break|continue|switch|exit|foreach)\b + + + captures + + 1 + + name + keyword.control.tcl + + + match + (?<=^|})\s*(then|elseif|else)\b + + + captures + + 1 + + name + keyword.other.tcl + + 2 + + name + entity.name.function.tcl + + + match + ^\s*(proc)\s+([^\s]+) + + + captures + + 1 + + name + keyword.other.tcl + + + match + (?<=^|[\[{;])\s*(after|append|array|auto_execok|auto_import|auto_load|auto_mkindex|auto_mkindex_old|auto_qualify|auto_reset|bgerror|binary|cd|clock|close|concat|dde|encoding|eof|error|eval|exec|expr|fblocked|fconfigure|fcopy|file|fileevent|filename|flush|format|gets|glob|global|history|http|incr|info|interp|join|lappend|library|lindex|linsert|list|llength|load|lrange|lreplace|lsearch|lset|lsort|memory|msgcat|namespace|open|package|parray|pid|pkg::create|pkg_mkIndex|proc|puts|pwd|re_syntax|read|registry|rename|resource|scan|seek|set|socket|SafeBase|source|split|string|subst|Tcl|tcl_endOfWord|tcl_findLibrary|tcl_startOfNextWord|tcl_startOfPreviousWord|tcl_wordBreakAfter|tcl_wordBreakBefore|tcltest|tclvars|tell|time|trace|unknown|unset|update|uplevel|upvar|variable|vwait)\b + + + begin + (?<=^|[\[{;])\s*(regexp|regsub)\b\s* + beginCaptures + + 1 + + name + keyword.other.tcl + + + comment + special-case regexp/regsub keyword in order to handle the expression + end + [\n;\]] + patterns + + + match + \\(?:.|\n) + name + constant.character.escape.tcl + + + comment + switch for regexp + match + -\w+\s* + + + applyEndPatternLast + 1 + begin + --\s* + comment + end of switches + end + + patterns + + + include + #regexp + + + + + include + #regexp + + + + + include + #escape + + + include + #variable + + + begin + " + beginCaptures + + 0 + + name + punctuation.definition.string.begin.tcl + + + end + " + endCaptures + + 0 + + name + punctuation.definition.string.end.tcl + + + name + string.quoted.double.tcl + patterns + + + include + #escape + + + include + #variable + + + include + #embedded + + + + + repository + + bare-string + + begin + (?:^|(?<=\s))" + comment + matches a single quote-enclosed word without scoping + end + "([^\s\]]*) + endCaptures + + 1 + + name + invalid.illegal.tcl + + + patterns + + + include + #escape + + + include + #variable + + + + braces + + begin + (?:^|(?<=\s))\{ + comment + matches a single brace-enclosed word + end + \}([^\s\]]*) + endCaptures + + 1 + + name + invalid.illegal.tcl + + + patterns + + + match + \\[{}\n] + name + constant.character.escape.tcl + + + include + #inner-braces + + + + embedded + + begin + \[ + beginCaptures + + 0 + + name + punctuation.section.embedded.begin.tcl + + + end + \] + endCaptures + + 0 + + name + punctuation.section.embedded.end.tcl + + + name + source.tcl.embedded + patterns + + + include + source.tcl + + + + escape + + match + \\(\d{1,3}|x[a-fA-F0-9]+|u[a-fA-F0-9]{1,4}|.|\n) + name + constant.character.escape.tcl + + inner-braces + + begin + \{ + comment + matches a nested brace in a brace-enclosed word + end + \} + patterns + + + match + \\[{}\n] + name + constant.character.escape.tcl + + + include + #inner-braces + + + + regexp + + begin + (?=\S)(?![\n;\]]) + comment + matches a single word, named as a regexp, then swallows the rest of the command + end + (?=[\n;\]]) + patterns + + + begin + (?=[^ \t\n;]) + end + (?=[ \t\n;]) + name + string.regexp.tcl + patterns + + + include + #braces + + + include + #bare-string + + + include + #escape + + + include + #variable + + + + + begin + [ \t] + comment + swallow the rest of the command + end + (?=[\n;\]]) + patterns + + + include + #variable + + + include + #embedded + + + include + #escape + + + include + #braces + + + include + #string + + + + + + string + + applyEndPatternLast + 1 + begin + (?:^|(?<=\s))(?=") + comment + matches a single quote-enclosed word with scoping + end + + name + string.quoted.double.tcl + patterns + + + include + #bare-string + + + + variable + + captures + + 1 + + name + punctuation.definition.variable.tcl + + + match + (\$)((?:[a-zA-Z0-9_]|::)+(\([^\)]+\))?|\{[^\}]*\}) + name + variable.other.tcl + + + scopeName + source.tcl + uuid + F01F22AC-7CBB-11D9-9B10-000A95E13C98 + + diff --git a/TCL/Tcl.tmLanguage.cache b/TCL/Tcl.tmLanguage.cache new file mode 100644 index 0000000..a2cbb34 Binary files /dev/null and b/TCL/Tcl.tmLanguage.cache differ diff --git a/TCL/for...-(for).sublime-snippet b/TCL/for...-(for).sublime-snippet new file mode 100644 index 0000000..fd0dfa1 --- /dev/null +++ b/TCL/for...-(for).sublime-snippet @@ -0,0 +1,9 @@ + + + for + source.tcl + for... + diff --git a/TCL/foreach...-(foreach).sublime-snippet b/TCL/foreach...-(foreach).sublime-snippet new file mode 100644 index 0000000..8b4e411 --- /dev/null +++ b/TCL/foreach...-(foreach).sublime-snippet @@ -0,0 +1,9 @@ + + + foreach + source.tcl + foreach... + diff --git a/TCL/if...-(if).sublime-snippet b/TCL/if...-(if).sublime-snippet new file mode 100644 index 0000000..103556e --- /dev/null +++ b/TCL/if...-(if).sublime-snippet @@ -0,0 +1,9 @@ + + + if + source.tcl + if... + diff --git a/TCL/proc...-(proc).sublime-snippet b/TCL/proc...-(proc).sublime-snippet new file mode 100644 index 0000000..60aee35 --- /dev/null +++ b/TCL/proc...-(proc).sublime-snippet @@ -0,0 +1,10 @@ + + + proc + source.tcl + proc... + diff --git a/TCL/switch...-(switch).sublime-snippet b/TCL/switch...-(switch).sublime-snippet new file mode 100644 index 0000000..a70b8a6 --- /dev/null +++ b/TCL/switch...-(switch).sublime-snippet @@ -0,0 +1,12 @@ + + + switch + source.tcl + switch... + diff --git a/TCL/while...-(while).sublime-snippet b/TCL/while...-(while).sublime-snippet new file mode 100644 index 0000000..88685b9 --- /dev/null +++ b/TCL/while...-(while).sublime-snippet @@ -0,0 +1,9 @@ + + + while + source.tcl + while... + diff --git a/Text/Plain text.tmLanguage b/Text/Plain text.tmLanguage new file mode 100644 index 0000000..58f61d3 --- /dev/null +++ b/Text/Plain text.tmLanguage @@ -0,0 +1,83 @@ + + + + + fileTypes + + txt + + keyEquivalent + ^~P + name + Plain Text + patterns + + + captures + + 1 + + name + punctuation.definition.item.text + + + match + ^\s*(•).*$\n? + name + meta.bullet-point.strong.text + + + captures + + 1 + + name + punctuation.definition.item.text + + + match + ^\s*(·).*$\n? + name + meta.bullet-point.light.text + + + captures + + 1 + + name + punctuation.definition.item.text + + + match + ^\s*(\*).*$\n? + name + meta.bullet-point.star.text + + + begin + ^([ \t]*)(?=\S) + contentName + meta.paragraph.text + end + ^(?!\1(?=\S)) + patterns + + + match + (?x) + ( (https?|s?ftp|ftps|file|smb|afp|nfs|(x-)?man|gopher|txmt)://|mailto:) + [-:@a-zA-Z0-9_.,~%+/?=&#]+(?<![.,?:]) + + name + markup.underline.link.text + + + + + scopeName + text.plain + uuid + 3130E4FA-B10E-11D9-9F75-000D93589AF6 + + diff --git a/Text/Plain text.tmLanguage.cache b/Text/Plain text.tmLanguage.cache new file mode 100644 index 0000000..b8568bf Binary files /dev/null and b/Text/Plain text.tmLanguage.cache differ diff --git a/Text/lorem.sublime-snippet b/Text/lorem.sublime-snippet new file mode 100644 index 0000000..7e291ee --- /dev/null +++ b/Text/lorem.sublime-snippet @@ -0,0 +1,11 @@ + + Lorem ipsum + + lorem + -source + \ No newline at end of file diff --git a/Textile/Acronym.sublime-snippet b/Textile/Acronym.sublime-snippet new file mode 100644 index 0000000..dab2014 --- /dev/null +++ b/Textile/Acronym.sublime-snippet @@ -0,0 +1,6 @@ + + + acr + text.html.textile + Acronym + diff --git a/Textile/Block-Quotes.sublime-snippet b/Textile/Block-Quotes.sublime-snippet new file mode 100644 index 0000000..2c976ae --- /dev/null +++ b/Textile/Block-Quotes.sublime-snippet @@ -0,0 +1,8 @@ + + + bq + text.html.textile + Block Quote + diff --git a/Textile/Heading-1.sublime-snippet b/Textile/Heading-1.sublime-snippet new file mode 100644 index 0000000..ed53dfe --- /dev/null +++ b/Textile/Heading-1.sublime-snippet @@ -0,0 +1,8 @@ + + + h1 + text.html.textile + Heading 1 + diff --git a/Textile/Heading-2.sublime-snippet b/Textile/Heading-2.sublime-snippet new file mode 100644 index 0000000..7f79f3e --- /dev/null +++ b/Textile/Heading-2.sublime-snippet @@ -0,0 +1,8 @@ + + + h2 + text.html.textile + Heading 2 + diff --git a/Textile/Heading-3.sublime-snippet b/Textile/Heading-3.sublime-snippet new file mode 100644 index 0000000..fb2ee08 --- /dev/null +++ b/Textile/Heading-3.sublime-snippet @@ -0,0 +1,8 @@ + + + h3 + text.html.textile + Heading 3 + diff --git a/Textile/Heading-4.sublime-snippet b/Textile/Heading-4.sublime-snippet new file mode 100644 index 0000000..f8069a0 --- /dev/null +++ b/Textile/Heading-4.sublime-snippet @@ -0,0 +1,8 @@ + + + h4 + text.html.textile + Heading 4 + diff --git a/Textile/Heading-5.sublime-snippet b/Textile/Heading-5.sublime-snippet new file mode 100644 index 0000000..acabaed --- /dev/null +++ b/Textile/Heading-5.sublime-snippet @@ -0,0 +1,8 @@ + + + h5 + text.html.textile + Heading 5 + diff --git a/Textile/Heading-6.sublime-snippet b/Textile/Heading-6.sublime-snippet new file mode 100644 index 0000000..da4381c --- /dev/null +++ b/Textile/Heading-6.sublime-snippet @@ -0,0 +1,8 @@ + + + h6 + text.html.textile + Heading 6 + diff --git a/Textile/Image.sublime-snippet b/Textile/Image.sublime-snippet new file mode 100644 index 0000000..0a63475 --- /dev/null +++ b/Textile/Image.sublime-snippet @@ -0,0 +1,6 @@ + + + img + text.html.textile + Image + diff --git a/Textile/Linked-Image.sublime-snippet b/Textile/Linked-Image.sublime-snippet new file mode 100644 index 0000000..d07d1c5 --- /dev/null +++ b/Textile/Linked-Image.sublime-snippet @@ -0,0 +1,6 @@ + + + linkimg + text.html.textile + Linked Image + diff --git a/Textile/Textile.tmLanguage b/Textile/Textile.tmLanguage new file mode 100644 index 0000000..d751a10 --- /dev/null +++ b/Textile/Textile.tmLanguage @@ -0,0 +1,490 @@ + + + + + fileTypes + + textile + + firstLineMatch + textile + keyEquivalent + ^~T + name + Textile + patterns + + + begin + (^h[1-6]([<>=()]+)?)(\([^)]*\)|{[^}]*})*(\.) + captures + + 1 + + name + entity.name.tag.heading.textile + + 3 + + name + entity.name.type.textile + + 4 + + name + entity.name.tag.heading.textile + + + end + ^$ + name + markup.heading.textile + patterns + + + include + #inline + + + include + text.html.basic + + + + + begin + (^bq([<>=()]+)?)(\([^)]*\)|{[^}]*})*(\.) + captures + + 1 + + name + entity.name.tag.blockquote.textile + + 3 + + name + entity.name.type.textile + + 4 + + name + entity.name.tag.blockquote.textile + + + end + ^$ + name + markup.quote.textile + patterns + + + include + #inline + + + include + text.html.basic + + + + + begin + (^fn[0-9]+([<>=()]+)?)(\([^)]*\)|{[^}]*})*(\.) + captures + + 1 + + name + entity.name.tag.footnote.textile + + 3 + + name + entity.name.type.textile + + 4 + + name + entity.name.tag.footnote.textile + + + end + ^$ + name + markup.other.footnote.textile + patterns + + + include + #inline + + + include + text.html.basic + + + + + begin + (^table([<>=()]+)?)(\([^)]*\)|{[^}]*})*(\.) + captures + + 1 + + name + entity.name.tag.footnote.textile + + 3 + + name + entity.name.type.textile + + 4 + + name + entity.name.tag.footnote.textile + + + end + ^$ + name + markup.other.table.textile + patterns + + + include + #inline + + + include + text.html.basic + + + + + begin + ^(?=\S) + end + ^$ + name + meta.paragraph.textile + patterns + + + captures + + 1 + + name + entity.name.tag.paragraph.textile + + 3 + + name + entity.name.type.textile + + 4 + + name + entity.name.tag.paragraph.textile + + + match + (^p([<>=()]+)?)(\([^)]*\)|{[^}]*})*(\.) + name + entity.name.section.paragraph.textile + + + include + #inline + + + include + text.html.basic + + + + + comment + Since html is valid in Textile include the html patterns + include + text.html.basic + + + repository + + inline + + patterns + + + comment + & is handled automagically by textile, so we match it to avoid text.html.basic from flagging it + match + &(?![A-Za-z0-9]+;) + name + text.html.textile + + + captures + + 1 + + name + entity.name.type.textile + + + match + ^\*+(\([^)]*\)|{[^}]*})*(\s+|$) + name + markup.list.unnumbered.textile + + + captures + + 1 + + name + entity.name.type.textile + + + match + ^#+(\([^)]*\)|{[^}]*})*\s+ + name + markup.list.numbered.textile + + + captures + + 1 + + name + string.other.link.title.textile + + 2 + + name + string.other.link.description.title.textile + + 3 + + name + constant.other.reference.link.textile + + + match + (?x) + " # Start name, etc + (?: # Attributes + # I swear, this is how the language is defined, + # couldnt make it up if I tried. + (?:\([^)]+\))?(?:\{[^}]+\})?(?:\[[^\]]+\])? + # Class, Style, Lang + | (?:\{[^}]+\})?(?:\[[^\]]+\])?(?:\([^)]+\))? + # Style, Lang, Class + | (?:\[[^\]]+\])?(?:\{[^}]+\})?(?:\([^)]+\))? + # Lang, Style, Class + )? + ([^"]+?) # Link name + \s? # Optional whitespace + (?:\(([^)]+?)\))? + ": # End name + (\w[-\w_]*) # Linkref + (?=[^\w\/;]*?(<|\s|$)) # Catch closing punctuation + # and end of meta.link + + name + meta.link.reference.textile + + + captures + + 1 + + name + string.other.link.title.textile + + 2 + + name + string.other.link.description.title.textile + + 3 + + name + markup.underline.link.textile + + + match + (?x) + " # Start name, etc + (?: # Attributes + # I swear, this is how the language is defined, + # couldnt make it up if I tried. + (?:\([^)]+\))?(?:\{[^}]+\})?(?:\[[^\]]+\])? + # Class, Style, Lang + | (?:\{[^}]+\})?(?:\[[^\]]+\])?(?:\([^)]+\))? + # Style, Lang, Class + | (?:\[[^\]]+\])?(?:\{[^}]+\})?(?:\([^)]+\))? + # Lang, Style, Class + )? + ([^"]+?) # Link name + \s? # Optional whitespace + (?:\(([^)]+?)\))? + ": # End Name + (\S*?(?:\w|\/|;)) # URL + (?=[^\w\/;]*?(<|\s|$)) # Catch closing punctuation + # and end of meta.link + + name + meta.link.inline.textile + + + captures + + 2 + + name + markup.underline.link.image.textile + + 3 + + name + string.other.link.description.textile + + 4 + + name + markup.underline.link.textile + + + match + (?x) + \! # Open image + (\<|\=|\>)? # Optional alignment + (?: # Attributes + # I swear, this is how the language is defined, + # couldnt make it up if I tried. + (?:\([^)]+\))?(?:\{[^}]+\})?(?:\[[^\]]+\])? + # Class, Style, Lang + | (?:\{[^}]+\})?(?:\[[^\]]+\])?(?:\([^)]+\))? + # Style, Lang, Class + | (?:\[[^\]]+\])?(?:\{[^}]+\})?(?:\([^)]+\))? + # Lang, Style, Class + )? + (?:\.[ ])? # Optional + ([^\s(!]+?) # Image URL + \s? # Optional space + (?:\(((?:[^\(\)]|\([^\)]+\))+?)\))? # Optional title + \! # Close image + (?: + : + (\S*?(?:\w|\/|;)) # URL + (?=[^\w\/;]*?(<|\s|$)) # Catch closing punctuation + )? + + name + meta.image.inline.textile + + + captures + + 1 + + name + entity.name.type.textile + + + match + \|(\([^)]*\)|{[^}]*})*(\\\||.)+\| + name + markup.other.table.cell.textile + + + captures + + 3 + + name + entity.name.type.textile + + + match + \B(\*\*?)((\([^)]*\)|{[^}]*}|\[[^]]+\]){0,3})(\S.*?\S|\S)\1\B + name + markup.bold.textile + + + captures + + 2 + + name + entity.name.type.textile + + + match + \B-((\([^)]*\)|{[^}]*}|\[[^]]+\]){0,3})(\S.*?\S|\S)-\B + name + markup.deleted.textile + + + captures + + 2 + + name + entity.name.type.textile + + + match + \B\+((\([^)]*\)|{[^}]*}|\[[^]]+\]){0,3})(\S.*?\S|\S)\+\B + name + markup.inserted.textile + + + captures + + 2 + + name + entity.name.type.textile + + + match + (?:\b|\s)_((\([^)]*\)|{[^}]*}|\[[^]]+\]){0,3})(\S.*?\S|\S)_(?:\b|\s) + name + markup.italic.textile + + + captures + + 3 + + name + entity.name.type.textile + + + match + \B([@\^~%]|\?\?)((\([^)]*\)|{[^}]*}|\[[^]]+\]){0,3})(\S.*?\S|\S)\1 + name + markup.italic.phrasemodifiers.textile + + + comment + Footnotes + match + (?<!w)\[[0-9+]\] + name + entity.name.tag.textile + + + + + scopeName + text.html.textile + uuid + 68F0B1A5-3274-4E85-8B3A-A481C5F5B194 + + diff --git a/Textile/Textile.tmLanguage.cache b/Textile/Textile.tmLanguage.cache new file mode 100644 index 0000000..b620b7d Binary files /dev/null and b/Textile/Textile.tmLanguage.cache differ diff --git a/Theme - Default/Default.sublime-theme b/Theme - Default/Default.sublime-theme new file mode 100644 index 0000000..4ce6b79 --- /dev/null +++ b/Theme - Default/Default.sublime-theme @@ -0,0 +1,867 @@ +[ + { + "class": "label_control", + "color": [255, 255, 255], + "shadow_color": [24, 24, 24], + "shadow_offset": [0, -1] + }, + { + "class": "button_control", + "content_margin": [6, 5, 6, 6], + "min_size": [75, 0], + "layer0.texture": "Theme - Default/full_button.png", + "layer0.opacity": 1.0, + "layer0.inner_margin": [6, 6], + "layer1.texture": "Theme - Default/full_button_indented.png", + "layer1.opacity": 0.0, + "layer1.inner_margin": [6, 6], + "layer2.texture": "Theme - Default/blue_highlight.png", + "layer2.opacity": { "target": 0.0, "speed": 1.33, "interpolation": "smoothstep" }, + "layer2.inner_margin": [6, 6] + }, + { + "class": "button_control", + "attributes": ["pressed"], + "layer0.opacity": 0, + "layer1.opacity": 1.0 + }, + { + "class": "button_control", + "attributes": ["pressed", "hover"], + "layer2.opacity": 0.0 + }, + { + "class": "button_control", + "attributes": ["hover"], + "layer2.opacity": 1.0 + }, + + /** Small Icon Buttons **/ + { + "class": "icon_button_control", + "layer0.texture": "Theme - Default/middle_button.png", + "layer0.inner_margin": [6, 6], + "layer0.opacity": 1.0, + "layer2.texture": "Theme - Default/blue_highlight.png", + "layer2.opacity": { "target": 0.0, "speed": 1.33, "interpolation": "smoothstep" }, + "content_margin": [4, 4] + }, + { + "class": "icon_button_control", + "attributes": ["left"], + "layer0.texture": "Theme - Default/left_button.png", + "layer0.opacity": 1.0 + }, + { + "class": "icon_button_control", + "attributes": ["right"], + "layer0.texture": "Theme - Default/right_button.png", + "layer0.opacity": 1.0 + }, + { + "class": "icon_button_control", + "attributes": ["left", "right"], + "layer0.texture": "Theme - Default/mini_button.png", + "layer0.opacity": 1.0, + "layer0.draw_center": true + }, + { + "class": "icon_button_control", + "attributes": ["hover"], + "layer2.opacity": 1.0 + }, + /* + { + "class": "icon_button_control", + "attributes": ["hover", "selected"], + "layer2.opacity": 0.0 + }, + */ + { + "class": "icon_button_control", + "attributes": ["selected"], + "layer0.texture": "Theme - Default/middle_button_selected.png", + "layer0.opacity": 1.0 + }, + { + "class": "icon_button_control", + "attributes": ["left", "selected"], + "layer0.texture": "Theme - Default/left_button_selected.png", + "layer0.opacity": 1.0 + }, + { + "class": "icon_button_control", + "attributes": ["right", "selected"], + "layer0.texture": "Theme - Default/right_button_selected.png", + "layer0.opacity": 1.0 + }, + { + "class": "icon_button_control", + "attributes": ["right", "left", "selected"], + "layer0.texture": "Theme - Default/mini_button_selected.png", + "layer0.opacity": 1.0 + }, + + /** Scrollbars **/ + { + "class": "scroll_bar_control", + "layer0.texture": "Theme - Default/normal_bar_vertical.png", + "layer0.opacity": 1.0, + "layer0.inner_margin": [0, 6], + "blur": false + }, + { + "class": "scroll_bar_control", + "attributes": ["horizontal"], + "layer0.texture": "Theme - Default/normal_bar_horizontal.png", + "layer0.opacity": 1.0, + "layer0.inner_margin": [6, 0], + "blur": false + }, + { + "class": "scroll_corner_control", + "layer0.texture": "Theme - Default/normal_bar_corner.png", + "layer0.opacity": 1.0, + "layer0.inner_margin": [1, 1] + }, + { + "class": "puck_control", + "layer0.texture": "Theme - Default/normal_thumb_vertical.png", + "layer0.opacity": 1.0, + "layer0.inner_margin": [0, 10], + "content_margin": [8, 12], + "blur": false + }, + { + "class": "puck_control", + "attributes": ["horizontal"], + "layer0.texture": "Theme - Default/normal_thumb_horizontal.png", + "layer0.opacity": 1.0, + "layer0.inner_margin": [10, 0], + "content_margin": [12, 8], + "blur": false + }, + { + "class": "scroll_area_control", + "settings": ["overlay_scroll_bars"], + "overlay": true + }, + { + "class": "scroll_area_control", + "settings": ["!overlay_scroll_bars"], + "overlay": false + }, + { + "class": "scroll_bar_control", + "settings": ["overlay_scroll_bars"], + "layer0.texture": "Theme - Default/overlay_bar_vertical.png", + "layer0.inner_margin": [0, 5], + "blur": true + }, + { + "class": "scroll_bar_control", + "settings": ["overlay_scroll_bars"], + "attributes": ["horizontal"], + "layer0.texture": "Theme - Default/overlay_bar_horizontal.png", + "layer0.inner_margin": [5, 0], + "blur": true + }, + { + "class": "puck_control", + "settings": ["overlay_scroll_bars"], + "layer0.texture": "Theme - Default/overlay_thumb_vertical.png", + "layer0.inner_margin": [0, 5], + "content_margin": [5, 20], + "blur": true + }, + { + "class": "puck_control", + "settings": ["overlay_scroll_bars"], + "attributes": ["horizontal"], + "layer0.texture": "Theme - Default/overlay_thumb_horizontal.png", + "layer0.inner_margin": [5, 0], + "content_margin": [20, 5], + "blur": true + }, + { + "class": "puck_control", + "settings": ["overlay_scroll_bars"], + "attributes": ["dark"], + "layer0.texture": "Theme - Default/overlay_dark_thumb_vertical.png" + }, + { + "class": "puck_control", + "settings": ["overlay_scroll_bars"], + "attributes": ["horizontal", "dark"], + "layer0.texture": "Theme - Default/overlay_dark_thumb_horizontal.png" + }, + + { + "class": "panel_control", + "layer0.texture": "Theme - Default/status_bar.png", + "layer0.inner_margin": [2, 2, 2, 2], + "content_margin": [0, 1], + "layer0.opacity": 1.0 + }, + { + "class": "overlay_control", + "layer0.tint": [64, 64, 64], + "layer0.opacity": 1.0, + "content_margin": [4, 4] + }, + { + "class": "popup_control", + "layer0.tint": [64, 64, 64, 255], + "layer0.opacity": 1.0, + "content_margin": [2, 2] + }, + { + "class": "tool_tip_control", + "layer0.texture": "Theme - Default/tool_tip_background.png", + "layer0.inner_margin": [2, 2], + "layer0.opacity": 1.0, + "content_margin": [3, 3] + }, + { + "class": "tool_tip_label_control", + "color": [0, 0, 0, 255] + }, + { + "class": "disclosure_button_control", + "layer0.texture": "Theme - Default/arrow_right.png", + "layer0.opacity": 1.0, + "layer0.inner_margin": 0, + "layer1.texture": "Theme - Default/arrow_right_over.png", + "layer1.opacity": 0.0, + "layer1.inner_margin": 0, + "content_margin": [9, 7, 8, 6] + }, + { + "class": "disclosure_button_control", + "parents": + [ + { "class": "tree_row", "attributes": ["hover"] } + ], + // "attributes": ["hover"], + "layer0.opacity": 0.0, + "layer1.opacity": 1.0 + }, + { + "class": "disclosure_button_control", + "attributes": ["expanded"], + "layer0.texture": "Theme - Default/arrow_down.png", + "layer1.texture": "Theme - Default/arrow_down_over.png" + }, + { + "class": "table_row", + "layer0.texture": "Theme - Default/row_highlight_wide.png", + "layer0.opacity": 0.0, + "layer0.inner_margin": [1, 1] + }, + { + "class": "table_row", + "attributes": ["selected"], + "layer0.opacity": 0.5 + }, + { + "class": "tree_row", + "layer0.texture": "Theme - Default/row_highlight_dark.png", + "layer0.opacity": 0.0, + "layer0.inner_margin": [1, 1] + }, + { + "class": "tree_row", + "attributes": ["selected"], + "layer0.opacity": 0.8 + // TODO: fix selected row color & shadow + }, + { + "class": "close_button", + "layer0.texture": "Theme - Default/grey_x.png", + "layer0.opacity": 0.5, + "layer0.inner_margin": 0, + "content_margin": [8, 8] + }, + { + "class": "close_button", + "attributes": ["dirty"], + "layer0.texture": "Theme - Default/dirty_indicator.png" + }, + { + "class": "close_button", + "attributes": ["hover"], + "layer0.opacity": 1.0 + }, + { + "class": "sidebar_container", + "layer0.tint": [80, 80, 80], + "layer0.opacity": 1.0, + "layer0.draw_center": false, + "layer0.inner_margin": [0, 0, 1, 0], + "content_margin": [0, 0, 1, 0] + }, + { + "class": "sidebar_tree", + "row_padding": [8, 3], + "indent": 12, + "indent_offset": 17, + "indent_top_level": false, + "layer0.tint": [230, 230, 230], + "layer0.opacity": 1.0, + "dark_content": false + }, + { + "class": "sidebar_heading", + "color": [130, 130, 130], + "font.bold": true, + "shadow_color": [250, 250, 250], + "shadow_offset": [0, 1] + }, + { + "class": "sidebar_heading", + "parents": + [ + { "class": "tree_row", "attributes": ["selected"] } + ], + "shadow_color": [160, 174, 192] + }, + { + "class": "sidebar_label", + "color": [0, 0, 0], + "font.bold": false + // , "shadow_color": [250, 250, 250], "shadow_offset": [0, 0] + }, + { + "class": "sidebar_label", + "parents": [{"class": "tree_row", "attributes": ["selected"]}], + "color": [255, 255, 255] + // , "shadow_color": [60, 60, 60], "shadow_offset": [0, 1] + }, + + { + "class": "sidebar_label", + "parents": [{"class": "tree_row", "attributes": ["expandable"]}], + "settings": ["bold_folder_labels"], + "font.bold": true + }, + + { + "class": "minimap_control", + "viewport_color": [68, 68, 68, 96] + }, + { + "class": "text_line_control", + "layer0.texture": "Theme - Default/input_field.png", + "layer0.opacity": 1.0, + "layer0.inner_margin": [4, 5, 4, 3], + + "layer1.texture": "Theme - Default/input_field_shadow.png", + "layer1.opacity": 1.0, + "layer1.inner_margin": [4, 5, 4, 3], + "tint_index": 1, + + "content_margin": [3, 3, 3, 3] + }, + { + "class": "status_bar", + "layer0.texture": "Theme - Default/status_bar.png", + "layer0.opacity": 1.0, + "layer0.inner_margin": [2, 2], + "content_margin": [4, 3, 4, 3] + }, + { + "class": "status_button", + "min_size": [100, 0] + }, + + /** Quick Panel **/ + { + "class": "quick_panel", + "row_padding": [2, 1], + "layer0.tint": [25, 25, 25], + "layer0.opacity": 1.0, + "dark_content": false + }, + { + "class": "quick_panel_row", + "layer0.tint": [64, 64, 64], + "layer0.opacity": 1.0, + "layer1.texture": "Theme - Default/panel_row.png", + "layer1.inner_margin": [1, 2, 1, 2], + "layer1.draw_center": false, + "layer1.opacity": 1.0 + }, + { + "class": "quick_panel_row", + "attributes": ["selected"], + "layer0.tint": [87, 87, 87], + "layer1.opacity": 0.0 + }, + { + "class": "quick_panel_label", + "fg": [200, 200, 200, 255], + "match_fg": [225, 225, 225, 255], + "selected_fg": [200, 200, 200, 255], + "selected_match_fg": [255, 255, 255, 255] + }, + { + "class": "quick_panel_path_label", + "fg": [255, 255, 255, 100], + "match_fg": [255, 255, 255, 255], + "selected_fg": [255, 255, 255, 100], + "selected_match_fg": [255, 255, 255, 255] + }, + { + "class": "quick_panel_score_label", + "fg": [28, 177, 239, 255], + "selected_fg": [166, 229, 255, 255] + }, + { + "class": "mini_quick_panel_row", + "layer0.texture": "Theme - Default/panel_row.png", + "layer0.inner_margin": [2, 2, 2, 2], + "layer0.opacity": 1.0 + }, + { + "class": "mini_quick_panel_row", + "attributes": ["selected"], + "layer0.texture": "Theme - Default/panel_row_selected.png" + }, + + { + "class": "auto_complete", + "row_padding": [2, 1], + "layer0.tint": [255, 255, 255], + "layer0.opacity": 1.0, + "dark_content": false + }, + { + "class": "auto_complete_label", + "fg": [72, 72, 72, 255], + "match_fg": [0, 0, 0, 255], + "selected_fg": [72, 72, 72, 255], + "selected_match_fg": [0, 0, 0, 255] + }, + + { + "class": "sheet_container_control", + "layer0.tint": [64, 64, 64], + "layer0.opacity": 1.0 + }, + + { + "class": "tabset_control", + + "layer0.opacity": 1.0, + "tint_index": 0, + + "layer1.texture": "Theme - Default/tabset_background_transparent.png", + "layer1.inner_margin": [2, 6], + "layer1.opacity": 1.0, + + "content_margin": [3, 0, 3, 1], + "tab_overlap": 17, + "tab_width": 180, + "tab_min_width": 48, + "tab_height": 35, + "mouse_wheel_switch": false + }, + { + "class": "tabset_control", + "settings": ["mouse_wheel_switches_tabs"], + "mouse_wheel_switch": true + }, + { + // Tabset override for light colors + "class": "tabset_control", + "attributes": ["file_light"], + "layer1.texture": "Theme - Default/light_tabset_background_transparent.png" + }, + { + // Tabset override for medium-dark colors + "class": "tabset_control", + "attributes": ["file_medium_dark"], + "layer1.opacity": 1.0, + "layer1.texture": "Theme - Default/medium_dark_tabset_background_transparent.png" + }, + { + // Tabset override for dark colors + "class": "tabset_control", + "attributes": ["file_dark"], + "layer1.opacity": 1.0, + "layer1.texture": "Theme - Default/dark_tabset_background_transparent.png" + }, + + /** Tabs **/ + { + "class": "tab_control", + + "layer0.texture": "Theme - Default/tab_mask_152_gradient2.png", + "layer0.inner_margin": [22, 4], + "layer0.opacity": 1.0, + "tint_index": 0, // tint layer 0 + "tint_modifier": [255, 0, 0, 0], + + "layer1.texture": "", + "layer1.inner_margin": [22, 4], + "layer1.opacity": 0.0, + + "layer2.inner_margin": [22, 4], + + "content_margin": [24, 8, 23, 4], + "max_margin_trim": 6, + "hit_test_level": 0.4 + }, + + /** Tabs (file color overrides) **/ + { + "class": "tab_control", "attributes": ["file_light"], + "layer2.texture": "Theme - Default/light_unselected_tab_bg2.png", + "layer2.opacity": 0.7 + }, + { + "class": "tab_control", "attributes": ["file_medium"], + "layer2.texture": "Theme - Default/medium_unselected_tab_bg.png", + "layer2.opacity": 0.5 + }, + { + "class": "tab_control", "attributes": ["file_medium_dark"], + "tint_modifier": [255, 255, 255, 24], + "layer2.texture": "Theme - Default/medium_dark_unselected_tab_bg2.png", + "layer2.opacity": 1.0 + }, + { + "class": "tab_control", "attributes": ["file_dark"], + "tint_modifier": [255, 255, 255, 230], + "layer0.texture": "Theme - Default/dark_tab_mask3.png", + "layer2.texture": "Theme - Default/dark_unselected_tab_bg2.png", + "layer2.opacity": 1.0 + }, + + /** Selected Tabs **/ + { + "class": "tab_control", "attributes": ["selected"], + "layer0.texture": "Theme - Default/tab_mask_white.png", + "layer1.opacity": 0.0 + }, + { + "class": "tab_control", "attributes": ["selected", "file_light"], + "layer2.texture": "Theme - Default/light_selected_tab_bg.png", + "layer2.opacity": 0.8 + }, + { + "class": "tab_control", "attributes": ["selected", "file_medium"], + "layer2.texture": "Theme - Default/medium_selected_tab_bg.png", + "layer2.opacity": 0.5 + }, + { + "class": "tab_control", "attributes": ["selected", "file_medium_dark"], + "tint_modifier": [0, 0, 0, 0], + "layer2.texture": "Theme - Default/medium_dark_selected_tab_bg.png", + "layer2.opacity": 0.7 + }, + { + "class": "tab_control", "attributes": ["selected", "file_dark"], + "tint_modifier": [0, 0, 0, 0], + "layer2.texture": "Theme - Default/dark_selected_tab_bg.png", + "layer2.opacity": 1, + "layer0.opacity": 1.0 + }, + + /** Tab Labels **/ + { + "class": "tab_label", + "fg": [0, 0, 0, 255], + "shadow_color": [255, 255, 255, 80], + "shadow_offset": [0, 1] + }, + { + "class": "tab_label", + "parents": [{"class": "tab_control", "attributes": ["file_medium"]}], + "fg": [255, 255, 255, 180], + "shadow_color": [0, 0, 0, 100], + "shadow_offset": [0, -1] + }, + { + "class": "tab_label", + "parents": [{"class": "tab_control", "attributes": ["selected"]}], + "fg": [0, 0, 0, 255], + "shadow_color": [255, 255, 255, 50], + "shadow_offset": [0, 1] + }, + { + "class": "tab_label", + "parents": [{"class": "tab_control", "attributes": ["selected", "file_medium"]}], + "fg": [255, 255, 255, 255], + "shadow_color": [0, 0, 0, 100], + "shadow_offset": [0, -1] + }, + { + "class": "tab_label", + "parents": [{"class": "tab_control", "attributes": ["file_medium_dark"]}], + "fg": [255, 255, 255, 140], + "shadow_color": [0, 0, 0, 100], + "shadow_offset": [0, -1] + }, + { + "class": "tab_label", + "parents": [{"class": "tab_control", "attributes": ["selected", "file_medium_dark"]}], + "fg": [255, 255, 255, 230], + "shadow_color": [0, 0, 0, 255], + "shadow_offset": [0, -1] + }, + { + "class": "tab_label", + "parents": [{"class": "tab_control", "attributes": ["file_dark"]}], + "fg": [255, 255, 255, 160], + "shadow_color": [0, 0, 0, 100], + "shadow_offset": [0, -1] + }, + { + "class": "tab_label", + "parents": [{"class": "tab_control", "attributes": ["selected", "file_dark"]}], + "fg": [255, 255, 255, 230], + "shadow_color": [0, 0, 0, 255], + "shadow_offset": [0, -1] + }, + + { + "class": "tab_label", + "parents": [{"class": "tab_control", "attributes": ["file_light"]}], + "attributes": ["dirty"], + "settings": ["highlight_modified_tabs"], + "fg": [255, 23, 0] + }, + { + "class": "tab_label", + "parents": [{"class": "tab_control", "attributes": ["file_medium"]}], + "attributes": ["dirty"], + "settings": ["highlight_modified_tabs"], + "fg": [255, 23, 0] + }, + { + "class": "tab_label", + "parents": [{"class": "tab_control", "attributes": ["file_medium_dark"]}], + "attributes": ["dirty"], + "settings": ["highlight_modified_tabs"], + "fg": [255, 161, 52] + }, + { + "class": "tab_label", + "parents": [{"class": "tab_control", "attributes": ["file_dark"]}], + "attributes": ["dirty"], + "settings": ["highlight_modified_tabs"], + "fg": [255, 161, 52] + }, + + /** Tab Close Buttons **/ + { + "class": "tab_close_button", + "content_margin": [0, 0], + "layer0.texture": "Theme - Default/grey_x.png", + "layer0.opacity": 0.0, + "layer0.inner_margin": 0, + "layer1.texture": "Theme - Default/dark_x.png", + "layer1.opacity": 0.0, + "layer2.texture": "Theme - Default/grey_x_light_shadow.png", + "layer2.opacity": 1.0, + "layer3.texture": "Theme - Default/dark_x_light_shadow.png", + "layer3.opacity": 0.0 + }, + { + "class": "tab_close_button", + "settings": ["show_tab_close_buttons"], + "content_margin": [8, 8] + }, + { + "class": "tab_close_button", + "parents": [{"class": "tab_control", "attributes": ["dirty"]}], + "layer0.opacity": 0.0, + "layer1.opacity": 0.0, + "layer2.opacity": 0.0, + "layer3.texture": "Theme - Default/dirty_circle.png", + "layer3.opacity": 0.5 + }, + { + "class": "tab_close_button", + "attributes": ["selected"], + "layer0.opacity": 1.0, + "layer1.opacity": 0.0, + "layer2.opacity": 0.0, + "layer3.opacity": 0.0 + }, + { + "class": "tab_close_button", + "attributes": ["hover"], + "layer0.opacity": 0.0, + "layer1.opacity": 0.0, + "layer2.opacity": 0.0, + "layer3.texture": "Theme - Default/dark_x_light_shadow.png", + "layer3.opacity": 1.0 + }, + { + "class": "tab_close_button", + "attributes": ["hover", "dirty"], + "layer0.opacity": 0.0, + "layer1.opacity": 0.0, + "layer2.opacity": 0.0, + "layer3.texture": "Theme - Default/dirty_circle.png", + "layer3.opacity": 1.0 + }, + { + "class": "tab_close_button", + "attributes": ["hover", "selected"], + "layer0.opacity": 0.0, + "layer1.opacity": 1.0, + "layer2.opacity": 0.0, + "layer3.opacity": 0.0 + }, + { + "class": "tab_close_button", + "parents": [{"class": "tab_control", "attributes": ["file_medium_dark"]}], + "layer3.texture": "Theme - Default/light_x.png", + "layer0.opacity": 0.0, + "layer1.opacity": 0.0, + "layer2.opacity": 0.0, + "layer3.opacity": 1.0 + }, + { + "class": "tab_close_button", + "parents": [{"class": "tab_control", "attributes": ["dirty", "file_medium_dark"]}], + "layer0.opacity": 0.0, + "layer1.opacity": 0.0, + "layer2.opacity": 0.0, + "layer3.texture": "Theme - Default/dirty_circle_light.png", + "layer3.opacity": 0.5 + }, + { + "class": "tab_close_button", + "attributes": ["hover"], + "parents": [{"class": "tab_control", "attributes": ["file_medium_dark"]}], + "layer3.texture": "Theme - Default/light_x_bright.png", + "layer0.opacity": 0.0, + "layer1.opacity": 0.0, + "layer2.opacity": 0.0, + "layer3.opacity": 1.0 + }, + { + "class": "tab_close_button", + "parents": [{"class": "tab_control", "attributes": ["file_dark"]}], + "layer3.texture": "Theme - Default/light_x.png", + "layer0.opacity": 0.0, + "layer1.opacity": 0.0, + "layer2.opacity": 0.0, + "layer3.opacity": 1.0 + }, + { + "class": "tab_close_button", + "parents": [{"class": "tab_control", "attributes": ["dirty", "file_dark"]}], + "layer3.texture": "Theme - Default/light_x.png", + "layer0.opacity": 0.0, + "layer1.opacity": 0.0, + "layer2.opacity": 0.0, + "layer3.texture": "Theme - Default/dirty_circle_light.png", + "layer3.opacity": 0.5 + }, + { + "class": "tab_close_button", + "attributes": ["hover"], + "parents": [{"class": "tab_control", "attributes": ["file_dark"]}], + "layer3.texture": "Theme - Default/light_x_bright.png", + "layer0.opacity": 0.0, + "layer1.opacity": 0.0, + "layer2.opacity": 0.0, + "layer3.texture": "Theme - Default/light_x.png", + "layer3.opacity": 1.0 + }, + + { + "class": "fold_button_control", + "layer0.texture": "Theme - Default/arrow_right.png", + "layer0.opacity": 1.0, + "layer0.inner_margin": 0, + "layer1.texture": "Theme - Default/arrow_right_over.png", + "layer1.opacity": 0.0, + "layer1.inner_margin": 0, + "content_margin": [9, 7, 8, 6] + }, + { + "class": "fold_button_control", + "attributes": ["hover"], + "layer0.opacity": 0.0, + "layer1.opacity": 1.0 + }, + { + "class": "fold_button_control", + "attributes": ["expanded"], + "layer0.texture": "Theme - Default/arrow_down.png", + "layer1.texture": "Theme - Default/arrow_down_over.png" + }, + + { + "class": "grid_layout_control", + "border_size": 1, + "border_color": [80, 80, 80] + }, + + { + "class": "icon_regex", + "layer0.texture": "Theme - Default/icons/find_regex.png", + "layer0.opacity": 1.0, + "content_margin": [8, 8] + }, + { + "class": "icon_case", + "layer0.texture": "Theme - Default/icons/find_case.png", + "layer0.opacity": 1.0, + "content_margin": [8, 8] + }, + { + "class": "icon_highlight", + "layer0.texture": "Theme - Default/icons/find_highlight.png", + "layer0.opacity": 1.0, + "content_margin": [8, 8] + }, + { + "class": "icon_in_selection", + "layer0.texture": "Theme - Default/icons/find_inselection.png", + "layer0.opacity": 1.0, + "content_margin": [8, 8] + }, + { + "class": "icon_reverse", + "layer0.texture": "Theme - Default/icons/find_reverse.png", + "layer0.opacity": 1.0, + "content_margin": [8, 8] + }, + { + "class": "icon_whole_word", + "layer0.texture": "Theme - Default/icons/find_wholeword.png", + "layer0.opacity": 1.0, + "content_margin": [8, 8] + }, + { + "class": "icon_wrap", + "layer0.texture": "Theme - Default/icons/find_wrap.png", + "layer0.opacity": 1.0, + "content_margin": [8, 8] + }, + { + "class": "icon_preserve_case", + "layer0.texture": "Theme - Default/icons/replace_preserve_case.png", + "layer0.opacity": 1.0, + "content_margin": [8, 8] + }, + { + "class": "icon_context", + "layer0.texture": "Theme - Default/icons/context.png", + "layer0.opacity": 1.0, + "content_margin": [8, 8] + }, + { + "class": "icon_use_buffer", + "layer0.texture": "Theme - Default/icons/use_buffer.png", + "layer0.opacity": 1.0, + "content_margin": [8, 8] + } +] diff --git a/Theme - Default/Widget.sublime-settings b/Theme - Default/Widget.sublime-settings new file mode 100644 index 0000000..06fe689 --- /dev/null +++ b/Theme - Default/Widget.sublime-settings @@ -0,0 +1,3 @@ +{ + "color_scheme": "Packages/Theme - Default/Widgets.stTheme" +} diff --git a/Theme - Default/Widgets.stTheme b/Theme - Default/Widgets.stTheme new file mode 100644 index 0000000..bf87136 --- /dev/null +++ b/Theme - Default/Widgets.stTheme @@ -0,0 +1,83 @@ + + + + + name + Sublime Widgets + settings + + + settings + + background + #E6E6E6 + caret + #000000 + foreground + #1D1D1C + invisibles + #BFBFBF + lineHighlight + #00000012 + selection + #9ebccc + selectionBorder + #a9bbc + inactiveSelection + #a8afb3 + + + + name + Comment + scope + comment + settings + + fontStyle + italic + foreground + #0066FF + + + + name + Keyword + scope + keyword, storage + settings + + foreground + #4271AE + + + + scope + constant + settings + + foreground + #2C473E + + + + scope + string + settings + + foreground + #1D577D + + + + scope + constant.character.escape + settings + + foreground + #F5871F + + + + + diff --git a/Theme - Default/Widgets.stTheme.cache b/Theme - Default/Widgets.stTheme.cache new file mode 100644 index 0000000..63d1f4a Binary files /dev/null and b/Theme - Default/Widgets.stTheme.cache differ diff --git a/Theme - Default/arrow_down.png b/Theme - Default/arrow_down.png new file mode 100644 index 0000000..99125ee Binary files /dev/null and b/Theme - Default/arrow_down.png differ diff --git a/Theme - Default/arrow_down@2x.png b/Theme - Default/arrow_down@2x.png new file mode 100644 index 0000000..06dd42f Binary files /dev/null and b/Theme - Default/arrow_down@2x.png differ diff --git a/Theme - Default/arrow_down_over.png b/Theme - Default/arrow_down_over.png new file mode 100644 index 0000000..968a1d3 Binary files /dev/null and b/Theme - Default/arrow_down_over.png differ diff --git a/Theme - Default/arrow_down_over@2x.png b/Theme - Default/arrow_down_over@2x.png new file mode 100644 index 0000000..6a35af6 Binary files /dev/null and b/Theme - Default/arrow_down_over@2x.png differ diff --git a/Theme - Default/arrow_right.png b/Theme - Default/arrow_right.png new file mode 100644 index 0000000..24d27e7 Binary files /dev/null and b/Theme - Default/arrow_right.png differ diff --git a/Theme - Default/arrow_right@2x.png b/Theme - Default/arrow_right@2x.png new file mode 100644 index 0000000..9f40cd3 Binary files /dev/null and b/Theme - Default/arrow_right@2x.png differ diff --git a/Theme - Default/arrow_right_over.png b/Theme - Default/arrow_right_over.png new file mode 100644 index 0000000..36c7c48 Binary files /dev/null and b/Theme - Default/arrow_right_over.png differ diff --git a/Theme - Default/arrow_right_over@2x.png b/Theme - Default/arrow_right_over@2x.png new file mode 100644 index 0000000..53876a0 Binary files /dev/null and b/Theme - Default/arrow_right_over@2x.png differ diff --git a/Theme - Default/blue_highlight.png b/Theme - Default/blue_highlight.png new file mode 100644 index 0000000..214c29b Binary files /dev/null and b/Theme - Default/blue_highlight.png differ diff --git a/Theme - Default/blue_highlight@2x.png b/Theme - Default/blue_highlight@2x.png new file mode 100644 index 0000000..d5275d4 Binary files /dev/null and b/Theme - Default/blue_highlight@2x.png differ diff --git a/Theme - Default/bookmark.png b/Theme - Default/bookmark.png new file mode 100644 index 0000000..8d15c63 Binary files /dev/null and b/Theme - Default/bookmark.png differ diff --git a/Theme - Default/circle.png b/Theme - Default/circle.png new file mode 100644 index 0000000..a007d54 Binary files /dev/null and b/Theme - Default/circle.png differ diff --git a/Theme - Default/dark_selected_tab_bg.png b/Theme - Default/dark_selected_tab_bg.png new file mode 100644 index 0000000..5a655a0 Binary files /dev/null and b/Theme - Default/dark_selected_tab_bg.png differ diff --git a/Theme - Default/dark_tab_mask.png b/Theme - Default/dark_tab_mask.png new file mode 100644 index 0000000..04adc5f Binary files /dev/null and b/Theme - Default/dark_tab_mask.png differ diff --git a/Theme - Default/dark_tab_mask2.png b/Theme - Default/dark_tab_mask2.png new file mode 100644 index 0000000..3d7dfa4 Binary files /dev/null and b/Theme - Default/dark_tab_mask2.png differ diff --git a/Theme - Default/dark_tab_mask3.png b/Theme - Default/dark_tab_mask3.png new file mode 100644 index 0000000..c1b4f13 Binary files /dev/null and b/Theme - Default/dark_tab_mask3.png differ diff --git a/Theme - Default/dark_tabset_background_transparent.png b/Theme - Default/dark_tabset_background_transparent.png new file mode 100644 index 0000000..52b312a Binary files /dev/null and b/Theme - Default/dark_tabset_background_transparent.png differ diff --git a/Theme - Default/dark_unselected_tab_bg.png b/Theme - Default/dark_unselected_tab_bg.png new file mode 100644 index 0000000..a87ec3c Binary files /dev/null and b/Theme - Default/dark_unselected_tab_bg.png differ diff --git a/Theme - Default/dark_unselected_tab_bg2.png b/Theme - Default/dark_unselected_tab_bg2.png new file mode 100644 index 0000000..efb21bf Binary files /dev/null and b/Theme - Default/dark_unselected_tab_bg2.png differ diff --git a/Theme - Default/dark_x.png b/Theme - Default/dark_x.png new file mode 100644 index 0000000..a7c9898 Binary files /dev/null and b/Theme - Default/dark_x.png differ diff --git a/Theme - Default/dark_x_light_shadow.png b/Theme - Default/dark_x_light_shadow.png new file mode 100644 index 0000000..62c5a85 Binary files /dev/null and b/Theme - Default/dark_x_light_shadow.png differ diff --git a/Theme - Default/dirty_circle.png b/Theme - Default/dirty_circle.png new file mode 100644 index 0000000..6cc619d Binary files /dev/null and b/Theme - Default/dirty_circle.png differ diff --git a/Theme - Default/dirty_circle_light.png b/Theme - Default/dirty_circle_light.png new file mode 100644 index 0000000..9f42bbc Binary files /dev/null and b/Theme - Default/dirty_circle_light.png differ diff --git a/Theme - Default/dirty_indicator.png b/Theme - Default/dirty_indicator.png new file mode 100644 index 0000000..9f50999 Binary files /dev/null and b/Theme - Default/dirty_indicator.png differ diff --git a/Theme - Default/dot.png b/Theme - Default/dot.png new file mode 100644 index 0000000..0216b46 Binary files /dev/null and b/Theme - Default/dot.png differ diff --git a/Theme - Default/fold.png b/Theme - Default/fold.png new file mode 100644 index 0000000..8008475 Binary files /dev/null and b/Theme - Default/fold.png differ diff --git a/Theme - Default/full_button.png b/Theme - Default/full_button.png new file mode 100644 index 0000000..caf414c Binary files /dev/null and b/Theme - Default/full_button.png differ diff --git a/Theme - Default/full_button_hovered.png b/Theme - Default/full_button_hovered.png new file mode 100644 index 0000000..6d54cfb Binary files /dev/null and b/Theme - Default/full_button_hovered.png differ diff --git a/Theme - Default/full_button_indented.png b/Theme - Default/full_button_indented.png new file mode 100644 index 0000000..3d17311 Binary files /dev/null and b/Theme - Default/full_button_indented.png differ diff --git a/Theme - Default/grey_x.png b/Theme - Default/grey_x.png new file mode 100644 index 0000000..5294988 Binary files /dev/null and b/Theme - Default/grey_x.png differ diff --git a/Theme - Default/grey_x_light_shadow.png b/Theme - Default/grey_x_light_shadow.png new file mode 100644 index 0000000..42d3b5b Binary files /dev/null and b/Theme - Default/grey_x_light_shadow.png differ diff --git a/Theme - Default/icons/context.png b/Theme - Default/icons/context.png new file mode 100644 index 0000000..50355ca Binary files /dev/null and b/Theme - Default/icons/context.png differ diff --git a/Theme - Default/icons/find_case.png b/Theme - Default/icons/find_case.png new file mode 100644 index 0000000..d3e9493 Binary files /dev/null and b/Theme - Default/icons/find_case.png differ diff --git a/Theme - Default/icons/find_highlight.png b/Theme - Default/icons/find_highlight.png new file mode 100644 index 0000000..00e24b6 Binary files /dev/null and b/Theme - Default/icons/find_highlight.png differ diff --git a/Theme - Default/icons/find_inselection.png b/Theme - Default/icons/find_inselection.png new file mode 100644 index 0000000..63bfa81 Binary files /dev/null and b/Theme - Default/icons/find_inselection.png differ diff --git a/Theme - Default/icons/find_regex.png b/Theme - Default/icons/find_regex.png new file mode 100644 index 0000000..32b0a91 Binary files /dev/null and b/Theme - Default/icons/find_regex.png differ diff --git a/Theme - Default/icons/find_reverse.png b/Theme - Default/icons/find_reverse.png new file mode 100644 index 0000000..57a3a56 Binary files /dev/null and b/Theme - Default/icons/find_reverse.png differ diff --git a/Theme - Default/icons/find_wholeword.png b/Theme - Default/icons/find_wholeword.png new file mode 100644 index 0000000..7d8a8ce Binary files /dev/null and b/Theme - Default/icons/find_wholeword.png differ diff --git a/Theme - Default/icons/find_wrap.png b/Theme - Default/icons/find_wrap.png new file mode 100644 index 0000000..e4287d3 Binary files /dev/null and b/Theme - Default/icons/find_wrap.png differ diff --git a/Theme - Default/icons/replace_preserve_case.png b/Theme - Default/icons/replace_preserve_case.png new file mode 100644 index 0000000..90e90c0 Binary files /dev/null and b/Theme - Default/icons/replace_preserve_case.png differ diff --git a/Theme - Default/icons/use_buffer.png b/Theme - Default/icons/use_buffer.png new file mode 100644 index 0000000..23ad919 Binary files /dev/null and b/Theme - Default/icons/use_buffer.png differ diff --git a/Theme - Default/input_field.png b/Theme - Default/input_field.png new file mode 100644 index 0000000..8e93927 Binary files /dev/null and b/Theme - Default/input_field.png differ diff --git a/Theme - Default/input_field_shadow.png b/Theme - Default/input_field_shadow.png new file mode 100644 index 0000000..18ac353 Binary files /dev/null and b/Theme - Default/input_field_shadow.png differ diff --git a/Theme - Default/left_button.png b/Theme - Default/left_button.png new file mode 100644 index 0000000..c404e95 Binary files /dev/null and b/Theme - Default/left_button.png differ diff --git a/Theme - Default/left_button_selected.png b/Theme - Default/left_button_selected.png new file mode 100644 index 0000000..b6bf798 Binary files /dev/null and b/Theme - Default/left_button_selected.png differ diff --git a/Theme - Default/light_selected_tab_bg.png b/Theme - Default/light_selected_tab_bg.png new file mode 100644 index 0000000..01de317 Binary files /dev/null and b/Theme - Default/light_selected_tab_bg.png differ diff --git a/Theme - Default/light_tab_mask.png b/Theme - Default/light_tab_mask.png new file mode 100644 index 0000000..f92f8bf Binary files /dev/null and b/Theme - Default/light_tab_mask.png differ diff --git a/Theme - Default/light_tabset_background_transparent.png b/Theme - Default/light_tabset_background_transparent.png new file mode 100644 index 0000000..2bb8a53 Binary files /dev/null and b/Theme - Default/light_tabset_background_transparent.png differ diff --git a/Theme - Default/light_unselected_tab_bg.png b/Theme - Default/light_unselected_tab_bg.png new file mode 100644 index 0000000..4cb3b69 Binary files /dev/null and b/Theme - Default/light_unselected_tab_bg.png differ diff --git a/Theme - Default/light_unselected_tab_bg2.png b/Theme - Default/light_unselected_tab_bg2.png new file mode 100644 index 0000000..8548b83 Binary files /dev/null and b/Theme - Default/light_unselected_tab_bg2.png differ diff --git a/Theme - Default/light_x.png b/Theme - Default/light_x.png new file mode 100644 index 0000000..a373177 Binary files /dev/null and b/Theme - Default/light_x.png differ diff --git a/Theme - Default/light_x_bright.png b/Theme - Default/light_x_bright.png new file mode 100644 index 0000000..cb39dbd Binary files /dev/null and b/Theme - Default/light_x_bright.png differ diff --git a/Theme - Default/medium_dark_selected_tab_bg.png b/Theme - Default/medium_dark_selected_tab_bg.png new file mode 100644 index 0000000..6dd4a11 Binary files /dev/null and b/Theme - Default/medium_dark_selected_tab_bg.png differ diff --git a/Theme - Default/medium_dark_tabset_background_transparent.png b/Theme - Default/medium_dark_tabset_background_transparent.png new file mode 100644 index 0000000..f7ec243 Binary files /dev/null and b/Theme - Default/medium_dark_tabset_background_transparent.png differ diff --git a/Theme - Default/medium_dark_unselected_tab_bg.png b/Theme - Default/medium_dark_unselected_tab_bg.png new file mode 100644 index 0000000..24206cd Binary files /dev/null and b/Theme - Default/medium_dark_unselected_tab_bg.png differ diff --git a/Theme - Default/medium_dark_unselected_tab_bg2.png b/Theme - Default/medium_dark_unselected_tab_bg2.png new file mode 100644 index 0000000..983c3a8 Binary files /dev/null and b/Theme - Default/medium_dark_unselected_tab_bg2.png differ diff --git a/Theme - Default/medium_selected_tab_bg.png b/Theme - Default/medium_selected_tab_bg.png new file mode 100644 index 0000000..bc62a05 Binary files /dev/null and b/Theme - Default/medium_selected_tab_bg.png differ diff --git a/Theme - Default/medium_unselected_tab_bg.png b/Theme - Default/medium_unselected_tab_bg.png new file mode 100644 index 0000000..0b57ba7 Binary files /dev/null and b/Theme - Default/medium_unselected_tab_bg.png differ diff --git a/Theme - Default/middle_button.png b/Theme - Default/middle_button.png new file mode 100644 index 0000000..dc3e3e9 Binary files /dev/null and b/Theme - Default/middle_button.png differ diff --git a/Theme - Default/middle_button_selected.png b/Theme - Default/middle_button_selected.png new file mode 100644 index 0000000..56c3183 Binary files /dev/null and b/Theme - Default/middle_button_selected.png differ diff --git a/Theme - Default/mini_button.png b/Theme - Default/mini_button.png new file mode 100644 index 0000000..4fff0a7 Binary files /dev/null and b/Theme - Default/mini_button.png differ diff --git a/Theme - Default/mini_button_selected.png b/Theme - Default/mini_button_selected.png new file mode 100644 index 0000000..3d17311 Binary files /dev/null and b/Theme - Default/mini_button_selected.png differ diff --git a/Theme - Default/normal_bar_corner.png b/Theme - Default/normal_bar_corner.png new file mode 100644 index 0000000..96c96f7 Binary files /dev/null and b/Theme - Default/normal_bar_corner.png differ diff --git a/Theme - Default/normal_bar_horizontal.png b/Theme - Default/normal_bar_horizontal.png new file mode 100644 index 0000000..3deef6c Binary files /dev/null and b/Theme - Default/normal_bar_horizontal.png differ diff --git a/Theme - Default/normal_bar_vertical.png b/Theme - Default/normal_bar_vertical.png new file mode 100644 index 0000000..abbfdf2 Binary files /dev/null and b/Theme - Default/normal_bar_vertical.png differ diff --git a/Theme - Default/normal_thumb_horizontal.png b/Theme - Default/normal_thumb_horizontal.png new file mode 100644 index 0000000..c74942e Binary files /dev/null and b/Theme - Default/normal_thumb_horizontal.png differ diff --git a/Theme - Default/normal_thumb_vertical.png b/Theme - Default/normal_thumb_vertical.png new file mode 100644 index 0000000..6d8d1a0 Binary files /dev/null and b/Theme - Default/normal_thumb_vertical.png differ diff --git a/Theme - Default/overlay_bar_horizontal.png b/Theme - Default/overlay_bar_horizontal.png new file mode 100644 index 0000000..caf1d11 Binary files /dev/null and b/Theme - Default/overlay_bar_horizontal.png differ diff --git a/Theme - Default/overlay_bar_vertical.png b/Theme - Default/overlay_bar_vertical.png new file mode 100644 index 0000000..04e70d4 Binary files /dev/null and b/Theme - Default/overlay_bar_vertical.png differ diff --git a/Theme - Default/overlay_dark_thumb_horizontal.png b/Theme - Default/overlay_dark_thumb_horizontal.png new file mode 100644 index 0000000..cbbfd66 Binary files /dev/null and b/Theme - Default/overlay_dark_thumb_horizontal.png differ diff --git a/Theme - Default/overlay_dark_thumb_vertical.png b/Theme - Default/overlay_dark_thumb_vertical.png new file mode 100644 index 0000000..632fb9d Binary files /dev/null and b/Theme - Default/overlay_dark_thumb_vertical.png differ diff --git a/Theme - Default/overlay_thumb_horizontal.png b/Theme - Default/overlay_thumb_horizontal.png new file mode 100644 index 0000000..e015293 Binary files /dev/null and b/Theme - Default/overlay_thumb_horizontal.png differ diff --git a/Theme - Default/overlay_thumb_vertical.png b/Theme - Default/overlay_thumb_vertical.png new file mode 100644 index 0000000..c56aa53 Binary files /dev/null and b/Theme - Default/overlay_thumb_vertical.png differ diff --git a/Theme - Default/panel_row.png b/Theme - Default/panel_row.png new file mode 100644 index 0000000..35c384b Binary files /dev/null and b/Theme - Default/panel_row.png differ diff --git a/Theme - Default/panel_row_selected.png b/Theme - Default/panel_row_selected.png new file mode 100644 index 0000000..357810b Binary files /dev/null and b/Theme - Default/panel_row_selected.png differ diff --git a/Theme - Default/puck_horizontal.png b/Theme - Default/puck_horizontal.png new file mode 100644 index 0000000..299e388 Binary files /dev/null and b/Theme - Default/puck_horizontal.png differ diff --git a/Theme - Default/right_button.png b/Theme - Default/right_button.png new file mode 100644 index 0000000..2f07e2d Binary files /dev/null and b/Theme - Default/right_button.png differ diff --git a/Theme - Default/right_button_selected.png b/Theme - Default/right_button_selected.png new file mode 100644 index 0000000..bd421a6 Binary files /dev/null and b/Theme - Default/right_button_selected.png differ diff --git a/Theme - Default/row_highlight_dark.png b/Theme - Default/row_highlight_dark.png new file mode 100644 index 0000000..6af1cba Binary files /dev/null and b/Theme - Default/row_highlight_dark.png differ diff --git a/Theme - Default/row_highlight_wide.png b/Theme - Default/row_highlight_wide.png new file mode 100644 index 0000000..5da2714 Binary files /dev/null and b/Theme - Default/row_highlight_wide.png differ diff --git a/Theme - Default/scrollbar_bg.png b/Theme - Default/scrollbar_bg.png new file mode 100644 index 0000000..16267c0 Binary files /dev/null and b/Theme - Default/scrollbar_bg.png differ diff --git a/Theme - Default/status_bar.png b/Theme - Default/status_bar.png new file mode 100644 index 0000000..4472b17 Binary files /dev/null and b/Theme - Default/status_bar.png differ diff --git a/Theme - Default/tab_mask_152_gradient2.png b/Theme - Default/tab_mask_152_gradient2.png new file mode 100644 index 0000000..cbc928b Binary files /dev/null and b/Theme - Default/tab_mask_152_gradient2.png differ diff --git a/Theme - Default/tab_mask_white.png b/Theme - Default/tab_mask_white.png new file mode 100644 index 0000000..b0f692a Binary files /dev/null and b/Theme - Default/tab_mask_white.png differ diff --git a/Theme - Default/tabset_background_transparent.png b/Theme - Default/tabset_background_transparent.png new file mode 100644 index 0000000..a1c9f94 Binary files /dev/null and b/Theme - Default/tabset_background_transparent.png differ diff --git a/Theme - Default/tool_tip_background.png b/Theme - Default/tool_tip_background.png new file mode 100644 index 0000000..5be2c18 Binary files /dev/null and b/Theme - Default/tool_tip_background.png differ diff --git a/Theme - Soda/README.md b/Theme - Soda/README.md new file mode 100644 index 0000000..4c7f6af --- /dev/null +++ b/Theme - Soda/README.md @@ -0,0 +1,100 @@ +# Soda Theme + +Dark and light custom UI themes for Sublime Text 2. + +## Design + +![Soda Light Theme](http://buymeasoda.github.com/soda-theme/images/screenshots/soda-2-light-theme.png?v=4) + +![Soda Dark Theme](http://buymeasoda.github.com/soda-theme/images/screenshots/soda-2-dark-theme.png?v=2) + +## Installation + +Soda theme is designed to work with the latest [development build](http://www.sublimetext.com/dev) of Sublime Text 2. + +### Using Sublime Package Control + +If you are using Will Bond's excellent [Sublime Package Control](http://wbond.net/sublime_packages/package_control), you can easily install Soda Theme via the `Package Control: Install Package` menu item. The Soda Theme package is listed as `Theme - Soda` in the packages list. + +### Using Git + +Alternatively, if you are a git user, you can install the theme and keep up to date by cloning the repo directly into your `Packages` directory in the Sublime Text 2 application settings area. + +You can locate your Sublime Text 2 `Packages` directory by using the menu item `Preferences -> Browse Packages...`. + +While inside the `Packages` directory, clone the theme repository using the command below: + + git clone https://github.com/buymeasoda/soda-theme/ "Theme - Soda" + +### Download Manually + +* Download the files using the GitHub .zip download option +* Unzip the files and rename the folder to `Theme - Soda` +* Copy the folder to your Sublime Text 2 `Packages` directory + +## Activating the theme + +To configure Sublime Text 2 to use the theme: + +* Open your User Settings Preferences file `Sublime Text 2 -> Preferences -> Settings - User` +* Add (or update) your theme entry to be `"theme": "Soda Light.sublime-theme"` or `"theme": "Soda Dark.sublime-theme"` + +### Example User Settings + + { + "theme": "Soda Light.sublime-theme" + } + +## Additional Features + +### Alternate Tab Styles + +Soda Theme ships with two alternate UI tab styles. + +By default, a square tab style is used. If you'd prefer to use the original curved tab style, add the following custom setting to your `Settings - User` file: + + "soda_classic_tabs": true + +![Soda Tab Styles](http://buymeasoda.github.com/soda-theme/images/features/multiple-tab-styles.png) + +### Retina Resolution UI + +Soda Theme has been designed to take advantage of retina resolution (high-dpi) displays. Both Soda Light and Soda Dark support retina displays. + +![Soda Retina](http://buymeasoda.github.com/soda-theme/images/features/soda-retina.png) + +### Theme Customisation + +Sublime Text 2 provides an elegant way to tweak existing themes without having to duplicate or maintain a separate copy of the original theme. If there are aspects of Soda Theme that you would like to adjust, take a look at the [theme customisation](https://github.com/buymeasoda/soda-theme/wiki/Theme-customisation) wiki page. + +## Bonus Options + +### Syntax Highlighting Colour Schemes + +The Soda Light screenshot uses a modified version of Espresso Tutti Colori and the Soda Dark screenshot uses a modified version of Monokai. + +If you'd like to use the syntax highlighting schemes shown in the screenshots: + +* Download [colour-schemes.zip](http://buymeasoda.github.com/soda-theme/extras/colour-schemes.zip) +* Unzip and place the extracted `tmtheme` files in the Sublime Text 2 `Packages/User` folder +* Enable the colour scheme via `Preferences -> Color Scheme -> User` + +### Code Font + +The code font shown in the screenshot is Menlo. + +## Development + +Please note, Sublime Text dev builds move quickly and changes can occur with the theme API between releases, so there may be occasions where the theme doesn't quite work with a brand new dev release. + +While developing the theme, I have documented some [theme challenges and ideas](https://github.com/buymeasoda/soda-theme/wiki/Theme-challenges-and-ideas) encountered along the way. + +## License + +Soda Theme is licensed under the [Creative Commons Attribution-ShareAlike 3.0 License](http://creativecommons.org/licenses/by-sa/3.0/). You are free to share and remix the theme, however please abide by the license terms when doing so. + +The following details apply to the Creative Commons license "author specified" components: + +* Attribution example: Based on Soda Theme by Ian Hill (http://buymeasoda.com/) + +* Naming guidelines: If you create and distribute a derivative theme, please give your theme a unique and original name that does not directly include "Soda Theme" (or a close variant) in the main project title, repo name or Package Control name. \ No newline at end of file diff --git a/Theme - Soda/Soda Dark.sublime-theme b/Theme - Soda/Soda Dark.sublime-theme new file mode 100644 index 0000000..2de4873 --- /dev/null +++ b/Theme - Soda/Soda Dark.sublime-theme @@ -0,0 +1,966 @@ +[ + +// +// TABS (REGULAR) +// + + // Tab set + { + "class": "tabset_control", + "layer0.texture": "Theme - Soda/Soda Dark/tabset-background.png", + "layer0.inner_margin": [1, 7], + "layer0.opacity": 1.0, + "content_margin": [-4, 0, -4, 3], + "tab_overlap": 5, + "tab_width": 180, + "tab_min_width": 45, + "tab_height": 25, + "mouse_wheel_switch": false + }, + { + "class": "tabset_control", + "settings": ["mouse_wheel_switches_tabs"], + "mouse_wheel_switch": true + }, + // Tab element + { + "class": "tab_control", + "content_margin": [12, 3, 12, 3], + "max_margin_trim": 0, + "hit_test_level": 0.0, + "layer0.texture": "Theme - Soda/Soda Dark/tab-inactive.png", + "layer0.inner_margin": [5, 5], + "layer0.opacity": 1.0 + }, + // Tab close state + { + "class": "tab_control", + "settings": ["show_tab_close_buttons"], + "content_margin": [12, 3, 7, 3] + }, + // Tab hover state + { + "class": "tab_control", + "attributes": ["hover"], + "layer0.texture": "Theme - Soda/Soda Dark/tab-hover.png" + }, + // Tab active state + { + "class": "tab_control", + "attributes": ["selected"], + "layer0.texture": "Theme - Soda/Soda Dark/tab-active.png" + }, + // Tab dirty state (close button hidden) + { + "class": "tab_control", + "settings": ["!show_tab_close_buttons"], + "attributes": ["dirty"], + "content_margin": [12, 3, 7, 3] + }, + +// +// TABS (CLASSIC) +// + + // Tab set + { + "class": "tabset_control", + "settings": ["soda_classic_tabs"], + "content_margin": [3, 4, 3, 3], + "tab_overlap": 24, + "tab_height": 28 + }, + // Tab element + { + "class": "tab_control", + "settings": ["soda_classic_tabs"], + "content_margin": [22, 6, 22, 4], + "hit_test_level": 0.5, + "layer0.texture": "Theme - Soda/Soda Dark/classic/tab-inactive.png", + "layer0.inner_margin": [18, 4] + }, + // Tab close state + { + "class": "tab_control", + "settings": ["soda_classic_tabs", "show_tab_close_buttons"], + "content_margin": [22, 6, 15, 4] + }, + // Tab hover state + { + "class": "tab_control", + "settings": ["soda_classic_tabs"], + "attributes": ["hover"], + "layer0.texture": "Theme - Soda/Soda Dark/classic/tab-hover.png" + }, + // Tab active state + { + "class": "tab_control", + "settings": ["soda_classic_tabs"], + "attributes": ["selected"], + "layer0.texture": "Theme - Soda/Soda Dark/classic/tab-active.png" + }, + // Tab dirty state (close button hidden) + { + "class": "tab_control", + "settings": ["soda_classic_tabs", "!show_tab_close_buttons"], + "attributes": ["dirty"], + "content_margin": [22, 6, 15, 4] + }, + +// +// TAB BUTTONS +// + + // Tab close button + { + "class": "tab_close_button", + "content_margin": [0, 0], + "layer0.texture": "Theme - Soda/Soda Dark/tab-close-inactive.png", + "layer0.opacity": 1.0, + "layer0.inner_margin": 0 + }, + { + "class": "tab_close_button", + "settings": ["show_tab_close_buttons"], + "content_margin": [8, 8] + }, + { + "class": "tab_close_button", + "parents": [{"class": "tab_control", "attributes": ["hover"]}], + "layer0.texture": "Theme - Soda/Soda Dark/tab-close.png", + "layer0.opacity": 1.0 + }, + { + "class": "tab_close_button", + "parents": [{"class": "tab_control", "attributes": ["selected"]}], + "layer0.texture": "Theme - Soda/Soda Dark/tab-close.png", + "layer0.opacity": 1.0 + }, + // Tab dirty button + { + "class": "tab_close_button", + "parents": [{"class": "tab_control", "attributes": ["dirty"]}], + "layer0.texture": "Theme - Soda/Soda Dark/tab-dirty-inactive.png" + }, + { + "class": "tab_close_button", + "settings": ["!show_tab_close_buttons"], + "parents": [{"class": "tab_control", "attributes": ["dirty"]}], + "content_margin": [8, 8] + }, + { + "class": "tab_close_button", + "parents": [{"class": "tab_control", "attributes": ["dirty", "hover"]}], + "layer0.opacity": 1.0 + }, + { + "class": "tab_close_button", + "parents": [{"class": "tab_control", "attributes": ["dirty", "selected"]}], + "layer0.texture": "Theme - Soda/Soda Dark/tab-dirty.png" + }, + // Tab highlight button + { + "class": "tab_close_button", + "settings": ["highlight_modified_tabs"], + "parents": [{"class": "tab_control", "attributes": ["dirty"]}], + "layer0.texture": "Theme - Soda/Soda Dark/tab-highlight-inactive.png" + }, + { + "class": "tab_close_button", + "settings": ["highlight_modified_tabs"], + "parents": [{"class": "tab_control", "attributes": ["dirty", "selected"]}], + "layer0.texture": "Theme - Soda/Soda Dark/tab-highlight.png" + }, + // Tab close button hover + { + "class": "tab_close_button", + "settings": ["show_tab_close_buttons"], + "attributes": ["hover"], + "layer0.texture": "Theme - Soda/Soda Dark/tab-close-hover.png" + }, + // Tab close button pressed + { + "class": "tab_close_button", + "settings": ["show_tab_close_buttons"], + "attributes": ["pressed"], + "layer0.texture": "Theme - Soda/Soda Dark/tab-close-pressed.png" + }, + +// +// TAB LABELS +// + + { + "class": "tab_label", + "fade": true, + "fg": [170, 170, 170], + "shadow_color": [25, 25, 25], + "shadow_offset": [0, -1] + }, + { + "class": "tab_label", + "parents": [{"class": "tab_control", "attributes": ["hover"]}], + "fg": [200, 200, 200], + "shadow_color": [30, 30, 30] + }, + { + "class": "tab_label", + "parents": [{"class": "tab_control", "attributes": ["selected"]}], + "fg": [230, 230, 230], + "shadow_color": [35, 35, 35] + }, + +// +// FOLD BUTTONS +// + + { + "class": "fold_button_control", + "layer0.texture": "Theme - Soda/Soda Dark/fold-closed.png", + "layer0.opacity": 1.0, + "layer0.inner_margin": 0, + "content_margin": [8, 8] + }, + { + "class": "fold_button_control", + "attributes": ["hover"], + "layer0.texture": "Theme - Soda/Soda Dark/fold-closed-hover.png" + }, + { + "class": "fold_button_control", + "attributes": ["expanded"], + "layer0.texture": "Theme - Soda/Soda Dark/fold-open.png" + }, + { + "class": "fold_button_control", + "attributes": ["expanded", "hover"], + "layer0.texture": "Theme - Soda/Soda Dark/fold-open-hover.png" + }, + +// +// STANDARD SCROLLBARS +// + + // Standard vertical scroll bar + { + "class": "scroll_bar_control", + "layer0.texture": "Theme - Soda/Soda Dark/standard-scrollbar-vertical.png", + "layer0.opacity": 1.0, + "layer0.inner_margin": [2, 6], + "blur": false + }, + // Standard horizontal scroll bar + { + "class": "scroll_bar_control", + "attributes": ["horizontal"], + "layer0.texture": "Theme - Soda/Soda Dark/standard-scrollbar-horizontal.png", + "layer0.inner_margin": [6, 2], + "blur": false + }, + // Standard scroll bar corner + { + "class": "scroll_corner_control", + "layer0.texture": "Theme - Soda/Soda Dark/standard-scrollbar-corner.png", + "layer0.inner_margin": [2, 2], + "layer0.opacity": 1.0 + }, + // Standard vertical scroll puck + { + "class": "puck_control", + "layer0.texture": "Theme - Soda/Soda Dark/standard-puck-vertical.png", + "layer0.opacity": 1.0, + "layer0.inner_margin": [0, 10], + "content_margin": [8, 12], + "blur": false + }, + // Standard horizontal scroll puck + { + "class": "puck_control", + "attributes": ["horizontal"], + "layer0.texture": "Theme - Soda/Soda Dark/standard-puck-horizontal.png", + "layer0.inner_margin": [10, 0], + "content_margin": [12, 8], + "blur": false + }, + +// +// OVERLAY SCROLLBARS +// + + // Overlay toggle scroll bar + { + "class": "scroll_area_control", + "settings": ["overlay_scroll_bars"], + "overlay": true + }, + { + "class": "scroll_area_control", + "settings": ["!overlay_scroll_bars"], + "overlay": false + }, + // Overlay vertical scroll bar + { + "class": "scroll_bar_control", + "settings": ["overlay_scroll_bars"], + "layer0.texture": "Theme - Soda/Soda Dark/overlay-scrollbar-vertical.png", + "layer0.inner_margin": [0, 5], + "blur": true + }, + // Overlay horizontal scroll bar + { + "class": "scroll_bar_control", + "settings": ["overlay_scroll_bars"], + "attributes": ["horizontal"], + "layer0.texture": "Theme - Soda/Soda Dark/overlay-scrollbar-horizontal.png", + "layer0.inner_margin": [5, 0], + "blur": true + }, + // Overlay vertical puck + { + "class": "puck_control", + "settings": ["overlay_scroll_bars"], + "layer0.texture": "Theme - Soda/Soda Dark/overlay-puck-vertical.png", + "layer0.inner_margin": [0, 5], + "content_margin": [5, 20], + "blur": true + }, + // Overlay horizontal puck + { + "class": "puck_control", + "settings": ["overlay_scroll_bars"], + "attributes": ["horizontal"], + "layer0.texture": "Theme - Soda/Soda Dark/overlay-puck-horizontal.png", + "layer0.inner_margin": [5, 0], + "content_margin": [20, 5], + "blur": true + }, + // Overlay light puck (for dark content) + { + "class": "puck_control", + "settings": ["overlay_scroll_bars"], + "attributes": ["dark"], + "layer0.texture": "Theme - Soda/Soda Dark/overlay-dark-puck-vertical.png" + }, + // Overlay light horizontal puck (for dark content) + { + "class": "puck_control", + "settings": ["overlay_scroll_bars"], + "attributes": ["horizontal", "dark"], + "layer0.texture": "Theme - Soda/Soda Dark/overlay-dark-puck-horizontal.png" + }, + +// +// EMPTY WINDOW BACKGROUND +// + + { + "class": "sheet_container_control", + "layer0.tint": [25, 25, 25], + "layer0.opacity": 1.0 + }, + +// +// GRID LAYOUT +// + + { + "class": "grid_layout_control", + "border_size": 1, + "border_color": [70, 70, 70] + }, + +// +// MINI MAP +// + + { + "class": "minimap_control", + "viewport_color": [255, 255, 255, 35] + }, + +// +// LABELS +// + + // General labels + { + "class": "label_control", + "color": [204, 204, 204] + }, + // Text field labels + { + "class": "label_control", + "parents": [{"class": "panel_control"}], + "shadow_color": [50, 50, 50], + "shadow_offset": [0, -1] + }, + // Button labels + { + "class": "label_control", + "parents": [{"class": "button_control"}], + "shadow_color": [55, 55, 55], + "shadow_offset": [0, -1] + }, + +// +// TOOLTIP +// + + // Tooltip container + { + "class": "tool_tip_control", + "layer0.texture": "Theme - Soda/Soda Dark/tooltip.png", + "layer0.inner_margin": [1, 1], + "layer0.opacity": 0.95, + "content_margin": [3, 3] + }, + // Tooltip content + { + "class": "tool_tip_label_control", + "color": [0, 0, 0] + }, + +// +// STATUS BAR +// + + // Status bar container + { + "class": "status_bar", + "layer0.texture": "Theme - Soda/Soda Dark/status-bar-background.png", + "layer0.opacity": 1.0, + "layer0.inner_margin": [2, 2], + "content_margin": [8, 4, 8, 4] + }, + // Status bar button + { + "class": "status_button", + "min_size": [100, 0] + }, + // Status bar label + { + "class": "label_control", + "parents": [{"class": "status_bar"}], + "color": [150, 150, 150], + "shadow_color": [25, 25, 25], + "shadow_offset": [0, -1] + }, + +// +// SIDEBAR +// + + // Sidebar container + { + "class": "sidebar_container", + "layer0.texture": "Theme - Soda/Soda Dark/sidebar-bg.png", + "layer0.opacity": 1.0, + "layer0.inner_margin": [1, 1, 2, 1], + "content_margin": [0, 0, 1, 0] + }, + // Sidebar tree + { + "class": "sidebar_tree", + "row_padding": [8, 3], + "indent": 15, + "indent_offset": 15, + "indent_top_level": false, + "dark_content": true + }, + // Sidebar rows + { + "class": "tree_row", + "layer0.texture": "Theme - Soda/Soda Dark/sidebar-row-selected.png", + "layer0.opacity": 0.0, + "layer0.inner_margin": [1, 1] + }, + // Sidebar row selected + { + "class": "tree_row", + "attributes": ["selected"], + "layer0.opacity": 1.0 + }, + // Sidebar heading + { + "class": "sidebar_heading", + "color": [210, 210, 210], + "font.bold": true, + "shadow_color": [0, 0, 0], + "shadow_offset": [0, -1] + }, + // Sidebar entry + { + "class": "sidebar_label", + "color": [125, 125, 125], + "shadow_color": [0, 0, 0], + "shadow_offset": [0, -1] + }, + // Sidebar folder entry + { + "class": "sidebar_label", + "parents": [{"class": "tree_row", "attributes": ["expandable"]}], + "color": [190, 190, 190] + }, + { + "class": "sidebar_label", + "parents": [{"class": "tree_row", "attributes": ["expandable", "hover"]}], + "color": [235, 235, 235] + }, + { + "class": "sidebar_label", + "parents": [{"class": "tree_row", "attributes": ["expandable"]}], + "settings": ["bold_folder_labels"], + "font.bold": true + }, + // Sidebar entry selected + { + "class": "sidebar_label", + "parents": [{"class": "tree_row", "attributes": ["selected"]}], + "color": [210, 210, 210], + "shadow_color": [0, 0, 0], + "shadow_offset": [0, 1] + }, + +// +// SIDEBAR - OPEN FILE ICONS +// + + // Sidebar file close + { + "class": "close_button", + "layer0.texture": "Theme - Soda/Soda Dark/file-close.png", + "layer0.opacity": 0.0, + "layer0.inner_margin": 0, + "content_margin": [8, 8] + }, + { + "class": "close_button", + "parents": [{"class": "tree_row", "attributes": ["hover"]}], + "layer0.opacity": 1.0 + }, + // Sidebar file dirty + { + "class": "close_button", + "attributes": ["dirty"], + "layer0.texture": "Theme - Soda/Soda Dark/file-dirty.png", + "layer0.opacity": 1.0 + }, + { + "class": "close_button", + "attributes": ["dirty"], + "parents": [{"class": "tree_row", "attributes": ["selected"]}], + "layer0.texture": "Theme - Soda/Soda Dark/file-dirty-selected.png" + }, + { + "class": "close_button", + "attributes": ["dirty"], + "parents": [{"class": "tree_row", "attributes": ["hover"]}], + "layer0.texture": "Theme - Soda/Soda Dark/file-close.png" + }, + // Sidebar file close hover + { + "class": "close_button", + "attributes": ["hover"], + "layer0.texture": "Theme - Soda/Soda Dark/file-close-hover.png" + }, + { + "class": "close_button", + "parents": [{"class": "tree_row", "attributes": ["hover", "selected"]}], + "layer0.texture": "Theme - Soda/Soda Dark/file-close-selected.png" + }, + +// +// SIDEBAR - GENERAL FILE ICONS +// + + // Sidebar group closed + { + "class": "disclosure_button_control", + "content_margin": [8, 8], + "layer0.texture": "Theme - Soda/Soda Dark/group-closed.png", + "layer0.opacity": 1.0, + "layer0.inner_margin": 0 + }, + { + "class": "disclosure_button_control", + "parents": [{"class": "tree_row", "attributes": ["hover"]}], + "layer0.texture": "Theme - Soda/Soda Dark/group-closed-hover.png" + }, + { + "class": "disclosure_button_control", + "parents": [{"class": "tree_row", "attributes": ["selected"]}], + "layer0.texture": "Theme - Soda/Soda Dark/group-closed-selected.png" + }, + // Sidebar group open + { + "class": "disclosure_button_control", + "attributes": ["expanded"], + "layer0.texture": "Theme - Soda/Soda Dark/group-open.png" + }, + { + "class": "disclosure_button_control", + "attributes": ["expanded"], + "parents": [{"class": "tree_row", "attributes": ["hover"]}], + "layer0.texture": "Theme - Soda/Soda Dark/group-open-hover.png" + }, + { + "class": "disclosure_button_control", + "attributes": ["expanded"], + "parents": [{"class": "tree_row", "attributes": ["selected"]}], + "layer0.texture": "Theme - Soda/Soda Dark/group-open-selected.png" + }, + +// +// STANDARD TEXT BUTTONS +// + + // Default button state + { + "class": "button_control", + "content_margin": [6, 5, 6, 6], + "min_size": [75, 0], + "layer0.texture": "Theme - Soda/Soda Dark/btn-large.png", + "layer0.opacity": 1.0, + "layer0.inner_margin": [6, 6] + }, + // Pressed button state + { + "class": "button_control", + "attributes": ["pressed"], + "layer0.texture": "Theme - Soda/Soda Dark/btn-large-on.png" + }, + +// +// TEXT INPUT FIELD +// + + // Text input field item + { + "class": "text_line_control", + "layer0.texture": "Theme - Soda/Soda Dark/text-field.png", + "layer0.opacity": 1.0, + "layer0.inner_margin": [4, 5, 4, 3], + "content_margin": [3, 3] + }, + +// +// PANEL BACKGROUNDS +// + + // Bottom panel background + { + "class": "panel_control", + "layer0.texture": "Theme - Soda/Soda Dark/panel-background.png", + "layer0.inner_margin": [2, 2, 2, 2], + "layer0.opacity": 1.0, + "content_margin": [2, 3, 2, 1] + }, + // Quick panel background + { + "class": "overlay_control", + "layer0.texture": "Theme - Soda/Soda Dark/quick-panel-background.png", + "layer0.inner_margin": [12, 6, 12, 15], + "layer0.opacity": 1.0, + "layer1.texture": "Theme - Soda/Soda Dark/quick-panel-sections.png", + "layer1.inner_margin": [12, 40, 12, 19], + "layer1.opacity": 1.0, + "content_margin": [11, 8, 11, 17] + }, + +// +// QUICK PANEL +// + + { + "class": "quick_panel", + "row_padding": [5, 2], + "layer0.tint": [33, 33, 33], + "layer0.opacity": 1.0, + "dark_content": true + }, + { + "class": "quick_panel_row", + "layer0.texture": "Theme - Soda/Soda Dark/quick-panel-row.png", + "layer0.inner_margin": [2, 2, 2, 2], + "layer0.opacity": 1.0 + }, + { + "class": "quick_panel_row", + "attributes": ["selected"], + "layer0.texture": "Theme - Soda/Soda Dark/quick-panel-row-selected.png" + }, + { + "class": "quick_panel_label", + "fg": [210, 210, 210, 255], + "match_fg": [126, 199, 239, 255], + "bg": [41, 41, 41, 255], + "selected_fg": [255, 255, 255, 255], + "selected_match_fg": [166, 229, 255, 255], + "selected_bg": [24, 24, 24, 255] + }, + { + "class": "quick_panel_path_label", + "fg": [130, 130, 130, 255], + "match_fg": [220, 220, 220, 255], + "bg": [41, 41, 41, 255], + "selected_fg": [175, 175, 175, 255], + "selected_match_fg": [220, 220, 220, 255], + "selected_bg": [24, 24, 24, 255] + }, + { + "class": "quick_panel_score_label", + "fg": [126, 199, 239, 255], + "bg": [41, 41, 41, 255], + "selected_fg": [166, 229, 255, 255], + "selected_bg": [24, 24, 24, 255] + }, + +// +// MINI QUICK PANEL +// + + { + "class": "mini_quick_panel_row", + "layer0.texture": "Theme - Soda/Soda Dark/quick-panel-row.png", + "layer0.inner_margin": [2, 2, 2, 2], + "layer0.opacity": 1.0 + }, + { + "class": "mini_quick_panel_row", + "attributes": ["selected"], + "layer0.texture": "Theme - Soda/Soda Dark/quick-panel-row-selected.png" + }, + +// +// CODE COMPLETION DROPDOWN +// + + { + "class": "popup_control", + "content_margin": [2, 2], + "layer0.tint": [30, 30, 30], + "layer0.opacity": 1.0 + }, + { + "class": "auto_complete", + "row_padding": [4, 2] + }, + { + "class": "auto_complete_label", + "fg": [140, 140, 140], + "match_fg": [220, 220, 220], + "selected_fg": [180, 180, 180], + "selected_match_fg": [245, 245, 245] + }, + { + "class": "table_row", + "layer0.texture": "Theme - Soda/Soda Dark/autocomplete-row-selected.png", + "layer0.opacity": 0.0, + "layer0.inner_margin": [3, 1] + }, + { + "class": "table_row", + "attributes": ["selected"], + "layer0.opacity": 1.0 + }, + +// +// BOTTOM PANEL BUTTONS +// + + // Button group middle + { + "class": "icon_button_control", + "layer0.texture": "Theme - Soda/Soda Dark/btn-group-middle.png", + "layer0.inner_margin": [6, 6], + "layer0.opacity": 1.0, + "content_margin": [3, 3] + }, + { + "class": "icon_button_control", + "attributes": ["selected"], + "layer0.texture": "Theme - Soda/Soda Dark/btn-group-middle-on.png" + }, + // Button group left + { + "class": "icon_button_control", + "attributes": ["left"], + "layer0.texture": "Theme - Soda/Soda Dark/btn-group-left.png", + "content_margin": [4, 3, 3, 3] + }, + { + "class": "icon_button_control", + "attributes": ["left", "selected"], + "layer0.texture": "Theme - Soda/Soda Dark/btn-group-left-on.png" + }, + // Button group right + { + "class": "icon_button_control", + "attributes": ["right"], + "layer0.texture": "Theme - Soda/Soda Dark/btn-group-right.png", + "content_margin": [3, 3, 4, 3] + }, + { + "class": "icon_button_control", + "attributes": ["right", "selected"], + "layer0.texture": "Theme - Soda/Soda Dark/btn-group-right-on.png" + }, + // Button single + { + "class": "icon_button_control", + "attributes": ["left", "right"], + "layer0.texture": "Theme - Soda/Soda Dark/btn-small.png", + "content_margin": [4, 3] + }, + { + "class": "icon_button_control", + "attributes": ["left", "right", "selected"], + "layer0.texture": "Theme - Soda/Soda Dark/btn-small-on.png" + }, + +// +// BOTTOM PANEL ICONS - GROUP 1 +// + + // Regex search button + { + "class": "icon_regex", + "layer0.texture": "Theme - Soda/Soda Dark/icon-regex-off.png", + "layer0.opacity": 1.0, + "content_margin": [9, 9] + }, + { + "class": "icon_regex", + "parents": [{"class": "icon_button_control", "attributes": ["selected"]}], + "layer0.texture": "Theme - Soda/Soda Dark/icon-regex-on.png" + }, + // Case sensitive search button + { + "class": "icon_case", + "layer0.texture": "Theme - Soda/Soda Dark/icon-case-off.png", + "layer0.opacity": 1.0, + "content_margin": [9, 9] + }, + { + "class": "icon_case", + "parents": [{"class": "icon_button_control", "attributes": ["selected"]}], + "layer0.texture": "Theme - Soda/Soda Dark/icon-case-on.png" + }, + // Match whole word search button + { + "class": "icon_whole_word", + "layer0.texture": "Theme - Soda/Soda Dark/icon-word-off.png", + "layer0.opacity": 1.0, + "content_margin": [9, 9] + }, + { + "class": "icon_whole_word", + "parents": [{"class": "icon_button_control", "attributes": ["selected"]}], + "layer0.texture": "Theme - Soda/Soda Dark/icon-word-on.png" + }, + +// +// BOTTOM PANEL ICONS - GROUP 1 (EXTENDED: FIND IN FILES) +// + + // Show search context button + { + "class": "icon_context", + "layer0.texture": "Theme - Soda/Soda Dark/icon-context-off.png", + "layer0.opacity": 1.0, + "content_margin": [9, 9] + }, + { + "class": "icon_context", + "parents": [{"class": "icon_button_control", "attributes": ["selected"]}], + "layer0.texture": "Theme - Soda/Soda Dark/icon-context-on.png" + }, + // Use search buffer + { + "class": "icon_use_buffer", + "layer0.texture": "Theme - Soda/Soda Dark/icon-buffer-off.png", + "layer0.opacity": 1.0, + "content_margin": [9, 9] + }, + { + "class": "icon_use_buffer", + "parents": [{"class": "icon_button_control", "attributes": ["selected"]}], + "layer0.texture": "Theme - Soda/Soda Dark/icon-buffer-on.png" + }, + +// +// BOTTOM PANEL ICONS - GROUP 2 +// + + // Reverse search direction button + { + "class": "icon_reverse", + "layer0.texture": "Theme - Soda/Soda Dark/icon-reverse-off.png", + "layer0.opacity": 1.0, + "content_margin": [9, 9] + }, + { + "class": "icon_reverse", + "parents": [{"class": "icon_button_control", "attributes": ["selected"]}], + "layer0.texture": "Theme - Soda/Soda Dark/icon-reverse-on.png" + }, + // Search wrap button + { + "class": "icon_wrap", + "layer0.texture": "Theme - Soda/Soda Dark/icon-wrap-off.png", + "layer0.opacity": 1.0, + "content_margin": [9, 9] + }, + { + "class": "icon_wrap", + "parents": [{"class": "icon_button_control", "attributes": ["selected"]}], + "layer0.texture": "Theme - Soda/Soda Dark/icon-wrap-on.png" + }, + // Search in selection button + { + "class": "icon_in_selection", + "layer0.texture": "Theme - Soda/Soda Dark/icon-selection-off.png", + "layer0.opacity": 1.0, + "content_margin": [9, 9] + }, + { + "class": "icon_in_selection", + "parents": [{"class": "icon_button_control", "attributes": ["selected"]}], + "layer0.texture": "Theme - Soda/Soda Dark/icon-selection-on.png" + }, + +// +// BOTTOM PANEL ICONS - GROUP 3 +// + + // Preserve case button + { + "class": "icon_preserve_case", + "layer0.texture": "Theme - Soda/Soda Dark/icon-preserve-off.png", + "layer0.opacity": 1.0, + "content_margin": [9, 9] + }, + { + "class": "icon_preserve_case", + "parents": [{"class": "icon_button_control", "attributes": ["selected"]}], + "layer0.texture": "Theme - Soda/Soda Dark/icon-preserve-on.png" + }, + +// +// BOTTOM PANEL ICONS - GROUP 4 +// + + // Highlight results button + { + "class": "icon_highlight", + "layer0.texture": "Theme - Soda/Soda Dark/icon-highlight-off.png", + "layer0.opacity": 1.0, + "content_margin": [9, 9] + }, + { + "class": "icon_highlight", + "parents": [{"class": "icon_button_control", "attributes": ["selected"]}], + "layer0.texture": "Theme - Soda/Soda Dark/icon-highlight-on.png" + } + +] diff --git a/Theme - Soda/Soda Dark/.gitignore b/Theme - Soda/Soda Dark/.gitignore new file mode 100644 index 0000000..f05fcdc --- /dev/null +++ b/Theme - Soda/Soda Dark/.gitignore @@ -0,0 +1 @@ +*.cache \ No newline at end of file diff --git a/Theme - Soda/Soda Dark/Widget - Soda Dark.stTheme b/Theme - Soda/Soda Dark/Widget - Soda Dark.stTheme new file mode 100644 index 0000000..42cbb94 --- /dev/null +++ b/Theme - Soda/Soda Dark/Widget - Soda Dark.stTheme @@ -0,0 +1,30 @@ + + + + + author + Ian Hill + comment + A widget theme for the UI components of the Soda Dark theme. + name + Soda Dark - Widget Theme + settings + + + settings + + background + #383838 + caret + #F8F8F8 + foreground + #F8F8F8 + invisibles + #3B3B3B + selection + #222222 + + + + + diff --git a/Theme - Soda/Soda Dark/Widget - Soda Dark.sublime-settings b/Theme - Soda/Soda Dark/Widget - Soda Dark.sublime-settings new file mode 100644 index 0000000..d5787af --- /dev/null +++ b/Theme - Soda/Soda Dark/Widget - Soda Dark.sublime-settings @@ -0,0 +1,4 @@ +{ + "color_scheme": "Packages/Theme - Soda/Soda Dark/Widget - Soda Dark.stTheme", + "draw_shadows": false +} diff --git a/Theme - Soda/Soda Dark/autocomplete-row-selected.png b/Theme - Soda/Soda Dark/autocomplete-row-selected.png new file mode 100644 index 0000000..336555c Binary files /dev/null and b/Theme - Soda/Soda Dark/autocomplete-row-selected.png differ diff --git a/Theme - Soda/Soda Dark/autocomplete-row-selected@2x.png b/Theme - Soda/Soda Dark/autocomplete-row-selected@2x.png new file mode 100644 index 0000000..2a3d7b4 Binary files /dev/null and b/Theme - Soda/Soda Dark/autocomplete-row-selected@2x.png differ diff --git a/Theme - Soda/Soda Dark/bookmark.png b/Theme - Soda/Soda Dark/bookmark.png new file mode 100644 index 0000000..8d15c63 Binary files /dev/null and b/Theme - Soda/Soda Dark/bookmark.png differ diff --git a/Theme - Soda/Soda Dark/btn-group-left-on.png b/Theme - Soda/Soda Dark/btn-group-left-on.png new file mode 100644 index 0000000..3a25d0c Binary files /dev/null and b/Theme - Soda/Soda Dark/btn-group-left-on.png differ diff --git a/Theme - Soda/Soda Dark/btn-group-left-on@2x.png b/Theme - Soda/Soda Dark/btn-group-left-on@2x.png new file mode 100644 index 0000000..d9ed060 Binary files /dev/null and b/Theme - Soda/Soda Dark/btn-group-left-on@2x.png differ diff --git a/Theme - Soda/Soda Dark/btn-group-left.png b/Theme - Soda/Soda Dark/btn-group-left.png new file mode 100644 index 0000000..17bd507 Binary files /dev/null and b/Theme - Soda/Soda Dark/btn-group-left.png differ diff --git a/Theme - Soda/Soda Dark/btn-group-left@2x.png b/Theme - Soda/Soda Dark/btn-group-left@2x.png new file mode 100644 index 0000000..34efcdf Binary files /dev/null and b/Theme - Soda/Soda Dark/btn-group-left@2x.png differ diff --git a/Theme - Soda/Soda Dark/btn-group-middle-on.png b/Theme - Soda/Soda Dark/btn-group-middle-on.png new file mode 100644 index 0000000..9b1126f Binary files /dev/null and b/Theme - Soda/Soda Dark/btn-group-middle-on.png differ diff --git a/Theme - Soda/Soda Dark/btn-group-middle-on@2x.png b/Theme - Soda/Soda Dark/btn-group-middle-on@2x.png new file mode 100644 index 0000000..268e9f5 Binary files /dev/null and b/Theme - Soda/Soda Dark/btn-group-middle-on@2x.png differ diff --git a/Theme - Soda/Soda Dark/btn-group-middle.png b/Theme - Soda/Soda Dark/btn-group-middle.png new file mode 100644 index 0000000..046049c Binary files /dev/null and b/Theme - Soda/Soda Dark/btn-group-middle.png differ diff --git a/Theme - Soda/Soda Dark/btn-group-middle@2x.png b/Theme - Soda/Soda Dark/btn-group-middle@2x.png new file mode 100644 index 0000000..2bd8146 Binary files /dev/null and b/Theme - Soda/Soda Dark/btn-group-middle@2x.png differ diff --git a/Theme - Soda/Soda Dark/btn-group-right-on.png b/Theme - Soda/Soda Dark/btn-group-right-on.png new file mode 100644 index 0000000..968db9b Binary files /dev/null and b/Theme - Soda/Soda Dark/btn-group-right-on.png differ diff --git a/Theme - Soda/Soda Dark/btn-group-right-on@2x.png b/Theme - Soda/Soda Dark/btn-group-right-on@2x.png new file mode 100644 index 0000000..7c56ad0 Binary files /dev/null and b/Theme - Soda/Soda Dark/btn-group-right-on@2x.png differ diff --git a/Theme - Soda/Soda Dark/btn-group-right.png b/Theme - Soda/Soda Dark/btn-group-right.png new file mode 100644 index 0000000..60a7aa0 Binary files /dev/null and b/Theme - Soda/Soda Dark/btn-group-right.png differ diff --git a/Theme - Soda/Soda Dark/btn-group-right@2x.png b/Theme - Soda/Soda Dark/btn-group-right@2x.png new file mode 100644 index 0000000..8ad4f40 Binary files /dev/null and b/Theme - Soda/Soda Dark/btn-group-right@2x.png differ diff --git a/Theme - Soda/Soda Dark/btn-large-on.png b/Theme - Soda/Soda Dark/btn-large-on.png new file mode 100644 index 0000000..b97be2d Binary files /dev/null and b/Theme - Soda/Soda Dark/btn-large-on.png differ diff --git a/Theme - Soda/Soda Dark/btn-large-on@2x.png b/Theme - Soda/Soda Dark/btn-large-on@2x.png new file mode 100644 index 0000000..f4bddc9 Binary files /dev/null and b/Theme - Soda/Soda Dark/btn-large-on@2x.png differ diff --git a/Theme - Soda/Soda Dark/btn-large.png b/Theme - Soda/Soda Dark/btn-large.png new file mode 100644 index 0000000..d4042c9 Binary files /dev/null and b/Theme - Soda/Soda Dark/btn-large.png differ diff --git a/Theme - Soda/Soda Dark/btn-large@2x.png b/Theme - Soda/Soda Dark/btn-large@2x.png new file mode 100644 index 0000000..046438a Binary files /dev/null and b/Theme - Soda/Soda Dark/btn-large@2x.png differ diff --git a/Theme - Soda/Soda Dark/btn-small-on.png b/Theme - Soda/Soda Dark/btn-small-on.png new file mode 100644 index 0000000..92881b7 Binary files /dev/null and b/Theme - Soda/Soda Dark/btn-small-on.png differ diff --git a/Theme - Soda/Soda Dark/btn-small-on@2x.png b/Theme - Soda/Soda Dark/btn-small-on@2x.png new file mode 100644 index 0000000..978b140 Binary files /dev/null and b/Theme - Soda/Soda Dark/btn-small-on@2x.png differ diff --git a/Theme - Soda/Soda Dark/btn-small.png b/Theme - Soda/Soda Dark/btn-small.png new file mode 100644 index 0000000..d4042c9 Binary files /dev/null and b/Theme - Soda/Soda Dark/btn-small.png differ diff --git a/Theme - Soda/Soda Dark/btn-small@2x.png b/Theme - Soda/Soda Dark/btn-small@2x.png new file mode 100644 index 0000000..046438a Binary files /dev/null and b/Theme - Soda/Soda Dark/btn-small@2x.png differ diff --git a/Theme - Soda/Soda Dark/circle.png b/Theme - Soda/Soda Dark/circle.png new file mode 100644 index 0000000..a007d54 Binary files /dev/null and b/Theme - Soda/Soda Dark/circle.png differ diff --git a/Theme - Soda/Soda Dark/classic/tab-active.png b/Theme - Soda/Soda Dark/classic/tab-active.png new file mode 100644 index 0000000..ef782f9 Binary files /dev/null and b/Theme - Soda/Soda Dark/classic/tab-active.png differ diff --git a/Theme - Soda/Soda Dark/classic/tab-active@2x.png b/Theme - Soda/Soda Dark/classic/tab-active@2x.png new file mode 100644 index 0000000..17d475f Binary files /dev/null and b/Theme - Soda/Soda Dark/classic/tab-active@2x.png differ diff --git a/Theme - Soda/Soda Dark/classic/tab-hover.png b/Theme - Soda/Soda Dark/classic/tab-hover.png new file mode 100644 index 0000000..c21168c Binary files /dev/null and b/Theme - Soda/Soda Dark/classic/tab-hover.png differ diff --git a/Theme - Soda/Soda Dark/classic/tab-hover@2x.png b/Theme - Soda/Soda Dark/classic/tab-hover@2x.png new file mode 100644 index 0000000..85d9832 Binary files /dev/null and b/Theme - Soda/Soda Dark/classic/tab-hover@2x.png differ diff --git a/Theme - Soda/Soda Dark/classic/tab-inactive.png b/Theme - Soda/Soda Dark/classic/tab-inactive.png new file mode 100644 index 0000000..e078572 Binary files /dev/null and b/Theme - Soda/Soda Dark/classic/tab-inactive.png differ diff --git a/Theme - Soda/Soda Dark/classic/tab-inactive@2x.png b/Theme - Soda/Soda Dark/classic/tab-inactive@2x.png new file mode 100644 index 0000000..b7ceb0c Binary files /dev/null and b/Theme - Soda/Soda Dark/classic/tab-inactive@2x.png differ diff --git a/Theme - Soda/Soda Dark/dot.png b/Theme - Soda/Soda Dark/dot.png new file mode 100644 index 0000000..0216b46 Binary files /dev/null and b/Theme - Soda/Soda Dark/dot.png differ diff --git a/Theme - Soda/Soda Dark/file-close-hover.png b/Theme - Soda/Soda Dark/file-close-hover.png new file mode 100644 index 0000000..2905761 Binary files /dev/null and b/Theme - Soda/Soda Dark/file-close-hover.png differ diff --git a/Theme - Soda/Soda Dark/file-close-hover@2x.png b/Theme - Soda/Soda Dark/file-close-hover@2x.png new file mode 100644 index 0000000..6dd2b02 Binary files /dev/null and b/Theme - Soda/Soda Dark/file-close-hover@2x.png differ diff --git a/Theme - Soda/Soda Dark/file-close-selected.png b/Theme - Soda/Soda Dark/file-close-selected.png new file mode 100644 index 0000000..989c036 Binary files /dev/null and b/Theme - Soda/Soda Dark/file-close-selected.png differ diff --git a/Theme - Soda/Soda Dark/file-close-selected@2x.png b/Theme - Soda/Soda Dark/file-close-selected@2x.png new file mode 100644 index 0000000..90e2578 Binary files /dev/null and b/Theme - Soda/Soda Dark/file-close-selected@2x.png differ diff --git a/Theme - Soda/Soda Dark/file-close.png b/Theme - Soda/Soda Dark/file-close.png new file mode 100644 index 0000000..f5b0ed6 Binary files /dev/null and b/Theme - Soda/Soda Dark/file-close.png differ diff --git a/Theme - Soda/Soda Dark/file-close@2x.png b/Theme - Soda/Soda Dark/file-close@2x.png new file mode 100644 index 0000000..5181e70 Binary files /dev/null and b/Theme - Soda/Soda Dark/file-close@2x.png differ diff --git a/Theme - Soda/Soda Dark/file-dirty-selected.png b/Theme - Soda/Soda Dark/file-dirty-selected.png new file mode 100644 index 0000000..7513aef Binary files /dev/null and b/Theme - Soda/Soda Dark/file-dirty-selected.png differ diff --git a/Theme - Soda/Soda Dark/file-dirty-selected@2x.png b/Theme - Soda/Soda Dark/file-dirty-selected@2x.png new file mode 100644 index 0000000..5914886 Binary files /dev/null and b/Theme - Soda/Soda Dark/file-dirty-selected@2x.png differ diff --git a/Theme - Soda/Soda Dark/file-dirty.png b/Theme - Soda/Soda Dark/file-dirty.png new file mode 100644 index 0000000..8edd2e1 Binary files /dev/null and b/Theme - Soda/Soda Dark/file-dirty.png differ diff --git a/Theme - Soda/Soda Dark/file-dirty@2x.png b/Theme - Soda/Soda Dark/file-dirty@2x.png new file mode 100644 index 0000000..3fa444c Binary files /dev/null and b/Theme - Soda/Soda Dark/file-dirty@2x.png differ diff --git a/Theme - Soda/Soda Dark/fold-closed-hover.png b/Theme - Soda/Soda Dark/fold-closed-hover.png new file mode 100644 index 0000000..c2b1772 Binary files /dev/null and b/Theme - Soda/Soda Dark/fold-closed-hover.png differ diff --git a/Theme - Soda/Soda Dark/fold-closed-hover@2x.png b/Theme - Soda/Soda Dark/fold-closed-hover@2x.png new file mode 100644 index 0000000..ffc28bf Binary files /dev/null and b/Theme - Soda/Soda Dark/fold-closed-hover@2x.png differ diff --git a/Theme - Soda/Soda Dark/fold-closed.png b/Theme - Soda/Soda Dark/fold-closed.png new file mode 100644 index 0000000..4b15636 Binary files /dev/null and b/Theme - Soda/Soda Dark/fold-closed.png differ diff --git a/Theme - Soda/Soda Dark/fold-closed@2x.png b/Theme - Soda/Soda Dark/fold-closed@2x.png new file mode 100644 index 0000000..f9092e7 Binary files /dev/null and b/Theme - Soda/Soda Dark/fold-closed@2x.png differ diff --git a/Theme - Soda/Soda Dark/fold-open-hover.png b/Theme - Soda/Soda Dark/fold-open-hover.png new file mode 100644 index 0000000..cfcb481 Binary files /dev/null and b/Theme - Soda/Soda Dark/fold-open-hover.png differ diff --git a/Theme - Soda/Soda Dark/fold-open-hover@2x.png b/Theme - Soda/Soda Dark/fold-open-hover@2x.png new file mode 100644 index 0000000..b3da623 Binary files /dev/null and b/Theme - Soda/Soda Dark/fold-open-hover@2x.png differ diff --git a/Theme - Soda/Soda Dark/fold-open.png b/Theme - Soda/Soda Dark/fold-open.png new file mode 100644 index 0000000..55c3a34 Binary files /dev/null and b/Theme - Soda/Soda Dark/fold-open.png differ diff --git a/Theme - Soda/Soda Dark/fold-open@2x.png b/Theme - Soda/Soda Dark/fold-open@2x.png new file mode 100644 index 0000000..f7d4c89 Binary files /dev/null and b/Theme - Soda/Soda Dark/fold-open@2x.png differ diff --git a/Theme - Soda/Soda Dark/fold.png b/Theme - Soda/Soda Dark/fold.png new file mode 100644 index 0000000..8008475 Binary files /dev/null and b/Theme - Soda/Soda Dark/fold.png differ diff --git a/Theme - Soda/Soda Dark/group-closed-hover.png b/Theme - Soda/Soda Dark/group-closed-hover.png new file mode 100644 index 0000000..acc7e62 Binary files /dev/null and b/Theme - Soda/Soda Dark/group-closed-hover.png differ diff --git a/Theme - Soda/Soda Dark/group-closed-hover@2x.png b/Theme - Soda/Soda Dark/group-closed-hover@2x.png new file mode 100644 index 0000000..0a20c3f Binary files /dev/null and b/Theme - Soda/Soda Dark/group-closed-hover@2x.png differ diff --git a/Theme - Soda/Soda Dark/group-closed-selected.png b/Theme - Soda/Soda Dark/group-closed-selected.png new file mode 100644 index 0000000..fbe4d30 Binary files /dev/null and b/Theme - Soda/Soda Dark/group-closed-selected.png differ diff --git a/Theme - Soda/Soda Dark/group-closed-selected@2x.png b/Theme - Soda/Soda Dark/group-closed-selected@2x.png new file mode 100644 index 0000000..5e96a03 Binary files /dev/null and b/Theme - Soda/Soda Dark/group-closed-selected@2x.png differ diff --git a/Theme - Soda/Soda Dark/group-closed.png b/Theme - Soda/Soda Dark/group-closed.png new file mode 100644 index 0000000..a9b08c7 Binary files /dev/null and b/Theme - Soda/Soda Dark/group-closed.png differ diff --git a/Theme - Soda/Soda Dark/group-closed@2x.png b/Theme - Soda/Soda Dark/group-closed@2x.png new file mode 100644 index 0000000..6fc2485 Binary files /dev/null and b/Theme - Soda/Soda Dark/group-closed@2x.png differ diff --git a/Theme - Soda/Soda Dark/group-open-hover.png b/Theme - Soda/Soda Dark/group-open-hover.png new file mode 100644 index 0000000..996ece4 Binary files /dev/null and b/Theme - Soda/Soda Dark/group-open-hover.png differ diff --git a/Theme - Soda/Soda Dark/group-open-hover@2x.png b/Theme - Soda/Soda Dark/group-open-hover@2x.png new file mode 100644 index 0000000..07234e5 Binary files /dev/null and b/Theme - Soda/Soda Dark/group-open-hover@2x.png differ diff --git a/Theme - Soda/Soda Dark/group-open-selected.png b/Theme - Soda/Soda Dark/group-open-selected.png new file mode 100644 index 0000000..71446e4 Binary files /dev/null and b/Theme - Soda/Soda Dark/group-open-selected.png differ diff --git a/Theme - Soda/Soda Dark/group-open-selected@2x.png b/Theme - Soda/Soda Dark/group-open-selected@2x.png new file mode 100644 index 0000000..0be0189 Binary files /dev/null and b/Theme - Soda/Soda Dark/group-open-selected@2x.png differ diff --git a/Theme - Soda/Soda Dark/group-open.png b/Theme - Soda/Soda Dark/group-open.png new file mode 100644 index 0000000..60e8735 Binary files /dev/null and b/Theme - Soda/Soda Dark/group-open.png differ diff --git a/Theme - Soda/Soda Dark/group-open@2x.png b/Theme - Soda/Soda Dark/group-open@2x.png new file mode 100644 index 0000000..0bdf757 Binary files /dev/null and b/Theme - Soda/Soda Dark/group-open@2x.png differ diff --git a/Theme - Soda/Soda Dark/icon-buffer-off.png b/Theme - Soda/Soda Dark/icon-buffer-off.png new file mode 100644 index 0000000..c766f0b Binary files /dev/null and b/Theme - Soda/Soda Dark/icon-buffer-off.png differ diff --git a/Theme - Soda/Soda Dark/icon-buffer-off@2x.png b/Theme - Soda/Soda Dark/icon-buffer-off@2x.png new file mode 100644 index 0000000..3f08ebc Binary files /dev/null and b/Theme - Soda/Soda Dark/icon-buffer-off@2x.png differ diff --git a/Theme - Soda/Soda Dark/icon-buffer-on.png b/Theme - Soda/Soda Dark/icon-buffer-on.png new file mode 100644 index 0000000..0ea1d87 Binary files /dev/null and b/Theme - Soda/Soda Dark/icon-buffer-on.png differ diff --git a/Theme - Soda/Soda Dark/icon-buffer-on@2x.png b/Theme - Soda/Soda Dark/icon-buffer-on@2x.png new file mode 100644 index 0000000..8fb36fb Binary files /dev/null and b/Theme - Soda/Soda Dark/icon-buffer-on@2x.png differ diff --git a/Theme - Soda/Soda Dark/icon-case-off.png b/Theme - Soda/Soda Dark/icon-case-off.png new file mode 100644 index 0000000..98cfe0b Binary files /dev/null and b/Theme - Soda/Soda Dark/icon-case-off.png differ diff --git a/Theme - Soda/Soda Dark/icon-case-off@2x.png b/Theme - Soda/Soda Dark/icon-case-off@2x.png new file mode 100644 index 0000000..1c27119 Binary files /dev/null and b/Theme - Soda/Soda Dark/icon-case-off@2x.png differ diff --git a/Theme - Soda/Soda Dark/icon-case-on.png b/Theme - Soda/Soda Dark/icon-case-on.png new file mode 100644 index 0000000..84813cd Binary files /dev/null and b/Theme - Soda/Soda Dark/icon-case-on.png differ diff --git a/Theme - Soda/Soda Dark/icon-case-on@2x.png b/Theme - Soda/Soda Dark/icon-case-on@2x.png new file mode 100644 index 0000000..05770df Binary files /dev/null and b/Theme - Soda/Soda Dark/icon-case-on@2x.png differ diff --git a/Theme - Soda/Soda Dark/icon-context-off.png b/Theme - Soda/Soda Dark/icon-context-off.png new file mode 100644 index 0000000..7db1bc4 Binary files /dev/null and b/Theme - Soda/Soda Dark/icon-context-off.png differ diff --git a/Theme - Soda/Soda Dark/icon-context-off@2x.png b/Theme - Soda/Soda Dark/icon-context-off@2x.png new file mode 100644 index 0000000..2a0557c Binary files /dev/null and b/Theme - Soda/Soda Dark/icon-context-off@2x.png differ diff --git a/Theme - Soda/Soda Dark/icon-context-on.png b/Theme - Soda/Soda Dark/icon-context-on.png new file mode 100644 index 0000000..7447f94 Binary files /dev/null and b/Theme - Soda/Soda Dark/icon-context-on.png differ diff --git a/Theme - Soda/Soda Dark/icon-context-on@2x.png b/Theme - Soda/Soda Dark/icon-context-on@2x.png new file mode 100644 index 0000000..f04193b Binary files /dev/null and b/Theme - Soda/Soda Dark/icon-context-on@2x.png differ diff --git a/Theme - Soda/Soda Dark/icon-highlight-off.png b/Theme - Soda/Soda Dark/icon-highlight-off.png new file mode 100644 index 0000000..a6e5498 Binary files /dev/null and b/Theme - Soda/Soda Dark/icon-highlight-off.png differ diff --git a/Theme - Soda/Soda Dark/icon-highlight-off@2x.png b/Theme - Soda/Soda Dark/icon-highlight-off@2x.png new file mode 100644 index 0000000..e8d1a84 Binary files /dev/null and b/Theme - Soda/Soda Dark/icon-highlight-off@2x.png differ diff --git a/Theme - Soda/Soda Dark/icon-highlight-on.png b/Theme - Soda/Soda Dark/icon-highlight-on.png new file mode 100644 index 0000000..42cd598 Binary files /dev/null and b/Theme - Soda/Soda Dark/icon-highlight-on.png differ diff --git a/Theme - Soda/Soda Dark/icon-highlight-on@2x.png b/Theme - Soda/Soda Dark/icon-highlight-on@2x.png new file mode 100644 index 0000000..28fde6b Binary files /dev/null and b/Theme - Soda/Soda Dark/icon-highlight-on@2x.png differ diff --git a/Theme - Soda/Soda Dark/icon-preserve-off.png b/Theme - Soda/Soda Dark/icon-preserve-off.png new file mode 100644 index 0000000..1b94814 Binary files /dev/null and b/Theme - Soda/Soda Dark/icon-preserve-off.png differ diff --git a/Theme - Soda/Soda Dark/icon-preserve-off@2x.png b/Theme - Soda/Soda Dark/icon-preserve-off@2x.png new file mode 100644 index 0000000..e7e60ba Binary files /dev/null and b/Theme - Soda/Soda Dark/icon-preserve-off@2x.png differ diff --git a/Theme - Soda/Soda Dark/icon-preserve-on.png b/Theme - Soda/Soda Dark/icon-preserve-on.png new file mode 100644 index 0000000..1202888 Binary files /dev/null and b/Theme - Soda/Soda Dark/icon-preserve-on.png differ diff --git a/Theme - Soda/Soda Dark/icon-preserve-on@2x.png b/Theme - Soda/Soda Dark/icon-preserve-on@2x.png new file mode 100644 index 0000000..419010c Binary files /dev/null and b/Theme - Soda/Soda Dark/icon-preserve-on@2x.png differ diff --git a/Theme - Soda/Soda Dark/icon-regex-off.png b/Theme - Soda/Soda Dark/icon-regex-off.png new file mode 100644 index 0000000..1669cfc Binary files /dev/null and b/Theme - Soda/Soda Dark/icon-regex-off.png differ diff --git a/Theme - Soda/Soda Dark/icon-regex-off@2x.png b/Theme - Soda/Soda Dark/icon-regex-off@2x.png new file mode 100644 index 0000000..ccac8ab Binary files /dev/null and b/Theme - Soda/Soda Dark/icon-regex-off@2x.png differ diff --git a/Theme - Soda/Soda Dark/icon-regex-on.png b/Theme - Soda/Soda Dark/icon-regex-on.png new file mode 100644 index 0000000..15a72cf Binary files /dev/null and b/Theme - Soda/Soda Dark/icon-regex-on.png differ diff --git a/Theme - Soda/Soda Dark/icon-regex-on@2x.png b/Theme - Soda/Soda Dark/icon-regex-on@2x.png new file mode 100644 index 0000000..4a500a3 Binary files /dev/null and b/Theme - Soda/Soda Dark/icon-regex-on@2x.png differ diff --git a/Theme - Soda/Soda Dark/icon-reverse-off.png b/Theme - Soda/Soda Dark/icon-reverse-off.png new file mode 100644 index 0000000..91a13b6 Binary files /dev/null and b/Theme - Soda/Soda Dark/icon-reverse-off.png differ diff --git a/Theme - Soda/Soda Dark/icon-reverse-off@2x.png b/Theme - Soda/Soda Dark/icon-reverse-off@2x.png new file mode 100644 index 0000000..c0f0af4 Binary files /dev/null and b/Theme - Soda/Soda Dark/icon-reverse-off@2x.png differ diff --git a/Theme - Soda/Soda Dark/icon-reverse-on.png b/Theme - Soda/Soda Dark/icon-reverse-on.png new file mode 100644 index 0000000..cadfdf7 Binary files /dev/null and b/Theme - Soda/Soda Dark/icon-reverse-on.png differ diff --git a/Theme - Soda/Soda Dark/icon-reverse-on@2x.png b/Theme - Soda/Soda Dark/icon-reverse-on@2x.png new file mode 100644 index 0000000..b039826 Binary files /dev/null and b/Theme - Soda/Soda Dark/icon-reverse-on@2x.png differ diff --git a/Theme - Soda/Soda Dark/icon-selection-off.png b/Theme - Soda/Soda Dark/icon-selection-off.png new file mode 100644 index 0000000..efc00dc Binary files /dev/null and b/Theme - Soda/Soda Dark/icon-selection-off.png differ diff --git a/Theme - Soda/Soda Dark/icon-selection-off@2x.png b/Theme - Soda/Soda Dark/icon-selection-off@2x.png new file mode 100644 index 0000000..ec6f0fa Binary files /dev/null and b/Theme - Soda/Soda Dark/icon-selection-off@2x.png differ diff --git a/Theme - Soda/Soda Dark/icon-selection-on.png b/Theme - Soda/Soda Dark/icon-selection-on.png new file mode 100644 index 0000000..c71ae65 Binary files /dev/null and b/Theme - Soda/Soda Dark/icon-selection-on.png differ diff --git a/Theme - Soda/Soda Dark/icon-selection-on@2x.png b/Theme - Soda/Soda Dark/icon-selection-on@2x.png new file mode 100644 index 0000000..303a33b Binary files /dev/null and b/Theme - Soda/Soda Dark/icon-selection-on@2x.png differ diff --git a/Theme - Soda/Soda Dark/icon-word-off.png b/Theme - Soda/Soda Dark/icon-word-off.png new file mode 100644 index 0000000..bdf69c0 Binary files /dev/null and b/Theme - Soda/Soda Dark/icon-word-off.png differ diff --git a/Theme - Soda/Soda Dark/icon-word-off@2x.png b/Theme - Soda/Soda Dark/icon-word-off@2x.png new file mode 100644 index 0000000..160f44a Binary files /dev/null and b/Theme - Soda/Soda Dark/icon-word-off@2x.png differ diff --git a/Theme - Soda/Soda Dark/icon-word-on.png b/Theme - Soda/Soda Dark/icon-word-on.png new file mode 100644 index 0000000..3c880fd Binary files /dev/null and b/Theme - Soda/Soda Dark/icon-word-on.png differ diff --git a/Theme - Soda/Soda Dark/icon-word-on@2x.png b/Theme - Soda/Soda Dark/icon-word-on@2x.png new file mode 100644 index 0000000..52f8b3b Binary files /dev/null and b/Theme - Soda/Soda Dark/icon-word-on@2x.png differ diff --git a/Theme - Soda/Soda Dark/icon-wrap-off.png b/Theme - Soda/Soda Dark/icon-wrap-off.png new file mode 100644 index 0000000..b9facd8 Binary files /dev/null and b/Theme - Soda/Soda Dark/icon-wrap-off.png differ diff --git a/Theme - Soda/Soda Dark/icon-wrap-off@2x.png b/Theme - Soda/Soda Dark/icon-wrap-off@2x.png new file mode 100644 index 0000000..d8d02dc Binary files /dev/null and b/Theme - Soda/Soda Dark/icon-wrap-off@2x.png differ diff --git a/Theme - Soda/Soda Dark/icon-wrap-on.png b/Theme - Soda/Soda Dark/icon-wrap-on.png new file mode 100644 index 0000000..5df3e46 Binary files /dev/null and b/Theme - Soda/Soda Dark/icon-wrap-on.png differ diff --git a/Theme - Soda/Soda Dark/icon-wrap-on@2x.png b/Theme - Soda/Soda Dark/icon-wrap-on@2x.png new file mode 100644 index 0000000..447dccf Binary files /dev/null and b/Theme - Soda/Soda Dark/icon-wrap-on@2x.png differ diff --git a/Theme - Soda/Soda Dark/overlay-dark-puck-horizontal.png b/Theme - Soda/Soda Dark/overlay-dark-puck-horizontal.png new file mode 100644 index 0000000..762e5a7 Binary files /dev/null and b/Theme - Soda/Soda Dark/overlay-dark-puck-horizontal.png differ diff --git a/Theme - Soda/Soda Dark/overlay-dark-puck-horizontal@2x.png b/Theme - Soda/Soda Dark/overlay-dark-puck-horizontal@2x.png new file mode 100644 index 0000000..166aba8 Binary files /dev/null and b/Theme - Soda/Soda Dark/overlay-dark-puck-horizontal@2x.png differ diff --git a/Theme - Soda/Soda Dark/overlay-dark-puck-vertical.png b/Theme - Soda/Soda Dark/overlay-dark-puck-vertical.png new file mode 100644 index 0000000..f2c4047 Binary files /dev/null and b/Theme - Soda/Soda Dark/overlay-dark-puck-vertical.png differ diff --git a/Theme - Soda/Soda Dark/overlay-dark-puck-vertical@2x.png b/Theme - Soda/Soda Dark/overlay-dark-puck-vertical@2x.png new file mode 100644 index 0000000..7f22be6 Binary files /dev/null and b/Theme - Soda/Soda Dark/overlay-dark-puck-vertical@2x.png differ diff --git a/Theme - Soda/Soda Dark/overlay-puck-horizontal.png b/Theme - Soda/Soda Dark/overlay-puck-horizontal.png new file mode 100644 index 0000000..4b677dc Binary files /dev/null and b/Theme - Soda/Soda Dark/overlay-puck-horizontal.png differ diff --git a/Theme - Soda/Soda Dark/overlay-puck-horizontal@2x.png b/Theme - Soda/Soda Dark/overlay-puck-horizontal@2x.png new file mode 100644 index 0000000..3ee8fee Binary files /dev/null and b/Theme - Soda/Soda Dark/overlay-puck-horizontal@2x.png differ diff --git a/Theme - Soda/Soda Dark/overlay-puck-vertical.png b/Theme - Soda/Soda Dark/overlay-puck-vertical.png new file mode 100644 index 0000000..1603bad Binary files /dev/null and b/Theme - Soda/Soda Dark/overlay-puck-vertical.png differ diff --git a/Theme - Soda/Soda Dark/overlay-puck-vertical@2x.png b/Theme - Soda/Soda Dark/overlay-puck-vertical@2x.png new file mode 100644 index 0000000..7aebfa6 Binary files /dev/null and b/Theme - Soda/Soda Dark/overlay-puck-vertical@2x.png differ diff --git a/Theme - Soda/Soda Dark/overlay-scrollbar-horizontal.png b/Theme - Soda/Soda Dark/overlay-scrollbar-horizontal.png new file mode 100644 index 0000000..ff2ca6e Binary files /dev/null and b/Theme - Soda/Soda Dark/overlay-scrollbar-horizontal.png differ diff --git a/Theme - Soda/Soda Dark/overlay-scrollbar-horizontal@2x.png b/Theme - Soda/Soda Dark/overlay-scrollbar-horizontal@2x.png new file mode 100644 index 0000000..2b5bb07 Binary files /dev/null and b/Theme - Soda/Soda Dark/overlay-scrollbar-horizontal@2x.png differ diff --git a/Theme - Soda/Soda Dark/overlay-scrollbar-vertical.png b/Theme - Soda/Soda Dark/overlay-scrollbar-vertical.png new file mode 100644 index 0000000..5e981c3 Binary files /dev/null and b/Theme - Soda/Soda Dark/overlay-scrollbar-vertical.png differ diff --git a/Theme - Soda/Soda Dark/overlay-scrollbar-vertical@2x.png b/Theme - Soda/Soda Dark/overlay-scrollbar-vertical@2x.png new file mode 100644 index 0000000..3d3ff15 Binary files /dev/null and b/Theme - Soda/Soda Dark/overlay-scrollbar-vertical@2x.png differ diff --git a/Theme - Soda/Soda Dark/panel-background.png b/Theme - Soda/Soda Dark/panel-background.png new file mode 100644 index 0000000..b92b2b9 Binary files /dev/null and b/Theme - Soda/Soda Dark/panel-background.png differ diff --git a/Theme - Soda/Soda Dark/panel-background@2x.png b/Theme - Soda/Soda Dark/panel-background@2x.png new file mode 100644 index 0000000..e7b5f99 Binary files /dev/null and b/Theme - Soda/Soda Dark/panel-background@2x.png differ diff --git a/Theme - Soda/Soda Dark/quick-panel-background.png b/Theme - Soda/Soda Dark/quick-panel-background.png new file mode 100644 index 0000000..4b46c9d Binary files /dev/null and b/Theme - Soda/Soda Dark/quick-panel-background.png differ diff --git a/Theme - Soda/Soda Dark/quick-panel-background@2x.png b/Theme - Soda/Soda Dark/quick-panel-background@2x.png new file mode 100644 index 0000000..c6d75de Binary files /dev/null and b/Theme - Soda/Soda Dark/quick-panel-background@2x.png differ diff --git a/Theme - Soda/Soda Dark/quick-panel-row-selected.png b/Theme - Soda/Soda Dark/quick-panel-row-selected.png new file mode 100644 index 0000000..c7ba57b Binary files /dev/null and b/Theme - Soda/Soda Dark/quick-panel-row-selected.png differ diff --git a/Theme - Soda/Soda Dark/quick-panel-row-selected@2x.png b/Theme - Soda/Soda Dark/quick-panel-row-selected@2x.png new file mode 100644 index 0000000..753e68f Binary files /dev/null and b/Theme - Soda/Soda Dark/quick-panel-row-selected@2x.png differ diff --git a/Theme - Soda/Soda Dark/quick-panel-row.png b/Theme - Soda/Soda Dark/quick-panel-row.png new file mode 100644 index 0000000..6caef9d Binary files /dev/null and b/Theme - Soda/Soda Dark/quick-panel-row.png differ diff --git a/Theme - Soda/Soda Dark/quick-panel-row@2x.png b/Theme - Soda/Soda Dark/quick-panel-row@2x.png new file mode 100644 index 0000000..4d1faff Binary files /dev/null and b/Theme - Soda/Soda Dark/quick-panel-row@2x.png differ diff --git a/Theme - Soda/Soda Dark/quick-panel-sections.png b/Theme - Soda/Soda Dark/quick-panel-sections.png new file mode 100644 index 0000000..70c7838 Binary files /dev/null and b/Theme - Soda/Soda Dark/quick-panel-sections.png differ diff --git a/Theme - Soda/Soda Dark/quick-panel-sections@2x.png b/Theme - Soda/Soda Dark/quick-panel-sections@2x.png new file mode 100644 index 0000000..184c512 Binary files /dev/null and b/Theme - Soda/Soda Dark/quick-panel-sections@2x.png differ diff --git a/Theme - Soda/Soda Dark/sidebar-bg.png b/Theme - Soda/Soda Dark/sidebar-bg.png new file mode 100644 index 0000000..70abafa Binary files /dev/null and b/Theme - Soda/Soda Dark/sidebar-bg.png differ diff --git a/Theme - Soda/Soda Dark/sidebar-bg@2x.png b/Theme - Soda/Soda Dark/sidebar-bg@2x.png new file mode 100644 index 0000000..68c1315 Binary files /dev/null and b/Theme - Soda/Soda Dark/sidebar-bg@2x.png differ diff --git a/Theme - Soda/Soda Dark/sidebar-row-selected.png b/Theme - Soda/Soda Dark/sidebar-row-selected.png new file mode 100644 index 0000000..53a5a67 Binary files /dev/null and b/Theme - Soda/Soda Dark/sidebar-row-selected.png differ diff --git a/Theme - Soda/Soda Dark/sidebar-row-selected@2x.png b/Theme - Soda/Soda Dark/sidebar-row-selected@2x.png new file mode 100644 index 0000000..4be24fd Binary files /dev/null and b/Theme - Soda/Soda Dark/sidebar-row-selected@2x.png differ diff --git a/Theme - Soda/Soda Dark/standard-puck-horizontal.png b/Theme - Soda/Soda Dark/standard-puck-horizontal.png new file mode 100644 index 0000000..2bf392d Binary files /dev/null and b/Theme - Soda/Soda Dark/standard-puck-horizontal.png differ diff --git a/Theme - Soda/Soda Dark/standard-puck-horizontal@2x.png b/Theme - Soda/Soda Dark/standard-puck-horizontal@2x.png new file mode 100644 index 0000000..3f4de61 Binary files /dev/null and b/Theme - Soda/Soda Dark/standard-puck-horizontal@2x.png differ diff --git a/Theme - Soda/Soda Dark/standard-puck-vertical.png b/Theme - Soda/Soda Dark/standard-puck-vertical.png new file mode 100644 index 0000000..ee5401e Binary files /dev/null and b/Theme - Soda/Soda Dark/standard-puck-vertical.png differ diff --git a/Theme - Soda/Soda Dark/standard-puck-vertical@2x.png b/Theme - Soda/Soda Dark/standard-puck-vertical@2x.png new file mode 100644 index 0000000..ede9da9 Binary files /dev/null and b/Theme - Soda/Soda Dark/standard-puck-vertical@2x.png differ diff --git a/Theme - Soda/Soda Dark/standard-scrollbar-corner.png b/Theme - Soda/Soda Dark/standard-scrollbar-corner.png new file mode 100644 index 0000000..9fdedde Binary files /dev/null and b/Theme - Soda/Soda Dark/standard-scrollbar-corner.png differ diff --git a/Theme - Soda/Soda Dark/standard-scrollbar-corner@2x.png b/Theme - Soda/Soda Dark/standard-scrollbar-corner@2x.png new file mode 100644 index 0000000..919474b Binary files /dev/null and b/Theme - Soda/Soda Dark/standard-scrollbar-corner@2x.png differ diff --git a/Theme - Soda/Soda Dark/standard-scrollbar-horizontal.png b/Theme - Soda/Soda Dark/standard-scrollbar-horizontal.png new file mode 100644 index 0000000..a57c13f Binary files /dev/null and b/Theme - Soda/Soda Dark/standard-scrollbar-horizontal.png differ diff --git a/Theme - Soda/Soda Dark/standard-scrollbar-horizontal@2x.png b/Theme - Soda/Soda Dark/standard-scrollbar-horizontal@2x.png new file mode 100644 index 0000000..fc9f044 Binary files /dev/null and b/Theme - Soda/Soda Dark/standard-scrollbar-horizontal@2x.png differ diff --git a/Theme - Soda/Soda Dark/standard-scrollbar-vertical.png b/Theme - Soda/Soda Dark/standard-scrollbar-vertical.png new file mode 100644 index 0000000..1c958be Binary files /dev/null and b/Theme - Soda/Soda Dark/standard-scrollbar-vertical.png differ diff --git a/Theme - Soda/Soda Dark/standard-scrollbar-vertical@2x.png b/Theme - Soda/Soda Dark/standard-scrollbar-vertical@2x.png new file mode 100644 index 0000000..f560c3f Binary files /dev/null and b/Theme - Soda/Soda Dark/standard-scrollbar-vertical@2x.png differ diff --git a/Theme - Soda/Soda Dark/status-bar-background.png b/Theme - Soda/Soda Dark/status-bar-background.png new file mode 100644 index 0000000..4eab5f3 Binary files /dev/null and b/Theme - Soda/Soda Dark/status-bar-background.png differ diff --git a/Theme - Soda/Soda Dark/status-bar-background@2x.png b/Theme - Soda/Soda Dark/status-bar-background@2x.png new file mode 100644 index 0000000..d8126c8 Binary files /dev/null and b/Theme - Soda/Soda Dark/status-bar-background@2x.png differ diff --git a/Theme - Soda/Soda Dark/tab-active.png b/Theme - Soda/Soda Dark/tab-active.png new file mode 100644 index 0000000..72fd2e9 Binary files /dev/null and b/Theme - Soda/Soda Dark/tab-active.png differ diff --git a/Theme - Soda/Soda Dark/tab-active@2x.png b/Theme - Soda/Soda Dark/tab-active@2x.png new file mode 100644 index 0000000..0f78299 Binary files /dev/null and b/Theme - Soda/Soda Dark/tab-active@2x.png differ diff --git a/Theme - Soda/Soda Dark/tab-close-hover.png b/Theme - Soda/Soda Dark/tab-close-hover.png new file mode 100644 index 0000000..0d37ca3 Binary files /dev/null and b/Theme - Soda/Soda Dark/tab-close-hover.png differ diff --git a/Theme - Soda/Soda Dark/tab-close-hover@2x.png b/Theme - Soda/Soda Dark/tab-close-hover@2x.png new file mode 100644 index 0000000..66791d8 Binary files /dev/null and b/Theme - Soda/Soda Dark/tab-close-hover@2x.png differ diff --git a/Theme - Soda/Soda Dark/tab-close-inactive.png b/Theme - Soda/Soda Dark/tab-close-inactive.png new file mode 100644 index 0000000..865956a Binary files /dev/null and b/Theme - Soda/Soda Dark/tab-close-inactive.png differ diff --git a/Theme - Soda/Soda Dark/tab-close-inactive@2x.png b/Theme - Soda/Soda Dark/tab-close-inactive@2x.png new file mode 100644 index 0000000..0e71145 Binary files /dev/null and b/Theme - Soda/Soda Dark/tab-close-inactive@2x.png differ diff --git a/Theme - Soda/Soda Dark/tab-close-pressed.png b/Theme - Soda/Soda Dark/tab-close-pressed.png new file mode 100644 index 0000000..2cf0633 Binary files /dev/null and b/Theme - Soda/Soda Dark/tab-close-pressed.png differ diff --git a/Theme - Soda/Soda Dark/tab-close-pressed@2x.png b/Theme - Soda/Soda Dark/tab-close-pressed@2x.png new file mode 100644 index 0000000..dad7a93 Binary files /dev/null and b/Theme - Soda/Soda Dark/tab-close-pressed@2x.png differ diff --git a/Theme - Soda/Soda Dark/tab-close.png b/Theme - Soda/Soda Dark/tab-close.png new file mode 100644 index 0000000..865956a Binary files /dev/null and b/Theme - Soda/Soda Dark/tab-close.png differ diff --git a/Theme - Soda/Soda Dark/tab-close@2x.png b/Theme - Soda/Soda Dark/tab-close@2x.png new file mode 100644 index 0000000..0e71145 Binary files /dev/null and b/Theme - Soda/Soda Dark/tab-close@2x.png differ diff --git a/Theme - Soda/Soda Dark/tab-dirty-inactive.png b/Theme - Soda/Soda Dark/tab-dirty-inactive.png new file mode 100644 index 0000000..95003f0 Binary files /dev/null and b/Theme - Soda/Soda Dark/tab-dirty-inactive.png differ diff --git a/Theme - Soda/Soda Dark/tab-dirty-inactive@2x.png b/Theme - Soda/Soda Dark/tab-dirty-inactive@2x.png new file mode 100644 index 0000000..aed1da1 Binary files /dev/null and b/Theme - Soda/Soda Dark/tab-dirty-inactive@2x.png differ diff --git a/Theme - Soda/Soda Dark/tab-dirty.png b/Theme - Soda/Soda Dark/tab-dirty.png new file mode 100644 index 0000000..9eb7ea1 Binary files /dev/null and b/Theme - Soda/Soda Dark/tab-dirty.png differ diff --git a/Theme - Soda/Soda Dark/tab-dirty@2x.png b/Theme - Soda/Soda Dark/tab-dirty@2x.png new file mode 100644 index 0000000..f388264 Binary files /dev/null and b/Theme - Soda/Soda Dark/tab-dirty@2x.png differ diff --git a/Theme - Soda/Soda Dark/tab-highlight-inactive.png b/Theme - Soda/Soda Dark/tab-highlight-inactive.png new file mode 100644 index 0000000..9c715ca Binary files /dev/null and b/Theme - Soda/Soda Dark/tab-highlight-inactive.png differ diff --git a/Theme - Soda/Soda Dark/tab-highlight-inactive@2x.png b/Theme - Soda/Soda Dark/tab-highlight-inactive@2x.png new file mode 100644 index 0000000..028b26f Binary files /dev/null and b/Theme - Soda/Soda Dark/tab-highlight-inactive@2x.png differ diff --git a/Theme - Soda/Soda Dark/tab-highlight.png b/Theme - Soda/Soda Dark/tab-highlight.png new file mode 100644 index 0000000..c9a28b8 Binary files /dev/null and b/Theme - Soda/Soda Dark/tab-highlight.png differ diff --git a/Theme - Soda/Soda Dark/tab-highlight@2x.png b/Theme - Soda/Soda Dark/tab-highlight@2x.png new file mode 100644 index 0000000..2d53da8 Binary files /dev/null and b/Theme - Soda/Soda Dark/tab-highlight@2x.png differ diff --git a/Theme - Soda/Soda Dark/tab-hover.png b/Theme - Soda/Soda Dark/tab-hover.png new file mode 100644 index 0000000..b5c4c7c Binary files /dev/null and b/Theme - Soda/Soda Dark/tab-hover.png differ diff --git a/Theme - Soda/Soda Dark/tab-hover@2x.png b/Theme - Soda/Soda Dark/tab-hover@2x.png new file mode 100644 index 0000000..d7d17f0 Binary files /dev/null and b/Theme - Soda/Soda Dark/tab-hover@2x.png differ diff --git a/Theme - Soda/Soda Dark/tab-inactive.png b/Theme - Soda/Soda Dark/tab-inactive.png new file mode 100644 index 0000000..3ff4773 Binary files /dev/null and b/Theme - Soda/Soda Dark/tab-inactive.png differ diff --git a/Theme - Soda/Soda Dark/tab-inactive@2x.png b/Theme - Soda/Soda Dark/tab-inactive@2x.png new file mode 100644 index 0000000..92ba53e Binary files /dev/null and b/Theme - Soda/Soda Dark/tab-inactive@2x.png differ diff --git a/Theme - Soda/Soda Dark/tabset-background.png b/Theme - Soda/Soda Dark/tabset-background.png new file mode 100644 index 0000000..eaa87b5 Binary files /dev/null and b/Theme - Soda/Soda Dark/tabset-background.png differ diff --git a/Theme - Soda/Soda Dark/tabset-background@2x.png b/Theme - Soda/Soda Dark/tabset-background@2x.png new file mode 100644 index 0000000..cc6999d Binary files /dev/null and b/Theme - Soda/Soda Dark/tabset-background@2x.png differ diff --git a/Theme - Soda/Soda Dark/text-field.png b/Theme - Soda/Soda Dark/text-field.png new file mode 100644 index 0000000..f2f3ea3 Binary files /dev/null and b/Theme - Soda/Soda Dark/text-field.png differ diff --git a/Theme - Soda/Soda Dark/text-field@2x.png b/Theme - Soda/Soda Dark/text-field@2x.png new file mode 100644 index 0000000..7dbb058 Binary files /dev/null and b/Theme - Soda/Soda Dark/text-field@2x.png differ diff --git a/Theme - Soda/Soda Dark/tooltip.png b/Theme - Soda/Soda Dark/tooltip.png new file mode 100644 index 0000000..63faab6 Binary files /dev/null and b/Theme - Soda/Soda Dark/tooltip.png differ diff --git a/Theme - Soda/Soda Dark/tooltip@2x.png b/Theme - Soda/Soda Dark/tooltip@2x.png new file mode 100644 index 0000000..1cccaa6 Binary files /dev/null and b/Theme - Soda/Soda Dark/tooltip@2x.png differ diff --git a/Theme - Soda/Soda Light.sublime-theme b/Theme - Soda/Soda Light.sublime-theme new file mode 100644 index 0000000..5f2cfb9 --- /dev/null +++ b/Theme - Soda/Soda Light.sublime-theme @@ -0,0 +1,971 @@ +[ + +// +// TABS (REGULAR) +// + + // Tab set + { + "class": "tabset_control", + "layer0.texture": "Theme - Soda/Soda Light/tabset-background.png", + "layer0.inner_margin": [1, 7], + "layer0.opacity": 1.0, + "content_margin": [-4, 0, -4, 3], + "tab_overlap": 5, + "tab_width": 180, + "tab_min_width": 45, + "tab_height": 25, + "mouse_wheel_switch": false + }, + { + "class": "tabset_control", + "settings": ["mouse_wheel_switches_tabs"], + "mouse_wheel_switch": true + }, + // Tab element + { + "class": "tab_control", + "content_margin": [12, 3, 12, 3], + "max_margin_trim": 0, + "hit_test_level": 0.0, + "layer0.texture": "Theme - Soda/Soda Light/tab-inactive.png", + "layer0.inner_margin": [5, 5], + "layer0.opacity": 1.0 + }, + // Tab close state + { + "class": "tab_control", + "settings": ["show_tab_close_buttons"], + "content_margin": [12, 3, 7, 3] + }, + // Tab hover state + { + "class": "tab_control", + "attributes": ["hover"], + "layer0.texture": "Theme - Soda/Soda Light/tab-hover.png" + }, + // Tab active state + { + "class": "tab_control", + "attributes": ["selected"], + "layer0.texture": "Theme - Soda/Soda Light/tab-active.png" + }, + // Tab dirty state (close button hidden) + { + "class": "tab_control", + "settings": ["!show_tab_close_buttons"], + "attributes": ["dirty"], + "content_margin": [12, 3, 7, 3] + }, + +// +// TABS (CLASSIC) +// + + // Tab set + { + "class": "tabset_control", + "settings": ["soda_classic_tabs"], + "content_margin": [3, 4, 3, 3], + "tab_overlap": 24, + "tab_height": 28 + }, + // Tab element + { + "class": "tab_control", + "settings": ["soda_classic_tabs"], + "content_margin": [22, 6, 22, 4], + "hit_test_level": 0.5, + "layer0.texture": "Theme - Soda/Soda Light/classic/tab-inactive.png", + "layer0.inner_margin": [18, 4] + }, + // Tab close state + { + "class": "tab_control", + "settings": ["soda_classic_tabs", "show_tab_close_buttons"], + "content_margin": [22, 6, 15, 4] + }, + // Tab hover state + { + "class": "tab_control", + "settings": ["soda_classic_tabs"], + "attributes": ["hover"], + "layer0.texture": "Theme - Soda/Soda Light/classic/tab-hover.png" + }, + // Tab active state + { + "class": "tab_control", + "settings": ["soda_classic_tabs"], + "attributes": ["selected"], + "layer0.texture": "Theme - Soda/Soda Light/classic/tab-active.png" + }, + // Tab dirty state (close button hidden) + { + "class": "tab_control", + "settings": ["soda_classic_tabs", "!show_tab_close_buttons"], + "attributes": ["dirty"], + "content_margin": [22, 6, 15, 4] + }, + +// +// TAB BUTTONS +// + + // Tab close button + { + "class": "tab_close_button", + "content_margin": [0, 0], + "layer0.texture": "Theme - Soda/Soda Light/tab-close-inactive.png", + "layer0.opacity": 1.0, + "layer0.inner_margin": 0 + }, + { + "class": "tab_close_button", + "settings": ["show_tab_close_buttons"], + "content_margin": [8, 8] + }, + { + "class": "tab_close_button", + "parents": [{"class": "tab_control", "attributes": ["hover"]}], + "layer0.texture": "Theme - Soda/Soda Light/tab-close.png", + "layer0.opacity": 0.85 + }, + { + "class": "tab_close_button", + "parents": [{"class": "tab_control", "attributes": ["selected"]}], + "layer0.texture": "Theme - Soda/Soda Light/tab-close.png", + "layer0.opacity": 1.0 + }, + // Tab dirty button + { + "class": "tab_close_button", + "parents": [{"class": "tab_control", "attributes": ["dirty"]}], + "layer0.texture": "Theme - Soda/Soda Light/tab-dirty-inactive.png" + }, + { + "class": "tab_close_button", + "settings": ["!show_tab_close_buttons"], + "parents": [{"class": "tab_control", "attributes": ["dirty"]}], + "content_margin": [8, 8] + }, + { + "class": "tab_close_button", + "parents": [{"class": "tab_control", "attributes": ["dirty", "hover"]}], + "layer0.opacity": 1.0 + }, + { + "class": "tab_close_button", + "parents": [{"class": "tab_control", "attributes": ["dirty", "selected"]}], + "layer0.texture": "Theme - Soda/Soda Light/tab-dirty.png" + }, + // Tab highlight button + { + "class": "tab_close_button", + "settings": ["highlight_modified_tabs"], + "parents": [{"class": "tab_control", "attributes": ["dirty"]}], + "layer0.texture": "Theme - Soda/Soda Light/tab-highlight-inactive.png" + }, + { + "class": "tab_close_button", + "settings": ["highlight_modified_tabs"], + "parents": [{"class": "tab_control", "attributes": ["dirty", "selected"]}], + "layer0.texture": "Theme - Soda/Soda Light/tab-highlight.png" + }, + // Tab close button hover + { + "class": "tab_close_button", + "settings": ["show_tab_close_buttons"], + "attributes": ["hover"], + "layer0.texture": "Theme - Soda/Soda Light/tab-close-hover.png" + }, + // Tab close button pressed + { + "class": "tab_close_button", + "settings": ["show_tab_close_buttons"], + "attributes": ["pressed"], + "layer0.texture": "Theme - Soda/Soda Light/tab-close-pressed.png" + }, + +// +// TAB LABELS +// + + { + "class": "tab_label", + "fade": true, + "fg": [50, 50, 50], + "shadow_color": [235, 235, 235], + "shadow_offset": [0, 1] + }, + { + "class": "tab_label", + "parents": [{"class": "tab_control", "attributes": ["hover"]}], + "fg": [25, 25, 25], + "shadow_color": [245, 245, 245] + }, + { + "class": "tab_label", + "parents": [{"class": "tab_control", "attributes": ["selected"]}], + "fg": [0, 0, 0], + "shadow_color": [255, 255, 255] + }, + +// +// FOLD BUTTONS +// + + { + "class": "fold_button_control", + "layer0.texture": "Theme - Soda/Soda Light/fold-closed.png", + "layer0.opacity": 1.0, + "layer0.inner_margin": 0, + "content_margin": [8, 8] + }, + { + "class": "fold_button_control", + "attributes": ["hover"], + "layer0.texture": "Theme - Soda/Soda Light/fold-closed-hover.png" + }, + { + "class": "fold_button_control", + "attributes": ["expanded"], + "layer0.texture": "Theme - Soda/Soda Light/fold-open.png" + }, + { + "class": "fold_button_control", + "attributes": ["expanded", "hover"], + "layer0.texture": "Theme - Soda/Soda Light/fold-open-hover.png" + }, + +// +// STANDARD SCROLLBARS +// + + // Standard vertical scroll bar + { + "class": "scroll_bar_control", + "layer0.texture": "Theme - Soda/Soda Light/standard-scrollbar-vertical.png", + "layer0.opacity": 1.0, + "layer0.inner_margin": [2, 6], + "blur": false + }, + // Standard horizontal scroll bar + { + "class": "scroll_bar_control", + "attributes": ["horizontal"], + "layer0.texture": "Theme - Soda/Soda Light/standard-scrollbar-horizontal.png", + "layer0.inner_margin": [6, 2], + "blur": false + }, + // Standard scroll bar corner + { + "class": "scroll_corner_control", + "layer0.texture": "Theme - Soda/Soda Light/standard-scrollbar-corner.png", + "layer0.inner_margin": [2, 2], + "layer0.opacity": 1.0 + }, + // Standard vertical scroll puck + { + "class": "puck_control", + "layer0.texture": "Theme - Soda/Soda Light/standard-puck-vertical.png", + "layer0.opacity": 1.0, + "layer0.inner_margin": [0, 10], + "content_margin": [8, 12], + "blur": false + }, + // Standard horizontal scroll puck + { + "class": "puck_control", + "attributes": ["horizontal"], + "layer0.texture": "Theme - Soda/Soda Light/standard-puck-horizontal.png", + "layer0.inner_margin": [10, 0], + "content_margin": [12, 8], + "blur": false + }, + +// +// OVERLAY SCROLLBARS +// + + // Overlay toggle scroll bar + { + "class": "scroll_area_control", + "settings": ["overlay_scroll_bars"], + "overlay": true + }, + { + "class": "scroll_area_control", + "settings": ["!overlay_scroll_bars"], + "overlay": false + }, + // Overlay vertical scroll bar + { + "class": "scroll_bar_control", + "settings": ["overlay_scroll_bars"], + "layer0.texture": "Theme - Soda/Soda Light/overlay-scrollbar-vertical.png", + "layer0.inner_margin": [0, 5], + "blur": true + }, + // Overlay horizontal scroll bar + { + "class": "scroll_bar_control", + "settings": ["overlay_scroll_bars"], + "attributes": ["horizontal"], + "layer0.texture": "Theme - Soda/Soda Light/overlay-scrollbar-horizontal.png", + "layer0.inner_margin": [5, 0], + "blur": true + }, + // Overlay vertical puck + { + "class": "puck_control", + "settings": ["overlay_scroll_bars"], + "layer0.texture": "Theme - Soda/Soda Light/overlay-puck-vertical.png", + "layer0.inner_margin": [0, 5], + "content_margin": [5, 20], + "blur": true + }, + // Overlay horizontal puck + { + "class": "puck_control", + "settings": ["overlay_scroll_bars"], + "attributes": ["horizontal"], + "layer0.texture": "Theme - Soda/Soda Light/overlay-puck-horizontal.png", + "layer0.inner_margin": [5, 0], + "content_margin": [20, 5], + "blur": true + }, + // Overlay light puck (for dark content) + { + "class": "puck_control", + "settings": ["overlay_scroll_bars"], + "attributes": ["dark"], + "layer0.texture": "Theme - Soda/Soda Light/overlay-dark-puck-vertical.png" + }, + // Overlay light horizontal puck (for dark content) + { + "class": "puck_control", + "settings": ["overlay_scroll_bars"], + "attributes": ["horizontal", "dark"], + "layer0.texture": "Theme - Soda/Soda Light/overlay-dark-puck-horizontal.png" + }, + +// +// EMPTY WINDOW BACKGROUND +// + + { + "class": "sheet_container_control", + "layer0.tint": [255, 255, 255], + "layer0.opacity": 1.0 + }, + +// +// GRID LAYOUT +// + + { + "class": "grid_layout_control", + "border_size": 1, + "border_color": [189, 189, 189] + }, + +// +// MINI MAP +// + + { + "class": "minimap_control", + "viewport_color": [0, 0, 0, 35] + }, + +// +// LABELS +// + + // General labels + { + "class": "label_control", + "color": [0, 0, 0] + }, + // Text field labels + { + "class": "label_control", + "parents": [{"class": "panel_control"}], + "shadow_color": [250, 250, 250], + "shadow_offset": [0, 1] + }, + // Button labels + { + "class": "label_control", + "parents": [{"class": "button_control"}], + "shadow_color": [245, 245, 245], + "shadow_offset": [0, 1] + }, + +// +// TOOLTIP +// + + // Tooltip container + { + "class": "tool_tip_control", + "layer0.texture": "Theme - Soda/Soda Light/tooltip.png", + "layer0.inner_margin": [1, 1], + "layer0.opacity": 0.95, + "content_margin": [3, 3] + }, + // Tooltip content + { + "class": "tool_tip_label_control", + "color": [0, 0, 0] + }, + +// +// STATUS BAR +// + + // Status bar container + { + "class": "status_bar", + "layer0.texture": "Theme - Soda/Soda Light/status-bar-background.png", + "layer0.opacity": 1.0, + "layer0.inner_margin": [2, 2], + "content_margin": [8, 4, 8, 4] + }, + // Status bar button + { + "class": "status_button", + "min_size": [100, 0] + }, + // Status bar label + { + "class": "label_control", + "parents": [{"class": "status_bar"}], + "color": [47, 47, 47], + "shadow_color": [220, 220, 220], + "shadow_offset": [0, 1] + }, + +// +// SIDEBAR +// + + // Sidebar container + { + "class": "sidebar_container", + "layer0.texture": "Theme - Soda/Soda Light/sidebar-bg.png", + "layer0.opacity": 1.0, + "layer0.inner_margin": [1, 1, 2, 1], + "content_margin": [0, 0, 1, 0] + }, + // Sidebar tree + { + "class": "sidebar_tree", + "row_padding": [8, 3], + "indent": 15, + "indent_offset": 15, + "indent_top_level": false + }, + // Sidebar rows + { + "class": "tree_row", + "layer0.texture": "Theme - Soda/Soda Light/sidebar-row-selected.png", + "layer0.opacity": 0.0, + "layer0.inner_margin": [1, 1] + }, + // Sidebar row selected + { + "class": "tree_row", + "attributes": ["selected"], + "layer0.opacity": 1.0 + }, + // Sidebar heading + { + "class": "sidebar_heading", + "color": [110, 126, 141], + "font.bold": true, + "shadow_color": [249, 250, 252], + "shadow_offset": [0, 1] + }, + // Sidebar entry + { + "class": "sidebar_label", + "color": [0, 0, 0], + "shadow_color": [241, 244, 247], + "shadow_offset": [0, 1] + }, + // Sidebar folder entry + { + "class": "sidebar_label", + "parents": [{"class": "tree_row", "attributes": ["expandable"]}], + "color": [70, 86, 102] + }, + { + "class": "sidebar_label", + "parents": [{"class": "tree_row", "attributes": ["expandable", "hover"]}], + "color": [45, 56, 68] + }, + { + "class": "sidebar_label", + "parents": [{"class": "tree_row", "attributes": ["expandable"]}], + "settings": ["bold_folder_labels"], + "color": [110, 126, 141], + "font.bold": true + }, + { + "class": "sidebar_label", + "parents": [{"class": "tree_row", "attributes": ["expandable", "hover"]}], + "settings": ["bold_folder_labels"], + "color": [81, 92, 103] + }, + // Sidebar entry selected + { + "class": "sidebar_label", + "parents": [{"class": "tree_row", "attributes": ["selected"]}], + "color": [255, 255, 255], + "shadow_color": [34, 94, 145], + "shadow_offset": [0, 1] + }, + +// +// SIDEBAR - OPEN FILE ICONS +// + + // Sidebar file close + { + "class": "close_button", + "layer0.texture": "Theme - Soda/Soda Light/file-close.png", + "layer0.opacity": 0.0, + "layer0.inner_margin": 0, + "content_margin": [8, 8] + }, + { + "class": "close_button", + "parents": [{"class": "tree_row", "attributes": ["hover"]}], + "layer0.opacity": 1.0 + }, + // Sidebar file dirty + { + "class": "close_button", + "attributes": ["dirty"], + "layer0.texture": "Theme - Soda/Soda Light/file-dirty.png", + "layer0.opacity": 1.0 + }, + { + "class": "close_button", + "attributes": ["dirty"], + "parents": [{"class": "tree_row", "attributes": ["selected"]}], + "layer0.texture": "Theme - Soda/Soda Light/file-dirty-selected.png" + }, + { + "class": "close_button", + "attributes": ["dirty"], + "parents": [{"class": "tree_row", "attributes": ["hover"]}], + "layer0.texture": "Theme - Soda/Soda Light/file-close.png" + }, + // Sidebar file close hover + { + "class": "close_button", + "attributes": ["hover"], + "layer0.texture": "Theme - Soda/Soda Light/file-close-hover.png" + }, + { + "class": "close_button", + "parents": [{"class": "tree_row", "attributes": ["hover", "selected"]}], + "layer0.texture": "Theme - Soda/Soda Light/file-close-selected.png" + }, + +// +// SIDEBAR - GENERAL FILE ICONS +// + + // Sidebar group closed + { + "class": "disclosure_button_control", + "content_margin": [8, 8], + "layer0.texture": "Theme - Soda/Soda Light/group-closed.png", + "layer0.opacity": 1.0, + "layer0.inner_margin": 0 + }, + { + "class": "disclosure_button_control", + "parents": [{"class": "tree_row", "attributes": ["hover"]}], + "layer0.texture": "Theme - Soda/Soda Light/group-closed-hover.png" + }, + { + "class": "disclosure_button_control", + "parents": [{"class": "tree_row", "attributes": ["selected"]}], + "layer0.texture": "Theme - Soda/Soda Light/group-closed-selected.png" + }, + // Sidebar group open + { + "class": "disclosure_button_control", + "attributes": ["expanded"], + "layer0.texture": "Theme - Soda/Soda Light/group-open.png" + }, + { + "class": "disclosure_button_control", + "attributes": ["expanded"], + "parents": [{"class": "tree_row", "attributes": ["hover"]}], + "layer0.texture": "Theme - Soda/Soda Light/group-open-hover.png" + }, + { + "class": "disclosure_button_control", + "attributes": ["expanded"], + "parents": [{"class": "tree_row", "attributes": ["selected"]}], + "layer0.texture": "Theme - Soda/Soda Light/group-open-selected.png" + }, + +// +// STANDARD TEXT BUTTONS +// + + // Default button state + { + "class": "button_control", + "content_margin": [6, 5, 6, 6], + "min_size": [75, 0], + "layer0.texture": "Theme - Soda/Soda Light/btn-large.png", + "layer0.opacity": 1.0, + "layer0.inner_margin": [6, 6] + }, + // Pressed button state + { + "class": "button_control", + "attributes": ["pressed"], + "layer0.texture": "Theme - Soda/Soda Light/btn-large-on.png" + }, + +// +// TEXT INPUT FIELD +// + + // Text input field item + { + "class": "text_line_control", + "layer0.texture": "Theme - Soda/Soda Light/text-field.png", + "layer0.opacity": 1.0, + "layer0.inner_margin": [4, 5, 4, 3], + "content_margin": [3, 3] + }, + +// +// PANEL BACKGROUNDS +// + + // Bottom panel background + { + "class": "panel_control", + "layer0.texture": "Theme - Soda/Soda Light/panel-background.png", + "layer0.inner_margin": [2, 2, 2, 2], + "layer0.opacity": 1.0, + "content_margin": [2, 3, 2, 1] + }, + // Quick panel background + { + "class": "overlay_control", + "layer0.texture": "Theme - Soda/Soda Light/quick-panel-background.png", + "layer0.inner_margin": [12, 6, 12, 15], + "layer0.opacity": 1.0, + "layer1.texture": "Theme - Soda/Soda Light/quick-panel-sections.png", + "layer1.inner_margin": [12, 40, 12, 19], + "layer1.opacity": 1.0, + "content_margin": [11, 8, 11, 17] + }, + +// +// QUICK PANEL +// + + { + "class": "quick_panel", + "row_padding": [5, 2], + "layer0.tint": [252, 252, 252], + "layer0.opacity": 1.0 + }, + { + "class": "quick_panel_row", + "layer0.texture": "Theme - Soda/Soda Light/quick-panel-row.png", + "layer0.inner_margin": [2, 2, 2, 2], + "layer0.opacity": 1.0 + }, + { + "class": "quick_panel_row", + "attributes": ["selected"], + "layer0.texture": "Theme - Soda/Soda Light/quick-panel-row-selected.png" + }, + { + "class": "quick_panel_label", + "fg": [50, 50, 50, 255], + "match_fg": [0, 0, 0, 255], + "bg": [245, 245, 245, 255], + "selected_fg": [25, 25, 25, 255], + "selected_match_fg": [0, 0, 0, 255], + "selected_bg": [225, 225, 225, 255] + }, + { + "class": "quick_panel_path_label", + "fg": [150, 150, 150, 255], + "match_fg": [90, 90, 90, 255], + "bg": [245, 245, 245, 255], + "selected_fg": [120, 120, 120, 255], + "selected_match_fg": [90, 90, 90, 255], + "selected_bg": [225, 225, 225, 255] + }, + { + "class": "quick_panel_score_label", + "fg": [72, 139, 211, 255], + "bg": [245, 245, 245, 255], + "selected_fg": [72, 139, 211, 255], + "selected_bg": [225, 225, 225, 255] + }, + +// +// MINI QUICK PANEL +// + + { + "class": "mini_quick_panel_row", + "layer0.texture": "Theme - Soda/Soda Light/quick-panel-row.png", + "layer0.inner_margin": [2, 2, 2, 2], + "layer0.opacity": 1.0 + }, + { + "class": "mini_quick_panel_row", + "attributes": ["selected"], + "layer0.texture": "Theme - Soda/Soda Light/quick-panel-row-selected.png" + }, + +// +// CODE COMPLETION DROPDOWN +// + + { + "class": "popup_control", + "content_margin": [2, 2], + "layer0.tint": [255, 255, 255], + "layer0.opacity": 1.0 + }, + { + "class": "auto_complete", + "row_padding": [4, 2] + }, + { + "class": "auto_complete_label", + "fg": [51, 51, 51], + "match_fg": [0, 0, 0], + "selected_fg": [205, 226, 243], + "selected_match_fg": [255, 255, 255] + }, + { + "class": "table_row", + "layer0.texture": "Theme - Soda/Soda Light/autocomplete-row-selected.png", + "layer0.opacity": 0.0, + "layer0.inner_margin": [3, 1] + }, + { + "class": "table_row", + "attributes": ["selected"], + "layer0.opacity": 1.0 + }, + +// +// BOTTOM PANEL BUTTONS +// + + // Button group middle + { + "class": "icon_button_control", + "layer0.texture": "Theme - Soda/Soda Light/btn-group-middle.png", + "layer0.inner_margin": [6, 6], + "layer0.opacity": 1.0, + "content_margin": [3, 3] + }, + { + "class": "icon_button_control", + "attributes": ["selected"], + "layer0.texture": "Theme - Soda/Soda Light/btn-group-middle-on.png" + }, + // Button group left + { + "class": "icon_button_control", + "attributes": ["left"], + "layer0.texture": "Theme - Soda/Soda Light/btn-group-left.png", + "content_margin": [4, 3, 3, 3] + }, + { + "class": "icon_button_control", + "attributes": ["left", "selected"], + "layer0.texture": "Theme - Soda/Soda Light/btn-group-left-on.png" + }, + // Button group right + { + "class": "icon_button_control", + "attributes": ["right"], + "layer0.texture": "Theme - Soda/Soda Light/btn-group-right.png", + "content_margin": [3, 3, 4, 3] + }, + { + "class": "icon_button_control", + "attributes": ["right", "selected"], + "layer0.texture": "Theme - Soda/Soda Light/btn-group-right-on.png" + }, + // Button single + { + "class": "icon_button_control", + "attributes": ["left", "right"], + "layer0.texture": "Theme - Soda/Soda Light/btn-small.png", + "content_margin": [4, 3] + }, + { + "class": "icon_button_control", + "attributes": ["left", "right", "selected"], + "layer0.texture": "Theme - Soda/Soda Light/btn-small-on.png" + }, + +// +// BOTTOM PANEL ICONS - GROUP 1 +// + + // Regex search button + { + "class": "icon_regex", + "layer0.texture": "Theme - Soda/Soda Light/icon-regex-off.png", + "layer0.opacity": 1.0, + "content_margin": [9, 9] + }, + { + "class": "icon_regex", + "parents": [{"class": "icon_button_control", "attributes": ["selected"]}], + "layer0.texture": "Theme - Soda/Soda Light/icon-regex-on.png" + }, + // Case sensitive search button + { + "class": "icon_case", + "layer0.texture": "Theme - Soda/Soda Light/icon-case-off.png", + "layer0.opacity": 1.0, + "content_margin": [9, 9] + }, + { + "class": "icon_case", + "parents": [{"class": "icon_button_control", "attributes": ["selected"]}], + "layer0.texture": "Theme - Soda/Soda Light/icon-case-on.png" + }, + // Match whole word search button + { + "class": "icon_whole_word", + "layer0.texture": "Theme - Soda/Soda Light/icon-word-off.png", + "layer0.opacity": 1.0, + "content_margin": [9, 9] + }, + { + "class": "icon_whole_word", + "parents": [{"class": "icon_button_control", "attributes": ["selected"]}], + "layer0.texture": "Theme - Soda/Soda Light/icon-word-on.png" + }, + +// +// BOTTOM PANEL ICONS - GROUP 1 (EXTENDED: FIND IN FILES) +// + + // Show search context button + { + "class": "icon_context", + "layer0.texture": "Theme - Soda/Soda Light/icon-context-off.png", + "layer0.opacity": 1.0, + "content_margin": [9, 9] + }, + { + "class": "icon_context", + "parents": [{"class": "icon_button_control", "attributes": ["selected"]}], + "layer0.texture": "Theme - Soda/Soda Light/icon-context-on.png" + }, + // Use search buffer + { + "class": "icon_use_buffer", + "layer0.texture": "Theme - Soda/Soda Light/icon-buffer-off.png", + "layer0.opacity": 1.0, + "content_margin": [9, 9] + }, + { + "class": "icon_use_buffer", + "parents": [{"class": "icon_button_control", "attributes": ["selected"]}], + "layer0.texture": "Theme - Soda/Soda Light/icon-buffer-on.png" + }, + +// +// BOTTOM PANEL ICONS - GROUP 2 +// + + // Reverse search direction button + { + "class": "icon_reverse", + "layer0.texture": "Theme - Soda/Soda Light/icon-reverse-off.png", + "layer0.opacity": 1.0, + "content_margin": [9, 9] + }, + { + "class": "icon_reverse", + "parents": [{"class": "icon_button_control", "attributes": ["selected"]}], + "layer0.texture": "Theme - Soda/Soda Light/icon-reverse-on.png" + }, + // Search wrap button + { + "class": "icon_wrap", + "layer0.texture": "Theme - Soda/Soda Light/icon-wrap-off.png", + "layer0.opacity": 1.0, + "content_margin": [9, 9] + }, + { + "class": "icon_wrap", + "parents": [{"class": "icon_button_control", "attributes": ["selected"]}], + "layer0.texture": "Theme - Soda/Soda Light/icon-wrap-on.png" + }, + // Search in selection button + { + "class": "icon_in_selection", + "layer0.texture": "Theme - Soda/Soda Light/icon-selection-off.png", + "layer0.opacity": 1.0, + "content_margin": [9, 9] + }, + { + "class": "icon_in_selection", + "parents": [{"class": "icon_button_control", "attributes": ["selected"]}], + "layer0.texture": "Theme - Soda/Soda Light/icon-selection-on.png" + }, + +// +// BOTTOM PANEL ICONS - GROUP 3 +// + + // Preserve case button + { + "class": "icon_preserve_case", + "layer0.texture": "Theme - Soda/Soda Light/icon-preserve-off.png", + "layer0.opacity": 1.0, + "content_margin": [9, 9] + }, + { + "class": "icon_preserve_case", + "parents": [{"class": "icon_button_control", "attributes": ["selected"]}], + "layer0.texture": "Theme - Soda/Soda Light/icon-preserve-on.png" + }, + +// +// BOTTOM PANEL ICONS - GROUP 4 +// + + // Highlight results button + { + "class": "icon_highlight", + "layer0.texture": "Theme - Soda/Soda Light/icon-highlight-off.png", + "layer0.opacity": 1.0, + "content_margin": [9, 9] + }, + { + "class": "icon_highlight", + "parents": [{"class": "icon_button_control", "attributes": ["selected"]}], + "layer0.texture": "Theme - Soda/Soda Light/icon-highlight-on.png" + } + +] diff --git a/Theme - Soda/Soda Light/.gitignore b/Theme - Soda/Soda Light/.gitignore new file mode 100644 index 0000000..c3ed10e --- /dev/null +++ b/Theme - Soda/Soda Light/.gitignore @@ -0,0 +1 @@ +*.cache diff --git a/Theme - Soda/Soda Light/Widget - Soda Light.stTheme b/Theme - Soda/Soda Light/Widget - Soda Light.stTheme new file mode 100644 index 0000000..3c84a2f --- /dev/null +++ b/Theme - Soda/Soda Light/Widget - Soda Light.stTheme @@ -0,0 +1,30 @@ + + + + + author + Ian Hill + comment + A widget theme for the UI components of the Soda Light theme. + name + Soda Light - Widget Theme + settings + + + settings + + background + #FFFFFF + caret + #000000 + foreground + #000000 + invisibles + #E0E0E0 + selection + #b5d5ff + + + + + diff --git a/Theme - Soda/Soda Light/Widget - Soda Light.sublime-settings b/Theme - Soda/Soda Light/Widget - Soda Light.sublime-settings new file mode 100644 index 0000000..5cf1379 --- /dev/null +++ b/Theme - Soda/Soda Light/Widget - Soda Light.sublime-settings @@ -0,0 +1,4 @@ +{ + "color_scheme": "Packages/Theme - Soda/Soda Light/Widget - Soda Light.stTheme", + "draw_shadows": false +} diff --git a/Theme - Soda/Soda Light/autocomplete-row-selected.png b/Theme - Soda/Soda Light/autocomplete-row-selected.png new file mode 100644 index 0000000..f34dcea Binary files /dev/null and b/Theme - Soda/Soda Light/autocomplete-row-selected.png differ diff --git a/Theme - Soda/Soda Light/autocomplete-row-selected@2x.png b/Theme - Soda/Soda Light/autocomplete-row-selected@2x.png new file mode 100644 index 0000000..65d88cc Binary files /dev/null and b/Theme - Soda/Soda Light/autocomplete-row-selected@2x.png differ diff --git a/Theme - Soda/Soda Light/bookmark.png b/Theme - Soda/Soda Light/bookmark.png new file mode 100644 index 0000000..8d15c63 Binary files /dev/null and b/Theme - Soda/Soda Light/bookmark.png differ diff --git a/Theme - Soda/Soda Light/btn-group-left-on.png b/Theme - Soda/Soda Light/btn-group-left-on.png new file mode 100644 index 0000000..9b09ad7 Binary files /dev/null and b/Theme - Soda/Soda Light/btn-group-left-on.png differ diff --git a/Theme - Soda/Soda Light/btn-group-left-on@2x.png b/Theme - Soda/Soda Light/btn-group-left-on@2x.png new file mode 100644 index 0000000..942fb8c Binary files /dev/null and b/Theme - Soda/Soda Light/btn-group-left-on@2x.png differ diff --git a/Theme - Soda/Soda Light/btn-group-left.png b/Theme - Soda/Soda Light/btn-group-left.png new file mode 100644 index 0000000..62eab2f Binary files /dev/null and b/Theme - Soda/Soda Light/btn-group-left.png differ diff --git a/Theme - Soda/Soda Light/btn-group-left@2x.png b/Theme - Soda/Soda Light/btn-group-left@2x.png new file mode 100644 index 0000000..ec5f09a Binary files /dev/null and b/Theme - Soda/Soda Light/btn-group-left@2x.png differ diff --git a/Theme - Soda/Soda Light/btn-group-middle-on.png b/Theme - Soda/Soda Light/btn-group-middle-on.png new file mode 100644 index 0000000..aa6311c Binary files /dev/null and b/Theme - Soda/Soda Light/btn-group-middle-on.png differ diff --git a/Theme - Soda/Soda Light/btn-group-middle-on@2x.png b/Theme - Soda/Soda Light/btn-group-middle-on@2x.png new file mode 100644 index 0000000..9fc633c Binary files /dev/null and b/Theme - Soda/Soda Light/btn-group-middle-on@2x.png differ diff --git a/Theme - Soda/Soda Light/btn-group-middle.png b/Theme - Soda/Soda Light/btn-group-middle.png new file mode 100644 index 0000000..016d334 Binary files /dev/null and b/Theme - Soda/Soda Light/btn-group-middle.png differ diff --git a/Theme - Soda/Soda Light/btn-group-middle@2x.png b/Theme - Soda/Soda Light/btn-group-middle@2x.png new file mode 100644 index 0000000..fa640c4 Binary files /dev/null and b/Theme - Soda/Soda Light/btn-group-middle@2x.png differ diff --git a/Theme - Soda/Soda Light/btn-group-right-on.png b/Theme - Soda/Soda Light/btn-group-right-on.png new file mode 100644 index 0000000..0c6cdc5 Binary files /dev/null and b/Theme - Soda/Soda Light/btn-group-right-on.png differ diff --git a/Theme - Soda/Soda Light/btn-group-right-on@2x.png b/Theme - Soda/Soda Light/btn-group-right-on@2x.png new file mode 100644 index 0000000..4a20169 Binary files /dev/null and b/Theme - Soda/Soda Light/btn-group-right-on@2x.png differ diff --git a/Theme - Soda/Soda Light/btn-group-right.png b/Theme - Soda/Soda Light/btn-group-right.png new file mode 100644 index 0000000..6662bb5 Binary files /dev/null and b/Theme - Soda/Soda Light/btn-group-right.png differ diff --git a/Theme - Soda/Soda Light/btn-group-right@2x.png b/Theme - Soda/Soda Light/btn-group-right@2x.png new file mode 100644 index 0000000..5bdbc40 Binary files /dev/null and b/Theme - Soda/Soda Light/btn-group-right@2x.png differ diff --git a/Theme - Soda/Soda Light/btn-large-on.png b/Theme - Soda/Soda Light/btn-large-on.png new file mode 100644 index 0000000..1bc3770 Binary files /dev/null and b/Theme - Soda/Soda Light/btn-large-on.png differ diff --git a/Theme - Soda/Soda Light/btn-large-on@2x.png b/Theme - Soda/Soda Light/btn-large-on@2x.png new file mode 100644 index 0000000..921950f Binary files /dev/null and b/Theme - Soda/Soda Light/btn-large-on@2x.png differ diff --git a/Theme - Soda/Soda Light/btn-large.png b/Theme - Soda/Soda Light/btn-large.png new file mode 100644 index 0000000..acef524 Binary files /dev/null and b/Theme - Soda/Soda Light/btn-large.png differ diff --git a/Theme - Soda/Soda Light/btn-large@2x.png b/Theme - Soda/Soda Light/btn-large@2x.png new file mode 100644 index 0000000..a3ff24b Binary files /dev/null and b/Theme - Soda/Soda Light/btn-large@2x.png differ diff --git a/Theme - Soda/Soda Light/btn-small-on.png b/Theme - Soda/Soda Light/btn-small-on.png new file mode 100644 index 0000000..395332e Binary files /dev/null and b/Theme - Soda/Soda Light/btn-small-on.png differ diff --git a/Theme - Soda/Soda Light/btn-small-on@2x.png b/Theme - Soda/Soda Light/btn-small-on@2x.png new file mode 100644 index 0000000..0896a6c Binary files /dev/null and b/Theme - Soda/Soda Light/btn-small-on@2x.png differ diff --git a/Theme - Soda/Soda Light/btn-small.png b/Theme - Soda/Soda Light/btn-small.png new file mode 100644 index 0000000..acef524 Binary files /dev/null and b/Theme - Soda/Soda Light/btn-small.png differ diff --git a/Theme - Soda/Soda Light/btn-small@2x.png b/Theme - Soda/Soda Light/btn-small@2x.png new file mode 100644 index 0000000..a3ff24b Binary files /dev/null and b/Theme - Soda/Soda Light/btn-small@2x.png differ diff --git a/Theme - Soda/Soda Light/circle.png b/Theme - Soda/Soda Light/circle.png new file mode 100644 index 0000000..a007d54 Binary files /dev/null and b/Theme - Soda/Soda Light/circle.png differ diff --git a/Theme - Soda/Soda Light/classic/tab-active.png b/Theme - Soda/Soda Light/classic/tab-active.png new file mode 100644 index 0000000..dfa1238 Binary files /dev/null and b/Theme - Soda/Soda Light/classic/tab-active.png differ diff --git a/Theme - Soda/Soda Light/classic/tab-active@2x.png b/Theme - Soda/Soda Light/classic/tab-active@2x.png new file mode 100644 index 0000000..7f01778 Binary files /dev/null and b/Theme - Soda/Soda Light/classic/tab-active@2x.png differ diff --git a/Theme - Soda/Soda Light/classic/tab-hover.png b/Theme - Soda/Soda Light/classic/tab-hover.png new file mode 100644 index 0000000..9c80775 Binary files /dev/null and b/Theme - Soda/Soda Light/classic/tab-hover.png differ diff --git a/Theme - Soda/Soda Light/classic/tab-hover@2x.png b/Theme - Soda/Soda Light/classic/tab-hover@2x.png new file mode 100644 index 0000000..82e931f Binary files /dev/null and b/Theme - Soda/Soda Light/classic/tab-hover@2x.png differ diff --git a/Theme - Soda/Soda Light/classic/tab-inactive.png b/Theme - Soda/Soda Light/classic/tab-inactive.png new file mode 100644 index 0000000..c24ff88 Binary files /dev/null and b/Theme - Soda/Soda Light/classic/tab-inactive.png differ diff --git a/Theme - Soda/Soda Light/classic/tab-inactive@2x.png b/Theme - Soda/Soda Light/classic/tab-inactive@2x.png new file mode 100644 index 0000000..5e57ee8 Binary files /dev/null and b/Theme - Soda/Soda Light/classic/tab-inactive@2x.png differ diff --git a/Theme - Soda/Soda Light/dot.png b/Theme - Soda/Soda Light/dot.png new file mode 100644 index 0000000..0216b46 Binary files /dev/null and b/Theme - Soda/Soda Light/dot.png differ diff --git a/Theme - Soda/Soda Light/file-close-hover.png b/Theme - Soda/Soda Light/file-close-hover.png new file mode 100644 index 0000000..2e0c183 Binary files /dev/null and b/Theme - Soda/Soda Light/file-close-hover.png differ diff --git a/Theme - Soda/Soda Light/file-close-hover@2x.png b/Theme - Soda/Soda Light/file-close-hover@2x.png new file mode 100644 index 0000000..e8badf2 Binary files /dev/null and b/Theme - Soda/Soda Light/file-close-hover@2x.png differ diff --git a/Theme - Soda/Soda Light/file-close-selected.png b/Theme - Soda/Soda Light/file-close-selected.png new file mode 100644 index 0000000..12032b2 Binary files /dev/null and b/Theme - Soda/Soda Light/file-close-selected.png differ diff --git a/Theme - Soda/Soda Light/file-close-selected@2x.png b/Theme - Soda/Soda Light/file-close-selected@2x.png new file mode 100644 index 0000000..672ed1f Binary files /dev/null and b/Theme - Soda/Soda Light/file-close-selected@2x.png differ diff --git a/Theme - Soda/Soda Light/file-close.png b/Theme - Soda/Soda Light/file-close.png new file mode 100644 index 0000000..2ad7f5f Binary files /dev/null and b/Theme - Soda/Soda Light/file-close.png differ diff --git a/Theme - Soda/Soda Light/file-close@2x.png b/Theme - Soda/Soda Light/file-close@2x.png new file mode 100644 index 0000000..357679c Binary files /dev/null and b/Theme - Soda/Soda Light/file-close@2x.png differ diff --git a/Theme - Soda/Soda Light/file-dirty-selected.png b/Theme - Soda/Soda Light/file-dirty-selected.png new file mode 100644 index 0000000..d882c1d Binary files /dev/null and b/Theme - Soda/Soda Light/file-dirty-selected.png differ diff --git a/Theme - Soda/Soda Light/file-dirty-selected@2x.png b/Theme - Soda/Soda Light/file-dirty-selected@2x.png new file mode 100644 index 0000000..39dc46b Binary files /dev/null and b/Theme - Soda/Soda Light/file-dirty-selected@2x.png differ diff --git a/Theme - Soda/Soda Light/file-dirty.png b/Theme - Soda/Soda Light/file-dirty.png new file mode 100644 index 0000000..4d0cc80 Binary files /dev/null and b/Theme - Soda/Soda Light/file-dirty.png differ diff --git a/Theme - Soda/Soda Light/file-dirty@2x.png b/Theme - Soda/Soda Light/file-dirty@2x.png new file mode 100644 index 0000000..d486279 Binary files /dev/null and b/Theme - Soda/Soda Light/file-dirty@2x.png differ diff --git a/Theme - Soda/Soda Light/fold-closed-hover.png b/Theme - Soda/Soda Light/fold-closed-hover.png new file mode 100644 index 0000000..6c6cecf Binary files /dev/null and b/Theme - Soda/Soda Light/fold-closed-hover.png differ diff --git a/Theme - Soda/Soda Light/fold-closed-hover@2x.png b/Theme - Soda/Soda Light/fold-closed-hover@2x.png new file mode 100644 index 0000000..e49848e Binary files /dev/null and b/Theme - Soda/Soda Light/fold-closed-hover@2x.png differ diff --git a/Theme - Soda/Soda Light/fold-closed.png b/Theme - Soda/Soda Light/fold-closed.png new file mode 100644 index 0000000..4a69442 Binary files /dev/null and b/Theme - Soda/Soda Light/fold-closed.png differ diff --git a/Theme - Soda/Soda Light/fold-closed@2x.png b/Theme - Soda/Soda Light/fold-closed@2x.png new file mode 100644 index 0000000..4ec7114 Binary files /dev/null and b/Theme - Soda/Soda Light/fold-closed@2x.png differ diff --git a/Theme - Soda/Soda Light/fold-open-hover.png b/Theme - Soda/Soda Light/fold-open-hover.png new file mode 100644 index 0000000..75d9596 Binary files /dev/null and b/Theme - Soda/Soda Light/fold-open-hover.png differ diff --git a/Theme - Soda/Soda Light/fold-open-hover@2x.png b/Theme - Soda/Soda Light/fold-open-hover@2x.png new file mode 100644 index 0000000..38b2973 Binary files /dev/null and b/Theme - Soda/Soda Light/fold-open-hover@2x.png differ diff --git a/Theme - Soda/Soda Light/fold-open.png b/Theme - Soda/Soda Light/fold-open.png new file mode 100644 index 0000000..d96748d Binary files /dev/null and b/Theme - Soda/Soda Light/fold-open.png differ diff --git a/Theme - Soda/Soda Light/fold-open@2x.png b/Theme - Soda/Soda Light/fold-open@2x.png new file mode 100644 index 0000000..778b395 Binary files /dev/null and b/Theme - Soda/Soda Light/fold-open@2x.png differ diff --git a/Theme - Soda/Soda Light/fold.png b/Theme - Soda/Soda Light/fold.png new file mode 100644 index 0000000..8008475 Binary files /dev/null and b/Theme - Soda/Soda Light/fold.png differ diff --git a/Theme - Soda/Soda Light/group-closed-hover.png b/Theme - Soda/Soda Light/group-closed-hover.png new file mode 100644 index 0000000..83fc42b Binary files /dev/null and b/Theme - Soda/Soda Light/group-closed-hover.png differ diff --git a/Theme - Soda/Soda Light/group-closed-hover@2x.png b/Theme - Soda/Soda Light/group-closed-hover@2x.png new file mode 100644 index 0000000..c0d5cc5 Binary files /dev/null and b/Theme - Soda/Soda Light/group-closed-hover@2x.png differ diff --git a/Theme - Soda/Soda Light/group-closed-selected.png b/Theme - Soda/Soda Light/group-closed-selected.png new file mode 100644 index 0000000..7a5a877 Binary files /dev/null and b/Theme - Soda/Soda Light/group-closed-selected.png differ diff --git a/Theme - Soda/Soda Light/group-closed-selected@2x.png b/Theme - Soda/Soda Light/group-closed-selected@2x.png new file mode 100644 index 0000000..20e918d Binary files /dev/null and b/Theme - Soda/Soda Light/group-closed-selected@2x.png differ diff --git a/Theme - Soda/Soda Light/group-closed.png b/Theme - Soda/Soda Light/group-closed.png new file mode 100644 index 0000000..819803d Binary files /dev/null and b/Theme - Soda/Soda Light/group-closed.png differ diff --git a/Theme - Soda/Soda Light/group-closed@2x.png b/Theme - Soda/Soda Light/group-closed@2x.png new file mode 100644 index 0000000..8a0918e Binary files /dev/null and b/Theme - Soda/Soda Light/group-closed@2x.png differ diff --git a/Theme - Soda/Soda Light/group-open-hover.png b/Theme - Soda/Soda Light/group-open-hover.png new file mode 100644 index 0000000..1730a23 Binary files /dev/null and b/Theme - Soda/Soda Light/group-open-hover.png differ diff --git a/Theme - Soda/Soda Light/group-open-hover@2x.png b/Theme - Soda/Soda Light/group-open-hover@2x.png new file mode 100644 index 0000000..8734f58 Binary files /dev/null and b/Theme - Soda/Soda Light/group-open-hover@2x.png differ diff --git a/Theme - Soda/Soda Light/group-open-selected.png b/Theme - Soda/Soda Light/group-open-selected.png new file mode 100644 index 0000000..f0a0bf4 Binary files /dev/null and b/Theme - Soda/Soda Light/group-open-selected.png differ diff --git a/Theme - Soda/Soda Light/group-open-selected@2x.png b/Theme - Soda/Soda Light/group-open-selected@2x.png new file mode 100644 index 0000000..f9650f6 Binary files /dev/null and b/Theme - Soda/Soda Light/group-open-selected@2x.png differ diff --git a/Theme - Soda/Soda Light/group-open.png b/Theme - Soda/Soda Light/group-open.png new file mode 100644 index 0000000..d0f5cd4 Binary files /dev/null and b/Theme - Soda/Soda Light/group-open.png differ diff --git a/Theme - Soda/Soda Light/group-open@2x.png b/Theme - Soda/Soda Light/group-open@2x.png new file mode 100644 index 0000000..211ff8b Binary files /dev/null and b/Theme - Soda/Soda Light/group-open@2x.png differ diff --git a/Theme - Soda/Soda Light/icon-buffer-off.png b/Theme - Soda/Soda Light/icon-buffer-off.png new file mode 100644 index 0000000..20cc171 Binary files /dev/null and b/Theme - Soda/Soda Light/icon-buffer-off.png differ diff --git a/Theme - Soda/Soda Light/icon-buffer-off@2x.png b/Theme - Soda/Soda Light/icon-buffer-off@2x.png new file mode 100644 index 0000000..1644a77 Binary files /dev/null and b/Theme - Soda/Soda Light/icon-buffer-off@2x.png differ diff --git a/Theme - Soda/Soda Light/icon-buffer-on.png b/Theme - Soda/Soda Light/icon-buffer-on.png new file mode 100644 index 0000000..ff80fc9 Binary files /dev/null and b/Theme - Soda/Soda Light/icon-buffer-on.png differ diff --git a/Theme - Soda/Soda Light/icon-buffer-on@2x.png b/Theme - Soda/Soda Light/icon-buffer-on@2x.png new file mode 100644 index 0000000..c71ee4e Binary files /dev/null and b/Theme - Soda/Soda Light/icon-buffer-on@2x.png differ diff --git a/Theme - Soda/Soda Light/icon-case-off.png b/Theme - Soda/Soda Light/icon-case-off.png new file mode 100644 index 0000000..281ae05 Binary files /dev/null and b/Theme - Soda/Soda Light/icon-case-off.png differ diff --git a/Theme - Soda/Soda Light/icon-case-off@2x.png b/Theme - Soda/Soda Light/icon-case-off@2x.png new file mode 100644 index 0000000..9a2f176 Binary files /dev/null and b/Theme - Soda/Soda Light/icon-case-off@2x.png differ diff --git a/Theme - Soda/Soda Light/icon-case-on.png b/Theme - Soda/Soda Light/icon-case-on.png new file mode 100644 index 0000000..e768693 Binary files /dev/null and b/Theme - Soda/Soda Light/icon-case-on.png differ diff --git a/Theme - Soda/Soda Light/icon-case-on@2x.png b/Theme - Soda/Soda Light/icon-case-on@2x.png new file mode 100644 index 0000000..335ac21 Binary files /dev/null and b/Theme - Soda/Soda Light/icon-case-on@2x.png differ diff --git a/Theme - Soda/Soda Light/icon-context-off.png b/Theme - Soda/Soda Light/icon-context-off.png new file mode 100644 index 0000000..19d04e2 Binary files /dev/null and b/Theme - Soda/Soda Light/icon-context-off.png differ diff --git a/Theme - Soda/Soda Light/icon-context-off@2x.png b/Theme - Soda/Soda Light/icon-context-off@2x.png new file mode 100644 index 0000000..b7c5ceb Binary files /dev/null and b/Theme - Soda/Soda Light/icon-context-off@2x.png differ diff --git a/Theme - Soda/Soda Light/icon-context-on.png b/Theme - Soda/Soda Light/icon-context-on.png new file mode 100644 index 0000000..6330e23 Binary files /dev/null and b/Theme - Soda/Soda Light/icon-context-on.png differ diff --git a/Theme - Soda/Soda Light/icon-context-on@2x.png b/Theme - Soda/Soda Light/icon-context-on@2x.png new file mode 100644 index 0000000..c6163e9 Binary files /dev/null and b/Theme - Soda/Soda Light/icon-context-on@2x.png differ diff --git a/Theme - Soda/Soda Light/icon-highlight-off.png b/Theme - Soda/Soda Light/icon-highlight-off.png new file mode 100644 index 0000000..2cedd0a Binary files /dev/null and b/Theme - Soda/Soda Light/icon-highlight-off.png differ diff --git a/Theme - Soda/Soda Light/icon-highlight-off@2x.png b/Theme - Soda/Soda Light/icon-highlight-off@2x.png new file mode 100644 index 0000000..243784e Binary files /dev/null and b/Theme - Soda/Soda Light/icon-highlight-off@2x.png differ diff --git a/Theme - Soda/Soda Light/icon-highlight-on.png b/Theme - Soda/Soda Light/icon-highlight-on.png new file mode 100644 index 0000000..3472404 Binary files /dev/null and b/Theme - Soda/Soda Light/icon-highlight-on.png differ diff --git a/Theme - Soda/Soda Light/icon-highlight-on@2x.png b/Theme - Soda/Soda Light/icon-highlight-on@2x.png new file mode 100644 index 0000000..f5610d1 Binary files /dev/null and b/Theme - Soda/Soda Light/icon-highlight-on@2x.png differ diff --git a/Theme - Soda/Soda Light/icon-preserve-off.png b/Theme - Soda/Soda Light/icon-preserve-off.png new file mode 100644 index 0000000..f0b7616 Binary files /dev/null and b/Theme - Soda/Soda Light/icon-preserve-off.png differ diff --git a/Theme - Soda/Soda Light/icon-preserve-off@2x.png b/Theme - Soda/Soda Light/icon-preserve-off@2x.png new file mode 100644 index 0000000..9816b42 Binary files /dev/null and b/Theme - Soda/Soda Light/icon-preserve-off@2x.png differ diff --git a/Theme - Soda/Soda Light/icon-preserve-on.png b/Theme - Soda/Soda Light/icon-preserve-on.png new file mode 100644 index 0000000..3c58245 Binary files /dev/null and b/Theme - Soda/Soda Light/icon-preserve-on.png differ diff --git a/Theme - Soda/Soda Light/icon-preserve-on@2x.png b/Theme - Soda/Soda Light/icon-preserve-on@2x.png new file mode 100644 index 0000000..b515dcb Binary files /dev/null and b/Theme - Soda/Soda Light/icon-preserve-on@2x.png differ diff --git a/Theme - Soda/Soda Light/icon-regex-off.png b/Theme - Soda/Soda Light/icon-regex-off.png new file mode 100644 index 0000000..61ff932 Binary files /dev/null and b/Theme - Soda/Soda Light/icon-regex-off.png differ diff --git a/Theme - Soda/Soda Light/icon-regex-off@2x.png b/Theme - Soda/Soda Light/icon-regex-off@2x.png new file mode 100644 index 0000000..cf88632 Binary files /dev/null and b/Theme - Soda/Soda Light/icon-regex-off@2x.png differ diff --git a/Theme - Soda/Soda Light/icon-regex-on.png b/Theme - Soda/Soda Light/icon-regex-on.png new file mode 100644 index 0000000..658b0c8 Binary files /dev/null and b/Theme - Soda/Soda Light/icon-regex-on.png differ diff --git a/Theme - Soda/Soda Light/icon-regex-on@2x.png b/Theme - Soda/Soda Light/icon-regex-on@2x.png new file mode 100644 index 0000000..3b6b7f2 Binary files /dev/null and b/Theme - Soda/Soda Light/icon-regex-on@2x.png differ diff --git a/Theme - Soda/Soda Light/icon-reverse-off.png b/Theme - Soda/Soda Light/icon-reverse-off.png new file mode 100644 index 0000000..d6ec595 Binary files /dev/null and b/Theme - Soda/Soda Light/icon-reverse-off.png differ diff --git a/Theme - Soda/Soda Light/icon-reverse-off@2x.png b/Theme - Soda/Soda Light/icon-reverse-off@2x.png new file mode 100644 index 0000000..503e6bb Binary files /dev/null and b/Theme - Soda/Soda Light/icon-reverse-off@2x.png differ diff --git a/Theme - Soda/Soda Light/icon-reverse-on.png b/Theme - Soda/Soda Light/icon-reverse-on.png new file mode 100644 index 0000000..a4ebbb4 Binary files /dev/null and b/Theme - Soda/Soda Light/icon-reverse-on.png differ diff --git a/Theme - Soda/Soda Light/icon-reverse-on@2x.png b/Theme - Soda/Soda Light/icon-reverse-on@2x.png new file mode 100644 index 0000000..a3cc249 Binary files /dev/null and b/Theme - Soda/Soda Light/icon-reverse-on@2x.png differ diff --git a/Theme - Soda/Soda Light/icon-selection-off.png b/Theme - Soda/Soda Light/icon-selection-off.png new file mode 100644 index 0000000..91378b1 Binary files /dev/null and b/Theme - Soda/Soda Light/icon-selection-off.png differ diff --git a/Theme - Soda/Soda Light/icon-selection-off@2x.png b/Theme - Soda/Soda Light/icon-selection-off@2x.png new file mode 100644 index 0000000..a0a59e7 Binary files /dev/null and b/Theme - Soda/Soda Light/icon-selection-off@2x.png differ diff --git a/Theme - Soda/Soda Light/icon-selection-on.png b/Theme - Soda/Soda Light/icon-selection-on.png new file mode 100644 index 0000000..d303c5c Binary files /dev/null and b/Theme - Soda/Soda Light/icon-selection-on.png differ diff --git a/Theme - Soda/Soda Light/icon-selection-on@2x.png b/Theme - Soda/Soda Light/icon-selection-on@2x.png new file mode 100644 index 0000000..473d626 Binary files /dev/null and b/Theme - Soda/Soda Light/icon-selection-on@2x.png differ diff --git a/Theme - Soda/Soda Light/icon-word-off.png b/Theme - Soda/Soda Light/icon-word-off.png new file mode 100644 index 0000000..b0af0ca Binary files /dev/null and b/Theme - Soda/Soda Light/icon-word-off.png differ diff --git a/Theme - Soda/Soda Light/icon-word-off@2x.png b/Theme - Soda/Soda Light/icon-word-off@2x.png new file mode 100644 index 0000000..d0328da Binary files /dev/null and b/Theme - Soda/Soda Light/icon-word-off@2x.png differ diff --git a/Theme - Soda/Soda Light/icon-word-on.png b/Theme - Soda/Soda Light/icon-word-on.png new file mode 100644 index 0000000..f3050c8 Binary files /dev/null and b/Theme - Soda/Soda Light/icon-word-on.png differ diff --git a/Theme - Soda/Soda Light/icon-word-on@2x.png b/Theme - Soda/Soda Light/icon-word-on@2x.png new file mode 100644 index 0000000..deea770 Binary files /dev/null and b/Theme - Soda/Soda Light/icon-word-on@2x.png differ diff --git a/Theme - Soda/Soda Light/icon-wrap-off.png b/Theme - Soda/Soda Light/icon-wrap-off.png new file mode 100644 index 0000000..f9de6d3 Binary files /dev/null and b/Theme - Soda/Soda Light/icon-wrap-off.png differ diff --git a/Theme - Soda/Soda Light/icon-wrap-off@2x.png b/Theme - Soda/Soda Light/icon-wrap-off@2x.png new file mode 100644 index 0000000..c05e445 Binary files /dev/null and b/Theme - Soda/Soda Light/icon-wrap-off@2x.png differ diff --git a/Theme - Soda/Soda Light/icon-wrap-on.png b/Theme - Soda/Soda Light/icon-wrap-on.png new file mode 100644 index 0000000..09161a2 Binary files /dev/null and b/Theme - Soda/Soda Light/icon-wrap-on.png differ diff --git a/Theme - Soda/Soda Light/icon-wrap-on@2x.png b/Theme - Soda/Soda Light/icon-wrap-on@2x.png new file mode 100644 index 0000000..81aa1d4 Binary files /dev/null and b/Theme - Soda/Soda Light/icon-wrap-on@2x.png differ diff --git a/Theme - Soda/Soda Light/overlay-dark-puck-horizontal.png b/Theme - Soda/Soda Light/overlay-dark-puck-horizontal.png new file mode 100644 index 0000000..762e5a7 Binary files /dev/null and b/Theme - Soda/Soda Light/overlay-dark-puck-horizontal.png differ diff --git a/Theme - Soda/Soda Light/overlay-dark-puck-horizontal@2x.png b/Theme - Soda/Soda Light/overlay-dark-puck-horizontal@2x.png new file mode 100644 index 0000000..166aba8 Binary files /dev/null and b/Theme - Soda/Soda Light/overlay-dark-puck-horizontal@2x.png differ diff --git a/Theme - Soda/Soda Light/overlay-dark-puck-vertical.png b/Theme - Soda/Soda Light/overlay-dark-puck-vertical.png new file mode 100644 index 0000000..f2c4047 Binary files /dev/null and b/Theme - Soda/Soda Light/overlay-dark-puck-vertical.png differ diff --git a/Theme - Soda/Soda Light/overlay-dark-puck-vertical@2x.png b/Theme - Soda/Soda Light/overlay-dark-puck-vertical@2x.png new file mode 100644 index 0000000..7f22be6 Binary files /dev/null and b/Theme - Soda/Soda Light/overlay-dark-puck-vertical@2x.png differ diff --git a/Theme - Soda/Soda Light/overlay-puck-horizontal.png b/Theme - Soda/Soda Light/overlay-puck-horizontal.png new file mode 100644 index 0000000..4b677dc Binary files /dev/null and b/Theme - Soda/Soda Light/overlay-puck-horizontal.png differ diff --git a/Theme - Soda/Soda Light/overlay-puck-horizontal@2x.png b/Theme - Soda/Soda Light/overlay-puck-horizontal@2x.png new file mode 100644 index 0000000..3ee8fee Binary files /dev/null and b/Theme - Soda/Soda Light/overlay-puck-horizontal@2x.png differ diff --git a/Theme - Soda/Soda Light/overlay-puck-vertical.png b/Theme - Soda/Soda Light/overlay-puck-vertical.png new file mode 100644 index 0000000..1603bad Binary files /dev/null and b/Theme - Soda/Soda Light/overlay-puck-vertical.png differ diff --git a/Theme - Soda/Soda Light/overlay-puck-vertical@2x.png b/Theme - Soda/Soda Light/overlay-puck-vertical@2x.png new file mode 100644 index 0000000..7aebfa6 Binary files /dev/null and b/Theme - Soda/Soda Light/overlay-puck-vertical@2x.png differ diff --git a/Theme - Soda/Soda Light/overlay-scrollbar-horizontal.png b/Theme - Soda/Soda Light/overlay-scrollbar-horizontal.png new file mode 100644 index 0000000..ff2ca6e Binary files /dev/null and b/Theme - Soda/Soda Light/overlay-scrollbar-horizontal.png differ diff --git a/Theme - Soda/Soda Light/overlay-scrollbar-horizontal@2x.png b/Theme - Soda/Soda Light/overlay-scrollbar-horizontal@2x.png new file mode 100644 index 0000000..2b5bb07 Binary files /dev/null and b/Theme - Soda/Soda Light/overlay-scrollbar-horizontal@2x.png differ diff --git a/Theme - Soda/Soda Light/overlay-scrollbar-vertical.png b/Theme - Soda/Soda Light/overlay-scrollbar-vertical.png new file mode 100644 index 0000000..5e981c3 Binary files /dev/null and b/Theme - Soda/Soda Light/overlay-scrollbar-vertical.png differ diff --git a/Theme - Soda/Soda Light/overlay-scrollbar-vertical@2x.png b/Theme - Soda/Soda Light/overlay-scrollbar-vertical@2x.png new file mode 100644 index 0000000..3d3ff15 Binary files /dev/null and b/Theme - Soda/Soda Light/overlay-scrollbar-vertical@2x.png differ diff --git a/Theme - Soda/Soda Light/panel-background.png b/Theme - Soda/Soda Light/panel-background.png new file mode 100644 index 0000000..33b8009 Binary files /dev/null and b/Theme - Soda/Soda Light/panel-background.png differ diff --git a/Theme - Soda/Soda Light/panel-background@2x.png b/Theme - Soda/Soda Light/panel-background@2x.png new file mode 100644 index 0000000..c2d47ea Binary files /dev/null and b/Theme - Soda/Soda Light/panel-background@2x.png differ diff --git a/Theme - Soda/Soda Light/quick-panel-background.png b/Theme - Soda/Soda Light/quick-panel-background.png new file mode 100644 index 0000000..5b31b1b Binary files /dev/null and b/Theme - Soda/Soda Light/quick-panel-background.png differ diff --git a/Theme - Soda/Soda Light/quick-panel-background@2x.png b/Theme - Soda/Soda Light/quick-panel-background@2x.png new file mode 100644 index 0000000..ca3eee2 Binary files /dev/null and b/Theme - Soda/Soda Light/quick-panel-background@2x.png differ diff --git a/Theme - Soda/Soda Light/quick-panel-row-selected.png b/Theme - Soda/Soda Light/quick-panel-row-selected.png new file mode 100644 index 0000000..777a621 Binary files /dev/null and b/Theme - Soda/Soda Light/quick-panel-row-selected.png differ diff --git a/Theme - Soda/Soda Light/quick-panel-row-selected@2x.png b/Theme - Soda/Soda Light/quick-panel-row-selected@2x.png new file mode 100644 index 0000000..36aa746 Binary files /dev/null and b/Theme - Soda/Soda Light/quick-panel-row-selected@2x.png differ diff --git a/Theme - Soda/Soda Light/quick-panel-row.png b/Theme - Soda/Soda Light/quick-panel-row.png new file mode 100644 index 0000000..2e0a4a9 Binary files /dev/null and b/Theme - Soda/Soda Light/quick-panel-row.png differ diff --git a/Theme - Soda/Soda Light/quick-panel-row@2x.png b/Theme - Soda/Soda Light/quick-panel-row@2x.png new file mode 100644 index 0000000..ff1ecf5 Binary files /dev/null and b/Theme - Soda/Soda Light/quick-panel-row@2x.png differ diff --git a/Theme - Soda/Soda Light/quick-panel-sections.png b/Theme - Soda/Soda Light/quick-panel-sections.png new file mode 100644 index 0000000..8ba8584 Binary files /dev/null and b/Theme - Soda/Soda Light/quick-panel-sections.png differ diff --git a/Theme - Soda/Soda Light/quick-panel-sections@2x.png b/Theme - Soda/Soda Light/quick-panel-sections@2x.png new file mode 100644 index 0000000..4fb59d2 Binary files /dev/null and b/Theme - Soda/Soda Light/quick-panel-sections@2x.png differ diff --git a/Theme - Soda/Soda Light/sidebar-bg.png b/Theme - Soda/Soda Light/sidebar-bg.png new file mode 100644 index 0000000..7906a82 Binary files /dev/null and b/Theme - Soda/Soda Light/sidebar-bg.png differ diff --git a/Theme - Soda/Soda Light/sidebar-bg@2x.png b/Theme - Soda/Soda Light/sidebar-bg@2x.png new file mode 100644 index 0000000..80ff9e3 Binary files /dev/null and b/Theme - Soda/Soda Light/sidebar-bg@2x.png differ diff --git a/Theme - Soda/Soda Light/sidebar-row-selected.png b/Theme - Soda/Soda Light/sidebar-row-selected.png new file mode 100644 index 0000000..02d7e68 Binary files /dev/null and b/Theme - Soda/Soda Light/sidebar-row-selected.png differ diff --git a/Theme - Soda/Soda Light/sidebar-row-selected@2x.png b/Theme - Soda/Soda Light/sidebar-row-selected@2x.png new file mode 100644 index 0000000..3abf3e7 Binary files /dev/null and b/Theme - Soda/Soda Light/sidebar-row-selected@2x.png differ diff --git a/Theme - Soda/Soda Light/standard-puck-horizontal.png b/Theme - Soda/Soda Light/standard-puck-horizontal.png new file mode 100644 index 0000000..826080e Binary files /dev/null and b/Theme - Soda/Soda Light/standard-puck-horizontal.png differ diff --git a/Theme - Soda/Soda Light/standard-puck-horizontal@2x.png b/Theme - Soda/Soda Light/standard-puck-horizontal@2x.png new file mode 100644 index 0000000..41204cb Binary files /dev/null and b/Theme - Soda/Soda Light/standard-puck-horizontal@2x.png differ diff --git a/Theme - Soda/Soda Light/standard-puck-vertical.png b/Theme - Soda/Soda Light/standard-puck-vertical.png new file mode 100644 index 0000000..e86fe14 Binary files /dev/null and b/Theme - Soda/Soda Light/standard-puck-vertical.png differ diff --git a/Theme - Soda/Soda Light/standard-puck-vertical@2x.png b/Theme - Soda/Soda Light/standard-puck-vertical@2x.png new file mode 100644 index 0000000..f995b67 Binary files /dev/null and b/Theme - Soda/Soda Light/standard-puck-vertical@2x.png differ diff --git a/Theme - Soda/Soda Light/standard-scrollbar-corner.png b/Theme - Soda/Soda Light/standard-scrollbar-corner.png new file mode 100644 index 0000000..6369c9f Binary files /dev/null and b/Theme - Soda/Soda Light/standard-scrollbar-corner.png differ diff --git a/Theme - Soda/Soda Light/standard-scrollbar-corner@2x.png b/Theme - Soda/Soda Light/standard-scrollbar-corner@2x.png new file mode 100644 index 0000000..75ea721 Binary files /dev/null and b/Theme - Soda/Soda Light/standard-scrollbar-corner@2x.png differ diff --git a/Theme - Soda/Soda Light/standard-scrollbar-horizontal.png b/Theme - Soda/Soda Light/standard-scrollbar-horizontal.png new file mode 100644 index 0000000..8486fcb Binary files /dev/null and b/Theme - Soda/Soda Light/standard-scrollbar-horizontal.png differ diff --git a/Theme - Soda/Soda Light/standard-scrollbar-horizontal@2x.png b/Theme - Soda/Soda Light/standard-scrollbar-horizontal@2x.png new file mode 100644 index 0000000..b074beb Binary files /dev/null and b/Theme - Soda/Soda Light/standard-scrollbar-horizontal@2x.png differ diff --git a/Theme - Soda/Soda Light/standard-scrollbar-vertical.png b/Theme - Soda/Soda Light/standard-scrollbar-vertical.png new file mode 100644 index 0000000..1321ccc Binary files /dev/null and b/Theme - Soda/Soda Light/standard-scrollbar-vertical.png differ diff --git a/Theme - Soda/Soda Light/standard-scrollbar-vertical@2x.png b/Theme - Soda/Soda Light/standard-scrollbar-vertical@2x.png new file mode 100644 index 0000000..cbf5138 Binary files /dev/null and b/Theme - Soda/Soda Light/standard-scrollbar-vertical@2x.png differ diff --git a/Theme - Soda/Soda Light/status-bar-background.png b/Theme - Soda/Soda Light/status-bar-background.png new file mode 100644 index 0000000..d7421ca Binary files /dev/null and b/Theme - Soda/Soda Light/status-bar-background.png differ diff --git a/Theme - Soda/Soda Light/status-bar-background@2x.png b/Theme - Soda/Soda Light/status-bar-background@2x.png new file mode 100644 index 0000000..ff8d0ff Binary files /dev/null and b/Theme - Soda/Soda Light/status-bar-background@2x.png differ diff --git a/Theme - Soda/Soda Light/tab-active.png b/Theme - Soda/Soda Light/tab-active.png new file mode 100644 index 0000000..f9dd09d Binary files /dev/null and b/Theme - Soda/Soda Light/tab-active.png differ diff --git a/Theme - Soda/Soda Light/tab-active@2x.png b/Theme - Soda/Soda Light/tab-active@2x.png new file mode 100644 index 0000000..b359129 Binary files /dev/null and b/Theme - Soda/Soda Light/tab-active@2x.png differ diff --git a/Theme - Soda/Soda Light/tab-close-hover.png b/Theme - Soda/Soda Light/tab-close-hover.png new file mode 100644 index 0000000..5c0bce1 Binary files /dev/null and b/Theme - Soda/Soda Light/tab-close-hover.png differ diff --git a/Theme - Soda/Soda Light/tab-close-hover@2x.png b/Theme - Soda/Soda Light/tab-close-hover@2x.png new file mode 100644 index 0000000..3d9063c Binary files /dev/null and b/Theme - Soda/Soda Light/tab-close-hover@2x.png differ diff --git a/Theme - Soda/Soda Light/tab-close-inactive.png b/Theme - Soda/Soda Light/tab-close-inactive.png new file mode 100644 index 0000000..17d53d2 Binary files /dev/null and b/Theme - Soda/Soda Light/tab-close-inactive.png differ diff --git a/Theme - Soda/Soda Light/tab-close-inactive@2x.png b/Theme - Soda/Soda Light/tab-close-inactive@2x.png new file mode 100644 index 0000000..89a063f Binary files /dev/null and b/Theme - Soda/Soda Light/tab-close-inactive@2x.png differ diff --git a/Theme - Soda/Soda Light/tab-close-pressed.png b/Theme - Soda/Soda Light/tab-close-pressed.png new file mode 100644 index 0000000..1d49426 Binary files /dev/null and b/Theme - Soda/Soda Light/tab-close-pressed.png differ diff --git a/Theme - Soda/Soda Light/tab-close-pressed@2x.png b/Theme - Soda/Soda Light/tab-close-pressed@2x.png new file mode 100644 index 0000000..aa00e3a Binary files /dev/null and b/Theme - Soda/Soda Light/tab-close-pressed@2x.png differ diff --git a/Theme - Soda/Soda Light/tab-close.png b/Theme - Soda/Soda Light/tab-close.png new file mode 100644 index 0000000..0e44300 Binary files /dev/null and b/Theme - Soda/Soda Light/tab-close.png differ diff --git a/Theme - Soda/Soda Light/tab-close@2x.png b/Theme - Soda/Soda Light/tab-close@2x.png new file mode 100644 index 0000000..6af55f6 Binary files /dev/null and b/Theme - Soda/Soda Light/tab-close@2x.png differ diff --git a/Theme - Soda/Soda Light/tab-dirty-inactive.png b/Theme - Soda/Soda Light/tab-dirty-inactive.png new file mode 100644 index 0000000..c633b56 Binary files /dev/null and b/Theme - Soda/Soda Light/tab-dirty-inactive.png differ diff --git a/Theme - Soda/Soda Light/tab-dirty-inactive@2x.png b/Theme - Soda/Soda Light/tab-dirty-inactive@2x.png new file mode 100644 index 0000000..06eaf17 Binary files /dev/null and b/Theme - Soda/Soda Light/tab-dirty-inactive@2x.png differ diff --git a/Theme - Soda/Soda Light/tab-dirty.png b/Theme - Soda/Soda Light/tab-dirty.png new file mode 100644 index 0000000..0cfac0d Binary files /dev/null and b/Theme - Soda/Soda Light/tab-dirty.png differ diff --git a/Theme - Soda/Soda Light/tab-dirty@2x.png b/Theme - Soda/Soda Light/tab-dirty@2x.png new file mode 100644 index 0000000..4d2a744 Binary files /dev/null and b/Theme - Soda/Soda Light/tab-dirty@2x.png differ diff --git a/Theme - Soda/Soda Light/tab-highlight-inactive.png b/Theme - Soda/Soda Light/tab-highlight-inactive.png new file mode 100644 index 0000000..4ca3607 Binary files /dev/null and b/Theme - Soda/Soda Light/tab-highlight-inactive.png differ diff --git a/Theme - Soda/Soda Light/tab-highlight-inactive@2x.png b/Theme - Soda/Soda Light/tab-highlight-inactive@2x.png new file mode 100644 index 0000000..1e35e06 Binary files /dev/null and b/Theme - Soda/Soda Light/tab-highlight-inactive@2x.png differ diff --git a/Theme - Soda/Soda Light/tab-highlight.png b/Theme - Soda/Soda Light/tab-highlight.png new file mode 100644 index 0000000..3425d31 Binary files /dev/null and b/Theme - Soda/Soda Light/tab-highlight.png differ diff --git a/Theme - Soda/Soda Light/tab-highlight@2x.png b/Theme - Soda/Soda Light/tab-highlight@2x.png new file mode 100644 index 0000000..1896d71 Binary files /dev/null and b/Theme - Soda/Soda Light/tab-highlight@2x.png differ diff --git a/Theme - Soda/Soda Light/tab-hover.png b/Theme - Soda/Soda Light/tab-hover.png new file mode 100644 index 0000000..ce9f8ec Binary files /dev/null and b/Theme - Soda/Soda Light/tab-hover.png differ diff --git a/Theme - Soda/Soda Light/tab-hover@2x.png b/Theme - Soda/Soda Light/tab-hover@2x.png new file mode 100644 index 0000000..1aa6b28 Binary files /dev/null and b/Theme - Soda/Soda Light/tab-hover@2x.png differ diff --git a/Theme - Soda/Soda Light/tab-inactive.png b/Theme - Soda/Soda Light/tab-inactive.png new file mode 100644 index 0000000..091dee5 Binary files /dev/null and b/Theme - Soda/Soda Light/tab-inactive.png differ diff --git a/Theme - Soda/Soda Light/tab-inactive@2x.png b/Theme - Soda/Soda Light/tab-inactive@2x.png new file mode 100644 index 0000000..df248b1 Binary files /dev/null and b/Theme - Soda/Soda Light/tab-inactive@2x.png differ diff --git a/Theme - Soda/Soda Light/tabset-background.png b/Theme - Soda/Soda Light/tabset-background.png new file mode 100644 index 0000000..54d9a50 Binary files /dev/null and b/Theme - Soda/Soda Light/tabset-background.png differ diff --git a/Theme - Soda/Soda Light/tabset-background@2x.png b/Theme - Soda/Soda Light/tabset-background@2x.png new file mode 100644 index 0000000..ea8ae03 Binary files /dev/null and b/Theme - Soda/Soda Light/tabset-background@2x.png differ diff --git a/Theme - Soda/Soda Light/text-field.png b/Theme - Soda/Soda Light/text-field.png new file mode 100644 index 0000000..d4e67d3 Binary files /dev/null and b/Theme - Soda/Soda Light/text-field.png differ diff --git a/Theme - Soda/Soda Light/text-field@2x.png b/Theme - Soda/Soda Light/text-field@2x.png new file mode 100644 index 0000000..3b55fda Binary files /dev/null and b/Theme - Soda/Soda Light/text-field@2x.png differ diff --git a/Theme - Soda/Soda Light/tooltip.png b/Theme - Soda/Soda Light/tooltip.png new file mode 100644 index 0000000..63faab6 Binary files /dev/null and b/Theme - Soda/Soda Light/tooltip.png differ diff --git a/Theme - Soda/Soda Light/tooltip@2x.png b/Theme - Soda/Soda Light/tooltip@2x.png new file mode 100644 index 0000000..1cccaa6 Binary files /dev/null and b/Theme - Soda/Soda Light/tooltip@2x.png differ diff --git a/Theme - Soda/package-metadata.json b/Theme - Soda/package-metadata.json new file mode 100644 index 0000000..a881b4e --- /dev/null +++ b/Theme - Soda/package-metadata.json @@ -0,0 +1 @@ +{"url": "https://github.com/buymeasoda/soda-theme", "version": "2012.07.29.09.53.42", "description": "Dark and light custom UI themes for Sublime Text 2"} \ No newline at end of file diff --git a/TrailingSpaces/Default.sublime-commands b/TrailingSpaces/Default.sublime-commands new file mode 100644 index 0000000..dbc3c7b --- /dev/null +++ b/TrailingSpaces/Default.sublime-commands @@ -0,0 +1,10 @@ +[ + { + "caption": "Trailing Spaces: Toggle Trailing Spaces", + "command": "toggle_trailing_spaces" + }, + { + "caption": "Trailing Spaces: Delete Trailing Spaces", + "command": "delete_trailing_spaces" + } +] diff --git a/TrailingSpaces/MIT-LICENSE b/TrailingSpaces/MIT-LICENSE new file mode 100644 index 0000000..7104d54 --- /dev/null +++ b/TrailingSpaces/MIT-LICENSE @@ -0,0 +1,20 @@ +Copyright 2010 Jean-Denis Vauguet + +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/TrailingSpaces/README.md b/TrailingSpaces/README.md new file mode 100644 index 0000000..477bac3 --- /dev/null +++ b/TrailingSpaces/README.md @@ -0,0 +1,66 @@ +## Synopsis + +This is a [Sublime Text 2](http://www.sublimetext.com/2) plugin. + +**Highlight trailing spaces and delete them in a flash.** + +ST2 provides a way to automatically delete trailing spaces upon file save. +Depending on your settings, it may be more handy to just highlight them and/or +delete them by hand. This plugin provides just that! + +## Installation + +Go to your `Packages` subdirectory under ST2's data directory: + +* Windows: `%APPDATA%\Sublime Text 2` +* OS X: `~/Library/Application Support/Sublime Text 2/Packages` +* Linux: `~/.config/sublime-text-2` +* Portable Installation: `Sublime Text 2/Data` + +Then clone this repository: + + git clone git://github.com/SublimeText/TrailingSpaces.git + +That's it! + +## Options + +Several options are available to customize the plugin look 'n feel. The +config keys goes into config files accessible throught the "Preferences" +menu. + +### Bind the deletion command to a shortcut + +In order to use the deletion feature, one must add the mapping by hand +(this should probably go into "Key Bindings - User"): + +``` js +{ "keys": ["ctrl+shift+t"], "command": "delete_trailing_spaces" } + +Here, pressing Ctrl + Shift + t will delete all trailing spaces. +``` + +### Change the highlighting color + +One may also change the highlighting color, providing a scope name such +as "invalid", "comment"... in "File Settings - User": + +``` js +{ "trailing_spaces_highlight_color": "invalid" } +``` + +Actually, "invalid" is the default value. If you'd like to use a custom color, +it should be defined as a color scope in your theme file. Feel free to ask me +how to do it. + +### Disabling highlighting for large files + +Highlighting may be disabled for large files. The default threshold is around +1M chars. This is configurable (in "File Settings - User"); unit is number of chars: + +``` js +{ "trailing_spaces_file_max_size": 1000} +``` + +Even though the trailing spaces are not highlighted, one can still delete them +using the deletion command. diff --git a/TrailingSpaces/package-metadata.json b/TrailingSpaces/package-metadata.json new file mode 100644 index 0000000..d37255c --- /dev/null +++ b/TrailingSpaces/package-metadata.json @@ -0,0 +1 @@ +{"url": "https://github.com/SublimeText/TrailingSpaces", "version": "2012.07.17.13.44.49", "description": "Highlight trailing spaces and delete them in a flash."} \ No newline at end of file diff --git a/TrailingSpaces/trailing_spaces.py b/TrailingSpaces/trailing_spaces.py new file mode 100644 index 0000000..1be1f5a --- /dev/null +++ b/TrailingSpaces/trailing_spaces.py @@ -0,0 +1,110 @@ +''' +Provides both a trailing spaces highlighter and a deletion command. + +Config summary (see README.md for details): + + # key binding + { "keys": ["ctrl+shift+t"], "command": "delete_trailing_spaces" } + + # file settings + { + "trailing_spaces_highlight_color": "invalid", + "trailing_spaces_file_max_size": 1000 + } + +@author: Jean-Denis Vauguet , Oktay Acikalin +@license: MIT (http://www.opensource.org/licenses/mit-license.php) +@since: 2011-02-25 +''' + +import sublime +import sublime_plugin + +DEFAULT_MAX_FILE_SIZE = 1048576 +DEFAULT_COLOR_SCOPE_NAME = "invalid" +DEFAULT_IS_ENABLED = True + +#Set whether the plugin is on or off +ts_settings = sublime.load_settings('trailing_spaces.sublime-settings') +trailing_spaces_enabled = bool(ts_settings.get('trailing_spaces_enabled', + DEFAULT_IS_ENABLED)) + +# Determine if the view is a find results view +def is_find_results(view): + return view.settings().get('syntax') and "Find Results" in view.settings().get('syntax') + +# Return an array of regions matching trailing spaces. +def find_trailing_spaces(view): + include_empty_lines = bool(ts_settings.get('trailing_spaces_include_empty_lines', + DEFAULT_IS_ENABLED)) + return view.find_all('[ \t]+$' if include_empty_lines else '(?<=\S)[\t ]+$') + + +# Highlight trailing spaces +def highlight_trailing_spaces(view): + max_size = ts_settings.get('trailing_spaces_file_max_size', + DEFAULT_MAX_FILE_SIZE) + color_scope_name = ts_settings.get('trailing_spaces_highlight_color', + DEFAULT_COLOR_SCOPE_NAME) + if view.size() <= max_size and not is_find_results(view): + regions = find_trailing_spaces(view) + view.add_regions('TrailingSpacesHighlightListener', + regions, color_scope_name, + sublime.DRAW_EMPTY) + + +# Clear all trailing spaces +def clear_trailing_spaces_highlight(window): + for view in window.views(): + view.erase_regions('TrailingSpacesHighlightListener') + + +# Toggle the event listner on or off +class ToggleTrailingSpacesCommand(sublime_plugin.WindowCommand): + def run(self): + global trailing_spaces_enabled + trailing_spaces_enabled = False if trailing_spaces_enabled else True + + # If toggling on, go ahead and perform a pass, + # else clear the highlighting in all views + if trailing_spaces_enabled: + highlight_trailing_spaces(self.window.active_view()) + else: + clear_trailing_spaces_highlight(self.window) + + +# Highlight matching regions. +class TrailingSpacesHighlightListener(sublime_plugin.EventListener): + def on_modified(self, view): + if trailing_spaces_enabled: + highlight_trailing_spaces(view) + + def on_activated(self, view): + if trailing_spaces_enabled: + highlight_trailing_spaces(view) + + def on_load(self, view): + if trailing_spaces_enabled: + highlight_trailing_spaces(view) + + +# Allows to erase matching regions. +class DeleteTrailingSpacesCommand(sublime_plugin.TextCommand): + def run(self, edit): + regions = find_trailing_spaces(self.view) + if regions: + # deleting a region changes the other regions positions, so we + # handle this maintaining an offset + offset = 0 + for region in regions: + r = sublime.Region(region.a + offset, region.b + offset) + self.view.erase(edit, sublime.Region(r.a, r.b)) + offset -= r.size() + + msg_parts = {"nbRegions": len(regions), + "plural": 's' if len(regions) > 1 else ''} + msg = "Deleted %(nbRegions)s trailing spaces region%(plural)s" % msg_parts + else: + msg = "No trailing spaces to delete!" + + sublime.status_message(msg) diff --git a/TrailingSpaces/trailing_spaces.pyc b/TrailingSpaces/trailing_spaces.pyc new file mode 100644 index 0000000..9bd9bbc Binary files /dev/null and b/TrailingSpaces/trailing_spaces.pyc differ diff --git a/TrailingSpaces/trailing_spaces.sublime-settings b/TrailingSpaces/trailing_spaces.sublime-settings new file mode 100644 index 0000000..ece3eda --- /dev/null +++ b/TrailingSpaces/trailing_spaces.sublime-settings @@ -0,0 +1,13 @@ +{ + // Color is determined by scope + "trailing_spaces_highlight_color" : "invalid", + + // Max file size to search + "trailing_spaces_file_max_size" : 1048576, + + // By default plugin is enabled or disabled (true|false) + "trailing_spaces_enabled" : true, + + // By default empty lines are cleared + "trailing_spaces_include_empty_lines" : true +} diff --git a/User/Base File.sublime-settings b/User/Base File.sublime-settings new file mode 100644 index 0000000..5ac04b3 --- /dev/null +++ b/User/Base File.sublime-settings @@ -0,0 +1,7 @@ +{ + "color_scheme": "Packages/Color Scheme - Default/Mac Classic.tmTheme", + "font_size": 12.0, + "tab_size": 2, + "translate_tabs_to_spaces": true, + "auto_complete_commit_on_tab ": true +} diff --git a/User/Default (Linux).sublime-keymap b/User/Default (Linux).sublime-keymap new file mode 100644 index 0000000..0d4f101 --- /dev/null +++ b/User/Default (Linux).sublime-keymap @@ -0,0 +1,2 @@ +[ +] diff --git a/User/Default (OSX).sublime-keymap b/User/Default (OSX).sublime-keymap new file mode 100644 index 0000000..0d4f101 --- /dev/null +++ b/User/Default (OSX).sublime-keymap @@ -0,0 +1,2 @@ +[ +] diff --git a/User/Default (Windows).sublime-keymap b/User/Default (Windows).sublime-keymap new file mode 100644 index 0000000..0d4f101 --- /dev/null +++ b/User/Default (Windows).sublime-keymap @@ -0,0 +1,2 @@ +[ +] diff --git a/User/Global.sublime-settings b/User/Global.sublime-settings new file mode 100644 index 0000000..922378f --- /dev/null +++ b/User/Global.sublime-settings @@ -0,0 +1,7 @@ +{ + "ignored_packages": + [ + "Vintage" + ], + "theme": "Soda Light.sublime-theme" +} diff --git a/User/HTML (Rails).sublime-settings b/User/HTML (Rails).sublime-settings new file mode 100644 index 0000000..c9fb4e6 --- /dev/null +++ b/User/HTML (Rails).sublime-settings @@ -0,0 +1,5 @@ +{ + "extensions": + [ + ] +} diff --git a/User/JavaScript.sublime-settings b/User/JavaScript.sublime-settings new file mode 100644 index 0000000..f69d211 --- /dev/null +++ b/User/JavaScript.sublime-settings @@ -0,0 +1,6 @@ +{ + "extensions": + [ + "erubis" + ] +} diff --git a/User/Languages/RSpec.tmLanguage.cache b/User/Languages/RSpec.tmLanguage.cache new file mode 100644 index 0000000..cd007a7 Binary files /dev/null and b/User/Languages/RSpec.tmLanguage.cache differ diff --git a/User/Package Control.sublime-settings b/User/Package Control.sublime-settings new file mode 100644 index 0000000..dc6e798 --- /dev/null +++ b/User/Package Control.sublime-settings @@ -0,0 +1,14 @@ +{ + "auto_upgrade_last_run": 1345641637, + "installed_packages": + [ + "Git", + "Jasmine", + "Package Control", + "RSpec", + "SublimeLinter", + "Theme - Soda", + "TrailingSpaces", + "YUI Compressor" + ] +} diff --git a/User/Preferences.sublime-settings b/User/Preferences.sublime-settings new file mode 100644 index 0000000..43cad03 --- /dev/null +++ b/User/Preferences.sublime-settings @@ -0,0 +1,13 @@ +{ + "auto_complete_commit_on_tab ": true, + "color_scheme": "Packages/Color Scheme - Default/Mac Classic.tmTheme", + "font_size": 12.0, + "ignored_packages": + [ + "Vintage" + ], + "tab_size": 2, + "theme": "Soda Light.sublime-theme", + "translate_tabs_to_spaces": true, + "trim_trailing_white_space_on_save": true +} diff --git a/User/Ruby.sublime-settings b/User/Ruby.sublime-settings new file mode 100644 index 0000000..c9fb4e6 --- /dev/null +++ b/User/Ruby.sublime-settings @@ -0,0 +1,5 @@ +{ + "extensions": + [ + ] +} diff --git a/User/SCSS.sublime-settings b/User/SCSS.sublime-settings new file mode 100644 index 0000000..73bb7df --- /dev/null +++ b/User/SCSS.sublime-settings @@ -0,0 +1,6 @@ +{ + "extensions": + [ + "scss" + ] +} diff --git a/User/SCSS/Commands/Align SCSS Assignments.tmCommand b/User/SCSS/Commands/Align SCSS Assignments.tmCommand new file mode 100755 index 0000000..30eff95 --- /dev/null +++ b/User/SCSS/Commands/Align SCSS Assignments.tmCommand @@ -0,0 +1,142 @@ + + + + + beforeRunningCommand + nop + command + #!/usr/bin/env ruby +# +# Assignment block tidier, version 0.1. +# +# Copyright Chris Poirier 2006. +# Licensed under the Academic Free License version 3.0. +# +# This script can be used as a command for TextMate to align all +# of the equal signs within a block of text. When using it with +# TextMate, set the command input to "Selected Text" or "Document", +# and the output to "Replace Selected Text". Map it to a key +# equivalent, and any time you want to tidy up a block, either +# select it, or put your cursor somewhere within it; then hit the +# key equivalent. Voila. +# +# Note that this is the first version of the script, and it hasn't +# been heavily tested. You might encounter a bug or two. +# +# Per the license, use of this script is ENTIRELY at your own risk. +# See the license for full details (they override anything I've +# said here). + +lines = STDIN.readlines() +selected_text = ENV.member?("TM_SELECTED_TEXT") + +relevant_line_pattern = /^[^\:]+\:(?!\:|~)/ +column_search_pattern = /[\t ]*\:/ + + +# +# If called on a selection, every assignment statement +# is in the block. If called on the document, we start on the +# current line and look up and down for the start and end of the +# block. + +if selected_text then + block_top = 1 + block_bottom = lines.length +else + + # + # We start looking on the current line. However, if the + # current line doesn't match the pattern, we may be just + # after or just before a block, and we should check. If + # neither, we are done. + + start_on = ENV["TM_LINE_NUMBER"].to_i + block_top = lines.length + 1 + block_bottom = 0 + search_top = 1 + search_bottom = lines.length + search_failed = false + + if lines[start_on - 1] !~ relevant_line_pattern then + if lines[start_on - 2] =~ relevant_line_pattern then + search_bottom = start_on = start_on - 1 + elsif lines[start_on] =~ relevant_line_pattern then + search_top = start_on = start_on + else + search_failed = true + end + end + + # + # Now with the search boundaries set, start looking for + # the block top and bottom. + + unless search_failed + start_on.downto(search_top) do |number| + if lines[number-1] =~ relevant_line_pattern then + block_top = number + else + break + end + end + + start_on.upto(search_bottom) do |number| + if lines[number-1] =~ relevant_line_pattern then + block_bottom = number + else + break + end + end + end +end + + +# +# Now, iterate over the block and find the best column number +# for the = sign. The pattern will tell us the position of the +# first bit of whitespace before the equal sign. We put the +# equals sign to the right of the furthest-right one. Note that +# we cannot assume every line in the block is relevant. + +best_column = 0 +block_top.upto(block_bottom) do |number| + line = lines[number - 1] + if line =~ relevant_line_pattern then + m = column_search_pattern.match(line) + best_column = m.begin(0) if m.begin(0) > best_column + end +end + + +# +# Reformat the block. Again, we cannot assume all lines in the +# block are relevant. + +block_top.upto(block_bottom) do |number| + if lines[number-1] =~ relevant_line_pattern then + before, after = lines[number-1].split(/[\t ]*\:[\t ]*/, 2) + lines[number-1] = [before.ljust(best_column), after].join(after[0,1] == '>' ? " :" : " : ") + end +end + + +# +# Output the replacement text + +lines.each do |line| + puts line +end + + input + selection + keyEquivalent + @: + name + Align SCSS Assignments + output + replaceSelectedText + uuid + C5012C1B-2078-47B2-9E60-1CDE6B555AB8 + + diff --git a/User/SCSS/Commands/Cleanup Sass.tmCommand b/User/SCSS/Commands/Cleanup Sass.tmCommand new file mode 100755 index 0000000..a8857da --- /dev/null +++ b/User/SCSS/Commands/Cleanup Sass.tmCommand @@ -0,0 +1,18 @@ + + + + + beforeRunningCommand + nop + command + echo "$TM_SELECTED_TEXT" | sass-convert --from sass --to sass --dasherize + input + selection + name + Cleanup Sass + output + replaceSelectedText + uuid + 5AC218D8-49AC-4E26-B793-FDC7EC833F93 + + diff --git a/User/SCSS/Commands/Copy prepare to HTML to SCSS.tmCommand b/User/SCSS/Commands/Copy prepare to HTML to SCSS.tmCommand new file mode 100755 index 0000000..1dbb6f8 --- /dev/null +++ b/User/SCSS/Commands/Copy prepare to HTML to SCSS.tmCommand @@ -0,0 +1,35 @@ + + + + + beforeRunningCommand + nop + command + #!/usr/bin/env ruby +# Remove style tags from the html. +# Support for Mac only (for now) +exit unless RUBY_PLATFORM.match('darwin') + +# Put contents to clipboard +paste = IO.popen('pbcopy', 'r+').puts ENV['TM_SELECTED_TEXT'] +string = ENV['TM_SELECTED_TEXT'].dup +regexp = %q{style=".+"} +string.gsub!(/#{regexp} /, '') +string.gsub!(/ #{regexp}>/, '>') +print string + fallbackInput + none + input + selection + keyEquivalent + ^@c + name + Copy prepare to HTML to SCSS + output + replaceSelectedText + scope + text.html + uuid + 662FA490-E14C-496F-A668-09CFD0521D2F + + diff --git a/User/SCSS/Commands/Decrease Number by 10.tmCommand b/User/SCSS/Commands/Decrease Number by 10.tmCommand new file mode 100755 index 0000000..030405d --- /dev/null +++ b/User/SCSS/Commands/Decrease Number by 10.tmCommand @@ -0,0 +1,26 @@ + + + + + beforeRunningCommand + nop + command + #!/usr/bin/env ruby +require ENV['TM_BUNDLE_SUPPORT'] + '/bin/scroller' +scroller('substract', 10) + fallbackInput + word + input + selection + keyEquivalent + ^~ + name + Decrease Number by 10 + output + replaceSelectedText + scope + source.scss + uuid + 03333522-BEEE-4B7F-8DAE-CCA07E34E7C8 + + diff --git a/User/SCSS/Commands/Decrease Number.tmCommand b/User/SCSS/Commands/Decrease Number.tmCommand new file mode 100755 index 0000000..754852f --- /dev/null +++ b/User/SCSS/Commands/Decrease Number.tmCommand @@ -0,0 +1,26 @@ + + + + + beforeRunningCommand + nop + command + #!/usr/bin/env ruby +require ENV['TM_BUNDLE_SUPPORT'] + '/bin/scroller' +scroller('substract', 1) + fallbackInput + word + input + selection + keyEquivalent + ^ + name + Decrease Number + output + replaceSelectedText + scope + source.scss + uuid + 0F55F1E5-CF77-4B48-882B-1EF439AF9C4C + + diff --git a/User/SCSS/Commands/Increase Number by 10.tmCommand b/User/SCSS/Commands/Increase Number by 10.tmCommand new file mode 100755 index 0000000..544fb2f --- /dev/null +++ b/User/SCSS/Commands/Increase Number by 10.tmCommand @@ -0,0 +1,26 @@ + + + + + beforeRunningCommand + nop + command + #!/usr/bin/env ruby +require ENV['TM_BUNDLE_SUPPORT'] + '/bin/scroller' +scroller('add', 10) + fallbackInput + word + input + selection + keyEquivalent + ^~ + name + Increase Number by 10 + output + replaceSelectedText + scope + source.scss + uuid + 7C38B9B8-95E6-4F1F-B54E-8B5DA317A92A + + diff --git a/User/SCSS/Commands/Increase Number.tmCommand b/User/SCSS/Commands/Increase Number.tmCommand new file mode 100755 index 0000000..5856780 --- /dev/null +++ b/User/SCSS/Commands/Increase Number.tmCommand @@ -0,0 +1,26 @@ + + + + + beforeRunningCommand + nop + command + #!/usr/bin/env ruby +require ENV['TM_BUNDLE_SUPPORT'] + '/bin/scroller' +scroller('add', 1) + fallbackInput + word + input + selection + keyEquivalent + ^ + name + Increase Number + output + replaceSelectedText + scope + source.scss + uuid + CB440BC1-3037-4352-B9DC-10F517682B39 + + diff --git "a/User/SCSS/Commands/Insert Color\342\200\246.tmCommand" "b/User/SCSS/Commands/Insert Color\342\200\246.tmCommand" new file mode 100644 index 0000000..fa1bd51 --- /dev/null +++ "b/User/SCSS/Commands/Insert Color\342\200\246.tmCommand" @@ -0,0 +1,192 @@ + + + + + beforeRunningCommand + nop + command + #!/usr/bin/env ruby + +require ENV['TM_SUPPORT_PATH'] + "/lib/ui" +require ENV['TM_SUPPORT_PATH'] + "/lib/exit_codes" +colour = STDIN.read + +# http://www.w3schools.com/css/css_colornames.asp +COLOURS = { + 'aliceblue' => 'F0F8FF', + 'antiquewhite' => 'FAEBD7', + 'aqua' => '00FFFF', + 'aquamarine' => '7FFFD4', + 'azure' => 'F0FFFF', + 'beige' => 'F5F5DC', + 'bisque' => 'FFE4C4', + 'black' => '000000', + 'blanchedalmond' => 'FFEBCD', + 'blue' => '0000FF', + 'blueviolet' => '8A2BE2', + 'brown' => 'A52A2A', + 'burlywood' => 'DEB887', + 'cadetblue' => '5F9EA0', + 'chartreuse' => '7FFF00', + 'chocolate' => 'D2691E', + 'coral' => 'FF7F50', + 'cornflowerblue' => '6495ED', + 'cornsilk' => 'FFF8DC', + 'crimson' => 'DC143C', + 'cyan' => '00FFFF', + 'darkblue' => '00008B', + 'darkcyan' => '008B8B', + 'darkgoldenrod' => 'B8860B', + 'darkgray' => 'A9A9A9', + 'darkgrey' => 'A9A9A9', + 'darkgreen' => '006400', + 'darkkhaki' => 'BDB76B', + 'darkmagenta' => '8B008B', + 'darkolivegreen' => '556B2F', + 'darkorange' => 'FF8C00', + 'darkorchid' => '9932CC', + 'darkred' => '8B0000', + 'darksalmon' => 'E9967A', + 'darkseagreen' => '8FBC8F', + 'darkslateblue' => '483D8B', + 'darkslategray' => '2F4F4F', + 'darkslategrey' => '2F4F4F', + 'darkturquoise' => '00CED1', + 'darkviolet' => '9400D3', + 'deeppink' => 'FF1493', + 'deepskyblue' => '00BFFF', + 'dimgray' => '696969', + 'dimgrey' => '696969', + 'dodgerblue' => '1E90FF', + 'firebrick' => 'B22222', + 'floralwhite' => 'FFFAF0', + 'forestgreen' => '228B22', + 'fuchsia' => 'FF00FF', + 'gainsboro' => 'DCDCDC', + 'ghostwhite' => 'F8F8FF', + 'gold' => 'FFD700', + 'goldenrod' => 'DAA520', + 'gray' => '808080', + 'grey' => '808080', + 'green' => '008000', + 'greenyellow' => 'ADFF2F', + 'honeydew' => 'F0FFF0', + 'hotpink' => 'FF69B4', + 'indianred' => 'CD5C5C', + 'indigo' => '4B0082', + 'ivory' => 'FFFFF0', + 'khaki' => 'F0E68C', + 'lavender' => 'E6E6FA', + 'lavenderblush' => 'FFF0F5', + 'lawngreen' => '7CFC00', + 'lemonchiffon' => 'FFFACD', + 'lightblue' => 'ADD8E6', + 'lightcoral' => 'F08080', + 'lightcyan' => 'E0FFFF', + 'lightgoldenrodyellow' => 'FAFAD2', + 'lightgray' => 'D3D3D3', + 'lightgrey' => 'D3D3D3', + 'lightgreen' => '90EE90', + 'lightpink' => 'FFB6C1', + 'lightsalmon' => 'FFA07A', + 'lightseagreen' => '20B2AA', + 'lightskyblue' => '87CEFA', + 'lightslategray' => '778899', + 'lightslategrey' => '778899', + 'lightsteelblue' => 'B0C4DE', + 'lightyellow' => 'FFFFE0', + 'lime' => '00FF00', + 'limegreen' => '32CD32', + 'linen' => 'FAF0E6', + 'magenta' => 'FF00FF', + 'maroon' => '800000', + 'mediumaquamarine' => '66CDAA', + 'mediumblue' => '0000CD', + 'mediumorchid' => 'BA55D3', + 'mediumpurple' => '9370D8', + 'mediumseagreen' => '3CB371', + 'mediumslateblue' => '7B68EE', + 'mediumspringgreen' => '00FA9A', + 'mediumturquoise' => '48D1CC', + 'mediumvioletred' => 'C71585', + 'midnightblue' => '191970', + 'mintcream' => 'F5FFFA', + 'mistyrose' => 'FFE4E1', + 'moccasin' => 'FFE4B5', + 'navajowhite' => 'FFDEAD', + 'navy' => '000080', + 'oldlace' => 'FDF5E6', + 'olive' => '808000', + 'olivedrab' => '6B8E23', + 'orange' => 'FFA500', + 'orangered' => 'FF4500', + 'orchid' => 'DA70D6', + 'palegoldenrod' => 'EEE8AA', + 'palegreen' => '98FB98', + 'paleturquoise' => 'AFEEEE', + 'palevioletred' => 'D87093', + 'papayawhip' => 'FFEFD5', + 'peachpuff' => 'FFDAB9', + 'peru' => 'CD853F', + 'pink' => 'FFC0CB', + 'plum' => 'DDA0DD', + 'powderblue' => 'B0E0E6', + 'purple' => '800080', + 'red' => 'FF0000', + 'rosybrown' => 'BC8F8F', + 'royalblue' => '4169E1', + 'saddlebrown' => '8B4513', + 'salmon' => 'FA8072', + 'sandybrown' => 'F4A460', + 'seagreen' => '2E8B57', + 'seashell' => 'FFF5EE', + 'sienna' => 'A0522D', + 'silver' => 'C0C0C0', + 'skyblue' => '87CEEB', + 'slateblue' => '6A5ACD', + 'slategray' => '708090', + 'slategrey' => '708090', + 'snow' => 'FFFAFA', + 'springgreen' => '00FF7F', + 'steelblue' => '4682B4', + 'tan' => 'D2B48C', + 'teal' => '008080', + 'thistle' => 'D8BFD8', + 'tomato' => 'FF6347', + 'turquoise' => '40E0D0', + 'violet' => 'EE82EE', + 'wheat' => 'F5DEB3', + 'white' => 'FFFFFF', + 'whitesmoke' => 'F5F5F5', + 'yellow' => 'FFFF00', + 'yellowgreen' => '9ACD32', +} + +if colour.length > 0 and colour[0] != ?# + colour.downcase! + # Convert named colours to their hex values + colour = '#' + COLOURS[colour] if COLOURS.has_key? colour +end + +if res = TextMate::UI.request_color(colour) + print res +else + TextMate.exit_discard +end + + fallbackInput + word + input + selection + keyEquivalent + @C + name + Insert Color… + output + replaceSelectedText + scope + source.scss, meta.tag string.quoted -source + uuid + 24605721-E0AA-4F0E-8311-6219290C7A94 + + diff --git a/User/SCSS/Commands/New Rule.tmCommand b/User/SCSS/Commands/New Rule.tmCommand new file mode 100755 index 0000000..1396fcf --- /dev/null +++ b/User/SCSS/Commands/New Rule.tmCommand @@ -0,0 +1,43 @@ + + + + + beforeRunningCommand + nop + command + #!/usr/bin/env ruby +line = ENV['TM_CURRENT_LINE'].dup +space = line.match(/^\s+/) +space = space.nil? ? '' : space[0] +line.strip! + +snippet = <<-EOM +<space>${1:selector} {${0} +<space>} +EOM + +snippet.gsub!(/\<space\>/, space) + +unless line.empty? + line.gsub! /\$/, '\$' + snippet.sub! 'selector', line +end + +print snippet.chomp + + fallbackInput + line + input + selection + keyEquivalent + @b + name + New Rule + output + insertAsSnippet + scope + source.scss + uuid + 852E0119-7EC8-4435-A414-8937E6289D8C + + diff --git a/User/SCSS/Commands/Paste HTML as SCSS.tmCommand b/User/SCSS/Commands/Paste HTML as SCSS.tmCommand new file mode 100755 index 0000000..9b159a8 --- /dev/null +++ b/User/SCSS/Commands/Paste HTML as SCSS.tmCommand @@ -0,0 +1,24 @@ + + + + + beforeRunningCommand + nop + command + #!/usr/bin/ruby +# Needs Nokogiri (gem install Nokogiri) +require ENV['TM_BUNDLE_SUPPORT'] + '/bin/command' + input + none + keyEquivalent + ^@v + name + Paste HTML as SCSS + output + insertAsSnippet + scope + source.scss + uuid + 16977A7A-A382-48CF-B7AB-8CC4A8CF83C4 + + diff --git a/User/SCSS/Commands/SCSS =%3E CSS.tmCommand b/User/SCSS/Commands/SCSS =%3E CSS.tmCommand new file mode 100755 index 0000000..696c14a --- /dev/null +++ b/User/SCSS/Commands/SCSS =%3E CSS.tmCommand @@ -0,0 +1,27 @@ + + + + + beforeRunningCommand + saveActiveFile + command + #!/bin/sh +PATH=$PATH:$SASS_DIR +SOURCE=./app/sass +CSS=./public/stylesheets +SASS_OPTS="-t compact" +cd ${TM_PROJECT_DIRECTORY} +sass ${SASS_OPTS} --update "${SOURCE}":"${CSS}" + + input + none + name + SCSS => CSS + output + showAsTooltip + scope + source.scss + uuid + 78345399-B86D-4A76-B211-BF75190906EA + + diff --git a/User/SCSS/Commands/SCSS =%3E Sass.tmCommand b/User/SCSS/Commands/SCSS =%3E Sass.tmCommand new file mode 100755 index 0000000..8d5b945 --- /dev/null +++ b/User/SCSS/Commands/SCSS =%3E Sass.tmCommand @@ -0,0 +1,20 @@ + + + + + beforeRunningCommand + nop + command + echo "$TM_SELECTED_TEXT" | sass-convert --from scss --to sass + input + selection + name + SCSS => Sass + output + replaceSelectedText + scope + source.scss + uuid + 49B13F70-B978-4633-AB69-8D2AB64C870E + + diff --git a/User/SCSS/Commands/Sass =%3E SCSS.tmCommand b/User/SCSS/Commands/Sass =%3E SCSS.tmCommand new file mode 100755 index 0000000..09b28d9 --- /dev/null +++ b/User/SCSS/Commands/Sass =%3E SCSS.tmCommand @@ -0,0 +1,20 @@ + + + + + beforeRunningCommand + nop + command + echo "$TM_SELECTED_TEXT" | sass-convert --from sass --to scss + input + selection + name + Sass => SCSS + output + replaceSelectedText + scope + source.scss + uuid + 4E2E7138-69AA-4BF1-A87E-8C45DE807B10 + + diff --git a/User/SCSS/Commands/Update Bundle.tmCommand b/User/SCSS/Commands/Update Bundle.tmCommand new file mode 100755 index 0000000..5ea6033 --- /dev/null +++ b/User/SCSS/Commands/Update Bundle.tmCommand @@ -0,0 +1,26 @@ + + + + + beforeRunningCommand + nop + command + cd "$TM_BUNDLE_PATH" + +echo "<pre>" +[ -d ".git" ] && git pull +[ ! -d .git ] && echo "You must install the bundle using Git in order to update via this command." +osascript -e 'tell app "TextMate" to reload bundles' +echo "</pre>" + input + none + name + Update Bundle + output + showAsHTML + scope + source.scss + uuid + D51A613E-4198-4FAB-99CC-9981EF99BE39 + + diff --git a/User/SCSS/Commands/untitled.tmCommand b/User/SCSS/Commands/untitled.tmCommand new file mode 100755 index 0000000..afdaae1 --- /dev/null +++ b/User/SCSS/Commands/untitled.tmCommand @@ -0,0 +1,22 @@ + + + + + beforeRunningCommand + nop + command + # just to remind you of some useful environment variables +# see Help / Environment Variables for the full list +echo File: "$TM_FILEPATH" +echo Word: "$TM_CURRENT_WORD" +echo Selection: "$TM_SELECTED_TEXT" + input + selection + name + untitled + output + replaceSelectedText + uuid + C95FC594-ADEB-4932-BF79-66B007A8DAB7 + + diff --git a/User/SCSS/DragCommands/Insert Image URL.tmDragCommand b/User/SCSS/DragCommands/Insert Image URL.tmDragCommand new file mode 100755 index 0000000..0cb75a7 --- /dev/null +++ b/User/SCSS/DragCommands/Insert Image URL.tmDragCommand @@ -0,0 +1,47 @@ + + + + + beforeRunningCommand + nop + command + if echo "$TM_SCOPE" | grep -q meta.property-list.css + then + if echo "$TM_SCOPE" | grep -q meta.property-value.css + then + if echo "$TM_CURRENT_WORD" | grep -q url\(\) + then echo -n "'$TM_DROPPED_FILE'" + elif echo "$TM_SCOPE" | grep -q string.quoted.single.css + then echo -n "$TM_DROPPED_FILE" + else + echo -n "url('$TM_DROPPED_FILE')" + fi + elif echo "$TM_SCOPE" | grep -q meta.at-rule.include.css + then echo -n "'$TM_DROPPED_FILE', " + sips -g pixelWidth -g pixelHeight "$TM_DROPPED_FILE"|awk '/pixelWidth/ { printf("%dpx, ", $2) } /pixelHeight/ { printf("%dpx\$0", $2) }' + else + echo -ne "background:\${1: #\${2:DDD}} url('$TM_DROPPED_FILE')\${3:};\n\$0" + fi +else + echo -ne "\${1:#selector} {\n background:transparent url('$TM_DROPPED_FILE')\${3: \${4:no-repeat} \${6:top} \${7:left}};\n" + sips -g pixelWidth -g pixelHeight "$TM_DROPPED_FILE"|awk '/pixelWidth/ { printf(" width: %dpx;\n", $2) } /pixelHeight/ { printf(" height: %dpx;\n}\$0", $2) }' +fi + draggedFileExtensions + + png + jpeg + jpg + gif + + input + selection + name + Insert Image URL + output + insertAsSnippet + scope + source.scss + uuid + EA5829C3-8ADB-4FFB-879D-BAC7095B13DD + + diff --git a/User/SCSS/Macros/%3A%3A new line.tmMacro b/User/SCSS/Macros/%3A%3A new line.tmMacro new file mode 100755 index 0000000..90a98ad --- /dev/null +++ b/User/SCSS/Macros/%3A%3A new line.tmMacro @@ -0,0 +1,55 @@ + + + + + bundleUUID + A4FDD1ED-D13D-4AF6-99B9-C9AD0D262149 + commands + + + argument + + commands + + + command + moveToEndOfParagraph: + + + command + insertNewline: + + + + command + playMacroWithOptions: + + + argument + / + command + insertText: + + + argument + / + command + insertText: + + + argument + + command + insertText: + + + keyEquivalent + @ + name + // new line + scope + comment.line.scss + uuid + 4CA78ABB-3400-48AD-AB32-3B4E7014345E + + diff --git a/User/SCSS/Preferences/Indentation rules.tmPreferences b/User/SCSS/Preferences/Indentation rules.tmPreferences new file mode 100755 index 0000000..d1276fb --- /dev/null +++ b/User/SCSS/Preferences/Indentation rules.tmPreferences @@ -0,0 +1,19 @@ + + + + + name + Indentation rules + scope + source.scss + settings + + decreaseIndentPattern + ^\s*\} + increaseIndentPattern + (^.*\{[^}]*$) + + uuid + 2E4DDA47-1FC3-4FF7-A719-49ED6FA8ECFF + + diff --git a/User/SCSS/Preferences/Indentation rules.tmPreferences.cache b/User/SCSS/Preferences/Indentation rules.tmPreferences.cache new file mode 100644 index 0000000..56bf846 Binary files /dev/null and b/User/SCSS/Preferences/Indentation rules.tmPreferences.cache differ diff --git a/User/SCSS/Preferences/comments.tmPreferences b/User/SCSS/Preferences/comments.tmPreferences new file mode 100755 index 0000000..a9e801b --- /dev/null +++ b/User/SCSS/Preferences/comments.tmPreferences @@ -0,0 +1,30 @@ + + + + + name + comments + scope + source.css, source.scss + settings + + shellVariables + + + name + TM_COMMENT_START + value + // + + + name + TM_COMMENT_DISABLE_INDENT + value + yes + + + + uuid + 5A98FD1D-9FB8-4EA5-9006-618E1A3F4122 + + diff --git a/User/SCSS/Preferences/comments.tmPreferences.cache b/User/SCSS/Preferences/comments.tmPreferences.cache new file mode 100644 index 0000000..dbd32cc Binary files /dev/null and b/User/SCSS/Preferences/comments.tmPreferences.cache differ diff --git a/User/SCSS/Preferences/completions.tmPreferences b/User/SCSS/Preferences/completions.tmPreferences new file mode 100755 index 0000000..6178c26 --- /dev/null +++ b/User/SCSS/Preferences/completions.tmPreferences @@ -0,0 +1,125 @@ + + + + + name + completions + scope + source.scss -meta.property-list + settings + + completions + + * + # + . + a + abbr + acronym + address + area + article + aside + audio + b + base + bb + bdo + blockquote + body + br + button + canvas + caption + cite + code + col + colgroup + command + datagrid + datalist + dd + del + details + dfn + dialog + div + dl + dt + em + embed + fieldset + figure + footer + form + h1 + h2 + h3 + h4 + h5 + h6 + head + header + hr + html + i + iframe + img + input + ins + kbd + keygen + label + legend + li + link + map + mark + menu + meta + meter + nav + noscript + object + ol + optgroup + option + output + p + param + pre + progress + q + rp + rt + ruby + samp + script + section + select + small + source + span + strong + style + sub + sup + table + tbody + td + textarea + tfoot + th + thead + time + title + tr + ul + var + video + + + uuid + 11D969E1-6E76-47B2-9BAE-B5545064AB31 + + diff --git a/User/SCSS/Preferences/completions.tmPreferences.cache b/User/SCSS/Preferences/completions.tmPreferences.cache new file mode 100644 index 0000000..aa0ac72 Binary files /dev/null and b/User/SCSS/Preferences/completions.tmPreferences.cache differ diff --git a/User/SCSS/Preferences/miscellaneous.tmPreferences b/User/SCSS/Preferences/miscellaneous.tmPreferences new file mode 100755 index 0000000..e03ad74 --- /dev/null +++ b/User/SCSS/Preferences/miscellaneous.tmPreferences @@ -0,0 +1,46 @@ + + + + + name + miscellaneous + scope + source.css, source.scss + settings + + smartTypingPairs + + + " + " + + + ( + ) + + + { + } + + + [ + ] + + + + + + + ' + ' + + + ` + ` + + + + uuid + F70FC4B9-B632-4E6A-B4BB-38F7DF47A2BF + + diff --git a/User/SCSS/Preferences/miscellaneous.tmPreferences.cache b/User/SCSS/Preferences/miscellaneous.tmPreferences.cache new file mode 100644 index 0000000..9bb3d82 Binary files /dev/null and b/User/SCSS/Preferences/miscellaneous.tmPreferences.cache differ diff --git a/User/SCSS/Preferences/property%3Aname.tmPreferences b/User/SCSS/Preferences/property%3Aname.tmPreferences new file mode 100755 index 0000000..2a18ec1 --- /dev/null +++ b/User/SCSS/Preferences/property%3Aname.tmPreferences @@ -0,0 +1,187 @@ + + + + + name + property:name + scope + source.css meta.property-list -meta.property-value,source.scss meta.property-list -meta.property-value + settings + + completions + + azimuth + background-attachment + background-break + background-clip + background-color + background-image + background-origin + background-position-x + background-position-y + background-position + background-repeat + background-size + background + border-bottom-color + border-bottom-image + border-bottom-left-image + border-bottom-left-radius + border-bottom-right-image + border-bottom-right-radius + border-bottom-style + border-bottom-width + border-bottom + border-break + border-collapse + border-color + border-corner-image + border-fit + border-image + border-left-color + border-left-image + border-left-style + border-left-width + border-left + border-length + border-radius + border-right-color + border-right-image + border-right-style + border-right-width + border-right + border-spacing + border-style + border-top-color + border-top-image + border-top-left-image + border-top-left-radius + border-top-right-image + border-top-right-radius + border-top-style + border-top-width + border-top + border-width + border + bottom + box-shadow + box-sizing + caption-side + clear + clip + color + content + counter-increment + counter-reset + cue-after + cue-before + cue + cursor + direction + display + elevation + empty-cells + float + font-effect + font-emphasize-position + font-emphasize-style + font-emphasize + font-family + font-size-adjust + font-size + font-smooth + font-stretch + font-style + font-variant + font-weight + font + height + left + letter-spacing + line-height + list-style-image + list-style-position + list-style-type + list-style + margin-bottom + margin-left + margin-right + margin-top + margin + marker-offset + marks + max-height + max-width + min-height + min-width + opacity + orphans + outline-color + outline-offset + outline-style + outline-width + outline + overflow-style + overflow-x + overflow-y + overflow + 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 + play-during + pitch + position + quotes + resize + richness + right + size + speak-header + speak-numeral + speak-punctuation + speak + speech-rate + stress + table-layout + text-align-last + text-align + text-decoration + text-emphasis + text-height + text-indent + text-justify + text-outline + text-replace + text-shadow + text-transform + text-wrap + top + unicode-bidi + vertical-align + visibility + voice-family + volume + white-space-collapse + white-space + widows + width + word-break + word-spacing + word-wrap + z-index + + + uuid + 58AB9A66-307B-4214-B0C8-D31B9BEC0372 + + diff --git a/User/SCSS/Preferences/property%3Aname.tmPreferences.cache b/User/SCSS/Preferences/property%3Aname.tmPreferences.cache new file mode 100644 index 0000000..2f3803c Binary files /dev/null and b/User/SCSS/Preferences/property%3Aname.tmPreferences.cache differ diff --git a/User/SCSS/Preferences/property%3Avalue.tmPreferences b/User/SCSS/Preferences/property%3Avalue.tmPreferences new file mode 100755 index 0000000..36317dc --- /dev/null +++ b/User/SCSS/Preferences/property%3Avalue.tmPreferences @@ -0,0 +1,178 @@ + + + + + name + property:value + scope + source.css meta.property-value,source.scss meta.property-value + settings + + completions + + absolute + accent + after + always + attr() + auto + avoid + baseline + before + block + bold + bolder + border-box + both + bottom + bounding-box + break-all + break-strict + capitalize + center + circle + clip + close + close-quote + collapse + compact + condensed + contain + content-box + continue + continuous + counter() + counters() + cover + crosshair + cursive + dashed + decimal + decimal-leading-zero + default + disc + distribute + dot + dot-dash + dot-dot-dash + dotted + double + each-box + emboss + engrave + expanded + extra-condensed + extra-expanded + fantasy + fixed + font-size + groove + hand + help + hidden + hide + horizontal + inline + inline-block + inline-table + inset + inside + inter-cluster + inter-ideograph + inter-word + invert + italic + kashida + keep-all + left + lighter + line-through + list-item + loose + lower-roman + lowercase + marquee + max-size + middle + monospace + move + ms + never + no-clip + no-close-quote + no-open-quote + no-repeat + none + normal + nowrap + oblique + open-quote + outline + outset + outside + overflow + overline + overwrite + padding-box + panner + pointer + pre + pre-line + pre-wrap + rect() + relative + repeat + repeat-x + repeat-y + ridge + right + run-in + sans-serif + scale + scroll + scrollbar + semi-condensed + semi-expanded + separate + serif + show + small-caps + solid + space + square + static + stretch + sub + super + suppress + table + table-caption + table-cell + table-column + table-column-group + table-footer-group + table-header-group + table-row + table-row-group + text + text-bottom + text-size + text-top + tibetan + top + transparent + ultra-condensed + ultra-expanded + underline + unrestricted + upper-roman + uppercase + vertical + visible + wave + + + uuid + 081DA7F0-1501-42D3-A287-3411457F4D62 + + diff --git a/User/SCSS/Preferences/property%3Avalue.tmPreferences.cache b/User/SCSS/Preferences/property%3Avalue.tmPreferences.cache new file mode 100644 index 0000000..c4fa928 Binary files /dev/null and b/User/SCSS/Preferences/property%3Avalue.tmPreferences.cache differ diff --git a/User/SCSS/Preferences/smart typing pairs.tmPreferences b/User/SCSS/Preferences/smart typing pairs.tmPreferences new file mode 100755 index 0000000..bd75041 --- /dev/null +++ b/User/SCSS/Preferences/smart typing pairs.tmPreferences @@ -0,0 +1,50 @@ + + + + + name + smart typing pairs + scope + source.scss, meta.property-list.css + settings + + smartTypingPairs + + + " + " + + + ( + ) + + + { + } + + + [ + ] + + + < + > + + + ' + ' + + + : + ; + + + /* + */ + + + + uuid + 71806A42-4B5B-4CE5-AFA0-60DC5C0AAF0F + + diff --git a/User/SCSS/Preferences/smart typing pairs.tmPreferences.cache b/User/SCSS/Preferences/smart typing pairs.tmPreferences.cache new file mode 100644 index 0000000..18cc78e Binary files /dev/null and b/User/SCSS/Preferences/smart typing pairs.tmPreferences.cache differ diff --git a/User/SCSS/Preferences/symbol list for scss.tmPreferences b/User/SCSS/Preferences/symbol list for scss.tmPreferences new file mode 100755 index 0000000..2c9ede3 --- /dev/null +++ b/User/SCSS/Preferences/symbol list for scss.tmPreferences @@ -0,0 +1,19 @@ + + + + + bundleUUID + A4FDD1ED-D13D-4AF6-99B9-C9AD0D262149 + name + symbol list for scss + scope + source.scss entity + settings + + showInSymbolList + 1 + + uuid + FCC5C2D2-A56A-49DF-958C-BCECB5F24D74 + + diff --git a/User/SCSS/Preferences/symbol list for scss.tmPreferences.cache b/User/SCSS/Preferences/symbol list for scss.tmPreferences.cache new file mode 100644 index 0000000..6e97466 Binary files /dev/null and b/User/SCSS/Preferences/symbol list for scss.tmPreferences.cache differ diff --git a/User/SCSS/Preferences/symbol list%3Agroup.tmPreferences b/User/SCSS/Preferences/symbol list%3Agroup.tmPreferences new file mode 100755 index 0000000..2d072f9 --- /dev/null +++ b/User/SCSS/Preferences/symbol list%3Agroup.tmPreferences @@ -0,0 +1,19 @@ + + + + + name + symbol list:group + scope + source.css comment.block.css -source.css.embedded,source.scss comment.block.scss -source.css.embedded + settings + + showInSymbolList + 1 + symbolTransformation + s/\/\*\*\s*(.*?)\s*\*\//** $1 **/; s/\/\*.*?\*\*\//./; s/\/\*[^\*].*?[^\*]\*\/// + + uuid + FE87A88E-73FB-41EA-8A1E-9F7681C0F25A + + diff --git a/User/SCSS/Preferences/symbol list%3Agroup.tmPreferences.cache b/User/SCSS/Preferences/symbol list%3Agroup.tmPreferences.cache new file mode 100644 index 0000000..9077983 Binary files /dev/null and b/User/SCSS/Preferences/symbol list%3Agroup.tmPreferences.cache differ diff --git a/User/SCSS/Preferences/symbol list%3Aselector.tmPreferences b/User/SCSS/Preferences/symbol list%3Aselector.tmPreferences new file mode 100755 index 0000000..b38b085 --- /dev/null +++ b/User/SCSS/Preferences/symbol list%3Aselector.tmPreferences @@ -0,0 +1,19 @@ + + + + + name + symbol list:selector + scope + source.css meta.selector,source.scss meta.selector + settings + + showInSymbolList + 1 + symbolTransformation + s/^\s*/CSS: /; s/\s+/ /g + + uuid + B407385D-9891-4822-B06D-B82DBB6B98F0 + + diff --git a/User/SCSS/Preferences/symbol list%3Aselector.tmPreferences.cache b/User/SCSS/Preferences/symbol list%3Aselector.tmPreferences.cache new file mode 100644 index 0000000..2ed901c Binary files /dev/null and b/User/SCSS/Preferences/symbol list%3Aselector.tmPreferences.cache differ diff --git a/User/SCSS/README.markdown b/User/SCSS/README.markdown new file mode 100755 index 0000000..dff13ba --- /dev/null +++ b/User/SCSS/README.markdown @@ -0,0 +1,64 @@ +This is the TextMate Bundle for [Sass](http://sass-lang.com/) SCSS Syntax. Using [SublimeText2?, click here!](https://github.com/kuroir/SCSS.tmbundle/tree/SublimeText2) + +This bundle contains the grammar files for highlighting the NEW SYNTAX; the old syntax is not supported by this bundle. Sorry. + +It also includes Zen CSS ( from the Zen Coding Project ); which will help you speed up your coding. + + +### Installation Instructions + + mkdir -p ~/Library/Application\ Support/TextMate/Bundles + cd ~/Library/Application\ Support/TextMate/Bundles + git clone git://github.com/kuroir/SCSS.tmbundle.git "SCSS.tmbundle" + osascript -e 'tell app "TextMate" to reload bundles' + +### Extra Features +#### New Feature: XHTML to SCSS Converter +You can see the new feature in action in [this screencast](http://screenr.com/TZ0). Sorry for my engrish.. I need to practice more heh. + +Notes about this feature: + +Yo shouldn't use this feature to convert the whole XHTML to SCSS. It is meant to selectively copy and paste your XHTML to SCSS Document. In the Screencast I did a complete layout parse for the sake of demonstration. However this is a bad practice since it generates unnecessary nesting and of course bloat. + +#### New Feature: XHTML to SCSS Converter now uses style declarations! + +See it in action! [Screencast](http://screenr.com/fP4). + +#### The minimum requirements for this command to work: + +- [Nokogiri](http://nokogiri.org/) +- Ruby 1.8.7 or higher (it comes by default with Snow Leopard) +- Mac OS X (No support for Windows yet. I didn't implement the clipboard method for it.) + +#### Installation: + + gem install nokogiri + +## Before Forking + +[READ THE README ON THE MASTER OLD](https://github.com/kuroir/SCSS.tmbundle/tree/master-old) + +## Credits and More: + +#### [Mario Ricalde](http://github.com/kuroir) +Rewrote the SCSS Grammar file and made the first release of the bundle. +#### [Charles Roper](http://github.com/charlesr) +Is the mantainer of the SublimeText2 Branch and contributed with the E-TextEditor compatibility on early stages. +#### [Chris Eppstein](http://github.com/chriseppstein) +Developed the first SCSS TextMate Bundle. Mario based his grammar of his and got a lot of feedback from him (he's SASS Core Dev) +#### [Zen Coding @ google.com](http://code.google.com/p/zen-coding/). +This bundle has the Zen Coding Bundled within because of the scope. +#### [doctyper](http://github.com/doctyper) +Contributed with the first SublimeText2 hotfix to the original SCSS.tmbundle. + +##### SCSS.tmbundle Copyright (c) 2011 Mario "Kuroir" Ricalde + +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. No attribution is required by products that make use of this 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. + +Except as contained in this notice, the name(s) of the above copyright holders shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization. + +Contributors to this project agree to grant all rights to the copyright holder of the primary product. Attribution is maintained in the source control history of the product. diff --git a/User/SCSS/Snippets/-moz-border-image+.tmSnippet b/User/SCSS/Snippets/-moz-border-image+.tmSnippet new file mode 100755 index 0000000..7c7938f --- /dev/null +++ b/User/SCSS/Snippets/-moz-border-image+.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + -moz-border-image:${TM_CSS_SPACE}url($1) ${2:0} ${3:0} ${4:0} ${5:0} ${6:stretch} ${7:stretch};$0 + name + -moz-border-image+ + scope + source.css, source.scss + tabTrigger + bdi:m+ + uuid + 1AE757B8-B07F-481D-99B5-BA246B57CB98 + + diff --git a/User/SCSS/Snippets/-moz-border-radius.tmSnippet b/User/SCSS/Snippets/-moz-border-radius.tmSnippet new file mode 100755 index 0000000..89a734d --- /dev/null +++ b/User/SCSS/Snippets/-moz-border-radius.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + -moz-border-radius:${TM_CSS_SPACE}$1;$0 + name + -moz-border-radius + scope + source.css, source.scss + tabTrigger + bdrz:m + uuid + C4754886-04FA-4E61-BBA4-7B0698EB5A96 + + diff --git a/User/SCSS/Snippets/-moz-box-shadow+.tmSnippet b/User/SCSS/Snippets/-moz-box-shadow+.tmSnippet new file mode 100755 index 0000000..4f7c0ec --- /dev/null +++ b/User/SCSS/Snippets/-moz-box-shadow+.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + -moz-box-shadow:${TM_CSS_SPACE}${1:0} ${2:0} ${3:0} #${4:000};$0 + name + -moz-box-shadow+ + scope + source.css, source.scss + tabTrigger + bxsh:m+ + uuid + 71D183AA-B286-4D30-8F73-18E9EAE6FAFF + + diff --git a/User/SCSS/Snippets/-webkit-border-image+.tmSnippet b/User/SCSS/Snippets/-webkit-border-image+.tmSnippet new file mode 100755 index 0000000..eec89c8 --- /dev/null +++ b/User/SCSS/Snippets/-webkit-border-image+.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + -webkit-border-image:${TM_CSS_SPACE}url($1) ${2:0} ${3:0} ${4:0} ${5:0} ${6:stretch} ${7:stretch};$0 + name + -webkit-border-image+ + scope + source.css, source.scss + tabTrigger + bdi:w+ + uuid + 92049B1D-7496-40AF-B9E2-1235344F32FE + + diff --git a/User/SCSS/Snippets/-webkit-border-image.tmSnippet b/User/SCSS/Snippets/-webkit-border-image.tmSnippet new file mode 100755 index 0000000..ff9657f --- /dev/null +++ b/User/SCSS/Snippets/-webkit-border-image.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + -webkit-border-image:${TM_CSS_SPACE}$1;$0 + name + -webkit-border-image + scope + source.css, source.scss + tabTrigger + bdi:w + uuid + A8F7FAAF-0F20-4D29-8D84-998BB4D9DD54 + + diff --git a/User/SCSS/Snippets/-webkit-border-radius.tmSnippet b/User/SCSS/Snippets/-webkit-border-radius.tmSnippet new file mode 100755 index 0000000..e404744 --- /dev/null +++ b/User/SCSS/Snippets/-webkit-border-radius.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + -webkit-border-radius:${TM_CSS_SPACE}$1;$0 + name + -webkit-border-radius + scope + source.css, source.scss + tabTrigger + bdrz:w + uuid + 01A12AD1-DDAD-4A9E-B900-5994E3EABF8D + + diff --git a/User/SCSS/Snippets/-webkit-box-shadow+.tmSnippet b/User/SCSS/Snippets/-webkit-box-shadow+.tmSnippet new file mode 100755 index 0000000..0970c66 --- /dev/null +++ b/User/SCSS/Snippets/-webkit-box-shadow+.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + -webkit-box-shadow:${TM_CSS_SPACE}${1:0} ${2:0} ${3:0} #${4:000};$0 + name + -webkit-box-shadow+ + scope + source.css, source.scss + tabTrigger + bxsh:w+ + uuid + 450E79F6-33CC-4345-BC4A-7E1AF2B0C890 + + diff --git a/User/SCSS/Snippets/-webkit-box-shadow.tmSnippet b/User/SCSS/Snippets/-webkit-box-shadow.tmSnippet new file mode 100755 index 0000000..d5e5b13 --- /dev/null +++ b/User/SCSS/Snippets/-webkit-box-shadow.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + -webkit-box-shadow:${TM_CSS_SPACE}$1;$0 + name + -webkit-box-shadow + scope + source.css, source.scss + tabTrigger + bxsh:w + uuid + 338638AB-6D17-4A57-8434-B5735FA1C414 + + diff --git a/User/SCSS/Snippets/;.tmSnippet b/User/SCSS/Snippets/;.tmSnippet new file mode 100755 index 0000000..37dd2f4 --- /dev/null +++ b/User/SCSS/Snippets/;.tmSnippet @@ -0,0 +1,19 @@ + + + + + bundleUUID + 4675F24E-6227-11D9-BFB1-000D93589AF6 + content + ; + + name + ; + scope + source.css, source.scss + tabTrigger + ; + uuid + 309D8290-2A0C-4F05-A665-AAD048C863A8 + + diff --git a/User/SCSS/Snippets/= Shortcut to @mixin.tmSnippet b/User/SCSS/Snippets/= Shortcut to @mixin.tmSnippet new file mode 100755 index 0000000..1b567d7 --- /dev/null +++ b/User/SCSS/Snippets/= Shortcut to @mixin.tmSnippet @@ -0,0 +1,21 @@ + + + + + content + // +// @TODO: Add docs to $1! +// +@mixin ${1:mixin-name}${2:(${3:\$params})} { + $0 +} + name + = Shortcut to @mixin + scope + source.scss + tabTrigger + = + uuid + A24F91CB-A3E5-4907-8259-5E7645E39BAF + + diff --git a/User/SCSS/Snippets/@for.tmSnippet b/User/SCSS/Snippets/@for.tmSnippet new file mode 100755 index 0000000..8959489 --- /dev/null +++ b/User/SCSS/Snippets/@for.tmSnippet @@ -0,0 +1,20 @@ + + + + + content + @for \$${3:i} from ${2:1} through ${1:3} { + ${4:.item-#{\$${3:i}\}} { + $0 + } +} + name + @for + scope + source.scss + tabTrigger + for + uuid + 591BE979-E7D8-433B-A5F0-D8B96E510BC9 + + diff --git a/User/SCSS/Snippets/Divisor.tmSnippet b/User/SCSS/Snippets/Divisor.tmSnippet new file mode 100755 index 0000000..a49b201 --- /dev/null +++ b/User/SCSS/Snippets/Divisor.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + // $1 +// ---------------------------------------- + keyEquivalent + ~@/ + name + Divisor + scope + source.css, source.scss + uuid + 14916C6A-130D-4AF1-8515-989720DDDEC7 + + diff --git a/User/SCSS/Snippets/background%3Aie.tmSnippet b/User/SCSS/Snippets/background%3Aie.tmSnippet new file mode 100755 index 0000000..7f33e47 --- /dev/null +++ b/User/SCSS/Snippets/background%3Aie.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + filter:${TM_CSS_SPACE}progid:DXImageTransform.Microsoft.AlphaImageLoader(src='$1',sizingMethod='${2:crop}');$0 + name + background:ie + scope + source.css, source.scss + tabTrigger + bg:ie + uuid + FEAD3367-6C47-4B7F-889C-0B4D7C40BF0C + + diff --git a/User/SCSS/Snippets/background(css).tmSnippet b/User/SCSS/Snippets/background(css).tmSnippet new file mode 100755 index 0000000..13b8907 --- /dev/null +++ b/User/SCSS/Snippets/background(css).tmSnippet @@ -0,0 +1,16 @@ + + + + + content + background:${1:${2:transparent} url('${3:image.png}') ${4:left} ${5:top} ${6:no-repeat}}; + name + background(css) + scope + source.css + tabTrigger + bg + uuid + 2002CC74-A67B-46A2-A55F-534FF87751CC + + diff --git a/User/SCSS/Snippets/background+.tmSnippet b/User/SCSS/Snippets/background+.tmSnippet new file mode 100755 index 0000000..37f548d --- /dev/null +++ b/User/SCSS/Snippets/background+.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + background:${TM_CSS_SPACE}#${1:FFF} url($2) ${3:0} ${4:0} ${5:no-repeat};$0 + name + background+ + scope + source.css, source.scss + tabTrigger + bg+ + uuid + E73DE3B4-8468-455C-ACBC-BC4EE000530E + + diff --git a/User/SCSS/Snippets/background-attachment%3Afixed.tmSnippet b/User/SCSS/Snippets/background-attachment%3Afixed.tmSnippet new file mode 100755 index 0000000..a77a05b --- /dev/null +++ b/User/SCSS/Snippets/background-attachment%3Afixed.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + background-attachment:${TM_CSS_SPACE}fixed;$0 + name + background-attachment:fixed + scope + source.css, source.scss + tabTrigger + bga:f + uuid + D6051841-F579-4026-AE86-60511FDC602A + + diff --git a/User/SCSS/Snippets/background-attachment%3Ascroll.tmSnippet b/User/SCSS/Snippets/background-attachment%3Ascroll.tmSnippet new file mode 100755 index 0000000..4d246dc --- /dev/null +++ b/User/SCSS/Snippets/background-attachment%3Ascroll.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + background-attachment:${TM_CSS_SPACE}scroll;$0 + name + background-attachment:scroll + scope + source.css, source.scss + tabTrigger + bga:s + uuid + 4D2583A6-6258-4ECC-9E43-6494F8BB340E + + diff --git a/User/SCSS/Snippets/background-attachment.tmSnippet b/User/SCSS/Snippets/background-attachment.tmSnippet new file mode 100755 index 0000000..127fec2 --- /dev/null +++ b/User/SCSS/Snippets/background-attachment.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + background-attachment:${TM_CSS_SPACE}$1;$0 + name + background-attachment + scope + source.css, source.scss + tabTrigger + bga + uuid + AF2EBE8E-721B-4438-98CE-B0437E31F6BD + + diff --git a/User/SCSS/Snippets/background-break%3Abounding-box.tmSnippet b/User/SCSS/Snippets/background-break%3Abounding-box.tmSnippet new file mode 100755 index 0000000..d85082c --- /dev/null +++ b/User/SCSS/Snippets/background-break%3Abounding-box.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + background-break:${TM_CSS_SPACE}bounding-box;$0 + name + background-break:bounding-box + scope + source.css, source.scss + tabTrigger + bgbk:bb + uuid + ECB7388B-AA06-4627-8E0C-9D8FB09F6103 + + diff --git a/User/SCSS/Snippets/background-break%3Acontinuous.tmSnippet b/User/SCSS/Snippets/background-break%3Acontinuous.tmSnippet new file mode 100755 index 0000000..b61af9d --- /dev/null +++ b/User/SCSS/Snippets/background-break%3Acontinuous.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + background-break:${TM_CSS_SPACE}continuous;$0 + name + background-break:continuous + scope + source.css, source.scss + tabTrigger + bgbk:c + uuid + CD4D31DE-BD8B-484E-86F1-9949D45C8662 + + diff --git a/User/SCSS/Snippets/background-break%3Aeach-box.tmSnippet b/User/SCSS/Snippets/background-break%3Aeach-box.tmSnippet new file mode 100755 index 0000000..ed2d908 --- /dev/null +++ b/User/SCSS/Snippets/background-break%3Aeach-box.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + background-break:${TM_CSS_SPACE}each-box;$0 + name + background-break:each-box + scope + source.css, source.scss + tabTrigger + bgbk:eb + uuid + 7E64C4E8-23F6-40AE-931E-67763CB38DF0 + + diff --git a/User/SCSS/Snippets/background-clip%3Aborder-box.tmSnippet b/User/SCSS/Snippets/background-clip%3Aborder-box.tmSnippet new file mode 100755 index 0000000..57215ae --- /dev/null +++ b/User/SCSS/Snippets/background-clip%3Aborder-box.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + background-clip:${TM_CSS_SPACE}border-box;$0 + name + background-clip:border-box + scope + source.css, source.scss + tabTrigger + bgcp:bb + uuid + 7EC8ADE5-3C71-4D0F-B761-133E363AFD6D + + diff --git a/User/SCSS/Snippets/background-clip%3Acontent-box.tmSnippet b/User/SCSS/Snippets/background-clip%3Acontent-box.tmSnippet new file mode 100755 index 0000000..c583c4a --- /dev/null +++ b/User/SCSS/Snippets/background-clip%3Acontent-box.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + background-clip:${TM_CSS_SPACE}content-box;$0 + name + background-clip:content-box + scope + source.css, source.scss + tabTrigger + bgcp:cb + uuid + E479577E-2A46-410B-ACD1-2B8FFB744958 + + diff --git a/User/SCSS/Snippets/background-clip%3Ano-clip.tmSnippet b/User/SCSS/Snippets/background-clip%3Ano-clip.tmSnippet new file mode 100755 index 0000000..4170cd7 --- /dev/null +++ b/User/SCSS/Snippets/background-clip%3Ano-clip.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + background-clip:${TM_CSS_SPACE}no-clip;$0 + name + background-clip:no-clip + scope + source.css, source.scss + tabTrigger + bgcp:nc + uuid + 8A674757-D6D0-41BA-AC66-A2848B71E266 + + diff --git a/User/SCSS/Snippets/background-clip%3Apadding-box.tmSnippet b/User/SCSS/Snippets/background-clip%3Apadding-box.tmSnippet new file mode 100755 index 0000000..74b238f --- /dev/null +++ b/User/SCSS/Snippets/background-clip%3Apadding-box.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + background-clip:${TM_CSS_SPACE}padding-box;$0 + name + background-clip:padding-box + scope + source.css, source.scss + tabTrigger + bgcp:pb + uuid + 2932AFB5-B981-44BA-9296-4E7CC0958F48 + + diff --git a/User/SCSS/Snippets/background-color%3Atransparent.tmSnippet b/User/SCSS/Snippets/background-color%3Atransparent.tmSnippet new file mode 100755 index 0000000..0dc1405 --- /dev/null +++ b/User/SCSS/Snippets/background-color%3Atransparent.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + background-color:${TM_CSS_SPACE}transparent;$0 + name + background-color:transparent + scope + source.css, source.scss + tabTrigger + bgc:t + uuid + E51DD35D-7B9E-42CB-817A-9B1F1D9FFC2F + + diff --git a/User/SCSS/Snippets/background-color.tmSnippet b/User/SCSS/Snippets/background-color.tmSnippet new file mode 100755 index 0000000..62db0a0 --- /dev/null +++ b/User/SCSS/Snippets/background-color.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + background-color:${TM_CSS_SPACE}#${1:FFF};$0 + name + background-color + scope + source.css, source.scss + tabTrigger + bgc + uuid + EFEB52CB-5960-44D1-A677-E56C2815AE10 + + diff --git a/User/SCSS/Snippets/background-image%3Anone.tmSnippet b/User/SCSS/Snippets/background-image%3Anone.tmSnippet new file mode 100755 index 0000000..fa5245e --- /dev/null +++ b/User/SCSS/Snippets/background-image%3Anone.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + background-image:${TM_CSS_SPACE}none;$0 + name + background-image:none + scope + source.css, source.scss + tabTrigger + bgi:n + uuid + E8E96B1A-E0A6-4A95-84AB-246F2A1FCCC1 + + diff --git a/User/SCSS/Snippets/background-origin%3Aborder-box.tmSnippet b/User/SCSS/Snippets/background-origin%3Aborder-box.tmSnippet new file mode 100755 index 0000000..911eeaf --- /dev/null +++ b/User/SCSS/Snippets/background-origin%3Aborder-box.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + background-origin:${TM_CSS_SPACE}border-box;$0 + name + background-origin:border-box + scope + source.css, source.scss + tabTrigger + bgo:bb + uuid + 26E770F1-034F-48E4-A163-5A348E41DB0F + + diff --git a/User/SCSS/Snippets/background-origin%3Acontent-box.tmSnippet b/User/SCSS/Snippets/background-origin%3Acontent-box.tmSnippet new file mode 100755 index 0000000..8d3006d --- /dev/null +++ b/User/SCSS/Snippets/background-origin%3Acontent-box.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + background-origin:${TM_CSS_SPACE}content-box;$0 + name + background-origin:content-box + scope + source.css, source.scss + tabTrigger + bgo:cb + uuid + A080EA27-F81A-4CC9-B1B7-266B5BE64551 + + diff --git a/User/SCSS/Snippets/background-origin%3Apadding-box.tmSnippet b/User/SCSS/Snippets/background-origin%3Apadding-box.tmSnippet new file mode 100755 index 0000000..a21785a --- /dev/null +++ b/User/SCSS/Snippets/background-origin%3Apadding-box.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + background-origin:${TM_CSS_SPACE}padding-box;$0 + name + background-origin:padding-box + scope + source.css, source.scss + tabTrigger + bgo:pb + uuid + DFB09CF8-E37C-47D2-982F-F15F6981ADE3 + + diff --git a/User/SCSS/Snippets/background-position-x.tmSnippet b/User/SCSS/Snippets/background-position-x.tmSnippet new file mode 100755 index 0000000..db152a4 --- /dev/null +++ b/User/SCSS/Snippets/background-position-x.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + background-position-x:${TM_CSS_SPACE}$1;$0 + name + background-position-x + scope + source.css, source.scss + tabTrigger + bgpx + uuid + E5153EAD-30A3-4153-8FD6-F6AFB368504D + + diff --git a/User/SCSS/Snippets/background-position-y.tmSnippet b/User/SCSS/Snippets/background-position-y.tmSnippet new file mode 100755 index 0000000..b4e2232 --- /dev/null +++ b/User/SCSS/Snippets/background-position-y.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + background-position-y:${TM_CSS_SPACE}$1;$0 + name + background-position-y + scope + source.css, source.scss + tabTrigger + bgpy + uuid + 01481A99-083A-4D72-826C-28E183162A15 + + diff --git a/User/SCSS/Snippets/background-position.tmSnippet b/User/SCSS/Snippets/background-position.tmSnippet new file mode 100755 index 0000000..ae4a663 --- /dev/null +++ b/User/SCSS/Snippets/background-position.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + background-position:${TM_CSS_SPACE}${1:0} ${2:0};$0 + name + background-position + scope + source.css, source.scss + tabTrigger + bgp + uuid + 458984E3-1070-44B4-AD3C-5FC254EE5D37 + + diff --git a/User/SCSS/Snippets/background-repeat%3Ano-repeat.tmSnippet b/User/SCSS/Snippets/background-repeat%3Ano-repeat.tmSnippet new file mode 100755 index 0000000..62d4a23 --- /dev/null +++ b/User/SCSS/Snippets/background-repeat%3Ano-repeat.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + background-repeat:${TM_CSS_SPACE}no-repeat;$0 + name + background-repeat:no-repeat + scope + source.css, source.scss + tabTrigger + bgr:n + uuid + FCEA64D5-569C-470C-BE79-17A1127FC405 + + diff --git a/User/SCSS/Snippets/background-repeat%3Arepeat-x.tmSnippet b/User/SCSS/Snippets/background-repeat%3Arepeat-x.tmSnippet new file mode 100755 index 0000000..c65a0f0 --- /dev/null +++ b/User/SCSS/Snippets/background-repeat%3Arepeat-x.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + background-repeat:${TM_CSS_SPACE}repeat-x;$0 + name + background-repeat:repeat-x + scope + source.css, source.scss + tabTrigger + bgr:x + uuid + 42E8DE2F-B8E5-4779-9769-91961E0F6382 + + diff --git a/User/SCSS/Snippets/background-repeat%3Arepeat-y.tmSnippet b/User/SCSS/Snippets/background-repeat%3Arepeat-y.tmSnippet new file mode 100755 index 0000000..5c6c891 --- /dev/null +++ b/User/SCSS/Snippets/background-repeat%3Arepeat-y.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + background-repeat:${TM_CSS_SPACE}repeat-y;$0 + name + background-repeat:repeat-y + scope + source.css, source.scss + tabTrigger + bgr:y + uuid + 0A806D02-94FD-4271-9367-09711C38C30E + + diff --git a/User/SCSS/Snippets/background-repeat%3Arepeat.tmSnippet b/User/SCSS/Snippets/background-repeat%3Arepeat.tmSnippet new file mode 100755 index 0000000..f40dde0 --- /dev/null +++ b/User/SCSS/Snippets/background-repeat%3Arepeat.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + background-repeat:${TM_CSS_SPACE}repeat;$0 + name + background-repeat:repeat + scope + source.css, source.scss + tabTrigger + bgr:r + uuid + A9744780-A070-4980-847A-010FE03CEEA1 + + diff --git a/User/SCSS/Snippets/background-size%3Aauto.tmSnippet b/User/SCSS/Snippets/background-size%3Aauto.tmSnippet new file mode 100755 index 0000000..c3e0dfe --- /dev/null +++ b/User/SCSS/Snippets/background-size%3Aauto.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + background-size:${TM_CSS_SPACE}auto;$0 + name + background-size:auto + scope + source.css, source.scss + tabTrigger + bgz:a + uuid + 162C1170-5B08-470B-94EF-7A9F12E27358 + + diff --git a/User/SCSS/Snippets/background-size%3Acontain.tmSnippet b/User/SCSS/Snippets/background-size%3Acontain.tmSnippet new file mode 100755 index 0000000..4ec617a --- /dev/null +++ b/User/SCSS/Snippets/background-size%3Acontain.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + background-size:${TM_CSS_SPACE}contain;$0 + name + background-size:contain + scope + source.css, source.scss + tabTrigger + bgz:ct + uuid + FF7E1A63-8B40-4870-8962-44EB943A3E3C + + diff --git a/User/SCSS/Snippets/background-size%3Acover.tmSnippet b/User/SCSS/Snippets/background-size%3Acover.tmSnippet new file mode 100755 index 0000000..6e5c20f --- /dev/null +++ b/User/SCSS/Snippets/background-size%3Acover.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + background-size:${TM_CSS_SPACE}cover;$0 + name + background-size:cover + scope + source.css, source.scss + tabTrigger + bgz:cv + uuid + 0E023788-4190-4758-AF4E-E486E891855B + + diff --git a/User/SCSS/Snippets/background.tmSnippet b/User/SCSS/Snippets/background.tmSnippet new file mode 100755 index 0000000..f6ab6e3 --- /dev/null +++ b/User/SCSS/Snippets/background.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + background:${1:${2:transparent} image-url('${3:image.png}') ${4:left} ${5:top} ${6:no-repeat}}; + name + background + scope + source.scss + tabTrigger + bg + uuid + 0D6354D0-B50E-47A8-9F42-C9B452660340 + + diff --git a/User/SCSS/Snippets/border+.tmSnippet b/User/SCSS/Snippets/border+.tmSnippet new file mode 100755 index 0000000..231aa44 --- /dev/null +++ b/User/SCSS/Snippets/border+.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + border:${TM_CSS_SPACE}${1:1px} ${2:solid} #${3:000};$0 + name + border+ + scope + source.css, source.scss + tabTrigger + bd+ + uuid + FED3811D-2C43-43DD-BCEF-46B7026E41DC + + diff --git a/User/SCSS/Snippets/border-bottom+.tmSnippet b/User/SCSS/Snippets/border-bottom+.tmSnippet new file mode 100755 index 0000000..a7ad5da --- /dev/null +++ b/User/SCSS/Snippets/border-bottom+.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + border-bottom:${TM_CSS_SPACE}${1:1px} ${2:solid} #${3:000};$0 + name + border-bottom+ + scope + source.css, source.scss + tabTrigger + bdb+ + uuid + AED7BC17-352A-4F2C-8A3F-AC8F84DF1417 + + diff --git a/User/SCSS/Snippets/border-bottom-color.tmSnippet b/User/SCSS/Snippets/border-bottom-color.tmSnippet new file mode 100755 index 0000000..e5e7f1f --- /dev/null +++ b/User/SCSS/Snippets/border-bottom-color.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + border-bottom-color:${TM_CSS_SPACE}#${1:000};$0 + name + border-bottom-color + scope + source.css, source.scss + tabTrigger + bdbc + uuid + 74094EF2-9DEB-4A41-A11B-B6F2E73E7BE5 + + diff --git a/User/SCSS/Snippets/border-bottom-image%3Anone.tmSnippet b/User/SCSS/Snippets/border-bottom-image%3Anone.tmSnippet new file mode 100755 index 0000000..1d2235a --- /dev/null +++ b/User/SCSS/Snippets/border-bottom-image%3Anone.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + border-bottom-image:${TM_CSS_SPACE}none;$0 + name + border-bottom-image:none + scope + source.css, source.scss + tabTrigger + bdbi:n + uuid + 98DA651F-3657-48E8-8149-2CAD0D47580E + + diff --git a/User/SCSS/Snippets/border-bottom-image.tmSnippet b/User/SCSS/Snippets/border-bottom-image.tmSnippet new file mode 100755 index 0000000..cc3d2d5 --- /dev/null +++ b/User/SCSS/Snippets/border-bottom-image.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + border-bottom-image:${TM_CSS_SPACE}url($1);$0 + name + border-bottom-image + scope + source.css, source.scss + tabTrigger + bdbi + uuid + 15D9C3A7-D61B-41B6-9949-CBC556B1D4BC + + diff --git a/User/SCSS/Snippets/border-bottom-left-image%3Acontinue.tmSnippet b/User/SCSS/Snippets/border-bottom-left-image%3Acontinue.tmSnippet new file mode 100755 index 0000000..bf29ae3 --- /dev/null +++ b/User/SCSS/Snippets/border-bottom-left-image%3Acontinue.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + border-bottom-left-image:${TM_CSS_SPACE}continue;$0 + name + border-bottom-left-image:continue + scope + source.css, source.scss + tabTrigger + bdbli:c + uuid + 25918D08-F55C-4A58-8E31-056C8AD6C819 + + diff --git a/User/SCSS/Snippets/border-bottom-left-image%3Anone.tmSnippet b/User/SCSS/Snippets/border-bottom-left-image%3Anone.tmSnippet new file mode 100755 index 0000000..974445e --- /dev/null +++ b/User/SCSS/Snippets/border-bottom-left-image%3Anone.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + border-bottom-left-image:${TM_CSS_SPACE}none;$0 + name + border-bottom-left-image:none + scope + source.css, source.scss + tabTrigger + bdbli:n + uuid + 3117DF77-F206-43E5-8BA7-FD0D10380DC5 + + diff --git a/User/SCSS/Snippets/border-bottom-left-image.tmSnippet b/User/SCSS/Snippets/border-bottom-left-image.tmSnippet new file mode 100755 index 0000000..931435f --- /dev/null +++ b/User/SCSS/Snippets/border-bottom-left-image.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + border-bottom-left-image:${TM_CSS_SPACE}url($1);$0 + name + border-bottom-left-image + scope + source.css, source.scss + tabTrigger + bdbli + uuid + FF246B45-9A8D-44D1-866C-6B8E2E54C84A + + diff --git a/User/SCSS/Snippets/border-bottom-left-radius.tmSnippet b/User/SCSS/Snippets/border-bottom-left-radius.tmSnippet new file mode 100755 index 0000000..c4ea2ff --- /dev/null +++ b/User/SCSS/Snippets/border-bottom-left-radius.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + border-bottom-left-radius:${TM_CSS_SPACE}$1;$0 + name + border-bottom-left-radius + scope + source.css, source.scss + tabTrigger + bdblrz + uuid + C749D661-58CC-4F01-A885-18FC2B464B5E + + diff --git a/User/SCSS/Snippets/border-bottom-right-image%3Acontinue.tmSnippet b/User/SCSS/Snippets/border-bottom-right-image%3Acontinue.tmSnippet new file mode 100755 index 0000000..0372b06 --- /dev/null +++ b/User/SCSS/Snippets/border-bottom-right-image%3Acontinue.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + border-bottom-right-image:${TM_CSS_SPACE}continue;$0 + name + border-bottom-right-image:continue + scope + source.css, source.scss + tabTrigger + bdbri:c + uuid + AE69F7A3-2112-485D-B82A-2758C16A0D43 + + diff --git a/User/SCSS/Snippets/border-bottom-right-image%3Anone.tmSnippet b/User/SCSS/Snippets/border-bottom-right-image%3Anone.tmSnippet new file mode 100755 index 0000000..c56b5ca --- /dev/null +++ b/User/SCSS/Snippets/border-bottom-right-image%3Anone.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + border-bottom-right-image:${TM_CSS_SPACE}none;$0 + name + border-bottom-right-image:none + scope + source.css, source.scss + tabTrigger + bdbri:n + uuid + 55E02FFC-8702-4BEF-9EF6-F2B30C100CD9 + + diff --git a/User/SCSS/Snippets/border-bottom-right-image.tmSnippet b/User/SCSS/Snippets/border-bottom-right-image.tmSnippet new file mode 100755 index 0000000..726556f --- /dev/null +++ b/User/SCSS/Snippets/border-bottom-right-image.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + border-bottom-right-image:${TM_CSS_SPACE}url($1);$0 + name + border-bottom-right-image + scope + source.css, source.scss + tabTrigger + bdbri + uuid + 7F984E4B-28B2-4038-9BFD-B95D2F19E068 + + diff --git a/User/SCSS/Snippets/border-bottom-right-radius.tmSnippet b/User/SCSS/Snippets/border-bottom-right-radius.tmSnippet new file mode 100755 index 0000000..ed3e31b --- /dev/null +++ b/User/SCSS/Snippets/border-bottom-right-radius.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + border-bottom-right-radius:${TM_CSS_SPACE}$1;$0 + name + border-bottom-right-radius + scope + source.css, source.scss + tabTrigger + bdbrrz + uuid + 15BA4ED2-103D-4978-9381-AD46328C2706 + + diff --git a/User/SCSS/Snippets/border-bottom-style%3Anone.tmSnippet b/User/SCSS/Snippets/border-bottom-style%3Anone.tmSnippet new file mode 100755 index 0000000..362dc2c --- /dev/null +++ b/User/SCSS/Snippets/border-bottom-style%3Anone.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + border-bottom-style:${TM_CSS_SPACE}none;$0 + name + border-bottom-style:none + scope + source.css, source.scss + tabTrigger + bdbs:n + uuid + 0522E9AB-523A-485B-B92D-99F6CB3AE475 + + diff --git a/User/SCSS/Snippets/border-bottom-style.tmSnippet b/User/SCSS/Snippets/border-bottom-style.tmSnippet new file mode 100755 index 0000000..fc5f887 --- /dev/null +++ b/User/SCSS/Snippets/border-bottom-style.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + border-bottom-style:${TM_CSS_SPACE}$1;$0 + name + border-bottom-style + scope + source.css, source.scss + tabTrigger + bdbs + uuid + 17635E5F-D9B5-4FD7-898F-95F6DE070B68 + + diff --git a/User/SCSS/Snippets/border-bottom-width.tmSnippet b/User/SCSS/Snippets/border-bottom-width.tmSnippet new file mode 100755 index 0000000..a703225 --- /dev/null +++ b/User/SCSS/Snippets/border-bottom-width.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + border-bottom-width:${TM_CSS_SPACE}$1;$0 + name + border-bottom-width + scope + source.css, source.scss + tabTrigger + bdbw + uuid + 871B7A4C-5497-4BE9-BB61-C6F66583325D + + diff --git a/User/SCSS/Snippets/border-collapse%3Acollapse.tmSnippet b/User/SCSS/Snippets/border-collapse%3Acollapse.tmSnippet new file mode 100755 index 0000000..47d2f50 --- /dev/null +++ b/User/SCSS/Snippets/border-collapse%3Acollapse.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + border-collapse:${TM_CSS_SPACE}collapse;$0 + name + border-collapse:collapse + scope + source.css, source.scss + tabTrigger + bdcl:c + uuid + 59C1F7A1-BEA2-4B1C-B7CC-E02B91A0EB0C + + diff --git a/User/SCSS/Snippets/border-collapse%3Aseparate.tmSnippet b/User/SCSS/Snippets/border-collapse%3Aseparate.tmSnippet new file mode 100755 index 0000000..3b4b97d --- /dev/null +++ b/User/SCSS/Snippets/border-collapse%3Aseparate.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + border-collapse:${TM_CSS_SPACE}separate;$0 + name + border-collapse:separate + scope + source.css, source.scss + tabTrigger + bdcl:s + uuid + D90CDDC9-D383-4BC6-BDE7-D6E7BF2E91F6 + + diff --git a/User/SCSS/Snippets/border-corner-image%3Acontinue.tmSnippet b/User/SCSS/Snippets/border-corner-image%3Acontinue.tmSnippet new file mode 100755 index 0000000..a144f60 --- /dev/null +++ b/User/SCSS/Snippets/border-corner-image%3Acontinue.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + border-corner-image:${TM_CSS_SPACE}continue;$0 + name + border-corner-image:continue + scope + source.css, source.scss + tabTrigger + bdci:c + uuid + 5FAE9D2A-E39C-4172-B7E9-ED15AC9B57F5 + + diff --git a/User/SCSS/Snippets/border-corner-image%3Anone.tmSnippet b/User/SCSS/Snippets/border-corner-image%3Anone.tmSnippet new file mode 100755 index 0000000..73f0619 --- /dev/null +++ b/User/SCSS/Snippets/border-corner-image%3Anone.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + border-corner-image:${TM_CSS_SPACE}none;$0 + name + border-corner-image:none + scope + source.css, source.scss + tabTrigger + bdci:n + uuid + 3EF3D53E-350B-4006-B559-DD3E38E57B0F + + diff --git a/User/SCSS/Snippets/border-corner-image.tmSnippet b/User/SCSS/Snippets/border-corner-image.tmSnippet new file mode 100755 index 0000000..684d41a --- /dev/null +++ b/User/SCSS/Snippets/border-corner-image.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + border-corner-image:${TM_CSS_SPACE}url($1);$0 + name + border-corner-image + scope + source.css, source.scss + tabTrigger + bdci + uuid + 7C4FACD9-306E-46C0-B15B-0E120B6BA820 + + diff --git a/User/SCSS/Snippets/border-fit%3Aoverflow.tmSnippet b/User/SCSS/Snippets/border-fit%3Aoverflow.tmSnippet new file mode 100755 index 0000000..ce8ee38 --- /dev/null +++ b/User/SCSS/Snippets/border-fit%3Aoverflow.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + border-fit:${TM_CSS_SPACE}overwrite;$0 + name + border-fit:overflow + scope + source.css, source.scss + tabTrigger + bdf:of + uuid + C1425DE1-C2D3-4C86-9080-807E9A7411FA + + diff --git a/User/SCSS/Snippets/border-fit%3Aoverwrite.tmSnippet b/User/SCSS/Snippets/border-fit%3Aoverwrite.tmSnippet new file mode 100755 index 0000000..2175431 --- /dev/null +++ b/User/SCSS/Snippets/border-fit%3Aoverwrite.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + border-fit:${TM_CSS_SPACE}overwrite;$0 + name + border-fit:overwrite + scope + source.css, source.scss + tabTrigger + bdf:ow + uuid + 0FBDC1AC-4193-4451-B4B7-92F8EA307BF2 + + diff --git a/User/SCSS/Snippets/border-image.tmSnippet b/User/SCSS/Snippets/border-image.tmSnippet new file mode 100755 index 0000000..732dbc3 --- /dev/null +++ b/User/SCSS/Snippets/border-image.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + border-image:${TM_CSS_SPACE}url($1) ${2:0} ${3:0} ${4:0} ${5:0} ${6:stretch} ${7:stretch};$0 + name + border-image + scope + source.css, source.scss + tabTrigger + bdi + uuid + 6F4BE275-5F96-4714-A839-EBE0B013235E + + diff --git a/User/SCSS/Snippets/border-left+.tmSnippet b/User/SCSS/Snippets/border-left+.tmSnippet new file mode 100755 index 0000000..347c5f6 --- /dev/null +++ b/User/SCSS/Snippets/border-left+.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + border-left:${TM_CSS_SPACE}${1:1px} ${2:solid} #${3:000};$0 + name + border-left+ + scope + source.css, source.scss + tabTrigger + bdl+ + uuid + 13B9F5DC-0C45-437F-BD20-F1724195C89A + + diff --git a/User/SCSS/Snippets/border-left-color.tmSnippet b/User/SCSS/Snippets/border-left-color.tmSnippet new file mode 100755 index 0000000..edc19d3 --- /dev/null +++ b/User/SCSS/Snippets/border-left-color.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + border-left-color:${TM_CSS_SPACE}#${1:000};$0 + name + border-left-color + scope + source.css, source.scss + tabTrigger + bdlc + uuid + B7D8C55C-7837-4C48-B19A-4034465821F1 + + diff --git a/User/SCSS/Snippets/border-left-image%3Anone.tmSnippet b/User/SCSS/Snippets/border-left-image%3Anone.tmSnippet new file mode 100755 index 0000000..34e134c --- /dev/null +++ b/User/SCSS/Snippets/border-left-image%3Anone.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + border-left-image:${TM_CSS_SPACE}none;$0 + name + border-left-image:none + scope + source.css, source.scss + tabTrigger + bdli:n + uuid + E93316E8-CADA-44F1-A8C5-2F6978C5B0DA + + diff --git a/User/SCSS/Snippets/border-left-image.tmSnippet b/User/SCSS/Snippets/border-left-image.tmSnippet new file mode 100755 index 0000000..5bb71a4 --- /dev/null +++ b/User/SCSS/Snippets/border-left-image.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + border-left-image:${TM_CSS_SPACE}url($1);$0 + name + border-left-image + scope + source.css, source.scss + tabTrigger + bdli + uuid + 42434F81-B974-4375-949A-B8FF8E50A732 + + diff --git a/User/SCSS/Snippets/border-left-style%3Anone.tmSnippet b/User/SCSS/Snippets/border-left-style%3Anone.tmSnippet new file mode 100755 index 0000000..bdf39d5 --- /dev/null +++ b/User/SCSS/Snippets/border-left-style%3Anone.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + border-left-style:${TM_CSS_SPACE}none;$0 + name + border-left-style:none + scope + source.css, source.scss + tabTrigger + bdls:n + uuid + E7E95DAE-17AA-4F14-8B43-E91EE65B6A28 + + diff --git a/User/SCSS/Snippets/border-right+.tmSnippet b/User/SCSS/Snippets/border-right+.tmSnippet new file mode 100755 index 0000000..4d7f347 --- /dev/null +++ b/User/SCSS/Snippets/border-right+.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + border-right:${TM_CSS_SPACE}${1:1px} ${2:solid} #${3:000};$0 + name + border-right+ + scope + source.css, source.scss + tabTrigger + bdr+ + uuid + ACA282D8-4DB5-4D21-AFAE-5FD40C53CF52 + + diff --git a/User/SCSS/Snippets/border-right-color.tmSnippet b/User/SCSS/Snippets/border-right-color.tmSnippet new file mode 100755 index 0000000..f94a287 --- /dev/null +++ b/User/SCSS/Snippets/border-right-color.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + border-right-color:${TM_CSS_SPACE}#${1:000};$0 + name + border-right-color + scope + source.css, source.scss + tabTrigger + bdrc + uuid + 86D84DC4-5E95-44F3-921E-06F2E1C19B7A + + diff --git a/User/SCSS/Snippets/border-right-image%3Anone.tmSnippet b/User/SCSS/Snippets/border-right-image%3Anone.tmSnippet new file mode 100755 index 0000000..76e80a0 --- /dev/null +++ b/User/SCSS/Snippets/border-right-image%3Anone.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + border-right-image:${TM_CSS_SPACE}none;$0 + name + border-right-image:none + scope + source.css, source.scss + tabTrigger + bdri:n + uuid + A951CB75-1561-48DE-9AAD-550339451F18 + + diff --git a/User/SCSS/Snippets/border-right-image.tmSnippet b/User/SCSS/Snippets/border-right-image.tmSnippet new file mode 100755 index 0000000..0223700 --- /dev/null +++ b/User/SCSS/Snippets/border-right-image.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + border-right-image:${TM_CSS_SPACE}url($1);$0 + name + border-right-image + scope + source.css, source.scss + tabTrigger + bdri + uuid + 65782175-A5A6-4D50-B4A2-6D991BB11C1C + + diff --git a/User/SCSS/Snippets/border-right-style%3Anone.tmSnippet b/User/SCSS/Snippets/border-right-style%3Anone.tmSnippet new file mode 100755 index 0000000..3934bf3 --- /dev/null +++ b/User/SCSS/Snippets/border-right-style%3Anone.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + border-right-style:${TM_CSS_SPACE}none;$0 + name + border-right-style:none + scope + source.css, source.scss + tabTrigger + bdrs:n + uuid + 2BFBFF22-14F8-4291-B8F6-259F5D7CDCF3 + + diff --git a/User/SCSS/Snippets/border-style%3Adashed.tmSnippet b/User/SCSS/Snippets/border-style%3Adashed.tmSnippet new file mode 100755 index 0000000..dde9f60 --- /dev/null +++ b/User/SCSS/Snippets/border-style%3Adashed.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + border-style:${TM_CSS_SPACE}dashed;$0 + name + border-style:dashed + scope + source.css, source.scss + tabTrigger + bds:ds + uuid + 2675AC70-8EDE-4E67-B1C8-033842F09AA5 + + diff --git a/User/SCSS/Snippets/border-style%3Adot-dash.tmSnippet b/User/SCSS/Snippets/border-style%3Adot-dash.tmSnippet new file mode 100755 index 0000000..d0ba81b --- /dev/null +++ b/User/SCSS/Snippets/border-style%3Adot-dash.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + border-style:${TM_CSS_SPACE}dot-dash;$0 + name + border-style:dot-dash + scope + source.css, source.scss + tabTrigger + bds:dtds + uuid + E9B94D8C-C469-4213-80FF-B7E53A3BA842 + + diff --git a/User/SCSS/Snippets/border-style%3Adot-dot-dash.tmSnippet b/User/SCSS/Snippets/border-style%3Adot-dot-dash.tmSnippet new file mode 100755 index 0000000..cae4c26 --- /dev/null +++ b/User/SCSS/Snippets/border-style%3Adot-dot-dash.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + border-style:${TM_CSS_SPACE}dot-dot-dash;$0 + name + border-style:dot-dot-dash + scope + source.css, source.scss + tabTrigger + bds:dtdtds + uuid + 068F33EE-E951-4063-889B-F07AB81A2395 + + diff --git a/User/SCSS/Snippets/border-style%3Adotted.tmSnippet b/User/SCSS/Snippets/border-style%3Adotted.tmSnippet new file mode 100755 index 0000000..16d54c4 --- /dev/null +++ b/User/SCSS/Snippets/border-style%3Adotted.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + border-style:${TM_CSS_SPACE}dotted;$0 + name + border-style:dotted + scope + source.css, source.scss + tabTrigger + bds:dt + uuid + 56EB08FB-AE75-463D-8A50-4E538ED8707F + + diff --git a/User/SCSS/Snippets/border-style%3Adouble.tmSnippet b/User/SCSS/Snippets/border-style%3Adouble.tmSnippet new file mode 100755 index 0000000..df43654 --- /dev/null +++ b/User/SCSS/Snippets/border-style%3Adouble.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + border-style:${TM_CSS_SPACE}double;$0 + name + border-style:double + scope + source.css, source.scss + tabTrigger + bds:db + uuid + 252AEF9F-1950-41EA-9B2B-D8A50F8D6C06 + + diff --git a/User/SCSS/Snippets/border-top+.tmSnippet b/User/SCSS/Snippets/border-top+.tmSnippet new file mode 100755 index 0000000..2814ee3 --- /dev/null +++ b/User/SCSS/Snippets/border-top+.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + border-top:${TM_CSS_SPACE}${1:1px} ${2:solid} #${3:000};$0 + name + border-top+ + scope + source.css, source.scss + tabTrigger + bdt+ + uuid + 947092A4-8C96-463B-8719-92E7533C23C6 + + diff --git a/User/SCSS/Snippets/border-top-color.tmSnippet b/User/SCSS/Snippets/border-top-color.tmSnippet new file mode 100755 index 0000000..98c41e1 --- /dev/null +++ b/User/SCSS/Snippets/border-top-color.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + border-top-color:${TM_CSS_SPACE}#${1:000};$0 + name + border-top-color + scope + source.css, source.scss + tabTrigger + bdtc + uuid + D6CFB5F7-FE22-444F-8AA0-20FA2EC2169E + + diff --git a/User/SCSS/Snippets/border-top-image%3Anone.tmSnippet b/User/SCSS/Snippets/border-top-image%3Anone.tmSnippet new file mode 100755 index 0000000..5672470 --- /dev/null +++ b/User/SCSS/Snippets/border-top-image%3Anone.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + border-top-image:${TM_CSS_SPACE}none;$0 + name + border-top-image:none + scope + source.css, source.scss + tabTrigger + bdti:n + uuid + 4961A72F-157B-447E-ABDD-C5941E72A5CB + + diff --git a/User/SCSS/Snippets/border-top-image.tmSnippet b/User/SCSS/Snippets/border-top-image.tmSnippet new file mode 100755 index 0000000..44e77d7 --- /dev/null +++ b/User/SCSS/Snippets/border-top-image.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + border-top-image:${TM_CSS_SPACE}url($1);$0 + name + border-top-image + scope + source.css, source.scss + tabTrigger + bdti + uuid + 1905AA99-D3ED-49E7-919C-D65BB3C2039E + + diff --git a/User/SCSS/Snippets/border-top-left-image%3Acontinue.tmSnippet b/User/SCSS/Snippets/border-top-left-image%3Acontinue.tmSnippet new file mode 100755 index 0000000..3133832 --- /dev/null +++ b/User/SCSS/Snippets/border-top-left-image%3Acontinue.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + border-corner-image:${TM_CSS_SPACE}continue;$0 + name + border-top-left-image:continue + scope + source.css, source.scss + tabTrigger + bdtli:c + uuid + A9CE5172-06B9-4A1A-86D7-D4E0C9C122FA + + diff --git a/User/SCSS/Snippets/border-top-left-image%3Anone.tmSnippet b/User/SCSS/Snippets/border-top-left-image%3Anone.tmSnippet new file mode 100755 index 0000000..ca31180 --- /dev/null +++ b/User/SCSS/Snippets/border-top-left-image%3Anone.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + border-corner-image:${TM_CSS_SPACE}none;$0 + name + border-top-left-image:none + scope + source.css, source.scss + tabTrigger + bdtli:n + uuid + 26B1FCE9-4E69-4553-8EE7-1C9E85700FC9 + + diff --git a/User/SCSS/Snippets/border-top-left-image.tmSnippet b/User/SCSS/Snippets/border-top-left-image.tmSnippet new file mode 100755 index 0000000..13abc40 --- /dev/null +++ b/User/SCSS/Snippets/border-top-left-image.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + border-top-left-image:${TM_CSS_SPACE}url($1);$0 + name + border-top-left-image + scope + source.css, source.scss + tabTrigger + bdtli + uuid + 997A65FF-134E-47F4-BE7F-43EB314B82C5 + + diff --git a/User/SCSS/Snippets/border-top-left-radius.tmSnippet b/User/SCSS/Snippets/border-top-left-radius.tmSnippet new file mode 100755 index 0000000..6c33d54 --- /dev/null +++ b/User/SCSS/Snippets/border-top-left-radius.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + border-top-left-radius:${TM_CSS_SPACE}$1;$0 + name + border-top-left-radius + scope + source.css, source.scss + tabTrigger + bdtlrz + uuid + 91FF13E9-BC46-4385-A9BD-C176B4278C96 + + diff --git a/User/SCSS/Snippets/border-top-right-image%3Acontinue.tmSnippet b/User/SCSS/Snippets/border-top-right-image%3Acontinue.tmSnippet new file mode 100755 index 0000000..21f21b7 --- /dev/null +++ b/User/SCSS/Snippets/border-top-right-image%3Acontinue.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + border-top-right-image:${TM_CSS_SPACE}continue;$0 + name + border-top-right-image:continue + scope + source.css, source.scss + tabTrigger + bdtri:c + uuid + D10808DC-629B-424E-B803-15FBDC742C8D + + diff --git a/User/SCSS/Snippets/border-top-right-image%3Anone.tmSnippet b/User/SCSS/Snippets/border-top-right-image%3Anone.tmSnippet new file mode 100755 index 0000000..ec549ba --- /dev/null +++ b/User/SCSS/Snippets/border-top-right-image%3Anone.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + border-top-right-image:${TM_CSS_SPACE}none;$0 + name + border-top-right-image:none + scope + source.css, source.scss + tabTrigger + bdtri:n + uuid + 5AE2194E-C5AB-455B-BA01-B3A2847B0CA0 + + diff --git a/User/SCSS/Snippets/border-top-right-image.tmSnippet b/User/SCSS/Snippets/border-top-right-image.tmSnippet new file mode 100755 index 0000000..3c4f4ad --- /dev/null +++ b/User/SCSS/Snippets/border-top-right-image.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + border-top-right-image:${TM_CSS_SPACE}url($1);$0 + name + border-top-right-image + scope + source.css, source.scss + tabTrigger + bdtri + uuid + 9B9E2B4C-3176-4BC3-A59A-9B71EBD583DF + + diff --git a/User/SCSS/Snippets/border-top-right-radius.tmSnippet b/User/SCSS/Snippets/border-top-right-radius.tmSnippet new file mode 100755 index 0000000..1f590b8 --- /dev/null +++ b/User/SCSS/Snippets/border-top-right-radius.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + border-top-right-radius:${TM_CSS_SPACE}$1;$0 + name + border-top-right-radius + scope + source.css, source.scss + tabTrigger + bdtrrz + uuid + 7E7A8BFF-D31E-4275-8206-FC4C3C969069 + + diff --git a/User/SCSS/Snippets/border-top-style%3Anone.tmSnippet b/User/SCSS/Snippets/border-top-style%3Anone.tmSnippet new file mode 100755 index 0000000..14863fd --- /dev/null +++ b/User/SCSS/Snippets/border-top-style%3Anone.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + border-top-style:${TM_CSS_SPACE}none;$0 + name + border-top-style:none + scope + source.css, source.scss + tabTrigger + bdts:n + uuid + 5DB7572B-63EB-48D4-85EE-653DA09BB9B5 + + diff --git a/User/SCSS/Snippets/box-shadow+.tmSnippet b/User/SCSS/Snippets/box-shadow+.tmSnippet new file mode 100755 index 0000000..55f1a7e --- /dev/null +++ b/User/SCSS/Snippets/box-shadow+.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + box-shadow:${TM_CSS_SPACE}${1:0} ${2:0} ${3:0} #${4:000};$0 + name + box-shadow+ + scope + source.css, source.scss + tabTrigger + bxsh+ + uuid + EE06A1BD-A2E8-44F8-97E9-C908476852DB + + diff --git a/User/SCSS/Snippets/box-sizing%3Aborder-box.tmSnippet b/User/SCSS/Snippets/box-sizing%3Aborder-box.tmSnippet new file mode 100755 index 0000000..7a02359 --- /dev/null +++ b/User/SCSS/Snippets/box-sizing%3Aborder-box.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + box-sizing:${TM_CSS_SPACE}border-box;$0 + name + box-sizing:border-box + scope + source.css, source.scss + tabTrigger + bxz:bb + uuid + BEC01D19-0481-4CC7-B7C9-C434307BF08C + + diff --git a/User/SCSS/Snippets/box-sizing%3Acontent-box.tmSnippet b/User/SCSS/Snippets/box-sizing%3Acontent-box.tmSnippet new file mode 100755 index 0000000..0a63bd6 --- /dev/null +++ b/User/SCSS/Snippets/box-sizing%3Acontent-box.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + box-sizing:${TM_CSS_SPACE}content-box;$0 + name + box-sizing:content-box + scope + source.css, source.scss + tabTrigger + bxz:cb + uuid + 617A37F8-7B73-4D3E-B696-5CED16579DD6 + + diff --git a/User/SCSS/Snippets/caption-side%3Abottom.tmSnippet b/User/SCSS/Snippets/caption-side%3Abottom.tmSnippet new file mode 100755 index 0000000..6379712 --- /dev/null +++ b/User/SCSS/Snippets/caption-side%3Abottom.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + caption-side:${TM_CSS_SPACE}bottom;$0 + name + caption-side:bottom + scope + source.css, source.scss + tabTrigger + cps:b + uuid + 61BDCF03-9EA3-4DA6-B170-138EB76BDC93 + + diff --git a/User/SCSS/Snippets/clip%3Arect().tmSnippet b/User/SCSS/Snippets/clip%3Arect().tmSnippet new file mode 100755 index 0000000..3e9554d --- /dev/null +++ b/User/SCSS/Snippets/clip%3Arect().tmSnippet @@ -0,0 +1,16 @@ + + + + + content + clip:${TM_CSS_SPACE}rect(${1:0} ${2:0} ${3:0} ${4:0});$0 + name + clip:rect() + scope + source.css, source.scss + tabTrigger + cp:r + uuid + CFD04A6C-9906-4A58-A07C-B892C3764260 + + diff --git a/User/SCSS/Snippets/content%3Ano-close-quote.tmSnippet b/User/SCSS/Snippets/content%3Ano-close-quote.tmSnippet new file mode 100755 index 0000000..cdf2a9a --- /dev/null +++ b/User/SCSS/Snippets/content%3Ano-close-quote.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + content:${TM_CSS_SPACE}no-close-quote;$0 + name + content:no-close-quote + scope + source.css, source.scss + tabTrigger + ct:ncq + uuid + 9B1868B5-DE53-40DB-8E66-0FC00E0B63B4 + + diff --git a/User/SCSS/Snippets/content%3Ano-open-quote.tmSnippet b/User/SCSS/Snippets/content%3Ano-open-quote.tmSnippet new file mode 100755 index 0000000..d0912b6 --- /dev/null +++ b/User/SCSS/Snippets/content%3Ano-open-quote.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + content:${TM_CSS_SPACE}no-open-quote;$0 + name + content:no-open-quote + scope + source.css, source.scss + tabTrigger + ct:noq + uuid + B62F1D64-0982-4677-A0F7-23CEC8EF430A + + diff --git a/User/SCSS/Snippets/display%3A-moz-inline-box.tmSnippet b/User/SCSS/Snippets/display%3A-moz-inline-box.tmSnippet new file mode 100755 index 0000000..f44b3db --- /dev/null +++ b/User/SCSS/Snippets/display%3A-moz-inline-box.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + display:${TM_CSS_SPACE}-moz-inline-box;$0 + name + display:-moz-inline-box + scope + source.css, source.scss + tabTrigger + d:mib + uuid + 8242DE25-5D51-41E9-877D-6D0DE657202E + + diff --git a/User/SCSS/Snippets/display%3A-moz-inline-stack.tmSnippet b/User/SCSS/Snippets/display%3A-moz-inline-stack.tmSnippet new file mode 100755 index 0000000..041a171 --- /dev/null +++ b/User/SCSS/Snippets/display%3A-moz-inline-stack.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + display:${TM_CSS_SPACE}-moz-inline-stack;$0 + name + display:-moz-inline-stack + scope + source.css, source.scss + tabTrigger + d:mis + uuid + 008E95E4-ADDC-40F5-8B46-C1D5AD105678 + + diff --git a/User/SCSS/Snippets/display%3Ainline-block.tmSnippet b/User/SCSS/Snippets/display%3Ainline-block.tmSnippet new file mode 100755 index 0000000..db32cac --- /dev/null +++ b/User/SCSS/Snippets/display%3Ainline-block.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + display:${TM_CSS_SPACE}inline-block;$0 + name + display:inline-block + scope + source.css, source.scss + tabTrigger + d:ib + uuid + 110AD6B9-6695-4CE4-BC0A-5A3CC5FEF4D2 + + diff --git a/User/SCSS/Snippets/display%3Ainline-table.tmSnippet b/User/SCSS/Snippets/display%3Ainline-table.tmSnippet new file mode 100755 index 0000000..074e220 --- /dev/null +++ b/User/SCSS/Snippets/display%3Ainline-table.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + display:${TM_CSS_SPACE}inline-table;$0 + name + display:inline-table + scope + source.css, source.scss + tabTrigger + d:itb + uuid + F8823F0C-0D10-4F03-B033-725A0333B75A + + diff --git a/User/SCSS/Snippets/display%3Atable-caption.tmSnippet b/User/SCSS/Snippets/display%3Atable-caption.tmSnippet new file mode 100755 index 0000000..3598e3e --- /dev/null +++ b/User/SCSS/Snippets/display%3Atable-caption.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + display:${TM_CSS_SPACE}table-caption;$0 + name + display:table-caption + scope + source.css, source.scss + tabTrigger + d:tbcp + uuid + F1679D5B-2E10-4002-B8EB-6CC785E1699E + + diff --git a/User/SCSS/Snippets/display%3Atable-column-group.tmSnippet b/User/SCSS/Snippets/display%3Atable-column-group.tmSnippet new file mode 100755 index 0000000..7e860f1 --- /dev/null +++ b/User/SCSS/Snippets/display%3Atable-column-group.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + display:${TM_CSS_SPACE}table-column-group;$0 + name + display:table-column-group + scope + source.css, source.scss + tabTrigger + d:tbclg + uuid + 5977C622-D5C0-4184-99C9-87A1F9C18064 + + diff --git a/User/SCSS/Snippets/display%3Atable-column.tmSnippet b/User/SCSS/Snippets/display%3Atable-column.tmSnippet new file mode 100755 index 0000000..fefe730 --- /dev/null +++ b/User/SCSS/Snippets/display%3Atable-column.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + display:${TM_CSS_SPACE}table-column;$0 + name + display:table-column + scope + source.css, source.scss + tabTrigger + d:tbcl + uuid + 7D4E11CC-C219-4A08-9315-7841F6A2AB37 + + diff --git a/User/SCSS/Snippets/display%3Atable-footer-group.tmSnippet b/User/SCSS/Snippets/display%3Atable-footer-group.tmSnippet new file mode 100755 index 0000000..3db0384 --- /dev/null +++ b/User/SCSS/Snippets/display%3Atable-footer-group.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + display:${TM_CSS_SPACE}table-footer-group;$0 + name + display:table-footer-group + scope + source.css, source.scss + tabTrigger + d:tbfg + uuid + 7CE9B2C2-2590-41D1-8BA8-617657655A24 + + diff --git a/User/SCSS/Snippets/display%3Atable-header-group.tmSnippet b/User/SCSS/Snippets/display%3Atable-header-group.tmSnippet new file mode 100755 index 0000000..3c78bc6 --- /dev/null +++ b/User/SCSS/Snippets/display%3Atable-header-group.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + display:${TM_CSS_SPACE}table-header-group;$0 + name + display:table-header-group + scope + source.css, source.scss + tabTrigger + d:tbhg + uuid + 9FB489E4-2669-4A14-AA70-6C4C5EE1BED4 + + diff --git a/User/SCSS/Snippets/display%3Atable-row-group.tmSnippet b/User/SCSS/Snippets/display%3Atable-row-group.tmSnippet new file mode 100755 index 0000000..ff2ffdf --- /dev/null +++ b/User/SCSS/Snippets/display%3Atable-row-group.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + display:${TM_CSS_SPACE}table-row-group;$0 + name + display:table-row-group + scope + source.css, source.scss + tabTrigger + d:tbrg + uuid + 945488C4-EF15-48E2-A127-9E1541934AAF + + diff --git a/User/SCSS/Snippets/font+.tmSnippet b/User/SCSS/Snippets/font+.tmSnippet new file mode 100755 index 0000000..c2fb702 --- /dev/null +++ b/User/SCSS/Snippets/font+.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + font:${TM_CSS_SPACE}${1:1em} ${2:Arial},${3:sans-serif};$0 + name + font+ + scope + source.css, source.scss + tabTrigger + f+ + uuid + 00278E21-9440-47F9-883C-E9F2A1F41610 + + diff --git a/User/SCSS/Snippets/font-effect%3Aengrave.tmSnippet b/User/SCSS/Snippets/font-effect%3Aengrave.tmSnippet new file mode 100755 index 0000000..d48c839 --- /dev/null +++ b/User/SCSS/Snippets/font-effect%3Aengrave.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + font-effect:${TM_CSS_SPACE}engrave;$0 + name + font-effect:engrave + scope + source.css, source.scss + tabTrigger + fef:eg + uuid + 06361C22-61D0-454C-A4FF-ACDDCCD642B0 + + diff --git a/User/SCSS/Snippets/font-emphasize-position%3Aafter.tmSnippet b/User/SCSS/Snippets/font-emphasize-position%3Aafter.tmSnippet new file mode 100755 index 0000000..2afc9b6 --- /dev/null +++ b/User/SCSS/Snippets/font-emphasize-position%3Aafter.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + font-emphasize-position:${TM_CSS_SPACE}after;$0 + name + font-emphasize-position:after + scope + source.css, source.scss + tabTrigger + femp:a + uuid + B6CB3D10-30E1-4133-96F3-CBF65DBA112E + + diff --git a/User/SCSS/Snippets/font-emphasize-position%3Abefore.tmSnippet b/User/SCSS/Snippets/font-emphasize-position%3Abefore.tmSnippet new file mode 100755 index 0000000..c7f1f9f --- /dev/null +++ b/User/SCSS/Snippets/font-emphasize-position%3Abefore.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + font-emphasize-position:${TM_CSS_SPACE}before;$0 + name + font-emphasize-position:before + scope + source.css, source.scss + tabTrigger + femp:b + uuid + F47E9324-3385-417E-9CB5-C155F99183E4 + + diff --git a/User/SCSS/Snippets/font-emphasize-position.tmSnippet b/User/SCSS/Snippets/font-emphasize-position.tmSnippet new file mode 100755 index 0000000..4930c4e --- /dev/null +++ b/User/SCSS/Snippets/font-emphasize-position.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + font-emphasize-position:${TM_CSS_SPACE}$1;$0 + name + font-emphasize-position + scope + source.css, source.scss + tabTrigger + femp + uuid + 50B83814-1200-481B-A339-02EA843B290A + + diff --git a/User/SCSS/Snippets/font-emphasize-style%3Aaccent.tmSnippet b/User/SCSS/Snippets/font-emphasize-style%3Aaccent.tmSnippet new file mode 100755 index 0000000..05c875c --- /dev/null +++ b/User/SCSS/Snippets/font-emphasize-style%3Aaccent.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + font-emphasize-style:${TM_CSS_SPACE}accent;$0 + name + font-emphasize-style:accent + scope + source.css, source.scss + tabTrigger + fems:ac + uuid + 7DDA0B4E-82FC-4A85-89B9-014ABB28DF91 + + diff --git a/User/SCSS/Snippets/font-emphasize-style%3Acircle.tmSnippet b/User/SCSS/Snippets/font-emphasize-style%3Acircle.tmSnippet new file mode 100755 index 0000000..cd3a6cc --- /dev/null +++ b/User/SCSS/Snippets/font-emphasize-style%3Acircle.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + font-emphasize-style:${TM_CSS_SPACE}circle;$0 + name + font-emphasize-style:circle + scope + source.css, source.scss + tabTrigger + fems:c + uuid + FF33F889-F47A-4A8B-968B-CADE5AA58186 + + diff --git a/User/SCSS/Snippets/font-emphasize-style%3Adisc.tmSnippet b/User/SCSS/Snippets/font-emphasize-style%3Adisc.tmSnippet new file mode 100755 index 0000000..24b09b7 --- /dev/null +++ b/User/SCSS/Snippets/font-emphasize-style%3Adisc.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + font-emphasize-style:${TM_CSS_SPACE}disc;$0 + name + font-emphasize-style:disc + scope + source.css, source.scss + tabTrigger + fems:ds + uuid + 8EC23DD2-0290-4CEA-95BB-02BBC8DC0372 + + diff --git a/User/SCSS/Snippets/font-emphasize-style%3Adot.tmSnippet b/User/SCSS/Snippets/font-emphasize-style%3Adot.tmSnippet new file mode 100755 index 0000000..7db5cd2 --- /dev/null +++ b/User/SCSS/Snippets/font-emphasize-style%3Adot.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + font-emphasize-style:${TM_CSS_SPACE}dot;$0 + name + font-emphasize-style:dot + scope + source.css, source.scss + tabTrigger + fems:dt + uuid + 0CC8830C-74CC-4A1A-A450-434B0140BB60 + + diff --git a/User/SCSS/Snippets/font-emphasize-style%3Anone.tmSnippet b/User/SCSS/Snippets/font-emphasize-style%3Anone.tmSnippet new file mode 100755 index 0000000..ccb6feb --- /dev/null +++ b/User/SCSS/Snippets/font-emphasize-style%3Anone.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + font-emphasize-style:${TM_CSS_SPACE}none;$0 + name + font-emphasize-style:none + scope + source.css, source.scss + tabTrigger + fems:n + uuid + 860791BA-ABCF-499D-811F-2760172C1FC2 + + diff --git a/User/SCSS/Snippets/font-emphasize-style.tmSnippet b/User/SCSS/Snippets/font-emphasize-style.tmSnippet new file mode 100755 index 0000000..446885b --- /dev/null +++ b/User/SCSS/Snippets/font-emphasize-style.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + font-emphasize-style:${TM_CSS_SPACE}$1;$0 + name + font-emphasize-style + scope + source.css, source.scss + tabTrigger + fems + uuid + 79EB013B-5F4D-4E77-8E78-07C1099230E7 + + diff --git a/User/SCSS/Snippets/font-family%3Acursive.tmSnippet b/User/SCSS/Snippets/font-family%3Acursive.tmSnippet new file mode 100755 index 0000000..d75d53d --- /dev/null +++ b/User/SCSS/Snippets/font-family%3Acursive.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + font-family:${TM_CSS_SPACE}${1:'Monotype Corsiva','Comic Sans MS'},cursive;$0 + name + font-family:cursive + scope + source.css, source.scss + tabTrigger + ff:c + uuid + B19D5E9D-16B6-44E4-B6D9-2044AF64FDA8 + + diff --git a/User/SCSS/Snippets/font-family%3Afantasy.tmSnippet b/User/SCSS/Snippets/font-family%3Afantasy.tmSnippet new file mode 100755 index 0000000..5c7c84e --- /dev/null +++ b/User/SCSS/Snippets/font-family%3Afantasy.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + font-family:${TM_CSS_SPACE}${1:Capitals,Impact},fantasy;$0 + name + font-family:fantasy + scope + source.css, source.scss + tabTrigger + ff:f + uuid + A3335EB0-8DD6-41BE-90A3-7A5D2C70E237 + + diff --git a/User/SCSS/Snippets/font-family%3Amonospace.tmSnippet b/User/SCSS/Snippets/font-family%3Amonospace.tmSnippet new file mode 100755 index 0000000..9cc4a76 --- /dev/null +++ b/User/SCSS/Snippets/font-family%3Amonospace.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + font-family:${TM_CSS_SPACE}${1:Monaco,'Courier New'},monospace;$0 + name + font-family:monospace + scope + source.css, source.scss + tabTrigger + ff:m + uuid + E3B4B2B8-B3F4-4E38-A6DB-559547E6DD4F + + diff --git a/User/SCSS/Snippets/font-family%3Asans-serif.tmSnippet b/User/SCSS/Snippets/font-family%3Asans-serif.tmSnippet new file mode 100755 index 0000000..cec39e9 --- /dev/null +++ b/User/SCSS/Snippets/font-family%3Asans-serif.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + font-family:${TM_CSS_SPACE}${1:Helvetica,Arial},sans-serif;$0 + name + font-family:sans-serif + scope + source.css, source.scss + tabTrigger + ff:ss + uuid + D4319F71-EC21-43DB-8913-E0C435A5D023 + + diff --git a/User/SCSS/Snippets/font-family%3Aserif.tmSnippet b/User/SCSS/Snippets/font-family%3Aserif.tmSnippet new file mode 100755 index 0000000..5e417a0 --- /dev/null +++ b/User/SCSS/Snippets/font-family%3Aserif.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + font-family:${TM_CSS_SPACE}${1:Georgia,'Times New Roman'},serif;$0 + name + font-family:serif + scope + source.css, source.scss + tabTrigger + ff:s + uuid + 7C4ACC8A-C73D-4F44-8535-DC087D6956F7 + + diff --git a/User/SCSS/Snippets/font-size-adjust%3Anone.tmSnippet b/User/SCSS/Snippets/font-size-adjust%3Anone.tmSnippet new file mode 100755 index 0000000..d0c8113 --- /dev/null +++ b/User/SCSS/Snippets/font-size-adjust%3Anone.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + font-size-adjust:${TM_CSS_SPACE}none;$0 + name + font-size-adjust:none + scope + source.css, source.scss + tabTrigger + fza:n + uuid + 07067949-F14B-4CB2-BF02-E409303E1E6D + + diff --git a/User/SCSS/Snippets/font-stretch%3Acondensed.tmSnippet b/User/SCSS/Snippets/font-stretch%3Acondensed.tmSnippet new file mode 100755 index 0000000..62ee9da --- /dev/null +++ b/User/SCSS/Snippets/font-stretch%3Acondensed.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + font-stretch:${TM_CSS_SPACE}condensed;$0 + name + font-stretch:condensed + scope + source.css, source.scss + tabTrigger + fst:c + uuid + 933644F2-F015-46A5-9D5F-001B4E7C9AD8 + + diff --git a/User/SCSS/Snippets/font-stretch%3Aexpanded.tmSnippet b/User/SCSS/Snippets/font-stretch%3Aexpanded.tmSnippet new file mode 100755 index 0000000..3b40800 --- /dev/null +++ b/User/SCSS/Snippets/font-stretch%3Aexpanded.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + font-stretch:${TM_CSS_SPACE}expanded;$0 + name + font-stretch:expanded + scope + source.css, source.scss + tabTrigger + fst:e + uuid + 321A7541-2901-4497-85C5-C6437E149FB3 + + diff --git a/User/SCSS/Snippets/font-stretch%3Aextra-condensed.tmSnippet b/User/SCSS/Snippets/font-stretch%3Aextra-condensed.tmSnippet new file mode 100755 index 0000000..f02fe17 --- /dev/null +++ b/User/SCSS/Snippets/font-stretch%3Aextra-condensed.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + font-stretch:${TM_CSS_SPACE}extra-condensed;$0 + name + font-stretch:extra-condensed + scope + source.css, source.scss + tabTrigger + fst:ec + uuid + 64658104-0F9F-4E30-9289-27898637B5A6 + + diff --git a/User/SCSS/Snippets/font-stretch%3Aextra-expanded.tmSnippet b/User/SCSS/Snippets/font-stretch%3Aextra-expanded.tmSnippet new file mode 100755 index 0000000..e14e57e --- /dev/null +++ b/User/SCSS/Snippets/font-stretch%3Aextra-expanded.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + font-stretch:${TM_CSS_SPACE}extra-expanded;$0 + name + font-stretch:extra-expanded + scope + source.css, source.scss + tabTrigger + fst:ee + uuid + 843559AD-C604-4137-8AFC-0770B77C31A3 + + diff --git a/User/SCSS/Snippets/font-stretch%3Asemi-condensed.tmSnippet b/User/SCSS/Snippets/font-stretch%3Asemi-condensed.tmSnippet new file mode 100755 index 0000000..5dd3778 --- /dev/null +++ b/User/SCSS/Snippets/font-stretch%3Asemi-condensed.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + font-stretch:${TM_CSS_SPACE}semi-condensed;$0 + name + font-stretch:semi-condensed + scope + source.css, source.scss + tabTrigger + fst:sc + uuid + 1A08030F-74AE-400F-A241-6C5CB0BF498E + + diff --git a/User/SCSS/Snippets/font-stretch%3Asemi-expanded.tmSnippet b/User/SCSS/Snippets/font-stretch%3Asemi-expanded.tmSnippet new file mode 100755 index 0000000..0408930 --- /dev/null +++ b/User/SCSS/Snippets/font-stretch%3Asemi-expanded.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + font-stretch:${TM_CSS_SPACE}semi-expanded;$0 + name + font-stretch:semi-expanded + scope + source.css, source.scss + tabTrigger + fst:se + uuid + 9213B7DF-39B9-4BDF-A918-8B580D3C3936 + + diff --git a/User/SCSS/Snippets/font-stretch%3Aultra-condensed.tmSnippet b/User/SCSS/Snippets/font-stretch%3Aultra-condensed.tmSnippet new file mode 100755 index 0000000..6ea2124 --- /dev/null +++ b/User/SCSS/Snippets/font-stretch%3Aultra-condensed.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + font-stretch:${TM_CSS_SPACE}ultra-condensed;$0 + name + font-stretch:ultra-condensed + scope + source.css, source.scss + tabTrigger + fst:uc + uuid + 3B5561E5-6280-4B83-A19B-788853B4279A + + diff --git a/User/SCSS/Snippets/font-stretch%3Aultra-expanded.tmSnippet b/User/SCSS/Snippets/font-stretch%3Aultra-expanded.tmSnippet new file mode 100755 index 0000000..8bbec3b --- /dev/null +++ b/User/SCSS/Snippets/font-stretch%3Aultra-expanded.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + font-stretch:${TM_CSS_SPACE}ultra-expanded;$0 + name + font-stretch:ultra-expanded + scope + source.css, source.scss + tabTrigger + fst:ue + uuid + 05F84740-7FF7-438C-9E55-6AD30C1EC2F8 + + diff --git a/User/SCSS/Snippets/font-variant%3Asmall-caps.tmSnippet b/User/SCSS/Snippets/font-variant%3Asmall-caps.tmSnippet new file mode 100755 index 0000000..67bbefb --- /dev/null +++ b/User/SCSS/Snippets/font-variant%3Asmall-caps.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + font-variant:${TM_CSS_SPACE}small-caps;$0 + name + font-variant:small-caps + scope + source.css, source.scss + tabTrigger + fv:sc + uuid + 6D8D0515-DAB2-45F9-A19A-479D0DC6503B + + diff --git a/User/SCSS/Snippets/list-style-image%3Anone.tmSnippet b/User/SCSS/Snippets/list-style-image%3Anone.tmSnippet new file mode 100755 index 0000000..7dc2160 --- /dev/null +++ b/User/SCSS/Snippets/list-style-image%3Anone.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + list-style-image:${TM_CSS_SPACE}none;$0 + name + list-style-image:none + scope + source.css, source.scss + tabTrigger + lisi:n + uuid + 54C382CC-F506-4764-A2A5-8CA399BAFD39 + + diff --git a/User/SCSS/Snippets/list-style-image.tmSnippet b/User/SCSS/Snippets/list-style-image.tmSnippet new file mode 100755 index 0000000..4172ca8 --- /dev/null +++ b/User/SCSS/Snippets/list-style-image.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + list-style-image:${TM_CSS_SPACE}url($1);$0 + name + list-style-image + scope + source.css, source.scss + tabTrigger + lisi + uuid + EB1BC55F-46B6-4A28-8334-98B68EF14393 + + diff --git a/User/SCSS/Snippets/list-style-position%3Ainside.tmSnippet b/User/SCSS/Snippets/list-style-position%3Ainside.tmSnippet new file mode 100755 index 0000000..8fa644d --- /dev/null +++ b/User/SCSS/Snippets/list-style-position%3Ainside.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + list-style-position:${TM_CSS_SPACE}inside;$0 + name + list-style-position:inside + scope + source.css, source.scss + tabTrigger + lisp:i + uuid + 41DE281C-C068-48C1-BC59-EE0E469296D9 + + diff --git a/User/SCSS/Snippets/list-style-position%3Aoutside.tmSnippet b/User/SCSS/Snippets/list-style-position%3Aoutside.tmSnippet new file mode 100755 index 0000000..41e3939 --- /dev/null +++ b/User/SCSS/Snippets/list-style-position%3Aoutside.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + list-style-position:${TM_CSS_SPACE}outside;$0 + name + list-style-position:outside + scope + source.css, source.scss + tabTrigger + lisp:o + uuid + 97390FA1-66BC-4758-81C0-59D7C0FCE8EF + + diff --git a/User/SCSS/Snippets/list-style-position.tmSnippet b/User/SCSS/Snippets/list-style-position.tmSnippet new file mode 100755 index 0000000..81e0df6 --- /dev/null +++ b/User/SCSS/Snippets/list-style-position.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + list-style-position:${TM_CSS_SPACE}$1;$0 + name + list-style-position + scope + source.css, source.scss + tabTrigger + lisp + uuid + 1CC541A7-484E-4EA4-BBEE-FC1A7043DFF6 + + diff --git a/User/SCSS/Snippets/list-style-type%3Acircle.tmSnippet b/User/SCSS/Snippets/list-style-type%3Acircle.tmSnippet new file mode 100755 index 0000000..dbff873 --- /dev/null +++ b/User/SCSS/Snippets/list-style-type%3Acircle.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + list-style-type:${TM_CSS_SPACE}circle;$0 + name + list-style-type:circle + scope + source.css, source.scss + tabTrigger + list:c + uuid + 3DEFFF4E-C70E-4FE9-8B3A-77A04A9319D4 + + diff --git a/User/SCSS/Snippets/list-style-type%3Adecimal-leading-zero.tmSnippet b/User/SCSS/Snippets/list-style-type%3Adecimal-leading-zero.tmSnippet new file mode 100755 index 0000000..b07cd14 --- /dev/null +++ b/User/SCSS/Snippets/list-style-type%3Adecimal-leading-zero.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + list-style-type:${TM_CSS_SPACE}decimal-leading-zero;$0 + name + list-style-type:decimal-leading-zero + scope + source.css, source.scss + tabTrigger + list:dclz + uuid + CA6A00EB-0DAD-4D29-AD74-684FFABEADDC + + diff --git a/User/SCSS/Snippets/list-style-type%3Adecimal.tmSnippet b/User/SCSS/Snippets/list-style-type%3Adecimal.tmSnippet new file mode 100755 index 0000000..12d0da4 --- /dev/null +++ b/User/SCSS/Snippets/list-style-type%3Adecimal.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + list-style-type:${TM_CSS_SPACE}decimal;$0 + name + list-style-type:decimal + scope + source.css, source.scss + tabTrigger + list:dc + uuid + AE03FF83-E5C6-4124-9106-6E43845539D1 + + diff --git a/User/SCSS/Snippets/list-style-type%3Adisc.tmSnippet b/User/SCSS/Snippets/list-style-type%3Adisc.tmSnippet new file mode 100755 index 0000000..28b7bbc --- /dev/null +++ b/User/SCSS/Snippets/list-style-type%3Adisc.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + list-style-type:${TM_CSS_SPACE}disc;$0 + name + list-style-type:disc + scope + source.css, source.scss + tabTrigger + list:d + uuid + 0055E3D2-C858-4F29-A15C-9DDC6D96235C + + diff --git a/User/SCSS/Snippets/list-style-type%3Alower-roman.tmSnippet b/User/SCSS/Snippets/list-style-type%3Alower-roman.tmSnippet new file mode 100755 index 0000000..8c98f09 --- /dev/null +++ b/User/SCSS/Snippets/list-style-type%3Alower-roman.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + list-style-type:${TM_CSS_SPACE}lower-roman;$0 + name + list-style-type:lower-roman + scope + source.css, source.scss + tabTrigger + list:lr + uuid + 15FCF228-8154-4B1F-A09E-FD4C7618AE9B + + diff --git a/User/SCSS/Snippets/list-style-type%3Anone.tmSnippet b/User/SCSS/Snippets/list-style-type%3Anone.tmSnippet new file mode 100755 index 0000000..830ba71 --- /dev/null +++ b/User/SCSS/Snippets/list-style-type%3Anone.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + list-style-type:${TM_CSS_SPACE}none;$0 + name + list-style-type:none + scope + source.css, source.scss + tabTrigger + list:n + uuid + 6A3A076D-EBAF-42F1-B487-904D5A07A8B8 + + diff --git a/User/SCSS/Snippets/list-style-type%3Asquare.tmSnippet b/User/SCSS/Snippets/list-style-type%3Asquare.tmSnippet new file mode 100755 index 0000000..2f2f2f2 --- /dev/null +++ b/User/SCSS/Snippets/list-style-type%3Asquare.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + list-style-type:${TM_CSS_SPACE}square;$0 + name + list-style-type:square + scope + source.css, source.scss + tabTrigger + list:s + uuid + C3BBBA0A-706F-46CA-9158-3373537CA0A5 + + diff --git a/User/SCSS/Snippets/list-style-type%3Aupper-roman.tmSnippet b/User/SCSS/Snippets/list-style-type%3Aupper-roman.tmSnippet new file mode 100755 index 0000000..a7551de --- /dev/null +++ b/User/SCSS/Snippets/list-style-type%3Aupper-roman.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + list-style-type:${TM_CSS_SPACE}upper-roman;$0 + name + list-style-type:upper-roman + scope + source.css, source.scss + tabTrigger + list:ur + uuid + EB2A8CAB-8252-4087-81C6-AFB8E4917325 + + diff --git a/User/SCSS/Snippets/margin%3A0 0 0 0.tmSnippet b/User/SCSS/Snippets/margin%3A0 0 0 0.tmSnippet new file mode 100755 index 0000000..245ce64 --- /dev/null +++ b/User/SCSS/Snippets/margin%3A0 0 0 0.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + margin:${TM_CSS_SPACE}${1:0} ${2:0} ${3:0} ${4:0};$0 + name + margin:0 0 0 0 + scope + source.css, source.scss + tabTrigger + m:4 + uuid + 339BCC7D-4B86-483E-8857-3C0F94D8FC2C + + diff --git a/User/SCSS/Snippets/opacity%3Aie.tmSnippet b/User/SCSS/Snippets/opacity%3Aie.tmSnippet new file mode 100755 index 0000000..2d87acb --- /dev/null +++ b/User/SCSS/Snippets/opacity%3Aie.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + filter:${TM_CSS_SPACE}progid:DXImageTransform.Microsoft.Alpha(Opacity=${1:100});$0 + name + opacity:ie + scope + source.css, source.scss + tabTrigger + op:ie + uuid + D747803E-BDC4-4332-96C2-63E103779BD0 + + diff --git a/User/SCSS/Snippets/opacity%3Ams.tmSnippet b/User/SCSS/Snippets/opacity%3Ams.tmSnippet new file mode 100755 index 0000000..8cfc3d9 --- /dev/null +++ b/User/SCSS/Snippets/opacity%3Ams.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + -ms-filter:${TM_CSS_SPACE}'progid:DXImageTransform.Microsoft.Alpha(Opacity=${1:100})';$0 + name + opacity:ms + scope + source.css, source.scss + tabTrigger + op:ms + uuid + 850268F2-92DC-4EF5-BB4B-1059EAD69EC8 + + diff --git a/User/SCSS/Snippets/outline+.tmSnippet b/User/SCSS/Snippets/outline+.tmSnippet new file mode 100755 index 0000000..9991810 --- /dev/null +++ b/User/SCSS/Snippets/outline+.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + outline:${TM_CSS_SPACE}${1:1px} ${2:solid} #${3:000};$0 + name + outline+ + scope + source.css, source.scss + tabTrigger + o+ + uuid + 3A3F2418-B49D-4071-B3B8-FD45550E6EF1 + + diff --git a/User/SCSS/Snippets/outline-color%3Ainvert.tmSnippet b/User/SCSS/Snippets/outline-color%3Ainvert.tmSnippet new file mode 100755 index 0000000..fe8080a --- /dev/null +++ b/User/SCSS/Snippets/outline-color%3Ainvert.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + outline-color:${TM_CSS_SPACE}invert;$0 + name + outline-color:invert + scope + source.css, source.scss + tabTrigger + oc:i + uuid + 64E30825-2648-4427-8008-3FD2672C239C + + diff --git a/User/SCSS/Snippets/overflow-style%3Aauto.tmSnippet b/User/SCSS/Snippets/overflow-style%3Aauto.tmSnippet new file mode 100755 index 0000000..e68939c --- /dev/null +++ b/User/SCSS/Snippets/overflow-style%3Aauto.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + overflow-style:${TM_CSS_SPACE}auto;$0 + name + overflow-style:auto + scope + source.css, source.scss + tabTrigger + ovs:a + uuid + 80E73138-C679-409E-8BBF-9F725C993DC7 + + diff --git a/User/SCSS/Snippets/overflow-style%3Amarquee.tmSnippet b/User/SCSS/Snippets/overflow-style%3Amarquee.tmSnippet new file mode 100755 index 0000000..c3e75a1 --- /dev/null +++ b/User/SCSS/Snippets/overflow-style%3Amarquee.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + overflow-style:${TM_CSS_SPACE}marquee;$0 + name + overflow-style:marquee + scope + source.css, source.scss + tabTrigger + ovs:mq + uuid + 703F53F0-011A-48DA-9CE1-C9CF8FDDEE57 + + diff --git a/User/SCSS/Snippets/overflow-style%3Amove.tmSnippet b/User/SCSS/Snippets/overflow-style%3Amove.tmSnippet new file mode 100755 index 0000000..551f918 --- /dev/null +++ b/User/SCSS/Snippets/overflow-style%3Amove.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + overflow-style:${TM_CSS_SPACE}move;$0 + name + overflow-style:move + scope + source.css, source.scss + tabTrigger + ovs:mv + uuid + 44149C16-528B-495B-A2A5-F73D56AF65ED + + diff --git a/User/SCSS/Snippets/overflow-style%3Apanner.tmSnippet b/User/SCSS/Snippets/overflow-style%3Apanner.tmSnippet new file mode 100755 index 0000000..d1174bf --- /dev/null +++ b/User/SCSS/Snippets/overflow-style%3Apanner.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + overflow-style:${TM_CSS_SPACE}panner;$0 + name + overflow-style:panner + scope + source.css, source.scss + tabTrigger + ovs:p + uuid + 89E7EFA4-9C04-4AF5-A65B-90931A4D9622 + + diff --git a/User/SCSS/Snippets/overflow-style%3Ascrollbar.tmSnippet b/User/SCSS/Snippets/overflow-style%3Ascrollbar.tmSnippet new file mode 100755 index 0000000..36ec6b9 --- /dev/null +++ b/User/SCSS/Snippets/overflow-style%3Ascrollbar.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + overflow-style:${TM_CSS_SPACE}scrollbar;$0 + name + overflow-style:scrollbar + scope + source.css, source.scss + tabTrigger + ovs:s + uuid + 3489B253-67C8-4008-81BE-64DD2A879401 + + diff --git a/User/SCSS/Snippets/padding%3A0 0 0 0.tmSnippet b/User/SCSS/Snippets/padding%3A0 0 0 0.tmSnippet new file mode 100755 index 0000000..d3f8029 --- /dev/null +++ b/User/SCSS/Snippets/padding%3A0 0 0 0.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + padding:${TM_CSS_SPACE}${1:0} ${2:0} ${3:0} ${4:0};$0 + name + padding:0 0 0 0 + scope + source.css, source.scss + tabTrigger + p:4 + uuid + D8FE52C4-14B5-4CF3-85A2-E43C7B593D98 + + diff --git a/User/SCSS/Snippets/padding%3A0 0 0.tmSnippet b/User/SCSS/Snippets/padding%3A0 0 0.tmSnippet new file mode 100755 index 0000000..50b05de --- /dev/null +++ b/User/SCSS/Snippets/padding%3A0 0 0.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + padding:${TM_CSS_SPACE}${1:0} ${2:0} ${3:0};$0 + name + padding:0 0 0 + scope + source.css, source.scss + tabTrigger + p:3 + uuid + 6BF09172-C8D4-4A26-8807-EF73866C4FEF + + diff --git a/User/SCSS/Snippets/page-break-after%3Aalways.tmSnippet b/User/SCSS/Snippets/page-break-after%3Aalways.tmSnippet new file mode 100755 index 0000000..3f96b3b --- /dev/null +++ b/User/SCSS/Snippets/page-break-after%3Aalways.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + page-break-after:${TM_CSS_SPACE}always;$0 + name + page-break-after:always + scope + source.css, source.scss + tabTrigger + pgba:aw + uuid + 0CC890BA-3438-48D9-86F0-BA16E90E7BF5 + + diff --git a/User/SCSS/Snippets/page-break-after%3Aauto.tmSnippet b/User/SCSS/Snippets/page-break-after%3Aauto.tmSnippet new file mode 100755 index 0000000..2db5f2a --- /dev/null +++ b/User/SCSS/Snippets/page-break-after%3Aauto.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + page-break-after:${TM_CSS_SPACE}auto;$0 + name + page-break-after:auto + scope + source.css, source.scss + tabTrigger + pgba:a + uuid + 86B1D5DB-FB20-40ED-BEA8-7179EAC573A1 + + diff --git a/User/SCSS/Snippets/page-break-after%3Aleft.tmSnippet b/User/SCSS/Snippets/page-break-after%3Aleft.tmSnippet new file mode 100755 index 0000000..e221c82 --- /dev/null +++ b/User/SCSS/Snippets/page-break-after%3Aleft.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + page-break-after:${TM_CSS_SPACE}left;$0 + name + page-break-after:left + scope + source.css, source.scss + tabTrigger + pgba:l + uuid + 6FD2F0EB-19B6-4072-BFD0-FDA68961219B + + diff --git a/User/SCSS/Snippets/page-break-after%3Aright.tmSnippet b/User/SCSS/Snippets/page-break-after%3Aright.tmSnippet new file mode 100755 index 0000000..98568b7 --- /dev/null +++ b/User/SCSS/Snippets/page-break-after%3Aright.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + page-break-after:${TM_CSS_SPACE}right;$0 + name + page-break-after:right + scope + source.css, source.scss + tabTrigger + pgba:r + uuid + 3526BE51-484A-4E7D-BD93-46288B73F636 + + diff --git a/User/SCSS/Snippets/page-break-before%3Aalways.tmSnippet b/User/SCSS/Snippets/page-break-before%3Aalways.tmSnippet new file mode 100755 index 0000000..08391df --- /dev/null +++ b/User/SCSS/Snippets/page-break-before%3Aalways.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + page-break-before:${TM_CSS_SPACE}always;$0 + name + page-break-before:always + scope + source.css, source.scss + tabTrigger + pgbb:aw + uuid + FFDF8948-B564-4463-B463-EEB711654C7D + + diff --git a/User/SCSS/Snippets/page-break-before%3Aauto.tmSnippet b/User/SCSS/Snippets/page-break-before%3Aauto.tmSnippet new file mode 100755 index 0000000..93ec0c0 --- /dev/null +++ b/User/SCSS/Snippets/page-break-before%3Aauto.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + page-break-before:${TM_CSS_SPACE}auto;$0 + name + page-break-before:auto + scope + source.css, source.scss + tabTrigger + pgbb:a + uuid + 32B7E204-3F61-4AD8-AB22-FA6F4F1EDD3F + + diff --git a/User/SCSS/Snippets/page-break-before%3Aleft.tmSnippet b/User/SCSS/Snippets/page-break-before%3Aleft.tmSnippet new file mode 100755 index 0000000..73268dc --- /dev/null +++ b/User/SCSS/Snippets/page-break-before%3Aleft.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + page-break-before:${TM_CSS_SPACE}left;$0 + name + page-break-before:left + scope + source.css, source.scss + tabTrigger + pgbb:l + uuid + 86A0407F-CB04-46A7-85E0-4115270F5FF4 + + diff --git a/User/SCSS/Snippets/page-break-before%3Aright.tmSnippet b/User/SCSS/Snippets/page-break-before%3Aright.tmSnippet new file mode 100755 index 0000000..a33a626 --- /dev/null +++ b/User/SCSS/Snippets/page-break-before%3Aright.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + page-break-before:${TM_CSS_SPACE}right;$0 + name + page-break-before:right + scope + source.css, source.scss + tabTrigger + pgbb:r + uuid + 423E71F0-585A-4929-8C2B-7B930BF972BA + + diff --git a/User/SCSS/Snippets/page-break-inside%3Aauto.tmSnippet b/User/SCSS/Snippets/page-break-inside%3Aauto.tmSnippet new file mode 100755 index 0000000..993db82 --- /dev/null +++ b/User/SCSS/Snippets/page-break-inside%3Aauto.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + page-break-inside:${TM_CSS_SPACE}auto;$0 + name + page-break-inside:auto + scope + source.css, source.scss + tabTrigger + pgbi:a + uuid + 77D1F161-0182-4070-92DE-58A112DC4272 + + diff --git a/User/SCSS/Snippets/page-break-inside%3Aavoid.tmSnippet b/User/SCSS/Snippets/page-break-inside%3Aavoid.tmSnippet new file mode 100755 index 0000000..c547af0 --- /dev/null +++ b/User/SCSS/Snippets/page-break-inside%3Aavoid.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + page-break-inside:${TM_CSS_SPACE}avoid;$0 + name + page-break-inside:avoid + scope + source.css, source.scss + tabTrigger + pgbi:av + uuid + DDC9232D-A22E-46FC-9A74-83F1B447C646 + + diff --git a/User/SCSS/Snippets/quotes%3Aen.tmSnippet b/User/SCSS/Snippets/quotes%3Aen.tmSnippet new file mode 100755 index 0000000..995fe29 --- /dev/null +++ b/User/SCSS/Snippets/quotes%3Aen.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + quotes:${TM_CSS_SPACE}'\201C' '\201D' '\2018' '\2019';$0 + name + quotes:en + scope + source.css, source.scss + tabTrigger + q:en + uuid + F48DA41C-387B-4F3B-80C4-9F9320862F66 + + diff --git a/User/SCSS/Snippets/quotes%3Aru.tmSnippet b/User/SCSS/Snippets/quotes%3Aru.tmSnippet new file mode 100755 index 0000000..c1787f7 --- /dev/null +++ b/User/SCSS/Snippets/quotes%3Aru.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + quotes:${TM_CSS_SPACE}'\00AB' '\00BB' '\201E' '\201C';$0 + name + quotes:ru + scope + source.css, source.scss + tabTrigger + q:ru + uuid + 210D8C02-4E20-422C-9FA1-D53A9002BC8E + + diff --git a/User/SCSS/Snippets/text-align-last%3Aauto.tmSnippet b/User/SCSS/Snippets/text-align-last%3Aauto.tmSnippet new file mode 100755 index 0000000..533cf06 --- /dev/null +++ b/User/SCSS/Snippets/text-align-last%3Aauto.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + text-align-last:${TM_CSS_SPACE}auto;$0 + name + text-align-last:auto + scope + source.css, source.scss + tabTrigger + tal:a + uuid + 6EF34F35-2D23-49CB-84D9-6E5478C4F5F9 + + diff --git a/User/SCSS/Snippets/text-align-last%3Acenter.tmSnippet b/User/SCSS/Snippets/text-align-last%3Acenter.tmSnippet new file mode 100755 index 0000000..9617f52 --- /dev/null +++ b/User/SCSS/Snippets/text-align-last%3Acenter.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + text-align-last:${TM_CSS_SPACE}center;$0 + name + text-align-last:center + scope + source.css, source.scss + tabTrigger + tal:c + uuid + 26EAFCC4-7548-46BB-83DD-BFC60C824F32 + + diff --git a/User/SCSS/Snippets/text-align-last%3Aleft.tmSnippet b/User/SCSS/Snippets/text-align-last%3Aleft.tmSnippet new file mode 100755 index 0000000..5cace2f --- /dev/null +++ b/User/SCSS/Snippets/text-align-last%3Aleft.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + text-align-last:${TM_CSS_SPACE}left;$0 + name + text-align-last:left + scope + source.css, source.scss + tabTrigger + tal:l + uuid + D5C23AB2-D465-4AB7-82F3-3FA98095770B + + diff --git a/User/SCSS/Snippets/text-align-last%3Aright.tmSnippet b/User/SCSS/Snippets/text-align-last%3Aright.tmSnippet new file mode 100755 index 0000000..3f8dbae --- /dev/null +++ b/User/SCSS/Snippets/text-align-last%3Aright.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + text-align-last:${TM_CSS_SPACE}right;$0 + name + text-align-last:right + scope + source.css, source.scss + tabTrigger + tal:r + uuid + 3B223C04-ADC9-47D8-8B68-7605CC70351C + + diff --git a/User/SCSS/Snippets/text-decoration%3Aline-through.tmSnippet b/User/SCSS/Snippets/text-decoration%3Aline-through.tmSnippet new file mode 100755 index 0000000..c365c22 --- /dev/null +++ b/User/SCSS/Snippets/text-decoration%3Aline-through.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + text-decoration:${TM_CSS_SPACE}line-through;$0 + name + text-decoration:line-through + scope + source.css, source.scss + tabTrigger + td:l + uuid + C0D2C185-0AAD-4166-8BDF-2F9864336026 + + diff --git a/User/SCSS/Snippets/text-decoration%3Anone.tmSnippet b/User/SCSS/Snippets/text-decoration%3Anone.tmSnippet new file mode 100755 index 0000000..98140f0 --- /dev/null +++ b/User/SCSS/Snippets/text-decoration%3Anone.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + text-decoration:${TM_CSS_SPACE}none;$0 + name + text-decoration:none + scope + source.css, source.scss + tabTrigger + td:n + uuid + A414B3FD-2AB4-4F3C-A458-AA46F5942854 + + diff --git a/User/SCSS/Snippets/text-decoration%3Aoverline.tmSnippet b/User/SCSS/Snippets/text-decoration%3Aoverline.tmSnippet new file mode 100755 index 0000000..db37cd6 --- /dev/null +++ b/User/SCSS/Snippets/text-decoration%3Aoverline.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + text-decoration:${TM_CSS_SPACE}overline;$0 + name + text-decoration:overline + scope + source.css, source.scss + tabTrigger + td:o + uuid + B8C6E2C0-44B1-4233-BD6B-FA7F0B408D77 + + diff --git a/User/SCSS/Snippets/text-decoration%3Aunderline.tmSnippet b/User/SCSS/Snippets/text-decoration%3Aunderline.tmSnippet new file mode 100755 index 0000000..671c660 --- /dev/null +++ b/User/SCSS/Snippets/text-decoration%3Aunderline.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + text-decoration:${TM_CSS_SPACE}underline;$0 + name + text-decoration:underline + scope + source.css, source.scss + tabTrigger + td:u + uuid + B15DB916-8844-4B13-9AD4-253BC2B51808 + + diff --git a/User/SCSS/Snippets/text-emphasis%3Aaccent.tmSnippet b/User/SCSS/Snippets/text-emphasis%3Aaccent.tmSnippet new file mode 100755 index 0000000..0d9110d --- /dev/null +++ b/User/SCSS/Snippets/text-emphasis%3Aaccent.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + text-emphasis:${TM_CSS_SPACE}accent;$0 + name + text-emphasis:accent + scope + source.css, source.scss + tabTrigger + te:ac + uuid + ED6209C4-53FA-4245-91B9-7D1784BBE34F + + diff --git a/User/SCSS/Snippets/text-emphasis%3Abefore.tmSnippet b/User/SCSS/Snippets/text-emphasis%3Abefore.tmSnippet new file mode 100755 index 0000000..c202098 --- /dev/null +++ b/User/SCSS/Snippets/text-emphasis%3Abefore.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + text-emphasis:${TM_CSS_SPACE}before;$0 + name + text-emphasis:before + scope + source.css, source.scss + tabTrigger + te:b + uuid + D34CF394-4614-4402-8558-EA79A3051A73 + + diff --git a/User/SCSS/Snippets/text-emphasis%3Acircle.tmSnippet b/User/SCSS/Snippets/text-emphasis%3Acircle.tmSnippet new file mode 100755 index 0000000..1c168c1 --- /dev/null +++ b/User/SCSS/Snippets/text-emphasis%3Acircle.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + text-emphasis:${TM_CSS_SPACE}circle;$0 + name + text-emphasis:circle + scope + source.css, source.scss + tabTrigger + te:c + uuid + 1224D09C-BCFA-413A-AF4E-CF775D5E2633 + + diff --git a/User/SCSS/Snippets/text-height%3Afont-size.tmSnippet b/User/SCSS/Snippets/text-height%3Afont-size.tmSnippet new file mode 100755 index 0000000..7dbbe9d --- /dev/null +++ b/User/SCSS/Snippets/text-height%3Afont-size.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + text-height:${TM_CSS_SPACE}font-size;$0 + name + text-height:font-size + scope + source.css, source.scss + tabTrigger + th:f + uuid + AFCFBC6D-86AB-4BDD-87D4-454F430C3B68 + + diff --git a/User/SCSS/Snippets/text-height%3Amax-size.tmSnippet b/User/SCSS/Snippets/text-height%3Amax-size.tmSnippet new file mode 100755 index 0000000..dbd7513 --- /dev/null +++ b/User/SCSS/Snippets/text-height%3Amax-size.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + text-height:${TM_CSS_SPACE}max-size;$0 + name + text-height:max-size + scope + source.css, source.scss + tabTrigger + th:m + uuid + E3653822-EAB4-45F8-BBF3-9F518680381D + + diff --git a/User/SCSS/Snippets/text-height%3Atext-size.tmSnippet b/User/SCSS/Snippets/text-height%3Atext-size.tmSnippet new file mode 100755 index 0000000..c0d0eb3 --- /dev/null +++ b/User/SCSS/Snippets/text-height%3Atext-size.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + text-height:${TM_CSS_SPACE}text-size;$0 + name + text-height:text-size + scope + source.css, source.scss + tabTrigger + th:t + uuid + 975D03B4-959F-4E52-A807-9148BD56C74A + + diff --git a/User/SCSS/Snippets/text-justify%3Adistribute.tmSnippet b/User/SCSS/Snippets/text-justify%3Adistribute.tmSnippet new file mode 100755 index 0000000..3802452 --- /dev/null +++ b/User/SCSS/Snippets/text-justify%3Adistribute.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + text-justify:${TM_CSS_SPACE}distribute;$0 + name + text-justify:distribute + scope + source.css, source.scss + tabTrigger + tj:d + uuid + 119DA3C9-13BB-47F1-A106-C564506A7DCA + + diff --git a/User/SCSS/Snippets/text-justify%3Ainter-cluster.tmSnippet b/User/SCSS/Snippets/text-justify%3Ainter-cluster.tmSnippet new file mode 100755 index 0000000..1782660 --- /dev/null +++ b/User/SCSS/Snippets/text-justify%3Ainter-cluster.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + text-justify:${TM_CSS_SPACE}inter-cluster;$0 + name + text-justify:inter-cluster + scope + source.css, source.scss + tabTrigger + tj:ic + uuid + 6809E9AC-366E-4155-932C-1AFC037922F6 + + diff --git a/User/SCSS/Snippets/text-justify%3Ainter-ideograph.tmSnippet b/User/SCSS/Snippets/text-justify%3Ainter-ideograph.tmSnippet new file mode 100755 index 0000000..ad261dc --- /dev/null +++ b/User/SCSS/Snippets/text-justify%3Ainter-ideograph.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + text-justify:${TM_CSS_SPACE}inter-ideograph;$0 + name + text-justify:inter-ideograph + scope + source.css, source.scss + tabTrigger + tj:ii + uuid + DE5F9DC1-D0E6-4AEE-8EC9-8CCEFEEBFA1C + + diff --git a/User/SCSS/Snippets/text-justify%3Ainter-word.tmSnippet b/User/SCSS/Snippets/text-justify%3Ainter-word.tmSnippet new file mode 100755 index 0000000..07ae798 --- /dev/null +++ b/User/SCSS/Snippets/text-justify%3Ainter-word.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + text-justify:${TM_CSS_SPACE}inter-word;$0 + name + text-justify:inter-word + scope + source.css, source.scss + tabTrigger + tj:iw + uuid + 77078508-3BD7-4D6F-96A9-559404296643 + + diff --git a/User/SCSS/Snippets/text-justify%3Akashida.tmSnippet b/User/SCSS/Snippets/text-justify%3Akashida.tmSnippet new file mode 100755 index 0000000..8536176 --- /dev/null +++ b/User/SCSS/Snippets/text-justify%3Akashida.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + text-justify:${TM_CSS_SPACE}kashida;$0 + name + text-justify:kashida + scope + source.css, source.scss + tabTrigger + tj:k + uuid + F6C2444C-1E64-49FA-B6C5-42988FFE60CF + + diff --git a/User/SCSS/Snippets/text-justify%3Atibetan.tmSnippet b/User/SCSS/Snippets/text-justify%3Atibetan.tmSnippet new file mode 100755 index 0000000..a3d0ade --- /dev/null +++ b/User/SCSS/Snippets/text-justify%3Atibetan.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + text-justify:${TM_CSS_SPACE}tibetan;$0 + name + text-justify:tibetan + scope + source.css, source.scss + tabTrigger + tj:t + uuid + 05570013-71A7-46DA-B48A-26C84EA552D9 + + diff --git a/User/SCSS/Snippets/text-outline+.tmSnippet b/User/SCSS/Snippets/text-outline+.tmSnippet new file mode 100755 index 0000000..f15f9d4 --- /dev/null +++ b/User/SCSS/Snippets/text-outline+.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + text-outline:${TM_CSS_SPACE}${1:0} ${2:0} #${3:000};$0 + name + text-outline+ + scope + source.css, source.scss + tabTrigger + to+ + uuid + CB461BE9-E863-4CF1-AFDC-B3B12491ADB3 + + diff --git a/User/SCSS/Snippets/text-shadow+.tmSnippet b/User/SCSS/Snippets/text-shadow+.tmSnippet new file mode 100755 index 0000000..9f6f1c5 --- /dev/null +++ b/User/SCSS/Snippets/text-shadow+.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + text-shadow:${TM_CSS_SPACE}${1:0} ${2:0} ${3:0} #${4:000};$0 + name + text-shadow+ + scope + source.css, source.scss + tabTrigger + tsh+ + uuid + 45309F4B-255E-4BB5-A646-0AB47ABCE728 + + diff --git a/User/SCSS/Snippets/text-transform%3Acapitalize.tmSnippet b/User/SCSS/Snippets/text-transform%3Acapitalize.tmSnippet new file mode 100755 index 0000000..a263747 --- /dev/null +++ b/User/SCSS/Snippets/text-transform%3Acapitalize.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + text-transform:${TM_CSS_SPACE}capitalize;$0 + name + text-transform:capitalize + scope + source.css, source.scss + tabTrigger + tt:c + uuid + 452980A0-6498-4390-BF46-02B4408963E7 + + diff --git a/User/SCSS/Snippets/text-transform%3Alowercase.tmSnippet b/User/SCSS/Snippets/text-transform%3Alowercase.tmSnippet new file mode 100755 index 0000000..2275149 --- /dev/null +++ b/User/SCSS/Snippets/text-transform%3Alowercase.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + text-transform:${TM_CSS_SPACE}lowercase;$0 + name + text-transform:lowercase + scope + source.css, source.scss + tabTrigger + tt:l + uuid + 3D1C65AF-065F-4CCD-94AF-7FD39CE2F153 + + diff --git a/User/SCSS/Snippets/text-transform%3Auppercase.tmSnippet b/User/SCSS/Snippets/text-transform%3Auppercase.tmSnippet new file mode 100755 index 0000000..5ad72a8 --- /dev/null +++ b/User/SCSS/Snippets/text-transform%3Auppercase.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + text-transform:${TM_CSS_SPACE}uppercase;$0 + name + text-transform:uppercase + scope + source.css, source.scss + tabTrigger + tt:u + uuid + 673BCE6D-0AB4-4D5A-83A3-1B31F85267F7 + + diff --git a/User/SCSS/Snippets/text-wrap%3Aunrestricted.tmSnippet b/User/SCSS/Snippets/text-wrap%3Aunrestricted.tmSnippet new file mode 100755 index 0000000..12da62d --- /dev/null +++ b/User/SCSS/Snippets/text-wrap%3Aunrestricted.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + text-wrap:${TM_CSS_SPACE}unrestricted;$0 + name + text-wrap:unrestricted + scope + source.css, source.scss + tabTrigger + tw:u + uuid + B36A03B5-E199-4CCF-9327-819EDC49718C + + diff --git a/User/SCSS/Snippets/vertical-align%3Abaseline.tmSnippet b/User/SCSS/Snippets/vertical-align%3Abaseline.tmSnippet new file mode 100755 index 0000000..eda6686 --- /dev/null +++ b/User/SCSS/Snippets/vertical-align%3Abaseline.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + vertical-align:${TM_CSS_SPACE}baseline;$0 + name + vertical-align:baseline + scope + source.css, source.scss + tabTrigger + va:bl + uuid + C1820F07-D821-497A-B7F7-CDB2C888EA08 + + diff --git a/User/SCSS/Snippets/vertical-align%3Abottom.tmSnippet b/User/SCSS/Snippets/vertical-align%3Abottom.tmSnippet new file mode 100755 index 0000000..7a47b53 --- /dev/null +++ b/User/SCSS/Snippets/vertical-align%3Abottom.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + vertical-align:${TM_CSS_SPACE}bottom;$0 + name + vertical-align:bottom + scope + source.css, source.scss + tabTrigger + va:b + uuid + 408C4BAE-2CE1-4DF5-9C6A-E6845CF8A16A + + diff --git a/User/SCSS/Snippets/vertical-align%3Amiddle.tmSnippet b/User/SCSS/Snippets/vertical-align%3Amiddle.tmSnippet new file mode 100755 index 0000000..799dfb8 --- /dev/null +++ b/User/SCSS/Snippets/vertical-align%3Amiddle.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + vertical-align:${TM_CSS_SPACE}middle;$0 + name + vertical-align:middle + scope + source.css, source.scss + tabTrigger + va:m + uuid + 987E9F6C-7F44-43A5-BF48-2E1080B86E27 + + diff --git a/User/SCSS/Snippets/vertical-align%3Asuper.tmSnippet b/User/SCSS/Snippets/vertical-align%3Asuper.tmSnippet new file mode 100755 index 0000000..10e38cc --- /dev/null +++ b/User/SCSS/Snippets/vertical-align%3Asuper.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + vertical-align:${TM_CSS_SPACE}super;$0 + name + vertical-align:super + scope + source.css, source.scss + tabTrigger + va:sup + uuid + 3AF93EA0-7A3F-4451-B4B3-CF5A18A4FE85 + + diff --git a/User/SCSS/Snippets/vertical-align%3Atext-bottom.tmSnippet b/User/SCSS/Snippets/vertical-align%3Atext-bottom.tmSnippet new file mode 100755 index 0000000..c70acca --- /dev/null +++ b/User/SCSS/Snippets/vertical-align%3Atext-bottom.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + vertical-align:${TM_CSS_SPACE}text-bottom;$0 + name + vertical-align:text-bottom + scope + source.css, source.scss + tabTrigger + va:tb + uuid + 2893DD4F-1E95-4689-9C26-AAEC434A4852 + + diff --git a/User/SCSS/Snippets/vertical-align%3Atext-top.tmSnippet b/User/SCSS/Snippets/vertical-align%3Atext-top.tmSnippet new file mode 100755 index 0000000..283d9db --- /dev/null +++ b/User/SCSS/Snippets/vertical-align%3Atext-top.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + vertical-align:${TM_CSS_SPACE}text-top;$0 + name + vertical-align:text-top + scope + source.css, source.scss + tabTrigger + va:tt + uuid + 3E140DA2-45D0-4A4B-8E6F-A511B70FCB06 + + diff --git a/User/SCSS/Snippets/white-space%3Apre-line.tmSnippet b/User/SCSS/Snippets/white-space%3Apre-line.tmSnippet new file mode 100755 index 0000000..cec4082 --- /dev/null +++ b/User/SCSS/Snippets/white-space%3Apre-line.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + white-space:${TM_CSS_SPACE}pre-line;$0 + name + white-space:pre-line + scope + source.css, source.scss + tabTrigger + whs:pl + uuid + 1E126CEA-0490-4B91-B78A-B96615BF291C + + diff --git a/User/SCSS/Snippets/white-space%3Apre-wrap.tmSnippet b/User/SCSS/Snippets/white-space%3Apre-wrap.tmSnippet new file mode 100755 index 0000000..8f40cff --- /dev/null +++ b/User/SCSS/Snippets/white-space%3Apre-wrap.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + white-space:${TM_CSS_SPACE}pre-wrap;$0 + name + white-space:pre-wrap + scope + source.css, source.scss + tabTrigger + whs:pw + uuid + B9CE8505-630F-4FE1-8B50-944C1A1C0DE4 + + diff --git a/User/SCSS/Snippets/white-space-collapse%3Abreak-all.tmSnippet b/User/SCSS/Snippets/white-space-collapse%3Abreak-all.tmSnippet new file mode 100755 index 0000000..760f56d --- /dev/null +++ b/User/SCSS/Snippets/white-space-collapse%3Abreak-all.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + white-space-collapse:${TM_CSS_SPACE}break-all;$0 + name + white-space-collapse:break-all + scope + source.css, source.scss + tabTrigger + whsc:ba + uuid + 9B787391-B879-4F1B-9022-9FBC13229AC5 + + diff --git a/User/SCSS/Snippets/white-space-collapse%3Abreak-strict.tmSnippet b/User/SCSS/Snippets/white-space-collapse%3Abreak-strict.tmSnippet new file mode 100755 index 0000000..7a66f72 --- /dev/null +++ b/User/SCSS/Snippets/white-space-collapse%3Abreak-strict.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + white-space-collapse:${TM_CSS_SPACE}break-strict;$0 + name + white-space-collapse:break-strict + scope + source.css, source.scss + tabTrigger + whsc:bs + uuid + C56ECCAF-376B-4CE6-A23D-6CEB27077FFF + + diff --git a/User/SCSS/Snippets/white-space-collapse%3Akeep-all.tmSnippet b/User/SCSS/Snippets/white-space-collapse%3Akeep-all.tmSnippet new file mode 100755 index 0000000..2a5df07 --- /dev/null +++ b/User/SCSS/Snippets/white-space-collapse%3Akeep-all.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + white-space-collapse:${TM_CSS_SPACE}keep-all;$0 + name + white-space-collapse:keep-all + scope + source.css, source.scss + tabTrigger + whsc:k + uuid + ADC7A0DA-1556-48CD-9091-01797AE66B9E + + diff --git a/User/SCSS/Snippets/white-space-collapse%3Aloose.tmSnippet b/User/SCSS/Snippets/white-space-collapse%3Aloose.tmSnippet new file mode 100755 index 0000000..cf3c815 --- /dev/null +++ b/User/SCSS/Snippets/white-space-collapse%3Aloose.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + white-space-collapse:${TM_CSS_SPACE}loose;$0 + name + white-space-collapse:loose + scope + source.css, source.scss + tabTrigger + whsc:l + uuid + 9A4604A3-40B2-4BAE-AB33-758CCC916DD8 + + diff --git a/User/SCSS/Snippets/white-space-collapse%3Anormal.tmSnippet b/User/SCSS/Snippets/white-space-collapse%3Anormal.tmSnippet new file mode 100755 index 0000000..1e78b69 --- /dev/null +++ b/User/SCSS/Snippets/white-space-collapse%3Anormal.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + white-space-collapse:${TM_CSS_SPACE}normal;$0 + name + white-space-collapse:normal + scope + source.css, source.scss + tabTrigger + whsc:n + uuid + E42B9EA9-410C-4D9A-B151-0BC67C7C6AEB + + diff --git a/User/SCSS/Snippets/white-space-collapse.tmSnippet b/User/SCSS/Snippets/white-space-collapse.tmSnippet new file mode 100755 index 0000000..14a8354 --- /dev/null +++ b/User/SCSS/Snippets/white-space-collapse.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + white-space-collapse:${TM_CSS_SPACE}$1;$0 + name + white-space-collapse + scope + source.css, source.scss + tabTrigger + whsc + uuid + 110F3EF2-6FA4-4D77-BF6D-9AF2F5974950 + + diff --git a/User/SCSS/Snippets/word-break%3Abreak-all.tmSnippet b/User/SCSS/Snippets/word-break%3Abreak-all.tmSnippet new file mode 100755 index 0000000..054c4fd --- /dev/null +++ b/User/SCSS/Snippets/word-break%3Abreak-all.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + word-break:${TM_CSS_SPACE}break-all;$0 + name + word-break:break-all + scope + source.css, source.scss + tabTrigger + wob:ba + uuid + 91F39F58-8FB6-44DE-9EEC-35B8820E01B1 + + diff --git a/User/SCSS/Snippets/word-break%3Abreak-strict.tmSnippet b/User/SCSS/Snippets/word-break%3Abreak-strict.tmSnippet new file mode 100755 index 0000000..a5678b4 --- /dev/null +++ b/User/SCSS/Snippets/word-break%3Abreak-strict.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + word-break:${TM_CSS_SPACE}break-strict;$0 + name + word-break:break-strict + scope + source.css, source.scss + tabTrigger + wob:bs + uuid + B0FCB863-5692-4499-BE7A-F5E62663E12E + + diff --git a/User/SCSS/Snippets/word-wrap%3Aunrestricted.tmSnippet b/User/SCSS/Snippets/word-wrap%3Aunrestricted.tmSnippet new file mode 100755 index 0000000..d496ada --- /dev/null +++ b/User/SCSS/Snippets/word-wrap%3Aunrestricted.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + word-wrap:${TM_CSS_SPACE}unrestricted;$0 + name + word-wrap:unrestricted + scope + source.css, source.scss + tabTrigger + wow:u + uuid + 008DA70A-9F72-4C99-AC40-DFFC17E50CF3 + + diff --git a/User/SCSS/Support/bin/Nokogiri-to-Hash/nokogiri_to_hash.rb b/User/SCSS/Support/bin/Nokogiri-to-Hash/nokogiri_to_hash.rb new file mode 100755 index 0000000..30df56c --- /dev/null +++ b/User/SCSS/Support/bin/Nokogiri-to-Hash/nokogiri_to_hash.rb @@ -0,0 +1,33 @@ +# Mix-in of the Nokogiri XML Node Class that implements methods to convert +# nodes to a hash. +# Author: Mario "Kuroir" Ricalde (http://kuroir.com) +class Nokogiri::XML::Node + # Convert a selected node to a Hash. It accepts a CSS3 Selector as an attribute. + # Returns the hash. + def to_hash(selector = 'body > *') + hash = [] + self.css(selector).each do |node| + hash << node.collect_nodes + end + # Return the hash + hash + end + + # Recursive method to collect nodes. + # We add the children symbol always to keep the array structure constant. + def collect_nodes + { self.name.to_sym => self.collect_attributes.merge({:children => collect_children }) } + end + + # Collect Attributes of a given node. + def collect_attributes + output = {} + self.attributes.each { |name, value| output = output.merge({ name.to_sym => value.to_s.split(/\s+/) }) } + output + end + + # Priest method. + def collect_children + self.element_children.collect { |child| child.collect_nodes } || [] + end +end \ No newline at end of file diff --git a/User/SCSS/Support/bin/command.rb b/User/SCSS/Support/bin/command.rb new file mode 100755 index 0000000..36b35de --- /dev/null +++ b/User/SCSS/Support/bin/command.rb @@ -0,0 +1,22 @@ +#!/usr/bin/ruby +# Support for Mac only (for now) +exit unless RUBY_PLATFORM.match('darwin') +# Requeriments: +# => Ruby 1.8.7 or higher +# => Nokogiri ( gem install nokogiri) + +# Get Clipboard contents. +paste = IO.popen('pbpaste', 'r+').read + +# Do a simple ugly check to see if the contents of the clipboard +# are xhtml or something simlar and try to parse it. +if paste.empty? or not paste.match(/^\s{0,}\<.+\>$/) + print paste +else + support = ENV['TM_BUNDLE_SUPPORT'] + '/bin/' + require 'rubygems' + require 'nokogiri' + require '%sNokogiri-to-Hash/nokogiri_to_hash' % support + require '%sxhtml_to_css' % support + print XHTMLtoSCSS.new(paste) +end \ No newline at end of file diff --git a/User/SCSS/Support/bin/xhtml_to_css.rb b/User/SCSS/Support/bin/xhtml_to_css.rb new file mode 100755 index 0000000..9aed9e1 --- /dev/null +++ b/User/SCSS/Support/bin/xhtml_to_css.rb @@ -0,0 +1,106 @@ +#!/usr/bin/ruby +# Library that uses the Nokogiri to Hash Mixin I developed, it will convert any +# given html file to SCSS. +# Author: Mario "Kuroir" Ricalde (http://kuroir.com) +# +# 3 Oct 2010 - Added support for inline styles. + +class XHTMLtoSCSS + attr_accessor :comment_selector + TAB = ' ' + + def initialize(html) + @hash = Nokogiri.HTML(html).to_hash.uniq + @output = '' + @nesting = 0 + @comment_selector = false + parse + end + + # Parse the array + def parse(hash = @hash) + hash.each do |node| + node.each do |name, data| + selector = build_selector(name, data) + set_selector selector + open_bracket + inline_style data + parse data[:children].uniq if data[:children].any? + close_bracket selector + end + end + end + + # Inline Styles. + def inline_style(data) + unless data[:style].nil? + styles = data[:style].join(' ').split(';') + styles.each do |e| + indentation = styles.first == e.first ? '' : indent_level + @output << indentation << e.strip << ";\n" + end + end + end + + # Nesting Balancer. + def nesting(int) + @nesting += int + @nesting = 0 if @nesting < 0 + end + + # Open bracket and indent. + def open_bracket + @output << " {\n" << indent + end + + # Unindent, Close Bracket and add selector as a comment if enabled. + def close_bracket(selector = '') + @output << unindent << "}" + @output << " //#{selector}" if @comment_selector + end + + # Calculate Tabs based on nesting balance. + def indent(int = 1) + nesting(int) + TAB * @nesting + end + + def indent_level + TAB * @nesting + end + + # Unindent. + # We have a -1 since the closing bracket should reach nesting 0. + def unindent(int = -1) + out = "\n" + TAB * (@nesting - 1) + nesting(int) + out + end + + # Generate the Selecor, and return it for storage + def build_selector(name, attributes) + node_id = attributes[:id] ? '#' << attributes[:id].join('#') : '' + node_class = attributes[:class] ? '.' << attributes[:class].join('.') : '' + name.to_s << node_id << node_class + end + + def set_selector(selector) + @output << "\n" << indent(0) << selector + end + + def to_s + @output.gsub /^\n/, '' + end +end + +# Override for this bundle +class Nokogiri::XML::Node + # Little Override to accept only id's and classes + def collect_attributes + output = {} + self.attributes.each { |name, value| + output = output.merge({ name.to_sym => value.to_s.split(/\s+/) }) if name == 'class' or name == 'id' or name == 'style' + } + output + end +end \ No newline at end of file diff --git a/User/SCSS/Syntaxes/CSS Zen.tmLanguage b/User/SCSS/Syntaxes/CSS Zen.tmLanguage new file mode 100755 index 0000000..bf8e63a --- /dev/null +++ b/User/SCSS/Syntaxes/CSS Zen.tmLanguage @@ -0,0 +1,543 @@ + + + + + comment + + fileTypes + + css + css.erb + + foldingStartMarker + /\*\*(?!\*)|\{\s*($|/\*(?!.*?\*/.*\S)) + foldingStopMarker + (?<!\*)\*\*/|^\s*\} + keyEquivalent + ~@c + name + CSS Zen + patterns + + + begin + ^(?=\s*[:.*#a-zA-Z]) + end + (?=\{) + name + meta.selector.css + patterns + + + include + #comment-block + + + match + \b(?i:a|abbr|acronym|address|applet|area|article|aside|audio|b|base|bb|bdo|big|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|command|datagrid|datalist|dd|del|details|dfn|dialog|div|dl|dt|em|embed|fieldset|figure|font|footer|form|(h[1-6])|head|header|hr|html|i|iframe|img|input|ins|kbd|keygen|label|legend|li|link|map|mark|menu|meta|meter|nav|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|s|samp|script|section|select|small|source|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|u|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 + (:+)\b(after|before|first-letter|first-line|selection)\b + name + entity.other.attribute-name.pseudo-element.css + + + captures + + 1 + + name + punctuation.definition.entity.css + + + match + (:)\b(link|visited|hover|active|focus|target|lang|disabled|enabled|checked|indeterminate|root|nth-child()|nth-last-child()|nth-of-type()|nth-last-of-type()|first-child|last-child|first-of-type|last-of-type|only-child|only-of-type|empty|not)\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 + + + + + include + #comment-block + + + begin + ^\s*((@)import\b) + 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 + + + begin + (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 + + + + + + + begin + ^\s*((@)media)\s+(((all|aural|braille|embossed|handheld|print|projection|screen|tty|tv)\s*,?\s*)+)\s*{ + captures + + 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 + $self + + + + + begin + \{ + captures + + 0 + + name + punctuation.section.property-list.css + + + end + \} + 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-break|background-clip|background-color|background-image|background-origin|background-position-x|background-position-y|background-position|background-repeat|background-size|background|border-bottom-color|border-bottom-image|border-bottom-left-image|border-bottom-left-radius|border-bottom-right-image|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-bottom|border-break|border-collapse|border-color|border-corner-image|border-fit|border-image|border-left-color|border-left-image|border-left-style|border-left-width|border-left|border-length|border-radius|border-right-color|border-right-image|border-right-style|border-right-width|border-right|border-spacing|border-style|border-top-color|border-top-image|border-top-left-image|border-top-left-radius|border-top-right-image|border-top-right-radius|border-top-style|border-top-width|border-top|border-width|border|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|content|counter-increment|counter-reset|cue-after|cue-before|cue|cursor|direction|display|elevation|empty-cells|float|font-effect|font-emphasize-position|font-emphasize-style|font-emphasize|font-family|font-size-adjust|font-size|font-smooth|font-stretch|font-style|font-variant|font-weight|font|height|left|letter-spacing|line-height|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|marker-offset|marks|max-height|max-width|min-height|min-width|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|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|play-during|pitch|position|quotes|resize|richness|right|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|table-layout|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-replace|text-shadow|text-transform|text-wrap|top|unicode-bidi|vertical-align|visibility|voice-family|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|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 + + + match + \b(absolute|accent|after|always|attr()|auto|avoid|baseline|before|block|bold|bolder|border-box|both|bottom|bounding-box|break-all|break-strict|capitalize|center|circle|clip|close-quote|close|collapse|compact|condensed|contain|content-box|continue|continuous|counter()|counters()|cover|crosshair|cursive|dashed|decimal-leading-zero|decimal|default|disc|distribute|dot-dot-dash|dot-dash|dot|dotted|double|each-box|emboss|engrave|expanded|extra-condensed|extra-expanded|fantasy|fixed|font-size|groove|hand|help|hidden|hide|horizontal|inline|inline-block|inline-table|inset|inside|inter-cluster|inter-ideograph|inter-word|invert|italic|kashida|keep-all|left|lighter|line-through|list-item|loose|lower-roman|lowercase|marquee|max-size|middle|monospace|move|ms|never|no-clip|no-close-quote|no-open-quote|no-repeat|none|normal|nowrap|oblique|open-quote|outline|outset|outside|overflow|overline|overwrite|padding-box|panner|pointer|pre-line|pre-wrap|pre|rect()|relative|repeat-x|repeat-y|repeat|ridge|right|run-in|sans-serif|scale|scroll|scrollbar|semi-condensed|semi-expanded|separate|serif|show|small-caps|solid|space|square|static|stretch|sub|super|suppress|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|text-bottom|text-size|text-top|text|tibetan|top|transparent|ultra-condensed|ultra-expanded|underline|unrestricted|upper-roman|uppercase|vertical|visible|wave)\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 + + + 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 + + + match + (-|\+)?\s*[0-9]+(\.[0-9]+)? + name + constant.numeric.css + + + match + (?<=[\d])(px|pt|cm|mm|in|em|ex|pc|s|deg)\b|% + name + keyword.other.unit.css + + + 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 + + + include + #string-double + + + include + #string-single + + + begin + (rgb|rgba|hsl|hsla|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 + (\b0*((1?[0-9]{1,2})|(2([0-4][0-9]|5[0-5])))\s*,\s*)(0*((1?[0-9]{1,2})|(2([0-4][0-9]|5[0-5])))\s*,\s*)(0*((1?[0-9]{1,2})|(2([0-4][0-9]|5[0-5])))\b) + 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 + + + match + [^'") \t]+ + name + variable.parameter.misc.css + + + + + match + \!\s*important + name + keyword.other.important.css + + + + + + + repository + + comment-block + + begin + /\* + captures + + 0 + + name + punctuation.definition.comment.css + + + end + \*/ + name + comment.block.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 + CDB401D2-F840-475E-BAB2-83D43236F460 + + diff --git a/User/SCSS/Syntaxes/CSS Zen.tmLanguage.cache b/User/SCSS/Syntaxes/CSS Zen.tmLanguage.cache new file mode 100644 index 0000000..5e76d1c Binary files /dev/null and b/User/SCSS/Syntaxes/CSS Zen.tmLanguage.cache differ diff --git a/User/SCSS/Syntaxes/SCSS.tmLanguage b/User/SCSS/Syntaxes/SCSS.tmLanguage new file mode 100755 index 0000000..92b5eb2 --- /dev/null +++ b/User/SCSS/Syntaxes/SCSS.tmLanguage @@ -0,0 +1,1480 @@ + + + + + comment + Complete Rewrite of the SCSS Grammar by Mario "Kuroir" Ricalde (http://kuroir.com) + fileTypes + + scss + + foldingStartMarker + /\*\*(?!\*)|\{\s*($|/\*(?!.*?\*/.*\S)) + foldingStopMarker + (?<!\*)\*\*/|^\s*\} + keyEquivalent + ^~S + name + SCSS + patterns + + + comment + Variable setting + include + #variable_setting + + + include + #include + + + include + #import + + + include + #general + + + include + #flow_control + + + comment + Yes, we need the rules at root level available for nesting. + include + #rules + + + comment + Properties + include + #property_list + + + begin + ^\s*((@)mixin) ([\w-]{1,})\s{0,2}\( + captures + + 1 + + name + keyword.control.at-rule.mixin.scss + + 2 + + name + punctuation.definition.keyword.scss + + 3 + + name + entity.name.function.scss + + + comment + Mixin with Attributes + end + \) + name + meta.at-rule.mixin.scss + patterns + + + include + #function_attributes + + + + + captures + + 1 + + name + keyword.control.at-rule.mixin.scss + + 2 + + name + punctuation.definition.keyword.css + + 3 + + name + entity.name.function.scss + + + comment + Simple Mixin + match + ^\s*((@)mixin) ([\w-]{1,}) + name + meta.at-rule.mixin.scss + + + begin + ^\s*((@)function) ([\w-]{1,})\s{0,2}\( + captures + + 1 + + name + keyword.control.at-rule.function.scss + + 2 + + name + punctuation.definition.keyword.css + + 3 + + name + entity.name.function.scss + + + comment + Function with Attributes + end + \) + name + meta.at-rule.function.scss + patterns + + + include + #function_attributes + + + + + captures + + 1 + + name + keyword.control.at-rule.function.scss + + 2 + + name + punctuation.definition.keyword.css + + 3 + + name + entity.name.function.scss + + + comment + Simple Function + match + ^\s*((@)function) ([\w-]{1,}) + name + meta.at-rule.function.scss + + + captures + + 1 + + name + keyword.control.at-rule.charset.scss + + 2 + + name + punctuation.definition.keyword.css + + + comment + Charset + match + ^\s*((@)charset\b)\s* + name + meta.at-rule.charset.scss + + + captures + + 1 + + name + keyword.control.at-rule.charset.scss + + 2 + + name + punctuation.definition.keyword.css + + + comment + Option + match + ^\s*((@)option\b)\s* + name + meta.at-rule.option.scss + + + repository + + comment_block + + begin + \s{0,}/\* + captures + + 0 + + name + punctuation.whitespace.comment.trailing.scss + + + comment + Revamped Comment block. + end + (\*/)\s{0,} + name + comment.block.scss + + comment_line + + begin + (\s{0,})// + comment + Revamped + end + $(\s{0,}) + name + comment.line.scss + + constant_color + + 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 + + constant_depracated_color + + 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 + + constant_font + + 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 + + constant_functions + + begin + ([\w-]{1,})\s*(\() + beginCaptures + + 1 + + name + support.function.misc.css + + 2 + + name + punctuation.section.function.css + + + end + (\)) + endCaptures + + 1 + + name + punctuation.section.function.css + + + patterns + + + include + #parameters + + + + constant_hex + + 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 + + constant_important + + match + \!\s*important + name + keyword.other.important.css + + constant_mathematical_symbols + + match + (\b(\+|-|\*|/)\b) + name + support.constant.mathematical-symbols.css + + constant_number + + match + [+-]?\s*([0-9]+(\.[0-9]+)?|\.[0-9]+) + name + constant.numeric.css + + constant_property_value + + match + \b(absolute|all-scroll|always|armenian|auto|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|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|outset|outside|overline|pointer|progress|relative|repeat-x|repeat-y|repeat|right|ridge|row-resize|rtl|s-resize|scroll|se-resize|separate|small-caps|solid|square|static|strict|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|vertical-text|visible|w-resize|wait|whitespace|zero|true|false)\b + name + support.constant.property-value.css + + constant_rgb + + match + (\b0*((1?[0-9]{1,2})|(2([0-4][0-9]|5[0-5])))\s*,\s*)(0*((1?[0-9]{1,2})|(2([0-4][0-9]|5[0-5])))\s*,\s*)(0*((1?[0-9]{1,2})|(2([0-4][0-9]|5[0-5])))\b) + name + constant.other.color.rgb-value.css + + constant_rgb_percentage + + 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 + + constant_sass_functions + + begin + (headings|stylesheet-url|rgba?|hsla?|ie-hex-str|red|green|blue|alpha|opacity|hue|saturation|lightness|prefixed|prefix|-moz|-svg|-css2|-pie|-webkit|-ms|-o|font-(?:files|url)|grid-image|image-(?:width|height|url|color)|sprites?|sprite-(?:map|map-name|file|url|position)|inline-(?:font-files|image)|opposite-position|grad-point|grad-end-position|color-stops|color-stops-in-percentages|grad-color-stops|(?:radial|linear)-(?:gradient|svg-gradient)|opacify|fade-?in|transparentize|fade-?out|lighten|darken|saturate|desaturate|grayscale|adjust-(?:hue|lightness|saturation|color)|scale-(?:lightness|saturation|color)|change-color|spin|complement|invert|mix|-compass-(?:list|space-list|slice|nth|list-size)|blank|compact|nth|first-value-of|join|length|append|nest|append-selector|headers|enumerate|range|percentage|unitless|unit|if|type-of|comparable|elements-of-type|quote|unquote|escape|e|sin|cos|tan|abs|round|ceil|floor|pi)\s*(\() + beginCaptures + + 1 + + name + support.function.misc.css + + 2 + + name + punctuation.section.function.css + + + end + (\)) + endCaptures + + 1 + + name + punctuation.section.function.css + + + patterns + + + include + #parameters + + + + constant_unit + + match + (?<=[\d])(px|pt|cm|mm|in|em|ex|pc|deg)\b|% + name + keyword.other.unit.css + + each + + begin + \s{0,}((@)(each)\b) + captures + + 1 + + name + keyword.control.each.scss + + 2 + + name + punctuation.definition.keyword.css + + + end + (?={) + name + meta.at-rule.each.scss + patterns + + + match + \b(in|\,)\b + name + keyword.control.operator + + + include + #variable + + + include + #property_values + + + include + $self + + + + else + + begin + \s*((@)(else)\b) + captures + + 1 + + name + keyword.control.else.scss + + 2 + + name + punctuation.definition.keyword.css + + + end + (?={) + name + meta.at-rule.else.scss + patterns + + + include + #logical_operators + + + include + #variable + + + include + #property_values + + + + extend + + begin + \s*((@)(extend)\b) + 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 + #variable + + + include + #selectors + + + + flow_control + + patterns + + + include + #if + + + include + #else + + + include + #warn + + + include + #for + + + include + #while + + + include + #each + + + include + #return + + + + for + + begin + \s{0,}((@)(for)\b) + captures + + 1 + + name + keyword.control.for.scss + + 2 + + name + punctuation.definition.keyword.css + + + end + (?={) + name + meta.at-rule.for.scss + patterns + + + match + (\=\=|\!\=|\<\=|\>\=|\<|\>|from|through) + name + keyword.control.operator + + + include + #variable + + + include + #property_values + + + include + $self + + + + function_attributes + + patterns + + + match + : + name + punctuation.definition + + + include + #general + + + include + #property_values + + + comment + We even have error highlighting <3 + match + [=\{\}\?\;\@] + name + invalid.illegal + + + + functions + + patterns + + + begin + ([\w-]{1,})(\()\s* + beginCaptures + + 1 + + name + support.function.misc.css + + 2 + + name + punctuation.section.function.css + + + end + (\)) + endCaptures + + 1 + + name + punctuation.section.function.css + + + patterns + + + include + #parameters + + + + + match + ([\w-]{1,}) + name + support.function.misc.css + + + + general + + comment + Stuff that should be everywhere + patterns + + + include + #variable + + + include + #comment_block + + + include + #comment_line + + + + if + + begin + \s{0,}((@)(if)\b) + captures + + 1 + + name + keyword.control.if.scss + + 2 + + name + punctuation.definition.keyword.css + + + end + (?={) + name + meta.at-rule.if.scss + patterns + + + include + #logical_operators + + + include + #variable + + + include + #property_values + + + + import + + begin + \s*((@)(import)\b) + 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 + #variable + + + include + #string_single + + + include + #string_double + + + include + #functions + + + + include + + begin + \s*((@)(include)\b) + captures + + 1 + + name + keyword.control.at-rule.import.css + + 2 + + name + punctuation.definition.keyword.css + + + end + \s*((?=;|\})) + name + meta.at-rule.include.css + patterns + + + include + #functions + + + + interpolation + + begin + #\{ + end + \} + name + variable.interpolation.scss + patterns + + + include + #property_values + + + include + #variable + + + + logical_operators + + match + (\=\=|\!\=|\<\=|\>\=|\<|\>|not|or|and) + name + keyword.control.operator + + parameters + + patterns + + + include + #variable + + + include + #property_values + + + include + #comment_line + + + include + #comment_block + + + match + [^'",) \t]+ + name + variable.parameter.url.css + + + match + , + name + punctuation.css + + + + property_list + + begin + \{ + captures + + 0 + + name + punctuation.section.property-list.css + + + end + \} + name + meta.property-list.css + patterns + + + include + #flow_control + + + include + #rules + + + + property_name + + comment + Reversal order is important; KEEP IT. Also when adding new properties add them to the error checker below! + match + \b(z-index|y|x|wrap|word-wrap|word-spacing|word-break|word|width|widows|white-space-collapse|white-space|white|weight|volume|voice-volume|voice-stress|voice-rate|voice-pitch-range|voice-pitch|voice-family|voice-duration|voice-balance|voice|visibility|vertical-align|variant|user-select|up|unicode-bidi|unicode|trim|transition-timing-function|transition-property|transition-duration|transition-delay|transition|transform|top-width|top-style|top-right-radius|top-left-radius|top-color|top|timing-function|text-wrap|text-transform|text-shadow|text-replace|text-outline|text-justify|text-indent|text-height|text-emphasis|text-decoration|text-align-last|text-align|text|target-position|target-new|target-name|target|table-layout|tab-side|style-type|style-position|style-image|style|string-set|stretch|stress|stacking-strategy|stacking-shift|stacking-ruby|stacking|speed|speech-rate|speech|speak-punctuation|speak-numeral|speak-header|speak|span|spacing|space-collapse|space|sizing|size-adjust|size|shadow|rule-width|rule-style|rule-color|rule|ruby-span|ruby-position|ruby-overhang|ruby-align|ruby|rows|rotation-point|rotation|role|right-width|right-style|right-color|right|richness|rest-before|rest-after|rest|resource|resolution|resize|reset|replace|repeat|rendering-intent|rate|radius|quotes|punctuation-trim|punctuation|property|profile|presentation-level|presentation|position|point|play-state|play-during|play-count|pitch-range|pitch|phonemes|pause-before|pause-after|pause|page-policy|page-break-inside|page-break-before|page-break-after|page|padding-top|padding-right|padding-left|padding-bottom|padding|pack|overhang|overflow-y|overflow-x|overflow-style|overflow|outline-width|outline-style|outline-offset|outline-color|outline|orphans|origin|orientation|orient|ordinal-group|opacity|offset|numeral|new|nav-up|nav-right|nav-left|nav-index|nav-down|nav|name|move-to|model|min-width|min-height|min|max-width|max-height|max|marquee-style|marquee-speed|marquee-play-count|marquee-direction|marquee|marks|mark-before|mark-after|mark|margin-top|margin-right|margin-left|margin-bottom|margin|list-style-type|list-style-position|list-style-image|list-style|list|lines|line-stacking-strategy|line-stacking-shift|line-stacking-ruby|line-stacking|line-height|line|level|letter-spacing|length|left-width|left-style|left-color|left|label|justify|iteration-count|inline-box-align|initial-value|initial-size|initial-before-align|initial-before-adjust|initial-after-align|initial-after-adjust|index|indent|increment|image-resolution|image-orientation|image|icon|hyphens|hyphenate-resource|hyphenate-lines|hyphenate-character|hyphenate-before|hyphenate-after|hyphenate|height|header|hanging-punctuation|grid-rows|grid-columns|grid|gap|font-weight|font-variant|font-style|font-stretch|font-size-adjust|font-size|font-family|font|float-offset|float|flex-group|flex|fit-position|fit|fill|family|empty-cells|emphasis|elevation|duration|drop-initial-value|drop-initial-size|drop-initial-before-align|drop-initial-before-adjust|drop-initial-after-align|drop-initial-after-adjust|drop|down|dominant-baseline|display-role|display-model|display|direction|delay|decoration-break|decoration|cursor|cue-before|cue-after|cue|crop|counter-reset|counter-increment|counter|count|content|columns|column-width|column-span|column-rule-width|column-rule-style|column-rule-color|column-rule|column-gap|column-fill|column-count|column-break-before|column-break-after|column|color-profile|color|collapse|clip|clear|character|caption-side|break-inside|break-before|break-after|break|box-sizing|box-shadow|box-pack|box-orient|box-ordinal-group|box-lines|box-flex-group|box-flex|box-direction|box-decoration-break|box-align|box|bottom-width|bottom-style|bottom-right-radius|bottom-left-radius|bottom-color|bottom|border-width|border-top-width|border-top-style|border-top-right-radius|border-top-left-radius|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-radius|border-length|border-left-width|border-left-style|border-left-color|border-left|border-image|border-color|border-collapse|border-bottom-width|border-bottom-style|border-bottom-right-radius|border-bottom-left-radius|border-bottom-color|border-bottom|border|bookmark-target|bookmark-level|bookmark-label|bookmark|binding|bidi|before|baseline-shift|baseline|balance|background-size|background-repeat|background-position|background-origin|background-image|background-color|background-clip|background-break|background-attachment|background|azimuth|attachment|appearance|animation-timing-function|animation-play-state|animation-name|animation-iteration-count|animation-duration|animation-direction|animation-delay|animation|alignment-baseline|alignment-adjust|alignment|align-last|align|after|adjust)\b + name + support.type.property-name.css + + property_name_error + + match + (?<![a-z-])(?!z-index\b|y\b|x\b|wrap\b|word-wrap\b|word-spacing\b|word-break\b|word\b|width\b|widows\b|white-space-collapse\b|white-space\b|white\b|weight\b|volume\b|voice-volume\b|voice-stress\b|voice-rate\b|voice-pitch-range\b|voice-pitch\b|voice-family\b|voice-duration\b|voice-balance\b|voice\b|visibility\b|vertical-align\b|variant\b|user-select\b|up\b|unicode-bidi\b|unicode\b|trim\b|transition-timing-function\b|transition-property\b|transition-duration\b|transition-delay\b|transition\b|transform\b|top-width\b|top-style\b|top-right-radius\b|top-left-radius\b|top-color\b|top\b|timing-function\b|text-wrap\b|text-transform\b|text-shadow\b|text-replace\b|text-outline\b|text-justify\b|text-indent\b|text-height\b|text-emphasis\b|text-decoration\b|text-align-last\b|text-align\b|text\b|target-position\b|target-new\b|target-name\b|target\b|table-layout\b|tab-side\b|style-type\b|style-position\b|style-image\b|style\b|string-set\b|stretch\b|stress\b|stacking-strategy\b|stacking-shift\b|stacking-ruby\b|stacking\b|speed\b|speech-rate\b|speech\b|speak-punctuation\b|speak-numeral\b|speak-header\b|speak\b|span\b|spacing\b|space-collapse\b|space\b|sizing\b|size-adjust\b|size\b|shadow\b|rule-width\b|rule-style\b|rule-color\b|rule\b|ruby-span\b|ruby-position\b|ruby-overhang\b|ruby-align\b|ruby\b|rows\b|rotation-point\b|rotation\b|role\b|right-width\b|right-style\b|right-color\b|right\b|richness\b|rest-before\b|rest-after\b|rest\b|resource\b|resolution\b|resize\b|reset\b|replace\b|repeat\b|rendering-intent\b|rate\b|radius\b|quotes\b|punctuation-trim\b|punctuation\b|property\b|profile\b|presentation-level\b|presentation\b|position\b|point\b|play-state\b|play-during\b|play-count\b|pitch-range\b|pitch\b|phonemes\b|pause-before\b|pause-after\b|pause\b|page-policy\b|page-break-inside\b|page-break-before\b|page-break-after\b|page\b|padding-top\b|padding-right\b|padding-left\b|padding-bottom\b|padding\b|pack\b|overhang\b|overflow-y\b|overflow-x\b|overflow-style\b|overflow\b|outline-width\b|outline-style\b|outline-offset\b|outline-color\b|outline\b|orphans\b|origin\b|orientation\b|orient\b|ordinal-group\b|opacity\b|offset\b|numeral\b|new\b|nav-up\b|nav-right\b|nav-left\b|nav-index\b|nav-down\b|nav\b|name\b|move-to\b|model\b|min-width\b|min-height\b|min\b|max-width\b|max-height\b|max\b|marquee-style\b|marquee-speed\b|marquee-play-count\b|marquee-direction\b|marquee\b|marks\b|mark-before\b|mark-after\b|mark\b|margin-top\b|margin-right\b|margin-left\b|margin-bottom\b|margin\b|list-style-type\b|list-style-position\b|list-style-image\b|list-style\b|list\b|lines\b|line-stacking-strategy\b|line-stacking-shift\b|line-stacking-ruby\b|line-stacking\b|line-height\b|line\b|level\b|letter-spacing\b|length\b|left-width\b|left-style\b|left-color\b|left\b|label\b|justify\b|iteration-count\b|inline-box-align\b|initial-value\b|initial-size\b|initial-before-align\b|initial-before-adjust\b|initial-after-align\b|initial-after-adjust\b|index\b|indent\b|increment\b|image-resolution\b|image-orientation\b|image\b|icon\b|hyphens\b|hyphenate-resource\b|hyphenate-lines\b|hyphenate-character\b|hyphenate-before\b|hyphenate-after\b|hyphenate\b|height\b|header\b|hanging-punctuation\b|grid-rows\b|grid-columns\b|grid\b|gap\b|font-weight\b|font-variant\b|font-style\b|font-stretch\b|font-size-adjust\b|font-size\b|font-family\b|font\b|float-offset\b|float\b|flex-group\b|flex\b|fit-position\b|fit\b|fill\b|family\b|empty-cells\b|emphasis\b|elevation\b|duration\b|drop-initial-value\b|drop-initial-size\b|drop-initial-before-align\b|drop-initial-before-adjust\b|drop-initial-after-align\b|drop-initial-after-adjust\b|drop\b|down\b|dominant-baseline\b|display-role\b|display-model\b|display\b|direction\b|delay\b|decoration-break\b|decoration\b|cursor\b|cue-before\b|cue-after\b|cue\b|crop\b|counter-reset\b|counter-increment\b|counter\b|count\b|content\b|columns\b|column-width\b|column-span\b|column-rule-width\b|column-rule-style\b|column-rule-color\b|column-rule\b|column-gap\b|column-fill\b|column-count\b|column-break-before\b|column-break-after\b|column\b|color-profile\b|color\b|collapse\b|clip\b|clear\b|character\b|caption-side\b|break-inside\b|break-before\b|break-after\b|break\b|box-sizing\b|box-shadow\b|box-pack\b|box-orient\b|box-ordinal-group\b|box-lines\b|box-flex-group\b|box-flex\b|box-direction\b|box-decoration-break\b|box-align\b|box\b|bottom-width\b|bottom-style\b|bottom-right-radius\b|bottom-left-radius\b|bottom-color\b|bottom\b|border-width\b|border-top-width\b|border-top-style\b|border-top-right-radius\b|border-top-left-radius\b|border-top-color\b|border-top\b|border-style\b|border-spacing\b|border-right-width\b|border-right-style\b|border-right-color\b|border-right\b|border-radius\b|border-length\b|border-left-width\b|border-left-style\b|border-left-color\b|border-left\b|border-image\b|border-color\b|border-collapse\b|border-bottom-width\b|border-bottom-style\b|border-bottom-right-radius\b|border-bottom-left-radius\b|border-bottom-color\b|border-bottom\b|border\b|bookmark-target\b|bookmark-level\b|bookmark-label\b|bookmark\b|binding\b|bidi\b|before\b|baseline-shift\b|baseline\b|balance\b|background-size\b|background-repeat\b|background-position\b|background-origin\b|background-image\b|background-color\b|background-clip\b|background-break\b|background-attachment\b|background\b|azimuth\b|attachment\b|appearance\b|animation-timing-function\b|animation-play-state\b|animation-name\b|animation-iteration-count\b|animation-duration\b|animation-direction\b|animation-delay\b|animation\b|alignment-baseline\b|alignment-adjust\b|alignment\b|align-last\b|align\b|after\b|adjust\b)[a-z\-\_]+ + name + invalid.illegal + + property_names + + patterns + + + include + #property_name + + + include + #property_name_error + + + + property_values + + comment + Stuff that should only be available on values. + patterns + + + include + #string_single + + + include + #string_double + + + include + #constant_functions + + + include + #constant_sass_functions + + + include + #constant_hex + + + include + #constant_rgb + + + include + #constant_rgb_percentage + + + include + #constant_important + + + include + #constant_unit + + + include + #constant_property_value + + + include + #constant_number + + + include + #constant_font + + + include + #constant_color + + + include + #constant_depracated_color + + + include + #constant_mathematical_symbols + + + + return + + begin + \s*((@)(return)\b) + captures + + 1 + + name + keyword.control.return.scss + + 2 + + name + punctuation.definition.keyword.css + + + end + \s*((?=;)) + name + meta.at-rule.return.scss + patterns + + + include + #variable + + + include + #property_values + + + + rules + + patterns + + + include + #general + + + include + #extend + + + include + #include + + + include + #selectors + + + begin + (?<![-a-z])(?=[-a-z]) + end + $|(?![-a-z]) + name + meta.property-name.css + patterns + + + include + #property_names + + + include + #include + + + + + begin + (:)\s{0,}(?!(\s{0,}{)) + beginCaptures + + 1 + + name + punctuation.separator.key-value.css + + + comment + Kuroir: fixed nested elements for sass. + end + \s*(;|(?=\})) + endCaptures + + 1 + + name + punctuation.terminator.rule.css + + + name + meta.property-value.css + patterns + + + include + #general + + + include + #property_values + + + + + + selector_attribute + + 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 + + selector_class + + captures + + 1 + + name + punctuation.definition.entity.css + + + match + (\.)[a-zA-Z0-9_-]+ + name + entity.other.attribute-name.class.css + + selector_entities + + match + \b(a|abbr|address|area|article|aside|audio|b|base|bdo|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|div|dl|dt|em|embed|fieldset|figcaption|figure|footer|form|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|keygen|kbd|label|legend|li|link|map|mark|menu|meta|meter|nav|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|samp|script|section|select|small|source|span|strong|style|sub|summary|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|ul|var|video)\b + name + entity.name.tag.css + + selector_id + + captures + + 1 + + name + punctuationctuation.definition.entity.css + + + match + (#)[a-zA-Z][a-zA-Z0-9_-]* + name + entity.other.attribute-name.id.css + + selector_pseudo_class + + captures + + 1 + + name + punctuation.definition.entity.css + + + match + (:)\b(link|visited|hover|active|focus|target|lang|disabled|enabled|checked|indeterminate|root|nth-child()|nth-last-child()|nth-of-type()|nth-last-of-type()|first-child|last-child|first-of-type|last-of-type|only-child|only-of-type|empty|not|valid|invalid)\b + name + entity.other.attribute-name.pseudo-class.css + + selector_pseudo_element + + captures + + 1 + + name + punctuation.definition.entity.css + + + match + (:+)\b(after|before|first-letter|first-line|selection)\b + name + entity.other.attribute-name.pseudo-element.css + + selectors + + comment + Stuff for Selectors. + patterns + + + include + #selector_entities + + + include + #selector_class + + + include + #selector_id + + + include + #selector_pseudo_class + + + include + #tag_wildcard + + + include + #tag_parent_reference + + + include + #selector_pseudo_element + + + include + #selector_attribute + + + + 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 + + + + tag_parent_reference + + match + \& + name + entity.name.tag.reference.css + + tag_wildcard + + match + \* + name + entity.name.tag.wildcard.css + + variable + + patterns + + + include + #variables + + + include + #interpolation + + + + variable_setting + + begin + (\$[\w\-]+)\s{0,}(:) + captures + + 1 + + name + variable + + 2 + + name + punctuation + + + end + ; + name + meta.set.variable + patterns + + + include + #property_values + + + include + #variable + + + + variables + + captures + + 1 + + name + variable.scss + + + match + (\s*)(\$[a-zA-Z0-9_-]+) + name + variable.scss + + warn + + begin + \s*((@)(warn|debug)\b) + captures + + 1 + + name + keyword.control.warn.scss + + 2 + + name + punctuation.definition.keyword.css + + + end + (?=\;) + name + meta.at-rule.warn.scss + patterns + + + include + #variable + + + include + #string_double + + + include + #string_single + + + + while + + begin + \s{0,}((@)(while)\b) + captures + + 1 + + name + keyword.control.while.scss + + 2 + + name + punctuation.definition.keyword.css + + + end + (?={) + name + meta.at-rule.while.scss + patterns + + + include + #logical_operators + + + include + #variable + + + include + #property_values + + + include + $self + + + + + scopeName + source.scss + uuid + 3D9ADE5E-ADC5-460F-97B3-B61EF5A18273 + + diff --git a/User/SCSS/Syntaxes/SCSS.tmLanguage.cache b/User/SCSS/Syntaxes/SCSS.tmLanguage.cache new file mode 100644 index 0000000..d41fbcb Binary files /dev/null and b/User/SCSS/Syntaxes/SCSS.tmLanguage.cache differ diff --git a/User/SCSS/info.plist b/User/SCSS/info.plist new file mode 100755 index 0000000..2998439 --- /dev/null +++ b/User/SCSS/info.plist @@ -0,0 +1,1141 @@ + + + + + mainMenu + + items + + 4840118A-6B99-4CE1-81F6-5C562746B30F + 72FCF980-01F6-4DEB-BFD6-B38A7B9A099D + 0B4B217F-8C3C-42E3-BC46-EAF5CD36C559 + + submenus + + 02578212-9649-4D06-AC87-E4C07A189221 + + items + + 1080188A-9C38-4C12-9894-C5BE8CB2763E + D097CCF6-2EC9-4C53-90C1-685141D2D4DC + 2E4934A4-E5B1-49A6-A94A-71EB1F4E1839 + 8DAADBDA-36CC-447D-A456-78CA9B7AD929 + 08A8C002-8EDF-4B16-96AE-CE945A3DF4F2 + 339BCC7D-4B86-483E-8857-3C0F94D8FC2C + 9903CE17-72AE-4152-A07A-B12575B55375 + 73AD5FB9-B1CF-4A3F-92DD-C6D542D608C8 + BC897894-2754-4850-ABCF-680CC7E73479 + 5BE4C2A9-99CF-46E6-B6A0-E8CD5FE9260A + 9D6AD6FD-86B5-4126-BD26-A915C4D55125 + DD637643-EA55-4D1E-B1A1-45684368B24C + D43A79C0-DEEF-46A2-821E-3592AB1506D3 + 4C8DFA6A-B88B-4283-9A8B-69EDAAE9E54A + B711C3AB-AAED-4286-931B-06101C6FC4FD + B0D70BE2-DF85-4BF1-996A-8355877E6DD3 + EBFBA683-A227-4D85-9458-679714FE1848 + 6BF09172-C8D4-4A26-8807-EF73866C4FEF + D8FE52C4-14B5-4CF3-85A2-E43C7B593D98 + E5016D06-E405-4BB1-B8FE-80113804BAA9 + 28AEE1A4-14B3-47EF-936B-B7A687153E25 + 71CB7207-4FCA-452A-A277-458128657212 + D759212E-3972-43F8-844C-727228F53F2A + B75FE64B-C5CC-442B-9F87-AB8080C57700 + 9FC20C4E-8457-44CD-B8BC-2F10D1FAF4A7 + 51757D90-A0A0-49C7-9083-3814D952716C + CAD751B8-469D-4660-A9E5-D20F0598FABF + 68806C5B-05FB-4F8F-8B0E-E048B7EC42EE + 7ED0BEA2-E384-4E84-83EB-1839CC4F8DEF + 51A59561-4505-46CE-9830-45D277987113 + 3E9602EF-2318-4A82-B1A8-16228C6198B1 + 0B04E1A9-3C78-46D2-9A95-EA33722635A1 + 44AA9D0A-3268-4B49-B71A-FEA2CA2D6020 + + name + Sizing + + 0B4B217F-8C3C-42E3-BC46-EAF5CD36C559 + + items + + 7B3BC93B-AB9F-4387-A332-B30AEB2AAC3D + 12D2899E-572E-4EDB-AA88-F1494C87169D + 14916C6A-130D-4AF1-8515-989720DDDEC7 + ECD46162-8C51-4E8C-A859-CC0B5AD320AC + + name + Snippets + + 3F0B95A4-21FB-48B0-B3BE-F5A3C10C9849 + + items + + 309D8290-2A0C-4F05-A665-AAD048C863A8 + FEBF166E-DD43-405A-8893-D9413E6FB790 + D53B5ECC-04EA-44B7-A1F5-8B4545A6E1CD + 6764DCFD-20D0-4838-BDA0-7CE38A3AFE0C + 3A9E3BFE-2B1B-4E85-818F-93EEF8543813 + 6DE3E00B-FF35-43A6-84BC-6B2D2F164634 + F9A928E5-12F9-4F53-BF95-F0023A62B04C + 5209A772-9F37-4720-9E89-364A8A57F6E0 + + name + Special Rules + + 4840118A-6B99-4CE1-81F6-5C562746B30F + + items + + 821C1615-4A7B-462B-AC8B-EA64DA3FA08C + 84C4749D-4717-4675-AF4C-14F8B488C79F + 02578212-9649-4D06-AC87-E4C07A189221 + D51AE637-A8F7-440E-B470-7CA08030FE1F + B1B27FF0-279A-4B0D-9EEA-3ACF7969CB41 + 696C7CDD-B6A2-4AD9-B76C-5403F5F39546 + FA6FAF1C-3428-48F8-83C0-CDEFA140C04B + E99F04F4-3EB3-4EA9-A18A-72D3AED487DF + ------------------------------------ + 3F0B95A4-21FB-48B0-B3BE-F5A3C10C9849 + ------------------------------------ + 3A3F2418-B49D-4071-B3B8-FD45550E6EF1 + + name + Zen CSS 1.3 + + 696C7CDD-B6A2-4AD9-B76C-5403F5F39546 + + items + + C9D6004F-3A4A-4A37-9CDE-5C75151C0AA5 + 3AF93EA0-7A3F-4451-B4B3-CF5A18A4FE85 + DD591571-F556-4358-9D06-7D3C01AB2B81 + 3E140DA2-45D0-4A4B-8E6F-A511B70FCB06 + 987E9F6C-7F44-43A5-BF48-2E1080B86E27 + C1820F07-D821-497A-B7F7-CDB2C888EA08 + 408C4BAE-2CE1-4DF5-9C6A-E6845CF8A16A + 2893DD4F-1E95-4689-9C26-AAEC434A4852 + 3151958E-0B93-413A-90F4-4DDB5506D9A1 + 4E8EE9DD-BFFF-40C3-B339-DF2F32D371C5 + BDCECD25-D7B4-446B-87E5-E73B1668B578 + 00965FAC-D703-4B11-B2C8-8802A0CDF401 + 4305D952-FFB2-4677-8051-51EEBFB5F0CD + A45E8E7F-DA2D-4F27-BF2D-9FE80188CD48 + 6EF34F35-2D23-49CB-84D9-6E5478C4F5F9 + D5C23AB2-D465-4AB7-82F3-3FA98095770B + 26EAFCC4-7548-46BB-83DD-BFC60C824F32 + 3B223C04-ADC9-47D8-8B68-7605CC70351C + B8D51156-B1E0-4014-9D4E-3094F815CDEA + A414B3FD-2AB4-4F3C-A458-AA46F5942854 + B8C6E2C0-44B1-4233-BD6B-FA7F0B408D77 + C0D2C185-0AAD-4166-8BDF-2F9864336026 + B15DB916-8844-4B13-9AD4-253BC2B51808 + 3BF3692A-BDB6-4EFE-8862-9F6234EB0523 + 57986BF1-47A2-4C3B-8C57-770CE3246C8A + ED6209C4-53FA-4245-91B9-7D1784BBE34F + 46795A38-805F-4FD6-8189-AE048A804E5F + 1224D09C-BCFA-413A-AF4E-CF775D5E2633 + 23587C95-55AC-462F-A37C-52BE77B0B19B + D34CF394-4614-4402-8558-EA79A3051A73 + A5958FC7-BC6B-41B5-BC73-281D15FAC97F + 0C599BAE-080A-4CC9-A263-03A140FF218F + 49E97A1E-E565-4C42-BC2C-5D543A609365 + AFCFBC6D-86AB-4BDD-87D4-454F430C3B68 + 975D03B4-959F-4E52-A807-9148BD56C74A + E3653822-EAB4-45F8-BBF3-9F518680381D + FB5FE0A5-A016-4753-88DB-2AA4A9EBA3D7 + FA033663-E692-4B27-95F3-4CE45F43EA81 + 7FF859EC-E63B-404B-B2D4-B88B9593688B + C08AFBE5-74C1-4265-A41E-C8C0A5574F2F + 77078508-3BD7-4D6F-96A9-559404296643 + DE5F9DC1-D0E6-4AEE-8EC9-8CCEFEEBFA1C + 6809E9AC-366E-4155-932C-1AFC037922F6 + 119DA3C9-13BB-47F1-A106-C564506A7DCA + F6C2444C-1E64-49FA-B6C5-42988FFE60CF + 05570013-71A7-46DA-B48A-26C84EA552D9 + 10E4C398-D490-4CFE-B0DC-E711B53F9452 + 003E788D-885B-43F2-9E83-361F7F7419DA + CB461BE9-E863-4CF1-AFDC-B3B12491ADB3 + CA0AE374-B885-4FA0-ABD6-A0830E21A09D + CB4DE39D-8C4A-4723-91D8-15CFAD1BCE4B + EE500A63-E8C7-4EA8-93CF-2F7EA6A090B2 + A5060936-5F07-432C-9B33-CC4F631E254B + 452980A0-6498-4390-BF46-02B4408963E7 + 673BCE6D-0AB4-4D5A-83A3-1B31F85267F7 + 3D1C65AF-065F-4CCD-94AF-7FD39CE2F153 + EF5595BC-3387-4CD1-BDF7-6601B92873E7 + 2CB7ED3B-B21B-433A-87E2-150C0A387B8E + DBB4594B-4994-44B2-8A3E-713D44367D7B + B36A03B5-E199-4CCF-9327-819EDC49718C + 82816B1A-B6DE-42C1-91DE-49D8B8CF6F9B + C3E27230-C0A4-4A8A-9398-671C5439B690 + DFE96842-094F-401C-87A7-6629D7B76E10 + 45309F4B-255E-4BB5-A646-0AB47ABCE728 + 47AC76FB-7679-4961-855C-E924B80C3ADC + FB6419FF-D7B7-4C41-93B1-A72164A30A8A + F379F929-8082-4A52-BE33-5FE3DBB5EE39 + E29C9931-6A9E-454C-93A8-824C515D7142 + 24C4CF12-0DD4-4923-91FB-AFE99A31183C + 1E126CEA-0490-4B91-B78A-B96615BF291C + B9CE8505-630F-4FE1-8B50-944C1A1C0DE4 + 110F3EF2-6FA4-4D77-BF6D-9AF2F5974950 + E42B9EA9-410C-4D9A-B151-0BC67C7C6AEB + ADC7A0DA-1556-48CD-9091-01797AE66B9E + 9A4604A3-40B2-4BAE-AB33-758CCC916DD8 + C56ECCAF-376B-4CE6-A23D-6CEB27077FFF + 9B787391-B879-4F1B-9022-9FBC13229AC5 + AE4DBA14-BF4B-455C-B7B8-5984D552A085 + 01B375A4-D2C9-417E-8C2B-89A98443097B + F4E6877F-3B86-46F3-9924-D3601F7432A1 + 038CCB8C-AADB-4A0E-BB4E-0CF8D9E2B3A0 + B0FCB863-5692-4499-BE7A-F5E62663E12E + 91F39F58-8FB6-44DE-9EEC-35B8820E01B1 + 84A5E47F-1F24-488A-B8C7-0CECB7F7D37C + 07FBBA4F-9B89-4098-8808-FD981438EACB + 71EA8EF9-9606-4240-9B48-8A839B278BAA + 4C701C12-F746-46C3-A02F-7D5812E8C021 + 008DA70A-9F72-4C99-AC40-DFFC17E50CF3 + DECEECE4-A54E-40C8-861C-FBAABA64844F + C23E6371-20EC-44FB-A6CA-6B8A9EF8B491 + EB57425D-5987-4B0E-A481-9AF27AE7134D + 00278E21-9440-47F9-883C-E9F2A1F41610 + 4A2CEEBD-A0AB-4888-AD33-52B316E71D13 + B6752053-CA7C-401F-81F2-819BB0DF3CED + C70D2313-929C-4E8F-A458-CAAFE35DEABA + 8A190C67-A9E6-4CE3-B6C0-35278311DDE5 + 41188C3B-EBC1-4629-85E0-BC6FA190A126 + 96A6A425-C367-403B-AC27-67C80EFF3B6B + 5F037440-0D1C-4B26-95DD-9C3B0ADD27A7 + 059517C8-3237-4896-9E4A-04522EF0E818 + C049F635-C334-4341-842B-473751C73DC6 + C9CF7288-BE55-4420-8B5C-74973E666B1C + 52F70D3C-3EFC-4604-80C9-2618EBF3D27C + 6D8D0515-DAB2-45F9-A19A-479D0DC6503B + 3D5F8F6C-1C8F-4F9D-A5F1-C773158F1E1C + 771EB82D-37EF-447E-A64D-312A4B409F55 + 07067949-F14B-4CB2-BF02-E409303E1E6D + 39A9E764-2657-46BE-9004-55400900D495 + 7C4ACC8A-C73D-4F44-8535-DC087D6956F7 + D4319F71-EC21-43DB-8913-E0C435A5D023 + B19D5E9D-16B6-44E4-B6D9-2044AF64FDA8 + A3335EB0-8DD6-41BE-90A3-7A5D2C70E237 + E3B4B2B8-B3F4-4E38-A6DB-559547E6DD4F + 3C7E529E-85B2-4E03-9830-B5CC6C00FD60 + 354914B6-2A46-4418-AC73-4789AF2E4459 + 06361C22-61D0-454C-A4FF-ACDDCCD642B0 + 299B5E07-42AA-4B6F-8793-AF403AA2B958 + 3F561BD3-99F6-4DF4-8C58-625D693F03B3 + E595335F-1986-4A95-A056-A2BFA50B47A3 + 50B83814-1200-481B-A339-02EA843B290A + F47E9324-3385-417E-9CB5-C155F99183E4 + B6CB3D10-30E1-4133-96F3-CBF65DBA112E + 79EB013B-5F4D-4E77-8E78-07C1099230E7 + 860791BA-ABCF-499D-811F-2760172C1FC2 + 7DDA0B4E-82FC-4A85-89B9-014ABB28DF91 + 0CC8830C-74CC-4A1A-A450-434B0140BB60 + FF33F889-F47A-4A8B-968B-CADE5AA58186 + 8EC23DD2-0290-4CEA-95BB-02BBC8DC0372 + 581B1911-14C5-4DA2-9264-F0F633D2EB88 + 95CA5D0B-F426-4802-9A7E-AE55C15B4E01 + CEACE9FA-1F3C-4A56-B23D-92C405623E5E + 14B3B43D-CB7F-4AAF-92AC-7A93BDD2E939 + A16BC90A-6210-4FF5-A6E6-5158D382656C + 62C205E3-A0E1-47CB-887F-F929C3ACABF9 + 3B5561E5-6280-4B83-A19B-788853B4279A + 64658104-0F9F-4E30-9289-27898637B5A6 + 933644F2-F015-46A5-9D5F-001B4E7C9AD8 + 1A08030F-74AE-400F-A241-6C5CB0BF498E + 9213B7DF-39B9-4BDF-A918-8B580D3C3936 + 321A7541-2901-4497-85C5-C6437E149FB3 + 843559AD-C604-4137-8AFC-0770B77C31A3 + 05F84740-7FF7-438C-9E55-6AD30C1EC2F8 + + name + Text + + 72FCF980-01F6-4DEB-BFD6-B38A7B9A099D + + items + + 4E2E7138-69AA-4BF1-A87E-8C45DE807B10 + 49B13F70-B978-4633-AB69-8D2AB64C870E + 5AC218D8-49AC-4E26-B793-FDC7EC833F93 + D51A613E-4198-4FAB-99CC-9981EF99BE39 + + name + Tools + + 821C1615-4A7B-462B-AC8B-EA64DA3FA08C + + items + + 4995D581-00B7-4F7F-AE61-0C60463B840E + C1863A65-AB53-4008-A5AC-6C91CDDF0DFB + EE3DC389-2435-42C7-ABC8-20227F4B1DD8 + 7C797232-B8B5-47A0-8F28-6E92DF095BD7 + CDC94A74-A78C-4BC3-8A6B-2408865C62E4 + 1243A41F-C9FD-4B99-BC4A-427138625521 + 49162C26-4554-4364-9BA4-8EAD631AA0EA + D6BF089D-4DD9-4341-9FDB-E4C40B04EDF8 + 839AEAB6-D93D-4591-A953-245731CA1E80 + FC84DFE0-95EB-4CE6-AC5E-384BA6DAE9A1 + 10448931-8CB2-43BE-AA1F-D874A3C051D4 + 44E688B6-C1B8-4FB4-A84F-3C774CFD33B1 + E5E26945-BC8D-4BD1-B777-F3A72A7E33E3 + 2472511A-C6F5-477A-BFCC-DFE4A025D0CE + 440AAC5D-E7BD-4FCE-9534-69F83D259A61 + + name + Positioning + + 84C4749D-4717-4675-AF4C-14F8B488C79F + + items + + 59F6BDFD-780B-42B6-94F3-A776B1F33ED8 + AE7E22AB-C7E2-4FF3-90E2-3433467BC25C + 134D95B1-05EC-4B57-8C9A-11EF60C3DB04 + 947A2538-5E96-405D-BC10-1E25FB312BB0 + 32452505-A758-410D-BA13-2DEEB7E3AA87 + 39DDC242-F1AF-42B2-AFEB-3C489EE70798 + E64B91EC-04E9-4087-B80D-7C6246FA3997 + 2A58E83F-6654-4B0A-B702-BA59EA624AC1 + E7A715D6-ED2F-4A57-A0E2-3008C053A689 + 3AAD9757-E91F-4ACA-87E7-030A4AD5D1BD + 3BA0D354-A242-4E8A-9B28-D9D91450966D + 796D22BB-F5F7-478F-9A72-DF99887CE8A2 + 556195FA-FE2F-443A-ADA9-32E4A6DA29E9 + 110AD6B9-6695-4CE4-BC0A-5A3CC5FEF4D2 + 8242DE25-5D51-41E9-877D-6D0DE657202E + 008E95E4-ADDC-40F5-8B46-C1D5AD105678 + 449800B2-0B01-4A50-AC1C-B1A42B31BBD9 + 1CB738C3-8228-46B7-9660-227BAE4496FC + 2A5DF78A-CE15-42E1-84E4-BD996665EEE3 + 1838E519-3F77-44B3-9113-681D3BF800FC + F8823F0C-0D10-4F03-B033-725A0333B75A + F1679D5B-2E10-4002-B8EB-6CC785E1699E + 7D4E11CC-C219-4A08-9315-7841F6A2AB37 + 5977C622-D5C0-4184-99C9-87A1F9C18064 + 9FB489E4-2669-4A14-AA70-6C4C5EE1BED4 + 7CE9B2C2-2590-41D1-8BA8-617657655A24 + 93D7C4EB-093E-49DB-8C57-0A26EC9EE029 + 945488C4-EF15-48E2-A127-9E1541934AAF + 45B0001F-D2E4-4466-A33F-2C713D82F58C + 3A6EBF70-8B2C-4B7F-9052-580FC31045B0 + A1980B9C-C9A8-4CA5-942F-2253F11C76B5 + FC89BDF0-E788-441D-A8EC-135CB2468F04 + 3E0366AB-6952-449F-BE8A-8D5C55892F5A + 9F0DA7EF-CF90-4B07-95D1-85A6EF4EDBE0 + 1F7857F1-F9C4-4FFB-A10C-3EE506433AF8 + C663E761-3BCC-4F54-AA75-C7AD14CE2098 + A88C063D-188A-4569-93D7-4548EC15F1D4 + 601598D5-8E9E-4A08-98A3-13883AB042BB + 24CF9ADB-1B6D-4677-89B8-FFF6C2743FF7 + 17BDF37D-3EC0-45DF-B809-AB919DABB350 + 19B0A652-A721-43A6-A0F6-07ADE63BC33B + 951E6149-505D-4078-8524-F2AF3343A146 + B34FCE3B-CB9B-49A5-9659-76D8D1956B5B + 007FA1E3-5A69-47B9-87F5-FC785DA2AE50 + A15A7AB5-2DA8-4F79-AEB2-E05B6C06F710 + 75BBC310-75F5-49F9-96A6-D71C4BA61A81 + A745613A-4BDE-4009-BAE5-5A38E3B303E7 + 2FFB2AA1-AD84-4F2B-82D9-4EEFD1511088 + FE1B5EAB-37BE-4511-9516-96F2FFE06A35 + 80E73138-C679-409E-8BBF-9F725C993DC7 + 3489B253-67C8-4008-81BE-64DD2A879401 + 89E7EFA4-9C04-4AF5-A65B-90931A4D9622 + 44149C16-528B-495B-A2A5-F73D56AF65ED + 703F53F0-011A-48DA-9CE1-C9CF8FDDEE57 + D3512E0D-BEEF-422C-A2AE-90BA25A50D58 + 8B7D0E5E-F249-4C40-B42F-F681A314DBD4 + F6EE7622-00FA-47B8-974E-D1576CD343DA + CFD04A6C-9906-4A58-A07C-B892C3764260 + E0A867F6-9EF9-4B57-9155-28CC39C82676 + 617A37F8-7B73-4D3E-B696-5CED16579DD6 + BEC01D19-0481-4CC7-B7C9-C434307BF08C + BC9EF9B6-C679-4949-B9BC-4DFEA5D4F9F1 + 6666A60E-45F5-471B-BEF4-D9843822C887 + EE06A1BD-A2E8-44F8-97E9-C908476852DB + 338638AB-6D17-4A57-8434-B5735FA1C414 + 450E79F6-33CC-4345-BC4A-7E1AF2B0C890 + 1FF9200C-8BD4-4FB2-9BE5-C6A19E1D8E16 + 71D183AA-B286-4D30-8F73-18E9EAE6FAFF + + name + Box behavior and properties + + B1B27FF0-279A-4B0D-9EEA-3ACF7969CB41 + + items + + EC70AFCB-4A37-4C71-93B5-58E53F109885 + A532CD62-AF3E-4164-B459-C8DF1F61C64A + 8F89D55D-5A36-4449-B13E-C27EDB94773B + 36B3768B-C206-4211-94EF-FB1C6D6A4802 + D5013E7C-CCF7-4A34-A507-E5F95F044F74 + 61BDCF03-9EA3-4DA6-B170-138EB76BDC93 + A6B6397B-97BA-443B-9645-5A6542122C09 + AC96A44A-4017-4C8B-AEE6-3FF315EF93AE + 1BFA3A8A-F079-46BA-A9A2-4A2E67B24A6F + 94694041-95E4-42B0-91EB-DE48A382EA96 + 37813E1C-ED7C-4FE7-8264-6DB01A47F18A + 1CC541A7-484E-4EA4-BBEE-FC1A7043DFF6 + 41DE281C-C068-48C1-BC59-EE0E469296D9 + 97390FA1-66BC-4758-81C0-59D7C0FCE8EF + 1879161D-9A3F-4B92-A2A6-DCF0E726E5F2 + 6A3A076D-EBAF-42F1-B487-904D5A07A8B8 + 0055E3D2-C858-4F29-A15C-9DDC6D96235C + 3DEFFF4E-C70E-4FE9-8B3A-77A04A9319D4 + C3BBBA0A-706F-46CA-9158-3373537CA0A5 + AE03FF83-E5C6-4124-9106-6E43845539D1 + CA6A00EB-0DAD-4D29-AD74-684FFABEADDC + 15FCF228-8154-4B1F-A09E-FD4C7618AE9B + EB2A8CAB-8252-4087-81C6-AFB8E4917325 + EB1BC55F-46B6-4A28-8334-98B68EF14393 + 54C382CC-F506-4764-A2A5-8CA399BAFD39 + DC49198C-518D-453D-BFAA-078710F72A17 + F5ABDCB6-C5ED-4ECD-BB63-764A39974E7A + 210D8C02-4E20-422C-9FA1-D53A9002BC8E + F48DA41C-387B-4F3B-80C4-9F9320862F66 + 07EA0D89-2FD2-437F-97FE-DC9193B21C8D + 826B54EF-E777-4621-9D97-C07D8418DA79 + C41596D5-4CDC-4C5E-A913-C2C5BC3AF395 + B62F1D64-0982-4677-A0F7-23CEC8EF430A + 13F7DBE4-BB0C-4BEA-B4A9-5D895DF16761 + 9B1868B5-DE53-40DB-8E66-0FC00E0B63B4 + 7278487A-7D3A-4525-9D5C-2D739FA4D5B9 + 03E69758-7637-4086-B2BF-7803D784618E + 4A063794-9292-4458-B374-563652EF03E5 + 347F123A-D961-4ED3-936B-0BF89E998C4E + 9BF94C0B-E582-4724-BDEA-98C404840EC5 + + name + Special content types + + D51AE637-A8F7-440E-B470-7CA08030FE1F + + items + + DB88E3CB-7D8E-45AF-ABF0-0819FEC19308 + 48DEBAC3-4DDF-4749-B96E-6A86D79D57AA + 588B2C36-280A-4D4F-AA4A-BBD58F294BBB + D6AA7B1A-96F4-4E45-8EA0-8DE0FFF15BE1 + 2EA48AE5-B038-494C-9329-B2440110DE75 + 294A870E-C289-4BC6-A04B-4078513A5F15 + 64E30825-2648-4427-8008-3FD2672C239C + 635DC94A-A7A3-4018-88C1-2D98C37B0960 + E28DF25E-B16E-4920-935D-ED76CCA445CD + FED3811D-2C43-43DD-BCEF-46B7026E41DC + 839F03F7-B086-4E03-9828-56C0F8AC97F7 + 734D5349-1050-449B-AA2C-6C3522E1D7DA + C5205052-BAF0-425F-9330-D187B2AAE536 + 59C1F7A1-BEA2-4B1C-B7CC-E02B91A0EB0C + D90CDDC9-D383-4BC6-BDE7-D6E7BF2E91F6 + F24B40BF-EA0D-4F97-9E00-B65837FF89E5 + 6F4BE275-5F96-4714-A839-EBE0B013235E + 7195242D-3E38-4ECD-AC0F-98E957FE9E9C + A8F7FAAF-0F20-4D29-8D84-998BB4D9DD54 + 92049B1D-7496-40AF-B9E2-1235344F32FE + 7B13BC8C-44A3-45FD-83B9-85E99D2BDE45 + 1AE757B8-B07F-481D-99B5-BA246B57CB98 + 1905AA99-D3ED-49E7-919C-D65BB3C2039E + 4961A72F-157B-447E-ABDD-C5941E72A5CB + 65782175-A5A6-4D50-B4A2-6D991BB11C1C + A951CB75-1561-48DE-9AAD-550339451F18 + 15D9C3A7-D61B-41B6-9949-CBC556B1D4BC + 98DA651F-3657-48E8-8149-2CAD0D47580E + 42434F81-B974-4375-949A-B8FF8E50A732 + E93316E8-CADA-44F1-A8C5-2F6978C5B0DA + 7C4FACD9-306E-46C0-B15B-0E120B6BA820 + 3EF3D53E-350B-4006-B559-DD3E38E57B0F + 5FAE9D2A-E39C-4172-B7E9-ED15AC9B57F5 + 997A65FF-134E-47F4-BE7F-43EB314B82C5 + 26B1FCE9-4E69-4553-8EE7-1C9E85700FC9 + A9CE5172-06B9-4A1A-86D7-D4E0C9C122FA + 9B9E2B4C-3176-4BC3-A59A-9B71EBD583DF + 5AE2194E-C5AB-455B-BA01-B3A2847B0CA0 + D10808DC-629B-424E-B803-15FBDC742C8D + 7F984E4B-28B2-4038-9BFD-B95D2F19E068 + 55E02FFC-8702-4BEF-9EF6-F2B30C100CD9 + AE69F7A3-2112-485D-B82A-2758C16A0D43 + FF246B45-9A8D-44D1-866C-6B8E2E54C84A + 3117DF77-F206-43E5-8BA7-FD0D10380DC5 + 25918D08-F55C-4A58-8E31-056C8AD6C819 + A7CA4FF4-BA99-47C9-BAF7-94D5A96E92EE + C1BC2C37-0BB4-4EF5-A7CD-F9260112187E + 4D43DF0B-03E1-4230-83E5-113A0FB0E161 + A4179B7B-339D-45AF-B1B5-907FECFADCA1 + A334F691-380C-4BC5-9FD8-C50EA4A403EC + 0FBDC1AC-4193-4451-B4B7-92F8EA307BF2 + C1425DE1-C2D3-4C86-9080-807E9A7411FA + D802C19F-9BAA-4524-943A-1742218E1300 + 8E4A65CB-D991-4914-96D3-19DDF8765E5C + 03744DC2-E12C-46B3-B79E-641B06304DB0 + C72D4E02-BC7E-4C9A-93B0-B623A66C021A + 3B285BD0-EA81-417F-BEE2-F0B179D92CEE + 9CB813B3-8F33-4AF6-9484-C206F676241D + C93F8870-E7B1-4692-BA30-0005E340EC7F + F8D440A3-3665-4485-AB00-5B2A4BAA6063 + 56EB08FB-AE75-463D-8A50-4E538ED8707F + 2675AC70-8EDE-4E67-B1C8-033842F09AA5 + E9B94D8C-C469-4213-80FF-B7E53A3BA842 + 068F33EE-E951-4063-889B-F07AB81A2395 + 252AEF9F-1950-41EA-9B2B-D8A50F8D6C06 + 20E0C775-59B6-4713-8F75-5CBC721BA5FF + 0C56435A-EE7D-4BCE-9F1D-3FF566C03419 + 114F410E-694B-4B50-A1F4-FC39F40A00BB + 5A365B5E-4FBA-4ED4-A2D3-44F84EF9B785 + DFE0BA49-A15E-453D-B569-13235F50C01B + 7BA2FDD1-BD38-40A0-9392-BCFEF266F734 + A1C19C00-252C-4A90-AB4C-3CC1EF940022 + 834B6036-9F77-4429-B7B2-B0485B5E3865 + 947092A4-8C96-463B-8719-92E7533C23C6 + 2016B586-2B8A-4318-BD04-E797713A0AA4 + 6BD90474-97D9-4837-A947-9B84636C8132 + 5DB7572B-63EB-48D4-85EE-653DA09BB9B5 + D6CFB5F7-FE22-444F-8AA0-20FA2EC2169E + 2EF99388-B457-4DE9-ADE9-77C0A3CC51B6 + 92825489-6315-4AE3-A635-608C36D4AF70 + ACA282D8-4DB5-4D21-AFAE-5FD40C53CF52 + BF2107F8-CF7D-4C0E-9034-FB0B475E6EAA + AB70165C-D913-4B1C-A8A2-7CFB073EF00D + 2BFBFF22-14F8-4291-B8F6-259F5D7CDCF3 + 86D84DC4-5E95-44F3-921E-06F2E1C19B7A + 563EDE29-D989-4949-A503-1A9D58C0B4A4 + 48AD688F-B565-4F3F-B843-C56EBCF40967 + AED7BC17-352A-4F2C-8A3F-AC8F84DF1417 + 871B7A4C-5497-4BE9-BB61-C6F66583325D + 17635E5F-D9B5-4FD7-898F-95F6DE070B68 + 0522E9AB-523A-485B-B92D-99F6CB3AE475 + 74094EF2-9DEB-4A41-A11B-B6F2E73E7BE5 + 42AF3B2C-936B-4113-A69A-42CDE9A1A648 + 6329EFDD-952F-4212-B800-5D4DE87D2575 + 13B9F5DC-0C45-437F-BD20-F1724195C89A + 7EF9D2B9-1E99-4F90-A79C-9618859662F1 + 84D0C8FD-BC4F-42F7-8C6B-ED4DE9178EFF + E7E95DAE-17AA-4F14-8B43-E91EE65B6A28 + B7D8C55C-7837-4C48-B19A-4034465821F1 + FAFE06D0-F889-405E-B72B-CC7266AF2A6C + 01A12AD1-DDAD-4A9E-B900-5994E3EABF8D + C4754886-04FA-4E61-BBA4-7B0698EB5A96 + 91FF13E9-BC46-4385-A9BD-C176B4278C96 + 7E7A8BFF-D31E-4275-8206-FC4C3C969069 + 15BA4ED2-103D-4978-9381-AD46328C2706 + C749D661-58CC-4F01-A885-18FC2B464B5E + 0D6354D0-B50E-47A8-9F42-C9B452660340 + 62031007-EDDA-478E-A1F4-65D70D71DEC8 + E73DE3B4-8468-455C-ACBC-BC4EE000530E + FEAD3367-6C47-4B7F-889C-0B4D7C40BF0C + EFEB52CB-5960-44D1-A677-E56C2815AE10 + E51DD35D-7B9E-42CB-817A-9B1F1D9FFC2F + F4BB08E6-8CAF-4AAB-9752-B8D6762B80F3 + E8E96B1A-E0A6-4A95-84AB-246F2A1FCCC1 + 4A1FD09E-B6C4-49B1-85F7-F25C6F09D071 + A9744780-A070-4980-847A-010FE03CEEA1 + 42E8DE2F-B8E5-4779-9769-91961E0F6382 + 0A806D02-94FD-4271-9367-09711C38C30E + FCEA64D5-569C-470C-BE79-17A1127FC405 + AF2EBE8E-721B-4438-98CE-B0437E31F6BD + 4D2583A6-6258-4ECC-9E43-6494F8BB340E + D6051841-F579-4026-AE86-60511FDC602A + 458984E3-1070-44B4-AD3C-5FC254EE5D37 + E5153EAD-30A3-4153-8FD6-F6AFB368504D + 01481A99-083A-4D72-826C-28E183162A15 + 738D77E1-960C-41E3-A6D2-095C3A6DF6F8 + ECB7388B-AA06-4627-8E0C-9D8FB09F6103 + 7E64C4E8-23F6-40AE-931E-67763CB38DF0 + CD4D31DE-BD8B-484E-86F1-9949D45C8662 + 16CFCDDC-6CE4-4250-8287-2FED456C1D84 + 2932AFB5-B981-44BA-9296-4E7CC0958F48 + 7EC8ADE5-3C71-4D0F-B761-133E363AFD6D + E479577E-2A46-410B-ACD1-2B8FFB744958 + 8A674757-D6D0-41BA-AC66-A2848B71E266 + 5D956FDB-7DB3-4D57-9709-DC31DAB7BFB9 + DFB09CF8-E37C-47D2-982F-F15F6981ADE3 + 26E770F1-034F-48E4-A163-5A348E41DB0F + A080EA27-F81A-4CC9-B1B7-266B5BE64551 + 5E97B0BC-92F4-4F62-978F-FABEB1294E48 + 162C1170-5B08-470B-94EF-7A9F12E27358 + FF7E1A63-8B40-4870-8962-44EB943A3E3C + 0E023788-4190-4758-AF4E-E486E891855B + 9E9D78F4-16C0-4631-9A94-10941215B25C + + name + Color appearance + + E99F04F4-3EB3-4EA9-A18A-72D3AED487DF + + items + + 337788B7-568D-4CCF-9F6F-5377D000153C + 32B7E204-3F61-4AD8-AB22-FA6F4F1EDD3F + FFDF8948-B564-4463-B463-EEB711654C7D + 86A0407F-CB04-46A7-85E0-4115270F5FF4 + 423E71F0-585A-4929-8C2B-7B930BF972BA + 3DE07EEF-901A-455C-BB6D-31F5D2D6FAF5 + 77D1F161-0182-4070-92DE-58A112DC4272 + DDC9232D-A22E-46FC-9A74-83F1B447C646 + 74A66D4C-000A-4412-8B69-B21C8219B1F2 + 86B1D5DB-FB20-40ED-BEA8-7179EAC573A1 + 0CC890BA-3438-48D9-86F0-BA16E90E7BF5 + 6FD2F0EB-19B6-4072-BFD0-FDA68961219B + 3526BE51-484A-4E7D-BD93-46288B73F636 + E97DCD82-E576-4389-A1D0-4E5D45F9A787 + 7D91D7E0-853B-4C8F-B72A-0B20DF743741 + + name + Print + + FA6FAF1C-3428-48F8-83C0-CDEFA140C04B + + items + + 90999887-AA0E-44BE-8ACC-AEDFAC27AA8F + D747803E-BDC4-4332-96C2-63E103779BD0 + 850268F2-92DC-4EF5-BB4B-1059EAD69EC8 + 8A44056C-4463-495A-A090-BDBC4282D836 + E535A75D-D6EE-43A9-94B0-78AFBDBA5E86 + 05462102-08F4-4C00-A136-26E577426BC5 + C9D86B5F-CA7D-4B20-BB93-CDF2899EE2F7 + E011EA0A-390C-4750-B993-D531707E8C2E + EC92F076-5CFF-4372-9879-ABD30ABA82B5 + 0F86244F-9C36-4899-A126-4CA5BF6E7B2B + 768F9215-4D5B-4F12-85A9-97ACA841EFCE + 6FAF6C4A-F185-4A69-B639-9F32CB5BF25C + 2A8F018F-2D65-4EBE-9B33-47FF8E89350A + 85DDFE3F-DED2-4B73-BA61-A2780DD42375 + 3DB48E78-EB11-4109-BD14-C62FC12972B8 + 14E43793-C0F0-42DB-9670-8020F01AD4F0 + 99BD3BE7-3AEB-4CDF-B3C3-939C046F8F1E + + name + Visual properties + + + + name + SCSS + Zen + ordering + + 3D9ADE5E-ADC5-460F-97B3-B61EF5A18273 + CDB401D2-F840-475E-BAB2-83D43236F460 + 11D969E1-6E76-47B2-9BAE-B5545064AB31 + 5A98FD1D-9FB8-4EA5-9006-618E1A3F4122 + F70FC4B9-B632-4E6A-B4BB-38F7DF47A2BF + FE87A88E-73FB-41EA-8A1E-9F7681C0F25A + B407385D-9891-4822-B06D-B82DBB6B98F0 + FCC5C2D2-A56A-49DF-958C-BCECB5F24D74 + 58AB9A66-307B-4214-B0C8-D31B9BEC0372 + 081DA7F0-1501-42D3-A287-3411457F4D62 + 309D8290-2A0C-4F05-A665-AAD048C863A8 + FEBF166E-DD43-405A-8893-D9413E6FB790 + 6764DCFD-20D0-4838-BDA0-7CE38A3AFE0C + 3A9E3BFE-2B1B-4E85-818F-93EEF8543813 + 6DE3E00B-FF35-43A6-84BC-6B2D2F164634 + F9A928E5-12F9-4F53-BF95-F0023A62B04C + EAA6783F-00F0-4F9B-8C83-07DC775C92F9 + 5209A772-9F37-4720-9E89-364A8A57F6E0 + 4995D581-00B7-4F7F-AE61-0C60463B840E + C1863A65-AB53-4008-A5AC-6C91CDDF0DFB + EE3DC389-2435-42C7-ABC8-20227F4B1DD8 + 7C797232-B8B5-47A0-8F28-6E92DF095BD7 + CDC94A74-A78C-4BC3-8A6B-2408865C62E4 + 1243A41F-C9FD-4B99-BC4A-427138625521 + 49162C26-4554-4364-9BA4-8EAD631AA0EA + D6BF089D-4DD9-4341-9FDB-E4C40B04EDF8 + 839AEAB6-D93D-4591-A953-245731CA1E80 + FC84DFE0-95EB-4CE6-AC5E-384BA6DAE9A1 + 10448931-8CB2-43BE-AA1F-D874A3C051D4 + 44E688B6-C1B8-4FB4-A84F-3C774CFD33B1 + E5E26945-BC8D-4BD1-B777-F3A72A7E33E3 + 2472511A-C6F5-477A-BFCC-DFE4A025D0CE + 440AAC5D-E7BD-4FCE-9534-69F83D259A61 + 59F6BDFD-780B-42B6-94F3-A776B1F33ED8 + AE7E22AB-C7E2-4FF3-90E2-3433467BC25C + 134D95B1-05EC-4B57-8C9A-11EF60C3DB04 + 947A2538-5E96-405D-BC10-1E25FB312BB0 + 32452505-A758-410D-BA13-2DEEB7E3AA87 + 39DDC242-F1AF-42B2-AFEB-3C489EE70798 + E64B91EC-04E9-4087-B80D-7C6246FA3997 + 2A58E83F-6654-4B0A-B702-BA59EA624AC1 + E7A715D6-ED2F-4A57-A0E2-3008C053A689 + 3AAD9757-E91F-4ACA-87E7-030A4AD5D1BD + 3BA0D354-A242-4E8A-9B28-D9D91450966D + 796D22BB-F5F7-478F-9A72-DF99887CE8A2 + 556195FA-FE2F-443A-ADA9-32E4A6DA29E9 + 110AD6B9-6695-4CE4-BC0A-5A3CC5FEF4D2 + 8242DE25-5D51-41E9-877D-6D0DE657202E + 008E95E4-ADDC-40F5-8B46-C1D5AD105678 + 449800B2-0B01-4A50-AC1C-B1A42B31BBD9 + 1CB738C3-8228-46B7-9660-227BAE4496FC + 2A5DF78A-CE15-42E1-84E4-BD996665EEE3 + 1838E519-3F77-44B3-9113-681D3BF800FC + F8823F0C-0D10-4F03-B033-725A0333B75A + F1679D5B-2E10-4002-B8EB-6CC785E1699E + 7D4E11CC-C219-4A08-9315-7841F6A2AB37 + 5977C622-D5C0-4184-99C9-87A1F9C18064 + 9FB489E4-2669-4A14-AA70-6C4C5EE1BED4 + 7CE9B2C2-2590-41D1-8BA8-617657655A24 + 93D7C4EB-093E-49DB-8C57-0A26EC9EE029 + 945488C4-EF15-48E2-A127-9E1541934AAF + 45B0001F-D2E4-4466-A33F-2C713D82F58C + 3A6EBF70-8B2C-4B7F-9052-580FC31045B0 + A1980B9C-C9A8-4CA5-942F-2253F11C76B5 + FC89BDF0-E788-441D-A8EC-135CB2468F04 + 3E0366AB-6952-449F-BE8A-8D5C55892F5A + 9F0DA7EF-CF90-4B07-95D1-85A6EF4EDBE0 + 1F7857F1-F9C4-4FFB-A10C-3EE506433AF8 + C663E761-3BCC-4F54-AA75-C7AD14CE2098 + A88C063D-188A-4569-93D7-4548EC15F1D4 + 601598D5-8E9E-4A08-98A3-13883AB042BB + 24CF9ADB-1B6D-4677-89B8-FFF6C2743FF7 + 17BDF37D-3EC0-45DF-B809-AB919DABB350 + 19B0A652-A721-43A6-A0F6-07ADE63BC33B + 951E6149-505D-4078-8524-F2AF3343A146 + B34FCE3B-CB9B-49A5-9659-76D8D1956B5B + 007FA1E3-5A69-47B9-87F5-FC785DA2AE50 + A15A7AB5-2DA8-4F79-AEB2-E05B6C06F710 + 75BBC310-75F5-49F9-96A6-D71C4BA61A81 + A745613A-4BDE-4009-BAE5-5A38E3B303E7 + 2FFB2AA1-AD84-4F2B-82D9-4EEFD1511088 + FE1B5EAB-37BE-4511-9516-96F2FFE06A35 + 80E73138-C679-409E-8BBF-9F725C993DC7 + 3489B253-67C8-4008-81BE-64DD2A879401 + 89E7EFA4-9C04-4AF5-A65B-90931A4D9622 + 44149C16-528B-495B-A2A5-F73D56AF65ED + 703F53F0-011A-48DA-9CE1-C9CF8FDDEE57 + D3512E0D-BEEF-422C-A2AE-90BA25A50D58 + 8B7D0E5E-F249-4C40-B42F-F681A314DBD4 + F6EE7622-00FA-47B8-974E-D1576CD343DA + CFD04A6C-9906-4A58-A07C-B892C3764260 + E0A867F6-9EF9-4B57-9155-28CC39C82676 + 617A37F8-7B73-4D3E-B696-5CED16579DD6 + BEC01D19-0481-4CC7-B7C9-C434307BF08C + BC9EF9B6-C679-4949-B9BC-4DFEA5D4F9F1 + 6666A60E-45F5-471B-BEF4-D9843822C887 + EE06A1BD-A2E8-44F8-97E9-C908476852DB + 338638AB-6D17-4A57-8434-B5735FA1C414 + 450E79F6-33CC-4345-BC4A-7E1AF2B0C890 + 1FF9200C-8BD4-4FB2-9BE5-C6A19E1D8E16 + 71D183AA-B286-4D30-8F73-18E9EAE6FAFF + 1080188A-9C38-4C12-9894-C5BE8CB2763E + D097CCF6-2EC9-4C53-90C1-685141D2D4DC + 2E4934A4-E5B1-49A6-A94A-71EB1F4E1839 + 8DAADBDA-36CC-447D-A456-78CA9B7AD929 + 08A8C002-8EDF-4B16-96AE-CE945A3DF4F2 + 339BCC7D-4B86-483E-8857-3C0F94D8FC2C + 9903CE17-72AE-4152-A07A-B12575B55375 + 73AD5FB9-B1CF-4A3F-92DD-C6D542D608C8 + BC897894-2754-4850-ABCF-680CC7E73479 + 5BE4C2A9-99CF-46E6-B6A0-E8CD5FE9260A + 9D6AD6FD-86B5-4126-BD26-A915C4D55125 + DD637643-EA55-4D1E-B1A1-45684368B24C + D43A79C0-DEEF-46A2-821E-3592AB1506D3 + 4C8DFA6A-B88B-4283-9A8B-69EDAAE9E54A + B711C3AB-AAED-4286-931B-06101C6FC4FD + B0D70BE2-DF85-4BF1-996A-8355877E6DD3 + EBFBA683-A227-4D85-9458-679714FE1848 + 6BF09172-C8D4-4A26-8807-EF73866C4FEF + D8FE52C4-14B5-4CF3-85A2-E43C7B593D98 + E5016D06-E405-4BB1-B8FE-80113804BAA9 + 28AEE1A4-14B3-47EF-936B-B7A687153E25 + 71CB7207-4FCA-452A-A277-458128657212 + D759212E-3972-43F8-844C-727228F53F2A + B75FE64B-C5CC-442B-9F87-AB8080C57700 + 9FC20C4E-8457-44CD-B8BC-2F10D1FAF4A7 + 51757D90-A0A0-49C7-9083-3814D952716C + CAD751B8-469D-4660-A9E5-D20F0598FABF + 68806C5B-05FB-4F8F-8B0E-E048B7EC42EE + 7ED0BEA2-E384-4E84-83EB-1839CC4F8DEF + 51A59561-4505-46CE-9830-45D277987113 + 3E9602EF-2318-4A82-B1A8-16228C6198B1 + 0B04E1A9-3C78-46D2-9A95-EA33722635A1 + 44AA9D0A-3268-4B49-B71A-FEA2CA2D6020 + DB88E3CB-7D8E-45AF-ABF0-0819FEC19308 + 48DEBAC3-4DDF-4749-B96E-6A86D79D57AA + 3A3F2418-B49D-4071-B3B8-FD45550E6EF1 + 588B2C36-280A-4D4F-AA4A-BBD58F294BBB + D6AA7B1A-96F4-4E45-8EA0-8DE0FFF15BE1 + 2EA48AE5-B038-494C-9329-B2440110DE75 + 294A870E-C289-4BC6-A04B-4078513A5F15 + 64E30825-2648-4427-8008-3FD2672C239C + 635DC94A-A7A3-4018-88C1-2D98C37B0960 + E28DF25E-B16E-4920-935D-ED76CCA445CD + FED3811D-2C43-43DD-BCEF-46B7026E41DC + 839F03F7-B086-4E03-9828-56C0F8AC97F7 + 734D5349-1050-449B-AA2C-6C3522E1D7DA + C5205052-BAF0-425F-9330-D187B2AAE536 + 59C1F7A1-BEA2-4B1C-B7CC-E02B91A0EB0C + D90CDDC9-D383-4BC6-BDE7-D6E7BF2E91F6 + F24B40BF-EA0D-4F97-9E00-B65837FF89E5 + 6F4BE275-5F96-4714-A839-EBE0B013235E + 7195242D-3E38-4ECD-AC0F-98E957FE9E9C + A8F7FAAF-0F20-4D29-8D84-998BB4D9DD54 + 92049B1D-7496-40AF-B9E2-1235344F32FE + 7B13BC8C-44A3-45FD-83B9-85E99D2BDE45 + 1AE757B8-B07F-481D-99B5-BA246B57CB98 + 1905AA99-D3ED-49E7-919C-D65BB3C2039E + 4961A72F-157B-447E-ABDD-C5941E72A5CB + 65782175-A5A6-4D50-B4A2-6D991BB11C1C + A951CB75-1561-48DE-9AAD-550339451F18 + 15D9C3A7-D61B-41B6-9949-CBC556B1D4BC + 98DA651F-3657-48E8-8149-2CAD0D47580E + 42434F81-B974-4375-949A-B8FF8E50A732 + E93316E8-CADA-44F1-A8C5-2F6978C5B0DA + 7C4FACD9-306E-46C0-B15B-0E120B6BA820 + 3EF3D53E-350B-4006-B559-DD3E38E57B0F + 5FAE9D2A-E39C-4172-B7E9-ED15AC9B57F5 + 997A65FF-134E-47F4-BE7F-43EB314B82C5 + 26B1FCE9-4E69-4553-8EE7-1C9E85700FC9 + A9CE5172-06B9-4A1A-86D7-D4E0C9C122FA + 9B9E2B4C-3176-4BC3-A59A-9B71EBD583DF + 5AE2194E-C5AB-455B-BA01-B3A2847B0CA0 + D10808DC-629B-424E-B803-15FBDC742C8D + 7F984E4B-28B2-4038-9BFD-B95D2F19E068 + 55E02FFC-8702-4BEF-9EF6-F2B30C100CD9 + AE69F7A3-2112-485D-B82A-2758C16A0D43 + FF246B45-9A8D-44D1-866C-6B8E2E54C84A + 3117DF77-F206-43E5-8BA7-FD0D10380DC5 + 25918D08-F55C-4A58-8E31-056C8AD6C819 + A7CA4FF4-BA99-47C9-BAF7-94D5A96E92EE + C1BC2C37-0BB4-4EF5-A7CD-F9260112187E + 4D43DF0B-03E1-4230-83E5-113A0FB0E161 + A4179B7B-339D-45AF-B1B5-907FECFADCA1 + A334F691-380C-4BC5-9FD8-C50EA4A403EC + 0FBDC1AC-4193-4451-B4B7-92F8EA307BF2 + C1425DE1-C2D3-4C86-9080-807E9A7411FA + D802C19F-9BAA-4524-943A-1742218E1300 + 8E4A65CB-D991-4914-96D3-19DDF8765E5C + 03744DC2-E12C-46B3-B79E-641B06304DB0 + C72D4E02-BC7E-4C9A-93B0-B623A66C021A + 3B285BD0-EA81-417F-BEE2-F0B179D92CEE + 9CB813B3-8F33-4AF6-9484-C206F676241D + C93F8870-E7B1-4692-BA30-0005E340EC7F + F8D440A3-3665-4485-AB00-5B2A4BAA6063 + 56EB08FB-AE75-463D-8A50-4E538ED8707F + 2675AC70-8EDE-4E67-B1C8-033842F09AA5 + E9B94D8C-C469-4213-80FF-B7E53A3BA842 + 068F33EE-E951-4063-889B-F07AB81A2395 + 252AEF9F-1950-41EA-9B2B-D8A50F8D6C06 + 20E0C775-59B6-4713-8F75-5CBC721BA5FF + 0C56435A-EE7D-4BCE-9F1D-3FF566C03419 + 114F410E-694B-4B50-A1F4-FC39F40A00BB + 5A365B5E-4FBA-4ED4-A2D3-44F84EF9B785 + DFE0BA49-A15E-453D-B569-13235F50C01B + 7BA2FDD1-BD38-40A0-9392-BCFEF266F734 + A1C19C00-252C-4A90-AB4C-3CC1EF940022 + 834B6036-9F77-4429-B7B2-B0485B5E3865 + 947092A4-8C96-463B-8719-92E7533C23C6 + 2016B586-2B8A-4318-BD04-E797713A0AA4 + 6BD90474-97D9-4837-A947-9B84636C8132 + 5DB7572B-63EB-48D4-85EE-653DA09BB9B5 + D6CFB5F7-FE22-444F-8AA0-20FA2EC2169E + 2EF99388-B457-4DE9-ADE9-77C0A3CC51B6 + 92825489-6315-4AE3-A635-608C36D4AF70 + ACA282D8-4DB5-4D21-AFAE-5FD40C53CF52 + BF2107F8-CF7D-4C0E-9034-FB0B475E6EAA + AB70165C-D913-4B1C-A8A2-7CFB073EF00D + 2BFBFF22-14F8-4291-B8F6-259F5D7CDCF3 + 86D84DC4-5E95-44F3-921E-06F2E1C19B7A + 563EDE29-D989-4949-A503-1A9D58C0B4A4 + 48AD688F-B565-4F3F-B843-C56EBCF40967 + AED7BC17-352A-4F2C-8A3F-AC8F84DF1417 + 871B7A4C-5497-4BE9-BB61-C6F66583325D + 17635E5F-D9B5-4FD7-898F-95F6DE070B68 + 0522E9AB-523A-485B-B92D-99F6CB3AE475 + 74094EF2-9DEB-4A41-A11B-B6F2E73E7BE5 + 42AF3B2C-936B-4113-A69A-42CDE9A1A648 + 6329EFDD-952F-4212-B800-5D4DE87D2575 + 13B9F5DC-0C45-437F-BD20-F1724195C89A + 7EF9D2B9-1E99-4F90-A79C-9618859662F1 + 84D0C8FD-BC4F-42F7-8C6B-ED4DE9178EFF + E7E95DAE-17AA-4F14-8B43-E91EE65B6A28 + B7D8C55C-7837-4C48-B19A-4034465821F1 + FAFE06D0-F889-405E-B72B-CC7266AF2A6C + 01A12AD1-DDAD-4A9E-B900-5994E3EABF8D + C4754886-04FA-4E61-BBA4-7B0698EB5A96 + 91FF13E9-BC46-4385-A9BD-C176B4278C96 + 7E7A8BFF-D31E-4275-8206-FC4C3C969069 + 15BA4ED2-103D-4978-9381-AD46328C2706 + C749D661-58CC-4F01-A885-18FC2B464B5E + 0D6354D0-B50E-47A8-9F42-C9B452660340 + 2002CC74-A67B-46A2-A55F-534FF87751CC + 62031007-EDDA-478E-A1F4-65D70D71DEC8 + E73DE3B4-8468-455C-ACBC-BC4EE000530E + FEAD3367-6C47-4B7F-889C-0B4D7C40BF0C + EFEB52CB-5960-44D1-A677-E56C2815AE10 + E51DD35D-7B9E-42CB-817A-9B1F1D9FFC2F + F4BB08E6-8CAF-4AAB-9752-B8D6762B80F3 + E8E96B1A-E0A6-4A95-84AB-246F2A1FCCC1 + 4A1FD09E-B6C4-49B1-85F7-F25C6F09D071 + A9744780-A070-4980-847A-010FE03CEEA1 + 42E8DE2F-B8E5-4779-9769-91961E0F6382 + 0A806D02-94FD-4271-9367-09711C38C30E + FCEA64D5-569C-470C-BE79-17A1127FC405 + AF2EBE8E-721B-4438-98CE-B0437E31F6BD + 4D2583A6-6258-4ECC-9E43-6494F8BB340E + D6051841-F579-4026-AE86-60511FDC602A + 458984E3-1070-44B4-AD3C-5FC254EE5D37 + E5153EAD-30A3-4153-8FD6-F6AFB368504D + 01481A99-083A-4D72-826C-28E183162A15 + 738D77E1-960C-41E3-A6D2-095C3A6DF6F8 + ECB7388B-AA06-4627-8E0C-9D8FB09F6103 + 7E64C4E8-23F6-40AE-931E-67763CB38DF0 + CD4D31DE-BD8B-484E-86F1-9949D45C8662 + 16CFCDDC-6CE4-4250-8287-2FED456C1D84 + 2932AFB5-B981-44BA-9296-4E7CC0958F48 + 7EC8ADE5-3C71-4D0F-B761-133E363AFD6D + E479577E-2A46-410B-ACD1-2B8FFB744958 + 8A674757-D6D0-41BA-AC66-A2848B71E266 + 5D956FDB-7DB3-4D57-9709-DC31DAB7BFB9 + DFB09CF8-E37C-47D2-982F-F15F6981ADE3 + 26E770F1-034F-48E4-A163-5A348E41DB0F + A080EA27-F81A-4CC9-B1B7-266B5BE64551 + 5E97B0BC-92F4-4F62-978F-FABEB1294E48 + 162C1170-5B08-470B-94EF-7A9F12E27358 + FF7E1A63-8B40-4870-8962-44EB943A3E3C + 0E023788-4190-4758-AF4E-E486E891855B + 9E9D78F4-16C0-4631-9A94-10941215B25C + EC70AFCB-4A37-4C71-93B5-58E53F109885 + A532CD62-AF3E-4164-B459-C8DF1F61C64A + 8F89D55D-5A36-4449-B13E-C27EDB94773B + 36B3768B-C206-4211-94EF-FB1C6D6A4802 + D5013E7C-CCF7-4A34-A507-E5F95F044F74 + 61BDCF03-9EA3-4DA6-B170-138EB76BDC93 + A6B6397B-97BA-443B-9645-5A6542122C09 + AC96A44A-4017-4C8B-AEE6-3FF315EF93AE + 1BFA3A8A-F079-46BA-A9A2-4A2E67B24A6F + 94694041-95E4-42B0-91EB-DE48A382EA96 + 37813E1C-ED7C-4FE7-8264-6DB01A47F18A + 1CC541A7-484E-4EA4-BBEE-FC1A7043DFF6 + 41DE281C-C068-48C1-BC59-EE0E469296D9 + 97390FA1-66BC-4758-81C0-59D7C0FCE8EF + 1879161D-9A3F-4B92-A2A6-DCF0E726E5F2 + 6A3A076D-EBAF-42F1-B487-904D5A07A8B8 + 0055E3D2-C858-4F29-A15C-9DDC6D96235C + 3DEFFF4E-C70E-4FE9-8B3A-77A04A9319D4 + C3BBBA0A-706F-46CA-9158-3373537CA0A5 + AE03FF83-E5C6-4124-9106-6E43845539D1 + CA6A00EB-0DAD-4D29-AD74-684FFABEADDC + 15FCF228-8154-4B1F-A09E-FD4C7618AE9B + EB2A8CAB-8252-4087-81C6-AFB8E4917325 + EB1BC55F-46B6-4A28-8334-98B68EF14393 + 54C382CC-F506-4764-A2A5-8CA399BAFD39 + DC49198C-518D-453D-BFAA-078710F72A17 + F5ABDCB6-C5ED-4ECD-BB63-764A39974E7A + 210D8C02-4E20-422C-9FA1-D53A9002BC8E + F48DA41C-387B-4F3B-80C4-9F9320862F66 + 07EA0D89-2FD2-437F-97FE-DC9193B21C8D + 826B54EF-E777-4621-9D97-C07D8418DA79 + C41596D5-4CDC-4C5E-A913-C2C5BC3AF395 + B62F1D64-0982-4677-A0F7-23CEC8EF430A + 13F7DBE4-BB0C-4BEA-B4A9-5D895DF16761 + 9B1868B5-DE53-40DB-8E66-0FC00E0B63B4 + 7278487A-7D3A-4525-9D5C-2D739FA4D5B9 + 03E69758-7637-4086-B2BF-7803D784618E + 4A063794-9292-4458-B374-563652EF03E5 + 347F123A-D961-4ED3-936B-0BF89E998C4E + 9BF94C0B-E582-4724-BDEA-98C404840EC5 + C9D6004F-3A4A-4A37-9CDE-5C75151C0AA5 + 3AF93EA0-7A3F-4451-B4B3-CF5A18A4FE85 + DD591571-F556-4358-9D06-7D3C01AB2B81 + 3E140DA2-45D0-4A4B-8E6F-A511B70FCB06 + 987E9F6C-7F44-43A5-BF48-2E1080B86E27 + C1820F07-D821-497A-B7F7-CDB2C888EA08 + 408C4BAE-2CE1-4DF5-9C6A-E6845CF8A16A + 2893DD4F-1E95-4689-9C26-AAEC434A4852 + 3151958E-0B93-413A-90F4-4DDB5506D9A1 + 4E8EE9DD-BFFF-40C3-B339-DF2F32D371C5 + BDCECD25-D7B4-446B-87E5-E73B1668B578 + 00965FAC-D703-4B11-B2C8-8802A0CDF401 + 4305D952-FFB2-4677-8051-51EEBFB5F0CD + A45E8E7F-DA2D-4F27-BF2D-9FE80188CD48 + 6EF34F35-2D23-49CB-84D9-6E5478C4F5F9 + D5C23AB2-D465-4AB7-82F3-3FA98095770B + 26EAFCC4-7548-46BB-83DD-BFC60C824F32 + 3B223C04-ADC9-47D8-8B68-7605CC70351C + B8D51156-B1E0-4014-9D4E-3094F815CDEA + A414B3FD-2AB4-4F3C-A458-AA46F5942854 + B8C6E2C0-44B1-4233-BD6B-FA7F0B408D77 + C0D2C185-0AAD-4166-8BDF-2F9864336026 + B15DB916-8844-4B13-9AD4-253BC2B51808 + 3BF3692A-BDB6-4EFE-8862-9F6234EB0523 + 57986BF1-47A2-4C3B-8C57-770CE3246C8A + ED6209C4-53FA-4245-91B9-7D1784BBE34F + 46795A38-805F-4FD6-8189-AE048A804E5F + 1224D09C-BCFA-413A-AF4E-CF775D5E2633 + 23587C95-55AC-462F-A37C-52BE77B0B19B + D34CF394-4614-4402-8558-EA79A3051A73 + A5958FC7-BC6B-41B5-BC73-281D15FAC97F + 0C599BAE-080A-4CC9-A263-03A140FF218F + 49E97A1E-E565-4C42-BC2C-5D543A609365 + AFCFBC6D-86AB-4BDD-87D4-454F430C3B68 + 975D03B4-959F-4E52-A807-9148BD56C74A + E3653822-EAB4-45F8-BBF3-9F518680381D + FB5FE0A5-A016-4753-88DB-2AA4A9EBA3D7 + FA033663-E692-4B27-95F3-4CE45F43EA81 + 7FF859EC-E63B-404B-B2D4-B88B9593688B + C08AFBE5-74C1-4265-A41E-C8C0A5574F2F + 77078508-3BD7-4D6F-96A9-559404296643 + DE5F9DC1-D0E6-4AEE-8EC9-8CCEFEEBFA1C + 6809E9AC-366E-4155-932C-1AFC037922F6 + 119DA3C9-13BB-47F1-A106-C564506A7DCA + F6C2444C-1E64-49FA-B6C5-42988FFE60CF + 05570013-71A7-46DA-B48A-26C84EA552D9 + 10E4C398-D490-4CFE-B0DC-E711B53F9452 + 003E788D-885B-43F2-9E83-361F7F7419DA + CB461BE9-E863-4CF1-AFDC-B3B12491ADB3 + CA0AE374-B885-4FA0-ABD6-A0830E21A09D + CB4DE39D-8C4A-4723-91D8-15CFAD1BCE4B + EE500A63-E8C7-4EA8-93CF-2F7EA6A090B2 + A5060936-5F07-432C-9B33-CC4F631E254B + 673BCE6D-0AB4-4D5A-83A3-1B31F85267F7 + 452980A0-6498-4390-BF46-02B4408963E7 + 3D1C65AF-065F-4CCD-94AF-7FD39CE2F153 + EF5595BC-3387-4CD1-BDF7-6601B92873E7 + 2CB7ED3B-B21B-433A-87E2-150C0A387B8E + DBB4594B-4994-44B2-8A3E-713D44367D7B + B36A03B5-E199-4CCF-9327-819EDC49718C + 82816B1A-B6DE-42C1-91DE-49D8B8CF6F9B + C3E27230-C0A4-4A8A-9398-671C5439B690 + DFE96842-094F-401C-87A7-6629D7B76E10 + 45309F4B-255E-4BB5-A646-0AB47ABCE728 + 47AC76FB-7679-4961-855C-E924B80C3ADC + FB6419FF-D7B7-4C41-93B1-A72164A30A8A + F379F929-8082-4A52-BE33-5FE3DBB5EE39 + E29C9931-6A9E-454C-93A8-824C515D7142 + 24C4CF12-0DD4-4923-91FB-AFE99A31183C + 1E126CEA-0490-4B91-B78A-B96615BF291C + B9CE8505-630F-4FE1-8B50-944C1A1C0DE4 + 110F3EF2-6FA4-4D77-BF6D-9AF2F5974950 + E42B9EA9-410C-4D9A-B151-0BC67C7C6AEB + ADC7A0DA-1556-48CD-9091-01797AE66B9E + 9A4604A3-40B2-4BAE-AB33-758CCC916DD8 + C56ECCAF-376B-4CE6-A23D-6CEB27077FFF + 9B787391-B879-4F1B-9022-9FBC13229AC5 + AE4DBA14-BF4B-455C-B7B8-5984D552A085 + 01B375A4-D2C9-417E-8C2B-89A98443097B + F4E6877F-3B86-46F3-9924-D3601F7432A1 + 038CCB8C-AADB-4A0E-BB4E-0CF8D9E2B3A0 + B0FCB863-5692-4499-BE7A-F5E62663E12E + 91F39F58-8FB6-44DE-9EEC-35B8820E01B1 + 84A5E47F-1F24-488A-B8C7-0CECB7F7D37C + 07FBBA4F-9B89-4098-8808-FD981438EACB + 71EA8EF9-9606-4240-9B48-8A839B278BAA + 4C701C12-F746-46C3-A02F-7D5812E8C021 + 008DA70A-9F72-4C99-AC40-DFFC17E50CF3 + DECEECE4-A54E-40C8-861C-FBAABA64844F + C23E6371-20EC-44FB-A6CA-6B8A9EF8B491 + EB57425D-5987-4B0E-A481-9AF27AE7134D + 00278E21-9440-47F9-883C-E9F2A1F41610 + 4A2CEEBD-A0AB-4888-AD33-52B316E71D13 + B6752053-CA7C-401F-81F2-819BB0DF3CED + C70D2313-929C-4E8F-A458-CAAFE35DEABA + 8A190C67-A9E6-4CE3-B6C0-35278311DDE5 + 41188C3B-EBC1-4629-85E0-BC6FA190A126 + 96A6A425-C367-403B-AC27-67C80EFF3B6B + 5F037440-0D1C-4B26-95DD-9C3B0ADD27A7 + 059517C8-3237-4896-9E4A-04522EF0E818 + C049F635-C334-4341-842B-473751C73DC6 + C9CF7288-BE55-4420-8B5C-74973E666B1C + 52F70D3C-3EFC-4604-80C9-2618EBF3D27C + 6D8D0515-DAB2-45F9-A19A-479D0DC6503B + 3D5F8F6C-1C8F-4F9D-A5F1-C773158F1E1C + 771EB82D-37EF-447E-A64D-312A4B409F55 + 07067949-F14B-4CB2-BF02-E409303E1E6D + 39A9E764-2657-46BE-9004-55400900D495 + 7C4ACC8A-C73D-4F44-8535-DC087D6956F7 + D4319F71-EC21-43DB-8913-E0C435A5D023 + B19D5E9D-16B6-44E4-B6D9-2044AF64FDA8 + A3335EB0-8DD6-41BE-90A3-7A5D2C70E237 + E3B4B2B8-B3F4-4E38-A6DB-559547E6DD4F + 3C7E529E-85B2-4E03-9830-B5CC6C00FD60 + 354914B6-2A46-4418-AC73-4789AF2E4459 + 06361C22-61D0-454C-A4FF-ACDDCCD642B0 + 299B5E07-42AA-4B6F-8793-AF403AA2B958 + 3F561BD3-99F6-4DF4-8C58-625D693F03B3 + E595335F-1986-4A95-A056-A2BFA50B47A3 + 50B83814-1200-481B-A339-02EA843B290A + F47E9324-3385-417E-9CB5-C155F99183E4 + B6CB3D10-30E1-4133-96F3-CBF65DBA112E + 79EB013B-5F4D-4E77-8E78-07C1099230E7 + 860791BA-ABCF-499D-811F-2760172C1FC2 + 7DDA0B4E-82FC-4A85-89B9-014ABB28DF91 + 0CC8830C-74CC-4A1A-A450-434B0140BB60 + FF33F889-F47A-4A8B-968B-CADE5AA58186 + 8EC23DD2-0290-4CEA-95BB-02BBC8DC0372 + 581B1911-14C5-4DA2-9264-F0F633D2EB88 + 95CA5D0B-F426-4802-9A7E-AE55C15B4E01 + CEACE9FA-1F3C-4A56-B23D-92C405623E5E + 14B3B43D-CB7F-4AAF-92AC-7A93BDD2E939 + A16BC90A-6210-4FF5-A6E6-5158D382656C + 62C205E3-A0E1-47CB-887F-F929C3ACABF9 + 3B5561E5-6280-4B83-A19B-788853B4279A + 64658104-0F9F-4E30-9289-27898637B5A6 + 933644F2-F015-46A5-9D5F-001B4E7C9AD8 + 1A08030F-74AE-400F-A241-6C5CB0BF498E + 9213B7DF-39B9-4BDF-A918-8B580D3C3936 + 321A7541-2901-4497-85C5-C6437E149FB3 + 843559AD-C604-4137-8AFC-0770B77C31A3 + 05F84740-7FF7-438C-9E55-6AD30C1EC2F8 + 90999887-AA0E-44BE-8ACC-AEDFAC27AA8F + D747803E-BDC4-4332-96C2-63E103779BD0 + 850268F2-92DC-4EF5-BB4B-1059EAD69EC8 + 8A44056C-4463-495A-A090-BDBC4282D836 + E535A75D-D6EE-43A9-94B0-78AFBDBA5E86 + 05462102-08F4-4C00-A136-26E577426BC5 + C9D86B5F-CA7D-4B20-BB93-CDF2899EE2F7 + E011EA0A-390C-4750-B993-D531707E8C2E + EC92F076-5CFF-4372-9879-ABD30ABA82B5 + 0F86244F-9C36-4899-A126-4CA5BF6E7B2B + 768F9215-4D5B-4F12-85A9-97ACA841EFCE + 6FAF6C4A-F185-4A69-B639-9F32CB5BF25C + 2A8F018F-2D65-4EBE-9B33-47FF8E89350A + 85DDFE3F-DED2-4B73-BA61-A2780DD42375 + 3DB48E78-EB11-4109-BD14-C62FC12972B8 + 14E43793-C0F0-42DB-9670-8020F01AD4F0 + 99BD3BE7-3AEB-4CDF-B3C3-939C046F8F1E + 337788B7-568D-4CCF-9F6F-5377D000153C + 32B7E204-3F61-4AD8-AB22-FA6F4F1EDD3F + FFDF8948-B564-4463-B463-EEB711654C7D + 86A0407F-CB04-46A7-85E0-4115270F5FF4 + 423E71F0-585A-4929-8C2B-7B930BF972BA + 3DE07EEF-901A-455C-BB6D-31F5D2D6FAF5 + 77D1F161-0182-4070-92DE-58A112DC4272 + DDC9232D-A22E-46FC-9A74-83F1B447C646 + 74A66D4C-000A-4412-8B69-B21C8219B1F2 + 86B1D5DB-FB20-40ED-BEA8-7179EAC573A1 + 0CC890BA-3438-48D9-86F0-BA16E90E7BF5 + 6FD2F0EB-19B6-4072-BFD0-FDA68961219B + 3526BE51-484A-4E7D-BD93-46288B73F636 + E97DCD82-E576-4389-A1D0-4E5D45F9A787 + 7D91D7E0-853B-4C8F-B72A-0B20DF743741 + 14916C6A-130D-4AF1-8515-989720DDDEC7 + ECD46162-8C51-4E8C-A859-CC0B5AD320AC + C2197513-C7E2-43A6-B3CB-84EFBBEC89D1 + CFEDC20F-4714-4C88-81B4-1C5D149DA04D + A24F91CB-A3E5-4907-8259-5E7645E39BAF + 16977A7A-A382-48CF-B7AB-8CC4A8CF83C4 + 662FA490-E14C-496F-A668-09CFD0521D2F + 5AC218D8-49AC-4E26-B793-FDC7EC833F93 + EA5829C3-8ADB-4FFB-879D-BAC7095B13DD + 49B13F70-B978-4633-AB69-8D2AB64C870E + 4E2E7138-69AA-4BF1-A87E-8C45DE807B10 + D51A613E-4198-4FAB-99CC-9981EF99BE39 + C5012C1B-2078-47B2-9E60-1CDE6B555AB8 + 71806A42-4B5B-4CE5-AFA0-60DC5C0AAF0F + D4E56475-16C0-4DB3-BEFF-9FBC4F83C166 + 852E0119-7EC8-4435-A414-8937E6289D8C + CB440BC1-3037-4352-B9DC-10F517682B39 + 0F55F1E5-CF77-4B48-882B-1EF439AF9C4C + 7C38B9B8-95E6-4F1F-B54E-8B5DA317A92A + 03333522-BEEE-4B7F-8DAE-CCA07E34E7C8 + 2E4DDA47-1FC3-4FF7-A719-49ED6FA8ECFF + 591BE979-E7D8-433B-A5F0-D8B96E510BC9 + 78345399-B86D-4A76-B211-BF75190906EA + C95FC594-ADEB-4932-BF79-66B007A8DAB7 + 3596D813-959C-4530-A117-82C7C77245A2 + 4CA78ABB-3400-48AD-AB32-3B4E7014345E + + uuid + A4FDD1ED-D13D-4AF6-99B9-C9AD0D262149 + + diff --git a/User/Snippets/js_comments.sublime-snippet b/User/Snippets/js_comments.sublime-snippet new file mode 100644 index 0000000..cb2123f --- /dev/null +++ b/User/Snippets/js_comments.sublime-snippet @@ -0,0 +1,20 @@ + + + + /** + + source.js + diff --git a/User/rspec/.gitignore b/User/rspec/.gitignore new file mode 100644 index 0000000..7e99e36 --- /dev/null +++ b/User/rspec/.gitignore @@ -0,0 +1 @@ +*.pyc \ No newline at end of file diff --git a/User/rspec/Default (OSX).sublime-keymap b/User/rspec/Default (OSX).sublime-keymap new file mode 100644 index 0000000..2d4cc74 --- /dev/null +++ b/User/rspec/Default (OSX).sublime-keymap @@ -0,0 +1,13 @@ +[ + { "keys": ["super+alt+b"], + "command": "exec", + "args": {"cmd": ["rake", "spec"]}, + "file_regex": "# ([A-Za-z0-9_./ ]+rb):([0-9]+)", + "working_dir": "${folder}" + }, + + { "keys": ["super+alt+period"], "command": "open_rspec_file", "args": {"option": "test_and_source"} }, + { "keys": ["super+period"], "command": "open_rspec_file", "args": {"option": "next"} }, + { "keys": ["super+alt+s"], "command": "open_rspec_file", "args": {"option": "source"} }, + { "keys": ["super+alt+t"], "command": "open_rspec_file", "args": {"option": "test"} } +] diff --git a/User/rspec/Default (Windows).sublime-keymap b/User/rspec/Default (Windows).sublime-keymap new file mode 100644 index 0000000..c9375ec --- /dev/null +++ b/User/rspec/Default (Windows).sublime-keymap @@ -0,0 +1,15 @@ +[ + { "keys": ["ctrl+f7"], + "command": "exec", + "args": {"cmd": ["rake", "spec"]}, + "file_regex": "# ([A-Za-z0-9_./ ]+rb):([0-9]+)", + "working_dir": "${folder}" + }, + + { "keys": ["super+alt+period"], "command": "open_rspec_file", "args": {"option": "test_and_source"} }, + { "keys": ["super+period"], "command": "open_rspec_file", "args": {"option": "next"} }, + { "keys": ["super+alt+s"], "command": "open_rspec_file", "args": {"option": "source"} }, + { "keys": ["super+alt+t"], "command": "open_rspec_file", "args": {"option": "test"} }, + + { "keys": ["ctrl+alt+n"], "command": "rspec_create_module", "args": {} } +] diff --git a/User/rspec/README.md b/User/rspec/README.md new file mode 100644 index 0000000..bc6826c --- /dev/null +++ b/User/rspec/README.md @@ -0,0 +1,15 @@ +Description +=========== +[RSpec](http://rspec.info/) is a BDD (Behavioral-Driven Development) testing framework for Ruby. This package adds support to Sublime Text 2 for testing Ruby applications wioth RSpec. + +Package Installation +==================== +Bring up a command line in the Packages/ folder of your Sublime user folder, and execute the following: +> git clone git://github.com/SublimeText/RSpec.git + +When you launch Sublime Text 2, it will pick up the contents of this package so that you can consume the goodness that it provides. + +Features +======== +* RSpec.sublime-build for executing unit tests for the active module via the S2 *Build* command + * You must assign the builder for your project to 'Ceedling' diff --git a/User/rspec/RSpec.sublime-build b/User/rspec/RSpec.sublime-build new file mode 100644 index 0000000..e19c12a --- /dev/null +++ b/User/rspec/RSpec.sublime-build @@ -0,0 +1,6 @@ +{ + "cmd": ["rspec", "$file"], + "file_regex": "# ([A-Za-z0-9_./ ]+rb):([0-9]+)", + "working_dir": "${folder}", + "selector": "source.ruby" +} diff --git a/User/rspec/Rspec.sublime-settings b/User/rspec/Rspec.sublime-settings new file mode 100644 index 0000000..b8b8793 --- /dev/null +++ b/User/rspec/Rspec.sublime-settings @@ -0,0 +1,4 @@ +{ + // The number of spaces a tab is considered equal to + "tab_size": 4 +} \ No newline at end of file diff --git a/User/rspec/Rspec.tmLanguage b/User/rspec/Rspec.tmLanguage new file mode 100644 index 0000000..407f48b --- /dev/null +++ b/User/rspec/Rspec.tmLanguage @@ -0,0 +1,142 @@ + + + + + fileTypes + + *_spec.rb + + foldingStartMarker + (?x)^ + (\s*+ + (module|class|def + |unless|if + |case + |begin + |for|while|until + |^=begin + |( "(\\.|[^"])*+" # eat a double quoted string + | '(\\.|[^'])*+' # eat a single quoted string + | [^#"'] # eat all but comments and strings + )* + ( \s (do|begin|case) + | (?<!\$)[-+=&|*/~%^<>~] \s*+ (if|unless) + ) + )\b + (?! [^;]*+ ; .*? \bend\b ) + |( "(\\.|[^"])*+" # eat a double quoted string + | '(\\.|[^'])*+' # eat a single quoted string + | [^#"'] # eat all but comments and strings + )* + ( \{ (?! [^}]*+ \} ) + | \[ (?! [^\]]*+ \] ) + ) + ).*$ + | [#] .*? \(fold\) \s*+ $ # Sune’s special marker + + foldingStopMarker + (?x) + ( (^|;) \s*+ end \s*+ ([#].*)? $ + | (^|;) \s*+ end \. .* $ + | ^ \s*+ [}\]] \s*+ ([#].*)? $ + | [#] .*? \(end\) \s*+ $ # Sune’s special marker + | ^=end + ) + keyEquivalent + ^~R + name + RSpec + patterns + + + match + (?<!\.)\b(before|after)\b(?![?!]) + name + keyword.other.rspec + + + include + #behaviour + + + include + #example + + + include + source.ruby + + + repository + + behaviour + + begin + ^\s*(describe)\b + beginCaptures + + 1 + + name + keyword.other.rspec.behaviour + + + end + \b(do)\s*$ + endCaptures + + 1 + + name + keyword.control.ruby.start-block + + + name + meta.rspec.behaviour + patterns + + + include + source.ruby + + + + example + + begin + ^\s*(it)\b + beginCaptures + + 1 + + name + keyword.other.rspec.example + + + end + \b(do)\s*$ + endCaptures + + 1 + + name + keyword.control.ruby.start-block + + + name + meta.rspec.example + patterns + + + include + source.ruby + + + + + scopeName + source.ruby.rspec + uuid + 923F0A10-96B9-4792-99A4-94FEF66E0B8C + + diff --git a/User/rspec/Rspec.tmLanguage.cache b/User/rspec/Rspec.tmLanguage.cache new file mode 100644 index 0000000..fb0db88 Binary files /dev/null and b/User/rspec/Rspec.tmLanguage.cache differ diff --git a/User/rspec/RspecCreateModule.py b/User/rspec/RspecCreateModule.py new file mode 100644 index 0000000..2d31bf1 --- /dev/null +++ b/User/rspec/RspecCreateModule.py @@ -0,0 +1,75 @@ +import sublime, sublime_plugin, time +import re + +_patterns = dict((k, re.compile('_*' + v)) for (k, v) + in dict(allcamel=r'(?:[A-Z]+[a-z0-9]*)+$', + trailingcamel=r'[a-z]+(?:[A-Z0-9]*[a-z0-9]*)+$', + underscores=r'(?:[a-z]+_*)+[a-z0-9]+$').iteritems()) + +_caseTransition = re.compile('([A-Z][a-z]+)') + +def translate(name, _from, to): + leading_underscores = str() + while name[0] == '_': + leading_underscores += '_' + name = name[1:] + + if _from in ('allcamel', 'trailingcamel'): + words = _caseTransition.split(name) + else: + words = name.split('_') + + words = list(w for w in words if w is not None and 0 < len(w)) + + camelize = lambda words: ''.join(w[0].upper() + w[1:] for w in words) + + v = dict(smushed=lambda: ''.join(words).lower(), + allcamel=lambda: camelize(words), + trailingcamel=lambda: words[0].lower() + camelize(words[1:]), + underscores=lambda: '_'.join(words).lower())[to]() + + return leading_underscores + v + + +class RspecCreateModuleCommand(sublime_plugin.WindowCommand): + def run(self): + # self.view.insert(edit, 0, "Hello, World!") + self.window.show_input_panel("Enter module name:", "", self.on_done, None, None) + + def on_done(self, text): + + # configure 2-paned layout (spec, module) + self.window.run_command('set_layout', { + "cols": [0.0, 0.5, 1.0], + "rows": [0.0, 1.0], + "cells": [[0, 0, 1, 1], [1, 0, 2, 1]] + }) + + # create the spec + spec = self.window.new_file() + self.window.run_command('move_to_group', {'group': 0}) + spec.set_syntax_file('Packages/Ruby/Ruby.tmLanguage') + spec.set_name(translate(text, 'allcamel', 'underscores') + '_spec.rb') + spec_template = "require 'spec_helper'\n\ +require '" + translate(text, 'allcamel', 'underscores') + "'\n\n\ +describe " + text + " do\n\ +\tit \"should do something\"\n\ +end" + edit = spec.begin_edit() + spec.insert(edit, 0, spec_template) + spec.end_edit(edit) + + # create the module + module = self.window.new_file() + self.window.run_command('move_to_group', {'group': 1}) + module.set_syntax_file('Packages/Ruby/Ruby.tmLanguage') + module.set_name(translate(text, 'allcamel', 'underscores') + '.rb') + module_template = "\n\ +class " + text + "\n\ +end" + edit = module.begin_edit() + module.insert(edit, 0, module_template) + module.end_edit(edit) + # try: + # except ValueError: + # pass \ No newline at end of file diff --git a/User/rspec/Snippets/Describe.tmSnippet b/User/rspec/Snippets/Describe.tmSnippet new file mode 100644 index 0000000..48fc359 --- /dev/null +++ b/User/rspec/Snippets/Describe.tmSnippet @@ -0,0 +1,18 @@ + + + + + content + describe "${1:subject}" do + $0 +end + name + describe (String) + scope + source.ruby.rspec + tabTrigger + des + uuid + 34CBBD13-CE8E-4601-9968-C2CB0D771CA5 + + diff --git a/User/rspec/Snippets/Describe_type.tmSnippet b/User/rspec/Snippets/Describe_type.tmSnippet new file mode 100644 index 0000000..f94dd90 --- /dev/null +++ b/User/rspec/Snippets/Describe_type.tmSnippet @@ -0,0 +1,18 @@ + + + + + content + describe ${1:Type} do + $0 +end + name + describe (type) + scope + source.ruby.rspec + tabTrigger + dest + uuid + 2ED94046-DAF7-4C91-8D98-771513BB3804 + + diff --git a/User/rspec/Snippets/Describe_type_string.tmSnippet b/User/rspec/Snippets/Describe_type_string.tmSnippet new file mode 100644 index 0000000..4d5cc69 --- /dev/null +++ b/User/rspec/Snippets/Describe_type_string.tmSnippet @@ -0,0 +1,18 @@ + + + + + content + describe ${1:Type}, "${2:description}" do + $0 +end + name + describe (type, string) + scope + source.ruby.rspec + tabTrigger + dests + uuid + ACFE21E0-902B-45C4-BF54-D137718FF61C + + diff --git a/User/rspec/Snippets/It.tmSnippet b/User/rspec/Snippets/It.tmSnippet new file mode 100644 index 0000000..ef5dfc3 --- /dev/null +++ b/User/rspec/Snippets/It.tmSnippet @@ -0,0 +1,18 @@ + + + + + content + it "${1:does something}"${2: do + $0 +end} + name + it (does something) + scope + source.ruby.rspec + tabTrigger + it + uuid + AD51AA2B-09C9-40DE-9720-2FD43C967FA9 + + diff --git a/User/rspec/Snippets/Matcher (Custom).tmSnippet b/User/rspec/Snippets/Matcher (Custom).tmSnippet new file mode 100644 index 0000000..802da99 --- /dev/null +++ b/User/rspec/Snippets/Matcher (Custom).tmSnippet @@ -0,0 +1,39 @@ + + + + + content + class ${1:ReverseTo} + def initialize($3) + @$3 = $3 + end + + def matches?(actual) + @actual = actual + # Satisfy expectation here. Return false or raise an error if it's not met. + ${0:@actual.reverse.should == @$3} + true + end + + def failure_message_for_should + "expected #{@actual.inspect} to $2 #{@$3.inspect}, but it didn't" + end + + def failure_message_for_should_not + "expected #{@actual.inspect} not to $2 #{@$3.inspect}, but it did" + end +end + +def ${2:reverse_to}(${3:expected}) + $1.new($3) +end + name + Matcher (Custom) + scope + source.ruby.rspec + tabTrigger + matc + uuid + 55BF6C99-B4C4-4772-B7DC-0A18407E429C + + diff --git a/User/rspec/Snippets/Matcher (DSL).tmSnippet b/User/rspec/Snippets/Matcher (DSL).tmSnippet new file mode 100644 index 0000000..035758c --- /dev/null +++ b/User/rspec/Snippets/Matcher (DSL).tmSnippet @@ -0,0 +1,21 @@ + + + + + content + RSpec::Matchers.define :${1:name} do |${2:expected}| + match do |${3:actual}| + $3.$1?($2) + end +end + + name + Matcher (DSL) + scope + source.ruby.rspec + tabTrigger + mat + uuid + 15CE9873-2B79-44C5-8B20-2DA3BBF97E9E + + diff --git a/User/rspec/Snippets/Require spec_helper.tmSnippet b/User/rspec/Snippets/Require spec_helper.tmSnippet new file mode 100644 index 0000000..56062e9 --- /dev/null +++ b/User/rspec/Snippets/Require spec_helper.tmSnippet @@ -0,0 +1,18 @@ + + + + + content + require 'spec_helper' + + + name + Require spec_helper + scope + source.ruby.rspec + tabTrigger + reqs + uuid + DAD2B74D-2105-42B0-9FC5-466F3B3D0DB7 + + diff --git a/User/rspec/Snippets/Set Controller for Spec.tmSnippet b/User/rspec/Snippets/Set Controller for Spec.tmSnippet new file mode 100644 index 0000000..9c18cdd --- /dev/null +++ b/User/rspec/Snippets/Set Controller for Spec.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + controller_name :${1:controller} + name + controller_name + scope + source.ruby.rspec + tabTrigger + conn + uuid + 57374EB7-6CCE-4281-97A7-289905315351 + + diff --git a/User/rspec/Snippets/and_raise.tmSnippet b/User/rspec/Snippets/and_raise.tmSnippet new file mode 100644 index 0000000..55952b9 --- /dev/null +++ b/User/rspec/Snippets/and_raise.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + and_raise(${1:exception}) + name + and_raise + scope + source.ruby.rspec + tabTrigger + anr + uuid + 65B85B0D-26FC-4A08-8D6A-7BF00AA787FC + + diff --git a/User/rspec/Snippets/and_return_block.tmSnippet b/User/rspec/Snippets/and_return_block.tmSnippet new file mode 100644 index 0000000..10cbb14 --- /dev/null +++ b/User/rspec/Snippets/and_return_block.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + and_return { $1 } + name + and_return with block + scope + source.ruby.rspec + tabTrigger + anrb + uuid + C57E9EFD-3FE7-40ED-832E-DD812D1FB769 + + diff --git a/User/rspec/Snippets/and_return_value.tmSnippet b/User/rspec/Snippets/and_return_value.tmSnippet new file mode 100644 index 0000000..d12490a --- /dev/null +++ b/User/rspec/Snippets/and_return_value.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + and_return(${1:value}) + name + and_return with args + scope + source.ruby.rspec + tabTrigger + andra + uuid + 804A1B15-0756-438F-892F-2B72BE4490F0 + + diff --git a/User/rspec/Snippets/and_throw.tmSnippet b/User/rspec/Snippets/and_throw.tmSnippet new file mode 100644 index 0000000..550355e --- /dev/null +++ b/User/rspec/Snippets/and_throw.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + and_throw(${1:sym}) + name + and_throw + scope + source.ruby.rspec + tabTrigger + ant + uuid + 2CC293EE-496A-4B66-928C-332DDCBEE884 + + diff --git a/User/rspec/Snippets/and_yield.tmSnippet b/User/rspec/Snippets/and_yield.tmSnippet new file mode 100644 index 0000000..9b877bf --- /dev/null +++ b/User/rspec/Snippets/and_yield.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + and_yield(${1:values}) + name + and_yield + scope + source.ruby.rspec + tabTrigger + any + uuid + ED3A9BE5-8695-44FF-9B6B-A7FF4C13727C + + diff --git a/User/rspec/Snippets/any_number_of_times.tmSnippet b/User/rspec/Snippets/any_number_of_times.tmSnippet new file mode 100644 index 0000000..5b2603f --- /dev/null +++ b/User/rspec/Snippets/any_number_of_times.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + any_number_of_times + name + any_number_of_times + scope + source.ruby.rspec + tabTrigger + annot + uuid + D5E64C38-9CBC-4825-9A66-5718DA91AAD6 + + diff --git a/User/rspec/Snippets/at_least.tmSnippet b/User/rspec/Snippets/at_least.tmSnippet new file mode 100644 index 0000000..ac2a1f4 --- /dev/null +++ b/User/rspec/Snippets/at_least.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + at_least(${1:n}).times + name + at_least + scope + source.ruby.rspec + tabTrigger + atl + uuid + F2FDA911-B713-4788-81BF-EF33E9A4FB26 + + diff --git a/User/rspec/Snippets/at_most.tmSnippet b/User/rspec/Snippets/at_most.tmSnippet new file mode 100644 index 0000000..19fae85 --- /dev/null +++ b/User/rspec/Snippets/at_most.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + at_most(${1:n}).times + name + at_most + scope + source.ruby.rspec + tabTrigger + atm + uuid + 9A891C8D-4285-4C7D-BA03-6CA50A89F9C0 + + diff --git a/User/rspec/Snippets/configure.tmSnippet b/User/rspec/Snippets/configure.tmSnippet new file mode 100644 index 0000000..367edc6 --- /dev/null +++ b/User/rspec/Snippets/configure.tmSnippet @@ -0,0 +1,18 @@ + + + + + content + RSpec.configure do |config| + config.$0 +end + name + configure + scope + source.ruby.rspec + tabTrigger + cnf + uuid + B8AD7AB4-2F0B-4B00-9DFA-5C84994FCD0C + + diff --git a/User/rspec/Snippets/context.tmSnippet b/User/rspec/Snippets/context.tmSnippet new file mode 100644 index 0000000..c6f7dbf --- /dev/null +++ b/User/rspec/Snippets/context.tmSnippet @@ -0,0 +1,18 @@ + + + + + content + context "${1:context}" do + $0 +end + name + context + scope + source.ruby.rspec + tabTrigger + con + uuid + A373048F-BDEC-458B-8886-79058296C8DC + + diff --git a/User/rspec/Snippets/controller_context.tmSnippet b/User/rspec/Snippets/controller_context.tmSnippet new file mode 100644 index 0000000..a0da404 --- /dev/null +++ b/User/rspec/Snippets/controller_context.tmSnippet @@ -0,0 +1,20 @@ + + + + + content + require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') + +describe ${1:controller} do + $0 +end + name + describe (Controller) + scope + source.ruby.rspec + tabTrigger + desc + uuid + FC8C2948-3653-41B3-965A-5D0B7C64CB41 + + diff --git a/User/rspec/Snippets/controller_context_RESTful.tmSnippet b/User/rspec/Snippets/controller_context_RESTful.tmSnippet new file mode 100644 index 0000000..aae5cfa --- /dev/null +++ b/User/rspec/Snippets/controller_context_RESTful.tmSnippet @@ -0,0 +1,18 @@ + + + + + content + describe ${1:controller}, "${2:GET|POST|PUT|DELETE} ${3:/some/path}${4: with some parameters}" do + $0 +end + name + describe (RESTful Controller) + scope + source.ruby.rspec + tabTrigger + desrc + uuid + 0ED99C84-1F7B-471E-BB88-B59C5D08FA6B + + diff --git a/User/rspec/Snippets/exactly.tmSnippet b/User/rspec/Snippets/exactly.tmSnippet new file mode 100644 index 0000000..69f8e87 --- /dev/null +++ b/User/rspec/Snippets/exactly.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + exactly(${1:n}).times + name + exactly + scope + source.ruby.rspec + tabTrigger + ex + uuid + 1A3662E4-DB9D-4F29-8E42-984755A419FA + + diff --git a/User/rspec/Snippets/it should.tmSnippet b/User/rspec/Snippets/it should.tmSnippet new file mode 100644 index 0000000..da075d7 --- /dev/null +++ b/User/rspec/Snippets/it should.tmSnippet @@ -0,0 +1,18 @@ + + + + + content + it "should ${1:do something}"${2: do + $0 +end} + name + it (should do something) + scope + source.ruby.rspec + tabTrigger + its + uuid + ED8BDE00-5FD7-4E47-84FD-4B971557FD73 + + diff --git a/User/rspec/Snippets/let.tmSnippet b/User/rspec/Snippets/let.tmSnippet new file mode 100644 index 0000000..8955b8d --- /dev/null +++ b/User/rspec/Snippets/let.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + let(:${1:instance}) { $0 } + name + let + scope + source.ruby.rspec + tabTrigger + let + uuid + 7F165347-6BF0-458B-AA0B-B8D8496C7607 + + diff --git a/User/rspec/Snippets/mock.tmSnippet b/User/rspec/Snippets/mock.tmSnippet new file mode 100644 index 0000000..0bb1a7d --- /dev/null +++ b/User/rspec/Snippets/mock.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:var} = mock("${2:mock_name}"${3:, :null_object => true}) +$0 + name + mock + scope + source.ruby.rspec + tabTrigger + moc + uuid + AA3D9F87-FE8F-4808-A732-F368CCB9DED6 + + diff --git a/User/rspec/Snippets/mock_model.tmSnippet b/User/rspec/Snippets/mock_model.tmSnippet new file mode 100644 index 0000000..01990ce --- /dev/null +++ b/User/rspec/Snippets/mock_model.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + mock_model(${1:model})$0 + name + mock_model + scope + source.ruby.rspec + tabTrigger + mm + uuid + E71599F8-CBE4-4D08-BC3F-FC785C5860D0 + + diff --git a/User/rspec/Snippets/mock_with.tmSnippet b/User/rspec/Snippets/mock_with.tmSnippet new file mode 100644 index 0000000..4c9c93a --- /dev/null +++ b/User/rspec/Snippets/mock_with.tmSnippet @@ -0,0 +1,18 @@ + + + + + content + RSpec::Runner.configure do |config| + config.mock_with :${0:mocha|flexmock|rr} +end + name + mock_with + scope + source.ruby.rspec + tabTrigger + mocw + uuid + 520CA137-E4FC-4DB0-92DA-980DFE54A35B + + diff --git a/User/rspec/Snippets/once.tmSnippet b/User/rspec/Snippets/once.tmSnippet new file mode 100644 index 0000000..f9a6fa4 --- /dev/null +++ b/User/rspec/Snippets/once.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + once + name + once + scope + source.ruby.rspec + tabTrigger + on + uuid + 695ECDF3-FEFC-4702-AF71-641E64017907 + + diff --git a/User/rspec/Snippets/response_should_be_success.tmSnippet b/User/rspec/Snippets/response_should_be_success.tmSnippet new file mode 100644 index 0000000..1206cf3 --- /dev/null +++ b/User/rspec/Snippets/response_should_be_success.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + response.should be_success +$0 + name + should be_success + scope + source.ruby.rspec + tabTrigger + shbs + uuid + 0A118507-983C-4441-8B00-73AF7E931FC5 + + diff --git a/User/rspec/Snippets/response_should_not_be_success.tmSnippet b/User/rspec/Snippets/response_should_not_be_success.tmSnippet new file mode 100644 index 0000000..34de2b7 --- /dev/null +++ b/User/rspec/Snippets/response_should_not_be_success.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + response.should_not be_success +$0 + name + should_not be_success + scope + source.ruby.rspec + tabTrigger + shnbs + uuid + 8303E848-4F07-4D3C-98FA-19DA4676812E + + diff --git a/User/rspec/Snippets/setup.tmSnippet b/User/rspec/Snippets/setup.tmSnippet new file mode 100644 index 0000000..fdaadaf --- /dev/null +++ b/User/rspec/Snippets/setup.tmSnippet @@ -0,0 +1,18 @@ + + + + + content + before(${1::each}) do + $0 +end + name + before + scope + source.ruby.rspec + tabTrigger + bef + uuid + 7D960FC5-4859-4328-A06B-73A3CF6763E0 + + diff --git a/User/rspec/Snippets/should ==.tmSnippet b/User/rspec/Snippets/should ==.tmSnippet new file mode 100644 index 0000000..3af2a2d --- /dev/null +++ b/User/rspec/Snippets/should ==.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should == ${2:value} +$0 + name + should == + scope + source.ruby.rspec + tabTrigger + sh= + uuid + AF99B458-D589-414D-87C7-8FACD2EF9FD5 + + diff --git a/User/rspec/Snippets/should =~.tmSnippet b/User/rspec/Snippets/should =~.tmSnippet new file mode 100644 index 0000000..94415cf --- /dev/null +++ b/User/rspec/Snippets/should =~.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should =~ /${2:regexp}/ +$0 + name + should =~ + scope + source.ruby.rspec + tabTrigger + shm + uuid + 0BD5A07E-5FB3-44A3-991F-ABA04BA632D7 + + diff --git a/User/rspec/Snippets/should eql.tmSnippet b/User/rspec/Snippets/should eql.tmSnippet new file mode 100644 index 0000000..a7565f7 --- /dev/null +++ b/User/rspec/Snippets/should eql.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should eql(${2:value}) +$0 + name + should eql + scope + source.ruby.rspec + tabTrigger + she + uuid + 0F03467B-16F7-4764-99C6-B7F123E95E5C + + diff --git a/User/rspec/Snippets/should_be.tmSnippet b/User/rspec/Snippets/should_be.tmSnippet new file mode 100644 index 0000000..c1d2845 --- /dev/null +++ b/User/rspec/Snippets/should_be.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should be(${2:result}) +$0 + name + should be + scope + source.ruby.rspec + tabTrigger + shb + uuid + F401AA03-A119-4965-8677-BDAAE8312F13 + + diff --git a/User/rspec/Snippets/should_be_a_kind_of.tmSnippet b/User/rspec/Snippets/should_be_a_kind_of.tmSnippet new file mode 100644 index 0000000..61dfc79 --- /dev/null +++ b/User/rspec/Snippets/should_be_a_kind_of.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should be_a_kind_of(${2:klass}) +$0 + name + should be_kind_of + scope + source.ruby.rspec + tabTrigger + shbko + uuid + 29BF3286-6D33-418D-9BD5-79BAB0797FE4 + + diff --git a/User/rspec/Snippets/should_be_an_instance_of.tmSnippet b/User/rspec/Snippets/should_be_an_instance_of.tmSnippet new file mode 100644 index 0000000..aa0cbc1 --- /dev/null +++ b/User/rspec/Snippets/should_be_an_instance_of.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should be_instance_of(${2:klass}) +$0 + name + should be_instance_of + scope + source.ruby.rspec + tabTrigger + shbio + uuid + 8C5B6597-E115-4569-AE58-EF04042B21CD + + diff --git a/User/rspec/Snippets/should_be_close.tmSnippet b/User/rspec/Snippets/should_be_close.tmSnippet new file mode 100644 index 0000000..6612aca --- /dev/null +++ b/User/rspec/Snippets/should_be_close.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should be_close(${2:result}, ${3:tolerance}) +$0 + name + should be_close + scope + source.ruby.rspec + tabTrigger + shbc + uuid + 5A203680-6F32-482F-A6A3-50CB7EE99E0E + + diff --git a/User/rspec/Snippets/should_be_redirect.tmSnippet b/User/rspec/Snippets/should_be_redirect.tmSnippet new file mode 100644 index 0000000..b15ccf4 --- /dev/null +++ b/User/rspec/Snippets/should_be_redirect.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + response.should be_redirect +$0 + name + should be_redirect + scope + source.ruby.rspec + tabTrigger + shbr + uuid + E4DA45B3-736F-40DF-8344-25A79E073730 + + diff --git a/User/rspec/Snippets/should_equal.tmSnippet b/User/rspec/Snippets/should_equal.tmSnippet new file mode 100644 index 0000000..ea20d68 --- /dev/null +++ b/User/rspec/Snippets/should_equal.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should equal(${2:value}) +$0 + name + should equal + scope + source.ruby.rspec + tabTrigger + she + uuid + 7DB5AC43-745F-488A-99F1-54CD923DCC38 + + diff --git a/User/rspec/Snippets/should_have.tmSnippet b/User/rspec/Snippets/should_have.tmSnippet new file mode 100644 index 0000000..02c27cd --- /dev/null +++ b/User/rspec/Snippets/should_have.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should have(${2:num}).${3:things} +$0 + name + should have + scope + source.ruby.rspec + tabTrigger + shh + uuid + 42B1F497-2BAF-425D-9829-57E35456E7FE + + diff --git a/User/rspec/Snippets/should_have_at_least.tmSnippet b/User/rspec/Snippets/should_have_at_least.tmSnippet new file mode 100644 index 0000000..2a20f30 --- /dev/null +++ b/User/rspec/Snippets/should_have_at_least.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should have_at_least(${2:num}).${3:things} +$0 + name + should have_at_least + scope + source.ruby.rspec + tabTrigger + shhal + uuid + 8A4F8C8E-B347-4D18-9203-247256874C47 + + diff --git a/User/rspec/Snippets/should_have_at_most.tmSnippet b/User/rspec/Snippets/should_have_at_most.tmSnippet new file mode 100644 index 0000000..ed33e96 --- /dev/null +++ b/User/rspec/Snippets/should_have_at_most.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should have_at_most(${2:num}).${3:things} +$0 + name + should have_at_most + scope + source.ruby.rspec + tabTrigger + shham + uuid + 1BE271C6-3310-46A8-83E1-88C45BBE27AC + + diff --git a/User/rspec/Snippets/should_have_records.tmSnippet b/User/rspec/Snippets/should_have_records.tmSnippet new file mode 100644 index 0000000..5b65517 --- /dev/null +++ b/User/rspec/Snippets/should_have_records.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should have(${2:x}).records +$0 + name + should have_records + scope + source.ruby.rspec + tabTrigger + shhr + uuid + 9605BD4A-93E5-4D57-99FB-D8844D40F183 + + diff --git a/User/rspec/Snippets/should_match.tmSnippet b/User/rspec/Snippets/should_match.tmSnippet new file mode 100644 index 0000000..c8e66eb --- /dev/null +++ b/User/rspec/Snippets/should_match.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should match(/${2:regexp}/) +$0 + name + should match + scope + source.ruby.rspec + tabTrigger + shm + uuid + D6CE8D1B-16EC-4E0E-8089-62F193D3D048 + + diff --git a/User/rspec/Snippets/should_not ==.tmSnippet b/User/rspec/Snippets/should_not ==.tmSnippet new file mode 100644 index 0000000..0a484fb --- /dev/null +++ b/User/rspec/Snippets/should_not ==.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should_not == ${2:value} +$0 + name + should_not == + scope + source.ruby.rspec + tabTrigger + shn= + uuid + 3A699BC3-3E17-4CFD-844C-2285F971379C + + diff --git a/User/rspec/Snippets/should_not =~.tmSnippet b/User/rspec/Snippets/should_not =~.tmSnippet new file mode 100644 index 0000000..48a2c5b --- /dev/null +++ b/User/rspec/Snippets/should_not =~.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should_not =~ /${2:regexp}/ +$0 + name + should_not =~ + scope + source.ruby.rspec + tabTrigger + shnm + uuid + 7563CED5-5FD8-454C-972C-AC240D549E8B + + diff --git a/User/rspec/Snippets/should_not eql.tmSnippet b/User/rspec/Snippets/should_not eql.tmSnippet new file mode 100644 index 0000000..730c666 --- /dev/null +++ b/User/rspec/Snippets/should_not eql.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should_not eql(${2:value}) +$0 + name + should_not eql + scope + source.ruby.rspec + tabTrigger + shne + uuid + 04BED613-C9EF-4E41-82D7-9958BBDBE0E3 + + diff --git a/User/rspec/Snippets/should_not_be.tmSnippet b/User/rspec/Snippets/should_not_be.tmSnippet new file mode 100644 index 0000000..17c2088 --- /dev/null +++ b/User/rspec/Snippets/should_not_be.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should_not be(${2:result}) +$0 + name + should_not be + scope + source.ruby.rspec + tabTrigger + shnb + uuid + BD1CBF13-3A1F-49AB-8B3A-25967B437FD7 + + diff --git a/User/rspec/Snippets/should_not_be_a_kind_of.tmSnippet b/User/rspec/Snippets/should_not_be_a_kind_of.tmSnippet new file mode 100644 index 0000000..ce6c086 --- /dev/null +++ b/User/rspec/Snippets/should_not_be_a_kind_of.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should_not be_a_kind_of(${2:klass}) +$0 + name + should_not be_kind_of + scope + source.ruby.rspec + tabTrigger + shkof + uuid + 96C5A0CC-08D9-4DCE-B127-78370964E64E + + diff --git a/User/rspec/Snippets/should_not_be_an_instance_of.tmSnippet b/User/rspec/Snippets/should_not_be_an_instance_of.tmSnippet new file mode 100644 index 0000000..518869b --- /dev/null +++ b/User/rspec/Snippets/should_not_be_an_instance_of.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should_not be_instance_of(${2:klass}) +$0 + name + should_not be_instance_of + scope + source.ruby.rspec + tabTrigger + shbio + uuid + 364B3C9C-409C-4FC8-A12A-9A05CFB476CF + + diff --git a/User/rspec/Snippets/should_not_be_close.tmSnippet b/User/rspec/Snippets/should_not_be_close.tmSnippet new file mode 100644 index 0000000..b5f5a6c --- /dev/null +++ b/User/rspec/Snippets/should_not_be_close.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should_not be_close(${2:result}, ${3:tolerance}) +$0 + name + should_not be_close + scope + source.ruby.rspec + tabTrigger + shnbc + uuid + 259BCEC6-878E-411F-A6B7-69B038B75CE1 + + diff --git a/User/rspec/Snippets/should_not_be_redirect.tmSnippet b/User/rspec/Snippets/should_not_be_redirect.tmSnippet new file mode 100644 index 0000000..e496b0e --- /dev/null +++ b/User/rspec/Snippets/should_not_be_redirect.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + response.should_not be_redirect +$0 + name + should_not be_redirect + scope + source.ruby.rspec + tabTrigger + shnbr + uuid + E79DAF3F-8960-47C1-A34C-3D0E4B0AF926 + + diff --git a/User/rspec/Snippets/should_not_equal.tmSnippet b/User/rspec/Snippets/should_not_equal.tmSnippet new file mode 100644 index 0000000..7c1d7ad --- /dev/null +++ b/User/rspec/Snippets/should_not_equal.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should_not equal(${2:value}) +$0 + name + should_not equal + scope + source.ruby.rspec + tabTrigger + shne + uuid + A6966089-6A33-4836-B85D-9CB72DBEB0A5 + + diff --git a/User/rspec/Snippets/should_not_match.tmSnippet b/User/rspec/Snippets/should_not_match.tmSnippet new file mode 100644 index 0000000..cdfc94d --- /dev/null +++ b/User/rspec/Snippets/should_not_match.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should_not match(/${2:regexp}/) +$0 + name + should_not match + scope + source.ruby.rspec + tabTrigger + shnm + uuid + 014285F3-D908-427F-B535-E5A4AEF09339 + + diff --git a/User/rspec/Snippets/should_not_predicate.tmSnippet b/User/rspec/Snippets/should_not_predicate.tmSnippet new file mode 100644 index 0000000..2f53fa9 --- /dev/null +++ b/User/rspec/Snippets/should_not_predicate.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should_not ${2:be_${3:predicate}} $4 +$0 + name + should_not predicate + scope + source.ruby.rspec + tabTrigger + shnp + uuid + 1D0BB312-A029-4A43-A024-EF6C03506CEC + + diff --git a/User/rspec/Snippets/should_not_raise.tmSnippet b/User/rspec/Snippets/should_not_raise.tmSnippet new file mode 100644 index 0000000..2bdd372 --- /dev/null +++ b/User/rspec/Snippets/should_not_raise.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + lambda { $1 }.should_not raise_error(${2:error}) +$0 + name + should_not raise_error + scope + source.ruby.rspec + tabTrigger + shnre + uuid + D6B8DA1B-D07A-4C1E-A27B-59C502104BEA + + diff --git a/User/rspec/Snippets/should_not_receive.tmSnippet b/User/rspec/Snippets/should_not_receive.tmSnippet new file mode 100644 index 0000000..b19be2b --- /dev/null +++ b/User/rspec/Snippets/should_not_receive.tmSnippet @@ -0,0 +1,18 @@ + + + + + content + ${1:mock}.should_not_receive(:${2:message})$3 +$0 + + name + should_not_receive + scope + source.ruby.rspec + tabTrigger + shnr + uuid + 4CBCCACF-D6DA-49A6-9A8E-EC2F9CD15E94 + + diff --git a/User/rspec/Snippets/should_not_respond_to.tmSnippet b/User/rspec/Snippets/should_not_respond_to.tmSnippet new file mode 100644 index 0000000..5f2ec30 --- /dev/null +++ b/User/rspec/Snippets/should_not_respond_to.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should_not respond_to(:${2:sym}) +$0 + name + should_not respond_to + scope + source.ruby.rspec + tabTrigger + shnrt + uuid + E352E5F0-C83B-4C36-AC72-7BFC4F58DBF0 + + diff --git a/User/rspec/Snippets/should_not_satisfy.tmSnippet b/User/rspec/Snippets/should_not_satisfy.tmSnippet new file mode 100644 index 0000000..dc608ec --- /dev/null +++ b/User/rspec/Snippets/should_not_satisfy.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should_not satisfy { |obj| $2 } +$0 + name + should_not satisfy + scope + source.ruby.rspec + tabTrigger + shns + uuid + E573AF3E-F301-4105-ACA3-C9913431E6ED + + diff --git a/User/rspec/Snippets/should_not_throw.tmSnippet b/User/rspec/Snippets/should_not_throw.tmSnippet new file mode 100644 index 0000000..9077aec --- /dev/null +++ b/User/rspec/Snippets/should_not_throw.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + lambda { $1 }.should_not throw_symbol(:${2:symbol}) +$0 + name + should_not throw + scope + source.ruby.rspec + tabTrigger + shnt + uuid + EF7CD2D2-68BC-425B-9C49-7E3597EFE804 + + diff --git a/User/rspec/Snippets/should_predicate.tmSnippet b/User/rspec/Snippets/should_predicate.tmSnippet new file mode 100644 index 0000000..0e673e4 --- /dev/null +++ b/User/rspec/Snippets/should_predicate.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should ${2:be_${3:predicate}} $4 +$0 + name + should predicate + scope + source.ruby.rspec + tabTrigger + shp + uuid + FCFC8C47-F477-4674-BFDD-2E0B8D475CE0 + + diff --git a/User/rspec/Snippets/should_raise.tmSnippet b/User/rspec/Snippets/should_raise.tmSnippet new file mode 100644 index 0000000..7329797 --- /dev/null +++ b/User/rspec/Snippets/should_raise.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + lambda { $1 }.should raise_error(${2:error}) +$0 + name + should raise_error + scope + source.ruby.rspec + tabTrigger + shre + uuid + 813263F0-A2C0-465F-A617-69ECBAF8F7DD + + diff --git a/User/rspec/Snippets/should_receive.tmSnippet b/User/rspec/Snippets/should_receive.tmSnippet new file mode 100644 index 0000000..c6001b0 --- /dev/null +++ b/User/rspec/Snippets/should_receive.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + ${1:mock}.should_receive(:${2:message})$3 + name + should_receive + scope + source.ruby.rspec + tabTrigger + shr + uuid + 0A7E08E5-4756-49BA-B015-FB3A4D11EA45 + + diff --git a/User/rspec/Snippets/should_receive_with_args.tmSnippet b/User/rspec/Snippets/should_receive_with_args.tmSnippet new file mode 100644 index 0000000..481ebd8 --- /dev/null +++ b/User/rspec/Snippets/should_receive_with_args.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + with(${1})$2 + name + with args + scope + source.ruby.rspec + tabTrigger + wia + uuid + 3F3E8066-8C1A-40D1-85C7-9DC18C6A34BA + + diff --git a/User/rspec/Snippets/should_redirect_to.tmSnippet b/User/rspec/Snippets/should_redirect_to.tmSnippet new file mode 100644 index 0000000..fbf7ff8 --- /dev/null +++ b/User/rspec/Snippets/should_redirect_to.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + response.should redirect_to(${1:url}) +$0 + name + should redirect_to + scope + source.ruby.rspec + tabTrigger + shrt + uuid + 96F0A193-32F1-4A75-9093-5D20E36593EC + + diff --git a/User/rspec/Snippets/should_render.tmSnippet b/User/rspec/Snippets/should_render.tmSnippet new file mode 100644 index 0000000..eb1e7b4 --- /dev/null +++ b/User/rspec/Snippets/should_render.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + response.should render_template(:${1:template}) +$0 + name + should render_template + scope + source.ruby.rspec + tabTrigger + shrt + uuid + 647C94D6-42FE-40F0-8618-73F7725BF59E + + diff --git a/User/rspec/Snippets/should_respond_to.tmSnippet b/User/rspec/Snippets/should_respond_to.tmSnippet new file mode 100644 index 0000000..603fdb5 --- /dev/null +++ b/User/rspec/Snippets/should_respond_to.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should respond_to(:${2:sym}) +$0 + name + should respond_to + scope + source.ruby.rspec + tabTrigger + shrt + uuid + D139CA8C-AACC-4314-AB86-BB3021D31B12 + + diff --git a/User/rspec/Snippets/should_satisfy.tmSnippet b/User/rspec/Snippets/should_satisfy.tmSnippet new file mode 100644 index 0000000..d112e86 --- /dev/null +++ b/User/rspec/Snippets/should_satisfy.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + ${1:target}.should satisfy { |obj| $2 } +$0 + name + should satisfy + scope + source.ruby.rspec + tabTrigger + shs + uuid + 3FF9AC90-799D-4BFD-8203-58199A1AD429 + + diff --git a/User/rspec/Snippets/should_throw.tmSnippet b/User/rspec/Snippets/should_throw.tmSnippet new file mode 100644 index 0000000..4a92aa0 --- /dev/null +++ b/User/rspec/Snippets/should_throw.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + lambda { $1 }.should throw_symbol(:${2:symbol}) +$0 + name + should throw + scope + source.ruby.rspec + tabTrigger + sht + uuid + C41E8AD6-00F5-44E7-9809-F79666FE79F0 + + diff --git a/User/rspec/Snippets/stub.tmSnippet b/User/rspec/Snippets/stub.tmSnippet new file mode 100644 index 0000000..b815887 --- /dev/null +++ b/User/rspec/Snippets/stub.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + ${1:double}.stub(:${2:message})$3 + name + stub + scope + source.ruby.rspec + tabTrigger + stu + uuid + C4DD43A2-7E6A-4875-AF86-7EF7963BF83D + + diff --git a/User/rspec/Snippets/teardown.tmSnippet b/User/rspec/Snippets/teardown.tmSnippet new file mode 100644 index 0000000..eeada4b --- /dev/null +++ b/User/rspec/Snippets/teardown.tmSnippet @@ -0,0 +1,18 @@ + + + + + content + after(${1::each}) do + $0 +end + name + after + scope + source.ruby.rspec + tabTrigger + aft + uuid + 1201777F-3AC4-4B2A-9A46-C215F891B07A + + diff --git a/User/rspec/Snippets/twice.tmSnippet b/User/rspec/Snippets/twice.tmSnippet new file mode 100644 index 0000000..999d445 --- /dev/null +++ b/User/rspec/Snippets/twice.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + twice + name + twice + scope + source.ruby.rspec + tabTrigger + tw + uuid + 85E6D1EE-74A4-4B4A-8A00-942B788FF599 + + diff --git a/User/rspec/package-metadata.json b/User/rspec/package-metadata.json new file mode 100644 index 0000000..69c4be2 --- /dev/null +++ b/User/rspec/package-metadata.json @@ -0,0 +1 @@ +{"url": "https://github.com/SublimeText/RSpec", "version": "2011.07.21.15.47.12", "description": "Sublime Text 2 plugin for RSpec BDD Framework"} \ No newline at end of file diff --git a/User/syntax_highlighting.py b/User/syntax_highlighting.py new file mode 100644 index 0000000..e891378 --- /dev/null +++ b/User/syntax_highlighting.py @@ -0,0 +1,27 @@ +import sublime, sublime_plugin +import os + +class DetectFileTypeCommand(sublime_plugin.EventListener): + """ Detects current file type if the file's extension isn't conclusive """ + """ Modified for Ruby on Rails and Sublime Text 2 """ + """ Original pastie here: http://pastie.org/private/kz8gtts0cjcvkec0d4quqa """ + + def on_load(self, view): + filename = view.file_name() + if not filename: # buffer has never been saved + return + + name = os.path.basename(filename.lower()) + if name[-8:] == "_spec.rb": + set_syntax(view, "Rspec", "User/rspec") + elif name == "factories.rb": + set_syntax(view, "Rspec", "User/rspec") + elif name == "gemfile": + set_syntax(view, "Ruby on Rails", "Rails") + + +def set_syntax(view, syntax, path=None): + if path is None: + path = syntax + view.settings().set('syntax', 'Packages/'+ path + '/' + syntax + '.tmLanguage') + print "Switched syntax to: " + syntax diff --git a/User/syntax_highlighting.pyc b/User/syntax_highlighting.pyc new file mode 100644 index 0000000..502a2b2 Binary files /dev/null and b/User/syntax_highlighting.pyc differ diff --git a/Vintage/Default (Linux).sublime-keymap b/Vintage/Default (Linux).sublime-keymap new file mode 100644 index 0000000..f092083 --- /dev/null +++ b/Vintage/Default (Linux).sublime-keymap @@ -0,0 +1,80 @@ +[ + { "keys": ["left"], "command": "set_motion", "args": { + "motion": "vi_move_by_characters_in_line", + "motion_args": {"forward": false, "extend": true }}, + "context": [{"key": "setting.command_mode"}] + }, + { "keys": ["right"], "command": "set_motion", "args": { + "motion": "vi_move_by_characters_in_line", + "motion_args": {"forward": true, "extend": true, "visual": false }}, + "context": [{"key": "setting.command_mode"}] + }, + { "keys": ["up"], "command": "set_motion", "args": { + "motion": "move", + "motion_args": {"by": "lines", "forward": false, "extend": true }}, + "context": [{"key": "setting.command_mode"}] + }, + { "keys": ["down"], "command": "set_motion", "args": { + "motion": "move", + "motion_args": {"by": "lines", "forward": true, "extend": true }}, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["ctrl+left"], "command": "set_motion", "args": { + "motion": "move", + "motion_args": {"by": "stops", "word_begin": true, "punct_begin": true, "empty_line": true, "forward": false, "extend": true }}, + "context": [{"key": "setting.command_mode"}] + }, + { "keys": ["ctrl+right"], "command": "set_motion", "args": { + "motion": "move", + "motion_args": {"by": "stops", "word_begin": true, "punct_begin": true, "empty_line": true, "forward": true, "extend": true }}, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["alt+left"], "command": "set_motion", "args": { + "motion": "move", + "motion_args": {"by": "stops", "word_begin": true, "sub_word_begin": true, "punct_begin": true, "empty_line": true, "forward": false, "extend": true }}, + "context": [{"key": "setting.command_mode"}] + }, + { "keys": ["alt+right"], "command": "set_motion", "args": { + "motion": "move", + "motion_args": {"by": "stops", "word_begin": true, "sub_word_begin": true, "punct_begin": true, "empty_line": true, "forward": true, "extend": true }}, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["pageup"], "command": "set_motion", "args": { + "motion": "move", + "motion_args": {"by": "pages", "forward": false, "extend": true }}, + "context": [{"key": "setting.command_mode"}, {"key": "setting.vintage_ctrl_keys"}] + }, + { "keys": ["pagedown"], "command": "set_motion", "args": { + "motion": "move", + "motion_args": {"by": "pages", "forward": true, "extend": true }}, + "context": [{"key": "setting.command_mode"}, {"key": "setting.vintage_ctrl_keys"}] + }, + + { "keys": ["home"], "command": "set_motion", "args": { + "motion": "vi_move_to_first_non_white_space_character", + "motion_args": {"extend": true }}, + "context": [{"key": "setting.command_mode"}] + }, + { "keys": ["end"], "command": "set_motion", "args": { + "motion": "vi_move_to_hard_eol", + "motion_args": {"repeat": 1, "extend": true}, + "inclusive": true }, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["ctrl+home"], "command": "set_motion", "args": { + "motion": "move_to", + "motion_args": {"to": "bof", "extend": true}, + "inclusive": true }, + "context": [{"key": "setting.command_mode"}] + }, + { "keys": ["ctrl+end"], "command": "set_motion", "args": { + "motion": "move_to", + "motion_args": {"to": "eof", "extend": true}, + "inclusive": true }, + "context": [{"key": "setting.command_mode"}] + } +] diff --git a/Vintage/Default (OSX).sublime-keymap b/Vintage/Default (OSX).sublime-keymap new file mode 100644 index 0000000..b973361 --- /dev/null +++ b/Vintage/Default (OSX).sublime-keymap @@ -0,0 +1,120 @@ +[ + { "keys": ["ctrl+c"], "command": "exit_insert_mode", + "context": + [ + { "key": "setting.command_mode", "operand": false }, + { "key": "setting.is_widget", "operand": false }, + { "key": "setting.vintage_ctrl_keys" } + ] + }, + + { "keys": ["ctrl+c"], "command": "exit_visual_mode", + "context": + [ + { "key": "setting.command_mode"}, + { "key": "num_selections", "operand": 1}, + { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": false }, + { "key": "setting.vintage_ctrl_keys" } + ] + }, + + { "keys": ["ctrl+c"], "command": "vi_cancel_current_action", + "context": + [ + { "key": "setting.command_mode" }, + { "key": "vi_has_input_state" }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": false }, + { "key": "setting.vintage_ctrl_keys" } + ] + }, + + { "keys": ["left"], "command": "set_motion", "args": { + "motion": "vi_move_by_characters_in_line", + "motion_args": {"forward": false, "extend": true }}, + "context": [{"key": "setting.command_mode"}] + }, + { "keys": ["right"], "command": "set_motion", "args": { + "motion": "vi_move_by_characters_in_line", + "motion_args": {"forward": true, "extend": true, "visual": false }}, + "context": [{"key": "setting.command_mode"}] + }, + { "keys": ["up"], "command": "set_motion", "args": { + "motion": "move", + "motion_args": {"by": "lines", "forward": false, "extend": true }}, + "context": [{"key": "setting.command_mode"}] + }, + { "keys": ["down"], "command": "set_motion", "args": { + "motion": "move", + "motion_args": {"by": "lines", "forward": true, "extend": true }}, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["alt+left"], "command": "set_motion", "args": { + "motion": "move", + "motion_args": {"by": "stops", "word_begin": true, "punct_begin": true, "empty_line": true, "forward": false, "extend": true }}, + "context": [{"key": "setting.command_mode"}] + }, + { "keys": ["alt+right"], "command": "set_motion", "args": { + "motion": "move", + "motion_args": {"by": "stops", "word_begin": true, "punct_begin": true, "empty_line": true, "forward": true, "extend": true }}, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["ctrl+left"], "command": "set_motion", "args": { + "motion": "move", + "motion_args": {"by": "stops", "word_begin": true, "sub_word_begin": true, "punct_begin": true, "empty_line": true, "forward": false, "extend": true }}, + "context": [{"key": "setting.command_mode"}] + }, + { "keys": ["ctrl+right"], "command": "set_motion", "args": { + "motion": "move", + "motion_args": {"by": "stops", "word_begin": true, "sub_word_begin": true, "punct_begin": true, "empty_line": true, "forward": true, "extend": true }}, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["pageup"], "command": "set_motion", "args": { + "motion": "move", + "motion_args": {"by": "pages", "forward": false, "extend": true }}, + "context": [{"key": "setting.command_mode"}, {"key": "setting.vintage_ctrl_keys"}] + }, + { "keys": ["pagedown"], "command": "set_motion", "args": { + "motion": "move", + "motion_args": {"by": "pages", "forward": true, "extend": true }}, + "context": [{"key": "setting.command_mode"}, {"key": "setting.vintage_ctrl_keys"}] + }, + + { "keys": ["super+left"], "command": "set_motion", "args": { + "motion": "vi_move_to_first_non_white_space_character", + "motion_args": {"extend": true }}, + "context": [{"key": "setting.command_mode"}] + }, + { "keys": ["home"], "command": "set_motion", "args": { + "motion": "vi_move_to_first_non_white_space_character", + "motion_args": {"extend": true }}, + "context": [{"key": "setting.command_mode"}] + }, + { "keys": ["super+right"], "command": "set_motion", "args": { + "motion": "vi_move_to_hard_eol", + "motion_args": {"repeat": 1, "extend": true}, + "inclusive": true }, + "context": [{"key": "setting.command_mode"}] + }, + { "keys": ["end"], "command": "set_motion", "args": { + "motion": "vi_move_to_hard_eol", + "motion_args": {"repeat": 1, "extend": true}, + "inclusive": true }, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["super+up"], "command": "set_motion", "args": { + "motion": "move_to", + "motion_args": {"to": "bof", "extend": true}, + "inclusive": true }, + "context": [{"key": "setting.command_mode"}] + }, + { "keys": ["super+down"], "command": "set_motion", "args": { + "motion": "move_to", + "motion_args": {"to": "eof", "extend": true}, + "inclusive": true }, + "context": [{"key": "setting.command_mode"}] + } +] diff --git a/Vintage/Default (Windows).sublime-keymap b/Vintage/Default (Windows).sublime-keymap new file mode 100644 index 0000000..f092083 --- /dev/null +++ b/Vintage/Default (Windows).sublime-keymap @@ -0,0 +1,80 @@ +[ + { "keys": ["left"], "command": "set_motion", "args": { + "motion": "vi_move_by_characters_in_line", + "motion_args": {"forward": false, "extend": true }}, + "context": [{"key": "setting.command_mode"}] + }, + { "keys": ["right"], "command": "set_motion", "args": { + "motion": "vi_move_by_characters_in_line", + "motion_args": {"forward": true, "extend": true, "visual": false }}, + "context": [{"key": "setting.command_mode"}] + }, + { "keys": ["up"], "command": "set_motion", "args": { + "motion": "move", + "motion_args": {"by": "lines", "forward": false, "extend": true }}, + "context": [{"key": "setting.command_mode"}] + }, + { "keys": ["down"], "command": "set_motion", "args": { + "motion": "move", + "motion_args": {"by": "lines", "forward": true, "extend": true }}, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["ctrl+left"], "command": "set_motion", "args": { + "motion": "move", + "motion_args": {"by": "stops", "word_begin": true, "punct_begin": true, "empty_line": true, "forward": false, "extend": true }}, + "context": [{"key": "setting.command_mode"}] + }, + { "keys": ["ctrl+right"], "command": "set_motion", "args": { + "motion": "move", + "motion_args": {"by": "stops", "word_begin": true, "punct_begin": true, "empty_line": true, "forward": true, "extend": true }}, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["alt+left"], "command": "set_motion", "args": { + "motion": "move", + "motion_args": {"by": "stops", "word_begin": true, "sub_word_begin": true, "punct_begin": true, "empty_line": true, "forward": false, "extend": true }}, + "context": [{"key": "setting.command_mode"}] + }, + { "keys": ["alt+right"], "command": "set_motion", "args": { + "motion": "move", + "motion_args": {"by": "stops", "word_begin": true, "sub_word_begin": true, "punct_begin": true, "empty_line": true, "forward": true, "extend": true }}, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["pageup"], "command": "set_motion", "args": { + "motion": "move", + "motion_args": {"by": "pages", "forward": false, "extend": true }}, + "context": [{"key": "setting.command_mode"}, {"key": "setting.vintage_ctrl_keys"}] + }, + { "keys": ["pagedown"], "command": "set_motion", "args": { + "motion": "move", + "motion_args": {"by": "pages", "forward": true, "extend": true }}, + "context": [{"key": "setting.command_mode"}, {"key": "setting.vintage_ctrl_keys"}] + }, + + { "keys": ["home"], "command": "set_motion", "args": { + "motion": "vi_move_to_first_non_white_space_character", + "motion_args": {"extend": true }}, + "context": [{"key": "setting.command_mode"}] + }, + { "keys": ["end"], "command": "set_motion", "args": { + "motion": "vi_move_to_hard_eol", + "motion_args": {"repeat": 1, "extend": true}, + "inclusive": true }, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["ctrl+home"], "command": "set_motion", "args": { + "motion": "move_to", + "motion_args": {"to": "bof", "extend": true}, + "inclusive": true }, + "context": [{"key": "setting.command_mode"}] + }, + { "keys": ["ctrl+end"], "command": "set_motion", "args": { + "motion": "move_to", + "motion_args": {"to": "eof", "extend": true}, + "inclusive": true }, + "context": [{"key": "setting.command_mode"}] + } +] diff --git a/Vintage/Default.sublime-keymap b/Vintage/Default.sublime-keymap new file mode 100644 index 0000000..4711807 --- /dev/null +++ b/Vintage/Default.sublime-keymap @@ -0,0 +1,1057 @@ +[ + { "keys": ["escape"], "command": "exit_insert_mode", + "context": + [ + { "key": "setting.command_mode", "operand": false }, + { "key": "setting.is_widget", "operand": false } + ] + }, + + { "keys": ["escape"], "command": "exit_visual_mode", + "context": + [ + { "key": "setting.command_mode"}, + { "key": "num_selections", "operand": 1}, + { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": false } + ] + }, + + { "keys": ["escape"], "command": "hide_auto_complete", "context": + [ + { "key": "auto_complete_visible", "operator": "equal", "operand": true } + ] + }, + + { "keys": ["escape"], "command": "vi_cancel_current_action", "context": + [ + { "key": "setting.command_mode" }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": false }, + { "key": "vi_has_input_state" } + ] + }, + + { "keys": ["ctrl+["], "command": "exit_insert_mode", + "context": + [ + { "key": "setting.command_mode", "operand": false }, + { "key": "setting.is_widget", "operand": false }, + { "key": "setting.vintage_ctrl_keys" } + ] + }, + + { "keys": ["ctrl+["], "command": "exit_visual_mode", + "context": + [ + { "key": "setting.command_mode"}, + { "key": "num_selections", "operand": 1}, + { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": false }, + { "key": "setting.vintage_ctrl_keys" } + ] + }, + + { "keys": ["ctrl+["], "command": "vi_cancel_current_action", "context": + [ + { "key": "setting.command_mode" }, + { "key": "vi_has_input_state" }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": false }, + { "key": "setting.vintage_ctrl_keys" } + ] + }, + + { "keys": ["z", "z"], "command" : "center_on_cursor", "context": [{"key": "setting.command_mode"}] }, + { "keys": ["z", "t"], "command" : "scroll_cursor_line_to_top", "context": [{"key": "setting.command_mode"}] }, + { "keys": ["z", "b"], "command" : "scroll_cursor_line_to_bottom", "context": [{"key": "setting.command_mode"}] }, + + { "keys": ["Z", "Z"], "command" : "vi_save_and_exit", "context": [{"key": "setting.command_mode"}] }, + + { "keys": ["i"], "command": "enter_insert_mode", + "context": + [ + {"key": "setting.command_mode"}, + {"key": "selection_empty"} + ] + }, + + { "keys": ["I"], "command": "enter_insert_mode", "args": + {"insert_command": "vi_move_to_first_non_white_space_character"}, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["I"], "command": "enter_insert_mode", + "args": {"insert_command": "shrink_selections_to_beginning"}, + "context": [ + {"key": "setting.command_mode"}, + {"key": "selection_empty", "operator": "equal", "operand": false} + ] + }, + + { "keys": ["a"], "command": "enter_insert_mode", "args": + {"insert_command": "move", "insert_args": {"by": "characters", "forward": true} }, + "context": + [ + {"key": "setting.command_mode"}, + {"key": "selection_empty"} + ] + }, + + { "keys": ["A"], "command": "enter_insert_mode", "args": + {"insert_command": "move_to", "insert_args": {"to": "hardeol"} }, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["A"], "command": "enter_insert_mode", + "args": {"insert_command": "shrink_selections_to_end"}, + "context": [ + {"key": "setting.command_mode"}, + {"key": "selection_empty", "operator": "equal", "operand": false} + ] + }, + + { "keys": ["o"], "command": "enter_insert_mode", "args": + {"insert_command": "run_macro_file", "insert_args": {"file": "Packages/Default/Add Line.sublime-macro"} }, + "context": [{"key": "setting.command_mode"}] + }, + { "keys": ["o"], "command": "vi_reverse_selections_direction", + "context": + [ + {"key": "setting.command_mode"}, + {"key": "selection_empty", "operator": "equal", "operand": false} + ] + }, + + { "keys": ["O"], "command": "enter_insert_mode", "args": + {"insert_command": "run_macro_file", "insert_args": {"file": "Packages/Default/Add Line Before.sublime-macro"} }, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["u"], "command": "undo", "context": [{"key": "setting.command_mode"}] }, + { + "keys": ["ctrl+r"], "command": "redo", + "context": [{"key": "setting.command_mode"}, {"key": "setting.vintage_ctrl_keys"}] + }, + + + { "keys": ["u"], "command": "visual_lower_case", + "context": + [ + {"key": "setting.command_mode"}, + {"key": "selection_empty", "operator": "equal", "operand": false, "match_all": false} + ] + }, + + { "keys": ["U"], "command": "visual_upper_case", + "context": + [ + {"key": "setting.command_mode"}, + {"key": "selection_empty", "operator": "equal", "operand": false, "match_all": false} + ] + }, + + { "keys": ["v"], "command": "enter_visual_mode", + "context": [{"key": "setting.command_mode"}] + }, + { "keys": ["v"], "command": "set_motion_mode", "args": {"mode": "normal"}, + "context": + [ + {"key": "setting.command_mode"}, + {"key": "vi_has_action" } + ] + }, + { "keys": ["v"], "command": "exit_visual_mode", "args": {"toggle": true}, + "context": + [ + {"key": "setting.command_mode"}, + {"key": "selection_empty", "operator": "equal", "operand": false, "match_all": false} + ] + }, + + { "keys": ["V"], "command": "enter_visual_line_mode", + "context": [{"key": "setting.command_mode"}] + }, + { "keys": ["V"], "command": "enter_visual_line_mode", + "context": + [ + {"key": "setting.command_mode"}, + {"key": "vi_motion_mode", "operand": "line"} + ] + }, + { "keys": ["V"], "command": "set_motion_mode", "args": {"mode": "line"}, + "context": + [ + {"key": "setting.command_mode"}, + {"key": "vi_has_action" } + ] + }, + + { "keys": ["\"", ""], "command": "set_register", + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["P"], "command": "vi_paste_left", + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["p"], "command": "vi_paste_right", + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["/"], "command": "show_panel", "args": + { + "panel": "incremental_find", + "select_text": false, + "reverse": false + }, + "context": [{"key": "setting.command_mode"}] + }, + { "keys": ["?"], "command": "show_panel", "args": + { + "panel": "incremental_find", + "select_text": false, + "reverse": true + }, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": [":"], "command": "show_overlay", "args": {"overlay": "command_palette", "text": ":"}, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["*"], "command": "find_under", + "args": {"select_text": false}, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["#"], "command": "find_under_prev", + "args": {"select_text": false}, + "context": [{"key": "setting.command_mode"}] + }, + + { + "keys": ["n"], "command": "find_next", + "args": {"select_text": false}, + "context": [{"key": "setting.command_mode"}] + }, + { + "keys": ["N"], + "command": "find_prev", + "args": {"select_text": false}, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["J"], "command": "join_lines", "context": [{"key": "setting.command_mode"}] }, + + { "keys": ["."], "command": "repeat", "context": [{"key": "setting.command_mode"}] }, + + { "keys": ["r", "enter"], "command": "replace_character", + "args": {"character": "\n"}, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["r", ""], "command": "replace_character", + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["X"], "command": "set_action_motion", "args": { + "action": "vi_left_delete", + "motion": null }, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["x"], "command": "set_action_motion", "args": { + "action": "vi_right_delete", + "motion": null }, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["m", ""], "command": "vi_set_bookmark", + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["`", ""], "command": "vi_select_bookmark", + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["'", ""], "command": "vi_select_bookmark", + "args": {"select_bol": true}, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["~"], "command": "set_action_motion", "args": { + "action": "swap_case", + "motion": "vi_move_by_characters_in_line", + "motion_args": {"forward": true, "extend": true, "visual": false } }, + "context": + [ + {"key": "selection_empty", "operator": "equal", "operand": true}, + {"key": "setting.command_mode"} + ] + }, + + { "keys": ["~"], "command": "swap_case", "context": + [ + {"key": "selection_empty", "operator": "equal", "operand": false}, + {"key": "setting.command_mode"} + ] + }, + + { "keys": ["q", ""], "command": "vi_begin_record_macro", + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["q"], "command": "vi_end_record_macro", + "context": [{"key": "setting.command_mode"}, {"key": "is_recording_macro"}] + }, + + { "keys": ["@", ""], "command": "vi_replay_macro", + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["ctrl+y"], "command": "scroll_lines", "args": {"amount": 1.0 }, + "context": [{"key": "setting.command_mode"}, {"key": "setting.vintage_ctrl_keys"}] + }, + { "keys": ["ctrl+e"], "command": "scroll_lines", "args": {"amount": -1.0 }, + "context": [{"key": "setting.command_mode"}, {"key": "setting.vintage_ctrl_keys"}] + }, + + { "keys": ["ctrl+w", "c"], "command": "close", + "context": [{"key": "setting.vintage_ctrl_keys"}, {"key": "setting.command_mode"}] + }, + { "keys": ["ctrl+w", "q"], "command": "close", + "context": [{"key": "setting.vintage_ctrl_keys"}, {"key": "setting.command_mode"}] + }, + { "keys": ["ctrl+w", "o"], "command": "set_layout", + "args": + { + "cols": [0.0, 1.0], + "rows": [0.0, 1.0], + "cells": [[0, 0, 1, 1]] + }, + "context": [{"key": "setting.vintage_ctrl_keys"}, {"key": "setting.command_mode"}] + }, + + { "keys": ["ctrl+w", "s"], "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]] + }, + "context": [{"key": "setting.vintage_ctrl_keys"}, {"key": "setting.command_mode"}] + }, + + { "keys": ["ctrl+w", "v"], "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]] + }, + "context": [{"key": "setting.vintage_ctrl_keys"}, {"key": "setting.command_mode"}] + }, + + { "keys": ["ctrl+w", "k"], "command": "move_group_focus", + "args": {"direction": "up"}, + "context": [{"key": "setting.vintage_ctrl_keys"}, {"key": "setting.command_mode"}] + }, + + { "keys": ["ctrl+w", "j"], "command": "move_group_focus", + "args": {"direction": "down"}, + "context": [{"key": "setting.vintage_ctrl_keys"}, {"key": "setting.command_mode"}] + }, + + { "keys": ["ctrl+w", "l"], "command": "move_group_focus", + "args": {"direction": "right"}, + "context": [{"key": "setting.vintage_ctrl_keys"}, {"key": "setting.command_mode"}] + }, + + { "keys": ["ctrl+w", "h"], "command": "move_group_focus", + "args": {"direction": "left"}, + "context": [{"key": "setting.vintage_ctrl_keys"}, {"key": "setting.command_mode"}] + }, + + // + // Actions + // + + { "keys": ["d"], "command": "set_action", "args": { + "action": "vi_delete", + "description": "Delete"}, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["y"], "command": "set_action", "args": { + "action": "vi_copy", + "description": "Yank"}, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["c"], "command": "set_action", "args": { + "action": "enter_insert_mode", + "description": "Change", + "action_args": {"insert_command": "vi_delete"}}, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["g", "u"], "command": "set_action", "args": {"action": "lower_case", "description": "Lower Case"}, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["g", "U"], "command": "set_action", "args": {"action": "upper_case", "description": "Upper Case"}, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["g", "~"], "command": "set_action", "args": {"action": "swap_case", "description": "Swap Case"}, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["g", "?"], "command": "set_action", "args": {"action": "rot13", "description": "Rot13"}, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["g", "a"], "command": "show_ascii_info", + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["g", "f"], "command": "vi_open_file_under_selection", + "context": [{"key": "setting.command_mode"}] + }, + + { + "keys": ["g", "q"], "command": "set_action", "args": {"action": "wrap_lines", "description": "Wrap Lines"}, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": [">"], "command": "set_action", "args": {"action": "vi_indent", "description": "Indent"}, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["<"], "command": "set_action", "args": {"action": "vi_unindent", "description": "Unindent"}, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["="], "command": "set_action", "args": {"action": "reindent", "description": "Reindent", "action_args": {"force_indent": false}}, + "context": [{"key": "setting.command_mode"}] + }, + + // + // Motions + // + { "keys": ["{"], "command": "set_motion", "args": { + "motion": "move", + "motion_args": {"by": "stops", "word_begin": false, "empty_line": true, "separators": "", "forward": false, "extend": true }}, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["}"], "command": "set_motion", "args": { + "motion": "move", + "motion_args": {"by": "stops", "word_begin": false, "empty_line": true, "separators": "", "forward": true, "extend": true }}, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["W"], "command": "set_motion", "args": { + "motion": "move", + "motion_args": {"by": "stops", "word_begin": true, "empty_line": true, "separators": "", "forward": true, "extend": true }, + "clip_to_line": true }, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["w"], "command": "set_motion", "args": { + "motion": "move", + "motion_args": {"by": "stops", "word_begin": true, "punct_begin": true, "empty_line": true, "forward": true, "extend": true }, + "clip_to_line": true }, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["b"], "command": "set_motion", "args": { + "motion": "move", + "motion_args": {"by": "stops", "word_begin": true, "punct_begin": true, "empty_line": true, "forward": false, "extend": true }, + "clip_to_line": true }, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["B"], "command": "set_motion", "args": { + "motion": "move", + "motion_args": {"by": "stops", "word_begin": true, "empty_line": true, "separators": "", "forward": false, "extend": true }, + "clip_to_line": true }, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["e"], "command": "set_motion", "args": { + "motion": "move", + "motion_args": {"by": "stops", "word_end": true, "punct_end": true, "empty_line": true, "forward": true, "extend": true }, + "inclusive": true, + "clip_to_line": true }, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["E"], "command": "set_motion", "args": { + "motion": "move", + "motion_args": {"by": "stops", "word_end": true, "empty_line": true, "separators": "", "forward": true, "extend": true }, + "inclusive": true, + "clip_to_line": true }, + "context": [{"key": "setting.command_mode"}] + }, + + // Make cw act kinda like ce + { "keys": ["w"], "command": "set_motion", "args": { + "motion": "vi_extend_to_end_of_whitespace_or_word", + "motion_args": {"repeat": 1}, + "inclusive": true, + "clip_to_line": true }, + "context": + [ + {"key": "setting.command_mode"}, + {"key": "vi_action", "operand": "enter_insert_mode"} + ] + }, + + // Make cW act kinda like cE + { "keys": ["W"], "command": "set_motion", "args": { + "motion": "vi_extend_to_end_of_whitespace_or_word", + "motion_args": {"repeat": 1, "separators": ""}, + "inclusive": true, + "clip_to_line": true }, + "context": + [ + {"key": "setting.command_mode"}, + {"key": "vi_action", "operand": "enter_insert_mode"} + ] + }, + + // Bonus: alt+w and alt+b move by sub-words + { "keys": ["alt+w"], "command": "set_motion", "args": { + "motion": "move", + "motion_args": {"by": "stops", "word_begin": true, "sub_word_begin": true, "punct_begin": true, "empty_line": true, "forward": true, "extend": true }, + "clip_to_line": true }, + "context": [{"key": "setting.command_mode"}] + }, + { "keys": ["alt+w"], "command": "set_motion", "args": { + "motion": "move", + "motion_args": {"by": "stops", "word_end": true, "sub_word_end": true, "punct_end": true, "empty_line": true, "forward": true, "extend": true }, + "inclusive": true, + "clip_to_line": true }, + "context": + [ + {"key": "setting.command_mode"}, + {"key": "vi_action", "operand": "enter_insert_mode"} + ] + }, + { "keys": ["alt+b"], "command": "set_motion", "args": { + "motion": "move", + "motion_args": {"by": "stops", "word_begin": true, "sub_word_begin": true, "punct_begin": true, "empty_line": true, "forward": false, "extend": true }, + "clip_to_line": true }, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["$"], "command": "set_motion", "args": { + "motion": "vi_move_to_hard_eol", + "motion_args": {"repeat": 1, "extend": true}, + "inclusive": true, + "clip_to_line": true }, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["^"], "command": "set_motion", "args": { + "motion": "vi_move_to_first_non_white_space_character", + "motion_args": {"extend": true }, + "clip_to_line": true }, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["_"], "command": "set_motion", "args": { + "motion": "vi_move_to_first_non_white_space_character", + "motion_args": {"extend": true, "repeat": 1 }, + "linewise": true, + "clip_to_line": true }, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": [" "], "command": "set_motion", "args": { + "motion": "vi_move_by_characters", + "motion_args": {"forward": true, "extend": true, "visual": false }, + "clip_to_line": true }, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["enter"], "command": "set_motion", "args": { + "motion": "move", + "motion_args": {"by": "lines", "forward": true, "extend": true }}, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["backspace"], "command": "set_motion", "args": { + "motion": "vi_move_by_characters", + "motion_args": {"forward": false, "extend": true }}, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["shift+enter"], "command": "set_motion", "args": { + "motion": "move", + "motion_args": {"by": "lines", "forward": true, "extend": true }}, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["l"], "command": "set_motion", "args": { + "motion": "vi_move_by_characters_in_line", + "motion_args": {"forward": true, "extend": true, "visual": false }}, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["h"], "command": "set_motion", "args": { + "motion": "vi_move_by_characters_in_line", + "motion_args": {"forward": false, "extend": true }}, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["j"], "command": "set_motion", "args": { + "motion": "move", + "motion_args": {"by": "lines", "forward": true, "extend": true }, + "linewise": true }, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["k"], "command": "set_motion", "args": { + "motion": "move", + "motion_args": {"by": "lines", "forward": false, "extend": true }, + "linewise": true }, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["G"], "command": "set_motion", "args": { + "motion": "vi_goto_line", + "motion_args": {"repeat": 1, "explicit_repeat": true, "extend": true, + "ending": "eof" }, + "linewise": true }, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["g", "g"], "command": "set_motion", "args": { + "motion": "vi_goto_line", + "motion_args": {"repeat": 1, "explicit_repeat": true, "extend": true, + "ending": "bof" }, + "linewise": true }, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["f", ""], "command": "set_motion", "args": { + "motion": "vi_move_to_character", + "motion_args": {"extend": true }, + "inclusive": true, + "clip_to_line": true }, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["F", ""], "command": "set_motion", "args": { + "motion": "vi_move_to_character", + "motion_args": {"extend": true, "forward": false }, + "inclusive": true, + "clip_to_line": true }, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["t", ""], "command": "set_motion", "args": { + "motion": "vi_move_to_character", + "motion_args": {"extend": true, "before": true }, + "inclusive": true, + "clip_to_line": true }, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["T", ""], "command": "set_motion", "args": { + "motion": "vi_move_to_character", + "motion_args": {"extend": true, "forward": false, "before": true }, + "inclusive": true, + "clip_to_line": true }, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": [";"], "command": "set_repeat_move_to_character_motion", + "context": [{"key": "setting.command_mode"}] + }, + { "keys": [","], "command": "set_repeat_move_to_character_motion", + "args": {"reverse": true}, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["%"], "command": "set_motion", "args": { + "motion": "vi_move_to_brackets", + "motion_args": {"repeat": 1}, + "inclusive": true }, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["ctrl+f"], "command": "set_motion", "args": { + "motion": "move", + "motion_args": {"by": "pages", "forward": true, "extend": true }}, + "context": [{"key": "setting.command_mode"}, {"key": "setting.vintage_ctrl_keys"}] + }, + + { "keys": ["ctrl+b"], "command": "set_motion", "args": { + "motion": "move", + "motion_args": {"by": "pages", "forward": false, "extend": true }}, + "context": [{"key": "setting.command_mode"}, {"key": "setting.vintage_ctrl_keys"}] + }, + + { "keys": ["ctrl+u"], "command": "vi_scroll_lines", + "args": {"forward": false}, + "context": [{"key": "setting.command_mode"}, {"key": "setting.vintage_ctrl_keys"}] + }, + + { "keys": ["ctrl+d"], "command": "vi_scroll_lines", + "args": {"forward": true}, + "context": [{"key": "setting.command_mode"}, {"key": "setting.vintage_ctrl_keys"}] + }, + + { "keys": ["H"], "command": "set_motion", "args": { + "motion": "move_caret_to_screen_top", + "motion_args": {"repeat": 1}, + "linewise": true }, + "context": [{"key": "setting.command_mode"}] + }, + { "keys": ["M"], "command": "set_motion", "args": { + "motion": "move_caret_to_screen_center", + "linewise": true }, + "context": [{"key": "setting.command_mode"}] + }, + { "keys": ["L"], "command": "set_motion", "args": { + "motion": "move_caret_to_screen_bottom", + "motion_args": {"repeat": 1}, + "linewise": true }, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["z", "."], "command": "set_motion", "args": { + "motion": "scroll_current_line_to_screen_center", + "motion_args": {"repeat": 1}}, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["z", "enter"], "command": "set_motion", "args": { + "motion": "scroll_current_line_to_screen_top", + "motion_args": {"repeat": 1} + }, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["z", "o"], "command": "unfold", + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["z", "O"], "command": "unfold", + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["z", "c"], "command": "fold", + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["z", "C"], "command": "fold", + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["z", "n"], "command": "unfold_all", + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["z", "R"], "command": "unfold_all", + "context": [{"key": "setting.command_mode"}] + }, + + // Motions to allow double press to mean entire line + + { "keys": ["c"], "command": "set_motion", "args": { + "motion": "vi_span_count_lines", + "linewise": true, + "motion_args": {"repeat": 1}}, + "context": + [ + {"key": "setting.command_mode"}, + {"key": "vi_action", "operand": "enter_insert_mode"} + ] + }, + + { "keys": ["d"], "command": "set_motion", "args": { + "motion": "expand_selection", + "motion_args": {"to": "line" }, + "mode": "normal"}, + "context": + [ + {"key": "setting.command_mode"}, + {"key": "vi_action", "operand": "vi_delete"} + ] + }, + + { "keys": ["y"], "command": "set_motion", "args": { + "motion": "expand_selection", + "motion_args": {"to": "line" }, + "mode": "normal"}, + "context": + [ + {"key": "setting.command_mode"}, + {"key": "vi_action", "operand": "vi_copy"} + ] + }, + + { "keys": [">"], "command": "set_motion", "args": { + "motion": "expand_selection", + "motion_args": {"to": "line" }, + "mode": "normal"}, + "context": + [ + {"key": "setting.command_mode"}, + {"key": "vi_action", "operand": "vi_indent"} + ] + }, + + { "keys": ["<"], "command": "set_motion", "args": { + "motion": "expand_selection", + "motion_args": {"to": "line" }, + "mode": "normal"}, + "context": + [ + {"key": "setting.command_mode"}, + {"key": "vi_action", "operand": "vi_unindent"} + ] + }, + + { "keys": ["="], "command": "set_motion", "args": { + "motion": "expand_selection", + "mode": "normal"}, + "context": + [ + {"key": "setting.command_mode"}, + {"key": "vi_action", "operand": "reindent"} + ] + }, + + // Single key, combined action-motions + + { "keys": ["D"], "command": "set_action_motion", "args": { + "action": "vi_delete", + "motion": "vi_move_to_hard_eol", + "motion_args": {"repeat": 1, "extend": true}, + "motion_inclusive": true }, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["C"], "command": "set_action_motion", "args": { + "action": "enter_insert_mode", + "action_args": {"insert_command": "vi_delete"}, + "motion": "vi_move_to_hard_eol", + "motion_args": {"repeat": 1, "extend": true}, + "motion_inclusive": true }, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["Y"], "command": "set_action_motion", "args": { + "action": "vi_copy", + "motion": "expand_selection", + "motion_args": {"to": "line" }}, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["s"], "command": "set_action_motion", "args": { + "action": "enter_insert_mode", + "action_args": {"insert_command": "vi_delete"}, + "motion": "vi_move_by_characters_in_line", + "motion_args": {"forward": true, "extend": true, "visual": false }}, + "context": [{"key": "setting.command_mode"}] + }, + + { "keys": ["S"], "command": "set_action_motion", "args": { + "action": "enter_insert_mode", + "action_args": {"insert_command": "vi_delete"}, + "motion": "vi_span_count_lines", + "motion_linewise": true, + "motion_args": {"repeat": 1}}, + "context": [{"key": "setting.command_mode"}] + }, + + // Text Object motions + + { "keys": ["i", "w"], "command": "set_motion", "args": { + "motion": "vi_expand_to_words", + "motion_args": {"repeat": 1}}, + "context": [{"key": "setting.command_mode"}, {"key": "vi_can_enter_text_object"}] + }, + { "keys": ["a", "w"], "command": "set_motion", "args": { + "motion": "vi_expand_to_words", + "motion_args": {"repeat": 1, "outer": true}}, + "context": [{"key": "setting.command_mode"}, {"key": "vi_can_enter_text_object"}] + }, + + { "keys": ["i", "W"], "command": "set_motion", "args": { + "motion": "vi_expand_to_big_words", + "motion_args": {"repeat": 1}}, + "context": [{"key": "setting.command_mode"}, {"key": "vi_can_enter_text_object"}] + }, + { "keys": ["a", "W"], "command": "set_motion", "args": { + "motion": "vi_expand_to_big_words", + "motion_args": {"repeat": 1, "outer": true}}, + "context": [{"key": "setting.command_mode"}, {"key": "vi_can_enter_text_object"}] + }, + + { "keys": ["i", "\""], "command": "set_motion", "args": { + "motion": "vi_expand_to_quotes", + "motion_args": {"character": "\""}}, + "context": [{"key": "setting.command_mode"}, {"key": "vi_can_enter_text_object"}] + }, + { "keys": ["a", "\""], "command": "set_motion", "args": { + "motion": "vi_expand_to_quotes", + "motion_args": {"character": "\"", "outer": true}}, + "context": [{"key": "setting.command_mode"}, {"key": "vi_can_enter_text_object"}] + }, + { "keys": ["i", "'"], "command": "set_motion", "args": { + "motion": "vi_expand_to_quotes", + "motion_args": {"character": "'"}}, + "context": [{"key": "setting.command_mode"}, {"key": "vi_can_enter_text_object"}] + }, + { "keys": ["a", "'"], "command": "set_motion", "args": { + "motion": "vi_expand_to_quotes", + "motion_args": {"character": "'", "outer": true}}, + "context": [{"key": "setting.command_mode"}, {"key": "vi_can_enter_text_object"}] + }, + + { "keys": ["i", "t"], "command": "set_motion", "args": { + "motion": "vi_expand_to_tag"}, + "context": [{"key": "setting.command_mode"}, {"key": "vi_can_enter_text_object"}] + }, + { "keys": ["a", "t"], "command": "set_motion", "args": { + "motion": "vi_expand_to_tag", + "motion_args": {"outer": true}}, + "context": [{"key": "setting.command_mode"}, {"key": "vi_can_enter_text_object"}] + }, + + { "keys": ["i", "("], "command": "set_motion", "args": { + "motion": "vi_expand_to_brackets", + "motion_args": {"character": "("}}, + "context": [{"key": "setting.command_mode"}, {"key": "vi_can_enter_text_object"}] + }, + { "keys": ["a", "("], "command": "set_motion", "args": { + "motion": "vi_expand_to_brackets", + "motion_args": {"character": "(", "outer": true}}, + "context": [{"key": "setting.command_mode"}, {"key": "vi_can_enter_text_object"}] + }, + { "keys": ["i", ")"], "command": "set_motion", "args": { + "motion": "vi_expand_to_brackets", + "motion_args": {"character": "("}}, + "context": [{"key": "setting.command_mode"}, {"key": "vi_can_enter_text_object"}] + }, + { "keys": ["a", ")"], "command": "set_motion", "args": { + "motion": "vi_expand_to_brackets", + "motion_args": {"character": "(", "outer": true}}, + "context": [{"key": "setting.command_mode"}, {"key": "vi_can_enter_text_object"}] + }, + { "keys": ["i", "b"], "command": "set_motion", "args": { + "motion": "vi_expand_to_brackets", + "motion_args": {"character": "("}}, + "context": [{"key": "setting.command_mode"}, {"key": "vi_can_enter_text_object"}] + }, + { "keys": ["a", "b"], "command": "set_motion", "args": { + "motion": "vi_expand_to_brackets", + "motion_args": {"character": "(", "outer": true}}, + "context": [{"key": "setting.command_mode"}, {"key": "vi_can_enter_text_object"}] + }, + + { "keys": ["i", "["], "command": "set_motion", "args": { + "motion": "vi_expand_to_brackets", + "motion_args": {"character": "["}}, + "context": [{"key": "setting.command_mode"}, {"key": "vi_can_enter_text_object"}] + }, + { "keys": ["a", "["], "command": "set_motion", "args": { + "motion": "vi_expand_to_brackets", + "motion_args": {"character": "[", "outer": true}}, + "context": [{"key": "setting.command_mode"}, {"key": "vi_can_enter_text_object"}] + }, + { "keys": ["i", "]"], "command": "set_motion", "args": { + "motion": "vi_expand_to_brackets", + "motion_args": {"character": "["}}, + "context": [{"key": "setting.command_mode"}, {"key": "vi_can_enter_text_object"}] + }, + { "keys": ["a", "]"], "command": "set_motion", "args": { + "motion": "vi_expand_to_brackets", + "motion_args": {"character": "[", "outer": true}}, + "context": [{"key": "setting.command_mode"}, {"key": "vi_can_enter_text_object"}] + }, + + { "keys": ["i", "{"], "command": "set_motion", "args": { + "motion": "vi_expand_to_brackets", + "motion_args": {"character": "{"}}, + "context": [{"key": "setting.command_mode"}, {"key": "vi_can_enter_text_object"}] + }, + { "keys": ["a", "{"], "command": "set_motion", "args": { + "motion": "vi_expand_to_brackets", + "motion_args": {"character": "{", "outer": true}}, + "context": [{"key": "setting.command_mode"}, {"key": "vi_can_enter_text_object"}] + }, + { "keys": ["i", "}"], "command": "set_motion", "args": { + "motion": "vi_expand_to_brackets", + "motion_args": {"character": "{"}}, + "context": [{"key": "setting.command_mode"}, {"key": "vi_can_enter_text_object"}] + }, + { "keys": ["a", "}"], "command": "set_motion", "args": { + "motion": "vi_expand_to_brackets", + "motion_args": {"character": "{", "outer": true}}, + "context": [{"key": "setting.command_mode"}, {"key": "vi_can_enter_text_object"}] + }, + { "keys": ["i", "B"], "command": "set_motion", "args": { + "motion": "vi_expand_to_brackets", + "motion_args": {"character": "{"}}, + "context": [{"key": "setting.command_mode"}, {"key": "vi_can_enter_text_object"}] + }, + { "keys": ["a", "B"], "command": "set_motion", "args": { + "motion": "vi_expand_to_brackets", + "motion_args": {"character": "{", "outer": true}}, + "context": [{"key": "setting.command_mode"}, {"key": "vi_can_enter_text_object"}] + }, + { "keys": ["a", "p"], "command": "set_motion", "args": { + "motion": "expand_selection_to_paragraph"}, + "context": [{"key": "setting.command_mode"}, {"key": "vi_can_enter_text_object"}] + }, + + // + // Repeat digits + // + + { "keys": ["1"], "command": "push_repeat_digit", "args": {"digit": 1}, + "context": [{"key": "setting.command_mode"}] + }, + { "keys": ["2"], "command": "push_repeat_digit", "args": {"digit": 2}, + "context": [{"key": "setting.command_mode"}] + }, + { "keys": ["3"], "command": "push_repeat_digit", "args": {"digit": 3}, + "context": [{"key": "setting.command_mode"}] + }, + { "keys": ["4"], "command": "push_repeat_digit", "args": {"digit": 4}, + "context": [{"key": "setting.command_mode"}] + }, + { "keys": ["5"], "command": "push_repeat_digit", "args": {"digit": 5}, + "context": [{"key": "setting.command_mode"}] + }, + { "keys": ["6"], "command": "push_repeat_digit", "args": {"digit": 6}, + "context": [{"key": "setting.command_mode"}] + }, + { "keys": ["7"], "command": "push_repeat_digit", "args": {"digit": 7}, + "context": [{"key": "setting.command_mode"}] + }, + { "keys": ["8"], "command": "push_repeat_digit", "args": {"digit": 8}, + "context": [{"key": "setting.command_mode"}] + }, + { "keys": ["9"], "command": "push_repeat_digit", "args": {"digit": 9}, + "context": [{"key": "setting.command_mode"}] + }, + { "keys": ["0"], "command": "push_repeat_digit", "args": {"digit": 0}, + "context": [{"key": "setting.command_mode"}] + }, + + // This is a motion, but must come after the above binding + { "keys": ["0"], "command": "set_motion", "args": { + "motion": "move_to", + "motion_args": {"to": "hardbol", "extend": true }}, + "context": + [ + {"key": "setting.command_mode"}, + {"key": "vi_has_repeat_digit", "operand": false} + ] + } +] diff --git a/Vintage/Preferences (OSX).sublime-settings b/Vintage/Preferences (OSX).sublime-settings new file mode 100644 index 0000000..1b580d4 --- /dev/null +++ b/Vintage/Preferences (OSX).sublime-settings @@ -0,0 +1,3 @@ +{ + "vintage_ctrl_keys": true +} diff --git a/Vintage/Preferences.sublime-settings b/Vintage/Preferences.sublime-settings new file mode 100644 index 0000000..dd1fb49 --- /dev/null +++ b/Vintage/Preferences.sublime-settings @@ -0,0 +1,16 @@ +{ + // Don't change settings here or they'll be overwritten. + // Use Packages/User/Preferences.sublime-settings instead. + + // Enables/disables standard Vi key bindings including the Ctrl modifier + // that may override some platform-specific conventions. + // 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. + "vintage_ctrl_keys": false, + + // Always propagate copied text to the system clipboard. + "vintage_use_clipboard": false, + + // Whether to enter command mode when opening a file. + "vintage_start_in_command_mode": false +} diff --git a/Vintage/README.TXT b/Vintage/README.TXT new file mode 100644 index 0000000..029858e --- /dev/null +++ b/Vintage/README.TXT @@ -0,0 +1,32 @@ +Overview: +-------- + +Vintage is a vi editing package for Sublime Text 2. It's not quite a faithful recreation, and not all details match up. On the other hand, you do get multiple selections. + + +Enabling Vintage: +-------- + +Vintage is disabled by default, via the ignored_packages global setting. If you remove "Vintage" from the list of ignored packages, you'll be able to edit with vi keys. + +Vintage starts in insert mode by default. This can be changed by adding: + + "vintage_start_in_command_mode": true + +to your User File Settings. + + +Major Differences From vi: +-------- + +Insert mode is plain Sublime Text 2 editing, with the usual Sublime Text 2 key bindings: vi insert mode key bindings are not emulated. + +Ex commands are not implemented, apart from :w and :e, which work via the command palette. + + +Extending Vintage: +-------- + +Vintage is implemented entirely in Python. Extending it, for example, to add additional motions, is a matter of writing the relevant plugin (see vintage_motions.py for the existing ones), and adding a key binding for it. + +Motions are normal commands that work by selecting the range of text that they move over. The end of the selection (.b), is considered the active end. Motions are either inclusive, or exclusive (the default). Exclusive motions will move the caret to the right of the last selected character, inclusive motions will move it to the left. Motions are considered inclusive if the inclusive flag is passed to the set_motion command. diff --git a/Vintage/Vintage.sublime-commands b/Vintage/Vintage.sublime-commands new file mode 100644 index 0000000..1b89b2f --- /dev/null +++ b/Vintage/Vintage.sublime-commands @@ -0,0 +1,20 @@ +[ + { + "caption": ":w - Save", + "command": "save" + }, + { + "caption": ":e - Revert", + "command": "revert" + }, + { + "caption": ":0 - BOF", + "command": "move_to", + "args": {"to": "bof"} + }, + { + "caption": ":$ - EOF", + "command": "move_to", + "args": {"to": "eof"} + } +] diff --git a/Vintage/vintage.py b/Vintage/vintage.py new file mode 100644 index 0000000..5c03361 --- /dev/null +++ b/Vintage/vintage.py @@ -0,0 +1,1119 @@ +import sublime, sublime_plugin +import os.path + +# Normal: Motions apply to all the characters they select +MOTION_MODE_NORMAL = 0 +# Used in visual line mode: Motions are extended to BOL and EOL. +MOTION_MODE_LINE = 2 + +# Registers are used for clipboards and macro storage +g_registers = {} + +# Represents the current input state. The primary commands that interact with +# this are: +# * set_action +# * set_motion +# * push_repeat_digit +class InputState: + prefix_repeat_digits = [] + action_command = None + action_command_args = None + action_description = None + motion_repeat_digits = [] + motion_command = None + motion_command_args = None + motion_mode = MOTION_MODE_NORMAL + motion_mode_overridden = False + motion_inclusive = False + motion_clip_to_line = False + register = None + +g_input_state = InputState() + +# Updates the status bar to reflect the current mode and input state +def update_status_line(view): + desc = [] + + if view.settings().get('command_mode'): + if g_input_state.motion_mode == MOTION_MODE_LINE: + desc = ['VISUAL LINE MODE'] + elif view.has_non_empty_selection_region(): + desc = ['VISUAL MODE'] + else: + desc = ['COMMAND MODE'] + if g_input_state.action_command is not None: + if g_input_state.action_description: + desc.append(g_input_state.action_description) + else: + desc.append(g_input_state.action_command) + + repeat = (digits_to_number(g_input_state.prefix_repeat_digits) + * digits_to_number(g_input_state.motion_repeat_digits)) + if repeat != 1: + if g_input_state.action_command is not None: + desc[-1] += " * " + str(repeat) + else: + desc.append("* " + str(repeat)) + + if g_input_state.register is not None: + desc.insert(1, 'Register "' + g_input_state.register + '"') + else: + desc = ['INSERT MODE'] + + view.set_status('mode', ' - '.join(desc)) + +def set_motion_mode(view, mode): + g_input_state.motion_mode = mode + update_status_line(view) + +def reset_input_state(view, reset_motion_mode = True): + global g_input_state + g_input_state.prefix_repeat_digits = [] + g_input_state.action_command = None + g_input_state.action_command_args = None + g_input_state.action_description = None + g_input_state.motion_repeat_digits = [] + g_input_state.motion_command = None + g_input_state.motion_mode_overridden = False + g_input_state.motion_command_args = None + g_input_state.motion_inclusive = False + g_input_state.motion_clip_to_line = False + g_input_state.register = None + if reset_motion_mode: + set_motion_mode(view, MOTION_MODE_NORMAL) + +class ViCancelCurrentAction(sublime_plugin.TextCommand): + def run(self, action, action_args = {}, motion_mode = None, description = None): + reset_input_state(self.view, True) + +def string_to_motion_mode(mode): + if mode == 'normal': + return MOTION_MODE_NORMAL + elif mode == 'line': + return MOTION_MODE_LINE + else: + return -1 + +# Called when the plugin is unloaded (e.g., perhaps it just got added to +# ignored_packages). Ensure files aren't left in command mode. +def unload_handler(): + for w in sublime.windows(): + for v in w.views(): + v.settings().set('command_mode', False) + v.settings().set('inverse_caret_state', False) + v.erase_status('mode') + +# Ensures the input state is reset when the view changes, or the user selects +# with the mouse or non-vintage key bindings +class InputStateTracker(sublime_plugin.EventListener): + def __init__(self): + for w in sublime.windows(): + for v in w.views(): + if v.settings().get("vintage_start_in_command_mode"): + v.settings().set('command_mode', True) + v.settings().set('inverse_caret_state', True) + update_status_line(v) + + def on_activated(self, view): + reset_input_state(view) + + def on_deactivated(self, view): + reset_input_state(view) + + # Ensure that insert mode actions will no longer be grouped, otherwise + # it can lead to the impression that too much is undone at once + view.run_command('unmark_undo_groups_for_gluing') + + def on_post_save(self, view): + # Ensure that insert mode actions will no longer be grouped, so it's + # always possible to undo back to the last saved state + view.run_command('unmark_undo_groups_for_gluing') + + def on_selection_modified(self, view): + reset_input_state(view, False) + # Get out of visual line mode if the selection has changed, e.g., due + # to clicking with the mouse + if (g_input_state.motion_mode == MOTION_MODE_LINE and + not view.has_non_empty_selection_region()): + g_input_state.motion_mode = MOTION_MODE_NORMAL + update_status_line(view) + + def on_load(self, view): + if view.settings().get("vintage_start_in_command_mode"): + view.run_command('exit_insert_mode') + + def on_new(self, view): + self.on_load(view) + + def on_clone(self, view): + self.on_load(view) + + def on_query_context(self, view, key, operator, operand, match_all): + if key == "vi_action" and g_input_state.action_command: + if operator == sublime.OP_EQUAL: + return operand == g_input_state.action_command + if operator == sublime.OP_NOT_EQUAL: + return operand != g_input_state.action_command + elif key == "vi_has_action": + v = g_input_state.action_command is not None + if operator == sublime.OP_EQUAL: return v == operand + if operator == sublime.OP_NOT_EQUAL: return v != operand + elif key == "vi_has_register": + r = g_input_state.register is not None + if operator == sublime.OP_EQUAL: return r == operand + if operator == sublime.OP_NOT_EQUAL: return r != operand + elif key == "vi_motion_mode": + m = string_to_motion_mode(operand) + if operator == sublime.OP_EQUAL: + return m == g_input_state.motion_mode + if operator == sublime.OP_NOT_EQUAL: + return m != g_input_state.motion_mode + elif key == "vi_has_repeat_digit": + if g_input_state.action_command: + v = len(g_input_state.motion_repeat_digits) > 0 + else: + v = len(g_input_state.prefix_repeat_digits) > 0 + if operator == sublime.OP_EQUAL: return v == operand + if operator == sublime.OP_NOT_EQUAL: return v != operand + elif key == "vi_has_input_state": + v = (len(g_input_state.motion_repeat_digits) > 0 or + len(g_input_state.prefix_repeat_digits) > 0 or + g_input_state.action_command is not None or + g_input_state.register is not None) + if operator == sublime.OP_EQUAL: return v == operand + if operator == sublime.OP_NOT_EQUAL: return v != operand + elif key == "vi_can_enter_text_object": + v = (g_input_state.action_command is not None) or view.has_non_empty_selection_region() + if operator == sublime.OP_EQUAL: return v == operand + if operator == sublime.OP_NOT_EQUAL: return v != operand + + return None + +# Called when g_input_state represents a fully formed command. Generates a +# call to vi_eval, which is what will be left on the undo/redo stack. +def eval_input(view): + global g_input_state + + cmd_args = { + 'action_command': g_input_state.action_command, + 'action_args': g_input_state.action_command_args, + 'motion_command': g_input_state.motion_command, + 'motion_args': g_input_state.motion_command_args, + 'motion_mode': g_input_state.motion_mode, + 'motion_inclusive': g_input_state.motion_inclusive, + 'motion_clip_to_line': g_input_state.motion_clip_to_line } + + if len(g_input_state.prefix_repeat_digits) > 0: + cmd_args['prefix_repeat'] = digits_to_number(g_input_state.prefix_repeat_digits) + + if len(g_input_state.motion_repeat_digits) > 0: + cmd_args['motion_repeat'] = digits_to_number(g_input_state.motion_repeat_digits) + + if g_input_state.register is not None: + if not cmd_args['action_args']: + cmd_args['action_args'] = {} + cmd_args['action_args']['register'] = g_input_state.register + + reset_motion_mode = (g_input_state.action_command is not None) + + reset_input_state(view, reset_motion_mode) + + view.run_command('vi_eval', cmd_args) + +# Adds a repeat digit to the input state. +# Repeat digits may come before the action, after the action, or both. For +# example: +# 4dw +# d4w +# 2d2w +# These commands will all delete 4 words. +class PushRepeatDigit(sublime_plugin.TextCommand): + def run(self, edit, digit): + global g_input_state + if g_input_state.action_command: + g_input_state.motion_repeat_digits.append(digit) + else: + g_input_state.prefix_repeat_digits.append(digit) + update_status_line(self.view) + +# Set the current action in the input state. Note that this won't create an +# entry on the undo stack: only eval_input does this. +class SetAction(sublime_plugin.TextCommand): + # Custom version of run_, so an edit object isn't created. This allows + # eval_input() to add the desired command to the undo stack + def run_(self, args): + if 'event' in args: + del args['event'] + + return self.run(**args) + + def run(self, action, action_args = {}, description = None): + global g_input_state + g_input_state.action_command = action + g_input_state.action_command_args = action_args + g_input_state.action_description = description + + if self.view.has_non_empty_selection_region(): + # Currently in visual mode, so no following motion is expected: + # eval the current input + eval_input(self.view) + else: + update_status_line(self.view) + +def digits_to_number(digits): + if len(digits) == 0: + return 1 + + number = 0 + place = 1 + for d in reversed(digits): + number += place * int(d) + place *= 10 + return number + +# Set the current motion in the input state. Note that this won't create an +# entry on the undo stack: only eval_input does this. +class SetMotion(sublime_plugin.TextCommand): + # Custom version of run_, so an edit object isn't created. This allows + # eval_input() to add the desired command to the undo stack + def run_(self, args): + return self.run(**args) + + def run(self, motion, motion_args = {}, linewise = False, inclusive = False, + clip_to_line = False, character = None, mode = None): + + global g_input_state + + # Pass the character, if any, onto the motion command. + # This is required for 'f', 't', etc + if character is not None: + motion_args['character'] = character + + g_input_state.motion_command = motion + g_input_state.motion_command_args = motion_args + g_input_state.motion_inclusive = inclusive + g_input_state.motion_clip_to_line = clip_to_line + if not g_input_state.motion_mode_overridden \ + and g_input_state.action_command \ + and linewise: + g_input_state.motion_mode = MOTION_MODE_LINE + + if mode is not None: + m = string_to_motion_mode(mode) + if m != -1: + set_motion_mode(self.view, m) + else: + print "invalid motion mode:", mode + + eval_input(self.view) + +# Run a single, combined action and motion. Examples are 'D' (delete to EOL) +# and 'C' (change to EOL). +class SetActionMotion(sublime_plugin.TextCommand): + # Custom version of run_, so an edit object isn't created. This allows + # eval_input() to add the desired command to the undo stack + def run_(self, args): + return self.run(**args) + + def run(self, motion, action, motion_args = {}, motion_clip_to_line = False, + motion_inclusive = False, motion_linewise = False, action_args = {}): + + global g_input_state + + g_input_state.motion_command = motion + g_input_state.motion_command_args = motion_args + g_input_state.motion_inclusive = motion_inclusive + g_input_state.motion_clip_to_line = motion_clip_to_line + g_input_state.action_command = action + g_input_state.action_command_args = action_args + if motion_linewise: + g_input_state.motion_mode = MOTION_MODE_LINE + + eval_input(self.view) + +# Update the current motion mode. e.g., 'dvj' +class SetMotionMode(sublime_plugin.TextCommand): + def run_(self, args): + if 'event' in args: + del args['event'] + + return self.run(**args) + + def run(self, mode): + global g_input_state + m = string_to_motion_mode(mode) + + if m != -1: + set_motion_mode(self.view, m) + g_input_state.motion_mode_overridden = True + else: + print "invalid motion mode" + +class SetRegister(sublime_plugin.TextCommand): + def run_(self, args): + return self.run(**args) + + def run(self, character): + g_input_state.register = character + update_status_line(self.view) + +def clip_point_to_line(view, f, pt): + l = view.line(pt) + if l.a == l.b: + return l.a + + new_pt = f(pt) + if new_pt < l.a: + return l.a + elif new_pt >= l.b: + return l.b + else: + return new_pt + +def transform_selection(view, f, extend = False, clip_to_line = False): + new_sel = [] + sel = view.sel() + size = view.size() + + for r in sel: + if clip_to_line: + new_pt = clip_point_to_line(view, f, r.b) + else: + new_pt = f(r.b) + + if new_pt < 0: new_pt = 0 + elif new_pt > size: new_pt = size + + if extend: + new_sel.append(sublime.Region(r.a, new_pt)) + else: + new_sel.append(sublime.Region(new_pt)) + + sel.clear() + for r in new_sel: + sel.add(r) + +def transform_selection_regions(view, f): + new_sel = [] + sel = view.sel() + + for r in sel: + nr = f(r) + if nr is not None: + new_sel.append(nr) + + sel.clear() + for r in new_sel: + sel.add(r) + +def expand_to_full_line(view, ignore_trailing_newline = True): + new_sel = [] + for s in view.sel(): + if s.a == s.b: + new_sel.append(view.full_line(s.a)) + else: + la = view.full_line(s.begin()) + lb = view.full_line(s.end()) + + a = la.a + + if ignore_trailing_newline and s.end() == lb.a: + # s.end() is already at EOL, don't go down to the next line + b = s.end() + else: + b = lb.b + + if s.a < s.b: + new_sel.append(sublime.Region(a, b, 0)) + else: + new_sel.append(sublime.Region(b, a, 0)) + + view.sel().clear() + for s in new_sel: + view.sel().add(s) + +def orient_single_line_region(view, forward, r): + l = view.full_line(r.begin()) + if l.a == r.begin() and l.end() == r.end(): + if forward: + return l + else: + return sublime.Region(l.b, l.a) + else: + return r + +def set_single_line_selection_direction(view, forward): + transform_selection_regions(view, + lambda r: orient_single_line_region(view, forward, r)) + +def orient_single_character_region(view, forward, r): + if r.begin() + 1 == r.end(): + if forward: + return sublime.Region(r.begin(), r.end()) + else: + return sublime.Region(r.end(), r.begin()) + else: + return r + +def set_single_character_selection_direction(view, forward): + transform_selection_regions(view, + lambda r: orient_single_character_region(view, forward, r)) + +def clip_empty_selection_to_line_contents(view): + new_sel = [] + for s in view.sel(): + if s.empty(): + l = view.line(s.b) + if s.b == l.b and not l.empty(): + s = sublime.Region(l.b - 1, l.b - 1, s.xpos()) + + new_sel.append(s) + + view.sel().clear() + for s in new_sel: + view.sel().add(s) + +def shrink_inclusive(r): + if r.a < r.b: + return sublime.Region(r.b - 1, r.b - 1, r.xpos()) + else: + return sublime.Region(r.b, r.b, r.xpos()) + +def shrink_exclusive(r): + return sublime.Region(r.b, r.b, r.xpos()) + +def shrink_to_first_char(r): + if r.b < r.a: + # If the Region is reversed, the first char is the character *before* + # the first bound. + return sublime.Region(r.a - 1) + else: + return sublime.Region(r.a) + +# This is the core: it takes a motion command, action command, and repeat +# counts, and runs them all. +# +# Note that this doesn't touch g_input_state, and doesn't maintain any state +# other than what's passed on its arguments. This allows it to operate correctly +# in macros, and when running via repeat. +class ViEval(sublime_plugin.TextCommand): + def run_(self, args): + was_visual = self.view.has_non_empty_selection_region() + + edit = self.view.begin_edit(self.name(), args) + try: + self.run(edit, **args) + finally: + self.view.end_edit(edit) + + # Glue the marked undo groups if visual mode was exited (e.g., by + # running an action while in visual mode). This ensures that + # v+motions+action can be repeated as a single unit. + if self.view.settings().get('command_mode') == True: + is_visual = self.view.has_non_empty_selection_region() + if was_visual and not is_visual: + self.view.run_command('glue_marked_undo_groups') + elif not is_visual: + self.view.run_command('unmark_undo_groups_for_gluing') + + def run(self, edit, action_command, action_args, + motion_command, motion_args, motion_mode, + motion_inclusive, motion_clip_to_line, + prefix_repeat = None, motion_repeat = None): + + explicit_repeat = (prefix_repeat is not None or motion_repeat is not None) + + if prefix_repeat is None: + prefix_repeat = 1 + if motion_repeat is None: + motion_repeat = 1 + + # Arguments are always passed as floats (thanks to JSON encoding), + # convert them back to integers + prefix_repeat = int(prefix_repeat) + motion_repeat = int(motion_repeat) + motion_mode = int(motion_mode) + + # Combine the prefix_repeat and motion_repeat into motion_repeat, to + # allow commands like 2yy to work by first doing the motion twice, + # then operating once + if motion_command and prefix_repeat > 1: + motion_repeat *= prefix_repeat + prefix_repeat = 1 + + # Check if the motion command would like to handle the repeat itself + if motion_args and 'repeat' in motion_args: + motion_args['repeat'] = motion_repeat * prefix_repeat + motion_repeat = 1 + prefix_repeat = 1 + + # Some commands behave differently if a repeat is given. e.g., 1G goes + # to line one, but G without a repeat goes to EOF. Let the command + # know if a repeat was specified. + if motion_args and 'explicit_repeat' in motion_args: + motion_args['explicit_repeat'] = explicit_repeat + + visual_mode = self.view.has_non_empty_selection_region() + + # Let the motion know if we're in visual mode, if it wants to know + if motion_args and 'visual' in motion_args: + motion_args['visual'] = visual_mode + + for i in xrange(prefix_repeat): + # Run the motion command, extending the selection to the range of + # characters covered by the motion + if motion_command: + direction = 0 + if motion_args and 'forward' in motion_args: + forward = motion_args['forward'] + if forward: + direction = 1 + else: + direction = -1 + + for j in xrange(motion_repeat): + if direction != 0 and motion_mode == MOTION_MODE_LINE: + # Ensure selections encompassing a single line are + # oriented in the same way as the motion, so they'll + # remain selected. This is needed so that Vk will work + # as expected + set_single_line_selection_direction(self.view, direction == 1) + elif direction != 0: + set_single_character_selection_direction(self.view, direction == 1) + + if motion_mode == MOTION_MODE_LINE: + # Don't do either of the below things: this is + # important so that Vk on an empty line would select + # the following line. + pass + elif direction == 1 and motion_inclusive: + # Expand empty selections include the character + # they're on, and to start from the RHS of the + # character + transform_selection_regions(self.view, + lambda r: sublime.Region(r.b, r.b + 1, r.xpos()) if r.empty() else r) + + self.view.run_command(motion_command, motion_args) + + # If the motion needs to be clipped to the line, remove any + # trailing newlines from the selection. For example, with the + # caret at the start of the last word on the line, 'dw' should + # delete the word, but not the newline, while 'w' should advance + # the caret to the first character of the next line. + if motion_mode != MOTION_MODE_LINE and action_command and motion_clip_to_line: + transform_selection_regions(self.view, lambda r: self.view.split_by_newlines(r)[0]) + + reindent = False + + if motion_mode == MOTION_MODE_LINE: + expand_to_full_line(self.view, visual_mode) + if action_command == "enter_insert_mode": + # When lines are deleted before entering insert mode, the + # cursor should be left on an empty line. Leave the trailing + # newline out of the selection to allow for this. + transform_selection_regions(self.view, + lambda r: (sublime.Region(r.begin(), r.end() - 1) + if not r.empty() and self.view.substr(r.end() - 1) == "\n" + else r)) + reindent = True + + if action_command: + # Apply the action to the selection + self.view.run_command(action_command, action_args) + if reindent and self.view.settings().get('auto_indent'): + self.view.run_command('reindent', {'force_indent': False}) + + if not visual_mode: + # Shrink the selection down to a point + if motion_inclusive: + transform_selection_regions(self.view, shrink_inclusive) + else: + transform_selection_regions(self.view, shrink_exclusive) + + # Clip the selections to the line contents + if self.view.settings().get('command_mode'): + clip_empty_selection_to_line_contents(self.view) + + # Ensure the selection is visible + self.view.show(self.view.sel()) + + +class EnterInsertMode(sublime_plugin.TextCommand): + # Ensure no undo group is created: the only entry on the undo stack should + # be the insert_command, if any + def run_(self, args): + if args: + return self.run(**args) + else: + return self.run() + + def run(self, insert_command = None, insert_args = {}, register = '"'): + # mark_undo_groups_for_gluing allows all commands run while in insert + # mode to comprise a single undo group, which is important for '.' to + # work as desired. + self.view.run_command('maybe_mark_undo_groups_for_gluing') + if insert_command: + args = insert_args.copy() + args.update({'register': register}) + self.view.run_command(insert_command, args) + + self.view.settings().set('command_mode', False) + self.view.settings().set('inverse_caret_state', False) + update_status_line(self.view) + +class ExitInsertMode(sublime_plugin.TextCommand): + def run_(self, args): + edit = self.view.begin_edit(self.name(), args) + try: + self.run(edit) + finally: + self.view.end_edit(edit) + + # Call after end_edit(), to ensure the final entry in the glued undo + # group is 'exit_insert_mode'. + self.view.run_command('glue_marked_undo_groups') + + def run(self, edit): + self.view.settings().set('command_mode', True) + self.view.settings().set('inverse_caret_state', True) + + if not self.view.has_non_empty_selection_region(): + self.view.run_command('vi_move_by_characters_in_line', {'forward': False}) + + update_status_line(self.view) + +class EnterVisualMode(sublime_plugin.TextCommand): + def run(self, edit): + self.view.run_command('mark_undo_groups_for_gluing') + if g_input_state.motion_mode != MOTION_MODE_NORMAL: + set_motion_mode(self.view, MOTION_MODE_NORMAL) + + transform_selection_regions(self.view, lambda r: sublime.Region(r.b, r.b + 1) if r.empty() else r) + +class ExitVisualMode(sublime_plugin.TextCommand): + def run(self, edit, toggle = False): + if toggle: + if g_input_state.motion_mode != MOTION_MODE_NORMAL: + set_motion_mode(self.view, MOTION_MODE_NORMAL) + else: + self.view.run_command('shrink_selections') + else: + set_motion_mode(self.view, MOTION_MODE_NORMAL) + self.view.run_command('shrink_selections') + + self.view.run_command('unmark_undo_groups_for_gluing') + +class EnterVisualLineMode(sublime_plugin.TextCommand): + def run(self, edit): + set_motion_mode(self.view, MOTION_MODE_LINE) + expand_to_full_line(self.view) + self.view.run_command('maybe_mark_undo_groups_for_gluing') + +class ShrinkSelections(sublime_plugin.TextCommand): + def shrink(self, r): + if r.empty(): + return r + elif r.a < r.b: + return sublime.Region(r.b - 1) + else: + return sublime.Region(r.b) + + def run(self, edit): + transform_selection_regions(self.view, self.shrink) + +class ShrinkSelectionsToBeginning(sublime_plugin.TextCommand): + def shrink(self, r): + return sublime.Region(r.begin()) + + def run(self, edit, register = '"'): + transform_selection_regions(self.view, self.shrink) + +class ShrinkSelectionsToEnd(sublime_plugin.TextCommand): + def shrink(self, r): + end = r.end() + if self.view.substr(end - 1) == u'\n': + # For linewise selections put the cursor *before* the line break + return sublime.Region(end - 1) + else: + return sublime.Region(end) + + def run(self, edit, register = '"'): + transform_selection_regions(self.view, self.shrink) + +class VisualUpperCase(sublime_plugin.TextCommand): + def run(self, edit): + self.view.run_command("upper_case") + self.view.run_command("exit_visual_mode") + +class VisualLowerCase(sublime_plugin.TextCommand): + def run(self, edit): + self.view.run_command("lower_case") + self.view.run_command("exit_visual_mode") + +# Sequence is used as part of glue_marked_undo_groups: the marked undo groups +# are rewritten into a single sequence command, that accepts all the previous +# commands +class Sequence(sublime_plugin.TextCommand): + def run(self, edit, commands): + for cmd, args in commands: + self.view.run_command(cmd, args) + +class ViDelete(sublime_plugin.TextCommand): + def run(self, edit, register = '"'): + if self.view.has_non_empty_selection_region(): + set_register(self.view, register, forward=False) + set_register(self.view, '1', forward=False) + self.view.run_command('left_delete') + +class ViLeftDelete(sublime_plugin.TextCommand): + def run(self, edit, register = '"'): + set_register(self.view, register, forward=False) + set_register(self.view, '1', forward=False) + self.view.run_command('left_delete') + clip_empty_selection_to_line_contents(self.view) + +class ViRightDelete(sublime_plugin.TextCommand): + def run(self, edit, register = '"'): + set_register(self.view, register, forward=True) + set_register(self.view, '1', forward=True) + self.view.run_command('right_delete') + clip_empty_selection_to_line_contents(self.view) + +class ViCopy(sublime_plugin.TextCommand): + def run(self, edit, register = '"'): + set_register(self.view, register, forward=True) + set_register(self.view, '0', forward=True) + transform_selection_regions(self.view, shrink_to_first_char) + +class ViPrefixableCommand(sublime_plugin.TextCommand): + # Ensure register and repeat are picked up from g_input_state, and that + # it'll be recorded on the undo stack + def run_(self, args): + if not args: + args = {} + + if g_input_state.register: + args['register'] = g_input_state.register + g_input_state.register = None + + if g_input_state.prefix_repeat_digits: + args['repeat'] = digits_to_number(g_input_state.prefix_repeat_digits) + g_input_state.prefix_repeat_digits = [] + + if 'event' in args: + del args['event'] + + edit = self.view.begin_edit(self.name(), args) + try: + return self.run(edit, **args) + finally: + self.view.end_edit(edit) + +class ViPasteRight(ViPrefixableCommand): + def advance(self, pt): + if self.view.substr(pt) == '\n' or pt >= self.view.size(): + return pt + else: + return pt + 1 + + def run(self, edit, register = '"', repeat = 1): + visual_mode = self.view.has_non_empty_selection_region() + if not visual_mode: + transform_selection(self.view, lambda pt: self.advance(pt)) + self.view.run_command('paste_from_register', {'forward': not visual_mode, + 'repeat': repeat, + 'register': register}) + +class ViPasteLeft(ViPrefixableCommand): + def run(self, edit, register = '"', repeat = 1): + self.view.run_command('paste_from_register', {'forward': False, + 'repeat': repeat, + 'register': register}) + +def set_register(view, register, forward): + delta = 1 + if not forward: + delta = -1 + + text = [] + regions = [] + for s in view.sel(): + if s.empty(): + s = sublime.Region(s.a, s.a + delta) + text.append(view.substr(s)) + regions.append(s) + + text = '\n'.join(text) + + use_sys_clipboard = view.settings().get('vintage_use_clipboard', False) == True + + if (use_sys_clipboard and register == '"') or (register in ('*', '+')): + sublime.set_clipboard(text) + # If the system's clipboard is used, Vim always propagates the data to + # the unnamed register too. + register = '"' + + if register == '%': + pass + else: + reg = register.lower() + append = (reg != register) + + if append and reg in g_registers: + g_registers[reg] += text + else: + g_registers[reg] = text + +def get_register(view, register): + use_sys_clipboard = view.settings().get('vintage_use_clipboard', False) == True + register = register.lower() + if register == '%': + if view.file_name(): + return os.path.basename(view.file_name()) + else: + return None + elif (use_sys_clipboard and register == '"') or (register in ('*', '+')): + return sublime.get_clipboard() + else: + return g_registers.get(register, None) + +def has_register(register): + if register in ['%', '*', '+']: + return True + else: + return register in g_registers + +class PasteFromRegisterCommand(sublime_plugin.TextCommand): + def run(self, edit, register, repeat = 1, forward = True): + text = get_register(self.view, register) + if not text: + sublime.status_message("Undefined register" + register) + return + text = text * int(repeat) + + self.view.run_command('vi_delete') + + regions = [r for r in self.view.sel()] + new_sel = [] + + offset = 0 + + for s in regions: + s = sublime.Region(s.a + offset, s.b + offset) + + if len(text) > 0 and text[-1] == '\n': + # paste line-wise + if forward: + start = self.view.full_line(s.end()).b + else: + start = self.view.line(s.begin()).a + + num = self.view.insert(edit, start, text) + new_sel.append(start) + else: + # paste character-wise + num = self.view.insert(edit, s.begin(), text) + self.view.erase(edit, sublime.Region(s.begin() + num, + s.end() + num)) + num -= s.size() + new_sel.append(s.begin()) + + offset += num + + self.view.sel().clear() + for s in new_sel: + self.view.sel().add(s) + + def is_enabled(self, register, repeat = 1, forward = True): + return has_register(register) + +class ReplaceCharacter(sublime_plugin.TextCommand): + def run(self, edit, character): + new_sel = [] + created_new_line = False + for s in reversed(self.view.sel()): + if s.empty(): + self.view.replace(edit, sublime.Region(s.b, s.b + 1), character) + if character == "\n": + created_new_line = True + # selection should be in the first column of the newly + # created line + new_sel.append(sublime.Region(s.b + 1)) + else: + new_sel.append(s) + else: + # Vim replaces characters with unprintable ones when r is + # pressed from visual mode. Let's not make a replacement in + # that case. + if character != '\n': + # Process lines contained in the selection individually. + # This way we preserve newline characters. + lines = self.view.split_by_newlines(s) + for line in lines: + self.view.replace(edit, line, character * line.size()) + new_sel.append(sublime.Region(s.begin())) + + self.view.sel().clear() + for s in new_sel: + self.view.sel().add(s) + + if created_new_line and self.view.settings().get('auto_indent'): + self.view.run_command('reindent', {'force_indent': False}) + +class CenterOnCursor(sublime_plugin.TextCommand): + def run(self, edit): + self.view.show_at_center(self.view.sel()[0]) + +class ScrollCursorLineToTop(sublime_plugin.TextCommand): + def run(self, edit): + self.view.set_viewport_position((self.view.viewport_position()[0], self.view.layout_extent()[1])) + self.view.show(self.view.sel()[0], False) + +class ScrollCursorLineToBottom(sublime_plugin.TextCommand): + def run(self, edit): + self.view.set_viewport_position((self.view.viewport_position()[0], 0.0)) + self.view.show(self.view.sel()[0], False) + +class ViScrollLines(ViPrefixableCommand): + def run(self, edit, forward = True, repeat = None): + if repeat: + line_delta = repeat * (1 if forward else -1) + else: + viewport_height = self.view.viewport_extent()[1] + lines_per_page = viewport_height / self.view.line_height() + line_delta = int(round(lines_per_page / (2 if forward else -2))) + visual_mode = self.view.has_non_empty_selection_region() + + y_deltas = [] + def transform(pt): + row = self.view.rowcol(pt)[0] + new_pt = self.view.text_point(row + line_delta, 0) + y_deltas.append(self.view.text_to_layout(new_pt)[1] + - self.view.text_to_layout(pt)[1]) + return new_pt + + transform_selection(self.view, transform, extend = visual_mode) + + self.view.run_command('vi_move_to_first_non_white_space_character', + {'extend': visual_mode}) + + # Vim scrolls the viewport as far as it moves the cursor. With multiple + # selections the cursors could have moved different distances, due to + # word wrapping. Move the viewport by the average of those distances. + avg_y_delta = sum(y_deltas) / len(y_deltas) + vp = self.view.viewport_position() + self.view.set_viewport_position((vp[0], vp[1] + avg_y_delta)) + + +class ViIndent(sublime_plugin.TextCommand): + def run(self, edit): + self.view.run_command('indent') + transform_selection_regions(self.view, shrink_to_first_char) + +class ViUnindent(sublime_plugin.TextCommand): + def run(self, edit): + self.view.run_command('unindent') + transform_selection_regions(self.view, shrink_to_first_char) + +class ViSetBookmark(sublime_plugin.TextCommand): + def run(self, edit, character): + sublime.status_message("Set bookmark " + character) + self.view.add_regions("bookmark_" + character, [s for s in self.view.sel()], + "", "", sublime.PERSISTENT | sublime.HIDDEN) + +class ViSelectBookmark(sublime_plugin.TextCommand): + def run(self, edit, character, select_bol=False): + self.view.run_command('select_all_bookmarks', {'name': "bookmark_" + character}) + if select_bol: + sels = list(self.view.sel()) + self.view.sel().clear() + for r in sels: + start = self.view.line(r.a).begin() + self.view.sel().add(sublime.Region(start, start)) + +g_macro_target = None + +class ViBeginRecordMacro(sublime_plugin.TextCommand): + def run(self, edit, character): + global g_macro_target + g_macro_target = character + self.view.run_command('start_record_macro') + +class ViEndRecordMacro(sublime_plugin.TextCommand): + def run(self, edit): + self.view.run_command('stop_record_macro') + if not g_macro_target: + return + + m = sublime.get_macro() + # TODO: Convert the macro to a string before trying to store it in a + # register + g_registers[g_macro_target] = m + +class ViReplayMacro(sublime_plugin.TextCommand): + def run(self, edit, character): + if not character in g_registers: + return + m = g_registers[character] + global g_input_state + + prefix_repeat_digits, motion_repeat_digits = None, None + if len(g_input_state.prefix_repeat_digits) > 0: + prefix_repeat_digits = digits_to_number(g_input_state.prefix_repeat_digits) + + if len(g_input_state.motion_repeat_digits) > 0: + motion_repeat_digits = digits_to_number(g_input_state.motion_repeat_digits) + + repetitions = 1 + if prefix_repeat_digits: + repetitions *= prefix_repeat_digits + + if motion_repeat_digits: + repetitions *= motion_repeat_digits + + for i in range(repetitions): + for d in m: + cmd = d['command'] + args = d['args'] + self.view.run_command(cmd, args) + +class ShowAsciiInfo(sublime_plugin.TextCommand): + def run(self, edit): + c = self.view.substr(self.view.sel()[0].end()) + sublime.status_message("<%s> %d, Hex %s, Octal %s" % + (c, ord(c), hex(ord(c))[2:], oct(ord(c)))) + +class ViReverseSelectionsDirection(sublime_plugin.TextCommand): + def run(self, edit): + new_sels = [] + for s in self.view.sel(): + new_sels.append(sublime.Region(s.b, s.a)) + self.view.sel().clear() + for s in new_sels: + self.view.sel().add(s) + +class MoveGroupFocus(sublime_plugin.WindowCommand): + def run(self, direction): + cells = self.window.get_layout()['cells'] + active_group = self.window.active_group() + x1, y1, x2, y2 = cells[active_group] + + idxs = range(len(cells)) + del idxs[active_group] + + # Matches are any group that shares a border with the active group in the + # specified direction. + if direction == "up": + matches = (i for i in idxs if cells[i][3] == y1 and cells[i][0] < x2 and cells[i][2] > x1) + elif direction == "down": + matches = (i for i in idxs if cells[i][1] == y2 and cells[i][0] < x2 and cells[i][2] > x1) + elif direction == "right": + matches = (i for i in idxs if cells[i][0] == x2 and cells[i][1] < y2 and cells[i][3] > y1) + elif direction == "left": + matches = (i for i in idxs if cells[i][2] == x1 and cells[i][1] < y2 and cells[i][3] > y1) + + # Focus the first group found in the specified direction, if there is one. + try: + self.window.focus_group(matches.next()) + except StopIteration: + return diff --git a/Vintage/vintage_commands.py b/Vintage/vintage_commands.py new file mode 100644 index 0000000..e32da77 --- /dev/null +++ b/Vintage/vintage_commands.py @@ -0,0 +1,48 @@ +import sublime, sublime_plugin +import os + +def is_legal_path_char(c): + # XXX make this platform-specific? + return c not in " \n\"|*<>{}[]()" + +def move_while_path_character(view, start, is_at_boundary, increment=1): + while True: + if not is_legal_path_char(view.substr(start)): + break + start = start + increment + if is_at_boundary(start): + break + return start + +class ViOpenFileUnderSelectionCommand(sublime_plugin.TextCommand): + def run(self, edit): + sel = self.view.sel()[0] + if not sel.empty(): + file_name = self.view.substr(sel) + else: + caret_pos = self.view.sel()[0].begin() + current_line = self.view.line(caret_pos) + + left = move_while_path_character( + self.view, + caret_pos, + lambda x: x < current_line.begin(), + increment=-1) + right = move_while_path_character( + self.view, + caret_pos, + lambda x: x > current_line.end(), + increment=1) + file_name = self.view.substr(sublime.Region(left + 1, right)) + + file_name = os.path.join(os.path.dirname(self.view.file_name()), + file_name) + if os.path.exists(file_name): + self.view.window().open_file(file_name) + +class ViSaveAndExit(sublime_plugin.WindowCommand): + def run(self): + self.window.run_command('save') + self.window.run_command('close') + if len(self.window.views()) == 0: + self.window.run_command('close') diff --git a/Vintage/vintage_motions.py b/Vintage/vintage_motions.py new file mode 100644 index 0000000..c5f8a8c --- /dev/null +++ b/Vintage/vintage_motions.py @@ -0,0 +1,375 @@ +import re +import sublime, sublime_plugin +from vintage import transform_selection +from vintage import transform_selection_regions + +class ViSpanCountLines(sublime_plugin.TextCommand): + def run(self, edit, repeat = 1): + for i in xrange(repeat - 1): + self.view.run_command('move', {'by': 'lines', + 'extend': True, + 'forward': True}) + +class ViMoveByCharactersInLine(sublime_plugin.TextCommand): + def run(self, edit, forward = True, extend = False, visual = False): + delta = 1 if forward else -1 + + transform_selection(self.view, lambda pt: pt + delta, extend=extend, + clip_to_line=(not visual)) + +class ViMoveByCharacters(sublime_plugin.TextCommand): + def advance(self, delta, visual, pt): + pt += delta + if not visual and self.view.substr(pt) == '\n': + pt += delta + + return pt + + def run(self, edit, forward = True, extend = False, visual = False): + delta = 1 if forward else -1 + transform_selection(self.view, lambda pt: self.advance(delta, visual, pt), + extend=extend) + +class ViMoveToHardEol(sublime_plugin.TextCommand): + def run(self, edit, repeat = 1, extend = False): + repeat = int(repeat) + if repeat > 1: + for i in xrange(repeat - 1): + self.view.run_command('move', + {'by': 'lines', 'extend': extend, 'forward': True}) + + transform_selection(self.view, lambda pt: self.view.line(pt).b, + extend=extend, clip_to_line=False) + +class ViMoveToFirstNonWhiteSpaceCharacter(sublime_plugin.TextCommand): + def first_character(self, pt): + l = self.view.line(pt) + lstr = self.view.substr(l) + + offset = 0 + for c in lstr: + if c == ' ' or c == '\t': + offset += 1 + else: + break + + return l.a + offset + + def run(self, edit, repeat = 1, extend = False, register = '"'): + # According to Vim's help, _ moves count - 1 lines downward. + for i in xrange(repeat - 1): + self.view.run_command('move', {'by': 'lines', 'forward': True, 'extend': extend}) + + transform_selection(self.view, lambda pt: self.first_character(pt), + extend=extend) + + +g_last_move_command = None + +class ViMoveToCharacter(sublime_plugin.TextCommand): + def find_next(self, forward, char, before, pt): + lr = self.view.line(pt) + + extra = 0 if before else 1 + + if forward: + line = self.view.substr(sublime.Region(pt, lr.b)) + idx = line.find(char, 1) + if idx >= 0: + return pt + idx + 1 * extra + else: + line = self.view.substr(sublime.Region(lr.a, pt))[::-1] + idx = line.find(char, 0) + if idx >= 0: + return pt - idx - 1 * extra + + return pt + + def run(self, edit, character, extend = False, forward = True, before = False, record = True): + if record: + global g_last_move_command + g_last_move_command = {'character': character, 'extend': extend, + 'forward':forward, 'before':before} + + transform_selection(self.view, + lambda pt: self.find_next(forward, character, before, pt), + extend=extend) + +class ViExtendToEndOfWhitespaceOrWord(sublime_plugin.TextCommand): + def run(self, edit, repeat = 1, separators=None): + repeat = int(repeat) + + # Selections that start on whitespace should extend to the end of the + # the whitespace. Other selections can simply be moved to word ends. + sel = self.view.sel() + sels_advanced_from_whitespace = [] + sels_to_move_to_word_end = [] + + for r in sel: + b = advance_while_white_space_character(self.view, r.b) + if b > r.b: + sels_advanced_from_whitespace.append(sublime.Region(r.a, b)) + else: + sels_to_move_to_word_end.append(r) + + sel.clear() + for r in sels_to_move_to_word_end: + sel.add(r) + + move_args = {"by": "stops", "word_end": True, "punct_end": True, + "empty_line": True, "forward": True, "extend": True} + if separators != None: + move_args.update(separators=separators) + + self.view.run_command('move', move_args) + + for r in sels_advanced_from_whitespace: + sel.add(r) + + # Only the first move differs from a normal move to word end. + for i in xrange(repeat - 1): + self.view.run_command('move', move_args) + +# Helper class used to implement ';'' and ',', which repeat the last f, F, t +# or T command (reversed in the case of ',') +class SetRepeatMoveToCharacterMotion(sublime_plugin.TextCommand): + def run_(self, args): + if args: + return self.run(**args) + else: + return self.run() + + def run(self, reverse = False): + if g_last_move_command: + cmd = g_last_move_command.copy() + cmd['record'] = False + if reverse: + cmd['forward'] = not cmd['forward'] + + self.view.run_command('set_motion', { + 'motion': 'vi_move_to_character', + 'motion_args': cmd, + 'inclusive': True }) + +class ViMoveToBrackets(sublime_plugin.TextCommand): + def move_by_percent(self, percent): + destination = int(self.view.rowcol(self.view.size())[0] * (percent / 100.0)) + destination = self.view.line(self.view.text_point(destination, 0)).a + destination = advance_while_white_space_character(self.view, destination) + + transform_selection(self.view, lambda pt: destination) + + def run(self, edit, repeat=1): + repeat = int(repeat) + if repeat == 1: + re_brackets = re.compile(r"([(\[{])|([)}\])])") + def move_to_next_bracket(pt): + line = self.view.line(pt) + remaining_line = self.view.substr(sublime.Region(pt, line.b)) + match = re_brackets.search(remaining_line) + if match: + return pt + match.start() + (1 if match.group(2) else 0) + else: + return pt + transform_selection(self.view, move_to_next_bracket, extend=True) + self.view.run_command("move_to", {"to": "brackets", "extend": True, "force_outer": True}) + else: + self.move_by_percent(repeat) + +class ViGotoLine(sublime_plugin.TextCommand): + def run(self, edit, repeat=1, explicit_repeat=True, extend=False, + ending='eof'): + # G or gg + if not explicit_repeat: + self.view.run_command('move_to', {'to': ending, 'extend':extend}) + # G or gg + else: + new_address = int(repeat) - 1 + target_pt = self.view.text_point(new_address, 0) + transform_selection(self.view, lambda pt: target_pt, + extend=extend) + +def advance_while_white_space_character(view, pt, white_space="\t "): + while view.substr(pt) in white_space: + pt += 1 + + return pt + +class MoveCaretToScreenCenter(sublime_plugin.TextCommand): + def run(self, edit, extend = True): + screenful = self.view.visible_region() + + row_a = self.view.rowcol(screenful.a)[0] + row_b = self.view.rowcol(screenful.b)[0] + + middle_row = (row_a + row_b) / 2 + middle_point = self.view.text_point(middle_row, 0) + + middle_point = advance_while_white_space_character(self.view, middle_point) + transform_selection(self.view, lambda pt: middle_point, extend=extend) + +class MoveCaretToScreenTop(sublime_plugin.TextCommand): + def run(self, edit, repeat, extend = True): + # Don't modify offset so not fully visible regions have a lower chance + # of scrolling the screen. + # lines_offset = int(repeat) - 1 + lines_offset = int(repeat) + screenful = self.view.visible_region() + + target = screenful.begin() + for x in xrange(lines_offset): + current_line = self.view.line(target) + target = current_line.b + 1 + + target = advance_while_white_space_character(self.view, target) + transform_selection(self.view, lambda pt: target, extend=extend) + +class MoveCaretToScreenBottom(sublime_plugin.TextCommand): + def run(self, edit, repeat, extend = True): + # Don't modify offset so not fully visible regions have a lower chance + # of scrolling the screen. + # lines_offset = int(repeat) - 1 + lines_offset = int(repeat) + screenful = self.view.visible_region() + + target = screenful.end() + for x in xrange(lines_offset): + current_line = self.view.line(target) + target = current_line.a - 1 + target = self.view.line(target).a + + target = advance_while_white_space_character(self.view, target) + transform_selection(self.view, lambda pt: target, extend=extend) + +def expand_to_whitespace(view, r): + a = r.a + b = r.b + while view.substr(b) in " \t": + b += 1 + + if b == r.b: + while view.substr(a - 1) in " \t": + a -= 1 + + return sublime.Region(a, b) + +class ViExpandToWords(sublime_plugin.TextCommand): + def run(self, edit, outer = False, repeat = 1): + repeat = int(repeat) + transform_selection_regions(self.view, lambda r: sublime.Region(r.b + 1, r.b + 1)) + self.view.run_command("move", {"by": "stops", "extend":False, "forward":False, "word_begin":True, "punct_begin":True}) + for i in xrange(repeat): + self.view.run_command("move", {"by": "stops", "extend":True, "forward":True, "word_end":True, "punct_end":True}) + if outer: + transform_selection_regions(self.view, lambda r: expand_to_whitespace(self.view, r)) + +class ViExpandToBigWords(sublime_plugin.TextCommand): + def run(self, edit, outer = False, repeat = 1): + repeat = int(repeat) + transform_selection_regions(self.view, lambda r: sublime.Region(r.b + 1, r.b + 1)) + self.view.run_command("move", {"by": "stops", "extend":False, "forward":False, "word_begin":True, "punct_begin":True, "separators": ""}) + for i in xrange(repeat): + self.view.run_command("move", {"by": "stops", "extend":True, "forward":True, "word_end":True, "punct_end":True, "separators": ""}) + if outer: + transform_selection_regions(self.view, lambda r: expand_to_whitespace(self.view, r)) + +class ViExpandToQuotes(sublime_plugin.TextCommand): + def compare_quote(self, character, p): + if self.view.substr(p) == character: + return self.view.score_selector(p, "constant.character.escape") == 0 + else: + return False + + def expand_to_quote(self, character, r): + # We'll limit the search to the current line. + line_begin = self.view.line(r).begin() + line_end = self.view.line(r).end() + + caret_pos_in_line = r.begin() - line_begin + # Find out whether there's any quoted text. + line_text = self.view.substr(self.view.line(r)) + first_quote = line_text.find(character) + closing_quote = None + + # Look for a closing quote after the first quote. + if ((line_text[caret_pos_in_line] == character and + first_quote == caret_pos_in_line) or + (first_quote > caret_pos_in_line)): + closing_quote = line_text.find(character, first_quote + 1) + # The caret may be on a quote character, so don't look past it. + # This ensures we favor quoted text before the caret over quoted + # text after it, as Vim does. + else: + closing_quote = line_text.find(character, caret_pos_in_line) + + # No quoted text --do nothing (Vim). + # TODO: Vintage will enter insert mode after this, whereas it should + # stay in command mode as Vim does. + if closing_quote == -1: + return r + + # Quoted text is before the caret --do nothing (Vim). + if closing_quote < caret_pos_in_line: + return r + + p = r.b + if closing_quote == caret_pos_in_line: + p -= 1 + + # Quoted text is after the caret --advance there (Vim). + if first_quote > caret_pos_in_line: + p = line_begin + first_quote + + a = p + while a >= line_begin and not self.compare_quote(character, a): + a -= 1 + + b = a + 1 + while b < line_end and not self.compare_quote(character, b): + b += 1 + + return sublime.Region(a + 1, b) + + def expand_to_outer(self, r): + a, b = r.a, r.b + if a > 0: + a -= 1 + if b < self.view.size(): + b += 1 + return expand_to_whitespace(self.view, sublime.Region(a, b)) + + def run(self, edit, character, outer = False): + transform_selection_regions(self.view, lambda r: self.expand_to_quote(character, r)) + if outer: + transform_selection_regions(self.view, lambda r: self.expand_to_outer(r)) + +class ViExpandToTag(sublime_plugin.TextCommand): + def run(self, edit, outer = False): + self.view.run_command('expand_selection', {'to': 'tag'}) + if outer: + self.view.run_command('expand_selection', {'to': 'tag'}) + +class ViExpandToBrackets(sublime_plugin.TextCommand): + def run(self, edit, character, outer = False): + self.view.run_command('expand_selection', {'to': 'brackets', 'brackets': character}) + if outer: + self.view.run_command('expand_selection', {'to': 'brackets', 'brackets': character}) + +class ScrollCurrentLineToScreenTop(sublime_plugin.TextCommand): + def run(self, edit, repeat, extend=False): + bos = self.view.visible_region().a + caret = self.view.line(self.view.sel()[0].begin()).a + offset = self.view.rowcol(caret)[0] - self.view.rowcol(bos)[0] + + caret = advance_while_white_space_character(self.view, caret) + transform_selection(self.view, lambda pt: caret, extend) + self.view.run_command('scroll_lines', {'amount': -offset}) + +class ScrollCurrentLineToScreenCenter(sublime_plugin.TextCommand): + def run(self, edit, repeat, extend=True): + line_nr = self.view.rowcol(self.view.sel()[0].a)[0] if \ + int(repeat) == 1 else int(repeat) - 1 + point = self.view.line(self.view.text_point(line_nr, 0)).a + point = advance_while_white_space_character(self.view, point) + transform_selection(self.view, lambda pt: point, extend) + self.view.run_command('show_at_center') diff --git a/XML/Comments.tmPreferences b/XML/Comments.tmPreferences new file mode 100644 index 0000000..6919285 --- /dev/null +++ b/XML/Comments.tmPreferences @@ -0,0 +1,30 @@ + + + + + name + Comments + scope + text.xml + settings + + shellVariables + + + name + TM_COMMENT_START + value + <!-- + + + name + TM_COMMENT_END + value + --> + + + + uuid + 41A5608C-C589-411E-9581-548D7DE335AC + + diff --git a/XML/Comments.tmPreferences.cache b/XML/Comments.tmPreferences.cache new file mode 100644 index 0000000..7d27ad5 Binary files /dev/null and b/XML/Comments.tmPreferences.cache differ diff --git a/XML/Miscellaneous.tmPreferences b/XML/Miscellaneous.tmPreferences new file mode 100644 index 0000000..07e5cf1 --- /dev/null +++ b/XML/Miscellaneous.tmPreferences @@ -0,0 +1,64 @@ + + + + + name + Miscellaneous + scope + text.xml + settings + + comment + + /* + * Don't indent: + * <?, </, <! + * <whatever></whatever> + * <whatever /> + * <% %> + * <!-- --> + * <%-- --%> + * + * Do indent: + * <whatever> + * <% + * <!-- + * <%-- + * + * Decrease indent for: + * </whatever> + * --> + * --%> + */ + decreaseIndentPattern + ^\s*(</[^>]+>|-->|--%>) + highlightPairs + + + ( + ) + + + [ + ] + + + { + } + + + " + " + + + < + > + + + increaseIndentPattern + ^\s*<(([^!/?]|%)(?!.+?([/%]>|</.+?>))|[%!]--\s*$) + + uuid + 95788610-7E2E-45CE-9CCE-708FE0C90BF7 + + diff --git a/XML/Miscellaneous.tmPreferences.cache b/XML/Miscellaneous.tmPreferences.cache new file mode 100644 index 0000000..f6ab988 Binary files /dev/null and b/XML/Miscellaneous.tmPreferences.cache differ diff --git a/XML/Symbol List%3A Templates.tmPreferences b/XML/Symbol List%3A Templates.tmPreferences new file mode 100644 index 0000000..41e9ae9 --- /dev/null +++ b/XML/Symbol List%3A Templates.tmPreferences @@ -0,0 +1,19 @@ + + + + + name + Symbol List: Templates + scope + text.xml.xsl meta.tag.xml.template + settings + + showInSymbolList + 1 + symbolTransformation + s/^\s*<xsl:template\s+(.*)\s*>/$1/ + + uuid + 0B6F39CC-AF39-46CD-85FB-7F895D14F04A + + diff --git a/XML/Symbol List%3A Templates.tmPreferences.cache b/XML/Symbol List%3A Templates.tmPreferences.cache new file mode 100644 index 0000000..f55732c Binary files /dev/null and b/XML/Symbol List%3A Templates.tmPreferences.cache differ diff --git a/XML/XML-Processing-Instruction.sublime-snippet b/XML/XML-Processing-Instruction.sublime-snippet new file mode 100644 index 0000000..8abf5e0 --- /dev/null +++ b/XML/XML-Processing-Instruction.sublime-snippet @@ -0,0 +1,6 @@ + + ]]> + xml + text.xml + XML Processing Instruction + diff --git a/XML/XML.sublime-settings b/XML/XML.sublime-settings new file mode 100644 index 0000000..db74ff1 --- /dev/null +++ b/XML/XML.sublime-settings @@ -0,0 +1,4 @@ +{ + "extensions": ["xml", "xsd", "xslt", "svg"], + "hidden_extensions": ["rss", "sublime-snippet", "vcproj", "tmLanguage", "tmTheme", "tmSnippet", "tmPreferences", "dae"] +} diff --git a/XML/XML.tmLanguage b/XML/XML.tmLanguage new file mode 100644 index 0000000..9438f60 --- /dev/null +++ b/XML/XML.tmLanguage @@ -0,0 +1,589 @@ + + + + + fileTypes + + xml + tld + jsp + pt + cpt + dtml + rss + opml + + foldingStartMarker + ^\s*(<[^!?%/](?!.+?(/>|</.+?>))|<[!%]--(?!.+?--%?>)|<%[!]?(?!.+?%>)) + foldingStopMarker + ^\s*(</[^>]+>|[/%]>|-->)\s*$ + keyEquivalent + ^~X + name + XML + patterns + + + begin + (<\?)\s*([-_a-zA-Z0-9]+) + captures + + 1 + + name + punctuation.definition.tag.begin.xml + + 2 + + name + entity.name.tag.xml + + + end + (\?>) + name + meta.tag.preprocessor.xml + patterns + + + match + ([a-zA-Z-]+) + name + entity.other.attribute-name.xml + + + include + #doublequotedString + + + include + #singlequotedString + + + + + begin + (<!)(DOCTYPE)\s+([:a-zA-Z_][:a-zA-Z0-9_.-]*) + captures + + 1 + + name + punctuation.definition.tag.begin.xml + + 2 + + name + keyword.doctype.xml + + 3 + + name + variable.documentroot.xml + + + end + \s*(>) + name + meta.tag.sgml.doctype.xml + patterns + + + include + #internalSubset + + + + + begin + <[!%]-- + captures + + 0 + + name + punctuation.definition.comment.xml + + + end + --%?> + name + comment.block.xml + + + begin + (<)((?:([-_a-zA-Z0-9]+)((:)))?([-_a-zA-Z0-9:]+))(?=(\s[^>]*)?></\2>) + beginCaptures + + 1 + + name + punctuation.definition.tag.begin.xml + + 3 + + name + entity.name.tag.namespace.xml + + 4 + + name + entity.name.tag.xml + + 5 + + name + punctuation.separator.namespace.xml + + 6 + + name + entity.name.tag.localname.xml + + + end + (>)(<)(/)(?:([-_a-zA-Z0-9]+)((:)))?([-_a-zA-Z0-9:]+)(>) + endCaptures + + 1 + + name + punctuation.definition.tag.end.xml + + 2 + + name + punctuation.definition.tag.begin.xml meta.scope.between-tag-pair.xml + + 3 + + name + punctuation.definition.tag.begin.xml + + 4 + + name + entity.name.tag.namespace.xml + + 5 + + name + entity.name.tag.xml + + 6 + + name + punctuation.separator.namespace.xml + + 7 + + name + entity.name.tag.localname.xml + + 8 + + name + punctuation.definition.tag.end.xml + + + name + meta.tag.no-content.xml + patterns + + + include + #tagStuff + + + + + begin + (</?)(?:([-_a-zA-Z0-9]+)((:)))?([-_a-zA-Z0-9:]+) + captures + + 1 + + name + punctuation.definition.tag.begin.xml + + 2 + + name + entity.name.tag.namespace.xml + + 3 + + name + entity.name.tag.xml + + 4 + + name + punctuation.separator.namespace.xml + + 5 + + name + entity.name.tag.localname.xml + + + end + (/?>) + endCaptures + + 1 + + name + punctuation.definition.tag.end.xml + + + name + meta.tag.xml + patterns + + + include + #tagStuff + + + + + include + #entity + + + include + #bare-ampersand + + + begin + <%@ + beginCaptures + + 0 + + name + punctuation.section.embedded.begin.xml + + + end + %> + endCaptures + + 0 + + name + punctuation.section.embedded.end.xml + + + name + source.java-props.embedded.xml + patterns + + + match + page|include|taglib + name + keyword.other.page-props.xml + + + + + begin + <%[!=]?(?!--) + beginCaptures + + 0 + + name + punctuation.section.embedded.begin.xml + + + end + (?!--)%> + endCaptures + + 0 + + name + punctuation.section.embedded.end.xml + + + name + source.java.embedded.xml + patterns + + + include + source.java + + + + + begin + <!\[CDATA\[ + beginCaptures + + 0 + + name + punctuation.definition.string.begin.xml + + + end + ]]> + endCaptures + + 0 + + name + punctuation.definition.string.end.xml + + + name + string.unquoted.cdata.xml + + + repository + + EntityDecl + + begin + (<!)(ENTITY)\s+(%\s+)?([:a-zA-Z_][:a-zA-Z0-9_.-]*)(\s+(?:SYSTEM|PUBLIC)\s+)? + captures + + 1 + + name + punctuation.definition.tag.begin.xml + + 2 + + name + keyword.entity.xml + + 3 + + name + punctuation.definition.entity.xml + + 4 + + name + variable.entity.xml + + 5 + + name + keyword.entitytype.xml + + + end + (>) + patterns + + + include + #doublequotedString + + + include + #singlequotedString + + + + bare-ampersand + + match + & + name + invalid.illegal.bad-ampersand.xml + + doublequotedString + + begin + " + beginCaptures + + 0 + + name + punctuation.definition.string.begin.xml + + + end + " + endCaptures + + 0 + + name + punctuation.definition.string.end.xml + + + name + string.quoted.double.xml + patterns + + + include + #entity + + + include + #bare-ampersand + + + + entity + + captures + + 1 + + name + punctuation.definition.constant.xml + + 3 + + name + punctuation.definition.constant.xml + + + match + (&)([:a-zA-Z_][:a-zA-Z0-9_.-]*|#[0-9]+|#x[0-9a-fA-F]+)(;) + name + constant.character.entity.xml + + internalSubset + + begin + (\[) + captures + + 1 + + name + punctuation.definition.constant.xml + + + end + (\]) + name + meta.internalsubset.xml + patterns + + + include + #EntityDecl + + + include + #parameterEntity + + + + parameterEntity + + captures + + 1 + + name + punctuation.definition.constant.xml + + 3 + + name + punctuation.definition.constant.xml + + + match + (%)([:a-zA-Z_][:a-zA-Z0-9_.-]*)(;) + name + constant.character.parameter-entity.xml + + singlequotedString + + begin + ' + beginCaptures + + 0 + + name + punctuation.definition.string.begin.xml + + + end + ' + endCaptures + + 0 + + name + punctuation.definition.string.end.xml + + + name + string.quoted.single.xml + patterns + + + include + #entity + + + include + #bare-ampersand + + + + tagStuff + + patterns + + + captures + + 1 + + name + entity.other.attribute-name.namespace.xml + + 2 + + name + entity.other.attribute-name.xml + + 3 + + name + punctuation.separator.namespace.xml + + 4 + + name + entity.other.attribute-name.localname.xml + + + match + (?:([-_a-zA-Z0-9]+)((:)))?([-_a-zA-Z0-9]+)= + + + include + #doublequotedString + + + include + #singlequotedString + + + + + scopeName + text.xml + uuid + D3C4E6DA-6B1C-11D9-8CC2-000D93589AF6 + + diff --git a/XML/XML.tmLanguage.cache b/XML/XML.tmLanguage.cache new file mode 100644 index 0000000..6eca194 Binary files /dev/null and b/XML/XML.tmLanguage.cache differ diff --git a/XML/XSL.tmLanguage b/XML/XSL.tmLanguage new file mode 100644 index 0000000..7dc86c5 --- /dev/null +++ b/XML/XSL.tmLanguage @@ -0,0 +1,157 @@ + + + + + fileTypes + + xsl + xslt + + foldingStartMarker + ^\s*(<[^!?%/](?!.+?(/>|</.+?>))|<[!%]--(?!.+?--%?>)|<%[!]?(?!.+?%>)) + foldingStopMarker + ^\s*(</[^>]+>|[/%]>|-->)\s*$ + keyEquivalent + ^~X + name + XSL + patterns + + + begin + (<)(xsl)((:))(template) + captures + + 1 + + name + punctuation.definition.tag.xml + + 2 + + name + entity.name.tag.namespace.xml + + 3 + + name + entity.name.tag.xml + + 4 + + name + punctuation.separator.namespace.xml + + 5 + + name + entity.name.tag.localname.xml + + + end + (>) + name + meta.tag.xml.template + patterns + + + captures + + 1 + + name + entity.other.attribute-name.namespace.xml + + 2 + + name + entity.other.attribute-name.xml + + 3 + + name + punctuation.separator.namespace.xml + + 4 + + name + entity.other.attribute-name.localname.xml + + + match + (?:([-_a-zA-Z0-9]+)((:)))?([a-zA-Z-]+) + + + include + #doublequotedString + + + include + #singlequotedString + + + + + include + text.xml + + + repository + + doublequotedString + + begin + " + beginCaptures + + 0 + + name + punctuation.definition.string.begin.xml + + + end + " + endCaptures + + 0 + + name + punctuation.definition.string.end.xml + + + name + string.quoted.double.xml + + singlequotedString + + begin + ' + beginCaptures + + 0 + + name + punctuation.definition.string.begin.xml + + + end + ' + endCaptures + + 0 + + name + punctuation.definition.string.end.xml + + + name + string.quoted.single.xml + + + scopeName + text.xml.xsl + uuid + DB8033A1-6D8E-4D80-B8A2-8768AAC6125D + + diff --git a/XML/XSL.tmLanguage.cache b/XML/XSL.tmLanguage.cache new file mode 100644 index 0000000..6102364 Binary files /dev/null and b/XML/XSL.tmLanguage.cache differ diff --git a/XML/cdata.sublime-snippet b/XML/cdata.sublime-snippet new file mode 100644 index 0000000..5dc2da5 --- /dev/null +++ b/XML/cdata.sublime-snippet @@ -0,0 +1,6 @@ + + CDATA + <![CDATA[${0:$SELECTION}]]> + cdata + text.xml + \ No newline at end of file diff --git a/XML/comment.sublime-snippet b/XML/comment.sublime-snippet new file mode 100644 index 0000000..e5cff14 --- /dev/null +++ b/XML/comment.sublime-snippet @@ -0,0 +1,7 @@ + + + Comment + }]]> + c + text.xml + \ No newline at end of file diff --git a/XML/long-tag.sublime-snippet b/XML/long-tag.sublime-snippet new file mode 100644 index 0000000..6603e62 --- /dev/null +++ b/XML/long-tag.sublime-snippet @@ -0,0 +1,6 @@ + + ${2:$SELECTION}]]> + < + text.xml + Long Tag + diff --git a/XML/short-tag.sublime-snippet b/XML/short-tag.sublime-snippet new file mode 100644 index 0000000..5415192 --- /dev/null +++ b/XML/short-tag.sublime-snippet @@ -0,0 +1,6 @@ + + ]]> + > + text.xml + Short Tag + diff --git a/YAML/Comments.tmPreferences b/YAML/Comments.tmPreferences new file mode 100644 index 0000000..dfcac51 --- /dev/null +++ b/YAML/Comments.tmPreferences @@ -0,0 +1,24 @@ + + + + + name + Comments + scope + source.yaml + settings + + shellVariables + + + name + TM_COMMENT_START + value + # + + + + uuid + EDFB82EE-8F5A-497F-8D53-38D4E7BD4F08 + + diff --git a/YAML/Comments.tmPreferences.cache b/YAML/Comments.tmPreferences.cache new file mode 100644 index 0000000..62bbb32 Binary files /dev/null and b/YAML/Comments.tmPreferences.cache differ diff --git a/YAML/YAML.tmLanguage b/YAML/YAML.tmLanguage new file mode 100644 index 0000000..1fb3041 --- /dev/null +++ b/YAML/YAML.tmLanguage @@ -0,0 +1,466 @@ + + + + + fileTypes + + yaml + yml + + foldingStartMarker + ^[^#]\s*.*:(\s*\[?| &.+)?$ + foldingStopMarker + ^\s*$|^\s*\}|^\s*\]|^\s*\) + keyEquivalent + ^~Y + name + YAML + patterns + + + include + #erb + + + begin + ^(\s*)(?:(-)|(?:(-\s*)?(\w+\s*(:))))\s*(\||>) + beginCaptures + + 2 + + name + punctuation.definition.entry.yaml + + 3 + + name + punctuation.definition.entry.yaml + + 4 + + name + entity.name.tag.yaml + + 5 + + name + punctuation.separator.key-value.yaml + + + end + ^(?!^\1)|^(?=\1(-|\w+\s*:)|#) + name + string.unquoted.block.yaml + patterns + + + include + #erb + + + + + captures + + 1 + + name + punctuation.definition.entry.yaml + + 2 + + name + entity.name.tag.yaml + + 3 + + name + punctuation.separator.key-value.yaml + + 4 + + name + punctuation.definition.entry.yaml + + + match + (?:(?:(-\s*)?(\w+\s*(:)))|(-))\s*((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)?\s*$ + name + constant.numeric.yaml + + + captures + + 1 + + name + punctuation.definition.entry.yaml + + 10 + + name + punctuation.definition.string.end.yaml + + 11 + + name + string.unquoted.yaml + + 2 + + name + entity.name.tag.yaml + + 3 + + name + punctuation.separator.key-value.yaml + + 4 + + name + punctuation.definition.entry.yaml + + 5 + + name + string.quoted.double.yaml + + 6 + + name + punctuation.definition.string.begin.yaml + + 7 + + name + punctuation.definition.string.end.yaml + + 8 + + name + string.quoted.single.yaml + + 9 + + name + punctuation.definition.string.begin.yaml + + + match + (?:(?:(-\s*)?(\w+\s*(:)))|(-))\s*(?:((")[^"]*("))|((')[^']*('))|([^,{}&#\[\]]+))\s* + name + string.unquoted.yaml + + + captures + + 1 + + name + punctuation.definition.entry.yaml + + 2 + + name + entity.name.tag.yaml + + 3 + + name + punctuation.separator.key-value.yaml + + 4 + + name + punctuation.definition.entry.yaml + + + match + (?:(?:(-\s*)?(\w+\s*(:)))|(-))\s*([0-9]{4}-[0-9]{2}-[0-9]{2})\s*$ + name + constant.other.date.yaml + + + captures + + 1 + + name + entity.name.tag.yaml + + 2 + + name + punctuation.separator.key-value.yaml + + 3 + + name + keyword.other.omap.yaml + + 4 + + name + punctuation.definition.keyword.yaml + + + match + (\w.*?)(:)\s*((\!\!)omap)? + name + meta.tag.yaml + + + captures + + 1 + + name + punctuation.definition.variable.yaml + + + match + (\&|\*)\w.*?$ + name + variable.other.yaml + + + begin + " + beginCaptures + + 0 + + name + punctuation.definition.string.begin.yaml + + + end + " + endCaptures + + 0 + + name + punctuation.definition.string.end.yaml + + + name + string.quoted.double.yaml + patterns + + + include + #escaped_char + + + include + #erb + + + + + begin + ' + beginCaptures + + 0 + + name + punctuation.definition.string.begin.yaml + + + end + ' + endCaptures + + 0 + + name + punctuation.definition.string.end.yaml + + + name + string.quoted.single.yaml + patterns + + + include + #escaped_char + + + include + #erb + + + + + begin + ` + beginCaptures + + 0 + + name + punctuation.definition.string.begin.yaml + + + end + ` + endCaptures + + 0 + + name + punctuation.definition.string.end.yaml + + + name + string.interpolated.yaml + patterns + + + include + #escaped_char + + + include + #erb + + + + + captures + + 1 + + name + entity.name.tag.yaml + + 2 + + name + keyword.operator.merge-key.yaml + + 3 + + name + punctuation.definition.keyword.yaml + + + match + (\<\<): ((\*).*)$ + name + keyword.operator.merge-key.yaml + + + disabled + 1 + match + ( | )+$ + name + invalid.deprecated.trailing-whitespace.yaml + + + captures + + 1 + + name + punctuation.definition.comment.yaml + + + match + (?<!\$)(#)(?!\{).*$\n? + name + comment.line.number-sign.yaml + + + match + - + name + keyword.operator.symbol + + + begin + ^(?=\t) + end + (?=[^\t]) + name + meta.leading-tabs.yaml + patterns + + + captures + + 1 + + name + meta.odd-tab + + 2 + + name + meta.even-tab + + + match + (\t)(\t)? + + + + + repository + + erb + + begin + <%+(?!>)=? + captures + + 0 + + name + punctuation.section.embedded.ruby + + + end + %> + name + source.ruby.rails.embedded.html + patterns + + + captures + + 1 + + name + punctuation.definition.comment.ruby + + + match + (#).*?(?=%>) + name + comment.line.number-sign.ruby + + + include + source.ruby.rails + + + + escaped_char + + match + \\. + name + constant.character.escape.yaml + + + scopeName + source.yaml + uuid + B0C44228-4F1F-11DA-AFF2-000A95AF0064 + + diff --git a/YAML/YAML.tmLanguage.cache b/YAML/YAML.tmLanguage.cache new file mode 100644 index 0000000..a36825f Binary files /dev/null and b/YAML/YAML.tmLanguage.cache differ diff --git a/YUI Compressor/LICENSE.md b/YUI Compressor/LICENSE.md new file mode 100644 index 0000000..509b7c4 --- /dev/null +++ b/YUI Compressor/LICENSE.md @@ -0,0 +1,71 @@ +# Plugin License + +Copyright (c) 2012 Leon Radley + +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. + + + + + + +# YUI-Compressor License + +YUI Compressor Copyright License Agreement (BSD License) + +Copyright (c) 2011, Yahoo! Inc. +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of Yahoo! Inc. nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of Yahoo! Inc. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +This software also requires access to software from the following sources: + +The Jarg Library v 1.0 ( http://jargs.sourceforge.net/ ) is available +under a BSD License – Copyright (c) 2001-2003 Steve Purcell, +Copyright (c) 2002 Vidar Holen, Copyright (c) 2002 Michal Ceresna and +Copyright (c) 2005 Ewan Mellor. + +The Rhino Library ( http://www.mozilla.org/rhino/ ) is dually available +under an MPL 1.1/GPL 2.0 license, with portions subject to a BSD license. + +Additionally, this software contains modified versions of the following +component files from the Rhino Library: + +[org/mozilla/javascript/Decompiler.java] +[org/mozilla/javascript/Parser.java] +[org/mozilla/javascript/Token.java] +[org/mozilla/javascript/TokenStream.java] + +The modified versions of these files are distributed under the MPL v 1.1 +( http://www.mozilla.org/MPL/MPL-1.1.html ) diff --git a/YUI Compressor/README.md b/YUI Compressor/README.md new file mode 100644 index 0000000..91a6e90 --- /dev/null +++ b/YUI Compressor/README.md @@ -0,0 +1,16 @@ +# YUI-Compressor +Compresses javascript and css using YUI-Compressor + +## Installation +Use package control and search for YUI Compressor + +## Gettings started +Make sure you have java installed and that it's on the path. +On linux and OSX it's usually added by default, but on windows you need to add it. + + +make sure you can run `java -v` from the terminal / command prompt. + +Open a .js or .css file and press `F7` or `command + b`. + +The plugin generates a new files with the extension `.min.js` or `.min.css` \ No newline at end of file diff --git a/YUI Compressor/YUI Compressor.sublime-build b/YUI Compressor/YUI Compressor.sublime-build new file mode 100644 index 0000000..c771e55 --- /dev/null +++ b/YUI Compressor/YUI Compressor.sublime-build @@ -0,0 +1,23 @@ +{ + "cmd": [ + "java", + "-jar", "${packages}/YUI Compressor/bin/yuicompressor-2.4.7.jar", + "--charset", "utf-8", + "--preserve-semi", + "--line-break", "150", + "-o", "${file_base_name}.min.${file_extension}", + "$file" + ], + "windows": { + "cmd": [ + "java", + "-jar", "${packages}\\YUI Compressor\\bin\\yuicompressor-2.4.7.jar", + "--charset", "utf-8", + "--preserve-semi", + "--line-break", "150", + "-o", "${file_base_name}.min.${file_extension}", + "$file" + ] + }, + "selector": "source.js, source.css" +} diff --git a/YUI Compressor/bin/yuicompressor-2.4.7.jar b/YUI Compressor/bin/yuicompressor-2.4.7.jar new file mode 100644 index 0000000..3c9a408 Binary files /dev/null and b/YUI Compressor/bin/yuicompressor-2.4.7.jar differ diff --git a/YUI Compressor/package-metadata.json b/YUI Compressor/package-metadata.json new file mode 100644 index 0000000..9602ffb --- /dev/null +++ b/YUI Compressor/package-metadata.json @@ -0,0 +1 @@ +{"url": "https://github.com/leon/YUI-Compressor", "version": "2012.02.11.19.12.49", "description": "Sublime Text 2 YUI-Compressor plugin"} \ No newline at end of file