changeset 20635:3e36a51ff152 v8.2.0871

patch 8.2.0871: cannot use getmarklist() as a method Commit: https://github.com/vim/vim/commit/f17e7ea67a798d0aa45ce24ea80c9e21d5164326 Author: Bram Moolenaar <Bram@vim.org> Date: Mon Jun 1 14:14:44 2020 +0200 patch 8.2.0871: cannot use getmarklist() as a method Problem: Cannot use getmarklist() as a method. Solution: Make getmarklist() work as a method. Add one to the column number to match getpos(). (Yegappan Lakshmanan, closes #6176)
author Bram Moolenaar <Bram@vim.org>
date Mon, 01 Jun 2020 14:15:05 +0200
parents 524fb8e122ba
children 7226685d849a
files runtime/doc/eval.txt src/evalfunc.c src/mark.c src/testdir/test_marks.vim src/version.c
diffstat 5 files changed, 13 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -5385,6 +5385,8 @@ getmarklist([{expr}]					*getmarklist()*
 		Refer to |getpos()| for getting information about a specific
 		mark.
 
+		Can also be used as a |method|: >
+			GetBufnr()->getmarklist()
 
 getmatches([{win}])					*getmatches()*
 		Returns a |List| with all matches previously defined for the
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -579,7 +579,7 @@ static funcentry_T global_functions[] =
     {"getjumplist",	0, 2, FEARG_1,	  ret_list_any,	f_getjumplist},
     {"getline",		1, 2, FEARG_1,	  ret_f_getline, f_getline},
     {"getloclist",	1, 2, 0,	  ret_list_dict_any, f_getloclist},
-    {"getmarklist",	0, 1, 0,	  ret_list_dict_any,  f_getmarklist},
+    {"getmarklist",	0, 1, FEARG_1,	  ret_list_dict_any,  f_getmarklist},
     {"getmatches",	0, 1, 0,	  ret_list_dict_any, f_getmatches},
     {"getmousepos",	0, 0, 0,	  ret_dict_number, f_getmousepos},
     {"getpid",		0, 0, 0,	  ret_number,	f_getpid},
--- a/src/mark.c
+++ b/src/mark.c
@@ -1442,7 +1442,7 @@ add_mark(list_T *l, char_u *mname, pos_T
 
     list_append_number(lpos, bufnr);
     list_append_number(lpos, pos->lnum);
-    list_append_number(lpos, pos->col);
+    list_append_number(lpos, pos->col + 1);
     list_append_number(lpos, pos->coladd);
 
     if (dict_add_string(d, "mark", mname) == FAIL
--- a/src/testdir/test_marks.vim
+++ b/src/testdir/test_marks.vim
@@ -269,18 +269,18 @@ func Test_getmarklist()
   mark A
   call cursor(3, 5)
   normal mN
-  call assert_equal([{'file' : '', 'mark' : "'A", 'pos' : [bufnr(), 1, 0, 0]},
-        \ {'file' : '', 'mark' : "'N", 'pos' : [bufnr(), 3, 4, 0]}],
+  call assert_equal([{'file' : '', 'mark' : "'A", 'pos' : [bufnr(), 1, 1, 0]},
+        \ {'file' : '', 'mark' : "'N", 'pos' : [bufnr(), 3, 5, 0]}],
         \ getmarklist())
   " buffer local marks
   delmarks!
-  call assert_equal([{'mark' : "''", 'pos' : [bufnr(), 1, 0, 0]},
-        \ {'mark' : "'\"", 'pos' : [bufnr(), 1, 0, 0]}], getmarklist(bufnr()))
+  call assert_equal([{'mark' : "''", 'pos' : [bufnr(), 1, 1, 0]},
+        \ {'mark' : "'\"", 'pos' : [bufnr(), 1, 1, 0]}], getmarklist(bufnr()))
   call cursor(2, 2)
   normal mr
-  call assert_equal({'mark' : "'r", 'pos' : [bufnr(), 2, 1, 0]},
-        \ getmarklist(bufnr())[0])
-  call assert_equal([], getmarklist({}))
+  call assert_equal({'mark' : "'r", 'pos' : [bufnr(), 2, 2, 0]},
+        \ bufnr()->getmarklist()[0])
+  call assert_equal([], {}->getmarklist())
   close!
 endfunc
 
--- a/src/version.c
+++ b/src/version.c
@@ -747,6 +747,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    871,
+/**/
     870,
 /**/
     869,