From 4a98a06bedb1afd2e0d6d4ee2aff6faa5043b256 Mon Sep 17 00:00:00 2001 From: Felix Tenley Date: Sat, 21 Mar 2020 17:03:23 +0100 Subject: [PATCH] feat(neovim): add initial nvim-lsp config (WIP) --- home/editors/lsp.vim | 43 +++++++++++++++++++++++++++++++++++++++++ home/editors/neovim.nix | 7 +++++-- 2 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 home/editors/lsp.vim diff --git a/home/editors/lsp.vim b/home/editors/lsp.vim new file mode 100644 index 0000000..bd59e4d --- /dev/null +++ b/home/editors/lsp.vim @@ -0,0 +1,43 @@ +" autocomplete config +set completeopt=menu,preview,menuone,noinsert +set omnifunc=v:lua.vim.lsp.omnifunc + +let g:deoplete#enable_at_startup = 1 +" let g:deoplete#auto_refresh_delay = 10 " TODO disable it again if it doesn't make a difference +let g:deoplete#smart_case = 1 +let g:deoplete#min_pattern_length = 1 + +" Use to trigger completion. +inoremap deoplete#manual_complete() + +"Autocomplete and cycle from top-to-bottom of suggestions using . +inoremap pumvisible() ? "\" : "\" + +" : completion. +inoremap + \ pumvisible() ? "\" : + \ check_back_space() ? "\" : + \ deoplete#manual_complete() +inoremap pumvisible() ? "\" : "\" + +function! s:check_back_space() abort + let col = col('.') - 1 + return !col || getline('.')[col - 1] =~# '\s' +endfunction + +" these will likely interfere with coc.vim maps +nnoremap gd lua vim.lsp.buf.declaration() +nnoremap lua vim.lsp.buf.definition() +nnoremap K lua vim.lsp.buf.hover() +nnoremap gD lua vim.lsp.buf.implementation() +nnoremap lua vim.lsp.buf.signature_help() +nnoremap 1gD lua vim.lsp.buf.type_definition() +nnoremap gr lua vim.lsp.buf.references() +nnoremap g0 lua vim.lsp.buf.document_symbol() + +" nvim-lsp config +packloadall " https://github.com/neovim/neovim/issues/11407 +lua << EOF +local nvim_lsp = require'nvim_lsp' +nvim_lsp.tsserver.setup{} +EOF diff --git a/home/editors/neovim.nix b/home/editors/neovim.nix index 55ea86f..9f8b6c9 100644 --- a/home/editors/neovim.nix +++ b/home/editors/neovim.nix @@ -15,7 +15,7 @@ let }; nvim-lsp = buildVimPluginFrom2Nix { pname = "nvim-lsp"; - version = "master"; + version = "2020-03-17"; src = pkgs.fetchFromGitHub { owner = "neovim"; repo = "nvim-lsp"; @@ -71,7 +71,9 @@ in camelcasemotion argtextobj-vim - # nvim-lsp # nixos-rebuild currently fails + nvim-lsp + deoplete-nvim + deoplete-lsp vim-orgmode vim-nix @@ -98,6 +100,7 @@ in omnisharp-vim ]; extraConfig = with builtins; readFile ./init.vim + readFile ./coc.vim; + # extraConfig = with builtins; readFile ./init.vim + readFile ./lsp.vim; withNodeJs = true; };