From 73ed0ba6de52a6213a94eed950490a5937f10ab2 Mon Sep 17 00:00:00 2001 From: matt1432 Date: Mon, 18 Sep 2023 23:21:45 -0400 Subject: [PATCH] feat(nvim): switch to coc, start config of lsps --- config/nvim/base.vim | 31 +++++++++++ config/nvim/config.lua | 9 ++++ {nixos/home/.nvim => config/nvim}/lsp.lua | 39 -------------- nixos/home/.nvim/base.vim | 13 ----- nixos/home/.nvim/config.lua | 46 ---------------- nixos/home/nvim.nix | 66 ++++++++++++++--------- 6 files changed, 81 insertions(+), 123 deletions(-) create mode 100644 config/nvim/base.vim create mode 100644 config/nvim/config.lua rename {nixos/home/.nvim => config/nvim}/lsp.lua (52%) delete mode 100644 nixos/home/.nvim/base.vim delete mode 100644 nixos/home/.nvim/config.lua diff --git a/config/nvim/base.vim b/config/nvim/base.vim new file mode 100644 index 0000000..88244b2 --- /dev/null +++ b/config/nvim/base.vim @@ -0,0 +1,31 @@ +" make tabs only 2 spaces +set tabstop=2 +set shiftwidth=2 +set expandtab +set smartindent + +set number +set relativenumber + +set undofile +set undodir=/home/matt/.cache/nvim/ + +" set dot icon in place of trailing whitespaces +set list listchars=tab:\ \ ,nbsp:␣,trail:•,extends:⟩,precedes:⟨ + +" use vscode keybinds for snippets completion +inoremap + \ coc#pum#visible() ? coc#_select_confirm() : + \ coc#expandableOrJumpable() ? "\=coc#rpc#request('doKeymap', ['snippets-expand-jump',''])\" : + \ CheckBackspace() ? "\" : + \ coc#refresh() + +function! CheckBackspace() abort + let col = col('.') - 1 + return !col || getline('.')[col - 1] =~# '\s' +endfunction + +let g:coc_snippet_next = '' + +" support scss @ +autocmd FileType scss setl iskeyword+=@-@ diff --git a/config/nvim/config.lua b/config/nvim/config.lua new file mode 100644 index 0000000..d8a7ee5 --- /dev/null +++ b/config/nvim/config.lua @@ -0,0 +1,9 @@ +vim.opt.fillchars = {eob = " "} +vim.cmd[[colorscheme dracula]] + +-- https://github.com/AstroNvim/AstroNvim/issues/648#issuecomment-1511728897 + +vim.g.loaded_netrw = 0 +vim.g.loaded_netrwPlugin = 0 + +-- https://github.com/nvim-neo-tree/neo-tree.nvim/issues/983#issuecomment-1637372234 diff --git a/nixos/home/.nvim/lsp.lua b/config/nvim/lsp.lua similarity index 52% rename from nixos/home/.nvim/lsp.lua rename to config/nvim/lsp.lua index 4046de9..ed10928 100644 --- a/nixos/home/.nvim/lsp.lua +++ b/config/nvim/lsp.lua @@ -1,41 +1,3 @@ -local capabilities = require('cmp_nvim_lsp').default_capabilities() -local lspconfig = require('lspconfig') -lspconfig.bashls.setup { capabilities = capabilities } -lspconfig.nixd.setup { capabilities = capabilities } -lspconfig.html.setup { capabilities = capabilities } -lspconfig.cssls.setup { capabilities = capabilities } -lspconfig.lua_ls.setup { - settings = { - capabilities = capabilities, - Lua = { - runtime = { - version = 'LuaJIT', - }, - diagnostics = { - -- Get the language server to recognize the `vim` global - globals = {'vim'}, - }, - workspace = { - -- Make the server aware of Neovim runtime files - library = vim.api.nvim_get_runtime_file("", true), - }, - telemetry = { - enable = false, - }, - }, - }, -} - -require("formatter").setup { - filetype = { - ["*"] = { - -- "formatter.filetypes.any" defines default configurations for any - -- filetype - require("formatter.filetypes.any").remove_trailing_whitespace - } - } -} - require'nvim-treesitter.configs'.setup { highlight = { enable = true, @@ -76,6 +38,5 @@ require("neo-tree").setup({ leave_dirs_open = true, } }) -require('nvim-autopairs').setup() require('todo-comments').setup() require("scrollbar").setup() diff --git a/nixos/home/.nvim/base.vim b/nixos/home/.nvim/base.vim deleted file mode 100644 index 4401005..0000000 --- a/nixos/home/.nvim/base.vim +++ /dev/null @@ -1,13 +0,0 @@ -" make tabs only 2 spaces -set tabstop=2 -set shiftwidth=2 -set expandtab -set smartindent - -set number -set relativenumber - -set undofile -set undodir=/home/matt/.cache/nvim/ - -set list listchars=tab:\ \ ,nbsp:␣,trail:•,extends:⟩,precedes:⟨ diff --git a/nixos/home/.nvim/config.lua b/nixos/home/.nvim/config.lua deleted file mode 100644 index 40fa833..0000000 --- a/nixos/home/.nvim/config.lua +++ /dev/null @@ -1,46 +0,0 @@ -vim.opt.fillchars = {eob = " "} -vim.cmd[[colorscheme dracula]] - --- Set up nvim-cmp. - local cmp = require'cmp' - local cmp_autopairs = require('nvim-autopairs.completion.cmp') - - cmp.setup({ - snippet = { - -- REQUIRED - you must specify a snippet engine - expand = function(args) - vim.fn["vsnip#anonymous"](args.body) - end, - }, - window = { - -- completion = cmp.config.window.bordered(), - -- documentation = cmp.config.window.bordered(), - }, - mapping = cmp.mapping.preset.insert({ - [''] = cmp.mapping.scroll_docs(-4), - [''] = cmp.mapping.scroll_docs(4), - [''] = cmp.mapping.complete(), - [''] = cmp.mapping.abort(), - [''] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. - }), - sources = cmp.config.sources({ - { name = 'nvim_lsp' }, - { name = 'vsnip' }, -- For vsnip users. - -- { name = 'luasnip' }, -- For luasnip users. - -- { name = 'ultisnips' }, -- For ultisnips users. - -- { name = 'snippy' }, -- For snippy users. - }, { - { name = 'buffer' }, - }) - }) - cmp.event:on( - 'confirm_done', - cmp_autopairs.on_confirm_done() -) - --- https://github.com/AstroNvim/AstroNvim/issues/648#issuecomment-1511728897 - -vim.g.loaded_netrw = 0 -vim.g.loaded_netrwPlugin = 0 - --- https://github.com/nvim-neo-tree/neo-tree.nvim/issues/983#issuecomment-1637372234 diff --git a/nixos/home/nvim.nix b/nixos/home/nvim.nix index 86875f2..619f45a 100644 --- a/nixos/home/nvim.nix +++ b/nixos/home/nvim.nix @@ -1,6 +1,8 @@ # https://breuer.dev/blog/nixos-home-manager-neovim { config, pkgs, lib, ... }: let + configDir = "/home/matt/.nix/config"; + # installs a vim plugin from git with a given tag / branch pluginGit = ref: repo: pkgs.vimUtils.buildVimPluginFrom2Nix { pname = "${lib.strings.sanitizeDerivationName repo}"; @@ -14,6 +16,22 @@ let # always installs latest version plugin = pluginGit "HEAD"; in { + xdg.configFile = { + "nvim/coc-settings.json".source = pkgs.writeText "coc-settings.json" '' + { + "java.jdt.ls.java.home": "${pkgs.temurin-bin-18}", + "colors.enable": true, + "Lua.misc.parameters": [ + "--metapath", + "~/.cache/sumneko_lua/meta", + "--logpath", + "~/.cache/sumneko_lua/log" + ], + "sumneko-lua.serverDir": "${pkgs.lua-language-server}/share/lua-language-server" + } + ''; + }; + programs.neovim = { enable = true; package = pkgs.neovim-nightly; @@ -21,51 +39,51 @@ in { # read in the vim config from filesystem # this enables syntaxhighlighting when editing those extraConfig = builtins.concatStringsSep "\n" [ - (lib.strings.fileContents ./.nvim/base.vim) + (lib.strings.fileContents "${configDir}/nvim/base.vim") # (lib.strings.fileContents ./.nvim/plugins.vim) # (lib.strings.fileContents ./.nvim/lsp.vim) '' lua << EOF - ${lib.strings.fileContents ./.nvim/config.lua} - ${lib.strings.fileContents ./.nvim/lsp.lua} + ${lib.strings.fileContents "${configDir}/nvim/config.lua"} + ${lib.strings.fileContents "${configDir}/nvim/lsp.lua"} EOF '' ]; extraPackages = with pkgs; [ tree-sitter - - # https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md - nodePackages.bash-language-server - shellcheck - nixd - sumneko-lua-language-server - vscode-langservers-extracted + nodejs_latest + bat ]; plugins = with pkgs.vimPlugins; [ vim-which-key + coc-nvim # done + coc-java # done + coc-css # done + coc-sumneko-lua # done + coc-highlight # done + coc-json + coc-pairs + coc-python + coc-sh + coc-snippets + coc-vimlsp + coc-yaml + coc-toml + + coc-fzf + (plugin "junegunn/fzf.vim") + (plugin "junegunn/fzf") + nvim-treesitter.withAllGrammars nvim-treesitter - #telescope-nvim - #telescope-fzf-native-nvim - (plugin "Mofiqul/dracula.nvim") - (plugin "neovim/nvim-lspconfig") (plugin "lukas-reineke/indent-blankline.nvim") (plugin "lewis6991/gitsigns.nvim") (plugin "nvim-lualine/lualine.nvim") - # plugins for completion - (plugin "hrsh7th/nvim-cmp") - (plugin "hrsh7th/cmp-nvim-lsp") - (plugin "hrsh7th/cmp-buffer") - (plugin "hrsh7th/cmp-path") - (plugin "hrsh7th/cmp-cmdline") - (plugin "hrsh7th/cmp-vsnip") - (plugin "hrsh7th/vim-vsnip") - # neo-tree and deps (plugin "nvim-neo-tree/neo-tree.nvim") (plugin "nvim-lua/plenary.nvim") @@ -75,8 +93,6 @@ in { # to explore more (plugin "iamcco/markdown-preview.nvim") (plugin "sindrets/diffview.nvim") - (plugin "windwp/nvim-autopairs") - (plugin "mhartington/formatter.nvim") (plugin "folke/todo-comments.nvim") (plugin "petertriho/nvim-scrollbar") ];