Bat Versions Save

A cat(1) clone with wings.

v0.24.0

6 months ago

v0.24.0

Features

  • Add environment variable BAT_PAGING, see #2629 (@einfachIrgendwer0815)
  • Add opt-in (--features lessopen) support for LESSOPEN and LESSCLOSE. See #1597, #1739, #2444, #2602, and #2662 (@Anomalocaridid)

Bugfixes

  • Fix more not being found on Windows when provided via BAT_PAGER, see #2570, #2580, and #2651 (@mataha)
  • Switched default behavior of --map-syntax to be case insensitive #2520
  • Updated version of serde_yaml to 0.9. See #2627 (@Raghav-Bell)
  • Fix arithmetic overflow in LineRange::from and LineRange::parse_range, see #2674, #2698 (@skoriop)
  • Fix paging not happening when stdout is interactive but stdin is not, see #2574 (@Nigecat)
  • Make -pp override --paging and vice versa when passed as a later argument, see #2660 (@J-Kappes)

Other

  • Output directory for generated assets (completion, manual) can be customized, see #2515 (@tranzystorek-io)
  • Use the is-terminal crate instead of atty, see #2530 (@nickelc)
  • Add Winget Releaser workflow, see #2519 (@sitiom)
  • Bump MSRV to 1.70, see #2651 (@mataha)

Syntaxes

  • Associate os-release with bash syntax, see #2587 (@cyqsimon)
  • Associate Containerfile with Dockerfile syntax, see #2606 (@einfachIrgendwer0815)
  • Replaced quotes with double quotes so fzf integration example script works on windows and linux. see #2095 (@johnmatthiggins)
  • Associate ksh files with bash syntax, see #2633 (@johnmatthiggins)
  • Associate sarif files with JSON syntax, see #2695 (@rhysd)
  • Associate ron files with rust syntax, see #2427 (@YeungOnion)
  • Add support for WebGPU Shader Language, see #2692 (@rhysd)
  • Add .dpkg-new and .dpkg-tmp to ignored suffixe, see #2595 (@scop)
  • fix: Add syntax mapping *.jsonl => json, see #2539 (@WinterCore)
  • Update Julia syntax, see #2553 (@dependabot)
  • add NSIS support, see #2577 (@idleberg)
  • Update ssh-config, see #2697 (@mrmeszaros)

bat as a library

  • Add optional output_buffer arg to Controller::run() and Controller::run_with_error_handler(), see #2618 (@Piturnah)

v0.23.0

1 year ago

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)
  • Bump MSRV to 1.62, see #2496 (@Enselic)

Syntaxes

  • Added support for Ada, see #1300 and #2316 (@dkm)
  • Added todo.txt syntax, see #2375 (@BANOnotIT)
  • Improve Manpage.sublime-syntax. See #2364 (@Freed-Wu) and #2461 (@keith-hall)
  • Added a new requirements.txt syntax, see #2361 (@Freed-Wu)
  • Added a new VimHelp syntax, see #2366 (@Freed-Wu)
  • Associate pdm.lock with TOML syntax, see #2410
  • Todo.txt: Fix highlighting of contexts and projects at beginning of done.txt, see #2411
  • cmd-help: overhaul scope names (colors) to improve theme support; misc syntax improvements. See #2419 (@victor-gp)
  • Added support for Crontab, see #2509 (@keith-hall)

v0.22.1

1 year ago

Bugfixes

  • Bring back pre-processing of ANSI escape characters to so that some common bat use cases starts working again. See #2308 (@Enselic)

v0.22.0

1 year ago

Features

  • Make the default macOS theme depend on Dark Mode. See #2197, #1746 (@Enselic)
  • Support for separate system and user config files. See #668 (@patrickpichler)

Bugfixes

  • Prevent fork nightmare with PAGER=batcat. See #2235 (@johnmatthiggins)
  • Make --no-paging/-P override --paging=... if passed as a later arg, see #2201 (@themkat)
  • --map-syntax and --ignored-suffix now works together, see #2093 (@czzrr)
  • Strips byte order mark from output when in non-loop-through mode. See #1922 (@dag-h)

