;;; help-at-pt.el --- local help through the keyboard
-;; Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+;; Copyright (C) 2003-2014 Free Software Foundation, Inc.
;; Author: Luc Teirlinck <teirllm@auburn.edu>
;; Keywords: help
If KBD is non-nil, `kbd-help' is used instead, and any
`help-echo' property is ignored. In this case, the return value
can also be t, if that is the value of the `kbd-help' property."
- (let* ((prop (if kbd 'kbd-help 'help-echo))
- (pair (get-char-property-and-overlay (point) prop))
- (val (car pair))
- (ov (cdr pair)))
- (if (functionp val)
- (funcall val (selected-window) (if ov ov (current-buffer)) (point))
- (eval val))))
+ (save-excursion
+ (let* ((prop (if kbd 'kbd-help 'help-echo))
+ (pair (get-char-property-and-overlay (point) prop))
+ (pair (if (car pair) pair
+ (unless (bobp)
+ (backward-char)
+ (get-char-property-and-overlay (point) prop))))
+ (val (car pair))
+ (ov (cdr pair)))
+ (if (functionp val)
+ (funcall val (selected-window) (if ov ov (current-buffer)) (point))
+ (eval val)))))
;;;###autoload
(defun help-at-pt-kbd-string ()
"Return the keyboard help string at point.
If the `kbd-help' text or overlay property at point produces a
-string, return it. Otherwise, use the `help-echo' property. If
-this produces no string either, return nil."
+string, return it. Otherwise, use the `help-echo' property.
+If this produces no string either, return nil."
(let ((kbd (help-at-pt-string t))
(echo (help-at-pt-string)))
(if (and kbd (not (eq kbd t))) kbd echo)))
yourself.")
(defcustom help-at-pt-timer-delay 1
- "*Delay before displaying local help.
+ "Delay before displaying local help.
This is used if `help-at-pt-display-when-idle' is enabled.
The value may be an integer or floating point number.
;;;###autoload
(defcustom help-at-pt-display-when-idle 'never
- "*Automatically show local help on point-over.
+ "Automatically show local help on point-over.
If the value is t, the string obtained from any `kbd-help' or
`help-echo' property at point is automatically printed in the
echo area, if nothing else is already displayed there, or after a
(catch 'found
(dolist (prop help-at-pt-display-when-idle)
(if (get-char-property (point) prop)
- (throw 'found t))))))
+ (throw 'found t)))
+ (unless (bobp)
+ (save-excursion
+ (backward-char)
+ (dolist (prop help-at-pt-display-when-idle)
+ (if (get-char-property (point) prop)
+ (throw 'found t))))))))
(or (not (current-message))
(string= (current-message) "Quit"))
(display-local-help t)))
Print the help found there using `display-local-help'. Adjacent
areas with different non-nil help-echo properties are considered
different regions. With numeric argument ARG, behaves like
-`scan-buf-next-region' with argument -ARG.."
+`scan-buf-next-region' with argument -ARG."
(interactive "p")
(scan-buf-move-to-region 'help-echo (- arg) 'scan-buf-move-hook))
(provide 'help-at-pt)
-;; arch-tag: d0b8b86d-d23f-45d0-a82d-208d6205a583
;;; help-at-pt.el ends here