Vim 7.4.2170 で timer_info() が追加された

patch 7.4.2170 で timer_info() 関数が追加されました。

github.com

この関数は現在実行中の timer の情報を返す関数です。

echo timer_info()
" => [
"     {
"         'callback': function('<SNR>489_timer_handler'),
"         'id': 2,
"         'remaining': 420,
"         'repeat': -1,
"         'time': 500
"     },
"     {
"         'callback': function('<SNR>489_timer_handler'),
"         'id': 1,
"         'remaining': 420,
"         'repeat': -1,
"         'time': 500
"     }
" ]

また、timer id を指定することも出来ます。

let s:id = timer_start(500, function({ l ->
\   execute("let l.value += 1 | echo l.value", "")
\}, [{"value" : 0}]), { "repeat" : 5 })

" Timer ID を指定することもできる
" この時にも戻り値は配列なので注意
echo timer_info(s:id)
" => [{'id': 16, 'repeat': 5, 'remaining': 499, 'time': 500, 'callback': function('<lambda>7', [{'value': 0}])}]

" ちょっと待機
sleep 1
" 残りの repeat 回数が減ってる
echo timer_info(s:id)
" => [{'id': 16, 'repeat': 3, 'remaining': 498, 'time': 500, 'callback': function('<lambda>7', [{'value': 2}])}]

あとから timer を止めたい場合とかに便利そう。