Add optional output_buffer arg to Controller::run() and Controller::run_with_error_handler(), see #2618 (@Piturnah)
v0.23.0
Features
Implemented -S and --chop-long-lines flags as aliases for --wrap=never. See #2309 (@johnmatthiggins)
Breaking change: Environment variables can now override config file settings (but command-line arguments still have the highest precedence), see #1152, #1281, and #2381 (@aaronkollasch)
Implemented --nonprintable-notation=caret to support showing non-printable characters using caret notation. See #2429 (@einfachIrgendwer0815)
Bugfixes
Fix bat cache --clear not clearing the --target dir if specified. See #2393 (@miles170)
Other
Various bash completion improvements, see #2310 (@scop)
Disable completion of cache subcommand, see #2399 (@cyqsimon)
Signifigantly improve startup performance on macOS, see #2442 (@BlackHoleFox)
bat no longer crashes when encountering files that references missing syntaxes. See #915, #2181 (@Enselic)
Performance
Skip syntax highlighting on long lines (> 16384 chars) to help improve performance. See #2165 (@keith-hall)
Vastly improve startup time by lazy-loading syntaxes via syntect 5.0.0. This makes bat display small files ~75% faster than before. See #951, #2181 (@Enselic)
Other
Include info about custom assets in --diagnostics if used. See #2107, #2144 (@Enselic)
Syntaxes
Mapped clang-format config file (.clang-format) to YAML syntax (@TruncatedDinoSour)
log syntax: improved handling of escape characters in double quoted strings. See #2123 (@keith-hall)
Associate /var/spool/mail/* and /var/mail/* with the Email syntax. See #2156 (@cyqsimon)
Added cmd-help syntax to scope --help messages. See #2148 (@victor-gp)
Deprecate HighlightingAssets::syntaxes() and HighlightingAssets::syntax_for_file_name(). Use HighlightingAssets::get_syntaxes() and HighlightingAssets::get_syntax_for_path() instead. They return a Result which is needed for upcoming lazy-loading work to improve startup performance. They also return which SyntaxSet the returned SyntaxReference belongs to. See #1747, #1755, #1776, #1862 (@Enselic)
Remove HighlightingAssets::from_files and HighlightingAssets::save_to_cache. Instead of calling the former and then the latter you now make a single call to bat::assets::build. See #1802, #1971 (@Enselic)
Replace the error::Error(error::ErrorKind, _) struct and enum with an error::Error enum. Error(ErrorKind::UnknownSyntax, _) becomes Error::UnknownSyntax, etc. Also remove the error::ResultExt trait. These changes stem from replacing error-chain with thiserror. See #1820 (@Enselic)
Add new MappingTarget enum variant MapExtensionToUnknown. Refer to its documentation for more information. Also mark MappingTarget as #[non_exhaustive] since more enum variants might be added in the future. See #1703 (@cbolgiano), #2012 (@Enselic)
v0.18.3
Bugfixes
Bump git2 dependency to fix build with Rust 1.54, see #1761
v0.18.2
Features
Ignore known backup/template filename suffixes when selecting the syntax, see #1687 (@scop)
Bugfixes
Fix for a security vulnerability on Windows (CVE-2021-36753). Prior to this release, bat would execute programs called less/less.exe from the current working directory (instead of the one from PATH) with priority. An attacker might be able to use this by placing a malicious program in a shared directory where the user would execute bat. bat users on Windows are advised to upgrade to this version. See #1724 and #1472 (@Ry0taK).