Mercurial > emacs
annotate lisp/tooltip.el @ 106768:21fd634f447a
Make line<->pixel_y conversion macros aware of native menu/tool bars.
They are placed above the internal border. This supersedes special
treatment of native tool bars in the display code.
This fixes wrong display position of native menu bars and bogus mouse
highlighting of native tool bars, both of which can be found when
internal border width is large. Also it fixes wrong flashed part on
visible bell with native menu bars.
* frame.h (FRAME_TOP_MARGIN_HEIGHT): New macro.
(FRAME_LINE_TO_PIXEL_Y, FRAME_PIXEL_Y_TO_LINE): Take account of pseudo
windows above internal border.
* window.h (WINDOW_MENU_BAR_P, WINDOW_TOOL_BAR_P): New macros.
(WINDOW_TOP_EDGE_Y, WINDOW_BOTTOM_EDGE_Y): Take account of pseudo
windows above internal border.
* xdisp.c (get_glyph_string_clip_rects, init_glyph_string): Don't treat
tool bar windows specially.
* xfns.c (x_set_tool_bar_lines): Take account of menu bar height.
* xterm.c (x_after_update_window_line): Don't treat tool bar windows
specially.
(XTflash): Take account of menu bar height.
* w32term.c (x_after_update_window_line): Don't treat tool bar windows
specially.
author | YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> |
---|---|
date | Sat, 09 Jan 2010 13:16:32 +0900 |
parents | e28c9547f91d |
children | 1d1d5d9bd884 |
rev | line source |
---|---|
45236 | 1 ;;; tooltip.el --- show tooltip windows |
25003 | 2 |
64762
41bb365f41c4
Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
64626
diff
changeset
|
3 ;; Copyright (C) 1997, 1999, 2000, 2001, 2002, 2003, 2004, |
100908 | 4 ;; 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. |
25003 | 5 |
6 ;; Author: Gerd Moellmann <gerd@acm.org> | |
7 ;; Keywords: help c mouse tools | |
8 | |
9 ;; This file is part of GNU Emacs. | |
10 | |
94678
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94186
diff
changeset
|
11 ;; GNU Emacs is free software: you can redistribute it and/or modify |
25003 | 12 ;; it under the terms of the GNU General Public License as published by |
94678
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94186
diff
changeset
|
13 ;; the Free Software Foundation, either version 3 of the License, or |
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94186
diff
changeset
|
14 ;; (at your option) any later version. |
25003 | 15 |
16 ;; GNU Emacs is distributed in the hope that it will be useful, | |
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
19 ;; GNU General Public License for more details. | |
20 | |
21 ;; You should have received a copy of the GNU General Public License | |
94678
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94186
diff
changeset
|
22 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. |
25003 | 23 |
24 ;;; Commentary: | |
25 | |
26 ;;; Code: | |
27 | |
65297
1cb15495a842
(comint-prompt-regexp): Add defvar.
Juanma Barranquero <lekktu@gmail.com>
parents:
64762
diff
changeset
|
28 (defvar comint-prompt-regexp) |
1cb15495a842
(comint-prompt-regexp): Add defvar.
Juanma Barranquero <lekktu@gmail.com>
parents:
64762
diff
changeset
|
29 |
67706
05fd43fc72e9
(tooltip): Move defgroup before define-minor-mode.
Juri Linkov <juri@jurta.org>
parents:
67597
diff
changeset
|
30 (defgroup tooltip nil |
05fd43fc72e9
(tooltip): Move defgroup before define-minor-mode.
Juri Linkov <juri@jurta.org>
parents:
67597
diff
changeset
|
31 "Customization group for the `tooltip' package." |
05fd43fc72e9
(tooltip): Move defgroup before define-minor-mode.
Juri Linkov <juri@jurta.org>
parents:
67597
diff
changeset
|
32 :group 'help |
05fd43fc72e9
(tooltip): Move defgroup before define-minor-mode.
Juri Linkov <juri@jurta.org>
parents:
67597
diff
changeset
|
33 :group 'gud |
05fd43fc72e9
(tooltip): Move defgroup before define-minor-mode.
Juri Linkov <juri@jurta.org>
parents:
67597
diff
changeset
|
34 :group 'mouse |
05fd43fc72e9
(tooltip): Move defgroup before define-minor-mode.
Juri Linkov <juri@jurta.org>
parents:
67597
diff
changeset
|
35 :group 'tools |
05fd43fc72e9
(tooltip): Move defgroup before define-minor-mode.
Juri Linkov <juri@jurta.org>
parents:
67597
diff
changeset
|
36 :version "21.1" |
05fd43fc72e9
(tooltip): Move defgroup before define-minor-mode.
Juri Linkov <juri@jurta.org>
parents:
67597
diff
changeset
|
37 :tag "Tool Tips") |
05fd43fc72e9
(tooltip): Move defgroup before define-minor-mode.
Juri Linkov <juri@jurta.org>
parents:
67597
diff
changeset
|
38 |
67485
2865d1195586
(tooltip-mode): Move to start of file so that it
Nick Roberts <nickrob@snap.net.nz>
parents:
66348
diff
changeset
|
39 ;;; Switching tooltips on/off |
2865d1195586
(tooltip-mode): Move to start of file so that it
Nick Roberts <nickrob@snap.net.nz>
parents:
66348
diff
changeset
|
40 |
2865d1195586
(tooltip-mode): Move to start of file so that it
Nick Roberts <nickrob@snap.net.nz>
parents:
66348
diff
changeset
|
41 (define-minor-mode tooltip-mode |
70099
7ab0f5013dfb
(tooltip-mode, tooltip-use-echo-area): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
68651
diff
changeset
|
42 "Toggle Tooltip mode. |
7ab0f5013dfb
(tooltip-mode, tooltip-use-echo-area): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
68651
diff
changeset
|
43 With ARG, turn Tooltip mode on if and only if ARG is positive. |
68141
e97b6ce08cb9
(tooltip-mode): Doc fix.
Luc Teirlinck <teirllm@auburn.edu>
parents:
67706
diff
changeset
|
44 When this minor mode is enabled, Emacs displays help text |
70099
7ab0f5013dfb
(tooltip-mode, tooltip-use-echo-area): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
68651
diff
changeset
|
45 in a pop-up window for buttons and menu items that you put the mouse on. |
7ab0f5013dfb
(tooltip-mode, tooltip-use-echo-area): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
68651
diff
changeset
|
46 \(However, if `tooltip-use-echo-area' is non-nil, this and |
7ab0f5013dfb
(tooltip-mode, tooltip-use-echo-area): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
68651
diff
changeset
|
47 all pop-up help appears in the echo area.) |
7ab0f5013dfb
(tooltip-mode, tooltip-use-echo-area): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
68651
diff
changeset
|
48 |
7ab0f5013dfb
(tooltip-mode, tooltip-use-echo-area): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
68651
diff
changeset
|
49 When Tooltip mode is disabled, Emacs displays one line of |
7ab0f5013dfb
(tooltip-mode, tooltip-use-echo-area): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
68651
diff
changeset
|
50 the help text in the echo area, and does not make a pop-up window." |
67485
2865d1195586
(tooltip-mode): Move to start of file so that it
Nick Roberts <nickrob@snap.net.nz>
parents:
66348
diff
changeset
|
51 :global t |
98061
68a220b546b7
(tooltip-mode): Initialize unconditionally to t.
Chong Yidong <cyd@stupidchicken.com>
parents:
95841
diff
changeset
|
52 ;; Even if we start on a text-only terminal, make this non-nil by |
68a220b546b7
(tooltip-mode): Initialize unconditionally to t.
Chong Yidong <cyd@stupidchicken.com>
parents:
95841
diff
changeset
|
53 ;; default because we can open a graphical frame later (multi-tty). |
68a220b546b7
(tooltip-mode): Initialize unconditionally to t.
Chong Yidong <cyd@stupidchicken.com>
parents:
95841
diff
changeset
|
54 :init-value t |
104990
f0794252d960
* mail/sendmail.el (send-mail-function):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
103086
diff
changeset
|
55 :initialize 'custom-initialize-delay |
67485
2865d1195586
(tooltip-mode): Move to start of file so that it
Nick Roberts <nickrob@snap.net.nz>
parents:
66348
diff
changeset
|
56 :group 'tooltip |
2865d1195586
(tooltip-mode): Move to start of file so that it
Nick Roberts <nickrob@snap.net.nz>
parents:
66348
diff
changeset
|
57 (unless (or (null tooltip-mode) (fboundp 'x-show-tip)) |
2865d1195586
(tooltip-mode): Move to start of file so that it
Nick Roberts <nickrob@snap.net.nz>
parents:
66348
diff
changeset
|
58 (error "Sorry, tooltips are not yet available on this system")) |
2865d1195586
(tooltip-mode): Move to start of file so that it
Nick Roberts <nickrob@snap.net.nz>
parents:
66348
diff
changeset
|
59 (if tooltip-mode |
2865d1195586
(tooltip-mode): Move to start of file so that it
Nick Roberts <nickrob@snap.net.nz>
parents:
66348
diff
changeset
|
60 (progn |
2865d1195586
(tooltip-mode): Move to start of file so that it
Nick Roberts <nickrob@snap.net.nz>
parents:
66348
diff
changeset
|
61 (add-hook 'pre-command-hook 'tooltip-hide) |
99213
33f78208d5f0
Rename `tooltip-hook' to `tooltip-functions'.
Juanma Barranquero <lekktu@gmail.com>
parents:
98061
diff
changeset
|
62 (add-hook 'tooltip-functions 'tooltip-help-tips)) |
67485
2865d1195586
(tooltip-mode): Move to start of file so that it
Nick Roberts <nickrob@snap.net.nz>
parents:
66348
diff
changeset
|
63 (unless (and (boundp 'gud-tooltip-mode) gud-tooltip-mode) |
2865d1195586
(tooltip-mode): Move to start of file so that it
Nick Roberts <nickrob@snap.net.nz>
parents:
66348
diff
changeset
|
64 (remove-hook 'pre-command-hook 'tooltip-hide)) |
99213
33f78208d5f0
Rename `tooltip-hook' to `tooltip-functions'.
Juanma Barranquero <lekktu@gmail.com>
parents:
98061
diff
changeset
|
65 (remove-hook 'tooltip-functions 'tooltip-help-tips)) |
67485
2865d1195586
(tooltip-mode): Move to start of file so that it
Nick Roberts <nickrob@snap.net.nz>
parents:
66348
diff
changeset
|
66 (setq show-help-function |
93905
529aa606e975
(tooltip-mode): Set tooltip-show-help-non-mode as
Jan Djärv <jan.h.d@swipnet.se>
parents:
87649
diff
changeset
|
67 (if tooltip-mode 'tooltip-show-help 'tooltip-show-help-non-mode))) |
25003 | 68 |
67706
05fd43fc72e9
(tooltip): Move defgroup before define-minor-mode.
Juri Linkov <juri@jurta.org>
parents:
67597
diff
changeset
|
69 |
05fd43fc72e9
(tooltip): Move defgroup before define-minor-mode.
Juri Linkov <juri@jurta.org>
parents:
67597
diff
changeset
|
70 ;;; Customizable settings |
25003 | 71 |
40679
3c4df1ce9e4c
(tooltip-delay): Decrease to 0.7.
Eli Zaretskii <eliz@gnu.org>
parents:
40376
diff
changeset
|
72 (defcustom tooltip-delay 0.7 |
25003 | 73 "Seconds to wait before displaying a tooltip the first time." |
74 :type 'number | |
75 :group 'tooltip) | |
76 | |
77 (defcustom tooltip-short-delay 0.1 | |
78 "Seconds to wait between subsequent tooltips on different items." | |
79 :type 'number | |
80 :group 'tooltip) | |
81 | |
82 (defcustom tooltip-recent-seconds 1 | |
25332
c09e05be2f4b
(tooltip-mode): Customize this, per convention.
Dave Love <fx@gnu.org>
parents:
25003
diff
changeset
|
83 "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
|
84 Do so after `tooltip-short-delay'." |
25003 | 85 :type 'number |
86 :group 'tooltip) | |
87 | |
40679
3c4df1ce9e4c
(tooltip-delay): Decrease to 0.7.
Eli Zaretskii <eliz@gnu.org>
parents:
40376
diff
changeset
|
88 (defcustom tooltip-hide-delay 10 |
35401
c00e94a506a2
(tooltip-hide-delay): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
35069
diff
changeset
|
89 "Hide tooltips automatically after this many seconds." |
c00e94a506a2
(tooltip-hide-delay): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
35069
diff
changeset
|
90 :type 'number |
c00e94a506a2
(tooltip-hide-delay): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
35069
diff
changeset
|
91 :group 'tooltip) |
c00e94a506a2
(tooltip-hide-delay): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
35069
diff
changeset
|
92 |
66348
834a001192cb
(tooltip-x-offset, tooltip-y-offset): Change defaults.
Richard M. Stallman <rms@gnu.org>
parents:
65732
diff
changeset
|
93 (defcustom tooltip-x-offset 5 |
46025
ce0d438fe05e
(tooltip-x-offset, tooltip-y-offset): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
45571
diff
changeset
|
94 "X offset, in pixels, for the display of tooltips. |
67706
05fd43fc72e9
(tooltip): Move defgroup before define-minor-mode.
Juri Linkov <juri@jurta.org>
parents:
67597
diff
changeset
|
95 The offset is the distance between the X position of the mouse and |
05fd43fc72e9
(tooltip): Move defgroup before define-minor-mode.
Juri Linkov <juri@jurta.org>
parents:
67597
diff
changeset
|
96 the left border of the tooltip window. It must be chosen so that the |
05fd43fc72e9
(tooltip): Move defgroup before define-minor-mode.
Juri Linkov <juri@jurta.org>
parents:
67597
diff
changeset
|
97 tooltip window doesn't contain the mouse when it pops up, or it may |
05fd43fc72e9
(tooltip): Move defgroup before define-minor-mode.
Juri Linkov <juri@jurta.org>
parents:
67597
diff
changeset
|
98 interfere with clicking where you wish. |
40173
c4955867228d
(tooltip-x-offset, tooltip-y-offset): Mention in the
Eli Zaretskii <eliz@gnu.org>
parents:
37755
diff
changeset
|
99 |
c4955867228d
(tooltip-x-offset, tooltip-y-offset): Mention in the
Eli Zaretskii <eliz@gnu.org>
parents:
37755
diff
changeset
|
100 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
|
101 the value of `tooltip-x-offset' is ignored." |
66348
834a001192cb
(tooltip-x-offset, tooltip-y-offset): Change defaults.
Richard M. Stallman <rms@gnu.org>
parents:
65732
diff
changeset
|
102 :type 'integer |
33587
7d4c3fcd3421
(tooltip-x-offset, tooltip-y-offset): New user-options.
Gerd Moellmann <gerd@gnu.org>
parents:
33356
diff
changeset
|
103 :group 'tooltip) |
7d4c3fcd3421
(tooltip-x-offset, tooltip-y-offset): New user-options.
Gerd Moellmann <gerd@gnu.org>
parents:
33356
diff
changeset
|
104 |
67531
525cba59adb2
Changed default to 20 for tooltip-y-offset.
Jan Djärv <jan.h.d@swipnet.se>
parents:
67485
diff
changeset
|
105 (defcustom tooltip-y-offset +20 |
46025
ce0d438fe05e
(tooltip-x-offset, tooltip-y-offset): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
45571
diff
changeset
|
106 "Y offset, in pixels, for the display of tooltips. |
67706
05fd43fc72e9
(tooltip): Move defgroup before define-minor-mode.
Juri Linkov <juri@jurta.org>
parents:
67597
diff
changeset
|
107 The offset is the distance between the Y position of the mouse and |
05fd43fc72e9
(tooltip): Move defgroup before define-minor-mode.
Juri Linkov <juri@jurta.org>
parents:
67597
diff
changeset
|
108 the top border of the tooltip window. It must be chosen so that the |
05fd43fc72e9
(tooltip): Move defgroup before define-minor-mode.
Juri Linkov <juri@jurta.org>
parents:
67597
diff
changeset
|
109 tooltip window doesn't contain the mouse when it pops up, or it may |
05fd43fc72e9
(tooltip): Move defgroup before define-minor-mode.
Juri Linkov <juri@jurta.org>
parents:
67597
diff
changeset
|
110 interfere with clicking where you wish. |
40173
c4955867228d
(tooltip-x-offset, tooltip-y-offset): Mention in the
Eli Zaretskii <eliz@gnu.org>
parents:
37755
diff
changeset
|
111 |
c4955867228d
(tooltip-x-offset, tooltip-y-offset): Mention in the
Eli Zaretskii <eliz@gnu.org>
parents:
37755
diff
changeset
|
112 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
|
113 the value of `tooltip-y-offset' is ignored." |
66348
834a001192cb
(tooltip-x-offset, tooltip-y-offset): Change defaults.
Richard M. Stallman <rms@gnu.org>
parents:
65732
diff
changeset
|
114 :type 'integer |
33587
7d4c3fcd3421
(tooltip-x-offset, tooltip-y-offset): New user-options.
Gerd Moellmann <gerd@gnu.org>
parents:
33356
diff
changeset
|
115 :group 'tooltip) |
7d4c3fcd3421
(tooltip-x-offset, tooltip-y-offset): New user-options.
Gerd Moellmann <gerd@gnu.org>
parents:
33356
diff
changeset
|
116 |
25003 | 117 (defcustom tooltip-frame-parameters |
105967
e28c9547f91d
(tooltip-frame-parameters): Undo previous change.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
105957
diff
changeset
|
118 '((name . "tooltip") |
66348
834a001192cb
(tooltip-x-offset, tooltip-y-offset): Change defaults.
Richard M. Stallman <rms@gnu.org>
parents:
65732
diff
changeset
|
119 (internal-border-width . 2) |
25003 | 120 (border-width . 1)) |
40173
c4955867228d
(tooltip-x-offset, tooltip-y-offset): Mention in the
Eli Zaretskii <eliz@gnu.org>
parents:
37755
diff
changeset
|
121 "Frame parameters used for tooltips. |
c4955867228d
(tooltip-x-offset, tooltip-y-offset): Mention in the
Eli Zaretskii <eliz@gnu.org>
parents:
37755
diff
changeset
|
122 |
c4955867228d
(tooltip-x-offset, tooltip-y-offset): Mention in the
Eli Zaretskii <eliz@gnu.org>
parents:
37755
diff
changeset
|
123 If `left' or `top' parameters are included, they specify the absolute |
99283
563e71d339f2
* tooltip.el (tooltip-frame-parameters): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99213
diff
changeset
|
124 position to pop up the tooltip. |
563e71d339f2
* tooltip.el (tooltip-frame-parameters): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99213
diff
changeset
|
125 |
563e71d339f2
* tooltip.el (tooltip-frame-parameters): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99213
diff
changeset
|
126 Note that font and color parameters are ignored, and the attributes |
563e71d339f2
* tooltip.el (tooltip-frame-parameters): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99213
diff
changeset
|
127 of the `tooltip' face are used instead." |
25003 | 128 :type 'sexp |
129 :group 'tooltip) | |
130 | |
35043
f7ca93e40e16
(tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents:
34689
diff
changeset
|
131 (defface tooltip |
f7ca93e40e16
(tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents:
34689
diff
changeset
|
132 '((((class color)) |
52031
5163fa137977
(defface tooltip): Inherit from variable-pitch.
John Paul Wallington <jpw@pobox.com>
parents:
49597
diff
changeset
|
133 :background "lightyellow" |
5163fa137977
(defface tooltip): Inherit from variable-pitch.
John Paul Wallington <jpw@pobox.com>
parents:
49597
diff
changeset
|
134 :foreground "black" |
5163fa137977
(defface tooltip): Inherit from variable-pitch.
John Paul Wallington <jpw@pobox.com>
parents:
49597
diff
changeset
|
135 :inherit variable-pitch) |
5163fa137977
(defface tooltip): Inherit from variable-pitch.
John Paul Wallington <jpw@pobox.com>
parents:
49597
diff
changeset
|
136 (t |
5163fa137977
(defface tooltip): Inherit from variable-pitch.
John Paul Wallington <jpw@pobox.com>
parents:
49597
diff
changeset
|
137 :inherit variable-pitch)) |
35043
f7ca93e40e16
(tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents:
34689
diff
changeset
|
138 "Face for tooltips." |
65732
cd8e6d86c531
(tooltip): Add group `basic-faces'.
Juri Linkov <juri@jurta.org>
parents:
65297
diff
changeset
|
139 :group 'tooltip |
cd8e6d86c531
(tooltip): Add group `basic-faces'.
Juri Linkov <juri@jurta.org>
parents:
65297
diff
changeset
|
140 :group 'basic-faces) |
35043
f7ca93e40e16
(tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents:
34689
diff
changeset
|
141 |
63441
ebbf98a044ac
* tooltip.el (tooltip-use-echo-area): Restore from gud.el for
Nick Roberts <nickrob@snap.net.nz>
parents:
62135
diff
changeset
|
142 (defcustom tooltip-use-echo-area nil |
70099
7ab0f5013dfb
(tooltip-mode, tooltip-use-echo-area): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
68651
diff
changeset
|
143 "Use the echo area instead of tooltip frames for help and GUD tooltips. |
7ab0f5013dfb
(tooltip-mode, tooltip-use-echo-area): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
68651
diff
changeset
|
144 To display multi-line help text in the echo area, set this to t |
7ab0f5013dfb
(tooltip-mode, tooltip-use-echo-area): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
68651
diff
changeset
|
145 and enable `tooltip-mode'." |
63441
ebbf98a044ac
* tooltip.el (tooltip-use-echo-area): Restore from gud.el for
Nick Roberts <nickrob@snap.net.nz>
parents:
62135
diff
changeset
|
146 :type 'boolean |
ebbf98a044ac
* tooltip.el (tooltip-use-echo-area): Restore from gud.el for
Nick Roberts <nickrob@snap.net.nz>
parents:
62135
diff
changeset
|
147 :group 'tooltip) |
ebbf98a044ac
* tooltip.el (tooltip-use-echo-area): Restore from gud.el for
Nick Roberts <nickrob@snap.net.nz>
parents:
62135
diff
changeset
|
148 |
25003 | 149 |
150 ;;; Variables that are not customizable. | |
151 | |
99213
33f78208d5f0
Rename `tooltip-hook' to `tooltip-functions'.
Juanma Barranquero <lekktu@gmail.com>
parents:
98061
diff
changeset
|
152 (defvar tooltip-functions nil |
25003 | 153 "Functions to call to display tooltips. |
99213
33f78208d5f0
Rename `tooltip-hook' to `tooltip-functions'.
Juanma Barranquero <lekktu@gmail.com>
parents:
98061
diff
changeset
|
154 Each function is called with one argument EVENT which is a copy |
33f78208d5f0
Rename `tooltip-hook' to `tooltip-functions'.
Juanma Barranquero <lekktu@gmail.com>
parents:
98061
diff
changeset
|
155 of the last mouse movement event that occurred. If one of these |
33f78208d5f0
Rename `tooltip-hook' to `tooltip-functions'.
Juanma Barranquero <lekktu@gmail.com>
parents:
98061
diff
changeset
|
156 functions displays the tooltip, it should return non-nil and the |
33f78208d5f0
Rename `tooltip-hook' to `tooltip-functions'.
Juanma Barranquero <lekktu@gmail.com>
parents:
98061
diff
changeset
|
157 rest are not called.") |
33f78208d5f0
Rename `tooltip-hook' to `tooltip-functions'.
Juanma Barranquero <lekktu@gmail.com>
parents:
98061
diff
changeset
|
158 |
33f78208d5f0
Rename `tooltip-hook' to `tooltip-functions'.
Juanma Barranquero <lekktu@gmail.com>
parents:
98061
diff
changeset
|
159 (define-obsolete-variable-alias 'tooltip-hook 'tooltip-functions "23.1") |
25003 | 160 |
161 (defvar tooltip-timeout-id nil | |
162 "The id of the timeout started when Emacs becomes idle.") | |
163 | |
164 (defvar tooltip-last-mouse-motion-event nil | |
165 "A copy of the last mouse motion event seen.") | |
166 | |
167 (defvar tooltip-hide-time nil | |
168 "Time when the last tooltip was hidden.") | |
169 | |
63938
cd982981d99a
(gud-tooltip-mode): Add defvar.
Richard M. Stallman <rms@gnu.org>
parents:
63587
diff
changeset
|
170 (defvar gud-tooltip-mode) ;; Prevent warning. |
cd982981d99a
(gud-tooltip-mode): Add defvar.
Richard M. Stallman <rms@gnu.org>
parents:
63587
diff
changeset
|
171 |
25003 | 172 ;;; Event accessors |
173 | |
174 (defun tooltip-event-buffer (event) | |
175 "Return the buffer over which event EVENT occurred. | |
176 This might return nil if the event did not occur over a buffer." | |
177 (let ((window (posn-window (event-end event)))) | |
178 (and window (window-buffer window)))) | |
179 | |
180 | |
181 ;;; Timeout for tooltip display | |
182 | |
183 (defun tooltip-delay () | |
184 "Return the delay in seconds for the next tooltip." | |
94186
7870d07a291c
* tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93998
diff
changeset
|
185 (if (and tooltip-hide-time |
7870d07a291c
* tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93998
diff
changeset
|
186 (< (- (float-time) tooltip-hide-time) tooltip-recent-seconds)) |
7870d07a291c
* tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93998
diff
changeset
|
187 tooltip-short-delay |
7870d07a291c
* tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93998
diff
changeset
|
188 tooltip-delay)) |
25003 | 189 |
35069
d19eadb47c76
(tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents:
35044
diff
changeset
|
190 (defun tooltip-cancel-delayed-tip () |
25003 | 191 "Disable the tooltip timeout." |
192 (when tooltip-timeout-id | |
193 (disable-timeout tooltip-timeout-id) | |
194 (setq tooltip-timeout-id nil))) | |
195 | |
35069
d19eadb47c76
(tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents:
35044
diff
changeset
|
196 (defun tooltip-start-delayed-tip () |
63483
8e09dea7559c
(tooltip-start-delayed-tip, tooltip-timeout, tooltip-use-echo-area,
Juanma Barranquero <lekktu@gmail.com>
parents:
63441
diff
changeset
|
197 "Add a one-shot timeout to call function `tooltip-timeout'." |
25003 | 198 (setq tooltip-timeout-id |
199 (add-timeout (tooltip-delay) 'tooltip-timeout nil))) | |
200 | |
201 (defun tooltip-timeout (object) | |
63483
8e09dea7559c
(tooltip-start-delayed-tip, tooltip-timeout, tooltip-use-echo-area,
Juanma Barranquero <lekktu@gmail.com>
parents:
63441
diff
changeset
|
202 "Function called when timer with id `tooltip-timeout-id' fires." |
99213
33f78208d5f0
Rename `tooltip-hook' to `tooltip-functions'.
Juanma Barranquero <lekktu@gmail.com>
parents:
98061
diff
changeset
|
203 (run-hook-with-args-until-success 'tooltip-functions |
25003 | 204 tooltip-last-mouse-motion-event)) |
205 | |
206 | |
207 ;;; Displaying tips | |
208 | |
35043
f7ca93e40e16
(tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents:
34689
diff
changeset
|
209 (defun tooltip-set-param (alist key value) |
40178
1dab42ecd751
(tooltip-set-param): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents:
40173
diff
changeset
|
210 "Change the value of KEY in alist ALIST to VALUE. |
49597
e88404e8f2cf
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
48925
diff
changeset
|
211 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
|
212 change the existing association. Value is the resulting alist." |
f7ca93e40e16
(tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents:
34689
diff
changeset
|
213 (let ((param (assq key alist))) |
f7ca93e40e16
(tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents:
34689
diff
changeset
|
214 (if (consp param) |
f7ca93e40e16
(tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents:
34689
diff
changeset
|
215 (setcdr param value) |
f7ca93e40e16
(tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents:
34689
diff
changeset
|
216 (push (cons key value) alist)) |
f7ca93e40e16
(tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents:
34689
diff
changeset
|
217 alist)) |
f7ca93e40e16
(tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents:
34689
diff
changeset
|
218 |
95841
b4e36ff621b3
Add some compiler declarations, for builds without X.
Glenn Morris <rgm@gnu.org>
parents:
94678
diff
changeset
|
219 (declare-function x-show-tip "xfns.c" |
b4e36ff621b3
Add some compiler declarations, for builds without X.
Glenn Morris <rgm@gnu.org>
parents:
94678
diff
changeset
|
220 (string &optional frame parms timeout dx dy)) |
b4e36ff621b3
Add some compiler declarations, for builds without X.
Glenn Morris <rgm@gnu.org>
parents:
94678
diff
changeset
|
221 |
61626
058da2e83614
(tooltip-show): Change second arg to USE-ECHO-AREA
Kim F. Storm <storm@cua.dk>
parents:
61614
diff
changeset
|
222 (defun tooltip-show (text &optional use-echo-area) |
40173
c4955867228d
(tooltip-x-offset, tooltip-y-offset): Mention in the
Eli Zaretskii <eliz@gnu.org>
parents:
37755
diff
changeset
|
223 "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
|
224 |
61608
6a8ebeaf5f56
(tooltip-gud-echo-area): Rename from
Nick Roberts <nickrob@snap.net.nz>
parents:
61565
diff
changeset
|
225 Text larger than `x-max-tooltip-size' is clipped. |
40173
c4955867228d
(tooltip-x-offset, tooltip-y-offset): Mention in the
Eli Zaretskii <eliz@gnu.org>
parents:
37755
diff
changeset
|
226 |
c4955867228d
(tooltip-x-offset, tooltip-y-offset): Mention in the
Eli Zaretskii <eliz@gnu.org>
parents:
37755
diff
changeset
|
227 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
|
228 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
|
229 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
|
230 `tooltip-x-offset' and `tooltip-y-offset' from the current mouse |
61608
6a8ebeaf5f56
(tooltip-gud-echo-area): Rename from
Nick Roberts <nickrob@snap.net.nz>
parents:
61565
diff
changeset
|
231 position. |
6a8ebeaf5f56
(tooltip-gud-echo-area): Rename from
Nick Roberts <nickrob@snap.net.nz>
parents:
61565
diff
changeset
|
232 |
61626
058da2e83614
(tooltip-show): Change second arg to USE-ECHO-AREA
Kim F. Storm <storm@cua.dk>
parents:
61614
diff
changeset
|
233 Optional second arg USE-ECHO-AREA non-nil means to show tooltip |
058da2e83614
(tooltip-show): Change second arg to USE-ECHO-AREA
Kim F. Storm <storm@cua.dk>
parents:
61614
diff
changeset
|
234 in echo area." |
058da2e83614
(tooltip-show): Change second arg to USE-ECHO-AREA
Kim F. Storm <storm@cua.dk>
parents:
61614
diff
changeset
|
235 (if use-echo-area |
93905
529aa606e975
(tooltip-mode): Set tooltip-show-help-non-mode as
Jan Djärv <jan.h.d@swipnet.se>
parents:
87649
diff
changeset
|
236 (tooltip-show-help-non-mode text) |
34540
e1e4704de6ed
(tooltip-show): If an error is signaled in
Gerd Moellmann <gerd@gnu.org>
parents:
33925
diff
changeset
|
237 (condition-case error |
35043
f7ca93e40e16
(tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents:
34689
diff
changeset
|
238 (let ((params (copy-sequence tooltip-frame-parameters)) |
f7ca93e40e16
(tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents:
34689
diff
changeset
|
239 (fg (face-attribute 'tooltip :foreground)) |
f7ca93e40e16
(tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents:
34689
diff
changeset
|
240 (bg (face-attribute 'tooltip :background))) |
35069
d19eadb47c76
(tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents:
35044
diff
changeset
|
241 (when (stringp fg) |
d19eadb47c76
(tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents:
35044
diff
changeset
|
242 (setq params (tooltip-set-param params 'foreground-color fg)) |
d19eadb47c76
(tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents:
35044
diff
changeset
|
243 (setq params (tooltip-set-param params 'border-color fg))) |
d19eadb47c76
(tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents:
35044
diff
changeset
|
244 (when (stringp bg) |
d19eadb47c76
(tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents:
35044
diff
changeset
|
245 (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
|
246 (x-show-tip (propertize text 'face 'tooltip) |
f7ca93e40e16
(tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents:
34689
diff
changeset
|
247 (selected-frame) |
35044 | 248 params |
35401
c00e94a506a2
(tooltip-hide-delay): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
35069
diff
changeset
|
249 tooltip-hide-delay |
35043
f7ca93e40e16
(tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents:
34689
diff
changeset
|
250 tooltip-x-offset |
f7ca93e40e16
(tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents:
34689
diff
changeset
|
251 tooltip-y-offset)) |
49597
e88404e8f2cf
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
48925
diff
changeset
|
252 (error |
34540
e1e4704de6ed
(tooltip-show): If an error is signaled in
Gerd Moellmann <gerd@gnu.org>
parents:
33925
diff
changeset
|
253 (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
|
254 (sit-for 1) |
e1e4704de6ed
(tooltip-show): If an error is signaled in
Gerd Moellmann <gerd@gnu.org>
parents:
33925
diff
changeset
|
255 (message "%s" text))))) |
e1e4704de6ed
(tooltip-show): If an error is signaled in
Gerd Moellmann <gerd@gnu.org>
parents:
33925
diff
changeset
|
256 |
95841
b4e36ff621b3
Add some compiler declarations, for builds without X.
Glenn Morris <rgm@gnu.org>
parents:
94678
diff
changeset
|
257 (declare-function x-hide-tip "xfns.c" ()) |
b4e36ff621b3
Add some compiler declarations, for builds without X.
Glenn Morris <rgm@gnu.org>
parents:
94678
diff
changeset
|
258 |
25003 | 259 (defun tooltip-hide (&optional ignored-arg) |
260 "Hide a tooltip, if one is displayed. | |
261 Value is non-nil if tooltip was open." | |
35069
d19eadb47c76
(tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents:
35044
diff
changeset
|
262 (tooltip-cancel-delayed-tip) |
25003 | 263 (when (x-hide-tip) |
30481 | 264 (setq tooltip-hide-time (float-time)))) |
25003 | 265 |
266 | |
267 ;;; Debugger-related functions | |
268 | |
269 (defun tooltip-identifier-from-point (point) | |
270 "Extract the identifier at POINT, if any. | |
271 Value is nil if no identifier exists at point. Identifier extraction | |
272 is based on the current syntax table." | |
273 (save-excursion | |
274 (goto-char point) | |
275 (let ((start (progn (skip-syntax-backward "w_") (point)))) | |
276 (unless (looking-at "[0-9]") | |
277 (skip-syntax-forward "w_") | |
278 (when (> (point) start) | |
279 (buffer-substring start (point))))))) | |
280 | |
281 (defmacro tooltip-region-active-p () | |
87404 | 282 "Value is non-nil if the region should override command actions." |
87403
f6740b43efae
(tooltip-region-active-p): Use `use-region-p'.
Richard M. Stallman <rms@gnu.org>
parents:
85529
diff
changeset
|
283 `(use-region-p)) |
25003 | 284 |
285 (defun tooltip-expr-to-print (event) | |
286 "Return an expression that should be printed for EVENT. | |
287 If a region is active and the mouse is inside the region, print | |
288 the region. Otherwise, figure out the identifier around the point | |
289 where the mouse is." | |
94186
7870d07a291c
* tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93998
diff
changeset
|
290 (with-current-buffer (tooltip-event-buffer event) |
25003 | 291 (let ((point (posn-point (event-end event)))) |
292 (if (tooltip-region-active-p) | |
293 (when (and (<= (region-beginning) point) (<= point (region-end))) | |
294 (buffer-substring (region-beginning) (region-end))) | |
295 (tooltip-identifier-from-point point))))) | |
296 | |
297 (defun tooltip-process-prompt-regexp (process) | |
298 "Return regexp matching the prompt of PROCESS at the end of a string. | |
63483
8e09dea7559c
(tooltip-start-delayed-tip, tooltip-timeout, tooltip-use-echo-area,
Juanma Barranquero <lekktu@gmail.com>
parents:
63441
diff
changeset
|
299 The prompt is taken from the value of `comint-prompt-regexp' in |
8e09dea7559c
(tooltip-start-delayed-tip, tooltip-timeout, tooltip-use-echo-area,
Juanma Barranquero <lekktu@gmail.com>
parents:
63441
diff
changeset
|
300 the buffer of PROCESS." |
94186
7870d07a291c
* tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93998
diff
changeset
|
301 (let ((prompt-regexp (with-current-buffer (process-buffer process) |
25003 | 302 comint-prompt-regexp))) |
94186
7870d07a291c
* tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93998
diff
changeset
|
303 (concat "\n*" |
7870d07a291c
* tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93998
diff
changeset
|
304 ;; Most start with `^' but the one for `sdb' cannot be easily |
7870d07a291c
* tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93998
diff
changeset
|
305 ;; stripped. Code the prompt for `sdb' fixed here. |
7870d07a291c
* tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93998
diff
changeset
|
306 (if (= (aref prompt-regexp 0) ?^) |
7870d07a291c
* tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93998
diff
changeset
|
307 (substring prompt-regexp 1) |
7870d07a291c
* tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93998
diff
changeset
|
308 "\\*") |
7870d07a291c
* tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93998
diff
changeset
|
309 "$"))) |
25003 | 310 |
311 (defun tooltip-strip-prompt (process output) | |
312 "Return OUTPUT with any prompt of PROCESS stripped from its end." | |
94186
7870d07a291c
* tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93998
diff
changeset
|
313 (save-match-data |
7870d07a291c
* tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93998
diff
changeset
|
314 (if (string-match (tooltip-process-prompt-regexp process) output) |
7870d07a291c
* tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93998
diff
changeset
|
315 (substring output 0 (match-beginning 0)) |
7870d07a291c
* tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93998
diff
changeset
|
316 output))) |
25003 | 317 |
318 | |
319 ;;; Tooltip help. | |
320 | |
321 (defvar tooltip-help-message nil | |
102871
c1df06373080
* tooltip.el (tooltip-show-help-non-mode): Don't save the last
Chong Yidong <cyd@stupidchicken.com>
parents:
102598
diff
changeset
|
322 "The last help message received via `show-help-function'. |
c1df06373080
* tooltip.el (tooltip-show-help-non-mode): Don't save the last
Chong Yidong <cyd@stupidchicken.com>
parents:
102598
diff
changeset
|
323 This is used by `tooltip-show-help' and |
c1df06373080
* tooltip.el (tooltip-show-help-non-mode): Don't save the last
Chong Yidong <cyd@stupidchicken.com>
parents:
102598
diff
changeset
|
324 `tooltip-show-help-non-mode'.") |
25003 | 325 |
94186
7870d07a291c
* tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93998
diff
changeset
|
326 (defvar tooltip-previous-message nil |
7870d07a291c
* tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93998
diff
changeset
|
327 "The previous content of the echo area.") |
7870d07a291c
* tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93998
diff
changeset
|
328 |
7870d07a291c
* tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93998
diff
changeset
|
329 (defun tooltip-show-help-non-mode (help) |
103086
c3181c5efa5a
* tooltip.el (tooltip-show-help): Fall back on
Chong Yidong <cyd@stupidchicken.com>
parents:
102871
diff
changeset
|
330 "Function installed as `show-help-function' when Tooltip mode is off. |
c3181c5efa5a
* tooltip.el (tooltip-show-help): Fall back on
Chong Yidong <cyd@stupidchicken.com>
parents:
102871
diff
changeset
|
331 It is also called if Tooltip mode is on, for text-only displays." |
94186
7870d07a291c
* tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93998
diff
changeset
|
332 (when (and (not (window-minibuffer-p)) ;Don't overwrite minibuffer contents. |
102871
c1df06373080
* tooltip.el (tooltip-show-help-non-mode): Don't save the last
Chong Yidong <cyd@stupidchicken.com>
parents:
102598
diff
changeset
|
333 (not cursor-in-echo-area)) ;Don't overwrite a prompt. |
94186
7870d07a291c
* tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93998
diff
changeset
|
334 (cond |
7870d07a291c
* tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93998
diff
changeset
|
335 ((stringp help) |
102598
38cce541a3bd
(tooltip-show-help-non-mode): Don't set tooltip-previous-message if
Chong Yidong <cyd@stupidchicken.com>
parents:
100908
diff
changeset
|
336 (setq help (replace-regexp-in-string "\n" ", " help)) |
38cce541a3bd
(tooltip-show-help-non-mode): Don't set tooltip-previous-message if
Chong Yidong <cyd@stupidchicken.com>
parents:
100908
diff
changeset
|
337 (unless (or tooltip-previous-message |
102871
c1df06373080
* tooltip.el (tooltip-show-help-non-mode): Don't save the last
Chong Yidong <cyd@stupidchicken.com>
parents:
102598
diff
changeset
|
338 (string-equal help (current-message)) |
c1df06373080
* tooltip.el (tooltip-show-help-non-mode): Don't save the last
Chong Yidong <cyd@stupidchicken.com>
parents:
102598
diff
changeset
|
339 (and (stringp tooltip-help-message) |
c1df06373080
* tooltip.el (tooltip-show-help-non-mode): Don't save the last
Chong Yidong <cyd@stupidchicken.com>
parents:
102598
diff
changeset
|
340 (string-equal tooltip-help-message |
c1df06373080
* tooltip.el (tooltip-show-help-non-mode): Don't save the last
Chong Yidong <cyd@stupidchicken.com>
parents:
102598
diff
changeset
|
341 (current-message)))) |
94186
7870d07a291c
* tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93998
diff
changeset
|
342 (setq tooltip-previous-message (current-message))) |
102871
c1df06373080
* tooltip.el (tooltip-show-help-non-mode): Don't save the last
Chong Yidong <cyd@stupidchicken.com>
parents:
102598
diff
changeset
|
343 (setq tooltip-help-message help) |
94186
7870d07a291c
* tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93998
diff
changeset
|
344 (let ((message-truncate-lines t) |
7870d07a291c
* tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93998
diff
changeset
|
345 (message-log-max nil)) |
102598
38cce541a3bd
(tooltip-show-help-non-mode): Don't set tooltip-previous-message if
Chong Yidong <cyd@stupidchicken.com>
parents:
100908
diff
changeset
|
346 (message "%s" help))) |
94186
7870d07a291c
* tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93998
diff
changeset
|
347 ((stringp tooltip-previous-message) |
7870d07a291c
* tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93998
diff
changeset
|
348 (let ((message-log-max nil)) |
7870d07a291c
* tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93998
diff
changeset
|
349 (message "%s" tooltip-previous-message) |
7870d07a291c
* tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93998
diff
changeset
|
350 (setq tooltip-previous-message nil))) |
7870d07a291c
* tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93998
diff
changeset
|
351 (t |
7870d07a291c
* tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93998
diff
changeset
|
352 (message nil))))) |
93905
529aa606e975
(tooltip-mode): Set tooltip-show-help-non-mode as
Jan Djärv <jan.h.d@swipnet.se>
parents:
87649
diff
changeset
|
353 |
63441
ebbf98a044ac
* tooltip.el (tooltip-use-echo-area): Restore from gud.el for
Nick Roberts <nickrob@snap.net.nz>
parents:
62135
diff
changeset
|
354 (defun tooltip-show-help (msg) |
25003 | 355 "Function installed as `show-help-function'. |
356 MSG is either a help string to display, or nil to cancel the display." | |
103086
c3181c5efa5a
* tooltip.el (tooltip-show-help): Fall back on
Chong Yidong <cyd@stupidchicken.com>
parents:
102871
diff
changeset
|
357 (if (display-graphic-p) |
c3181c5efa5a
* tooltip.el (tooltip-show-help): Fall back on
Chong Yidong <cyd@stupidchicken.com>
parents:
102871
diff
changeset
|
358 (let ((previous-help tooltip-help-message)) |
c3181c5efa5a
* tooltip.el (tooltip-show-help): Fall back on
Chong Yidong <cyd@stupidchicken.com>
parents:
102871
diff
changeset
|
359 (setq tooltip-help-message msg) |
c3181c5efa5a
* tooltip.el (tooltip-show-help): Fall back on
Chong Yidong <cyd@stupidchicken.com>
parents:
102871
diff
changeset
|
360 (cond ((null msg) |
c3181c5efa5a
* tooltip.el (tooltip-show-help): Fall back on
Chong Yidong <cyd@stupidchicken.com>
parents:
102871
diff
changeset
|
361 ;; Cancel display. This also cancels a delayed tip, if |
c3181c5efa5a
* tooltip.el (tooltip-show-help): Fall back on
Chong Yidong <cyd@stupidchicken.com>
parents:
102871
diff
changeset
|
362 ;; there is one. |
c3181c5efa5a
* tooltip.el (tooltip-show-help): Fall back on
Chong Yidong <cyd@stupidchicken.com>
parents:
102871
diff
changeset
|
363 (tooltip-hide)) |
c3181c5efa5a
* tooltip.el (tooltip-show-help): Fall back on
Chong Yidong <cyd@stupidchicken.com>
parents:
102871
diff
changeset
|
364 ((equal previous-help msg) |
c3181c5efa5a
* tooltip.el (tooltip-show-help): Fall back on
Chong Yidong <cyd@stupidchicken.com>
parents:
102871
diff
changeset
|
365 ;; Same help as before (but possibly the mouse has moved). |
c3181c5efa5a
* tooltip.el (tooltip-show-help): Fall back on
Chong Yidong <cyd@stupidchicken.com>
parents:
102871
diff
changeset
|
366 ;; Keep what we have. |
c3181c5efa5a
* tooltip.el (tooltip-show-help): Fall back on
Chong Yidong <cyd@stupidchicken.com>
parents:
102871
diff
changeset
|
367 ) |
c3181c5efa5a
* tooltip.el (tooltip-show-help): Fall back on
Chong Yidong <cyd@stupidchicken.com>
parents:
102871
diff
changeset
|
368 (t |
c3181c5efa5a
* tooltip.el (tooltip-show-help): Fall back on
Chong Yidong <cyd@stupidchicken.com>
parents:
102871
diff
changeset
|
369 ;; A different help. Remove a previous tooltip, and |
c3181c5efa5a
* tooltip.el (tooltip-show-help): Fall back on
Chong Yidong <cyd@stupidchicken.com>
parents:
102871
diff
changeset
|
370 ;; display a new one, with some delay. |
c3181c5efa5a
* tooltip.el (tooltip-show-help): Fall back on
Chong Yidong <cyd@stupidchicken.com>
parents:
102871
diff
changeset
|
371 (tooltip-hide) |
c3181c5efa5a
* tooltip.el (tooltip-show-help): Fall back on
Chong Yidong <cyd@stupidchicken.com>
parents:
102871
diff
changeset
|
372 (tooltip-start-delayed-tip)))) |
c3181c5efa5a
* tooltip.el (tooltip-show-help): Fall back on
Chong Yidong <cyd@stupidchicken.com>
parents:
102871
diff
changeset
|
373 ;; On text-only displays, try `tooltip-show-help-non-mode'. |
c3181c5efa5a
* tooltip.el (tooltip-show-help): Fall back on
Chong Yidong <cyd@stupidchicken.com>
parents:
102871
diff
changeset
|
374 (tooltip-show-help-non-mode msg))) |
25003 | 375 |
376 (defun tooltip-help-tips (event) | |
377 "Hook function to display a help tooltip. | |
99213
33f78208d5f0
Rename `tooltip-hook' to `tooltip-functions'.
Juanma Barranquero <lekktu@gmail.com>
parents:
98061
diff
changeset
|
378 This is installed on the hook `tooltip-functions', which |
33f78208d5f0
Rename `tooltip-hook' to `tooltip-functions'.
Juanma Barranquero <lekktu@gmail.com>
parents:
98061
diff
changeset
|
379 is run when the timer with id `tooltip-timeout-id' fires. |
25003 | 380 Value is non-nil if this function handled the tip." |
381 (when (stringp tooltip-help-message) | |
63441
ebbf98a044ac
* tooltip.el (tooltip-use-echo-area): Restore from gud.el for
Nick Roberts <nickrob@snap.net.nz>
parents:
62135
diff
changeset
|
382 (tooltip-show tooltip-help-message tooltip-use-echo-area) |
25003 | 383 t)) |
384 | |
48601
ac47e19224b0
(tooltip-gud-process-output): Handle annotations that
Nick Roberts <nickrob@snap.net.nz>
parents:
48580
diff
changeset
|
385 (provide 'tooltip) |
25003 | 386 |
58155 | 387 ;; arch-tag: 3d61135e-4618-4a78-af28-183f6df5636f |
25003 | 388 ;;; tooltip.el ends here |