Vim Tips Wiki
Advertisement

Previous TipNext Tip

Tip: #639 - Highlight debug blocks in programs

Created: January 20, 2004 1:11 Complexity: basic Author: Karthick Gururaj Version: 6.0 Karma: 8/8 Imported from: Tip#639

Hi all,

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

Comments

Advertisement