From c6302e3b3fba21f426720f75d411687221f85e13 Mon Sep 17 00:00:00 2001 From: ridiculousfish Date: Sun, 7 Apr 2013 16:40:14 -0700 Subject: [PATCH] Add some more cancellability to autosuggestions --- reader.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/reader.cpp b/reader.cpp index ee3daaaac..85b82137d 100644 --- a/reader.cpp +++ b/reader.cpp @@ -1298,7 +1298,7 @@ struct autosuggestion_context_t return 0; } - while (searcher.go_backwards()) + while (! reader_thread_job_is_stale() && searcher.go_backwards()) { history_item_t item = searcher.current_item(); @@ -1312,9 +1312,12 @@ struct autosuggestion_context_t this->autosuggestion = searcher.current_string(); return 1; } - } + /* Maybe cancel here */ + if (reader_thread_job_is_stale()) + return 0; + /* Try handling a special command like cd */ wcstring special_suggestion; if (autosuggest_suggest_special(search_string, working_directory, special_suggestion)) @@ -1322,6 +1325,10 @@ struct autosuggestion_context_t this->autosuggestion = special_suggestion; return 1; } + + /* Maybe cancel here */ + if (reader_thread_job_is_stale()) + return 0; // Here we do something a little funny // If the line ends with a space, and the cursor is not at the end,