TruncatedDinosour
cde239e809
Syntax: add clang-format ( #2076 )
...
Highlight .clang-format files as YAML
Co-authored-by: Ari Archer <truncateddinosour@gmail.com>
Co-authored-by: David Peter <mail@david-peter.de>
2022-03-06 20:01:49 +01:00
cyqsimon
14ddda0a8b
Recognize files in $XDG_CONFIG_HOME/git/
and $HOME/.config/git/
better ( #2067 )
...
* git global config - lookup $XDG_CONFIG_HOME faithfully
* Use `bool::then`
* Cover both `$XDG_CONFIG_HOME` & `$HOME/.config`
* Remove unused import
* Global git config tests
* Added trailing newline
* Fix git config test
* Wrote to changelog
* Revert change of `Result::ok` to `Result::unwrap`
* Apply suggestions from code review
Co-authored-by: Martin Nordholts <enselic@gmail.com>
* Guard against empty `$HOME`
Co-authored-by: Martin Nordholts <enselic@gmail.com>
2022-02-26 17:01:00 +01:00
Mahdi Dibaiee
d21f1e8f17
Underline highlighted lines in ANSI theme ( #1985 )
...
* Underline highlighted lines in ANSI theme
* add test for ansi highlight underline, fix underscore in plain
2022-02-14 19:02:14 +01:00
Dan Davison
4e36a56014
Expose syntect theme and syntax sets ( #2030 )
...
Fixes #2026
Ref https://github.com/dandavison/delta/issues/895
2022-02-08 08:00:12 +01:00
Mahdi Dibaiee
312c8ef01f
Add new --style
called header-filesize
and display it by default ( #1988 )
...
Also rename `header` to `header-filename`.
Related to #1701
2022-02-07 20:48:57 +01:00
Martin Nordholts
486510395b
Allow the license used by GraphQL
...
This license is apparently common enough that GitHub recognizes it. See
https://github.com/dncrews/GraphQL-SublimeText3/blob/master/LICENSE .
This will fix the CI failure in #2000
2022-02-07 06:14:07 +01:00
Martin Nordholts
5b37438f08
bat --help
: Put --ignored-suffix
directly after --map-syntax
...
It feels out of place to have between `--acknowledgements` and `--help`.
2022-01-08 17:01:20 +01:00
Martin Nordholts
68528983d7
Mark MappingTarget
as #[non_exhaustive]
for increased semver flexibility
...
This will allow us to add new enum variants in the future without breaking
semver compatibility. See
https://doc.rust-lang.org/reference/attributes/type_system.html#the-non_exhaustive-attribute
Since we already added an enum variant since v0.18.3, now is a good time to mark
it as `#[non_exhaustive]`.
2022-01-04 08:19:51 +01:00
Martin Nordholts
a3ea798246
Credit syntax definition and theme authors with new --acknowledgements
option ( #1971 )
...
The text that is printed is generated when building assets, by analyzing LICENSE
and NOTICE files that comes with syntaxes and themes.
We take this opportunity to also add a NOTICE file as defined by Apache License 2.0.
2021-12-11 14:00:45 +01:00
Ethan P
63ad53817d
Improved ANSI passthrough ( #1596 )
...
Improve handling of ANSI passthrough. Fix ANSI passthrough for --wrap=never. Add test for ANSI passthrough.
2021-12-08 16:06:42 +01:00
Martin Nordholts
e250da8aaa
Run cargo clippy --fix --all-targets --all-features
with Rust 1.57
...
Clippy in the newly released Rust 1.57 found some new lints. Conveniently, all
of them were fixable with `--fix`.
2021-12-08 08:45:04 +01:00
Martin Nordholts
7fceb4878f
Load themes lazily for improved startup time ( #1969 )
...
This is for #951 . Syntax lazy-loading will come later and have a much bigger
impact, but lazy-loading of themes does not have negligible impact.
2021-12-06 09:14:15 +01:00
Bojan Durdevic
b8e79a2160
Line range edge cases test
2021-11-24 07:27:36 +01:00
Bojan Durdevic
715b0d8bf5
Line range minus overflow prevention
2021-11-24 07:27:36 +01:00
Bojan Durdevic
0eb4aaac1e
Line range minus syntax clippy suggestions addressed
2021-11-24 07:27:36 +01:00
Bojan Durdevic
bc86c29185
Support for line range minus syntax
2021-11-24 07:27:36 +01:00
Martin Nordholts
5519f9c716
Use once_cell instead of lazy_static
...
once_cell can do what lazy_static does and more, so replace lazy_static with
once_cell.
See https://docs.rs/once_cell/1.8.0/once_cell/#general-purpose-lazy-evaluation
2021-11-22 22:03:03 +01:00
Martin Nordholts
dd0925a946
Replace lazycell with once_cell
...
We started to use lazycell because syntect already used it. But syntect has
changed to use once_cell. So we should also do that to prepare for using the
upcoming version of syntect.
2021-11-22 22:03:03 +01:00
Martin Nordholts
d7671fa8e3
Remove the code related to minimal_syntaxes.bin
...
To get fast startup, syntect will instead start to lazy-load syntaxes. See
https://github.com/trishume/syntect/pull/393 and discussions in linked PRs.
2021-11-22 20:42:01 +01:00
Martin Nordholts
e79b07bf5e
HighlightingAssets::get_syntax_set(): Make private
...
Was forgotten in aefc8fd824
.
2021-11-22 20:42:01 +01:00
Bojan Đurđević
d6ed5e6746
Support for ignored-suffix CLI arguments ( #1892 )
2021-11-19 17:05:23 +01:00
rhysd
d5f737f402
show skip message when asset cache is not found
2021-10-26 21:34:10 +02:00
cbolgiano
7fe4fdf33d
Introduce MapExtensionToUnknown MappingTarget ( #1889 )
...
Co-authored-by: Martin Nordholts <enselic@gmail.com>
2021-10-25 17:59:12 +02:00
Martin Nordholts
4081ace4b9
Include git hash in bat -V
and bat --version
output if present
...
I had to use a `lazy_static` due to that the clap API that only accepts a
reference to a version string. And, in our code, only a 'static reference to a
version string.
Code could probably be refactored to accept a "normal" reference, but that would
be a major undertaking.
2021-10-24 11:36:55 +02:00
rhysd
f28d9db3d0
use io::Empty instead of crafted dummy stdin struct
2021-10-23 13:04:24 +02:00
rhysd
deb80af449
remove unused lifetime parameter
2021-10-23 13:04:24 +02:00
rhysd
dc0acbbb90
inline a closure which is called only once
2021-10-23 13:04:24 +02:00
rhysd
92ba42a602
do not take stdin lock when stdin is not used
2021-10-23 13:04:24 +02:00
rhysd
ed3246c423
Make grep-cli optional dependency
2021-10-17 21:22:57 +02:00
Diva M
ce4ddc0911
use saturating substraction to calculate Line ranges
2021-10-17 21:21:23 +02:00
Martin Nordholts
554374667e
Deny unsafe code in lib and bin
...
The deny also applies recursively to submodules.
2021-10-04 08:08:33 +02:00
Martin Nordholts
aefc8fd824
src/printer.rs: Simplify Plain Text fallback code
...
By forwarding the task to find the `Plain Text` syntax to `assets`. Not only does
the code become simpler; we also get rid of a call to `self.get_syntax_set()`
which is beneficial to the long term goal of replacing `syntaxes.bin` with
`minimal_syntaxes.bin`.
Note that the use of `.expect()` is not a regression in error handling. It was
previously hidden in `.find_syntax_plain_text()`.
2021-09-29 17:54:45 +02:00
Martin Nordholts
405a80f3ee
HighlightingAssets: Turn get_syntax_for_path() into public API
2021-09-28 07:26:20 +02:00
Martin Nordholts
ad98d35a48
HighlightingAssets: Implement get_syntax_for_file_name() with get_syntax_for_path()
...
We can do this since the file_name() of a file_name is file_name.
2021-09-28 07:26:20 +02:00
Martin Nordholts
b69ab219d7
HighlightingAssets: Extract get_syntax_for_path() method
...
To make the code easier to refactor further.
2021-09-28 07:26:20 +02:00
Martin Nordholts
dc8225f682
src/assets.rs: Extract helper method OpenedInput::path()
2021-09-27 08:00:58 +02:00
Martin Nordholts
9d9b266f54
build_assets.rs: Enable dump of syntax dependencies to Graphviz dot file
2021-09-24 20:07:55 +02:00
Martin Nordholts
b9d01c1a61
build_assets.rs: Ignore explicit contexts when tracking dependencies
2021-09-24 20:07:55 +02:00
Martin Nordholts
122cae7902
build_assets.rs: Sort first to make dependencies.dedup() actually useful
2021-09-24 20:07:55 +02:00
Martin Nordholts
5143f3ad43
build_assets.rs: Add code to track dependents of each syntax
...
This information is useful when you want to build several SyntaxSets, but
without having to duplicate SyntaxDefinitions. For example:
"Rust" has no dependencies. But "Markdown" depends on "Rust". With the data
structures this code adds, we know that "Rust" is a dependent syntax for
"Markdown", and can construct a SyntaxSet that takes that into account.
Note that code has a temporary environment flag to ignore any information about
dependents when constructing SyntaxSets. Code that makes use of the new data
structure will be added later.
2021-09-22 09:14:19 +02:00
Martin Nordholts
a6dc25a216
build_assets.rs: Make OtherSyntaxLookup come before SyntaxToDependencies
...
It makes more sense structurally when we later introduce SyntaxToDependents.
2021-09-22 09:14:19 +02:00
Martin Nordholts
f04d2a9d6a
build_assets.rs: Rename 'Dependency' to 'OtherSyntax'
...
So that we later can use it for not only information about dependencies, but
also for information about dependents.
2021-09-22 09:14:19 +02:00
Martin Nordholts
eb3b3b9f8d
src/printer.rs: Add HighlighterFromSet helper
...
The main benefit is that we get rid of a call to `assets.get_syntax_set()`,
which in turn makes it easier to later get rid of `syntaxes.bin`.
2021-09-22 06:11:32 +02:00
Martin Nordholts
0994f3783f
HighlightingAssets: Move common get_extension_syntax() code into find_syntax_by_extension()
2021-09-22 06:03:24 +02:00
Martin Nordholts
974dec38e3
HighlightingAssets: Inline find_syntax_by_file_name() and find_syntax_by_file_name_extension()
...
There is no benefit to keeping separate functions.
2021-09-22 06:03:24 +02:00
Martin Nordholts
a0c363647f
src/assets.rs: Use /// not // for COMPRESS_* consts
2021-09-18 07:05:04 +02:00
Martin Nordholts
d989224a8a
HighlightingAssets: Inline absolute_path
...
Its name is confusing, because it does not always hold an absolute path. Get rid
of this problem by inlining it.
2021-09-18 06:19:52 +02:00
Martin Nordholts
82f439e715
HighlightingAssets: Simplify absolute_path with .map_or_else()
2021-09-18 06:19:52 +02:00
Martin Nordholts
b034879eae
HighlightingAssets: No need for both path and path_str
2021-09-18 06:19:52 +02:00
Martin Nordholts
9ed9a6fc3d
Simplify HighlightingAssets::get_syntax() first_line logic ( #1852 )
...
And make self.get_first_line_syntax() be called lazily.
2021-09-16 17:01:12 +02:00