feat: a shorter help bar: reveal or hide as it will, share, no note #23
No files matched your search
@@ -1719,7 +1719,8 @@ func (m Model) footerView() string {
|
|||||||
} else if l != nil && l.Filtering() {
|
} else if l != nil && l.Filtering() {
|
||||||
help = m.helpBar(keys.FilterHelp{Map: m.keys}.ShortHelp(), 2)
|
help = m.helpBar(keys.FilterHelp{Map: m.keys}.ShortHelp(), 2)
|
||||||
} else {
|
} else {
|
||||||
help = m.helpBar(contextHelp{k: m.keys, focus: m.focus, of: m.detailOf(), commands: len(m.commandsHere()) > 0, account: m.fields.Shown()}.ShortHelp(), 2)
|
revealed := m.detail.State() == panes.ValueShown
|
||||||
|
help = m.helpBar(contextHelp{k: m.keys, focus: m.focus, of: m.detailOf(), commands: len(m.commandsHere()) > 0, account: m.fields.Shown(), revealed: &revealed}.ShortHelp(), 2)
|
||||||
}
|
}
|
||||||
var lines []string
|
var lines []string
|
||||||
if !m.clipDeadline.IsZero() {
|
if !m.clipDeadline.IsZero() {
|
||||||
|
|||||||
@@ -988,9 +988,14 @@ func TestRebindingShowsEverywhere(t *testing.T) {
|
|||||||
if !strings.Contains(scr, "z to reveal") || strings.Contains(scr, "space to reveal") {
|
if !strings.Contains(scr, "z to reveal") || strings.Contains(scr, "space to reveal") {
|
||||||
t.Errorf("detail hint doesn't follow the binding:\n%s", scr)
|
t.Errorf("detail hint doesn't follow the binding:\n%s", scr)
|
||||||
}
|
}
|
||||||
if !strings.Contains(lastLine(scr), "z reveal/hide") {
|
if !strings.Contains(lastLine(scr), "z reveal") || strings.Contains(lastLine(scr), "reveal/hide") {
|
||||||
t.Errorf("help bar: %q", lastLine(scr))
|
t.Errorf("help bar: %q", lastLine(scr))
|
||||||
}
|
}
|
||||||
|
d.keys("z")
|
||||||
|
if bar := lastLine(d.screen()); !strings.Contains(bar, "z hide") {
|
||||||
|
t.Errorf("help bar with the value shown: %q", bar)
|
||||||
|
}
|
||||||
|
d.keys("z")
|
||||||
if strings.Contains(scr, "to browse") {
|
if strings.Contains(scr, "to browse") {
|
||||||
t.Errorf("hint for unbound versions:\n%s", scr)
|
t.Errorf("hint for unbound versions:\n%s", scr)
|
||||||
}
|
}
|
||||||
|
|||||||
+10
-3
@@ -38,6 +38,9 @@ type contextHelp struct {
|
|||||||
commands bool // custom commands apply here
|
commands bool // custom commands apply here
|
||||||
account bool // the fourth pane shows Fields (fields.go)
|
account bool // the fourth pane shows Fields (fields.go)
|
||||||
of pane // what the fourth pane describes
|
of pane // what the fourth pane describes
|
||||||
|
// revealed, when set, says whether the selected value is shown, so
|
||||||
|
// the reveal key says just what it'll do: reveal or hide.
|
||||||
|
revealed *bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c contextHelp) ShortHelp() []key.Binding {
|
func (c contextHelp) ShortHelp() []key.Binding {
|
||||||
@@ -59,11 +62,15 @@ func (c contextHelp) ShortHelp() []key.Binding {
|
|||||||
}
|
}
|
||||||
switch c.focus {
|
switch c.focus {
|
||||||
case paneSources:
|
case paneSources:
|
||||||
b = append(b, k.Enter, k.Search, k.Share, k.ShareMenu, k.Favourite, k.Favourites, k.Note, k.Filter)
|
b = append(b, k.Enter, k.Search, k.Share, k.ShareMenu, k.Favourite, k.Favourites, k.Filter)
|
||||||
case paneContainers:
|
case paneContainers:
|
||||||
b = append(b, k.Enter, k.Share, k.ShareMenu, k.Favourite, k.Note, k.Open, k.Filter)
|
b = append(b, k.Enter, k.Share, k.ShareMenu, k.Favourite, k.Open, k.Filter)
|
||||||
default:
|
default:
|
||||||
b = append(b, k.Reveal, k.Copy, k.Share, k.ShareMenu, k.Versions, k.Favourite, k.Note, k.Filter)
|
reveal := k.Reveal
|
||||||
|
if c.revealed != nil {
|
||||||
|
reveal = key.NewBinding(key.WithKeys(k.Reveal.Keys()...), key.WithHelp(k.Reveal.Help().Key, map[bool]string{false: "reveal", true: "hide"}[*c.revealed]))
|
||||||
|
}
|
||||||
|
b = append(b, reveal, k.Copy, k.Share, k.ShareMenu, k.Versions, k.Favourite, k.Filter)
|
||||||
}
|
}
|
||||||
if c.commands {
|
if c.commands {
|
||||||
b = append(b, k.Commands)
|
b = append(b, k.Commands)
|
||||||
|
|||||||
@@ -136,11 +136,11 @@ func TestLayoutIsSaved(t *testing.T) {
|
|||||||
func TestContextHelpBar(t *testing.T) {
|
func TestContextHelpBar(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
d := newDriver(t)
|
d := newDriver(t)
|
||||||
if bar := lastLine(d.screen()); !strings.Contains(bar, "S share…") || !strings.HasSuffix(strings.TrimSpace(bar), "? help • q quit") || strings.Contains(bar, "space reveal") {
|
if bar := lastLine(d.screen()); !strings.Contains(bar, "S share") || !strings.HasSuffix(strings.TrimSpace(bar), "? help • q quit") || strings.Contains(bar, "space reveal") {
|
||||||
t.Errorf("Sources help bar: %q", bar)
|
t.Errorf("Sources help bar: %q", bar)
|
||||||
}
|
}
|
||||||
d.keys("3")
|
d.keys("3")
|
||||||
if bar := lastLine(d.screen()); !strings.Contains(bar, "s copy link") || !strings.Contains(bar, "S share…") {
|
if bar := lastLine(d.screen()); !strings.Contains(bar, "s copy link") || !strings.Contains(bar, "S share") {
|
||||||
t.Errorf("Secrets help bar: %q", bar)
|
t.Errorf("Secrets help bar: %q", bar)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -30,4 +30,4 @@
|
|||||||
│ ││ │
|
│ ││ │
|
||||||
│ ││ │
|
│ ││ │
|
||||||
╰────────────────────── 1 of 3 ─╯╰──────────────────────────────────────────────────────── 1 of 4 ─╯
|
╰────────────────────── 1 of 3 ─╯╰──────────────────────────────────────────────────────── 1 of 4 ─╯
|
||||||
enter open • ctrl+s search • s copy link • S share… • f star • F favourites • … • ? help • q quit
|
enter open • ctrl+s search • s copy link • S share • f star • F favourites • … • ? help • q quit
|
||||||
@@ -116,7 +116,7 @@ func (m *Map) Actions() []Action {
|
|||||||
a(Lists, "edit", &m.Edit, "open file", "secrets", "Open the selected SOPS or .env file, or the file of the selected secret at its line. SOPS files open with sops edit. Others open in the nvim lazysecrets runs in (quitting lazysecrets), else in $VISUAL or $EDITOR, else in the system's default app."),
|
a(Lists, "edit", &m.Edit, "open file", "secrets", "Open the selected SOPS or .env file, or the file of the selected secret at its line. SOPS files open with sops edit. Others open in the nvim lazysecrets runs in (quitting lazysecrets), else in $VISUAL or $EDITOR, else in the system's default app."),
|
||||||
|
|
||||||
a(Lists, "share", &m.Share, "copy link", "share", "Copy a lazysecrets:// link to the selected subscription, workspace, vault, scope or secret, for sharing. From the versions view the link is pinned to that version."),
|
a(Lists, "share", &m.Share, "copy link", "share", "Copy a lazysecrets:// link to the selected subscription, workspace, vault, scope or secret, for sharing. From the versions view the link is pinned to that version."),
|
||||||
a(Lists, "shareMenu", &m.ShareMenu, "share…", "share", "Choose what to share: the lazysecrets link, the plain Key Vault URL, the config reference, or the web page."),
|
a(Lists, "shareMenu", &m.ShareMenu, "share", "share", "Choose what to share: the lazysecrets link, the plain Key Vault URL, the config reference, or the web page."),
|
||||||
a(Lists, "openLink", &m.OpenRef, "open link", "share", "Open a lazysecrets:// link, Key Vault URL or reference. Pasting one into lazysecrets does the same."),
|
a(Lists, "openLink", &m.OpenRef, "open link", "share", "Open a lazysecrets:// link, Key Vault URL or reference. Pasting one into lazysecrets does the same."),
|
||||||
|
|
||||||
a(Lists, "dividerLeft", &m.SplitLeft, "divider left", "layout", "Move the divider between the left panes and the detail pane to the left."),
|
a(Lists, "dividerLeft", &m.SplitLeft, "divider left", "layout", "Move the divider between the left panes and the detail pane to the left."),
|
||||||
|
|||||||
Reference in new issue
Block a user