View difference between Paste ID: iYLZvzDq and PCzqCi2m
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
    }