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

Re: XEmacs 21.5 and emacs-w3m



>>>>> In [emacs-w3m : No.06079] 山岡 wrote:

> だれか XEmacs 21.5.6 以降で emacs-w3m を動かせますか?

変なことをすると、先端の XEmacs 21.5 で emacs-w3m が動くことを発
見しました。それは、関数 w3m-rendering-half-dump で行なわれてい
る call-process-region の第 4 引数 DELETEP を t にしないというも
のです。

t の意味は、元のバッファの内容を外部コマンド (すなわち w3m) に送っ
て、その戻り値でバッファの内容を置き換えるということですが、添付
したやっつけパッチでは、外部コマンドの出力をいったん別のバッファ
で受けてから、プロセスの終了後に元のバッファを消してそれを挿入し
ます。

当然ながら諸兄は XEmacs 21.5 の call-process-region は第 4 引数
を t にした場合に正常動作しないと思われるでしょうが、それだけを
切り出した短いコードで実験してみるとそうでもないのです。

よくわかりませんが、またあした。:)

ところで、関数 w3m-rendering-half-dump の引数 charset が、コメン
トでは w3m-w3m-expand-arguments が使うと書いてあるのですが、そう
いうふうに見えません。これはどうなっているんですか?

--- w3m.el~	2003-11-20 11:55:04 +0000
+++ w3m.el	2003-11-20 13:01:45 +0000
@@ -4406,13 +4406,16 @@
 				      w3m-current-coding-system
 				    w3m-input-coding-system))
 	 (default-process-coding-system
-	   (cons coding-system-for-read coding-system-for-write)))
+	   (cons coding-system-for-read coding-system-for-write))
+	 (buffer (get-buffer-create "*testing*")))
+    (with-current-buffer buffer
+      (erase-buffer))
     (w3m-process-with-environment w3m-command-environment
       (apply 'call-process-region
 	     (point-min)
 	     (point-max)
 	     (or w3m-halfdump-command w3m-command)
-	     t t nil
+	     t buffer nil
 	     (w3m-w3m-expand-arguments
 	      (append w3m-halfdump-command-arguments
 		      w3m-halfdump-command-common-arguments
@@ -4439,7 +4442,10 @@
 						(font-width
 						 (face-font 'default))
 					      (frame-char-width)))))))
-			    (list "-o" "display_image=off")))))))))
+			    (list "-o" "display_image=off")))))))
+    (erase-buffer)
+    (insert-buffer buffer)
+    (kill-buffer)))
 
 (defun w3m-rendering-buffer (&optional charset)
   "Do rendering of contents in this buffer as HTML and return title."