diff --git a/lua/lazyvim/plugins/extras/lang/elixir.lua b/lua/lazyvim/plugins/extras/lang/elixir.lua index 289e50df..1be9c846 100644 --- a/lua/lazyvim/plugins/extras/lang/elixir.lua +++ b/lua/lazyvim/plugins/extras/lang/elixir.lua @@ -16,6 +16,8 @@ return { function() local params = vim.lsp.util.make_position_params() LazyVim.lsp.execute({ + title = "toPipe", + filter = "elixirls", command = "manipulatePipes:serverid", arguments = { "toPipe", params.textDocument.uri, params.position.line, params.position.character }, }) @@ -27,6 +29,8 @@ return { function() local params = vim.lsp.util.make_position_params() LazyVim.lsp.execute({ + title = "fromPipe", + filter = "elixirls", command = "manipulatePipes:serverid", arguments = { "fromPipe", params.textDocument.uri, params.position.line, params.position.character }, }) diff --git a/lua/lazyvim/plugins/extras/lang/typescript.lua b/lua/lazyvim/plugins/extras/lang/typescript.lua index 101b83f2..8acbc46a 100644 --- a/lua/lazyvim/plugins/extras/lang/typescript.lua +++ b/lua/lazyvim/plugins/extras/lang/typescript.lua @@ -113,7 +113,11 @@ return { { "cV", function() - LazyVim.lsp.execute({ command = "typescript.selectTypeScriptVersion" }) + LazyVim.lsp.execute({ + title = "Select TypeScript Version", + filter = "vtsls", + command = "typescript.selectTypeScriptVersion", + }) end, desc = "Select TS workspace version", }, diff --git a/lua/lazyvim/plugins/extras/lang/typst.lua b/lua/lazyvim/plugins/extras/lang/typst.lua index 099a6861..9f605351 100644 --- a/lua/lazyvim/plugins/extras/lang/typst.lua +++ b/lua/lazyvim/plugins/extras/lang/typst.lua @@ -24,6 +24,8 @@ return { local buf_name = vim.api.nvim_buf_get_name(0) local file_name = vim.fn.fnamemodify(buf_name, ":t") LazyVim.lsp.execute({ + title = "Pin Main", + filter = "tinymist", command = "tinymist.pinMain", arguments = { buf_name }, }) diff --git a/lua/lazyvim/util/lsp.lua b/lua/lazyvim/util/lsp.lua index 90a6a3c7..83a39cd9 100644 --- a/lua/lazyvim/util/lsp.lua +++ b/lua/lazyvim/util/lsp.lua @@ -70,9 +70,18 @@ M.action = setmetatable({}, { ---@class LspCommand: lsp.ExecuteCommandParams ---@field open? boolean ---@field handler? lsp.Handler +---@field filter? string|vim.lsp.get_clients.Filter +---@field title? string ---@param opts LspCommand function M.execute(opts) + local filter = opts.filter or {} + filter = type(filter) == "string" and { name = filter } or filter + local buf = vim.api.nvim_get_current_buf() + + ---@cast filter vim.lsp.get_clients.Filter + local client = vim.lsp.get_clients(LazyVim.merge({}, filter, { bufnr = buf }))[1] + local params = { command = opts.command, arguments = opts.arguments, @@ -83,7 +92,8 @@ function M.execute(opts) params = params, }) else - return vim.lsp.buf_request(0, "workspace/executeCommand", params, opts.handler) + vim.list_extend(params, { title = opts.title }) + return client:exec_cmd(params, { bufnr = buf }, opts.handler) end end