return { "neovim/nvim-lspconfig", event = { "BufReadPre", "BufNewFile" }, dependencies = { "nvim-lua/plenary.nvim", "hrsh7th/nvim-cmp", "hrsh7th/cmp-buffer", "hrsh7th/cmp-path", "hrsh7th/cmp-cmdline", "hrsh7th/cmp-nvim-lsp", { "antosha417/nvim-lsp-file-operations", config = true }, }, config = function() -- https://github.com/folke/lazydev.nvim -- import lspconfig plugin local lspconfig = require("lspconfig") -- import cmp-nvim-lsp plugin local cmp_nvim_lsp = require("cmp_nvim_lsp") --local keymap = vim.keymap -- for conciseness local opts = { noremap = true, silent = true } -- configure dart server (with special settings) --[[ lspconfig["dartls"].setup({ cmd = { "dart", "language-server", "--protocol=lsp" }, filetypes = { "dart" }, init_options = { closingLabels = true, flutterOutline = true, onlyAnalyzeProjectsWithOpenFiles = true, outline = true, suggestFromUnimportedLibraries = true, }, settings = { -- custom settings for dartls dart = { completeFunctionCalls = true, showTodos = true, }, }, }) --]] lspconfig.rust_analyzer.setup({ settings = { ["rust-analyzer"] = { diagnostics = { enable = false, }, }, }, }) lspconfig.gopls.setup({}) lspconfig.lua_ls.setup({}) local cmp = require("cmp") cmp.setup({ mapping = cmp.mapping.preset.insert({ [""] = cmp.mapping.scroll_docs(-4), [""] = cmp.mapping.scroll_docs(4), [""] = cmp.mapping.complete(), [""] = cmp.mapping.abort(), [""] = cmp.mapping.confirm({ select = true }), }), sources = cmp.config.sources({ { name = "nvim_lsp" }, { name = "buffer" }, }), }) end, }