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

Re: w3m-toggle-inline-image needs cursor on image, even for a region



>>>>> In [emacs-w3m : No.10259] jidanni@xxxxxxxxxxx wrote:

> t (w3m-toggle-inline-image) is nice, and can toggle off all images in
> a region (except ones that have been toggled on individually).
> However it cannot toggle on all images in a region unless the cursor
> is on an image!

(日本語なので宛先に jidanni さんを含めていません。)

領域を指定して t コマンドを実行したときに、領域の最後が画像アン
カーの中に置かれていると、その画像を 2回トグルするので目に見える
変化が起きないという話。パッチ-1 でいかがでしょう?

これに関連して、領域を指定して T (w3m-toggle-inline-images) を実
行すると、実行後に領域の開始点が window-start になってしまいます。
これもテキトーに対策してみたんですが、見栄えがよろしくありません。
→ パッチ-2
あまり考えていないんですが、narrowing せずにはできないかなあ。

さらにもう一つ。領域を指定して t コマンドを実行すると XEmacs で
は無限ループになってしまいます (実際には繰り返し回数の制限にひっ
かかってエラーで止まります)。たぶんパッチ-3 でいけます。
--- w3m.el~	2008-06-18 23:45:30 +0000
+++ w3m.el	2008-06-24 09:12:05 +0000
@@ -3686,14 +3686,11 @@
 	    (end (region-end))
 	    iurl toggle-list)
 	(w3m-deactivate-region)
-	(while (not (eq end
-			(setq p (next-single-property-change
-				 p 'w3m-image nil end))))
+	(while (< p end)
+	  (setq p (next-single-property-change p 'w3m-image nil end))
 	  (when (and (setq iurl (w3m-image p))
 		     (not (assoc iurl toggle-list)))
 	    (setq toggle-list (cons (cons iurl p) toggle-list))))
-	(when (w3m-image end)
-	  (setq toggle-list (cons (cons iurl end) toggle-list)))
 	(save-excursion
 	  (dolist (item toggle-list)
 	    (goto-char (cdr item))
--- w3m.el~	2008-06-18 23:45:30 +0000
+++ w3m.el	2008-06-24 09:12:05 +0000
@@ -3742,7 +3742,7 @@
   (let* ((turnoff (eq force 'turnoff))
 	 (status (or w3m-display-inline-images turnoff))
 	 (safe-p t)
-	 safe-regexp pos url)
+	 wstart safe-regexp pos url)
     (if turnoff (setq force nil))
     (if status
 	(progn
@@ -3754,6 +3754,7 @@
 	      (w3m-process-stop (current-buffer))))
 	  (force-mode-line-update))
       (when (w3m-region-active-p)
+	(setq wstart (cons (selected-window) (window-start)))
 	(narrow-to-region (region-beginning) (region-end)))
       (when (setq safe-regexp (get-text-property (point) 'w3m-safe-url-regexp))
 	;; Scan the buffer for searching for an insecure image url.
@@ -3782,6 +3783,8 @@
 	    (unwind-protect
 		(w3m-toggle-inline-images-internal 'off no-cache nil)
 	      (widen)
+	      (when wstart
+		(set-window-start (car wstart) (cdr wstart)))
 	      (setq w3m-display-inline-images t))
 	    (force-mode-line-update))
 	(w3m-message "There are some images considered unsafe;\
--- w3m-util.el~	2007-12-20 07:46:07 +0000
+++ w3m-util.el	2008-06-24 09:12:05 +0000
@@ -1022,7 +1022,8 @@
   "Deactivate the region.
 This macro does nothing in XEmacs, because the region is always
 deactivated after evaluating the current command."
-  (unless (featurep 'xemacs)
+  (if (featurep 'xemacs)
+      '(zmacs-deactivate-region)
     '(deactivate-mark)))
 
 (defmacro w3m-region-active-p ()
-- 
山岡