v0.7.0 36c429d

row_id.go RawHistoryFolder

1package vt
2
3// RowID identifies one physical terminal row for the lifetime of a Screen.
4// Row IDs are never zero and are never reused by their owning Screen.
5type RowID uint64
6
7func (s *Screen) nextRowIDValue() RowID {
8	if s.nextRowID >= ^RowID(0)-2 {
9		panic("vt: row ID space exhausted")
10	}
11	s.nextRowID++
12	return s.nextRowID
13}
14
15func (s *Screen) newBuffer(width, height int) *buffer {
16	b := newBuffer(width, height)
17	for i := range b.rowIDs {
18		b.rowIDs[i] = s.nextRowIDValue()
19	}
20	return b
21}
22
23func (s *Screen) fillMissingRowIDs(b *buffer) {
24	if b == nil {
25		return
26	}
27	for i := range b.rowIDs {
28		if b.rowIDs[i] == 0 {
29			b.rowIDs[i] = s.nextRowIDValue()
30		}
31	}
32}
33
34// RowIDs returns an owned copy of the active live grid's row identities.
35func (s *Screen) RowIDs() []RowID {
36	if s == nil || s.buffer == nil {
37		return nil
38	}
39	return append([]RowID(nil), s.buffer.rowIDs...)
40}
41
42// RowID returns the identity of active live row y, or zero when y is out of
43// range.
44func (s *Screen) RowID(y int) RowID {
45	if s == nil || s.buffer == nil || y < 0 || y >= len(s.buffer.rowIDs) {
46		return 0
47	}
48	return s.buffer.rowIDs[y]
49}

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