local opts = {noremap=true, silent=true} vim.api.nvim_set_keymap('n', '[g', '(coc-diagnostic-prev)', opts) vim.api.nvim_set_keymap('n', ']g', '(coc-diagnostic-next)', opts) vim.api.nvim_set_keymap('n', 'gd', '(coc-definition)', opts) vim.api.nvim_set_keymap('n', 'gy', '(coc-type-definition)', opts) local nvim_lsp = require('lspconfig') local on_attach = function(_client, bufnr) vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc') local kmaps = { ['gD']='lua vim.lsp.buf.declaration()' } for k,v in pairs(kmaps) do vim.api.nvim_buf_set_keymap(bufnr, 'n', k, v, opts) end vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gd', 'lua vim.lsp.buf.definition()', opts) vim.api.nvim_buf_set_keymap(bufnr, 'n', 'K', 'lua vim.lsp.buf.hover()', opts) vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gi', 'lua vim.lsp.buf.implementation()', opts) vim.api.nvim_buf_set_keymap(bufnr, 'n', '', 'lua vim.lsp.buf.signature_help()', opts) vim.api.nvim_buf_set_keymap(bufnr, 'n', 'D', 'lua vim.lsp.buf.type_definition()', opts) vim.api.nvim_buf_set_keymap(bufnr, 'n', 'rn', 'lua vim.lsp.buf.rename()', opts) vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gr', 'lua vim.lsp.buf.references()', opts) vim.api.nvim_buf_set_keymap(bufnr, 'n', 'ca', 'lua vim.lsp.buf.code_action()', opts) vim.api.nvim_buf_set_keymap(bufnr, 'n', 'e', 'lua vim.lsp.diagnostic.show_line_diagnostics()', opts) vim.api.nvim_buf_set_keymap(bufnr, 'n', '[d', 'lua vim.lsp.diagnostic.goto_prev()', opts) vim.api.nvim_buf_set_keymap(bufnr, 'n', ']d', 'lua vim.lsp.diagnostic.goto_next()', opts) vim.api.nvim_buf_set_keymap(bufnr, 'n', 'q', 'lua vim.lsp.diagnostic.set_loclist()', opts) end local servers = {'clangd', 'rust_analyzer', 'pyright', 'tsserver'} for _, lsp in ipairs(servers) do nvim_lsp[lsp].setup{on_attach=on_attach} end local sumneko_root_path = vim.fn.getenv('HOME')..'/.local/bin/sumneko_lua' local sumneko_binary_path = '/bin/linux/lua-language-server' nvim_lsp.sumneko_lua.setup{ cmd={sumneko_root_path .. sumneko_binary_path, '-E', sumneko_root_path..'/main.lua'}; on_attach=on_attach, settings={ Lua={ runtime={ version='LuaJIT', path=vim.split(package.path, ';'), }, diagnostics={ globals={'vim'}, }, workspace={ library={ [vim.fn.expand('$VIMRUNTIME/lua')] = true, [vim.fn.expand('$VIMRUNTIME/lua/vim/lsp')] = true, }, }, }, }, } vim.cmd "command! Format execute 'lua vim.lsp.buf.formatting()'" vim.o.completeopt = 'menuone,noinsert' --[[require'compe'.setup{ enabled=true, autocomplete=true, debug=false, min_length=1, preselect='enable', throttle_time=80, source_timeout=200, incomplete_delay=400, max_abbr_width=100, max_kind_width=100, max_menu_width=100, documentation=true, source={path=true, nvim_lsp=true}, } ]]-- return { setup=function() end }