summary refs log tree commit diff
path: root/.vim/init.vim
diff options
context:
space:
mode:
authorRobert Günzler <r@gnzler.io>2020-12-07 19:15:23 +0100
committerRobert Günzler <r@gnzler.io>2021-01-21 19:39:11 +0100
commit04db98668639cb0b431d50e5963f6b156d728078 (patch)
tree4bec29af1c9c34852e974be06301f74de4802199 /.vim/init.vim
parent9b8005439ac351ded8f6286aefa2378d25d7add5 (diff)
vim: big update; move lots of things to lua
Diffstat (limited to '.vim/init.vim')
-rw-r--r--.vim/init.vim188
1 files changed, 110 insertions, 78 deletions
diff --git a/.vim/init.vim b/.vim/init.vim
index d6fb3dc..23c94c5 100644
--- a/.vim/init.vim
+++ b/.vim/init.vim
@@ -4,7 +4,8 @@ let g:mapleader = ' ' " <leader> key to <space>
 let g:maplocalleader = '\'
 
 runtime general.vim
-runtime plug.vim
+" runtime plug.vim
+lua require'init'
 
 " hi CursorLine cterm=NONE ctermbg=darkred ctermfg=white guibg=darkred guifg=white
 " hi CursorLine cterm=NONE ctermbg=darkred ctermfg=white guibg=darkred guifg=white
@@ -15,8 +16,8 @@ runtime plug.vim
 let g:daymode = 0
 let g:daymode_colorscheme_day = 'ayu'
 let g:daymode_colorscheme_night = 'PaperColor'
-let g:daymode_lightline_colorscheme_day = 'ayu_light'
-let g:daymode_lightline_colorscheme_night = 'papercolor_dim'
+" let g:daymode_lightline_colorscheme_day = 'ayu_light'
+" let g:daymode_lightline_colorscheme_night = 'papercolor_dim'
 
 let g:ayucolor="light"
 let g:PaperColor_Theme_Options = {
@@ -24,16 +25,25 @@ let g:PaperColor_Theme_Options = {
 \     'default.dark': {
 \       'allow_bold': 1,
 \       'allow_italic': 1,
-\       'transparent_background': 0,
+\       'transparent_background': 1,
 \     }
 \   }
 \ }
+colorscheme PaperColor
 
-au VimEnter * if exists('g:daymode') && g:daymode
-  \ | call daymode#switch(0)
-  \ | else
-  \ | call daymode#switch(1)
-  \ | endif
+augroup Colors
+  au!
+  au ColorScheme * runtime colors/PaperColor_ext.vim
+  " NOTE: this is necessary for to fix the guibg when transparent_background
+  " is enabled
+  au ColorScheme * hi! clear SignColumn
+  " TODO: this breaks colorizer highlighting
+  " au VimEnter * if exists('g:daymode') && g:daymode
+    " \ | call daymode#switch(0)
+    " \ | else
+    " \ | call daymode#switch(1)
+    " \ | endif
+augroup END
 
 " Make comments italic, no matter what the colorscheme does
 hi Comment gui=italic
@@ -46,23 +56,22 @@ hi SignColumn guibg=none ctermbg=none
 noremap j gj
 noremap k gk
 " because this is annoying
-cnoreabbrev W w
+noreabbrev W w
 cnoreabbrev E e
 cnoreabbrev Q q
+nnoremap Q :q
 " Buffer commands
 nmap <silent> gb :bnext<CR>
 nmap <silent> gB :bprevious<CR>
-nmap <silent> <leader>cb :Clap buffers<CR>
-nmap <silent> <leader>cg :Clap grep2<CR>
-nmap <silent> <leader>cl :Clap blines<CR>
+
 " quickfix jumping
 " nnoremap <leader>cn :cnext<CR>
 " nnoremap <leader>cp :cprevious<CR>
-nnoremap <leader>cl :Clap quickfix<CR>
+
 " loclist jumping
 " nnoremap <leader>ln :lnext<CR>
 " nnoremap <leader>lp :lprevious<CR>
