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

Re: inline image



>> On Mon, 12 Mar 2001 17:05:27 +0900
>> 「寺」== teranisi@gohome.org (Yuuichi Teranishi) said as follows:

寺> * リンクをたどるとき(w3m-exec)に text 以外も受け付けるようにした。
寺> * インライン表示可能な画像へのリンクの場合、画像のみのページへ
寺> 移動するようにした。
寺> * ついでに、text でもインライン表示可能な画像でもない場合、
寺> w3m-external-view に処理を委ねるようにした。
寺> * 画像がインライン表示可能かどうかをまじめにチェックするようにした。
寺> * 画像のトグル状態をバッファローカルにした。

寺> 従来とリンクをたどる動作が変わってしまうので、
寺> commit はしてません。

簡単な動作確認はしましたが、問題なさそうですので、どうぞ commit してし
まって下さい。

# CVS による共同開発なので、一時的に不安定になろうとも、誰かが速攻で直
# してくれると信じて commit してしまっていいと思います。

## と言うか、「commit した直後に typo に気づく」というマーフィーの法則
## もどきを常に実践中の私にとっては、そうでないと困ると言うか。


なお、全てが w3m-external-view に委ねられるようになった結果、Unknown
content type では済まされないようになったので、method 未定義の場合は 
w3m-download を呼び出すような修正は必要だと思います。以下に修正案を添
付しておきます。

# 寺西さんの [emacs-w3m:00176] パッチを適用後に適用するパッチです。
RCS file: /storage/cvsroot/emacs-w3m/w3m.el,v
retrieving revision 1.92
diff -u -u -r1.92 w3m.el
--- w3m.el	2001/03/12 05:42:31	1.92
+++ w3m.el	2001/03/12 08:58:38
@@ -2107,45 +2138,54 @@
      (img (w3m-view-image))
      (t (message "No URL at point.")))))
 
+(defsubst w3m-which-command (command)
+  (catch 'found-command
+    (let (bin)
+      (dolist (dir exec-path)
+	(when (file-executable-p (setq bin (expand-file-name command dir)))
+	  (throw 'found-command bin))))))
+
 (defun w3m-external-view (url)
   (let* ((type (w3m-content-type url))
 	 (method (nth 2 (assoc type w3m-content-type-alist))))
     (cond
      ((not method)
-      (error "Unknown content type: %s" type))
+      (w3m-download url))
      ((functionp method)
       (funcall method url))
      ((consp method)
-      (let ((command (car method))
+      (let ((command (w3m-which-command (car method)))
 	    (arguments (cdr method))
 	    (file (make-temp-name
 		   (expand-file-name "w3mel" w3m-profile-directory)))
 	    (proc))
-	(unwind-protect
-	    (with-current-buffer
-		(generate-new-buffer " *w3m-external-view*")
-	      (if (memq 'file arguments) (w3m-download url file))
-	      (setq proc
-		    (apply 'start-process
-			   "w3m-external-view"
-			   (current-buffer)
-			   command
-			   (mapcar (function eval) arguments)))
-	      (setq w3m-process-temp-file file)
-	      (set-process-sentinel
-	       proc
-	       (lambda (proc event)
-		 (and (string-match "^\\(finished\\|exited\\)" event)
-		      (buffer-name (process-buffer proc))
-		      (save-excursion
-			(set-buffer (process-buffer proc))
-			(if (file-exists-p w3m-process-temp-file)
-			    (delete-file w3m-process-temp-file)))
-		      (kill-buffer (process-buffer proc))))))
-	  (if (file-exists-p file)
-	      (unless (and (processp proc)
-			   (memq (process-status proc) '(run stop)))
-		(delete-file file)))))))))
+	(if command
+	    (unwind-protect
+		(with-current-buffer
+		    (generate-new-buffer " *w3m-external-view*")
+		  (if (memq 'file arguments) (w3m-download url file))
+		  (setq proc
+			(apply 'start-process
+			       "w3m-external-view"
+			       (current-buffer)
+			       command
+			       (mapcar (function eval) arguments)))
+		  (setq w3m-process-temp-file file)
+		  (set-process-sentinel
+		   proc
+		   (lambda (proc event)
+		     (and (string-match "^\\(finished\\|exited\\)" event)
+			  (buffer-name (process-buffer proc))
+			  (save-excursion
+			    (set-buffer (process-buffer proc))
+			    (if (file-exists-p w3m-process-temp-file)
+				(delete-file w3m-process-temp-file)))
+			  (kill-buffer (process-buffer proc))))))
+	      (if (file-exists-p file)
+		  (unless (and (processp proc)
+			       (memq (process-status proc) '(run stop)))
+		    (delete-file file))))
+	  (w3m-download url)))))))
 
 (defun w3m-view-image ()
   "*View the image under point."
-- 
土屋 雅稔  ( TSUCHIYA Masatoshi )
    http://www-nagao.kuee.kyoto-u.ac.jp/member/tsuchiya/