X-Git-Url: http://git.hcoop.net/bpt/emacs.git/blobdiff_plain/14beddf4711854b01d400f36166dc71eb39435bb..51721edc6ba92f9c7cb6a2daab45bb538a696f3d:/lisp/tooltip.el diff --git a/lisp/tooltip.el b/lisp/tooltip.el index f135d98d71..9d0954fc5d 100644 --- a/lisp/tooltip.el +++ b/lisp/tooltip.el @@ -1,6 +1,6 @@ ;;; tooltip.el --- show tooltip windows -;; Copyright (C) 1997, 1999-2011 Free Software Foundation, Inc. +;; Copyright (C) 1997, 1999-2014 Free Software Foundation, Inc. ;; Author: Gerd Moellmann ;; Keywords: help c mouse tools @@ -25,6 +25,8 @@ ;;; Code: +(require 'syntax) + (defvar comint-prompt-regexp) (defgroup tooltip nil @@ -40,23 +42,23 @@ (define-minor-mode tooltip-mode "Toggle Tooltip mode. -With ARG, turn Tooltip mode on if and only if ARG is positive. -When this minor mode is enabled, Emacs displays help text -in a pop-up window for buttons and menu items that you put the mouse on. -\(However, if `tooltip-use-echo-area' is non-nil, this and -all pop-up help appears in the echo area.) - -When Tooltip mode is disabled, Emacs displays one line of -the help text in the echo area, and does not make a pop-up window." +With a prefix argument ARG, enable Tooltip mode if ARG is positive, +and disable it otherwise. If called from Lisp, enable the mode +if ARG is omitted or nil. + +When this global minor mode is enabled, Emacs displays help +text (e.g. for buttons and menu items that you put the mouse on) +in a pop-up window. + +When Tooltip mode is disabled, Emacs displays help text in the +echo area, instead of making a pop-up window." :global t ;; Even if we start on a text-only terminal, make this non-nil by ;; default because we can open a graphical frame later (multi-tty). :init-value t :initialize 'custom-initialize-delay :group 'tooltip - (unless (or (null tooltip-mode) (fboundp 'x-show-tip)) - (error "Sorry, tooltips are not yet available on this system")) - (if tooltip-mode + (if (and tooltip-mode (fboundp 'x-show-tip)) (progn (add-hook 'pre-command-hook 'tooltip-hide) (add-hook 'tooltip-functions 'tooltip-help-tips)) @@ -141,14 +143,19 @@ of the `tooltip' face are used instead." (defcustom tooltip-use-echo-area nil "Use the echo area instead of tooltip frames for help and GUD tooltips. -To display multi-line help text in the echo area, set this to t -and enable `tooltip-mode'." +This variable is obsolete; instead of setting it to t, disable +`tooltip-mode' (which has a similar effect)." :type 'boolean :group 'tooltip) +(make-obsolete-variable 'tooltip-use-echo-area + "disable Tooltip mode instead" "24.1" 'set) + ;;; Variables that are not customizable. +(define-obsolete-variable-alias 'tooltip-hook 'tooltip-functions "23.1") + (defvar tooltip-functions nil "Functions to call to display tooltips. Each function is called with one argument EVENT which is a copy @@ -156,8 +163,6 @@ of the last mouse movement event that occurred. If one of these functions displays the tooltip, it should return non-nil and the rest are not called.") -(define-obsolete-variable-alias 'tooltip-hook 'tooltip-functions "23.1") - (defvar tooltip-timeout-id nil "The id of the timeout started when Emacs becomes idle.") @@ -198,7 +203,7 @@ This might return nil if the event did not occur over a buffer." (setq tooltip-timeout-id (add-timeout (tooltip-delay) 'tooltip-timeout nil))) -(defun tooltip-timeout (object) +(defun tooltip-timeout (_object) "Function called when timer with id `tooltip-timeout-id' fires." (run-hook-with-args-until-success 'tooltip-functions tooltip-last-mouse-motion-event)) @@ -256,7 +261,7 @@ in echo area." (declare-function x-hide-tip "xfns.c" ()) -(defun tooltip-hide (&optional ignored-arg) +(defun tooltip-hide (&optional _ignored-arg) "Hide a tooltip, if one is displayed. Value is non-nil if tooltip was open." (tooltip-cancel-delayed-tip) @@ -272,8 +277,11 @@ Value is nil if no identifier exists at point. Identifier extraction is based on the current syntax table." (save-excursion (goto-char point) - (let ((start (progn (skip-syntax-backward "w_") (point)))) - (unless (looking-at "[0-9]") + (let* ((start (progn (skip-syntax-backward "w_") (point))) + (pstate (syntax-ppss))) + (unless (or (looking-at "[0-9]") + (nth 3 pstate) + (nth 4 pstate)) (skip-syntax-forward "w_") (when (> (point) start) (buffer-substring start (point))))))) @@ -335,10 +343,10 @@ It is also called if Tooltip mode is on, for text-only displays." ((stringp help) (setq help (replace-regexp-in-string "\n" ", " help)) (unless (or tooltip-previous-message - (string-equal help (current-message)) + (equal-including-properties help (current-message)) (and (stringp tooltip-help-message) - (string-equal tooltip-help-message - (current-message)))) + (equal-including-properties tooltip-help-message + (current-message)))) (setq tooltip-previous-message (current-message))) (setq tooltip-help-message help) (let ((message-truncate-lines t) @@ -361,7 +369,7 @@ MSG is either a help string to display, or nil to cancel the display." ;; Cancel display. This also cancels a delayed tip, if ;; there is one. (tooltip-hide)) - ((equal previous-help msg) + ((equal-including-properties previous-help msg) ;; Same help as before (but possibly the mouse has moved). ;; Keep what we have. ) @@ -373,7 +381,7 @@ MSG is either a help string to display, or nil to cancel the display." ;; On text-only displays, try `tooltip-show-help-non-mode'. (tooltip-show-help-non-mode msg))) -(defun tooltip-help-tips (event) +(defun tooltip-help-tips (_event) "Hook function to display a help tooltip. This is installed on the hook `tooltip-functions', which is run when the timer with id `tooltip-timeout-id' fires.