Merge branch 'master' into 3233-local

This commit is contained in:
Arfon Smith
2016-10-25 20:00:48 -04:00
34 changed files with 2650 additions and 49 deletions

6
.gitmodules vendored
View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -15,6 +15,9 @@
# Dependencies
- ^[Dd]ependencies/
# Distributions
- (^|/)dist/
# C deps
# https://github.com/joyent/node
- ^deps/

72
samples/CSON/base.cson Normal file
View File

@@ -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!'

59
samples/CSON/config.cson Normal file
View File

@@ -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"]
]

108
samples/CSON/ff-sfd.cson Normal file
View File

@@ -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"

View File

@@ -0,0 +1,11 @@
'menu': [
{
'label': 'Packages'
'submenu': [
'label': 'Wercker Status'
'submenu': [
{ 'label': 'Check now!', 'command': 'wercker-status:checknow' }
]
]
}
]

60
samples/Julia/julia Normal file
View File

@@ -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)

View File

@@ -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

25
samples/Pic/graph.pic Normal file
View File

@@ -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

15
samples/Pic/ritalin.chem Normal file
View File

@@ -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

View File

@@ -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"
}
}
}

View File

@@ -0,0 +1,8 @@
{
"extensions":
[
"clp"
],
"tab_size": 8,
"translate_tabs_to_spaces": false
}

View File

@@ -0,0 +1,13 @@
[
{
"id" : "nasm",
"caption": "NASM Assembly",
"children":
[
{
"caption" : "Documentation",
"command" : "assembly_doc"
}
]
}
]

View File

@@ -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" }
]

View File

@@ -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
}
]
}
]
}

View File

@@ -0,0 +1,7 @@
[
{
"button": "button1", "count": 1, "modifiers": ["alt"],
"press_command": "drag_select",
"command": "robot_go_to_keyword"
}
]

View File

@@ -0,0 +1,6 @@
[
// Disable auto-pair for single quote
{ "keys": ["'"], "command": "insert_snippet", "args": {"contents": "'"}, "context":
[{ "key": "selector", "operator": "equal", "operand": "source.rust" }]
}
]

View File

@@ -0,0 +1,6 @@
[
{"command": "move_to", "args": {"to": "hardeol"}},
{"command": "insert", "args": {"characters": "\n"}},
{"command": "insert", "args": {"characters": "*"}},
{"command": "insert", "args": {"characters": " "}}
]

View File

@@ -0,0 +1,5 @@
[
{
"command": "haxe_run_build"
}
]

View File

@@ -0,0 +1,19 @@
{
// For default sourcemod scripting directory :
"cmd": ["<spcomp_path>", "-o$file_path/../plugins/$file_name", "$file"],
// For custom sourcemod scripting directory :
"cmd": ["<spcomp_path>", "-i<include_path>", "-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"
}

View File

@@ -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"
}
]

View File

@@ -0,0 +1,136 @@
{
"scope": "entity.name.tag.jade",
"completions":
[
"a",// Defines a hyperlink
"abbr",// Defines an abbreviation
"acronym",// Not supported in HTML5. Use <abbr> instead.
//Defines an acronym
"address",// Defines contact information for the author/owner of a document
"applet",// Not supported in HTML5. Use <object> 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 <colgroup> 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 <ul> 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 <figure> 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 <h6> 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 <input> element
"legend",// Defines a caption for a <fieldset> 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 (<video> and <audio>)
"span",// Defines a section in a document
"strike",// Not supported in HTML5. Use <del> instead.
//Defines strikethrough text
"strong",// Defines important text
"style",// Defines style information for a document
"sub",// Defines subscripted text
"summary",// Defines a visible heading for a <details> element
"sup",// Defines superscripted text
"table",// Defines a table
"tbody",// Groups the body content in a table
"td",// Defines a cell in a table
"textarea",// Defines a multiline input control (text area)
"tfoot",// Groups the footer content in a table
"th",// Defines a header cell in a table
"thead",// Groups the header content in a table
"time",// Defines a date/time
"title",// Defines a title for the document
"tr",// Defines a row in a table
"track",// Defines text tracks for media elements (<video> and <audio>)
"tt",// Not supported in HTML5. Use CSS instead.
//Defines teletype text
"u",// Defines text that should be stylistically different from normal text
"ul",// Defines an unordered list
"var",// Defines a variable
"video",// Defines a video or movie
"wbr"
]
}

