comparison src/buffer.c @ 18746:64eea864dff6 v8.1.2363

patch 8.1.2363: ml_get error when accessing Visual area in 'statusline' Commit: https://github.com/vim/vim/commit/dee50a518007b3a59f54b8ad018b6a83993593e7 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Nov 30 15:05:22 2019 +0100 patch 8.1.2363: ml_get error when accessing Visual area in 'statusline' Problem: ml_get error when accessing Visual area in 'statusline'. Solution: Disable Visual mode when using another window. (closes https://github.com/vim/vim/issues/5278)
author Bram Moolenaar <Bram@vim.org>
date Sat, 30 Nov 2019 15:15:04 +0100
parents bbea1f108187
children c469e1930456
comparison
equal deleted inserted replaced
18745:9752ce174299 18746:64eea864dff6
3977 char_u *t; 3977 char_u *t;
3978 int byteval; 3978 int byteval;
3979 #ifdef FEAT_EVAL 3979 #ifdef FEAT_EVAL
3980 win_T *save_curwin; 3980 win_T *save_curwin;
3981 buf_T *save_curbuf; 3981 buf_T *save_curbuf;
3982 int save_VIsual_active;
3982 #endif 3983 #endif
3983 int empty_line; 3984 int empty_line;
3984 colnr_T virtcol; 3985 colnr_T virtcol;
3985 long l; 3986 long l;
3986 long n; 3987 long n;
4366 vim_snprintf((char *)win_tmp, sizeof(win_tmp), "%d", curwin->w_id); 4367 vim_snprintf((char *)win_tmp, sizeof(win_tmp), "%d", curwin->w_id);
4367 set_internal_string_var((char_u *)"g:actual_curwin", win_tmp); 4368 set_internal_string_var((char_u *)"g:actual_curwin", win_tmp);
4368 4369
4369 save_curbuf = curbuf; 4370 save_curbuf = curbuf;
4370 save_curwin = curwin; 4371 save_curwin = curwin;
4372 save_VIsual_active = VIsual_active;
4371 curwin = wp; 4373 curwin = wp;
4372 curbuf = wp->w_buffer; 4374 curbuf = wp->w_buffer;
4375 // Visual mode is only valid in the current window.
4376 if (curwin != save_curwin)
4377 VIsual_active = FALSE;
4373 4378
4374 str = eval_to_string_safe(p, &t, use_sandbox); 4379 str = eval_to_string_safe(p, &t, use_sandbox);
4375 4380
4376 curwin = save_curwin; 4381 curwin = save_curwin;
4377 curbuf = save_curbuf; 4382 curbuf = save_curbuf;
4383 VIsual_active = save_VIsual_active;
4378 do_unlet((char_u *)"g:actual_curbuf", TRUE); 4384 do_unlet((char_u *)"g:actual_curbuf", TRUE);
4379 do_unlet((char_u *)"g:actual_curwin", TRUE); 4385 do_unlet((char_u *)"g:actual_curwin", TRUE);
4380 4386
4381 if (str != NULL && *str != 0) 4387 if (str != NULL && *str != 0)
4382 { 4388 {