rubybuntu-gedit 11.09.19 → 11.09.29

Sign up to get free protection for your applications and to get access to all the features.
@@ -48,16 +48,15 @@ You should also use up-to-date {mime types}[https://github.com/janlelis/rubybunt
48
48
  * See `git log` for full details
49
49
  * Based on https://github.com/gmate/gmate/blob/master/lang-specs/ruby_on_rails.lang
50
50
 
51
- == TODO
52
- === ruby.lang - Advanced TODOs [or: build a "real" parser, not (easily) possible with gtksourceview]
51
+ == ruby.lang - Advanced TODOs [not (easily) possible with gtksourceview]
53
52
  * Improve heredocs (e.g. nested ones)
54
- * Different colorizations for "end"s (e.g. def/begin, class/module, while/until, if/case, block), needs to detect modifier statements correctly
53
+ * Different colorizations for "end"s (e.g. def/begin, class/module, while/until, if/case, block), needs to detect modifier statements correctly :/
55
54
  * Detect (multi-line) yard doc tag values
56
55
  * Add escapable char for generic string delimiters
57
56
  * Advanced regex highlighting + multi-line regexes
58
57
  * ruby.lang-extras/known-bugs.rb
59
58
 
60
- === Languages to add/import/update
59
+ == Languages to add/import/update
61
60
  * SASS / SCSS / CSS
62
61
  * COFFEE
63
62
  * HAML
@@ -67,7 +66,7 @@ You should also use up-to-date {mime types}[https://github.com/janlelis/rubybunt
67
66
 
68
67
  Meanwhile, you can, for example, use the ones found in gmate[https://github.com/gmate/gmate/tree/master/lang-specs]
69
68
 
70
- === MAYBE
69
+ == MAYBE
71
70
  * RDOC markup support (and cross-referencing in ruby)
72
71
 
73
72
  == J-_-L
@@ -26,7 +26,7 @@
26
26
  <include>
27
27
  <context where="start" sub-pattern="0" style-ref="output"/>
28
28
  <context where="end" sub-pattern="0" style-ref="output"/>
29
- <context ref="ruby:ruby"/>
29
+ <context ref="ruby-code"/>
30
30
  </include>
31
31
  </context>
32
32
 
@@ -36,6 +36,13 @@
36
36
  <include>
37
37
  <context where="start" sub-pattern="0" style-ref="tag"/>
38
38
  <context where="end" sub-pattern="0" style-ref="tag"/>
39
+ <context ref="ruby-code"/>
40
+ </include>
41
+ </context>
42
+
43
+ <context id="ruby-code" extend-parent="false"><!-- extend false -->
44
+ <start></start><end>$^</end><!-- everything -->
45
+ <include>
39
46
  <context ref="ruby:ruby"/>
40
47
  </include>
41
48
  </context>
@@ -114,11 +114,13 @@
114
114
  <match case-sensitive="false">\s*#.*coding.*</match>
115
115
  </context>
116
116
 
117
+ <define-regex id="alnum">[^&amp;&gt;&lt;!?"'`@$%/()=\\{\[\]}*+~#|;,:.\-\^\s]</define-regex>
117
118
  <define-regex id="no_method_prefix">(?&lt;![\w\.\:])</define-regex>
119
+ <define-regex id="no_method_suffix">(?!(\%{alnum}|[?!]))</define-regex>
118
120
 
119
121
  <context id="keywords" style-ref="keyword">
120
- <!-- do not highlight methods like .class -->
121
122
  <prefix>\%{no_method_prefix}</prefix>
123
+ <suffix>\%{no_method_suffix}</suffix>
122
124
  <!-- only put here if not already used at another place -->
123
125
  <keyword>BEGIN</keyword>
124
126
  <keyword>END</keyword>
@@ -151,260 +153,295 @@
151
153
  <keyword>yield</keyword>
152
154
  </context>
153
155
 
154
- <context id="important-methods" style-ref="important-method" extend-parent="false">
155
- <keyword>Array(?=\()</keyword>
156
- <keyword>Complex(?=\()</keyword>
157
- <keyword>Float(?=\()</keyword>
158
- <keyword>Integer(?=\()</keyword>
159
- <keyword>Rational(?=\()</keyword>
160
- <keyword>String(?=\()</keyword>
161
- <keyword>__callee__</keyword>
162
- <keyword>__id__</keyword>
163
- <keyword>__method__</keyword>
164
- <keyword>__send__</keyword>
165
- <keyword>abort</keyword>
166
- <keyword>allocate</keyword>
167
- <keyword>ancestors</keyword>
168
- <keyword>at_exit</keyword>
169
- <keyword>autoload</keyword>
170
- <keyword>autoload\?</keyword>
171
- <keyword>binding</keyword>
172
- <keyword>block_given\?</keyword>
173
- <keyword>caller</keyword>
174
- <keyword>catch</keyword>
175
- <keyword>class</keyword>
176
- <keyword>class_eval</keyword>
177
- <keyword>class_exec</keyword>
178
- <keyword>class_variable_defined\?</keyword>
179
- <keyword>class_variable_get</keyword>
180
- <keyword>class_variable_set</keyword>
181
- <keyword>class_variables</keyword>
182
- <keyword>clone</keyword>
183
- <keyword>const_defined\?</keyword>
184
- <keyword>const_get</keyword>
185
- <keyword>const_missing</keyword>
186
- <keyword>const_set</keyword>
187
- <keyword>constants</keyword>
188
- <keyword>define_singleton_method</keyword>
189
- <keyword>display</keyword>
190
- <keyword>dup</keyword>
191
- <keyword>enum_for</keyword>
192
- <keyword>eql\?</keyword>
193
- <keyword>equal\?</keyword>
194
- <keyword>eval</keyword>
195
- <keyword>exec</keyword>
196
- <keyword>exit!</keyword>
197
- <keyword>exit</keyword>
198
- <keyword>extend</keyword>
199
- <keyword>fail</keyword>
200
- <keyword>fork</keyword>
201
- <keyword>format</keyword>
202
- <keyword>freeze</keyword>
203
- <keyword>frozen\?</keyword>
204
- <keyword>gets</keyword>
205
- <keyword>global_variables</keyword>
206
- <keyword>hash</keyword>
207
- <keyword>include\?</keyword>
208
- <keyword>included_modules</keyword>
209
- <keyword>initialize_clone</keyword>
210
- <keyword>initialize_dup</keyword>
211
- <keyword>inspect</keyword>
212
- <keyword>instance_eval</keyword>
213
- <keyword>instance_exec</keyword>
214
- <keyword>instance_method</keyword>
215
- <keyword>instance_methods</keyword>
216
- <keyword>instance_of\?</keyword>
217
- <keyword>instance_variable_defined\?</keyword>
218
- <keyword>instance_variable_get</keyword>
219
- <keyword>instance_variable_set</keyword>
220
- <keyword>instance_variables</keyword>
221
- <keyword>is_a\?</keyword>
222
- <keyword>iterator\?</keyword>
223
- <keyword>kind_of\?</keyword>
224
- <keyword>lambda</keyword>
225
- <keyword>load</keyword>
226
- <keyword>local_variables</keyword>
227
- <keyword>loop</keyword>
228
- <keyword>method</keyword>
229
- <keyword>method_defined\?</keyword>
230
- <keyword>methods</keyword>
231
- <keyword>module_eval</keyword>
232
- <keyword>module_exec</keyword>
233
- <keyword>name</keyword>
234
- <keyword>nesting</keyword>
235
- <keyword>new</keyword>
236
- <keyword>nil\?</keyword>
237
- <keyword>object_id</keyword>
238
- <keyword>open</keyword>
239
- <keyword>p</keyword>
240
- <keyword>print</keyword>
241
- <keyword>printf</keyword>
242
- <keyword>private_class_method</keyword>
243
- <keyword>private_instance_methods</keyword>
244
- <keyword>private_method_defined\?</keyword>
245
- <keyword>private_methods</keyword>
246
- <keyword>proc</keyword>
247
- <keyword>protected_instance_methods</keyword>
248
- <keyword>protected_method_defined\?</keyword>
249
- <keyword>protected_methods</keyword>
250
- <keyword>public_class_method</keyword>
251
- <keyword>public_instance_method</keyword>
252
- <keyword>public_instance_methods</keyword>
253
- <keyword>public_method</keyword>
254
- <keyword>public_method_defined\?</keyword>
255
- <keyword>public_methods</keyword>
256
- <keyword>public_send</keyword>
257
- <keyword>putc</keyword>
258
- <keyword>puts</keyword>
259
- <keyword>raise</keyword>
260
- <keyword>rand</keyword>
261
- <keyword>readline</keyword>
262
- <keyword>readlines</keyword>
263
- <keyword>remove_class_variable</keyword>
264
- <keyword>require</keyword>
265
- <keyword>require_relative</keyword>
266
- <keyword>respond_to\?</keyword>
267
- <keyword>respond_to_missing\?</keyword>
268
- <keyword>select</keyword>
269
- <keyword>send</keyword>
270
- <keyword>set_trace_func</keyword>
271
- <keyword>singleton_class</keyword>
272
- <keyword>singleton_methods</keyword>
273
- <keyword>sleep</keyword>
274
- <keyword>spawn</keyword>
275
- <keyword>sprintf</keyword>
276
- <keyword>srand</keyword>
277
- <keyword>superclass</keyword>
278
- <keyword>syscall</keyword>
279
- <keyword>system</keyword>
280
- <keyword>taint</keyword>
281
- <keyword>tainted\?</keyword>
282
- <keyword>tap</keyword>
283
- <keyword>test</keyword>
284
- <keyword>throw</keyword>
285
- <keyword>to_enum</keyword>
286
- <keyword>to_s</keyword>
287
- <keyword>trace_var</keyword>
288
- <keyword>trap</keyword>
289
- <keyword>trust</keyword>
290
- <keyword>untaint</keyword>
291
- <keyword>untrace_var</keyword>
292
- <keyword>untrust</keyword>
156
+ <context id="important-methods" style-ref="important-method">
157
+ <suffix></suffix>
158
+ <keyword>warn\%{no_method_suffix}</keyword>
293
159
  <keyword>untrusted\?</keyword>
294
- <keyword>warn</keyword>
160
+ <keyword>untrust\%{no_method_suffix}</keyword>
161
+ <keyword>untrace_var\%{no_method_suffix}</keyword>
162
+ <keyword>untaint\%{no_method_suffix}</keyword>
163
+ <keyword>undef_method\%{no_method_suffix}</keyword>
164
+ <keyword>trust\%{no_method_suffix}</keyword>
165
+ <keyword>trap\%{no_method_suffix}</keyword>
166
+ <keyword>trace_var\%{no_method_suffix}</keyword>
167
+ <keyword>to_s\%{no_method_suffix}</keyword>
168
+ <keyword>to_enum\%{no_method_suffix}</keyword>
169
+ <keyword>throw\%{no_method_suffix}</keyword>
170
+ <keyword>test\%{no_method_suffix}</keyword>
171
+ <keyword>tap\%{no_method_suffix}</keyword>
172
+ <keyword>tainted\?</keyword>
173
+ <keyword>taint\%{no_method_suffix}</keyword>
174
+ <keyword>system\%{no_method_suffix}</keyword>
175
+ <keyword>syscall\%{no_method_suffix}</keyword>
176
+ <keyword>superclass\%{no_method_suffix}</keyword>
177
+ <keyword>srand\%{no_method_suffix}</keyword>
178
+ <keyword>sprintf\%{no_method_suffix}</keyword>
179
+ <keyword>spawn\%{no_method_suffix}</keyword>
180
+ <keyword>sleep\%{no_method_suffix}</keyword>
181
+ <keyword>singleton_methods\%{no_method_suffix}</keyword>
182
+ <keyword>singleton_method_undefined\%{no_method_suffix}</keyword>
183
+ <keyword>singleton_method_removed\%{no_method_suffix}</keyword>
184
+ <keyword>singleton_method_added\%{no_method_suffix}</keyword>
185
+ <keyword>singleton_class\%{no_method_suffix}</keyword>
186
+ <keyword>set_trace_func\%{no_method_suffix}</keyword>
187
+ <keyword>send\%{no_method_suffix}</keyword>
188
+ <keyword>select\%{no_method_suffix}</keyword>
189
+ <keyword>respond_to_missing\?</keyword>
190
+ <keyword>respond_to\?</keyword>
191
+ <keyword>require_relative\%{no_method_suffix}</keyword>
192
+ <keyword>require\%{no_method_suffix}</keyword>
193
+ <keyword>remove_method\%{no_method_suffix}</keyword>
194
+ <keyword>remove_instance_variable\%{no_method_suffix}</keyword>
195
+ <keyword>remove_const\%{no_method_suffix}</keyword>
196
+ <keyword>remove_class_variable\%{no_method_suffix}</keyword>
197
+ <keyword>readlines\%{no_method_suffix}</keyword>
198
+ <keyword>readline\%{no_method_suffix}</keyword>
199
+ <keyword>rand\%{no_method_suffix}</keyword>
200
+ <keyword>raise\%{no_method_suffix}</keyword>
201
+ <keyword>puts\%{no_method_suffix}</keyword>
202
+ <keyword>putc\%{no_method_suffix}</keyword>
203
+ <keyword>public_send\%{no_method_suffix}</keyword>
204
+ <keyword>public_methods\%{no_method_suffix}</keyword>
205
+ <keyword>public_method_defined\?</keyword>
206
+ <keyword>public_method\%{no_method_suffix}</keyword>
207
+ <keyword>public_instance_methods\%{no_method_suffix}</keyword>
208
+ <keyword>public_instance_method\%{no_method_suffix}</keyword>
209
+ <keyword>public_constant\%{no_method_suffix}</keyword>
210
+ <keyword>public_class_method\%{no_method_suffix}</keyword>
211
+ <keyword>public\%{no_method_suffix}</keyword>
212
+ <keyword>protected_methods\%{no_method_suffix}</keyword>
213
+ <keyword>protected_method_defined\?</keyword>
214
+ <keyword>protected_instance_methods\%{no_method_suffix}</keyword>
215
+ <keyword>protected\%{no_method_suffix}</keyword>
216
+ <keyword>proc\%{no_method_suffix}</keyword>
217
+ <keyword>private_methods\%{no_method_suffix}</keyword>
218
+ <keyword>private_method_defined\?</keyword>
219
+ <keyword>private_instance_methods\%{no_method_suffix}</keyword>
220
+ <keyword>private_constant\%{no_method_suffix}</keyword>
221
+ <keyword>private_class_method\%{no_method_suffix}</keyword>
222
+ <keyword>private\%{no_method_suffix}</keyword>
223
+ <keyword>printf\%{no_method_suffix}</keyword>
224
+ <keyword>print\%{no_method_suffix}</keyword>
225
+ <keyword>p\%{no_method_suffix}</keyword>
226
+ <keyword>open\%{no_method_suffix}</keyword>
227
+ <keyword>object_id\%{no_method_suffix}</keyword>
228
+ <keyword>nil\?</keyword>
229
+ <keyword>new\%{no_method_suffix}</keyword>
230
+ <keyword>nesting\%{no_method_suffix}</keyword>
231
+ <keyword>name\%{no_method_suffix}</keyword>
232
+ <keyword>module_function\%{no_method_suffix}</keyword>
233
+ <keyword>module_exec\%{no_method_suffix}</keyword>
234
+ <keyword>module_eval\%{no_method_suffix}</keyword>
235
+ <keyword>methods\%{no_method_suffix}</keyword>
236
+ <keyword>method_undefined\%{no_method_suffix}</keyword>
237
+ <keyword>method_removed\%{no_method_suffix}</keyword>
238
+ <keyword>method_missing\%{no_method_suffix}</keyword>
239
+ <keyword>method_defined\?</keyword>
240
+ <keyword>method_added\%{no_method_suffix}</keyword>
241
+ <keyword>method\%{no_method_suffix}</keyword>
242
+ <keyword>loop\%{no_method_suffix}</keyword>
243
+ <keyword>local_variables\%{no_method_suffix}</keyword>
244
+ <keyword>load\%{no_method_suffix}</keyword>
245
+ <keyword>lambda\%{no_method_suffix}</keyword>
246
+ <keyword>kind_of\?</keyword>
247
+ <keyword>iterator\?</keyword>
248
+ <keyword>is_a\?</keyword>
249
+ <keyword>instance_variables\%{no_method_suffix}</keyword>
250
+ <keyword>instance_variable_set\%{no_method_suffix}</keyword>
251
+ <keyword>instance_variable_get\%{no_method_suffix}</keyword>
252
+ <keyword>instance_variable_defined\?</keyword>
253
+ <keyword>instance_of\?</keyword>
254
+ <keyword>instance_methods\%{no_method_suffix}</keyword>
255
+ <keyword>instance_method\%{no_method_suffix}</keyword>
256
+ <keyword>instance_exec\%{no_method_suffix}</keyword>
257
+ <keyword>instance_eval\%{no_method_suffix}</keyword>
258
+ <keyword>inspect\%{no_method_suffix}</keyword>
259
+ <keyword>initialize_dup\%{no_method_suffix}</keyword>
260
+ <keyword>initialize_copy\%{no_method_suffix}</keyword>
261
+ <keyword>initialize_clone\%{no_method_suffix}</keyword>
262
+ <keyword>initialize\%{no_method_suffix}</keyword>
263
+ <keyword>included_modules\%{no_method_suffix}</keyword>
264
+ <keyword>included\%{no_method_suffix}</keyword>
265
+ <keyword>include\?</keyword>
266
+ <keyword>include\%{no_method_suffix}</keyword>
267
+ <keyword>hash\%{no_method_suffix}</keyword>
268
+ <keyword>global_variables\%{no_method_suffix}</keyword>
269
+ <keyword>gets\%{no_method_suffix}</keyword>
270
+ <keyword>gem_original_require\%{no_method_suffix}</keyword>
271
+ <keyword>gem\%{no_method_suffix}</keyword>
272
+ <keyword>frozen\?</keyword>
273
+ <keyword>freeze\%{no_method_suffix}</keyword>
274
+ <keyword>format\%{no_method_suffix}</keyword>
275
+ <keyword>fork\%{no_method_suffix}</keyword>
276
+ <keyword>fail\%{no_method_suffix}</keyword>
277
+ <keyword>extended\%{no_method_suffix}</keyword>
278
+ <keyword>extend_object\%{no_method_suffix}</keyword>
279
+ <keyword>extend\%{no_method_suffix}</keyword>
280
+ <keyword>exit\%{no_method_suffix}</keyword>
281
+ <keyword>exit!</keyword>
282
+ <keyword>exec\%{no_method_suffix}</keyword>
283
+ <keyword>eval\%{no_method_suffix}</keyword>
284
+ <keyword>equal\?</keyword>
285
+ <keyword>eql\?</keyword>
286
+ <keyword>enum_for\%{no_method_suffix}</keyword>
287
+ <keyword>dup\%{no_method_suffix}</keyword>
288
+ <keyword>display\%{no_method_suffix}</keyword>
289
+ <keyword>define_singleton_method\%{no_method_suffix}</keyword>
290
+ <keyword>define_method\%{no_method_suffix}</keyword>
291
+ <keyword>constants\%{no_method_suffix}</keyword>
292
+ <keyword>const_set\%{no_method_suffix}</keyword>
293
+ <keyword>const_missing\%{no_method_suffix}</keyword>
294
+ <keyword>const_get\%{no_method_suffix}</keyword>
295
+ <keyword>const_defined\?</keyword>
296
+ <keyword>clone\%{no_method_suffix}</keyword>
297
+ <keyword>class_variables\%{no_method_suffix}</keyword>
298
+ <keyword>class_variable_set\%{no_method_suffix}</keyword>
299
+ <keyword>class_variable_get\%{no_method_suffix}</keyword>
300
+ <keyword>class_variable_defined\?</keyword>
301
+ <keyword>class_exec\%{no_method_suffix}</keyword>
302
+ <keyword>class_eval\%{no_method_suffix}</keyword>
303
+ <keyword>class\%{no_method_suffix}</keyword>
304
+ <keyword>catch\%{no_method_suffix}</keyword>
305
+ <keyword>caller\%{no_method_suffix}</keyword>
306
+ <keyword>block_given\?</keyword>
307
+ <keyword>binding\%{no_method_suffix}</keyword>
308
+ <keyword>autoload\?</keyword>
309
+ <keyword>autoload\%{no_method_suffix}</keyword>
310
+ <keyword>attr_writer\%{no_method_suffix}</keyword>
311
+ <keyword>attr_reader\%{no_method_suffix}</keyword>
312
+ <keyword>attr_accessor\%{no_method_suffix}</keyword>
313
+ <keyword>attr\%{no_method_suffix}</keyword>
314
+ <keyword>at_exit\%{no_method_suffix}</keyword>
315
+ <keyword>append_features\%{no_method_suffix}</keyword>
316
+ <keyword>ancestors\%{no_method_suffix}</keyword>
317
+ <keyword>allocate\%{no_method_suffix}</keyword>
318
+ <keyword>alias_method\%{no_method_suffix}</keyword>
319
+ <keyword>abort\%{no_method_suffix}</keyword>
320
+ <keyword>__send__\%{no_method_suffix}</keyword>
321
+ <keyword>__method__\%{no_method_suffix}</keyword>
322
+ <keyword>__id__\%{no_method_suffix}</keyword>
323
+ <keyword>__callee__\%{no_method_suffix}</keyword>
324
+ <keyword>String(?=\()</keyword>
325
+ <keyword>Rational(?=\()</keyword>
326
+ <keyword>Integer(?=\()</keyword>
327
+ <keyword>Float(?=\()</keyword>
328
+ <keyword>Complex(?=\()</keyword>
329
+ <keyword>Array(?=\()</keyword>
295
330
  </context>
296
331
 
297
332
  <context id="important-constants" style-ref="important-constant" extend-parent="false">
298
- <keyword>Object</keyword>
299
- <keyword>Module</keyword>
300
- <keyword>Class</keyword>
301
- <keyword>Kernel</keyword>
302
- <keyword>NilClass</keyword>
303
- <keyword>NIL</keyword>
304
- <keyword>Data</keyword>
333
+ <prefix>(?&lt;!\%{alnum}::)</prefix><!-- fails on spaces or non alnum -->
334
+ <keyword>ZeroDivisionError</keyword>
335
+ <keyword>UnboundMethod</keyword>
336
+ <keyword>TypeError</keyword>
305
337
  <keyword>TrueClass</keyword>
338
+ <keyword>Time</keyword>
339
+ <keyword>ThreadGroup</keyword>
340
+ <keyword>ThreadError</keyword>
341
+ <keyword>Thread</keyword>
306
342
  <keyword>TRUE</keyword>
307
- <keyword>FalseClass</keyword>
308
- <keyword>FALSE</keyword>
309
- <keyword>Encoding</keyword>
310
- <keyword>Comparable</keyword>
311
- <keyword>Enumerable</keyword>
312
- <keyword>String</keyword>
313
- <keyword>Symbol</keyword>
314
- <keyword>Exception</keyword>
343
+ <keyword>TOPLEVEL_BINDING</keyword>
344
+ <keyword>SystemStackError</keyword>
315
345
  <keyword>SystemExit</keyword>
316
- <keyword>SignalException</keyword>
317
- <keyword>Interrupt</keyword>
346
+ <keyword>SystemCallError</keyword>
347
+ <keyword>SyntaxError</keyword>
348
+ <keyword>Symbol</keyword>
349
+ <keyword>Struct</keyword>
350
+ <keyword>String</keyword>
351
+ <keyword>StopIteration</keyword>
318
352
  <keyword>StandardError</keyword>
319
- <keyword>TypeError</keyword>
320
- <keyword>ArgumentError</keyword>
321
- <keyword>IndexError</keyword>
322
- <keyword>KeyError</keyword>
323
- <keyword>RangeError</keyword>
353
+ <keyword>SignalException</keyword>
354
+ <keyword>Signal</keyword>
355
+ <keyword>SecurityError</keyword>
324
356
  <keyword>ScriptError</keyword>
325
- <keyword>SyntaxError</keyword>
326
- <keyword>LoadError</keyword>
327
- <keyword>NotImplementedError</keyword>
328
- <keyword>NameError</keyword>
329
- <keyword>NoMethodError</keyword>
357
+ <keyword>STDOUT</keyword>
358
+ <keyword>STDIN</keyword>
359
+ <keyword>STDERR</keyword>
360
+ <keyword>SCRIPT_LINES__</keyword>
330
361
  <keyword>RuntimeError</keyword>
331
- <keyword>SecurityError</keyword>
332
- <keyword>NoMemoryError</keyword>
333
- <keyword>EncodingError</keyword>
334
- <keyword>SystemCallError</keyword>
335
- <keyword>Errno</keyword>
336
- <keyword>ZeroDivisionError</keyword>
337
- <keyword>FloatDomainError</keyword>
338
- <keyword>Numeric</keyword>
339
- <keyword>Integer</keyword>
340
- <keyword>Fixnum</keyword>
341
- <keyword>Float</keyword>
342
- <keyword>Bignum</keyword>
343
- <keyword>Array</keyword>
344
- <keyword>Hash</keyword>
345
- <keyword>ENV</keyword>
346
- <keyword>Struct</keyword>
362
+ <keyword>RubyVM</keyword>
347
363
  <keyword>RegexpError</keyword>
348
364
  <keyword>Regexp</keyword>
349
- <keyword>MatchData</keyword>
350
- <keyword>Marshal</keyword>
365
+ <keyword>RbConfig</keyword>
366
+ <keyword>Rational</keyword>
367
+ <keyword>RangeError</keyword>
351
368
  <keyword>Range</keyword>
352
- <keyword>IOError</keyword>
353
- <keyword>EOFError</keyword>
354
- <keyword>IO</keyword>
355
- <keyword>STDIN</keyword>
356
- <keyword>STDOUT</keyword>
357
- <keyword>STDERR</keyword>
358
- <keyword>ARGF</keyword>
359
- <keyword>FileTest</keyword>
360
- <keyword>File</keyword>
361
- <keyword>Dir</keyword>
362
- <keyword>Time</keyword>
363
369
  <keyword>Random</keyword>
364
- <keyword>Signal</keyword>
365
- <keyword>Process</keyword>
366
- <keyword>Proc</keyword>
367
- <keyword>LocalJumpError</keyword>
368
- <keyword>SystemStackError</keyword>
369
- <keyword>Method</keyword>
370
- <keyword>UnboundMethod</keyword>
371
- <keyword>Binding</keyword>
372
- <keyword>Math</keyword>
373
- <keyword>GC</keyword>
374
- <keyword>ObjectSpace</keyword>
375
- <keyword>Enumerator</keyword>
376
- <keyword>StopIteration</keyword>
377
- <keyword>RubyVM</keyword>
378
- <keyword>Thread</keyword>
379
- <keyword>TOPLEVEL_BINDING</keyword>
380
- <keyword>ThreadGroup</keyword>
381
- <keyword>Mutex</keyword>
382
- <keyword>ThreadError</keyword>
383
- <keyword>Fiber</keyword>
384
- <keyword>FiberError</keyword>
385
- <keyword>Rational</keyword>
386
- <keyword>Complex</keyword>
387
370
  <keyword>RUBY_VERSION</keyword>
371
+ <keyword>RUBY_REVISION</keyword>
388
372
  <keyword>RUBY_RELEASE_DATE</keyword>
389
373
  <keyword>RUBY_PLATFORM</keyword>
390
374
  <keyword>RUBY_PATCHLEVEL</keyword>
391
- <keyword>RUBY_REVISION</keyword>
375
+ <keyword>RUBY_ENGINE</keyword>
392
376
  <keyword>RUBY_DESCRIPTION</keyword>
393
377
  <keyword>RUBY_COPYRIGHT</keyword>
394
- <keyword>RUBY_ENGINE</keyword>
395
- <keyword>ARGV</keyword>
378
+ <keyword>Process</keyword>
379
+ <keyword>Proc</keyword>
380
+ <keyword>ObjectSpace</keyword>
381
+ <keyword>Object</keyword>
382
+ <keyword>Numeric</keyword>
383
+ <keyword>NotImplementedError</keyword>
384
+ <keyword>NoMethodError</keyword>
385
+ <keyword>NoMemoryError</keyword>
386
+ <keyword>NilClass</keyword>
387
+ <keyword>NameError</keyword>
388
+ <keyword>NIL</keyword>
389
+ <keyword>Mutex</keyword>
390
+ <keyword>Module</keyword>
391
+ <keyword>Method</keyword>
392
+ <keyword>Math</keyword>
393
+ <keyword>MatchData</keyword>
394
+ <keyword>Marshal</keyword>
395
+ <keyword>LocalJumpError</keyword>
396
+ <keyword>LoadError</keyword>
397
+ <keyword>KeyError</keyword>
398
+ <keyword>Kernel</keyword>
399
+ <keyword>Interrupt</keyword>
400
+ <keyword>Integer</keyword>
401
+ <keyword>IndexError</keyword>
402
+ <keyword>IOError</keyword>
403
+ <keyword>IO</keyword>
404
+ <keyword>Hash</keyword>
396
405
  <keyword>Gem</keyword>
397
- <keyword>BasicObject</keyword>
406
+ <keyword>GC</keyword>
407
+ <keyword>FloatDomainError</keyword>
408
+ <keyword>Float</keyword>
409
+ <keyword>Fixnum</keyword>
410
+ <keyword>FileTest</keyword>
411
+ <keyword>File</keyword>
412
+ <keyword>FiberError</keyword>
413
+ <keyword>Fiber</keyword>
414
+ <keyword>FalseClass</keyword>
415
+ <keyword>FALSE</keyword>
416
+ <keyword>Exception</keyword>
417
+ <keyword>Errno</keyword>
418
+ <keyword>Enumerator</keyword>
419
+ <keyword>Enumerable</keyword>
420
+ <keyword>EncodingError</keyword>
421
+ <keyword>Encoding</keyword>
422
+ <keyword>EOFError</keyword>
423
+ <keyword>ENV</keyword>
424
+ <keyword>Dir</keyword>
425
+ <keyword>Deprecate</keyword>
426
+ <keyword>Data</keyword>
398
427
  <keyword>DATA</keyword>
399
- <keyword>SCRIPT_LINES__</keyword>
428
+ <keyword>Config</keyword>
429
+ <keyword>Complex</keyword>
430
+ <keyword>Comparable</keyword>
431
+ <keyword>Class</keyword>
432
+ <keyword>CROSS_COMPILING</keyword>
433
+ <keyword>Binding</keyword>
434
+ <keyword>Bignum</keyword>
435
+ <keyword>BasicObject</keyword>
436
+ <keyword>Array</keyword>
437
+ <keyword>ArgumentError</keyword>
438
+ <keyword>ARGV</keyword>
439
+ <keyword>ARGF</keyword>
400
440
  </context>
401
441
 
402
-
403
442
  <define-regex id="special-variables-1-char">[;@!~&amp;`'+=,/\\_&gt;&lt;.*?$:"0-9]</define-regex>
404
443
  <define-regex id="special-variables-2-chars">-[FK0iIvwWdpla]</define-regex>
405
444
 
406
- <define-regex id="alnum">[^&amp;&gt;&lt;!?"'`@$%/()=\\{\[\]}*+~#|;,:.\-\^\s]</define-regex>
407
-
408
445
  <context id="special-variables" style-ref="special-variable">
409
446
  <match extended="true">
410
447
  \$( \%{special-variables-1-char}
@@ -424,12 +461,14 @@
424
461
  </match>
425
462
  </context>
426
463
 
464
+ <define-regex id="method" extended="true">
465
+ ( \%{alnum}(?&lt;![A-Z0-9:])\%{alnum}*[!?]?
466
+ | [A-Z]\%{alnum}*[!?]?(?=\()
467
+ )
468
+ </define-regex>
469
+
427
470
  <context id="methods" style-ref="method" extend-parent="false">
428
- <match extended="true">
429
- ( \%{alnum}(?&lt;![A-Z0-9:])\%{alnum}*[!?]?
430
- | [A-Z]\%{alnum}*[!?]?(?=\()
431
- )
432
- </match>
471
+ <match>\%{method}</match>
433
472
  </context>
434
473
 
435
474
  <context id="global-variables" style-ref="global-variable">
@@ -476,26 +515,31 @@
476
515
  <include>
477
516
  <context id="self" style-ref="self">
478
517
  <prefix>\%{no_method_prefix}</prefix>
518
+ <suffix>\%{no_method_suffix}</suffix>
479
519
  <keyword>self</keyword>
480
520
  </context>
481
521
 
482
522
  <context id="false" style-ref="false">
483
523
  <prefix>\%{no_method_prefix}</prefix>
524
+ <suffix>\%{no_method_suffix}</suffix>
484
525
  <keyword>false</keyword>
485
526
  </context>
486
527
 
487
528
  <context id="true" style-ref="true">
488
529
  <prefix>\%{no_method_prefix}</prefix>
530
+ <suffix>\%{no_method_suffix}</suffix>
489
531
  <keyword>true</keyword>
490
532
  </context>
491
533
 
492
534
  <context id="nil" style-ref="nil">
493
535
  <prefix>\%{no_method_prefix}</prefix>
536
+ <suffix>\%{no_method_suffix}</suffix>
494
537
  <keyword>nil</keyword>
495
538
  </context>
496
539
 
497
540
  <context id="special-values-words" style-ref="special-value">
498
541
  <prefix>\%{no_method_prefix}</prefix>
542
+ <suffix>\%{no_method_suffix}</suffix>
499
543
  <keyword>__ENCODING__</keyword>
500
544
  <keyword>__FILE__</keyword>
501
545
  <keyword>__LINE__</keyword>
@@ -509,8 +553,7 @@
509
553
  <include>
510
554
  <context sub-pattern="1" where="start" style-ref="syntax-char"/>
511
555
  <context sub-pattern="0" where="end" style-ref="syntax-char"/>
512
-
513
- <context ref="ruby:*"/>
556
+ <context ref="ruby-end-at-line-end"/>
514
557
  </include>
515
558
  </context>
516
559
 
@@ -608,7 +651,7 @@
608
651
  </context>
609
652
 
610
653
  <!-- %Q-Hello world- %-Hello world- %+hello world+ and so on... -->
611
- <context id="double-quoted-string-generic" style-ref="string" extend-parent="false">
654
+ <context id="double-quoted-string-generic" style-ref="string">
612
655
  <start>%Q?([[:print:]])(?&lt;![[:alnum:]])</start>
613
656
  <end>\%{1@start}</end>
614
657
  <include>
@@ -865,12 +908,13 @@
865
908
  </include>
866
909
  </context>
867
910
 
868
- <define-regex id="start-heredoc">([^a-zA-Z0-9\s\]\)&gt;}])\s*(&lt;&lt;)</define-regex>
911
+ <define-regex id="start-heredoc">([^a-zA-Z0-9\s\]\)&gt;}]|^)\s*(&lt;&lt;)</define-regex>
869
912
 
870
913
  <context id="heredoc-string" style-ref="string">
871
914
  <start>\%{start-heredoc}((\w+))</start>
872
915
  <end>^\%{4@start}$</end>
873
916
  <include>
917
+ <context ref="ruby-end-at-line-end"/>
874
918
  <context ref="double-quoted"/>
875
919
  <context where="start" sub-pattern="1" style-ref="operator"/>
876
920
  <context where="start" sub-pattern="2" style-ref="string-delimiter"/>
@@ -883,6 +927,7 @@
883
927
  <start>\%{start-heredoc}(-(\w+))</start>
884
928
  <end>^\s*\%{4@start}$</end>
885
929
  <include>
930
+ <context ref="ruby-end-at-line-end"/>
886
931
  <context ref="double-quoted"/>
887
932
  <context where="start" sub-pattern="1" style-ref="operator"/>
888
933
  <context where="start" sub-pattern="2" style-ref="string-delimiter"/>
@@ -895,6 +940,7 @@
895
940
  <start>\%{start-heredoc}('(\w+)')</start>
896
941
  <end>^\%{4@start}$</end>
897
942
  <include>
943
+ <context ref="ruby-end-at-line-end"/>
898
944
  <context where="start" sub-pattern="1" style-ref="operator"/>
899
945
  <context where="start" sub-pattern="2" style-ref="string-delimiter"/>
900
946
  <context where="start" sub-pattern="3" style-ref="string-delimiter"/>
@@ -906,6 +952,7 @@
906
952
  <start>\%{start-heredoc}("(\w+)")</start>
907
953
  <end>^\%{4@start}$</end>
908
954
  <include>
955
+ <context ref="ruby-end-at-line-end"/>
909
956
  <context ref="double-quoted"/>
910
957
  <context where="start" sub-pattern="1" style-ref="operator"/>
911
958
  <context where="start" sub-pattern="2" style-ref="string-delimiter"/>
@@ -918,6 +965,7 @@
918
965
  <start>\%{start-heredoc}(`(\w+)`)</start>
919
966
  <end>^\%{4@start}$</end>
920
967
  <include>
968
+ <context ref="ruby-end-at-line-end"/>
921
969
  <context ref="double-quoted"/>
922
970
  <context where="start" sub-pattern="1" style-ref="operator"/>
923
971
  <context where="start" sub-pattern="2" style-ref="system-delimiter"/>
@@ -930,6 +978,7 @@
930
978
  <start>\%{start-heredoc}(-'(\w+)')</start>
931
979
  <end>^\s*\%{4@start}$</end>
932
980
  <include>
981
+ <context ref="ruby-end-at-line-end"/>
933
982
  <context where="start" sub-pattern="1" style-ref="operator"/>
934
983
  <context where="start" sub-pattern="2" style-ref="string-delimiter"/>
935
984
  <context where="start" sub-pattern="3" style-ref="string-delimiter"/>
@@ -941,6 +990,7 @@
941
990
  <start>\%{start-heredoc}(-"(\w+)")</start>
942
991
  <end>^\s*\%{4@start}$</end>
943
992
  <include>
993
+ <context ref="ruby-end-at-line-end"/>
944
994
  <context where="start" sub-pattern="1" style-ref="operator"/>
945
995
  <context where="start" sub-pattern="2" style-ref="string-delimiter"/>
946
996
  <context where="start" sub-pattern="3" style-ref="string-delimiter"/>
@@ -952,6 +1002,7 @@
952
1002
  <start>\%{start-heredoc}(-`(\w+)`)</start>
953
1003
  <end>^\s*\%{4@start}$</end>
954
1004
  <include>
1005
+ <context ref="ruby-end-at-line-end"/>
955
1006
  <context where="start" sub-pattern="1" style-ref="operator"/>
956
1007
  <context where="start" sub-pattern="2" style-ref="system-delimiter"/>
957
1008
  <context where="start" sub-pattern="3" style-ref="system-delimiter"/>
@@ -1150,18 +1201,38 @@
1150
1201
  </include>
1151
1202
  </context>
1152
1203
 
1204
+ <define-regex id="definable-operator" extended="true">
1205
+ ===?
1206
+ | &lt;=&gt;
1207
+ | &lt;[&lt;=]?
1208
+ | (?&lt;!=)&gt;[&gt;=]?
1209
+ | =?~
1210
+ | \*\*?
1211
+ | \[\]=?
1212
+ | [+%^!/|&amp;-]
1213
+ </define-regex>
1214
+
1153
1215
  <context id="function">
1154
1216
  <start>(?&lt;![\w\.])\b(def)\b\s*</start>
1155
- <end>([^.]+?)(?=[\s(;]|$)</end>
1217
+ <end>(\%{definable-operator}|[A-Z]?\%{method}(?:(?&lt;![!?])=)?)(?=[\s(;]|$)</end>
1156
1218
  <include>
1157
1219
  <context where="start" sub-pattern="1" style-ref="keyword"/>
1158
- <context where="end" sub-pattern="1" style-ref="function"/>
1159
- <context ref="ruby:*"/>
1220
+ <context where="end" sub-pattern="0" style-ref="function"/>
1221
+ <context ref="ruby-end-at-line-end"/>
1160
1222
  </include>
1161
1223
  </context>
1162
1224
 
1163
- <context id="operators" style-ref="operator" extend-parent="false">
1164
- <match>&lt;=&gt;|(?&lt;!%)=(?!&gt;)|~|&lt;|&amp;|(?&lt;!=)&gt;|\.|::|\*|/|\+|-|\||!|not|and|or|defined\?</match>
1225
+ <context id="operators" style-ref="operator">
1226
+ <match extended="true">
1227
+ ( [+-]@
1228
+ | \%{definable-operator}
1229
+ | (?&lt;!%)=(?!&gt;)
1230
+ | \.
1231
+ | ::
1232
+ | \%{no_method_prefix}(?:not|and|or)\%{no_method_suffix}
1233
+ | \%{no_method_prefix}defined\?
1234
+ )
1235
+ </match>
1165
1236
  </context>
1166
1237
 
1167
1238
  <context id="syntax-chars" style-ref="syntax-char" extend-parent="false">
@@ -1179,61 +1250,89 @@
1179
1250
  </include>
1180
1251
  </context>
1181
1252
  <context id="square-brackets">
1182
- <start>\[</start><end>\]</end>
1253
+ <start extended="true">
1254
+ (?: (?&lt;= \%{alnum}[!?] )
1255
+ | (?&lt;= \%{alnum} | [})\]] )
1256
+ ) \s*(\[)
1257
+ </start>
1258
+ <end>\]</end>
1183
1259
  <include>
1184
- <context where="start" sub-pattern="0" style-ref="syntax-char"/>
1260
+ <context where="start" sub-pattern="1" style-ref="syntax-char"/>
1185
1261
  <context where="end" sub-pattern="0" style-ref="syntax-char"/>
1186
1262
  <context ref="ruby:*"/>
1187
1263
  </include>
1188
1264
  </context>
1189
- <context id="curly-brackets">
1190
- <start>(?&lt;=(?:.[\])\w]|->))\s*(\{)</start><end>\}</end>
1265
+ <context id="curly-brackets"><!--(?&lt;= [)\w\]] ) -->
1266
+ <start extended="true">
1267
+ (?: (?&lt;= -> | \%{alnum}[!?] )
1268
+ | (?&lt;= \%{alnum} | [)\]] )
1269
+ ) \s*(\{)
1270
+ </start>
1271
+ <end>\}</end>
1191
1272
  <include>
1192
- <context where="start" sub-pattern="1" style-ref="syntax-char"/>
1193
- <context where="end" sub-pattern="0" style-ref="syntax-char"/>
1273
+ <context where="start" sub-pattern="1" style-ref="syntax-char"/>
1274
+ <context where="end" sub-pattern="0" style-ref="syntax-char"/>
1194
1275
  <context ref="ruby:*"/>
1195
1276
  </include>
1196
1277
  </context>
1197
1278
  </include>
1198
1279
  </context>
1199
1280
 
1200
- <context id="hash">
1201
- <start>(?&lt;!(?:.[\])\w]|->))\s*\{</start>
1281
+ <context id="hash" extend-parent="false">
1282
+ <start extended="true">
1283
+ (?&lt;! -> | \%{alnum}[!?] )
1284
+ (?&lt;! \%{alnum} | [)\]] )
1285
+ (\{)
1286
+ </start>
1202
1287
  <end>\}</end>
1203
1288
  <include>
1204
- <context where="start" sub-pattern="0" style-ref="collection"/>
1289
+ <context where="start" sub-pattern="1" style-ref="collection"/>
1205
1290
  <context where="end" sub-pattern="0" style-ref="collection"/>
1206
1291
  <context ref="ruby:*"/>
1207
1292
  </include>
1208
1293
  </context>
1209
1294
 
1210
- <context id="collection-chars" style-ref="collection">
1211
- <match>(=&gt;|,)</match>
1212
- </context>
1213
-
1214
1295
  <context id="array">
1215
- <start>(?&lt;![\])}\w])\[</start>
1296
+ <start extended="true">
1297
+ (?&lt;! \%{alnum}[!?] )
1298
+ (?&lt;! \%{alnum} | [})\]] )
1299
+ (\[)
1300
+ </start>
1216
1301
  <end>\]</end>