View File

@@ -0,0 +1,63 @@
.AlphaCS
#ExprOff
If getKey(41)
sub(ADM)
End
Lbl START
"appv alpha "->Str1
"appvAlphaCS"->Str2
.ALPHA CS
[7EFFFFE7FFFFE7E7]->Pic11
[E0E0E0E0E0FFFF7F]->Pic12
[FEFFE7FFFEE0E0E0]->Pic13
[E7E7E7FFFFE7E7E7]->Pic14
[7EFFFFE7FFFFE7E7]->Pic15
[7FFFFFE0E0FFFF7F]->Pic16
[7FFFFF781EFFFFFE]->Pic17
.arch
[0038447C44440000]->Pic21
.hide
[0054004400540000]->Pic22
.lock
[0038447C7C7C0000]->Pic23
.(c) Scott Mangiapane
Data(72,8)->GDB0
[42600A360008000100994DDF2A6C61B1B28091294A22AAAAAAAB005A6DCA226A69B9A9800000000000202000000000000000C0200000000000000000000000000000000000000000]
.icon unknown
Data(16,16)->GDB11
[EFFEA803EB8308032BFB28032BFB0803EBFBA803EBFB08032B8328032FFF07FF]
.icon SRC
Data(16,16)->GDB12
[01801A583E7C3FFC3FFC3E7C1A580A500240FFFFC471BDAFCC6FF5AF8DB1FFFF]
.icon ASM
Data(16,16)->GDB13
[FFFFFFFFFFFFFFFFFFFFCE6BB5D586D5B75DB4DDFFFFFFFFFFFFFFFFFFFFFFFF]
.icon shell
Data(16,16)->GDB14
[FFFFFFFFFFFFFFFFFFFFFFFF97B5B155D5359595FFFFFFFFFFFFFFFFFFFFFFFF]
Goto SET
prgmSRCFUNC
prgmSRCGUI
prgmSRCSORT
Lbl SET
.start, set up
ClrDraw
StoreGDB
DiagnosticOff
Fix 5
Full
!If GetCalc(Str1,[Y1])
sub(NEW)
StoreGDB
End
GetCalc(Str1,[Y1])
If {[Y1]+0}
!If sub(CODE)
Goto END
End
End
Asm(FDCB249E)
If {[Y1]+6}
Asm(FDCB24DE)
End
Goto DLIST

View File

