refactor: remove Edit key binding, rename ExtractArchive -> Unpack

- Remove unused Edit key binding (no keys assigned, duplicated Enter)
- Rename ExtractArchive to Unpack across KeyMap struct, DefaultKeyMap(),
  ShortHelp(), FullHelp(), and Model.Update() handler
- Rename handleExtractArchive() -> handleUnpack()
- Update help text, status messages, and dialog titles to 'unpack'
This commit is contained in:
vrubelroman 2026-04-29 15:20:53 +03:00
parent 3b9eb4afa5
commit c8d6976030
3 changed files with 13 additions and 17 deletions

View file

@ -7,7 +7,6 @@ type KeyMap struct {
Visual key.Binding Visual key.Binding
Caret key.Binding Caret key.Binding
View key.Binding View key.Binding
Edit key.Binding
Rename key.Binding Rename key.Binding
Info key.Binding Info key.Binding
Archive key.Binding Archive key.Binding
@ -32,7 +31,7 @@ type KeyMap struct {
Move key.Binding Move key.Binding
Mkdir key.Binding Mkdir key.Binding
Delete key.Binding Delete key.Binding
ExtractArchive key.Binding Unpack key.Binding
Confirm key.Binding Confirm key.Binding
Background key.Binding Background key.Binding
ProgressCancel key.Binding ProgressCancel key.Binding
@ -49,7 +48,6 @@ func DefaultKeyMap() KeyMap {
View: key.NewBinding(key.WithKeys("f3", "v"), key.WithHelp("F3/v", "view")), View: key.NewBinding(key.WithKeys("f3", "v"), key.WithHelp("F3/v", "view")),
Visual: key.NewBinding(key.WithKeys("v"), key.WithHelp("v", "visual")), Visual: key.NewBinding(key.WithKeys("v"), key.WithHelp("v", "visual")),
Caret: key.NewBinding(key.WithKeys("i"), key.WithHelp("i", "caret")), Caret: key.NewBinding(key.WithKeys("i"), key.WithHelp("i", "caret")),
Edit: key.NewBinding(key.WithKeys("e"), key.WithHelp("e", "edit")),
Archive: key.NewBinding(key.WithKeys("f4", "a"), key.WithHelp("F4/a", "archive")), Archive: key.NewBinding(key.WithKeys("f4", "a"), key.WithHelp("F4/a", "archive")),
Info: key.NewBinding(key.WithKeys("f9", "o"), key.WithHelp("F9/o", "info")), Info: key.NewBinding(key.WithKeys("f9", "o"), key.WithHelp("F9/o", "info")),
SelectText: key.NewBinding(key.WithKeys("ctrl+t"), key.WithHelp("C-t", "text select")), SelectText: key.NewBinding(key.WithKeys("ctrl+t"), key.WithHelp("C-t", "text select")),
@ -73,7 +71,7 @@ func DefaultKeyMap() KeyMap {
Move: key.NewBinding(key.WithKeys("f6", "m"), key.WithHelp("F6/m", "move")), Move: key.NewBinding(key.WithKeys("f6", "m"), key.WithHelp("F6/m", "move")),
Mkdir: key.NewBinding(key.WithKeys("f7", "n"), key.WithHelp("F7/n", "mkdir")), Mkdir: key.NewBinding(key.WithKeys("f7", "n"), key.WithHelp("F7/n", "mkdir")),
Delete: key.NewBinding(key.WithKeys("f8", "delete", "x"), key.WithHelp("F8/x", "delete")), Delete: key.NewBinding(key.WithKeys("f8", "delete", "x"), key.WithHelp("F8/x", "delete")),
ExtractArchive: key.NewBinding(key.WithKeys("f11", "e"), key.WithHelp("F11/e", "extract archive")), Unpack: key.NewBinding(key.WithKeys("f11", "e"), key.WithHelp("F11/e", "unpack")),
Confirm: key.NewBinding(key.WithKeys("enter", "y"), key.WithHelp("Enter/y", "confirm")), Confirm: key.NewBinding(key.WithKeys("enter", "y"), key.WithHelp("Enter/y", "confirm")),
Background: key.NewBinding(key.WithKeys("b"), key.WithHelp("b", "background")), Background: key.NewBinding(key.WithKeys("b"), key.WithHelp("b", "background")),
ProgressCancel: key.NewBinding(key.WithKeys("c"), key.WithHelp("c", "cancel transfer")), ProgressCancel: key.NewBinding(key.WithKeys("c"), key.WithHelp("c", "cancel transfer")),
@ -85,13 +83,13 @@ func DefaultKeyMap() KeyMap {
} }
func (k KeyMap) ShortHelp() []key.Binding { func (k KeyMap) ShortHelp() []key.Binding {
return []key.Binding{k.Help, k.Rename, k.View, k.Archive, k.Copy, k.Move, k.Mkdir, k.Delete, k.Info, k.Quit, k.ExtractArchive, k.SSH} return []key.Binding{k.Help, k.Rename, k.View, k.Archive, k.Copy, k.Move, k.Mkdir, k.Delete, k.Info, k.Quit, k.Unpack, k.SSH}
} }
func (k KeyMap) FullHelp() [][]key.Binding { func (k KeyMap) FullHelp() [][]key.Binding {
return [][]key.Binding{ return [][]key.Binding{
{k.Help, k.Up, k.Down, k.SelectUp, k.SelectDown, k.Open, k.Back}, {k.Help, k.Up, k.Down, k.SelectUp, k.SelectDown, k.Open, k.Back},
{k.Rename, k.View, k.Caret, k.Edit, k.Archive, k.Copy, k.Move, k.Delete}, {k.Rename, k.View, k.Caret, k.Archive, k.Copy, k.Move, k.Delete},
{k.ExtractArchive, k.SelectText, k.DirSize, k.Refresh, k.ToggleHidden, k.CycleSort, k.CycleTheme, k.Quit}, {k.Unpack, k.SelectText, k.DirSize, k.Refresh, k.ToggleHidden, k.CycleSort, k.CycleTheme, k.Quit},
} }
} }

View file

@ -1174,8 +1174,6 @@ func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
return m.toggleVisualMode() return m.toggleVisualMode()
} }
return m, nil return m, nil
case key.Matches(msg, m.keys.Edit):
return m.handleEdit()
case key.Matches(msg, m.keys.Archive): case key.Matches(msg, m.keys.Archive):
return m.handleArchive() return m.handleArchive()
case key.Matches(msg, m.keys.Info): case key.Matches(msg, m.keys.Info):
@ -1257,8 +1255,8 @@ func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
return m, nil return m, nil
case key.Matches(msg, m.keys.Delete): case key.Matches(msg, m.keys.Delete):
return m.handleDelete() return m.handleDelete()
case key.Matches(msg, m.keys.ExtractArchive): case key.Matches(msg, m.keys.Unpack):
return m.handleExtractArchive() return m.handleUnpack()
case key.Matches(msg, m.keys.SSH): case key.Matches(msg, m.keys.SSH):
log.Printf("[KEY] SSH toggle — active=%s path=%s", m.active, activePane.Path) log.Printf("[KEY] SSH toggle — active=%s path=%s", m.active, activePane.Path)
return m.handleSSHToggle() return m.handleSSHToggle()
@ -2350,11 +2348,11 @@ func (m *Model) handleDelete() (tea.Model, tea.Cmd) {
return m, trashPlanCmd(sources) return m, trashPlanCmd(sources)
} }
func (m *Model) handleExtractArchive() (tea.Model, tea.Cmd) { func (m *Model) handleUnpack() (tea.Model, tea.Cmd) {
selected, ok := m.activePane().Selected() selected, ok := m.activePane().Selected()
if !ok || !isArchiveEntry(selected) { if !ok || !isArchiveEntry(selected) {
log.Printf("[SKIP] ExtractArchive: no archive selected") log.Printf("[SKIP] Unpack: no archive selected")
m.status = "Select an archive file to extract" m.status = "Select an archive file to unpack"
return m, nil return m, nil
} }
@ -2362,10 +2360,10 @@ func (m *Model) handleExtractArchive() (tea.Model, tea.Cmd) {
targetPane := m.passivePane() targetPane := m.passivePane()
targetDir := targetPane.Path targetDir := targetPane.Path
log.Printf("[ACTION] ExtractArchive: source=%s target=%s", selected.Path, targetDir) log.Printf("[ACTION] Unpack: source=%s target=%s", selected.Path, targetDir)
// Show confirm dialog before extracting // Show confirm dialog before extracting
title := fmt.Sprintf("Extract %s?", selected.DisplayName()) title := fmt.Sprintf("Unpack %s?", selected.DisplayName())
body := fmt.Sprintf("Archive: %s\nTarget: %s", selected.Path, targetDir) body := fmt.Sprintf("Archive: %s\nTarget: %s", selected.Path, targetDir)
note := "Enter / y to confirm, Esc / n to cancel" note := "Enter / y to confirm, Esc / n to cancel"
pending := pendingOperation{ pending := pendingOperation{

View file

@ -4,7 +4,7 @@ right_path = ''
[ui] [ui]
app_title = 'vcom' app_title = 'vcom'
theme = 'catppuccin-mocha' theme = 'one-dark'
icon_mode = 'auto' icon_mode = 'auto'
show_title_bar = true show_title_bar = true
show_footer = true show_footer = true