process_inspector.go RawHistoryFolder

1package daemon
2
3import (
4	"errors"
5
6	"github.com/bnema/vev/internal/ports"
7)
8
9var errProcessInspectionUnavailable = errors.New("process inspection unavailable")
10
11// cwdOverrideInspector replaces only Cwd on top of an optional base inspector.
12// With a nil base, Comm, Argv, and GroupArgv report the inspection as
13// unavailable, matching a daemon that was given only a cwd reader.
14type cwdOverrideInspector struct {
15	base ports.ProcessInspector
16	cwd  func(int) (string, error)
17}
18
19func (i cwdOverrideInspector) Cwd(pid int) (string, error) { return i.cwd(pid) }
20
21func (i cwdOverrideInspector) Comm(pid int) (string, error) {
22	if i.base == nil {
23		return "", errProcessInspectionUnavailable
24	}
25	return i.base.Comm(pid)
26}
27
28func (i cwdOverrideInspector) Argv(pid int) ([]string, error) {
29	if i.base == nil {
30		return nil, errProcessInspectionUnavailable
31	}
32	return i.base.Argv(pid)
33}
34
35func (i cwdOverrideInspector) GroupArgv(pgid, shellPid int) ([]string, error) {
36	if i.base == nil {
37		return nil, errProcessInspectionUnavailable
38	}
39	return i.base.GroupArgv(pgid, shellPid)
40}
41
42// unwrapCwdOverride returns the inspector beneath a previous cwd override so
43// repeated overrides do not stack.
44func unwrapCwdOverride(ins ports.ProcessInspector) ports.ProcessInspector {
45	if o, ok := ins.(cwdOverrideInspector); ok {
46		return o.base
47	}
48	return ins
49}
50
51// hasProcessDetails reports whether Comm, Argv, and GroupArgv are backed by a
52// real inspector rather than a cwd-only override.
53func (d *Daemon) hasProcessDetails() bool {
54	if o, ok := d.proc.(cwdOverrideInspector); ok {
55		return o.base != nil
56	}
57	return d.proc != nil
58}

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 12

Tags 11

↑↓ moveenter openesc close