aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--nvim/.config/nvim/init.vim165
1 files changed, 138 insertions, 27 deletions
diff --git a/nvim/.config/nvim/init.vim b/nvim/.config/nvim/init.vim
index a961c9e..e54c7d6 100644
--- a/nvim/.config/nvim/init.vim
+++ b/nvim/.config/nvim/init.vim
@@ -13,9 +13,6 @@ let mapleader=" "
set nocompatible
set encoding=utf-8
-" enable 24-bit colors
-set termguicolors
-
" enable hybrid numbers
set nu rnu
@@ -65,39 +62,33 @@ set listchars=tab:>-,eol:$,space:•,trail:~
" pluggins are installed with vim plug
call plug#begin('~/.local/share/nvim/plugged')
-Plug '~/.local/share/nvim/plugged/gruvbox', {'branch': 'la-ninpre/la-ninpre'}
-Plug 'junegunn/goyo.vim'
-Plug 'junegunn/limelight.vim'
+"Plug 'ap/vim-css-color'
+Plug 'cespare/vim-toml'
+Plug 'dag/vim-fish'
+Plug 'dense-analysis/ale'
+Plug 'https://tildegit.org/sloum/gemini-vim-syntax'
+Plug 'hrsh7th/nvim-cmp'
+Plug 'hrsh7th/cmp-nvim-lsp'
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
Plug 'junegunn/fzf.vim'
+Plug 'junegunn/goyo.vim'
+Plug 'junegunn/limelight.vim'
+Plug 'karolbelina/uxntal.vim'
+Plug 'L3MON4D3/LuaSnip'
Plug 'mattn/emmet-vim'
-Plug 'ap/vim-css-color'
+Plug 'mbbill/undotree'
+Plug 'neovim/nvim-lspconfig'
Plug 'preservim/nerdcommenter'
+Plug 'saadparwaiz1/cmp_luasnip'
Plug 'tpope/vim-surround'
-Plug 'mbbill/undotree'
-Plug 'dense-analysis/ale'
-Plug 'cespare/vim-toml'
-Plug 'dag/vim-fish'
-Plug 'https://tildegit.org/sloum/gemini-vim-syntax'
-Plug 'karolbelina/uxntal.vim'
call plug#end()
filetype plugin indent on
" }}}
" colorscheme: {{{
-" colorscheme tweaks
-if exists('+termguicolors')
- let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum"
- let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum"
-endif
-
-let g:gruvbox_contrast_dark='hard'
-let g:gruvbox_italic=1
-let g:gruvbox_transparent_bg=1
-let g:gruvbox_invert_selection='0'
-
-set background=dark
-colorscheme gruvbox
+" limelight
+let g:limelight_conceal_ctermfg = 'gray'
+let g:limelight_conceal_ctermfg = 240
" }}}
" mappings: {{{
@@ -151,7 +142,7 @@ autocmd! User GoyoLeave Limelight!
autocmd VimEnter * :silent exec "!kill -s SIGWINCH $PPID"
" enable insert mode when entering git commit message
-autocmd VimEnter */COMMIT_EDITMSG startinsert
+autocmd VimEnter */COMMIT_EDITMSG exec 'normal 1G' | startinsert
" highlight yanked text (needs nvim 0.5.x)
augroup highlight_yank
@@ -160,4 +151,124 @@ augroup highlight_yank
augroup END
" }}}
+" lsp: {{{
+lua <<EOF
+
+local capabilities = vim.lsp.protocol.make_client_capabilities()
+capabilities = require('cmp_nvim_lsp').update_capabilities(capabilities)
+
+local opts = { noremap=true, silent=true }
+vim.keymap.set('n', '<space>e', vim.diagnostic.open_float, opts)
+vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, opts)
+vim.keymap.set('n', ']d', vim.diagnostic.goto_next, opts)
+vim.keymap.set('n', '<space>q', vim.diagnostic.setloclist, opts)
+
+-- Use an on_attach function to only map the following keys
+-- after the language server attaches to the current buffer
+local on_attach = function(client, bufnr)
+ -- Enable completion triggered by <c-x><c-o>
+ --vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc')
+
+ -- Mappings.
+ -- See `:help vim.lsp.*` for documentation on any of the below functions
+ local bufopts = { noremap=true, silent=true, buffer=bufnr }
+ vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, bufopts)
+ vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts)
+ vim.keymap.set('n', 'K', vim.lsp.buf.hover, bufopts)
+ vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, bufopts)
+ vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, bufopts)
+ vim.keymap.set('n', '<space>wa', vim.lsp.buf.add_workspace_folder, bufopts)
+ vim.keymap.set('n', '<space>wr', vim.lsp.buf.remove_workspace_folder, bufopts)
+ vim.keymap.set('n', '<space>wl', function()
+ print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
+ end, bufopts)
+ vim.keymap.set('n', '<space>D', vim.lsp.buf.type_definition, bufopts)
+ vim.keymap.set('n', '<space>rn', vim.lsp.buf.rename, bufopts)
+ vim.keymap.set('n', '<space>ca', vim.lsp.buf.code_action, bufopts)
+ vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts)
+ vim.keymap.set('n', '<space>f', vim.lsp.buf.formatting, bufopts)
+end
+
+lspconfig = require "lspconfig"
+util = require "lspconfig/util"
+
+lspconfig.clangd.setup {
+ on_attach = on_attach,
+ capabilities = capabilities
+}
+
+lspconfig.pyright.setup {
+ on_attach = on_attach,
+ capabilities = capabilities
+}
+
+lspconfig.gopls.setup {
+ cmd = {"gopls", "serve"},
+ filetypes = {"go", "gomod"},
+ root_dir = util.root_pattern("go.work", "go.mod", ".git"),
+ on_attach = on_attach,
+ capabilities = capabilities,
+ settings = {
+ gopls = {
+ analyses = {
+ unusedparams = true,
+ },
+ staticcheck = true,
+ },
+ },
+}
+lspconfig.hls.setup{
+ on_attach = on_attach,
+ root_dir = vim.loop.cwd,
+ capabilities = capabilities,
+ settings = {
+ rootMarkers = {"./git/"}
+ }
+}
+
+-- luasnip setup
+local luasnip = require 'luasnip'
+
+-- nvim-cmp setup
+local cmp = require 'cmp'
+cmp.setup {
+ snippet = {
+ expand = function(args)
+ luasnip.lsp_expand(args.body)
+ end,
+ },
+ mapping = cmp.mapping.preset.insert({
+ ['<C-d>'] = cmp.mapping.scroll_docs(-4),
+ ['<C-f>'] = cmp.mapping.scroll_docs(4),
+ ['<C-Space>'] = cmp.mapping.complete(),
+ ['<CR>'] = cmp.mapping.confirm {
+ behavior = cmp.ConfirmBehavior.Replace,
+ select = true,
+ },
+ ['<Tab>'] = cmp.mapping(function(fallback)
+ if cmp.visible() then
+ cmp.select_next_item()
+ elseif luasnip.expand_or_jumpable() then
+ luasnip.expand_or_jump()
+ else
+ fallback()
+ end
+ end, { 'i', 's' }),
+ ['<S-Tab>'] = cmp.mapping(function(fallback)
+ if cmp.visible() then
+ cmp.select_prev_item()
+ elseif luasnip.jumpable(-1) then
+ luasnip.jump(-1)
+ else
+ fallback()
+ end
+ end, { 'i', 's' }),
+ }),
+ sources = {
+ { name = 'nvim_lsp' },
+ { name = 'luasnip' },
+ },
+}
+EOF
+" }}}
" vim: ft=vim fdm=marker: