mirror of
https://github.com/neovim/neovim.git
synced 2025-09-06 03:18:16 +00:00
vim-patch:8.2.4607: sourcing buffer lines may lead to errors for conflicts
Problem: Sourcing buffer lines may lead to errors for conflicts.
Solution: Add the ++clear argument. (Yegappan Lakshmanan, closes vim/vim#9991)
35dc17634d
Documentation changes only. Vim9script is N/A.
Cherry-pick another documentation change for :source from latest Vim.
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
This commit is contained in:
@@ -197,13 +197,15 @@ For writing a Vim script, see chapter 41 of the user manual |usr_41.txt|.
|
||||
Triggers the |SourcePre| autocommand.
|
||||
|
||||
:[range]so[urce] Read Ex commands or Lua code from the [range] of lines
|
||||
in the current buffer. The buffer is treated as Lua
|
||||
code if 'filetype' is "lua" or its filename ends with
|
||||
".lua". When sourcing commands or Lua code from the
|
||||
current buffer, the same script-ID |<SID>| is used
|
||||
even if the buffer is sourced multiple times. If a
|
||||
buffer is sourced more than once, then the functions
|
||||
in the buffer are redefined again.
|
||||
in the current buffer. When [range] is omitted read
|
||||
all lines. The buffer is treated as Lua code if its
|
||||
'filetype' is "lua" or its filename ends with ".lua".
|
||||
|
||||
When sourcing commands or Lua code from the current
|
||||
buffer, the same script-ID |<SID>| is used even if the
|
||||
buffer is sourced multiple times. If a buffer is
|
||||
sourced more than once, then the functions in the
|
||||
buffer are defined again.
|
||||
|
||||
*:source!*
|
||||
:so[urce]! {file}
|
||||
|
@@ -607,6 +607,34 @@ func Test_source_buffer_vim9()
|
||||
source
|
||||
call assert_equal('red', g:Color)
|
||||
|
||||
" test for ++clear argument to clear all the functions/variables
|
||||
%d _
|
||||
let lines =<< trim END
|
||||
g:ScriptVarFound = exists("color")
|
||||
g:MyFuncFound = exists('*Myfunc')
|
||||
if g:MyFuncFound
|
||||
finish
|
||||
endif
|
||||
var color = 'blue'
|
||||
def Myfunc()
|
||||
enddef
|
||||
END
|
||||
call setline(1, lines)
|
||||
vim9cmd source
|
||||
call assert_false(g:MyFuncFound)
|
||||
call assert_false(g:ScriptVarFound)
|
||||
vim9cmd source
|
||||
call assert_true(g:MyFuncFound)
|
||||
call assert_true(g:ScriptVarFound)
|
||||
vim9cmd source ++clear
|
||||
call assert_false(g:MyFuncFound)
|
||||
call assert_false(g:ScriptVarFound)
|
||||
vim9cmd source ++clear
|
||||
call assert_false(g:MyFuncFound)
|
||||
call assert_false(g:ScriptVarFound)
|
||||
call assert_fails('vim9cmd source ++clearx', 'E475:')
|
||||
call assert_fails('vim9cmd source ++abcde', 'E484:')
|
||||
|
||||
%bw!
|
||||
endfunc
|
||||
|
||||
|
Reference in New Issue
Block a user