vjump.el is a single-file Emacs package that maintains a session-scoped
jump history as a tree and visualises it with the same horizontal UI as
vundo.
Going back and then jumping elsewhere creates a branch — the discarded “future” is preserved, never lost.
○──○──○──○ │ └──● ← current position (bar.py:93) └──○──○
- Tree-shaped jump history (never discards old branches)
- vundo-style horizontal visualizer with Unicode glyphs
- Live jumping: the originating window follows you as you navigate the tree
- Three detection layers:
push-markadvice, large cursor movements (>10 lines), buffer switches - Session-only (no persistence by design)
- Single file, no external dependencies
- Emacs 28.1+
(use-package vjump
:vc (:url "https://github.com/JNSFilipe/vjump" :rev :newest)
:config
(vjump-mode 1)
:bind (("C-x j" . vjump-visualize)))Clone the repo and add it to your load path:
(add-to-list 'load-path "/path/to/vjump")
(require 'vjump)
(vjump-mode 1)
(global-set-key (kbd "C-x j") #'vjump-visualize)Enable tracking globally:
(vjump-mode 1)Then call M-x vjump-visualize (or your keybinding) to open the tree.
| Key | Action |
|---|---|
f / → | Forward to first child |
b / ← | Backward to parent |
n / ↓ | Next sibling |
p / ↑ | Previous sibling |
a | Back to nearest branch point |
e | Forward to tip of branch |
q / C-g | Quit (roll back to entry point) |
RET | Confirm and close |
| Command | Description |
|---|---|
vjump-visualize | Open the *vjump-tree* side window |
vjump-go-back | Tree-aware C-o (move to parent node) |
vjump-go-forward | Tree-aware C-i (move to newest child) |
| Variable | Default | Description |
|---|---|---|
vjump-distance-threshold | 10 | Lines of movement counted as a jump |
vjump-window-max-height | 3 | Maximum height of the side window |
vjump-window-side | 'bottom | Side where the window appears |
vjump-roll-back-on-quit | t | Roll back on q (vs. stay) |
vjump-glyph-alist | Unicode | Tree drawing characters |
GPL-3.0-or-later. The draw engine is a port of vundo by Yuan Fu (casouri), used under the same license.