" Vim main configuration file.
-" Copyright (C) 2008-2012 Simon Ruderich
+" Copyright (C) 2008-2013 Simon Ruderich
"
" This file is free software: you can redistribute it and/or modify
" it under the terms of the GNU General Public License as published by
" Save 'runtimepath' in case it was changed by the system's configuration
" files. Also save 'diff' as set all& resets it; but somehow later (after
" sourcing the vimrc - for example in a VimEnter autocmd) it gets
-" automagically restored to the correct value.
+" automagically restored to the correct value. Not sure what exactly Vim is
+" doing there.
if has('eval')
let s:save_runtimepath = &runtimepath
let s:save_diff = &diff
set runtimepath-=~/.vim
set runtimepath^=~/.vim,~/.vim/runtime
-" Don't store swap files in the same directory as the edited file. But only if
+" Don't store swap files in the same directory as the edited file, but only if
" we have a "safe" writable directory available.
if filewritable('~/.tmp') == 2 || filewritable('~/tmp') == 2
set directory-=.
set spelllang=en_us
endif
-" Allow buffers with changes to be hidden. Very important for effective
+" Allow buffers with changes to be hidden. Very important for efficient
" editing with multiple buffers. Prevents the "E37: No write since last change
-" (add ! to override)" warning when switching buffers.
+" (add ! to override)" warning when switching modified buffers.
set hidden
" When splitting vertically put the new window right of the current one.
endif
endfunction
- " Display unexpected 'fileformat' and 'fileencoding' settings.
+ " Display unexpected 'fileformat', 'fileencoding' and 'bomb' settings.
function! s:StatuslineFileFormat()
if &fileformat != 'unix'
return '[' . &fileformat . ']'
return ''
endif
endfunction
+ function! s:StatuslineFileBOMB()
+ if exists('+bomb') && &bomb
+ return '[BOM]'
+ else
+ return ''
+ endif
+ endfunction
" Return current syntax group in brackets or nothing if there's none.
function! s:StatuslineSyntaxGroup()
function! SFE()
return s:StatuslineFileEncoding()
endfunction
+ function! SFB()
+ return s:StatuslineFileBOMB()
+ endfunction
function! SSG()
return s:StatuslineSyntaxGroup()
endfunction
set statusline+=%#Error# " display warnings
set statusline+=%{SFF()} " - unexpected file format
set statusline+=%{SFE()} " - unexpected file encoding
+ set statusline+=%{SFB()} " - unexpected file byte order mask
set statusline+=%## " continue with normal colors
endif
" Don't manage the working directory (the default setting is too slow for
" me).
let g:ctrlp_working_path_mode = 0
+
" Path to cache directory. I prefer to keep generated files as local as
" possible.
let g:ctrlp_cache_dir = $HOME . '/.vim/cache/ctrlp'
- " Permanent cache, cleared by a crontab entry.
+ " Permanent cache, cleared by a crontab entry. Use <F5> to update the
+ " cache manually.
let g:ctrlp_clear_cache_on_exit = 0
+ " Don't switch the window if the selected buffer is already open. I want
+ " to open another view on this buffer in most cases.
+ let g:ctrlp_switch_buffer = 0
+
" FSWitch settings.
- " Default don't work well for my projects.
+ " Defaults don't work well for my projects.
augroup vimrc
autocmd BufEnter *.cc let b:fswitchdst = 'h'
\ | let b:fswitchlocs = './'
" Switch to corresponding header/source file.
nnoremap <silent> <Leader>h :FSHere<CR>
+
+" netrw settings.
+ " Don't create ~/.vim/.netrwhist history file.
+ let g:netrw_dirhistmax = 0
endif
" Automatically disable 'paste' mode when leaving insert mode. Thanks to
" Raimondi in #vim on Freenode (2010-08-14 23:01 CEST). Very useful as I only
" want to paste once and then 'paste' gets automatically unset. InsertLeave
-" doesn't exist in older Vims.
+" doesn't exist in older Vims. Use "*p to paste X11's selection, no need for
+" 'paste' in this case.
if exists('##InsertLeave')
autocmd InsertLeave * set nopaste
endif
" Convenient command to see the difference between the current buffer and the
" file it was loaded from, thus the changes you made. Thanks to the
" vimrc_example.vim file in Vim's source. Modified to use the same filetype
-" for the diffed file than the filetype for the original file.
+" for the diffed file as the filetype for the original file.
if !exists(':DiffOrig')
command DiffOrig
\ let s:diff_orig_filetype = &filetype