HideIfDef mode bug fixes and enhancements. This is #2 of 3 patches based
[bpt/emacs.git] / lisp / tooltip.el
index 9d0fbaa..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
@@ -56,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))
@@ -149,7 +149,7 @@ 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.
@@ -277,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)))))))
@@ -340,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)
@@ -366,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.
               )