-nnoremap <leader>ll :Clap loclist<CR>
+
 " escape terminal mode with <esc>
 tnoremap <esc> <C-\><C-n>
 tnoremap <leader>qq <C-\><C-n>:bdelete!<CR>
@@ -70,16 +79,23 @@ tnoremap <leader>qq <C-\><C-n>:bdelete!<CR>
 " nnoremap s "_d
 " nnoremap ss "_dd
 " vnoremap s "_d
+
 " replace word under cursor
 nmap <silent> riw :%s/\<<C-r><C-w>\>/
 
-nmap <silent> ga <Plug>(EasyAlign)
-vmap <silent> <Enter> <Plug>(EasyAlign)
-nmap <leader>gm <Plug>(git-messenger)
+nmap <silent> ga <cmd>EasyAlign<cr>
+vmap <silent> <Enter> <cmd>EasyAlign<cr>
+" nmap <leader>gm <cmd>GitMessenger<cr>
+nmap <silent> gm <cmd>GitMessenger<cr>
 nmap <silent> <leader>v :Vista!!<CR>
 nmap <silent> <leader>nt :call numbertoggle#switch()<CR>
 nmap <silent> <leader>tn :rightbelow Tnew<CR>
-vmap rt :call retab#do()<CR>
+nmap <silent> gF :lua require'misc'.open_under_cursor()<CR>
+noremap <silent> gx :lua require'misc'.open_under_cursor('url-launcher')<CR>
+augroup netrw_maps
+  au!
+  au BufEnter * nnoremap <silent><buffer> gx :lua require'misc'.open_under_cursor('url-launcher')<CR>
+augroup END
 " }}}
 
 " alternate        -> plugin/alternate.vim
@@ -93,7 +109,7 @@ vmap rt :call retab#do()<CR>
 " neomake          -> after/plugin/neomake.vim
 " lightline        -> plugin/line.vim
 
-let g:netrw_browsex_viewer = 'url-launcher'
+" let g:netrw_browsex_viewer = 'url-launcher'
 
 " plugin config {{{
 "
@@ -143,11 +159,10 @@ hi SignifySignChange guibg=NONE ctermbg=NONE
 hi SignifySignAdd guibg=NONE ctermbg=NONE
 hi SignifySignDelete guibg=NONE ctermbg=NONE
 
-nmap <silent> ]h <Plug>(signify-next-hunk)
-nmap <silent> [h <Plug>(signify-prev-hunk)
+nmap <silent> ]h <cmd>SignifyJumpToNextHunk<cr>
+nmap <silent> [h <cmd>SignifyJumpToPrevHunk<cr>
 " }}}2
 
-let g:polyglot_disabled = ['markdown', 'org', 'latex', 'tex', 'vue']
 let g:vue_disable_pre_processors = 1
 let g:vim_json_syntax_conceal = 1
 
@@ -205,9 +220,6 @@ let g:vista#renderer#icons = {
 \ }
 " }}}2
 
-" Enable color highlighting for all filetypes
-let g:Hexokinase_ftAutoload = ['*']
-
 " vim-markdown {{{2
 let g:vim_markdown_folding_disabled = 1
 let g:vim_markdown_math = 1
@@ -231,20 +243,29 @@ let g:neoformat_basic_format_trim = 0
 let g:neoformat_only_msg_on_error = 1
 " }}}2
 
