.. | ||
completions | ||
manual | ||
patches | ||
syntaxes | ||
themes | ||
.gitattributes | ||
.ignore | ||
create.sh | ||
README.md | ||
syntaxes.bin | ||
theme_preview.rs | ||
themes.bin |
Syntax Highlighting in bat
bat
uses the syntect library to highlight source
code. As a basis, syntect uses Sublime Text syntax definitions
in the .sublime-syntax
format.
In order to add new syntaxes to bat
, follow these steps:
-
Find a Sublime Text syntax for the given language, preferably in a separate Git repository which can be included as a submodule (under
assets/syntaxes
). -
If the Sublime Text syntax is only available as a
.tmLanguage
file, open the file in Sublime Text and convert it to a.sublime-syntax
file via Tools -> Developer -> New Syntax from XXX.tmLanguage.... Save the new file in theassets/syntaxes
folder. -
Run the
create.sh
script. It callsbat cache --build
to parse all available.sublime-syntax
files and serialize them to asyntaxes.bin
file (in this folder). -
Re-compile
bat
. At compilation time, thesyntaxes.bin
file will be stored inside thebat
binary. -
If you send a pull request with your changes, please do not include the changed
syntaxes.bin
file. A new binary cache file will be created once before every new release ofbat
.
Troubleshooting
Make sure that the local cache does not interfere with the internally stored syntaxes and
themes (bat cache --clear
).
Manual modifications
The following files have been manually modified after converting from a .tmLanguage
file:
Dart.sublime-syntax
=> removed#regex.dart
include.INI.sublime-syntax
=> added.hgrc
,hgrc
,desktop
,hook
,automount
,device
,dnssd
link
,mount
,netdev
,network
,nspawn
,path
,service
,slice
,socket
,swap
,target
, andtimer
file types.Org mode.sublime-syntax
=> removedtask
file type.SML.sublime_syntax
=> removedml
file type.
Non-submodule additions
Assembly (x86_64)
has been manually added from https://github.com/13xforever/x86-assembly-textmate-bundle due togit clone
recursion problemsNim.sublime-syntax
has been added manually from https://github.com/getzola/zola/blob/master/sublime_syntaxes/Nim.sublime-syntax as there was no suitable Git repository for it. The original syntax seems to originate from https://github.com/Varriount/NimLimeRego.sublime-syntax
has been added manually from https://github.com/open-policy-agent/opa/blob/master/misc/syntax/sublime/rego.sublime-syntax as it is not kept in a standalone repository. The file is generated from https://github.com/open-policy-agent/opa/blob/master/misc/syntax/textmate/Rego.tmLanguageSML.sublime_syntax
has been added manually from https://github.com/seanjames777/SML-Language-Definitiona as it is not kept in a standalone repository. The file generated is from https://github.com/seanjames777/SML-Language-Definition/blob/master/sml.tmLanguageCabal.sublime_syntax
has been added manually from https://github.com/SublimeHaskell/SublimeHaskell/ - we don't want to include the whole submodule because it includes other syntaxes ("Haskell improved") as well.