@@ -0,0 +1,194 @@
.FUNC AlphaCS
Lbl ADM
DiagnosticOff
Fix 5
Full
StoreGDB
sub(D2,13,17,70,29,"Admin Access")
sub(D1,15,27)
Text(15,37,"Admin Code: - - - -")
DispGraph
Repeat getKey->A
End
Text(55,37,"*")
DispGraph
Repeat getKey->B
End
Text(62,37,"*")
DispGraph
Repeat getKey->C
End
Text(69,37,"*")
DispGraph
Repeat getKey->D
End
Text(76,37,"*")
DispGraph
Normal
Pause 100
Full
If (A!=20) or (B!=35) or (C!=18) or (D!=27)
Goto END
End
sub(D2,13,17,70,29,"Author Info")
sub(D1,15,27)
Bitmap(15,38,GDB0)
DispGraph
Repeat (getKey) and (getKey(9))
End
DelVar "appv alpha "
Return
Lbl D1
.draws title
Pt-On([r1]+1,[r2]+1,Pic11)
Pt-On([r1]+10,[r2]+1,Pic12)
Pt-On([r1]+19,[r2]+1,Pic13)
Pt-On([r1]+28,[r2]+1,Pic14)
Pt-On([r1]+37,[r2]+1,Pic15)
Pt-On([r1]+48,[r2]+1,Pic16)
Pt-On([r1]+57,[r2]+1,Pic17)
RectI([r1],[r2],66,10)
Pxl-Off([r1],[r2])
RectI([r1]+14,[r2],4,5)
RectI([r1]+23,[r2]+7,4,3)
RectI([r1]+46,[r2]+1,1,8)
RectI([r1]+45,[r2],3,1)
RectI([r1]+46,[r2]+9,2,1)
Pxl-Off([r1]+65,[r2]+9)
Return
Lbl D2
.windows
Rect([r1]+1,[r2],[r3]-2,[r4])
Rect([r1],[r2]+1,[r3],[r4]-2)
RectI([r1]+1,[r2]+1,[r3]-2,[r4]-2)
Text([r1]+2,[r2]+2,[r5])
RectI([r1]+1,[r2]+1,[r3]-2,8)
Pt-Off([r1]+[r3]-9,[r2]+1,[C1BEAAB6AABEC1FF])
Pxl-On([r1]+1,[r2]+[r4]-2)
Pxl-On([r1]+[r3]-2,[r2]+[r4]-2)
Return
Lbl D3
.archiving box
sub(D2,15,22,66,20,"Archiving...")
Text(17,31,"Please wait...")
Return
Lbl CODE
sub(D2,15,22,66,20,"Access Denied")
Text(29,32," - - - - ")
DispGraph
1->[r2]
Repeat getKey->[r1]
End
Text(29,32,"*")
DispGraph
If [r1]!=({[Y1]+1})
0->[r2]
End
Repeat getKey->[r1]
End
Text(39,32,"*")
DispGraph
If [r1]!=({[Y1]+2})
0->[r2]
End
Repeat getKey->[r1]
End
Text(49,32,"*")
DispGraph
If [r1]!=({[Y1]+3})
0->[r2]
End
Repeat getKey->[r1]
End
Text(59,32,"*")
DispGraph
If [r1]!=({[Y1]+4})
0->[r2]
End
Normal
Pause 200
Full
Return[r2]
Lbl NEW
ClrDraw
sub(D1,0,0)
RectI(0,11,96,1)
Text(1,12,"Installation")
Text(1,20,"Enter your new keycode:")
Text(1,26," - - - - ")
DispGraph
GetCalc(Str1,16)->[r1]
Fill([r1],16,1)
0->{[r1]}
Repeat getKey->[r2]
End
[r2]->{[r1]+1}
Text(1,26,"*")
DispGraph
Repeat getKey->[r2]
End
[r2]->{[r1]+2}
Text(7,26,"*")
DispGraph
Repeat getKey->[r2]
End
[r2]->{[r1]+3}
Text(13,26,"*")
DispGraph
Repeat getKey->[r2]
End
[r2]->{[r1]+4}
Text(19,26,"*")
DispGraph
Fill(L1,50,0)
Text(1,34,"Confirm keycode:")
Text(1,40," - - - - ")
DispGraph
Repeat getKey->[r2]
End
[r2]->{L1+1}
Text(1,40,"*")
DispGraph
Repeat getKey->[r2]
End
[r2]->{L1+2}
Text(7,40,"*")
DispGraph
Repeat getKey->[r2]
End
[r2]->{L1+3}
Text(13,40,"*")
DispGraph
Repeat getKey->[r2]
End
[r2]->{L1+4}
Text(19,40,"*")
DispGraph
If ({[r1]+1}={L1+1}) and ({[r1]+2}={L1+2}) and ({[r1]+3}={L1+3}) and ({[r1]+4}={L1+4})
sub(D3)
DispGraph
GetCalc(Str2,10)
Archive Str1
GetCalc(Str1,[Y1])
ClrDraw
Return
Else
Text(1,48,"ERROR keycodes do not")
Text(1,54,"match.")
DispGraph
UnArchive Str1
DelVar Str1
Repeat getKey
End
Goto END
End
Return
Lbl END
Asm(FDCB249E)
If {[Y1]+6}
Asm(FDCB24DE)
End
ClrDraw
ClrDraw^^r
ClrHome
Return^^r

View File

