]> ruderich.org/simon Gitweb - config/dotfiles.git/blobdiff - vimrc
vimrc: Only use 'foldcolumn' if there's enough space.
[config/dotfiles.git] / vimrc
diff --git a/vimrc b/vimrc
index a793d1462d792a575e522042148e8621be99a0d4..cfd10d4099f86fa8488d3548225429cf5ae9d227 100644 (file)
--- a/vimrc
+++ b/vimrc
@@ -51,7 +51,7 @@ set runtimepath^=~/.vim,~/.vim/runtime
 
 " Don't store swap files in the same directory as the edited file.
 set directory-=.
-" But store them in ~/.tmp if available.
+" But store them in ~/.tmp or ~/tmp (already set by default) if available.
 set directory^=~/.tmp
 
 " Disable modelines as they may cause security problems. Instead use
@@ -139,7 +139,11 @@ set incsearch
 " Activate syntax folding.
 if has('folding')
     set foldmethod=syntax
-    set foldcolumn=2
+    " Only use fold column if we have enough space (for example in a (virtual)
+    " terminals).
+    if &columns > 80
+        set foldcolumn=2
+    endif
     set foldlevel=99 " no closed folds at default, 'foldenable' would disable
                      " folding which is not what I want
 endif
@@ -150,7 +154,7 @@ set smartcase
 
 " Activate spell checking, use English as default.
 if exists('+spell') && has('syntax')
-    " But not when diffing as spell checking is distracting in this case.
+    " But not when diffing because spell checking is distracting in this case.
     if !&diff
         set spell
     endif
@@ -517,18 +521,23 @@ if has('syntax')
 
         if exists('*matchadd')
 " Highlight some important keywords in all documents.
-            for l:x in ['TODO', 'XXX', 'FIXME',
-                      \ 'CHANGED', 'REMOVED', 'DELETED']
-                call matchadd('Todo', l:x)
-            endfor
-
-" Highlight unicode whitespace which is no normal whitespace (0x20).
-            for l:x in ['00a0', '1680', '180e', '2000', '2001', '2002',
-                      \ '2003', '2004', '2005', '2006', '2007', '2008',
-                      \ '2009', '200a', '200b', '200c', '200d', '202f',
-                      \ '205f', '2060', '3000', 'feff']
-                call matchadd('Error', '\%u' . l:x)
-            endfor
+            let l:todos = ['TODO', 'XXX', 'FIXME',
+                         \ 'CHANGED', 'REMOVED', 'DELETED']
+            " Compatibility fix for Vim 6.4 which can't handle for in function
+            " (without function it's ignored).
+            execute '  for l:x in l:todos'
+                  \ '|     call matchadd("Todo", l:x)'
+                  \ '| endfor'
+
+" Highlight Unicode whitespace which is no normal whitespace (0x20).
+            let l:spaces = ['00a0', '1680', '180e', '2000', '2001', '2002',
+                          \ '2003', '2004', '2005', '2006', '2007', '2008',
+                          \ '2009', '200a', '200b', '200c', '200d', '202f',
+                          \ '205f', '2060', '3000', 'feff']
+            " Compatibility fix for Vim 6.4.
+            execute '  for l:x in l:spaces'
+                  \ '|     call matchadd("Error", "\%u" . l:x)'
+                  \ '| endfor'
         endif
     endfunction
 " Enable highlights for the current and all new windows. Thanks to bairui in
@@ -540,7 +549,6 @@ if has('syntax')
         augroup END
     endif
 
-
 " Settings for specific filetypes.
 
     " Haskell.
@@ -555,6 +563,10 @@ if has('syntax')
     let g:perl_include_pod = 1 " syntax coloring for PODs
     " Python.
     let g:python_highlight_all = 1
+    " Shell.
+    let g:sh_noisk = 1        " don't add . to 'iskeyword'
+    let g:sh_is_posix = 1     " POSIX shell (e.g. dash) is compatible enough
+    let g:sh_fold_enabled = 7 " functions (1), heredoc (2) and if/do/for (4)
     " Vim.
     let g:vimsyn_embed = 0      " don't highlight embedded languages
     let g:vimsyn_folding = 'af' " folding for autogroups (a) and functions (f)
@@ -568,9 +580,9 @@ endif
 if has('eval')
 " Use pathogen which allows one 'runtimepath' entry per plugin. This makes
 " installing/removing/updating plugins simple. (Used for plugins with more
-" than one file.)
+" than one file.) Ignore errors in case pathogen is not installed.
     if v:version >= 700
-        execute 'call pathogen#runtime_append_all_bundles()'
+        silent! execute 'call pathogen#runtime_append_all_bundles()'
     endif
 
 " Settings for the NERD commenter.
@@ -630,6 +642,15 @@ if has('autocmd')
             autocmd QuickFixCmdPre * write
         endif
 
+" Don't ignore case while in insert mode, but ignore case in all other modes.
+" This causes <C-N>/<C-P> to honor the case and thus only complete matching
+" capitalization. But while searching (/) 'ignorecase' is used.
+" InsertEnter/InsertLeave doesn't exist in older Vims.
+        if exists('##InsertEnter') && exists('##InsertLeave')
+            autocmd InsertEnter * set noignorecase
+            autocmd InsertLeave * set   ignorecase
+        endif
+
 " AFTER/FTPLUGIN AUTO COMMANDS
 
 " Disable spell checking for files which don't need it.