Use try-finally for reverting the setup

This commit is contained in:
Junegunn Choi
2013-09-19 17:27:26 +09:00
parent 1752bf567b
commit fce0a103ff

View File

@@ -92,16 +92,19 @@ let s:prev_echon_len = 0
function! s:echon_(msg)
" http://vim.wikia.com/wiki/How_to_print_full_screen_width_messages
let xy = [&ruler, &showcmd]
set noruler noshowcmd
let winlen = winwidth(winnr()) - 2
let msg = len(a:msg) > winlen ? (a:msg[0 : winlen - 3] . '..') : a:msg
let len = len(msg)
if len < s:prev_echon_len
echon "\r". repeat(' ', min([winlen, s:prev_echon_len]))
endif
echon "\r". msg
let s:prev_echon_len = len
let [&ruler, &showcmd] = xy
try
set noruler noshowcmd
let winlen = winwidth(winnr()) - 2
let msg = len(a:msg) > winlen ? (a:msg[0 : winlen - 3] . '..') : a:msg
let len = len(msg)
if len < s:prev_echon_len
echon "\r". repeat(' ', min([winlen, s:prev_echon_len]))
endif
echon "\r". msg
let s:prev_echon_len = len
finally
let [&ruler, &showcmd] = xy
endtry
endfunction
function! s:echon(l, n, d, o)