diff --git a/Taskfile.yml b/Taskfile.yml index 517db8e..83d4139 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -17,6 +17,11 @@ tasks: interactive: true desc: Run in debug mode. Run `task logs` to watch the logs. + uninstall: + desc: Uninstall the locally installed application + cmds: + - if [[ -f $GOPATH/bin/diffnav ]]; then rm $GOPATH/bin/diffnav; fi + install: desc: Install the application vars: @@ -27,6 +32,14 @@ tasks: - ./**/*.go - go.mod + install:prod: + desc: Install the latest available version + cmds: + - task: uninstall + - echo "πŸ• Installing latest version..." + - brew install diffnav + - diffnav --version + diff: cmds: - task: install diff --git a/pkg/ui/keys.go b/pkg/ui/keys.go index 742b1a9..770474b 100644 --- a/pkg/ui/keys.go +++ b/pkg/ui/keys.go @@ -105,13 +105,13 @@ var keys = &KeyMap{ key.WithKeys("t"), key.WithHelp("t", "search files"), ), - SearchDiffExact: key.NewBinding( + SearchDiffInsensitive: key.NewBinding( key.WithKeys("/"), key.WithHelp("/", "search diff (exact)"), ), - SearchDiffInsensitive: key.NewBinding( + SearchDiffExact: key.NewBinding( key.WithKeys("ctrl+s"), - key.WithHelp("ctrl+s", "search diff (case insensitive)"), + key.WithHelp("ctrl+s", "search diff (case sensitive)"), ), SearchDiffRegex: key.NewBinding( key.WithKeys("ctrl+r"), diff --git a/pkg/ui/panes/diffviewer/diffviewer.go b/pkg/ui/panes/diffviewer/diffviewer.go index 69bd003..c0ceeac 100644 --- a/pkg/ui/panes/diffviewer/diffviewer.go +++ b/pkg/ui/panes/diffviewer/diffviewer.go @@ -163,10 +163,10 @@ func New(sideBySide bool, styles *common.Styles) Model { ), filterableviewport.WithFilterModes[diffLine]( []filterableviewport.FilterMode{ - filterableviewport.ExactFilterMode( + filterableviewport.CaseInsensitiveFilterMode( key.NewBinding( key.WithKeys("/"), - key.WithHelp("/", "exact fitler mode"), + key.WithHelp("/", "case insensitive"), ), ), filterableviewport.RegexFilterMode( key.NewBinding( @@ -180,9 +180,9 @@ func New(sideBySide bool, styles *common.Styles) Model { key.WithHelp("ctrl+f", "fuzzy fitler mode"), ), ), - filterableviewport.CaseInsensitiveFilterMode(key.NewBinding( + filterableviewport.ExactFilterMode(key.NewBinding( key.WithKeys("ctrl+s"), - key.WithHelp("ctrl+s", "case insensitive filter"), + key.WithHelp("ctrl+s", "exact"), )), }, ), @@ -191,7 +191,7 @@ func New(sideBySide bool, styles *common.Styles) Model { filterableviewport.WithEmptyText[diffLine]( "Search… "+lipgloss.NewStyle(). Faint(true). - Render("(/ exact β‹… βŒƒ+s insensitive β‹… βŒƒ+r regex β‹… βŒƒ+f fuzzy)"), + Render("(/ insensitive β‹… βŒƒ+s exact β‹… βŒƒ+r regex β‹… βŒƒ+f fuzzy)"), ), filterableviewport.WithFilterLinePosition[diffLine](filterableviewport.FilterLineTop), filterableviewport.WithMatchingItemsOnly[diffLine](false), diff --git a/pkg/ui/tui.go b/pkg/ui/tui.go index 0930af1..879bde5 100644 --- a/pkg/ui/tui.go +++ b/pkg/ui/tui.go @@ -372,16 +372,12 @@ func (m mainModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) { } } case key.Matches(msg, keys.PrevFile): - if m.diffViewer.Filtering() { - m.diffViewer, cmd = m.diffViewer.Update(msg) - } else { + if !m.diffViewer.Searching() && !m.diffViewer.Filtering() { m, cmd = m.moveToFile(-1) } cmds = append(cmds, cmd) case key.Matches(msg, keys.NextFile): - if m.diffViewer.Filtering() { - m.diffViewer, cmd = m.diffViewer.Update(msg) - } else { + if !m.diffViewer.Searching() && !m.diffViewer.Filtering() { m, cmd = m.moveToFile(1) } cmds = append(cmds, cmd) @@ -445,9 +441,11 @@ func (m mainModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) { if m.activePanel == DiffViewerPanel { m.diffViewer, cmd = m.diffViewer.Update(msg) cmds = append(cmds, cmd) + return m, tea.Batch(cmds...) } else { m.fileTree.Update(msg) cmds = append(cmds, cmd) + return m, tea.Batch(cmds...) } } @@ -585,7 +583,7 @@ func (m mainModel) searchUpdate(msg tea.Msg) (mainModel, []tea.Cmd) { var cmds []tea.Cmd if m.filesSearch.Focused() { switch msg := msg.(type) { - case tea.KeyMsg: + case tea.KeyPressMsg: switch msg.String() { case "esc": m.stopSearch()