X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;f=vimrc;h=c3a85eb20042b900e658becc8ca0d7e0b2e71469;hb=b122832efa953ed888415f7a3959d4cbeae6e265;hp=e48c21943e01b4353cac05a8a76198ae5c409cdc;hpb=6ec52f7a8f36cf8ea2cfdf3b50640f37099d2294;p=config%2Fdotfiles.git diff --git a/vimrc b/vimrc index e48c219..c3a85eb 100644 --- a/vimrc +++ b/vimrc @@ -3,14 +3,6 @@ " EDITOR SETTINGS -" Prevent editing as root as it may cause security problems. Use sudoedit -" instead. Thanks to godlygeek in #vim on Freenode (2009-06-19 22:21 CEST). -if $HOME == '/root' || exists('$SUDO_USER') - echomsg 'Running as root is forbidden! Use sudoedit.' - qall -endif - - " Save 'runtimepath' in case it was changed by the system's configuration " files. if has('eval') @@ -22,6 +14,7 @@ set all& " And restore it after all other options were reset. if has('eval') let &runtimepath = s:save_runtimepath + unlet s:save_runtimepath endif " Make sure Vim (and not Vi) settings are used. @@ -224,7 +217,7 @@ cnoremap cnoremap " Write before suspending, thanks to deryni in #vim on Freenode (2011-05-09 -" 20:02 CEST). To suspend without saving either unmap it or use :stop. +" 20:02 CEST). To suspend without saving either unmap this or use :stop. nnoremap :update:stop " 2 gives more verbose information, use it by default. Thanks to NCS_One @@ -252,7 +245,7 @@ nnoremap 8 :8b nnoremap 9 :9b nnoremap 0 :10b -" Make last active window the only window. Similar to o. +" Make last active window the only window. Similar to o. nnoremap O po " Maps to change spell language between English and German and disable spell @@ -320,8 +313,8 @@ if has('mac') || filereadable('/Users/.localized') endif " Disable Apple style movements in MacVim. -if has('gui_macvim') && has('eval') - let macvim_skip_cmd_opt_movement = 1 +if has('gui_macvim') + let g:macvim_skip_cmd_opt_movement = 1 endif " In case 'hlsearch' is used disable it with . Thanks to frogonwheels and @@ -375,12 +368,16 @@ if has('syntax') " Settings for specific filetypes. + " Haskell. + let g:hs_highlight_boolean = 1 + let g:hs_highlight_types = 1 + let g:hs_highlight_more_types = 1 + " Perl. let g:perl_fold = 1 let g:perl_fold_blocks = 1 let g:perl_nofold_packages = 1 let g:perl_include_pod = 1 " syntax coloring for PODs - endif @@ -389,14 +386,14 @@ endif " Use pathogen which allows one 'runtimepath' entry per plugin. This makes " installing/removing/updating plugins simple. (Used for plugins with more " than one file.) -if has('eval') && v:version >= 700 +if v:version >= 700 execute 'call pathogen#runtime_append_all_bundles()' endif " Settings for the NERD commenter. " Don't create any mappings I don't want to use. if has('eval') - let NERDCreateDefaultMappings = 0 + let g:NERDCreateDefaultMappings = 0 endif " Map toggle comment. map NERDCommenterToggle @@ -489,3 +486,52 @@ if has('autocmd') augroup END endif + + +" CUSTOM FUNCTIONS + +if has('eval') + " New text-objects ii and ai to work on text with the same indentation. + " Thanks to + " http://vim.wikia.com/index.php?title=Indent_text_object&oldid=27126 + " (visited on 2011-11-19). + onoremap ai :call IndTxtObj(0) + onoremap ii :call IndTxtObj(1) + vnoremap ai :call IndTxtObj(0)gv + vnoremap ii :call IndTxtObj(1)gv + + function! s:IndTxtObj(inner) + let curline = line(".") + let lastline = line("$") + let i = indent(line(".")) - &shiftwidth * (v:count1 - 1) + let i = i < 0 ? 0 : i + if getline(".") !~ "^\\s*$" + let p = line(".") - 1 + let nextblank = getline(p) =~ "^\\s*$" + while p > 0 + \ && ((i == 0 && !nextblank) + \ || (i > 0 && ((indent(p) >= i + \ && !(nextblank && a:inner)) + \ || (nextblank && !a:inner)))) + - + let p = line(".") - 1 + let nextblank = getline(p) =~ "^\\s*$" + endwhile + normal! 0V + call cursor(curline, 0) + let p = line(".") + 1 + let nextblank = getline(p) =~ "^\\s*$" + while p <= lastline + \ && ((i == 0 && !nextblank) + \ || (i > 0 && ((indent(p) >= i + \ && !(nextblank && a:inner)) + \ || (nextblank && !a:inner)))) + + + let p = line(".") + 1 + let nextblank = getline(p) =~ "^\\s*$" + endwhile + normal! $ + endif + endfunction + +endif