corrade-nucleus-nucleons – Blame information for rev 20

Subversion Repositories:
Rev:
Rev Author Line No. Line
20 office 1 # Defines an editing mode for [Ace](http://ace.ajax.org).
2 #
3 # Open [test/ace.html](../test/ace.html) to test.
4  
5 require, exports, module <-! define \ace/mode/ls
6  
7 identifier = /(?![\d\s])[$\w\xAA-\uFFDC](?:(?!\s)[$\w\xAA-\uFFDC]|-[A-Za-z])*/$
8  
9 exports.Mode = class LiveScriptMode extends require(\ace/mode/text)Mode
10 ->
11 @$tokenizer =
12 new (require \ace/tokenizer)Tokenizer LiveScriptMode.Rules
13 if require \ace/mode/matching_brace_outdent
14 @$outdent = new that.MatchingBraceOutdent
15  
16 indenter = // (?
17 : [({[=:]
18 | [-~]>
19 | \b (?: e(?:lse|xport) | d(?:o|efault) | t(?:ry|hen) | finally |
20 import (?:\s* all)? | const | var |
21 let | new | catch (?:\s* #identifier)? )
22 ) \s* $ //
23  
24 getNextLineIndent: (state, line, tab) ->
25 indent = @$getIndent line
26 {tokens} = @$tokenizer.getLineTokens line, state
27 unless tokens.length and tokens[*-1]type is \comment
28 indent += tab if state is \start and indenter.test line
29 indent
30  
31 toggleCommentLines: (state, doc, startRow, endRow) ->
32 comment = /^(\s*)#/; range = new (require \ace/range)Range 0 0 0 0
33 for i from startRow to endRow
34 if out = comment.test line = doc.getLine i
35 then line.=replace comment, \$1
36 else line.=replace /^\s*/ \$&#
37 range.end.row = range.start.row = i
38 range.end.column = line.length + 1
39 doc.replace range, line
40 1 - out * 2
41  
42 checkOutdent: (state, line, input) -> @$outdent?checkOutdent line, input
43  
44 autoOutdent: (state, doc, row) -> @$outdent?autoOutdent doc, row
45  
46 ### Highlight Rules
47  
48 keywordend = /(?![$\w]|-[A-Za-z]|\s*:(?![:=]))/$
49 stringfill = token: \string, regex: '.+'
50  
51 LiveScriptMode.Rules =
52 start:
53 * token: \keyword
54 regex: //(?
55 :t(?:h(?:is|row|en)|ry|ypeof!?)
56 |c(?:on(?:tinue|st)|a(?:se|tch)|lass)
57 |i(?:n(?:stanceof)?|mp(?:ort(?:\s+all)?|lements)|[fs])
58 |d(?:e(?:fault|lete|bugger)|o)
59 |f(?:or(?:\s+own)?|inally|unction)
60 |s(?:uper|witch)
61 |e(?:lse|x(?:tends|port)|val)
62 |a(?:nd|rguments)
63 |n(?:ew|ot)
64 |un(?:less|til)
65 |w(?:hile|ith)
66 |o[fr]|return|break|let|var|loop
67 )//$ + keywordend
68  
69 * token: \constant.language
70 regex: '(?:true|false|yes|no|on|off|null|void|undefined)' + keywordend
71  
72 * token: \invalid.illegal
73 regex: '(?
74 :p(?:ackage|r(?:ivate|otected)|ublic)
75 |i(?:mplements|nterface)
76 |enum|static|yield
77 )' + keywordend
78  
79 * token: \language.support.class
80 regex: '(?
81 :R(?:e(?:gExp|ferenceError)|angeError)
82 |S(?:tring|yntaxError)
83 |E(?:rror|valError)
84 |Array|Boolean|Date|Function|Number|Object|TypeError|URIError
85 )' + keywordend
86  
87 * token: \language.support.function
88 regex: '(?
89 :is(?:NaN|Finite)
90 |parse(?:Int|Float)
91 |Math|JSON
92 |(?:en|de)codeURI(?:Component)?
93 )' + keywordend
94  
95 * token: \variable.language
96 regex: '(?:t(?:hat|il|o)|f(?:rom|allthrough)|it|by|e)' + keywordend
97  
98 * token: \identifier
99 regex: identifier + /\s*:(?![:=])/$
100  
101 * token: \variable
102 regex: identifier
103  
104 * token: \keyword.operator
105 regex: /(?:\.{3}|\s+\?)/$
106  
107 * token: \keyword.variable
108 regex: /(?:@+|::|\.\.)/$
109 next : \key
110  
111 * token: \keyword.operator
112 regex: /\.\s*/$
113 next : \key
114  
115 * token: \string
116 regex: /\\\S[^\s,;)}\]]*/$
117  
118 * token: \string.doc
119 regex: \'''
120 next : \qdoc
121  
122 * token: \string.doc
123 regex: \"""
124 next : \qqdoc
125  
126 * token: \string
127 regex: \'
128 next : \qstring
129  
130 * token: \string
131 regex: \"
132 next : \qqstring
133  
134 * token: \string
135 regex: \`
136 next : \js
137  
138 * token: \string
139 regex: '<\\['
140 next : \words
141  
142 * token: \string.regex
143 regex: \//
144 next : \heregex
145  
146 * token: \comment.doc
147 regex: '/\\*'
148 next : \comment
149  
150 * token: \comment
151 regex: '#.*'
152  
153 * token: \string.regex
154 regex: //
155 /(?: [^ [ / \n \\ ]*
156 (?: (?: \\.
157 | \[ [^\]\n\\]* (?:\\.[^\]\n\\]*)* \]
158 ) [^ [ / \n \\ ]*
159 )*
160 )/ [gimy$]{0,4}
161 //$
162 next : \key
163  
164 * token: \constant.numeric
165 regex: '(?:0x[\\da-fA-F][\\da-fA-F_]*
166 |(?:[2-9]|[12]\\d|3[0-6])r[\\da-zA-Z][\\da-zA-Z_]*
167 |(?:\\d[\\d_]*(?:\\.\\d[\\d_]*)?|\\.\\d[\\d_]*)
168 (?:e[+-]?\\d[\\d_]*)?[\\w$]*)'
169  
170 * token: \lparen
171 regex: '[({[]'
172  
173 * token: \rparen
174 regex: '[)}\\]]'
175 next : \key
176  
177 * token: \keyword.operator
178 regex: \\\S+
179  
180 * token: \text
181 regex: \\\s+
182  
183 heregex:
184 * token: \string.regex
185 regex: '.*?//[gimy$?]{0,4}'
186 next : \start
187 * token: \string.regex
188 regex: '\\s*#{'
189 * token: \comment.regex
190 regex: '\\s+(?:#.*)?'
191 * token: \string.regex
192 regex: '\\S+'
193  
194 key:
195 * token: \keyword.operator
196 regex: '[.?@!]+'
197 * token: \identifier
198 regex: identifier
199 next : \start
200 * token: \text
201 regex: '.'
202 next : \start
203  
204 comment:
205 * token: \comment.doc
206 regex: '.*?\\*/'
207 next : \start
208 * token: \comment.doc
209 regex: '.+'
210  
211 qdoc:
212 token: \string
213 regex: ".*?'''"
214 next : \key
215 stringfill
216  
217 qqdoc:
218 token: \string
219 regex: '.*?"""'
220 next : \key
221 stringfill
222  
223 qstring:
224 token: \string
225 regex: /[^\\']*(?:\\.[^\\']*)*'/$
226 next : \key
227 stringfill
228  
229 qqstring:
230 token: \string
231 regex: /[^\\"]*(?:\\.[^\\"]*)*"/$
232 next : \key
233 stringfill
234  
235 js:
236 token: \string
237 regex: /[^\\`]*(?:\\.[^\\`]*)*`/$
238 next : \key
239 stringfill
240  
241 words:
242 token: \string
243 regex: '.*?\\]>'
244 next : \key
245 stringfill