Skip to content

Commit

Permalink
feat: util.on_config
Browse files Browse the repository at this point in the history
  • Loading branch information
folke committed Sep 11, 2022
1 parent 177d29e commit b19a634
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 22 deletions.
10 changes: 4 additions & 6 deletions lua/settings/plugins/jsonls.lua
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,10 @@ local Schema = require("settings.schema")
local M = {}

function M.setup()
local lsputil = require("lspconfig.util")
local hook = lsputil.add_hook_after

lsputil.on_setup = hook(lsputil.on_setup, function(config)
config.on_new_config = hook(config.on_new_config, Util.protect(M.on_new_config, "Failed to setup jsonls"))
end)
Util.on_config({
name = "settings/plugins/jsonls",
on_config = M.on_new_config,
})
end

function M.on_new_config(config, root_dir)
Expand Down
15 changes: 5 additions & 10 deletions lua/settings/plugins/lspconfig.lua
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,13 @@ local Settings = require("settings.settings")
local M = {}

function M.setup()
local lsputil = require("lspconfig.util")
local hook = lsputil.add_hook_before
local settings_root = Util.root_pattern(unpack(Util.file_patterns({ global = false })))


lsputil.on_setup = hook(lsputil.on_setup, function(config)
config.on_new_config = hook(config.on_new_config, Util.protect(M.on_new_config, "Failed to setup lspconfig"))
local root_dir = config.root_dir
config.root_dir = function(...)
return settings_root(...) or root_dir(...)
end
end)
Util.on_config({
name = "settings/plugins/lspconfig",
on_config = M.on_new_config,
root_dir = settings_root
})
end

function M.on_new_config(config, root_dir)
Expand Down
10 changes: 4 additions & 6 deletions lua/settings/plugins/sumneko.lua
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,10 @@ local Config = require("settings.config")
local M = {}

function M.setup()
local lsputil = require("lspconfig.util")
local hook = lsputil.add_hook_after

lsputil.on_setup = hook(lsputil.on_setup, function(config)
config.on_new_config = hook(config.on_new_config, Util.protect(M.on_new_config, "Failed to setup sumneko_lua"))
end)
Util.on_config({
name = "settings/plugins/sumneko",
on_config = M.on_new_config,
})
end

function M.on_new_config(config, root_dir)
Expand Down
20 changes: 20 additions & 0 deletions lua/settings/util.lua
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,26 @@ function M.find_git_ancestor(...)
return require("lspconfig.util").find_git_ancestor(...)
end

---@param opts { on_config: fun(config, root_dir:string), root_dir: fun(), name: string }
function M.on_config(opts)
local lsputil = require("lspconfig.util")
local hook = lsputil.add_hook_after

lsputil.on_setup = hook(lsputil.on_setup, function(config)
if opts.on_config then
config.on_new_config = hook(config.on_new_config,
M.protect(opts.on_config,
"Failed to run client.before_init" .. (opts.name and (" for " .. opts.name) or "")))
end
if opts.root_dir then
local root_dir = config.root_dir
config.root_dir = function(...)
return opts.root_dir(...) or root_dir(...)
end
end
end)
end

function M.file_patterns(opts)
opts = M.merge({ ["local"] = true, ["global"] = true }, opts)
local ret = {}
Expand Down

0 comments on commit b19a634

Please sign in to comment.