Git configuration.
[profile.git] / .vimrc
diff --git a/.vimrc b/.vimrc
index 24b6530..8385302 100644 (file)
--- a/.vimrc
+++ b/.vimrc
@@ -61,19 +61,6 @@ se tags=~/.tags,./tags,tags
 " Don't timeout waiting to interpet, eg, <ESC>OA as an escape code.
 se ttimeoutlen=100
 
-" Function to create mappings with either a hardcoded \ or <Leader>.
-fun! Mapping(keysequence,mapping)
-  if version >= "600"
-    exec "map \\" . a:keysequence . " " . a:mapping
-  else
-    exec "map <Leader>" . a:keysequence . " " . a:mapping
-  endif
-endfun
-
-" Use - and = to create underlines.
-call Mapping("-", "yyp:s/./-/g<RETURN>:let @/=''<RETURN>:<RETURN>")
-call Mapping("=", "yyp:s/./=/g<RETURN>:let @/=''<RETURN>:<RETURN>")
-
 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 " Handle options only available in Vim 5 and above.
 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
@@ -85,11 +72,18 @@ if ! has("gui_running")
   se bg=dark
 endif
 
+" Enable tab-completion prompting for commands.
+se wildmenu
+" Don't list object files when globbing files to load.
+se wildignore+=*.o,*.obj
+" So there's no need to assign them low priority.
+se suffixes-=*.o,*.obj
+
 " Vim 5 hardcodes the size of numbers column to 8.
 let numberwidth=8
 
 " Save sessions in UNIX format with / as file separator.  This is
-" cross-platoform.
+" cross-platform.
 se ssop+=unix,slash
 
 " Nuke any pre-existing autocommands.
@@ -107,8 +101,13 @@ se t_WS=\e[8;%p1%d;%p2%dt
 " Highlight search results.
 se hlsearch
 
-" Syntax highlighting.
-syn on
+" Set graphical window title.
+se titlestring=%{Show_TitleString()}
+
+" Syntax highlighting.  New versions will use syn enable instead.
+if version < 600
+  syn on
+endif
 
 " Use a discernably different colour to highlight the cursor which shows 
 " matching brackets.  Our regular cursor is green so use blue instead of cyan.
@@ -178,6 +177,16 @@ fun! Show_Paste()
   endif
 endfun
 
+" Show the window title.
+fun! Show_TitleString()
+  if bufname("") == ""
+    let ts1='Vim'
+  else
+    let ts1=printf("%2d: %s", bufnr(""), expand('%t'))
+  endif
+  return printf("%s (%s) %s", ts1, getcwd(), v:servername)
+endfun
+
 " Show the status line.
 fun! Show_StatusLine()
   call Iain_Vars()
@@ -209,19 +218,36 @@ au BufLeave * if &ft == "make" | call MakeMode_unmap() | endif
 
 " Entering Make mode.
 fun! MakeMode_map()
-  set list
+       call Iain_Vars()
+  let b:iainlist=1
+  call Cycle_List()
+  set ts=8
   set noexpandtab
 endfun
 
 " Leaving Make mode.
 fun! MakeMode_unmap()
-  set nolist
+  call Cycle_List()
+  set ts=2
   set expandtab
 endfun
 
 " Show the status line for the first time.
 call Show_StatusLine()
 
+" Function to create mappings with either a hardcoded \ or <Leader>.
+fun! Mapping(keysequence,mapping)
+  if version < "600"
+    exec "map \\" . a:keysequence . " " . a:mapping
+  else
+    exec "map <Leader>" . a:keysequence . " " . a:mapping
+  endif
+endfun
+
+" Use - and = to create underlines.
+call Mapping("-", "yyp:s/./-/g<RETURN>:let @/=''<RETURN>:<RETURN>")
+call Mapping("=", "yyp:s/./=/g<RETURN>:let @/=''<RETURN>:<RETURN>")
+
 " Change to ts=2 with \2.
 call Mapping("2", ":se ts=2<CR>:<CR>")
 " Change to ts=4 with \4.
@@ -247,6 +273,9 @@ call Mapping("/", ":let @/=\"\"<CR>:<CR>")
 " Forget the Ex mode mapping.
 map Q <NOP>
 
+" Vim tip 99: What's the highlighting group under the cursor?
+call Mapping("h", ":echo \"hi<\" . synIDattr(synID(line(\".\"),col(\".\"),1),\"name\") . '> trans<' . synIDattr(synID(line(\".\"),col(\".\"),0),\"name\") . \"> lo<\" . synIDattr(synIDtrans(synID(line(\".\"),col(\".\"),1)),\"name\") . \">\"<CR>")
+
 endif
 
 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
@@ -268,6 +297,11 @@ syn enable
 if has("gui_running")
   se guifont=DejaVu\ Sans\ Mono\ 10
   colo darkblue
+elseif &t_Co > 16
+  try
+    colo iain
+  catch
+  endtry
 endif
 if has("win32")
   se guifont=DejaVu_Sans_Mono:h10:cANSI
@@ -281,13 +315,13 @@ if &diff
   let &columns = 164
 endif
 
-" Numbers in blue.
-highlight LineNr term=underline cterm=bold guifg=blue ctermfg=blue
-
 " Remember that we are opening the quickfix window.
 au BufWinEnter quickfix let g:quickfixing=1
 au BufUnload * if &ft == "qf" | let g:quickfixing=0 | endif
 
+" Allow in-place editing of crontabs.
+au FileType crontab set backupcopy=yes
+
 " Make * and # work the way you expect in visual mode.
 vnoremap * y/\V<C-R>=substitute(escape(@@,"/\\"),"\n","\\\\n","ge")<CR><CR>
 vnoremap # y?\V<C-R>=substitute(escape(@@,"?\\"),"\n","\\\\n","ge")<CR><CR>
@@ -370,19 +404,19 @@ fun! Highlight_StatusLine(flag)
     if b:iainstatus =~# "I"
       " Held in insert mode.  Add extra highlight if we don't have focus.
       if b:iainstatus =~# "f"
-        let s:colour = "darkmagenta"
-      else
         let s:colour = "darkred"
+      else
+        let s:colour = "darkmagenta"
       endif
-      let s:term88colour = "32"
-      let s:term256colour = "88"
+      let s:term88colour = "33"
+      let s:term256colour = "89"
     endif
   else
     if b:iainstatus =~# "I"
       " Regular insert mode.
-      let s:colour = "darkred"
-      let s:term88colour = "32"
-      let s:term256colour = "88"
+      let s:colour = "darkmagenta"
+      let s:term88colour = "33"
+      let s:term256colour = "89"
     endif
   endif
 
@@ -421,4 +455,13 @@ se numberwidth=5
 
 " Add "previous tab" mapping as gb.
 map gb :tabPrev<CR>
+
+" Transparency.
+if has("gui_macvim")
+  se transparency=15
+endif 
+
+" Perforce.
+let g:p4EnableMenu=1
+let g:p4Presets='P4CONFIG'
 endif