diff --git a/lua/taken/plugins/lsp/mason.lua b/lua/taken/plugins/lsp/mason.lua index 15ce472..4c101fc 100644 --- a/lua/taken/plugins/lsp/mason.lua +++ b/lua/taken/plugins/lsp/mason.lua @@ -32,6 +32,7 @@ return { mason_null_ls.setup({ ensure_installed = { "stylua", + "prettier", }, automatic_installation = true, }) diff --git a/lua/taken/plugins/lsp/null-ls.lua b/lua/taken/plugins/lsp/null-ls.lua index 31aac1c..8dfd744 100644 --- a/lua/taken/plugins/lsp/null-ls.lua +++ b/lua/taken/plugins/lsp/null-ls.lua @@ -9,9 +9,29 @@ return { local formatting = null_ls.builtins.formatting local diagnostics = null_ls.builtins.diagnostics + local root_has_file = function(files) + return function(utils) + return utils.root_has_file(files) + end + end + local prettier_root_files = { + ".prettierrc", + ".prettierrc.json", + ".prettierrc.js", + ".prettierrc.mjs", + ".prettierrc.cjs", + "prettier.config.cjs", + "prettier.config.js", + "prettier.config.mjs", + } + local formatting_with_prettier = formatting.prettier.with({ + condition = root_has_file(prettier_root_files), + }) + null_ls.setup({ sources = { formatting.stylua, + formatting.prettier.with(formatting_with_prettier), }, on_attach = function(client, bufnr) if client.supports_method("textDocument/formatting") then diff --git a/lua/taken/plugins/lsp/ts-tools.lua b/lua/taken/plugins/lsp/ts-tools.lua index a2abf18..c6c24b6 100644 --- a/lua/taken/plugins/lsp/ts-tools.lua +++ b/lua/taken/plugins/lsp/ts-tools.lua @@ -24,22 +24,28 @@ return { else cmd = "typescript-language-server" end + local prettier_config = vim.fn.glob(cwd .. "/*prettierrc*", false, true) typescript_tools.setup({ capabilities = capabilities, on_attach = function(client, bufnr) on_attach(client, bufnr) - vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr }) - vim.api.nvim_create_autocmd("BufWritePre", { - group = augroup, - buffer = bufnr, - callback = function() - vim.lsp.buf.format({ async = false }) - end, - }) if cmd == "typescript-language-server" then print("Using global tsserver") end + if prettier_config == "" then + print("Using prettier to format") + return + else + vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr }) + vim.api.nvim_create_autocmd("BufWritePre", { + group = augroup, + buffer = bufnr, + callback = function() + vim.lsp.buf.format({ async = false }) + end, + }) + end end, settings = { cmd = { cmd, "--stdio" },