• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

umputun / revdiff / 24853930802
90%

Build:
DEFAULT BRANCH: master
Ran 23 Apr 2026 07:13PM UTC
Jobs 1
Files 60
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

23 Apr 2026 07:12PM UTC coverage: 89.433% (+0.08%) from 89.355%
24853930802

push

github

web-flow
feat: vim-motion preset (--vim-motion, off by default) (#147)

* add plan: vim-motion-preset

* feat: add scroll action constants for vim-motion preset

Introduce ActionScrollCenter, ActionScrollTop, and ActionScrollBottom
constants with matching validActions entries and Navigation-section help
descriptions. No default single-key bindings — the upcoming vim-motion
interceptor will be the only way to reach them unless explicitly mapped
by the user.

Related to #138

* feat: add bottomAlignViewportOnCursor and jumpToLineN helpers

Add two diff-pane helpers for the vim-motion preset:
- bottomAlignViewportOnCursor mirrors topAlignViewportOnCursor,
  flipping the offset by viewport height so the cursor lands on
  the last visible row.
- jumpToLineN moves the diff cursor to a 1-indexed line, clamped
  to [1, total], and centers the viewport on the new position.

* feat: wire scroll actions into handleDiffAction

route ActionScrollCenter, ActionScrollTop, and ActionScrollBottom to
their corresponding viewport helpers (centerViewportOnCursor,
topAlignViewportOnCursor, bottomAlignViewportOnCursor). diff-pane only
per plan scope; handleTreeAction is untouched.

* feat: add VimMotion config field

* feat: add vimState struct and transientHint wiring

* feat: add vim-motion interceptor and state-machine logic

* feat: wire vim-motion interceptor into handleKey

Insert m.interceptVimMotion call AFTER handleModalKey and BEFORE
keymap.Resolve, guarded by m.modes.vimMotion. Modal-entry paths (search,
annotate, overlay) consume keys first so modal textinputs receive digits
and letters; the interceptor then preempts normal keymap resolution so
vim chords and count prefixes win over single-key bindings.

Add 8 integration tests covering the precedence matrix: vim-motion off
skips the interceptor; vim-motion on accumulates digits; chord-second
guard and pending-reload guard preempt vim; search/annotate/overlay
modals preempt vim; non-vim keys fall through to normal dispa... (continued)

177 of 188 new or added lines in 9 files covered. (94.15%)

8413 of 9407 relevant lines covered (89.43%)

552.9 hits per line

Uncovered Changes

Lines Coverage ∆ File
8
93.86
-1.24% app/ui/diffnav.go
2
97.75
app/ui/vimmotion.go
1
9.64
-0.05% app/main.go
Jobs
ID Job ID Ran Files Coverage
1 24853930802.1 23 Apr 2026 07:13PM UTC 60
89.43
GitHub Action Run
Source Files on build 24853930802
  • Tree
  • List 60
  • Changed 8
  • Source Changed 0
  • Coverage Changed 8
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 0504906c on github
  • Prev Build on master (#24852781334)
  • Next Build on master (#24854220229)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc