2014-09-16 14 views
6

Nel nostro progetto, ci sarannoCome impostare vim non auto trattino extern "C" {line

#ifdef __cplusplus 
extern "C" { 
#endif 
    int foobar(); // <-- vim auto indent it 

come impostare vimrc o c-support lasciare vim non auto trattino solo per extern "C" accanto usare Marco per sostituire l'extern "C" {?

+2

penso che il rientro in vim è basata su regex, ma non la sintassi, vim non è poi così intelligente. –

risposta

0

I rientri in vim configurati tramite 'cinoptions'. Ma non supporta "extern C". Vedi answer on similar question.

function! IndentNamespace() 
    let l:cline_num = line('.') 
    let l:pline_num = prevnonblank(l:cline_num - 1) 
    let l:pline = getline(l:pline_num) 
    let l:retv = cindent('.') 
    while l:pline =~# '\(^\s*{\s*\|^\s*//\|^\s*/\*\|\*/\s*$\)' 
     let l:pline_num = prevnonblank(l:pline_num - 1) 
     let l:pline = getline(l:pline_num) 
    endwhile 
    if l:pline =~# '^\s*extern "C".*' 
     let l:retv = 0 
    endif 
    return l:retv 
endfunction 

setlocal indentexpr=IndentNamespace() 

Salva questo come ~/.vim/trattino/cpp.vim