don't require grep in vc-git
[bpt/emacs.git] / lisp / tooltip.el
index 50ae682..9d0954f 100644 (file)
@@ -1,6 +1,6 @@
 ;;; tooltip.el --- show tooltip windows
 
-;; Copyright (C) 1997, 1999-2012 Free Software Foundation, Inc.
+;; Copyright (C) 1997, 1999-2014 Free Software Foundation, Inc.
 
 ;; Author: Gerd Moellmann <gerd@acm.org>
 ;; Keywords: help c mouse tools
@@ -25,6 +25,8 @@
 
 ;;; Code:
 
+(require 'syntax)
+
 (defvar comint-prompt-regexp)
 
 (defgroup tooltip nil
@@ -40,7 +42,9 @@
 
 (define-minor-mode tooltip-mode
   "Toggle Tooltip mode.
-With ARG, turn Tooltip mode on if and only if ARG is positive.
+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)
@@ -54,9 +58,7 @@ echo area, instead of making a pop-up window."
   :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))
@@ -147,11 +149,13 @@ This variable is obsolete; instead of setting it to t, disable
   :group 'tooltip)
 
 (make-obsolete-variable 'tooltip-use-echo-area
-                       "disable Tooltip mode instead" "24.1")
+                       "disable Tooltip mode instead" "24.1" 'set)
 
 \f
 ;;; 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
@@ -159,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.")
 
@@ -275,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)))))))
@@ -338,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)
@@ -364,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.
               )