Patch 8.1.0333
Problem: :mkview does not restore cursor properly after "$". (Dominique
Pelle)
Solution: Position the cursor with "normal! $".
Files: src/ex_docmd.c, src/testdir/test_mksession.vim
*** ../vim-8.1.0332/src/ex_docmd.c 2018-08-23 22:51:30.878144125 +0200
--- src/ex_docmd.c 2018-08-29 20:55:57.947479752 +0200
***************
*** 11706,11711 ****
--- 11706,11723 ----
return TRUE;
}
+ static int
+ put_view_curpos(FILE *fd, win_T *wp, char *spaces)
+ {
+ int r;
+
+ if (wp->w_curswant == MAXCOL)
+ r = fprintf(fd, "%snormal! $", spaces);
+ else
+ r = fprintf(fd, "%snormal! 0%d|", spaces, wp->w_virtcol + 1);
+ return r < 0 || put_eol(fd) == FAIL ? FALSE : OK;
+ }
+
/*
* Write commands to "fd" to restore the view of a window.
* Caller must make sure 'scrolloff' is zero.
***************
*** 11897,11913 ****
(long)wp->w_virtcol + 1) < 0
|| put_eol(fd) == FAIL
|| put_line(fd, "else") == FAIL
! || fprintf(fd, " normal! 0%d|", wp->w_virtcol + 1) < 0
! || put_eol(fd) == FAIL
|| put_line(fd, "endif") == FAIL)
return FAIL;
}
! else
! {
! if (fprintf(fd, "normal! 0%d|", wp->w_virtcol + 1) < 0
! || put_eol(fd) == FAIL)
! return FAIL;
! }
}
}
--- 11909,11920 ----
(long)wp->w_virtcol + 1) < 0
|| put_eol(fd) == FAIL
|| put_line(fd, "else") == FAIL
! || put_view_curpos(fd, wp, " ") == FAIL
|| put_line(fd, "endif") == FAIL)
return FAIL;
}
! else if (put_view_curpos(fd, wp, "") == FAIL)
! return FAIL;
}
}
*** ../vim-8.1.0332/src/testdir/test_mksession.vim 2018-08-28
22:19:27.739993071 +0200
--- src/testdir/test_mksession.vim 2018-08-29 20:54:27.800200938 +0200
***************
*** 22,28 ****
\ 'two tabs in one line',
\ 'one ä multibyteCharacter',
\ 'aä Ä two multiByte characters',
! \ 'Aäöü three mulTibyte characters'
\ ])
let tmpfile = 'Xtemp'
exec 'w! ' . tmpfile
--- 22,29 ----
\ 'two tabs in one line',
\ 'one ä multibyteCharacter',
\ 'aä Ä two multiByte characters',
! \ 'Aäöü three mulTibyte characters',
! \ 'short line',
\ ])
let tmpfile = 'Xtemp'
exec 'w! ' . tmpfile
***************
*** 44,49 ****
--- 45,52 ----
norm! j16|
split
norm! j16|
+ split
+ norm! j$
wincmd l
set nowrap
***************
*** 66,72 ****
split
call wincol()
mksession! Xtest_mks.out
! let li = filter(readfile('Xtest_mks.out'), 'v:val =~# "\\(^ *normal! 0\\|^
*exe ''normal!\\)"')
let expected = [
\ 'normal! 016|',
\ 'normal! 016|',
--- 69,75 ----
split
call wincol()
mksession! Xtest_mks.out
! let li = filter(readfile('Xtest_mks.out'), 'v:val =~# "\\(^ *normal!
[0$]\\|^ *exe ''normal!\\)"')
let expected = [
\ 'normal! 016|',
\ 'normal! 016|',
***************
*** 76,81 ****
--- 79,85 ----
\ 'normal! 016|',
\ 'normal! 016|',
\ 'normal! 016|',
+ \ 'normal! $',
\ " exe 'normal! ' . s:c . '|zs' . 16 . '|'",
\ " normal! 016|",
\ " exe 'normal! ' . s:c . '|zs' . 16 . '|'",
***************
*** 317,323 ****
help :mkview
set number
norm! V}zf
! let pos = getpos('.')
let linefoldclosed1 = foldclosed('.')
mkview! Xview
set nonumber
--- 321,327 ----
help :mkview
set number
norm! V}zf
! let pos = getcurpos()
let linefoldclosed1 = foldclosed('.')
mkview! Xview
set nonumber
***************
*** 329,335 ****
source Xview
call assert_equal(1, &number)
call assert_match('\*:mkview\*$', getline('.'))
! call assert_equal(pos, getpos('.'))
call assert_equal(linefoldclosed1, foldclosed('.'))
" Creating a view again with the same file name should fail (file
--- 333,339 ----
source Xview
call assert_equal(1, &number)
call assert_match('\*:mkview\*$', getline('.'))
! call assert_equal(pos, getcurpos())
call assert_equal(linefoldclosed1, foldclosed('.'))
" Creating a view again with the same file name should fail (file
***************
*** 352,358 ****
help :mkview
set number
norm! V}zf
! let pos = getpos('.')
let linefoldclosed1 = foldclosed('.')
mkview 1
set nonumber
--- 356,362 ----
help :mkview
set number
norm! V}zf
! let pos = getcurpos()
let linefoldclosed1 = foldclosed('.')
mkview 1
set nonumber
***************
*** 369,375 ****
\ glob('Xviewdir/*'))
call assert_equal(1, &number)
call assert_match('\*:mkview\*$', getline('.'))
! call assert_equal(pos, getpos('.'))
call assert_equal(linefoldclosed1, foldclosed('.'))
call delete('Xviewdir', 'rf')
--- 373,379 ----
\ glob('Xviewdir/*'))
call assert_equal(1, &number)
call assert_match('\*:mkview\*$', getline('.'))
! call assert_equal(pos, getcurpos())
call assert_equal(linefoldclosed1, foldclosed('.'))
call delete('Xviewdir', 'rf')
*** ../vim-8.1.0332/src/version.c 2018-08-28 23:09:03.893824422 +0200
--- src/version.c 2018-08-29 20:57:17.814830811 +0200
***************
*** 796,797 ****
--- 796,799 ----
{ /* Add new patch number below this line */
+ /**/
+ 333,
/**/
--
Q: What's a light-year?
A: One-third less calories than a regular year.
/// Bram Moolenaar -- [email protected] -- 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 ///
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.