[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: w3m-toggle-inline-image needs cursor on image, even for a region
- From: Katsumi Yamaoka <yamaoka@xxxxxxx>
- Date: Tue, 24 Jun 2008 18:15:44 +0900
- X-ml-name: emacs-w3m
- X-mail-count: 10261
- References: <87od5rznwd.fsf@xxxxxxxxxxx>
>>>>> 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 ()
--
山岡