SHOW:
|
|
- or go back to the newest paste.
1 | scope_to_color_name: { | |
2 | singleQuotedString: string, | |
3 | doubleQuotedString: string, | |
4 | default: foreground, | |
5 | class: foreground | |
6 | } | |
7 | scope_definition_rules: | |
8 | - {type: EndOfLineRule, scope: singleLineComment, start: //} | |
9 | - {type: MultiLineRule, scope: multiLineComment, start: /*, end: '*/', escapeCharacter: '\0'} | |
10 | - {type: SingleLineRule, scope: singleQuotedString, sequence: '''', escapeCharacter: \, escapeContinuesLine: true} | |
11 | - {type: SingleLineRule, scope: doubleQuotedString, sequence: '"', escapeCharacter: \, escapeContinuesLine: true} | |
12 | scope: | |
13 | default: | |
14 | keyword: [abstract, break, byte, case, catch, char, class, const, continue, default, | |
15 | delete, do, double, else, export, extends, 'false', final, finally, float, for, from, function, | |
16 | goto, if, implements, import, in, instanceof, int, interface, let, long, native, | |
17 | 'null', package, private, protected, public, reset, return, short, static, super, | |
18 | switch, synchronized, this, throw, transient, 'true', try, var, void, while, | |
19 | with] | |
20 | bracket: [(, '{', '[', ']', '}', )] | |
21 | operator: ['!', $, '%', '&', '*', +, '-', //, /, ':', <, '=', '>', '?', ^, '|', | |
22 | '~', is, new, sizeof, typeof, unchecked, ',', ;] | |
23 | ||
24 | sub_rules: [ | |
25 | {type: CompositeRule, sub_rules: [ | |
26 | { type: SequenceRule, scope: keyword, sequence: 'class'}, #Define that 'class' is a keyword | |
27 | { type: OneOrMoreSpacesRule, scope: default}, | |
28 | { type: AnyWordRule, scope: class }] #And any name after 'class' is the class we matched (we'll put it in the outline defining [default, class]). | |
29 | }, | |
30 | ||
31 | # Match function name 1: function a | |
32 | {type: CompositeRule, sub_rules: [ | |
33 | { type: SequenceRule, scope: keyword, sequence: 'function'}, | |
34 | { type: OneOrMoreSpacesRule, scope: default}, | |
35 | { type: AnyWordRule, scope: method }] | |
36 | }, | |
37 | ||
38 | # Match function name 2: x = function | |
39 | {type: CompositeRule, sub_rules: [ | |
40 | { type: AnyWordRule, scope: method }, | |
41 | { type: ZeroOrMoreSpacesRule, scope: default}, | |
42 | { type: SequenceRule, scope: operator, sequence: '='}, | |
43 | { type: ZeroOrMoreSpacesRule, scope: default}, | |
44 | { type: SequenceRule, scope: keyword, sequence: 'function'}] | |
45 | }, | |
46 | # Match function name 3: x = () => | |
47 | {type: CompositeRule, sub_rules: [ | |
48 | { type: AnyWordRule, scope: method }, | |
49 | { type: ZeroOrMoreSpacesRule, scope: default}, | |
50 | { type: SequenceRule, scope: operator, sequence: '='}, | |
51 | { type: ZeroOrMoreSpacesRule, scope: OFF_PARTITION}, | |
52 | { type: MultiLineRule, scope: OFF_PARTITION, start: '(', end: ')', escapeCharacter: \0}, | |
53 | { type: ZeroOrMoreSpacesRule, scope: OFF_PARTITION}, | |
54 | { type: SequenceRule, scope: OFF_PARTITION, sequence: '=>'} | |
55 | ] | |
56 | }, | |
57 | # Match function name 4 (inside a class): x() {} | |
58 | {type: CompositeRule, sub_rules: [ | |
59 | { type: AnyWordRule, scope: method, except: ['function'] }, | |
60 | { type: ZeroOrMoreSpacesRule, scope: OFF_PARTITION}, | |
61 | { type: MultiLineRule, scope: OFF_PARTITION, start: '(', end: ')', escapeCharacter: \0}, | |
62 | { type: ZeroOrMoreSpacesRule, scope: OFF_PARTITION}, | |
63 | { type: SequenceRule, scope: OFF_PARTITION, sequence: '{'}, | |
64 | ] | |
65 | }, | |
66 | ] | |
67 | ||
68 | file_extensions: [js] | |
69 | ||
70 | filename: [] | |
71 | ||
72 | ||
73 | name: Javascript | |
74 | ||
75 | outline: | |
76 | - {type: Scope, scope: [default, class], define: class} | |
77 | - {type: Scope, scope: [default, method], define: method} | |
78 | - {type: Regexp, scope: [singleLineComment], regexp: '//---.*', define: comment, group: 0} | |
79 | ||
80 | indent: { | |
81 | type: braces, #Braces are used for indenting in Javascript | |
82 | scope: default, #Only braces found in the default scope are considered | |
83 | outline_scopes: [class, method], #Scopes are created where the outline defines a method. | |
84 | } | |
85 | ||
86 | auto_edit: | |
87 | - {auto_close_scopes: [singleQuotedString, doubleQuotedString], scope: default} #To work, the scopes must be: SingleLineRule(sequence used for start/end) | |
88 | - {auto_close_parens: ['(', '[', '{'], scope: default} #Will close the parens if it's not properly balanced | |
89 | - {auto_skip_parens: [')', ']', '}'], scope: default} #Will skip the close parens if it's properly balanced | |
90 | ||
91 | comment: {type: singleLine, sequence: '//'} | |
92 | ||
93 | templates: | |
94 | - name: function | |
95 | description: "anonymous function" | |
96 | pattern: "function (${arguments}) {\n\t${cursor}\n}" | |
97 | ||
98 | - name: function | |
99 | description: "named function" | |
100 | pattern: "function ${func}(${arguments}) {\n\t${cursor}\n}" | |
101 | ||
102 | - name: for | |
103 | description: "for (high-performance)" | |
104 | pattern: |- | |
105 | for(var ${i}=0,${len}=${arr}.length; ${i}<${len}; ${i}++){ | |
106 | var ${obj} = ${arr}[${i}]; | |
107 | ${cursor} | |
108 | } | |
109 | ||
110 | - name: class | |
111 | description: "ES6 class" | |
112 | pattern: |- | |
113 | class ${name} { | |
114 | constructor() { | |
115 | ||
116 | } | |
117 | } |