From 10f41e067eef33e30a211279d69160b5c7721f96 Mon Sep 17 00:00:00 2001 From: ailin-nemui Date: Sun, 25 Nov 2018 14:19:57 +0100 Subject: [PATCH] fix backward completion --- src/fe-common/core/completion.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/fe-common/core/completion.c b/src/fe-common/core/completion.c index 2bc65d42..29a052b3 100644 --- a/src/fe-common/core/completion.c +++ b/src/fe-common/core/completion.c @@ -229,6 +229,7 @@ char *word_complete(WINDOW_REC *window, const char *line, int *pos, int erase, i g_list_first(complist); want_space = last_want_space; } else { + int keep_word = settings_get_bool("completion_keep_word"); /* get new completion list */ free_completions(); @@ -239,10 +240,17 @@ char *word_complete(WINDOW_REC *window, const char *line, int *pos, int erase, i if (complist != NULL) { /* Remove all nulls (from the signal) before doing further processing */ complist = g_list_remove_all(g_list_first(complist), NULL); - } - if (settings_get_bool("completion_keep_word") && complist != NULL) { - complist = g_list_append(complist, g_strdup(word)); + if (keep_word) { + complist = g_list_append(complist, g_strdup(word)); + } + + if (backward) { + complist = g_list_last(complist); + if (keep_word) { + complist = complist->prev; + } + } } }