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

Re: [async] fetch url



>> On Tue, 20 Nov 2001 13:49:20 +0900
>> 「菅」== t-suga@atomsystem.co.jp (Taiki SUGAWARA) said as follows:

菅> 今のところ、これを使っていて一番問題だと思ってるのは、先読みしてい
菅> るときに同じページを読みに行くと w3m のプロセスが2つできてしまうこ
菅> とです。

えっと、それは有り得ないはずなのですが、具体的にどういう状況で起こりま
すか? w3m-process-push() で、新たな w3m-process オブジェクトを作成し、
そのオブジェクトを w3m-process-queue に登録する時点で、もしも同一の引
数で w3m を実行中ならば、その結果をまとめて利用するように設計されてい
ます。

;; あるページ内部で、同一の画像を複数個所で利用している場合には、この
;; 対策がないと、複数の w3m が並列に無駄に動作することになってしまいま
;; すから。


菅> 非同期で emacs-w3m を使っているときに、ページを先読みしておきたい
菅> 事が結構あったので先読みする関数、コマンドを作ってみました。

更に富豪的に、以下のような変更はいかがでしょうか? あるページを閲覧した
時点で、常に <link next="..."> を先読みするようになります。

;; 現時点では、先読み中に次のページを閲覧しようとすると、
;; w3m-process-stop() が先読み中のプロセスを終了させてしまうので、もう
;; 少し洗練する必要がありますけれど。
Index: w3m.el
===================================================================
RCS file: /storage/cvsroot/emacs-w3m/w3m.el,v
retrieving revision 1.509
diff -u -u -r1.509 w3m.el
--- w3m.el	2001/11/20 04:00:12	1.509
+++ w3m.el	2001/11/20 05:13:12
@@ -2949,6 +2949,8 @@
 	       (format " (exit status: %s)" w3m-process-exit-status)
 	     "")))))))
 
+(defvar w3m-fetch-next-url-p t)
+
 (defun w3m-prepare-content (url type output-buffer &optional content-charset)
   (cond
    ((string-match "\\`text/" type)
@@ -2969,6 +2971,13 @@
 	  (w3m-copy-local-variables result-buffer)
 	  (set-buffer-file-coding-system w3m-current-coding-system)
 	  (when (string= "text/html" type) (w3m-fontify))
+	  (and w3m-fetch-next-url-p
+	       w3m-async-exec
+	       (stringp w3m-next-url)
+	       (let ((next w3m-next-url))
+		 (w3m-process-with-null-handler
+		   (w3m-process-do-with-temp-buffer
+		       (type (w3m-retrieve next nil nil nil nil handler))))))
 	  t))))
    ((and (w3m-image-type-available-p (w3m-image-type type))
 	 (string-match "\\`image/" type))
-- 
土屋 雅稔  ( TSUCHIYA Masatoshi )

;; えっと、[emacs-w3m:02309] の戯言は「作業します」って意味じゃなくて、
;; そうじゃなくて、「こうしたら楽かも?」という独り言です。と言うか、
;; ちょっと修羅場だったりして。