Imported colours and scripts.
[profile.git] / .vimrc
diff --git a/.vimrc b/.vimrc
old mode 100755 (executable)
new mode 100644 (file)
index c594723..6bb850d
--- a/.vimrc
+++ b/.vimrc
@@ -98,6 +98,9 @@ fun! Iain_Vars()
   if ! exists("b:iainhex")
     let b:iainhex = 0
   endif
+  if ! exists("b:iainverbose")
+    let b:iainverbose = 0
+  endif
 endfun
 
 " Helper for status line.
@@ -146,12 +149,17 @@ endfun
 fun! Show_StatusLine()
   call Iain_Vars()
   let sl1='%2n\:\ %<%f\ [%{Show_List()}%{Show_Case()}%{Show_Tabstop()}%{Show_Paste()}%Y%M%R]\ %='
-  let sl2='\ \|\ P:%4.6o\ L:%4.6l/%-4.6L\ C:%3.6c\ \|\ %P'
+  let sl3='L:%4.6l/%-4.6L\ C:%3.6c\ \|\ %P'
   let hexformat='%b'
   if b:iainhex
     let hexformat='0\x%02B'
   endif
-  exec "set statusline=" . sl1 . hexformat . sl2
+  if b:iainverbose
+    let sl2=hexformat . '\ \|\ P:%4.6o\ '
+  else
+    let sl2=''
+  endif
+  exec "set statusline=" . sl1 . sl2 . sl3
 endfun
 
 " Restore window size.
@@ -219,9 +227,6 @@ endif
 if version >= "600"
 version 6.0
 
-" Allow room for numbers.
-se numberwidth=5
-
 " Track changing number mode.
 let g:numbercols=&columns
 let g:numberchanges=0
@@ -279,9 +284,17 @@ fun! Cycle_HexStatusLine()
   call Show_StatusLine()
 endfun
 
+" Cycle verbose display of toolbar stuff.
+fun! Cycle_VerboseStatusLine()
+  call Iain_Vars()
+  let b:iainverbose = ! b:iainverbose
+  call Show_StatusLine()
+endfun
+
 " Cycle between number mode.
 " FIXME: Toggling in a split window doesn't work properly.  We need to track 
 " the number of windows and number modes.  Something for later...
+" Perhaps have a redraw callback that checks width and original column number.
 fun! Cycle_Number()
   if &number
     " Restore width.
@@ -304,7 +317,13 @@ fun! Cycle_Number()
       " Expand if this was the first change.
       if g:numberchanges == 0
         let g:numbercols=&columns
-        let &columns=&columns+&numberwidth
+        if version >= 700
+          " Expand column by our preferred width.
+          let &columns=&columns+&numberwidth
+        else
+          " Vim 6 hardcodes width to 8.
+          let &columns=&columns+8
+        endif
       endif
 
       " Track changes.
@@ -338,6 +357,8 @@ map Qf :se foldenable!<CR>:<CR>
 map Qp :se paste!<CR>:<CR>
 " Swap hex/decimal statusline with Qx
 map Qx :call Cycle_HexStatusLine()<CR>:<CR>
+" Change statusline verbosity with Qv
+map Qv :call Cycle_VerboseStatusLine()<CR>:<CR>
 " Swap case-sensitivity with Qc.
 map Qc :call Invert_Case()<CR>:<CR>
 " Cycle list styles with Ql.
@@ -361,6 +382,9 @@ endif
 if version >= "700"
 version 7.0
 
+" Set size of numbers column.
+se numberwidth=5
+
 " Add "previous tab" mapping as gb.
 map gb :tabPrev<CR>
 endif