1217
1302
  <include>
1218
- <context where="start" sub-pattern="0" style-ref="collection"/>
1303
+ <context where="start" sub-pattern="1" style-ref="collection"/>
1219
1304
  <context where="end" sub-pattern="0" style-ref="collection"/>
1220
1305
  <context ref="ruby:*"/>
1221
1306
  </include>
1222
1307
  </context>
1223
1308
 
1309
+ <context id="collection-chars" style-ref="collection">
1310
+ <match>(=&gt;|,)</match>
1311
+ </context>
1312
+
1224
1313
  <context id="data" style-ref="string">
1225
- <start>__END__</start>
1314
+ <start>^__END__</start>
1226
1315
  <include>
1227
1316
  <context where="start" sub-pattern="0" style-ref="string-delimiter"/>
1228
1317
  </include>
1229
1318
  </context>
1230
1319
 
1231
- <context id="errors" style-ref="error" extend-parent="false">
1320
+ <context id="errors" style-ref="error" extend-parent="false"><!-- split if needed -->
1232
1321
  <match extended="true">
1233
- [}\])]
1322
+ (?: [}\])]
1323
+ | =end\%{no_method_suffix}
1324
+ )
1234
1325
  </match>
1235
1326
  </context>
1236
1327
 
1328
+ <context id="ruby-end-at-line-end" end-at-line-end="true" once-only="true" extend-parent="false">
1329
+ <start></start>
1330
+ <end>(^|$)</end>
1331
+ <include>
1332
+ <context ref="ruby:*"/>
1333
+ </include>
1334
+ </context>
1335
+
1237
1336
  <context id="ruby" class="no-spell-check">
