quickrun.vim で特定の範囲を出力しないようにする・続き
昨日のつづき。
よくよく考えると runner-vimscript を改ざんしなくても &verbosefile のみ変更すればよかったのでちょっと変えました。
[ソース]
let temp1 = g:verbosefile_push(tempname()) echo "homu" let temp2 = g:verbosefile_push(tempname()) echo "mado" call g:verbosefile_pop() echo "saya" call g:verbosefile_pop() echo "mami" echo readfile(temp1) echo readfile(temp2) " 昨日のコードもそのまま使用出来る echo "homu" QuickRunVimScriptSilentBegin echo "mado" echo "saya" QuickRunVimScriptSilentEnd echo "mami"
[出力]
mami ['', 'homu', 'saya'] ['', 'mado'] homu mami
push/pop の呼び出しはあまり好きではないのですが、まぁ呼び出し側のコードを簡単にする場合これが無難かなーと。
Scope Exit が欲しくなる。
[実装]
let s:verbosefiles = [] function! g:verbosefile_push(file) call add(s:verbosefiles, &verbosefile) let &verbosefile = a:file return a:file endfunction function! g:verbosefile_pop() let &verbosefile = get(s:verbosefiles, -1) unlet s:verbosefiles[-1] endfunction command! QuickRunVimScriptSilentBegin \ call g:verbosefile_push(tempname()) command! QuickRunVimScriptSilentEnd \ call g:verbosefile_pop()