10 — In the project
Reading diffs
What each view compares and how to return to the current file without restoring a revision.
On this page
Before and after
Additions/deletions have one empty side. Unsaved buffers are not included. Path, area and revision identify a tab, allowing multiple versions to remain open.
| Diff | Before | After |
|---|---|---|
| Local tracked | Index | File on disk |
| Staged | HEAD | Index |
| Untracked | Empty | File on disk |
| Historical | First parent | Selected commit |
Alignment and orientation
Insertions and deletions produce gaps on the opposite side. There is prefix/suffix-based intraline highlighting and changed-block markers. Vertical scrolling is synchronized between sides.
layout.diffOrientation selects horizontal, vertical or auto. Auto uses total renderer width and diffStackBelow. Diff rows are not virtualized and long lines can be clipped.
Open the project file
F4 in any diff opens/verifies the current path and preserves the diff. An already open buffer is reused, including pending changes. It does not copy historical content into the project. If missing, it reports it without recreating the file.
Reading limits
- Historical blobs validate UTF-8, NUL and up to 2 MiB. HEAD/index blobs used by local diffs do not pass through exactly the same validator.
- The algorithm caps edit distance at 1000; it may show the remainder as large deleted/added blocks. A trailing-newline-only change may not be visible.
- F5 refreshes status; an open diff updates when its entry is reopened, not automatically on every disk change.
Chapter sources
Links pinned to the reviewed commit; they do not follow main.