1238
1337
  <include>
1239
1338
  <context ref="def:shebang"/>
@@ -1251,8 +1350,6 @@
1251
1350
  <context ref="heredoc-double-quoted-indented-string"/>
1252
1351
  <context ref="heredoc-backtick-quoted-indented-string"/>
1253
1352
 
1254
- <context ref="question-mark-string"/>
1255
-
1256
1353
  <context ref="symbol"/>
1257
1354
  <context ref="single-quoted-symbol"/>
1258
1355
  <context ref="double-quoted-symbol"/>
@@ -1302,15 +1399,14 @@
1302
1399
 
1303
1400
  <context ref="function"/>
1304
1401
 
1305
- <context ref="keywords"/>
1306
- <context ref="special-values"/>
1307
-
1308
1402
  <context ref="special-variables"/>
1309
1403
  <context ref="global-variables"/>
1404
+
1310
1405
  <context ref="ternary-operators"/>
1311
1406
  <context ref="hash-symbols"/>
1407
+
1312
1408
  <context ref="important-methods"/>
1313
- <context ref="methods"/>
1409
+ <context ref="special-values"/>
1314
1410
 
1315
1411
  <context ref="important-constants"/>
1316
1412
  <context ref="constants"/>
@@ -1327,12 +1423,19 @@
1327
1423
  <context ref="block-parameters"/>
