diff options
author | Mathias Fußenegger <mfussenegger@users.noreply.github.com> | 2022-09-13 22:16:20 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-13 14:16:20 -0600 |
commit | a8c9e721d91efe4730db78c1115261fc128dca68 (patch) | |
tree | 9a026a2e55bfc325674fec25ef4e9e2c3048a589 /test/functional/lua/fs_spec.lua | |
parent | 1970d2ac43059639e4e2c83223d86397b38786ff (diff) | |
download | rneovim-a8c9e721d91efe4730db78c1115261fc128dca68.tar.gz rneovim-a8c9e721d91efe4730db78c1115261fc128dca68.tar.bz2 rneovim-a8c9e721d91efe4730db78c1115261fc128dca68.zip |
feat(fs): extend fs.find to accept predicate (#20193)
Makes it possible to use `vim.fs.find` to find files where only a
substring is known.
This is useful for `vim.lsp.start` to get the `root_dir` for languages
where the project-file is only known by its extension, not by the full
name.
For example in .NET projects there is usually a `<projectname>.csproj`
file in the project root.
Example:
vim.fs.find(function(x) return vim.endswith(x, '.csproj') end, { upward = true })
Diffstat (limited to 'test/functional/lua/fs_spec.lua')
-rw-r--r-- | test/functional/lua/fs_spec.lua | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/test/functional/lua/fs_spec.lua b/test/functional/lua/fs_spec.lua index 2bcc84db0f..3123ec324c 100644 --- a/test/functional/lua/fs_spec.lua +++ b/test/functional/lua/fs_spec.lua @@ -78,6 +78,23 @@ describe('vim.fs', function() return vim.fs.find(nvim, { path = dir, type = 'file' }) ]], test_build_dir, nvim_prog_basename)) end) + + it('accepts predicate as names', function() + eq({test_build_dir}, exec_lua([[ + local dir = ... + local opts = { path = dir, upward = true, type = 'directory' } + return vim.fs.find(function(x) return x == 'build' end, opts) + ]], nvim_dir)) + eq({nvim_prog}, exec_lua([[ + local dir, nvim = ... + return vim.fs.find(function(x) return x == nvim end, { path = dir, type = 'file' }) + ]], test_build_dir, nvim_prog_basename)) + eq({}, exec_lua([[ + local dir = ... + local opts = { path = dir, upward = true, type = 'directory' } + return vim.fs.find(function(x) return x == 'no-match' end, opts) + ]], nvim_dir)) + end) end) describe('normalize()', function() |