Other

  • Relaxed glibc requirements on amd64, see #2106 and #2194 (@sharkdp)
  • Improved fish completions. See #2275 (@zgracem)
  • Stop pre-processing ANSI escape characters. Syntax highlighting on ANSI escaped input is not supported. See #2185 and #2189 (@Enselic)

Syntaxes

  • NSE (Nmap Scripting Engine) is mapped to Lua, see #2151 (@Cre3per)
  • Correctly color fstab dump and pass fields, see #2246 (@yuvalmo)
  • Update Command Help syntax, see #2255
  • Julia: Fix syntax highlighting for function name starting with struct, see #2230
  • Minor update to LiveScript, see #2291
  • Associate .mts and .cts files with the TypeScript syntax. See #2236 (@kidonng)
  • Fish history is mapped to YAML. See #2237 (@kidonng)

bat as a library

  • Make bat::PrettyPrinter::syntaxes() iterate over new bat::Syntax struct instead of &syntect::parsing::SyntaxReference. See #2222 (@Enselic)
  • Clear highlights after printing, see #1919 and #1920 (@rhysd)

v0.21.0

1 year ago

Features

  • Correctly render tab stops in --show-all, see #2038 (@Synthetica9)
  • Add a --style=default option and make it the default. It is less verbose than full, see #2061 (@IsaacHorvath)
  • Enable BusyBox less as pager, see #2162 (@nfisher1226)
  • File extensions are now matched case-insensitively. See #1854, #2181 (@Enselic)

Bugfixes

  • Bump regex dependency from 1.5.4 to 1.5.5 to fix CVE-2022-24713, see #2145, #2139 (@Enselic)
  • 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)
  • Slightly adjust Zig syntax. See #2136 (@Enselic)
  • Associate .inf files with the INI syntax. See #2190 (@Enselic)

bat as a library

  • Allow configuration of show_nonprintable with PrettyPrinter, see #2142
  • The binary format of syntaxes.bin has been changed due to syntaxes now being lazy-loaded via syntect 5.0.0. See #2181 (@Enselic)
  • Mark bat::error::Error enum as #[non_exhaustive] to allow adding new variants without future semver breakage. See #2181 (@Enselic)
  • Change Error::SyntectError(syntect::LoadingError) to Error::SyntectError(syntect::Error). See #2181 (@Enselic)
  • Add Error::SyntectLoadingError(syntect::LoadingError) enum variant. See #2181 (@Enselic)

v0.20.0

2 years ago

Features

  • New style component header-filesize to show size of the displayed file in the header. See #1988 (@mdibaiee)
  • Use underline for line highlighting on ANSI, see #1730 (@mdibaiee)

Bugfixes

  • Fix bash completion on bash 3.x and bash-completion 1.x. See #2066 (@joshpencheon)

Syntaxes

  • GraphQL: Add support for interfaces implementing interfaces and consider ampersand an operator. See #2000
  • Associate _vimrc and _gvimrc files with the VimL syntax. See #2002
  • Associate poetry.lock files with the TOML syntax. See #2049
  • Associate .mesh, .task, .rgen, .rint, .rahit, .rchit, .rmiss, and .rcall with the GLSL syntax. See #2050
  • Added support for JQ syntax, see #2072 (@clarfonthey)
  • Properly associate global git config files rooted in $XDG_CONFIG_HOME/git/ or $HOME/.config/git/. See #2067 (@cyqsimon)

bat as a library

  • Exposed get_syntax_set and get_theme methods on HighlightingAssets. See #2030 (@dandavison)
  • Added HeaderFilename and HeaderFilesize to StyleComponent enum, and mark it #[non_exhaustive]. See #1988 (@mdibaiee)

v0.19.0

2 years ago

