diff --git a/Cargo.lock b/Cargo.lock index b5f3b82a..e6a5c308 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -61,7 +61,7 @@ dependencies = [ [[package]] name = "bat" -version = "0.1.0" +version = "0.2.0" dependencies = [ "ansi_term 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "atty 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/Cargo.toml b/Cargo.toml index c2f764c9..874f6a82 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,7 +7,7 @@ license = "MIT/Apache-2.0" name = "bat" readme = "README.md" repository = "https://github.com/sharkdp/bat" -version = "0.1.0" +version = "0.2.0" [dependencies] atty = "0.2.2" diff --git a/README.md b/README.md index 43e77c3a..32e53cc5 100644 --- a/README.md +++ b/README.md @@ -32,3 +32,38 @@ Make sure that you have the devel-version of libopenssl installed (see instructi ``` bash cargo install bat ``` + +## Customization + +`bat` uses the excellent [`syntect`](https://github.com/trishume/syntect/) library for syntax highlighting. `syntect` can read any Sublime Text language definitions and highlighting theme. + +To build your own syntax-set and theme, follow these steps: + +Create a folder with syntax highlighting theme: +``` bash +mkdir -p ~/.config/bat/themes +cd ~/.config/bat/themes + +# Download a theme, for example: +git clone https://github.com/jonschlinkert/sublime-monokai-extended + +# Create a 'Default.tmTheme' link +ln -s "sublime-monokai-extended/Monokai Extended.tmTheme" Default.tmTheme +``` + +Create a folder with language definition files: +``` bash +mkdir -p ~/.config/bat/syntax +cd ~/.config/bat/syntax + +# Download some language definition files, for example: +git clone https://github.com/sublimehq/Packages/ +rm -rf Packages/Markdown +git clone https://github.com/jonschlinkert/sublime-markdown-extended +``` + +Finally, use the following command to parse all these files into a binary +cache: +``` bash +bat init-cache +``` diff --git a/src/main.rs b/src/main.rs index 4797c557..8a1f1287 100644 --- a/src/main.rs +++ b/src/main.rs @@ -368,7 +368,8 @@ fn run() -> Result<()> { true_color: is_truecolor_terminal(), }; - let assets = HighlightingAssets::from_binary(); + let assets = + HighlightingAssets::from_cache().unwrap_or(HighlightingAssets::from_binary()); let theme = assets.theme_set.themes.get("Default").ok_or_else(|| { io::Error::new(