Emacs 24でのコマンド引数のファイル名補完 [CentOS]
# Emacs のバージョン
emacs-24.3-11.el7.x86_64
emacs-24.3-18.el7.x86_64
1. 発生事象
2. 原因
3. 対処方法
4. 備考
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 を押下すると補完される。)
コメント 0