From 88e3532a6420752ce8334cada2d838f68ae541d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Kmie=C4=87?= Date: Thu, 27 Jan 2022 22:54:54 +0100 Subject: [PATCH] Nvim: sync development setup from viessmann machine --- .config/nvim/after/plugin/hlslens.rc.vim | 11 ++ .config/nvim/after/plugin/indent.rc.vim | 12 +- .config/nvim/after/plugin/lspconfig.rc.vim | 168 +++++++++++-------- .config/nvim/after/plugin/neoscroll.rc.lua | 13 ++ .config/nvim/after/plugin/nvim-cmp.rc.vim | 4 +- .config/nvim/after/plugin/treesitter.rc.vim | 47 +++++- .config/nvim/after/plugin/ultisnips.rc.vim | 8 +- .config/nvim/after/plugin/vim-test.rc.vim | 7 + .config/nvim/after/plugin/virt-column.rc.vim | 0 .config/nvim/init.vim | 57 ++++--- 10 files changed, 217 insertions(+), 110 deletions(-) create mode 100644 .config/nvim/after/plugin/hlslens.rc.vim create mode 100644 .config/nvim/after/plugin/neoscroll.rc.lua create mode 100644 .config/nvim/after/plugin/vim-test.rc.vim create mode 100644 .config/nvim/after/plugin/virt-column.rc.vim diff --git a/.config/nvim/after/plugin/hlslens.rc.vim b/.config/nvim/after/plugin/hlslens.rc.vim new file mode 100644 index 0000000..f9c5b95 --- /dev/null +++ b/.config/nvim/after/plugin/hlslens.rc.vim @@ -0,0 +1,11 @@ +"noremap n execute('normal! ' . v:count1 . 'n') +" \lua require('hlslens').start() +"noremap N execute('normal! ' . v:count1 . 'N') +" \lua require('hlslens').start() +"noremap * *lua require('hlslens').start() +"noremap # #lua require('hlslens').start() +"noremap g* g*lua require('hlslens').start() +"noremap g# g#lua require('hlslens').start() +" +"" use : instead of +"nnoremap l :noh diff --git a/.config/nvim/after/plugin/indent.rc.vim b/.config/nvim/after/plugin/indent.rc.vim index a7888e6..2e8a123 100644 --- a/.config/nvim/after/plugin/indent.rc.vim +++ b/.config/nvim/after/plugin/indent.rc.vim @@ -1,11 +1,11 @@ lua << EOF --vim.opt.termguicolors = true -vim.cmd [[highlight IndentBlanklineIndent1 guifg=#E06C75 gui=nocombine]] -vim.cmd [[highlight IndentBlanklineIndent2 guifg=#E5C07B gui=nocombine]] -vim.cmd [[highlight IndentBlanklineIndent3 guifg=#98C379 gui=nocombine]] -vim.cmd [[highlight IndentBlanklineIndent4 guifg=#56B6C2 gui=nocombine]] -vim.cmd [[highlight IndentBlanklineIndent5 guifg=#61AFEF gui=nocombine]] -vim.cmd [[highlight IndentBlanklineIndent6 guifg=#C678DD gui=nocombine]] +--vim.cmd [[highlight IndentBlanklineIndent1 guifg=#E06C75 gui=nocombine]] +--vim.cmd [[highlight IndentBlanklineIndent2 guifg=#E5C07B gui=nocombine]] +--vim.cmd [[highlight IndentBlanklineIndent3 guifg=#98C379 gui=nocombine]] +--vim.cmd [[highlight IndentBlanklineIndent4 guifg=#56B6C2 gui=nocombine]] +--vim.cmd [[highlight IndentBlanklineIndent5 guifg=#61AFEF gui=nocombine]] +--vim.cmd [[highlight IndentBlanklineIndent6 guifg=#C678DD gui=nocombine]] --vim.opt.list = true --vim.opt.listchars:append("space:⋅") diff --git a/.config/nvim/after/plugin/lspconfig.rc.vim b/.config/nvim/after/plugin/lspconfig.rc.vim index 17f15cd..95f6c27 100644 --- a/.config/nvim/after/plugin/lspconfig.rc.vim +++ b/.config/nvim/after/plugin/lspconfig.rc.vim @@ -5,114 +5,138 @@ endif " Completion configuration for native neovim + nvim-lspconfig lua << EOF local nvim_lsp = require'lspconfig' +local coq = require'coq' +local cmp = require'cmp_nvim_lsp' +local signature = require'lsp_signature' +local illuminate = require'illuminate' + +-- Mappings. +local opts = { noremap=true, silent=true } +vim.api.nvim_set_keymap('n', 'e', 'lua vim.diagnostic.open_float()', opts) +vim.api.nvim_set_keymap('n', '[d', 'lua vim.diagnostic.goto_prev()', opts) +vim.api.nvim_set_keymap('n', ']d', 'lua vim.diagnostic.goto_next()', opts) +vim.api.nvim_set_keymap('n', 'E', 'lua vim.diagnostic.set_loclist()', opts) +vim.api.nvim_set_keymap("n", "q", "lua vim.lsp.buf.formatting()", 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) - local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end - local function buf_set_option(...) vim.api.nvim_buf_set_option(bufnr, ...) end - --Enable completion triggered by - buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc') + vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc') - -- Mappings. - local opts = { noremap=true, silent=true } + ---- See `:help vim.lsp.*` for documentation on any of the below functions + vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gD', 'lua vim.lsp.buf.declaration()', opts) + vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gd', 'lua vim.lsp.buf.definition()', opts) + vim.api.nvim_buf_set_keymap(bufnr, 'n', 'K', 'lua vim.lsp.buf.hover()', opts) + vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gi', 'lua vim.lsp.buf.implementation()', opts) + vim.api.nvim_buf_set_keymap(bufnr, 'n', '', 'lua vim.lsp.buf.signature_help()', opts) + vim.api.nvim_buf_set_keymap(bufnr, 'n', 'wa', 'lua vim.lsp.buf.add_workspace_folder()', opts) + vim.api.nvim_buf_set_keymap(bufnr, 'n', 'wr', 'lua vim.lsp.buf.remove_workspace_folder()', opts) + vim.api.nvim_buf_set_keymap(bufnr, 'n', 'wl', 'lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))', opts) + vim.api.nvim_buf_set_keymap(bufnr, 'n', 'D', 'lua vim.lsp.buf.type_definition()', opts) + vim.api.nvim_buf_set_keymap(bufnr, 'n', 'rn', 'lua vim.lsp.buf.rename()', opts) + vim.api.nvim_buf_set_keymap(bufnr, 'n', 'ca', 'lua vim.lsp.buf.code_action()', opts) + vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gr', 'lua vim.lsp.buf.references()', opts) - -- See `:help vim.lsp.*` for documentation on any of the below functions - buf_set_keymap('n', 'gD', 'lua vim.lsp.buf.declaration()', opts) - buf_set_keymap('n', 'gd', 'lua vim.lsp.buf.definition()', opts) - buf_set_keymap('n', 'K', 'lua vim.lsp.buf.hover()', opts) - buf_set_keymap('n', 'gi', 'lua vim.lsp.buf.implementation()', opts) - buf_set_keymap('n', '', 'lua vim.lsp.buf.signature_help()', opts) - buf_set_keymap('n', 'wa', 'lua vim.lsp.buf.add_workspace_folder()', opts) - buf_set_keymap('n', 'wr', 'lua vim.lsp.buf.remove_workspace_folder()', opts) - buf_set_keymap('n', 'wl', 'lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))', opts) - buf_set_keymap('n', 'D', 'lua vim.lsp.buf.type_definition()', opts) - buf_set_keymap('n', 'rn', 'lua vim.lsp.buf.rename()', opts) - buf_set_keymap('n', 'ca', 'lua vim.lsp.buf.code_action()', opts) - buf_set_keymap('n', 'gr', 'lua vim.lsp.buf.references()', opts) - buf_set_keymap('n', 'e', 'lua vim.lsp.diagnostic.show_line_diagnostics()', opts) - buf_set_keymap('n', '[d', 'lua vim.lsp.diagnostic.goto_prev()', opts) - buf_set_keymap('n', ']d', 'lua vim.lsp.diagnostic.goto_next()', opts) - buf_set_keymap('n', 'q', 'lua vim.lsp.diagnostic.set_loclist()', opts) - buf_set_keymap("n", "f", "lua vim.lsp.buf.formatting()", opts) - - require('lsp_signature').on_attach({ + signature.on_attach({ bind = true, handler_opts = { border = "single", } }, bufnr) - + illuminate.on_attach(client) end +local signs = { + { name = "DiagnosticSignError", text = "" }, + { name = "DiagnosticSignWarn", text = "" }, + { name = "DiagnosticSignHint", text = "" }, + { name = "DiagnosticSignInfo", text = "" }, + } + + for _, sign in ipairs(signs) do + vim.fn.sign_define(sign.name, { texthl = sign.name, text = sign.text, numhl = "" }) + end + vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with( vim.lsp.diagnostic.on_publish_diagnostics, { signs = { - severity_limit = 'Warning', + active = signs, + --severity_limit = 'info', }, + severity_sort = true, underline = false, update_in_insert = false, - virtual_text = { - spacing = 40, - severity_limit = 'Warning', - }, + --virtual_text = { + -- spacing = 40, + -- severity_limit = 'Warning', + --}, + virtual_text = false, } ) -nvim_lsp.groovyls.setup { +nvim_lsp.groovyls.setup ( + coq.lsp_ensure_capabilities({ cmd = { "java", "-jar", "/home/kmcr/tools/groovy-language-server/build/libs/groovy-language-server-all.jar" }, on_attach = on_attach, on_publish_diagnostics = diagnostic_handler, - capabilities = require('cmp_nvim_lsp').update_capabilities(vim.lsp.protocol.make_client_capabilities()) -} + capabilities = cmp.update_capabilities(vim.lsp.protocol.make_client_capabilities()), + }) +) -nvim_lsp.ccls.setup { - init_options = { - compilationDatabaseDirectory = "."; - index = { - threads = 0; +nvim_lsp.ccls.setup( + coq.lsp_ensure_capabilities({ + init_options = { + compilationDatabaseDirectory = "."; + index = { + threads = 0; + }, + clang = { + excludeArgs = { "-frounding-math"} ; + }, }, - clang = { - excludeArgs = { "-frounding-math"} ; - }, - }, - on_attach = on_attach, - on_publish_diagnostics = diagnostic_handler, - capabilities = require('cmp_nvim_lsp').update_capabilities(vim.lsp.protocol.make_client_capabilities()), - flags = { - debounce_text_changes = 150, - } -} + on_attach = on_attach, + on_publish_diagnostics = diagnostic_handler, + capabilities = cmp.update_capabilities(vim.lsp.protocol.make_client_capabilities()), + flags = { + debounce_text_changes = 150, + }} + ) +) -nvim_lsp.pylsp.setup { - settings = { - pylint = { - enabled = false +nvim_lsp.pylsp.setup( + coq.lsp_ensure_capabilities({ + settings = { + pylint = { + enabled = false + }, + pyflakes = { + enabled = false, + }, }, - pyflakes = { - enabled = false, + flags = { + debounce_text_changes = 150, }, - }, - flags = { - debounce_text_changes = 150, - }, - on_attach = on_attach, - on_publish_diagnostics = diagnostic_handler, - capabilities = require('cmp_nvim_lsp').update_capabilities(vim.lsp.protocol.make_client_capabilities()) -} + on_attach = on_attach, + on_publish_diagnostics = diagnostic_handler, + capabilities = cmp.update_capabilities(vim.lsp.protocol.make_client_capabilities()), + }) +) -- Use a loop to conveniently call 'setup' on multiple servers and -- map buffer local keybindings when the language server attaches local servers = { "cmake", "rust_analyzer" } for _, lsp in ipairs(servers) do - nvim_lsp[lsp].setup { - on_attach = on_attach, - on_publish_diagnostics = diagnostic_handler, - capabilities = require('cmp_nvim_lsp').update_capabilities(vim.lsp.protocol.make_client_capabilities()), - flags = { - debounce_text_changes = 150, + nvim_lsp[lsp].setup( + coq.lsp_ensure_capabilities({ + on_attach = on_attach, + on_publish_diagnostics = diagnostic_handler, + capabilities = cmp.update_capabilities(vim.lsp.protocol.make_client_capabilities()), + flags = { + debounce_text_changes = 150, + } } - } + ) +) end EOF diff --git a/.config/nvim/after/plugin/neoscroll.rc.lua b/.config/nvim/after/plugin/neoscroll.rc.lua new file mode 100644 index 0000000..5b86db6 --- /dev/null +++ b/.config/nvim/after/plugin/neoscroll.rc.lua @@ -0,0 +1,13 @@ +-- require('neoscroll').setup({ +-- -- All these keys will be mapped to their corresponding default scrolling animation +-- mappings = {'', '', '', '', +-- '', '', 'zt', 'zz', 'zb'}, +-- hide_cursor = true, -- Hide cursor while scrolling +-- stop_eof = true, -- Stop at when scrolling downwards +-- use_local_scrolloff = false, -- Use the local scope of scrolloff instead of the global scope +-- respect_scrolloff = false, -- Stop scrolling when the cursor reaches the scrolloff margin of the file +-- cursor_scrolls_alone = true, -- The cursor will keep on scrolling even if the window cannot scroll further +-- easing_function = nil, -- Default easing function +-- pre_hook = nil, -- Function to run before the scrolling animation starts +-- post_hook = nil, -- Function to run after the scrolling animation ends +-- }) diff --git a/.config/nvim/after/plugin/nvim-cmp.rc.vim b/.config/nvim/after/plugin/nvim-cmp.rc.vim index ee476d2..6115f05 100644 --- a/.config/nvim/after/plugin/nvim-cmp.rc.vim +++ b/.config/nvim/after/plugin/nvim-cmp.rc.vim @@ -22,8 +22,8 @@ cmp.setup({ [''] = cmp.mapping(cmp.mapping.complete(), { 'i', 'c' }), [''] = cmp.mapping.confirm({ select = true }), [''] = cmp.mapping({ - i = cmp.mapping.abort(), - c = cmp.mapping.close(), + i = cmp.mapping.abort(), + c = cmp.mapping.close(), }), }, sources = cmp.config.sources({ diff --git a/.config/nvim/after/plugin/treesitter.rc.vim b/.config/nvim/after/plugin/treesitter.rc.vim index bda8df3..6232c41 100644 --- a/.config/nvim/after/plugin/treesitter.rc.vim +++ b/.config/nvim/after/plugin/treesitter.rc.vim @@ -1,11 +1,12 @@ " Tree-sitter configuration lua < boolean + max_file_lines = nil, -- Do not enable for files with more than n lines, int + -- colors = {}, -- table of hex strings + -- termcolors = {} -- table of colour name strings + }, + textobjects = { + swap = { + enable = true, + swap_next = { + ["tan"] = "@parameter.inner", + }, + swap_previous = { + ["tap"] = "@parameter.inner", + }, + }, + }, } -vim.opt.foldmethod = "expr" -vim.opt.foldexpr = "nvim_treesitter#foldexpr()" +--vim.opt.foldmethod = "expr" +--vim.opt.foldexpr = "nvim_treesitter#foldexpr()" EOF diff --git a/.config/nvim/after/plugin/ultisnips.rc.vim b/.config/nvim/after/plugin/ultisnips.rc.vim index 9b02fef..ef76fac 100644 --- a/.config/nvim/after/plugin/ultisnips.rc.vim +++ b/.config/nvim/after/plugin/ultisnips.rc.vim @@ -1,8 +1,8 @@ " Set completeopt to have a better completion experience -set completeopt=menuone,noinsert,noselect +"set completeopt=menuone,noinsert,noselect let g:completion_enable_snippet = 'UltiSnips' iunmap -imap =UltiSnips#ExpandSnippet() +"map =UltiSnips#ExpandSnippet() "let g:UltiSnipsExpandTrigger="" -let g:UltiSnipsJumpForwardTrigger="n" -let g:UltiSnipsJumpBackwardTrigger="p" +let g:UltiSnipsJumpForwardTrigger="" +let g:UltiSnipsJumpBackwardTrigger="" diff --git a/.config/nvim/after/plugin/vim-test.rc.vim b/.config/nvim/after/plugin/vim-test.rc.vim new file mode 100644 index 0000000..905ddac --- /dev/null +++ b/.config/nvim/after/plugin/vim-test.rc.vim @@ -0,0 +1,7 @@ +nmap tn :TestNearest +nmap tf :TestFile +nmap ts :TestSuite +nmap tl :TestLast +nmap tv :TestVisit + +let test#strategy = "floaterm" diff --git a/.config/nvim/after/plugin/virt-column.rc.vim b/.config/nvim/after/plugin/virt-column.rc.vim new file mode 100644 index 0000000..e69de29 diff --git a/.config/nvim/init.vim b/.config/nvim/init.vim index 922766c..4fc2f99 100644 --- a/.config/nvim/init.vim +++ b/.config/nvim/init.vim @@ -14,15 +14,26 @@ call plug#begin('~/.config/nvim/plugins') " Code development helpers {{{ Plug 'neovim/nvim-lspconfig' Plug 'ray-x/lsp_signature.nvim' -Plug 'SirVer/ultisnips' | Plug 'honza/vim-snippets' +Plug 'RRethy/vim-illuminate' + +" main one +Plug 'ms-jpq/coq_nvim', {'branch': 'coq'} +" 9000+ Snippets +Plug 'ms-jpq/coq.artifacts', {'branch': 'artifacts'} +Plug 'ms-jpq/coq.thirdparty', {'branch': '3p'} + Plug 'wellle/context.vim' -Plug 'dbeniamine/cheat.sh-vim' +"Plug 'dbeniamine/cheat.sh-vim' Plug 'puremourning/vimspector' -Plug 'derekwyatt/vim-fswitch' -Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'} -Plug 'vim-test/vim-test' +"Plug 'vim-test/vim-test' Plug 'lukas-reineke/indent-blankline.nvim' Plug 'liuchengxu/vista.vim' + +Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'} +Plug 'nvim-treesitter/playground' +Plug 'p00f/nvim-ts-rainbow' +Plug 'nvim-treesitter/nvim-treesitter-textobjects' +Plug 'cdelledonne/vim-cmake' " }}} " Completion {{{ @@ -32,11 +43,14 @@ Plug 'hrsh7th/cmp-buffer' Plug 'hrsh7th/cmp-path' Plug 'hrsh7th/cmp-cmdline' Plug 'hrsh7th/cmp-calc' +Plug 'joshzcold/cmp-jenkinsfile' Plug 'petertriho/cmp-git' +Plug 'SirVer/ultisnips' | Plug 'honza/vim-snippets' Plug 'quangnguyen30192/cmp-nvim-ultisnips' " }}} " Files switch, jump and grep-like tools {{{ +Plug 'derekwyatt/vim-fswitch' Plug 'Shougo/defx.nvim', { 'do': ':UpdateRemotePlugins' } Plug 'junegunn/fzf' | Plug 'junegunn/fzf.vim' Plug 'nvim-lua/popup.nvim' @@ -45,25 +59,24 @@ Plug 'nvim-lua/plenary.nvim' "Plug 'fhill2/telescope-ultisnips.nvim' Plug 'inside/vim-search-pulse' Plug 'wellle/targets.vim' -Plug 'voldikss/vim-floaterm' -Plug 'kevinhwang91/nvim-hlslens' -Plug 'camspiers/lens.vim' +"Plug 'voldikss/vim-floaterm' +"Plug 'kevinhwang91/nvim-hlslens' +"Plug 'camspiers/lens.vim' +"Plug 'karb94/neoscroll.nvim' " }}} " Git integration {{{ Plug 'tpope/vim-fugitive' -Plug 'mhinz/vim-signify' " Mark edited lines - faster gitgutter +"Plug 'mhinz/vim-signify' " Mark edited lines - faster gitgutter Plug 'APZelos/blamer.nvim' " }}} " Support for random filetypes {{{ -"Plug 'masukomi/vim-markdown-folding' "Plug 'weirongxu/plantuml-previewer.vim' | -"Plug 'plasticboy/vim-markdown' Plug 'kergoth/vim-bitbake' " Bitbake templates and syntax -Plug 'pboettch/vim-cmake-syntax' Plug 'aklt/plantuml-syntax' Plug 'iamcco/markdown-preview.nvim', { 'do': { -> mkdp#util#install() }, 'for': ['markdown', 'vim-plug']} +"Plug 'vim-pandoc/vim-pandoc' Plug 'chrisbra/csv.vim' " }}} @@ -71,9 +84,9 @@ Plug 'chrisbra/csv.vim' "Plug 'MortenStabenau/matlab-vim' Plug 'junegunn/goyo.vim' Plug 'lukas-reineke/virt-column.nvim' -Plug 'jez/vim-superman' "vman application +"Plug 'jez/vim-superman' "vman application Plug 'glacambre/firenvim' -Plug 'JMcKiern/vim-shoot' +"Plug 'JMcKiern/vim-shoot' " }}} " Note taking {{{ @@ -87,11 +100,14 @@ Plug 'jaredgorski/spacecamp' Plug 'lifepillar/vim-gruvbox8' Plug 'dylanaraps/wal' Plug 'vim-airline/vim-airline' | Plug 'vim-airline/vim-airline-themes' +Plug 'tanvirtin/monokai.nvim' +Plug 'marko-cerovac/material.nvim' " }}} " call plug#end() set termguicolors +set shell=bash if plug_install PlugInstall --sync @@ -111,7 +127,8 @@ set colorcolumn=80 set background=dark "colorscheme wal -colorscheme gruvbox8 +let g:material_style = "deep ocean" +colorscheme material highlight MatchParen cterm=underline ctermbg=black ctermfg=NONE highlight VirtColumn ctermfg=DarkGrey ctermbg=NONE set listchars=tab:▸\ ,trail:¬ @@ -119,9 +136,10 @@ set list hi clear SpellBad hi SpellBad cterm=underline -set tabstop=4 -set shiftwidth=4 -set softtabstop=4 +set tabstop=2 +set shiftwidth=2 +set softtabstop=2 + set expandtab set ignorecase @@ -153,11 +171,12 @@ set undodir=~/.cache/nvim/undo/ set undofile "let mapleader = "\\" -map +nmap inoremap jj inoremap jk inoremap :w :w +nnoremap Q q " Reselect visual block after incrementing/decrementing vnoremap gv