1328
1424
  <context ref="hash"/>
1329
1425
  <context ref="array"/>
1426
+ <context ref="brackets"/>
1427
+
1428
+ <context ref="errors"/>
1330
1429
 
1331
1430
  <context ref="collection-chars"/>
1332
1431
  <context ref="operators"/>
1333
1432
  <context ref="syntax-chars"/>
1334
- <context ref="brackets"/>
1335
- <context ref="errors"/>
1433
+
1434
+ <context ref="keywords"/>
1435
+ <context ref="methods"/>
1436
+
1437
+ <context ref="question-mark-string"/>
1438
+
1336
1439
  </include>
1337
1440
  </context>
1338
1441
  </definitions>
@@ -0,0 +1,60 @@
1
+ # hashs
2
+ {}
3
+ {}
4
+ {}
5
+ a={}
6
+ a= {}
7
+ a ?{} :{}
8
+ !{}
9
+
10
+ # arrays
11
+ []
12
+ []
13
+ []
14
+ a=[]
15
+ a= []
16
+
17
+ # procs/square brackets
18
+ a{}
19
+ ☆{}
20
+ A{}
21
+ ->{}
22
+ ->(x){}
23
+ a?{}
24
+ a!{}
25
+
26
+ a {}
27
+ ☆ {}
28
+ A {}
29
+ -> {}
30
+ -> (x) {}
31
+ a? {}
32
+ a! {}
33
+
34
+ a[]
35
+ a []
36
+ a[b]
37
+ a [b]
38
+ a[[a]]
39
+ a [[b]]
40
+ ☆[]
41
+ ☆ []
42
+ A[]
43
+ A []
44
+ a?[]
45
+ a? []
46
+ a![]
47
+ a! []
48
+ a[][]
49
+ b [] []
50
+
51
+ a(){}
52
+ a () {}
53
+ a()[]
54
+ a () []
55
+ a[]{}
56
+ a [] {}
57
+ a[b]{}
58
+ a [b] {}
59
+ a{}[]
60
+ a {} []
@@ -4,13 +4,6 @@
4
4
  # Interpolation with instance variables
