読者です 読者をやめる 読者になる 読者になる

Vim 7.4.2304 で Timer のコールバック内で timer_stop() できるようになった

以前、『コールバック関数内で timer_stop() 出来ない』という問題があったんですが、Vim 7.4.2304 でこの問題が修正されました。

function! Test()
    let disp = { "value" : 0 }
    function! disp.call(...)
        echo self.value
        let self.value += 1

        " 5回呼び出されたら止める
        if self.value > 5
            call timer_stop(self.id)
        endif
    endfunction

    " 辞書関数をコールバックとして登録
    let disp.id = timer_start(500, disp.call, { "repeat" : -1 })
endfunction