X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;f=vimrc;h=82e8d33b2dcd01d9394f9d27f5dec90909f64f2e;hb=41809f0a8140377900471037281b11401ea7286c;hp=40e95ba3c9a798419ca7a1753859c1c8c1ff2fe8;hpb=18a2c1a79c19450bc858152b2f5d60c1a88f4058;p=config%2Fdotfiles.git diff --git a/vimrc b/vimrc index 40e95ba..82e8d33 100644 --- 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 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 h :FSHere + +" 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 @@ -958,13 +981,17 @@ if has('autocmd') endif " Display a warning when editing a file which contains "do not edit" (ignoring -" the case, \c), for example template files which were preprocessed or -" auto-generated files. Especially useful when the header is not displayed on -" the first screen, e.g. when the old position is restored. Not for vimrc -" though. +" the case) in the first lines of the file, for example template files which +" were preprocessed or auto-generated files. Especially useful when the header +" is not displayed on the first screen, e.g. when the old position is +" restored. function! s:SearchForDoNotEditHeader() - if search('\cdo not edit', 'n') == 0 - \ || expand(':t') =~# '^.\?vimrc$' + " Only search the first 20 lines to prevent false positives, e.g. + " in scripts which write files containing this warning and ignore + " the case (\c). (Can't use search()'s {stopline} as we might not + " start searching from the top.) + let l:match = search('\cdo not edit', 'n') + if l:match == 0 || l:match > 20 return endif @@ -987,6 +1014,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 +1049,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