annotate lisp/tooltip.el @ 55434:f88632e54afb

2004-05-08 John Wiegley <johnw@newartisans.com> * iswitchb.el (iswitchb-use-virtual-buffers): Added support for "virtual buffers" (off by default), which makes it possible to switch to the buffers of recently files. When a buffer name search fails, and this option is on, iswitchb will look at the list of recently visited files, and permit matching against those names. When the user hits RET on a match, it will revisit that file. (iswitchb-read-buffer): Added two optional arguments, which makes isearchb.el possible. (iswitchb-completions, iswitchb-set-matches, iswitchb-prev-match, iswitchb-next-match): Added support for virtual buffers.
author John Wiegley <johnw@newartisans.com>
date Sat, 08 May 2004 13:00:52 +0000
parents 695cf19ef79e
children efb443ceace4 375f2633d815
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
45236
ebc4fa4ef475 Fix typo.
Pavel Janík <Pavel@Janik.cz>
parents: 42706
diff changeset
1 ;;; tooltip.el --- show tooltip windows
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2
35069
d19eadb47c76 (tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents: 35044
diff changeset
3 ;; Copyright (C) 1997, 1999, 2000, 2001 Free Software Foundation, Inc.
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
5 ;; Author: Gerd Moellmann <gerd@acm.org>
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
6 ;; Keywords: help c mouse tools
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
7
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
8 ;; This file is part of GNU Emacs.
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
9
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
10 ;; GNU Emacs is free software; you can redistribute it and/or modify
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
11 ;; it under the terms of the GNU General Public License as published by
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
12 ;; the Free Software Foundation; either version 2, or (at your option)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
13 ;; any later version.
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
14
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
15 ;; GNU Emacs is distributed in the hope that it will be useful,
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
18 ;; GNU General Public License for more details.
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
19
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
20 ;; You should have received a copy of the GNU General Public License
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
21 ;; along with GNU Emacs; see the file COPYING. If not, write to the
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
22 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
23 ;; Boston, MA 02111-1307, USA.
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
24
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
25 ;;; Commentary:
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
26
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
27 ;;; Code:
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
28
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
29 (eval-when-compile
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
30 (require 'cl)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
31 (require 'comint)
48925
cd1c70649388 (tooltip-gud-tips): Output tooltip without switching
Nick Roberts <nickrob@snap.net.nz>
parents: 48651
diff changeset
32 (require 'gud)
cd1c70649388 (tooltip-gud-tips): Output tooltip without switching
Nick Roberts <nickrob@snap.net.nz>
parents: 48651
diff changeset
33 (require 'gdb-ui))
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
34
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
35
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
36 ;;; Customizable settings
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
37
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
38 (defgroup tooltip nil
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
39 "Customization group for the `tooltip' package."
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
40 :group 'help
37755
cf803b8f08ad (tooltip) <defgroup>: Put it in `gud' group instead
Gerd Moellmann <gerd@gnu.org>
parents: 35401
diff changeset
41 :group 'gud
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
42 :group 'mouse
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
43 :group 'tools
25332
c09e05be2f4b (tooltip-mode): Customize this, per convention.
Dave Love <fx@gnu.org>
parents: 25003
diff changeset
44 :version "21.1"
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
45 :tag "Tool Tips")
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
46
25332
c09e05be2f4b (tooltip-mode): Customize this, per convention.
Dave Love <fx@gnu.org>
parents: 25003
diff changeset
47 (defvar tooltip-mode)
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
48
40679
3c4df1ce9e4c (tooltip-delay): Decrease to 0.7.
Eli Zaretskii <eliz@gnu.org>
parents: 40376
diff changeset
49 (defcustom tooltip-delay 0.7
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
50 "Seconds to wait before displaying a tooltip the first time."
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
51 :tag "Delay"
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
52 :type 'number
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
53 :group 'tooltip)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
54
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
55 (defcustom tooltip-short-delay 0.1
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
56 "Seconds to wait between subsequent tooltips on different items."
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
57 :tag "Short delay"
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
58 :type 'number
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
59 :group 'tooltip)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
60
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
61 (defcustom tooltip-recent-seconds 1
25332
c09e05be2f4b (tooltip-mode): Customize this, per convention.
Dave Love <fx@gnu.org>
parents: 25003
diff changeset
62 "Display tooltips if changing tip items within this many seconds.
c09e05be2f4b (tooltip-mode): Customize this, per convention.
Dave Love <fx@gnu.org>
parents: 25003
diff changeset
63 Do so after `tooltip-short-delay'."
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
64 :tag "Recent seconds"
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
65 :type 'number
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
66 :group 'tooltip)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
67
40679
3c4df1ce9e4c (tooltip-delay): Decrease to 0.7.
Eli Zaretskii <eliz@gnu.org>
parents: 40376
diff changeset
68 (defcustom tooltip-hide-delay 10
35401
c00e94a506a2 (tooltip-hide-delay): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents: 35069
diff changeset
69 "Hide tooltips automatically after this many seconds."
c00e94a506a2 (tooltip-hide-delay): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents: 35069
diff changeset
70 :tag "Hide delay"
c00e94a506a2 (tooltip-hide-delay): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents: 35069
diff changeset
71 :type 'number
c00e94a506a2 (tooltip-hide-delay): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents: 35069
diff changeset
72 :group 'tooltip)
c00e94a506a2 (tooltip-hide-delay): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents: 35069
diff changeset
73
33587
7d4c3fcd3421 (tooltip-x-offset, tooltip-y-offset): New user-options.
Gerd Moellmann <gerd@gnu.org>
parents: 33356
diff changeset
74 (defcustom tooltip-x-offset nil
46025
ce0d438fe05e (tooltip-x-offset, tooltip-y-offset): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 45571
diff changeset
75 "X offset, in pixels, for the display of tooltips.
33587
7d4c3fcd3421 (tooltip-x-offset, tooltip-y-offset): New user-options.
Gerd Moellmann <gerd@gnu.org>
parents: 33356
diff changeset
76 The offset is relative to the position of the mouse. It must
7d4c3fcd3421 (tooltip-x-offset, tooltip-y-offset): New user-options.
Gerd Moellmann <gerd@gnu.org>
parents: 33356
diff changeset
77 be chosen so that the tooltip window doesn't contain the mouse
40173
c4955867228d (tooltip-x-offset, tooltip-y-offset): Mention in the
Eli Zaretskii <eliz@gnu.org>
parents: 37755
diff changeset
78 when it pops up. If the value is nil, the default offset is 5
c4955867228d (tooltip-x-offset, tooltip-y-offset): Mention in the
Eli Zaretskii <eliz@gnu.org>
parents: 37755
diff changeset
79 pixels.
c4955867228d (tooltip-x-offset, tooltip-y-offset): Mention in the
Eli Zaretskii <eliz@gnu.org>
parents: 37755
diff changeset
80
c4955867228d (tooltip-x-offset, tooltip-y-offset): Mention in the
Eli Zaretskii <eliz@gnu.org>
parents: 37755
diff changeset
81 If `tooltip-frame-parameters' includes the `left' parameter,
c4955867228d (tooltip-x-offset, tooltip-y-offset): Mention in the
Eli Zaretskii <eliz@gnu.org>
parents: 37755
diff changeset
82 the value of `tooltip-x-offset' is ignored."
33587
7d4c3fcd3421 (tooltip-x-offset, tooltip-y-offset): New user-options.
Gerd Moellmann <gerd@gnu.org>
parents: 33356
diff changeset
83 :tag "X offset"
7d4c3fcd3421 (tooltip-x-offset, tooltip-y-offset): New user-options.
Gerd Moellmann <gerd@gnu.org>
parents: 33356
diff changeset
84 :type '(choice (const :tag "Default" nil)
7d4c3fcd3421 (tooltip-x-offset, tooltip-y-offset): New user-options.
Gerd Moellmann <gerd@gnu.org>
parents: 33356
diff changeset
85 (integer :tag "Offset" :value 1))
7d4c3fcd3421 (tooltip-x-offset, tooltip-y-offset): New user-options.
Gerd Moellmann <gerd@gnu.org>
parents: 33356
diff changeset
86 :group 'tooltip)
7d4c3fcd3421 (tooltip-x-offset, tooltip-y-offset): New user-options.
Gerd Moellmann <gerd@gnu.org>
parents: 33356
diff changeset
87
7d4c3fcd3421 (tooltip-x-offset, tooltip-y-offset): New user-options.
Gerd Moellmann <gerd@gnu.org>
parents: 33356
diff changeset
88 (defcustom tooltip-y-offset nil
46025
ce0d438fe05e (tooltip-x-offset, tooltip-y-offset): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 45571
diff changeset
89 "Y offset, in pixels, for the display of tooltips.
33587
7d4c3fcd3421 (tooltip-x-offset, tooltip-y-offset): New user-options.
Gerd Moellmann <gerd@gnu.org>
parents: 33356
diff changeset
90 The offset is relative to the position of the mouse. It must
7d4c3fcd3421 (tooltip-x-offset, tooltip-y-offset): New user-options.
Gerd Moellmann <gerd@gnu.org>
parents: 33356
diff changeset
91 be chosen so that the tooltip window doesn't contain the mouse
40173
c4955867228d (tooltip-x-offset, tooltip-y-offset): Mention in the
Eli Zaretskii <eliz@gnu.org>
parents: 37755
diff changeset
92 when it pops up. If the value is nil, the default offset is -10
c4955867228d (tooltip-x-offset, tooltip-y-offset): Mention in the
Eli Zaretskii <eliz@gnu.org>
parents: 37755
diff changeset
93 pixels.
c4955867228d (tooltip-x-offset, tooltip-y-offset): Mention in the
Eli Zaretskii <eliz@gnu.org>
parents: 37755
diff changeset
94
c4955867228d (tooltip-x-offset, tooltip-y-offset): Mention in the
Eli Zaretskii <eliz@gnu.org>
parents: 37755
diff changeset
95 If `tooltip-frame-parameters' includes the `top' parameter,
c4955867228d (tooltip-x-offset, tooltip-y-offset): Mention in the
Eli Zaretskii <eliz@gnu.org>
parents: 37755
diff changeset
96 the value of `tooltip-y-offset' is ignored."
33587
7d4c3fcd3421 (tooltip-x-offset, tooltip-y-offset): New user-options.
Gerd Moellmann <gerd@gnu.org>
parents: 33356
diff changeset
97 :tag "Y offset"
7d4c3fcd3421 (tooltip-x-offset, tooltip-y-offset): New user-options.
Gerd Moellmann <gerd@gnu.org>
parents: 33356
diff changeset
98 :type '(choice (const :tag "Default" nil)
7d4c3fcd3421 (tooltip-x-offset, tooltip-y-offset): New user-options.
Gerd Moellmann <gerd@gnu.org>
parents: 33356
diff changeset
99 (integer :tag "Offset" :value 1))
7d4c3fcd3421 (tooltip-x-offset, tooltip-y-offset): New user-options.
Gerd Moellmann <gerd@gnu.org>
parents: 33356
diff changeset
100 :group 'tooltip)
7d4c3fcd3421 (tooltip-x-offset, tooltip-y-offset): New user-options.
Gerd Moellmann <gerd@gnu.org>
parents: 33356
diff changeset
101
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
102 (defcustom tooltip-frame-parameters
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
103 '((name . "tooltip")
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
104 (internal-border-width . 5)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
105 (border-width . 1))
40173
c4955867228d (tooltip-x-offset, tooltip-y-offset): Mention in the
Eli Zaretskii <eliz@gnu.org>
parents: 37755
diff changeset
106 "Frame parameters used for tooltips.
c4955867228d (tooltip-x-offset, tooltip-y-offset): Mention in the
Eli Zaretskii <eliz@gnu.org>
parents: 37755
diff changeset
107
c4955867228d (tooltip-x-offset, tooltip-y-offset): Mention in the
Eli Zaretskii <eliz@gnu.org>
parents: 37755
diff changeset
108 If `left' or `top' parameters are included, they specify the absolute
c4955867228d (tooltip-x-offset, tooltip-y-offset): Mention in the
Eli Zaretskii <eliz@gnu.org>
parents: 37755
diff changeset
109 position to pop up the tooltip."
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
110 :type 'sexp
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
111 :tag "Frame Parameters"
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
112 :group 'tooltip)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
113
35043
f7ca93e40e16 (tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents: 34689
diff changeset
114 (defface tooltip
f7ca93e40e16 (tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents: 34689
diff changeset
115 '((((class color))
52031
5163fa137977 (defface tooltip): Inherit from variable-pitch.
John Paul Wallington <jpw@pobox.com>
parents: 49597
diff changeset
116 :background "lightyellow"
5163fa137977 (defface tooltip): Inherit from variable-pitch.
John Paul Wallington <jpw@pobox.com>
parents: 49597
diff changeset
117 :foreground "black"
5163fa137977 (defface tooltip): Inherit from variable-pitch.
John Paul Wallington <jpw@pobox.com>
parents: 49597
diff changeset
118 :inherit variable-pitch)
5163fa137977 (defface tooltip): Inherit from variable-pitch.
John Paul Wallington <jpw@pobox.com>
parents: 49597
diff changeset
119 (t
5163fa137977 (defface tooltip): Inherit from variable-pitch.
John Paul Wallington <jpw@pobox.com>
parents: 49597
diff changeset
120 :inherit variable-pitch))
35043
f7ca93e40e16 (tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents: 34689
diff changeset
121 "Face for tooltips."
f7ca93e40e16 (tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents: 34689
diff changeset
122 :group 'tooltip)
f7ca93e40e16 (tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents: 34689
diff changeset
123
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
124 (defcustom tooltip-gud-tips-p nil
48651
572f41d9a2ea (tooltip-gud-tips-p): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 48601
diff changeset
125 "*Non-nil means show tooltips in GUD sessions."
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
126 :type 'boolean
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
127 :tag "GUD"
33140
61f4c87b845c (tooltip-gud-tips-setup): New function.
Miles Bader <miles@gnu.org>
parents: 32431
diff changeset
128 :set #'(lambda (symbol on)
48572
67d16fb6f6c8 (tooltip-gud-tips-setup): Remove.
Nick Roberts <nickrob@snap.net.nz>
parents: 48517
diff changeset
129 (setq tooltip-gud-tips-p on))
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
130 :group 'tooltip)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
131
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
132 (defcustom tooltip-gud-modes '(gud-mode c-mode c++-mode)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
133 "List of modes for which to enable GUD tips."
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
134 :type 'sexp
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
135 :tag "GUD modes"
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
136 :group 'tooltip)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
137
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
138 (defcustom tooltip-gud-display
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
139 '((eq (tooltip-event-buffer tooltip-gud-event)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
140 (marker-buffer overlay-arrow-position)))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
141 "List of forms determining where GUD tooltips are displayed.
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
142
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
143 Forms in the list are combined with AND. The default is to display
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
144 only tooltips in the buffer containing the overlay arrow."
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
145 :type 'sexp
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
146 :tag "GUD buffers predicate"
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
147 :group 'tooltip)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
148
32431
a35cc9700ff7 * tooltip.el (tooltip-use-echo-area): New user variable.
Sam Steingold <sds@gnu.org>
parents: 30481
diff changeset
149 (defcustom tooltip-use-echo-area nil
33923
44a439ef63c0 (tooltip-use-echo-area): Doc fix.
Dave Love <fx@gnu.org>
parents: 33587
diff changeset
150 "Use the echo area instead of tooltip frames.
44a439ef63c0 (tooltip-use-echo-area): Doc fix.
Dave Love <fx@gnu.org>
parents: 33587
diff changeset
151 This is only relevant GUD display, since otherwise it is equivalent to
44a439ef63c0 (tooltip-use-echo-area): Doc fix.
Dave Love <fx@gnu.org>
parents: 33587
diff changeset
152 turning off Tooltip mode."
32431
a35cc9700ff7 * tooltip.el (tooltip-use-echo-area): New user variable.
Sam Steingold <sds@gnu.org>
parents: 30481
diff changeset
153 :type 'boolean
33925
9d6fdd64a809 *** empty log message ***
Dave Love <fx@gnu.org>
parents: 33923
diff changeset
154 :tag "Use echo area"
32431
a35cc9700ff7 * tooltip.el (tooltip-use-echo-area): New user variable.
Sam Steingold <sds@gnu.org>
parents: 30481
diff changeset
155 :group 'tooltip)
a35cc9700ff7 * tooltip.el (tooltip-use-echo-area): New user variable.
Sam Steingold <sds@gnu.org>
parents: 30481
diff changeset
156
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
157
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
158 ;;; Variables that are not customizable.
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
159
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
160 (defvar tooltip-hook nil
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
161 "Functions to call to display tooltips.
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
162 Each function is called with one argument EVENT which is a copy of
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
163 the last mouse movement event that occurred.")
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
164
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
165 (defvar tooltip-timeout-id nil
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
166 "The id of the timeout started when Emacs becomes idle.")
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
167
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
168 (defvar tooltip-last-mouse-motion-event nil
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
169 "A copy of the last mouse motion event seen.")
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
170
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
171 (defvar tooltip-hide-time nil
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
172 "Time when the last tooltip was hidden.")
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
173
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
174
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
175 ;;; Event accessors
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
176
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
177 (defun tooltip-event-buffer (event)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
178 "Return the buffer over which event EVENT occurred.
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
179 This might return nil if the event did not occur over a buffer."
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
180 (let ((window (posn-window (event-end event))))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
181 (and window (window-buffer window))))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
182
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
183
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
184 ;;; Switching tooltips on/off
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
185
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
186 ;; We don't set track-mouse globally because this is a big redisplay
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
187 ;; problem in buffers having a pre-command-hook or such installed,
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
188 ;; which does a set-buffer, like the summary buffer of Gnus. Calling
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
189 ;; set-buffer prevents redisplay optimizations, so every mouse motion
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
190 ;; would be accompanied by a full redisplay.
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
191
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
192 ;;;###autoload
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
193 (defun tooltip-mode (&optional arg)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
194 "Mode for tooltip display.
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
195 With ARG, turn tooltip mode on if and only if ARG is positive."
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
196 (interactive "P")
34689
e045e0e60223 (tooltip-mode): Signal an error if x-show-tip
Gerd Moellmann <gerd@gnu.org>
parents: 34540
diff changeset
197 (unless (fboundp 'x-show-tip)
e045e0e60223 (tooltip-mode): Signal an error if x-show-tip
Gerd Moellmann <gerd@gnu.org>
parents: 34540
diff changeset
198 (error "Sorry, tooltips are not yet available on this system"))
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
199 (let* ((on (if arg
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
200 (> (prefix-numeric-value arg) 0)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
201 (not tooltip-mode)))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
202 (hook-fn (if on 'add-hook 'remove-hook)))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
203 (setq tooltip-mode on)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
204 (funcall hook-fn 'change-major-mode-hook 'tooltip-change-major-mode)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
205 (tooltip-activate-mouse-motions-if-enabled)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
206 (funcall hook-fn 'pre-command-hook 'tooltip-hide)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
207 (funcall hook-fn 'tooltip-hook 'tooltip-gud-tips)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
208 (funcall hook-fn 'tooltip-hook 'tooltip-help-tips)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
209 (setq show-help-function (if on 'tooltip-show-help-function nil))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
210 ;; `ignore' is the default binding for mouse movements.
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
211 (define-key global-map [mouse-movement]
48572
67d16fb6f6c8 (tooltip-gud-tips-setup): Remove.
Nick Roberts <nickrob@snap.net.nz>
parents: 48517
diff changeset
212 (if on 'tooltip-mouse-motion 'ignore))))
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
213
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
214
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
215 ;;; Timeout for tooltip display
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
216
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
217 (defun tooltip-delay ()
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
218 "Return the delay in seconds for the next tooltip."
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
219 (let ((delay tooltip-delay)
30481
b603c68fff56 use float-time
Sam Steingold <sds@gnu.org>
parents: 27582
diff changeset
220 (now (float-time)))
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
221 (when (and tooltip-hide-time
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
222 (< (- now tooltip-hide-time) tooltip-recent-seconds))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
223 (setq delay tooltip-short-delay))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
224 delay))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
225
35069
d19eadb47c76 (tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents: 35044
diff changeset
226 (defun tooltip-cancel-delayed-tip ()
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
227 "Disable the tooltip timeout."
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
228 (when tooltip-timeout-id
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
229 (disable-timeout tooltip-timeout-id)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
230 (setq tooltip-timeout-id nil)))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
231
35069
d19eadb47c76 (tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents: 35044
diff changeset
232 (defun tooltip-start-delayed-tip ()
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
233 "Add a one-shot timeout to call function tooltip-timeout."
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
234 (setq tooltip-timeout-id
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
235 (add-timeout (tooltip-delay) 'tooltip-timeout nil)))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
236
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
237 (defun tooltip-timeout (object)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
238 "Function called when timer with id tooltip-timeout-id fires."
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
239 (run-hook-with-args-until-success 'tooltip-hook
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
240 tooltip-last-mouse-motion-event))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
241
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
242
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
243 ;;; Reacting on mouse movements
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
244
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
245 (defun tooltip-change-major-mode ()
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
246 "Function added to `change-major-mode-hook' when tooltip mode is on."
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
247 (add-hook 'post-command-hook 'tooltip-activate-mouse-motions-if-enabled))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
248
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
249 (defun tooltip-activate-mouse-motions-if-enabled ()
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
250 "Reconsider for all buffers whether mouse motion events are desired."
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
251 (remove-hook 'post-command-hook 'tooltip-activate-mouse-motions-if-enabled)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
252 (let ((buffers (buffer-list)))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
253 (save-excursion
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
254 (while buffers
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
255 (set-buffer (car buffers))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
256 (if (and tooltip-mode
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
257 tooltip-gud-tips-p
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
258 (memq major-mode tooltip-gud-modes))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
259 (tooltip-activate-mouse-motions t)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
260 (tooltip-activate-mouse-motions nil))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
261 (setq buffers (cdr buffers))))))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
262
45571
04484b8dacdc (tooltip-mouse-motions-active): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 45236
diff changeset
263 (defvar tooltip-mouse-motions-active nil
04484b8dacdc (tooltip-mouse-motions-active): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 45236
diff changeset
264 "Locally t in a buffer if tooltip processing of mouse motion is enabled.")
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
265
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
266 (defun tooltip-activate-mouse-motions (activatep)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
267 "Activate/deactivate mouse motion events for the current buffer.
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
268 ACTIVATEP non-nil means activate mouse motion events."
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
269 (if activatep
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
270 (progn
45571
04484b8dacdc (tooltip-mouse-motions-active): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 45236
diff changeset
271 (make-local-variable 'tooltip-mouse-motions-active)
04484b8dacdc (tooltip-mouse-motions-active): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 45236
diff changeset
272 (setq tooltip-mouse-motions-active t)
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
273 (make-local-variable 'track-mouse)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
274 (setq track-mouse t))
45571
04484b8dacdc (tooltip-mouse-motions-active): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 45236
diff changeset
275 (when tooltip-mouse-motions-active
04484b8dacdc (tooltip-mouse-motions-active): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 45236
diff changeset
276 (kill-local-variable 'tooltip-mouse-motions-active)
04484b8dacdc (tooltip-mouse-motions-active): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 45236
diff changeset
277 (kill-local-variable 'track-mouse))))
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
278
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
279 (defun tooltip-mouse-motion (event)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
280 "Command handler for mouse movement events in `global-map'."
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
281 (interactive "e")
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
282 (tooltip-hide)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
283 (when (car (mouse-pixel-position))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
284 (setq tooltip-last-mouse-motion-event (copy-sequence event))
35069
d19eadb47c76 (tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents: 35044
diff changeset
285 (tooltip-start-delayed-tip)))
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
286
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
287
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
288 ;;; Displaying tips
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
289
35043
f7ca93e40e16 (tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents: 34689
diff changeset
290 (defun tooltip-set-param (alist key value)
40178
1dab42ecd751 (tooltip-set-param): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 40173
diff changeset
291 "Change the value of KEY in alist ALIST to VALUE.
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48925
diff changeset
292 If there's no association for KEY in ALIST, add one, otherwise
35043
f7ca93e40e16 (tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents: 34689
diff changeset
293 change the existing association. Value is the resulting alist."
f7ca93e40e16 (tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents: 34689
diff changeset
294 (let ((param (assq key alist)))
f7ca93e40e16 (tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents: 34689
diff changeset
295 (if (consp param)
f7ca93e40e16 (tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents: 34689
diff changeset
296 (setcdr param value)
f7ca93e40e16 (tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents: 34689
diff changeset
297 (push (cons key value) alist))
f7ca93e40e16 (tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents: 34689
diff changeset
298 alist))
f7ca93e40e16 (tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents: 34689
diff changeset
299
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
300 (defun tooltip-show (text)
40173
c4955867228d (tooltip-x-offset, tooltip-y-offset): Mention in the
Eli Zaretskii <eliz@gnu.org>
parents: 37755
diff changeset
301 "Show a tooltip window displaying TEXT.
c4955867228d (tooltip-x-offset, tooltip-y-offset): Mention in the
Eli Zaretskii <eliz@gnu.org>
parents: 37755
diff changeset
302
c4955867228d (tooltip-x-offset, tooltip-y-offset): Mention in the
Eli Zaretskii <eliz@gnu.org>
parents: 37755
diff changeset
303 Text larger than `x-max-tooltip-size' (which see) is clipped.
c4955867228d (tooltip-x-offset, tooltip-y-offset): Mention in the
Eli Zaretskii <eliz@gnu.org>
parents: 37755
diff changeset
304
c4955867228d (tooltip-x-offset, tooltip-y-offset): Mention in the
Eli Zaretskii <eliz@gnu.org>
parents: 37755
diff changeset
305 If the alist in `tooltip-frame-parameters' includes `left' and `top'
c4955867228d (tooltip-x-offset, tooltip-y-offset): Mention in the
Eli Zaretskii <eliz@gnu.org>
parents: 37755
diff changeset
306 parameters, they determine the x and y position where the tooltip
c4955867228d (tooltip-x-offset, tooltip-y-offset): Mention in the
Eli Zaretskii <eliz@gnu.org>
parents: 37755
diff changeset
307 is displayed. Otherwise, the tooltip pops at offsets specified by
c4955867228d (tooltip-x-offset, tooltip-y-offset): Mention in the
Eli Zaretskii <eliz@gnu.org>
parents: 37755
diff changeset
308 `tooltip-x-offset' and `tooltip-y-offset' from the current mouse
c4955867228d (tooltip-x-offset, tooltip-y-offset): Mention in the
Eli Zaretskii <eliz@gnu.org>
parents: 37755
diff changeset
309 position."
32431
a35cc9700ff7 * tooltip.el (tooltip-use-echo-area): New user variable.
Sam Steingold <sds@gnu.org>
parents: 30481
diff changeset
310 (if tooltip-use-echo-area
a35cc9700ff7 * tooltip.el (tooltip-use-echo-area): New user variable.
Sam Steingold <sds@gnu.org>
parents: 30481
diff changeset
311 (message "%s" text)
34540
e1e4704de6ed (tooltip-show): If an error is signaled in
Gerd Moellmann <gerd@gnu.org>
parents: 33925
diff changeset
312 (condition-case error
35043
f7ca93e40e16 (tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents: 34689
diff changeset
313 (let ((params (copy-sequence tooltip-frame-parameters))
f7ca93e40e16 (tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents: 34689
diff changeset
314 (fg (face-attribute 'tooltip :foreground))
f7ca93e40e16 (tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents: 34689
diff changeset
315 (bg (face-attribute 'tooltip :background)))
35069
d19eadb47c76 (tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents: 35044
diff changeset
316 (when (stringp fg)
d19eadb47c76 (tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents: 35044
diff changeset
317 (setq params (tooltip-set-param params 'foreground-color fg))
d19eadb47c76 (tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents: 35044
diff changeset
318 (setq params (tooltip-set-param params 'border-color fg)))
d19eadb47c76 (tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents: 35044
diff changeset
319 (when (stringp bg)
d19eadb47c76 (tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents: 35044
diff changeset
320 (setq params (tooltip-set-param params 'background-color bg)))
35043
f7ca93e40e16 (tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents: 34689
diff changeset
321 (x-show-tip (propertize text 'face 'tooltip)
f7ca93e40e16 (tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents: 34689
diff changeset
322 (selected-frame)
35044
bb5e7a8b6f4c Fix last change.
Gerd Moellmann <gerd@gnu.org>
parents: 35043
diff changeset
323 params
35401
c00e94a506a2 (tooltip-hide-delay): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents: 35069
diff changeset
324 tooltip-hide-delay
35043
f7ca93e40e16 (tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents: 34689
diff changeset
325 tooltip-x-offset
f7ca93e40e16 (tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents: 34689
diff changeset
326 tooltip-y-offset))
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48925
diff changeset
327 (error
34540
e1e4704de6ed (tooltip-show): If an error is signaled in
Gerd Moellmann <gerd@gnu.org>
parents: 33925
diff changeset
328 (message "Error while displaying tooltip: %s" error)
e1e4704de6ed (tooltip-show): If an error is signaled in
Gerd Moellmann <gerd@gnu.org>
parents: 33925
diff changeset
329 (sit-for 1)
e1e4704de6ed (tooltip-show): If an error is signaled in
Gerd Moellmann <gerd@gnu.org>
parents: 33925
diff changeset
330 (message "%s" text)))))
e1e4704de6ed (tooltip-show): If an error is signaled in
Gerd Moellmann <gerd@gnu.org>
parents: 33925
diff changeset
331
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
332 (defun tooltip-hide (&optional ignored-arg)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
333 "Hide a tooltip, if one is displayed.
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
334 Value is non-nil if tooltip was open."
35069
d19eadb47c76 (tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents: 35044
diff changeset
335 (tooltip-cancel-delayed-tip)
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
336 (when (x-hide-tip)
30481
b603c68fff56 use float-time
Sam Steingold <sds@gnu.org>
parents: 27582
diff changeset
337 (setq tooltip-hide-time (float-time))))
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
338
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
339
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
340 ;;; Debugger-related functions
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
341
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
342 (defun tooltip-identifier-from-point (point)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
343 "Extract the identifier at POINT, if any.
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
344 Value is nil if no identifier exists at point. Identifier extraction
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
345 is based on the current syntax table."
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
346 (save-excursion
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
347 (goto-char point)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
348 (let ((start (progn (skip-syntax-backward "w_") (point))))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
349 (unless (looking-at "[0-9]")
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
350 (skip-syntax-forward "w_")
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
351 (when (> (point) start)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
352 (buffer-substring start (point)))))))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
353
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
354 (defmacro tooltip-region-active-p ()
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
355 "Value is non-nil if the region is currently active."
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
356 (if (string-match "^GNU" (emacs-version))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
357 `(and transient-mark-mode mark-active)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
358 `(region-active-p)))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
359
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
360 (defun tooltip-expr-to-print (event)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
361 "Return an expression that should be printed for EVENT.
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
362 If a region is active and the mouse is inside the region, print
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
363 the region. Otherwise, figure out the identifier around the point
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
364 where the mouse is."
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
365 (save-excursion
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
366 (set-buffer (tooltip-event-buffer event))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
367 (let ((point (posn-point (event-end event))))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
368 (if (tooltip-region-active-p)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
369 (when (and (<= (region-beginning) point) (<= point (region-end)))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
370 (buffer-substring (region-beginning) (region-end)))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
371 (tooltip-identifier-from-point point)))))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
372
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
373 (defun tooltip-process-prompt-regexp (process)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
374 "Return regexp matching the prompt of PROCESS at the end of a string.
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
375 The prompt is taken from the value of COMINT-PROMPT-REGEXP in the buffer
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
376 of PROCESS."
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
377 (let ((prompt-regexp (save-excursion
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
378 (set-buffer (process-buffer process))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
379 comint-prompt-regexp)))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
380 ;; Most start with `^' but the one for `sdb' cannot be easily
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
381 ;; stripped. Code the prompt for `sdb' fixed here.
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
382 (if (= (aref prompt-regexp 0) ?^)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
383 (setq prompt-regexp (substring prompt-regexp 1))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
384 (setq prompt-regexp "\\*"))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
385 (concat "\n*" prompt-regexp "$")))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
386
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
387 (defun tooltip-strip-prompt (process output)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
388 "Return OUTPUT with any prompt of PROCESS stripped from its end."
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
389 (let ((prompt-regexp (tooltip-process-prompt-regexp process)))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
390 (save-match-data
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
391 (when (string-match prompt-regexp output)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
392 (setq output (substring output 0 (match-beginning 0)))))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
393 output))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
394
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
395
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
396 ;;; Tips for `gud'
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
397
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
398 (defvar tooltip-gud-original-filter nil
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
399 "Process filter to restore after GUD output has been received.")
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
400
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
401 (defvar tooltip-gud-dereference nil
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
402 "Non-nil means print expressions with a `*' in front of them.
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
403 For C this would dereference a pointer expression.")
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
404
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
405 (defvar tooltip-gud-event nil
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
406 "The mouse movement event that led to a tooltip display.
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
407 This event can be examined by forms in TOOLTIP-GUD-DISPLAY.")
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
408
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
409 (defun tooltip-gud-toggle-dereference ()
27582
42b52d8b6703 (tooltip-gud-tips-p, tooltip-gud-toggle-dereference):
Dave Love <fx@gnu.org>
parents: 25332
diff changeset
410 "Toggle whether tooltips should show `* expr' or `expr'."
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
411 (interactive)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
412 (setq tooltip-gud-dereference (not tooltip-gud-dereference))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
413 (when (interactive-p)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
414 (message "Dereferencing is now %s."
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
415 (if tooltip-gud-dereference "on" "off"))))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
416
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48925
diff changeset
417 ; This will only display data that comes in one chunk.
48601
ac47e19224b0 (tooltip-gud-process-output): Handle annotations that
Nick Roberts <nickrob@snap.net.nz>
parents: 48580
diff changeset
418 ; Larger arrays (say 400 elements) are displayed in
48925
cd1c70649388 (tooltip-gud-tips): Output tooltip without switching
Nick Roberts <nickrob@snap.net.nz>
parents: 48651
diff changeset
419 ; the tootip incompletely and spill over into the gud buffer.
48601
ac47e19224b0 (tooltip-gud-process-output): Handle annotations that
Nick Roberts <nickrob@snap.net.nz>
parents: 48580
diff changeset
420 ; Switching the process-filter creates timing problems and
48925
cd1c70649388 (tooltip-gud-tips): Output tooltip without switching
Nick Roberts <nickrob@snap.net.nz>
parents: 48651
diff changeset
421 ; it may be difficult to do better. gdba in gdb-ui.el
cd1c70649388 (tooltip-gud-tips): Output tooltip without switching
Nick Roberts <nickrob@snap.net.nz>
parents: 48651
diff changeset
422 ; gets round this problem.
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
423 (defun tooltip-gud-process-output (process output)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
424 "Process debugger output and show it in a tooltip window."
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
425 (set-process-filter process tooltip-gud-original-filter)
48925
cd1c70649388 (tooltip-gud-tips): Output tooltip without switching
Nick Roberts <nickrob@snap.net.nz>
parents: 48651
diff changeset
426 (tooltip-show (tooltip-strip-prompt process output)))
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
427
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
428 (defun tooltip-gud-print-command (expr)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
429 "Return a suitable command to print the expression EXPR.
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
430 If TOOLTIP-GUD-DEREFERENCE is t, also prepend a `*' to EXPR."
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
431 (when tooltip-gud-dereference
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
432 (setq expr (concat "*" expr)))
48572
67d16fb6f6c8 (tooltip-gud-tips-setup): Remove.
Nick Roberts <nickrob@snap.net.nz>
parents: 48517
diff changeset
433 (case gud-minor-mode
67d16fb6f6c8 (tooltip-gud-tips-setup): Remove.
Nick Roberts <nickrob@snap.net.nz>
parents: 48517
diff changeset
434 ((gdb gdba) (concat "server print " expr))
48517
2941d71711f3 (tooltip-gud-print-command): Add server prefix to the
Nick Roberts <nickrob@snap.net.nz>
parents: 46025
diff changeset
435 (dbx (concat "print " expr))
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
436 (xdb (concat "p " expr))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
437 (sdb (concat expr "/"))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
438 (perldb expr)))
30481
b603c68fff56 use float-time
Sam Steingold <sds@gnu.org>
parents: 27582
diff changeset
439
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
440 (defun tooltip-gud-tips (event)
25332
c09e05be2f4b (tooltip-mode): Customize this, per convention.
Dave Love <fx@gnu.org>
parents: 25003
diff changeset
441 "Show tip for identifier or selection under the mouse.
c09e05be2f4b (tooltip-mode): Customize this, per convention.
Dave Love <fx@gnu.org>
parents: 25003
diff changeset
442 The mouse must either point at an identifier or inside a selected
c09e05be2f4b (tooltip-mode): Customize this, per convention.
Dave Love <fx@gnu.org>
parents: 25003
diff changeset
443 region for the tip window to be shown. If tooltip-gud-dereference is t,
c09e05be2f4b (tooltip-mode): Customize this, per convention.
Dave Love <fx@gnu.org>
parents: 25003
diff changeset
444 add a `*' in front of the printed expression.
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
445
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
446 This function must return nil if it doesn't handle EVENT."
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
447 (let (gud-buffer process)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
448 (when (and (eventp event)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
449 tooltip-gud-tips-p
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
450 (boundp 'gud-comint-buffer)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
451 (setq gud-buffer gud-comint-buffer)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
452 (setq process (get-buffer-process gud-buffer))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
453 (posn-point (event-end event))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
454 (progn (setq tooltip-gud-event event)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
455 (eval (cons 'and tooltip-gud-display))))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
456 (let ((expr (tooltip-expr-to-print event)))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
457 (when expr
33140
61f4c87b845c (tooltip-gud-tips-setup): New function.
Miles Bader <miles@gnu.org>
parents: 32431
diff changeset
458 (let ((cmd (tooltip-gud-print-command expr)))
61f4c87b845c (tooltip-gud-tips-setup): New function.
Miles Bader <miles@gnu.org>
parents: 32431
diff changeset
459 (unless (null cmd) ; CMD can be nil if unknown debugger
48925
cd1c70649388 (tooltip-gud-tips): Output tooltip without switching
Nick Roberts <nickrob@snap.net.nz>
parents: 48651
diff changeset
460 (case gud-minor-mode
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48925
diff changeset
461 (gdba (gdb-enqueue-input
48925
cd1c70649388 (tooltip-gud-tips): Output tooltip without switching
Nick Roberts <nickrob@snap.net.nz>
parents: 48651
diff changeset
462 (list (concat cmd "\n") 'gdb-tooltip-print)))
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48925
diff changeset
463 (t
48925
cd1c70649388 (tooltip-gud-tips): Output tooltip without switching
Nick Roberts <nickrob@snap.net.nz>
parents: 48651
diff changeset
464 (setq tooltip-gud-original-filter (process-filter process))
cd1c70649388 (tooltip-gud-tips): Output tooltip without switching
Nick Roberts <nickrob@snap.net.nz>
parents: 48651
diff changeset
465 (set-process-filter process 'tooltip-gud-process-output)
cd1c70649388 (tooltip-gud-tips): Output tooltip without switching
Nick Roberts <nickrob@snap.net.nz>
parents: 48651
diff changeset
466 (gud-basic-call cmd)))
cd1c70649388 (tooltip-gud-tips): Output tooltip without switching
Nick Roberts <nickrob@snap.net.nz>
parents: 48651
diff changeset
467 expr)))))))
cd1c70649388 (tooltip-gud-tips): Output tooltip without switching
Nick Roberts <nickrob@snap.net.nz>
parents: 48651
diff changeset
468
cd1c70649388 (tooltip-gud-tips): Output tooltip without switching
Nick Roberts <nickrob@snap.net.nz>
parents: 48651
diff changeset
469 (defun gdb-tooltip-print ()
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48925
diff changeset
470 (tooltip-show
48925
cd1c70649388 (tooltip-gud-tips): Output tooltip without switching
Nick Roberts <nickrob@snap.net.nz>
parents: 48651
diff changeset
471 (with-current-buffer (gdb-get-buffer 'gdb-partial-output-buffer)
cd1c70649388 (tooltip-gud-tips): Output tooltip without switching
Nick Roberts <nickrob@snap.net.nz>
parents: 48651
diff changeset
472 (buffer-string))))
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
473
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
474
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
475 ;;; Tooltip help.
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
476
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
477 (defvar tooltip-help-message nil
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
478 "The last help message received via `tooltip-show-help-function'.")
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
479
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
480 (defun tooltip-show-help-function (msg)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
481 "Function installed as `show-help-function'.
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
482 MSG is either a help string to display, or nil to cancel the display."
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
483 (let ((previous-help tooltip-help-message))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
484 (setq tooltip-help-message msg)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
485 (cond ((null msg)
35069
d19eadb47c76 (tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents: 35044
diff changeset
486 ;; Cancel display. This also cancels a delayed tip, if
d19eadb47c76 (tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents: 35044
diff changeset
487 ;; there is one.
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
488 (tooltip-hide))
35069
d19eadb47c76 (tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents: 35044
diff changeset
489 ((equal previous-help msg)
d19eadb47c76 (tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents: 35044
diff changeset
490 ;; Same help as before (but possibly the mouse has moved).
d19eadb47c76 (tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents: 35044
diff changeset
491 ;; Keep what we have.
d19eadb47c76 (tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents: 35044
diff changeset
492 )
d19eadb47c76 (tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents: 35044
diff changeset
493 (t
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48925
diff changeset
494 ;; A different help. Remove a previous tooltip, and
35069
d19eadb47c76 (tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents: 35044
diff changeset
495 ;; display a new one, with some delay.
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
496 (tooltip-hide)
35069
d19eadb47c76 (tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents: 35044
diff changeset
497 (tooltip-start-delayed-tip)))))
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
498
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
499 (defun tooltip-help-tips (event)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
500 "Hook function to display a help tooltip.
35069
d19eadb47c76 (tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents: 35044
diff changeset
501 This is installed on the hook `tooltip-hook', which is run when
42706
be541feb06cc Fix typo.
Pavel Janík <Pavel@Janik.cz>
parents: 40679
diff changeset
502 the timer with ID `tooltip-timeout-id' fires.
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
503 Value is non-nil if this function handled the tip."
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
504 (when (stringp tooltip-help-message)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
505 (tooltip-show tooltip-help-message)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
506 t))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
507
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
508
33356
73a360d50e18 (tooltip-mode): Add a comment about startup.el
Gerd Moellmann <gerd@gnu.org>
parents: 33140
diff changeset
509 ;;; Do this after all functions have been defined that are called from
73a360d50e18 (tooltip-mode): Add a comment about startup.el
Gerd Moellmann <gerd@gnu.org>
parents: 33140
diff changeset
510 ;;; `tooltip-mode'. The actual default value of `tooltip-mode' is set
73a360d50e18 (tooltip-mode): Add a comment about startup.el
Gerd Moellmann <gerd@gnu.org>
parents: 33140
diff changeset
511 ;;; in startup.el.
25332
c09e05be2f4b (tooltip-mode): Customize this, per convention.
Dave Love <fx@gnu.org>
parents: 25003
diff changeset
512
c09e05be2f4b (tooltip-mode): Customize this, per convention.
Dave Love <fx@gnu.org>
parents: 25003
diff changeset
513 ;;;###autoload
c09e05be2f4b (tooltip-mode): Customize this, per convention.
Dave Love <fx@gnu.org>
parents: 25003
diff changeset
514 (defcustom tooltip-mode nil
c09e05be2f4b (tooltip-mode): Customize this, per convention.
Dave Love <fx@gnu.org>
parents: 25003
diff changeset
515 "Toggle tooltip-mode.
c09e05be2f4b (tooltip-mode): Customize this, per convention.
Dave Love <fx@gnu.org>
parents: 25003
diff changeset
516 Setting this variable directly does not take effect;
c09e05be2f4b (tooltip-mode): Customize this, per convention.
Dave Love <fx@gnu.org>
parents: 25003
diff changeset
517 use either \\[customize] or the function `tooltip-mode'."
c09e05be2f4b (tooltip-mode): Customize this, per convention.
Dave Love <fx@gnu.org>
parents: 25003
diff changeset
518 :set (lambda (symbol value)
c09e05be2f4b (tooltip-mode): Customize this, per convention.
Dave Love <fx@gnu.org>
parents: 25003
diff changeset
519 (tooltip-mode (or value 0)))
c09e05be2f4b (tooltip-mode): Customize this, per convention.
Dave Love <fx@gnu.org>
parents: 25003
diff changeset
520 :initialize 'custom-initialize-default
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
521 :type 'boolean
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
522 :require 'tooltip
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
523 :group 'tooltip)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
524
48601
ac47e19224b0 (tooltip-gud-process-output): Handle annotations that
Nick Roberts <nickrob@snap.net.nz>
parents: 48580
diff changeset
525 (provide 'tooltip)
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
526
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 52031
diff changeset
527 ;;; arch-tag: 3d61135e-4618-4a78-af28-183f6df5636f
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
528 ;;; tooltip.el ends here