+" Grow or shrink the window size.
+fun! Resize_Columns(op)
+ " XXX: This won't work inside screen.
+ " We should really detect whether it would work rather than assume it won't.
+ if &term =~ '^screen'
+ return
+ endif
+
+ " Vim 5 hardcodes the size of numbers column to 8.
+ if version >= 600
+ let l:numberwidth = &numberwidth
+ else
+ let l:numberwidth = 8
+ endif
+
+ exec "se columns" . a:op . "=" . l:numberwidth
+endfun
+
+" Toggle number display.
+fun! Number()
+ call Iain_Vars()
+ let &number = ! &number
+
+ let l:i = 0
+ let l:num_numbers = 0
+ while l:i <= winnr("$")
+ if getwinvar(l:i, "&number") == 1
+ let l:num_numbers = l:num_numbers + 1
+ endif
+ let l:i = l:i + 1
+ endwhile
+
+ if l:num_numbers == 0
+ let g:iainextracolumns = 0
+ call Resize_Columns("-")
+ elseif g:iainextracolumns == 0
+ let g:iainextracolumns = 1
+ call Resize_Columns("+")
+ endif
+endfun
+