infoのひと手間
Gaucheのreplではinfo手続きを使ってinfoドキュメントを参照することができます。関数の引数を確認したりするのに便利なんですが、知りたい関数の名前を含んだページ全体が表示されるので、ページャをスクロールさせないと見えない場合があります。そこで、~/.gauchercに以下のマクロを追加して、ページャの起動時に検索パターンを渡すようにしてみました。
;; ~/.gaucherc (use gauche.interactive.info) (define-macro (info fn) (define (%info fn) (with-module gauche.interactive.info (or (and-let* ([string? *pager*] [orig *pager*] [alt (case (string->symbol (sys-basename *pager*)) [(more) (^p (list orig "-p" #`"+/^ --.+: ,p"))] [(less) (^p (list orig "-p" #`"^ --.+: ,p"))] [(lv) (^p (list orig #`"+/^ --.+: ,p"))] [else #f])]) (dynamic-wind (^[] (set! *pager* (alt (regexp-quote (x->string fn))))) (^[] (info fn)) (^[] (set! *pager* orig))) (values)) (info fn)))) (let1 fn (if (pair? fn) (cadr fn) fn) `(,%info ',fn)))
more・less・lvそれぞれで以下のように動作が微妙に異なるので、場合分けしています。
- moreは"-p"オプションが指定されていないと、パイプから読んだ内容にマッチさせた場合1行下にずれる
- lessで"+/..."という形式で指定すると"$"を含んだパターンの検索に失敗する
あと、マクロにしているのは、引数のクオートを忘れがちなので、クオートしなくても検索できるようにするためです。
よかったらreplのお供にどうぞ。