neovim configuration using rocks.nvim plugin manager
1vim.api.nvim_create_user_command("LspDetach", function (arg)
2 local buf = vim.api.nvim_get_current_buf()
3 local servers = vim.lsp.get_clients({ bufnr = buf })
4 local function detach_server(server)
5 vim.notify("detaching server '" .. server.name .. "' from current buffer")
6 vim.lsp.buf_detach_client(buf, server.id)
7 end
8 if #servers == 0 then
9 vim.notify("no LSP client attached to current buffer", vim.log.levels.WARN)
10 elseif #servers == 1 then
11 detach_server(servers[1])
12 else
13 -- TODO: detach all servers when arg.bang is true
14 vim.ui.select(servers, {
15 prompt = "Select Server to detach",
16 format_item = function (server)
17 return server.name
18 end
19 }, detach_server)
20 end
21end, {
22 bang = true,
23 desc = "Detach Language Server from current buffer",
24})
25vim.api.nvim_create_user_command("LspLog", function()
26 vim.cmd.edit(vim.lsp.log.get_filename())
27end, {
28 desc = "Open lsp.log file",
29})
30vim.api.nvim_create_user_command("TSEditQuery", function (opts)
31 local lang = opts.fargs[1]
32 local query = opts.fargs[2]
33 local files = vim.treesitter.query.get_files(lang, query)
34 if #files == 1 then
35 vim.cmd.edit(files[1])
36 return
37 elseif #files < 1 then
38 vim.notify(("can't find '%s' query for language '%s'"):format(query, lang))
39 return
40 end
41 vim.ui.select(files, {
42 prompt = "Select query file",
43 }, function (choice)
44 vim.cmd.edit(choice)
45 end)
46end, {
47 nargs = "+",
48 desc = "",
49})