diff src/edit.c @ 25074:aa55d6d17625 v8.2.3074

patch 8.2.3074: popup_atcursor() uses wrong position with concealing Commit: https://github.com/vim/vim/commit/ea042677ab5cab736540f3164909cac2c685de74 Author: Bram Moolenaar <Bram@vim.org> Date: Tue Jun 29 20:22:32 2021 +0200 patch 8.2.3074: popup_atcursor() uses wrong position with concealing Problem: popup_atcursor() uses wrong position with concealing. Solution: Keep w_wcol in conceal_check_cursor_line(). (closes https://github.com/vim/vim/issues/8476)
author Bram Moolenaar <Bram@vim.org>
date Tue, 29 Jun 2021 20:30:05 +0200
parents c425989fe7ac
children 078edc1821bf
line wrap: on
line diff
--- a/src/edit.c
+++ b/src/edit.c
@@ -147,6 +147,9 @@ edit(
 #ifdef FEAT_JOB_CHANNEL
     int		cmdchar_todo = cmdchar;
 #endif
+#ifdef FEAT_CONCEAL
+    int		cursor_line_was_concealed;
+#endif
 
     // Remember whether editing was restarted after CTRL-O.
     did_restart_edit = restart_edit;
@@ -222,9 +225,9 @@ edit(
     }
 
 #ifdef FEAT_CONCEAL
-    // Check if the cursor line needs redrawing before changing State.  If
-    // 'concealcursor' is "n" it needs to be redrawn without concealing.
-    conceal_check_cursor_line();
+    // Check if the cursor line was concealed before changing State.
+    cursor_line_was_concealed = curwin->w_p_cole > 0
+						&& conceal_cursor_line(curwin);
 #endif
 
     /*
@@ -283,6 +286,12 @@ edit(
 
     stop_insert_mode = FALSE;
 
+#ifdef FEAT_CONCEAL
+    // Check if the cursor line needs redrawing after changing State.  If
+    // 'concealcursor' is "n" it needs to be redrawn without concealing.
+    conceal_check_cursor_line(cursor_line_was_concealed);
+#endif
+
     /*
      * Need to recompute the cursor position, it might move when the cursor is
      * on a TAB or special character.