feat: implement ZkList command for zk (#3257)

Surfaces the `zk.list` LSP command in the same way as `zk.new` and
`zk.index`.
This commit is contained in:
Hugo 2024-08-05 11:04:01 +02:00 committed by GitHub
parent e6528f4613
commit 9f10797d35
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1,5 +1,13 @@
local util = require 'lspconfig.util'
local function find_zk_root(startpath)
for dir in vim.fs.parents(startpath) do
if vim.fn.isdirectory(vim.fs.joinpath(dir, '.zk')) == 1 then
return dir
end
end
end
return {
default_config = {
cmd = { 'zk', 'lsp' },
@ -16,6 +24,29 @@ return {
end,
description = 'ZkIndex',
},
ZkList = {
function()
local bufpath = vim.api.nvim_buf_get_name(0)
local root = find_zk_root(bufpath)
vim.lsp.buf_request(0, 'workspace/executeCommand', {
command = 'zk.list',
arguments = { root, { select = { 'path' } } },
}, function(_, result, _, _)
if not result then
return
end
local paths = vim.tbl_map(function(item)
return item.path
end, result)
vim.ui.select(paths, {}, function(choice)
vim.cmd('edit ' .. choice)
end)
end)
end,
description = 'ZkList',
},
ZkNew = {
function(...)
vim.lsp.buf_request(0, 'workspace/executeCommand', {