find-coding-system() in pces-e20.el

Hideyuki SHIRAI (=?iso-2022-jp?B?GyRCR3IwZj0oOVQbKEI=?=) shirai @ rdmg.mgcs.mei.co.jp
2000年 9月 27日 (水) 17:37:29 JST


はじめまして、白井と申します。以後、よろしくお願いします。

早速本題なのですが、pces-e20.el などにある

(defsubst-maybe find-coding-system (obj)
  "Return OBJ if it is a coding-system."
  (if (coding-system-p obj)
      obj))

について質問があります。

Emacs 20.7 などの built-in function の coding-system-p() は

(coding-system-p nil) => t

と 'nil' を与えたときに 't' が帰ってくるのが仕様の様ですが、例え
ば、(APEL の使用を想定していないパッケージで)XEmacs と Emacs で
共有の関数を書くために

(if (fboundp 'find-coding-system)
    (fset 'hoge-coding-system-p (symbol-function 'find-coding-system))
  (fset 'hoge-coding-system-p (symbol-function 'coding-system-p)))

と宣言しておくと、上記の defsubst-maybe で pces-e20.el で定義さ
れている find-coding-system() を使うことになります。そうすると、

(hoge-coding-system-p nil) => nil

となってしまい、本来 nil を想定していないため、以降の処理が破綻
してしまいます。

ちなみに、XEmacs 21.2.53 では
(find-coding-system nil) => #<coding_system binary>
となります。

『仕様』『バグ』『使い方が悪い』というのが考えられるのですが、ど
のようなものでしょうか?

-- 
白井秀行 (mailto:shirai @ rdmg.mgcs.mei.co.jp)




More information about the APEL-ja mailing list