Pages

2005-12-09

Emacs 22.0.50 版 find-file は SPC で補完が利かない

開発版 Emacs (次期 Emacs 22.1) で、ファイル関連の補完用キーバインドに変更があった。

旧来 (Emacs < 22)、find-file (C-x C-f) に代表される対話的なファイルを開く関数では、ファイル名の補完に SPCTAB が使えた。しかし最近の開発版で、SPC キーから補完機能が除かれ「空白 (スペース)」が入力されるようになった。

ぼくは、ファイルを探す時に (TAB よりも) SPC を連打した性質なので、このように変更されると困る。ファイルを開こうとすると、無意識に SPC を打ってしまい、その度に意味なく入力された空白を削除する羽目に陥った。

旧来のやり方に戻すための変数は、見た所用意されていないらしい。このまま新しいやり方に慣れるか、次のコードを .emacs に入れて今までの生き方をつらぬくか。御随意に。

(define-key minibuffer-local-filename-completion-map " " 'minibuffer-complete-word)

変更について

今回の変更の要点は、NEWS で読むことができる。抜粋すると下記の通り (2005-12-09)。

** When Emacs prompts for file names, SPC no longer completes the file name.

This is so filenames with embedded spaces could be input without the need to quote the space with a C-q. The underlying changes in the keymaps that are active in the minibuffer are described below under "New keymaps for typing file names".

*** New keymaps for typing file names

Two new keymaps, `minibuffer-local-filename-completion-map' and `minibuffer-local-must-match-filename-map', apply whenever Emacs reads a file name in the minibuffer. These key maps override the usual binding of SPC to `minibuffer-complete-word' (so that file names with embedded spaces could be typed without the need to quote the spaces).

開発版のドキュメントなので、正式公開までに変わることもあるでせう。

ともかく、SPC キーによる補完が利かなくなったのはファイル関連の関数だけ。関数や変数の補完、バッファー変更等では今まで通り SPC で補完が利く。

ファイル名補完における SPC キーの扱いは、Emacs-devel ML で 8 月から始まり 11 月の半ばまで続いている。詳しく議論の流れを追いたい方は、以下のアーカイブを御覧あれ。

空白を含むファイル名は、コマンドラインで扱いづらいし、pTeX システムではコンパイルが通らない原因になるので好きじゃない。むしろ、そういうファイル名は見たくない。今回の Emacs 側の変更は、空白を含むパスを容認する形になりそうなので嫌だなぁ。

Emacs を使う人で、ファイル名に空白を入れる人は多いのかしらん (Windows ユーザーには多いと思うけど...)。

No comments:

Post a Comment