aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Dewar <seandewar@users.noreply.github.com>2021-08-07 01:08:22 +0100
committerSean Dewar <seandewar@users.noreply.github.com>2021-08-12 22:35:22 +0100
commitf03dd22f0d37af88f40a27c694c3265026178e80 (patch)
tree25d2f4f89d47c68ce2e9f5291550d351ab9a85f4
parent5811390f82c51a4bb15b2e8901e6b5a1d453480a (diff)
downloadrneovim-f03dd22f0d37af88f40a27c694c3265026178e80.tar.gz
rneovim-f03dd22f0d37af88f40a27c694c3265026178e80.tar.bz2
rneovim-f03dd22f0d37af88f40a27c694c3265026178e80.zip
vim-patch:8.1.1835: cannot use printf() as a method
Problem: Cannot use printf() as a method. Solution: Pass the base as the second argument to printf(). https://github.com/vim/vim/commit/fd8ca21b3ff207e44891aef922935d4adcd140cf
-rw-r--r--runtime/doc/eval.txt6
-rw-r--r--src/nvim/eval.lua2
-rw-r--r--src/nvim/testdir/test_method.vim16
3 files changed, 15 insertions, 9 deletions
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 321da32bf0..e180836917 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -6653,7 +6653,11 @@ printf({fmt}, {expr1} ...) *printf()*
< May result in:
" 99: E42 asdfasdfasdfasdfasdfasdfasdfas" ~
- Often used items are:
+ When used as a |method| the base is passed as the second
+ argument: >
+ Compute()->printf("result: %d")
+
+< Often used items are:
%s string
%6S string right-aligned in 6 display cells
%6s string right-aligned in 6 bytes
diff --git a/src/nvim/eval.lua b/src/nvim/eval.lua
index 50b6eaadfd..1821ae51d7 100644
--- a/src/nvim/eval.lua
+++ b/src/nvim/eval.lua
@@ -258,7 +258,7 @@ return {
pathshorten={args=1},
pow={args=2},
prevnonblank={args=1},
- printf={args=varargs(1)},
+ printf={args=varargs(1), base=2},
prompt_getprompt={args=1},
prompt_setcallback={args={2, 2}},
prompt_setinterrupt={args={2, 2}},
diff --git a/src/nvim/testdir/test_method.vim b/src/nvim/testdir/test_method.vim
index 4788f211e8..eeb90cd16a 100644
--- a/src/nvim/testdir/test_method.vim
+++ b/src/nvim/testdir/test_method.vim
@@ -72,13 +72,15 @@ func Test_dict_method()
endfunc
func Test_string_method()
- call assert_equal(['1', '2', '3'], '1 2 3'->split())
- call assert_equal([1, 2, 3], '1 2 3'->split()->map({i, v -> str2nr(v)}))
- call assert_equal([65, 66, 67], 'ABC'->str2list())
- call assert_equal(3, 'ABC'->strlen())
- call assert_equal('a^Mb^[c', "a\rb\ec"->strtrans())
- call assert_equal(4, "aあb"->strwidth())
- call assert_equal('axc', 'abc'->substitute('b', 'x', ''))
+ eval '1 2 3'->split()->assert_equal(['1', '2', '3'])
+ eval '1 2 3'->split()->map({i, v -> str2nr(v)})->assert_equal([1, 2, 3])
+ eval 'ABC'->str2list()->assert_equal([65, 66, 67])
+ eval 'ABC'->strlen()->assert_equal(3)
+ eval "a\rb\ec"->strtrans()->assert_equal('a^Mb^[c')
+ eval "aあb"->strwidth()->assert_equal(4)
+ eval 'abc'->substitute('b', 'x', '')->assert_equal('axc')
+
+ eval 'abc'->printf('the %s arg')->assert_equal('the abc arg')
endfunc
func Test_method_append()