From 7bc2d870cd0abbc90b8fa791e54626d970a3746c Mon Sep 17 00:00:00 2001 From: Pranav Raja Date: Mon, 16 Oct 2017 17:35:57 +1100 Subject: [PATCH] search: Only update lastSearch on ENTER This has a few effects: - `lastSearch` doesn't get overriden with partial searches unnecessarily, which matches the behaviour of vim/emacs etc. - Selecting a word, then pressing C-c C-f ENTER works better as you can now use C-n and C-p to jump to more occurrences of what you just searched for. Without this C-n would jump to what you searched for *previously*. - `lastSearch` will now be updated even if the search did not match - again, this matches the behaviour of vim/emacs. --- cmd/micro/search.go | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/cmd/micro/search.go b/cmd/micro/search.go index 8317fd0a..139bcb41 100644 --- a/cmd/micro/search.go +++ b/cmd/micro/search.go @@ -64,7 +64,12 @@ func HandleSearchEvent(event tcell.Event, v *View) { // Exit the search mode ExitSearch(v) return - case tcell.KeyCtrlQ, tcell.KeyCtrlC, tcell.KeyEnter: + case tcell.KeyEnter: + // If the user has pressed Enter, they want this to be the lastSearch + lastSearch = messenger.response + EndSearch() + return + case tcell.KeyCtrlQ, tcell.KeyCtrlC: // Done EndSearch() return @@ -179,9 +184,7 @@ func Search(searchStr string, v *View, down bool) { found = searchUp(r, v, v.Buf.End(), searchStart) } } - if found { - lastSearch = searchStr - } else { + if !found { v.Cursor.ResetSelection() } }