diff --git a/nvim/.config/nvim/init.vim b/nvim/.config/nvim/init.vim index f9573d9..52bcb6b 100644 --- a/nvim/.config/nvim/init.vim +++ b/nvim/.config/nvim/init.vim @@ -80,6 +80,8 @@ Plug 'reedes/vim-textobj-sentence' Plug 'junegunn/goyo.vim', { 'for': ['pandoc', 'markdown', 'txt'], 'on': 'Goyo' } " provide distraction free writing Plug 'junegunn/limelight.vim', { 'for': ['pandoc', 'markdown', 'txt'], 'on': 'Goyo' } " provide even distraction free-er writing (lowlight paragraphs) " Language Integration +Plug 'tjdevries/nlua.nvim' " lua lsp integration +Plug 'euclidianAce/BetterLua.vim' " better syntax highlighting for lua Plug 'sheerun/vim-polyglot' " syntax plugins for almost every language Plug 'stephpy/vim-yaml' Plug 'mhartington/nvim-typescript', {'for': 'typescript','do': './install.sh'} diff --git a/nvim/.config/nvim/lua/nvim-lspconfig/init.lua b/nvim/.config/nvim/lua/nvim-lspconfig/init.lua new file mode 100644 index 0000000..30560a7 --- /dev/null +++ b/nvim/.config/nvim/lua/nvim-lspconfig/init.lua @@ -0,0 +1,31 @@ + +local on_attach = function(client, bufnr) + -- Keybindings for LSPs + -- Note these are in on_attach so that they don't override bindings in a non-LSP setting + vim.fn.nvim_set_keymap("n", "gd", "lua vim.lsp.buf.definition()", {noremap = true, silent = true}) + vim.fn.nvim_set_keymap("n", "gD", "lua vim.lsp.buf.implementation()", {noremap = true, silent = true}) + vim.fn.nvim_set_keymap("n", "K", "lua vim.lsp.buf.hover()", {noremap = true, silent = true}) + vim.fn.nvim_set_keymap("n", "", "lua vim.lsp.buf.signature_help()", {noremap = true, silent = true}) + vim.fn.nvim_set_keymap("n", "1gD", "lua vim.lsp.buf.type_definition()", {noremap = true, silent = true}) + vim.fn.nvim_set_keymap("n", "gr", "lua vim.lsp.buf.references()", {noremap = true, silent = true}) + vim.fn.nvim_set_keymap("n", "g0", "lua vim.lsp.buf.document_symbol()", {noremap = true, silent = true}) + vim.fn.nvim_set_keymap("n", "gW", "lua vim.lsp.buf.workspace_symbol()", {noremap = true, silent = true}) +end + +require'nvim_lsp'.pyls.setup{on_attach=on_attach} +require'nvim_lsp'.vimls.setup{on_attach=on_attach} +require'nvim_lsp'.bashls.setup{on_attach=on_attach} +require'nvim_lsp'.gopls.setup{on_attach=on_attach} +require'nvim_lsp'.texlab.setup{on_attach=on_attach} + +-- To get builtin LSP running, do something like: +-- NOTE: This replaces the calls where you would have before done `require('nvim_lsp').sumneko_lua.setup()` +require('nlua.lsp.nvim').setup(require('nvim_lsp'), { + on_attach = on_attach, + + -- Include globals you want to tell the LSP are real :) + globals = { + -- Colorbuddy + "Color", "c", "Group", "g", "s", + } +}) diff --git a/nvim/.config/nvim/plugin/nvim-lspconfig.vim b/nvim/.config/nvim/plugin/nvim-lspconfig.vim index ef1c23b..954c024 100644 --- a/nvim/.config/nvim/plugin/nvim-lspconfig.vim +++ b/nvim/.config/nvim/plugin/nvim-lspconfig.vim @@ -1,12 +1,6 @@ -lua << END +command! LspHover lua vim.lsp.buf.hover() +command! LspDisable lua vim.lsp.stop_client(vim.lsp.get_active_clients()) -require'nvim_lsp'.pyls.setup{} -require'nvim_lsp'.vimls.setup{} -require'nvim_lsp'.bashls.setup{} -require'nvim_lsp'.gopls.setup{} -require'nvim_lsp'.texlab.setup{} - --- requires manual `:LspInstall sumneko_lua` -require'nvim_lsp'.sumneko_lua.setup{} - -END +" actual LSP config takes place in lua ('lua/lsp') +lua require("nvim-lspconfig") +setlocal omnifunc=v:lua.vim.lsp.omnifunc