patch 8.0.1731: characters deleted on completion
Problem: Characters deleted on completion. (Adrià Farrés)
Solution: Also check the last item for the ORIGINAL_TEXT flag. (Christian
Brabandt, closes #1645)
diff --git a/src/edit.c b/src/edit.c
index 21941cb..8746436 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -3656,7 +3656,9 @@
{
char_u *p;
- /* Replace the original text entry. */
+ /* Replace the original text entry.
+ * The ORIGINAL_TEXT flag is either at the first item or might possibly be
+ * at the last item for backward completion */
if (compl_first_match->cp_flags & ORIGINAL_TEXT) /* safety check */
{
p = vim_strsave(str);
@@ -3666,6 +3668,16 @@
compl_first_match->cp_str = p;
}
}
+ else if (compl_first_match->cp_prev != NULL
+ && (compl_first_match->cp_prev->cp_flags & ORIGINAL_TEXT))
+ {
+ p = vim_strsave(str);
+ if (p != NULL)
+ {
+ vim_free(compl_first_match->cp_prev->cp_str);
+ compl_first_match->cp_prev->cp_str = p;
+ }
+ }
}
/*