diff --git a/.gitmodules b/.gitmodules index 6086e01e..42fb8225 100644 --- a/.gitmodules +++ b/.gitmodules @@ -202,9 +202,6 @@ [submodule "vendor/grammars/sublime-robot-plugin"] path = vendor/grammars/sublime-robot-plugin url = https://github.com/shellderp/sublime-robot-plugin -[submodule "vendor/grammars/actionscript3-tmbundle"] - path = vendor/grammars/actionscript3-tmbundle - url = https://github.com/honzabrecka/actionscript3-tmbundle [submodule "vendor/grammars/Sublime-QML"] path = vendor/grammars/Sublime-QML url = https://github.com/skozlovf/Sublime-QML @@ -797,3 +794,6 @@ [submodule "vendor/grammars/MQL5-sublime"] path = vendor/grammars/MQL5-sublime url = https://github.com/mqsoft/MQL5-sublime +[submodule "vendor/grammars/actionscript3-tmbundle"] + path = vendor/grammars/actionscript3-tmbundle + url = https://github.com/simongregory/actionscript3-tmbundle diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index cfba2222..80b20508 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -17,7 +17,7 @@ To add support for a new extension: In addition, if this extension is already listed in [`languages.yml`][languages] then sometimes a few more steps will need to be taken: 0. Make sure that example `.yourextension` files are present in the [samples directory][samples] for each language that uses `.yourextension`. -0. Test the performance of the Bayesian classifier with a relatively large number (1000s) of sample `.yourextension` files. (ping @arfon or @bkeepers to help with this) to ensure we're not misclassifying files. +0. Test the performance of the Bayesian classifier with a relatively large number (1000s) of sample `.yourextension` files. (ping **@arfon** or **@bkeepers** to help with this) to ensure we're not misclassifying files. 0. If the Bayesian classifier does a bad job with the sample `.yourextension` files then a [heuristic](https://github.com/github/linguist/blob/master/lib/linguist/heuristics.rb) may need to be written to help. @@ -28,10 +28,7 @@ We try only to add languages once they have some usage on GitHub. In most cases To add support for a new language: 0. Add an entry for your language to [`languages.yml`][languages]. Omit the `language_id` field for now. -0. Add a grammar for your language. Please only add grammars that have [one of these licenses](https://github.com/github/linguist/blob/257425141d4e2a5232786bf0b13c901ada075f93/vendor/licenses/config.yml#L2-L11). - 0. Add your grammar as a submodule: `git submodule add https://github.com/JaneSmith/MyGrammar vendor/grammars/MyGrammar`. - 0. Add your grammar to [`grammars.yml`][grammars] by running `script/convert-grammars --add vendor/grammars/MyGrammar`. - 0. Download the license for the grammar: `script/licensed`. Be careful to only commit the file for the new grammar, as this script may update licenses for other grammars as well. +0. Add a grammar for your language: `script/add-grammar https://github.com/JaneSmith/MyGrammar`. Please only add grammars that have [one of these licenses][licenses]. 0. Add samples for your language to the [samples directory][samples] in the correct subdirectory. 0. Add a `language_id` for your language using `script/set-language-ids`. **You should only ever need to run `script/set-language-ids --update`. Anything other than this risks breaking GitHub search :cry:** 0. Open a pull request, linking to a [GitHub search result](https://github.com/search?utf8=%E2%9C%93&q=extension%3Aboot+NOT+nothack&type=Code&ref=searchresults) showing in-the-wild usage. @@ -39,7 +36,7 @@ To add support for a new language: In addition, if your new language defines an extension that's already listed in [`languages.yml`][languages] (such as `.foo`) then sometimes a few more steps will need to be taken: 0. Make sure that example `.foo` files are present in the [samples directory][samples] for each language that uses `.foo`. -0. Test the performance of the Bayesian classifier with a relatively large number (1000s) of sample `.foo` files. (ping @arfon or @bkeepers to help with this) to ensure we're not misclassifying files. +0. Test the performance of the Bayesian classifier with a relatively large number (1000s) of sample `.foo` files. (ping **@arfon** or **@bkeepers** to help with this) to ensure we're not misclassifying files. 0. If the Bayesian classifier does a bad job with the sample `.foo` files then a [heuristic](https://github.com/github/linguist/blob/master/lib/linguist/heuristics.rb) may need to be written to help. Remember, the goal here is to try and avoid false positives! @@ -82,9 +79,9 @@ Here's our current build status: [![Build Status](https://api.travis-ci.org/gith Linguist is maintained with :heart: by: -- @arfon (GitHub Staff) -- @larsbrinkhoff -- @pchaigno +- **@arfon** (GitHub Staff) +- **@larsbrinkhoff** +- **@pchaigno** As Linguist is a production dependency for GitHub we have a couple of workflow restrictions: @@ -113,5 +110,6 @@ If you are the current maintainer of this gem: [grammars]: /grammars.yml [languages]: /lib/linguist/languages.yml +[licenses]: https://github.com/github/linguist/blob/257425141d4e2a5232786bf0b13c901ada075f93/vendor/licenses/config.yml#L2-L11 [samples]: /samples [new-issue]: https://github.com/github/linguist/issues/new diff --git a/grammars.yml b/grammars.yml index 54030189..e62c865d 100755 --- a/grammars.yml +++ b/grammars.yml @@ -136,7 +136,7 @@ vendor/grammars/X10: - source.x10 vendor/grammars/abap.tmbundle: - source.abap -vendor/grammars/actionscript3-tmbundle: +vendor/grammars/actionscript3-tmbundle/: - source.actionscript.3 - text.html.asdoc - text.xml.flex-config diff --git a/lib/linguist/languages.yml b/lib/linguist/languages.yml index f8e257cd..612326df 100755 --- a/lib/linguist/languages.yml +++ b/lib/linguist/languages.yml @@ -227,7 +227,6 @@ Apex: language_id: 17 Apollo Guidance Computer: type: programming - color: "#0B3D91" group: Assembly extensions: - ".agc" @@ -369,7 +368,6 @@ Bison: extensions: - ".bison" ace_mode: text - color: "#6A463F" language_id: 31 BitBake: type: programming @@ -563,6 +561,17 @@ COLLADA: codemirror_mode: xml codemirror_mime_type: text/xml language_id: 49 +CSON: + type: data + group: CoffeeScript + tm_scope: source.coffee + ace_mode: coffee + codemirror_mode: coffeescript + codemirror_mime_type: text/x-coffeescript + searchable: false + extensions: + - ".cson" + language_id: 424 CSS: type: markup tm_scope: source.css @@ -693,7 +702,6 @@ CoffeeScript: - "._coffee" - ".cake" - ".cjsx" - - ".cson" - ".iced" filenames: - Cakefile @@ -702,7 +710,6 @@ CoffeeScript: language_id: 63 ColdFusion: type: programming - group: ColdFusion ace_mode: coldfusion color: "#ed2cd6" search_term: cfm @@ -719,7 +726,6 @@ ColdFusion CFC: type: programming group: ColdFusion ace_mode: coldfusion - color: "#ed2cd6" search_term: cfc aliases: - cfc @@ -1037,7 +1043,6 @@ ECLiPSe: language_id: 94 EJS: type: markup - color: "#a91e50" group: HTML extensions: - ".ejs" @@ -1725,11 +1730,9 @@ Haml: ace_mode: haml codemirror_mode: haml codemirror_mime_type: text/x-haml - color: "#ECE2A9" language_id: 154 Handlebars: type: markup - color: "#01a9d6" group: HTML aliases: - hbs @@ -1834,6 +1837,8 @@ IRC log: - ".weechatlog" tm_scope: none ace_mode: text + codemirror_mode: mirc + codemirror_mime_type: text/mirc language_id: 164 Idris: type: programming @@ -1908,7 +1913,6 @@ J: language_id: 172 JFlex: type: programming - color: "#DBCA00" group: Lex extensions: - ".flex" @@ -2040,19 +2044,6 @@ JavaScript: - ".pac" - ".sjs" - ".ssjs" - - ".sublime-build" - - ".sublime-commands" - - ".sublime-completions" - - ".sublime-keymap" - - ".sublime-macro" - - ".sublime-menu" - - ".sublime-mousemap" - - ".sublime-project" - - ".sublime-settings" - - ".sublime-theme" - - ".sublime-workspace" - - ".sublime_metrics" - - ".sublime_session" - ".xsjs" - ".xsjslib" filenames: @@ -2064,6 +2055,8 @@ Julia: type: programming extensions: - ".jl" + interpreters: + - julia color: "#a270ba" ace_mode: julia codemirror_mode: julia @@ -2125,7 +2118,6 @@ LFE: type: programming extensions: - ".lfe" - color: "#004200" group: Erlang tm_scope: source.lisp ace_mode: lisp @@ -2182,7 +2174,6 @@ Lasso: language_id: 195 Latte: type: markup - color: "#A8FF97" group: HTML extensions: - ".latte" @@ -2207,7 +2198,6 @@ Less: ace_mode: less codemirror_mode: css codemirror_mime_type: text/css - color: "#A1D9A1" language_id: 198 Lex: type: programming @@ -2405,7 +2395,7 @@ MQL4: - ".mqh" tm_scope: source.mql5 ace_mode: c_cpp - language_id: 422 + language_id: 426 MQL5: type: programming color: "#4A76B8" @@ -2414,7 +2404,7 @@ MQL5: - ".mqh" tm_scope: source.mql5 ace_mode: c_cpp - language_id: 423 + language_id: 427 MTML: type: markup color: "#b7e1f4" @@ -2455,6 +2445,7 @@ Makefile: - Kbuild - Makefile - Makefile.am + - Makefile.boot - Makefile.frag - Makefile.in - Makefile.inc @@ -2813,7 +2804,6 @@ NumPy: ace_mode: text codemirror_mode: python codemirror_mime_type: text/x-python - color: "#9C8AF9" language_id: 254 OCaml: type: programming @@ -3163,6 +3153,17 @@ Perl6: codemirror_mode: perl codemirror_mime_type: text/x-perl language_id: 283 +Pic: + type: markup + group: Groff + tm_scope: "source.pic" + extensions: + - ".pic" + - ".chem" + ace_mode: text + codemirror_mode: troff + codemirror_mime_type: text/troff + language_id: 425 Pickle: type: data extensions: @@ -3305,6 +3306,8 @@ Public Key: - ".pub" tm_scope: none ace_mode: text + codemirror_mode: asciiarmor + codemirror_mime_type: application/pgp language_id: 298 Puppet: type: programming @@ -3697,7 +3700,6 @@ SCSS: codemirror_mime_type: text/x-scss extensions: - ".scss" - color: "#CF649A" language_id: 329 SMT: type: programming @@ -3823,7 +3825,6 @@ Sass: ace_mode: sass codemirror_mode: sass codemirror_mime_type: text/x-sass - color: "#CF649A" language_id: 340 Scala: type: programming @@ -3950,7 +3951,6 @@ Slash: Slim: group: HTML type: markup - color: "#ff8f77" extensions: - ".slim" tm_scope: text.slim @@ -4058,6 +4058,28 @@ SubRip Text: ace_mode: text tm_scope: text.srt language_id: 360 +Sublime Text Config: + type: data + group: JSON + tm_scope: source.js + ace_mode: javascript + codemirror_mode: javascript + codemirror_mime_type: text/javascript + extensions: + - ".sublime-build" + - ".sublime-commands" + - ".sublime-completions" + - ".sublime-keymap" + - ".sublime-macro" + - ".sublime-menu" + - ".sublime-mousemap" + - ".sublime-project" + - ".sublime-settings" + - ".sublime-theme" + - ".sublime-workspace" + - ".sublime_metrics" + - ".sublime_session" + language_id: 423 SuperCollider: type: programming color: "#46390b" @@ -4090,6 +4112,17 @@ SystemVerilog: codemirror_mode: verilog codemirror_mime_type: text/x-systemverilog language_id: 363 +TI Program: + type: programming + ace_mode: text + color: "#A0AA87" + extensions: + - ".8xp" + - ".8xk" + - ".8xk.txt" + - ".8xp.txt" + language_id: 422 + tm_scope: none TLA: type: programming extensions: @@ -4272,7 +4305,6 @@ Unified Parallel C: ace_mode: c_cpp codemirror_mode: clike codemirror_mime_type: text/x-csrc - color: "#4e3617" extensions: - ".upc" tm_scope: source.c diff --git a/lib/linguist/vendor.yml b/lib/linguist/vendor.yml index 0e6daa27..5e83cd50 100644 --- a/lib/linguist/vendor.yml +++ b/lib/linguist/vendor.yml @@ -15,6 +15,9 @@ # Dependencies - ^[Dd]ependencies/ +# Distributions +- (^|/)dist/ + # C deps # https://github.com/joyent/node - ^deps/ diff --git a/samples/CSON/base.cson b/samples/CSON/base.cson new file mode 100644 index 00000000..d9941643 --- /dev/null +++ b/samples/CSON/base.cson @@ -0,0 +1,72 @@ +'atom-text-editor': + # Platform Bindings + 'home': 'editor:move-to-first-character-of-line' + 'end': 'editor:move-to-end-of-screen-line' + 'shift-home': 'editor:select-to-first-character-of-line' + 'shift-end': 'editor:select-to-end-of-line' + +'atom-text-editor:not([mini])': + # Atom Specific + 'ctrl-C': 'editor:copy-path' + + # Sublime Parity + 'tab': 'editor:indent' + 'enter': 'editor:newline' + 'shift-tab': 'editor:outdent-selected-rows' + 'ctrl-K': 'editor:delete-line' + +'.select-list atom-text-editor[mini]': + 'enter': 'core:confirm' + +'.tool-panel.panel-left, .tool-panel.panel-right': + 'escape': 'tool-panel:unfocus' + +'atom-text-editor !important, atom-text-editor[mini] !important': + 'escape': 'editor:consolidate-selections' + +# allow standard input fields to work correctly +'body .native-key-bindings': + 'tab': 'core:focus-next' + 'shift-tab': 'core:focus-previous' + 'enter': 'native!' + 'backspace': 'native!' + 'shift-backspace': 'native!' + 'delete': 'native!' + 'up': 'native!' + 'down': 'native!' + 'shift-up': 'native!' + 'shift-down': 'native!' + 'alt-up': 'native!' + 'alt-down': 'native!' + 'alt-shift-up': 'native!' + 'alt-shift-down': 'native!' + 'cmd-up': 'native!' + 'cmd-down': 'native!' + 'cmd-shift-up': 'native!' + 'cmd-shift-down': 'native!' + 'ctrl-up': 'native!' + 'ctrl-down': 'native!' + 'ctrl-shift-up': 'native!' + 'ctrl-shift-down': 'native!' + 'left': 'native!' + 'right': 'native!' + 'shift-left': 'native!' + 'shift-right': 'native!' + 'alt-left': 'native!' + 'alt-right': 'native!' + 'alt-shift-left': 'native!' + 'alt-shift-right': 'native!' + 'cmd-left': 'native!' + 'cmd-right': 'native!' + 'cmd-shift-left': 'native!' + 'cmd-shift-right': 'native!' + 'ctrl-left': 'native!' + 'ctrl-right': 'native!' + 'ctrl-shift-left': 'native!' + 'ctrl-shift-right': 'native!' + 'ctrl-b': 'native!' + 'ctrl-f': 'native!' + 'ctrl-F': 'native!' + 'ctrl-B': 'native!' + 'ctrl-h': 'native!' + 'ctrl-d': 'native!' diff --git a/samples/CSON/config.cson b/samples/CSON/config.cson new file mode 100644 index 00000000..5b0415b2 --- /dev/null +++ b/samples/CSON/config.cson @@ -0,0 +1,59 @@ +directoryIcons: + + Atom: + icon: "atom" + match: /^\.atom$/ + colour: "dark-green" + + Bower: + icon: "bower" + match: /^bower[-_]components$/ + colour: "bower" + + Dropbox: + icon: "dropbox" + match: /^(?:Dropbox|\.dropbox\.cache)$/ + colour: "medium-blue" + + Git: + icon: "git" + match: /^\.git$/ + + GitHub: + icon: "github" + match: /^\.github$/ + + Meteor: + icon: "meteor" + match: /^\.meteor$/ + + NodeJS: + icon: "node" + match: /^node_modules$/ + colour: "medium-green" + + Package: + icon: "package" + match: /^\.bundle$/i + + TextMate: + icon: "textmate" + match: ".tmBundle" + + +fileIcons: + + ABAP: + icon: "abap" + scope: "abp" + match: ".abap" + colour: "medium-orange" + + ActionScript: # Or Flash-related + icon: "as" + match: [ + [".swf", "medium-blue"] + [".as", "medium-red", scope: /\.(?:flex-config|actionscript(?:\.\d+)?)$/i, alias: /ActionScript\s?3|as3/i] + [".jsfl", "auto-yellow"] + [".swc", "dark-red"] + ] diff --git a/samples/CSON/ff-sfd.cson b/samples/CSON/ff-sfd.cson new file mode 100644 index 00000000..409d5caa --- /dev/null +++ b/samples/CSON/ff-sfd.cson @@ -0,0 +1,108 @@ +name: "Spline Font Database" +scopeName: "text.sfd" +fileTypes: ["sfd"] +firstLineMatch: "^SplineFontDB: [\\d.]+" +patterns: [include: "#main"] + +repository: + main: + patterns: [ + {include: "#punctuation"} + {include: "#private"} + {include: "#image"} + {include: "#pickleData"} + {include: "#sections"} + {include: "#copyright"} + {include: "#property"} + {include: "#control"} + {include: "#address"} + {include: "#encoding"} + {include: "source.fontforge#shared"} + {include: "#colour"} + ] + + punctuation: + patterns: [ + {match: "<|>", name: "punctuation.definition.brackets.angle.sfd"} + {match: "[{}]", name: "punctuation.definition.brackets.curly.sfd"} + ] + + private: + name: "meta.section.private.sfd" + begin: "^BeginPrivate(?=:)" + end: "^EndPrivate\\b" + beginCaptures: 0: name: "keyword.control.begin.private.sfd" + endCaptures: 0: name: "keyword.control.end.private.sfd" + patterns: [ + {match: "^\\S+", name: "entity.name.private.property.sfd"} + {include: "$self"} + ] + + image: + name: "meta.image.sfd" + begin: "^(Image)(?=:)(.+)$" + end: "^(EndImage)\\b" + contentName: "string.unquoted.raw.data.sfd" + beginCaptures: + 1: name: "keyword.control.begin.image.sfd" + 2: patterns: [include: "$self"] + endCaptures: + 1: name: "keyword.control.end.image.sfd" + + pickleData: + name: "meta.pickle-data.sfd" + begin: "^(PickledData)(:)\\s*(\")" + end: '"' + beginCaptures: + 1: name: "entity.name.property.sfd" + 2: name: "punctuation.separator.dictionary.key-value.sfd" + 3: name: "punctuation.definition.string.begin.sfd" + endCaptures: + 0: name: "punctuation.definition.string.end.sfd" + patterns: [match: "\\\\.", name: "constant.character.escape.sfd"] + + sections: + name: "meta.section.${2:/downcase}.sfd" + begin: "^(Start|Begin)([A-Z]\\w+)(?=:)" + end: "^(End\\2)\\b" + beginCaptures: 0: name: "keyword.control.begin.${2:/downcase}.sfd" + endCaptures: 0: name: "keyword.control.end.${2:/downcase}.sfd" + patterns: [include: "$self"] + + control: + name: "keyword.control.${1:/downcase}.sfd" + match: "\\b(Fore|Back|SplineSet|^End\\w+)\\b" + + colour: + name: "constant.other.hex.colour.sfd" + match: "(#)[A-Fa-f0-9]{3,}|(?<=\\s)[A-Fa-f0-9]{6,8}" + captures: + 1: name: "punctuation.definition.colour.sfd" + + encoding: + name: "constant.language.encoding.sfd" + match: "(?i)\\b(ISO[-\\w]+)(?<=\\d)(?=\\s|$)" + + # Don't highlight numbers in freeform strings (years/version strings) + copyright: + name: "meta.${1:/downcase}-string.sfd" + begin: "^(Copyright|U?Comments?|\\w+Name)(:)" + end: "$" + beginCaptures: + 1: name: "entity.name.property.sfd" + 2: name: "punctuation.separator.dictionary.key-value.sfd" + patterns: [include: "source.fontforge#stringEscapes"] + + # No idea what this is, but it looks distracting without a fix + # Assuming it's referring to a memory register or something. + address: + match: "\\d+[xX][A-Fa-f0-9]+" + name: "constant.numeric.hexadecimal.sfd" + + property: + match: "^([^:]+)(:)" + name: "meta.dictionary.key-value.sfd" + captures: + 1: name: "entity.name.property.sfd" + 2: name: "punctuation.separator.dictionary.key-value.sfd" + diff --git a/samples/CSON/wercker-status.cson b/samples/CSON/wercker-status.cson new file mode 100644 index 00000000..f4572b7a --- /dev/null +++ b/samples/CSON/wercker-status.cson @@ -0,0 +1,11 @@ +'menu': [ + { + 'label': 'Packages' + 'submenu': [ + 'label': 'Wercker Status' + 'submenu': [ + { 'label': 'Check now!', 'command': 'wercker-status:checknow' } + ] + ] + } +] diff --git a/samples/Julia/julia b/samples/Julia/julia new file mode 100644 index 00000000..c8fbb1f3 --- /dev/null +++ b/samples/Julia/julia @@ -0,0 +1,60 @@ +#!/usr/bin/env julia + +# From https://github.com/JoshCheek/language-sampler-for-fullpath/blob/b766dcdbd249ec63516f491390a75315e78cba95/julia/fullpath +help_screen = """ +usage: fullpath *[relative-paths] [-c] + + Prints the fullpath of the paths + If no paths are given as args, it will read them from stdin + + If there is only one path, the trailing newline is omitted + + The -c flag will copy the results into your pasteboard +""" + +help = false +copy = false +dir = pwd() +paths = [] + +for arg = ARGS + if arg == "-h" || arg == "--help" + help = true + elseif arg == "-c" || arg == "--copy" + copy = true + elseif arg != "" + push!(paths, arg) + end +end + +if help + print(help_screen) + exit() +end + +function notempty(string) + return !isempty(string) +end + +if length(paths) == 0 + paths = filter(notempty, map(chomp, readlines())) +end + +function print_paths(stream, paths) + if length(paths) == 1 + path = paths[1] + print(stream, "$dir/$path") + else + for path = paths + println(stream, "$dir/$path") + end + end +end + +if copy + read, write, process = readandwrite(`pbcopy`) + print_paths(write, paths) + close(write) +end + +print_paths(STDOUT, paths) diff --git a/samples/Pic/dextroamphetamine.chem b/samples/Pic/dextroamphetamine.chem new file mode 100644 index 00000000..8cbe3678 --- /dev/null +++ b/samples/Pic/dextroamphetamine.chem @@ -0,0 +1,13 @@ +# Dextroamphetamine molecule +.cstart + .ps 26 + size 28 +R1: + ring double 1,2 3,4 5,6 + bond 60 from R1.V2 + bond 120 +A1: + front bond down ; CH3 + bond 60 from A1 ; NH2 + .ps +.cend diff --git a/samples/Pic/graph.pic b/samples/Pic/graph.pic new file mode 100644 index 00000000..8534e44e --- /dev/null +++ b/samples/Pic/graph.pic @@ -0,0 +1,25 @@ +.PS + ellipse "Pic" "example" + arrow + box "This is" "a box" + arrow right + box "Another" "box" dashed + move down then right; +Thing: ellipse "This is a" "circle-thing" + arrow <-> from last box.r to Thing.l + move down then left; +B: box "Still a box" + arrow from Thing.l to B.r + sprintf("Width = %g, Height = %g ", B.wid, B.ht) rjust at B.w + move down +.ps 15 + define sadness { + boxwid = 3; + boxht = 1; + textht = .5; + box "\"I run from my depression by" " " "burying myself in code\"" + arrow down from last box.s + "Me" + } + sadness(); +.PE diff --git a/samples/Pic/ritalin.chem b/samples/Pic/ritalin.chem new file mode 100644 index 00000000..a6eb6313 --- /dev/null +++ b/samples/Pic/ritalin.chem @@ -0,0 +1,15 @@ +.\" RITALIN: Methylphenidate Hydrochloride +.cstart +.ps 15 +size 15 + R1: ring double 1,2 3,4 5,6 pointing up + bond 60 length .35 from R1.V2 ; BP + bond 120 length .35 from BP + R2: ring pointing up put N at 1 + H above R2 + bond up length .35 from BP ; BP + bond -60 length .35 from BP ; O + bond up + double bond 60 length .35 from BP ; O +.ps 10 +.cend diff --git a/samples/Sublime Text Config/AMPL.sublime-build b/samples/Sublime Text Config/AMPL.sublime-build new file mode 100644 index 00000000..7434f54d --- /dev/null +++ b/samples/Sublime Text Config/AMPL.sublime-build @@ -0,0 +1,14 @@ +{ + "cmd": ["ampl", "${file_path}/${file_base_name}.run"], + "file_regex": "^(?:[(]file )*[ ]*(...*?), line ([0-9]*)", + "selector": "source.ampl", + + "osx": + { + "env": + { + // "ILOG_LICENSE_FILE": "path/to/access.ilm" + } + } + +} diff --git a/samples/Sublime Text Config/CLIPS.sublime-settings b/samples/Sublime Text Config/CLIPS.sublime-settings new file mode 100644 index 00000000..1b6ef5f3 --- /dev/null +++ b/samples/Sublime Text Config/CLIPS.sublime-settings @@ -0,0 +1,8 @@ +{ + "extensions": + [ + "clp" + ], + "tab_size": 8, + "translate_tabs_to_spaces": false +} diff --git a/samples/Sublime Text Config/Context.sublime-menu b/samples/Sublime Text Config/Context.sublime-menu new file mode 100644 index 00000000..ae2526e5 --- /dev/null +++ b/samples/Sublime Text Config/Context.sublime-menu @@ -0,0 +1,13 @@ +[ +{ + "id" : "nasm", + "caption": "NASM Assembly", + "children": + [ + { + "caption" : "Documentation", + "command" : "assembly_doc" + } + ] +} +] \ No newline at end of file diff --git a/samples/Sublime Text Config/Dart.sublime-commands b/samples/Sublime Text Config/Dart.sublime-commands new file mode 100644 index 00000000..901bbdfe --- /dev/null +++ b/samples/Sublime Text Config/Dart.sublime-commands @@ -0,0 +1,30 @@ +[ + { "caption": "Dart: Polymer: Generate Element", "command": "dart_generate_polymer_element" }, + { "caption": "Dart: Polymer: Add Entry Point", "command": "dart_add_polymer_entry_point" }, + + { "caption": "Dart: Check Configuration", "command": "dart_check_config" }, + { "caption": "Dart: Browse API Reference", "command": "dart_open_browser", "args": {"url": "https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/home" } }, + { "caption": "Dart: Set Default User Browser", "command": "dart_show_user_browsers" }, + + { "caption": "Preferences: Dart Settings - Default", "command": "dart_open_settings", "args": {"kind": "default"} }, + { "caption": "Preferences: Dart Settings - User", "command": "dart_open_settings", "args": {"kind": "user"} }, + { "caption": "Preferences: Dart Settings - File Type (User)", "command": "dart_open_settings", "args": {"kind": "user", "scope": "file_type"} }, + + { "caption": "Dart: Run", "command": "dart_smart_run" }, + { "caption": "Dart: Run (This File)", "command": "dart_smart_run", "args": {"force_update": true} }, + { "caption": "Dart: Stop", "command": "dart_smart_run", "args": {"kill_only": true} }, + + { "caption": "Dart: Run In Observatory (This File)", "command": "dart_run_in_observatory" }, + + { "caption": "Dart: Show Output Panel", "command": "show_panel", "args": {"panel": "output.dart.out"} }, + { "caption": "Dart: Show Errors Panel", "command": "show_panel", "args": {"panel": "output.dart.errors"} }, + + { "caption": "Dart: Format", "command": "dart_format" }, + + { "caption": "Dart: Generate Documentation", "command": "dart_generate_docs" }, + { "caption": "Dart: Serve Documentation", "command": "dart_serve_docs" }, + + { "caption": "Dart: Stagehand", "command": "dart_stagehand_wizard" }, + + { "caption": "Dart: Pub Get", "command": "dart_pub_get" } +] diff --git a/samples/Sublime Text Config/Dart.sublime-project b/samples/Sublime Text Config/Dart.sublime-project new file mode 100644 index 00000000..22c1677a --- /dev/null +++ b/samples/Sublime Text Config/Dart.sublime-project @@ -0,0 +1,40 @@ +{ + "folders": + [ + { + "follow_symlinks": true, + "path": "." + } + ], + + "SublimeLinter": + { + "@python": 3.4 + }, + + "build_systems": + [ + { + "name": "Run", + "shell_cmd": "\"$project_path/scripts/build.sh\"", + "windows": + { + "shell_cmd": "powershell -noninteractive -file \"$project_path\\build.ps1\"" + }, + "working_dir": "${project_path}", + + "variants": [ + { + "name": "Dart: Test (All)", + "target": "run_dart_tests", + }, + + { + "name": "Dart: Test (This File Only)", + "target": "run_dart_tests", + "active_file_only": true + } + ] + } + ] +} diff --git a/samples/Sublime Text Config/Default (Linux).sublime-mousemap b/samples/Sublime Text Config/Default (Linux).sublime-mousemap new file mode 100644 index 00000000..c6d56aa5 --- /dev/null +++ b/samples/Sublime Text Config/Default (Linux).sublime-mousemap @@ -0,0 +1,7 @@ +[ + { + "button": "button1", "count": 1, "modifiers": ["alt"], + "press_command": "drag_select", + "command": "robot_go_to_keyword" + } +] diff --git a/samples/Sublime Text Config/Default.sublime-keymap b/samples/Sublime Text Config/Default.sublime-keymap new file mode 100644 index 00000000..e62a0a9b --- /dev/null +++ b/samples/Sublime Text Config/Default.sublime-keymap @@ -0,0 +1,6 @@ +[ + // Disable auto-pair for single quote + { "keys": ["'"], "command": "insert_snippet", "args": {"contents": "'"}, "context": + [{ "key": "selector", "operator": "equal", "operand": "source.rust" }] + } +] diff --git a/samples/Sublime Text Config/JavaDoc Add Line.sublime-macro b/samples/Sublime Text Config/JavaDoc Add Line.sublime-macro new file mode 100644 index 00000000..a2d62b99 --- /dev/null +++ b/samples/Sublime Text Config/JavaDoc Add Line.sublime-macro @@ -0,0 +1,6 @@ +[ + {"command": "move_to", "args": {"to": "hardeol"}}, + {"command": "insert", "args": {"characters": "\n"}}, + {"command": "insert", "args": {"characters": "*"}}, + {"command": "insert", "args": {"characters": " "}} +] diff --git a/samples/Sublime Text Config/RunBuild.sublime-macro b/samples/Sublime Text Config/RunBuild.sublime-macro new file mode 100644 index 00000000..574a045d --- /dev/null +++ b/samples/Sublime Text Config/RunBuild.sublime-macro @@ -0,0 +1,5 @@ +[ + { + "command": "haxe_run_build" + } +] diff --git a/samples/Sublime Text Config/SourcePawn.sublime-build b/samples/Sublime Text Config/SourcePawn.sublime-build new file mode 100644 index 00000000..013a949d --- /dev/null +++ b/samples/Sublime Text Config/SourcePawn.sublime-build @@ -0,0 +1,19 @@ +{ + // For default sourcemod scripting directory : + "cmd": ["", "-o$file_path/../plugins/$file_name", "$file"], + + // For custom sourcemod scripting directory : + "cmd": ["", "-i", "-o$file_path/$file_base_name.smx", "$file"], + + // Windows example: + "cmd": ["X:/somefolder/spcomp", "-iX:/somefolder", "-o$file_path/$file_base_name.smx", "$file"], + "cmd": ["X:/game/csgo/addons/sourcemod/scripting/spcomp", "-o$file_path/../plugins/$file_name", "$file"], + + // Linux or OSX example: + "cmd": ["/home/User/sm/spcomp", "-i/home/User/sm/include", "-o$file_path/$file_base_name.smx", "$file"], + "cmd": ["/home/User/game/csgo/addons/sourcemod/scripting/spcomp", "-o$file_path/../plugins/$file_name", "$file"], + + + "file_regex": "(.*)\\((\\d+)\\) :", + "selector": "source.sp" +} diff --git a/samples/Sublime Text Config/Tubnil.sublime-theme b/samples/Sublime Text Config/Tubnil.sublime-theme new file mode 100644 index 00000000..cb494beb --- /dev/null +++ b/samples/Sublime Text Config/Tubnil.sublime-theme @@ -0,0 +1,861 @@ +[ + // Tubnil theme for Sublime Text 2 + // https://github.com/nilium/st2-nil-theme + // + // TABS + // ========================================================== + // - Tabset + // ------------------------------------------------------ + { + "class": "tabset_control", + "layer0.texture": "SourcePawn/assets/tabset-bg.png", + "layer0.inner_margin": [2, 6], + "layer0.opacity": 1.0, + "content_margin": [-13, 0, -13,-6], // left, top, right, bottom + "tab_overlap": 25, + "tab_width": 150, + "tab_min_width": 50, + "tab_height": 35, + "mouse_wheel_switch": false + }, + { + "class": "tabset_control", + "settings": ["mouse_wheel_switches_tabs"], + "mouse_wheel_switch": true + }, + + // - Tab element + // ------------------------------------------------------ + { + "class": "tab_control", + "content_margin": [25, 0, 25, 0], + "max_margin_trim": 0, + "hit_test_level": 0.5, + + // - Inactive tab settings + "layer0.texture": "SourcePawn/assets/tab-inactive.png", + "layer0.inner_margin": [23, 8], + "layer0.opacity": 1.0, + + // - Active tab setting + "layer1.texture": "SourcePawn/assets/tab-active.png", + "layer1.inner_margin": [23, 8], + "layer1.opacity": 0.0, + + // - Hover tab setting + "layer2.texture": "SourcePawn/assets/tab-hover.png", + "layer2.inner_margin": [23, 8], + "layer2.opacity": 0.0 + }, + { + // - Tab close state + "class": "tab_control", + "settings": ["show_tab_close_buttons"], + "content_margin": [20, 0, 20, 7] + }, + { + // - Hover tab state + "class": "tab_control", + "attributes": ["hover"], + "layer2.opacity": 1.0 + }, + { + // - Active tab state + "class": "tab_control", + "attributes": ["selected"], + "layer0.opacity": 0.0, + "layer1.opacity": 1.0, + "layer2.opacity": 0.0 + }, + { + // - Modified tab state + "class": "tab_control", + //"settings": ["highlight_modified_tabs"], + "attributes": ["dirty"], + "layer0.texture": "SourcePawn/assets/tab-inactive-modified.png", + "layer1.texture": "SourcePawn/assets/tab-active-modified.png", + "layer2.texture": "SourcePawn/assets/tab-hover-dirty.png" + }, + + // - Tab labels + // ------------------------------------------------------ + + // - Inactive tab label + { + "class": "tab_label", + "fg": [180, 180, 180], + "shadow_color": [0, 0, 0, 200], + "shadow_offset": [0, 1] + }, + + // - Active tab label + { + "class": "tab_label", + "parents": [{"class": "tab_control", "attributes": ["selected"]}], + "shadow_color": [0, 0, 0, 165], + "shadow_offset": [0, 1], + "fg": [240, 240, 240, 255] + }, + + // - Hover tab label + { + "class": "tab_label", + "parents": [{"class": "tab_control", "attributes": ["hover"]}], + "shadow_color": [0, 0, 0, 165], + "shadow_offset": [0, 1], + "fg": [2, 196, 251, 255] + }, + + // - Dirty Hover tab label + { + "class": "tab_label", + "parents": [{"class": "tab_control", "attributes": ["hover", "dirty"]}], + "shadow_color": [0, 0, 0, 165], + "shadow_offset": [0, 1], + "fg": [253, 113, 1, 255] + }, + + // - Dirty inactive tab label + { + "class": "tab_label", + "parents": [{"class": "tab_control", "attributes": ["dirty"]}], + "settings": ["highlight_modified_tabs"] + }, + + // - Dirty active tab label + { + "class": "tab_label", + "parents": [{"class": "tab_control", "attributes": ["selected", "dirty"]}], + "settings": ["highlight_modified_tabs"] + }, + + // - Tab buttons + // ------------------------------------------------------ + + // - Tab button + { + "class": "tab_close_button", + "content_margin": [0, 0], + + // - Tab close default settings + "layer1.texture": "SourcePawn/assets/tab-button-close.png", + "layer1.opacity": 0.0, // hide by default + "layer1.inner_margin": 0.0, + + // - Tab close hover settings + "layer0.texture": "SourcePawn/assets/tab-button-close-hover.png", + "layer0.opacity": 0.0 + }, + { + // - Tab button size + "class": "tab_close_button", + "settings": ["show_tab_close_buttons"], + "content_margin": [8, 8] + }, + { + "class": "tab_close_button", + "parents": [{"class": "tab_control", "attributes": ["dirty"]}], + "layer1.texture": "SourcePawn/assets/tab-button-close-dirty.png" + }, + { + // - Tab close hover action + "class": "tab_close_button", + "parents": [{"class": "tab_control", "attributes": ["hover"]}], + "layer1.opacity": 0.0, + "layer0.opacity": 1.0 + }, + { + // - Tab close press action + "class": "tab_close_button", + "attributes": ["hover"], + "layer1.opacity": 0.4, + "layer0.opacity": 1.0 + }, + { + // - Tab close press action + "class": "tab_close_button", + "attributes": ["pressed"], + "layer1.opacity": 1.0, + "layer0.opacity": 0.0 + }, + +// FOLD BUTTONS +// ========================================================== + + { + "class": "fold_button_control", + "layer0.texture": "SourcePawn/assets/arrow-right.png", + "layer0.opacity": 1.0, + "layer0.inner_margin": 0, + "layer1.texture": "SourcePawn/assets/arrow-right-hover.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": 0.75 + }, + { + "class": "fold_button_control", + "attributes": ["pressed"], + "layer0.opacity": 0.0, + "layer1.opacity": 1.0 + }, + { + "class": "fold_button_control", + "attributes": ["expanded"], + "layer0.texture": "SourcePawn/assets/arrow-down.png", + "layer1.texture": "SourcePawn/assets/arrow-down-hover.png" + }, + +// SCROLLBARS (overlay scrollbars from Default theme) +// ========================================================== + { + "class": "scroll_bar_control", + "layer0.texture": "SourcePawn/assets/scrollbar/well-vertical.png", + "layer0.opacity": 1.0, + "layer0.inner_margin": [1, 1], + "blur": false + }, + { + "class": "scroll_bar_control", + "attributes": ["horizontal"], + "layer0.texture": "SourcePawn/assets/scrollbar/well-horizontal.png", + "layer0.opacity": 1.0, + "layer0.inner_margin": [1, 1], + "blur": false + }, + { + "class": "scroll_corner_control", + "layer0.texture": "SourcePawn/assets/scrollbar/well-corner.png", + "layer0.opacity": 1.0, + "layer0.inner_margin": [1, 1] + }, + { + "class": "puck_control", + "layer0.texture": "SourcePawn/assets/scrollbar/bar-vertical.png", + "layer0.opacity": 1.0, + "layer0.inner_margin": [3, 3], + "content_margin": [6, 6], + "blur": false + }, + { + "class": "puck_control", + "attributes": ["horizontal"], + "layer0.texture": "SourcePawn/assets/scrollbar/bar-horizontal.png" + }, + { + "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": "SourcePawn/assets/overlay/overlay_bar_vertical.png", + "layer0.inner_margin": [0, 5], + "blur": true + }, + { + "class": "scroll_bar_control", + "settings": ["overlay_scroll_bars"], + "attributes": ["horizontal"], + "layer0.texture": "SourcePawn/assets/overlay/overlay_bar_horizontal.png", + "layer0.inner_margin": [5, 0], + "blur": true + }, + { + "class": "puck_control", + "settings": ["overlay_scroll_bars"], + "layer0.texture": "SourcePawn/assets/overlay/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": "SourcePawn/assets/overlay/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": "SourcePawn/assets/overlay/overlay_dark_thumb_vertical.png" + }, + { + "class": "puck_control", + "settings": ["overlay_scroll_bars"], + "attributes": ["horizontal", "dark"], + "layer0.texture": "SourcePawn/assets/overlay/overlay_dark_thumb_horizontal.png" + }, + +// EMPTY WINDOW BACKGROUND +// ========================================================== + { + "class": "sheet_container_control", + "layer0.tint": [16, 16, 16], + "layer0.opacity": 1.0 + }, + +// GRID LAYOUT +// ========================================================== + { + "class": "grid_layout_control", + "border_size": 1, + "border_color": [32, 32, 32] + }, + +// MINI MAP +// ========================================================== + { + "class": "minimap_control", + "viewport_color": [185, 185, 185, 50] + }, + +// LABELS +// ========================================================== + // - General labels + { + "class": "label_control", + "color": [230, 230, 230] + }, + // - Text field labels + { + "class": "label_control", + "parents": [{"class": "panel_control"}], + "shadow_color": [0, 0, 0], + "shadow_offset": [0, 1] + }, + // - Button labels + { + "class": "label_control", + "parents": [{"class": "button_control"}], + "color": [230, 230, 230], + "shadow_color": [0, 0, 0], + "shadow_offset": [0, 1] + }, + +// TOOLTIP +// ========================================================== + // - Tooltip container + { + "class": "tool_tip_control", + "layer0.texture": "SourcePawn/assets/tooltip.png", + "layer0.inner_margin": [4, 4], + "layer0.opacity": 1, + "content_margin": [6, 4] + }, + // - Tooltip content + { + "class": "tool_tip_label_control", + "color": [160, 160, 160], + "shadow_offset": [0, 1], + "shadow_color": [0, 0, 0, 255] + }, + +// STATUS BAR +// ========================================================== + // - Status bar container + { + "class": "status_bar", + "layer0.texture": "SourcePawn/assets/status-bar-bg.png", + "layer0.opacity": 1, + "layer0.inner_margin": [2, 2], + "content_margin": [6, 5, 6, 5] + }, + { + "class": "status_button", + "min_size": [100, 0] + }, + + // - Status bar label + { + "class": "label_control", + "parents": [{"class": "status_bar"}], + "font.size": 10, + "color": [160, 160, 160], + "shadow_color": [0, 0, 0], + "shadow_offset": [0, 1] + }, + +// SIDEBAR +// ========================================================== + // - Sidebar container (border) + { + "class": "sidebar_container", + "layer0.tint": [150, 150, 150], + "layer0.opacity": 0.5, + "layer0.draw_center": false, + "layer0.inner_margin": [0, 0, 1, 0], + "content_margin": [0, 0, 1, 0] + }, + // - Sidebar tree (bg) + { + "class": "sidebar_tree", + "row_padding": [8, 3], + "indent": 15, + "indent_offset": 13, + "indent_top_level": false, + "layer0.tint": [19, 20, 21], // darker gray + "layer0.opacity": 1.0, + "dark_content": true + }, + // - Sidebar rows + { + "class": "tree_row", + "layer0.texture": "SourcePawn/assets/row-active.png", + "layer0.opacity": 0.0, + "layer0.inner_margin": [8, 3], + "layer1.opacity": 0.0, + "layer1.inner_margin": [8, 3] + }, + // - Sidebar row selected + { + "class": "tree_row", + "attributes": ["selected"], + "layer0.opacity": 1.0 + }, + // - Sidebar row dirty + { + "class": "tree_row", + "attributes": ["dirty"], + "layer0.texture": "SourcePawn/assets/row-inactive-modified.png", + "layer0.opacity": 1.0 + }, + // - Sidebar row selected dirty + { + "class": "tree_row", + "attributes": ["selected", "dirty"], + "layer0.texture": "SourcePawn/assets/row-active-modified.png", + "layer0.opacity": 1.0 + }, + // - Sidebar heading + { + "class": "sidebar_heading", + "color": [2, 196, 251], + "font.bold": true, + "shadow_color": [0, 0, 0], + "shadow_offset": [0, 1] + }, + { + "class": "sidebar_heading", + "parents": [{"class": "tree_row", "attributes": ["selected"]}], + "color": [180, 180, 180] + }, + // - Sidebar entry label + { + "class": "sidebar_label", + "color": [200, 200, 200], + "shadow_color": [0, 0, 0], + "shadow_offset": [0, 1] + }, + { + "class": "sidebar_label", + "parents": [{"class": "tree_row", "attributes": ["expandable"]}], + "settings": ["bold_folder_labels"], + "font.bold": true + }, + { // Sidebar selected entry label + "class": "sidebar_label", + "parents": [{"class": "tree_row", "attributes": ["selected"]}], + "color": [240, 240, 240], + "shadow_color": [0, 0, 0], + "shadow_offset": [0, 1] + }, + { // Sidebar Hover entry label + "class": "sidebar_label", + "parents": [{"class": "tree_row", "attributes": ["hover"]}], + "color": [2, 196, 251], + "shadow_color": [0, 0, 0], + "shadow_offset": [0, 1] + }, + { // Sidebar Hover entry label + "class": "sidebar_label", + "parents": [{"class": "tree_row", "attributes": ["dirty"]}], + "color": [253, 113, 1], + "shadow_color": [0, 0, 0], + "shadow_offset": [0, 1] + }, + + // - Sidebar open files close/dirty + { + "class": "close_button", + "layer0.texture": "SourcePawn/assets/tab-button-close-hover.png", + "layer0.opacity": 0.5, + "layer0.inner_margin": 4, + "layer1.opacity": 0.0, + "layer1.texture": "SourcePawn/assets/tab-button-close.png", + "layer1.inner_margin": 4, + "content_margin": [8, 8] + }, + { + "class": "close_button", + "attributes": ["dirty"], + "layer0.texture": "SourcePawn/assets/tab-button-dirty.png", + "layer0.opacity": 0.5 + }, + { + "class": "close_button", + "attributes": ["hover"], + "layer0.texture": "SourcePawn/assets/tab-button-close-hover.png", + "layer1.opacity": 0.5, + "layer1.texture": "SourcePawn/assets/tab-button-close.png" + }, + { + "class": "close_button", + "attributes": ["hover", "dirty"], + "layer1.opacity": 0.5, + "layer1.texture": "SourcePawn/assets/tab-button-close-dirty.png" + }, + { + "class": "close_button", + "attributes": ["pressed"], + "layer1.opacity": 1.0, + "layer1.texture": "SourcePawn/assets/tab-button-close.png" + }, + { + "class": "close_button", + "attributes": ["pressed", "dirty"], + "layer1.opacity": 1.0, + "layer1.texture": "SourcePawn/assets/tab-button-close-dirty.png" + }, + + // - Sidebar FOLDERS closed + { + "class": "disclosure_button_control", + "content_margin": [9, 7, 8, 6], + "layer0.texture": "SourcePawn/assets/folder/group-closed.png", + "layer0.opacity": 1.0, + "layer0.inner_margin": 0 + }, + { + "class": "disclosure_button_control", + "parents": [{"class": "tree_row", "attributes": ["hover"]}], + "layer0.texture": "SourcePawn/assets/folder/group-closed-hover.png" + }, + { + "class": "disclosure_button_control", + "parents": [{"class": "tree_row", "attributes": ["selected"]}], + "layer0.texture": "SourcePawn/assets/folder/group-closed-selected.png" + }, + // - Sidebar Folders open + { + "class": "disclosure_button_control", + "attributes": ["expanded"], + "layer0.texture": "SourcePawn/assets/folder/group-open.png" + }, + { + "class": "disclosure_button_control", + "attributes": ["expanded"], + "parents": [{"class": "tree_row", "attributes": ["hover"]}], + "layer0.texture": "SourcePawn/assets/folder/group-open-hover.png" + }, + { + "class": "disclosure_button_control", + "attributes": ["expanded"], + "parents": [{"class": "tree_row", "attributes": ["selected"]}], + "layer0.texture": "SourcePawn/assets/folder/group-open-selected.png" + }, + +// STANDARD TEXT BUTTONS +// ========================================================= + // - Standard buttons (used for Find / Replace panel) + { + "class": "button_control", + "content_margin": [6, 5, 6, 6], + "min_size": [75, 0], + + // Default button state + "layer0.texture": "SourcePawn/assets/btn-large.png", + "layer0.opacity": 1.0, + "layer0.inner_margin": [6, 6], + + // Pressed button setup + "layer1.texture": "SourcePawn/assets/btn-large-active.png", + "layer1.opacity": 0.0, + "layer1.inner_margin": [6, 6] + }, + { + // Pressed button state + "class": "button_control", + "attributes": ["pressed"], + "layer1.opacity": 1.0, + "content_margin": [6, 6, 6, 6] + }, + +// TEXT INPUT FIELD +// ========================================================= + + // - Text input field item + { + "class": "text_line_control", + "layer0.texture": "SourcePawn/assets/text-field.png", + "layer0.opacity": 1.0, + "layer0.inner_margin": [10, 10, 10, 10], + "content_margin": [5, 5, 5, 5] + }, + +// PANEL BACKGROUNDS +// ========================================================= + // - Bottom panel background + { + "class": "panel_control", + "layer0.texture": "SourcePawn/assets/panel-bg.png", + "layer0.inner_margin": [4, 4, 4, 4], + "layer0.opacity": 1.0 + }, + + // - Quick panel background + { + "class": "overlay_control", + "layer0.texture": "SourcePawn/assets/overlay-bg.png", + "layer0.inner_margin": [10, 5, 10, 20], // left, top, right, bottom + "layer0.opacity": 1.0, + "layer1.opacity": 0, // HIDDEN + "content_margin": [11, 8, 11, 17] + }, + +// QUICK PANEL +// ========================================================= + { + "class": "quick_panel", + "row_padding": [4, 3], + "layer0.tint": [45, 45, 45], + "layer0.opacity": 1, + "dark_content": true + }, + { + "class": "quick_panel_row", + "layer0.texture": "SourcePawn/assets/qp-row.png", + "layer0.opacity": 1.0, + "layer0.inner_margin": [4, 4, 4, 4], + "layer1.draw_center": true + }, + { + "class": "quick_panel_row", + "attributes": ["selected"], + "layer0.texture": "SourcePawn/assets/qp-row-selected.png" + }, + { + "class": "quick_panel_label", + "fg": [190, 190, 190, 255], + "match_fg": [166, 229, 255, 255], + "bg": [71, 71, 71, 255], + "selected_fg": [220, 220, 220, 255], + "selected_match_fg": [2, 196, 251, 255], + "selected_bg": [134, 134, 134, 255] + }, + { + "class": "quick_panel_path_label", + "fg": [100, 100, 100, 255], + "match_fg": [166, 229, 255, 255], + "bg": [41, 41, 41, 255], + "selected_fg": [120, 120, 120, 255], + "selected_match_fg": [2, 196, 251, 255], + "selected_bg": [24, 24, 24, 255] + }, + { + "class": "quick_panel_score_label", + "fg": [90, 90, 90, 255], + "bg": [41, 41, 41, 255], + "selected_fg": [114, 114, 114, 255], + "selected_bg": [24, 24, 24, 255] + }, + +// MINI QUICK PANEL +// ========================================================= + { + "class": "mini_quick_panel_row", + "layer0.texture": "SourcePawn/assets/qp-row.png", + "layer0.inner_margin": [4, 4, 4, 4], + "layer0.opacity": 1.0 + }, + { + "class": "mini_quick_panel_row", + "attributes": ["selected"], + "layer0.texture": "SourcePawn/assets/qp-row-selected.png" + }, + +// CODE COMPLETION DROPDOWN +// ========================================================= + { + "class": "popup_control", + "content_margin": [0, 0] + }, + { + "class": "auto_complete", + "row_padding": [2, 2], + "layer0.tint": [30, 30, 30], + "layer0.opacity": 1.0, + "dark_content": true + }, + { + "class": "auto_complete_label", + "fg": [140, 140, 140], + "match_fg": [255, 255, 255], + "bg": [26, 26, 26], + "selected_fg": [255, 255, 255], + "selected_match_fg": [255, 255, 255], + "selected_bg": [86, 86, 86] + }, + { + "class": "table_row", + "layer0.tint": [45, 45, 45], + "layer0.opacity": 0.0, + "layer0.inner_margin": [1, 1] + }, + { + "class": "table_row", + "attributes": ["selected"], + "layer0.opacity": 1.0 + }, + +// BOTTOM PANEL BUTTONS +// ========================================================== + { + "class": "icon_button_control", + "content_margin": [4, 4] + }, + { + "class": "icon_button_control", + "attributes": ["pressed"] + }, + // - Regex search button + { + "class": "icon_regex", + "layer0.texture": "SourcePawn/assets/icons/regex-off.png", + "layer0.opacity": 1.0, + "content_margin": [9, 10] + }, + { + "class": "icon_regex", + "parents": [{"class": "icon_button_control", "attributes": ["selected"]}], + "layer0.texture": "SourcePawn/assets/icons/regex-on.png" + }, + // - Case sensitive search button + { + "class": "icon_case", + "layer0.texture": "SourcePawn/assets/icons/case-off.png", + "layer0.opacity": 1.0, + "content_margin": [9, 10] + }, + { + "class": "icon_case", + "parents": [{"class": "icon_button_control", "attributes": ["selected"]}], + "layer0.texture": "SourcePawn/assets/icons/case-on.png" + }, + // - Match whole word search button + { + "class": "icon_whole_word", + "layer0.texture": "SourcePawn/assets/icons/whole-word-off.png", + "layer0.opacity": 1.0, + "content_margin": [9, 10] + }, + { + "class": "icon_whole_word", + "parents": [{"class": "icon_button_control", "attributes": ["selected"]}], + "layer0.texture": "SourcePawn/assets/icons/whole-word-on.png" + }, + // - Reverse search direction button + { + "class": "icon_reverse", + "layer0.texture": "SourcePawn/assets/icons/reverse-off.png", + "layer0.opacity": 1.0, + "content_margin": [9, 10] + }, + { + "class": "icon_reverse", + "parents": [{"class": "icon_button_control", "attributes": ["selected"]}], + "layer0.texture": "SourcePawn/assets/icons/reverse-on.png" + }, + // - Search wrap button + { + "class": "icon_wrap", + "layer0.texture": "SourcePawn/assets/icons/wrap-off.png", + "layer0.opacity": 1.0, + "content_margin": [9, 10] + }, + { + "class": "icon_wrap", + "parents": [{"class": "icon_button_control", "attributes": ["selected"]}], + "layer0.texture": "SourcePawn/assets/icons/wrap-on.png" + }, + // - Search in selection button + { + "class": "icon_in_selection", + "layer0.texture": "SourcePawn/assets/icons/selection-off.png", + "layer0.opacity": 1.0, + "content_margin": [9, 10] + }, + { + "class": "icon_in_selection", + "parents": [{"class": "icon_button_control", "attributes": ["selected"]}], + "layer0.texture": "SourcePawn/assets/icons/selection-on.png" + }, + // - Preserve case button + { + "class": "icon_preserve_case", + "layer0.texture": "SourcePawn/assets/icons/preserve-case-off.png", + "layer0.opacity": 1.0, + "content_margin": [9, 10] + }, + { + "class": "icon_preserve_case", + "parents": [{"class": "icon_button_control", "attributes": ["selected"]}], + "layer0.texture": "SourcePawn/assets/icons/preserve-case-on.png" + }, + // - Highlight results button + { + "class": "icon_highlight", + "layer0.texture": "SourcePawn/assets/icons/highlight-off.png", + "layer0.opacity": 1.0, + "content_margin": [9, 10] + }, + { + "class": "icon_highlight", + "parents": [{"class": "icon_button_control", "attributes": ["selected"]}], + "layer0.texture": "SourcePawn/assets/icons/highlight-on.png" + }, + + // BOTTOM PANEL ICONS (EXTENDED: FIND IN FILES) + // ========================================================= + + // - Show search context button + { + "class": "icon_context", + "layer0.texture": "SourcePawn/assets/icons/context-off.png", + "layer0.opacity": 1.0, + "content_margin": [9, 10] + }, + { + "class": "icon_context", + "parents": [{"class": "icon_button_control", "attributes": ["selected"]}], + "layer0.texture": "SourcePawn/assets/icons/context-on.png" + }, + // - Use search buffer + { + "class": "icon_use_buffer", + "layer0.texture": "SourcePawn/assets/icons/buffer-off.png", + "layer0.opacity": 1.0, + "content_margin": [9, 10] + }, + { + "class": "icon_use_buffer", + "parents": [{"class": "icon_button_control", "attributes": ["selected"]}], + "layer0.texture": "SourcePawn/assets/icons/buffer-on.png" + } + +] diff --git a/samples/Sublime Text Config/jade.sublime-completions b/samples/Sublime Text Config/jade.sublime-completions new file mode 100644 index 00000000..cd3894b7 --- /dev/null +++ b/samples/Sublime Text Config/jade.sublime-completions @@ -0,0 +1,136 @@ +{ + "scope": "entity.name.tag.jade", + "completions": + [ + "a",// Defines a hyperlink + "abbr",// Defines an abbreviation + "acronym",// Not supported in HTML5. Use instead. + //Defines an acronym + "address",// Defines contact information for the author/owner of a document + "applet",// Not supported in HTML5. Use instead. + //Defines an embedded applet + "area",// Defines an area inside an image-map + "article",// Defines an article + "aside",// Defines content aside from the page content + "audio",// Defines sound content + "b",// Defines bold text + "base",// Specifies the base URL/target for all relative URLs in a document + "basefont",// Not supported in HTML5. Use CSS instead. + //Specifies a default color, size, and font for all text in a document + "bdi",// Isolates a part of text that might be formatted in a different direction from other text outside it + "bdo",// Overrides the current text direction + "big",// Not supported in HTML5. Use CSS instead. + //Defines big text + "blockquote",// Defines a section that is quoted from another source + "body",// Defines the document's body + "br",// Defines a single line break + "button",// Defines a clickable button + "canvas",// Used to draw graphics, on the fly, via scripting (usually JavaScript) + "caption",// Defines a table caption + "center",// Not supported in HTML5. Use CSS instead. + //Defines centered text + "cite",// Defines the title of a work + "code",// Defines a piece of computer code + "col",// Specifies column properties for each column within a element + "colgroup",// Specifies a group of one or more columns in a table for formatting + "command",// Defines a command button that a user can invoke + "datalist",// Specifies a list of pre-defined options for input controls + "dd",// Defines a description/value of a term in a description list + "del",// Defines text that has been deleted from a document + "details",// Defines additional details that the user can view or hide + "dfn",// Defines a definition term + "dialog",// Defines a dialog box or window + "dir",// Not supported in HTML5. Use
    instead. + //Defines a directory list + "div",// Defines a section in a document + "dl",// Defines a description list + "dt",// Defines a term/name in a description list + "em",// Defines emphasized text + "embed",// Defines a container for an external (non-HTML) application + "fieldset",// Groups related elements in a form + "figcaption",// Defines a caption for a
    element + "figure",// Specifies self-contained content + "font",// Not supported in HTML5. Use CSS instead. + //Defines font, color, and size for text + "footer",// Defines a footer for a document or section + "form",// Defines an HTML form for user input + "frame",// Not supported in HTML5. + //Defines a window (a frame) in a frameset + "frameset",// Not supported in HTML5. + //Defines a set of frames + "h1",// to
    Defines HTML headings + "head",// Defines information about the document + "header",// Defines a header for a document or section + "hgroup",// Groups heading elements + "hr",// Defines a thematic change in the content + "html",// Defines the root of an HTML document + "i",// Defines a part of text in an alternate voice or mood + "iframe",// Defines an inline frame + "img",// Defines an image + "input",// Defines an input control + "ins",// Defines a text that has been inserted into a document + "kbd",// Defines keyboard input + "keygen",// Defines a key-pair generator field (for forms) + "label",// Defines a label for an element + "legend",// Defines a caption for a
    element + "li",// Defines a list item + "link",// Defines the relationship between a document and an external resource (most used to link to style sheets) + "main",// Specifies the main content of a document + "map",// Defines a client-side image-map + "mark",// Defines marked/highlighted text + "menu",// Defines a list/menu of commands + "meta",// Defines metadata about an HTML document + "meter",// Defines a scalar measurement within a known range (a gauge) + "nav",// Defines navigation links + "noframes",// Not supported in HTML5. + //Defines an alternate content for users that do not support frames + "noscript",// Defines an alternate content for users that do not support client-side scripts + "object",// Defines an embedded object + "ol",// Defines an ordered list + "optgroup",// Defines a group of related options in a drop-down list + "option",// Defines an option in a drop-down list + "output",// Defines the result of a calculation + "p",// Defines a paragraph + "param",// Defines a parameter for an object + "pre",// Defines preformatted text + "progress",// Represents the progress of a task + "q",// Defines a short quotation + "rp",// Defines what to show in browsers that do not support ruby annotations + "rt",// Defines an explanation/pronunciation of characters (for East Asian typography) + "ruby",// Defines a ruby annotation (for East Asian typography) + "s",// Defines text that is no longer correct + "samp",// Defines sample output from a computer program + "script",// Defines a client-side script + "section",// Defines a section in a document + "select",// Defines a drop-down list + "small",// Defines smaller text + "source",// Defines multiple media resources for media elements (