5
5
  "example #@variable"
6
6
 
7
- # Improved method defintions
8
- def self.some_method(a, b)
9
- end
10
-
11
- def $*.important!
12
- end
13
-
14
7
  # Highlights important methods
15
8
  normal_method
16
9
  require_relative
@@ -35,17 +28,29 @@ some_method with_symbol_hash: 42,
35
28
  # Uppercased method names
36
29
  Array(42)
37
30
 
31
+ # Improved method defintions
32
+ def self.some_method(a, b) end
33
+ def $*.important!; end
34
+ def self; end
35
+ def [](arg) nil; end
36
+ def setter=(v); end
37
+ def Array; end
38
+
38
39
  # Colorful special values :D
39
40
  [true, false, nil]
40
41
 
41
- # Different heredoc matching (however, still far from perfect)
42
+ # Different heredoc matching (however, still *far* from correct)
42
43
  here = "doc"
43
44
  %w[string array] <<here # no heredoc
44
45
 
45
- variable = <<here
46
- this one is a heredoc °_°
46
+ variable = <<here + "°_°"
47
+ this one is a heredoc
47
48
  here
48
49
 
50
+ <<OR
51
+ this one
52
+ OR
53
+
49
54
  # Strange literals are mostly supported
50
55
  %x[ls]
