aboutsummaryrefslogtreecommitdiffstats
path: root/lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua')
-rw-r--r--lua/lspconfig.lua117
-rw-r--r--lua/lspconfig/lspinfo.lua117
2 files changed, 120 insertions, 114 deletions
diff --git a/lua/lspconfig.lua b/lua/lspconfig.lua
index 13902893..7c43c22b 100644
--- a/lua/lspconfig.lua
+++ b/lua/lspconfig.lua
@@ -1,5 +1,5 @@
local configs = require 'lspconfig/configs'
-local lspui = require 'lspconfig/_lspui'
+local lspinfo = require 'lspconfig/lspinfo'
local M = {
util = require 'lspconfig/util';
@@ -21,121 +21,10 @@ function M._root._setup()
M._root.commands = {
LspInfo = {
function()
- -- These options need to be cached before switching to the floating
- -- buffer.
- local buf_clients = vim.lsp.buf_get_clients()
- local clients = vim.lsp.get_active_clients()
- local buffer_filetype = vim.bo.filetype
- local buffer_dir = vim.fn.expand('%:p:h')
-
- local win_info = lspui.percentage_range_window(0.8, 0.7)
- local bufnr, win_id = win_info.bufnr, win_info.win_id
-
- local buf_lines = {}
- local header = {
- "Available servers:",
- "\t"..table.concat(vim.tbl_keys(configs), ', '),
- "",
- "Clients attached to this buffer: "..tostring(#buf_clients)
- }
- vim.list_extend(buf_lines, header)
-
- local function trim_whitespace(cmd)
- local trimmed_cmd = {}
- for _, str in ipairs(cmd) do
- table.insert(trimmed_cmd, str:match'^%s*(.*)')
- end
- return trimmed_cmd
- end
-
- local function remove_newlines(cmd)
- cmd = trim_whitespace(cmd)
- cmd = table.concat(cmd, ' ')
- cmd = vim.split(cmd, '\n')
- cmd = trim_whitespace(cmd)
- cmd = table.concat(cmd, ' ')
- return cmd
- end
-
- local function make_client_info(client)
- return {
- "",
- "Client: "..tostring(client.id),
- "\tname: "..client.name,
- "\troot: "..client.workspaceFolders[1].name,
- "\tfiletypes: "..table.concat(client.config.filetypes or {}, ', '),
- "\tcmd: "..remove_newlines(client.config.cmd),
- }
- end
-
- for _, client in ipairs(buf_clients) do
- local client_info = make_client_info(client)
- vim.list_extend(buf_lines, client_info)
- end
-
- local active_section_header = {
- "",
- "Total active clients: "..tostring(#clients),
- }
- vim.list_extend(buf_lines, active_section_header)
- for _, client in ipairs(clients) do
- local client_info = make_client_info(client)
- vim.list_extend(buf_lines, client_info)
- end
- local matching_config_header = {
- "",
- "Clients that match the current buffer filetype:",
- }
- local cmd_not_found_msg = "False. Please check your path and ensure the server is installed"
- vim.list_extend(buf_lines, matching_config_header)
- for _, config in pairs(configs) do
- local cmd_is_executable, cmd
- if config.cmd then
- cmd = remove_newlines(config.cmd)
- if vim.fn.executable(config.cmd[1]) == 1 then
- cmd_is_executable = "True"
- else
- cmd_is_executable = cmd_not_found_msg
- end
- else
- cmd = "cmd not defined"
- cmd_is_executable = cmd
- end
- if config.filetypes then
- for _, filetype_match in ipairs(config.filetypes) do
- if buffer_filetype == filetype_match then
- local matching_config_info = {
- "",
- "Config: "..config.name,
- "\tcmd: "..cmd,
- "\tcmd is executable: ".. cmd_is_executable,
- "\tidentified root: "..(config.get_root_dir(buffer_dir) or "None"),
- "\tcustom handlers: "..table.concat(vim.tbl_keys(config.handlers), ", "),
- }
- vim.list_extend(buf_lines, matching_config_info)
- end
- end
- else
- local matching_config_info = {
- "",
- "Config: "..config.name,
- "\tfiletype: ".."No filetypes defined, please define filetypes in setup().",
- }
- vim.list_extend(buf_lines, matching_config_info)
- end
- end
- buf_lines = vim.lsp.util._trim_and_pad(buf_lines, { pad_left = 2, pad_top = 1})
- vim.api.nvim_buf_set_lines(bufnr, 0, -1, true, buf_lines )
- vim.fn.matchadd("Title", table.concat(vim.tbl_keys(configs), '\\|'))
- vim.fn.matchadd("Error",
- "No filetypes defined, please define filetypes in setup().\\|"..
- "cmd not defined\\|" ..
- cmd_not_found_msg)
- vim.api.nvim_buf_set_keymap(bufnr, 'n', '<esc>', '<cmd>bd<CR>', { noremap = true})
- vim.lsp.util.close_preview_autocmd({"BufHidden", "BufLeave"}, win_id)
+ lspinfo()
end;
"-nargs=?";
- description = '`:LspInfo` Displays info on currently configured and currently active servers';
+ description = '`:LspInfo` Displays attached, active, and configured language servers';
};
LspInstall = {
function()
diff --git a/lua/lspconfig/lspinfo.lua b/lua/lspconfig/lspinfo.lua
new file mode 100644
index 00000000..902cd87e
--- /dev/null
+++ b/lua/lspconfig/lspinfo.lua
@@ -0,0 +1,117 @@
+local configs = require 'lspconfig/configs'
+local lspui = require 'lspconfig/_lspui'
+
+return function ()
+ -- These options need to be cached before switching to the floating
+ -- buffer.
+ local buf_clients = vim.lsp.buf_get_clients()
+ local clients = vim.lsp.get_active_clients()
+ local buffer_filetype = vim.bo.filetype
+ local buffer_dir = vim.fn.expand('%:p:h')
+
+ local win_info = lspui.percentage_range_window(0.8, 0.7)
+ local bufnr, win_id = win_info.bufnr, win_info.win_id
+
+ local buf_lines = {}
+ local header = {
+ "Available servers:",
+ "\t"..table.concat(vim.tbl_keys(configs), ', '),
+ "",
+ "Clients attached to this buffer: "..tostring(#buf_clients)
+ }
+ vim.list_extend(buf_lines, header)
+
+ local function trim_whitespace(cmd)
+ local trimmed_cmd = {}
+ for _, str in ipairs(cmd) do
+ table.insert(trimmed_cmd, str:match'^%s*(.*)')
+ end
+ return trimmed_cmd
+ end
+
+ local function remove_newlines(cmd)
+ cmd = trim_whitespace(cmd)
+ cmd = table.concat(cmd, ' ')
+ cmd = vim.split(cmd, '\n')
+ cmd = trim_whitespace(cmd)
+ cmd = table.concat(cmd, ' ')
+ return cmd
+ end
+
+ local function make_client_info(client)
+ return {
+ "",
+ "Client: "..tostring(client.id),
+ "\tname: "..client.name,
+ "\troot: "..client.workspaceFolders[1].name,
+ "\tfiletypes: "..table.concat(client.config.filetypes or {}, ', '),
+ "\tcmd: "..remove_newlines(client.config.cmd),
+ }
+ end
+
+ for _, client in ipairs(buf_clients) do
+ local client_info = make_client_info(client)
+ vim.list_extend(buf_lines, client_info)
+ end
+
+ local active_section_header = {
+ "",
+ "Total active clients: "..tostring(#clients),
+ }
+ vim.list_extend(buf_lines, active_section_header)
+ for _, client in ipairs(clients) do
+ local client_info = make_client_info(client)
+ vim.list_extend(buf_lines, client_info)
+ end
+ local matching_config_header = {
+ "",
+ "Clients that match the current buffer filetype:",
+ }
+ local cmd_not_found_msg = "False. Please check your path and ensure the server is installed"
+ vim.list_extend(buf_lines, matching_config_header)
+ for _, config in pairs(configs) do
+ local cmd_is_executable, cmd
+ if config.cmd then
+ cmd = remove_newlines(config.cmd)
+ if vim.fn.executable(config.cmd[1]) == 1 then
+ cmd_is_executable = "True"
+ else
+ cmd_is_executable = cmd_not_found_msg
+ end
+ else
+ cmd = "cmd not defined"
+ cmd_is_executable = cmd
+ end
+ if config.filetypes then
+ for _, filetype_match in ipairs(config.filetypes) do
+ if buffer_filetype == filetype_match then
+ local matching_config_info = {
+ "",
+ "Config: "..config.name,
+ "\tcmd: "..cmd,
+ "\tcmd is executable: ".. cmd_is_executable,
+ "\tidentified root: "..(config.get_root_dir(buffer_dir) or "None"),
+ "\tcustom handlers: "..table.concat(vim.tbl_keys(config.handlers), ", "),
+ }
+ vim.list_extend(buf_lines, matching_config_info)
+ end
+ end
+ else
+ local matching_config_info = {
+ "",
+ "Config: "..config.name,
+ "\tfiletype: ".."No filetypes defined, please define filetypes in setup().",
+ }
+ vim.list_extend(buf_lines, matching_config_info)
+ end
+ end
+ buf_lines = vim.lsp.util._trim_and_pad(buf_lines, { pad_left = 2, pad_top = 1})
+ vim.api.nvim_buf_set_lines(bufnr, 0, -1, true, buf_lines )
+ vim.fn.matchadd("Title", table.concat(vim.tbl_keys(configs), '\\|'))
+ vim.fn.matchadd("Error",
+ "No filetypes defined, please define filetypes in setup().\\|"..
+ "cmd not defined\\|" ..
+ cmd_not_found_msg)
+ vim.api.nvim_buf_set_keymap(bufnr, 'n', '<esc>', '<cmd>bd<CR>', { noremap = true})
+ vim.lsp.util.close_preview_autocmd({"BufHidden", "BufLeave"}, win_id)
+end;