書式
block [OPTIONS...]

概要

block コマンドはイベントを遮断し、
取り除かれるまでずっと遮断し続けます。

イベントはfish自身や
emit コマンドから発信されます。

関数内において、
シェルによって中断されるべきではない
コマンドを実行するのに
block は便利です。

block は取り除けます。

block が有効だった間に
受信された全てのイベントが
一度に受信されるようになります。

イベントのブロックを
begin / if / while / for / switch / function
作られるコードブロックと混同しないでください。

オプション

-l / --local
最も内側の スコープ を抜けたら
自動的にブロックを解放する
-g / --global
決して自動的にブロックを解放しない
-e / --erase
グローバルブロックを解放する

使用例

fooイベントに対する
イベントハンドラー 関数を定義し、
blockemit の挙動を確認します。

# イベントハンドラーを定義
$ function --on-event foo foo; echo 'foo fired'; end
# ブロック!
$ block -g
# イベントを発行しても何も反応しない
$ emit foo
$ emit foo
# ブロックを解放すると、
# ブロックされている間に受信したイベントを受信する
# 2回発行されたため、2回反応する
$ block -e
foo fired
foo fired
# ブロックがないので普通に反応する
$ emit foo
foo fired

block -g
全イベントに効果があります。

$ function --on-event foo foo; echo 'foo fired'; end
$ function --on-event bar bar; echo 'bar fired'; end
$ block -g
$ emit foo
$ emit bar
$ emit bar
$ emit foo
$ block -e
foo fired
bar fired
bar fired
foo fired

block -l
begin を抜けたときに
自動的にブロックを解放します。

$ function --on-event foo foo; echo 'foo fired'; end
$ begin block -l; emit foo; end
foo fired
$ emit foo
foo fired

最後までお読みいただき、ありがとうございました。参考になれば嬉しいです。