Improvements to CSV highlighting

This commit is contained in:
Keith Hall 2021-03-28 22:35:01 +03:00 committed by David Peter
parent 0b44aa6f68
commit 3559079de0
8 changed files with 203 additions and 51 deletions

3
.gitmodules vendored
View File

@ -61,9 +61,6 @@
[submodule "assets/syntaxes/Puppet"] [submodule "assets/syntaxes/Puppet"]
path = assets/syntaxes/02_Extra/Puppet path = assets/syntaxes/02_Extra/Puppet
url = https://github.com/russCloak/SublimePuppet url = https://github.com/russCloak/SublimePuppet
[submodule "assets/syntaxes/CSV"]
path = assets/syntaxes/02_Extra/CSV
url = https://github.com/wadetb/Sublime-Text-Advanced-CSV
[submodule "assets/themes/onehalf"] [submodule "assets/themes/onehalf"]
path = assets/themes/onehalf path = assets/themes/onehalf
url = https://github.com/sonph/onehalf url = https://github.com/sonph/onehalf

View File

@ -13,6 +13,8 @@
## Syntaxes ## Syntaxes
- Replaced "Advanced CSV" with a custom CSV syntax definition written especially for `bat`; see #1574 (@keith-hall)
## New themes ## New themes
## `bat` as a library ## `bat` as a library

View File

@ -7,7 +7,7 @@ index 9c2aa3e..180cbbf 100644
<string>JSON String</string> <string>JSON String</string>
<key>scope</key> <key>scope</key>
- <string>meta.structure.dictionary.json string.quoted.double.json</string> - <string>meta.structure.dictionary.json string.quoted.double.json</string>
+ <string>meta.mapping.key.json string.quoted.double.json</string> + <string>meta.mapping.key.json string.quoted.double.json, punctuation.separator.sequence.csv</string>
<key>settings</key> <key>settings</key>
<dict> <dict>
<key>foreground</key> <key>foreground</key>

@ -1 +0,0 @@
Subproject commit 4786d037a761bc45e516f6b0624a839919ec6d05

View File

