diff --git a/lua/cosmic/config.lua b/lua/cosmic/config.lua index d7bda51..a8afb86 100644 --- a/lua/cosmic/config.lua +++ b/lua/cosmic/config.lua @@ -1,13 +1,12 @@ -local config = { - lsp = { - format_on_save = true, - servers = { - eslint = nil, - efm = { - -- disable_formatters = {'eslint'} - } - } - } -} +local config = {} +-- config.lsp = { + -- format_on_save = true, + -- servers = { + -- eslint = false, + -- efm = { + -- disable_formatters = {'eslint', 'prettier', 'stylua'} + -- } + -- } +-- } return config diff --git a/lua/cosmic/lsp/init.lua b/lua/cosmic/lsp/init.lua index 5064203..e028df6 100644 --- a/lua/cosmic/lsp/init.lua +++ b/lua/cosmic/lsp/init.lua @@ -1,3 +1,4 @@ +local config = require('cosmic.config') require('cosmic.lsp.providers') require('cosmic.lsp.diagnostics').init() @@ -5,3 +6,9 @@ vim.lsp.handlers['textDocument/signatureHelp'] = vim.lsp.with(vim.lsp.handlers.s vim.lsp.handlers['textDocument/hover'] = vim.lsp.with(vim.lsp.handlers.hover, { border = 'single', }) + +if config.lsp and config.lsp.format_on_save then + vim.cmd([[ + autocmd BufWritePre * lua vim.lsp.buf.formatting() + ]]) +end diff --git a/lua/cosmic/lsp/providers/efm.lua b/lua/cosmic/lsp/providers/efm.lua index 4bfb13f..7254c60 100644 --- a/lua/cosmic/lsp/providers/efm.lua +++ b/lua/cosmic/lsp/providers/efm.lua @@ -22,19 +22,6 @@ formatters.prettier = { formatStdin = true, } ---[[ local filetypes = { - css = { prettier }, - html = { prettier }, - lua = { stylua }, - javascript = { prettier }, - javascriptreact = { prettier }, - json = { prettier }, - markdown = { prettier }, - scss = { prettier }, - typescript = { prettier }, - typescriptreact = { prettier }, - yaml = { prettier }, -} ]] local filetype_defaults = { css = {}, html = {}, @@ -73,7 +60,7 @@ formatters.defaults = { } local function is_formatter_disabled(formatter) - if config.lsp.servers.efm.disable_formatters then + if config.lsp and config.lsp.servers and config.lsp.servers.efm and config.lsp.servers.efm.disable_formatters then for i in pairs(config.lsp.servers.efm.disable_formatters) do local disabled = config.lsp.servers.efm.disable_formatters[i] if disabled == formatter then @@ -87,17 +74,16 @@ end local languages = {} for formatter, filetypes in pairs(formatters.defaults) do if not is_formatter_disabled(formatter) then - -- print(formatter) - for i in pairs(formatters.defaults[formatter]) do - local filetype = formatters.defaults[formatter][i] - -- print(filetype) + for i in pairs(filetypes) do + local filetype = filetypes[i] languages[filetype] = languages[filetype] or {} - table.insert(languages[filetype], { [formatter] = formatters[formatter] }) + table.insert(languages[filetype], formatters[formatter]) end end end -- print(vim.inspect(languages)) +-- print(vim.inspect(languages['javascript']['prettier'])) return { init_options = { documentFormatting = true, codeAction = true }, @@ -108,6 +94,6 @@ return { or util.root_pattern('.eslintrc.js')(fname) or util.root_pattern('tsconfig.json')(fname) end, - filetype_defaults = vim.tbl_keys(filetype_defaults), + filetypes = vim.tbl_keys(filetype_defaults), settings = { languages = languages }, } diff --git a/lua/cosmic/lsp/providers/init.lua b/lua/cosmic/lsp/providers/init.lua index 7f98f1e..bf5c2f6 100644 --- a/lua/cosmic/lsp/providers/init.lua +++ b/lua/cosmic/lsp/providers/init.lua @@ -26,15 +26,19 @@ local requested_servers = { 'jsonls', 'cssls', 'html', - -- 'intelephense', - -- 'pyright', - -- 'gopls', } --- add servers set in config to requested_servers table -for config_server in pairs(config.lsp.servers) do - if requested_servers[config_server] == nil then - table.insert(requested_servers, config_server) +-- get disabled servers from config +local disabled_servers = {} +if config.lsp and config.lsp.servers then + for config_server, config_opt in pairs(config.lsp.servers) do + if config_opt == false then + for server in pairs(requested_servers) do + if (requested_servers[server] == config_server) then + table.insert(disabled_servers, requested_servers[server]) + end + end + end end end @@ -51,14 +55,16 @@ for server in pairs(requested_servers) do end end ---[[ Auto-format *.rs (rust) files prior to saving them - autocmd BufWritePre *.rs lua vim.lsp.buf.formatting_sync(nil, 1000) ]] +-- print(vim.inspect(requested_servers)) +-- print(vim.inspect(disabled_servers)) lsp_installer.on_server_ready(function(server) local opts = default_config - --[[ if config.lsp.servers[server.name] == nil then + + opts.autostart = true + if vim.tbl_contains(disabled_servers, server.name) then opts.autostart = false - end ]] + end if server.name == 'sumneko_lua' then opts = vim.tbl_deep_extend('force', opts, require('cosmic.lsp.providers.lua'))