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

unused var? in w3m-process-do-with-temp-buffer



w3m-process-do-with-temp-buffer マクロにある let でバインドされ
た 2コ目の handler という変数は使われていないんじゃないでしょう
か?

--8<---------------cut here---------------start------------->8---
--- w3m-proc.el~	2007-11-30 05:02:05 +0000
+++ w3m-proc.el	2007-11-30 08:59:30 +0000
@@ -491,8 +491,7 @@
 		 (w3m-process-start-process ,var))
 	     (if (w3m-process-p
 		  (setq ,var (save-current-buffer
-			       (let ((handler (cons ',post-handler handler)))
-				 (,post-body ,var)))))
+			       (,post-body ,var))))
 		 (if handler
 		     ,var
 		   (w3m-process-start-process ,var))
--8<---------------cut here---------------end--------------->8---

このマクロを完全に理解するにはほど遠い状態ですが、いろいろ手を尽
くして調べてみると、この部分は w3m-async-exec が nil のときに使
われるらしいことがわかり、また let のボディで handler の値を使う
コードが生成されないように見えます。

実はずっと前から気になっていたんですが、XEmacs で emacs-w3m を
(make very-slow を使って) byte compile すると

  ** variable handler bound but not referenced

という警告がたくさん出るのです。

これは現在 XEmacs だけにある機能で、コードの変更を繰り返すうちに、
要らなくなった let で束縛する変数の消し忘れを教えてくれます。で、
Emacs でも同様の機能を導入する動きがある[1] ので、ちょっと調べて
みたのでした。

[1] http://news.gmane.org/group/gmane.emacs.devel/thread=84301
-- 
山岡