vig 0.4.0

Git TUI side-by-side diff viewer
// vig default configuration
// Faithfully reproduces all hardcoded defaults in git/state.rs and github/state.rs.

// Syntax highlighting theme for the diff view. `vig config themes` lists the choices.
theme "base16-eighties.dark"

// File icons in the Files view: "nerd" (requires a Nerd Font) or "none".
icons "nerd"

app {
    "Ctrl+c" "Quit"
    "1" "page:git"
    "2" "page:github"
    "3" "page:files"
}

page "git" {
    layout {
        split direction="vertical" {
            split direction="horizontal" size="40%" {
                place "file_tree" size="30"
                place "branch_list" size="35%"
                place "reflog" size="min:20"
            }
            slot "main" size="min:3" then="git_log" default="diff_view" {
                triggers "branch_list" "reflog" "git_log"
            }
        }
    }
    tabs "file_tree" "branch_list" "reflog"
    bind select="file_tree"   detail="diff_view"
    bind select="branch_list" detail="git_log"

    pane "view" {
        keys {
            "q" "Quit"
            "?" "Help"
            "r" "Refresh"
            "h" "PrevTab"
            "l" "NextTab"
            "Tab" "CyclePaneForward"
            "BackTab" "CyclePaneBackward"
            "e" "OpenEditor"
        }
    }

    pane "file_tree" {
        keys {
            preset "nav"
            preset "search"
            "Space" "ToggleDir"
            "Right" "ExpandOrOpen"
            "Enter" "ExpandOrOpen"
            "i" "FocusDiff"
            "Esc" "Esc"
        }
    }

    pane "branch_list" {
        keys {
            preset "nav"
            preset "search"
            "Enter" "OpenActionMenu"
            "i" "FocusLog"
            "Esc" "Esc"
        }
    }

    pane "git_log" {
        keys {
            preset "nav"
            preset "search"
            "y" "YankHash"
            "o" "OpenGitHub"
            "h" "FocusReflog"
            "Esc" "Esc"
        }
    }

    pane "reflog" {
        keys {
            preset "nav"
            preset "search"
            "Enter" "SetDiffBase"
            "i" "FocusLog"
            "Esc" "Esc"
        }
    }

    pane "diff_view" {
        keys {
            preset "nav"
            preset "search"
            "h" "ScrollLeft"
            "Left" "ScrollLeft"
            "l" "ScrollRight"
            "Right" "ScrollRight"
            "i" "EnterNormalMode"
            "Esc" "Esc"
        }
    }
}

page "github" {
    layout {
        split direction="vertical" {
            split direction="horizontal" size="40%" {
                place "issue_list" size="50%"
                place "pr_list" size="50%"
            }
            slot "detail" size="min:3" then="pr_detail" default="issue_detail" {
                triggers "pr_list" "pr_detail"
            }
        }
    }
    tabs "issue_list" "pr_list"
    bind select="issue_list" detail="issue_detail"
    bind select="pr_list"    detail="pr_detail"

    pane "view" {
        keys {
            "q" "Quit"
            "?" "Help"
            "r" "Refresh"
            "h" "PrevTab"
            "l" "NextTab"
            "Tab" "CyclePaneForward"
            "BackTab" "CyclePaneBackward"
        }
    }

    pane "issue_list" {
        keys {
            preset "nav"
            preset "search"
            "i" "OpenDetail"
            "Enter" "OpenDetail"
            "Tab" "SwitchTab"
            "o" "OpenBrowser"
            "Esc" "Esc"
        }
    }

    pane "pr_list" {
        keys {
            preset "nav"
            preset "search"
            "i" "OpenDetail"
            "Enter" "OpenDetail"
            "BackTab" "SwitchTab"
            "o" "OpenBrowser"
            "Esc" "Esc"
        }
    }

    pane "issue_detail" {
        keys {
            preset "nav"
            "h" "FocusBody"
            "l" "FocusRight"
            "Tab" "CycleForward"
            "BackTab" "CycleBackward"
            "w" "ToggleWatch"
            "o" "OpenItem"
            "Esc" "Esc"
        }
    }

    pane "pr_detail" {
        keys {
            preset "nav"
            "h" "FocusBody"
            "l" "FocusRight"
            "Tab" "CycleForward"
            "BackTab" "CycleBackward"
            "w" "ToggleWatch"
            "o" "OpenItem"
            "Esc" "Esc"
        }
    }
}

page "files" {
    layout {
        split direction="horizontal" {
            place "parent_dir" size="20%"
            place "dir_list" size="30%"
            place "preview" size="min:20"
        }
    }
    tabs "dir_list" "preview"
    bind select="dir_list" detail="preview"

    pane "view" {
        keys {
            "q" "Quit"
            "?" "Help"
            "r" "Refresh"
            "Tab" "CyclePaneForward"
            "BackTab" "CyclePaneBackward"
            "e" "OpenEditor"
            "o" "OpenDefault"
            "O" "OpenWith"
        }
    }

    // Display-only: shows the parent directory with the current one highlighted.
    pane "parent_dir" {
    }

    pane "dir_list" {
        keys {
            preset "nav"
            preset "search"
            "l" "Enter"
            "Right" "Enter"
            "Enter" "Enter"
            "h" "Parent"
            "Left" "Parent"
            "Backspace" "Parent"
            "i" "FocusPreview"
            "Esc" "Esc"
        }
    }

    pane "preview" {
        keys {
            preset "nav"
            "h" "Back"
            "Left" "Back"
            "Esc" "Esc"
        }
    }
}