detached 36d615c

no-mistakes(document): document VT mode behavior

commit
36d615cec18c789bbad5a0ae458de206884cf6f6
author
brice · · 2026-07-09 15:28 UTC
parent
5852a41
signature
GPG VerifiedCD88F9E564E0102646FB6077A1A07C7C7C3E349D · arch-gpg Verified for the committer email
3 files · +13 -3
M README.md +4 -0
@@ -134,6 +134,10 @@ When the attaching client reports truecolor support, vev advertises newly spawne
134134
135135 Applications that use terminfo can detect direct color from `xterm-direct`; applications that use the common environment convention can use `COLORTERM=truecolor` when it is present. Panes restored from a saved snapshot start conservatively before any client attaches; after attach or resume, newly spawned panes use that client's reported capability.
136136
137+## Terminal compatibility
138+
139+vev keeps a server-side VT screen for each pane. It tracks scroll regions with DECOM origin mode, ANSI insert mode, cursor-position and mode-query reports, alternate-screen state, bracketed paste, mouse tracking, synchronized updates, OSC 9/777 notifications, OSC 52 clipboard set requests, and double-width cells. Resize and edit operations repair double-width cells so CJK or emoji glyph halves are not left behind.
140+
137141 ## Keys
138142
139143 All bindings use Alt directly; there is no prefix key.
@@ -134,6 +134,10 @@ When the attaching client reports truecolor support, vev advertises newly spawne
134 134
135 Applications that use terminfo can detect direct color from `xterm-direct`; applications that use the common environment convention can use `COLORTERM=truecolor` when it is present. Panes restored from a saved snapshot start conservatively before any client attaches; after attach or resume, newly spawned panes use that client's reported capability.135 Applications that use terminfo can detect direct color from `xterm-direct`; applications that use the common environment convention can use `COLORTERM=truecolor` when it is present. Panes restored from a saved snapshot start conservatively before any client attaches; after attach or resume, newly spawned panes use that client's reported capability.
136 136
137+## Terminal compatibility
138+
139+vev keeps a server-side VT screen for each pane. It tracks scroll regions with DECOM origin mode, ANSI insert mode, cursor-position and mode-query reports, alternate-screen state, bracketed paste, mouse tracking, synchronized updates, OSC 9/777 notifications, OSC 52 clipboard set requests, and double-width cells. Resize and edit operations repair double-width cells so CJK or emoji glyph halves are not left behind.
140+
137 ## Keys141 ## Keys
138 142
139 All bindings use Alt directly; there is no prefix key.143 All bindings use Alt directly; there is no prefix key.
M pkg/vt/doc.go +7 -1
@@ -1,2 +1,8 @@
1-// Package vt implements a terminal emulator core.
1+// Package vt implements the server-side terminal emulator core.
2+//
3+// It tracks the visible cell grid, damage rectangles, scroll regions,
4+// alternate-screen state, cursor/reporting modes, and common xterm/VT control
5+// sequences. Wide runes that fit are stored as a head cell plus a continuation
6+// cell, and resize or edit operations repair row-boundary splits instead of
7+// leaving orphaned halves.
28 package vt
@@ -1,2 +1,8 @@
1-// Package vt implements a terminal emulator core.1+// Package vt implements the server-side terminal emulator core.
2+//
3+// It tracks the visible cell grid, damage rectangles, scroll regions,
4+// alternate-screen state, cursor/reporting modes, and common xterm/VT control
5+// sequences. Wide runes that fit are stored as a head cell plus a continuation
6+// cell, and resize or edit operations repair row-boundary splits instead of
7+// leaving orphaned halves.
2 package vt8 package vt
M pkg/vt/screen.go +2 -2
@@ -59,8 +59,8 @@ type Screen struct {
5959 // and blanks rows. The callback receives a stable copy of each evicted row.
6060 OnLineEvicted func([]renderer.Cell)
6161 // OnResponse is called synchronously from Write with reply bytes that the
62- // emulator must send back to the child process (DA, DSR, DECRQM reports).
63- // The host wires it to the PTY input. Nil disables responses.
62+ // emulator must send back to the child process (DA, DSR, and ANSI/DEC mode
63+ // query reports). The host wires it to the PTY input. Nil disables responses.
6464 OnResponse func([]byte)
6565 // OnBell is called synchronously from Write for each lone BEL (0x07)
6666 // outside escape sequences. BELs that terminate an OSC never fire it.
@@ -59,8 +59,8 @@ type Screen struct {
59 // and blanks rows. The callback receives a stable copy of each evicted row.59 // and blanks rows. The callback receives a stable copy of each evicted row.
60 OnLineEvicted func([]renderer.Cell)60 OnLineEvicted func([]renderer.Cell)
61 // OnResponse is called synchronously from Write with reply bytes that the61 // OnResponse is called synchronously from Write with reply bytes that the
62- // emulator must send back to the child process (DA, DSR, DECRQM reports).62+ // emulator must send back to the child process (DA, DSR, and ANSI/DEC mode
63- // The host wires it to the PTY input. Nil disables responses.63+ // query reports). The host wires it to the PTY input. Nil disables responses.
64 OnResponse func([]byte)64 OnResponse func([]byte)
65 // OnBell is called synchronously from Write for each lone BEL (0x07)65 // OnBell is called synchronously from Write for each lone BEL (0x07)
66 // outside escape sequences. BELs that terminate an OSC never fire it.66 // outside escape sequences. BELs that terminate an OSC never fire it.

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 2

Tags 13

↑↓ moveenter openesc close