Emacs,Shell
EmacsDay 6

shell-command 入力を補助する shelldoc

More than 1 year has passed since last update.

Qiita には初投稿です。
Emacs Advent Calendar 2014 昨日は kenoss さんでした。
vim のカーソル移動には昔から興味があるのですが、Emacs に引きこもってしまいなかなか全力で試すことができません。

概要

shell-command などで shell を実行する際に man ページを表示して、コマンドオプションの確認をし易くします。
Unix な shell からコマンドを頻繁に使う人の記憶を man ページで呼び醒ますことを意図しています。
elisp 関数の概要を minibuffer に表示する eldoc をイメージすると良いです。

Github
Melpa

実行環境

こんな感じの環境で主に試してますが、Windows でも cygwin の shell を使ってれば動くと思います。

Linux **** 3.2.0-4-amd64 #1 SMP Debian 3.2.63-2+deb7u1 x86_64 GNU/Linux
GNU Emacs 24.4.1
GNU bash, version 4.2.37(1)-release (x86_64-pc-linux-gnu)

Install

M-x list-packages で MELPA からインストールしてください。すでに登録、反映されています。

summary 表示

M-x shell-command (M-!) から以下のようなコマンドを実行する場合を考えてみます。

sudo ls --all /var/log

カーソルが sudo 直後のときには sudo の man を

shelldoc1.png

カーソルが ls 直後のときには ls の man を window 分割で表示します。

shelldoc2.png

カーソル位置によって初期状態で表示するページの位置も変化します。
man のなかから option 引数と思われる記載をできるだけ強調表示します。(残念ながらずれることも)

shelldoc3.png

C-v M-v で help の window をスクロールします。
表示されている man 内の検索には C-c C-s, C-c C-r を試してください。isearch が起動します。

completion

man ページの情報を元にした option 引数の completion もサポートします。
shelldoc の window が表示されてる状態のときに - (ハイフン)を入力してから C-i を試してみてください。

shelldoc4.png

今後の課題

日本語 man ページも切り替えながら表示できるようになればいいなーと思っています。
それから tramp 対応が必要ですね。サーバサイドにいるときはサーバの man を表示したいところです。

明日は Emacs Advent Calendar 2014 7 日目 @kai2nenobu さんです。