diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 8d51ab0..cc90cbf 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -5833,7 +5833,7 @@
 
 		Can also be used as a |method|, the base is used for the
 		second argument: >
-			GetPattern()->histadd('search')
+			GetHistory()->histadd('search')
 
 histdel({history} [, {item}])				*histdel()*
 		Clear {history}, i.e. delete all its entries.  See |hist-names|
@@ -7923,6 +7923,9 @@
 		arbitrary number that can only be used to compare to the
 		attribute at other positions.
 
+		Can also be used as a |method|: >
+			GetRow()->screenattr(col)
+
 screenchar({row}, {col})					*screenchar()*
 		The result is a Number, which is the character at position
 		[row, col] on the screen.  This works for every possible
@@ -7933,6 +7936,9 @@
 		This is mainly to be used for testing.
 		Returns -1 when row or col is out of range.
 
+		Can also be used as a |method|: >
+			GetRow()->screenchar(col)
+
 screenchars({row}, {col})					*screenchars()*
 		The result is a List of Numbers.  The first number is the same
 		as what |screenchar()| returns.  Further numbers are
@@ -7940,6 +7946,9 @@
 		This is mainly to be used for testing.
 		Returns an empty List when row or col is out of range.
 
+		Can also be used as a |method|: >
+			GetRow()->screenchars(col)
+
 screencol()							*screencol()*
 		The result is a Number, which is the current screen column of
 		the cursor. The leftmost column has number 1.
@@ -7970,6 +7979,9 @@
 		a Tab it would be the same as "endcol", while for a double
 		width character it would be the same as "col".
 
+		Can also be used as a |method|: >
+			GetWinid()->screenpos(lnum, col)
+
 screenrow()							*screenrow()*
 		The result is a Number, which is the current screen row of the
 		cursor.  The top line has number one.
@@ -7986,6 +7998,9 @@
 		This is mainly to be used for testing.
 		Returns an empty String when row or col is out of range.
 
+		Can also be used as a |method|: >
+			GetRow()->screenstring(col)
+
 search({pattern} [, {flags} [, {stopline} [, {timeout}]]])	*search()*
 		Search for regexp pattern {pattern}.  The search starts at the
 		cursor position (you can use |cursor()| to set it).
@@ -8072,6 +8087,8 @@
 		without the 'e' flag if the cursor is on the "f" of "if".
 		The 'n' flag tells the function not to move the cursor.
 
+		Can also be used as a |method|: >
+			GetPattern()->search()
 
 searchdecl({name} [, {global} [, {thisblock}]])			*searchdecl()*
 		Search for the declaration of {name}.
@@ -8091,6 +8108,9 @@
 			   echo getline('.')
 			endif
 <
+		Can also be used as a |method|: >
+			GetName()->searchdecl()
+<
 							*searchpair()*
 searchpair({start}, {middle}, {end} [, {flags} [, {skip}
 				[, {stopline} [, {timeout}]]]])
@@ -8205,6 +8225,9 @@
 <		In this example "submatch" is 2 when a lowercase letter is
 		found |/\l|, 3 when an uppercase letter is found |/\u|.
 
+		Can also be used as a |method|: >
+			GetPattern()->searchpos()
+
 server2client({clientid}, {string})			*server2client()*
 		Send a reply string to {clientid}.  The most recent {clientid}
 		that sent a string can be retrieved with expand("<client>").
@@ -8216,6 +8239,9 @@
 		See also |clientserver|.
 		Example: >
 			:echo server2client(expand("<client>"), "HELLO")
+
+<		Can also be used as a |method|: >
+			GetClientId()->server2client(string)
 <
 serverlist()					*serverlist()*
 		Return a list of available server names, one per line.
@@ -8239,6 +8265,9 @@
 		{lnum} is not valid then 1 is returned.  On success 0 is
 		returned.
 
+		Can also be used as a |method|: >
+			GetText()->setbufline(buf, lnum)
+
 setbufvar({expr}, {varname}, {val})			*setbufvar()*
 		Set option or local variable {varname} in buffer {expr} to
 		{val}.
@@ -8252,6 +8281,9 @@
 			:call setbufvar("todo", "myvar", "foobar")
 <		This function is not available in the |sandbox|.
 
+		Can also be used as a |method|: >
+			GetValue()->setbufvar(buf, varname)
+
 setcharsearch({dict})					*setcharsearch()*
 		Set the current character search information to {dict},
 		which contains one or more of the following entries:
@@ -8272,6 +8304,9 @@
 			:call setcharsearch(prevsearch)
 <		Also see |getcharsearch()|.
 
+		Can also be used as a |method|: >
+			SavedSearch()->setcharsearch()
+
 setcmdpos({pos})					*setcmdpos()*
 		Set the cursor position in the command line to byte position
 		{pos}.  The first position is 1.
