custom format onsave

This commit is contained in:
asep komarudin 2023-02-19 15:53:48 +07:00
parent 8bc9388d5b
commit e52b14c920
3 changed files with 34 additions and 32 deletions

View file

@ -1,5 +1,5 @@
local M = { local M = {
disable = false, disable = 0, -- 0 ( format jalan) 1 (fromat off)
} }
return M return M

View file

@ -1,25 +1,27 @@
local data_exists, frmt = pcall(require, "custom.format_onsave") local data_exists, frmt = pcall(require, "custom.format_onsave")
if data_exists and frmt.disable == false then if data_exists then
function format_filter(client) if frmt.disable == 0 then
local filetype = vim.bo.filetype function format_filter(client)
local n = require("null-ls") local filetype = vim.bo.filetype
local s = require("null-ls.sources") local n = require("null-ls")
local method = n.methods.FORMATTING local s = require("null-ls.sources")
local available_formatters = s.get_available(filetype, method) local method = n.methods.FORMATTING
local available_formatters = s.get_available(filetype, method)
if #available_formatters > 0 then if #available_formatters > 0 then
return client.name == "null-ls" return client.name == "null-ls"
elseif client.supports_method("textDocument/formatting") then elseif client.supports_method("textDocument/formatting") then
return true return true
else else
return false return false
end
end end
end vim.cmd([[
vim.cmd([[
augroup _lsp augroup _lsp
autocmd! autocmd!
" autocmd BufWritePre * lua vim.lsp.buf.format{timeout_ms =200, filter=format_filter} " autocmd BufWritePre * lua vim.lsp.buf.format{timeout_ms =200, filter=format_filter}
autocmd BufWritePre * lua vim.lsp.buf.format{timeout_ms=1000 ,filter=format_filter} autocmd BufWritePre * lua vim.lsp.buf.format{timeout_ms=1000 ,filter=format_filter}
augroup end augroup end
]]) ]])
end
end end

View file

@ -26,20 +26,20 @@ null_ls.setup({
-- diagnostics.eslint_d, -- diagnostics.eslint_d,
}, },
on_attach = function(client, bufnr) -- on_attach = function(client, bufnr)
--if client.resolved_capabilities.document_formatting then -- --if client.resolved_capabilities.document_formatting then
--vim.cmd("autocmd BufWritePre <buffer> lua vim.lsp.buf.format{async=true}") -- --vim.cmd("autocmd BufWritePre <buffer> lua vim.lsp.buf.format{async=true}")
--end -- --end
if client.supports_method("textDocument/formatting") then -- if client.supports_method("textDocument/formatting") then
vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr }) -- vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr })
vim.api.nvim_create_autocmd("BufWritePre", { -- vim.api.nvim_create_autocmd("BufWritePre", {
group = augroup, -- group = augroup,
buffer = bufnr, -- buffer = bufnr,
callback = function() -- callback = function()
vim.lsp.buf.format({ bufnr = bufnr }) -- vim.lsp.buf.format({ bufnr = bufnr })
-- vim.lsp.buf.formatting_sync() -- -- vim.lsp.buf.formatting_sync()
end, -- end,
}) -- })
end -- end
end, -- end,
}) })