" Purpose: My personal .vimrc
" Author: Stefan Huber
-"
-"Essential resources for vim users
-" - vim.sf.net -- find tips and scripts for vim and gvim
-"
-"By calling ":help keyword" you get help for the specific
-"option and setting.
+
+"profile start /tmp/profile.log
+"profile func *
+"profile file *
set nocompatible
set encoding=utf8
-set modeline
set number
set backspace=indent,eol,start
set laststatus=2
set listchars=tab:»,trail:·,eol:$
+set virtualedit=block
set autoindent
set tabstop=4
set shiftwidth=4
+set expandtab
if version >= 703
set spelllang=de_at,en
set colorcolumn=+1
endif
+set wildmode=longest,list:longest
+
+set tags=./tags;/
+
" Pathogen runtime path manipulation
"call pathogen#infect() "Using the infect method breaks ft detection
filetype off
highlight BadWhitespace ctermbg=red guibg=red
" Make trailing whitespace be flagged as bad.
au Filetype python,tex,c,cpp,cs,objc,java,vim syn match BadWhitespace /\s\+$/ containedin=ALL
+au Filetype python,tex,c,cpp,cs,objc,java,vim let g:airline#extensions#whitespace#enabled = 0
+" Detect indentation, but otherwise set expandtab
if exists(":DetectIndent")
au BufReadPost * :DetectIndent
endif
let g:syntastic_mode_map = { 'mode' : 'active', 'active_filetypes' : [], 'passive_filetypes' : ['html'] }
+"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+" Airline
+"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+
+let g:airline_powerline_fonts = 0
+let g:airline_theme = 'wombat'
+
+let g:airline#extensions#tabline#enabled = 1
+let g:airline#extensions#tagbar#enabled = 0
+let g:airline#extensions#whitespace#enabled = 0
+let g:airline#extensions#branch#enabled = 0
+let g:airline#extensions#branch#use_vcscommand = 1
+
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Some macros
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
map <a-c> <plug>NERDCommenterToggle
+nmap <F9> :NERDTreeToggle<CR>
+nmap <F10> :TagbarToggle<CR>
nmap <c-q> :q<CR>
nmap <c-s> :w<CR>
" |/* id */
" |::id
" |/**/ ::id
+ " |#include <id>
"
" In order to not match '* id' it is assumed that multi-line comment lines
" in the middle begin with a star.
- " If // and /* and ^* and :: is not prepend:
- execute ':%s_\(\(\/\/\|\/\*\|^\s*\*[^/]\).*\|::\)\@<!\<' . a:id . '\>_' . a:ns . '::' . a:id . '_ge'
- " If // and :: is not prepend, but */ is, and no further /* or // are found
- execute ':%s_\(\/\/.*\)\@<!\*\/\(\/[^\/\*]\|[^\/]\)*\zs\(::\)\@<!\<' . a:id . '\>_' . a:ns . '::' . a:id . '_ge'
+ " If #include and // and /* and ^* and :: is not prepend:
+ execute ':%s@\(\(#include\|\/\/\|\/\*\|^\s*\*[^/]\).*\|::\)\@<!\<' . a:id . '\>@' . a:ns . '::' . a:id . '@ge'
+ " If #include and // and :: is not prepend, but */ is, and no further /* or // are found
+ execute ':%s@\(\(#include\|\/\/\).*\)\@<!\*\/\(\/[^\/\*]\|[^\/]\)*\zs\(::\)\@<!\<' . a:id . '\>@' . a:ns . '::' . a:id . '@ge'
endfunction
"Prepend STL namespace 'std::' to several identifiers
function PrependSTLNamespace()
+ " This list of identifier is not complete, but adding all of them is too
+ " much. We rather like to add identifieres that are 'typical' for C++.
+ " Others, like 'move' are likely to not be C++ specific. In this cases the
+ " user is asked to call PrependCppNamespaceToIdent by hand.
let id = []
let id = id +['cin', 'cout', 'cerr', 'endl']
let id = id +['swap', 'sort', 'max', 'min']
let id = id +['vector', 'deque', 'list', 'map', 'multimap', 'set']
let id = id +['queue', 'stack', 'priority_queue']
- let id = id +['ostream', 'istream']
+ let id = id +['ostream', 'istream', 'sstream']
let id = id +['pair', 'string']
- let id = ['map']
for i in id
call PrependCppNamespaceToIdent("std", i)
execute '%s/^\(.*\)$/"\1"/'
endfunction
+function InsertIncludeGuardsWithoutEndif()
+ let gatename = substitute(expand("%:t"), "\\.", "_", "g") . '_' . strpart(system('pwgen -c 16 1'), 0, 16)
+ execute "normal! i#ifndef " . gatename
+ execute "normal! o#define " . gatename
+endfunction
+
+function AddIncludeGuards()
+ execute "normal! Go#endif"
+ execute "normal! gg"
+ call InsertIncludeGuardsWithoutEndif()
+endfunction
+
+autocmd BufNewFile *.{h,hpp,hxx} call AddIncludeGuards()
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"au Filetype php set cindent
+"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+" maxima
+"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+
+au BufRead,BufNewFile *.wxm set filetype=maxima
+
+
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" LaTeX
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
endfunction
let g:tex_flavor = "latex"
-let g:LatexBox_viewer="okular"
-let g:LatexBox_latexmk_options="-pvc"
+let g:LatexBox_output_type = "pdf"
+let g:LatexBox_viewer = "okular"
+let g:LatexBox_latexmk_async = 1
+let g:LatexBox_latexmk_preview_continuously = 1
+let g:LatexBox_show_warnings = 0
+let g:LatexBox_quickfix = 2
au Filetype tex set smartindent
au Filetype gnuplot map <M-o> :call OpenIn("gnuplot -persist") <CR>
+"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+" remind
+"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+
+au BufRead,BufNewFile */.remind/* set filetype=remind
+
+
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" youcompleteme
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+"let g:ycm_path_to_python_interpreter = '/usr/bin/python'
+let g:ycm_global_ycm_extra_conf = '/home/shuber/.ycm_extra_conf.py'
let g:ycm_min_num_of_chars_for_completion = 999
let g:ycm_key_list_select_completion = ['<Down>']
+let g:ycm_collect_identifiers_from_tags_files = 1
+let g:ycm_autoclose_preview_window_after_completion = 1
+nnoremap <leader>jd :YcmCompleter GoToDefinitionElseDeclaration<CR>
+"let g:ycm_server_use_vim_stdout = 1
+"let g:ycm_server_log_level = 'debug'
if filereadable($HOME . "/.vimrc-local")
source ~/.vimrc-local
endif
+" Being able to load project specific vimrc files
+set exrc
+set secure
+