@@ -8287,11 +8322,17 @@
 		Returns 0 when successful, 1 when not editing the command
 		line.
 
+		Can also be used as a |method|: >
+			GetPos()->setcmdpos()
+
 setenv({name}, {val})						*setenv()*
 		Set environment variable {name} to {val}.
 		When {val} is |v:null| the environment variable is deleted.
 		See also |expr-env|.
 
+		Can also be used as a |method|, passing the value as the base: >
+			GetPath()->setenv('PATH')
+
 setfperm({fname}, {mode})				*setfperm()* *chmod*
 		Set the file permissions for {fname} to {mode}.
 		{mode} must be a string with 9 characters.  It is of the form
@@ -8338,6 +8379,9 @@
 
 <		Note: The '[ and '] marks are not set.
 
+		Can also be used as a |method|, passing the text as the base: >
+			GetText()->setline(lnum)
+
 setloclist({nr}, {list} [, {action} [, {what}]])		*setloclist()*
 		Create or replace or add to the location list for window {nr}.
 		{nr} can be the window number or the |window-ID|.
diff --git a/src/evalfunc.c b/src/evalfunc.c
index c790913..f302df7 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -700,27 +700,27 @@
 #ifdef FEAT_RUBY
     {"rubyeval",	1, 1, FEARG_1,	  f_rubyeval},
 #endif
-    {"screenattr",	2, 2, 0,	  f_screenattr},
-    {"screenchar",	2, 2, 0,	  f_screenchar},
-    {"screenchars",	2, 2, 0,	  f_screenchars},
+    {"screenattr",	2, 2, FEARG_1,	  f_screenattr},
+    {"screenchar",	2, 2, FEARG_1,	  f_screenchar},
+    {"screenchars",	2, 2, FEARG_1,	  f_screenchars},
     {"screencol",	0, 0, 0,	  f_screencol},
-    {"screenpos",	3, 3, 0,	  f_screenpos},
+    {"screenpos",	3, 3, FEARG_1,	  f_screenpos},
     {"screenrow",	0, 0, 0,	  f_screenrow},
-    {"screenstring",	2, 2, 0,	  f_screenstring},
-    {"search",		1, 4, 0,	  f_search},
-    {"searchdecl",	1, 3, 0,	  f_searchdecl},
+    {"screenstring",	2, 2, FEARG_1,	  f_screenstring},
+    {"search",		1, 4, FEARG_1,	  f_search},
+    {"searchdecl",	1, 3, FEARG_1,	  f_searchdecl},
     {"searchpair",	3, 7, 0,	  f_searchpair},
     {"searchpairpos",	3, 7, 0,	  f_searchpairpos},
-    {"searchpos",	1, 4, 0,	  f_searchpos},
-    {"server2client",	2, 2, 0,	  f_server2client},
+    {"searchpos",	1, 4, FEARG_1,	  f_searchpos},
+    {"server2client",	2, 2, FEARG_1,	  f_server2client},
     {"serverlist",	0, 0, 0,	  f_serverlist},
-    {"setbufline",	3, 3, 0,	  f_setbufline},
-    {"setbufvar",	3, 3, 0,	  f_setbufvar},
-    {"setcharsearch",	1, 1, 0,	  f_setcharsearch},
-    {"setcmdpos",	1, 1, 0,	  f_setcmdpos},
-    {"setenv",		2, 2, 0,	  f_setenv},
+    {"setbufline",	3, 3, FEARG_3,	  f_setbufline},
+    {"setbufvar",	3, 3, FEARG_3,	  f_setbufvar},
+    {"setcharsearch",	1, 1, FEARG_1,	  f_setcharsearch},
+    {"setcmdpos",	1, 1, FEARG_1,	  f_setcmdpos},
+    {"setenv",		2, 2, FEARG_2,	  f_setenv},
     {"setfperm",	2, 2, FEARG_1,	  f_setfperm},
-    {"setline",		2, 2, 0,	  f_setline},
+    {"setline",		2, 2, FEARG_2,	  f_setline},
     {"setloclist",	2, 4, 0,	  f_setloclist},
     {"setmatches",	1, 2, 0,	  f_setmatches},
     {"setpos",		2, 2, 0,	  f_setpos},
diff --git a/src/testdir/test_bufline.vim b/src/testdir/test_bufline.vim
index 50f7275..3c3c89c 100644
--- a/src/testdir/test_bufline.vim
+++ b/src/testdir/test_bufline.vim
@@ -20,7 +20,7 @@
   let b = bufnr('%')
   wincmd w
   call assert_equal(1, setbufline(b, 5, ['x']))
