[Date Prev][Date Next][Thread Prev][][Date Index][Thread Index]

Re: Emacs20.7 での compile



>>>>> In [emacs-w3m : No.03167]
>>>>>	Katsumi Yamaoka <yamaoka@jpl.org> wrote:

山岡> [1] ぼくは何が何でも cl を常駐させないようにするために、Mule-UCS
山岡>     の x0213-csys.el で

山岡>     -(require 'cl)
山岡>     +(eval-when-compile (require 'cl))

山岡>     という改造を行なって、runtime cl の駆逐に成功しています。し
山岡>     たがって、この環境には w3m-proc.el が使っている cl の関数で
山岡>     ある gensym が無いので、Emacs 20 で絵を出すには cl を load
山岡>     しなければなりませんでした。
山岡>     ところが Emacs 21 では、やはり cl は無いのに emacs-w3m を動
山岡>     作させる上で支障はありません。これってなぜでしょう?

これに関連して。
cl は load せずに gensym だけを定義して Emacs 20 で動作させると

Signaling: (void-function labels)
  (labels ((post-body ... ...) (post-handler ... ...)) (let (...
  (let ((--this-handler---42100 handler) (--temp-buffer---421...
  (w3m-process-do-with-temp-buffer (type (w3m-retrieve url ni...

[...]

  w3m-toggle-inline-images(nil)

というエラーが起きました。labels は cl が提供する macro ですが、
あたかも w3m-process-do-with-temp-buffer の中身が展開されず、
byte-compile もされていないような感じです。と言うのは、このエラー
が起きた後で cl を load するとちゃんと動作してしまうから。

;; 本命は Mule 2.3 の inline image 対応なんですが、Emacs 20 でも
;; 問題無いことをその都度確認しながらやっているために、こういう
;; 不思議な現象で楽しませてもらっています。:-)
-- 
Katsumi Yamaoka <yamaoka@jpl.org>