Performance

  • Reduce startup time in loop-through mode (e.g. when redirecting output) by 90%. See #1747 (@Enselic)
  • Load themes lazily to make bat start 25% faster when disregarding syntax load time. See #1969 (@Enselic)
  • Python syntax highlighting no longer suffers from abysmal performance in specific scenarios. See #1688 (@keith-hall)
  • Fix for poor performance when ANSI escape sequences are piped to bat, see #1596 (@eth-p)
  • Fix for incorrect handling of ANSI escape sequences when using --wrap=never, see #1596 (@eth-p)
  • Load custom assets as fast as integrated assets, see #1753 (@Enselic)

Features

  • Support for x:-delta (minus) syntax in line ranges (e.g. 20:-10). See #1901 (@bojan88)
  • Support for --ignored-suffix argument. See #1892 (@bojan88)
  • $BAT_CONFIG_DIR is now a recognized environment variable. It has precedence over $XDG_CONFIG_HOME, see #1727 (@billrisher)
  • Support for x:+delta syntax in line ranges (e.g. 20:+10). See #1810 (@bojan88)
  • Add new --acknowledgements option that gives credit to theme and syntax definition authors. See #1971 (@Enselic)
  • Include git hash in bat -V and bat --version output if present. See #1921 (@Enselic)

Bugfixes

  • First line not shown in diff context. See #1891 (@divagant-martian)
  • Do not ignore syntaxes that handle file names with a *.conf extension. See #1703 (@cbolgiano)

Other

  • Add PowerShell completion, see #1826 (@rashil2000)
  • Minimum supported Rust version (MSRV) bumped to 1.51, see #1994 (@mdibaiee)

Syntaxes

  • Groff, see #1685 (@scop)
  • HTTP Requests and Responses, see #1748 (@keith-hall)
  • LLVM, see #1777 (@ioncodes)
  • Highlight for vimrc and gvimrc files, see #1763 (@SuperSandro2000)
  • Syslog highlighting improvements, see #1793 (@scop)
  • Added support for slim syntax, see #1693 (@mfinelli)
  • Racket, see #1884 (@jubnzv)
  • LiveScript, see #1915 (@Enselic)
  • MediaWiki, see #1925 (@sorairolake)
  • The requirements.txt syntax has been removed due to incompatible license requirements.
  • Dart, new highlighter, see #1959 (@Ersikan)
  • SCSS and Sass syntaxes updated, see #1766 (@Enselic)
  • PowerShell syntax updated, see #1935 (@Enselic)
  • TypeScript syntax updated, see #1834 (@Enselic)

bat as a library

  • 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

2 years ago

Bugfixes

  • Bump git2 dependency to fix build with Rust 1.54, see #1761

v0.18.2

2 years ago

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).

Other

  • Add bash completion, see #1678 (@scop)
  • Fix Clippy lints, see #1661 (@mohamed-abdelnour)
  • Add syntax highlighting test files, see #1213 and #1668 (@mohamed-abdelnour)

Syntaxes

  • Upgraded Julia syntax to fix a highlighting bug, see #1692
  • Added support for dash syntax, see #1654 (@mohamed-abdelnour)
  • Added support for XAML syntax, see #1590 and #1655 (@mohamed-abdelnour)
  • Apply DotENV syntax also for .env.default and .env.defaults files, see #1669

v0.18.1

2 years ago

Bugfixes

  • Mouse support and screen clearing broken for less versions with minor version number (581.2), see #1629 and #1639 (@aswild)

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

  • Improved the Syslog syntax highlighting, see #1606 (@keith-hall)
  • Replaced "Advanced CSV" with a custom CSV syntax definition written especially for bat; see #1574 (@keith-hall)
  • Added SystemVerilog file syntax, see #1580 (@SeanMcLoughlin)
  • Added Solidity and Vyper syntax, see #1602 (@Ersikan)

New themes

  • Dark+ VS Code theme, see #1588 and #1598 (@PatriotRossii)