-  call assert_equal(1, setbufline(bufnr('$') + 1, 1, ['x']))
+  call assert_equal(1, ['x']->setbufline(bufnr('$') + 1, 1))
   call assert_equal(0, setbufline(b, 4, ['d', 'e']))
   call assert_equal(['c'], b->getbufline(3))
   call assert_equal(['d'], getbufline(b, 4))
diff --git a/src/testdir/test_charsearch.vim b/src/testdir/test_charsearch.vim
index 17a49e0..6f09e85 100644
--- a/src/testdir/test_charsearch.vim
+++ b/src/testdir/test_charsearch.vim
@@ -20,7 +20,7 @@
   " check that setcharsearch() changes the settings.
   3
   normal! ylfep
-  call setcharsearch({'char': 'k'})
+  eval {'char': 'k'}->setcharsearch()
   normal! ;p
   call setcharsearch({'forward': 0})
   normal! $;p
diff --git a/src/testdir/test_clientserver.vim b/src/testdir/test_clientserver.vim
index 2e4a66e..f358117 100644
--- a/src/testdir/test_clientserver.vim
+++ b/src/testdir/test_clientserver.vim
@@ -73,7 +73,7 @@
   call remote_send(name, ":call server2client(expand('<client>'), 'got it')\<CR>", 'g:myserverid')
   call assert_equal('got it', g:myserverid->remote_read(2))
 
-  call remote_send(name, ":call server2client(expand('<client>'), 'another')\<CR>", 'g:myserverid')
+  call remote_send(name, ":eval expand('<client>')->server2client('another')\<CR>", 'g:myserverid')
   let peek_result = 'nothing'
   let r = g:myserverid->remote_peek('peek_result')
   " unpredictable whether the result is already available.
diff --git a/src/testdir/test_cmdline.vim b/src/testdir/test_cmdline.vim
index 6ed7848..26a50e0 100644
--- a/src/testdir/test_cmdline.vim
+++ b/src/testdir/test_cmdline.vim
@@ -672,7 +672,7 @@
   call assert_equal('"12ab', @:)
 
   " setcmdpos() returns 1 when not editing the command line.
-  call assert_equal(1, setcmdpos(3))
+  call assert_equal(1, 3->setcmdpos())
 endfunc
 
 func Test_cmdline_overstrike()
