動機づけ
chatty はユーザが入力した文字列に応じて端末のタイトルバーに 小うるさいメッセージを表示するソフトウェアです。
という代物があるのだが、zsh 単独でやってみたい。
表示領域
本家 chatty は、複雑な処理となる端末エミュレーションを嫌った結果なのか、
小うるさいメッセージはタイトルバーに表示される。
しかし、端末エミュレータをいじっている時にタイトルバーを見ることは稀だと思う。
小うるさい感を出すためには、ユーザが入力している近傍に小うるさいメッセージを出したほうが良いであろう。
zleでは、
コマンド入力行のすぐ下にメッセージを表示するコマンドzle -M "..."
が用意されているので、これを使うことにする。
例えば、zsh のマニュアルのZLEの章にあるように下記のようにすると、
インクリメンタルサーチ時に下に行数"Line $HISTNO"
が表示される。
[cat@localhost /tmp]$ netstat -altup
bck-i-search: net_
Line 284
辞書
辞書化することも考えたが面倒くさくなったのでやめた。
現状 if
/elif
の連なりというひどく固定的なコードになっている。
コード
で、self-insert
, magic-space
, backward-delete-char
, delete-char-or-list
をホックして、
そのときの入力コマンド($BUFFER
)を毎度条件判定してメッセージを表示するという方法に至った。
使い方は chatty-on
というファイル名で /usr/share/zsh/site-functions
(などの$fpath
が通っているフォルダ)に置いた上で、下記を実行する。
ただし、お試しとして使うために $fpath
が通っているフォルダに置きたくない場合は、
下記でもよい。
参考文献