diff src/testdir/test_marks.vim @ 10730:44e9340dc604 v8.0.0255

patch 8.0.0255: setpos() does not use the buffer argument for all marks commit https://github.com/vim/vim/commit/f13e00b2cf381e13fd327b5387a5bd6f004ac2a3 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Jan 28 18:23:54 2017 +0100 patch 8.0.0255: setpos() does not use the buffer argument for all marks Problem: When calling setpos() with a buffer argument it often is ignored. (Matthew Malcomson) Solution: Make the buffer argument work for all marks local to a buffer. (neovim #5713) Add more tests.
author Christian Brabandt <cb@256bit.org>
date Sat, 28 Jan 2017 18:30:04 +0100
parents c577c6a2e88b
children 3b600d16d9cb
line wrap: on
line diff
--- a/src/testdir/test_marks.vim
+++ b/src/testdir/test_marks.vim
@@ -24,3 +24,47 @@ function! Test_Incr_Marks()
   call assert_equal("XXX 123 123", getline(3))
   enew!
 endfunction
+
+func Test_setpos()
+  new one
+  let onebuf = bufnr('%')
+  let onewin = win_getid()
+  call setline(1, ['aaa', 'bbb', 'ccc'])
+  new two
+  let twobuf = bufnr('%')
+  let twowin = win_getid()
+  call setline(1, ['aaa', 'bbb', 'ccc'])
+
+  " for the cursor the buffer number is ignored
+  call setpos(".", [0, 2, 1, 0])
+  call assert_equal([0, 2, 1, 0], getpos("."))
+  call setpos(".", [onebuf, 3, 3, 0])
+  call assert_equal([0, 3, 3, 0], getpos("."))
+
+  call setpos("''", [0, 1, 3, 0])
+  call assert_equal([0, 1, 3, 0], getpos("''"))
+  call setpos("''", [onebuf, 2, 2, 0])
+  call assert_equal([0, 2, 2, 0], getpos("''"))
+
+  " buffer-local marks
+  for mark in ["'a", "'\"", "'[", "']", "'<", "'>"]
+    call win_gotoid(twowin)
+    call setpos(mark, [0, 2, 1, 0])
+    call assert_equal([0, 2, 1, 0], getpos(mark), "for mark " . mark)
+    call setpos(mark, [onebuf, 1, 3, 0])
+    call win_gotoid(onewin)
+    call assert_equal([0, 1, 3, 0], getpos(mark), "for mark " . mark)
+  endfor
+
+  " global marks
+  call win_gotoid(twowin)
+  call setpos("'N", [0, 2, 1, 0])
+  call assert_equal([twobuf, 2, 1, 0], getpos("'N"))
+  call setpos("'N", [onebuf, 1, 3, 0])
+  call assert_equal([onebuf, 1, 3, 0], getpos("'N"))
+
+  call win_gotoid(onewin)
+  bwipe!
+  call win_gotoid(twowin)
+  bwipe!
+endfunc