X-Git-Url: https://cgit.sxemacs.org/?a=blobdiff_plain;f=lisp%2Fmm-view.el;h=42e21cad514dd0a310abf4ee6da3c613be54a1a6;hb=f4c1b0232c4f4eef20110b1022acad129c2e6a51;hp=fd01a0132f6d77ca440224083e879a5be440778f;hpb=635c37da20cd6d6f154040443753a66ff4180990;p=gnus diff --git a/lisp/mm-view.el b/lisp/mm-view.el index fd01a0132..42e21cad5 100644 --- a/lisp/mm-view.el +++ b/lisp/mm-view.el @@ -1,7 +1,7 @@ ;;; mm-view.el --- functions for viewing MIME objects ;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, -;; 2007, 2008 Free Software Foundation, Inc. +;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; This file is part of GNU Emacs. @@ -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 ()