workspaces.go RawHistoryFolder

1package core
2
3import (
4	"reflect"
5	"strconv"
6
7	"github.com/bnema/neferwl/internal/ports"
8)
9
10// publishWorkspaces describes the numbered vertical stack and configured hidden
11// workspaces. Config-hidden named workspaces and empty numbered spares are
12// hidden unless shown; unlike State, hidden named workspaces remain addressable.
13func (c *Core) publishWorkspaces() {
14	if c.ch.Workspaces == nil {
15		return
16	}
17	snapshot := ports.Workspaces{Outputs: []ports.WorkspaceOutput{}}
18	for _, sc := range c.screens {
19		if sc.name() == "" {
20			continue
21		}
22		m := sc.mon
23		out := ports.WorkspaceOutput{Name: sc.name(), Workspaces: []ports.WorkspaceInfo{}}
24		i := -1
25		for w := range m.all() {
26			i++
27			name := w.Name
28			if name == "" {
29				name = strconv.Itoa(i + 1)
30			}
31			out.Workspaces = append(out.Workspaces, ports.WorkspaceInfo{ID: w.ID, Name: name, Index: i, Active: m.Current() == w, Hidden: m.Current() != w && (m.isHidden(w) || w.empty()), Configured: w.Name, Frame: w.Output})
32		}
33		snapshot.Outputs = append(snapshot.Outputs, out)
34	}
35	if reflect.DeepEqual(snapshot, c.sentWorkspaces) {
36		return
37	}
38	c.sentWorkspaces = snapshot
39	latest(c.ch.Workspaces, snapshot)
40}

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 25

Tags 10

↑↓ moveenter openesc close