Use a nicer bold colour.
[profile.git] / .vimrc
diff --git a/.vimrc b/.vimrc
index 77a1d45..05646ee 100644 (file)
--- a/.vimrc
+++ b/.vimrc
@@ -58,6 +58,9 @@ se smartcase
 " Look for ctags in home directory first.
 se tags=~/.tags,./tags,tags
 
+" Don't timeout waiting to interpet, eg, <ESC>OA as an escape code.
+se ttimeoutlen=100
+
 " Use - and = to create underlines.
 map - yyp:s/./-/g<RETURN>:let @/=''<RETURN>:<RETURN>
 map = yyp:s/./=/g<RETURN>:let @/=''<RETURN>:<RETURN>
@@ -68,6 +71,11 @@ map = yyp:s/./=/g<RETURN>:let @/=''<RETURN>:<RETURN>
 if version >= "500"
 version 5.0
 
+" Tell Vim we use dark backgrounds in our terminals.
+if ! has("gui_running")
+  se bg=dark
+endif
+
 " Vim 5 hardcodes the size of numbers column to 8.
 let numberwidth=8
 
@@ -358,25 +366,40 @@ fun! Highlight_StatusLine(flag)
   let b:iainstatus = substitute(b:iainstatus, re, a:flag, "")
 
   " Default colour.
-  let colour = "darkblue"
+  let s:colour = "darkblue"
+  let s:termcolour = ""
+  let s:term88colour = "17"
+  let s:term256colour = "17"
   " Maybe override depending on status.
   if b:iainstatus =~# "H"
     if b:iainstatus =~# "I"
       " Held in insert mode.  Add extra highlight if we don't have focus.
       if b:iainstatus =~# "f"
-        let colour = "darkmagenta"
+        let s:colour = "darkmagenta"
       else
-        let colour = "darkred"
+        let s:colour = "darkred"
       endif
+      let s:term88colour = "32"
+      let s:term256colour = "88"
     endif
   else
     if b:iainstatus =~# "I"
       " Regular insert mode.
-      let colour = "darkred"
+      let s:colour = "darkred"
+      let s:term88colour = "32"
+      let s:term256colour = "88"
     endif
   endif
 
-  exec "highlight StatusLine guifg=white guibg=" . colour . " ctermbg=white ctermfg=" . colour
+  if &t_Co == 88
+    let s:termcolour = s:term88colour
+  elseif &t_Co == 256
+    let s:termcolour = s:term256colour
+  else
+    let s:termcolour = s:colour
+  endif
+
+  exec "highlight StatusLine guifg=white guibg=" . s:colour . " ctermbg=white ctermfg=" . s:termcolour
 endfun
 
 au CursorHoldI * call Highlight_StatusLine("H")
@@ -385,6 +408,7 @@ au FocusGained * call Highlight_StatusLine("F")
 au FocusLost * call Highlight_StatusLine("f")
 au InsertEnter * call Highlight_StatusLine("I")
 au InsertLeave * call Highlight_StatusLine("i")
+call Highlight_StatusLine("")
 
 " Make diffs vertical by default.
 se diffopt+=vertical