From 0f14609af5e0f5db34694a316ea8ea6fada0cd98 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Thu, 8 Sep 2022 11:53:09 +0200 Subject: [PATCH] feat: added autocmd to trigger reload and user command Settings --- lua/lsp-settings/commands.lua | 59 +++++++++++++++++++++++++++++++++++ lua/lsp-settings/init.lua | 8 ++--- 2 files changed, 61 insertions(+), 6 deletions(-) create mode 100644 lua/lsp-settings/commands.lua diff --git a/lua/lsp-settings/commands.lua b/lua/lsp-settings/commands.lua new file mode 100644 index 0000000..9d521e1 --- /dev/null +++ b/lua/lsp-settings/commands.lua @@ -0,0 +1,59 @@ +local Util = require("lsp-settings.util") +local Config = require("lsp-settings.config") + +local M = {} + +function M.setup() + vim.api.nvim_create_user_command("Settings", function(args) + if args.args == "show" then + require("lsp-settings.view").show_settings() + else + M.edit() + end + end, { nargs = "?", desc = "Show the settings of the attached lsp servers" }) + + local group = vim.api.nvim_create_augroup("Settings", { clear = true }) + vim.api.nvim_create_autocmd("BufWritePost", { + pattern = Util.merge({}, Config.options.global_settings, vim.tbl_values(Config.options.local_settings)), + group = group, + callback = function(event) + require("lsp-settings.plugins").fire("on_update", event.match) + end, + }) +end + +function M.edit() + local buf = vim.api.nvim_get_current_buf() + + local items = {} + + Util.for_each_global(function(file) + table.insert(items, { file = file, is_global = true }) + end) + + for _, client in ipairs(vim.lsp.get_active_clients({ bufnr = buf })) do + Util.for_each_local(function(f) + items[f] = { file = f } + end, client.config.root_dir) + end + + items = vim.tbl_values(items) + + vim.ui.select(items, { + prompt = "Select settings file to create/edit", + format_item = function(item) + local line = Util.exists(item.file) and " edit " or " create " + line = line .. vim.fn.fnamemodify(item.file, ":~") + if item.is_global then + line = line .. "  " + end + return line + end, + }, function(choice) + if choice then + vim.cmd("edit " .. choice.file) + end + end) +end + +return M diff --git a/lua/lsp-settings/init.lua b/lua/lsp-settings/init.lua index 8ecc44b..ad3ccc8 100644 --- a/lua/lsp-settings/init.lua +++ b/lua/lsp-settings/init.lua @@ -2,12 +2,8 @@ local M = {} function M.setup(opts) require("lsp-settings.config").setup(opts) - - vim.api.nvim_create_user_command("LspSettings", function() - require("lsp-settings.view").show_settings() - end, { desc = "Show the settings of the attached lsp servers" }) - - require("lsp-settings.lsp").setup() + require("lsp-settings.commands").setup() + require("lsp-settings.plugins").setup() end return M