diff --git a/src/testdir/test_cursor_func.vim b/src/testdir/test_cursor_func.vim
index fbe7be7..4fc28c9 100644
--- a/src/testdir/test_cursor_func.vim
+++ b/src/testdir/test_cursor_func.vim
@@ -87,7 +87,7 @@
   call assert_equal({'row': winrow,
 	\ 'col': wincol + 13,
 	\ 'curscol': wincol + 13,
-	\ 'endcol': wincol + 13}, screenpos(winid, 1, 7))
+	\ 'endcol': wincol + 13}, winid->screenpos(1, 7))
   call assert_equal({'row': winrow + 2,
 	\ 'col': wincol + 1,
 	\ 'curscol': wincol + 1,
diff --git a/src/testdir/test_diffmode.vim b/src/testdir/test_diffmode.vim
index bbdbfb8..8280a2c 100644
--- a/src/testdir/test_diffmode.vim
+++ b/src/testdir/test_diffmode.vim
@@ -330,7 +330,7 @@
   call setline(1, ['One', '', 'Two', 'Three'])
   diffthis
   redraw
-  call assert_notequal(normattr, screenattr(1, 1))
+  call assert_notequal(normattr, 1->screenattr(1))
   diffoff!
   redraw
   call assert_equal(normattr, screenattr(1, 1))
diff --git a/src/testdir/test_environ.vim b/src/testdir/test_environ.vim
index ba61b17..b52d102 100644
--- a/src/testdir/test_environ.vim
+++ b/src/testdir/test_environ.vim
@@ -18,7 +18,7 @@
 
 func Test_setenv()
   unlet! $TESTENV
-  call setenv('TEST ENV', 'foo')
+  eval 'foo'->setenv('TEST ENV')
   call assert_equal('foo', getenv('TEST ENV'))
   call setenv('TEST ENV', v:null)
   call assert_equal(v:null, getenv('TEST ENV'))
diff --git a/src/testdir/test_functions.vim b/src/testdir/test_functions.vim
index dfd6a93..1d8d74d 100644
--- a/src/testdir/test_functions.vim
+++ b/src/testdir/test_functions.vim
@@ -1137,7 +1137,7 @@
   wincmd h
   let wh = winheight('.')
   let dummy_buf = bufnr('dummy_buf2', v:true)
-  call setbufvar(dummy_buf, '&buftype', 'nofile')
+  eval 'nofile'->setbufvar(dummy_buf, '&buftype')
   execute 'belowright vertical split #' . dummy_buf
   call assert_equal(wh, winheight('.'))
 
@@ -1413,7 +1413,7 @@
   " is invalid in that buffer.
   call writefile(['just one line'], 'Xfuncrange2')
   new
-  call setline(1, 10->range())
+  eval 10->range()->setline(1)
   write Xfuncrange1
   call assert_fails('5,8call EditAnotherFile()', 'E16:')
 
diff --git a/src/testdir/test_matchadd_conceal_utf8.vim b/src/testdir/test_matchadd_conceal_utf8.vim
index 98ed2cb..2cdb062 100644
--- a/src/testdir/test_matchadd_conceal_utf8.vim
+++ b/src/testdir/test_matchadd_conceal_utf8.vim
@@ -10,7 +10,7 @@
 func s:screenline(lnum) abort
   let line = []
   for c in range(1, winwidth(0))
-    call add(line, nr2char(screenchar(a:lnum, c)))
+    call add(line, nr2char(a:lnum->screenchar(c)))
   endfor
   return s:trim(join(line, ''))
 endfunc
diff --git a/src/testdir/test_popupwin.vim b/src/testdir/test_popupwin.vim
index 03cada3..e6b4137 100644
--- a/src/testdir/test_popupwin.vim
+++ b/src/testdir/test_popupwin.vim
@@ -833,7 +833,7 @@
 
   sleep 700m
   redraw
-  let line = join(map(range(1, 5), 'screenstring(1, v:val)'), '')
+  let line = join(map(range(1, 5), '1->screenstring(v:val)'), '')
   call assert_equal('hello', line)
 
   call popup_create('on the command line', #{
diff --git a/src/testdir/test_search.vim b/src/testdir/test_search.vim
index dbe4c2a..190755a 100644
--- a/src/testdir/test_search.vim
+++ b/src/testdir/test_search.vim
@@ -1280,7 +1280,7 @@
 
   normal gg
 
-  call search('foobar', 'c')
+  eval 'foobar'->search('c')
   call assert_equal([1, 1], [line('.'), col('.')])
 
   normal j
@@ -1318,3 +1318,38 @@
     set norl
   endif
 endfunc
+
+func Test_searchdecl()
+  let lines =<< trim END
+     int global;
+
+     func()
+     {
+       int global;
+       if (cond) {
+	 int local;
+       }
+       int local;
+       // comment
+     }
+  END
+  new
+  call setline(1, lines)
+  10
+  call assert_equal(0, searchdecl('local', 0, 0))
+  call assert_equal(7, getcurpos()[1])
+
+  10
+  call assert_equal(0, 'local'->searchdecl(0, 1))
+  call assert_equal(9, getcurpos()[1])
+
+  10
+  call assert_equal(0, searchdecl('global'))
+  call assert_equal(5, getcurpos()[1])
+
+  10
+  call assert_equal(0, searchdecl('global', 1))
+  call assert_equal(1, getcurpos()[1])
+
+  bwipe!
+endfunc
diff --git a/src/testdir/test_searchpos.vim b/src/testdir/test_searchpos.vim
index 8dffddc..5827cbc 100644
--- a/src/testdir/test_searchpos.vim
+++ b/src/testdir/test_searchpos.vim
@@ -7,7 +7,7 @@
   call cursor(1, 1)
   call assert_equal([1, 1, 2], searchpos('\%(\([a-z]\)\|\_.\)\{-}xyz', 'pcW'))
   call cursor(1, 2)
-  call assert_equal([2, 1, 1], searchpos('\%(\([a-z]\)\|\_.\)\{-}xyz', 'pcW'))
+  call assert_equal([2, 1, 1], '\%(\([a-z]\)\|\_.\)\{-}xyz'->searchpos('pcW'))
   set cpo-=c
   call cursor(1, 2)
   call assert_equal([1, 2, 2], searchpos('\%(\([a-z]\)\|\_.\)\{-}xyz', 'pcW'))
diff --git a/src/testdir/test_utf8.vim b/src/testdir/test_utf8.vim
index 9470855..fa0568e 100644
--- a/src/testdir/test_utf8.vim
+++ b/src/testdir/test_utf8.vim
@@ -112,7 +112,7 @@
   call setline(1, ["ABC\u0308"])
   redraw
   call assert_equal([0x0041], screenchars(1, 1))
-  call assert_equal([0x0042], screenchars(1, 2))
+  call assert_equal([0x0042], 1->screenchars(2))
   call assert_equal([0x0043, 0x0308], screenchars(1, 3))
   call assert_equal("A", screenstring(1, 1))
   call assert_equal("B", screenstring(1, 2))
diff --git a/src/version.c b/src/version.c
index a21104c..05e8829 100644
--- a/src/version.c
+++ b/src/version.c
@@ -758,6 +758,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1993,
+/**/
     1992,
 /**/
     1991,
