diff -c help-CVS-2008-01-02.el help-patched-2008-01-02.el
*** help-CVS-2008-01-02.el	Wed Jan  2 15:19:54 2008
--- help-patched-2008-01-02.el	Thu Jan  3 10:55:58 2008
***************
*** 657,691 ****
  	 (cursor-in-echo-area t)
  	 saved-yank-menu)
       (unwind-protect
! 	 (let (key)
! 	   ;; If yank-menu is empty, populate it temporarily, so that
! 	   ;; "Select and Paste" menu can generate a complete event.
! 	   (when (null (cdr yank-menu))
! 	     (setq saved-yank-menu (copy-sequence yank-menu))
! 	     (menu-bar-update-yank-menu "(any string)" nil))
! 	   (setq key (read-key-sequence "Describe key (or click or menu item): "))
! 	   (list
! 	    key
! 	    (prefix-numeric-value current-prefix-arg)
! 	    ;; If KEY is a down-event, read and include the
! 	    ;; corresponding up-event.  Note that there are also
! 	    ;; down-events on scroll bars and mode lines: the actual
! 	    ;; event then is in the second element of the vector.
! 	    (and (vectorp key)
! 		 (let ((last-idx (1- (length key))))
! 		   (and (eventp (aref key last-idx))
! 			(memq 'down (event-modifiers (aref key last-idx)))))
! 		 (or (and (eventp (aref key 0))
! 			  (memq 'down (event-modifiers (aref key 0)))
! 			  ;; However, for the C-down-mouse-2 popup
! 			  ;; menu, there is no subsequent up-event.  In
! 			  ;; this case, the up-event is the next
! 			  ;; element in the supplied vector.
! 			  (= (length key) 1))
! 		     (and (> (length key) 1)
! 			  (eventp (aref key 1))
! 			  (memq 'down (event-modifiers (aref key 1)))))
! 		 (read-event))))
         ;; Put yank-menu back as it was, if we changed it.
         (when saved-yank-menu
  	 (setq yank-menu (copy-sequence saved-yank-menu))
--- 657,691 ----
  	 (cursor-in-echo-area t)
  	 saved-yank-menu)
       (unwind-protect
!           (let (key)
!             ;; If yank-menu is empty, populate it temporarily, so that
!             ;; "Select and Paste" menu can generate a complete event.
!             (when (null (cdr yank-menu))
!               (setq saved-yank-menu (copy-sequence yank-menu))
!               (menu-bar-update-yank-menu "(any string)" nil))
!             (setq key (read-key-sequence "Describe key (or click or menu item): "))
!             (list
!              key
!              (prefix-numeric-value current-prefix-arg)
!              ;; If KEY is a down-event, read and include the
!              ;; corresponding up-event.  Note that there are also
!              ;; down-events on scroll bars and mode lines: the actual
!              ;; event then is in the second element of the vector.
!              (and (vectorp key)
!                   (let ((last-idx (1- (length key))))
!                     (and (eventp (aref key last-idx))
!                          (memq 'down (event-modifiers (aref key last-idx)))))
!                   (or (and (eventp (aref key 0))
!                            (memq 'down (event-modifiers (aref key 0)))
!                            ;; However, for the C-down-mouse-2 popup
!                            ;; menu, there is no subsequent up-event.  In
!                            ;; this case, the up-event is the next
!                            ;; element in the supplied vector.
!                            (= (length key) 1))
!                       (and (> (length key) 1)
!                            (eventp (aref key 1))
!                            (memq 'down (event-modifiers (aref key 1)))))
!                   (read-event))))
         ;; Put yank-menu back as it was, if we changed it.
         (when saved-yank-menu
  	 (setq yank-menu (copy-sequence saved-yank-menu))
***************
*** 745,752 ****
        (with-help-window (help-buffer)
  	(princ (help-key-description key untranslated))
  	(princ (format "\
! %s runs the command %S
!   which is "
  		       mouse-msg defn))
  	(describe-function-1 defn)
  	(when up-event
--- 745,751 ----
        (with-help-window (help-buffer)
  	(princ (help-key-description key untranslated))
  	(princ (format "\
! %s runs the command %S,  which is "
  		       mouse-msg defn))
  	(describe-function-1 defn)
  	(when up-event
***************
*** 757,780 ****
  
  ----------------- up-event %s----------------
  
! <%S>%s%s runs the command %S
!   which is "
! 			   (if mouse-1-tricky "(short click) " "")
! 			   ev-type mouse-msg
! 			   (if mouse-1-remapped
! 			       " is remapped to <mouse-2>\nwhich" "")
! 			   defn-up))
! 	    (describe-function-1 defn-up))
! 	  (unless (or (null defn-up-tricky)
! 		      (integerp defn-up-tricky)
! 		      (eq defn-up-tricky 'undefined))
! 	    (princ (format "
  
  ----------------- up-event (long click) ----------------
  
  Pressing <%S>%s for longer than %d milli-seconds
! runs the command %S
!   which is "
  			   ev-type mouse-msg
  			   mouse-1-click-follows-link
  			   defn-up-tricky))
--- 756,777 ----
  
  ----------------- up-event %s----------------
  
! <%S>%s%s runs the command %S, which is "
!                            (if mouse-1-tricky "(short click) " "")
!                            ev-type mouse-msg
!                            (if mouse-1-remapped
!                                " is remapped to <mouse-2>, which" "")
!                            defn-up))
!             (describe-function-1 defn-up))
!           (unless (or (null defn-up-tricky)
!                       (integerp defn-up-tricky)
!                       (eq defn-up-tricky 'undefined))
!             (princ (format "
  
  ----------------- up-event (long click) ----------------
  
  Pressing <%S>%s for longer than %d milli-seconds
! runs the command %S, which is "
  			   ev-type mouse-msg
  			   mouse-1-click-follows-link
  			   defn-up-tricky))