51
56
  %r>[\>]>
@@ -3,4 +3,4 @@ DATA
3
3
  SCRIPT_LINES__
4
4
  ]).map{ |e|
5
5
  " <keyword>#{e}</keyword>"
6
- }.uniq
6
+ }.uniq.sort.reverse
@@ -1,3 +1,25 @@
1
- puts (Object.methods | Module.methods | Kernel.methods).select{|e| e =~ /^[a-zA-Z_][a-zA-Z0-9?!_]*$/}.map{ |e|
2
- " <keyword>#{e.to_s.gsub /\?/,'\\?'}#{ '(?=\()' if e.to_s[0] =~ /[A-Z]/ }</keyword>"
3
- }.uniq.sort
1
+ puts (
2
+ Object.methods |
3
+ Module.methods |
4
+ Kernel.methods |
5
+ Object.private_instance_methods |
6
+ Module.private_instance_methods |
7
+ Kernel.private_instance_methods |
8
+ Object.protected_instance_methods |
9
+ Module.protected_instance_methods |
10
+ Kernel.protected_instance_methods |
11
+ Object.public_instance_methods |
12
+ Module.public_instance_methods |
13
+ Kernel.public_instance_methods
14
+ ).select{|e| e =~ /^[a-zA-Z_][a-zA-Z0-9?!_]*$/}.map{ |e|
15
+ suffix =
16
+ if e.to_s[0] =~ /[A-Z]/
17
+ '(?=\()'
18
+ elsif e.to_s[-1] =~ /[?!]/
19
+ ''
20
+ else
21
+ '\%{no_method_suffix}'
22
+ end
23
+
24
+ " <keyword>#{e.to_s.gsub /\?/,'\\?'}#{ suffix }</keyword>"
25
+ }.uniq.sort.reverse
@@ -9,4 +9,13 @@
9
9
  # question mark madness vs ternary operator
