[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
w3m-view-this-url-new-session (was: w3m-filter and w3mmee/w3m-m17n)
>> On Tue, 01 Jul 2003 08:57:30 +0900
>> 「山」== yamaoka@jpl.org (Katsumi Yamaoka) said as follows:
山> もう一つ、これはまったく関係無いことですが、坂本さんのページ
山> http://www2u.biglobe.ne.jp/%7Ehsaka/w3m/index-ja.html
山> で「マルチリンガル化(M17N) w3m」などのリンクを SHIFT-RET
山> (w3m-view-this-url-new-session) で辿ることができません。対策してあっ
山> たような記憶があるんですが、こんなものでしたっけ?
理由が分かったと思います.
w3m-goto-url() は実際に retrieve する前に,
(w3m-process-do
(action
(if (and (not reload)
(not redisplay)
(stringp w3m-current-url)
(string= url w3m-current-url))
(progn
(w3m-refontify-anchor)
'cursor-moved)
と w3m-current-url の値を調べて,同一ならば,同一ページ内の移動と見な
して retrieve を行わずに手抜きするようになっています.それに対して,
w3m-view-this-url-1() は何故か w3m-current-url を元のページと同一にな
るように代入を行っているので,実際には empty なのに同一ページと判定さ
れて失敗する,ということのようです.ですから,添付のパッチで一応は動く
ようになります.
しかし,問題の本質は別の個所にありそうな気がして調べてみたのですが,こ
れらの session 管理周辺の処理は非常に謎が多くて,よく理解できませんで
した.まず,
;; When new URL has `name' portion, we have to goto the base url
;; because generated buffer has no content at this moment.
このコメントはどういう意味なんでしょうか?
w3m-view-this-url-new-session() は,煎じ詰めれば,
(defun simple-w3m-view-this-url-new-session ()
(interactive)
(let ((url (w3m-anchor)))
(with-current-buffer (w3m-copy-buffer)
(w3m-goto-url url))))
という処理(生成元になったバッファでの refontify が抜けてますが)だと思
うのですが,実際にはわざと empty な複製ページを作成したりしています.
w3m-goto-url-new-session() も同じように empty な複製ページを作っていま
す.
どうしてこういうコードになっているのか,少し説明をお願いできないでしょ
うか.
--
土屋 雅稔 ( TSUCHIYA Masatoshi )
--- w3m.el 3 Jul 2003 09:05:05 -0000 1.495.2.103
+++ w3m.el 3 Jul 2003 14:20:12 -0000
@@ -4337,14 +4337,13 @@
(if w3m-view-this-url-new-session-in-background
(set-buffer (w3m-copy-buffer nil nil nil 'empty))
(switch-to-buffer (w3m-copy-buffer nil nil t 'empty)))
- (setq w3m-current-url referer))
- ;; When new URL has `name' portion, we have to goto the base url
- ;; because generated buffer has no content at this moment.
- (when (and (string-match w3m-url-components-regexp url)
- (match-beginning 8))
- (save-window-excursion
- (w3m-goto-url (substring url 0 (match-beginning 8))
- reload nil nil w3m-current-url))))
+ ;; When new URL has `name' portion, we have to goto the base
+ ;; url because generated buffer has no content at this moment.
+ (when (and (string-match w3m-url-components-regexp url)
+ (match-beginning 8))
+ (save-window-excursion
+ (w3m-goto-url (substring url 0 (match-beginning 8))
+ reload nil nil referer)))))
(let (handler)
(w3m-process-do
(success