Highlight debug blocks in programs
Talk0
1,599pages on
this wiki
this wiki
Tip 639 Printable Monobook Previous Next
created 2004 · complexity basic · author Karthick Gururaj · version 6.0
If your C/C++ code is scattered with statements like
#ifdef DEBUG // Some code.. cout << "Debug output: blah" << endl; #endif
and you would like to highlight these segments in a different colour (so that you can skip them visually), add the following code in your .vimrc (colouring follows that of comments)
syn region MySkip contained start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*#\s*endif\>" contains=MySkip
let g:CommentDefines = ""
hi link MyCommentOut2 MyCommentOut
hi link MySkip MyCommentOut
hi link MyCommentOut Comment
map <silent> ,a :call AddCommentDefine()<CR>
map <silent> ,x :call ClearCommentDefine()<CR>
function! AddCommentDefine()
let g:CommentDefines = "\\(" . expand("<cword>") . "\\)"
syn clear MyCommentOut
syn clear MyCommentOut2
exe 'syn region MyCommentOut start="^\s*#\s*ifdef\s\+' . g:CommentDefines . '\>" end=".\|$" contains=MyCommentOut2'
exe 'syn region MyCommentOut2 contained start="' . g:CommentDefines . '" end="^\s*#\s*\(endif\>\|else\>\|elif\>\)" contains=MySkip'
endfunction
function! ClearCommentDefine()
let g:ClearCommentDefine = ""
syn clear MyCommentOut
syn clear MyCommentOut2
endfunction
To see the effect, position the cursor on the word DEBUG in the C code snippet above and type ,a