From 10b52b8835461210644ceb01bf5d63d81da38fd0 Mon Sep 17 00:00:00 2001 From: Matt Leong Date: Mon, 25 Oct 2021 06:34:53 -0700 Subject: [PATCH] fix(lsp): run autoformat command just once --- lua/cosmic/config/config.lua | 18 +++++++++--------- lua/cosmic/config/init.lua | 2 +- lua/cosmic/lsp/providers/defaults.lua | 5 +++-- lua/cosmic/lsp/providers/efm.lua | 13 ++----------- lua/cosmic/lsp/providers/init.lua | 16 +++++++--------- 5 files changed, 22 insertions(+), 32 deletions(-) diff --git a/lua/cosmic/config/config.lua b/lua/cosmic/config/config.lua index a8afb86..fb138e2 100644 --- a/lua/cosmic/config/config.lua +++ b/lua/cosmic/config/config.lua @@ -1,12 +1,12 @@ local config = {} --- config.lsp = { - -- format_on_save = true, - -- servers = { - -- eslint = false, - -- efm = { - -- disable_formatters = {'eslint', 'prettier', 'stylua'} - -- } - -- } --- } +--[[ config.lsp = { + format_on_save = true, + servers = { + eslint = false, + efm = { + disable_formatters = {'eslint', 'prettier', 'stylua'} + } + } +} ]] return config diff --git a/lua/cosmic/config/init.lua b/lua/cosmic/config/init.lua index 3bd77db..f4d4a3b 100644 --- a/lua/cosmic/config/init.lua +++ b/lua/cosmic/config/init.lua @@ -6,7 +6,7 @@ local default_config = { servers = { eslint = true, efm = { - disable_formatters = { 'eslint', }, + disable_formatters = { 'eslint' }, }, }, }, diff --git a/lua/cosmic/lsp/providers/defaults.lua b/lua/cosmic/lsp/providers/defaults.lua index 7123f7a..b6fece3 100644 --- a/lua/cosmic/lsp/providers/defaults.lua +++ b/lua/cosmic/lsp/providers/defaults.lua @@ -1,6 +1,7 @@ local config = require('cosmic.config') local M = {} +local auto_format_lock = false; function M.on_attach(client, bufnr) local function buf_set_option(...) vim.api.nvim_buf_set_option(bufnr, ...) @@ -13,8 +14,8 @@ function M.on_attach(client, bufnr) if vim.tbl_contains(formatting_servers, client.name) then client.resolved_capabilities.document_formatting = true client.resolved_capabilities.document_range_formatting = true - if config.lsp and config.lsp.format_on_save then - -- todo: don't run more than once + if config.lsp.format_on_save and not auto_format_lock then + auto_format_lock = true -- just run autocommand once vim.cmd([[ autocmd BufWritePre * lua vim.lsp.buf.formatting() ]]) diff --git a/lua/cosmic/lsp/providers/efm.lua b/lua/cosmic/lsp/providers/efm.lua index c671972..428f1c4 100644 --- a/lua/cosmic/lsp/providers/efm.lua +++ b/lua/cosmic/lsp/providers/efm.lua @@ -56,21 +56,12 @@ formatters.defaults = { 'scss', 'yaml', }, - stylua = { 'lua' } + stylua = { 'lua' }, } -local function is_formatter_disabled(formatter) - if config.lsp and config.lsp.servers and config.lsp.servers.efm and config.lsp.servers.efm.disable_formatters then - if vim.tbl_contains(config.lsp.servers.efm.disable_formatters, formatter) then - return true - end - end - return false -end - local languages = {} for formatter, filetypes in pairs(formatters.defaults) do - if not is_formatter_disabled(formatter) then + if not vim.tbl_contains(config.lsp.servers.efm.disable_formatters, formatter) then for _, filetype in pairs(filetypes) do languages[filetype] = languages[filetype] or {} table.insert(languages[filetype], formatters[formatter]) diff --git a/lua/cosmic/lsp/providers/init.lua b/lua/cosmic/lsp/providers/init.lua index 72271ba..ce042a1 100644 --- a/lua/cosmic/lsp/providers/init.lua +++ b/lua/cosmic/lsp/providers/init.lua @@ -30,15 +30,13 @@ local requested_servers = { -- 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 - table.insert(disabled_servers, config_server) - elseif not vim.tbl_contains(requested_servers, config_server) then - -- add additonally defined servers to be installed - -- todo: how to handle non-default server opts? - table.insert(requested_servers, config_server) - end +for config_server, config_opt in pairs(config.lsp.servers) do + if config_opt == false then + table.insert(disabled_servers, config_server) + elseif not vim.tbl_contains(requested_servers, config_server) then + -- add additonally defined servers to be installed + -- todo: how to handle non-default server opts? + table.insert(requested_servers, config_server) end end