A syntax-highlighting pager for git, diff, and grep output
Go to file
2019-07-12 12:18:19 -04:00
assets Use syntax and theme data built by bat. Fixes #4, #5 2019-06-29 18:12:57 -04:00
completion/bash bash completion 2019-06-30 16:24:44 -04:00
src Refactor: Use field init syntax 2019-07-12 12:18:19 -04:00
.gitignore gitignore 2019-07-08 23:51:09 -04:00
Cargo.toml Refactor: box drawing module 2019-07-12 01:05:32 -04:00
LICENSE Add license 2019-07-01 00:48:49 -04:00
Makefile Add --no-structural-changes argument 2019-07-10 12:34:22 -04:00
README.md Replace diff metadata with horizontal line 2019-07-10 12:24:04 -04:00

Δ

A syntax-highlighter for git.

image image
delta --dark (default) delta --light --width=variable --highlight-removed

Usage

delta 0.1.0
Dan Davison <dandavison7@gmail.com>
A syntax-highlighter for git.

USAGE:
    delta [FLAGS] [OPTIONS]

FLAGS:
        --compare-themes       Compare available syntax highlighting themes. To use this option, supply git diff output
                               to delta on standard input. For example: `git show --color=always | delta --compare-
                               themes`.
        --dark                 Use colors appropriate for a dark terminal background.  For more control, see --theme,
                               --plus-color, and --minus-color.
    -h, --help                 Prints help information
        --highlight-removed    Apply syntax highlighting to removed lines. The default is to apply syntax highlighting
                               to unchanged and new lines only.
        --light                Use colors appropriate for a light terminal background. For more control, see --theme,
                               --plus-color, and --minus-color.
        --list-languages       List supported languages and associated file extensions.
        --list-themes          List available syntax highlighting themes.
    -V, --version              Prints version information

OPTIONS:
        --minus-color <minus_color>    The background color (RGB hex) to use for removed lines.
        --plus-color <plus_color>      The background color (RGB hex) to use for added lines.
        --theme <theme>                The syntax highlighting theme to use.
    -w, --width <width>                The width (in characters) of the background color highlighting. By default, the
                                       width is the current terminal width. Use --width=variable to apply background
                                       colors to the end of each line, without right padding to equal width.

Installation

  1. Install the Rust development environment:
    See https://www.rust-lang.org/tools/install.

  2. Clone this repo

  3. Build the executable:

    cd delta
    cargo build
    

    This creates an executable inside the repo at target/debug/delta. Make sure this executable is found on your shell $PATH.

    For example, if ~/bin is in your $PATH, then you could use a symlink:

    cd ~/bin
    ln -s /path/to/delta/target/debug/delta delta
    

    Alternatively, you can ignore $PATH and use /path/to/delta/target/debug/delta in the next step.

  4. Configure git to use delta:
    (Note that delta defaults to a dark theme, so if you're using a light terminal background, you'll want to use --light or --theme=<theme-name>.)

    Edit your ~/.gitconfig:

    [core]
        pager = delta
    

    Alternatively, run this command:

    git config --global core.pager delta
    

    You can pass arguments to delta in your .gitconfig. An example is

    [core]
        pager = delta --plus-color="#012800" --minus-color="#340001" --theme="base16-ocean.dark"
    

    Please include the = characters; I'm not sure why yet, but they're necessary when writing a delta command line in .gitconfig!

All git commands that display diff output should now display syntax-highlighted output. For example:

  • git diff
  • git show
  • git log -p
  • git stash show -p

24 bit color

delta works best if your terminal application supports 24 bit colors. See https://gist.github.com/XVilka/8346728. For example, on macos, iTerm2 works but Terminal.app does not.

If you're using tmux, it's worth checking that 24 bit color is working correctly. For example, run a color test script like this one, or the others listed at https://gist.github.com/XVilka/8346728. If you do not see smooth color gradients, see the discussion at tmux#696. The short version is you need something like this in your ~/.tmux.conf:

set -ga terminal-overrides ",xterm-256color:Tc"

and you may then need to quit tmux completely for it to take effect.

Credit

https://github.com/trishume/syntect
https://github.com/sharkdp/bat
https://github.com/so-fancy/diff-so-fancy