-" let g:clap_insert_mode_only = v:true
-let g:clap_popup_border  = 'sharp'
-let g:clap_layout          = {}
-" let g:clap_layout.relative = 'editor'
-" let g:clap_layout.row      = '5%'
-" let g:clap_layout.col      = '0%'
-" let g:clap_layout.width    = '100%'
-" let g:clap_layout.height   = '33%'
-let g:clap_multi_selection_warning_silent = 1
+" Clap {{{2
+" " let g:clap_insert_mode_only = v:true
+" let g:clap_popup_border  = 'sharp'
+" let g:clap_layout          = {}
+" " let g:clap_layout.relative = 'editor'
+" " let g:clap_layout.row      = '5%'
+" " let g:clap_layout.col      = '0%'
+" " let g:clap_layout.width    = '100%'
+" " let g:clap_layout.height   = '33%'
+" let g:clap_multi_selection_warning_silent = 1
+" let g:clap_selected_sign = { 'text': '* ', 'texthl': "WarningMsg", "linehl": "ClapSelected" }
+" nnoremap <silent> <leader>cc :Clap<CR>
+" nnoremap <silent> <leader>cg :Clap grep2<CR>
+" nnoremap <silent> <leader>cb :Clap buffers<CR>
+" nnoremap <silent> <leader>cf :Clap files<CR>
+" nnoremap <silent> <leader>cl :Clap quickfix<CR>
+" nnoremap <silent> <leader>ll :Clap loclist<CR>
+" }}}2
 
 let g:neoterm_size = 20
 let g:neoterm_autoinsert = 1
 
-let g:UltiSnipsExpandTrigger = "<tab>"
+let g:UltiSnipsExpandTrigger = "<cr>"
 " let g:UltiSnipsListSnippets = "<c-tab>"
 let g:UltiSnipsJumpForwardTrigger = "<c-n>"
 let g:UltiSnipsJumpBackwardTrigger = "<c-p>"
@@ -257,38 +278,20 @@ let g:vimwiki_main.name = 'wiki'
 let g:vimwiki_main.index = '_index'
 let g:vimwiki_list = [vimwiki_main]
 let g:vimwiki_folding = 'list'
-" }}}1
 
-" lsp + compl {{{1
-if has('nvim-0.5.0')
-lua << EOF
-local lsp   = require 'nvim_lsp'
-local util  = require 'nvim_lsp/util'
-local compl = require 'completion'
-
-lsp.gopls.setup{
-  on_attach = compl.on_attach;
-  root_dir = util.root_pattern("go.mod");
-}
-lsp.rust_analyzer.setup{
-  on_attach = compl.on_attach;
-}
-EOF
-  " autocmd Filetype bash,shell,css,go,python,rust,tex,latex setl omnifunc=lsp#omnifunc
-  " au Filetype lua setl omnifunc=v:lua.vim.lsp.omnifunc
-  nnoremap <silent> gD <cmd> lua vim.lsp.buf.declaration()<CR>
-  nnoremap <silent> gd <cmd> lua vim.lsp.buf.definition()<CR>
-  nnoremap <silent> gT <cmd> lua vim.lsp.buf.type_definition()<CR>
-  nnoremap <silent> gI <cmd> lua vim.lsp.buf.implementation()<CR>
-  nnoremap <silent> gr <cmd> lua vim.lsp.buf.references()<CR>
-  nnoremap <silent> g0 <cmd> lua vim.lsp.buf.document_symbol()<CR>
-  nnoremap <silent> gW <cmd> lua vim.lsp.buf.workspace_symbol()<CR>
-  nnoremap <silent> ;h <cmd> lua vim.lsp.buf.hover()<CR>
-  nnoremap <silent> ;s <cmd> lua vim.lsp.buf.signature_help()<CR>
-else
-  echoerr 'nvim_lsp only works with neovim>=0.5.0'
-endif
+let g:tex_flavor = 'latex'
+let g:vimtex_compiler_enabled = 1
+let g:vimtex_compiler_method = 'tectonic'
+let g:vimtex_compiler_tectonic = {
+\ 'executable': 'tectonic',
+\ }
+let g:vimtex_view_method = 'zathura'
+" let g:vimtex_view_zathura_check_libsynctex = 0
+" let g:vimtex_view_use_temp_files = 1
+" let g:vimtex_view_forward_search_on_start = 0
+" }}}1
 
+" lua stuff {{{1
 set complete=.,w,b,u
 set completeopt=menuone,noinsert,noselect
 " set completeopt-=preview
@@ -297,17 +300,30 @@ set shortmess+=c
 let g:completion_enable_auto_popup = 1
 let g:completion_enable_auto_signature = 1
 let g:completion_enable_auto_paren = 0
