"option and setting.
-" Pathogen runtime path manipulation
-"call pathogen#infect() "Using the infect method breaks ft detection
-call pathogen#runtime_append_all_bundles()
-
-
-"Activate syntax highlighting
-syntax on
-"Activate filetype plugins: syntax highlighting, indentation, and more
-filetype plugin indent on
-
+set nocompatible
+set encoding=utf8
set modeline
set number
set backspace=indent,eol,start
-"vim-7 and newer has vimspell (spell checker) built in
-if version >= 703
- set spelllang=de_at,en
- set tabpagemax=20
- set colorcolumn=80,+1
-endif
-
-"Set some properties for ctags, grep and the size of the
-"most-left column for foldings
set tagstack
set grepprg=grep\ -nH\ $*
set foldcolumn=1
-"Set incremental search and highlighted search results
set incsearch
set hlsearch
+set cursorline
+set laststatus=2
+
+set listchars=tab:»,trail:·,eol:$
+
+set autoindent
+set tabstop=4
+set shiftwidth=4
+
+if version >= 703
+ set spelllang=de_at,en
+ set tabpagemax=20
+ set colorcolumn=+1
+endif
+
+" Pathogen runtime path manipulation
+"call pathogen#infect() "Using the infect method breaks ft detection
+filetype off
+call pathogen#runtime_append_all_bundles()
+call pathogen#helptags()
+
+syntax on
+filetype plugin indent on
+
"Power saving tip: powertop-homepage
let &guicursor = &guicursor . ",a:blinkon0"
"According to vim help -- enable mouse in xterm...
set mouse=a
-
-"Open current file with a specific program
-function OpenIn(prog)
- execute ":!" . a:prog . " % &"
-endfunction
+" Use 256 colors
+set t_Co=256
+let g:CSApprox_attr_map = { 'bold' : 'bold', 'italic' : '', 'sp' : '' }
+colorscheme shuber-wombat
" Use the below highlight group when displaying bad whitespace is desired.
highlight BadWhitespace ctermbg=red guibg=red
" Make trailing whitespace be flagged as bad.
-au Filetype python,tex,c,cpp,cs,objc,java syn match BadWhitespace /\s\+$/ containedin=ALL
-
-set listchars=tab:»,trail:·,eol:$
+au Filetype python,tex,c,cpp,cs,objc,java,vim syn match BadWhitespace /\s\+$/ containedin=ALL
-set autoindent
-set tabstop=4
-au Filetype python,tex,c,cpp,cs,objc,java :DetectIndent
-"let g:detectindent_preferred_expandtab = 1
-"let g:detectindent_preferred_indent = 4
+if exists(":DetectIndent")
+ au BufReadPost * :DetectIndent
+endif
-"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-" fortran
-""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+let g:syntastic_mode_map = { 'mode' : 'active', 'active_filetypes' : [], 'passive_filetypes' : ['html'] }
-"let fortran_free_source=1
-au BufNewFile *.f90 set fortran_free_source=1
-au BufRead,BufNewFile *.INC set filetype=fortran
-au Filetype fortran set cindent cst csto=0
+"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+" Some macros
+"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+"Open current file with a specific program
+function OpenIn(prog)
+ execute ":!" . a:prog . " % &"
+endfunction
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-" IRSSI logs
+" key bindings
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-au BufRead,BufNewFile */.irssi/logs/*.log set filetype=irssilog
+map <a-c> <plug>NERDCommenterToggle
+
+nmap <c-q> :q<CR>
+nmap <c-s> :w<CR>
+vmap <c-s> <Esc><c-s>gv
+imap <c-s> <c-o><c-s>
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-" Easychair conference system review form
-"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+" fortran
+""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-au BufRead,BufNewFile review_form_*.txt set filetype=easychair
-au Syntax easychair runtime! syntax/easychair.vim
+"let fortran_free_source=1
+au BufNewFile *.f90 set fortran_free_source=1
+au Filetype fortran set cindent cst csto=0
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
au Filetype c,cpp,cs,objc map <F7> :make <CR>
au Filetype java map <F7> :!ant -f ../build.xml <CR>
au Filetype c,cpp,cs,obj set makeprg=make
-au Filetype c,cpp,cs,obj set shiftwidth=4
-"Adds STL prefix 'std::' to 'id'
-function AddNamespaceDeclTo(ns, id)
- echo "Add '" . a:ns . "' to " . a:id
- "Line starts with a:id
- execute ":%s!^\\(\\s*\\)" . a:id . "\\>!\\1" . a:ns . "::" . a:id . "!e"
- "Line beginning, white space, not # or / (preprocessor or comment)
- execute ":%s!^\\(\\s*[^#/].*[^:]\\)\\<" . a:id . "\\>!\\1" . a:ns . "::" . a:id . "!ge"
+"Prepend the namespace to an identifier, e.g. 'std::' before 'map' excluding
+"those in C/C++ comments.
+function PrependCppNamespaceToIdent(ns, id)
+
+ " To match Not to match
+ "
+ "|id |// id
+ "| id |// /* */ id
+ "|/* */ /* */ id |/* */ // id
+ "|id /* */ |/* id
+ "|*/ id | * id
+ " |/* 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 #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', 'sstream']
+ let id = id +['pair', 'string']
+
+ for i in id
+ call PrependCppNamespaceToIdent("std", i)
+ endfor
+endfunction
-"Adds STL prefix 'std::' to several identifiers
-function AddSTLNamespaceDecl()
- call AddNamespaceDeclTo("std","cin")
- call AddNamespaceDeclTo("std","cout")
- call AddNamespaceDeclTo("std","cerr")
-
- call AddNamespaceDeclTo("std","swap")
- call AddNamespaceDeclTo("std","sort")
- call AddNamespaceDeclTo("std","max")
- call AddNamespaceDeclTo("std","min")
-
- call AddNamespaceDeclTo("std","deque")
- call AddNamespaceDeclTo("std","endl")
- call AddNamespaceDeclTo("std","list")
- call AddNamespaceDeclTo("std","map")
- call AddNamespaceDeclTo("std","multimap")
- call AddNamespaceDeclTo("std","ostream")
- call AddNamespaceDeclTo("std","pair")
- call AddNamespaceDeclTo("std","priority_queue")
- call AddNamespaceDeclTo("std","set")
- call AddNamespaceDeclTo("std","queue")
- call AddNamespaceDeclTo("std","stack")
- call AddNamespaceDeclTo("std","string")
- call AddNamespaceDeclTo("std","vector")
+function EscapeHexToChar()
+ echo 'Call "x/Nxb addr" in GDB to print N bytes at addr'
+ execute '%s/^.*://'
+ execute '%s/\s*0x\(\x\x\)/\\x\1/g'
+ 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 EscapeHexToChar()
- echo 'Call "x/Nxb addr" in GDB to print N bytes at addr'
- execute '%s/^.*://'
- execute '%s/\s*0x\(\x\x\)/\\x\1/g'
- execute '%s/^\(.*\)$/"\1"/'
+function AddIncludeGuards()
+ execute "normal! Go#endif"
+ execute "normal! gg"
+ call InsertIncludeGuardsWithoutEndif()
endfunction
+autocmd BufNewFile *.{h,hpp} call AddIncludeGuards()
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
au Filetype text set textwidth=80
"According to thunderbirds settings
au Filetype mail set textwidth=72
+au Filetype mail set expandtab
"a and w reformat the paragraph automatically and a new paragraph
"is indicated by lines not ending with white-space
if version>=700
- au Filetype mail,text set fo+=n spell
+ au Filetype mail,text set fo+=n spell
endif
+"Scissor line
+au Filetype mail syn match Statement /^\s*-*\s*>8\s*-*\s*$/
+au Filetype mail syn match Statement /^\s*-*\s*8<\s*-*\s*$/
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"au Filetype php set fo=tcqn
if version >= 700
- au Filetype php set spell
+ au Filetype php set spell
endif
au Filetype php set textwidth=80
"au Filetype php set cindent
-
-
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" LaTeX
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"Remove Umlaute
function TexTransUmlaute()
- execute ':%s/ü/\\\"u/ge'
- execute ':%s/Ü/\\\"U/&'
- execute ':%s/ö/\\\"o/&'
- execute ':%s/Ö/\\\"O/&'
- execute ':%s/ä/\\\"a/&'
- execute ':%s/Ä/\\\"A/&'
- execute ':%s/ß/\\\"s/&'
- execute ':%s/²/\^2/&'
+ execute ':%s/ü/\\\"u/ge'
+ execute ':%s/Ü/\\\"U/&'
+ execute ':%s/ö/\\\"o/&'
+ execute ':%s/Ö/\\\"O/&'
+ execute ':%s/ä/\\\"a/&'
+ execute ':%s/Ä/\\\"A/&'
+ execute ':%s/ß/\\\"s/&'
+ execute ':%s/²/\^2/&'
endfunction
-
function FindWordRepeatings()
- execute '/\(\<\S\+\>\)\s\+\1\>'
+ execute '/\(\<\S\+\>\)\s\+\1\>'
" let pos = search('\(\<\S\+\>\)\s\+\1\>', "cw")
" call cursor(pos)
endfunction
-
let g:tex_flavor = "latex"
let g:LatexBox_viewer="okular"
let g:LatexBox_latexmk_options="-pvc"
au Filetype tex set smartindent
-au Filetype tex set shiftwidth=4
-
-au Filetype tex map! ,b \begin{}<Esc>i
-au Filetype tex map! ,e <esc>:call TexClosePrev(0)<cr>a<cr>
-au Filetype tex map! ,i \begin{itemize}<Return>\end{itemize}<ESC>O\item
-au Filetype tex map! ,f \begin{frame}<Return>\end{frame}<ESC>O\frametitle{
-au Filetype tex map! ,p \begin{figure}<Return>\end{figure}<ESC>O\centering<Return>\includegraphics{
-
-
-
if version >= 700
- au Filetype tex set spell
+ au Filetype tex set spell
endif
-
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" python
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
au Filetype python map <F5> :!python % <CR>
-
" vimrc file for following the coding standards specified in PEP 7 & 8.
" Number of spaces that a pre-existing tab is equal to.
au Filetype python set expandtab
" Wrap text after a certain number of characters
-au BufRead,BufNewFile *.py,*.pyw set textwidth=79
-
-
+au Filetype python set textwidth=79
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" gnuplot
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-
-au BufRead,BufNewFile *.plt set filetype=gnuplot
-au BufRead,BufNewFile *.plot set filetype=gnuplot
-au BufRead,BufNewFile *.gnuplot set filetype=gnuplot
-
"Opens the current file in ipe
au Filetype gnuplot map <M-o> :call OpenIn("gnuplot -persist") <CR>
-
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-" Commenting
+" youcompleteme
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-let g:EnhCommentifyUseAltKeys = 'Yes'
-
-
+let g:ycm_min_num_of_chars_for_completion = 999
+let g:ycm_key_list_select_completion = ['<Down>']
-"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-" Tab completion
-"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-"function InsertTabWrapper()
-" let col = col('.') - 1
-" if !col || getline('.')[col - 1] !~ '\k'
-" return "\<tab>"
-" else
-" return "\<c-p>"
-" endif
-"endfunction
-" Remap the tab key to select action with InsertTabWrapper
-"inoremap <C-space> <c-r>=InsertTabWrapper()<cr>
-
-let g:SuperTabMappingForward = "<C-space>"
-let g:SuperTabDefaultCompletionType = 'context'
-"let g:SuperTabDefaultCompletionType = '<c-x><c-u>'
-
-
-source ~/.vimrc-local
+if filereadable($HOME . "/.vimrc-local")
+ source ~/.vimrc-local
+endif