| To: vim_dev@googlegroups.com |
| Subject: Patch 7.3.111 |
| Fcc: outbox |
| From: Bram Moolenaar <Bram@moolenaar.net> |
| Mime-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| |
| Patch 7.3.111 (after 7.3.100) |
| Problem: Executing a :normal command in 'statusline' evaluation causes the |
| cursor to move. (Dominique Pelle) |
| Solution: When updating the cursor for 'cursorbind' allow the cursor beyond |
| the end of the line. When evaluating 'statusline' temporarily |
| reset 'cursorbind'. |
| Files: src/move.c, src/screen.c |
| |
| |
| |
| |
| |
| *** 2846,2851 **** |
| --- 2846,2852 ---- |
| colnr_T col = curwin->w_cursor.col; |
| win_T *old_curwin = curwin; |
| buf_T *old_curbuf = curbuf; |
| + int restart_edit_save; |
| # ifdef FEAT_VISUAL |
| int old_VIsual_select = VIsual_select; |
| int old_VIsual_active = VIsual_active; |
| |
| *** 2875,2882 **** |
| curwin->w_cursor.lnum = line; |
| curwin->w_cursor.col = col; |
| |
| ! /* Make sure the cursor is in a valid position. */ |
| check_cursor(); |
| # ifdef FEAT_MBYTE |
| /* Correct cursor for multi-byte character. */ |
| if (has_mbyte) |
| --- 2876,2887 ---- |
| curwin->w_cursor.lnum = line; |
| curwin->w_cursor.col = col; |
| |
| ! /* Make sure the cursor is in a valid position. Temporarily set |
| ! * "restart_edit" to allow the cursor to be beyond the EOL. */ |
| ! restart_edit_save = restart_edit; |
| ! restart_edit = TRUE; |
| check_cursor(); |
| + restart_edit = restart_edit_save; |
| # ifdef FEAT_MBYTE |
| /* Correct cursor for multi-byte character. */ |
| if (has_mbyte) |
| |
| |
| |
| *** 6435,6440 **** |
| --- 6435,6442 ---- |
| struct stl_hlrec hltab[STL_MAX_ITEM]; |
| struct stl_hlrec tabtab[STL_MAX_ITEM]; |
| int use_sandbox = FALSE; |
| + win_T *ewp; |
| + int p_crb_save; |
| |
| /* setup environment for the task at hand */ |
| if (wp == NULL) |
| |
| *** 6513,6526 **** |
| if (maxwidth <= 0) |
| return; |
| |
| /* Make a copy, because the statusline may include a function call that |
| * might change the option value and free the memory. */ |
| stl = vim_strsave(stl); |
| ! width = build_stl_str_hl(wp == NULL ? curwin : wp, |
| ! buf, sizeof(buf), |
| stl, use_sandbox, |
| fillchar, maxwidth, hltab, tabtab); |
| vim_free(stl); |
| |
| /* Make all characters printable. */ |
| p = transstr(buf); |
| --- 6515,6534 ---- |
| if (maxwidth <= 0) |
| return; |
| |
| + /* Temporarily reset 'cursorbind', we don't want a side effect from moving |
| + * the cursor away and back. */ |
| + ewp = wp == NULL ? curwin : wp; |
| + p_crb_save = ewp->w_p_crb; |
| + ewp->w_p_crb = FALSE; |
| + |
| /* Make a copy, because the statusline may include a function call that |
| * might change the option value and free the memory. */ |
| stl = vim_strsave(stl); |
| ! width = build_stl_str_hl(ewp, buf, sizeof(buf), |
| stl, use_sandbox, |
| fillchar, maxwidth, hltab, tabtab); |
| vim_free(stl); |
| + ewp->w_p_crb = p_crb_save; |
| |
| /* Make all characters printable. */ |
| p = transstr(buf); |
| |
| |
| |
| *** 716,717 **** |
| --- 716,719 ---- |
| { /* Add new patch number below this line */ |
| + /**/ |
| + 111, |
| /**/ |
| |
| -- |
| hundred-and-one symptoms of being an internet addict: |
| 177. You log off of your system because it's time to go to work. |
| |
| /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ |
| /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ |
| \\\ an exciting new programming language -- http://www.Zimbu.org /// |
| \\\ help me help AIDS victims -- http://ICCF-Holland.org /// |