X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;f=vimrc;h=e209796979a08a4f66f23a6a80a387538415d569;hb=1c420fe0d57fd9e8bfbe59ab3fccca48f2f9ae2b;hp=4b4e03cce905baa65271756daffa7376caaeef0b;hpb=3a5fe52f6940f7e57f99ce80b5098903ec9e0837;p=config%2Fdotfiles.git diff --git a/vimrc b/vimrc index 4b4e03c..e209796 100644 --- a/vimrc +++ b/vimrc @@ -363,6 +363,14 @@ if has('syntax') for x in ['TODO', 'XXX', 'FIXME', 'CHANGED', 'REMOVED', 'DELETED'] call matchadd('Todo', x) endfor + +" Highlight unicode whitespace which is no normal whitespace (0x20). + for 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' . x) + endfor endif " Settings for specific filetypes. @@ -411,6 +419,7 @@ endif " twice. if has('autocmd') augroup vimrc +" Remove all autocmds from the current group. autocmd! " Go to last position of opened files. Taken from :help last-position-jump. @@ -435,10 +444,13 @@ 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. - if exists('#InsertLeave') + if exists('##InsertLeave') autocmd InsertLeave * set nopaste endif +" Save changes when running :mak[e] before 'makeprg' is called. + autocmd QuickFixCmdPre * write + " AFTER/FTPLUGIN AUTO COMMANDS " Disable spell checking for files which don't need it. @@ -456,6 +468,8 @@ if has('autocmd') \ setlocal textwidth=72 " 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. + autocmd FileType tex compiler tex " FTDETECT AUTO COMMANDS @@ -475,3 +489,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! 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