diff src/edit.c @ 14079:b5e43a048878 v8.1.0057

patch 8.1.0057: popup menu displayed wrong when using autocmd commit https://github.com/vim/vim/commit/6ba3ec1bace67513a352326864cebc16b3c5bc56 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Jun 16 15:32:38 2018 +0200 patch 8.1.0057: popup menu displayed wrong when using autocmd Problem: Popup menu displayed wrong when using autocmd. Solution: Use aucmd_prepbuf(). Force updating status line if the popup menu is going to be redrawn anyway. (Christian Brabandt, closes #3009)
author Christian Brabandt <cb@256bit.org>
date Sat, 16 Jun 2018 15:45:05 +0200
parents c1fcfafa8d1a
children a9d94f10ecef
line wrap: on
line diff
--- a/src/edit.c
+++ b/src/edit.c
@@ -1704,7 +1704,12 @@ ins_redraw(
 #endif
 	    )
     {
+	aco_save_T	aco;
+
+	// save and restore curwin and curbuf, in case the autocmd changes them
+	aucmd_prepbuf(&aco, curbuf);
 	apply_autocmds(EVENT_TEXTCHANGEDI, NULL, NULL, FALSE, curbuf);
+	aucmd_restbuf(&aco);
 	curbuf->b_last_changedtick = CHANGEDTICK(curbuf);
     }
 
@@ -1716,7 +1721,12 @@ ins_redraw(
 	    && curbuf->b_last_changedtick_pum != CHANGEDTICK(curbuf)
 	    && pum_visible())
     {
+	aco_save_T	aco;
+
+	// save and restore curwin and curbuf, in case the autocmd changes them
+	aucmd_prepbuf(&aco, curbuf);
 	apply_autocmds(EVENT_TEXTCHANGEDP, NULL, NULL, FALSE, curbuf);
+	aucmd_restbuf(&aco);
 	curbuf->b_last_changedtick_pum = CHANGEDTICK(curbuf);
     }
 #endif