@@ -1,46 +1,84 @@
11%YAML 1.2
22---
3−# http://www.sublimetext.com/docs/3/syntax.html
4−name: Advanced CSV
3+# See http://www.sublimetext.com/docs/3/syntax.html
4+name: Comma Separated Values
55file_extensions:
66 - csv
77 - tsv
8−scope: text.advanced_csv
8+scope: text.csv
9+variables:
10+ field_separator: (?:[,;\t])
11+ record_separator: (?:$\n?)
912contexts:
10− main:
11− - match: (\")
12− captures:
13− 1: string.quoted.double.advanced_csv
14− push:
15− - meta_scope: meta.quoted.advanced_csv
16− - match: (\")
17− captures:
18− 1: string.quoted.double.advanced_csv
19− pop: true
20− - include: main
21− - match: '(\[([+-]?\d*)(\:)?([+-]?\d*)(\,)?([+-]?\d*)(\:)?([+-]?\d*)\])?\s*([<>v^])?\s*(=)'
22− captures:
23− 1: keyword.operator.advanced_csv
24− 2: constant.numeric.formula.advanced_csv
25− 4: constant.numeric.formula.advanced_csv
26− 6: constant.numeric.formula.advanced_csv
27− 8: constant.numeric.formula.advanced_csv
28− 9: keyword.operator.advanced_csv
29− 10: keyword.operator.advanced_csv
13+ prototype:
14+ - match: (?={{record_separator}})
15+ pop: true
16+ fields:
17+ - match: ''
3018 push:
31− - meta_scope: meta.range.advanced_csv
32− - match: (?=(\")|$)
33− pop: true
34− - include: scope:source.python
35− - match: '(?<=^|,|\s|\")([0-9.eE+-]+)(?=$|,|\s|\")'
36− scope: meta.number.advanced_csv
37− captures:
38− 1: constant.numeric.advanced_csv
39− - match: '(?<=^|,|\s|\")([^, \t\"]+)(?=$|,|\s|\")'
40− scope: meta.nonnumber.advanced_csv
41− captures:
42− 1: storage.type.advanced_csv
43− - match: (\,)
44− scope: meta.delimiter.advanced_csv
45− captures:
46− 1: keyword.operator.advanced_csv
19+ - field_or_record_separator
20+ - field5
21+ - field_or_record_separator
22+ - field4
23+ - field_or_record_separator
24+ - field3
25+ - field_or_record_separator
26+ - field2
27+ - field_or_record_separator
28+ - field1
29+ main:
30+ - meta_include_prototype: false
31+ - match: '^'
32+ set: fields
33+
34+ field_or_record_separator:
35+ - meta_include_prototype: false
36+ - match: '{{record_separator}}'
37+ scope: punctuation.terminator.record.csv
38+ pop: true
39+ - match: '{{field_separator}}'
40+ scope: punctuation.separator.sequence.csv
41+ pop: true
42+
43+ field_contents:
44+ - match: '"'
45+ scope: punctuation.definition.string.begin.csv
46+ push: double_quoted_string
47+
48+ - match: (?={{field_separator}}|{{record_separator}})
49+ pop: true
50+
51+ double_quoted_string:
52+ - meta_include_prototype: false
53+ - meta_scope: string.quoted.double.csv
54+ - match: '""'
55+ scope: constant.character.escape.csv
56+ - match: '"'
57+ scope: punctuation.definition.string.end.csv
58+ pop: true
59+
60+ field1:
61+ - match: ''
62+ set:
63+ - meta_content_scope: meta.field-1.csv support.type
64+ - include: field_contents
65+ field2:
66+ - match: ''
67+ set:
68+ - meta_content_scope: meta.field-2.csv support.function
69+ - include: field_contents
70+ field3:
71+ - match: ''
72+ set:
73+ - meta_content_scope: meta.field-3.csv variable.other
74+ - include: field_contents
75+ field4:
76+ - match: ''
77+ set:
78+ - meta_content_scope: meta.field-4.csv constant.numeric
79+ - include: field_contents
80+ field5:
81+ - match: ''
82+ set:
83+ - meta_content_scope: meta.field-5.csv keyword.operator
84+ - include: field_contents