local config = function() local u = require 'config.utils' u.nmap('E', vim.diagnostic.open_float) u.nmap('[d', vim.diagnostic.goto_prev) u.nmap(']d', vim.diagnostic.goto_next) u.nmap('q', vim.diagnostic.setloclist) local on_attach = function(_, bufnr) vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc') vim.o.signcolumn = 'yes' local map = function(from, to) vim.keymap.set('n', from, to, { noremap = true, silent = true, buffer = bufnr }) end map('gd', vim.lsp.buf.definition) map('gr', vim.lsp.buf.references) map('gi', vim.lsp.buf.implementation) map('gD', vim.lsp.buf.declaration) map('K', vim.lsp.buf.hover) map('', vim.lsp.buf.signature_help) map('wa', vim.lsp.buf.add_workspace_folder) map('wr', vim.lsp.buf.remove_workspace_folder) map('wl', function() print(vim.inspect(vim.lsp.buf.list_workspace_folders())) end) map('D', vim.lsp.buf.type_definition) map('rn', vim.lsp.buf.rename) map('ca', vim.lsp.buf.code_action) map('fm', vim.lsp.buf.formatting) end local capabilities = require('cmp_nvim_lsp').update_capabilities(vim.lsp.protocol.make_client_capabilities()) require 'lspconfig'.sumneko_lua.setup { on_attach = on_attach, capabilities = capabilities, settings = { Lua = { diagnostics = { globals = { 'vim' }, }, }, }, } require 'rust-tools'.setup { server = { on_attach = on_attach, capabilities = capabilities, } } vim.g.markdown_fenced_languages = { "ts=typescript" } require 'lspconfig'.denols.setup { on_attach = on_attach, capabilities = capabilities, } end return function(use) use { 'neovim/nvim-lspconfig', config = config } use { 'simrat39/rust-tools.nvim', requires = { 'nvim-lua/plenary.nvim', 'mfussenegger/nvim-dap', } } use 'tjdevries/nlua.nvim' use { 'windwp/nvim-autopairs', config = function() require 'nvim-autopairs'.setup {} end } end