X-Git-Url: https://git.rmz.io/dotfiles.git/blobdiff_plain/cabc8c44dfafcab5e64a5c9d27aec7e1f0676a39..e8ae4a469b8b5db19a27a2bf71bb04142a68a6f0:/vim/ftplugin/cpp.vim diff --git a/vim/ftplugin/cpp.vim b/vim/ftplugin/cpp.vim index 06d4861..12c6443 100644 --- a/vim/ftplugin/cpp.vim +++ b/vim/ftplugin/cpp.vim @@ -6,6 +6,8 @@ setlocal tabstop=4 setlocal softtabstop=4 setlocal expandtab +"TODO these are ignored because we set indentexpr in `indent/cpp.vim` +" Ideally, indentexpr should read the settings from .clang-format if it exists setlocal nosmartindent setlocal autoindent setlocal cinkeys-=0# " don't reindent PP directives @@ -16,7 +18,7 @@ let b:load_doxygen_syntax = 1 augroup fswitch_cpp au! - au BufEnter *.h let b:fswitchdst = 'c,cpp' + au BufEnter *.h let b:fswitchdst = 'cpp,cc,c' au BufEnter *.h let b:fswitchlocs = '.,reg:|include.*|src|' au BufEnter *.hpp let b:fswitchdst = 'cpp,c' au BufEnter *.hpp let b:fswitchlocs = '.,reg:|include.*|src|' @@ -41,19 +43,38 @@ let g:switch_const_definitions = \ 'const \([[:alnum:]_:<>]\{-}\) &': '\1 ' \ } ] -nnoremap c :call switch#Switch(g:switch_const_definitions, {}) +nnoremap c :call switch#Switch({'definitions': g:switch_const_definitions}) + +" Disable ale as we use ycm +let b:ale_enabled = 0 nnoremap gd :YcmCompleter GoTo nnoremap d :vs:YcmCompleter GoTo +nnoremap gD :YcmCompleter GoToReferences + +nnoremap fi :YcmCompleter FixIt +nnoremap fr :YcmCompleter RefactorRename " format with = -map = (operator-clang-format) -vnoremap = :ClangFormat +call operator#user#define_ex_command('ycmcompleter-format', 'YcmCompleter Format') +map = (operator-ycmcompleter-format) +vnoremap = :YcmCompleter Format " restore = mapping to g= nnoremap g= = vnoremap g= = +" hover popup +let g:ycm_auto_hover = '' +let b:ycm_hover = { 'command': 'GetDoc', 'syntax': &filetype } +nmap gh (YCMHover) +nmap gH :YcmCompleter GetDoc + setlocal errorformat= +" TODO I don't remember these errorformat or what they match, maybe CMake? {{{ +setlocal errorformat+=\ %##%n\ %m\ %f:%l:%c +setlocal errorformat+=\ %##%n\ %m\ %f +setlocal errorformat+=%n +"}}} setlocal errorformat+=%f:%l:%c:\ %trror:\ %m setlocal errorformat+=%f:%l:%c:\ %tarning:\ %m setlocal errorformat+=%D%*\\a[%*\\d]:\ Entering\ directory\ [`']%f' @@ -63,6 +84,23 @@ setlocal errorformat+=%X%*\\a:\ Leaving\ directory\ [`']%f' setlocal errorformat+=%*[^[]\[%tRROR\]%m\ \[%f:%l\] setlocal errorformat+=%*[^[]\[%tARNING\]%m\ \[%f:%l\] +packadd termdebug +let g:termdebug_wide = 1 +function! s:Debug(...) + tabedit % + let t:debug_tab=1 + au BufDelete !gdb ++once if exists('t:debug_tab') | tabclose | endif + + "TODO restore mappings + "TODO make mappings local to source buffer + nnoremap :call TermDebugSendCommand('advance -source '.expand('%').' -line '.line(".")) + nnoremap :Step + nnoremap :Over + nnoremap :Finish +endfunction +command! -nargs=* -complete=file -bang Debug call Debug() | Termdebug +command! -nargs=+ -complete=file -bang DebugCommand call Debug() | TermdebugCommand + setlocal foldmethod=syntax " set foldlevel according to number of matches of 'namespace' and 'class' not " containing ';' @@ -70,7 +108,7 @@ function! InitialFoldLevel() let v:errmsg = "" keepjumps keeppatterns silent! 1,/}/s/^\(namespace\|class\) \+[^;]*$//n if v:errmsg == "" - let &foldlevel=str2nr(split(v:statusmsg)[0]) + let &l:foldlevel=str2nr(split(v:statusmsg)[0]) endif endf call InitialFoldLevel()