overlayp

Mikio Nakajima minakaji @ osaka.email.ne.jp
2000年 1月 27日 (木) 20:58:48 JST


At Thu, 27 Jan 2000 14:56:02 +0900,
okada @ opaopa.org wrote:
 
> poe-xemacs.elで
> (defalias 'overlayp 'extentp)
> とされているにもかかわらず,
> 
> (defun skk-detach-extent (object)
>   (static-cond
>    ((eq skk-emacs-type 'xemacs)
>     (and (extentp object) (detach-extent object)))
>    (t
>     (and (overlayp object) (delete-overlay object)))))
> 
> とあるのは,何か意図があるのでしょうか?

  extentp に alias が張られるのは overlay.el の require に失敗した場合
だけですよね? overlay.el が require できる場合は、overlay-* は、単な
る extent 関数群への alias ではなく、もう少し複雑な仕事をしています。

ぼくも詳しく説明できる程理解していませんが、XEmacs の extent と FSF
Emacs の overlay とは異なる実装のようで、XEmacs の fsf-compat パッケー
ジに含まれる overlay.el はこの実装の差異を埋めてできるだけ overlay に
近くなるような関数群が提供されています。

一方、SKK では変換候補に face を一瞬掛けて確定後に消す、という単純な作
業しかしておらず、overlay の実装に忠実である必要はなく、extent のみで
十分代用できるので、extent が利用できる場合 (XEmacs) では overlay.el
を利用せずに直接 extent を利用しています。


> xemacsを場合分けするなら,nemacsもと思ってしまいます.

NEmacs の場合は overlay/extent ともに利用できないので、
skk-detach-extent にダミー関数を定義するよりは、素直に skk-use-face を
nil にして、仮に skk-use-face を non-nil に設定している場合でも、APEL
がダミー定義の overlayp を提供していて、これによりエラーを回避できる、
とした方が素直な実装/設定だと思いますが、いかがでしょうか?


> ;; どうせなら,apelにoverlaypを入れてしまえば,

  上記のような訳ですので、APEL には是非 overlayp を入れましょう。

-- 
中島幹夫 <minakaji @ osaka.email.ne.jp>
     <minakaji @ pdx.ne.jp> (急ぎのときはこちらへ)
http://www.asahi-net.or.jp/~gy2m-nkjm/




More information about the APEL-ja mailing list