From 988ab6b58019854d3f2e79e7b718b7e35833d145 Mon Sep 17 00:00:00 2001 From: Matthew Leong <mattleong91@gmail.com> Date: Mon, 9 Jan 2023 13:24:14 -0800 Subject: [PATCH] fix(lsp): set auto format on save autocmd to buffer --- lua/cosmic/lsp/providers/defaults.lua | 16 ++++++++-------- lua/cosmic/utils/lsp.lua | 4 ++-- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/lua/cosmic/lsp/providers/defaults.lua b/lua/cosmic/lsp/providers/defaults.lua index d9b0670..de1a502 100644 --- a/lua/cosmic/lsp/providers/defaults.lua +++ b/lua/cosmic/lsp/providers/defaults.lua @@ -17,24 +17,24 @@ function M.on_attach(client, bufnr) vim.cmd(string.format("command! LspFormat lua require('cosmic.utils.lsp').format(%s)", bufnr)) -- set up auto format on save - if user_config.lsp.format_on_save and user_config.lsp.can_client_format(client) then + if user_config.lsp.format_on_save then -- check user config to see if we can format on save -- collect filetype(s) from user config - local format_filetypes = '' + local filetype_pattern = '' if vim.tbl_islist(user_config.lsp.format_on_save) then for _, ft in pairs(user_config.lsp.format_on_save) do - format_filetypes = format_filetypes .. '*' .. ft + filetype_pattern = filetype_pattern .. '*' .. ft end else -- any filetype if none set - format_filetypes = '*' + filetype_pattern = '*' end -- autocommand for format on save with specified filetype(s) - vim.api.nvim_create_autocmd('BufWritePre', { - callback = function(evt) - require('cosmic.utils.lsp').format(evt.buf) + vim.api.nvim_create_autocmd(string.format('BufWritePre %s', filetype_pattern), { + callback = function() + require('cosmic.utils.lsp').format() end, - pattern = format_filetypes, + buffer = bufnr, group = group, }) end diff --git a/lua/cosmic/utils/lsp.lua b/lua/cosmic/utils/lsp.lua index d5ad4ec..8c2c499 100644 --- a/lua/cosmic/utils/lsp.lua +++ b/lua/cosmic/utils/lsp.lua @@ -2,10 +2,10 @@ local user_config = require('cosmic.core.user') local M = {} -- format current buffer w/user settings -function M.format(bufnr) +function M.format() vim.lsp.buf.format({ timeout_ms = user_config.lsp.format_timeout, - bufnr = bufnr or 0, + filter = user_config.lsp.can_client_format, }) end