comparison src/normal.c @ 6979:a25618cbc68a v7.4.807

patch 7.4.807 Problem: After CTRL-V CTRL-A mode isn't updated. (Hirohito Higashi) Solution: Clear the command line or update the displayed command.
author Bram Moolenaar <bram@vim.org>
date Tue, 04 Aug 2015 19:18:52 +0200
parents c2b132add309
children 27f8247d2619
comparison
equal deleted inserted replaced
6978:5ad1ff809c32 6979:a25618cbc68a
46 static int checkclearop __ARGS((oparg_T *oap)); 46 static int checkclearop __ARGS((oparg_T *oap));
47 static int checkclearopq __ARGS((oparg_T *oap)); 47 static int checkclearopq __ARGS((oparg_T *oap));
48 static void clearop __ARGS((oparg_T *oap)); 48 static void clearop __ARGS((oparg_T *oap));
49 static void clearopbeep __ARGS((oparg_T *oap)); 49 static void clearopbeep __ARGS((oparg_T *oap));
50 static void unshift_special __ARGS((cmdarg_T *cap)); 50 static void unshift_special __ARGS((cmdarg_T *cap));
51 static void may_clear_cmdline __ARGS((void));
51 #ifdef FEAT_CMDL_INFO 52 #ifdef FEAT_CMDL_INFO
52 static void del_from_showcmd __ARGS((int)); 53 static void del_from_showcmd __ARGS((int));
53 #endif 54 #endif
54 55
55 /* 56 /*
1750 VIsual_active = FALSE; 1751 VIsual_active = FALSE;
1751 #ifdef FEAT_MOUSE 1752 #ifdef FEAT_MOUSE
1752 setmouse(); 1753 setmouse();
1753 mouse_dragging = 0; 1754 mouse_dragging = 0;
1754 #endif 1755 #endif
1755 if (mode_displayed) 1756 may_clear_cmdline();
1756 clear_cmdline = TRUE; /* unshow visual mode later */
1757 #ifdef FEAT_CMDL_INFO
1758 else
1759 clear_showcmd();
1760 #endif
1761 if ((oap->op_type == OP_YANK 1757 if ((oap->op_type == OP_YANK
1762 || oap->op_type == OP_COLON 1758 || oap->op_type == OP_COLON
1763 || oap->op_type == OP_FUNCTION 1759 || oap->op_type == OP_FUNCTION
1764 || oap->op_type == OP_FILTER) 1760 || oap->op_type == OP_FILTER)
1765 && oap->motion_force == NUL) 1761 && oap->motion_force == NUL)
3310 #endif 3306 #endif
3311 #ifdef FEAT_VIRTUALEDIT 3307 #ifdef FEAT_VIRTUALEDIT
3312 if (!virtual_active()) 3308 if (!virtual_active())
3313 curwin->w_cursor.coladd = 0; 3309 curwin->w_cursor.coladd = 0;
3314 #endif 3310 #endif
3315 3311 may_clear_cmdline();
3316 if (mode_displayed)
3317 clear_cmdline = TRUE; /* unshow visual mode later */
3318 #ifdef FEAT_CMDL_INFO
3319 else
3320 clear_showcmd();
3321 #endif
3322 3312
3323 adjust_cursor_eol(); 3313 adjust_cursor_eol();
3324 } 3314 }
3325 3315
3326 /* 3316 /*
3761 case K_S_END: cap->cmdchar = K_END; break; 3751 case K_S_END: cap->cmdchar = K_END; break;
3762 } 3752 }
3763 cap->cmdchar = simplify_key(cap->cmdchar, &mod_mask); 3753 cap->cmdchar = simplify_key(cap->cmdchar, &mod_mask);
3764 } 3754 }
3765 3755
3756 /*
3757 * If the mode is currently displayed clear the command line or update the
3758 * command displayed.
3759 */
3760 static void
3761 may_clear_cmdline()
3762 {
3763 if (mode_displayed)
3764 clear_cmdline = TRUE; /* unshow visual mode later */
3765 #ifdef FEAT_CMDL_INFO
3766 else
3767 clear_showcmd();
3768 #endif
3769 }
3770
3766 #if defined(FEAT_CMDL_INFO) || defined(PROTO) 3771 #if defined(FEAT_CMDL_INFO) || defined(PROTO)
3767 /* 3772 /*
3768 * Routines for displaying a partly typed command 3773 * Routines for displaying a partly typed command
3769 */ 3774 */
3770 3775
4238 static void 4243 static void
4239 nv_addsub(cap) 4244 nv_addsub(cap)
4240 cmdarg_T *cap; 4245 cmdarg_T *cap;
4241 { 4246 {
4242 int visual = VIsual_active; 4247 int visual = VIsual_active;
4248
4243 if (cap->oap->op_type == OP_NOP 4249 if (cap->oap->op_type == OP_NOP
4244 && do_addsub((int)cap->cmdchar, cap->count1, cap->arg) == OK) 4250 && do_addsub((int)cap->cmdchar, cap->count1, cap->arg) == OK)
4245 { 4251 {
4246 if (visual) 4252 if (visual)
4247 { 4253 {
4257 clearopbeep(cap->oap); 4263 clearopbeep(cap->oap);
4258 if (visual) 4264 if (visual)
4259 { 4265 {
4260 VIsual_active = FALSE; 4266 VIsual_active = FALSE;
4261 redo_VIsual_busy = FALSE; 4267 redo_VIsual_busy = FALSE;
4268 may_clear_cmdline();
4262 redraw_later(INVERTED); 4269 redraw_later(INVERTED);
4263 } 4270 }
4264 } 4271 }
4265 4272
4266 /* 4273 /*