vim.api.nvim_create_autocmd('LspAttach', { callback = function() vim.keymap.set ("n", "K", vim.lsp.buf.hover, { buffer=0}) -- buffer=0 -> only in current buffer vim.keymap.set ("n", "gd", vim.lsp.buf.definition, { buffer=0}) -- goto definition vim.keymap.set ("n", "gT", vim.lsp.buf.type_definition, { buffer=0}) -- goto typedefinition vim.keymap.set ("n", "gi", vim.lsp.buf.implementation, { buffer=0}) -- goto implementation vim.keymap.set ("n", "dj", vim.diagnostic.goto_next, { buffer=0}) -- goto dignostic next vim.keymap.set ("n", "dk", vim.diagnostic.goto_prev, { buffer=0}) -- goto diognostic prev vim.keymap.set ("n", "dl", "Telescope diagnostic", { buffer=0}) -- goto list failure vim.keymap.set ("n", "r", vim.lsp.buf.rename, { buffer=0}) end, }) require("mason").setup() require'lspconfig'.csharp_ls.setup({}) require'lspconfig'.bashls.setup({}) require'lspconfig'.perlls.setup{ settings = { perl = { fileFilter = { ".pm", ".pl" }, ignoreDirs = ".git", perlCmd = "perl", perlInc = " " } }, single_file_support = true } require'lspconfig'.sumneko_lua.setup { filetypes = { "lua"}, settings = { Lua = { runtime = { -- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim) version = 'LuaJIT', }, diagnostics = { -- Get the language server to recognize the `vim` global globals = {'vim'}, }, workspace = { -- Make the server aware of Neovim runtime files library = vim.api.nvim_get_runtime_file("", true), }, -- Do not send telemetry data containing a randomized but unique identifier telemetry = { enable = false, }, }, }, }