X-Git-Url: https://git.rmz.io/dotfiles.git/blobdiff_plain/28aa720dc79398e878518f64e394569d24a57c19..c089750bf7a4524584f74246b52de9485f63f95b:/vim/vimrc?ds=inline diff --git a/vim/vimrc b/vim/vimrc index 67b77a6..8da02bf 100644 --- a/vim/vimrc +++ b/vim/vimrc @@ -26,6 +26,10 @@ let g:gitgutter_sign_allow_clobber = 0 "}}} Plug 'alepez/vim-gtest' Plug 'alx741/vinfo' +Plug 'andrewradev/sideways.vim' " {{{2 +nnoremap ,h :SidewaysLeft:delmarks z +nnoremap ,l :SidewaysRight:delmarks z +"}}} Plug 'andrewradev/switch.vim' Plug 'bling/vim-airline' Plug 'chrisbra/checkattach' @@ -40,6 +44,10 @@ Plug 'majutsushi/tagbar' Plug 'octol/vim-cpp-enhanced-highlight' Plug 'raimondi/delimitmate' Plug 'sgeb/vim-diff-fold' +Plug 'skywind3000/asyncrun.vim' " {{{2 +command! -bang -nargs=* -complete=file Make AsyncRun -save=2 -program=make @ +let g:asyncrun_open = 10 +"}}} Plug 'shougo/unite.vim' Plug 'shougo/vimproc.vim', {'do': 'make'} Plug 'sjl/gundo.vim' @@ -90,8 +98,6 @@ Plug 'kana/vim-operator-user' " staging " Check LucHermites plugins: https://github.com/LucHermitte/lh-cpp -Plug 'dense-analysis/ale' " {{{2 -let g:ale_echo_msg_format = '[%linter%] %code: %%s' Plug 'git@github.com:/ram-z/vim-orgmode', { 'branch': 'dev' } " {{{2 Plug 'vim-scripts/syntaxrange' @@ -106,12 +112,15 @@ let g:haskell_enable_pattern_synonyms = 1 " to enable highlighting of `pattern` let g:haskell_enable_typeroles = 1 " to enable highlighting of type roles let g:haskell_enable_static_pointers = 1 " to enable highlighting of `static` let g:haskell_backpack = 1 " to enable highlighting of backpack keywords + +let g:haskell_indent_before_where = 2 " }}} Plug 'aklt/plantuml-syntax' Plug 'mtth/scratch.vim' " {{{2 let g:scratch_no_mappings = 1 + let g:scratch_autohide = 0 "}}} Plug 'vim-utils/vim-man' " {{{2 @@ -129,6 +138,8 @@ let &t_8f = "\[38;2;%lu;%lu;%lum" let &t_8b = "\[48;2;%lu;%lu;%lum" set termguicolors colorscheme $THEME +"TODO see how I can integrate this into a theme that customises upstream Nord +hi debugPC term=reverse ctermbg=8 " options {{{1 " moving around, searching and patterns {{{2 @@ -158,8 +169,9 @@ set listchars+=extends:❯,precedes:❮ set listchars+=trail:· augroup trailing au! - au InsertEnter * :set listchars-=trail:· - au InsertLeave * :set listchars+=trail:· + au FileType qf setlocal listchars-=trail:· + au InsertEnter * set listchars-=trail:· + au InsertLeave * set listchars+=trail:· augroup END set scrolloff=5 " number of screen lines to show around the cursor @@ -261,6 +273,8 @@ set viewoptions+=folds " save folds set diffopt+=filler " show filler lines set diffopt+=vertical " always vertical split set diffopt+=context:10 " 10 lines context between changes +set diffopt+=internal +set diffopt+=algorithm:patience " reading and writing files {{{2 set modeline " read modelines @@ -383,10 +397,14 @@ augroup END map " make -function! Make() +function! MakeWithOpt() + " TODO only do this if makeprg matches make + " if &makeprg =~ "make" let l:make_dir = "" if exists("b:make_dir") let l:make_dir = "-C ".b:make_dir + elseif exists("t:make_dir") + let l:make_dir = "-C ".t:make_dir elseif exists("g:make_dir") let l:make_dir = "-C ".g:make_dir endif @@ -395,9 +413,9 @@ function! Make() if exists("g:make_targets") let l:make_targets = g:make_targets endif - execute "make! ".l:make_dir." ".l:make_targets + execute "Make ".l:make_dir." ".l:make_targets endf -nnoremap r :call Make() +nnoremap r :call MakeWithOpt() " unhighlight search nnoremap / :silent nohl @@ -564,8 +582,12 @@ nmap qq :echo "hi<" . synIDattr(synID(line("."),col("."),1),"na " airline {{{2 let g:airline#extensions#whitespace#enabled = 1 let g:airline#extensions#tabline#enabled = 1 +let g:airline#extensions#searchcount#enabled = 0 let g:airline_powerline_fonts = 1 +let g:asyncrun_status = "stopped" +let g:airline_section_error = airline#section#create_right(['%{g:asyncrun_status}']) + " checkattach {{{2 let g:checkattach_filebrowser = 'ranger' let g:checkattach_once = 'y' @@ -590,25 +612,41 @@ nmap dd :tab split \| Gdiff \| wincmd h " delete fugitive buffers when closed autocmd BufReadPost fugitive://* set bufhidden=delete -nnoremap gs :Git +function! GitToggle() + if buflisted(bufname('.git/index')) + bdelete .git/index + else + Git + 16wincmd_ + endif +endfunction +command! GitToggle :call GitToggle() +command! GToggle GitToggle +nnoremap gs :GitToggle + nnoremap gd :Gdiffsplit nnoremap gc :echohl WarningMsg \| echo "use \gcc instead" \| echohl None nnoremap gcc :tab G commit -v nnoremap gca :tab G commit -v --amend nnoremap gcf :tab G commit -v --fixup= nnoremap gp :echohl WarningMsg \| echo "use \gpp instead" \| echohl None -nnoremap gpp :G push -nnoremap gpf :G push --force-with-lease +nnoremap gpp :Git push \| copen +nnoremap gpf :Git push --force-with-lease \| copen +nnoremap gll :Git pull +nnoremap gru :Git rebase --interactive @{upstream} +nnoremap grp :Git rebase --interactive @{push} nnoremap ga :Gwrite nnoremap gb :G blame augroup fugitive_gstatus au! - autocmd BufWinEnter */.git/index resize 16 + autocmd User FugitiveIndex setlocal winfixheight + autocmd User FugitiveIndex nmap = augroup end " Gundo {{{2 nnoremap :GundoToggle +let g:gundo_prefer_python3 = 1 " indent-guides {{{2 let g:indent_guides_default_mapping = 0 @@ -680,6 +718,7 @@ let g:tagbar_iconchars = ['+', '-'] " tcomments {{{2 let g:tcomment_textobject_inlinecomment = 'gic' let g:tcomment#filetype#guess = 0 +"let g:tcomment#options = {'whitespace' : 'no'} " ultisnips {{{2 let g:UltiSnipsEditSplit = 'vertical' @@ -737,7 +776,7 @@ if executable('ag') end nnoremap [unite]a :Unite grep:.:: nnoremap [unite]A :Unite grep:.:-w: -command! -nargs=+ Ag Unite -input= grep:.: +command! -nargs=+ Ag Unite grep:.:: " unite-file_rec {{{3 if executable('ag') @@ -788,6 +827,15 @@ let g:ycm_complete_in_comments = 1 let g:ycm_complete_in_strings = 1 let g:ycm_autoclose_preview_window_after_insertion = 0 +let g:ycm_language_server = + \ [ + \ { + \ 'name': 'haskell', + \ 'cmdline': [ 'haskell-language-server-wrapper', '--lsp' ], + \ 'filetypes': [ 'haskell', 'lhaskell' ] + \ }, + \ ] + " vim-easy-align {{{2 " start interactive EasyAlign in visual mode vmap (EasyAlign)