|
|
-- Learn the keybindings, see :help lsp-zero-keybindings -- Learn to configure LSP servers, see :help lsp-zero-api-showcase local lsp = require('lsp-zero') lsp.preset('recommended')
local cmp = require('cmp') local cmp_select = { behavior = cmp.SelectBehavior.Select } local cmp_mappings = lsp.defaults.cmp_mappings({ ['<C-p>'] = cmp.mapping.select_prev_item(cmp_select), ['<C-n>'] = cmp.mapping.select_next_item(cmp_select), ['<C-s>'] = cmp.mapping.confirm({ select = true }), ["<C-Space>"] = cmp.mapping.complete(), })
cmp_mappings['<Tab>'] = nil cmp_mappings['<S-Tab>'] = nil
lsp.setup_nvim_cmp({ mapping = cmp_mappings, experimental = { ghost_text = true, }, }) -- (Optional) Configure lua language server for neovim lsp.nvim_workspace()
local servers = { 'tailwindcss', 'tsserver', 'texlab', 'pyright', 'ltex', 'jsonls' }
lsp.ensure_installed(servers)
lsp.configure("tsserver", { on_init = function(client) client.server_capabilities.documentFormattingProvider = false client.server_capabilities.documentFormattingRangeProvider = false end })
lsp.on_attach(function(client, bufnr) local opts = { buffer = bufnr, remap = false } vim.keymap.set("n", "gd", function() vim.lsp.buf.definition() end, opts) vim.keymap.set("n", "<leader>rn", function() vim.lsp.buf.rename() end, opts) end)
lsp.setup()
vim.diagnostic.config({ virtual_text = true, underline = true, float = true, })
local null_ls = require('null-ls') local null_opts = lsp.build_options('null-ls', {})
null_ls.setup({ on_attach = function(client, bufnr) null_opts.on_attach(client, bufnr)
local format_cmd = function(input) vim.lsp.buf.format({ id = client.id, timeout_ms = 5000, async = input.bang, }) end
local bufcmd = vim.api.nvim_buf_create_user_command bufcmd(bufnr, 'NullFormat', format_cmd, { bang = true, range = true, desc = 'Format using null-ls' }) end, sources = { } })
vim.keymap.set("n", "<leader>ft", function() vim.lsp.buf.format { timeout_ms = 5000 } end)
require('mason').setup() require('mason-nvim-dap').setup({ automatic_setup = true, })
require('mason-null-ls').setup({ ensure_installed = { "autopep8", "eslint", "gofmt", "rustfmt", "shellcheck" }, automatic_installation = true, automatic_setup = true, })
require("mason-null-ls").setup({ handlers = {}, })
|