Changes committed gnus/lisp (ChangeLog gnus-art.el mm-view.el)

"Katsumi Yamaoka" <[email protected]> Thu, 04 Dec 2008 11:53:39 +0100
Newsgroups gmane.emacs.gnus.commits
Message-ID <[email protected]>
Modified: ChangeLog gnus-art.el mm-view.el

* mm-view.el (mm-inline-text-html-render-with-w3m): Make it simple and fast.
* gnus-art.el (gnus-article-wash-html-with-w3m): Ditto.


Index: ChangeLog
diff -u gnus/lisp/ChangeLog:7.1937 gnus/lisp/ChangeLog:7.1938
--- ChangeLog:7.1937	Thu Dec  4 02:58:21 2008
+++ ChangeLog	Thu Dec  4 11:53:38 2008
@@ -1,3 +1,12 @@
+2008-12-04  Katsumi Yamaoka  <[email protected]>
+
+	* mm-view.el (mm-inline-text-html-render-with-w3m): Make it simple and
+	fast.
+
+	* gnus-art.el (gnus-article-wash-html-with-w3m): Ditto.
+
+	* lpath.el: Bind w3m-link-map for Emacs 21, 22, and XEmacs.
+
 2008-12-04  Naohiro Aota  <[email protected]>
 
 	* mm-view.el (mm-inline-text-html-render-with-w3m): Put special keymap
@@ -5,8 +14,6 @@
 
 	* gnus-art.el (gnus-article-wash-html-with-w3m): Ditto.
 
-	* lpath.el: Bind w3m-link-map for Emacs 21, 22, and XEmacs.
-
 2008-12-03  Stefan Monnier  <[email protected]>
 
 	* nnimap.el (nnimap-retrieve-headers-progress): Don't use nnimap-demule
Index: gnus-art.el
diff -u gnus/lisp/gnus-art.el:7.284 gnus/lisp/gnus-art.el:7.285
--- gnus-art.el:7.284	Thu Dec  4 02:58:21 2008
+++ gnus-art.el	Thu Dec  4 11:53:38 2008
@@ -2728,37 +2728,33 @@
   (let ((w3m-safe-url-regexp mm-w3m-safe-url-regexp)
 	w3m-force-redisplay)
     (w3m-region (point-min) (point-max)))
+  ;; Put the mark meaning this part was rendered by emacs-w3m.
+  (put-text-property (point-min) (point-max) 'mm-inline-text-html-with-w3m t)
   (when (and mm-inline-text-html-with-w3m-keymap
 	     (boundp 'w3m-minor-mode-map)
 	     w3m-minor-mode-map)
     (if (and (boundp 'w3m-link-map)
 	     w3m-link-map)
-	(let ((begin (point-min))
-	      (map (copy-keymap w3m-link-map))
-	      end)
+	(let* ((start (point-min))
+	       (end (point-max))
+	       (on (get-text-property start 'w3m-href-anchor))
+	       (map (copy-keymap w3m-link-map))
+	       next)
 	  (set-keymap-parent map w3m-minor-mode-map)
-	  (while (setq end (next-single-property-change begin
-							'w3m-href-anchor))
-	    (add-text-properties
-	     begin end
-	     (list 'keymap (if (get-text-property begin 'w3m-href-anchor)
-			       map
-			     w3m-minor-mode-map)
-		   ;; Put the mark meaning this part was rendered by emacs-w3m.
-		   'mm-inline-text-html-with-w3m t))
-	    (setq begin end))
-	  (add-text-properties
-	   begin (point-max)
-	   (list 'keymap (if (get-text-property begin 'w3m-href-anchor)
-			     map
-			   w3m-minor-mode-map)
-		 ;; Put the mark meaning this part was rendered by emacs-w3m.
-		 'mm-inline-text-html-with-w3m t)))
-      (add-text-properties
-       (point-min) (point-max)
-       (list 'keymap w3m-minor-mode-map
-	     ;; Put the mark meaning this part was rendered by emacs-w3m.
-	     'mm-inline-text-html-with-w3m t)))))
+	  (while (< start end)
+	    (if on
+		(progn
+		  (setq next (or (text-property-any start end
+						    'w3m-href-anchor nil)
+				 end))
+		  (put-text-property start next 'keymap map))
+	      (setq next (or (text-property-not-all start end
+						    'w3m-href-anchor nil)
+			     end))
+	      (put-text-property start next 'keymap w3m-minor-mode-map))
+	    (setq start next
+		  on (not on))))
+      (put-text-property (point-min) (point-max) 'keymap w3m-minor-mode-map))))
 
 (defvar charset) ;; Bound by `article-wash-html'.
 
Index: mm-view.el
diff -u gnus/lisp/mm-view.el:7.60 gnus/lisp/mm-view.el:7.61
--- mm-view.el:7.60	Thu Dec  4 02:58:21 2008
+++ mm-view.el	Thu Dec  4 11:53:38 2008
@@ -258,40 +258,35 @@
 	(let ((w3m-safe-url-regexp mm-w3m-safe-url-regexp)
 	      w3m-force-redisplay)
 	  (w3m-region (point-min) (point-max) nil charset))
+	;; Put the mark meaning this part was rendered by emacs-w3m.
+	(put-text-property (point-min) (point-max)
+			   'mm-inline-text-html-with-w3m t)
 	(when (and mm-inline-text-html-with-w3m-keymap
 		   (boundp 'w3m-minor-mode-map)
 		   w3m-minor-mode-map)
 	  (if (and (boundp 'w3m-link-map)
 		   w3m-link-map)
-	      (let ((begin (point-min))
-		    (map (copy-keymap w3m-link-map))
-		    end)
+	      (let* ((start (point-min))
+		     (end (point-max))
+		     (on (get-text-property start 'w3m-href-anchor))
+		     (map (copy-keymap w3m-link-map))
+		     next)
 		(set-keymap-parent map w3m-minor-mode-map)
-		(while (setq end (next-single-property-change
-				  begin 'w3m-href-anchor))
-		  (add-text-properties
-		   begin end
-		   (list 'keymap (if (get-text-property begin 'w3m-href-anchor)
-				     map
-				   w3m-minor-mode-map)
-			 ;; Put the mark meaning this part was rendered
-			 ;; by emacs-w3m.
-			 'mm-inline-text-html-with-w3m t))
-		  (setq begin end))
-		(add-text-properties
-		 begin (point-max)
-		 (list 'keymap (if (get-text-property begin 'w3m-href-anchor)
-				   map
-				 w3m-minor-mode-map)
-		       ;; Put the mark meaning this part was rendered
-		       ;; by emacs-w3m.
-		       'mm-inline-text-html-with-w3m t)))
-	    (add-text-properties
-	     (point-min) (point-max)
-	     (list 'keymap w3m-minor-mode-map
-		   ;; Put the mark meaning this part was rendered
-		   ;; by emacs-w3m.
-		   'mm-inline-text-html-with-w3m t))))
+		(while (< start end)
+		  (if on
+		      (progn
+			(setq next (or (text-property-any start end
+							  'w3m-href-anchor nil)
+				       end))
+			(put-text-property start next 'keymap map))
+		    (setq next (or (text-property-not-all start end
+							  'w3m-href-anchor nil)
+				   end))
+		    (put-text-property start next 'keymap w3m-minor-mode-map))
+		  (setq start next
+			on (not on))))
+	    (put-text-property (point-min) (point-max)
+			       'keymap w3m-minor-mode-map)))
 	(mm-handle-set-undisplayer
 	 handle
 	 `(lambda ()