# HG changeset patch # User Bram Moolenaar # Date 1591013705 -7200 # Node ID 3e36a51ff1523b20a94cb8b77fea4866f1b08c73 # Parent 524fb8e122ba0f137716585fab6fae78524ae653 patch 8.2.0871: cannot use getmarklist() as a method Commit: https://github.com/vim/vim/commit/f17e7ea67a798d0aa45ce24ea80c9e21d5164326 Author: Bram Moolenaar 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) diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt --- 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 diff --git a/src/evalfunc.c b/src/evalfunc.c --- 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}, diff --git a/src/mark.c b/src/mark.c --- 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 diff --git a/src/testdir/test_marks.vim b/src/testdir/test_marks.vim --- 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 diff --git a/src/version.c b/src/version.c --- 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,