Vimのタイマー機能を使って1分毎に自動的に更新される時計を作りたいと思い、試しに自分で作ってみました。
しかし、タイマーが最初にコールバック関数を呼んだ際、「関数の引数が多すぎます:updateClock」というエラーが出て、時計の更新に失敗しました。
以下がそのソースです。
VimScript
1"タイトルに表示されている時刻を1分毎に更新する 2let s:original_title = &titlestring 3fu! s:updateClock() 4 let l:day_of_week = ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"] 5 let l:idx = strftime('%w') 6 let l:datetime = strftime('%H:%M %Y/%m/%d ').l:day_of_week[l:idx] 7 let &titlestring = s:original_title.' '.l:datetime 8 call s:setTimer() 9endf 10"Vimのタイマーが正確に1分毎に動くとは限らないので、 11"時刻の更新タイミングを毎回調整する 12fu! s:setTimer() 13 "うるう秒(60秒)も考慮する 14 let l:second = str2nr( strftime('%S') ) % 60 15 call timer_start(1000*(60-l:second), function("s:updateClock")) 16endf 17"初回呼び出し 18call s:updateClock()
これは、私のやり方が悪いのでしょうか。それとも、Vimのタイマーは再帰呼び出しに対応していないのでしょうか。
また、今までは自動コマンドを使って時計を更新させていたのですが、もし別のアイディアがあれば教えて下さい。
あなたの回答
tips
プレビュー