diff --git a/termite.cc b/termite.cc index aa0d5d2..59ad50d 100644 --- a/termite.cc +++ b/termite.cc @@ -922,16 +922,27 @@ GtkTreeModel *create_completion_model(VteTerminal *vte) { } void search(VteTerminal *vte, const char *pattern, bool reverse) { + std::function terminal_search; + if (!reverse) { + terminal_search = [vte]() { + return vte_terminal_search_find_next(vte); + }; + } else { + terminal_search = [vte]() { + return vte_terminal_search_find_previous(vte); + }; + }; + GRegex *regex = vte_terminal_search_get_gregex(vte); if (regex) g_regex_unref(regex); regex = g_regex_new(pattern, (GRegexCompileFlags)0, (GRegexMatchFlags)0, nullptr); vte_terminal_search_set_gregex(vte, regex); - if (!reverse) { - vte_terminal_search_find_next(vte); - } else { - vte_terminal_search_find_previous(vte); + if (!terminal_search()) { + vte_terminal_select_none(vte); + terminal_search(); } + vte_terminal_copy_primary(vte); }