-setlocal foldmethod=syntax
+setlocal textwidth=100
+
+" indent 4 spaces
+setlocal shiftwidth=4
+setlocal tabstop=4
+setlocal softtabstop=4
+setlocal expandtab
+
+setlocal nosmartindent
+setlocal autoindent
+setlocal cinkeys-=0# " don't reindent PP directives
+setlocal cinoptions+=:0 " don't indent case labels
+
+" Load the doxygen syntax
+let b:load_doxygen_syntax = 1
augroup fswitch
- au BufEnter *.h let b:fswitchdst = 'cpp,c'
- au BufEnter *.h let b:fswitchlocs = 'reg:/include/source/'
+ au BufEnter *.h let b:fswitchdst = 'cpp,c'
+ au BufEnter *.h let b:fswitchlocs = 'reg:/include/source/'
+ au BufEnter *.cpp let b:fswitchdst = 'h'
+ au BufEnter *.cpp let b:fswitchlocs = 'reg:/\Csource/include/'
augroup END
+
+setlocal foldmethod=syntax
+" set foldlevel according to number of matches of 'namespace' and 'class' not
+" containing ';'
+function! InitialFoldLevel()
+ let v:errmsg = ""
+ keepjumps keeppatterns silent! 1,/}/s/^\(namespace\|class\) \+[^;]*$//n
+ if v:errmsg == ""
+ let &foldlevel=str2nr(split(v:statusmsg)[0])
+ endif
+endf
+call InitialFoldLevel()