From 0cc7b1ad9057f9629e16b151baa0d1baede6d750 Mon Sep 17 00:00:00 2001 From: tiyn Date: Fri, 13 Jan 2023 04:03:00 +0100 Subject: [PATCH] nvim: switched to init.lua --- .config/nvim/init.lua | 74 ++++ .config/nvim/init.vim | 457 ------------------------- .config/nvim/lua/colorscheme.lua | 6 + .config/nvim/lua/filetype.lua | 138 ++++++++ .config/nvim/lua/keymap.lua | 79 +++++ .config/nvim/lua/loadplugins.lua | 75 ++++ .config/nvim/plugin/lightline.lua | 2 + .config/nvim/plugin/neotex.lua | 2 + .config/nvim/plugin/nerdtree.lua | 2 + .config/nvim/plugin/nvim-cmp.lua | 115 +++++++ .config/nvim/plugin/nvim-colorizer.lua | 2 + .config/nvim/plugin/rainbow.lua | 2 + .config/nvim/plugin/vim-go.lua | 2 + .config/nvim/plugin/vim-markdown.lua | 3 + 14 files changed, 502 insertions(+), 457 deletions(-) create mode 100644 .config/nvim/init.lua delete mode 100644 .config/nvim/init.vim create mode 100644 .config/nvim/lua/colorscheme.lua create mode 100644 .config/nvim/lua/filetype.lua create mode 100644 .config/nvim/lua/keymap.lua create mode 100644 .config/nvim/lua/loadplugins.lua create mode 100644 .config/nvim/plugin/lightline.lua create mode 100644 .config/nvim/plugin/neotex.lua create mode 100644 .config/nvim/plugin/nerdtree.lua create mode 100644 .config/nvim/plugin/nvim-cmp.lua create mode 100644 .config/nvim/plugin/nvim-colorizer.lua create mode 100644 .config/nvim/plugin/rainbow.lua create mode 100644 .config/nvim/plugin/vim-go.lua create mode 100644 .config/nvim/plugin/vim-markdown.lua diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua new file mode 100644 index 0000000..4a4e0dc --- /dev/null +++ b/.config/nvim/init.lua @@ -0,0 +1,74 @@ +vim.o.go = 'a' +vim.o.showmode = false + +-- enable mouse for all modes +vim.o.mouse = 'a' +vim.o.clipboard = 'unnamedplus' + +-- setting Tab-length +vim.o.expandtab = true +vim.o.softtabstop = 4 +vim.o.shiftwidth = 4 + +-- splits open at the bottom and right +vim.o.splitbelow = true +vim.o.splitright = true + +-- disable case sensitive matching +vim.o.ignorecase = true + +-- enable nocompatible mode +vim.o.nocompatible = true + +-- enable syntax highlighting +vim.o.syntax = true + +-- enable true colors +vim.o.termguicolors = true + +-- set utf-8 encoding +vim.o.encoding = "utf-8" + +-- show relative numbers on left side +vim.o.number = true +vim.o.relativenumber = true + +-- speedup vim with long lines +vim.o.ttyfast = true +vim.o.lazyredraw = true + +-- textEdit might fail without hidden +vim.o.hidden = true + +-- disable Backupfiles for Lsp +vim.o.nobackup = true +vim.o.nowritebackup = true + +-- always show the signcolumn +vim.o.signcolumn = "yes" + +-- enable persistent undo +vim.o.undofile = true +vim.o.undodir = vim.env.XDG_CACHE_HOME .. "/vim/undo" + +-- delete trailing whitespaces on save +vim.api.nvim_create_autocmd({'BufWritePre'}, +{pattern = {'*'}, +command = [[%s/\s\+$//e]], +}) + +-- python programs to use +vim.g.python_host_prog = '/usr/bin/python2' +vim.g.python3_host_prog = '/usr/bin/python3' + +-- load filetype specific mappings and commands +require('filetype') + +-- load general mapped keys +require('keymap') + +-- load general colorscheme +require('colorscheme') + +-- load plugins (autoload all files in plugin folder) +require('loadplugins') diff --git a/.config/nvim/init.vim b/.config/nvim/init.vim deleted file mode 100644 index 20c54d0..0000000 --- a/.config/nvim/init.vim +++ /dev/null @@ -1,457 +0,0 @@ -let mapleader ="," - -""" Begin Plugin section -if ! filereadable(expand('~/.config/nvim/autoload/plug.vim')) - echo "Downloading junegunn/vim-plug to manage plugins..." - silent !mkdir -p ~/.config/nvim/autoload/ - silent !curl "https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim" > ~/.config/nvim/autoload/plug.vim - autocmd VimEnter * PlugInstall -endif - -call plug#begin('~/.local/share/nvim/plugged') -Plug 'airblade/vim-gitgutter' " git upgrades -Plug 'alvan/vim-closetag' " auto close HTML tags -Plug 'donRaphaco/neotex' , {'for': 'tex'} " asynchronous pdf rendering for pdf -Plug 'fatih/vim-go' , {'for': 'go'} " better support for golang -Plug 'godlygeek/tabular', {'for': 'md'} " needed for preservim/vim-markdown -Plug 'hrsh7th/cmp-buffer' " autocompletion bridge for buffer -Plug 'hrsh7th/cmp-path' " autocompletion bridge for filesystem -Plug 'hrsh7th/nvim-cmp' " autocompletion -Plug 'hrsh7th/cmp-nvim-lsp' " autocompletion bridge to lsp -Plug 'itchyny/lightline.vim' " fancy statusline -Plug 'junegunn/fzf.vim' " quickly jump files using fzf -Plug 'l3mon4d3/luasnip' " snippet support -Plug 'luochen1990/rainbow' " colorized matching brackets -Plug 'majutsushi/tagbar', {'on': 'TagbarToggle'} " show tags -Plug 'mattesgroeger/vim-bookmarks' " Set bookmarks -Plug 'neovim/nvim-lspconfig' " Language server client -Plug 'onsails/lspkind-nvim' " icons on completion -Plug 'preservim/vim-markdown', {'for': 'md'} " markdown enhancements -Plug 'qpkorr/vim-renamer' " bulk renamer -Plug 'raimondi/delimitmate' " automatic closing of brackets -Plug 'rrethy/vim-hexokinase' , {'do': 'make hexokinase'} " color Preview -Plug 'ryanoasis/vim-devicons' " enable icons for vim -Plug 'saadparwaiz1/cmp_luasnip' " add snippets from luasnips to cmp -Plug 'scrooloose/nerdtree', {'on': 'NERDTreeToggle'} " filetree -Plug 'tiyn/vim-tccs' " custom colorscheme -Plug 'tpope/vim-fugitive' " git wrapper -Plug 'tpope/vim-surround' " help for quotes/parantheses -Plug 'uiiaoo/java-syntax.vim' , {'for': 'java'} " better syntax highlight for java than default -Plug 'zah/nim.vim' , {'for': 'nim'} " highlighting for nim -call plug#end() - -" alvan/vim-closetag -let g:closetag_filenames = '*.html,*.xhtml,*.phtml' -let g:closetag_xhtml_filenames = '*.xhtml,*.jsx' -let g:closetag_filetypes = 'html,xhtml,phtml' -let g:closetag_xhtml_filetypes = 'xhtml,jsx' -let g:closetag_emptyTags_caseSensitive = 1 -let g:closetag_regions = { - \ 'typescript.tsx': 'jsxRegion,tsxRegion', - \ 'javascript.jsx': 'jsxRegion', - \ } -let g:closetag_shortcut = '>' -let g:closetag_close_shortcut = '>' - -" donRaphaco/neotex -let g:neotex_enabled = 2 - -" fatih/vim-go -let g:go_def_mapping_enabled = 0 - -" itchyny/lightline.vim -let g:lightline = { 'colorscheme': 'tccs'} - -" junegunn/fzf.vim -let $FZF_DEFAULT_COMMAND = 'find . ~ -type f' -nmap :FZF - -" luochen1990/rainbow -let g:rainbow_active = 1 -let g:rainbow_conf = { -\ 'guifgs': ['royalblue3', 'darkorange3', 'seagreen3', 'firebrick'], -\ 'ctermfgs': ['lightblue', 'lightyellow', 'lightcyan', 'lightmagenta'], -\ 'guis': [''], -\ 'cterms': [''], -\ 'operators': '_,_', -\ 'parentheses': ['start=/(/ end=/)/ fold', 'start=/\[/ end=/\]/ fold', 'start=/{/ end=/}/ fold'], -\ 'separately': { -\ '*': {}, -\ 'markdown': { -\ 'parentheses_options': 'containedin=markdownCode contained', -\ }, -\ 'lisp': { -\ 'guifgs': ['royalblue3', 'darkorange3', 'seagreen3', 'firebrick', 'darkorchid3'], -\ }, -\ 'haskell': { -\ 'parentheses': ['start=/(/ end=/)/ fold', 'start=/\[/ end=/\]/ fold', 'start=/\v\{\ze[^-]/ end=/}/ fold'], -\ }, -\ 'vim': { -\ 'parentheses_options': 'containedin=vimFuncBody', -\ }, -\ 'perl': { -\ 'syn_name_prefix': 'perlBlockFoldRainbow', -\ }, -\ 'stylus': { -\ 'parentheses': ['start=/{/ end=/}/ fold contains=@colorableGroup'], -\ }, -\ 'css': 0, -\ } -\} - -" majutsushi/tagbar -map :TagbarToggle - -" mattesgroeger/vim-bookmarks -let g:bookmark_no_default_key_mappings = 1 -nmap mm BookmarkToggle -nmap ma BookmarkAnnotate -nmap ms BookmarkShowAll -nmap mn BookmarkNext -nmap mp BookmarkPrev -nmap mc BookmarkClear -highlight BookmarkSign ctermbg=NONE ctermfg=160 -highlight BookmarkLine ctermbg=194 ctermfg=NONE -let g:bookmark_sign = 'B' -let g:bookmark_highlight_lines = 1 - -" hrsh7th/nvim-cmp -lua << EOF --- Add additional capabilities supported by nvim-cmp -capabilities = require("cmp_nvim_lsp").default_capabilities() - --- Set completeopt to have a better completion experience -vim.o.completeopt = 'menuone,noselect' - --- nvim-cmp setup -local cmp = require("cmp") -local luasnip = require("luasnip") -local lspkind = require("lspkind") -cmp.setup { - snippet = { - expand = function(args) - luasnip.lsp_expand(args.body) - end, - }, - mapping = { - [''] = 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" }), - [''] = 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" }), - [''] = cmp.mapping.close(), - [''] = cmp.mapping.confirm { - behavior = cmp.ConfirmBehavior.Replace, - select = true, - }}, - sources = { - { name = 'nvim_lsp' }, - { name = 'path' }, - { name = 'buffer' }, - { name = 'luasnip' }, - }, - formatting = { - format = lspkind.cmp_format({ - mode = "symbol_text", - preset = "codicons", - maxwidth = 50, - menu = { - nvim_lsp = "[LSP]", - path = "[PATH]", - buffer = "[BUF]", - luasnip = "[SNIP]", - }, - symbol_map = { - Text = "", - Method = "", - Function = "", - Constructor = "", - Field = "ﰠ", - Variable = "", - Class = "ﴯ", - Interface = "", - Module = "", - Property = "ﰠ", - Unit = "塞", - Value = "", - Enum = "", - Keyword = "", - Snippet = "", - Color = "", - File = "", - Reference = "", - Folder = "", - EnumMember = "", - Constant = "", - Struct = "פּ", - Event = "", - Operator = "", - TypeParameter = "" - }, - }), - }, -} - -require("luasnip.loaders.from_snipmate").lazy_load() -EOF - -" neovim/nvim-lspconfig -lua << EOF -local nvim_lsp = require('lspconfig') - --- 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 - - -- Mappings. - local opts = { noremap=true, silent=true } - - -- 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', 'gy', 'lua vim.lsp.buf.type_definition()', opts) - buf_set_keymap('n', 'gi', 'lua vim.lsp.buf.implementation()', opts) - buf_set_keymap('n', 'gr', 'lua vim.lsp.buf.references()', opts) - buf_set_keymap('n', 'K', 'lua vim.lsp.buf.hover()', opts) - buf_set_keymap('n', '', 'lua vim.lsp.buf.rename()', opts) - -end - --- Use a loop to conveniently call 'setup' on multiple servers and --- map buffer local keybindings when the language server attaches -local servers = { "pyright", "bashls", "tsserver", "texlab", "ccls", "gopls", "hls", "nimls", "marksman" } -for _, lsp in ipairs(servers) do - nvim_lsp[lsp].setup { - on_attach=on_attach, - capabilities=capabilities, - flags = { - debounce_text_changes = 150 - } - } -end - - -require'lspconfig'.jdtls.setup{ - on_attach=on_attach, - flags = { - debounce_text_changes = 150 - }, - cmd = { 'jdtls' } - } - -EOF - -" preservim/vim-markdown - -let g:vim_markdown_folding_style_pythonic = 1 -let g:vim_markdown_folding_disabled = 1 - -" rrethy/vim-hexokinase -let g:Hexokinase_refreshEvents = ['InsertLeave'] -let g:Hexokinase_optInPatterns = [ - \ 'full_hex', - \ 'triple_hex', - \ 'rgb', - \ 'rgba', - \ 'hsl', - \ 'hsla', - \ 'color_names' - \] - -let g:Hexokinase_highlighters = ['backgroundfull'] -autocmd VimEnter * HexokinaseTurnOn - -" scrooloose/nerdtree -map :NERDTreeToggle -autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif -let g:NERDTreeWinPos = "left" - -" tpope/vim-fugitive -nnoremap ga :Git add %:p -nnoremap gd :Git diff -nnoremap gc :Gcommit -nnoremap go :Git checkout -nnoremap gh :diffget //3 -nnoremap gr :Gread -nnoremap gu :diffget //2 -nnoremap gs :G - -""" end plugin section - -set go=a -set noshowmode - -" enable mouse for all modes -set mouse=a -set clipboard+=unnamedplus - -" setting Tab-length -set expandtab -set softtabstop=4 -set shiftwidth=4 - -" splits open at the bottom and right, which is non-retarded, unlike vim defaults. -set splitbelow splitright - -" disable case sensitive matching -set ignorecase - -" enable nocompatible mode -set nocompatible - -" enable Plugins -filetype plugin on - -" enable syntax highlighting -syntax on - -" enable true colors -set termguicolors - -" set utf-8 encoding -set encoding=utf-8 - -" show relative numbers on left side -set number relativenumber - -" speedup vim with long lines -set ttyfast -set lazyredraw - -" textEdit might fail without hidden -set hidden - -" disable Backupfiles for Lsp -set nobackup -set nowritebackup - -" always show the signcolumn, otherwise it would shift the text each time -" diagnostics appear/become resolved. -if has("patch-8.1.1564") - " Recently vim can merge signcolumn and number column into one - set signcolumn=number -else - set signcolumn=yes -endif - -" enable persistent undo -if has('persistent_undo') - set undofile - set undodir=$XDG_CACHE_HOME/vim/undo -endif - -" unmap unwanted commands -nnoremap -nnoremap -nnoremap -nnoremap -nnoremap - -inoremap -inoremap -inoremap -inoremap -inoremap -inoremap -inoremap -inoremap -inoremap -inoremap -inoremap - -" mapping Dictionaries -nnoremap :setlocal spell! spelllang=de_de -nnoremap :setlocal spell! spelllang=en_us - -" compiler for languages -nnoremap c :w! \| !compiler % - -" open corresponding file (pdf/html/...) -nnoremap p :!opout % - -" shortcut for split navigation -nnoremap h -nnoremap j -nnoremap k -nnoremap l - -" save file as sudo on files that require root permission -cnoremap w!! execute 'silent! write !sudo tee % >/dev/null' edit! - -" alias for replacing -nnoremap ss :%s//gI - -" delete trailing whitespaces on save -fun! TrimWhitespace() - let l:save = winsaveview() - keeppatterns %s/\s\+$//e - call winrestview(l:save) -endfun -autocmd BufWritePre * :call TrimWhitespace() - -" read files correctly -autocmd BufRead,BufNewFile *.h set filetype=c -autocmd BufRead,BufNewFile *.html set filetype=html -autocmd BufRead,BufNewFile *.nim set filetype=nim -autocmd BufRead,BufNewFile *.py set filetype=python -autocmd BufRead,BufNewFile *.tex set filetype=tex - -" formatting options -autocmd FileType java setlocal shiftwidth=2 softtabstop=2 -autocmd FileType javascript setlocal shiftwidth=2 softtabstop=2 -autocmd FileType markdown setlocal shiftwidth=2 softtabstop=2 - -" formatting programs -autocmd FileType c setlocal formatprg=astyle\ --mode=c\ --style=ansi -autocmd FileType c noremap gggqG -autocmd FileType html noremap :silent %!tidy -q -i --show-errors 0 -autocmd FileType java setlocal formatprg=astyle\ --indent=spaces=2\ --style=google -autocmd FileType java noremap gggqG -autocmd FileType markdown noremap :silent %!prettier --stdin-filepath % -autocmd FileType nim noremap :silent !nimpretty % -autocmd FileType python setlocal formatprg=autopep8\ - -autocmd FileType python noremap gggqG -autocmd FileType tex,latex setlocal formatprg=latexindent\ - -autocmd FileType tex,latex noremap gggqG - -" cleanup certain files after leaving the editor -autocmd VimLeave *.c !cclear -autocmd VimLeave *.tex !texclear % - -" highlighting break line -autocmd BufEnter,FileType c set colorcolumn=80 -autocmd BufEnter,FileType java set colorcolumn=100 -autocmd BufEnter,FileType markdown set colorcolumn=80 -autocmd BufEnter,FileType nim set colorcolumn=80 -autocmd BufEnter,FileType python set colorcolumn=80 -autocmd BufEnter,FileType tex set colorcolumn=80 - -" conceallevel -autocmd BufEnter,FileType markdown set conceallevel=2 - -"" colorscheme -set background=dark -colorscheme tccs -highlight colorcolumn guibg=#772222 - -" python -let g:python_host_prog = "/usr/bin/python2" -let g:python3_host_prog = "/usr/bin/python3" - -" irc compatibility to interactive -nnoremap is :.w >> indd diff --git a/.config/nvim/lua/colorscheme.lua b/.config/nvim/lua/colorscheme.lua new file mode 100644 index 0000000..3935f20 --- /dev/null +++ b/.config/nvim/lua/colorscheme.lua @@ -0,0 +1,6 @@ +-- colorscheme + +-- basic color settings +vim.o.background = 'dark' +vim.cmd('colorscheme tccs') +vim.api.nvim_set_hl(0, 'colorcolumn', {bg='#772222'}) diff --git a/.config/nvim/lua/filetype.lua b/.config/nvim/lua/filetype.lua new file mode 100644 index 0000000..2709f94 --- /dev/null +++ b/.config/nvim/lua/filetype.lua @@ -0,0 +1,138 @@ +-- filetype + +-- read files correctly +vim.filetype.add({ +pattern = { + ['.*.lua'] = 'lua', + ['.*.h'] = 'c', + ['.*.html'] = 'html', + ['.*.nim'] = 'nim', + ['.*.py'] = 'python', + ['.*.tex'] = 'tex', +}}) + +-- formatting options +vim.api.nvim_create_autocmd({'FileType'}, +{pattern = {'markdown'}, +command = 'setlocal shiftwidth=2 softtabstop=2', +}) + +vim.api.nvim_create_autocmd({'FileType'}, +{pattern = {'java'}, +command = 'setlocal shiftwidth=2 softtabstop=2', +}) + +vim.api.nvim_create_autocmd({'FileType'}, +{pattern = {'javascript'}, +command = 'setlocal shiftwidth=2 softtabstop=2', +}) + +-- formatting programs +vim.api.nvim_create_autocmd({'FileType'}, +{pattern = {'c'}, +command = 'setlocal formatprg=astyle --mode=c --style=ansi', +}) + +vim.api.nvim_create_autocmd({'FileType'}, +{pattern = {'c'}, +command = 'noremap gggqG', +}) + +vim.api.nvim_create_autocmd({'FileType'}, +{pattern = {'html'}, +command = 'noremap :silent %!tidy -q -i --show-errors 0 ', +}) + +vim.api.nvim_create_autocmd({'FileType'}, +{pattern = {'java'}, +command = 'setlocal formatprg=astyle --indent=spaces=2 --style=google', +}) + +vim.api.nvim_create_autocmd({'FileType'}, +{pattern = {'java'}, +command = 'noremap gggqG', +}) + +vim.api.nvim_create_autocmd({'FileType'}, +{pattern = {'markdown'}, +command = 'noremap :silent %!prettier --stdin-filepath % ', +}) + +vim.api.nvim_create_autocmd({'FileType'}, +{pattern = {'nim'}, +command = 'noremap :silent !nimpretty %', +}) + +vim.api.nvim_create_autocmd({'FileType'}, +{pattern = {'nim'}, +command = 'noremap gggqG', +}) + +vim.api.nvim_create_autocmd({'FileType'}, +{pattern = {'python'}, +command = 'setlocal formatprg=autopep8 "%"', +}) + +vim.api.nvim_create_autocmd({'FileType'}, +{pattern = {'python'}, +command = 'noremap gggqG', +}) + +vim.api.nvim_create_autocmd({'FileType'}, +{pattern = {'tex', 'latex'}, +command = 'setlocal formatprg=latexindent', +}) + +vim.api.nvim_create_autocmd({'FileType'}, +{pattern = {'tex', 'latex'}, +command = 'noremap gggqG', +}) + +-- cleanup certain files after leaving the editor +vim.api.nvim_create_autocmd({'VimLeave'}, +{pattern = {'*.c'}, +command = '!cclear' +}) + +vim.api.nvim_create_autocmd({'VimLeave'}, +{pattern = {'*.tex'}, +command = '!texclear %' +}) + +-- highlighting break line +vim.api.nvim_create_autocmd({'BufEnter', 'FileType'}, +{pattern = {'c'}, +command = 'set colorcolumn=80' +}) + +vim.api.nvim_create_autocmd({'BufEnter', 'FileType'}, +{pattern = {'java'}, +command = 'set colorcolumn=100' +}) + +vim.api.nvim_create_autocmd({'BufEnter', 'FileType'}, +{pattern = {'markdown'}, +command = 'set colorcolumn=80' +}) + +vim.api.nvim_create_autocmd({'BufEnter', 'FileType'}, +{pattern = {'nim'}, +command = 'set colorcolumn=80' +}) + +vim.api.nvim_create_autocmd({'BufEnter', 'FileType'}, +{pattern = {'python'}, +command = 'set colorcolumn=80' +}) + +vim.api.nvim_create_autocmd({'BufEnter', 'FileType'}, +{pattern = {'tex'}, +command = 'set colorcolumn=80' +}) + +-- conceallevel +vim.api.nvim_create_autocmd({'BufEnter', 'FileType'}, +{pattern = {'markdown'}, +command = 'set conceallevel=2' +}) + diff --git a/.config/nvim/lua/keymap.lua b/.config/nvim/lua/keymap.lua new file mode 100644 index 0000000..458b55c --- /dev/null +++ b/.config/nvim/lua/keymap.lua @@ -0,0 +1,79 @@ +-- keymap + +-- set mapleader for hotkeys +vim.g.mapleader = "," + +-- shortcut for split navigation +vim.api.nvim_set_keymap('n', '', 'h', {noremap = true}) +vim.api.nvim_set_keymap('n', '', 'j', {noremap = true}) +vim.api.nvim_set_keymap('n', '', 'k', {noremap = true}) +vim.api.nvim_set_keymap('n', '', 'l', {noremap = true}) + +-- unmap unwanted commands +vim.api.nvim_set_keymap('n', '', '', {noremap = true}) +vim.api.nvim_set_keymap('n', '', '', {noremap = true}) +vim.api.nvim_set_keymap('n', '', '', {noremap = true}) +vim.api.nvim_set_keymap('n', '', '', {noremap = true}) +vim.api.nvim_set_keymap('n', '', '', {noremap = true}) +vim.api.nvim_set_keymap('n', '', '', {noremap = true}) +vim.api.nvim_set_keymap('i', '', '', {noremap = true}) +vim.api.nvim_set_keymap('i', '', '', {noremap = true}) +vim.api.nvim_set_keymap('i', '', '', {noremap = true}) +vim.api.nvim_set_keymap('i', '', '', {noremap = true}) +vim.api.nvim_set_keymap('i', '', '', {noremap = true}) +vim.api.nvim_set_keymap('i', '', '', {noremap = true}) +vim.api.nvim_set_keymap('i', '', '', {noremap = true}) +vim.api.nvim_set_keymap('i', '', '', {noremap = true}) +vim.api.nvim_set_keymap('i', '', '', {noremap = true}) +vim.api.nvim_set_keymap('i', '', '', {noremap = true}) +vim.api.nvim_set_keymap('i', '', '', {noremap = true}) + +-- mapping Dictionaries +vim.api.nvim_set_keymap('n', '', ':setlocal spell! spelllang=de_de', {noremap = true}) +vim.api.nvim_set_keymap('n', '', ':setlocal spell! spelllang=en_us', {noremap = true}) + +-- compiler for languages +vim.api.nvim_set_keymap('n', 'c', ':w! | !compiler %', {noremap = true}) + +-- open corresponding file (pdf/html/...) +vim.api.nvim_set_keymap('n', 'p', ':!opout %', {noremap = true}) + + +-- save file as sudo on files that require root permission +vim.api.nvim_set_keymap('c', 'w!!', '"silent! write !sudo tee % >/dev/null" edit!', {noremap = true}) + + +-- alias for replacing +vim.api.nvim_set_keymap('n', 'ss', ':%s//gI', {noremap = true}) + +-- irc compatibility for interactivity +vim.api.nvim_set_keymap('n', 'is', ':.w >> indd', {noremap = true}) + +-- majutsushi/tagbar +vim.api.nvim_set_keymap('n', '', ':TagbarToggle', {}) + +-- scrooloose/nerdtree +vim.api.nvim_set_keymap('n', '', ':NERDTreeToggle', {}) + +-- tpope/vim-fugitive +vim.api.nvim_set_keymap('n', 'ga', ':Git add %:p', { noremap = true }) +vim.api.nvim_set_keymap('n', 'gd', ':Git diff', { noremap = true }) +vim.api.nvim_set_keymap('n', 'gc', ':Git commit', { noremap = true }) +vim.api.nvim_set_keymap('n', 'gh', ':diffget //3', { noremap = true }) +vim.api.nvim_set_keymap('n', 'gr', ':Gread', { noremap = true }) +vim.api.nvim_set_keymap('n', 'gu', ':diffget //2', { noremap = true }) +vim.api.nvim_set_keymap('n', 'gs', ':G', { noremap = true }) + +-- hrsh7th/nvim-cmp +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 + local opts = { noremap=true, silent=true } + 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', 'gy', 'lua vim.lsp.buf.type_definition()', opts) + buf_set_keymap('n', 'gi', 'lua vim.lsp.buf.implementation()', opts) + buf_set_keymap('n', 'gr', 'lua vim.lsp.buf.references()', opts) + buf_set_keymap('n', 'K', 'lua vim.lsp.buf.hover()', opts) + buf_set_keymap('n', '', 'lua vim.lsp.buf.rename()', opts) +end diff --git a/.config/nvim/lua/loadplugins.lua b/.config/nvim/lua/loadplugins.lua new file mode 100644 index 0000000..b28e5e5 --- /dev/null +++ b/.config/nvim/lua/loadplugins.lua @@ -0,0 +1,75 @@ +-- loadplugins + +-- load plugins with packer +return require("packer").startup(function(use) + -- automatic closing of brackets + use 'raimondi/delimitmate' + + -- improved java syntax highlighting + use {'uiiaoo/java-syntax.vim', + ft = {'java'}} + + -- custom statusline + use {'itchyny/lightline.vim', + require = {"tiyn/vim-tccs"}} + + -- latex asynchronous pdf rendering + use {'donRaphaco/neotex', + ft = {'tex'}} + + -- navigating folders with a file tree + use {'scrooloose/nerdtree', + cmd = 'NERDTreeToggle', + requires = 'ryanoasis/vim-devicons'} + + -- nim language support + use {'zah/nim.vim', ft = {'nim'}} + + -- autocompletion and its sources + use {'hrsh7th/nvim-cmp', + requires = {'hrsh7th/cmp-buffer', + 'hrsh7th/cmp-path', + 'hrsh7th/cmp-nvim-lsp', + 'l3mon4d3/luasnip', + 'saadparwaiz1/cmp_luasnip', + 'neovim/nvim-lspconfig', + 'onsails/lspkind-nvim'}} + + -- showing color of hex values, etc + use 'norcalli/nvim-colorizer.lua' + + -- package manager + use 'wbthomason/packer.nvim' + + -- colorful brackets + use 'luochen1990/rainbow' + + -- show tags + use {'majutsushi/tagbar', + cmd = 'TagbarToggle'} + + -- git wrapper + use 'tpope/vim-fugitive' + + -- indicate git diff status of line + use 'airblade/vim-gitgutter' + + -- golang language support + use {'fatih/vim-go', + ft = {'go'}} + + -- markdown language support + use {'preservim/vim-markdown', + ft = {'md'}, + requires = {'godlygeek/tabular'}} + + -- bulk renamer + use 'qpkorr/vim-renamer' + + -- additional quote/parantheses funtions + use 'tpope/vim-surround' + + -- colorscheme + use 'tiyn/vim-tccs' + +end) diff --git a/.config/nvim/plugin/lightline.lua b/.config/nvim/plugin/lightline.lua new file mode 100644 index 0000000..e9bdee4 --- /dev/null +++ b/.config/nvim/plugin/lightline.lua @@ -0,0 +1,2 @@ +-- itchyny/lightline.vim +vim.g.lightline = { colorscheme = 'tccs'} diff --git a/.config/nvim/plugin/neotex.lua b/.config/nvim/plugin/neotex.lua new file mode 100644 index 0000000..efafbb0 --- /dev/null +++ b/.config/nvim/plugin/neotex.lua @@ -0,0 +1,2 @@ +-- donRaphaco/neotex +vim.g.neotex_enabled = 2 diff --git a/.config/nvim/plugin/nerdtree.lua b/.config/nvim/plugin/nerdtree.lua new file mode 100644 index 0000000..32993db --- /dev/null +++ b/.config/nvim/plugin/nerdtree.lua @@ -0,0 +1,2 @@ +-- scrooloose/nerdtree +vim.g.NERDTreeWinPos = 'left' diff --git a/.config/nvim/plugin/nvim-cmp.lua b/.config/nvim/plugin/nvim-cmp.lua new file mode 100644 index 0000000..a493bb6 --- /dev/null +++ b/.config/nvim/plugin/nvim-cmp.lua @@ -0,0 +1,115 @@ +-- hrsh7th/nvim-cmp +-- Add additional capabilities supported by nvim-cmp +capabilities = require("cmp_nvim_lsp").default_capabilities() + +-- Set completeopt to have a better completion experience +vim.o.completeopt = 'menuone,noselect' + +-- nvim-cmp setup +local cmp = require("cmp") +local luasnip = require("luasnip") +local lspkind = require("lspkind") +cmp.setup { + snippet = { + expand = function(args) + luasnip.lsp_expand(args.body) + end, + }, + mapping = { + [''] = 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" }), + [''] = 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" }), + [''] = cmp.mapping.close(), + [''] = cmp.mapping.confirm { + behavior = cmp.ConfirmBehavior.Replace, + select = true, + }}, + sources = { + { name = 'nvim_lsp' }, + { name = 'path' }, + { name = 'buffer' }, + { name = 'luasnip' }, + }, + formatting = { + format = lspkind.cmp_format({ + mode = "symbol_text", + preset = "codicons", + maxwidth = 50, + menu = { + nvim_lsp = "[LSP]", + path = "[PATH]", + buffer = "[BUF]", + luasnip = "[SNIP]", + }, + symbol_map = { + Text = "", + Method = "", + Function = "", + Constructor = "", + Field = "ﰠ", + Variable = "", + Class = "ﴯ", + Interface = "", + Module = "", + Property = "ﰠ", + Unit = "塞", + Value = "", + Enum = "", + Keyword = "", + Snippet = "", + Color = "", + File = "", + Reference = "", + Folder = "", + EnumMember = "", + Constant = "", + Struct = "פּ", + Event = "", + Operator = "", + TypeParameter = "" + }, + }), + }, +} +require("luasnip.loaders.from_snipmate").lazy_load() + + +-- neovim/nvim-lspconfig +local nvim_lsp = require('lspconfig') + +-- Use a loop to conveniently call 'setup' on multiple servers and +-- map buffer local keybindings when the language server attaches +local servers = { "pyright", "bashls", "tsserver", "texlab", "ccls", "gopls", "hls", "nimls", "marksman" } +for _, lsp in ipairs(servers) do + nvim_lsp[lsp].setup { + on_attach=on_attach, + capabilities=capabilities, + flags = { + debounce_text_changes = 150 + } + } +end + + +require'lspconfig'.jdtls.setup{ + on_attach=on_attach, + flags = { + debounce_text_changes = 150 + }, + cmd = { 'jdtls' } + } diff --git a/.config/nvim/plugin/nvim-colorizer.lua b/.config/nvim/plugin/nvim-colorizer.lua new file mode 100644 index 0000000..20b73ac --- /dev/null +++ b/.config/nvim/plugin/nvim-colorizer.lua @@ -0,0 +1,2 @@ +-- norcalli/nvim-colorizer.lua +require 'colorizer'.setup() diff --git a/.config/nvim/plugin/rainbow.lua b/.config/nvim/plugin/rainbow.lua new file mode 100644 index 0000000..837e990 --- /dev/null +++ b/.config/nvim/plugin/rainbow.lua @@ -0,0 +1,2 @@ +-- luochen1990/rainbow +vim.g.rainbow_active = 1 diff --git a/.config/nvim/plugin/vim-go.lua b/.config/nvim/plugin/vim-go.lua new file mode 100644 index 0000000..0eb49ab --- /dev/null +++ b/.config/nvim/plugin/vim-go.lua @@ -0,0 +1,2 @@ +-- fatih/vim-go +vim.g.go_def_mapping_enabled = 0 diff --git a/.config/nvim/plugin/vim-markdown.lua b/.config/nvim/plugin/vim-markdown.lua new file mode 100644 index 0000000..78bedf0 --- /dev/null +++ b/.config/nvim/plugin/vim-markdown.lua @@ -0,0 +1,3 @@ +-- preservim/vim-markdown +vim.g.vim_markdown_folding_style_pythonic = 1 +vim.g.vim_markdown_folding_disabled = 1