2014-09-16 10 views
6

W naszym projekcie, nie będzieJak ustawić vim nie auto tiret w extern "C" {linia

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

jak ustawić vimrc lub c-support niech Vim nie wcięcie auto tylko dla extern "C" obok użyj Marco, aby zastąpić zewnętrzne "C" {?

+2

myślę tiret w vim jest oparty na regex, ale nie składni vim nie jest mądry. –

Odpowiedz

0

Wcięcia w vim skonfigurowane za pomocą "cinoptions". Ale nie obsługuje "extern C". Zobacz 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() 

Zapisz jako ~/.vim/indent/cpp.vim