@ -1,46 +1,84 @@
%YAML 1.2 %YAML 1.2
--- ---
# http://www.sublimetext.com/docs/3/syntax.html # See http://www.sublimetext.com/docs/3/syntax.html
name: Advanced CSV name: Comma Separated Values
file_extensions: file_extensions:
- csv - csv
- tsv - tsv
scope: text.advanced_csv scope: text.csv
variables:
field_separator: (?:[,;\t])
record_separator: (?:$\n?)
contexts: contexts:
prototype:
- match: (?={{record_separator}})
pop: true
fields:
- match: ''
push:
- field_or_record_separator
- field5
- field_or_record_separator
- field4
- field_or_record_separator
- field3
- field_or_record_separator
- field2
- field_or_record_separator
- field1
main: main:
- match: (\") - meta_include_prototype: false
captures: - match: '^'
1: string.quoted.double.advanced_csv set: fields
push:
- meta_scope: meta.quoted.advanced_csv field_or_record_separator:
- match: (\") - meta_include_prototype: false
captures: - match: '{{record_separator}}'
1: string.quoted.double.advanced_csv scope: punctuation.terminator.record.csv
pop: true pop: true
- include: main - match: '{{field_separator}}'
- match: '(\[([+-]?\d*)(\:)?([+-]?\d*)(\,)?([+-]?\d*)(\:)?([+-]?\d*)\])?\s*([<>v^])?\s*(=)' scope: punctuation.separator.sequence.csv
captures: pop: true
1: keyword.operator.advanced_csv
2: constant.numeric.formula.advanced_csv field_contents:
4: constant.numeric.formula.advanced_csv - match: '"'
6: constant.numeric.formula.advanced_csv scope: punctuation.definition.string.begin.csv
8: constant.numeric.formula.advanced_csv push: double_quoted_string
9: keyword.operator.advanced_csv
10: keyword.operator.advanced_csv - match: (?={{field_separator}}|{{record_separator}})
push: pop: true
- meta_scope: meta.range.advanced_csv
- match: (?=(\")|$) double_quoted_string:
pop: true - meta_include_prototype: false
- include: scope:source.python - meta_scope: string.quoted.double.csv
- match: '(?<=^|,|\s|\")([0-9.eE+-]+)(?=$|,|\s|\")' - match: '""'
scope: meta.number.advanced_csv scope: constant.character.escape.csv
captures: - match: '"'
1: constant.numeric.advanced_csv scope: punctuation.definition.string.end.csv
- match: '(?<=^|,|\s|\")([^, \t\"]+)(?=$|,|\s|\")' pop: true
scope: meta.nonnumber.advanced_csv
captures: field1:
1: storage.type.advanced_csv - match: ''
- match: (\,) set:
scope: meta.delimiter.advanced_csv - meta_content_scope: meta.field-1.csv support.type
captures: - include: field_contents
1: keyword.operator.advanced_csv field2:
- match: ''
set:
- meta_content_scope: meta.field-2.csv support.function
- include: field_contents
field3:
- match: ''
set:
- meta_content_scope: meta.field-3.csv variable.other
- include: field_contents
field4:
- match: ''
set:
- meta_content_scope: meta.field-4.csv constant.numeric
- include: field_contents
field5:
- match: ''
set:
- meta_content_scope: meta.field-5.csv keyword.operator
- include: field_contents

View File

@ -0,0 +1,58 @@
# SYNTAX TEST "CSV.sublime-syntax"
Forename,Surname,House No.,Street,City,Postcode
#^^^^^^^ meta.field-1
# ^ punctuation.separator.sequence
# ^^^^^^^ meta.field-2
# ^ punctuation.separator.sequence
# ^^^^^^^^^ meta.field-3
# ^ punctuation.separator.sequence
# ^^^^^^ meta.field-4
# ^ punctuation.separator.sequence
# ^^^^ meta.field-5
# ^ punctuation.separator.sequence
# ^^^^^^^^ meta.field-1
John,Doe,87,Citiville,TU43 6GH
#^^^ meta.field-1
# ^ punctuation.separator.sequence
# ^^^ meta.field-2
# ^ punctuation.separator.sequence
# ^^ meta.field-3
# ^ punctuation.separator.sequence
# ^^^^^^^^^ meta.field-4
# ^ punctuation.separator.sequence
# ^^^^^^^^ meta.field-5
Jane,Doe,22,"""Fun"" Street","The City, County",FA90 1XA
#^^^ meta.field-1
# ^ punctuation.separator.sequence
# ^^^ meta.field-2
# ^ punctuation.separator.sequence
# ^^ meta.field-3
# ^ punctuation.separator.sequence
# ^^^^^^^^^^^^^^^^ meta.field-4 string.quoted.double
# ^^ constant.character.escape
# ^^ constant.character.escape
# ^ punctuation.separator.sequence
# ^ meta.field-5 string.quoted.double punctuation.definition.string.begin
# ^^^^^^^^^^^^^^^^^ meta.field-5 string.quoted.double
# ^ meta.field-5 string.quoted.double punctuation.definition.string.end
# ^ punctuation.separator.sequence
# ^^^^^^^^ meta.field-1
Fred,Bloggs,"19","Street
#^^^ meta.field-1
# ^ punctuation.separator.sequence
# ^^^^^^ meta.field-2
# ^ punctuation.separator.sequence
# ^^^ meta.field-3 string.quoted.double
# ^ punctuation.separator.sequence
# ^ meta.field-4 punctuation.definition.string.begin
# ^^^^^^^^ meta.field-4 string.quoted.double
Spanning Multiple ""
#^^^^^^^^^^^^^^^^^^^^ meta.field-4 string.quoted.double
# ^^ constant.character.escape
Lines",Citee,P0stc0d3
#^^^^^ meta.field-4 string.quoted.double
# ^ meta.field-4 punctuation.definition.string.end
# ^ punctuation.separator.sequence
# ^^^^^ meta.field-5
# ^ punctuation.separator.sequence
# ^^^^^^^^ meta.field-1
Can't render this file because it contains an unexpected character in line 1 and column 15.

View File

@ -0,0 +1,58 @@
# SYNTAX TEST "CSV.sublime-syntax"
Forename Surname House No. Street City Postcode
#^^^^^^^ meta.field-1
# ^ punctuation.separator.sequence
# ^^^^^^^ meta.field-2
# ^ punctuation.separator.sequence
# ^^^^^^^^^ meta.field-3
# ^ punctuation.separator.sequence
# ^^^^^^ meta.field-4
# ^ punctuation.separator.sequence
# ^^^^ meta.field-5
# ^ punctuation.separator.sequence
# ^^^^^^^^ meta.field-1
John Doe 87 Citiville TU43 6GH
#^^^ meta.field-1
# ^ punctuation.separator.sequence
# ^^^ meta.field-2
# ^ punctuation.separator.sequence
# ^^ meta.field-3
# ^ punctuation.separator.sequence
# ^^^^^^^^^ meta.field-4
# ^ punctuation.separator.sequence
# ^^^^^^^^ meta.field-5
Jane Doe 22 """Fun"" Street" "The City County" FA90 1XA
#^^^ meta.field-1
# ^ punctuation.separator.sequence
# ^^^ meta.field-2
# ^ punctuation.separator.sequence
# ^^ meta.field-3
# ^ punctuation.separator.sequence
# ^^^^^^^^^^^^^^^^ meta.field-4 string.quoted.double
# ^^ constant.character.escape
# ^^ constant.character.escape
# ^ punctuation.separator.sequence
# ^ meta.field-5 string.quoted.double punctuation.definition.string.begin
# ^^^^^^^^^^^^^^^^^ meta.field-5 string.quoted.double
# ^ meta.field-5 string.quoted.double punctuation.definition.string.end
# ^ punctuation.separator.sequence
# ^^^^^^^^ meta.field-1
Fred Bloggs "19" "Street
#^^^ meta.field-1
# ^ punctuation.separator.sequence
# ^^^^^^ meta.field-2
# ^ punctuation.separator.sequence
# ^^^ meta.field-3 string.quoted.double
# ^ punctuation.separator.sequence
# ^ meta.field-4 punctuation.definition.string.begin
# ^^^^^^^^ meta.field-4 string.quoted.double
Spanning Multiple ""
#^^^^^^^^^^^^^^^^^^^^ meta.field-4 string.quoted.double
# ^^ constant.character.escape
Lines" Citee P0stc0d3
#^^^^^ meta.field-4 string.quoted.double
# ^ meta.field-4 punctuation.definition.string.end
# ^ punctuation.separator.sequence
# ^^^^^ meta.field-5
# ^ punctuation.separator.sequence
# ^^^^^^^^ meta.field-1
Can't render this file because it contains an unexpected character in line 1 and column 15.

View File

@ -1,7 +1,7 @@
first,last,address,city,zip first,last,address,city,zip
John,Doe,120 any st.,"Anytown, WW",08123 John,Doe,120 any st.,"Anytown, WW",08123
a,b a,b
1,"ha  1,"ha 
""ha""  ""ha"" 
ha",120 any st.,"Anytown, WW",08123 ha",120 any st.,"Anytown, WW",08123
3,4,120 any st.,"Anytown, WW",08123 3,4,120 any st.,"Anytown, WW",08123

Can't render this file because it contains an unexpected character in line 2 and column 276.