From 852e7e717a3106f32f4d8d5bd44b97170c6db2af Mon Sep 17 00:00:00 2001 From: Simon Lydell Date: Sun, 5 Jun 2016 12:25:00 +0200 Subject: [PATCH] Improve find commands race condition robustness Possibly related: #749. --- extension/lib/commands.coffee | 13 +++++++++++-- extension/lib/modes.coffee | 4 +++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/extension/lib/commands.coffee b/extension/lib/commands.coffee index e918e80..c7487f5 100644 --- a/extension/lib/commands.coffee +++ b/extension/lib/commands.coffee @@ -692,11 +692,19 @@ helper_copy_marker_element = (vim, elementIndex, property) -> -findStorage = {lastSearchString: ''} +findStorage = { + lastSearchString: '' + busy: false +} helper_find_from_top_of_viewport = (vim, direction, callback) -> + return if findStorage.busy if vim.options.find_from_top_of_viewport - vim._run('find_from_top_of_viewport', {direction}, callback) + findStorage.busy = true + vim._run('find_from_top_of_viewport', {direction}, -> + findStorage.busy = false + callback() + ) else callback() @@ -712,6 +720,7 @@ helper_find = ({highlight, linksOnly = false}, {vim}) -> helper_mark_last_scroll_position(vim) helper_find_from_top_of_viewport(vim, FORWARD, -> + return unless vim.mode == 'find' findBar = vim.window.gBrowser.getFindBar() mode = if linksOnly then findBar.FIND_LINKS else findBar.FIND_NORMAL diff --git a/extension/lib/modes.coffee b/extension/lib/modes.coffee index ff5f154..aae78d1 100644 --- a/extension/lib/modes.coffee +++ b/extension/lib/modes.coffee @@ -323,7 +323,9 @@ mode('find', { return false }, { - exit: ({findBar}) -> findBar.close() + exit: ({vim, findBar}) -> + vim.enterMode('normal') + findBar.close() }) -- 2.39.3