@@ -0,0 +1,563 @@
.GUI AlphaCS
#Axiom(RUNPRGM)
#Axiom(ZSTAXE)
Lbl DLIST
ClrDraw
ClrDraw^^r
sub(D1,0,0)
RectI(0,11,96,1)
!If sub(POLAR,1)
RectI(0,63,96,1)
Text(1,13,"No programs found.")
DispGraph
Goto KLIST2
Else
Fill(L5,50,0)
Copy(L1,L5,20)
13->B->G
0->I
1->H
Text(1,13,L2)
If D
Pt-On(77,13,Pic21)
End
If E
Pt-On(83,13,Pic22)
End
If F
Pt-On(89,13,Pic23)
End
For(S,1,6)
If sub(ADJ,1)
S*7+13->G
Text(1,S*7+13,L2)
If D
Pt-On(77,S*7+13,Pic21)
End
If E
Pt-On(83,S*7+13,Pic22)
End
If F
Pt-On(89,S*7+13,Pic23)
End
End
End
End
Fill(L4,50,0)
Copy(L1,L4,20)
Lbl KLIST1
Rect(90,0,6,10)
RectI(90,0,6,10)
0->S->T
sub(POLAR,1)
If Equ>String(L1,L5)
S++
End
sub(POLAR,0)
If Equ>String(L1,L4)
T++
End
If (S) and (T)
Pt-On(90,6,[F870200000000000])
Pt-On(90,2,[2070F80000000000])
Else
If S
Pt-On(90,4,[2070F80000000000])
End
If T
Pt-On(90,4,[F870200000000000])
End
End
RectI(0,63,96,1)
RectI(0,B,96,7)
DispGraph
RectI(0,B,96,7)
RectI(0,63,96,1)
If getKey(15)
Goto DLIST
End
Repeat getKey
If getKey(41)
Repeat getKey(41)=0
End
Asm(3E01D303FB76)
Repeat getKey(41)=0
End
End
End
If getKey(48)
Goto DSET1
End
If (getKey(9)) or (getKey(54))
Fill(L1,50,0)
Copy(L5,L1,20)
If (B-13/7)=0
Fill(L1,50,0)
Copy(L5+1,L1,20)
sub(DATA)
Else
For(B-13/7)
sub(ADJ,1)
End
End
Goto DPRGM1
End
If getKey(4)
If (B!=13)
For(S,0,7)
RectI(0,63,96,1)
RectI(0,B-S,96,7)
DispGraph
RectI(0,B-S,96,7)
RectI(0,63,96,1)
End
B-7->B
Else
sub(POLAR,1)
If Equ>String(L1,L5)
Fill(L1,50,0)
Copy(L4,L1,20)
sub(ADJ,0)
Fill(L4,50,0)
Copy(L1,L4,20)
Fill(L1,50,0)
Copy(L5,L1,20)
sub(ADJ,0)
Fill(L5,50,0)
Copy(L1,L5,20)
Fill(L1,50,0)
Copy(L4,L1,20)
Rect(0,0,96,13)
RectI(0,0,96,13)
For(7)
Vertical+
End
Rect(0,62,96,2)
RectI(0,62,96,2)
Text(1,13,L2)
If D
Pt-On(77,13,Pic21)
End
If E
Pt-On(83,13,Pic22)
End
If F
Pt-On(89,13,Pic23)
End
Rect(0,0,96,13)
RectI(0,0,96,13)
sub(D1,0,0)
RectI(0,11,96,1)
End
End
End
If getKey(1)
If (B!=G)
For(S,0,7)
RectI(0,63,96,1)
RectI(0,B+S,96,7)
DispGraph
RectI(0,B+S,96,7)
RectI(0,63,96,1)
End
B+7->B
Else
sub(POLAR,0)
If Equ>String(L1,L4)
Fill(L1,50,0)
Copy(L5,L1,20)
sub(ADJ,1)
Fill(L5,50,0)
Copy(L1,L5,20)
Fill(L1,50,0)
Copy(L4,L1,20)
sub(ADJ,1)
Fill(L4,50,0)
Copy(L1,L4,20)
For(7)
Vertical-
End
Text(1,55,L2)
If D
Pt-On(77,55,Pic21)
End
If E
Pt-On(83,55,Pic22)
End
If F
Pt-On(89,55,Pic23)
End
Rect(0,0,96,13)
RectI(0,0,96,13)
sub(D1,0,0)
RectI(0,11,96,1)
End
End
End
If getKey(15)
Goto END
End
Goto KLIST1
Lbl KLIST2
If getKey(15)
Goto DLIST
End
Repeat getKey
If getKey(41)
Repeat getKey(41)=0
End
Asm(3E01D303FB76)
Repeat getKey(41)=0
End
End
End
If getKey(48)
Goto DSET1
End
If getKey(15)
Goto END
End
Goto KLIST2
Lbl DPRGM1
GetCalc("appv alpha ",[Y1])
13->B
D->X
E->Y
F->Z
Lbl DPRGM2
GetCalc(L1,[Y3])
0->H
If ({[Y3]+0}=187) and ({[Y3]+1}=109)
1->H
If {[Y3]+2}=201
2->H
End
If {[Y3]+3}=201
3->H
End
End
If {[Y3]+0}=58
4->H
End
ClrDraw
ClrDraw^^r
sub(D1,0,0)
RectI(0,11,96,1)
Text(1,49,L2)
RectI(0,48,96,16)
69->S
If Z
Pt-Change(S,56,Pic23)
S-6->S
End
If Y
Pt-Change(S,56,Pic22)
S-6->S
End
If X
Pt-Change(S,56,Pic21)
End
RectI(1,56,94,7)
Text(2,56,"size: ",{[Y3]-2}^^r>Dec)
Text(1,13,"Run (with zStart)")
If X
Text(1,20,"Unarchive PRGM")
Else
Text(1,20,"Archive PRGM")
End
If Y
Text(1,27,"Unhide PRGM")
Else
Text(1,27,"Hide PRGM")
End
If Z
Text(1,34,"Unlock PRGM")
Else
Text(1,34,"Lock PRGM")
End
Rect(76,44,20,20)
RectI(77,45,18,18)
If H=0
Bitmap(78,46,GDB11)
End
If H=1
Bitmap(78,46,GDB13)
End
If H=2
Bitmap(78,46,GDB14)
End
If H=3
Bitmap(78,46,GDB14)
End
If H=4
Bitmap(78,46,GDB12)
End
Lbl KPRGM
RectI(0,B,96,7)
DispGraph
RectI(0,B,96,7)
Repeat getKey
End
If (getKey(9)) or (getKey(54))
If B=13
sub(SETPRGM)
Goto RUN
Else
Fill(L2,20,0)
Copy(L1+1,L2,20)
Fill(L1,20,0)
Copy(L2,L1,20)
sub(DATA)
If B=20
If X
0->X
Else
1->X
End
Goto DPRGM2
End
If B=27
If Y
0->Y
Else
1->Y
End
Goto DPRGM2
End
If B=34
If Z
0->Z
Else
1->Z
End
Goto DPRGM2
End
End
End
If (getKey(4)) and (B!=13)
For(S,0,7)
RectI(0,B-S,96,7)
DispGraph
RectI(0,B-S,96,7)
Normal
Pause 3
Full
End
B-7->B
End
If ((getKey(1)) and (B!=34)
For(S,0,7)
RectI(0,B+S,96,7)
DispGraph
RectI(0,B+S,96,7)
Normal
Pause 3
Full
End
B+7->B
End
If getKey(15)
sub(SETPRGM)
Goto DLIST
End
Goto KPRGM
Lbl SETPRGM
If (X!=D) or (Y!=E) or (Z!=F)
If X
sub(D3)
DispGraph
End
UnArchive L1
X->D
If (E!=Y)
If Y
{C-7}-64->{C-7}
{L1+1}-64->{L1+1}
Else
{C-7}+64->{C-7}
{L1+1}+64->{L1+1}
End
Y->E
End
If (F!=Z)
If Z
6->{C}
|E06->{L1}
Else
5->{C}
|E05->{L1}
End
Z->F
End
If X
Archive L1
End
End
GetCalc(L1,[Y3])
Return
Lbl RUN
GetCalc("appv hold ",20)->S
Fill(S,20,0)
Copy(L1+1,S,10)
A->{S+15}
DiagnosticOn
Fix 4
Normal
If D
GetCalc("appvzRun",{[Y3]-2}^^r)->S
Copy([Y3],S,{[Y3]-2}^^r)
End
2-SampZInt(|LRUNERR)
If D
Fpdf("appvzRun")
Else
Fpdf(L1)
End
2-SampTInt
DelVar "appvzRun"
GetCalc("appv hold ")->S
Fill(L1,20,0)
Copy(S,L1,10)
{S+15}->A
sub(DATA)
DelVar "appv hold "
DiagnosticOff
Fix 5
Full
Repeat getKey=0
End
Goto DPRGM1
Lbl RUNERR
2-SampFTest ->S
DelVar "appvzRun"
DiagnosticOff
Fix 5
Full
sub(D2,10,22,76,20,"Error")
If S=8
Text(12,31,"Syntax")
Else
Text(12,31,"Error "[23]"",S>Dec)
End
DispGraph
Repeat (getKey) and (getKey(9))
End
GetCalc("appv hold ")->S
Fill(L1,20,0)
Copy(S,L1,10)
{S+15}->A
sub(DATA)
DelVar "appv hold "
DiagnosticOff
Fix 5
Full
Repeat getKey=0
End
Goto DPRGM1
Lbl DSET1
21->B
{[Y1]+5}->X
{[Y1]}->Y
{[Y1]+6}->Z
Lbl DSET2
ClrDraw
sub(D1,0,0)
RectI(0,11,96,1)
Text(1,12,"by ClrDraw, Nov 2013, v 1")
RectI(0,19,96,1)
RectI(0,63,96,1)
If X
Text(1,21,"Show Hidden On")
Else
Text(1,21,"Show Hidden Off")
End
If Y
Text(1,28,"Password On")
Else
Text(1,28,"Password Off")
End
If Z
Text(1,35,"Lowercase On")
Else
Text(1,35,"Lowercase Off")
End
Text(1,42,"Uninstall AlphaCS")
Lbl KSET
RectI(0,B,96,7)
DispGraph
RectI(0,B,96,7)
Repeat getKey
End
If (getKey(54)) or (getKey(9))
If B=21
If X
0->X
Else
1->X
End
Goto DSET2
End
If B=28
If Y
0->Y
Else
1->Y
End
Goto DSET2
End
If B=35
If Z
0->Z
Else
1->Z
End
Goto DSET2
End
If B=42
If sub(CODE)
DelVar Str1
Goto END
Else
Goto DSET2
End
End
End
If (getKey(4)) and (B!=21)
For(7)
RectI(0,B,96,7)
DispGraph
RectI(0,B,96,7)
B--
Normal
Pause 3
Full
End
End
If (getKey(1)) and (B!=42)
For(7)
RectI(0,B,96,7)
DispGraph
RectI(0,B,96,7)
B++
Normal
Pause 3
Full
End
End
If getKey(15)
If ({[Y1]+5}!=X) or ({[Y1]}!=Y) or ({[Y1]+6}!=Z)
UnArchive Str1
GetCalc(Str1)->S
X->{S+5}
Y->{S}
Z->{S+6}
sub(D3)
DispGraph
Archive Str1
GetCalc(Str1,[Y1])
End
Repeat getKey=0
End
Goto DLIST
End
Goto KSET

View File

@@ -0,0 +1,138 @@
.SORT AlphaCS
Lbl POLAR
Fill(L1,50,0)
{|E9830}^^r->[r2]
Repeat (({[r2]}=5) or ({[r2]}=6)) and (({[r2]-7}>48) or (({[Y1]+5}) and ({[r2]-7}<28)))
[r2]-{[r2]-6}-7->[r2]
If [r2]<={|E982E}^^r
Return0
End
End
For([r3],1,{[r2]-6})
{[r2]-6-[r3]}->{L1+[r3]-1}
End
[r2]-{[r2]-6}-7->[r2]
Repeat 0
If (({[r2]}=5) or ({[r2]}=6)) and (({[r2]-7}>48) or (({[Y1]+5}) and ({[r2]-7}<28)))
Fill(L2,50,0)
For([r3],1,{[r2]-6}
{[r2]-6-[r3]}->{L2+[r3]-1
End
0->[r3]
Repeat ({L1+[r3]}!={L2+[r3]}) or ([r3]=20)
[r3]++
End
If (({L1+[r3]}>{L2+[r3]}) and ([r1]=1)) or (({L1+[r3]}<{L2+[r3]}) and ([r1]=0))
Fill(L1,50,0)
Copy(L2,L1,20)
End
Else
If [r2]<{|E982E}^^r
sub(DATA)
Return1
End
End
[r2]-{[r2]-6}-7->[r2]
End
Lbl ADJ
Fill(L2,50,0)
Copy(L1+1,L2,20)
Fill(L1,50,0)
Copy(L2,L1)
Fill(L3,50,0)
Copy(L1,L3,20)
Fill(L1,50,0)
{|E9830}^^r->[r2]
sub(CHECK)
Repeat (({[r2]}=5) or ({[r2]}=6)) and ([r4]) and (({[r2]-7}>48) or ({[r2]-7}<28))
[r2]-{[r2]-6}-7->[r2]
If [r2]<{|E982E}^^r
Fill(L1,50,0)
Copy(L3,L1,20)
Fill(L3,50,0)
sub(DATA)
Return0
End
sub(CHECK)
End
For([r3],1,{[r2]-6})
{[r2]-6-[r3]}->{L1+[r3]-1}
End
[r2]-{[r2]-6}-7->[r2]
Repeat 0
sub(CHECK)
If (({[r2]}=5) or ({[r2]}=6)) and ([r4]) and (({[r2]-7}>48) or ({[r2]-7}<28))
Fill(L2,50,0)
For([r3],1,{[r2]-6}
{[r2]-6-[r3]}->{L2+[r3]-1
End
0->[r3]
Repeat ({L1+[r3]}!={L2+[r3]}) or ([r3]=20)
[r3]++
End
If (({L1+[r3]}>{L2+[r3]}) and ([r1]=1)) or (({L1+[r3]}<{L2+[r3]}) and ([r1]=0))
Fill(L1,50,0)
Copy(L2,L1,20)
End
Else
If [r2]<{|E982E}^^r
sub(DATA)
Return1
End
End
[r2]-{[r2]-6}-7->[r2]
End
Lbl CHECK
0->[r4]
Repeat ({[r2]-7-[r4]}!={L3+[r4]}) or (([r4]>={[r2]-6}) and ({L3+[r4]}=0))
[r4]++
End
If ((({[r2]-7-[r4]}<{L3+[r4]}) and ([r1]=1)) or (({[r2]-7-[r4]}>{L3+[r4]}) and ([r1]=0))) or (([r4]>={[r2]-6}) and ({L3+[r4]}=0))
0->[r4]
Else
1->[r4]
End
Return
Lbl DATA
{|E9830}^^r->C
Repeat 0
Repeat ({C}=5) or ({C}=6) and (({[r1]-7}>48) or ({[r1]-7}<28))
C-{C-6}-7->C
End
Fill(L2,50,0)
For([r1],1,{C-6})
{C-6-[r1]}->{L2+[r1]-1}
End
!If Equ>String(L1,L2)
If {C-5}=0
0->D
Else
1->D
End
If {C-7}<28
1->E
Else
0->E
End
If {C}=6
1->F
Else
0->F
End
Fill(L2,50,0)
Copy(L1,L2,20)
Fill(L1,50,0)
Copy(L2,L1+1,20)
If E
{L2}+64->{L2}
End
If F
|E06->{L1}
Else
|E05->{L1}
End
Return
End
C-{C-6}-7->C
End
Return

93
script/add-grammar Executable file
View File

@@ -0,0 +1,93 @@
#!/usr/bin/env ruby
require "optparse"
ROOT = File.expand_path("../../", __FILE__)
# Break a repository URL into its separate components
def parse_url(input)
hosts = "github\.com|bitbucket\.org|gitlab\.com"
# HTTPS/HTTP link pointing to recognised hosts
if input =~ /^(?:https?:\/\/)?(?:[^.@]+@)?(?:www\.)?(#{hosts})\/([^\/]+)\/([^\/]+)/i
{ host: $1.downcase(), user: $2, repo: $3.sub(/\.git$/, "") }
# SSH
elsif input =~ /^git@(#{hosts}):([^\/]+)\/([^\/]+)\.git$/i
{ host: $1.downcase(), user: $2, repo: $3 }
# provider:user/repo
elsif input =~ /^(github|bitbucket|gitlab):\/?([^\/]+)\/([^\/]+)\/?$/i
{ host: $1.downcase(), user: $2, repo: $3 }
# user/repo - Common GitHub shorthand
elsif input =~ /^\/?([^\/]+)\/([^\/]+)\/?$/
{ host: "github.com", user: $1, repo: $2 }
else
raise "Unsupported URL: #{input}"
end
end
# Isolate the vendor-name component of a submodule path
def parse_submodule(name)
name =~ /^(?:.*(?:vendor\/)?grammars\/)?([^\/]+)/i
path = "vendor/grammars/#{$1}"
unless File.exist?("#{ROOT}/" + path)
warn "Submodule '#{path}' does not exist. Aborting."
exit 1
end
path
end
# Print debugging feedback to STDOUT if running with --verbose
def log(msg)
puts msg if $verbose
end
usage = """Usage:
#{$0} [-v|--verbose] [--replace grammar] url
Examples:
#{$0} https://github.com/Alhadis/language-roff
#{$0} --replace sublime-apl https://github.com/Alhadis/language-apl
"""
$replace = nil
$verbose = false
OptionParser.new do |opts|
opts.banner = usage
opts.on("-v", "--verbose", "Print verbose feedback to STDOUT") do
$verbose = true
end
opts.on("-rSUBMODULE", "--replace=SUBMODDULE", "Replace an existing grammar submodule.") do |name|
$replace = name
end
end.parse!
$url = ARGV[0]
# No URL? Print a usage message and bail.
unless $url
warn usage
exit 1;
end
# Ensure the given URL is an HTTPS link
parts = parse_url $url
https = "https://#{parts[:host]}/#{parts[:user]}/#{parts[:repo]}"
repo_new = "vendor/grammars/#{parts[:repo]}"
repo_old = parse_submodule($replace) if $replace
if repo_old
log "Deregistering: #{repo_old}"
`git submodule deinit #{repo_old}`
`git rm -rf #{repo_old}`
end
log "Registering new submodule: #{repo_new}"
`git submodule add -f #{https} #{repo_new}`
exit 1 if $?.exitstatus > 0
`script/convert-grammars --add #{repo_new}`
log "Confirming license"
`script/licensed --module "#{repo_new}"`

View File

@@ -4,6 +4,7 @@
require "bundler/setup"
require "licensed/cli"
require "optparse"
module Licensed
module Source
@@ -32,7 +33,14 @@ module Licensed
end
end
source = Licensed::Source::Filesystem.new("vendor/grammars/*/", type: "grammar")
module_path = nil
OptionParser.new do |opts|
opts.on("-mPATH", "--module=PATH", "Cache license file for specific grammar") do |p|
module_path = p
end
end.parse!
source = Licensed::Source::Filesystem.new(module_path || "vendor/grammars/*/", type: "grammar")
config = Licensed::Configuration.new
config.sources << source
@@ -43,4 +51,5 @@ else
end
command.run
`git checkout -- vendor/licenses/grammar/` if module_path
exit command.success?

View File

@@ -29,7 +29,6 @@ class TestGrammars < Minitest::Test
"9f0c0b0926a18f5038e455e8df60221125fc3111", # elixir-tmbundle
"90af581219debd4e90ef041b46c294e8b4ae6d14", # mako-tmbundle
"b9b24778619dce325b651f0d77cbc72e7ae0b0a3", # Julia.tmbundle
"2d4f8807be850efd925751a8e1839cfc539985b0", # actionscript3-tmbundle
"e06722add999e7428048abcc067cd85f1f7ca71c", # r.tmbundle
"50b14a0e3f03d7ca754dac42ffb33302b5882b78", # smalltalk-tmbundle
"eafbc4a2f283752858e6908907f3c0c90188785b", # gap-tmbundle

View File

@@ -497,7 +497,8 @@ class TestLanguage < Minitest::Test
def test_no_unused_colours
Language.all.each do |language|
next unless language.type == :data || language.type == :prose
next unless language.type == :data || language.type == :prose ||
language.group.to_s != language.name
assert !language.color, "Unused colour assigned to #{language.name}"
end
end