aboutsummaryrefslogtreecommitdiffstats
path: root/lua/conform/init.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/conform/init.lua')
-rw-r--r--lua/conform/init.lua16
1 files changed, 10 insertions, 6 deletions
diff --git a/lua/conform/init.lua b/lua/conform/init.lua
index 3197b35..1bea2ea 100644
--- a/lua/conform/init.lua
+++ b/lua/conform/init.lua
@@ -87,6 +87,7 @@ M.setup = function(opts)
return
end
local client = vim.lsp.get_client_by_id(ctx.client_id)
+ assert(client)
local restore = require("conform.util").save_win_positions(ctx.bufnr)
vim.lsp.util.apply_text_edits(result, ctx.bufnr, client.offset_encoding)
restore()
@@ -96,6 +97,7 @@ end
---@param bufnr integer
---@return boolean
local function supports_lsp_format(bufnr)
+ ---@diagnostic disable-next-line: deprecated
for _, client in ipairs(vim.lsp.get_active_clients({ bufnr = bufnr })) do
if client.supports_method("textDocument/formatting", { bufnr = bufnr }) then
return true
@@ -112,6 +114,7 @@ local function list_formatters_for_buffer(bufnr)
bufnr = vim.api.nvim_get_current_buf()
end
local formatters = {}
+ local seen = {}
local run_options = {
run_all_formatters = false,
format_on_save = true,
@@ -130,17 +133,18 @@ local function list_formatters_for_buffer(bufnr)
ft_formatters = ft_formatters.formatters
end
for _, formatter in ipairs(ft_formatters) do
- formatters[formatter] = true
+ if not seen[formatter] then
+ table.insert(formatters, formatter)
+ seen[formatter] = true
+ end
end
end
end
---@type conform.FormatterInfo[]
- local all_info = {}
- for formatter in pairs(formatters) do
- local info = M.get_formatter_info(formatter)
- table.insert(all_info, info)
- end
+ local all_info = vim.tbl_map(function(f)
+ return M.get_formatter_info(f, bufnr)
+ end, formatters)
return all_info, run_options
end