# diffnav
A git diff pager based on [delta](https://github.com/dandavison/delta) but with a file tree, à la GitHub.
> [!CAUTION]
> This is early in development, bugs are to be expected.
>
> Feel free to open issues.
Demo
## Installation
Homebrew:
```sh
brew install dlvhdr/formulae/diffnav
```
Go:
```sh
go install github.com/dlvhdr/diffnav@latest
```
> [!NOTE]
> To get the icons to render properly you should download and install a Nerd font from https://www.nerdfonts.com/. Then, select that font as your font for the terminal.
>
> _You can install these with brew as well: `brew install --cask font--nerd-font`_
## Usage
### Pipe into diffnav
- `git diff | diffnav`
- `gh pr diff https://github.com/dlvhdr/gh-dash/pull/447 | diffnav`
### Set up as global git diff pager
```bash
git config --global pager.diff diffnav
```
## Configuration
- Currently you can configure `diffnav` only through delta so [check out their docs](https://dandavison.github.io/delta/configuration.html).
- If you want the exact configuration I'm using - [it can be found here](https://github.com/dlvhdr/diffnav/blob/main/cfg/delta.conf).
## Keys
| Key | Description |
| :---------------- | :------------------- |
| j | Next file |
| k | Previous file |
| Ctrl-d | Scroll the diff down |
| Ctrl-u | Scroll the diff up |
| e | Toggle the file tree |
| t | Search/go-to file |
| q | Quit |
## Under the hood
`diffnav` uses:
- [Bubble Tea](https://github.com/charmbracelet/bubbletea) for the TUI
- [`delta`](https://github.com/dandavison/delta) for viewing the diffed file
Screenshots use:
- [kitty](https://sw.kovidgoyal.net/kitty/) for the terminal
- [tokyonight](https://github.com/folke/tokyonight.nvim) for the color scheme
- [CommitMono](https://www.nerdfonts.com/font-downloads) for the font