NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #4930 most downloaded on crates.io
A cat(1) clone with wings.
Last release 10 months ago
02 Dec 2025
Release timing varies
gaps range from 6 weeks to 1.2 years
Nearly every release is documented
notes for 42 of 42 stable releases
Nothing withdrawn
no release was ever pulled
8 years old
42 releases · first in 2018
Add paging to '-h' and '--help' see PR #3478 ( @MuntasirSZN )
--list-themes with an explicit pager, see #3457 (@abhinavcool42)= flag value separator, see #3442 (@lmmx)cat compatibility. See #3496 (@keith-hall)--help now correctly reads the config file for theme information etc. See #3507 (@keith-hall)artifact quadlet files, see #3497 (@xduugu)ksh) using Bash syntax, see #3509 (@keith-hall)One column per quarter.
Add build for windows/ARM64 platform. #3190 ( @alcroito )
--list-themes, see PR #3239 (@einfachIrgendwer0815)bat -r :-10 / bat -r='-10:', see #3068 (@ajesipow)bat -r 30::5 / bat -r 30:40:5, see #3345 (@cavanaug)bat --pager=builtin see PR #3402 (@academician)BAT_THEME_DARK and BAT_THEME_LIGHT being ignored, see issue #3171 and PR #3168 (@bash)--list-themes from outputting default theme info to stdout when it is piped, see #3189 (@einfachIrgendwer0815)--style=changes no longer prints a two-space indent when the file is unmodified, see issue #2710 and PR #3406 (@jyn514)-n) and style components not printing when piping output, see issue #2935 and PR #3438 (@lmmx)bat from vendored sources #3179 (@dtolnay)--list-languages parameter #2942 (@sblondon)vendored-libgit2) to build with vendored libgit2 version without depending on the system's one #3426 (@0x61nas)paru configuration files #3182 (@cyqsimon)nix's 'flake.lock lockfiles #3196 (@odilf)ndjson extension to JSON syntax, see #3209 (@keith-hall)csproj, vbproj, props and targets extensions to XML syntax, see #3213 (@keith-hall)/etc/apt/sources.list files, see #3215 (@keith-hall).mill files to Scala syntax for Mill build tool configuration files #3311 (@krikera).flatpakref and .flatpakrepo files to INI syntax #3353 (@Ferenc-).kshrc files to Bash syntax #3364 (@ritoban23)/var/log/dmesg files to Syslog syntax #3412 (@keith-hall)go.mod and go.sum) highlighting, see #3424 (@DarkMatter-999)Set terminal title to file names when Paging is not Paging::Never #2807 ( @Oliver-Looney )
bat --squeeze-blank/bat -s will now squeeze consecutive empty lines, see #1441 (@eth-p) and #2665 (@einfachIrgendwer0815)bat --squeeze-limit to set the maximum number of empty consecutive when using --squeeze-blank, see #1441 (@eth-p) and #2665 (@einfachIrgendwer0815)PrettyPrinter::squeeze_empty_lines to support line squeezing for bat as a library, see #1441 (@eth-p) and #2665 (@einfachIrgendwer0815)#!/usr/bin/env bun #2913 (@sharunkumar)bat --strip-ansi={never,always,auto} to remove ANSI escape sequences from bat's input, see #2999 (@eth-p)--binary=as-text for printing binary content, see issue #2974 and PR #2976 (@einfachIrgendwer0815)--completion <shell>, see issue #2057 and PR #3126 (@einfachIrgendwer0815)NO_COLOR support, see #2767 (@acuteenvy)time dependency caused by standard library regression #3045 (@cyqsimon)$LESSOPEN support, see #2805 (@Anomalocaridid)zsh completion, see #2772 (@okapia)bat, see #2995 (@akinomyoga)cmd-help: scope subcommands followed by other terms, and other misc improvements, see #2819 (@victor-gp).xsh files with xonsh syntax that is Python, see #2840 (@anki-code).jsonc with json syntax, see #2795 (@mxaddict).jsonld files with json syntax, see #3037 (@vorburger).textproto files with ProtoBuf syntax, see #3038 (@vorburger).geojson files with json syntax, see #3084 (@mvaaltola).aws/{config,credentials}, see #2795 (@mxaddict)/etc/wireguard/*.conf, see #2874 (@cyqsimon)*.mkd files to Markdown syntax, see issue #3060 and PR #3061 (@einfachIrgendwer0815)/etc/pacman.conf #2961 (@cyqsimon)uv.lock with TOML syntax, see #3132 (@fepegar)bat as a librarysyntax_mapping::SyntaxMapping #2755 (@cyqsimon)
SyntaxMapping::get_syntax_for is now correctly publicSyntaxMapping::{empty,builtin} are removed; use SyntaxMapping::new insteadSyntaxMapping::mappings is replaced by SyntaxMapping::{builtin,custom,all}_mappingsController::run_with_error_handler's error handler FnMut, see #2831 (@rhysd)theme::theme for choosing an appropriate theme based on theHighlightingAssets::default_theme. Use theme::default_theme instead.PrettyPrinter::print_with_writer for custom output destinations, see #3070 (@kojix2)Add environment variable BAT_PAGING , see #2629 ( @einfachIrgendwer0815 )
BAT_PAGING, see #2629 (@einfachIrgendwer0815)--features lessopen) support for LESSOPEN and LESSCLOSE. See #1597, #1739, #2444, #2602, and #2662 (@Anomalocaridid)more not being found on Windows when provided via BAT_PAGER, see #2570, #2580, and #2651 (@mataha)--map-syntax to be case insensitive #2520serde_yaml to 0.9. See #2627 (@Raghav-Bell)LineRange::from and LineRange::parse_range, see #2674, #2698 (@skoriop)-pp override --paging and vice versa when passed as a later argument, see #2660 (@J-Kappes)is-terminal crate instead of atty, see #2530 (@nickelc)os-release with bash syntax, see #2587 (@cyqsimon)Containerfile with Dockerfile syntax, see #2606 (@einfachIrgendwer0815)ksh files with bash syntax, see #2633 (@johnmatthiggins)sarif files with JSON syntax, see #2695 (@rhysd)ron files with rust syntax, see #2427 (@YeungOnion).dpkg-new and .dpkg-tmp to ignored suffixe, see #2595 (@scop)*.jsonl => json, see #2539 (@WinterCore)Julia syntax, see #2553 (@dependabot)NSIS support, see #2577 (@idleberg)ssh-config, see #2697 (@mrmeszaros)bat as a libraryBreaking change: Environment variables can now override config file settings (but command-line arguments still have the highest precedence), see #1152…
-S and --chop-long-lines flags as aliases for --wrap=never. See #2309 (@johnmatthiggins)--nonprintable-notation=caret to support showing non-printable characters using caret notation. See #2429 (@einfachIrgendwer0815)cache subcommand, see #2399 (@cyqsimon)todo.txt syntax, see #2375 (@BANOnotIT)requirements.txt syntax, see #2361 (@Freed-Wu)pdm.lock with TOML syntax, see #2410Todo.txt: Fix highlighting of contexts and projects at beginning of done.txt, see #2411cmd-help: overhaul scope names (colors) to improve theme support; misc syntax improvements. See #2419 (@victor-gp)Bring back pre-processing of ANSI escape characters to so that some common bat use cases starts working again. See #2308 ( @Enselic )
Make the default macOS theme depend on Dark Mode. See #2197 , #1746 ( @Enselic )
PAGER=batcat. See #2235 (@johnmatthiggins)--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)fstab dump and pass fields, see #2246 (@yuvalmo)Command Help syntax, see #2255Julia: Fix syntax highlighting for function name starting with struct, see #2230LiveScript, see #2291.mts and .cts files with the TypeScript syntax. See #2236 (@kidonng)bat as a libraryBump regex dependency from 1.5.4 to 1.5.5 to fix CVE-2022-24713 , see #2145 , #2139 ( @Enselic )
--show-all, see #2038 (@Synthetica9)--style=default option and make it the default. It is less verbose than full, see #2061 (@IsaacHorvath)less as pager, see #2162 (@nfisher1226)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)/var/spool/mail/* and /var/mail/* with the Email syntax. See #2156 (@cyqsimon).inf files with the INI syntax. See #2190 (@Enselic)bat as a libraryshow_nonprintable with PrettyPrinter, see #2142bat::error::Error enum as #[non_exhaustive] to allow adding new variants without future semver breakage. See #2181 (@Enselic)Error::SyntectError(syntect::LoadingError) to Error::SyntectError(syntect::Error). See #2181 (@Enselic)Error::SyntectLoadingError(syntect::LoadingError) enum variant. See #2181 (@Enselic)New style component header-filesize to show size of the displayed file in the header. See #1988 ( @mdibaiee )
header-filesize to show size of the displayed file in the header. See #1988 (@mdibaiee)GraphQL: Add support for interfaces implementing interfaces and consider ampersand an operator. See #2000_vimrc and _gvimrc files with the VimL syntax. See #2002poetry.lock files with the TOML syntax. See #2049.mesh, .task, .rgen, .rint, .rahit, .rchit, .rmiss, and .rcall with the GLSL syntax. See #2050JQ syntax, see #2072 (@clarfonthey)$XDG_CONFIG_HOME/git/ or $HOME/.config/git/. See #2067 (@cyqsimon)bat as a libraryget_syntax_set and get_theme methods on HighlightingAssets. See #2030 (@dandavison)HeaderFilename and HeaderFilesize to StyleComponent enum, and mark it #[non_exhaustive]. See #1988 (@mdibaiee)Deprecate HighlightingAssets::syntaxes() and HighlightingAssets::syntax_for_file_name() . Use HighlightingAssets::get_syntaxes() and HighlightingAsset…
bat, see #1596 (@eth-p)--wrap=never, see #1596 (@eth-p)x:-delta (minus) syntax in line ranges (e.g. 20:-10). See #1901 (@bojan88)--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)x:+delta syntax in line ranges (e.g. 20:+10). See #1810 (@bojan88)--acknowledgements option that gives credit to theme and syntax definition authors. See #1971 (@Enselic)bat -V and bat --version output if present. See #1921 (@Enselic)*.conf extension. See #1703 (@cbolgiano)vimrc and gvimrc files, see #1763 (@SuperSandro2000)slim syntax, see #1693 (@mfinelli)requirements.txt syntax has been removed due to incompatible license requirements.bat as a libraryHighlightingAssets::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)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)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)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)Bump git2 dependency to fix build with Rust 1.54, see #1761
git2 dependency to fix build with Rust 1.54, see #1761Fix for a security vulnerability on Windows. Prior to this release, bat would execute programs called less/less.exe from the current working directory…
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).dash syntax, see #1654 (@mohamed-abdelnour)XAML syntax, see #1590 and #1655 (@mohamed-abdelnour)DotENV syntax also for .env.default and .env.defaults files, see #1669Mouse support and screen clearing broken for less versions with minor version number (581.2), see #1629 and #1639 (@aswild)
less versions with minor version number (581.2), see #1629 and #1639 (@aswild)Input::ordinary_file and Input::with_name now accept Path rather than OsStr see #1571 (@matklad)LESS environment variable is now included in bat --diagnostic, see #1589 (@Enselic)bat; see #1574 (@keith-hall)ansi replaces ansi-dark and ansi-light, see #1104 and #1412 (@mk12). Breaking change: users that were previously using one of the ansi-* themes should…
bat --list-languages is called, see #1394 (@stku1985)--style=plain, see #1438 (@Enselic)bat --list-themes), see #1439 (@rsteube)PAGER (but not BAT_PAGER or --pager) is more or most, silently use less instead to ensure support for colors, see #1063 (@Enselic)PAGER is bat, silently use less to prevent recursion. For BAT_PAGER or --pager, exit with error, see #1413 (@Enselic)BAT_CONFIG_PATH ignored by bat if non-existent, see #1550 (@sharkdp)--diagnostic option to collect information for bug reports, see #1459 (@sharkdp).resource extension for Robot Framework files, see #1386gnuplot syntax, see #1431 (@sharkdp)ansi replaces ansi-dark and ansi-light, see #1104 and #1412 (@mk12). Breaking change: users that were previously using one of the ansi-* themes should switch to ansi.gruvbox or gruvbox-white should update and use gruvbox-dark/gruvbox-light instead.bat as a libraryPrettyPrinter methods have been removed (they were previously deprecated):
input_stdin_with_nameinput_from_bytes_with_nameinput_from_reader_with_namevcs_modification_markers (if the git feature is not enabled)Running bat without arguments fails ("output file is also an input"), see #1396
bat without arguments fails ("output file is also an input"), see #1396Added a new --style value, rule, which adds a simple horizontal ruled line between files, see #1276 (@tommilligan)
--style value, rule, which adds a simple horizontal ruled line between files, see #1276 (@tommilligan)-S ("chop long lines") to less if --wrap=never is set in bat, see #1255 (@gahag)bat is being used as pager, see #1343 (@adrian-rivera)*.ebuild and *.eclass files, see #1292 (@sharkdp)zsh completion when using -p, see #1320 (@xzfc)--help (and vice versa with -h), see #1215 (@henil)Contributors section to README, see #1348 (@adrian-rivera)Added support for the NO_COLOR environment variable, see #1021 and #1031 (@eth-p)
NO_COLOR environment variable, see #1021 and #1031 (@eth-p)-P short flag to disable paging, see #1075 and #1082 (@LordFlashmeow)--force-colorization/-f flag to provide an alias for forced color and decoration output, see #1141 (@alexanderkarlis)--list-languages, see #1076 and #1135 (@Kienyew)--help text (@sharkdp)fstab syntax for crypttab files, see #1073 (@sharkdp)$XDG_CONFIG_HOME/git/, see #1191 (@ahmedelgabri)bat as a libraryInput descriptions with InputDescription (@eth-p)Inputs to PrettyPrinter (@eth-p)Input::theme_preview_file is no longer available. (@eth-p)liquid (@sharkdp).Added missing Solarized themes, see #1027
Cannot run bat with relative paths, see #1022
bat with relative paths, see #1022PrettyPrinter::vcs_modification_markers has been marked deprecated when building without the git feature, see #997 and #1020 (@eth-p, @sharkdp)
--map-syntax doesn't work with names provided through --file-name (@eth-p)-l or --map-syntax, see #1004 (@eth-p)bat as a libraryPrettyPrinter::vcs_modification_markers has been marked deprecated when building without the git feature, see #997 and #1020 (@eth-p, @sharkdp)onig_sys on various platforms have been resolved by upgrading to syntect 4.2, which includes a new onig version that allows to build onig_sys without the bindgen dependency. This removes the need for libclang(-dev) to be installed to compile bat. Package maintainers might want to remove clang as a build dependency. See #650 for more details.Fix highlighting of Markdown files, see #963 and #977
base16 theme (was broken since in v0.14), see #972, #934 and #979 (@mk12).
Users suffering from #865 ("no color for bat in ssh from a Windows client") can use the ansi-dark and ansi-light themes from now on.Add a new --diff/-d option that can be used to only show lines surrounding Git changes, i.e. added, removed or modified lines. The amount of additiona
--diff/-d option that can be used to only show lines surrounding
Git changes, i.e. added, removed or modified lines. The amount of additional
context can be controlled with --diff-context=N. See #23 and #940bat cache --build): the bat startup time should now be twice as fast (@lzutao).bat as a libraryConfig struct has changed and
the error handler needs a new &mut dyn Write argument). The high-level API is not
affected.Added a new --file-name … option to overwrite the displayed filename(s) in the header. This is useful when piping input into bat. See #654 and #892 (@
--file-name <name>… option to overwrite the displayed filename(s)
in the header. This is useful when piping input into bat. See #654 and #892 (@neuronull).--generate-config-file option to create an initial configuration file
at the right place. See #870 (@jmick414)--highlight-line did not work correctly in combination with --tabs=0 and --wrap=never,
see #937bat will now maintain a
metadata.yaml file which includes information about the bat version which was
used to create the cached files. When loading cached files, we now print an error
if they have been created with an incompatible version. See #882liquid dependency to 0.20, see #880 (@ignatenkobrain)bat as a libraryA completely new "high level" API has been added that is much more convenient
to use. See the examples folder for the updated code. The older "low level"
API is still available (basically everything that is not in the root bat
module), but has been refactored quite a bit. It is recommended to only use
the new "high level" API, if possible. This will be much easier to keep stable.
Note that this should still be considered a "beta" release of bat-as-a-library.
For more details and some screenshots of the example programs, see #936.
Stripped out a lot of binary-only dependencies, see #895 and #899 (@dtolnay)
This introduces a features = ["application"] which is enabled by default and pulls in
everything required by bat the application. When depending on bat as a library, downstream
Cargo.toml should disable this feature to cut out inapplicable heavy dependencies:
[dependencies]
bat = { version = "0.14", default-features = false }
Other optional functionality has also been put behind features: paging and git support.
Allow using the library with older syntect, see #896 and #898 (@dtolnay)
(Breaking change) Glob-based syntax mapping, see #877 and #592. With this change, users need to update their bat config files (bat --config-file), if…
bat as a libraryBeginning with this release, bat can be used as a library (#423).
This was a huge effort and I want to thank all people who made this possible: @DrSensor, @mitsuhiko, @mre, @eth-p!
bat crate, see #679 (@DrSensor)I want to stress that this is the very first release of the library. Things are very likely to change. A lot of things are still missing (including the documentation).
That being said, you can start using it! See the example programs in examples/.
You can see the API documentation here: https://docs.rs/bat/
(Breaking change) Glob-based syntax mapping, see #877 and #592. With this change,
users need to update their bat config files (bat --config-file), if they have any --map-syntax settings
present.
The option now works like this:
--map-syntax <glob-pattern>:<syntax-name>
For more information, see the --help text, the man page or the README.
This new feature allows us to properly highlight files like:
/etc/profile~/.ssh/config--highlight-line now accepts line ranges, see #809 (@lkalir)
Proper wrapping support for output with wide Unicode characters, see #811 #787 and #815 (@Kogia-sima)
A lot of updates to existing syntaxes via #644 (@benwaffle, @keith-hall)
BAT_CACHE_PATH can be used to place cached bat assets in a non-standard path, see #829 (@neuronull)
Support combination of multiple styles at the same time, see #857 (@aslpavel)
.sc files should be treated as scala files, see #443 (@benwaffle)build don't respect shebang lines, see #685 (@sharkdp)bat about 10% faster, see #719 (@bolinfest, @sharkdp)bat for MacOS dark mode, see README (@jerguslejko)bat as a man-pager, see #652, see #667 (@sharkdp)--help text and manpage, see #653 and #700 (@hrlmartins)/etc/fstab, see #696 (@flopp and @eth-p)/etc/group and /etc/passwd, see #698 (@argentite)/proc/cpuinfo and /proc/meminfo, see #593 (@sharkdp)bat is now in the official Ubuntu and Debian repositories, see #323 and #705 (@MarcoFalke)bat can now be installed via MacPorts, see #675 (@bn3t)Fixes a bug for older Windows versions (*"The procedure entry point CreateFile2 could not be located"*), see #643 (@rivy)
CreateFile2 could not be located"), see #643 (@rivy)Binary file content can now be viewed with bat -A, see #623, #640 (@pjsier and @sharkdp)
bat -A, see #623, #640 (@pjsier and @sharkdp)bat can now be used as a man pager. Take a look at the README and #523 for more details.--line-ranges, see #570 (@eth-p)-L as an alias for --list-languages--terminal-width -10 is parsed incorrectly, see #611requirements.txt.env-l ssh_config), see #582 (@issmirnov)/etc/hosts, see #583 (@issmirnov)strace syntax, see #599bat is now in the official Gentoo repositories, see #588 (@toku-sa-n)bat is now in the official Alpine Linux repositories, see #586 (@5paceToast)bat is in the official Fedora repositories, see #610 (@ignatenkobrain)Three new special color themes are available: ansi-light, ansi-dark and base16. These are useful for people that often switch from dark to light theme
ansi-light, ansi-dark and base16. These
are useful for people that often switch from dark to light themes in their terminal emulator
or for people that want the colors to match their terminal theme colors. For more details,
see #543 and #490 (@mk12, implementation idea by @trishume)-p/--plain option can now be used twice (typically -pp). The first -p switches the
--style to "plain". The second -p disables the pager. See #560 and #552 (@eth-p)less when using --pager, see #509--terminal-width=0 is now disallowed, see #559 (@eth-p)cache, see #557bat is now available on Chocolatey, see #541 (@rasmuskriest)Added new --highlight-line option, see #453, #346 and #175 (@tskinn and @sharkdp)
--highlight-line <N> option, see #453, #346 and #175 (@tskinn and @sharkdp)~/.config/bat, see #442 (@lavifb). If you are on macOS, you need to copy your configuration directory from the previous place (~/Library/Preferences/bat) to the new place (~/.config/bat).less if PAGER environment variable contains something like less -F (which is missing the -R option), see #430 (@majecty)bat cache --init to bat cache --build, see #498--config-dir and --cache-dir options from bat cache to bat and hide them from the help text.--style=plain, see #379.desktop files (@jleclanche)A new -A/--show-all option has been added to show and highlight non-printable characters (in analogy to GNU cats option):
A new -A/--show-all option has been added to show and highlight non-printable characters (in analogy to GNU cats option):
see #395 and #381 for more details.
Added --pager option (to configure the pager from the configuration file), see #362 (@majecty)
Added BAT_CONFIG_PATH environment variable to set a non-default path for bats configuration file, see #375 (@deg4uss3r)
Allow for multiple occurrences of --style to allow for the configuration
of styles from the config file, see #367 (@sindreij)
Allow for multiple --line-range arguments, see #23
The --terminal-width option can now also accept offsets, see #376
Use of italics is now disabled by default (see #389 for details). They can be
re-enabled by adding --italic-text=always to your configuration file.
The default tab-width has been set to 4.
Added new "Sublime Snazzy" theme.
Shell completions are currently not shipped anymore, see #372 for details.
PAGER="bat", see #383 (@rodorgas)bat is now available on openSUSE, see #405 (@dmarcoux)
Added section about the new configuration file in the README (@deg4uss3r)
Chinese translation of README (@chinanf-boy)
Re-written tests for --tabs (@choznerol)
Speed up integration tests, see #394
Support for a configuration file with the following simple format:
Support for a configuration file with the following simple format:
--tabs=4
--theme="Sublime Snazzy"
# A line-comment
--map-syntax .ignore:.gitignore
--map-syntax PKGBUILD:bash
--map-syntax Podfile:ruby
# Flags and options can also be on a single line:
--wrap=never --paging=never
The configuration file path can be accessed via bat --config-file. On Linux,
it is stored in ~/.config/bat/config.
Support for the BAT_OPTS environment variable with the same format as specified
above (in a single line). This takes precedence over the configuration file.
See also #310.
Support for custom syntax mappings via the -m/--max-syntax option.
This allows users to (re)map certain file extensions or file names to an existing syntax:
bat --map-syntax .config:json ...
The option can be use multiple times. Note that you can easily make these mappings permanent by using bats new configuration file.
See #169
Support pager command-line arguments in PAGER and BAT_PAGER, see #352 (@Foxboron)
Add support for wildcards in Windows CMD, see #309 (@zxey)
First-line syntax detection for all input types, see #205
Encoding support for UTF-16LE and UTF-16BE, see #285
New syntaxes: Robot framework (@sanga)
JavaDoc comments break syntax highlighting in .java files, see #81
Bat Panics on Haskell Source Code, see #314
Better -h and --help texts.
Updated documentation on how to configure bats pager
Updated documentation for light backgrounds, see #328 (@russtaylor)
Generate shell completions during build, see #115 (@davideGiovannini)
A lot of new tests have been written
bat is now available via Termux, see #341 (@fornwall)
bat is now available via nix, see #344 (@mgttlinger)
bat is now available via Docker, see #331 (@danlynn)
Use the ansi_colours package by @mina86 for better true-color approximation on 8 bit color terminals, see #319 and #202.
ansi_colours package by @mina86 for better true-color approximation on 8 bit color terminals, see #319 and #202.--style=plain/-p is used, see #289Tabs are now (optionally) expanded to spaces. This can be controlled with the new --tabs command-line option or the BAT_TABS environment variable. The
Tabs are now (optionally) expanded to spaces. This can be controlled with the new
--tabs command-line option or the BAT_TABS environment variable. The
new feature also closes two bugs #166 and #184. For more information, see #302 (@eth-p).
Added support for the BAT_STYLE environment variable, see #208 (@ms2300)
Added OneHalf theme for terminals with a light-gray background, see #256
Added new syntaxes for CSV, JSX in JavaScript and TypeScript, Cabal, Dart, F#, PureScript, Swift, Crystal, PowerShell (Many Thanks to @tobenna and @mimadrid)
Query git diff only when needed, see #303 (@ShikChen)
Disable wrapping when --plain is used, see #289 (@eth-p)
Can read files named cache, see #275 (@BK1603)
A lot of bugfixes for Windows, see #252, #264
Detect less reliably and in a portable way, see #271 and #290 (@Aankhen)
last decoration line is not formatted properly with --wrap never, see #299 (@Rogach)
Do not show file header for directories, see #292
Enabled a new aarch64 build target, see #258 (@rachitchokshi)
Provide Debian packages for armhf, see #280 (@rachitchokshi)
Added README section about "bat on Windows" (@Aankhen)
Windows installation via scoop (@meltinglava)
Fixed panic when running bat --list-languages | head, see #232 (@mchlrhw)
bat --list-languages | head, see #232 (@mchlrhw)--color settings for --list-themes and --list-languages, see #233The --list-themes option now shows a preview for each highlighting theme (@ms2300)
--list-themes option now shows a preview for each highlighting theme (@ms2300)-p/--plain as an alias for --style=plain, see #212 (@ms2300)bat will now copy input bytes 1:1.$BAT_CONFIG_DIR/themes are now loaded in addition to
the default themes (they may also override), see #172Default.tmTheme symlink is not necessary anymore.bat cache --init leads to duplicated syntaxes, see #206--help text.Added --line-range n:m option to print a range of lines, see #159 (@tskinn)
--line-range n:m option to print a range of lines, see #159 (@tskinn)BAT_THEME environment variable, see README and #177 (@mandx)PAGER and BAT_PAGER environment variables can be used to control the pager that bat uses, see #158 and the new README sectionbat binary by default. Please refer to these new sections in the README: Adding new syntaxes, Adding new themes, also see #172bat is now in the official Arch package repositories.(this is just a small bugfix release, see 0.4.0 for all features and changes)
(this is just a small bugfix release, see 0.4.0 for all features and changes)
cargo test when bat is not checked out in a Git repository, see #161Support for line-wrapping, see #54 and #102 (@eth-p)
--style parameter, see #74 and README (@pitkley)--theme and --list-themes options, see #89 (@rleungx)-u and -n options, see #134syntax to syntaxes, see README.--theme or --color can now override themselves.--help text..bashrc, CMakeLists.txt etc., see #100less, see #98 (@ghuls)Automatic paging by integrating with less, see #29 (@BrainMaestro)
less, see #29 (@BrainMaestro)--color=auto/always/never option, see #26 (@BrainMaestro)--list-languages option to print all available syntaxes, see #69 (@connorkuehl)-l/--language, see #19 (@BrainMaestro)--style), see #5 (@nakulcg)init-cache sub-command has been removed. The cache can now be controlled via
bat cache. See bat cache -h for all available commands.bat <(echo a) <(echo b)), see #80I'd like to say a big THANK YOU to all contributors and everyone that has given us some form of feedback.
Special thanks go to @BrainMaestro for his huge support with new features, bug reports and code reviews!
Added a new statically linked version of bat (..-musl-..)
..-musl-..)Remove openssl dependency completely, see #30.
Support for custom syntaxes, add 'Markdown extended' theme
Initial release
Initial release
Your coding agent can read these notes before it upgrades. Set up the MCP server →