X-Git-Url: http://git.iain.cx/?a=blobdiff_plain;f=.vimrc;h=ab318daaa0cbf916fdebe37921c324156f16f629;hb=2a3015e18dd1c2057f61d58011badd4e5a6add62;hp=9da37fea14138f2a143b5102dc0740ac148c02aa;hpb=8c502fd1cc463e5f8de03492ea7cfd7eda4e4c65;p=profile.git diff --git a/.vimrc b/.vimrc index 9da37fe..ab318da 100644 --- a/.vimrc +++ b/.vimrc @@ -100,7 +100,7 @@ se hlsearch se titlestring=%{Show_TitleString()} " Syntax highlighting. New versions will use syn enable instead. -if version < 600 +if version < "600" syn on endif @@ -216,7 +216,7 @@ fun! Resize_Columns(op) endif " Vim 5 hardcodes the size of numbers column to 8. - if version >= 600 + if version >= "700" let l:numberwidth = &numberwidth else let l:numberwidth = 8 @@ -230,21 +230,23 @@ 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 + if version >= "700" + 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 - 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 @@ -336,6 +338,7 @@ syn enable if has("gui_running") se guifont=DejaVu\ Sans\ Mono\ 10 colo darkblue + hi LineNr guibg=#303030 elseif &t_Co > 16 try colo iain @@ -345,6 +348,8 @@ endif if has("win32") se guifont=DejaVu_Sans_Mono:h10:cANSI endif +hi! link TabLineSel StatusLine +hi! link TabLine StatusLineNC " Ignore whitespace when diffing. se diffopt=filler,iwhite @@ -481,6 +486,77 @@ endif if version >= "700" version 7.0 +" Tab line. +fun! Show_TabLine() + let s = "%#TabLineFill#Tabs:" + + for i in range(tabpagenr("$")) + let n = i + 1 + " Get the label. + let buflist = tabpagebuflist(n) + let winnr = tabpagewinnr(n) + let label = bufname(buflist[winnr - 1]) + if label == "" + let label = "No Name" + else + let label = fnamemodify(label, ":t") + if strlen(label) >= 18 + let label = label[0:17] . ".." + endif + endif + + " Find out if any buffer was modified. + let modified = '' + for j in buflist + if getbufvar(j, "&modified") == 1 + let modified = '+' + break + endif + endfor + + " Choose highlighting. + if n == tabpagenr() + let s .= "%#TabLineSel#[" . n . modified . " " . label . "]" + else + let s .= "%#TabLine# " . n . modified . " " . label . " " + endif + endfor + + " Padding. + let s .= "%#TabLine#%T" + return s +endfun + +" Per tab label for the GUI. +fun! Show_GUITabLine() + let s = "" + let buflist = tabpagebuflist(v:lnum) + let winnr = tabpagewinnr(v:lnum) + + let label = bufname(buflist[winnr - 1]) + if label == "" + let label = "[No Name]" + else + let label = fnamemodify(label, ":t") + if strlen(label) >= 18 + let label = label[0:17] . ".." + endif + endif + + for j in buflist + if getbufvar(j, "&modified") == 1 + let s .= "+" + break + endif + endfor + + let s .= " " . label + return s +endfun + +set tabline=%!Show_TabLine() +set guitablabel=%!Show_GUITabLine() + au CursorHoldI * call Highlight_StatusLine("H") au CursorMovedI * call Highlight_StatusLine("h") au FocusGained * call Highlight_StatusLine("F") @@ -495,13 +571,16 @@ se diffopt+=vertical se numberwidth=5 " Add "previous tab" mapping as gb. -map gb :tabPrev +map gb :tabprevious: " Transparency. if has("gui_macvim") se transparency=15 endif +" Yet more GUI options. Add tabs. +se go+=e + " Perforce. let g:p4EnableMenu=1 let g:p4Presets='P4CONFIG'