]> ruderich.org/simon Gitweb - config/dotfiles.git/blobdiff - vimrc
vimrc: Be more compatible with less capable versions.
[config/dotfiles.git] / vimrc
diff --git a/vimrc b/vimrc
index 631c84405a266078608de28c8243b7b2c124bc88..61a07040859e69570e18317fbebad844f193040b 100644 (file)
--- a/vimrc
+++ b/vimrc
@@ -8,7 +8,9 @@ set nocompatible
 " EDIT SETTINGS
 
 " Enable automatic file detection, plugin and indention.
-filetype plugin indent on
+if has("autocmd")
+    filetype plugin indent on
+endif
 
 " Use UTF-8 file encoding for all files.
 set fileencodings=utf-8
@@ -50,9 +52,11 @@ set virtualedit=block
 set incsearch
 
 " Activate syntax folding.
-set foldmethod=syntax
-set foldcolumn=2
-set foldlevel=99 " no folding at default
+if has("folding")
+    set foldmethod=syntax
+    set foldcolumn=2
+    set foldlevel=99 " no folding at default
+endif
 
 " Only check for case if the searched word contains a capital character.
 set ignorecase
@@ -89,9 +93,6 @@ set listchars=trail:-
 
 " EDITOR SETTINGS
 
-" Don't use any modelines.
-set nomodeline
-
 " When completing paths first use the longest path then display a list of all
 " possible files.
 set wildmode=longest,list
@@ -105,8 +106,10 @@ endif
 " MAPPINGS (except for plugins, see PLUGIN SETTINGS below)
 
 " Use "," as my mapleader.
-let mapleader = ","
-let maplocalleader = ","
+if has("eval")
+    let mapleader = ","
+    let maplocalleader = ","
+endif
 
 " Use <space> to move down a page and - to move up one like in mutt.
 nnoremap <Space> <C-f>
@@ -116,6 +119,11 @@ nnoremap - <C-b>
 map <Leader>se :set spelllang=en_us<CR>
 map <Leader>sd :set spelllang=de_de<CR>
 
+" Add semicolon to the end of the line. Thanks to
+" http://www.van-laarhoven.org/vim/.vimrc for this idea and godlygeek in #vim
+" for an improved version which doesn't clobber any marks.
+nnoremap <silent> ; :call setline(line('.'), getline('.') . ';')<CR>
+
 " I often type "W" instead of "w" when trying to save a file. Fix my mistake.
 " Thanks to Tony Mechelynck <antoine.mechelynck@gmail.com> from the Vim
 " mailing list for the commands.
@@ -136,8 +144,14 @@ else
         \ ((getcmdtype() == ':' && getcmdpos() <= 2) ? 'q' : 'Q')
 endif
 
+" Make sure xa0 (alt + space) is automatically changed to a normal whitespace
+" if pressed accidentally while in insert mode (happens on Mac sometimes).
+if has("mac")
+    imap <Char-0xa0> <Space>
+endif
+
 " Disable Apple style movements in MacVim.
-if has("gui_macvim")
+if has("gui_macvim") && has("eval")
     let macvim_skip_cmd_opt_movement = 1
 endif
 
@@ -145,18 +159,40 @@ endif
 " SYNTAX SETTINGS
 
 " Activate syntax coloring.
-syntax enable
+if has("syntax")
+    syntax enable
+
+" Highlight text longer then 78 characters. Thanks to Tony Mechelynck
+" <antoine.mechelynck@gmail.com> from the Vim mailing list.
+    if v:version >= 700
+        2match Todo /\%>78v./
+    else
+        match Todo /\%>78v./
+    endif
+endif
 
 
 " PLUGIN SETTINGS
 
 " Settings for the NERD commenter.
 " Don't create any mappings I don't want to use.
-let NERDCreateDefaultMappings = 0
+if has("eval")
+    let NERDCreateDefaultMappings = 0
+endif
 " Map toggle comment.
 map <Leader><Leader> <plug>NERDCommenterToggle
 
 
-" Automatically save and the load the file state (stored in ~/.vim/view).
-autocmd BufWrite * mkview
-autocmd BufRead  * loadview
+" AUTO COMMANDS
+
+" Use a custom auto group to prevent problems when the vimrc files is sourced
+" twice.
+if has("autocmd")
+    augroup vimrc
+        autocmd!
+
+" Use diff filetype for mercurial patches in patch queue.
+        autocmd BufReadPost */.hg/patches/* set filetype=diff
+
+    augroup END
+endif