annotate lisp/tooltip.el @ 93762:46d39c0f7bf9

(uniscribe_shape): Increase items buffer size. Give up if glyph indices not supported. Use uniscribe obtained ABC widths for individual metrics. Map glyph clusters back to characters using fClusterStart flag. Return number of glyphs produced, not chars processed.
author Jason Rumney <jasonr@gnu.org>
date Sun, 06 Apr 2008 01:04:45 +0000
parents 107ccd98fa12
children 606f2d163a64 529aa606e975
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
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,
79721
73661ddc7ac7 Add 2008 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 78236
diff changeset
4 ;; 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
5
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
6 ;; Author: Gerd Moellmann <gerd@acm.org>
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
7 ;; Keywords: help c mouse tools
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
8
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
9 ;; This file is part of GNU Emacs.
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
10
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
11 ;; GNU Emacs is free software; you can redistribute it and/or modify
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
12 ;; it under the terms of the GNU General Public License as published by
78236
9355f9b7bbff Switch license to GPLv3 or later.
Glenn Morris <rgm@gnu.org>
parents: 75347
diff changeset
13 ;; the Free Software Foundation; either version 3, or (at your option)
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
14 ;; any later version.
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
15
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
16 ;; GNU Emacs is distributed in the hope that it will be useful,
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
19 ;; GNU General Public License for more details.
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
20
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
21 ;; You should have received a copy of the GNU General Public License
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
22 ;; along with GNU Emacs; see the file COPYING. If not, write to the
64091
6fb026ad601f Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 63938
diff changeset
23 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
6fb026ad601f Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 63938
diff changeset
24 ;; Boston, MA 02110-1301, USA.
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
25
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
26 ;;; Commentary:
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
27
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
28 ;;; Code:
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
29
65297
1cb15495a842 (comint-prompt-regexp): Add defvar.
Juanma Barranquero <lekktu@gmail.com>
parents: 64762
diff changeset
30 (defvar comint-prompt-regexp)
1cb15495a842 (comint-prompt-regexp): Add defvar.
Juanma Barranquero <lekktu@gmail.com>
parents: 64762
diff changeset
31
67706
05fd43fc72e9 (tooltip): Move defgroup before define-minor-mode.
Juri Linkov <juri@jurta.org>
parents: 67597
diff changeset
32 (defgroup tooltip nil
05fd43fc72e9 (tooltip): Move defgroup before define-minor-mode.
Juri Linkov <juri@jurta.org>
parents: 67597
diff changeset
33 "Customization group for the `tooltip' package."
05fd43fc72e9 (tooltip): Move defgroup before define-minor-mode.
Juri Linkov <juri@jurta.org>
parents: 67597
diff changeset
34 :group 'help
05fd43fc72e9 (tooltip): Move defgroup before define-minor-mode.
Juri Linkov <juri@jurta.org>
parents: 67597
diff changeset
35 :group 'gud
05fd43fc72e9 (tooltip): Move defgroup before define-minor-mode.
Juri Linkov <juri@jurta.org>
parents: 67597
diff changeset
36 :group 'mouse
05fd43fc72e9 (tooltip): Move defgroup before define-minor-mode.
Juri Linkov <juri@jurta.org>
parents: 67597
diff changeset
37 :group 'tools
05fd43fc72e9 (tooltip): Move defgroup before define-minor-mode.
Juri Linkov <juri@jurta.org>
parents: 67597
diff changeset
38 :version "21.1"
05fd43fc72e9 (tooltip): Move defgroup before define-minor-mode.
Juri Linkov <juri@jurta.org>
parents: 67597
diff changeset
39 :tag "Tool Tips")
05fd43fc72e9 (tooltip): Move defgroup before define-minor-mode.
Juri Linkov <juri@jurta.org>
parents: 67597
diff changeset
40
67485
2865d1195586 (tooltip-mode): Move to start of file so that it
Nick Roberts <nickrob@snap.net.nz>
parents: 66348
diff changeset
41 ;;; 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
42
2865d1195586 (tooltip-mode): Move to start of file so that it
Nick Roberts <nickrob@snap.net.nz>
parents: 66348
diff changeset
43 (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
44 "Toggle Tooltip mode.
7ab0f5013dfb (tooltip-mode, tooltip-use-echo-area): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 68651
diff changeset
45 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
46 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
47 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
48 \(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
49 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
50
7ab0f5013dfb (tooltip-mode, tooltip-use-echo-area): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 68651
diff changeset
51 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
52 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
53 :global t
2865d1195586 (tooltip-mode): Move to start of file so that it
Nick Roberts <nickrob@snap.net.nz>
parents: 66348
diff changeset
54 :init-value (not (or noninteractive
2865d1195586 (tooltip-mode): Move to start of file so that it
Nick Roberts <nickrob@snap.net.nz>
parents: 66348
diff changeset
55 emacs-basic-display
2865d1195586 (tooltip-mode): Move to start of file so that it
Nick Roberts <nickrob@snap.net.nz>
parents: 66348
diff changeset
56 (not (display-graphic-p))
2865d1195586 (tooltip-mode): Move to start of file so that it
Nick Roberts <nickrob@snap.net.nz>
parents: 66348
diff changeset
57 (not (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 :initialize 'custom-initialize-safe-default
2865d1195586 (tooltip-mode): Move to start of file so that it
Nick Roberts <nickrob@snap.net.nz>
parents: 66348
diff changeset
59 :group 'tooltip
2865d1195586 (tooltip-mode): Move to start of file so that it
Nick Roberts <nickrob@snap.net.nz>
parents: 66348
diff changeset
60 (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
61 (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
62 (if tooltip-mode
2865d1195586 (tooltip-mode): Move to start of file so that it
Nick Roberts <nickrob@snap.net.nz>
parents: 66348
diff changeset
63 (progn
2865d1195586 (tooltip-mode): Move to start of file so that it
Nick Roberts <nickrob@snap.net.nz>
parents: 66348
diff changeset
64 (add-hook 'pre-command-hook 'tooltip-hide)
2865d1195586 (tooltip-mode): Move to start of file so that it
Nick Roberts <nickrob@snap.net.nz>
parents: 66348
diff changeset
65 (add-hook 'tooltip-hook 'tooltip-help-tips))
2865d1195586 (tooltip-mode): Move to start of file so that it
Nick Roberts <nickrob@snap.net.nz>
parents: 66348
diff changeset
66 (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
67 (remove-hook 'pre-command-hook 'tooltip-hide))
2865d1195586 (tooltip-mode): Move to start of file so that it
Nick Roberts <nickrob@snap.net.nz>
parents: 66348
diff changeset
68 (remove-hook 'tooltip-hook 'tooltip-help-tips))
2865d1195586 (tooltip-mode): Move to start of file so that it
Nick Roberts <nickrob@snap.net.nz>
parents: 66348
diff changeset
69 (setq show-help-function
2865d1195586 (tooltip-mode): Move to start of file so that it
Nick Roberts <nickrob@snap.net.nz>
parents: 66348
diff changeset
70 (if tooltip-mode 'tooltip-show-help nil)))
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
71
67706
05fd43fc72e9 (tooltip): Move defgroup before define-minor-mode.
Juri Linkov <juri@jurta.org>
parents: 67597
diff changeset
72
05fd43fc72e9 (tooltip): Move defgroup before define-minor-mode.
Juri Linkov <juri@jurta.org>
parents: 67597
diff changeset
73 ;;; Customizable settings
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
74
40679
3c4df1ce9e4c (tooltip-delay): Decrease to 0.7.
Eli Zaretskii <eliz@gnu.org>
parents: 40376
diff changeset
75 (defcustom tooltip-delay 0.7
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
76 "Seconds to wait before displaying a tooltip the first time."
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
77 :type 'number
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
78 :group 'tooltip)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
79
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
80 (defcustom tooltip-short-delay 0.1
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
81 "Seconds to wait between subsequent tooltips on different items."
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
82 :type 'number
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
83 :group 'tooltip)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
84
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
85 (defcustom tooltip-recent-seconds 1
25332
c09e05be2f4b (tooltip-mode): Customize this, per convention.
Dave Love <fx@gnu.org>
parents: 25003
diff changeset
86 "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
87 Do so after `tooltip-short-delay'."
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
88 :type 'number
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
89 :group 'tooltip)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
90
40679
3c4df1ce9e4c (tooltip-delay): Decrease to 0.7.
Eli Zaretskii <eliz@gnu.org>
parents: 40376
diff changeset
91 (defcustom tooltip-hide-delay 10
35401
c00e94a506a2 (tooltip-hide-delay): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents: 35069
diff changeset
92 "Hide tooltips automatically after this many seconds."
c00e94a506a2 (tooltip-hide-delay): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents: 35069
diff changeset
93 :type 'number
c00e94a506a2 (tooltip-hide-delay): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents: 35069
diff changeset
94 :group 'tooltip)
c00e94a506a2 (tooltip-hide-delay): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents: 35069
diff changeset
95
66348
834a001192cb (tooltip-x-offset, tooltip-y-offset): Change defaults.
Richard M. Stallman <rms@gnu.org>
parents: 65732
diff changeset
96 (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
97 "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
98 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
99 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
100 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
101 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
102
c4955867228d (tooltip-x-offset, tooltip-y-offset): Mention in the
Eli Zaretskii <eliz@gnu.org>
parents: 37755
diff changeset
103 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
104 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
105 :type 'integer
33587
7d4c3fcd3421 (tooltip-x-offset, tooltip-y-offset): New user-options.
Gerd Moellmann <gerd@gnu.org>
parents: 33356
diff changeset
106 :group 'tooltip)
7d4c3fcd3421 (tooltip-x-offset, tooltip-y-offset): New user-options.
Gerd Moellmann <gerd@gnu.org>
parents: 33356
diff changeset
107
67531
525cba59adb2 Changed default to 20 for tooltip-y-offset.
Jan Djärv <jan.h.d@swipnet.se>
parents: 67485
diff changeset
108 (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
109 "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
110 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
111 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
112 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
113 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
114
c4955867228d (tooltip-x-offset, tooltip-y-offset): Mention in the
Eli Zaretskii <eliz@gnu.org>
parents: 37755
diff changeset
115 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
116 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
117 :type 'integer
33587
7d4c3fcd3421 (tooltip-x-offset, tooltip-y-offset): New user-options.
Gerd Moellmann <gerd@gnu.org>
parents: 33356
diff changeset
118 :group 'tooltip)
7d4c3fcd3421 (tooltip-x-offset, tooltip-y-offset): New user-options.
Gerd Moellmann <gerd@gnu.org>
parents: 33356
diff changeset
119
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
120 (defcustom tooltip-frame-parameters
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
121 '((name . "tooltip")
66348
834a001192cb (tooltip-x-offset, tooltip-y-offset): Change defaults.
Richard M. Stallman <rms@gnu.org>
parents: 65732
diff changeset
122 (internal-border-width . 2)
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
123 (border-width . 1))
40173
c4955867228d (tooltip-x-offset, tooltip-y-offset): Mention in the
Eli Zaretskii <eliz@gnu.org>
parents: 37755
diff changeset
124 "Frame parameters used for tooltips.
c4955867228d (tooltip-x-offset, tooltip-y-offset): Mention in the
Eli Zaretskii <eliz@gnu.org>
parents: 37755
diff changeset
125
c4955867228d (tooltip-x-offset, tooltip-y-offset): Mention in the
Eli Zaretskii <eliz@gnu.org>
parents: 37755
diff changeset
126 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
127 position to pop up the tooltip."
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
128 :type 'sexp
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
129 :group 'tooltip)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
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
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
149
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
150 ;;; Variables that are not customizable.
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
151
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
152 (defvar tooltip-hook nil
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
153 "Functions to call to display tooltips.
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
154 Each function is called with one argument EVENT which is a copy of
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
155 the last mouse movement event that occurred.")
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
156
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
157 (defvar tooltip-timeout-id nil
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
158 "The id of the timeout started when Emacs becomes idle.")
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-last-mouse-motion-event nil
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
161 "A copy of the last mouse motion event seen.")
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
162
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
163 (defvar tooltip-hide-time nil
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
164 "Time when the last tooltip was hidden.")
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
165
63938
cd982981d99a (gud-tooltip-mode): Add defvar.
Richard M. Stallman <rms@gnu.org>
parents: 63587
diff changeset
166 (defvar gud-tooltip-mode) ;; Prevent warning.
cd982981d99a (gud-tooltip-mode): Add defvar.
Richard M. Stallman <rms@gnu.org>
parents: 63587
diff changeset
167
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
168 ;;; Event accessors
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
169
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
170 (defun tooltip-event-buffer (event)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
171 "Return the buffer over which event EVENT occurred.
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
172 This might return nil if the event did not occur over a buffer."
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
173 (let ((window (posn-window (event-end event))))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
174 (and window (window-buffer window))))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
175
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
176
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
177 ;;; Timeout for tooltip display
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
178
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
179 (defun tooltip-delay ()
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
180 "Return the delay in seconds for the next tooltip."
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
181 (let ((delay tooltip-delay)
30481
b603c68fff56 use float-time
Sam Steingold <sds@gnu.org>
parents: 27582
diff changeset
182 (now (float-time)))
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
183 (when (and tooltip-hide-time
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
184 (< (- now tooltip-hide-time) tooltip-recent-seconds))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
185 (setq delay tooltip-short-delay))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
186 delay))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
187
35069
d19eadb47c76 (tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents: 35044
diff changeset
188 (defun tooltip-cancel-delayed-tip ()
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
189 "Disable the tooltip timeout."
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
190 (when tooltip-timeout-id
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
191 (disable-timeout tooltip-timeout-id)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
192 (setq tooltip-timeout-id nil)))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
193
35069
d19eadb47c76 (tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents: 35044
diff changeset
194 (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
195 "Add a one-shot timeout to call function `tooltip-timeout'."
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
196 (setq tooltip-timeout-id
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
197 (add-timeout (tooltip-delay) 'tooltip-timeout nil)))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
198
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
199 (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
200 "Function called when timer with id `tooltip-timeout-id' fires."
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
201 (run-hook-with-args-until-success 'tooltip-hook
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
202 tooltip-last-mouse-motion-event))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
203
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
204
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
205 ;;; Displaying tips
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
206
35043
f7ca93e40e16 (tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents: 34689
diff changeset
207 (defun tooltip-set-param (alist key value)
40178
1dab42ecd751 (tooltip-set-param): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 40173
diff changeset
208 "Change the value of KEY in alist ALIST to VALUE.
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48925
diff changeset
209 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
210 change the existing association. Value is the resulting alist."
f7ca93e40e16 (tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents: 34689
diff changeset
211 (let ((param (assq key alist)))
f7ca93e40e16 (tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents: 34689
diff changeset
212 (if (consp param)
f7ca93e40e16 (tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents: 34689
diff changeset
213 (setcdr param value)
f7ca93e40e16 (tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents: 34689
diff changeset
214 (push (cons key value) alist))
f7ca93e40e16 (tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents: 34689
diff changeset
215 alist))
f7ca93e40e16 (tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents: 34689
diff changeset
216
61626
058da2e83614 (tooltip-show): Change second arg to USE-ECHO-AREA
Kim F. Storm <storm@cua.dk>
parents: 61614
diff changeset
217 (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
218 "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
219
61608
6a8ebeaf5f56 (tooltip-gud-echo-area): Rename from
Nick Roberts <nickrob@snap.net.nz>
parents: 61565
diff changeset
220 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
221
c4955867228d (tooltip-x-offset, tooltip-y-offset): Mention in the
Eli Zaretskii <eliz@gnu.org>
parents: 37755
diff changeset
222 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
223 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
224 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
225 `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
226 position.
6a8ebeaf5f56 (tooltip-gud-echo-area): Rename from
Nick Roberts <nickrob@snap.net.nz>
parents: 61565
diff changeset
227
61626
058da2e83614 (tooltip-show): Change second arg to USE-ECHO-AREA
Kim F. Storm <storm@cua.dk>
parents: 61614
diff changeset
228 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
229 in echo area."
058da2e83614 (tooltip-show): Change second arg to USE-ECHO-AREA
Kim F. Storm <storm@cua.dk>
parents: 61614
diff changeset
230 (if use-echo-area
32431
a35cc9700ff7 * tooltip.el (tooltip-use-echo-area): New user variable.
Sam Steingold <sds@gnu.org>
parents: 30481
diff changeset
231 (message "%s" text)
34540
e1e4704de6ed (tooltip-show): If an error is signaled in
Gerd Moellmann <gerd@gnu.org>
parents: 33925
diff changeset
232 (condition-case error
35043
f7ca93e40e16 (tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents: 34689
diff changeset
233 (let ((params (copy-sequence tooltip-frame-parameters))
f7ca93e40e16 (tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents: 34689
diff changeset
234 (fg (face-attribute 'tooltip :foreground))
f7ca93e40e16 (tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents: 34689
diff changeset
235 (bg (face-attribute 'tooltip :background)))
35069
d19eadb47c76 (tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents: 35044
diff changeset
236 (when (stringp fg)
d19eadb47c76 (tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents: 35044
diff changeset
237 (setq params (tooltip-set-param params 'foreground-color fg))
d19eadb47c76 (tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents: 35044
diff changeset
238 (setq params (tooltip-set-param params 'border-color fg)))
d19eadb47c76 (tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents: 35044
diff changeset
239 (when (stringp bg)
d19eadb47c76 (tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents: 35044
diff changeset
240 (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
241 (x-show-tip (propertize text 'face 'tooltip)
f7ca93e40e16 (tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents: 34689
diff changeset
242 (selected-frame)
35044
bb5e7a8b6f4c Fix last change.
Gerd Moellmann <gerd@gnu.org>
parents: 35043
diff changeset
243 params
35401
c00e94a506a2 (tooltip-hide-delay): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents: 35069
diff changeset
244 tooltip-hide-delay
35043
f7ca93e40e16 (tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents: 34689
diff changeset
245 tooltip-x-offset
f7ca93e40e16 (tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents: 34689
diff changeset
246 tooltip-y-offset))
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48925
diff changeset
247 (error
34540
e1e4704de6ed (tooltip-show): If an error is signaled in
Gerd Moellmann <gerd@gnu.org>
parents: 33925
diff changeset
248 (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
249 (sit-for 1)
e1e4704de6ed (tooltip-show): If an error is signaled in
Gerd Moellmann <gerd@gnu.org>
parents: 33925
diff changeset
250 (message "%s" text)))))
e1e4704de6ed (tooltip-show): If an error is signaled in
Gerd Moellmann <gerd@gnu.org>
parents: 33925
diff changeset
251
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
252 (defun tooltip-hide (&optional ignored-arg)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
253 "Hide a tooltip, if one is displayed.
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
254 Value is non-nil if tooltip was open."
35069
d19eadb47c76 (tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents: 35044
diff changeset
255 (tooltip-cancel-delayed-tip)
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
256 (when (x-hide-tip)
30481
b603c68fff56 use float-time
Sam Steingold <sds@gnu.org>
parents: 27582
diff changeset
257 (setq tooltip-hide-time (float-time))))
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
258
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
259
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
260 ;;; Debugger-related functions
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
261
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
262 (defun tooltip-identifier-from-point (point)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
263 "Extract the identifier at POINT, if any.
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
264 Value is nil if no identifier exists at point. Identifier extraction
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
265 is based on the current syntax table."
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
266 (save-excursion
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
267 (goto-char point)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
268 (let ((start (progn (skip-syntax-backward "w_") (point))))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
269 (unless (looking-at "[0-9]")
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
270 (skip-syntax-forward "w_")
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
271 (when (> (point) start)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
272 (buffer-substring start (point)))))))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
273
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
274 (defmacro tooltip-region-active-p ()
87404
5d4b7a894119 Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 87403
diff changeset
275 "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
276 `(use-region-p))
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
277
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
278 (defun tooltip-expr-to-print (event)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
279 "Return an expression that should be printed for EVENT.
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
280 If a region is active and the mouse is inside the region, print
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
281 the region. Otherwise, figure out the identifier around the point
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
282 where the mouse is."
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
283 (save-excursion
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
284 (set-buffer (tooltip-event-buffer event))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
285 (let ((point (posn-point (event-end event))))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
286 (if (tooltip-region-active-p)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
287 (when (and (<= (region-beginning) point) (<= point (region-end)))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
288 (buffer-substring (region-beginning) (region-end)))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
289 (tooltip-identifier-from-point point)))))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
290
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
291 (defun tooltip-process-prompt-regexp (process)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
292 "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
293 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
294 the buffer of PROCESS."
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
295 (let ((prompt-regexp (save-excursion
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
296 (set-buffer (process-buffer process))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
297 comint-prompt-regexp)))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
298 ;; Most start with `^' but the one for `sdb' cannot be easily
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
299 ;; stripped. Code the prompt for `sdb' fixed here.
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
300 (if (= (aref prompt-regexp 0) ?^)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
301 (setq prompt-regexp (substring prompt-regexp 1))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
302 (setq prompt-regexp "\\*"))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
303 (concat "\n*" prompt-regexp "$")))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
304
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
305 (defun tooltip-strip-prompt (process output)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
306 "Return OUTPUT with any prompt of PROCESS stripped from its end."
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
307 (let ((prompt-regexp (tooltip-process-prompt-regexp process)))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
308 (save-match-data
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
309 (when (string-match prompt-regexp output)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
310 (setq output (substring output 0 (match-beginning 0)))))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
311 output))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
312
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
313
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
314 ;;; Tooltip help.
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
315
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
316 (defvar tooltip-help-message nil
63441
ebbf98a044ac * tooltip.el (tooltip-use-echo-area): Restore from gud.el for
Nick Roberts <nickrob@snap.net.nz>
parents: 62135
diff changeset
317 "The last help message received via `tooltip-show-help'.")
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
318
63441
ebbf98a044ac * tooltip.el (tooltip-use-echo-area): Restore from gud.el for
Nick Roberts <nickrob@snap.net.nz>
parents: 62135
diff changeset
319 (defun tooltip-show-help (msg)
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
320 "Function installed as `show-help-function'.
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
321 MSG is either a help string to display, or nil to cancel the display."
61161
22abf0130979 (tooltip-show-help-function): Don't fixup message here.
Kim F. Storm <storm@cua.dk>
parents: 61128
diff changeset
322 (let ((previous-help tooltip-help-message))
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
323 (setq tooltip-help-message msg)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
324 (cond ((null msg)
35069
d19eadb47c76 (tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents: 35044
diff changeset
325 ;; Cancel display. This also cancels a delayed tip, if
d19eadb47c76 (tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents: 35044
diff changeset
326 ;; there is one.
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
327 (tooltip-hide))
35069
d19eadb47c76 (tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents: 35044
diff changeset
328 ((equal previous-help msg)
d19eadb47c76 (tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents: 35044
diff changeset
329 ;; Same help as before (but possibly the mouse has moved).
d19eadb47c76 (tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents: 35044
diff changeset
330 ;; Keep what we have.
d19eadb47c76 (tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents: 35044
diff changeset
331 )
d19eadb47c76 (tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents: 35044
diff changeset
332 (t
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48925
diff changeset
333 ;; A different help. Remove a previous tooltip, and
35069
d19eadb47c76 (tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents: 35044
diff changeset
334 ;; display a new one, with some delay.
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
335 (tooltip-hide)
35069
d19eadb47c76 (tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents: 35044
diff changeset
336 (tooltip-start-delayed-tip)))))
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
337
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
338 (defun tooltip-help-tips (event)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
339 "Hook function to display a help tooltip.
35069
d19eadb47c76 (tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents: 35044
diff changeset
340 This is installed on the hook `tooltip-hook', which is run when
63483
8e09dea7559c (tooltip-start-delayed-tip, tooltip-timeout, tooltip-use-echo-area,
Juanma Barranquero <lekktu@gmail.com>
parents: 63441
diff changeset
341 the timer with id `tooltip-timeout-id' fires.
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
342 Value is non-nil if this function handled the tip."
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
343 (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
344 (tooltip-show tooltip-help-message tooltip-use-echo-area)
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
345 t))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
346
48601
ac47e19224b0 (tooltip-gud-process-output): Handle annotations that
Nick Roberts <nickrob@snap.net.nz>
parents: 48580
diff changeset
347 (provide 'tooltip)
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
348
58155
2f1734bcecca Require CL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58118
diff changeset
349 ;; arch-tag: 3d61135e-4618-4a78-af28-183f6df5636f
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
350 ;;; tooltip.el ends here