From 01af646e16538fcadd2197b87d90fdebe2fcd498 Mon Sep 17 00:00:00 2001 From: Toby Vincent Date: Fri, 23 Jun 2023 16:41:57 -0500 Subject: fix(nvim): set nginx formatter --- nvim/.config/nvim/after/ftplugin/nginx.lua | 1 + nvim/.config/nvim/lua/plugins/null-ls.lua | 23 ++++++++++++++++++++++- nvim/.config/nvim/lua/tobyvin/lsp.lua | 2 +- 3 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 nvim/.config/nvim/after/ftplugin/nginx.lua (limited to 'nvim') diff --git a/nvim/.config/nvim/after/ftplugin/nginx.lua b/nvim/.config/nvim/after/ftplugin/nginx.lua new file mode 100644 index 0000000..64fed59 --- /dev/null +++ b/nvim/.config/nvim/after/ftplugin/nginx.lua @@ -0,0 +1 @@ +vim.opt_local.formatprg = "nginxfmt -" diff --git a/nvim/.config/nvim/lua/plugins/null-ls.lua b/nvim/.config/nvim/lua/plugins/null-ls.lua index 8493d1a..3d80a2f 100644 --- a/nvim/.config/nvim/lua/plugins/null-ls.lua +++ b/nvim/.config/nvim/lua/plugins/null-ls.lua @@ -15,6 +15,28 @@ local M = { function M.config() local null_ls = require("null-ls") + -- HACK: Workaround for null-ls unconditionally setting formatting capability + -- See: https://github.com/jose-elias-alvarez/null-ls.nvim/issues/1131 + vim.api.nvim_create_autocmd("LspAttach", { + group = vim.api.nvim_create_augroup("null-ls", { clear = true }), + desc = "set formatexpr based on null-ls source", + callback = function(args) + local client = vim.lsp.get_client_by_id(args.data.client_id) + + if + client.name == "null-ls" + and not require("null-ls.generators").can_run( + vim.bo[args.buf].filetype, + require("null-ls.methods").lsp.FORMATTING + ) + then + pcall(vim.keymap.del, "n", "gqq", { buffer = args.buf }) + pcall(vim.keymap.del, "n", "lf", { buffer = args.buf }) + vim.bo[args.buf].formatexpr = nil + end + end, + }) + null_ls.setup({ sources = { -- Disabled until sorting for code_actions gets pushed. See: https://github.com/stevearc/dressing.nvim/issues/22 @@ -43,7 +65,6 @@ function M.config() null_ls.builtins.formatting.shfmt.with({ extra_filetypes = { "PKGBUILD" }, }), - null_ls.builtins.formatting.nginx_beautifier, }, }) end diff --git a/nvim/.config/nvim/lua/tobyvin/lsp.lua b/nvim/.config/nvim/lua/tobyvin/lsp.lua index b97c809..b008422 100644 --- a/nvim/.config/nvim/lua/tobyvin/lsp.lua +++ b/nvim/.config/nvim/lua/tobyvin/lsp.lua @@ -27,7 +27,7 @@ vim.api.nvim_create_autocmd("LspAttach", { }) end - if client.server_capabilities.documentFormattingProvider then + if client.server_capabilities.documentFormattingProvider and vim.bo[args.buf].formatexpr then vim.keymap.set("n", "gqq", vim.lsp.buf.format, { desc = "format", buffer = args.buf }) vim.keymap.set("n", "lf", vim.lsp.buf.format, { desc = "format", buffer = args.buf }) end -- cgit v1.2.3-70-g09d2