Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

Vim 8.0 Advent Calendar 5 日目 タイマー

$
0
0

この記事は Vim 8.0 Advent Calendarの 5 日目の記事です。

Vim 8.0 は新しくタイマー機能が追加されました。これにより、指定時間後に関数を呼び出すことができます。

タイマーを開始する

以下の例では 1 秒毎に関数を呼び出し、その度にカウントダウンを行い、最後に BOMB!と表示して終了します。

letdict= {'count': 10}
function!dict.countdown(timer) abort
  let self.count-=1if self.count
    echo self.countelse
    echo 'BOMB!'call timer_stop(a:timer)endifendfunctionlet timer = timer_start(1000,dict.countdown, {'repeat': -1})

タイマーが起動した後、タイマーによって関数が実行されている間以外は、ユーザーは編集を続けることができます。
例によって Vim はシングルスレッドですので、タイマーによって Vim script が実行されている間はユーザーは操作ができません。

関数の解説

timer_start({time}, {callback}, [, {options}])

タイマーを開始します。{time}ミリ秒後に {callback}関数を呼び出します。
関数はタイマー ID を返します。この ID を使ってタイマーの操作ができます。また、{callback}関数も引数にこの ID を受け取ります。
{options}には辞書でオプションを渡せます。今のところ有効なオプションは以下のものです。

  • "repeat" {callback}を繰り返し呼び出す回数を指定します。 正数を指定すると、{time} ミリ秒毎に指定した回数だけ {callback}が呼び出されます。 -1 を指定すると、制限なく呼び出され続けます。 指定しなかった場合は 1 回だけ呼び出されます。

timer_stop({timer})

指定したタイマーを停止します。{callback}関数は呼び出されなくなります。

timer_pause({timer}, {paused})

タイマーを一時停止したり再開したりします。{paused}が TRUE の場合は一時停止、FALSE の場合は再開になります。

timer_info([{timer}])

タイマーの情報を返します。{timer}引数を渡すと指定したタイマーの情報を、引数を省略した場合は全てのタイマーの情報を配列で返します。
情報は辞書で、ID や残り時間、呼び出される関数など一通りの情報が得られます。

timer_stopall()

タイマーは一歩間違えると暴発し、一切の操作ができなくなるような事態も起き得ます。timer_stopall()を呼び出すことで、全てのタイマーを停止することができます。


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>