]> ruderich.org/simon Gitweb - config/dotfiles.git/blobdiff - vimrc
vimrc: Fix indentation in s:CustomSyntaxHighlights().
[config/dotfiles.git] / vimrc
diff --git a/vimrc b/vimrc
index 20685e94930d75e6b0ba75f06fea735d339f4bf1..2406b1c809b20f901207c636a33b93ee6c2b1225 100644 (file)
--- a/vimrc
+++ b/vimrc
@@ -368,7 +368,9 @@ if has('eval')
     function! s:VSetSearch()
         let l:temp = @@
         normal! gvy
-        let @/ = '\V' . substitute(escape(@@, '\'), '\n', '\\n', 'g')
+        " Added \C to force 'noignorecase' while searching the current visual
+        " selection. I want to search for the exact string in this case.
+        let @/ = '\C' . '\V' . substitute(escape(@@, '\'), '\n', '\\n', 'g')
         let @@ = l:temp
     endfunction
     vnoremap * :<C-U>call <SID>VSetSearch()<CR>//<CR>
@@ -495,30 +497,50 @@ if has('syntax')
         augroup END
     endif
 
+" Function to enable all custom highlights. Necessary as highlights are
+" window-local and thus must be set for each new window.
+    function! s:CustomSyntaxHighlights()
+        " Not the first time called, nothing to do.
+        if exists('w:vimrc_syntax_run')
+            return
+        endif
+        let w:vimrc_syntax_run = 1
+
 " Highlight lines longer than 78 characters. Thanks to Tony Mechelynck
 " <antoine.mechelynck@gmail.com> from the Vim mailing list. It can easily be
 " disabled when necessary with :2match (in Vim >= 700).
-    if exists(':2match')
-        2match Todo /\%>78v./
-    else
-        match Todo /\%>78v./
-    endif
+        if exists(':2match')
+            2match Todo /\%>78v./
+        else
+            match Todo /\%>78v./
+        endif
 
-    if exists('*matchadd')
+        if exists('*matchadd')
 " Highlight some important keywords in all documents.
-        for s:x in ['TODO', 'XXX', 'FIXME', 'CHANGED', 'REMOVED', 'DELETED']
-            call matchadd('Todo', s:x)
-        endfor
+            for s:x in ['TODO', 'XXX', 'FIXME',
+                      \ 'CHANGED', 'REMOVED', 'DELETED']
+                call matchadd('Todo', s:x)
+            endfor
 
 " Highlight unicode whitespace which is no normal whitespace (0x20).
-        for s: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' . s:x)
-        endfor
+            for s: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' . s:x)
+            endfor
+        endif
+    endfunction
+" Enable highlights for the current and all new windows. Thanks to bairui in
+" #vim on Freenode (2012-04-01 00:22 CEST) for the WinEnter suggestion.
+    call <SID>CustomSyntaxHighlights()
+    if has('autocmd')
+        augroup vimrc
+            autocmd WinEnter * call <SID>CustomSyntaxHighlights()
+        augroup END
     endif
 
+
 " Settings for specific filetypes.
 
     " Haskell.