X-Git-Url: https://git.hcoop.net/bpt/emacs.git/blobdiff_plain/eb3fa2cfcfff550c08f5645c740608f97c2c949e..refs/heads/wip:/lisp/help-at-pt.el diff --git a/lisp/help-at-pt.el b/lisp/help-at-pt.el index ae32af8ec8..7f424f7f3a 100644 --- a/lisp/help-at-pt.el +++ b/lisp/help-at-pt.el @@ -1,6 +1,6 @@ ;;; 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 ;; Keywords: help @@ -61,20 +61,25 @@ property, or nil, is returned. 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))) @@ -104,7 +109,7 @@ internally to enable `help-at-pt-display-when-idle'. Do not set it 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. @@ -146,7 +151,7 @@ This is done by setting a timer, if none is currently active." ;;;###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 @@ -235,7 +240,13 @@ properties, to enable buffer local values." (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))) @@ -344,11 +355,10 @@ rarely happens in practice." 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