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

w3m-search-name-anchor



青田です。

アンカー付きURLをw3m-goto-url-new-sessionから開いた時に、ページの上のほうに
アンカー先がある時以外は、カーソルがアンカー先に移動しない(それどころか、
まったく関係のない場所に移動する)という現象が起こってる方いらっしゃいませんか?

例えば、http://ja.wikipedia.org/wiki/%E3%83%9F%E3%83%98%E3%83%BCでは、
"1 歴史"は正しく動作するのですが、"2 言語"以降のリンクは"人口は総計"の
"人"のところにカーソルが置かれます。

私の検証では、下のパッチをあてて得られるコードで
1.*5*のsit-forのコメントを外し、w3m-search-name-anchor終了時に"人"のところに
  カーソルがあること
2.*1*だけ、または*3*だけを外すと、正常に動作すること
3.*4*だけを外すと、"人"のところにカーソルが置かれること
4.*4*・*6*だけを外した時と、*1*・*4*・*6*だけを外した時の出力はどちらも
  86 (top)
  517 (.E6.AD.B4.E5.8F.B2 top)
  1192 (.E8.A8.80.E8.AA.9E .E6.AD.B4.E5.8F.B2 top)
  1192
  となること
5.*2*だけを外し、sleep-forの引数がある程度小さいと現在と同じく"人"のところに
  カーソルが置かれるが、ある程度大きいと、新しいbufferが表示され、Locationの
  ところにカーソルが置かれている画面が出た後、正常な位置にカーソルが置かれること
6.*2*・*4*・*6*を外した時も出力は変わらないこと
を確認しました。

以上より、bufferの表示がまだできてない時に失敗するように思いますが、
いかがでしょうか?
よろしければ追試・検証おねがいします。

Index: w3m.el
===================================================================
RCS file: /storage/cvsroot/emacs-w3m/w3m.el,v
retrieving revision 1.1272
diff -u -r1.1272 w3m.el
--- w3m.el	26 Apr 2007 04:03:30 -0000	1.1272
+++ w3m.el	26 Apr 2007 09:11:51 -0000
@@ -5745,9 +5745,12 @@
 
 (defun w3m-search-name-anchor (name &optional quiet)
   (interactive "sName: ")
+  ;(redisplay) ;;*1*
+  ;(sleep-for ) ;;*2*
   (let ((pos (point-min)))
     (catch 'found
       (while (setq pos (next-single-property-change pos 'w3m-name-anchor))
+	;(message "%d %s" pos (get-text-property pos 'w3m-name-anchor2)) ;;*3*
 	(when (member name (get-text-property pos 'w3m-name-anchor))
 	  (goto-char pos)
 	  (when (eolp) (forward-line))
@@ -5755,6 +5758,7 @@
 	  (throw 'found t)))
       (setq pos (point-min))
       (while (setq pos (next-single-property-change pos 'w3m-name-anchor2))
+	;(message "%d %s" pos (get-text-property pos 'w3m-name-anchor2)) ;;*4*
 	(when (member name (get-text-property pos 'w3m-name-anchor2))
 	  (goto-char pos)
 	  (when (eolp) (forward-line))
@@ -5762,7 +5766,10 @@
 	  (throw 'found t)))
       (unless quiet
 	(message "No such anchor: %s" name))
-      nil)))
+      nil))
+  ;(sit-for 10) ;*5*
+  ;(message "%d" (point)) ;;*6*
+  )
 
 (defun w3m-parent-page-available-p ()
   (if (null w3m-current-url)