This commit is contained in:
Nikos Papadakis 2023-07-12 12:22:46 +03:00
parent 474f3b1657
commit 94b8437962
Signed by untrusted user who does not match committer: nikos
GPG key ID: 78871F9905ADFF02
3 changed files with 47 additions and 59 deletions

View file

@ -32,29 +32,9 @@ if has_lsp_status then
capabilities = vim.tbl_extend("keep", capabilities, lsp_status.capabilities) capabilities = vim.tbl_extend("keep", capabilities, lsp_status.capabilities)
end end
local format_augroup = setmetatable({}, { local has_lsp_format, lsp_format = pcall(require, "lsp-format")
__index = function(self, id) if has_lsp_format then
local group = vim.api.nvim_create_augroup(string.format("lsp-format-%s", id), { clear = true }) lsp_format.setup()
rawset(self, id, group)
return group
end,
})
local format_saving = {}
local format_handler = function(err, result, ctx)
if not result then
return
end
local client = vim.lsp.get_client_by_id(ctx.client_id)
vim.lsp.util.apply_text_edits(result, ctx.bufnr, client.offset_encoding)
if ctx.bufnr == vim.api.nvim_get_current_buf() then
format_saving[ctx.bufnr] = true
vim.cmd [[update]]
format_saving[ctx.bufnr] = false
end
end end
local on_attach = function(client, bufnr) local on_attach = function(client, bufnr)
@ -84,32 +64,43 @@ local on_attach = function(client, bufnr)
}) })
end end
-- Format on save
if client.server_capabilities.documentFormattingProvider then
vim.lsp.handlers["textDocument/formatting"] = vim.lsp.with(format_handler, {})
vim.api.nvim_clear_autocmds {
buffer = bufnr,
group = format_augroup[client.id],
}
vim.api.nvim_create_autocmd({ "BufWritePost" }, {
group = format_augroup[client.id],
desc = "format on save",
pattern = "<buffer>",
callback = function()
if format_saving[bufnr] == true then
return
end
vim.lsp.buf.format({ async = true })
end,
})
end
if has_lsp_status then if has_lsp_status then
lsp_status.on_attach(client) lsp_status.on_attach(client)
end end
if has_lsp_format then
lsp_format.on_attach(client)
end
end end
local prettier = {
formatCommand = [[prettier --stdin-filepath ${INPUT} ${--tab-width:tab_width}]],
formatStdin = true,
}
local eslint = {
lintCommand = [[eslint_d -f visualstudio --stdin --stdin-filename ${INPUT}]],
lintIgnoreExitCode = true,
lintStdin = true,
lintFormats = {
"%f(%l,%c): %tarning %m",
"%f(%l,%c): %rror %m",
},
lintSource = "eslint",
}
local servers = { local servers = {
efm = {
filetypes = { "typescript", "typescriptreact" },
init_options = { documentFormatting = true },
settings = {
rootMarkers = { ".git/" },
languages = {
typescript = { prettier, eslint },
typescriptreact = { prettier, eslint },
},
},
},
gopls = {}, gopls = {},
pylsp = {}, pylsp = {},
rust_analyzer = { rust_analyzer = {
@ -145,9 +136,18 @@ local servers = {
}, },
}, },
elixirls = { elixirls = {
cmd = { "elixir-ls" } cmd = { "/home/nikos/Projects/elixir-ls/release/language_server.sh" },
settings = {
elixirLS = {
dialyzerEnabled = true,
},
},
},
tsserver = {
settings = {
documentFormatting = false,
},
}, },
tsserver = {},
psalm = { psalm = {
cmd = { "vendor/bin/psalm-language-server" }, cmd = { "vendor/bin/psalm-language-server" },
}, },

View file

@ -1,12 +0,0 @@
local ok, null = pcall(require, "null-ls")
if not ok then
return
end
null.setup {
sources = {
null.builtins.diagnostics.eslint,
null.builtins.diagnostics.shellcheck,
null.builtins.formatting.prettierd,
}
}

View file

@ -28,9 +28,9 @@ require "paq" {
{ "nvim-telescope/telescope.nvim", branch = "0.1.x" }, { "nvim-telescope/telescope.nvim", branch = "0.1.x" },
{ "nvim-telescope/telescope-fzf-native.nvim", run = "make" }, { "nvim-telescope/telescope-fzf-native.nvim", run = "make" },
{ "catppuccin/nvim", as = "catppuccin" }, { "catppuccin/nvim", as = "catppuccin" },
{ "williamboman/mason.nvim", branch = "v1.0.1" }, { "williamboman/mason.nvim", branch = "v1.6.0" },
{ "lukas-reineke/lsp-format.nvim", branch = "v2.5.1" },
"stevearc/oil.nvim", "stevearc/oil.nvim",
"jose-elias-alvarez/null-ls.nvim",
-- Treesitter -- Treesitter
{ "nvim-treesitter/nvim-treesitter", branch = "master" }, { "nvim-treesitter/nvim-treesitter", branch = "master" },