2018-05-18 19:35:45 +02:00
|
|
|
## Syntax Highlighting in bat
|
|
|
|
|
|
|
|
`bat` uses the [syntect](https://github.com/trishume/syntect) library to highlight source
|
|
|
|
code. As a basis, syntect uses [Sublime Text](https://www.sublimetext.com/) syntax definitions
|
|
|
|
in the `.sublime-syntax` format.
|
|
|
|
|
|
|
|
In order to add new syntaxes to `bat`, follow these steps:
|
|
|
|
|
|
|
|
1. 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`).
|
|
|
|
|
|
|
|
2. 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 the `assets/syntaxes` folder.
|
|
|
|
|
2019-02-07 22:31:37 +01:00
|
|
|
3. Run the `create.sh` script. It calls `bat cache --build` to parse all available
|
2018-05-18 19:35:45 +02:00
|
|
|
`.sublime-syntax` files and serialize them to a `syntaxes.bin` file (in this folder).
|
|
|
|
|
|
|
|
4. Re-compile `bat`. At compilation time, the `syntaxes.bin` file will be stored inside the
|
|
|
|
`bat` binary.
|
|
|
|
|
2019-01-16 20:04:46 +01:00
|
|
|
5. 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 of `bat`.
|
|
|
|
|
2018-05-18 19:35:45 +02:00
|
|
|
### 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:
|
|
|
|
|
2018-09-22 09:40:44 +02:00
|
|
|
* `Dart.sublime-syntax` => removed `#regex.dart` include.
|
2018-11-19 18:25:22 +01:00
|
|
|
* `INI.sublime-syntax` => added `.hgrc`, `hgrc`, and `desktop` file types.
|
2019-05-29 18:35:33 +02:00
|
|
|
* `Org mode.sublime-syntax` => removed `task` file type.
|
2018-12-14 23:06:45 +01:00
|
|
|
|
|
|
|
### Non-submodule additions
|
|
|
|
|
|
|
|
* `Assembly (x86_64)` has been manually added from https://github.com/13xforever/x86-assembly-textmate-bundle due to `git clone` recursion problems
|