summaryrefslogtreecommitdiff
path: root/lua
diff options
context:
space:
mode:
authorkylo252 <[email protected]>2022-04-14 21:24:35 +0200
committerkylo252 <[email protected]>2022-04-14 21:24:35 +0200
commit6d2e18295f510c2f2167bd911b0d421a3b7f112e (patch)
tree453d5be502febdf596bf4b60b2d982b8b94db44a /lua
parentf92a0d610c1ee899ec8acb091130f2a5eec22812 (diff)
parent09684eff642eb455bffda3100f29ef182f734a82 (diff)
Merge remote-tracking branch 'origin/rolling'
Diffstat (limited to 'lua')
-rw-r--r--lua/lvim/config/init.lua29
-rw-r--r--lua/lvim/core/cmp.lua5
-rw-r--r--lua/lvim/core/info.lua30
-rw-r--r--lua/lvim/core/log.lua6
-rw-r--r--lua/lvim/impatient.lua4
-rw-r--r--lua/lvim/lsp/config.lua89
-rw-r--r--lua/lvim/lsp/manager.lua6
-rw-r--r--lua/lvim/lsp/templates.lua12
-rw-r--r--lua/lvim/plugins.lua12
9 files changed, 115 insertions, 78 deletions
diff --git a/lua/lvim/config/init.lua b/lua/lvim/config/init.lua
index 6927d52a..505029a2 100644
--- a/lua/lvim/config/init.lua
+++ b/lua/lvim/config/init.lua
@@ -56,19 +56,19 @@ function M:init()
end
local function handle_deprecated_settings()
- local function deprecation_notice(setting, msg)
+ local function deprecation_notice(setting, new_setting)
local in_headless = #vim.api.nvim_list_uis() == 0
if in_headless then
return
end
- msg = msg
- or string.format(
- "Deprecation notice: [%s] setting is no longer supported. See https://github.com/LunarVim/LunarVim#breaking-changes",
- setting
- )
+ local msg = string.format(
+ "Deprecation notice: [%s] setting is no longer supported. %s",
+ setting,
+ new_setting or "See https://github.com/LunarVim/LunarVim#breaking-changes"
+ )
vim.schedule(function()
- Log:warn(msg)
+ vim.notify_once(msg, vim.log.levels.WARN)
end)
end
@@ -80,6 +80,16 @@ local function handle_deprecated_settings()
end
end
+ -- lvim.lsp.override
+ if lvim.lsp.override and not vim.tbl_isempty(lvim.lsp.override) then
+ deprecation_notice("lvim.lsp.override", "Use `lvim.lsp.automatic_configuration.skipped_servers` instead")
+ vim.tbl_map(function(c)
+ if not vim.tbl_contains(lvim.lsp.automatic_configuration.skipped_servers, c) then
+ table.insert(lvim.lsp.automatic_configuration.skipped_servers, c)
+ end
+ end, lvim.lsp.override)
+ end
+
-- lvim.lsp.popup_border
if vim.tbl_contains(vim.tbl_keys(lvim.lsp), "popup_border") then
deprecation_notice "lvim.lsp.popup_border"
@@ -87,10 +97,7 @@ local function handle_deprecated_settings()
-- dashboard.nvim
if lvim.builtin.dashboard.active then
- deprecation_notice(
- "dashboard",
- "Deprecation notice: `lvim.builtin.dashboard` has been replaced with `lvim.builtin.alpha`. See LunarVim#1906"
- )
+ deprecation_notice("lvim.builtin.dashboard", "Use `lvim.builtin.alpha` instead. See LunarVim#1906")
end
end
diff --git a/lua/lvim/core/cmp.lua b/lua/lvim/core/cmp.lua
index 621e2b6d..8fb18c5f 100644
--- a/lua/lvim/core/cmp.lua
+++ b/lua/lvim/core/cmp.lua
@@ -232,8 +232,9 @@ M.config = function()
require("luasnip").lsp_expand(args.body)
end,
},
- documentation = {
- border = { "╭", "─", "╮", "│", "╯", "─", "╰", "│" },
+ window = {
+ completion = cmp.config.window.bordered(),
+ documentation = cmp.config.window.bordered(),
},
sources = {
{ name = "nvim_lsp" },
diff --git a/lua/lvim/core/info.lua b/lua/lvim/core/info.lua
index 9c9652da..00a7e85a 100644
--- a/lua/lvim/core/info.lua
+++ b/lua/lvim/core/info.lua
@@ -100,21 +100,26 @@ local function make_client_info(client)
return client_info
end
-local function make_override_info(ft)
+local function make_auto_lsp_info(ft)
+ local skipped_filetypes = lvim.lsp.automatic_configuration.skipped_filetypes
+ local skipped_servers = lvim.lsp.automatic_configuration.skipped_servers
+ local info_lines = { "Automatic LSP info" }
+
+ if vim.tbl_contains(skipped_filetypes, ft) then
+ vim.list_extend(info_lines, { "* Status: disabled for " .. ft })
+ return info_lines
+ end
+
local available = lsp_utils.get_supported_servers_per_filetype(ft)
- local overridden = vim.tbl_filter(function(name)
+ local skipped = vim.tbl_filter(function(name)
return vim.tbl_contains(available, name)
- end, lvim.lsp.override)
+ end, skipped_servers)
- local info_lines = { "" }
- if #overridden == 0 then
- return info_lines
+ if #skipped == 0 then
+ return { "" }
end
- info_lines = {
- fmt("Overridden %s server(s)", ft),
- fmt("* list: %s", str_list(overridden)),
- }
+ vim.list_extend(info_lines, { fmt("* Skipped servers: %s", str_list(skipped)) })
return info_lines
end
@@ -150,7 +155,7 @@ function M.toggle_popup(ft)
table.insert(client_names, client.name)
end
- local override_info = make_override_info(ft)
+ local auto_lsp_info = make_auto_lsp_info(ft)
local formatters_info = make_formatters_info(ft)
@@ -169,7 +174,7 @@ function M.toggle_popup(ft)
{ "" },
lsp_info,
{ "" },
- override_info,
+ auto_lsp_info,
{ "" },
formatters_info,
{ "" },
@@ -192,6 +197,7 @@ function M.toggle_popup(ft)
vim.fn.matchadd("LvimInfoHeader", "Formatters info")
vim.fn.matchadd("LvimInfoHeader", "Linters info")
vim.fn.matchadd("LvimInfoHeader", "Code actions info")
+ vim.fn.matchadd("LvimInfoHeader", "Automatic LSP info")
vim.fn.matchadd("LvimInfoIdentifier", " " .. ft .. "$")
vim.fn.matchadd("string", "true")
vim.fn.matchadd("string", "active")
diff --git a/lua/lvim/core/log.lua b/lua/lvim/core/log.lua
index d0e74f18..15ccb11c 100644
--- a/lua/lvim/core/log.lua
+++ b/lua/lvim/core/log.lua
@@ -1,7 +1,5 @@
local Log = {}
-local logfile = string.format("%s/%s.log", get_cache_dir(), "lvim")
-
Log.levels = {
TRACE = 1,
DEBUG = 2,
@@ -39,7 +37,7 @@ function Log:init()
{ level = structlog.formatters.FormatColorizer.color_level() }
),
}),
- structlog.sinks.File(log_level, logfile, {
+ structlog.sinks.File(log_level, self:get_path(), {
processors = {
structlog.processors.Namer(),
structlog.processors.StackWriter({ "line", "file" }, { max_parents = 3, stack_level = 2 }),
@@ -155,7 +153,7 @@ end
---Retrieves the path of the logfile
---@return string path of the logfile
function Log:get_path()
- return logfile
+ return string.format("%s/%s.log", get_cache_dir(), "lvim")
end
---Add a log entry at TRACE level
diff --git a/lua/lvim/impatient.lua b/lua/lvim/impatient.lua
index 4fdc0026..230e5195 100644
--- a/lua/lvim/impatient.lua
+++ b/lua/lvim/impatient.lua
@@ -203,6 +203,10 @@ function M.update_reduced_rtp()
end
local function load_package_with_cache_reduced_rtp(name)
+ if vim.in_fast_event() then
+ -- Can't set/get options in the fast handler
+ return load_package_with_cache(name, "fast")
+ end
local orig_rtp = get_option "runtimepath"
local orig_ei = get_option "eventignore"
diff --git a/lua/lvim/lsp/config.lua b/lua/lvim/lsp/config.lua
index 986cb500..182f8fbf 100644
--- a/lua/lvim/lsp/config.lua
+++ b/lua/lvim/lsp/config.lua
@@ -1,3 +1,43 @@
+local skipped_servers = {
+ "angularls",
+ "ansiblels",
+ "ccls",
+ "csharp_ls",
+ "cssmodules_ls",
+ "denols",
+ "ember",
+ "emmet_ls",
+ "eslint",
+ "eslintls",
+ "golangci_lint_ls",
+ "graphql",
+ "jedi_language_server",
+ "ltex",
+ "ocamlls",
+ "phpactor",
+ "psalm",
+ "pylsp",
+ "quick_lint_js",
+ "rome",
+ "reason_ls",
+ "scry",
+ "solang",
+ "solidity_ls",
+ "sorbet",
+ "sourcekit",
+ "sourcery",
+ "spectral",
+ "sqlls",
+ "sqls",
+ "stylelint_lsp",
+ "tailwindcss",
+ "tflint",
+ "verible",
+ "vuels",
+}
+
+local skipped_filetypes = { "markdown", "rst", "plaintext" }
+
return {
templates_dir = join_paths(get_runtime_dir(), "site", "after", "ftplugin"),
diagnostics = {
@@ -41,6 +81,12 @@ return {
on_attach_callback = nil,
on_init_callback = nil,
automatic_servers_installation = true,
+ automatic_configuration = {
+ ---@usage list of servers that the automatic installer will skip
+ skipped_servers = skipped_servers,
+ ---@usage list of filetypes that the automatic installer will skip
+ skipped_filetypes = skipped_filetypes,
+ },
buffer_mappings = {
normal_mode = {
["K"] = { "<cmd>lua vim.lsp.buf.hover()<CR>", "Show hover" },
@@ -62,45 +108,6 @@ return {
setup = {},
config = {},
},
- override = {
- "angularls",
- "ansiblels",
- "ccls",
- "csharp_ls",
- "cssmodules_ls",
- "denols",
- "ember",
- "emmet_ls",
- "eslint",
- "eslintls",
- "golangci_lint_ls",
- "grammarly",
- "graphql",
- "jedi_language_server",
- "ltex",
- "ocamlls",
- "phpactor",
- "psalm",
- "pylsp",
- "quick_lint_js",
- "reason_ls",
- "remark_ls",
- "rome",
- "scry",
- "solang",
- "solidity_ls",
- "sorbet",
- "sourcekit",
- "sourcery",
- "spectral",
- "sqlls",
- "sqls",
- "stylelint_lsp",
- "tailwindcss",
- "tflint",
- "verible",
- "vuels",
- "zeta_note",
- "zk",
- },
+ ---@deprecated use automatic_configuration.skipped_servers instead
+ override = {},
}
diff --git a/lua/lvim/lsp/manager.lua b/lua/lvim/lsp/manager.lua
index 6c748020..09369d48 100644
--- a/lua/lvim/lsp/manager.lua
+++ b/lua/lvim/lsp/manager.lua
@@ -55,6 +55,7 @@ local function client_is_configured(server_name, ft)
local active_autocmds = vim.split(vim.fn.execute("autocmd FileType " .. ft), "\n")
for _, result in ipairs(active_autocmds) do
if result:match(server_name) then
+ Log:debug(string.format("[%q] is already configured", server_name))
return true
end
end
@@ -68,7 +69,6 @@ function M.setup(server_name, user_config)
vim.validate { name = { server_name, "string" } }
if lvim_lsp_utils.is_client_active(server_name) or client_is_configured(server_name) then
- Log:debug(string.format("[%q] is already configured. Ignoring repeated setup call.", server_name))
return
end
@@ -77,9 +77,7 @@ function M.setup(server_name, user_config)
local servers = require "nvim-lsp-installer.servers"
local server_available, requested_server = servers.get_server(server_name)
- local is_overridden = vim.tbl_contains(lvim.lsp.override, server_name)
-
- if not server_available or is_overridden then
+ if not server_available then
pcall(function()
require("lspconfig")[server_name].setup(config)
buf_try_add(server_name)
diff --git a/lua/lvim/lsp/templates.lua b/lua/lvim/lsp/templates.lua
index eb05615e..38e68fb6 100644
--- a/lua/lvim/lsp/templates.lua
+++ b/lua/lvim/lsp/templates.lua
@@ -15,16 +15,22 @@ function M.remove_template_files()
end
end
+local skipped_filetypes = lvim.lsp.automatic_configuration.skipped_filetypes
+local skipped_servers = lvim.lsp.automatic_configuration.skipped_servers
+
---Generates an ftplugin file based on the server_name in the selected directory
---@param server_name string name of a valid language server, e.g. pyright, gopls, tsserver, etc.
---@param dir string the full path to the desired directory
function M.generate_ftplugin(server_name, dir)
- if vim.tbl_contains(lvim.lsp.override, server_name) then
+ if vim.tbl_contains(skipped_servers, server_name) then
return
end
- -- we need to go through lspconfig to get the corresponding filetypes currently
- local filetypes = lvim_lsp_utils.get_supported_filetypes(server_name) or {}
+ -- get the supported filetypes and remove any ignored ones
+ local filetypes = vim.tbl_filter(function(ft)
+ return not vim.tbl_contains(skipped_filetypes, ft)
+ end, lvim_lsp_utils.get_supported_filetypes(server_name) or {})
+
if not filetypes then
return
end
diff --git a/lua/lvim/plugins.lua b/lua/lvim/plugins.lua
index 519a203a..f5b9914c 100644
--- a/lua/lvim/plugins.lua
+++ b/lua/lvim/plugins.lua
@@ -69,7 +69,15 @@ local core_plugins = {
{
"L3MON4D3/LuaSnip",
config = function()
- require("luasnip/loaders/from_vscode").lazy_load()
+ local utils = require "lvim.utils"
+ require("luasnip.loaders.from_lua").lazy_load()
+ require("luasnip.loaders.from_vscode").lazy_load {
+ paths = {
+ utils.join_paths(get_config_dir(), "snippets"),
+ utils.join_paths(get_runtime_dir(), "site", "pack", "packer", "start", "friendly-snippets"),
+ },
+ }
+ require("luasnip.loaders.from_snipmate").lazy_load()
end,
},
{
@@ -182,6 +190,7 @@ local core_plugins = {
config = function()
require("lvim.core.bufferline").setup()
end,
+ branch = "main",
event = "BufWinEnter",
disable = not lvim.builtin.bufferline.active,
},
@@ -217,6 +226,7 @@ local core_plugins = {
{
"akinsho/toggleterm.nvim",
event = "BufWinEnter",
+ branch = "main",
config = function()
require("lvim.core.terminal").setup()
end,