10
10
  [?', ?(, :vs] ?'a':'b'
11
11
 
12
+ # nested heredocs
13
+ a = <<FIRST + "yeah" + <<SECOND
14
+ some text
15
+ FIRST
16
+ more text
17
+ SECOND
18
+
12
19
  # multi-line regex
20
+ /
21
+ /
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubybuntu-gedit
3
3
  version: !ruby/object:Gem::Version
4
- version: 11.09.19
4
+ version: 11.09.29
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,11 +11,11 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2011-09-18 00:00:00.000000000Z
14
+ date: 2011-09-29 00:00:00.000000000Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: paint
18
- requirement: &15591760 !ruby/object:Gem::Requirement
18
+ requirement: &6480020 !ruby/object:Gem::Requirement
19
19
  none: false
20
20
  requirements:
21
21
  - - ! '>='
@@ -23,7 +23,7 @@ dependencies:
23
23
  version: '0'
24
24
  type: :runtime
25
25
  prerelease: false
26
- version_requirements: *15591760
26
+ version_requirements: *6480020
27
27
  description: Ruby/Rails/Web related gedit language definitions, mime types, styles
28
28
  and snippets.
29
29
  email: mail@janlelis.de
@@ -42,6 +42,7 @@ files:
42
42
  - data/language-specs/ruby.lang-extras/important-methods.rb
43
43
  - data/language-specs/ruby.lang-extras/unicode.rb
44
44
  - data/language-specs/ruby.lang-extras/important-constants.rb
45
+ - data/language-specs/ruby.lang-extras/brackets.rb
45
46
  - data/language-specs/ruby.lang-extras/known-bugs.rb
46
47
  - data/language-specs/ruby.lang-extras/examples.rb
47
48
  - data/language-specs/html-erb.lang