SSブログ

Emacs 24でのコマンド引数のファイル名補完 [CentOS]

# Emacs のバージョン
emacs-24.3-11.el7.x86_64
emacs-24.3-18.el7.x86_64

1. 発生事象


inferior shell において、コマンド引数のファイル名補完が想定通りにならないことがある。

(例)
rpm コマンドの引数指定で、指定ディレクトリのファイル名が補完されない。
・インストール済の RPM パッケージが補完対象となる。
 (ミニバッファに "Getting list of installed rpms...done" と表示される。)

% ls -1
fcitx-4.2.8.4-1.fc20.x86_64.rpm
fcitx-anthy-0.2.0-2.fc20.x86_64.rpm

% ls -l fcitx
<= Tab の押下後、カレントディレクトリのファイルで補完される

% rpm -qpi fcitx
<= Tab の押下後、カレントディレクトリのファイルで補完されない

2. 原因


Emacs 24 において、仕様が変更されたためである。


3. 対処方法


上記のような場合には、下記の手順を実施する。

(1) *Completions* バッファを kill-buffer する。

(2) M-? を押下し、補完候補を表示する。


M-? は comint-dynamic-list-filename-completions にバインドされている。


(3) *Completions* バッファ内の補完候補を選択する。


補完候補にカーソルを移動し、Enter を押下する。

または

補完候補をマウスの中ボタンでクリックする。


4. 備考


以前の仕様に近い動作にするためには、~/.emacs に下記の設定を追加する。

(add-hook 'shell-mode-hook
          '(lambda ()
             (add-to-list 'completion-at-point-functions
                          'comint-dynamic-complete-filename)))


(補足)
・ミニバッファに余分なメッセージが表示されることがある。
・コマンド名の補完では、一度 "No match" と表示される。
 (しばらく待つか、再度 Tab を押下すると補完される。)



nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。