X-Git-Url: http://git.iain.cx/?a=blobdiff_plain;f=.vimrc;h=77a1d45b38d9a25a070df700ed03c86b27eaec3c;hb=eae36419db72d287dc1af274027ab1c2d3d18dec;hp=1017617b85d7c823bba0e14ee1ba104dbf423b51;hpb=c38f69aebc35edde583a54442646eada27364255;p=profile.git diff --git a/.vimrc b/.vimrc index 1017617..77a1d45 100644 --- a/.vimrc +++ b/.vimrc @@ -93,6 +93,10 @@ se hlsearch " Syntax highlighting. syn on +" Use a discernably different colour to highlight the cursor which shows +" matching brackets. Our regular cursor is green so use blue instead of cyan. +hi MatchParen ctermbg=blue + " Catch typos. command! W :w command! Wq :wq @@ -109,6 +113,10 @@ fun! Iain_Vars() if ! exists("b:iainverbose") let b:iainverbose = 0 endif + if ! exists("b:iainstatus") + " Window Flags: (F)ocused, (I)nsert mode, Cursor (H)old. + let b:iainstatus = "Fih" + endif endfun " Helper for status line. @@ -238,11 +246,11 @@ syn enable " Nice GUI colour. if has("gui_running") - se guifont=Bitstream\ Vera\ Sans\ Mono\ 10 + se guifont=DejaVu\ Sans\ Mono\ 10 colo darkblue endif if has("win32") - se guifont=Bitstream_Vera_Sans_Mono:h10:cANSI + se guifont=DejaVu_Sans_Mono:h10:cANSI endif " Ignore whitespace when diffing. @@ -254,7 +262,7 @@ if &diff endif " Status bar matches the colour. -highlight StatusLine guifg=white guibg=blue ctermbg=white ctermfg=blue +highlight StatusLine guifg=white guibg=darkblue ctermbg=white ctermfg=darkblue " Numbers in blue. highlight LineNr term=underline cterm=bold guifg=blue ctermfg=blue @@ -316,9 +324,9 @@ endfun " the Qx sequence quickly enough. Vim 6 allows us to forget the Ex mapping. map Q -" Swap hex/decimal statusline with Qx +" Swap hex/decimal statusline with Qx. map Qx :call Cycle_HexStatusLine(): -" Change statusline verbosity with Qv +" Change statusline verbosity with Qv. map Qv :call Cycle_VerboseStatusLine(): " Cycle list styles with Ql. map Ql :call Cycle_List(): @@ -328,6 +336,9 @@ map Qt :Tlist map Qf :se foldenable!: " Toggle quickfix window with Qq. map Qq :call Cycle_Quickfix(): +" Rerun filetype detection with Qs. The s is for syntax, as this will be +" updated as a side-effect. +map Qs :filetype detect: endif @@ -337,6 +348,44 @@ endif if version >= "700" version 7.0 +" Change status bar colour when entering insert mode. +fun! Highlight_StatusLine(flag) + " Get current status. + call Iain_Vars() + + " Change the status based on the flag. XXX: Does Vim let us to do flags? + let re = "[" . tolower(a:flag) . toupper(a:flag) . "]" + let b:iainstatus = substitute(b:iainstatus, re, a:flag, "") + + " Default colour. + let colour = "darkblue" + " 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" + else + let colour = "darkred" + endif + endif + else + if b:iainstatus =~# "I" + " Regular insert mode. + let colour = "darkred" + endif + endif + + exec "highlight StatusLine guifg=white guibg=" . colour . " ctermbg=white ctermfg=" . colour +endfun + +au CursorHoldI * call Highlight_StatusLine("H") +au CursorMovedI * call Highlight_StatusLine("h") +au FocusGained * call Highlight_StatusLine("F") +au FocusLost * call Highlight_StatusLine("f") +au InsertEnter * call Highlight_StatusLine("I") +au InsertLeave * call Highlight_StatusLine("i") + " Make diffs vertical by default. se diffopt+=vertical