From 7d724344df7c84db1bac30e7214d4cc826eb12ce Mon Sep 17 00:00:00 2001 From: Haak Saxberg Date: Fri, 20 Aug 2021 23:04:55 -0700 Subject: [PATCH] new completion and lsp settings --- nix/home.nix | 100 +++++++++++++++++++++++++++++++++++++++++++---- nix/vim/init.vim | 63 ----------------------------- 2 files changed, 92 insertions(+), 71 deletions(-) diff --git a/nix/home.nix b/nix/home.nix index e086439..70dfbc5 100644 --- a/nix/home.nix +++ b/nix/home.nix @@ -13,7 +13,7 @@ let sha256 = "06gh3v35bdr0qsp459183br4hpmwm36d2r9fjyx9j5jfpzggqg51"; }; - cargoSha256 = "0f0a88pv4myavdrznz68f5jfc82y8whrdwcyp1q8i6nrn606csi7"; + cargoSha256 = "17lr4pc2fjcgvx0p4vpkwx3mg9jadb4lygbwri0blmnkqql8xlh3"; nativeBuildInputs = [ pkgs.pkgconfig ]; buildInputs = [ pkgs.openssl ] ++ (if pkgs.stdenv.isDarwin then [ pkgs.libiconv pkgs.darwin.apple_sdk.frameworks.Security ] else []); }; @@ -140,7 +140,6 @@ in { vim-elixir alchemist-vim - vimtex vim-elm-syntax vim-nix vim-javascript @@ -149,24 +148,109 @@ in { vim-commentary vim-airline - rainbow + { plugin = rainbow; + config = '' +let g:rainbow_conf = { +\ 'guifgs': ['RoyalBlue3', 'SeaGreen3', 'DarkOrchid3', 'firebrick3', 'RoyalBlue3', 'SeaGreen3', 'DarkOrchid3', 'firebrick3', 'RoyalBlue3', 'DarkOrchid3', 'firebrick3', 'RoyalBlue3', 'SeaGreen3', 'DarkOrchid3', 'firebrick3'], +\ 'ctermfgs': ['red', 'brown', 'blue', 'gray', 'green', 'magenta', 'cyan', 'darkred', 'brown', 'darkblue', 'gray', 'darkgreen', 'darkmagenta', 'darkcyan', 'red'], +\ 'parentheses': ['start=/(/ end=/)/ fold', 'start=/\[/ end=/\]/ fold', 'start=/{/ end=/}/ fold'] +\} +let g:rainbow_active = 1 + ''; + } vim-signify vim-indent-guides vim-surround fugitive - easymotion + { plugin = easymotion; + config = '' +map / (easymotion-sn) +omap / (easymotion-tn) +map n (easymotion-next) +map N (easymotion-prev) +let g:EasyMotion_landing_highlight = 0 + ''; + } vinegar undotree - vim-test - ale + { plugin = vim-test; + config = '' +nmap t :TestNearest +nmap T :TestFile +nmap a :TestSuite +nmap l :TestLast +nmap g :TestVisit +let test#strategy = "neovim" + ''; + } + { plugin = ale; + config = '' +let g:ale_fix_on_save = 1 +let g:ale_elixir_credo_strict = 1 +let g:ale_fixers = { + \ 'elm': ['elm-format', 'format'], + \ 'javascript': ['prettier'], + \ 'javascript.jsx': ['prettier'], + \ 'javascriptreact': ['prettier'], + \ 'typescriptreact': ['prettier'], + \ 'typescript': ['prettier'], + \ 'ruby': ['sorbet'], + \ 'rust': ['rustfmt'], + \ 'elixir': ['mix_format'] + \} +let g:ale_linters_explicit = 1 + ''; + } fzf-vim fzfWrapper - LanguageClient-neovim - deoplete-nvim + { plugin = nvim-compe; + config = '' +set completeopt=menuone,noselect +let g:compe = {} +let g:compe.enabled = v:true +let g:compe.autocomplete = v:true +let g:compe.debug = v:false +let g:compe.min_length = 1 +let g:compe.preselect = 'enable' +let g:compe.throttle_time = 80 +let g:compe.source_timeout = 200 +let g:compe.resolve_timeout = 800 +let g:compe.incomplete_delay = 400 +let g:compe.max_abbr_width = 100 +let g:compe.max_kind_width = 100 +let g:compe.max_menu_width = 100 +let g:compe.documentation = v:true + +let g:compe.source = {} +let g:compe.source.path = v:true +let g:compe.source.buffer = v:true +let g:compe.source.calc = v:true +let g:compe.source.nvim_lsp = v:true +let g:compe.source.nvim_lua = v:true +let g:compe.source.vsnip = v:true +let g:compe.source.ultisnips = v:true +let g:compe.source.luasnip = v:true +let g:compe.source.emoji = v:true + ''; + } vim-goyo + { plugin = nvim-lspconfig ; + config = '' + lua << EOF + require'lspconfig'.elmls.setup{} + require'lspconfig'.tsserver.setup{} + require'lspconfig'.elixirls.setup{ + cmd = { "${pkgs.elixir_ls}/bin/elixir-ls" }; + } + EOF + ''; + } ]; extraConfig = readFile ./vim/init.vim; + extraPackages = with pkgs; [ + elixir_ls + ]; }; programs.tmux = { diff --git a/nix/vim/init.vim b/nix/vim/init.vim index a7c96b9..2d8e4e4 100644 --- a/nix/vim/init.vim +++ b/nix/vim/init.vim @@ -1,68 +1,5 @@ filetype plugin indent on -let g:tex_flavor = 'latex' - -" Deoplete -let g:deoplete#enable_at_startup = 1 - -" LanguageClient-neovim -let g:LanguageClient_serverCommands = { - \ 'elm': ['elm-language-server'], - \ 'rust': ['rustup', 'run', 'stable', 'rls'], - \ 'ruby': ['bundle', 'exec', 'srb', 'tc', '--lsp', '.'], - \ } - -let g:LanguageClient_rootMarkers = { - \ 'elm': ['elm.json'], - \ 'typescriptreact': ['tsconfig.json'], - \ 'ruby': ['Gemfile'], - \ } - -let g:LanguageClient_loggingFile = expand('~/.local/share/nvim/LanguageClient.log') - -" ALE -let g:ale_fix_on_save = 1 -let g:ale_elixir_credo_strict = 1 -let g:ale_fixers = { - \ 'elm': ['elm-format', 'format'], - \ 'javascript': ['prettier'], - \ 'javascript.jsx': ['prettier'], - \ 'javascriptreact': ['prettier'], - \ 'typescriptreact': ['prettier'], - \ 'typescript': ['prettier'], - \ 'ruby': ['sorbet'], - \ 'rust': ['rustfmt'], - \ 'elixir': ['mix_format'] - \} -let g:ale_linters_ignore = { - \ 'javascript': ['tsserver'], - \ 'javascriptreact': ['tsserver'], - \} - -" Rainbow parentheses -let g:rainbow_conf = { -\ 'guifgs': ['RoyalBlue3', 'SeaGreen3', 'DarkOrchid3', 'firebrick3', 'RoyalBlue3', 'SeaGreen3', 'DarkOrchid3', 'firebrick3', 'RoyalBlue3', 'DarkOrchid3', 'firebrick3', 'RoyalBlue3', 'SeaGreen3', 'DarkOrchid3', 'firebrick3'], -\ 'ctermfgs': ['red', 'brown', 'blue', 'gray', 'green', 'magenta', 'cyan', 'darkred', 'brown', 'darkblue', 'gray', 'darkgreen', 'darkmagenta', 'darkcyan', 'red'], -\ 'parentheses': ['start=/(/ end=/)/ fold', 'start=/\[/ end=/\]/ fold', 'start=/{/ end=/}/ fold'] -\} -let g:rainbow_active = 1 - -" Easymotion -map / (easymotion-sn) -omap / (easymotion-tn) -map n (easymotion-next) -map N (easymotion-prev) -let g:EasyMotion_landing_highlight = 0 - -" Vim-Test -nmap t :TestNearest -nmap T :TestFile -nmap a :TestSuite -nmap l :TestLast -nmap g :TestVisit -let test#strategy = "neovim" - - nnoremap t :call LanguageClient_textDocument_hover() nnoremap y :call LanguageClient_textDocument_definition()