aboutsummaryrefslogtreecommitdiff
path: root/test/functional/api/vim_spec.lua
diff options
context:
space:
mode:
authorSean Dewar <seandewar@users.noreply.github.com>2021-10-14 00:40:46 +0100
committerSean Dewar <seandewar@users.noreply.github.com>2021-10-14 12:50:04 +0100
commitda9b0abc67a936021a4ecf7634395db860edcab1 (patch)
treef193d08a729743d2f165a81486df78dfd2b6acce /test/functional/api/vim_spec.lua
parentd4ed51eb4492d4358eb4ab0c939802f2a5fdc636 (diff)
downloadrneovim-da9b0abc67a936021a4ecf7634395db860edcab1.tar.gz
rneovim-da9b0abc67a936021a4ecf7634395db860edcab1.tar.bz2
rneovim-da9b0abc67a936021a4ecf7634395db860edcab1.zip
feat(:source, nvim_exec): defer script item creation until s:var access
For anonymous scripts, defer the creation of script items until an attempt to access a script-local variable is made. This dramatically reduces the number of script items created when using lots of vim.cmd and nvim_exec especially. This will mean <SID> usage fails until a script-local variable access is first made.
Diffstat (limited to 'test/functional/api/vim_spec.lua')
-rw-r--r--test/functional/api/vim_spec.lua22
1 files changed, 22 insertions, 0 deletions
diff --git a/test/functional/api/vim_spec.lua b/test/functional/api/vim_spec.lua
index f878a50a26..d8914a3ab7 100644
--- a/test/functional/api/vim_spec.lua
+++ b/test/functional/api/vim_spec.lua
@@ -89,6 +89,14 @@ describe('API', function()
it(':verbose set {option}?', function()
nvim('exec', 'set nowrap', false)
+ eq('nowrap\n\tLast set from anonymous :source',
+ nvim('exec', 'verbose set wrap?', true))
+
+ -- Using script var to force creation of a script item
+ nvim('exec', [[
+ let s:a = 1
+ set nowrap
+ ]], false)
eq('nowrap\n\tLast set from anonymous :source (script id 1)',
nvim('exec', 'verbose set wrap?', true))
end)
@@ -155,6 +163,20 @@ describe('API', function()
let s:pirate = 'script-scoped varrrrr'
call nvim_exec('echo s:pirate', 1)
]], false))
+
+ -- Script items are created only on script var access
+ eq('1\n0', nvim('exec', [[
+ echo expand("<SID>")->empty()
+ let s:a = 123
+ echo expand("<SID>")->empty()
+ ]], true))
+
+ eq('1\n0', nvim('exec', [[
+ echo expand("<SID>")->empty()
+ function s:a() abort
+ endfunction
+ echo expand("<SID>")->empty()
+ ]], true))
end)
it('non-ASCII input', function()