diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000..b4987cae --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,18 @@ +version: 2 +updates: +- package-ecosystem: cargo + directory: "/" + schedule: + interval: monthly + time: "04:00" + timezone: Europe/Berlin + ignore: + - dependency-name: git2 + versions: + - 0.13.17 +- package-ecosystem: gitsubmodule + directory: "/" + schedule: + interval: monthly + time: "04:00" + timezone: Europe/Berlin diff --git a/.github/workflows/CICD.yml b/.github/workflows/CICD.yml index 2116fd85..11119192 100644 --- a/.github/workflows/CICD.yml +++ b/.github/workflows/CICD.yml @@ -79,6 +79,13 @@ jobs: run: bat --list-languages - name: List of themes run: bat --list-themes + - name: Check documentation + env: + RUSTDOCFLAGS: -D warnings + uses: actions-rs/cargo@v1 + with: + command: doc + args: --no-deps --document-private-items --all-features build: name: ${{ matrix.job.os }} (${{ matrix.job.target }}) diff --git a/.gitmodules b/.gitmodules index 98bf500f..993123b0 100644 --- a/.gitmodules +++ b/.gitmodules @@ -61,9 +61,6 @@ [submodule "assets/syntaxes/Puppet"] path = assets/syntaxes/02_Extra/Puppet 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"] path = assets/themes/onehalf url = https://github.com/sonph/onehalf @@ -218,7 +215,7 @@ url = https://github.com/hesstobi/sublime_gnuplot [submodule "assets/syntaxes/02_Extra/SystemVerilog"] path = assets/syntaxes/02_Extra/SystemVerilog - url = git@github.com:TheClams/SystemVerilog.git + url = https://github.com/TheClams/SystemVerilog.git [submodule "assets/themes/visual-studio-dark-plus"] path = assets/themes/visual-studio-dark-plus - url = https://github.com/vidann1/visual-studio-dark-plus.git + url = https://github.com/vidann1/visual-studio-dark-plus.git \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 2b02eb41..d3341148 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,10 +8,13 @@ ## Other - `Input::ordinary_file` and `Input::with_name` now accept `Path` rather than `OsStr` see #1571 (@matklad) +- The `LESS` environment variable is now included in `bat --diagnostic`, see #1589 (@Enselic) - Increased min. required Rust version to 1.45 ## Syntaxes +- Replaced "Advanced CSV" with a custom CSV syntax definition written especially for `bat`; see #1574 (@keith-hall) + ## New themes ## `bat` as a library diff --git a/Cargo.lock b/Cargo.lock index a4949d67..893f68a6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -226,9 +226,9 @@ dependencies = [ [[package]] name = "console" -version = "0.14.0" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cc80946b3480f421c2f17ed1cb841753a371c7c5104f51d507e13f532c856aa" +checksum = "3993e6445baa160675931ec041a5e03ca84b9c6e32a056150d3aa2bdda0a1f45" dependencies = [ "encode_unicode", "lazy_static", diff --git a/Cargo.toml b/Cargo.toml index f0eb26c0..f5c3b358 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -36,7 +36,7 @@ regex-fancy = ["syntect/regex-fancy"] # Use the rust-only "fancy-regex" engine atty = { version = "0.2.14", optional = true } ansi_term = "^0.12.1" ansi_colours = "^1.0" -console = "0.14.0" +console = "0.14.1" lazy_static = { version = "1.4", optional = true } wild = { version = "2.0", optional = true } content_inspector = "0.2.4" diff --git a/assets/patches/Monokai-Extended.tmTheme.patch b/assets/patches/Monokai-Extended.tmTheme.patch index 24573a7b..16624d5f 100644 --- a/assets/patches/Monokai-Extended.tmTheme.patch +++ b/assets/patches/Monokai-Extended.tmTheme.patch @@ -7,7 +7,7 @@ index 9c2aa3e..180cbbf 100644 JSON String scope - meta.structure.dictionary.json string.quoted.double.json -+ meta.mapping.key.json string.quoted.double.json ++ meta.mapping.key.json string.quoted.double.json, punctuation.separator.sequence.csv settings foreground diff --git a/assets/syntaxes/02_Extra/CSV b/assets/syntaxes/02_Extra/CSV deleted file mode 160000 index 4786d037..00000000 --- a/assets/syntaxes/02_Extra/CSV +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 4786d037a761bc45e516f6b0624a839919ec6d05 diff --git a/assets/syntaxes/02_Extra/CSV.sublime-syntax b/assets/syntaxes/02_Extra/CSV.sublime-syntax index 1bbc5b97..cca7cd2c 100644 --- a/assets/syntaxes/02_Extra/CSV.sublime-syntax +++ b/assets/syntaxes/02_Extra/CSV.sublime-syntax @@ -1,46 +1,78 @@ %YAML 1.2 --- -# http://www.sublimetext.com/docs/3/syntax.html -name: Advanced CSV +# See http://www.sublimetext.com/docs/3/syntax.html +name: Comma Separated Values file_extensions: - csv - tsv -scope: text.advanced_csv +scope: text.csv +variables: + field_separator: (?:[,;\t]) + record_separator: (?:$\n?) contexts: + prototype: + - match: (?={{record_separator}}) + pop: true + fields: + - match: '' + push: + - field_or_record_separator + - field4 + - field_or_record_separator + - field3 + - field_or_record_separator + - field2 + - field_or_record_separator + - field1 main: - - match: (\") - captures: - 1: string.quoted.double.advanced_csv - push: - - meta_scope: meta.quoted.advanced_csv - - match: (\") - captures: - 1: string.quoted.double.advanced_csv - pop: true - - include: main - - match: '(\[([+-]?\d*)(\:)?([+-]?\d*)(\,)?([+-]?\d*)(\:)?([+-]?\d*)\])?\s*([<>v^])?\s*(=)' - captures: - 1: keyword.operator.advanced_csv - 2: constant.numeric.formula.advanced_csv - 4: constant.numeric.formula.advanced_csv - 6: constant.numeric.formula.advanced_csv - 8: constant.numeric.formula.advanced_csv - 9: keyword.operator.advanced_csv - 10: keyword.operator.advanced_csv - push: - - meta_scope: meta.range.advanced_csv - - match: (?=(\")|$) - pop: true - - include: scope:source.python - - match: '(?<=^|,|\s|\")([0-9.eE+-]+)(?=$|,|\s|\")' - scope: meta.number.advanced_csv - captures: - 1: constant.numeric.advanced_csv - - match: '(?<=^|,|\s|\")([^, \t\"]+)(?=$|,|\s|\")' - scope: meta.nonnumber.advanced_csv - captures: - 1: storage.type.advanced_csv - - match: (\,) - scope: meta.delimiter.advanced_csv - captures: - 1: keyword.operator.advanced_csv + - meta_include_prototype: false + - match: '^' + set: fields + + field_or_record_separator: + - meta_include_prototype: false + - match: '{{record_separator}}' + scope: punctuation.terminator.record.csv + pop: true + - match: '{{field_separator}}' + scope: punctuation.separator.sequence.csv + pop: true + + field_contents: + - match: '"' + scope: punctuation.definition.string.begin.csv + push: double_quoted_string + + - match: (?={{field_separator}}|{{record_separator}}) + pop: true + + double_quoted_string: + - meta_include_prototype: false + - meta_scope: string.quoted.double.csv + - match: '""' + scope: constant.character.escape.csv + - match: '"' + scope: punctuation.definition.string.end.csv + pop: true + + field1: + - match: '' + set: + - meta_content_scope: meta.field-1.csv support.type + - include: field_contents + 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 constant.numeric + - include: field_contents + field4: + - match: '' + set: + - meta_content_scope: meta.field-4.csv keyword.operator + - include: field_contents + diff --git a/assets/syntaxes/02_Extra/Julia b/assets/syntaxes/02_Extra/Julia index 45a1b6fe..cc13e7d4 160000 --- a/assets/syntaxes/02_Extra/Julia +++ b/assets/syntaxes/02_Extra/Julia @@ -1 +1 @@ -Subproject commit 45a1b6fe6cc37a2b614ae199d85c702b8711e22a +Subproject commit cc13e7d4ef74a6556af09d8858d2cc6a47ef5451 diff --git a/assets/syntaxes/02_Extra/SCSS_Sass b/assets/syntaxes/02_Extra/SCSS_Sass index 48683220..63819a1a 160000 --- a/assets/syntaxes/02_Extra/SCSS_Sass +++ b/assets/syntaxes/02_Extra/SCSS_Sass @@ -1 +1 @@ -Subproject commit 4868322030c3644d6b8cfff68c85849789d9bdb2 +Subproject commit 63819a1ab6b2075360933b2cfe41b416de0e3c26 diff --git a/assets/syntaxes/02_Extra/syntax_test_csv.csv b/assets/syntaxes/02_Extra/syntax_test_csv.csv new file mode 100644 index 00000000..c997b2bd --- /dev/null +++ b/assets/syntaxes/02_Extra/syntax_test_csv.csv @@ -0,0 +1,60 @@ +# 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-1 +# ^ punctuation.separator.sequence +# ^^^^^^^^ meta.field-2 +John,Doe,87,Logon Road,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-1 +# ^ punctuation.separator.sequence +# ^^^^^^^^ meta.field-2 +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-1 string.quoted.double punctuation.definition.string.begin +# ^^^^^^^^^^^^^^^^^ meta.field-1 string.quoted.double +# ^ meta.field-1 string.quoted.double punctuation.definition.string.end +# ^ punctuation.separator.sequence +# ^^^^^^^^ meta.field-2 +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-1 +# ^ punctuation.separator.sequence +# ^^^^^^^^ meta.field-2 diff --git a/assets/syntaxes/02_Extra/syntax_test_tsv.tsv b/assets/syntaxes/02_Extra/syntax_test_tsv.tsv new file mode 100644 index 00000000..8c2645b8 --- /dev/null +++ b/assets/syntaxes/02_Extra/syntax_test_tsv.tsv @@ -0,0 +1,60 @@ +# 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-1 +# ^ punctuation.separator.sequence +# ^^^^^^^^ meta.field-2 +John Doe 87 Logon Road 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-1 +# ^ punctuation.separator.sequence +# ^^^^^^^^ meta.field-2 +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-1 string.quoted.double punctuation.definition.string.begin +# ^^^^^^^^^^^^^^^^^ meta.field-1 string.quoted.double +# ^ meta.field-1 string.quoted.double punctuation.definition.string.end +# ^ punctuation.separator.sequence +# ^^^^^^^^ meta.field-2 +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-1 +# ^ punctuation.separator.sequence +# ^^^^^^^^ meta.field-2 diff --git a/src/bin/bat/main.rs b/src/bin/bat/main.rs index eb047809..dadcc673 100644 --- a/src/bin/bat/main.rs +++ b/src/bin/bat/main.rs @@ -238,6 +238,7 @@ fn run() -> Result { .info(EnvironmentVariables::list(&[ "SHELL", "PAGER", + "LESS", "BAT_PAGER", "BAT_CACHE_PATH", "BAT_CONFIG_PATH", diff --git a/tests/syntax-tests/highlighted/CSV/comma_in_quotes.csv b/tests/syntax-tests/highlighted/CSV/comma_in_quotes.csv index 2ad5b914..9bd0da1a 100644 --- a/tests/syntax-tests/highlighted/CSV/comma_in_quotes.csv +++ b/tests/syntax-tests/highlighted/CSV/comma_in_quotes.csv @@ -1,7 +1,7 @@ -first,last,address,city,zip -John,Doe,120 any st.,"Anytown, WW",08123 -a,b -1,"ha  -""ha""  -ha",120 any st.,"Anytown, WW",08123 -3,4,120 any st.,"Anytown, WW",08123 +first,last,address,city,zip +John,Doe,120 any st.,"Anytown, WW",08123 +a,b +1,"ha  +""ha""  +ha",120 any st.,"Anytown, WW",08123 +3,4,120 any st.,"Anytown, WW",08123