]> ruderich.org/simon Gitweb - config/dotfiles.git/blobdiff - vimrc
vim/bundle/gundo: Add as submodule.
[config/dotfiles.git] / vimrc
diff --git a/vimrc b/vimrc
index 40e95ba3c9a798419ca7a1753859c1c8c1ff2fe8..39cadf0cc03a383c4b3d650d2ec4e113263005c4 100644 (file)
--- a/vimrc
+++ b/vimrc
@@ -1,6 +1,6 @@
 " 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
@@ -21,7 +21,8 @@
 " 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
@@ -49,7 +50,7 @@ set encoding=utf-8
 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-=.
@@ -228,9 +229,9 @@ if exists('+spell') && has('syntax')
     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.
@@ -387,7 +388,7 @@ if has('statusline')
         endif
     endfunction
 
-    " Display unexpected 'fileformat' and 'fileencoding' settings.
+    " Display unexpected 'fileformat', 'fileencoding' and 'bomb' settings.
     function! s:StatuslineFileFormat()
         if &fileformat != 'unix'
             return '[' . &fileformat . ']'
@@ -403,6 +404,13 @@ if has('statusline')
             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()
@@ -427,6 +435,9 @@ if has('statusline')
     function! SFE()
         return s:StatuslineFileEncoding()
     endfunction
+    function! SFB()
+        return s:StatuslineFileBOMB()
+    endfunction
     function! SSG()
         return s:StatuslineSyntaxGroup()
     endfunction
@@ -451,6 +462,7 @@ if has('statusline')
         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
 
@@ -888,14 +900,20 @@ if has('eval')
     " 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 = './'
@@ -905,6 +923,10 @@ if has('eval')
 
     " 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
 
 
@@ -937,7 +959,8 @@ if has('autocmd')
 " 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
@@ -987,6 +1010,10 @@ if has('autocmd')
 " the recommendation for git commit messages (http://tpope.net/node/106).
         autocmd FileType gitcommit let g:secure_modelines_allowed_items = [] |
                                  \ setlocal textwidth=72
+" Fix 'include' setting for shell files to recognize '.' and 'source'
+" commands. Use &l:include instead of setlocal which requires excessive
+" escaping of \.
+        autocmd FileType sh let &l:include = '^\s*\(\.\|source\)\s\+'
 " Use the same comment string as for Vim files in Vimperator files.
         autocmd FileType vimperator setlocal commentstring=\"%s
 " Use TeX compiler for (La)TeX files.
@@ -1018,7 +1045,7 @@ if has('eval')
 " 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