Skip to content

feat(review): add go-to-line prompt #805

Description

@IAMLEIzZ

What do you want to change?

Add a go-to-line flow to the review UI. Pressing : opens a small line-number prompt in the status bar (same inline-input pattern as the / file filter). A bare number jumps to that line in the selected file by the current file's numbering — the same R side the note labels use — while an l prefix (e.g. :l42) targets the source file's numbering (the L side). Enter jumps the current-line cursor there so c can annotate directly, Escape cancels, and a line outside the diff reports a notice naming the side instead of jumping.

Why?

#662 added a current-line cursor and anchored notes to it, but moving that cursor is still line-by-line (j/k) or by mouse. In a large changeset, annotating a specific line you already know — e.g. from a stack trace, a CI log, or a colleague's comment — means dozens of j presses or reaching for the mouse. A vim-style :42 makes keyboard-driven annotation precise in one motion, which was the original motivation of #436.

How? (optional)

  • Register hunk.review.gotoLine (default key :) in the shared command catalog, remappable via [keybindings] like every other command.
  • The prompt reuses the status bar's inline prompt input; digits plus an optional leading side letter.
  • On submit, resolve the typed line through the existing shared revealLine(fileId, side, n) path — the same one the session navigate command uses — so scrolling, selection, and the line cursor all land consistently. A line with no rendered row degrades to its hunk or reports "not part of the diff"; no new navigation machinery is introduced.
  • I have this implemented with AppHost interaction tests and a PTY test (jump to line 62 across hunks, then anchor a note at R62), plus the one integration fallout handled: the bundled vim-navigation example's : command-line moves to ;, since built-ins shadow extension chords by design.

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions