2006-09-20 David Kastrup <dak@gnu.org>
+ * mouse.el (mouse-posn-property): Improve doc string.
+ (mouse-on-link-p): Change buffers for function calls on links.
+
* menu-bar.el (clipboard-yank): bomb out in interactive use if
buffer is read-only.
(defun mouse-posn-property (pos property)
- "Look for a property at click position."
+ "Look for a property at click position.
+POS may be either a buffer position or a click position like
+those returned from `start-event'. If the click position is on
+a string, the text property PROPERTY is examined.
+If this is nil or the click is not on a string, then
+the corresponding buffer position is searched for PROPERTY.
+If PROPERTY is encountered in one of those places,
+its value is returned."
(if (consp pos)
(let ((w (posn-window pos)) (pt (posn-point pos))
(str (posn-string pos)))
((eq action 'mouse-face)
(and (mouse-posn-property pos 'mouse-face) t))
((functionp action)
- ;; FIXME: This is wrong if the click is in a different buffer.
+ ;; FIXME: This seems questionable if the click is not in a buffer.
;; Should we instead decide that `action' takes a `posn'?
- (funcall action (if (consp pos) (posn-point pos) pos)))
+ (if (consp pos)
+ (with-current-buffer (window-buffer (posn-window pos))
+ (funcall action (posn-point pos)))
+ (funcall action pos)))
(t action))))
(defun mouse-fixup-help-message (msg)