feat(nvim): switch to coc, start config of lsps
This commit is contained in:
parent
e9555789be
commit
73ed0ba6de
6 changed files with 81 additions and 123 deletions
31
config/nvim/base.vim
Normal file
31
config/nvim/base.vim
Normal file
|
@ -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 <silent><expr> <TAB>
|
||||
\ coc#pum#visible() ? coc#_select_confirm() :
|
||||
\ coc#expandableOrJumpable() ? "\<C-r>=coc#rpc#request('doKeymap', ['snippets-expand-jump',''])\<CR>" :
|
||||
\ CheckBackspace() ? "\<TAB>" :
|
||||
\ coc#refresh()
|
||||
|
||||
function! CheckBackspace() abort
|
||||
let col = col('.') - 1
|
||||
return !col || getline('.')[col - 1] =~# '\s'
|
||||
endfunction
|
||||
|
||||
let g:coc_snippet_next = '<tab>'
|
||||
|
||||
" support scss @
|
||||
autocmd FileType scss setl iskeyword+=@-@
|
9
config/nvim/config.lua
Normal file
9
config/nvim/config.lua
Normal file
|
@ -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
|
|
@ -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()
|
|
@ -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:⟨
|
|
@ -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({
|
||||
['<C-b>'] = cmp.mapping.scroll_docs(-4),
|
||||
['<C-f>'] = cmp.mapping.scroll_docs(4),
|
||||
['<C-Space>'] = cmp.mapping.complete(),
|
||||
['<C-e>'] = cmp.mapping.abort(),
|
||||
['<CR>'] = 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
|
|
@ -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")
|
||||
];
|
||||
|
|
Loading…
Reference in a new issue