X-Git-Url: http://git.iain.cx/?p=profile.git;a=blobdiff_plain;f=.vimrc;h=85b1595c96cebada42a17bc3407c86c8734fe3cc;hp=9b1c07f47a3692905f8eb0a61cfeafe28ec69a2a;hb=ec3edda623d65ecf59f265dfc89561b39ba7ddaa;hpb=8258aae3ed4e6059d22911a4ad7e41d40ebe9ac3 diff --git a/.vimrc b/.vimrc index 9b1c07f..85b1595 100644 --- a/.vimrc +++ b/.vimrc @@ -129,10 +129,13 @@ augroup StatusLine autocmd! augroup END -" Save the current window width so we can restore it when we quit. +" Save the current window dimensions so we can restore them when we quit. if ! exists("g:oldcols") let g:oldcols=&columns endif +if ! exists("g:oldlines") + let g:oldlines=&lines +endif " More GUI options. Add icon and tearoffs. se go+=i @@ -302,7 +305,7 @@ fun! Can_Resize() "{{{2 return g:resizable endfun "}}}2 -" Grow or shrink the window size. +" Grow or shrink the window width. fun! Resize_Columns(op, ...) "{{{2 if a:op == "" return @@ -340,6 +343,25 @@ fun! Resize_Columns(op, ...) "{{{2 exe l:resize endfun "}}}2 +" Grow or shrink the window height. +fun! Resize_Lines(op, lines) "{{{2 + if a:op == "" + return + endif + + if ! Can_Resize() + return + endif + + exe "let l:resize=" . &lines . a:op . a:lines + if &term =~ '^screen' + let l:resize = l:resize + 1 + endif + let l:resize = "se lines=" . l:resize + + exe l:resize +endfun "}}}2 + " Set extra columns depending on window status. fun! Extra_Columns(extra, var, ...) "{{{2 " Vim 6 doesn't have winnr("$"). Determine which windows are open @@ -372,9 +394,9 @@ fun! Extra_Columns(extra, var, ...) "{{{2 if getwinvar(l:i, "&modified") =~ '^\d' let l:n = l:n + 1 - let l:val = 0 - exe "if getwinvar(" . l:i . ", '" . a:var . "') " . l:condition . " | let l:val = 1 | endif" - if l:val + let l:val = 0 + exe "if getwinvar(" . l:i . ", '" . a:var . "') " . l:condition . " | let l:val = 1 | endif" + if l:val exe "let l:windows = '" . l:windows . ":" . l:i . "'" endif endif @@ -411,7 +433,10 @@ fun! Number(resize) "{{{2 endfun "}}}2 " Restore window size. -au Display VimLeave * if exists("g:oldcols") | call Resize_Columns("-", (&columns - g:oldcols)) | endif +if ! has("gui_running") + au Display VimLeave * if exists("g:oldcols") | call Resize_Columns("-", (&columns - g:oldcols)) | endif + au Display VimLeave * if exists("g:oldlines") | call Resize_Lines("-", (&lines - g:oldlines)) | endif +endif " Map Makefile mode. au Mode BufEnter * if &ft == "make" | call MakeMode_map() | endif @@ -708,7 +733,7 @@ fun! Highlight_Signs(...) "{{{2 let l:var = tolower(l:name) let l:sign = substitute(l:sign, '^[A-Za-z]\+', "", "") let l:ascii = matchstr(l:sign, '^:.') - let l:mark = substitute(l:sign, '^\(:.\)*[.-=]', "", "") + let l:mark = substitute(l:sign, '^\(:.\)*[.=-]', "", "") if strlen(l:ascii) let l:ascii = substitute(l:ascii, '^:', "", "") else @@ -762,7 +787,7 @@ fun! Cycle_Signs(resize) "{{{2 let l:sign = substitute(l:sign, ':.', "", "") let l:sign = substitute(l:sign, '=', " texthl=MarkSign text=", "") let l:sign = substitute(l:sign, '\.', " texthl=MarkDot text=", "") - let l:sign = substitute(l:sign, '-', " texthl=MarkLine text=", "") + let l:sign = substitute(l:sign, '-', " texthl=MarkLine linehl=MarkLine text=", "") exe "sign define Mark" . l:sign