annotate lisp/tooltip.el @ 110410:f2e111723c3a

Merge changes made in Gnus trunk. Reimplement nnimap, and do tweaks to the rest of the code to support that. * gnus-int.el (gnus-finish-retrieve-group-infos) (gnus-retrieve-group-data-early): New functions. * gnus-range.el (gnus-range-nconcat): New function. * gnus-start.el (gnus-get-unread-articles): Support early retrieval of data. (gnus-read-active-for-groups): Support finishing the early retrieval of data. * gnus-sum.el (gnus-summary-move-article): Pass the move-to group name if the move is internal, so that nnimap can do fast internal moves. * gnus.el (gnus-article-special-mark-lists): Add uid/active tuples, for nnimap usage. * nnimap.el: Rewritten. * nnmail.el (nnmail-inhibit-default-split-group): New internal variable to allow the mail splitting to not return a default group. This is useful for nnimap, which will leave unmatched mail in the inbox. * utf7.el (utf7-encode): Autoload. Implement shell connection. * nnimap.el (nnimap-open-shell-stream): New function. (nnimap-open-connection): Use it. Get the number of lines by using BODYSTRUCTURE. (nnimap-transform-headers): Get the number of lines in each message. (nnimap-retrieve-headers): Query for BODYSTRUCTURE so that we get the number of lines. Not all servers return UIDNEXT. Work past this problem. Remove junk from end of file. Fix typo in "bogus" section. Make capabilties be case-insensitive. Require cl when compiling. Don't bug out if the LIST command doesn't have any parameters. 2010-09-17 Knut Anders Hatlen <kahatlen@gmail.com> (tiny change) * nnimap.el (nnimap-get-groups): Don't bug out if the LIST command doesn't have any parameters. (mm-text-html-renderer): Document gnus-article-html. 2010-09-17 Julien Danjou <julien@danjou.info> (tiny fix) * mm-decode.el (mm-text-html-renderer): Document gnus-article-html. * dgnushack.el: Define netrc-credentials. If the user doesn't have a /etc/services, supply some sensible port defaults. Have `unseen-or-unread' select an unread unseen article first. (nntp-open-server): Return whether the open was successful or not. Throughout all files, replace (save-excursion (set-buffer ...)) with (with-current-buffer ... ). Save result so that it doesn't say "failed" all the time. Add ~/.authinfo to the default, since that's probably most useful for users. Don't use the "finish" method when we're reading from the agent. Add some more nnimap-relevant agent stuff to nnagent.el. * nnimap.el (nnimap-with-process-buffer): Removed. Revert one line that was changed by mistake in the last checkin. (nnimap-open-connection): Don't error out when we can't make a connection nnimap-related changes to avoid bugging out if we can't contact a server. * gnus-start.el (gnus-get-unread-articles): Don't try to scan groups from methods that are denied. * nnimap.el (nnimap-possibly-change-group): Return nil if we can't log in. (nnimap-finish-retrieve-group-infos): Make sure we're not waiting for nothing. * gnus-sum.el (gnus-select-newsgroup): Indent.
author Katsumi Yamaoka <yamaoka@jpl.org>
date Sat, 18 Sep 2010 10:02:19 +0000
parents 280c8ae2476d
children 417b1e4d63cd
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,
106815
1d1d5d9bd884 Add 2010 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 105967
diff changeset
4 ;; 2005, 2006, 2007, 2008, 2009, 2010 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
110015
280c8ae2476d Add "Package:" file headers to denote built-in packages.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
8 ;; Package: emacs
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
9
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
10 ;; This file is part of GNU Emacs.
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
11
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94186
diff changeset
12 ;; GNU Emacs is free software: you can redistribute it and/or modify
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
13 ;; 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
14 ;; 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
15 ;; (at your option) any later version.
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
16
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
17 ;; GNU Emacs is distributed in the hope that it will be useful,
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
20 ;; GNU General Public License for more details.
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
21
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
22 ;; 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
23 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
24
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
25 ;;; Commentary:
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
26
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
27 ;;; Code:
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
28
65297
1cb15495a842 (comint-prompt-regexp): Add defvar.
Juanma Barranquero <lekktu@gmail.com>
parents: 64762
diff changeset
29 (defvar comint-prompt-regexp)
1cb15495a842 (comint-prompt-regexp): Add defvar.
Juanma Barranquero <lekktu@gmail.com>
parents: 64762
diff changeset
30
67706
05fd43fc72e9 (tooltip): Move defgroup before define-minor-mode.
Juri Linkov <juri@jurta.org>
parents: 67597
diff changeset
31 (defgroup tooltip nil
05fd43fc72e9 (tooltip): Move defgroup before define-minor-mode.
Juri Linkov <juri@jurta.org>
parents: 67597
diff changeset
32 "Customization group for the `tooltip' package."
05fd43fc72e9 (tooltip): Move defgroup before define-minor-mode.
Juri Linkov <juri@jurta.org>
parents: 67597
diff changeset
33 :group 'help
05fd43fc72e9 (tooltip): Move defgroup before define-minor-mode.
Juri Linkov <juri@jurta.org>
parents: 67597
diff changeset
34 :group 'gud
05fd43fc72e9 (tooltip): Move defgroup before define-minor-mode.
Juri Linkov <juri@jurta.org>
parents: 67597
diff changeset
35 :group 'mouse
05fd43fc72e9 (tooltip): Move defgroup before define-minor-mode.
Juri Linkov <juri@jurta.org>
parents: 67597
diff changeset
36 :group 'tools
05fd43fc72e9 (tooltip): Move defgroup before define-minor-mode.
Juri Linkov <juri@jurta.org>
parents: 67597
diff changeset
37 :version "21.1"
05fd43fc72e9 (tooltip): Move defgroup before define-minor-mode.
Juri Linkov <juri@jurta.org>
parents: 67597
diff changeset
38 :tag "Tool Tips")
05fd43fc72e9 (tooltip): Move defgroup before define-minor-mode.
Juri Linkov <juri@jurta.org>
parents: 67597
diff changeset
39
67485
2865d1195586 (tooltip-mode): Move to start of file so that it
Nick Roberts <nickrob@snap.net.nz>
parents: 66348
diff changeset
40 ;;; 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
41
2865d1195586 (tooltip-mode): Move to start of file so that it
Nick Roberts <nickrob@snap.net.nz>
parents: 66348
diff changeset
42 (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
43 "Toggle Tooltip mode.
7ab0f5013dfb (tooltip-mode, tooltip-use-echo-area): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 68651
diff changeset
44 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
45 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
46 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
47 \(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
48 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
49
7ab0f5013dfb (tooltip-mode, tooltip-use-echo-area): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 68651
diff changeset
50 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
51 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
52 :global t
98061
68a220b546b7 (tooltip-mode): Initialize unconditionally to t.
Chong Yidong <cyd@stupidchicken.com>
parents: 95841
diff changeset
53 ;; 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
54 ;; 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
55 :init-value t
104990
f0794252d960 * mail/sendmail.el (send-mail-function):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 103086
diff changeset
56 :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
57 :group 'tooltip
2865d1195586 (tooltip-mode): Move to start of file so that it
Nick Roberts <nickrob@snap.net.nz>
parents: 66348
diff changeset
58 (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
59 (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
60 (if tooltip-mode
2865d1195586 (tooltip-mode): Move to start of file so that it
Nick Roberts <nickrob@snap.net.nz>
parents: 66348
diff changeset
61 (progn
2865d1195586 (tooltip-mode): Move to start of file so that it
Nick Roberts <nickrob@snap.net.nz>
parents: 66348
diff changeset
62 (add-hook 'pre-command-hook 'tooltip-hide)
99213
33f78208d5f0 Rename `tooltip-hook' to `tooltip-functions'.
Juanma Barranquero <lekktu@gmail.com>
parents: 98061
diff changeset
63 (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
64 (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
65 (remove-hook 'pre-command-hook 'tooltip-hide))
99213
33f78208d5f0 Rename `tooltip-hook' to `tooltip-functions'.
Juanma Barranquero <lekktu@gmail.com>
parents: 98061
diff changeset
66 (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
67 (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
68 (if tooltip-mode 'tooltip-show-help 'tooltip-show-help-non-mode)))
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
69
67706
05fd43fc72e9 (tooltip): Move defgroup before define-minor-mode.
Juri Linkov <juri@jurta.org>
parents: 67597
diff changeset
70
05fd43fc72e9 (tooltip): Move defgroup before define-minor-mode.
Juri Linkov <juri@jurta.org>
parents: 67597
diff changeset
71 ;;; Customizable settings
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
72
40679
3c4df1ce9e4c (tooltip-delay): Decrease to 0.7.
Eli Zaretskii <eliz@gnu.org>
parents: 40376
diff changeset
73 (defcustom tooltip-delay 0.7
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
74 "Seconds to wait before displaying a tooltip the first time."
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
75 :type 'number
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
76 :group 'tooltip)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
77
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
78 (defcustom tooltip-short-delay 0.1
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
79 "Seconds to wait between subsequent tooltips on different items."
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
80 :type 'number
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
81 :group 'tooltip)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
82
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
83 (defcustom tooltip-recent-seconds 1
25332
c09e05be2f4b (tooltip-mode): Customize this, per convention.
Dave Love <fx@gnu.org>
parents: 25003
diff changeset
84 "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
85 Do so after `tooltip-short-delay'."
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
86 :type 'number
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
87 :group 'tooltip)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
88
40679
3c4df1ce9e4c (tooltip-delay): Decrease to 0.7.
Eli Zaretskii <eliz@gnu.org>
parents: 40376
diff changeset
89 (defcustom tooltip-hide-delay 10
35401
c00e94a506a2 (tooltip-hide-delay): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents: 35069
diff changeset
90 "Hide tooltips automatically after this many seconds."
c00e94a506a2 (tooltip-hide-delay): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents: 35069
diff changeset
91 :type 'number
c00e94a506a2 (tooltip-hide-delay): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents: 35069
diff changeset
92 :group 'tooltip)
c00e94a506a2 (tooltip-hide-delay): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents: 35069
diff changeset
93
66348
834a001192cb (tooltip-x-offset, tooltip-y-offset): Change defaults.
Richard M. Stallman <rms@gnu.org>
parents: 65732
diff changeset
94 (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
95 "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
96 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
97 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
98 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
99 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
100
c4955867228d (tooltip-x-offset, tooltip-y-offset): Mention in the
Eli Zaretskii <eliz@gnu.org>
parents: 37755
diff changeset
101 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
102 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
103 :type 'integer
33587
7d4c3fcd3421 (tooltip-x-offset, tooltip-y-offset): New user-options.
Gerd Moellmann <gerd@gnu.org>
parents: 33356
diff changeset
104 :group 'tooltip)
7d4c3fcd3421 (tooltip-x-offset, tooltip-y-offset): New user-options.
Gerd Moellmann <gerd@gnu.org>
parents: 33356
diff changeset
105
67531
525cba59adb2 Changed default to 20 for tooltip-y-offset.
Jan Djärv <jan.h.d@swipnet.se>
parents: 67485
diff changeset
106 (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
107 "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
108 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
109 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
110 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
111 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
112
c4955867228d (tooltip-x-offset, tooltip-y-offset): Mention in the
Eli Zaretskii <eliz@gnu.org>
parents: 37755
diff changeset
113 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
114 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
115 :type 'integer
33587
7d4c3fcd3421 (tooltip-x-offset, tooltip-y-offset): New user-options.
Gerd Moellmann <gerd@gnu.org>
parents: 33356
diff changeset
116 :group 'tooltip)
7d4c3fcd3421 (tooltip-x-offset, tooltip-y-offset): New user-options.
Gerd Moellmann <gerd@gnu.org>
parents: 33356
diff changeset
117
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
118 (defcustom tooltip-frame-parameters
105967
e28c9547f91d (tooltip-frame-parameters): Undo previous change.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105957
diff changeset
119 '((name . "tooltip")
66348
834a001192cb (tooltip-x-offset, tooltip-y-offset): Change defaults.
Richard M. Stallman <rms@gnu.org>
parents: 65732
diff changeset
120 (internal-border-width . 2)
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
121 (border-width . 1))
40173
c4955867228d (tooltip-x-offset, tooltip-y-offset): Mention in the
Eli Zaretskii <eliz@gnu.org>
parents: 37755
diff changeset
122 "Frame parameters used for tooltips.
c4955867228d (tooltip-x-offset, tooltip-y-offset): Mention in the
Eli Zaretskii <eliz@gnu.org>
parents: 37755
diff changeset
123
c4955867228d (tooltip-x-offset, tooltip-y-offset): Mention in the
Eli Zaretskii <eliz@gnu.org>
parents: 37755
diff changeset
124 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
125 position to pop up the tooltip.
563e71d339f2 * tooltip.el (tooltip-frame-parameters): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 99213
diff changeset
126
563e71d339f2 * tooltip.el (tooltip-frame-parameters): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 99213
diff changeset
127 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
128 of the `tooltip' face are used instead."
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
129 :type 'sexp
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
130 :group 'tooltip)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
131
35043
f7ca93e40e16 (tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents: 34689
diff changeset
132 (defface tooltip
f7ca93e40e16 (tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents: 34689
diff changeset
133 '((((class color))
52031
5163fa137977 (defface tooltip): Inherit from variable-pitch.
John Paul Wallington <jpw@pobox.com>
parents: 49597
diff changeset
134 :background "lightyellow"
5163fa137977 (defface tooltip): Inherit from variable-pitch.
John Paul Wallington <jpw@pobox.com>
parents: 49597
diff changeset
135 :foreground "black"
5163fa137977 (defface tooltip): Inherit from variable-pitch.
John Paul Wallington <jpw@pobox.com>
parents: 49597
diff changeset
136 :inherit variable-pitch)
5163fa137977 (defface tooltip): Inherit from variable-pitch.
John Paul Wallington <jpw@pobox.com>
parents: 49597
diff changeset
137 (t
5163fa137977 (defface tooltip): Inherit from variable-pitch.
John Paul Wallington <jpw@pobox.com>
parents: 49597
diff changeset
138 :inherit variable-pitch))
35043
f7ca93e40e16 (tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents: 34689
diff changeset
139 "Face for tooltips."
65732
cd8e6d86c531 (tooltip): Add group `basic-faces'.
Juri Linkov <juri@jurta.org>
parents: 65297
diff changeset
140 :group 'tooltip
cd8e6d86c531 (tooltip): Add group `basic-faces'.
Juri Linkov <juri@jurta.org>
parents: 65297
diff changeset
141 :group 'basic-faces)
35043
f7ca93e40e16 (tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents: 34689
diff changeset
142
63441
ebbf98a044ac * tooltip.el (tooltip-use-echo-area): Restore from gud.el for
Nick Roberts <nickrob@snap.net.nz>
parents: 62135
diff changeset
143 (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
144 "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
145 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
146 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
147 :type 'boolean
ebbf98a044ac * tooltip.el (tooltip-use-echo-area): Restore from gud.el for
Nick Roberts <nickrob@snap.net.nz>
parents: 62135
diff changeset
148 :group 'tooltip)
ebbf98a044ac * tooltip.el (tooltip-use-echo-area): Restore from gud.el for
Nick Roberts <nickrob@snap.net.nz>
parents: 62135
diff changeset
149
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
150
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
151 ;;; Variables that are not customizable.
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
152
99213
33f78208d5f0 Rename `tooltip-hook' to `tooltip-functions'.
Juanma Barranquero <lekktu@gmail.com>
parents: 98061
diff changeset
153 (defvar tooltip-functions nil
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
154 "Functions to call to display tooltips.
99213
33f78208d5f0 Rename `tooltip-hook' to `tooltip-functions'.
Juanma Barranquero <lekktu@gmail.com>
parents: 98061
diff changeset
155 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
156 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
157 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
158 rest are not called.")
33f78208d5f0 Rename `tooltip-hook' to `tooltip-functions'.
Juanma Barranquero <lekktu@gmail.com>
parents: 98061
diff changeset
159
33f78208d5f0 Rename `tooltip-hook' to `tooltip-functions'.
Juanma Barranquero <lekktu@gmail.com>
parents: 98061
diff changeset
160 (define-obsolete-variable-alias 'tooltip-hook 'tooltip-functions "23.1")
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
161
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
162 (defvar tooltip-timeout-id nil
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
163 "The id of the timeout started when Emacs becomes idle.")
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
164
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
165 (defvar tooltip-last-mouse-motion-event nil
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
166 "A copy of the last mouse motion event seen.")
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
167
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
168 (defvar tooltip-hide-time nil
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
169 "Time when the last tooltip was hidden.")
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
170
63938
cd982981d99a (gud-tooltip-mode): Add defvar.
Richard M. Stallman <rms@gnu.org>
parents: 63587
diff changeset
171 (defvar gud-tooltip-mode) ;; Prevent warning.
cd982981d99a (gud-tooltip-mode): Add defvar.
Richard M. Stallman <rms@gnu.org>
parents: 63587
diff changeset
172
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
173 ;;; Event accessors
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
174
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
175 (defun tooltip-event-buffer (event)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
176 "Return the buffer over which event EVENT occurred.
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
177 This might return nil if the event did not occur over a buffer."
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
178 (let ((window (posn-window (event-end event))))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
179 (and window (window-buffer window))))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
180
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
181
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
182 ;;; Timeout for tooltip display
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
183
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
184 (defun tooltip-delay ()
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
185 "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
186 (if (and tooltip-hide-time
7870d07a291c * tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93998
diff changeset
187 (< (- (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
188 tooltip-short-delay
7870d07a291c * tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93998
diff changeset
189 tooltip-delay))
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
190
35069
d19eadb47c76 (tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents: 35044
diff changeset
191 (defun tooltip-cancel-delayed-tip ()
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
192 "Disable the tooltip timeout."
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
193 (when tooltip-timeout-id
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
194 (disable-timeout tooltip-timeout-id)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
195 (setq tooltip-timeout-id nil)))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
196
35069
d19eadb47c76 (tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents: 35044
diff changeset
197 (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
198 "Add a one-shot timeout to call function `tooltip-timeout'."
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
199 (setq tooltip-timeout-id
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
200 (add-timeout (tooltip-delay) 'tooltip-timeout nil)))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
201
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
202 (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
203 "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
204 (run-hook-with-args-until-success 'tooltip-functions
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
205 tooltip-last-mouse-motion-event))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
206
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
207
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
208 ;;; Displaying tips
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
209
35043
f7ca93e40e16 (tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents: 34689
diff changeset
210 (defun tooltip-set-param (alist key value)
40178
1dab42ecd751 (tooltip-set-param): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 40173
diff changeset
211 "Change the value of KEY in alist ALIST to VALUE.
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48925
diff changeset
212 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
213 change the existing association. Value is the resulting alist."
f7ca93e40e16 (tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents: 34689
diff changeset
214 (let ((param (assq key alist)))
f7ca93e40e16 (tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents: 34689
diff changeset
215 (if (consp param)
f7ca93e40e16 (tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents: 34689
diff changeset
216 (setcdr param value)
f7ca93e40e16 (tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents: 34689
diff changeset
217 (push (cons key value) alist))
f7ca93e40e16 (tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents: 34689
diff changeset
218 alist))
f7ca93e40e16 (tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents: 34689
diff changeset
219
95841
b4e36ff621b3 Add some compiler declarations, for builds without X.
Glenn Morris <rgm@gnu.org>
parents: 94678
diff changeset
220 (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
221 (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
222
61626
058da2e83614 (tooltip-show): Change second arg to USE-ECHO-AREA
Kim F. Storm <storm@cua.dk>
parents: 61614
diff changeset
223 (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
224 "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
225
61608
6a8ebeaf5f56 (tooltip-gud-echo-area): Rename from
Nick Roberts <nickrob@snap.net.nz>
parents: 61565
diff changeset
226 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
227
c4955867228d (tooltip-x-offset, tooltip-y-offset): Mention in the
Eli Zaretskii <eliz@gnu.org>
parents: 37755
diff changeset
228 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
229 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
230 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
231 `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
232 position.
6a8ebeaf5f56 (tooltip-gud-echo-area): Rename from
Nick Roberts <nickrob@snap.net.nz>
parents: 61565
diff changeset
233
61626
058da2e83614 (tooltip-show): Change second arg to USE-ECHO-AREA
Kim F. Storm <storm@cua.dk>
parents: 61614
diff changeset
234 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
235 in echo area."
058da2e83614 (tooltip-show): Change second arg to USE-ECHO-AREA
Kim F. Storm <storm@cua.dk>
parents: 61614
diff changeset
236 (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
237 (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
238 (condition-case error
35043
f7ca93e40e16 (tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents: 34689
diff changeset
239 (let ((params (copy-sequence tooltip-frame-parameters))
f7ca93e40e16 (tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents: 34689
diff changeset
240 (fg (face-attribute 'tooltip :foreground))
f7ca93e40e16 (tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents: 34689
diff changeset
241 (bg (face-attribute 'tooltip :background)))
35069
d19eadb47c76 (tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents: 35044
diff changeset
242 (when (stringp fg)
d19eadb47c76 (tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents: 35044
diff changeset
243 (setq params (tooltip-set-param params 'foreground-color fg))
d19eadb47c76 (tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents: 35044
diff changeset
244 (setq params (tooltip-set-param params 'border-color fg)))
d19eadb47c76 (tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents: 35044
diff changeset
245 (when (stringp bg)
d19eadb47c76 (tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents: 35044
diff changeset
246 (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
247 (x-show-tip (propertize text 'face 'tooltip)
f7ca93e40e16 (tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents: 34689
diff changeset
248 (selected-frame)
35044
bb5e7a8b6f4c Fix last change.
Gerd Moellmann <gerd@gnu.org>
parents: 35043
diff changeset
249 params
35401
c00e94a506a2 (tooltip-hide-delay): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents: 35069
diff changeset
250 tooltip-hide-delay
35043
f7ca93e40e16 (tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents: 34689
diff changeset
251 tooltip-x-offset
f7ca93e40e16 (tooltip-frame-parameters): Remove colors.
Gerd Moellmann <gerd@gnu.org>
parents: 34689
diff changeset
252 tooltip-y-offset))
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48925
diff changeset
253 (error
34540
e1e4704de6ed (tooltip-show): If an error is signaled in
Gerd Moellmann <gerd@gnu.org>
parents: 33925
diff changeset
254 (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
255 (sit-for 1)
e1e4704de6ed (tooltip-show): If an error is signaled in
Gerd Moellmann <gerd@gnu.org>
parents: 33925
diff changeset
256 (message "%s" text)))))
e1e4704de6ed (tooltip-show): If an error is signaled in
Gerd Moellmann <gerd@gnu.org>
parents: 33925
diff changeset
257
95841
b4e36ff621b3 Add some compiler declarations, for builds without X.
Glenn Morris <rgm@gnu.org>
parents: 94678
diff changeset
258 (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
259
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
260 (defun tooltip-hide (&optional ignored-arg)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
261 "Hide a tooltip, if one is displayed.
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
262 Value is non-nil if tooltip was open."
35069
d19eadb47c76 (tooltip-cancel-delayed-tip)
Gerd Moellmann <gerd@gnu.org>
parents: 35044
diff changeset
263 (tooltip-cancel-delayed-tip)
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
264 (when (x-hide-tip)
30481
b603c68fff56 use float-time
Sam Steingold <sds@gnu.org>
parents: 27582
diff changeset
265 (setq tooltip-hide-time (float-time))))
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
266
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
267
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
268 ;;; Debugger-related functions
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
269
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
270 (defun tooltip-identifier-from-point (point)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
271 "Extract the identifier at POINT, if any.
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
272 Value is nil if no identifier exists at point. Identifier extraction
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
273 is based on the current syntax table."
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
274 (save-excursion
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
275 (goto-char point)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
276 (let ((start (progn (skip-syntax-backward "w_") (point))))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
277 (unless (looking-at "[0-9]")
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
278 (skip-syntax-forward "w_")
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
279 (when (> (point) start)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
280 (buffer-substring start (point)))))))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
281
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
282 (defmacro tooltip-region-active-p ()
87404
5d4b7a894119 Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 87403
diff changeset
283 "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
284 `(use-region-p))
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
285
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
286 (defun tooltip-expr-to-print (event)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
287 "Return an expression that should be printed for EVENT.
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
288 If a region is active and the mouse is inside the region, print
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
289 the region. Otherwise, figure out the identifier around the point
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
290 where the mouse is."
94186
7870d07a291c * tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93998
diff changeset
291 (with-current-buffer (tooltip-event-buffer event)
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
292 (let ((point (posn-point (event-end event))))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
293 (if (tooltip-region-active-p)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
294 (when (and (<= (region-beginning) point) (<= point (region-end)))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
295 (buffer-substring (region-beginning) (region-end)))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
296 (tooltip-identifier-from-point point)))))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
297
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
298 (defun tooltip-process-prompt-regexp (process)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
299 "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
300 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
301 the buffer of PROCESS."
94186
7870d07a291c * tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93998
diff changeset
302 (let ((prompt-regexp (with-current-buffer (process-buffer process)
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
303 comint-prompt-regexp)))
94186
7870d07a291c * tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93998
diff changeset
304 (concat "\n*"
7870d07a291c * tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93998
diff changeset
305 ;; 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
306 ;; 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
307 (if (= (aref prompt-regexp 0) ?^)
7870d07a291c * tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93998
diff changeset
308 (substring prompt-regexp 1)
7870d07a291c * tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93998
diff changeset
309 "\\*")
7870d07a291c * tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93998
diff changeset
310 "$")))
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
311
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
312 (defun tooltip-strip-prompt (process output)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
313 "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
314 (save-match-data
7870d07a291c * tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93998
diff changeset
315 (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
316 (substring output 0 (match-beginning 0))
7870d07a291c * tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93998
diff changeset
317 output)))
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
318
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
319
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
320 ;;; Tooltip help.
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
321
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
322 (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
323 "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
324 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
325 `tooltip-show-help-non-mode'.")
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
326
94186
7870d07a291c * tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93998
diff changeset
327 (defvar tooltip-previous-message nil
7870d07a291c * tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93998
diff changeset
328 "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
329
7870d07a291c * tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93998
diff changeset
330 (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
331 "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
332 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
333 (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
334 (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
335 (cond
7870d07a291c * tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93998
diff changeset
336 ((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
337 (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
338 (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
339 (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
340 (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
341 (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
342 (current-message))))
94186
7870d07a291c * tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93998
diff changeset
343 (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
344 (setq tooltip-help-message help)
94186
7870d07a291c * tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93998
diff changeset
345 (let ((message-truncate-lines t)
7870d07a291c * tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93998
diff changeset
346 (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
347 (message "%s" help)))
94186
7870d07a291c * tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93998
diff changeset
348 ((stringp tooltip-previous-message)
7870d07a291c * tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93998
diff changeset
349 (let ((message-log-max nil))
7870d07a291c * tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93998
diff changeset
350 (message "%s" tooltip-previous-message)
7870d07a291c * tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93998
diff changeset
351 (setq tooltip-previous-message nil)))
7870d07a291c * tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93998
diff changeset
352 (t
7870d07a291c * tooltip.el (tooltip-previous-message): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93998
diff changeset
353 (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
354
63441
ebbf98a044ac * tooltip.el (tooltip-use-echo-area): Restore from gud.el for
Nick Roberts <nickrob@snap.net.nz>
parents: 62135
diff changeset
355 (defun tooltip-show-help (msg)
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
356 "Function installed as `show-help-function'.
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
357 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
358 (if (display-graphic-p)
c3181c5efa5a * tooltip.el (tooltip-show-help): Fall back on
Chong Yidong <cyd@stupidchicken.com>
parents: 102871
diff changeset
359 (let ((previous-help tooltip-help-message))
c3181c5efa5a * tooltip.el (tooltip-show-help): Fall back on
Chong Yidong <cyd@stupidchicken.com>
parents: 102871
diff changeset
360 (setq tooltip-help-message msg)
c3181c5efa5a * tooltip.el (tooltip-show-help): Fall back on
Chong Yidong <cyd@stupidchicken.com>
parents: 102871
diff changeset
361 (cond ((null msg)
c3181c5efa5a * tooltip.el (tooltip-show-help): Fall back on
Chong Yidong <cyd@stupidchicken.com>
parents: 102871
diff changeset
362 ;; 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
363 ;; there is one.
c3181c5efa5a * tooltip.el (tooltip-show-help): Fall back on
Chong Yidong <cyd@stupidchicken.com>
parents: 102871
diff changeset
364 (tooltip-hide))
c3181c5efa5a * tooltip.el (tooltip-show-help): Fall back on
Chong Yidong <cyd@stupidchicken.com>
parents: 102871
diff changeset
365 ((equal previous-help msg)
c3181c5efa5a * tooltip.el (tooltip-show-help): Fall back on
Chong Yidong <cyd@stupidchicken.com>
parents: 102871
diff changeset
366 ;; 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
367 ;; Keep what we have.
c3181c5efa5a * tooltip.el (tooltip-show-help): Fall back on
Chong Yidong <cyd@stupidchicken.com>
parents: 102871
diff changeset
368 )
c3181c5efa5a * tooltip.el (tooltip-show-help): Fall back on
Chong Yidong <cyd@stupidchicken.com>
parents: 102871
diff changeset
369 (t
c3181c5efa5a * tooltip.el (tooltip-show-help): Fall back on
Chong Yidong <cyd@stupidchicken.com>
parents: 102871
diff changeset
370 ;; 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
371 ;; 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
372 (tooltip-hide)
c3181c5efa5a * tooltip.el (tooltip-show-help): Fall back on
Chong Yidong <cyd@stupidchicken.com>
parents: 102871
diff changeset
373 (tooltip-start-delayed-tip))))
c3181c5efa5a * tooltip.el (tooltip-show-help): Fall back on
Chong Yidong <cyd@stupidchicken.com>
parents: 102871
diff changeset
374 ;; 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
375 (tooltip-show-help-non-mode msg)))
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
376
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
377 (defun tooltip-help-tips (event)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
378 "Hook function to display a help tooltip.
99213
33f78208d5f0 Rename `tooltip-hook' to `tooltip-functions'.
Juanma Barranquero <lekktu@gmail.com>
parents: 98061
diff changeset
379 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
380 is run when the timer with id `tooltip-timeout-id' fires.
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
381 Value is non-nil if this function handled the tip."
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
382 (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
383 (tooltip-show tooltip-help-message tooltip-use-echo-area)
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
384 t))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
385
48601
ac47e19224b0 (tooltip-gud-process-output): Handle annotations that
Nick Roberts <nickrob@snap.net.nz>
parents: 48580
diff changeset
386 (provide 'tooltip)
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
387
58155
2f1734bcecca Require CL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58118
diff changeset
388 ;; arch-tag: 3d61135e-4618-4a78-af28-183f6df5636f
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
389 ;;; tooltip.el ends here