-let g:completion_confirm_key = "\<tab>"
+let g:completion_confirm_key = "\<cr>"
 let g:completion_enable_snippet = 'UltiSnips'
 let g:completion_auto_change_source = 1
 let g:completion_chain_complete_list = [
-  \ {'complete_items': ['lsp', 'snippet']},
-  \ {'mode': '<c-p>'},
-  \ {'mode': '<c-n>'}
+  \	  {'complete_items': ['lsp']},
+  \	  {'complete_items': ['snippet']},
+  \	  {'complete_items': ['buffers']},
+  \	  {'complete_items': ['path']},
+  \   {'complete_items': ['wiki']},
+  \   {'complete_items': ['ts']},
+  \ 	{'mode': 'file'},
   \ ]
 
 inoremap <silent><expr> <c-n>
   \ pumvisible() ? "\<c-n>" : completion#trigger_completion()
+inoremap <silent><expr> <c-p>
+  \ pumvisible() ? "\<c-p>" : completion#trigger_completion()
+imap <c-j> <cmd> lua require'completion.source'.nextCompletion()<CR>
+imap <c-k> <cmd> lua require'completion.source'.prevCompletion()<CR>
+
+augroup Compl
+  au!
+  au BufEnter * lua require'completion'.on_attach()
+augroup END
 " }}}1
 
 " gui extra config {{{
@@ -323,7 +339,13 @@ function! s:fmt() abort
   if exists('g:nofmt') || exists('b:nofmt')
     return
   endif
-  try | undojoin | Neoformat | catch /^Vim\%((\a\+)\)\=:E790/ | finally | silent Neoformat | endtry
+  try
+    undojoin
+    Neoformat
+  catch
+    " hmm
+    echo 'not formatted'
+  endtry
 endfunction
 
 augroup DoFmt
@@ -337,7 +359,7 @@ augroup SpecialBuffers
   " au  FileType vista,fzf,skim set laststatus=0 noshowmode noruler
         " \| au BufLeave <buffer> set laststatus=2 ruler
   au FileType fzf,skim tnoremap <buffer><esc> <c-c>
-  au FileType gitmessengerpopup nmap <buffer><esc> <Plug>(git-messenger-close)
+  au FileType gitmessengerpopup nmap <buffer><esc> <cmd>GitMessengerClose<cr>
   au FileType vista nmap <buffer><space> :wincmd p<CR>
   au FileType help,qf,vista nmap <silent><buffer>q <c-w><c-q>
   " au FileType vimwiki call vista#sidebar#ToggleFocus()
@@ -365,20 +387,30 @@ augroup Init
 	\ | endif
 augroup END
 
-augroup ClapFix
+augroup YankHighlight
   au!
-  " see https://github.com/liuchengxu/vim-clap/issues/374#issuecomment-608272245
-  au User ClapOnExit call lightline#update()
+  au TextYankPost * silent! lua require'vim.highlight'.on_yank()
 augroup END
 
-augroup YankHighlight
+augroup Diagnostic
   au!
-  au TextYankPost * silent! lua require'vim.highlight'.on_yank()
+  " au CursorHold * lua vim.lsp.util.show_line_diagnostics()
 augroup END
 " }}}
 
+command! SortLine call setline('.', join(sort(split(getline('.'), ' ')), " "))
 command! -bang DayMode call daymode#switch(<bang>0)
-command! -range Retab <line1>,<line2>call retab#do()
 command! NumberToggle call numbertoggle#switch()
 command! Alternate call alternate#alternate()
 command! InsertTS r!now
+command! BalenaDiagnosticsFold call balena_diagnostics_fold#apply()
+
+command! -range=% -nargs=0 Tab2Space execute '<line1>,<line2>s#^\t\+#\=repeat(" ", len(submatch(0))*' . &ts . ')'
+command! -range=% -nargs=0 Space2Tab execute '<line1>,<line2>s#^\( \{'.&ts.'\}\)\+#\=repeat("\t", len(submatch(0))/' . &ts . ')'
+
+" WARNING! roadwork ahead
+" lua << EOF
+" if vim.env.SNIPPETS then
+"   vim.snippet = require 'snippet'
+" end
+" EOF