]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/gnus/mm-decode.el (mm-convert-shr-links):
authorKatsumi Yamaoka <yamaoka@jpl.org>
Wed, 22 Jun 2016 10:32:56 +0000 (10:32 +0000)
committerKatsumi Yamaoka <yamaoka@jpl.org>
Wed, 22 Jun 2016 10:32:56 +0000 (10:32 +0000)
Mask keys that launch `widget-button-click' (bug#22157).

lisp/gnus/mm-decode.el

index 3ea63c740347aad63c14308bd6ef7690be8babb1..bb8e2038d26f611ce5956276ee91304feb65daff 100644 (file)
@@ -1896,10 +1896,11 @@ If RECURSIVE, search recursively."
 (defvar shr-map)
 
 (autoload 'widget-convert-button "wid-edit")
+(defvar widget-keymap)
 
 (defun mm-convert-shr-links ()
   (let ((start (point-min))
-       end)
+       end keymap)
     (while (and start
                (< start (point-max)))
       (when (setq start (text-property-not-all start (point-max) 'shr-url nil))
@@ -1907,9 +1908,16 @@ If RECURSIVE, search recursively."
        (widget-convert-button
         'url-link start end
         :help-echo (get-text-property start 'help-echo)
-        :keymap shr-map
+        :keymap (setq keymap (copy-keymap shr-map))
         (get-text-property start 'shr-url))
-       (put-text-property start end 'local-map nil)
+       ;; Remove keymap that `shr-urlify' adds.
+       (put-text-property start end 'keymap nil)
+       ;; Mask keys that launch `widget-button-click'.
+       ;; Those bindings are provided by `widget-keymap'
+       ;; that is a parent of `gnus-article-mode-map'.
+       (dolist (key (where-is-internal #'widget-button-click widget-keymap))
+         (unless (lookup-key keymap key)
+           (define-key keymap key #'ignore)))
        (dolist (overlay (overlays-at start))
          (overlay-put overlay 'face nil))
        (setq start end)))))