mirror of
https://github.com/neovim/neovim.git
synced 2026-04-05 07:09:23 +00:00
vim-patch:9.1.0831: 'findexpr' can't be used as lambad or Funcref (#31058)
Problem: 'findexpr' can't be used for lambads
(Justin Keyes)
Solution: Replace the findexpr option with the findfunc option
(Yegappan Lakshmanan)
related: vim/vim#15905
closes: vim/vim#15976
a13f3a4f5d
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
This commit is contained in:
52
runtime/lua/vim/_meta/options.lua
generated
52
runtime/lua/vim/_meta/options.lua
generated
@@ -2294,31 +2294,31 @@ vim.wo.fcs = vim.wo.fillchars
|
||||
vim.go.fillchars = vim.o.fillchars
|
||||
vim.go.fcs = vim.go.fillchars
|
||||
|
||||
--- Expression that is evaluated to obtain the filename(s) for the `:find`
|
||||
--- Function that is called to obtain the filename(s) for the `:find`
|
||||
--- command. When this option is empty, the internal `file-searching`
|
||||
--- mechanism is used.
|
||||
---
|
||||
--- While evaluating the expression, the `v:fname` variable is set to the
|
||||
--- argument of the `:find` command.
|
||||
--- The value can be the name of a function, a `lambda` or a `Funcref`.
|
||||
--- See `option-value-function` for more information.
|
||||
---
|
||||
--- The expression is evaluated only once per `:find` command invocation.
|
||||
--- The expression can process all the directories specified in 'path'.
|
||||
--- The function is called with two arguments. The first argument is a
|
||||
--- `String` and is the `:find` command argument. The second argument is
|
||||
--- a `Boolean` and is set to `v:true` when the function is called to get
|
||||
--- a List of command-line completion matches for the `:find` command.
|
||||
--- The function should return a List of strings.
|
||||
---
|
||||
--- The expression may be evaluated for command-line completion as well,
|
||||
--- in which case the `v:cmdcomplete` variable will be set to `v:true`,
|
||||
--- otherwise it will be set to `v:false`.
|
||||
--- The function is called only once per `:find` command invocation.
|
||||
--- The function can process all the directories specified in 'path'.
|
||||
---
|
||||
--- If a match is found, the expression should return a `List` containing
|
||||
--- one or more file names. If a match is not found, the expression
|
||||
--- If a match is found, the function should return a `List` containing
|
||||
--- one or more file names. If a match is not found, the function
|
||||
--- should return an empty List.
|
||||
---
|
||||
--- If any errors are encountered during the expression evaluation, an
|
||||
--- If any errors are encountered during the function invocation, an
|
||||
--- empty List is used as the return value.
|
||||
---
|
||||
--- Using a function call without arguments is faster `expr-option-function`
|
||||
---
|
||||
--- It is not allowed to change text or jump to another window while
|
||||
--- evaluating 'findexpr' `textlock`.
|
||||
--- executing the 'findfunc' `textlock`.
|
||||
---
|
||||
--- This option cannot be set from a `modeline` or in the `sandbox`, for
|
||||
--- security reasons.
|
||||
@@ -2327,28 +2327,28 @@ vim.go.fcs = vim.go.fillchars
|
||||
---
|
||||
--- ```vim
|
||||
--- " Use glob()
|
||||
--- func FindExprGlob()
|
||||
--- let pat = v:cmdcomplete ? $'{v:fname}*' : v:fname
|
||||
--- func FindFuncGlob(cmdarg, cmdcomplete)
|
||||
--- let pat = a:cmdcomplete ? $'{a:cmdarg}*' : a:cmdarg
|
||||
--- return glob(pat, v:false, v:true)
|
||||
--- endfunc
|
||||
--- set findexpr=FindExprGlob()
|
||||
--- set findfunc=FindFuncGlob
|
||||
---
|
||||
--- " Use the 'git ls-files' output
|
||||
--- func FindGitFiles()
|
||||
--- func FindGitFiles(cmdarg, cmdcomplete)
|
||||
--- let fnames = systemlist('git ls-files')
|
||||
--- return fnames->filter('v:val =~? v:fname')
|
||||
--- return fnames->filter('v:val =~? a:cmdarg')
|
||||
--- endfunc
|
||||
--- set findexpr=FindGitFiles()
|
||||
--- set findfunc=FindGitFiles
|
||||
--- ```
|
||||
---
|
||||
---
|
||||
--- @type string
|
||||
vim.o.findexpr = ""
|
||||
vim.o.fexpr = vim.o.findexpr
|
||||
vim.bo.findexpr = vim.o.findexpr
|
||||
vim.bo.fexpr = vim.bo.findexpr
|
||||
vim.go.findexpr = vim.o.findexpr
|
||||
vim.go.fexpr = vim.go.findexpr
|
||||
vim.o.findfunc = ""
|
||||
vim.o.ffu = vim.o.findfunc
|
||||
vim.bo.findfunc = vim.o.findfunc
|
||||
vim.bo.ffu = vim.bo.findfunc
|
||||
vim.go.findfunc = vim.o.findfunc
|
||||
vim.go.ffu = vim.go.findfunc
|
||||
|
||||
--- When writing a file and this option is on, <EOL> at the end of file
|
||||
--- will be restored if missing. Turn this option off if you want to
|
||||
|
||||
8
runtime/lua/vim/_meta/vvars.lua
generated
8
runtime/lua/vim/_meta/vvars.lua
generated
@@ -44,11 +44,6 @@ vim.v.cmdarg = ...
|
||||
--- @type integer
|
||||
vim.v.cmdbang = ...
|
||||
|
||||
--- When evaluating 'findexpr': if 'findexpr' is used for cmdline
|
||||
--- completion the value is `v:true`, otherwise it is `v:false`.
|
||||
--- @type boolean
|
||||
vim.v.cmdcomplete = ...
|
||||
|
||||
--- The current locale setting for collation order of the runtime
|
||||
--- environment. This allows Vim scripts to be aware of the
|
||||
--- current locale encoding. Technical: it's the value of
|
||||
@@ -272,8 +267,7 @@ vim.v.fcs_choice = ...
|
||||
vim.v.fcs_reason = ...
|
||||
|
||||
--- When evaluating 'includeexpr': the file name that was
|
||||
--- detected. When evaluating 'findexpr': the argument passed to
|
||||
--- the `:find` command. Empty otherwise.
|
||||
--- detected. Empty otherwise.
|
||||
--- @type string
|
||||
vim.v.fname = ...
|
||||
|
||||
|
||||
Reference in New Issue
Block a user