read-file-name

Katsumi Yamaoka yamaoka @ jpl.org
2000年 2月 4日 (金) 18:33:55 JST


Emacs 19.28 などの `read-file-name' の仕様が現在と違うのを吸収するコー
ドを poe.el に追加しました。元は奥西さんが発見されたものです。↓

>>>>> In [Elips : No.01353] 
>>>>>	Katsumi Yamaoka <yamaoka @ ga.sony.co.jp> wrote:

山岡> Mule 2.3 @ 19.28 をお持ちの方は以下の簡単なテストをしてみて下さい。

山岡> ○ ~/.emacs 以外のファイルを find-file して下さい。
山岡> ○ (read-file-name "File: " "~/" nil t ".emacs") を eval して、
山岡>    そのまま ENTER をタイプして下さい。つまりこう↓です。

山岡>    M-x eval-expression
山岡>    Eval: (read-file-name "File: " "~/" nil t ".emacs")
山岡>    File: ~/.emacs

山岡> その結果何が返ってきますか?  当然期待されるのは "~/.emacs" とい
山岡> う文字列ですが、何と実際には (buffer-file-name) の値、つまり直前
山岡> に find-fileしたファイルの名前が返ってくるのです。
山岡> 同じことを *scratch* などの (buffer-file-name) が nil のバッファ
山岡> で行なった場合は正常に動作します。

これは 19.29 で以下のような修正が行なわれているので、これに倣いました。

Wed Sep 21 14:52:44 1994  Richard Stallman  <rms @ mole.gnu.ai.mit.edu>

	* fileio.c (Fread_file_name): If DEFAULT is nil and INITIAL is not,
	use INITIAL to set DEFAULT.

さて、実はあまり言いたくなかったのですが、`read-file-name' に限らず
version によって引数が微妙に違う関数がたくさんありますよね。

x20:
 (read-file-name PROMPT &optional DIR DEFAULT MUSTMATCH INITIAL HISTORY)
e20,e19:
 (read-file-name PROMPT &optional DIR DEFAULT MUSTMATCH INITIAL)
e18:
 (read-file-name PROMPT &optional DIR DEFAULT MUSTMATCH)

今回この対応は行なわなかったのですが、こういうのは需要がでてきたときに
行なう腹積りでいて良いですよね?

;; XEmacs 19 の tarball には ChangeLog が無いので、調べるのが超大変で
;; す。19.16 から順に 19.15, 19.14, 19.13 ... と開いてみないと、いつ
;; 変更されたのかわかりません。
-- 
Katsumi Yamaoka <yamaoka @ jpl.org>
;; v18 の議論に加わらなくてごめんなさい。自分でほとんど使っていないの
;; で、何も意見が無いのです。:-p




More information about the APEL-ja mailing list