X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/4dc7c8d5795458e89d19b59f64760e155c2cd70b..058f56d24f776bdc25bcac86fe1f8969a78374e9:/lisp/tooltip.el diff --git a/lisp/tooltip.el b/lisp/tooltip.el index 9d0fbaae9d..26cce418e4 100644 --- a/lisp/tooltip.el +++ b/lisp/tooltip.el @@ -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 ;; 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) ;;; Variables that are not customizable. @@ -215,11 +215,9 @@ This might return nil if the event did not occur over a buffer." "Change the value of KEY in alist ALIST to VALUE. If there's no association for KEY in ALIST, add one, otherwise change the existing association. Value is the resulting alist." - (let ((param (assq key alist))) - (if (consp param) - (setcdr param value) - (push (cons key value) alist)) - alist)) + (declare (obsolete "use (setf (alist-get ..) ..) instead" "25.1")) + (setf (alist-get key alist) value) + alist) (declare-function x-show-tip "xfns.c" (string &optional frame parms timeout dx dy)) @@ -244,10 +242,10 @@ in echo area." (fg (face-attribute 'tooltip :foreground)) (bg (face-attribute 'tooltip :background))) (when (stringp fg) - (setq params (tooltip-set-param params 'foreground-color fg)) - (setq params (tooltip-set-param params 'border-color fg))) + (setf (alist-get 'foreground-color params) fg) + (setf (alist-get 'border-color params) fg)) (when (stringp bg) - (setq params (tooltip-set-param params 'background-color bg))) + (setf (alist-get 'background-color params) bg)) (x-show-tip (propertize text 'face 'tooltip) (selected-frame) params @@ -277,8 +275,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 +341,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 +367,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. )