annotate lispref/display.texi @ 58195:c12b583f54b9

Fixed these problems: ** Clicking on partially visible lines fails From: David Kastrup <dak@gnu.org> Date: 27 Apr 2004 16:42:58 +0200 I had gnus display a mouse-highlighted line (a URL from browse-url) partially at the bottom of its window. If I click with middle mouse key on it, the window gets recentered while I hold the mouse key pressed. If I release it, the window returns into its old position (cursor in top row) and nothing happens, presumably because the click was not registered on the line itself, but on the magically recentered version. That is a nuisance. Recentering of even partially visible click targets should only happen if window-point moves there, but not at the time of the click. From the moment I hold down a key until it gets released, the displayed window portion should not change, with the sole exception of scrolling when dragging at the edge of the screen. (progn (setq line-spacing 4) (dotimes (i (window-height)) (insert "\n" (int-to-string i))) (forward-line -2) (recenter -1)) ** Can't drag modeline when mouse-autoselect-window is set From: Klaus Zeitler <kzeitler@lucent.com> Date: Mon, 11 Oct 2004 11:14:49 +0200 1. start emacs -q --no-site-file 2. set variable mouse-autoselect-window to t 3. split-window-vertically now I can drag the modeline only upwards but not downwards
author Kim F. Storm <storm@cua.dk>
date Sat, 13 Nov 2004 01:40:36 +0000
parents 218fcd9a7703
children 656195249167 ff0e824afa37
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1 @c -*-texinfo-*-
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2 @c This is part of the GNU Emacs Lisp Reference Manual.
45745
394a19fc134e defface `supports' predicate
Miles Bader <miles@gnu.org>
parents: 44281
diff changeset
3 @c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2000, 2001, 2002
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48948
diff changeset
4 @c Free Software Foundation, Inc.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
5 @c See the file elisp.texi for copying conditions.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
6 @setfilename ../info/display
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
7 @node Display, Calendar, Processes, Top
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
8 @chapter Emacs Display
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
9
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
10 This chapter describes a number of features related to the display
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
11 that Emacs presents to the user.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
12
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
13 @menu
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
14 * Refresh Screen:: Clearing the screen and redrawing everything on it.
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
15 * Forcing Redisplay:: Forcing redisplay.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
16 * Truncation:: Folding or wrapping long text lines.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
17 * The Echo Area:: Where messages are displayed.
52141
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
18 * Warnings:: Displaying warning messages for the user.
57389
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
19 * Progress:: Informing user about progress of a long operation.
12067
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
20 * Invisible Text:: Hiding part of the buffer text.
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
21 * Selective Display:: Hiding part of the buffer text (the old way).
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
22 * Overlay Arrow:: Display of an arrow to indicate position.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
23 * Temporary Displays:: Displays that go away automatically.
53467
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
24 * Overlays:: Use overlays to highlight parts of the buffer.
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
25 * Width:: How wide a character or string is on the screen.
53467
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
26 * Faces:: A face defines a graphics style for text characters:
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
27 font, colors, etc.
52141
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
28 * Fringes:: Controlling window fringes.
57221
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
29 * Fringe Bitmaps:: Displaying bitmaps in the window fringes.
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
30 * Customizing Bitmaps:: Specifying your own bitmaps to use in the fringes.
52483
3bbb565fa7ac (Fontsets): Add char-displayable-p.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
31 * Scroll Bars:: Controlling vertical scroll bars.
57202
ce88ee86e383 *** empty log message ***
Luc Teirlinck <teirllm@auburn.edu>
parents: 57201
diff changeset
32 * Pointer Shape:: Controlling the mouse pointer shape.
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
33 * Display Property:: Enabling special display features.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
34 * Images:: Displaying images in Emacs buffers.
53467
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
35 * Buttons:: Adding clickable buttons to Emacs buffers.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
36 * Blinking:: How Emacs shows the matching open parenthesis.
53467
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
37 * Inverse Video:: Specifying how the screen looks.
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
38 * Usual Display:: The usual conventions for displaying nonprinting chars.
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
39 * Display Tables:: How to specify other conventions.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
40 * Beeping:: Audible signal to the user.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
41 * Window Systems:: Which window system is being used.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
42 @end menu
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
43
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
44 @node Refresh Screen
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
45 @section Refreshing the Screen
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
46
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
47 The function @code{redraw-frame} redisplays the entire contents of a
22252
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
48 given frame (@pxref{Frames}).
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
49
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
50 @c Emacs 19 feature
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
51 @defun redraw-frame frame
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
52 This function clears and redisplays frame @var{frame}.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
53 @end defun
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
54
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
55 Even more powerful is @code{redraw-display}:
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
56
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
57 @deffn Command redraw-display
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
58 This function clears and redisplays all visible frames.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
59 @end deffn
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
60
53422
1246d68686ac (Refresh Screen): Add force-window-update.
Richard M. Stallman <rms@gnu.org>
parents: 53308
diff changeset
61 This function forces certain windows to be redisplayed
1246d68686ac (Refresh Screen): Add force-window-update.
Richard M. Stallman <rms@gnu.org>
parents: 53308
diff changeset
62 but does not clear them.
1246d68686ac (Refresh Screen): Add force-window-update.
Richard M. Stallman <rms@gnu.org>
parents: 53308
diff changeset
63
1246d68686ac (Refresh Screen): Add force-window-update.
Richard M. Stallman <rms@gnu.org>
parents: 53308
diff changeset
64 @defun force-window-update object
1246d68686ac (Refresh Screen): Add force-window-update.
Richard M. Stallman <rms@gnu.org>
parents: 53308
diff changeset
65 This function forces redisplay of some or all windows. If
1246d68686ac (Refresh Screen): Add force-window-update.
Richard M. Stallman <rms@gnu.org>
parents: 53308
diff changeset
66 @var{object} is a window, it forces redisplay of that window. If
1246d68686ac (Refresh Screen): Add force-window-update.
Richard M. Stallman <rms@gnu.org>
parents: 53308
diff changeset
67 @var{object} is a buffer or buffer name, it forces redisplay of all
1246d68686ac (Refresh Screen): Add force-window-update.
Richard M. Stallman <rms@gnu.org>
parents: 53308
diff changeset
68 windows displaying that buffer. If @var{object} is @code{nil}, it
1246d68686ac (Refresh Screen): Add force-window-update.
Richard M. Stallman <rms@gnu.org>
parents: 53308
diff changeset
69 forces redisplay of all windows.
1246d68686ac (Refresh Screen): Add force-window-update.
Richard M. Stallman <rms@gnu.org>
parents: 53308
diff changeset
70 @end defun
1246d68686ac (Refresh Screen): Add force-window-update.
Richard M. Stallman <rms@gnu.org>
parents: 53308
diff changeset
71
12098
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 12067
diff changeset
72 Processing user input takes absolute priority over redisplay. If you
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 12067
diff changeset
73 call these functions when input is available, they do nothing
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 12067
diff changeset
74 immediately, but a full redisplay does happen eventually---after all the
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 12067
diff changeset
75 input has been processed.
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 12067
diff changeset
76
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
77 Normally, suspending and resuming Emacs also refreshes the screen.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
78 Some terminal emulators record separate contents for display-oriented
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
79 programs such as Emacs and for ordinary sequential display. If you are
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
80 using such a terminal, you might want to inhibit the redisplay on
9009
7cdfcd5e71ff entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 8925
diff changeset
81 resumption.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
82
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
83 @defvar no-redraw-on-reenter
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
84 @cindex suspend (cf. @code{no-redraw-on-reenter})
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
85 @cindex resume (cf. @code{no-redraw-on-reenter})
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
86 This variable controls whether Emacs redraws the entire screen after it
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
87 has been suspended and resumed. Non-@code{nil} means there is no need
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
88 to redraw, @code{nil} means redrawing is needed. The default is @code{nil}.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
89 @end defvar
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
90
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
91 @node Forcing Redisplay
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
92 @section Forcing Redisplay
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
93 @cindex forcing redisplay
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
94
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
95 Emacs redisplay normally stops if input arrives, and does not happen
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
96 at all if input is available before it starts. Most of the time, this
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
97 is exactly what you want. However, you can prevent preemption by
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
98 binding @code{redisplay-dont-pause} to a non-@code{nil} value.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
99
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
100 @tindex redisplay-dont-pause
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
101 @defvar redisplay-dont-pause
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
102 If this variable is non-@code{nil}, pending input does not
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
103 prevent or halt redisplay; redisplay occurs, and finishes,
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
104 regardless of whether input is available. This feature is available
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
105 as of Emacs 21.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
106 @end defvar
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
107
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
108 You can request a display update, but only if no input is pending,
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
109 with @code{(sit-for 0)}. To force a display update even when input is
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
110 pending, do this:
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
111
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
112 @example
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
113 (let ((redisplay-dont-pause t))
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
114 (sit-for 0))
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
115 @end example
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
116
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
117 @node Truncation
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
118 @section Truncation
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
119 @cindex line wrapping
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
120 @cindex continuation lines
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
121 @cindex @samp{$} in display
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
122 @cindex @samp{\} in display
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
123
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
124 When a line of text extends beyond the right edge of a window, the
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
125 line can either be continued on the next screen line, or truncated to
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
126 one screen line. The additional screen lines used to display a long
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
127 text line are called @dfn{continuation} lines. Normally, a @samp{$} in
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
128 the rightmost column of the window indicates truncation; a @samp{\} on
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
129 the rightmost column indicates a line that ``wraps'' onto the next line,
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
130 which is also called @dfn{continuing} the line. (The display table can
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
131 specify alternative indicators; see @ref{Display Tables}.)
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
132
42905
09cd352a779e (Truncation, Overlay Arrow, Usual Display): Add index entries for fringe
Eli Zaretskii <eliz@gnu.org>
parents: 42888
diff changeset
133 On a windowed display, the @samp{$} and @samp{\} indicators are
52141
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
134 replaced with graphics bitmaps displayed in the window fringes
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
135 (@pxref{Fringes}).
42905
09cd352a779e (Truncation, Overlay Arrow, Usual Display): Add index entries for fringe
Eli Zaretskii <eliz@gnu.org>
parents: 42888
diff changeset
136
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
137 Note that continuation is different from filling; continuation happens
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
138 on the screen only, not in the buffer contents, and it breaks a line
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
139 precisely at the right margin, not at a word boundary. @xref{Filling}.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
140
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
141 @defopt truncate-lines
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
142 This buffer-local variable controls how Emacs displays lines that extend
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
143 beyond the right edge of the window. The default is @code{nil}, which
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
144 specifies continuation. If the value is non-@code{nil}, then these
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
145 lines are truncated.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
146
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
147 If the variable @code{truncate-partial-width-windows} is non-@code{nil},
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
148 then truncation is always used for side-by-side windows (within one
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
149 frame) regardless of the value of @code{truncate-lines}.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
150 @end defopt
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
151
12098
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 12067
diff changeset
152 @defopt default-truncate-lines
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
153 This variable is the default value for @code{truncate-lines}, for
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
154 buffers that do not have buffer-local values for it.
12098
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 12067
diff changeset
155 @end defopt
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
156
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
157 @defopt truncate-partial-width-windows
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
158 This variable controls display of lines that extend beyond the right
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
159 edge of the window, in side-by-side windows (@pxref{Splitting Windows}).
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
160 If it is non-@code{nil}, these lines are truncated; otherwise,
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
161 @code{truncate-lines} says what to do with them.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
162 @end defopt
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
163
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
164 When horizontal scrolling (@pxref{Horizontal Scrolling}) is in use in
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
165 a window, that forces truncation.
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
166
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
167 You can override the glyphs that indicate continuation or truncation
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
168 using the display table; see @ref{Display Tables}.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
169
22252
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
170 If your buffer contains @emph{very} long lines, and you use
12067
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
171 continuation to display them, just thinking about them can make Emacs
12098
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 12067
diff changeset
172 redisplay slow. The column computation and indentation functions also
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 12067
diff changeset
173 become slow. Then you might find it advisable to set
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 12067
diff changeset
174 @code{cache-long-line-scans} to @code{t}.
12067
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
175
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
176 @defvar cache-long-line-scans
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
177 If this variable is non-@code{nil}, various indentation and motion
12098
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 12067
diff changeset
178 functions, and Emacs redisplay, cache the results of scanning the
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 12067
diff changeset
179 buffer, and consult the cache to avoid rescanning regions of the buffer
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 12067
diff changeset
180 unless they are modified.
12067
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
181
12098
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 12067
diff changeset
182 Turning on the cache slows down processing of short lines somewhat.
12067
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
183
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
184 This variable is automatically buffer-local in every buffer.
12067
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
185 @end defvar
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
186
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
187 @node The Echo Area
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
188 @section The Echo Area
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
189 @cindex error display
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
190 @cindex echo area
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
191
12067
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
192 The @dfn{echo area} is used for displaying messages made with the
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
193 @code{message} primitive, and for echoing keystrokes. It is not the
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
194 same as the minibuffer, despite the fact that the minibuffer appears
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
195 (when active) in the same place on the screen as the echo area. The
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
196 @cite{GNU Emacs Manual} specifies the rules for resolving conflicts
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
197 between the echo area and the minibuffer for use of that screen space
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
198 (@pxref{Minibuffer,, The Minibuffer, emacs, The GNU Emacs Manual}).
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
199 Error messages appear in the echo area; see @ref{Errors}.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
200
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
201 You can write output in the echo area by using the Lisp printing
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
202 functions with @code{t} as the stream (@pxref{Output Functions}), or as
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
203 follows:
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
204
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
205 @defun message string &rest arguments
39205
cb857398a0e0 (The Echo Area) <message>: Document message-truncate-lines.
Eli Zaretskii <eliz@gnu.org>
parents: 39032
diff changeset
206 This function displays a message in the echo area. The
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
207 argument @var{string} is similar to a C language @code{printf} control
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
208 string. See @code{format} in @ref{String Conversion}, for the details
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
209 on the conversion specifications. @code{message} returns the
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
210 constructed string.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
211
7735
7db892210924 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7086
diff changeset
212 In batch mode, @code{message} prints the message text on the standard
7db892210924 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7086
diff changeset
213 error stream, followed by a newline.
7db892210924 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7086
diff changeset
214
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
215 If @var{string}, or strings among the @var{arguments}, have @code{face}
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
216 text properties, these affect the way the message is displayed.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
217
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
218 @c Emacs 19 feature
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
219 If @var{string} is @code{nil}, @code{message} clears the echo area; if
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
220 the echo area has been expanded automatically, this brings it back to
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
221 its normal size. If the minibuffer is active, this brings the
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
222 minibuffer contents back onto the screen immediately.
7735
7db892210924 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7086
diff changeset
223
39205
cb857398a0e0 (The Echo Area) <message>: Document message-truncate-lines.
Eli Zaretskii <eliz@gnu.org>
parents: 39032
diff changeset
224 @vindex message-truncate-lines
39221
68b26e98aef6 Clarify recent changes.
Richard M. Stallman <rms@gnu.org>
parents: 39217
diff changeset
225 Normally, displaying a long message resizes the echo area to display
68b26e98aef6 Clarify recent changes.
Richard M. Stallman <rms@gnu.org>
parents: 39217
diff changeset
226 the entire message. But if the variable @code{message-truncate-lines}
68b26e98aef6 Clarify recent changes.
Richard M. Stallman <rms@gnu.org>
parents: 39217
diff changeset
227 is non-@code{nil}, the echo area does not resize, and the message is
68b26e98aef6 Clarify recent changes.
Richard M. Stallman <rms@gnu.org>
parents: 39217
diff changeset
228 truncated to fit it, as in Emacs 20 and before.
39205
cb857398a0e0 (The Echo Area) <message>: Document message-truncate-lines.
Eli Zaretskii <eliz@gnu.org>
parents: 39032
diff changeset
229
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
230 @example
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
231 @group
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
232 (message "Minibuffer depth is %d."
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
233 (minibuffer-depth))
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
234 @print{} Minibuffer depth is 0.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
235 @result{} "Minibuffer depth is 0."
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
236 @end group
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
237
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
238 @group
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
239 ---------- Echo Area ----------
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
240 Minibuffer depth is 0.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
241 ---------- Echo Area ----------
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
242 @end group
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
243 @end example
32261
c354d0540694 Document `display-message-or-buffer'.
Miles Bader <miles@gnu.org>
parents: 32089
diff changeset
244
c354d0540694 Document `display-message-or-buffer'.
Miles Bader <miles@gnu.org>
parents: 32089
diff changeset
245 To automatically display a message in the echo area or in a pop-buffer,
c354d0540694 Document `display-message-or-buffer'.
Miles Bader <miles@gnu.org>
parents: 32089
diff changeset
246 depending on its size, use @code{display-message-or-buffer}.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
247 @end defun
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
248
24951
7451b1458af1 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22843
diff changeset
249 @tindex with-temp-message
7451b1458af1 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22843
diff changeset
250 @defmac with-temp-message message &rest body
7451b1458af1 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22843
diff changeset
251 This construct displays a message in the echo area temporarily, during
7451b1458af1 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22843
diff changeset
252 the execution of @var{body}. It displays @var{message}, executes
7451b1458af1 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22843
diff changeset
253 @var{body}, then returns the value of the last body form while restoring
7451b1458af1 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22843
diff changeset
254 the previous echo area contents.
7451b1458af1 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22843
diff changeset
255 @end defmac
7451b1458af1 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22843
diff changeset
256
22843
63f6e25f0cbd *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22267
diff changeset
257 @defun message-or-box string &rest arguments
63f6e25f0cbd *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22267
diff changeset
258 This function displays a message like @code{message}, but may display it
63f6e25f0cbd *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22267
diff changeset
259 in a dialog box instead of the echo area. If this function is called in
63f6e25f0cbd *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22267
diff changeset
260 a command that was invoked using the mouse---more precisely, if
63f6e25f0cbd *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22267
diff changeset
261 @code{last-nonmenu-event} (@pxref{Command Loop Info}) is either
63f6e25f0cbd *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22267
diff changeset
262 @code{nil} or a list---then it uses a dialog box or pop-up menu to
63f6e25f0cbd *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22267
diff changeset
263 display the message. Otherwise, it uses the echo area. (This is the
63f6e25f0cbd *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22267
diff changeset
264 same criterion that @code{y-or-n-p} uses to make a similar decision; see
63f6e25f0cbd *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22267
diff changeset
265 @ref{Yes-or-No Queries}.)
63f6e25f0cbd *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22267
diff changeset
266
63f6e25f0cbd *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22267
diff changeset
267 You can force use of the mouse or of the echo area by binding
63f6e25f0cbd *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22267
diff changeset
268 @code{last-nonmenu-event} to a suitable value around the call.
63f6e25f0cbd *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22267
diff changeset
269 @end defun
63f6e25f0cbd *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22267
diff changeset
270
63f6e25f0cbd *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22267
diff changeset
271 @defun message-box string &rest arguments
63f6e25f0cbd *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22267
diff changeset
272 This function displays a message like @code{message}, but uses a dialog
63f6e25f0cbd *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22267
diff changeset
273 box (or a pop-up menu) whenever that is possible. If it is impossible
63f6e25f0cbd *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22267
diff changeset
274 to use a dialog box or pop-up menu, because the terminal does not
63f6e25f0cbd *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22267
diff changeset
275 support them, then @code{message-box} uses the echo area, like
63f6e25f0cbd *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22267
diff changeset
276 @code{message}.
63f6e25f0cbd *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22267
diff changeset
277 @end defun
63f6e25f0cbd *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22267
diff changeset
278
32261
c354d0540694 Document `display-message-or-buffer'.
Miles Bader <miles@gnu.org>
parents: 32089
diff changeset
279 @defun display-message-or-buffer message &optional buffer-name not-this-window frame
32840
07d490290ba8 *** empty log message ***
Dave Love <fx@gnu.org>
parents: 32802
diff changeset
280 @tindex display-message-or-buffer
32261
c354d0540694 Document `display-message-or-buffer'.
Miles Bader <miles@gnu.org>
parents: 32089
diff changeset
281 This function displays the message @var{message}, which may be either a
c354d0540694 Document `display-message-or-buffer'.
Miles Bader <miles@gnu.org>
parents: 32089
diff changeset
282 string or a buffer. If it is shorter than the maximum height of the
c354d0540694 Document `display-message-or-buffer'.
Miles Bader <miles@gnu.org>
parents: 32089
diff changeset
283 echo area, as defined by @code{max-mini-window-height}, it is displayed
c354d0540694 Document `display-message-or-buffer'.
Miles Bader <miles@gnu.org>
parents: 32089
diff changeset
284 in the echo area, using @code{message}. Otherwise,
c354d0540694 Document `display-message-or-buffer'.
Miles Bader <miles@gnu.org>
parents: 32089
diff changeset
285 @code{display-buffer} is used to show it in a pop-up buffer.
c354d0540694 Document `display-message-or-buffer'.
Miles Bader <miles@gnu.org>
parents: 32089
diff changeset
286
c354d0540694 Document `display-message-or-buffer'.
Miles Bader <miles@gnu.org>
parents: 32089
diff changeset
287 Returns either the string shown in the echo area, or when a pop-up
c354d0540694 Document `display-message-or-buffer'.
Miles Bader <miles@gnu.org>
parents: 32089
diff changeset
288 buffer is used, the window used to display it.
c354d0540694 Document `display-message-or-buffer'.
Miles Bader <miles@gnu.org>
parents: 32089
diff changeset
289
c354d0540694 Document `display-message-or-buffer'.
Miles Bader <miles@gnu.org>
parents: 32089
diff changeset
290 If @var{message} is a string, then the optional argument
c354d0540694 Document `display-message-or-buffer'.
Miles Bader <miles@gnu.org>
parents: 32089
diff changeset
291 @var{buffer-name} is the name of the buffer used to display it when a
c354d0540694 Document `display-message-or-buffer'.
Miles Bader <miles@gnu.org>
parents: 32089
diff changeset
292 pop-up buffer is used, defaulting to @samp{*Message*}. In the case
c354d0540694 Document `display-message-or-buffer'.
Miles Bader <miles@gnu.org>
parents: 32089
diff changeset
293 where @var{message} is a string and displayed in the echo area, it is
c354d0540694 Document `display-message-or-buffer'.
Miles Bader <miles@gnu.org>
parents: 32089
diff changeset
294 not specified whether the contents are inserted into the buffer anyway.
c354d0540694 Document `display-message-or-buffer'.
Miles Bader <miles@gnu.org>
parents: 32089
diff changeset
295
c354d0540694 Document `display-message-or-buffer'.
Miles Bader <miles@gnu.org>
parents: 32089
diff changeset
296 The optional arguments @var{not-this-window} and @var{frame} are as for
c354d0540694 Document `display-message-or-buffer'.
Miles Bader <miles@gnu.org>
parents: 32089
diff changeset
297 @code{display-buffer}, and only used if a buffer is displayed.
c354d0540694 Document `display-message-or-buffer'.
Miles Bader <miles@gnu.org>
parents: 32089
diff changeset
298 @end defun
c354d0540694 Document `display-message-or-buffer'.
Miles Bader <miles@gnu.org>
parents: 32089
diff changeset
299
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
300 @defun current-message
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
301 This function returns the message currently being displayed in the
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
302 echo area, or @code{nil} if there is none.
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
303 @end defun
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
304
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
305 @defvar cursor-in-echo-area
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
306 This variable controls where the cursor appears when a message is
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
307 displayed in the echo area. If it is non-@code{nil}, then the cursor
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
308 appears at the end of the message. Otherwise, the cursor appears at
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
309 point---not in the echo area at all.
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
310
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
311 The value is normally @code{nil}; Lisp programs bind it to @code{t}
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
312 for brief periods of time.
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
313 @end defvar
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
314
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
315 @defvar echo-area-clear-hook
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
316 This normal hook is run whenever the echo area is cleared---either by
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
317 @code{(message nil)} or for any other reason.
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
318 @end defvar
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
319
12067
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
320 Almost all the messages displayed in the echo area are also recorded
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
321 in the @samp{*Messages*} buffer.
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
322
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
323 @defopt message-log-max
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
324 This variable specifies how many lines to keep in the @samp{*Messages*}
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
325 buffer. The value @code{t} means there is no limit on how many lines to
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
326 keep. The value @code{nil} disables message logging entirely. Here's
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
327 how to display a message and prevent it from being logged:
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
328
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
329 @example
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
330 (let (message-log-max)
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
331 (message @dots{}))
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
332 @end example
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
333 @end defopt
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
334
12098
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 12067
diff changeset
335 @defvar echo-keystrokes
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 12067
diff changeset
336 This variable determines how much time should elapse before command
27971
b10a9716fb38 echo-keystrokes change.
Dave Love <fx@gnu.org>
parents: 27654
diff changeset
337 characters echo. Its value must be an integer or floating point number,
b10a9716fb38 echo-keystrokes change.
Dave Love <fx@gnu.org>
parents: 27654
diff changeset
338 which specifies the
12098
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 12067
diff changeset
339 number of seconds to wait before echoing. If the user types a prefix
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 12067
diff changeset
340 key (such as @kbd{C-x}) and then delays this many seconds before
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
341 continuing, the prefix key is echoed in the echo area. (Once echoing
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
342 begins in a key sequence, all subsequent characters in the same key
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
343 sequence are echoed immediately.)
12098
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 12067
diff changeset
344
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 12067
diff changeset
345 If the value is zero, then command input is not echoed.
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 12067
diff changeset
346 @end defvar
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 12067
diff changeset
347
52141
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
348 @node Warnings
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
349 @section Reporting Warnings
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
350 @cindex warnings
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
351
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
352 @dfn{Warnings} are a facility for a program to inform the user of a
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
353 possible problem, but continue running.
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
354
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
355 @menu
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
356 * Warning Basics:: Warnings concepts and functions to report them.
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
357 * Warning Variables:: Variables programs bind to customize their warnings.
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
358 * Warning Options:: Variables users set to control display of warnings.
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
359 @end menu
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
360
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
361 @node Warning Basics
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
362 @subsection Warning Basics
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
363 @cindex severity level
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
364
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
365 Every warning has a textual message, which explains the problem for
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
366 the user, and a @dfn{severity level} which is a symbol. Here are the
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
367 possible severity levels, in order of decreasing severity, and their
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
368 meanings:
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
369
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
370 @table @code
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
371 @item :emergency
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
372 A problem that will seriously impair Emacs operation soon
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
373 if you do not attend to it promptly.
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
374 @item :error
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
375 A report of data or circumstances that are inherently wrong.
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
376 @item :warning
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
377 A report of data or circumstances that are not inherently wrong, but
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
378 raise suspicion of a possible problem.
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
379 @item :debug
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
380 A report of information that may be useful if you are debugging.
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
381 @end table
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
382
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
383 When your program encounters invalid input data, it can either
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
384 signal a Lisp error by calling @code{error} or @code{signal} or report
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
385 a warning with severity @code{:error}. Signaling a Lisp error is the
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
386 easiest thing to do, but it means the program cannot continue
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
387 processing. If you want to take the trouble to implement a way to
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
388 continue processing despite the bad data, then reporting a warning of
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
389 severity @code{:error} is the right way to inform the user of the
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
390 problem. For instance, the Emacs Lisp byte compiler can report an
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
391 error that way and continue compiling other functions. (If the
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
392 program signals a Lisp error and then handles it with
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
393 @code{condition-case}, the user won't see the error message; it could
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
394 show the message to the user by reporting it as a warning.)
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
395
52156
198af82c7606 (Warning Basics): Fix typo.
John Paul Wallington <jpw@pobox.com>
parents: 52141
diff changeset
396 @cindex warning type
52141
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
397 Each warning has a @dfn{warning type} to classify it. The type is a
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
398 list of symbols. The first symbol should be the custom group that you
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
399 use for the program's user options. For example, byte compiler
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
400 warnings use the warning type @code{(bytecomp)}. You can also
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
401 subcategorize the warnings, if you wish, by using more symbols in the
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
402 list.
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
403
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
404 @defun display-warning type message &optional level buffer-name
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
405 This function reports a warning, using @var{message} as the message
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
406 and @var{type} as the warning type. @var{level} should be the
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
407 severity level, with @code{:warning} being the default.
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
408
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
409 @var{buffer-name}, if non-@code{nil}, specifies the name of the buffer
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
410 for logging the warning. By default, it is @samp{*Warnings*}.
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
411 @end defun
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
412
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
413 @defun lwarn type level message &rest args
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
414 This function reports a warning using the value of @code{(format
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
415 @var{message} @var{args}...)} as the message. In other respects it is
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
416 equivalent to @code{display-warning}.
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
417 @end defun
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
418
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
419 @defun warn message &rest args
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
420 This function reports a warning using the value of @code{(format
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
421 @var{message} @var{args}...)} as the message, @code{(emacs)} as the
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
422 type, and @code{:warning} as the severity level. It exists for
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
423 compatibility only; we recommend not using it, because you should
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
424 specify a specific warning type.
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
425 @end defun
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
426
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
427 @node Warning Variables
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
428 @subsection Warning Variables
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
429
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
430 Programs can customize how their warnings appear by binding
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
431 the variables described in this section.
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
432
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
433 @defvar warning-levels
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
434 This list defines the meaning and severity order of the warning
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
435 severity levels. Each element defines one severity level,
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
436 and they are arranged in order of decreasing severity.
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
437
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
438 Each element has the form @code{(@var{level} @var{string}
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
439 @var{function})}, where @var{level} is the severity level it defines.
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
440 @var{string} specifies the textual description of this level.
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
441 @var{string} should use @samp{%s} to specify where to put the warning
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
442 type information, or it can omit the @samp{%s} so as not to include
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
443 that information.
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
444
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
445 The optional @var{function}, if non-@code{nil}, is a function to call
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
446 with no arguments, to get the user's attention.
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
447
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
448 Normally you should not change the value of this variable.
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
449 @end defvar
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
450
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
451 @defvar warning-prefix-function
54023
3a7432ab26ae Minor fixes.
Richard M. Stallman <rms@gnu.org>
parents: 53929
diff changeset
452 If non-@code{nil}, the value is a function to generate prefix text for
52141
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
453 warnings. Programs can bind the variable to a suitable function.
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
454 @code{display-warning} calls this function with the warnings buffer
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
455 current, and the function can insert text in it. That text becomes
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
456 the beginning of the warning message.
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
457
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
458 The function is called with two arguments, the severity level and its
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
459 entry in @code{warning-levels}. It should return a list to use as the
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
460 entry (this value need not be an actual member of
54023
3a7432ab26ae Minor fixes.
Richard M. Stallman <rms@gnu.org>
parents: 53929
diff changeset
461 @code{warning-levels}). By constructing this value, the function can
52141
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
462 change the severity of the warning, or specify different handling for
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
463 a given severity level.
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
464
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
465 If the variable's value is @code{nil} then there is no function
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
466 to call.
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
467 @end defvar
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
468
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
469 @defvar warning-series
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
470 Programs can bind this variable to @code{t} to say that the next
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
471 warning should begin a series. When several warnings form a series,
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
472 that means to leave point on the first warning of the series, rather
54023
3a7432ab26ae Minor fixes.
Richard M. Stallman <rms@gnu.org>
parents: 53929
diff changeset
473 than keep moving it for each warning so that it appears on the last one.
52141
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
474 The series ends when the local binding is unbound and
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
475 @code{warning-series} becomes @code{nil} again.
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
476
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
477 The value can also be a symbol with a function definition. That is
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
478 equivalent to @code{t}, except that the next warning will also call
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
479 the function with no arguments with the warnings buffer current. The
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
480 function can insert text which will serve as a header for the series
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
481 of warnings.
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
482
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
483 Once a series has begun, the value is a marker which points to the
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
484 buffer position in the warnings buffer of the start of the series.
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
485
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
486 The variable's normal value is @code{nil}, which means to handle
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
487 each warning separately.
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
488 @end defvar
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
489
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
490 @defvar warning-fill-prefix
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
491 When this variable is non-@code{nil}, it specifies a fill prefix to
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
492 use for filling each warning's text.
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
493 @end defvar
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
494
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
495 @defvar warning-type-format
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
496 This variable specifies the format for displaying the warning type
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
497 in the warning message. The result of formatting the type this way
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
498 gets included in the message under the control of the string in the
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
499 entry in @code{warning-levels}. The default value is @code{" (%s)"}.
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
500 If you bind it to @code{""} then the warning type won't appear at
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
501 all.
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
502 @end defvar
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
503
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
504 @node Warning Options
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
505 @subsection Warning Options
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
506
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
507 These variables are used by users to control what happens
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
508 when a Lisp program reports a warning.
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
509
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
510 @defopt warning-minimum-level
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
511 This user option specifies the minimum severity level that should be
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
512 shown immediately to the user. The default is @code{:warning}, which
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
513 means to immediately display all warnings except @code{:debug}
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
514 warnings.
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
515 @end defopt
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
516
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
517 @defopt warning-minimum-log-level
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
518 This user option specifies the minimum severity level that should be
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
519 logged in the warnings buffer. The default is @code{:warning}, which
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
520 means to log all warnings except @code{:debug} warnings.
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
521 @end defopt
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
522
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
523 @defopt warning-suppress-types
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
524 This list specifies which warning types should not be displayed
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
525 immediately for the user. Each element of the list should be a list
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
526 of symbols. If its elements match the first elements in a warning
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
527 type, then that warning is not displayed immediately.
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
528 @end defopt
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
529
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
530 @defopt warning-suppress-log-types
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
531 This list specifies which warning types should not be logged in the
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
532 warnings buffer. Each element of the list should be a list of
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
533 symbols. If it matches the first few elements in a warning type, then
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
534 that warning is not logged.
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
535 @end defopt
53422
1246d68686ac (Refresh Screen): Add force-window-update.
Richard M. Stallman <rms@gnu.org>
parents: 53308
diff changeset
536
57389
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
537 @node Progress
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
538 @section Reporting Operation Progress
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
539 @cindex progress reporting
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
540
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
541 When an operation can take a while to finish, you should inform the
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
542 user about the progress it makes. This way the user can estimate
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
543 remaining time and clearly see that Emacs is busy working, not hung.
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
544
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
545 Functions listed in this section provide simple and efficient way of
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
546 reporting operation progress. Here is a working example that does
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
547 nothing useful:
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
548
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
549 @example
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
550 (let ((progress-reporter
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
551 (make-progress-reporter "Collecting some mana for Emacs..."
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
552 0 500)))
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
553 (dotimes (k 500)
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
554 (sit-for 0.01)
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
555 (progress-reporter-update progress-reporter k))
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
556 (progress-reporter-done progress-reporter))
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
557 @end example
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
558
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
559 @defun make-progress-reporter message min-value max-value &optional current-value min-change min-time
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
560 This function creates a progress reporter---the object you will use as
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
561 an argument for all other functions listed here. The idea is to
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
562 precompute as much data as possible to make progress reporting very
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
563 fast.
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
564
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
565 The @var{message} will be displayed in the echo area, followed by
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
566 progress percentage. @var{message} is treated as a simple string. If
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
567 you need it to depend on a filename, for instance, use @code{format}
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
568 before calling this function.
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
569
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
570 @var{min-value} and @var{max-value} arguments stand for starting and
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
571 final states of your operation. For instance, if you scan a buffer,
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
572 they should be the results of @code{point-min} and @code{point-max}
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
573 correspondingly. It is required that @var{max-value} is greater than
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
574 @var{min-value}. If you create progress reporter when some part of
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
575 the operation has already been completed, then specify
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
576 @var{current-value} argument. But normally you should omit it or set
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
577 it to @code{nil}---it will default to @var{min-value} then.
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
578
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
579 Remaining arguments control the rate of echo area updates. Progress
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
580 reporter will wait for at least @var{min-change} more percents of the
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
581 operation to be completed before printing next message.
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
582 @var{min-time} specifies the minimum time in seconds to pass between
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
583 successive prints. It can be fractional. Depending on Emacs and
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
584 system capabilities, progress reporter may or may not respect this
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
585 last argument or do it with varying precision. Default value for
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
586 @var{min-change} is 1 (one percent), for @var{min-time}---0.2
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
587 (seconds.)
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
588
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
589 This function calls @code{progress-reporter-update}, so the first
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
590 message is printed immediately.
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
591 @end defun
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
592
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
593 @defun progress-reporter-update reporter value
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
594 This function does the main work of reporting progress of your
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
595 operation. It print the message of @var{reporter} followed by
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
596 progress percentage determined by @var{value}. If percentage is zero,
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
597 then it is not printed at all.
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
598
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
599 @var{reporter} must be the result of a call to
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
600 @code{make-progress-reporter}. @var{value} specifies the current
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
601 state of your operation and must be between @var{min-value} and
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
602 @var{max-value} (inclusive) as passed to
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
603 @code{make-progress-reporter}. For instance, if you scan a buffer,
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
604 then @var{value} should be the result of a call to @code{point}.
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
605
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
606 This function respects @var{min-change} and @var{min-time} as passed
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
607 to @code{make-progress-reporter} and so does not output new messages
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
608 on every invocation. It is thus very fast and normally you should not
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
609 try to reduce the number of calls to it: resulting overhead will most
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
610 likely negate your effort.
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
611 @end defun
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
612
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
613 @defun progress-reporter-force-update reporter value &optional new-message
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
614 This function is similar to @code{progress-reporter-update} except
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
615 that it prints a message in the echo area unconditionally.
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
616
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
617 The first two arguments have the same meaning as for
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
618 @code{progress-reporter-update}. Optional @var{new-message} allows
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
619 you to change the message of the @var{reporter}. Since this functions
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
620 always updates the echo area, such a change will be immediately
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
621 presented to the user.
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
622 @end defun
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
623
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
624 @defun progress-reporter-done reporter
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
625 This function should be called when the operation is finished. It
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
626 prints the message of @var{reporter} followed by word ``done'' in the
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
627 echo area.
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
628
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
629 You should always call this function and not hope for
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
630 @code{progress-reporter-update} to print ``100%.'' Firstly, it may
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
631 never print it, there are many good reasons for this not to happen.
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
632 Secondly, ``done'' is more explicit.
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
633 @end defun
218fcd9a7703 (Progress): New node.
Eli Zaretskii <eliz@gnu.org>
parents: 57331
diff changeset
634
12067
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
635 @node Invisible Text
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
636 @section Invisible Text
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
637
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
638 @cindex invisible text
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
639 You can make characters @dfn{invisible}, so that they do not appear on
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
640 the screen, with the @code{invisible} property. This can be either a
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
641 text property (@pxref{Text Properties}) or a property of an overlay
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
642 (@pxref{Overlays}).
12067
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
643
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
644 In the simplest case, any non-@code{nil} @code{invisible} property makes
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
645 a character invisible. This is the default case---if you don't alter
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
646 the default value of @code{buffer-invisibility-spec}, this is how the
48948
4dfb36c387bf Explain about conventioal use of t as `invisible' property
Richard M. Stallman <rms@gnu.org>
parents: 48701
diff changeset
647 @code{invisible} property works. You should normally use @code{t}
4dfb36c387bf Explain about conventioal use of t as `invisible' property
Richard M. Stallman <rms@gnu.org>
parents: 48701
diff changeset
648 as the value of the @code{invisible} property if you don't plan
4dfb36c387bf Explain about conventioal use of t as `invisible' property
Richard M. Stallman <rms@gnu.org>
parents: 48701
diff changeset
649 to set @code{buffer-invisibility-spec} yourself.
12067
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
650
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
651 More generally, you can use the variable @code{buffer-invisibility-spec}
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
652 to control which values of the @code{invisible} property make text
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
653 invisible. This permits you to classify the text into different subsets
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
654 in advance, by giving them different @code{invisible} values, and
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
655 subsequently make various subsets visible or invisible by changing the
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
656 value of @code{buffer-invisibility-spec}.
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
657
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
658 Controlling visibility with @code{buffer-invisibility-spec} is
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
659 especially useful in a program to display the list of entries in a
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
660 database. It permits the implementation of convenient filtering
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
661 commands to view just a part of the entries in the database. Setting
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
662 this variable is very fast, much faster than scanning all the text in
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
663 the buffer looking for properties to change.
12067
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
664
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
665 @defvar buffer-invisibility-spec
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
666 This variable specifies which kinds of @code{invisible} properties
56233
e4e80ee3d6db (Invisible Text): Setting buffer-invisibility-spec makes it buffer-local.
Richard M. Stallman <rms@gnu.org>
parents: 56185
diff changeset
667 actually make a character invisible. Setting this variable makes it
e4e80ee3d6db (Invisible Text): Setting buffer-invisibility-spec makes it buffer-local.
Richard M. Stallman <rms@gnu.org>
parents: 56185
diff changeset
668 buffer-local.
12067
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
669
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
670 @table @asis
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
671 @item @code{t}
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
672 A character is invisible if its @code{invisible} property is
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
673 non-@code{nil}. This is the default.
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
674
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
675 @item a list
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
676 Each element of the list specifies a criterion for invisibility; if a
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
677 character's @code{invisible} property fits any one of these criteria,
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
678 the character is invisible. The list can have two kinds of elements:
12067
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
679
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
680 @table @code
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
681 @item @var{atom}
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
682 A character is invisible if its @code{invisible} property value
12067
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
683 is @var{atom} or if it is a list with @var{atom} as a member.
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
684
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
685 @item (@var{atom} . t)
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
686 A character is invisible if its @code{invisible} property value
12067
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
687 is @var{atom} or if it is a list with @var{atom} as a member.
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
688 Moreover, if this character is at the end of a line and is followed
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
689 by a visible newline, it displays an ellipsis.
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
690 @end table
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
691 @end table
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
692 @end defvar
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
693
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
694 Two functions are specifically provided for adding elements to
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
695 @code{buffer-invisibility-spec} and removing elements from it.
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
696
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
697 @defun add-to-invisibility-spec element
48948
4dfb36c387bf Explain about conventioal use of t as `invisible' property
Richard M. Stallman <rms@gnu.org>
parents: 48701
diff changeset
698 This function adds the element @var{element} to
4dfb36c387bf Explain about conventioal use of t as `invisible' property
Richard M. Stallman <rms@gnu.org>
parents: 48701
diff changeset
699 @code{buffer-invisibility-spec} (if it is not already present in that
4dfb36c387bf Explain about conventioal use of t as `invisible' property
Richard M. Stallman <rms@gnu.org>
parents: 48701
diff changeset
700 list). If @code{buffer-invisibility-spec} was @code{t}, it changes to
4dfb36c387bf Explain about conventioal use of t as `invisible' property
Richard M. Stallman <rms@gnu.org>
parents: 48701
diff changeset
701 a list, @code{(t)}, so that text whose @code{invisible} property
4dfb36c387bf Explain about conventioal use of t as `invisible' property
Richard M. Stallman <rms@gnu.org>
parents: 48701
diff changeset
702 is @code{t} remains invisible.
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
703 @end defun
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
704
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
705 @defun remove-from-invisibility-spec element
54023
3a7432ab26ae Minor fixes.
Richard M. Stallman <rms@gnu.org>
parents: 53929
diff changeset
706 This removes the element @var{element} from
48948
4dfb36c387bf Explain about conventioal use of t as `invisible' property
Richard M. Stallman <rms@gnu.org>
parents: 48701
diff changeset
707 @code{buffer-invisibility-spec}. This does nothing if @var{element}
4dfb36c387bf Explain about conventioal use of t as `invisible' property
Richard M. Stallman <rms@gnu.org>
parents: 48701
diff changeset
708 is not in the list.
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
709 @end defun
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
710
48948
4dfb36c387bf Explain about conventioal use of t as `invisible' property
Richard M. Stallman <rms@gnu.org>
parents: 48701
diff changeset
711 A convention for use of @code{buffer-invisibility-spec} is that a
4dfb36c387bf Explain about conventioal use of t as `invisible' property
Richard M. Stallman <rms@gnu.org>
parents: 48701
diff changeset
712 major mode should use the mode's own name as an element of
4dfb36c387bf Explain about conventioal use of t as `invisible' property
Richard M. Stallman <rms@gnu.org>
parents: 48701
diff changeset
713 @code{buffer-invisibility-spec} and as the value of the
4dfb36c387bf Explain about conventioal use of t as `invisible' property
Richard M. Stallman <rms@gnu.org>
parents: 48701
diff changeset
714 @code{invisible} property:
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
715
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
716 @example
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
717 ;; @r{If you want to display an ellipsis:}
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48948
diff changeset
718 (add-to-invisibility-spec '(my-symbol . t))
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
719 ;; @r{If you don't want ellipsis:}
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48948
diff changeset
720 (add-to-invisibility-spec 'my-symbol)
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
721
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
722 (overlay-put (make-overlay beginning end)
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
723 'invisible 'my-symbol)
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
724
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
725 ;; @r{When done with the overlays:}
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
726 (remove-from-invisibility-spec '(my-symbol . t))
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
727 ;; @r{Or respectively:}
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
728 (remove-from-invisibility-spec 'my-symbol)
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
729 @end example
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
730
15761
77d451c08a30 Document line-move-ignore-invisible.
Richard M. Stallman <rms@gnu.org>
parents: 15074
diff changeset
731 @vindex line-move-ignore-invisible
53422
1246d68686ac (Refresh Screen): Add force-window-update.
Richard M. Stallman <rms@gnu.org>
parents: 53308
diff changeset
732 Ordinarily, functions that operate on text or move point do not care
15761
77d451c08a30 Document line-move-ignore-invisible.
Richard M. Stallman <rms@gnu.org>
parents: 15074
diff changeset
733 whether the text is invisible. The user-level line motion commands
77d451c08a30 Document line-move-ignore-invisible.
Richard M. Stallman <rms@gnu.org>
parents: 15074
diff changeset
734 explicitly ignore invisible newlines if
77d451c08a30 Document line-move-ignore-invisible.
Richard M. Stallman <rms@gnu.org>
parents: 15074
diff changeset
735 @code{line-move-ignore-invisible} is non-@code{nil}, but only because
77d451c08a30 Document line-move-ignore-invisible.
Richard M. Stallman <rms@gnu.org>
parents: 15074
diff changeset
736 they are explicitly programmed to do so.
12098
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 12067
diff changeset
737
53422
1246d68686ac (Refresh Screen): Add force-window-update.
Richard M. Stallman <rms@gnu.org>
parents: 53308
diff changeset
738 However, if a command ends with point inside or immediately after
1246d68686ac (Refresh Screen): Add force-window-update.
Richard M. Stallman <rms@gnu.org>
parents: 53308
diff changeset
739 invisible text, the main editing loop moves point further forward or
1246d68686ac (Refresh Screen): Add force-window-update.
Richard M. Stallman <rms@gnu.org>
parents: 53308
diff changeset
740 further backward (in the same direction that the command already moved
1246d68686ac (Refresh Screen): Add force-window-update.
Richard M. Stallman <rms@gnu.org>
parents: 53308
diff changeset
741 it) until that condition is no longer true. Thus, if the command
1246d68686ac (Refresh Screen): Add force-window-update.
Richard M. Stallman <rms@gnu.org>
parents: 53308
diff changeset
742 moved point back into an invisible range, Emacs moves point back to
1246d68686ac (Refresh Screen): Add force-window-update.
Richard M. Stallman <rms@gnu.org>
parents: 53308
diff changeset
743 the beginning of that range, following the previous visible character.
1246d68686ac (Refresh Screen): Add force-window-update.
Richard M. Stallman <rms@gnu.org>
parents: 53308
diff changeset
744 If the command moved point forward into an invisible range, Emacs
1246d68686ac (Refresh Screen): Add force-window-update.
Richard M. Stallman <rms@gnu.org>
parents: 53308
diff changeset
745 moves point forward past the first visible character that follows the
1246d68686ac (Refresh Screen): Add force-window-update.
Richard M. Stallman <rms@gnu.org>
parents: 53308
diff changeset
746 invisible text.
1246d68686ac (Refresh Screen): Add force-window-update.
Richard M. Stallman <rms@gnu.org>
parents: 53308
diff changeset
747
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
748 Incremental search can make invisible overlays visible temporarily
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
749 and/or permanently when a match includes invisible text. To enable
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
750 this, the overlay should have a non-@code{nil}
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
751 @code{isearch-open-invisible} property. The property value should be a
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
752 function to be called with the overlay as an argument. This function
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
753 should make the overlay visible permanently; it is used when the match
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
754 overlaps the overlay on exit from the search.
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
755
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
756 During the search, such overlays are made temporarily visible by
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
757 temporarily modifying their invisible and intangible properties. If you
22267
dfac7398266b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22252
diff changeset
758 want this to be done differently for a certain overlay, give it an
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
759 @code{isearch-open-invisible-temporary} property which is a function.
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
760 The function is called with two arguments: the first is the overlay, and
26986
491102e8acc4 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 26698
diff changeset
761 the second is @code{nil} to make the overlay visible, or @code{t} to
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
762 make it invisible again.
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
763
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
764 @node Selective Display
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
765 @section Selective Display
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
766 @cindex selective display
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
767
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
768 @dfn{Selective display} refers to a pair of related features for
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
769 hiding certain lines on the screen.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
770
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
771 The first variant, explicit selective display, is designed for use in
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
772 a Lisp program: it controls which lines are hidden by altering the text.
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
773 The invisible text feature (@pxref{Invisible Text}) has partially
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
774 replaced this feature.
12067
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
775
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
776 In the second variant, the choice of lines to hide is made
12098
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 12067
diff changeset
777 automatically based on indentation. This variant is designed to be a
12067
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
778 user-level feature.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
779
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
780 The way you control explicit selective display is by replacing a
9009
7cdfcd5e71ff entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 8925
diff changeset
781 newline (control-j) with a carriage return (control-m). The text that
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
782 was formerly a line following that newline is now invisible. Strictly
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
783 speaking, it is temporarily no longer a line at all, since only newlines
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
784 can separate lines; it is now part of the previous line.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
785
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
786 Selective display does not directly affect editing commands. For
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
787 example, @kbd{C-f} (@code{forward-char}) moves point unhesitatingly into
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
788 invisible text. However, the replacement of newline characters with
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
789 carriage return characters affects some editing commands. For example,
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
790 @code{next-line} skips invisible lines, since it searches only for
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
791 newlines. Modes that use selective display can also define commands
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
792 that take account of the newlines, or that make parts of the text
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
793 visible or invisible.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
794
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
795 When you write a selectively displayed buffer into a file, all the
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
796 control-m's are output as newlines. This means that when you next read
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
797 in the file, it looks OK, with nothing invisible. The selective display
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
798 effect is seen only within Emacs.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
799
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
800 @defvar selective-display
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
801 This buffer-local variable enables selective display. This means that
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48948
diff changeset
802 lines, or portions of lines, may be made invisible.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
803
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
804 @itemize @bullet
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
805 @item
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
806 If the value of @code{selective-display} is @code{t}, then the character
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
807 control-m marks the start of invisible text; the control-m, and the rest
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
808 of the line following it, are not displayed. This is explicit selective
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
809 display.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
810
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
811 @item
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
812 If the value of @code{selective-display} is a positive integer, then
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
813 lines that start with more than that many columns of indentation are not
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
814 displayed.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
815 @end itemize
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
816
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
817 When some portion of a buffer is invisible, the vertical movement
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
818 commands operate as if that portion did not exist, allowing a single
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
819 @code{next-line} command to skip any number of invisible lines.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
820 However, character movement commands (such as @code{forward-char}) do
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
821 not skip the invisible portion, and it is possible (if tricky) to insert
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
822 or delete text in an invisible portion.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
823
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
824 In the examples below, we show the @emph{display appearance} of the
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
825 buffer @code{foo}, which changes with the value of
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
826 @code{selective-display}. The @emph{contents} of the buffer do not
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
827 change.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
828
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
829 @example
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
830 @group
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
831 (setq selective-display nil)
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
832 @result{} nil
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
833
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
834 ---------- Buffer: foo ----------
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
835 1 on this column
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
836 2on this column
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
837 3n this column
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
838 3n this column
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
839 2on this column
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
840 1 on this column
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
841 ---------- Buffer: foo ----------
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
842 @end group
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
843
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
844 @group
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
845 (setq selective-display 2)
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
846 @result{} 2
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
847
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
848 ---------- Buffer: foo ----------
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
849 1 on this column
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
850 2on this column
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
851 2on this column
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
852 1 on this column
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
853 ---------- Buffer: foo ----------
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
854 @end group
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
855 @end example
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
856 @end defvar
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
857
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
858 @defvar selective-display-ellipses
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
859 If this buffer-local variable is non-@code{nil}, then Emacs displays
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
860 @samp{@dots{}} at the end of a line that is followed by invisible text.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
861 This example is a continuation of the previous one.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
862
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
863 @example
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
864 @group
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
865 (setq selective-display-ellipses t)
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
866 @result{} t
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
867
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
868 ---------- Buffer: foo ----------
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
869 1 on this column
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
870 2on this column ...
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
871 2on this column
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
872 1 on this column
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
873 ---------- Buffer: foo ----------
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
874 @end group
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
875 @end example
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
876
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
877 You can use a display table to substitute other text for the ellipsis
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
878 (@samp{@dots{}}). @xref{Display Tables}.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
879 @end defvar
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
880
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
881 @node Overlay Arrow
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
882 @section The Overlay Arrow
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
883 @cindex overlay arrow
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
884
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
885 The @dfn{overlay arrow} is useful for directing the user's attention
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
886 to a particular line in a buffer. For example, in the modes used for
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
887 interface to debuggers, the overlay arrow indicates the line of code
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
888 about to be executed.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
889
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
890 @defvar overlay-arrow-string
9009
7cdfcd5e71ff entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 8925
diff changeset
891 This variable holds the string to display to call attention to a
7cdfcd5e71ff entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 8925
diff changeset
892 particular line, or @code{nil} if the arrow feature is not in use.
29471
215b57502518 *** empty log message ***
Dave Love <fx@gnu.org>
parents: 29151
diff changeset
893 On a graphical display the contents of the string are ignored; instead a
215b57502518 *** empty log message ***
Dave Love <fx@gnu.org>
parents: 29151
diff changeset
894 glyph is displayed in the fringe area to the left of the display area.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
895 @end defvar
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
896
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
897 @defvar overlay-arrow-position
9009
7cdfcd5e71ff entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 8925
diff changeset
898 This variable holds a marker that indicates where to display the overlay
29471
215b57502518 *** empty log message ***
Dave Love <fx@gnu.org>
parents: 29151
diff changeset
899 arrow. It should point at the beginning of a line. On a non-graphical
215b57502518 *** empty log message ***
Dave Love <fx@gnu.org>
parents: 29151
diff changeset
900 display the arrow text
9009
7cdfcd5e71ff entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 8925
diff changeset
901 appears at the beginning of that line, overlaying any text that would
7cdfcd5e71ff entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 8925
diff changeset
902 otherwise appear. Since the arrow is usually short, and the line
7cdfcd5e71ff entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 8925
diff changeset
903 usually begins with indentation, normally nothing significant is
7cdfcd5e71ff entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 8925
diff changeset
904 overwritten.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
905
9009
7cdfcd5e71ff entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 8925
diff changeset
906 The overlay string is displayed only in the buffer that this marker
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
907 points into. Thus, only one buffer can have an overlay arrow at any
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
908 given time.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
909 @c !!! overlay-arrow-position: but the overlay string may remain in the display
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
910 @c of some other buffer until an update is required. This should be fixed
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
911 @c now. Is it?
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
912 @end defvar
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
913
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
914 You can do a similar job by creating an overlay with a
12067
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
915 @code{before-string} property. @xref{Overlay Properties}.
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
916
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
917 @node Temporary Displays
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
918 @section Temporary Displays
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
919
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
920 Temporary displays are used by Lisp programs to put output into a
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
921 buffer and then present it to the user for perusal rather than for
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
922 editing. Many help commands use this feature.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
923
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
924 @defspec with-output-to-temp-buffer buffer-name forms@dots{}
24951
7451b1458af1 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22843
diff changeset
925 This function executes @var{forms} while arranging to insert any output
7451b1458af1 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22843
diff changeset
926 they print into the buffer named @var{buffer-name}, which is first
7451b1458af1 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22843
diff changeset
927 created if necessary, and put into Help mode. Finally, the buffer is
7451b1458af1 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22843
diff changeset
928 displayed in some window, but not selected.
7451b1458af1 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22843
diff changeset
929
52923
41c0ac1a4ed4 (Temporary Displays): Add xref to `Documentation Tips'.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52903
diff changeset
930 If the @var{forms} do not change the major mode in the output buffer,
41c0ac1a4ed4 (Temporary Displays): Add xref to `Documentation Tips'.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52903
diff changeset
931 so that it is still Help mode at the end of their execution, then
24951
7451b1458af1 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22843
diff changeset
932 @code{with-output-to-temp-buffer} makes this buffer read-only at the
52923
41c0ac1a4ed4 (Temporary Displays): Add xref to `Documentation Tips'.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52903
diff changeset
933 end, and also scans it for function and variable names to make them
53301
67874c814e45 *** empty log message ***
Luc Teirlinck <teirllm@auburn.edu>
parents: 52978
diff changeset
934 into clickable cross-references. @xref{Docstring hyperlinks, , Tips
67874c814e45 *** empty log message ***
Luc Teirlinck <teirllm@auburn.edu>
parents: 52978
diff changeset
935 for Documentation Strings}, in particular the item on hyperlinks in
67874c814e45 *** empty log message ***
Luc Teirlinck <teirllm@auburn.edu>
parents: 52978
diff changeset
936 documentation strings, for more details.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
937
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
938 The string @var{buffer-name} specifies the temporary buffer, which
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
939 need not already exist. The argument must be a string, not a buffer.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
940 The buffer is erased initially (with no questions asked), and it is
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
941 marked as unmodified after @code{with-output-to-temp-buffer} exits.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
942
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
943 @code{with-output-to-temp-buffer} binds @code{standard-output} to the
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
944 temporary buffer, then it evaluates the forms in @var{forms}. Output
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
945 using the Lisp output functions within @var{forms} goes by default to
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
946 that buffer (but screen display and messages in the echo area, although
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
947 they are ``output'' in the general sense of the word, are not affected).
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
948 @xref{Output Functions}.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
949
24951
7451b1458af1 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22843
diff changeset
950 Several hooks are available for customizing the behavior
7451b1458af1 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22843
diff changeset
951 of this construct; they are listed below.
7451b1458af1 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22843
diff changeset
952
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
953 The value of the last form in @var{forms} is returned.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
954
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
955 @example
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
956 @group
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
957 ---------- Buffer: foo ----------
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
958 This is the contents of foo.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
959 ---------- Buffer: foo ----------
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
960 @end group
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
961
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
962 @group
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
963 (with-output-to-temp-buffer "foo"
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
964 (print 20)
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
965 (print standard-output))
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
966 @result{} #<buffer foo>
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
967
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
968 ---------- Buffer: foo ----------
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
969 20
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
970
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
971 #<buffer foo>
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
972
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
973 ---------- Buffer: foo ----------
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
974 @end group
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
975 @end example
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
976 @end defspec
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
977
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
978 @defvar temp-buffer-show-function
9009
7cdfcd5e71ff entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 8925
diff changeset
979 If this variable is non-@code{nil}, @code{with-output-to-temp-buffer}
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
980 calls it as a function to do the job of displaying a help buffer. The
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
981 function gets one argument, which is the buffer it should display.
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
982
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
983 It is a good idea for this function to run @code{temp-buffer-show-hook}
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
984 just as @code{with-output-to-temp-buffer} normally would, inside of
24951
7451b1458af1 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22843
diff changeset
985 @code{save-selected-window} and with the chosen window and buffer
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
986 selected.
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
987 @end defvar
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
988
24951
7451b1458af1 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22843
diff changeset
989 @defvar temp-buffer-setup-hook
7451b1458af1 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22843
diff changeset
990 @tindex temp-buffer-setup-hook
7451b1458af1 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22843
diff changeset
991 This normal hook is run by @code{with-output-to-temp-buffer} before
42082
20c1f73d3db3 Minor clarification.
Richard M. Stallman <rms@gnu.org>
parents: 41058
diff changeset
992 evaluating @var{body}. When the hook runs, the temporary buffer is
20c1f73d3db3 Minor clarification.
Richard M. Stallman <rms@gnu.org>
parents: 41058
diff changeset
993 current. This hook is normally set up with a function to put the
20c1f73d3db3 Minor clarification.
Richard M. Stallman <rms@gnu.org>
parents: 41058
diff changeset
994 buffer in Help mode.
24951
7451b1458af1 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22843
diff changeset
995 @end defvar
7451b1458af1 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22843
diff changeset
996
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
997 @defvar temp-buffer-show-hook
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
998 This normal hook is run by @code{with-output-to-temp-buffer} after
42082
20c1f73d3db3 Minor clarification.
Richard M. Stallman <rms@gnu.org>
parents: 41058
diff changeset
999 displaying the temporary buffer. When the hook runs, the temporary buffer
20c1f73d3db3 Minor clarification.
Richard M. Stallman <rms@gnu.org>
parents: 41058
diff changeset
1000 is current, and the window it was displayed in is selected. This hook
20c1f73d3db3 Minor clarification.
Richard M. Stallman <rms@gnu.org>
parents: 41058
diff changeset
1001 is normally set up with a function to make the buffer read only, and
20c1f73d3db3 Minor clarification.
Richard M. Stallman <rms@gnu.org>
parents: 41058
diff changeset
1002 find function names and variable names in it, provided the major mode
20c1f73d3db3 Minor clarification.
Richard M. Stallman <rms@gnu.org>
parents: 41058
diff changeset
1003 is Help mode.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1004 @end defvar
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1005
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1006 @defun momentary-string-display string position &optional char message
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1007 This function momentarily displays @var{string} in the current buffer at
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1008 @var{position}. It has no effect on the undo list or on the buffer's
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1009 modification status.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1010
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1011 The momentary display remains until the next input event. If the next
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1012 input event is @var{char}, @code{momentary-string-display} ignores it
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1013 and returns. Otherwise, that event remains buffered for subsequent use
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1014 as input. Thus, typing @var{char} will simply remove the string from
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1015 the display, while typing (say) @kbd{C-f} will remove the string from
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1016 the display and later (presumably) move point forward. The argument
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1017 @var{char} is a space by default.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1018
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1019 The return value of @code{momentary-string-display} is not meaningful.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1020
12098
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 12067
diff changeset
1021 If the string @var{string} does not contain control characters, you can
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1022 do the same job in a more general way by creating (and then subsequently
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1023 deleting) an overlay with a @code{before-string} property.
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1024 @xref{Overlay Properties}.
12098
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 12067
diff changeset
1025
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1026 If @var{message} is non-@code{nil}, it is displayed in the echo area
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1027 while @var{string} is displayed in the buffer. If it is @code{nil}, a
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1028 default message says to type @var{char} to continue.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1029
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1030 In this example, point is initially located at the beginning of the
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1031 second line:
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1032
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1033 @example
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1034 @group
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1035 ---------- Buffer: foo ----------
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1036 This is the contents of foo.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1037 @point{}Second line.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1038 ---------- Buffer: foo ----------
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1039 @end group
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1040
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1041 @group
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1042 (momentary-string-display
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1043 "**** Important Message! ****"
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1044 (point) ?\r
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1045 "Type RET when done reading")
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1046 @result{} t
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1047 @end group
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1048
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1049 @group
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1050 ---------- Buffer: foo ----------
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1051 This is the contents of foo.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1052 **** Important Message! ****Second line.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1053 ---------- Buffer: foo ----------
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1054
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1055 ---------- Echo Area ----------
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1056 Type RET when done reading
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1057 ---------- Echo Area ----------
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1058 @end group
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1059 @end example
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1060 @end defun
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1061
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1062 @node Overlays
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1063 @section Overlays
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1064 @cindex overlays
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1065
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1066 You can use @dfn{overlays} to alter the appearance of a buffer's text on
12098
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 12067
diff changeset
1067 the screen, for the sake of presentation features. An overlay is an
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 12067
diff changeset
1068 object that belongs to a particular buffer, and has a specified
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 12067
diff changeset
1069 beginning and end. It also has properties that you can examine and set;
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 12067
diff changeset
1070 these affect the display of the text within the overlay.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1071
54023
3a7432ab26ae Minor fixes.
Richard M. Stallman <rms@gnu.org>
parents: 53929
diff changeset
1072 An overlays uses markers to record its beginning and end; thus,
3a7432ab26ae Minor fixes.
Richard M. Stallman <rms@gnu.org>
parents: 53929
diff changeset
1073 editing the text of the buffer adjusts the beginning and end of each
3a7432ab26ae Minor fixes.
Richard M. Stallman <rms@gnu.org>
parents: 53929
diff changeset
1074 overlay so that it stays with the text. When you create the overlay,
3a7432ab26ae Minor fixes.
Richard M. Stallman <rms@gnu.org>
parents: 53929
diff changeset
1075 you can specify whether text inserted at the beginning should be
3a7432ab26ae Minor fixes.
Richard M. Stallman <rms@gnu.org>
parents: 53929
diff changeset
1076 inside the overlay or outside, and likewise for the end of the overlay.
3a7432ab26ae Minor fixes.
Richard M. Stallman <rms@gnu.org>
parents: 53929
diff changeset
1077
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1078 @menu
53467
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
1079 * Overlay Properties:: How to read and set properties.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1080 What properties do to the screen display.
26698
73f718a9df4b (Overlays): Add menu entry for Finding Overlays.
Dave Love <fx@gnu.org>
parents: 26696
diff changeset
1081 * Managing Overlays:: Creating and moving overlays.
73f718a9df4b (Overlays): Add menu entry for Finding Overlays.
Dave Love <fx@gnu.org>
parents: 26696
diff changeset
1082 * Finding Overlays:: Searching for overlays.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1083 @end menu
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1084
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1085 @node Overlay Properties
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1086 @subsection Overlay Properties
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1087
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1088 Overlay properties are like text properties in that the properties that
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
1089 alter how a character is displayed can come from either source. But in
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
1090 most respects they are different. Text properties are considered a part
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
1091 of the text; overlays are specifically considered not to be part of the
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
1092 text. Thus, copying text between various buffers and strings preserves
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
1093 text properties, but does not try to preserve overlays. Changing a
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
1094 buffer's text properties marks the buffer as modified, while moving an
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
1095 overlay or changing its properties does not. Unlike text property
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
1096 changes, overlay changes are not recorded in the buffer's undo list.
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
1097 @xref{Text Properties}, for comparison.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1098
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1099 These functions are used for reading and writing the properties of an
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1100 overlay:
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1101
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1102 @defun overlay-get overlay prop
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1103 This function returns the value of property @var{prop} recorded in
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1104 @var{overlay}, if any. If @var{overlay} does not record any value for
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1105 that property, but it does have a @code{category} property which is a
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1106 symbol, that symbol's @var{prop} property is used. Otherwise, the value
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1107 is @code{nil}.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1108 @end defun
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1109
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1110 @defun overlay-put overlay prop value
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1111 This function sets the value of property @var{prop} recorded in
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1112 @var{overlay} to @var{value}. It returns @var{value}.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1113 @end defun
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1114
53422
1246d68686ac (Refresh Screen): Add force-window-update.
Richard M. Stallman <rms@gnu.org>
parents: 53308
diff changeset
1115 @defun overlay-properties overlay
1246d68686ac (Refresh Screen): Add force-window-update.
Richard M. Stallman <rms@gnu.org>
parents: 53308
diff changeset
1116 This returns a copy of the property list of @var{overlay}.
1246d68686ac (Refresh Screen): Add force-window-update.
Richard M. Stallman <rms@gnu.org>
parents: 53308
diff changeset
1117 @end defun
1246d68686ac (Refresh Screen): Add force-window-update.
Richard M. Stallman <rms@gnu.org>
parents: 53308
diff changeset
1118
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1119 See also the function @code{get-char-property} which checks both
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1120 overlay properties and text properties for a given character.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1121 @xref{Examining Properties}.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1122
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1123 Many overlay properties have special meanings; here is a table
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1124 of them:
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1125
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1126 @table @code
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1127 @item priority
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1128 @kindex priority @r{(overlay property)}
52380
7a80a66265e6 (Overlay Properties): Clarify how priorities affect use of the properties.
Richard M. Stallman <rms@gnu.org>
parents: 52156
diff changeset
1129 This property's value (which should be a nonnegative integer number)
7a80a66265e6 (Overlay Properties): Clarify how priorities affect use of the properties.
Richard M. Stallman <rms@gnu.org>
parents: 52156
diff changeset
1130 determines the priority of the overlay. The priority matters when two
7a80a66265e6 (Overlay Properties): Clarify how priorities affect use of the properties.
Richard M. Stallman <rms@gnu.org>
parents: 52156
diff changeset
1131 or more overlays cover the same character and both specify the same
7a80a66265e6 (Overlay Properties): Clarify how priorities affect use of the properties.
Richard M. Stallman <rms@gnu.org>
parents: 52156
diff changeset
1132 property; the one whose @code{priority} value is larger takes priority
7a80a66265e6 (Overlay Properties): Clarify how priorities affect use of the properties.
Richard M. Stallman <rms@gnu.org>
parents: 52156
diff changeset
1133 over the other. For the @code{face} property, the higher priority
7a80a66265e6 (Overlay Properties): Clarify how priorities affect use of the properties.
Richard M. Stallman <rms@gnu.org>
parents: 52156
diff changeset
1134 value does not completely replace the other; instead, its face
7a80a66265e6 (Overlay Properties): Clarify how priorities affect use of the properties.
Richard M. Stallman <rms@gnu.org>
parents: 52156
diff changeset
1135 attributes override the face attributes of the lower priority
7a80a66265e6 (Overlay Properties): Clarify how priorities affect use of the properties.
Richard M. Stallman <rms@gnu.org>
parents: 52156
diff changeset
1136 @code{face} property.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1137
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1138 Currently, all overlays take priority over text properties. Please
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1139 avoid using negative priority values, as we have not yet decided just
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1140 what they should mean.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1141
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1142 @item window
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1143 @kindex window @r{(overlay property)}
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1144 If the @code{window} property is non-@code{nil}, then the overlay
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1145 applies only on that window.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1146
12067
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
1147 @item category
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
1148 @kindex category @r{(overlay property)}
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
1149 If an overlay has a @code{category} property, we call it the
12098
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 12067
diff changeset
1150 @dfn{category} of the overlay. It should be a symbol. The properties
12067
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
1151 of the symbol serve as defaults for the properties of the overlay.
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
1152
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1153 @item face
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1154 @kindex face @r{(overlay property)}
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1155 This property controls the way text is displayed---for example, which
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1156 font and which colors. @xref{Faces}, for more information.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1157
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1158 In the simplest case, the value is a face name. It can also be a list;
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1159 then each element can be any of these possibilities:
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1160
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1161 @itemize @bullet
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1162 @item
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1163 A face name (a symbol or string).
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1164
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1165 @item
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1166 Starting in Emacs 21, a property list of face attributes. This has the
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1167 form (@var{keyword} @var{value} @dots{}), where each @var{keyword} is a
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1168 face attribute name and @var{value} is a meaningful value for that
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1169 attribute. With this feature, you do not need to create a face each
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1170 time you want to specify a particular attribute for certain text.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1171 @xref{Face Attributes}.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1172
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1173 @item
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1174 A cons cell of the form @code{(foreground-color . @var{color-name})} or
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1175 @code{(background-color . @var{color-name})}. These elements specify
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1176 just the foreground color or just the background color.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1177
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1178 @code{(foreground-color . @var{color-name})} is equivalent to
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1179 @code{(:foreground @var{color-name})}, and likewise for the background.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1180 @end itemize
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1181
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1182 @item mouse-face
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1183 @kindex mouse-face @r{(overlay property)}
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1184 This property is used instead of @code{face} when the mouse is within
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1185 the range of the overlay.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1186
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1187 @item display
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1188 @kindex display @r{(overlay property)}
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1189 This property activates various features that change the
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1190 way text is displayed. For example, it can make text appear taller
38278
9e543d761717 Fix several typos.
Gerd Moellmann <gerd@gnu.org>
parents: 37949
diff changeset
1191 or shorter, higher or lower, wider or narrower, or replaced with an image.
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1192 @xref{Display Property}.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1193
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1194 @item help-echo
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1195 @kindex help-echo @r{(text property)}
31373
a3fd71daf442 help-echo stuff, find-image, image-size.
Dave Love <fx@gnu.org>
parents: 29471
diff changeset
1196 If an overlay has a @code{help-echo} property, then when you move the
a3fd71daf442 help-echo stuff, find-image, image-size.
Dave Love <fx@gnu.org>
parents: 29471
diff changeset
1197 mouse onto the text in the overlay, Emacs displays a help string in the
a3fd71daf442 help-echo stuff, find-image, image-size.
Dave Love <fx@gnu.org>
parents: 29471
diff changeset
1198 echo area, or in the tooltip window. For details see @ref{Text
45750
73b33fa2ec78 Delete "new in Emacs 21" note.
Richard M. Stallman <rms@gnu.org>
parents: 45745
diff changeset
1199 help-echo}.
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1200
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1201 @item modification-hooks
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1202 @kindex modification-hooks @r{(overlay property)}
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1203 This property's value is a list of functions to be called if any
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1204 character within the overlay is changed or if text is inserted strictly
12067
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
1205 within the overlay.
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
1206
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
1207 The hook functions are called both before and after each change.
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
1208 If the functions save the information they receive, and compare notes
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
1209 between calls, they can determine exactly what change has been made
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
1210 in the buffer text.
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
1211
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
1212 When called before a change, each function receives four arguments: the
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
1213 overlay, @code{nil}, and the beginning and end of the text range to be
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6598
diff changeset
1214 modified.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1215
12067
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
1216 When called after a change, each function receives five arguments: the
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
1217 overlay, @code{t}, the beginning and end of the text range just
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
1218 modified, and the length of the pre-change text replaced by that range.
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
1219 (For an insertion, the pre-change length is zero; for a deletion, that
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
1220 length is the number of characters deleted, and the post-change
12098
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 12067
diff changeset
1221 beginning and end are equal.)
12067
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
1222
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1223 @item insert-in-front-hooks
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1224 @kindex insert-in-front-hooks @r{(overlay property)}
12067
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
1225 This property's value is a list of functions to be called before and
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
1226 after inserting text right at the beginning of the overlay. The calling
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
1227 conventions are the same as for the @code{modification-hooks} functions.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1228
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1229 @item insert-behind-hooks
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1230 @kindex insert-behind-hooks @r{(overlay property)}
12067
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
1231 This property's value is a list of functions to be called before and
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
1232 after inserting text right at the end of the overlay. The calling
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
1233 conventions are the same as for the @code{modification-hooks} functions.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1234
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1235 @item invisible
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1236 @kindex invisible @r{(overlay property)}
12067
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
1237 The @code{invisible} property can make the text in the overlay
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
1238 invisible, which means that it does not appear on the screen.
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
1239 @xref{Invisible Text}, for details.
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
1240
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
1241 @item intangible
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
1242 @kindex intangible @r{(overlay property)}
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
1243 The @code{intangible} property on an overlay works just like the
12098
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 12067
diff changeset
1244 @code{intangible} text property. @xref{Special Properties}, for details.
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1245
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1246 @item isearch-open-invisible
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
1247 This property tells incremental search how to make an invisible overlay
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
1248 visible, permanently, if the final match overlaps it. @xref{Invisible
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1249 Text}.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1250
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
1251 @item isearch-open-invisible-temporary
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
1252 This property tells incremental search how to make an invisible overlay
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
1253 visible, temporarily, during the search. @xref{Invisible Text}.
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
1254
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1255 @item before-string
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1256 @kindex before-string @r{(overlay property)}
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1257 This property's value is a string to add to the display at the beginning
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1258 of the overlay. The string does not appear in the buffer in any
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1259 sense---only on the screen.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1260
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1261 @item after-string
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1262 @kindex after-string @r{(overlay property)}
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1263 This property's value is a string to add to the display at the end of
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1264 the overlay. The string does not appear in the buffer in any
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1265 sense---only on the screen.
12067
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
1266
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
1267 @item evaporate
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
1268 @kindex evaporate @r{(overlay property)}
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
1269 If this property is non-@code{nil}, the overlay is deleted automatically
56451
b190e160aa91 (Overlay Properties): Adding `evaporate' prop deletes empty overlay immediately.
Richard M. Stallman <rms@gnu.org>
parents: 56437
diff changeset
1270 if it becomes empty (i.e., if its length becomes zero). If you give
b190e160aa91 (Overlay Properties): Adding `evaporate' prop deletes empty overlay immediately.
Richard M. Stallman <rms@gnu.org>
parents: 56437
diff changeset
1271 an empty overlay a non-@code{nil} @code{evaporate} property, that deletes
b190e160aa91 (Overlay Properties): Adding `evaporate' prop deletes empty overlay immediately.
Richard M. Stallman <rms@gnu.org>
parents: 56437
diff changeset
1272 it immediately.
16123
ec5f48fe0320 Mention local-value property on an overlay.
Richard M. Stallman <rms@gnu.org>
parents: 15761
diff changeset
1273
29102
ba9cfbfc601e *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 29076
diff changeset
1274 @item local-map
29076
c7c150b377c0 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 28792
diff changeset
1275 @cindex keymap of character (and overlays)
29102
ba9cfbfc601e *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 29076
diff changeset
1276 @kindex local-map @r{(overlay property)}
29076
c7c150b377c0 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 28792
diff changeset
1277 If this property is non-@code{nil}, it specifies a keymap for a portion
c7c150b377c0 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 28792
diff changeset
1278 of the text. The property's value replaces the buffer's local map, when
c7c150b377c0 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 28792
diff changeset
1279 the character after point is within the overlay. @xref{Active Keymaps}.
33996
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
1280
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
1281 @item keymap
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
1282 @kindex keymap @r{(overlay property)}
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
1283 The @code{keymap} property is similar to @code{local-map} but overrides the
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
1284 buffer's local map (and the map specified by the @code{local-map}
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
1285 property) rather than replacing it.
29076
c7c150b377c0 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 28792
diff changeset
1286 @end table
c7c150b377c0 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 28792
diff changeset
1287
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1288 @node Managing Overlays
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1289 @subsection Managing Overlays
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1290
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1291 This section describes the functions to create, delete and move
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1292 overlays, and to examine their contents.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1293
53422
1246d68686ac (Refresh Screen): Add force-window-update.
Richard M. Stallman <rms@gnu.org>
parents: 53308
diff changeset
1294 @defun overlayp object
1246d68686ac (Refresh Screen): Add force-window-update.
Richard M. Stallman <rms@gnu.org>
parents: 53308
diff changeset
1295 This function returns @code{t} if @var{object} is an overlay.
1246d68686ac (Refresh Screen): Add force-window-update.
Richard M. Stallman <rms@gnu.org>
parents: 53308
diff changeset
1296 @end defun
1246d68686ac (Refresh Screen): Add force-window-update.
Richard M. Stallman <rms@gnu.org>
parents: 53308
diff changeset
1297
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1298 @defun make-overlay start end &optional buffer front-advance rear-advance
9009
7cdfcd5e71ff entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 8925
diff changeset
1299 This function creates and returns an overlay that belongs to
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1300 @var{buffer} and ranges from @var{start} to @var{end}. Both @var{start}
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1301 and @var{end} must specify buffer positions; they may be integers or
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1302 markers. If @var{buffer} is omitted, the overlay is created in the
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1303 current buffer.
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1304
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1305 The arguments @var{front-advance} and @var{rear-advance} specify the
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1306 insertion type for the start of the overlay and for the end of the
54023
3a7432ab26ae Minor fixes.
Richard M. Stallman <rms@gnu.org>
parents: 53929
diff changeset
1307 overlay, respectively. @xref{Marker Insertion Types}. If
3a7432ab26ae Minor fixes.
Richard M. Stallman <rms@gnu.org>
parents: 53929
diff changeset
1308 @var{front-advance} is non-@code{nil}, text inserted at the beginning
3a7432ab26ae Minor fixes.
Richard M. Stallman <rms@gnu.org>
parents: 53929
diff changeset
1309 of the overlay is excluded from the overlay. If @var{read-advance} is
3a7432ab26ae Minor fixes.
Richard M. Stallman <rms@gnu.org>
parents: 53929
diff changeset
1310 non-@code{nil}, text inserted at the beginning of the overlay is
3a7432ab26ae Minor fixes.
Richard M. Stallman <rms@gnu.org>
parents: 53929
diff changeset
1311 included in the overlay.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1312 @end defun
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1313
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1314 @defun overlay-start overlay
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1315 This function returns the position at which @var{overlay} starts,
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1316 as an integer.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1317 @end defun
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1318
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1319 @defun overlay-end overlay
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1320 This function returns the position at which @var{overlay} ends,
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1321 as an integer.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1322 @end defun
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1323
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1324 @defun overlay-buffer overlay
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1325 This function returns the buffer that @var{overlay} belongs to.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1326 @end defun
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1327
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1328 @defun delete-overlay overlay
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1329 This function deletes @var{overlay}. The overlay continues to exist as
26696
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1330 a Lisp object, and its property list is unchanged, but it ceases to be
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1331 attached to the buffer it belonged to, and ceases to have any effect on
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1332 display.
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1333
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1334 A deleted overlay is not permanently disconnected. You can give it a
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1335 position in a buffer again by calling @code{move-overlay}.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1336 @end defun
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1337
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1338 @defun move-overlay overlay start end &optional buffer
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1339 This function moves @var{overlay} to @var{buffer}, and places its bounds
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1340 at @var{start} and @var{end}. Both arguments @var{start} and @var{end}
26696
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1341 must specify buffer positions; they may be integers or markers.
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1342
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1343 If @var{buffer} is omitted, @var{overlay} stays in the same buffer it
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1344 was already associated with; if @var{overlay} was deleted, it goes into
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1345 the current buffer.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1346
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1347 The return value is @var{overlay}.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1348
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1349 This is the only valid way to change the endpoints of an overlay. Do
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1350 not try modifying the markers in the overlay by hand, as that fails to
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1351 update other vital data structures and can cause some overlays to be
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1352 ``lost''.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1353 @end defun
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1354
26696
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1355 Here are some examples:
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1356
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1357 @example
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1358 ;; @r{Create an overlay.}
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1359 (setq foo (make-overlay 1 10))
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1360 @result{} #<overlay from 1 to 10 in display.texi>
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1361 (overlay-start foo)
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1362 @result{} 1
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1363 (overlay-end foo)
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1364 @result{} 10
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1365 (overlay-buffer foo)
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1366 @result{} #<buffer display.texi>
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1367 ;; @r{Give it a property we can check later.}
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1368 (overlay-put foo 'happy t)
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1369 @result{} t
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1370 ;; @r{Verify the property is present.}
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1371 (overlay-get foo 'happy)
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1372 @result{} t
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1373 ;; @r{Move the overlay.}
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1374 (move-overlay foo 5 20)
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1375 @result{} #<overlay from 5 to 20 in display.texi>
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1376 (overlay-start foo)
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1377 @result{} 5
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1378 (overlay-end foo)
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1379 @result{} 20
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1380 ;; @r{Delete the overlay.}
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1381 (delete-overlay foo)
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1382 @result{} nil
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1383 ;; @r{Verify it is deleted.}
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1384 foo
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1385 @result{} #<overlay in no buffer>
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1386 ;; @r{A deleted overlay has no position.}
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1387 (overlay-start foo)
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1388 @result{} nil
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1389 (overlay-end foo)
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1390 @result{} nil
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1391 (overlay-buffer foo)
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1392 @result{} nil
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1393 ;; @r{Undelete the overlay.}
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1394 (move-overlay foo 1 20)
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1395 @result{} #<overlay from 1 to 20 in display.texi>
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1396 ;; @r{Verify the results.}
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1397 (overlay-start foo)
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1398 @result{} 1
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1399 (overlay-end foo)
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1400 @result{} 20
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1401 (overlay-buffer foo)
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1402 @result{} #<buffer display.texi>
27331
be0a552c8320 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 27193
diff changeset
1403 ;; @r{Moving and deleting the overlay does not change its properties.}
26696
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1404 (overlay-get foo 'happy)
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1405 @result{} t
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1406 @end example
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1407
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1408 @node Finding Overlays
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1409 @subsection Searching for Overlays
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1410
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1411 @defun overlays-at pos
26696
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1412 This function returns a list of all the overlays that cover the
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1413 character at position @var{pos} in the current buffer. The list is in
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1414 no particular order. An overlay contains position @var{pos} if it
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1415 begins at or before @var{pos}, and ends after @var{pos}.
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1416
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1417 To illustrate usage, here is a Lisp function that returns a list of the
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1418 overlays that specify property @var{prop} for the character at point:
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1419
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1420 @smallexample
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1421 (defun find-overlays-specifying (prop)
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1422 (let ((overlays (overlays-at (point)))
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1423 found)
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1424 (while overlays
37170
29f2615d958f (Finding Overlays): Fix example code.
Gerd Moellmann <gerd@gnu.org>
parents: 36935
diff changeset
1425 (let ((overlay (car overlays)))
26696
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1426 (if (overlay-get overlay prop)
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1427 (setq found (cons overlay found))))
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1428 (setq overlays (cdr overlays)))
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1429 found))
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1430 @end smallexample
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1431 @end defun
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1432
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
1433 @defun overlays-in beg end
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1434 This function returns a list of the overlays that overlap the region
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1435 @var{beg} through @var{end}. ``Overlap'' means that at least one
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1436 character is contained within the overlay and also contained within the
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1437 specified region; however, empty overlays are included in the result if
26696
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1438 they are located at @var{beg}, or strictly between @var{beg} and @var{end}.
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1439 @end defun
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1440
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1441 @defun next-overlay-change pos
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1442 This function returns the buffer position of the next beginning or end
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1443 of an overlay, after @var{pos}.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1444 @end defun
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1445
12067
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
1446 @defun previous-overlay-change pos
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
1447 This function returns the buffer position of the previous beginning or
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
1448 end of an overlay, before @var{pos}.
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
1449 @end defun
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
1450
26696
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1451 Here's an easy way to use @code{next-overlay-change} to search for the
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1452 next character which gets a non-@code{nil} @code{happy} property from
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1453 either its overlays or its text properties (@pxref{Property Search}):
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1454
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1455 @smallexample
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1456 (defun find-overlay-prop (prop)
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1457 (save-excursion
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1458 (while (and (not (eobp))
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1459 (not (get-char-property (point) 'happy)))
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1460 (goto-char (min (next-overlay-change (point))
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1461 (next-single-property-change (point) 'happy))))
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1462 (point)))
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1463 @end smallexample
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
1464
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1465 @node Width
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1466 @section Width
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1467
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1468 Since not all characters have the same width, these functions let you
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1469 check the width of a character. @xref{Primitive Indent}, and
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1470 @ref{Screen Lines}, for related functions.
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1471
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
1472 @defun char-width char
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1473 This function returns the width in columns of the character @var{char},
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1474 if it were displayed in the current buffer and the selected window.
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1475 @end defun
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1476
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
1477 @defun string-width string
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1478 This function returns the width in columns of the string @var{string},
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1479 if it were displayed in the current buffer and the selected window.
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1480 @end defun
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1481
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
1482 @defun truncate-string-to-width string width &optional start-column padding
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1483 This function returns the part of @var{string} that fits within
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1484 @var{width} columns, as a new string.
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1485
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1486 If @var{string} does not reach @var{width}, then the result ends where
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1487 @var{string} ends. If one multi-column character in @var{string}
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1488 extends across the column @var{width}, that character is not included in
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1489 the result. Thus, the result can fall short of @var{width} but cannot
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1490 go beyond it.
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1491
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1492 The optional argument @var{start-column} specifies the starting column.
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1493 If this is non-@code{nil}, then the first @var{start-column} columns of
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1494 the string are omitted from the value. If one multi-column character in
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1495 @var{string} extends across the column @var{start-column}, that
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1496 character is not included.
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1497
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1498 The optional argument @var{padding}, if non-@code{nil}, is a padding
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1499 character added at the beginning and end of the result string, to extend
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1500 it to exactly @var{width} columns. The padding character is used at the
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1501 end of the result if it falls short of @var{width}. It is also used at
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1502 the beginning of the result if one multi-column character in
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1503 @var{string} extends across the column @var{start-column}.
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1504
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1505 @example
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1506 (truncate-string-to-width "\tab\t" 12 4)
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1507 @result{} "ab"
52002
26d4153f70a1 (Width): Use \s syntax in example.
Richard M. Stallman <rms@gnu.org>
parents: 51652
diff changeset
1508 (truncate-string-to-width "\tab\t" 12 4 ?\s)
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1509 @result{} " ab "
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1510 @end example
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1511 @end defun
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
1512
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1513 @node Faces
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1514 @section Faces
40469
aa8474236e9e Index "faces" instead of "face".
Richard M. Stallman <rms@gnu.org>
parents: 40310
diff changeset
1515 @cindex faces
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1516
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1517 A @dfn{face} is a named collection of graphical attributes: font
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1518 family, foreground color, background color, optional underlining, and
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1519 many others. Faces are used in Emacs to control the style of display of
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1520 particular parts of the text or the frame.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1521
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1522 @cindex face id
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1523 Each face has its own @dfn{face number}, which distinguishes faces at
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1524 low levels within Emacs. However, for most purposes, you refer to
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1525 faces in Lisp programs by their names.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1526
12067
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
1527 @defun facep object
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
1528 This function returns @code{t} if @var{object} is a face name symbol (or
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
1529 if it is a vector of the kind used internally to record face data). It
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
1530 returns @code{nil} otherwise.
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
1531 @end defun
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
1532
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1533 Each face name is meaningful for all frames, and by default it has the
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1534 same meaning in all frames. But you can arrange to give a particular
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1535 face name a special meaning in one frame if you wish.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1536
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1537 @menu
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1538 * Standard Faces:: The faces Emacs normally comes with.
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1539 * Defining Faces:: How to define a face with @code{defface}.
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1540 * Face Attributes:: What is in a face?
53467
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
1541 * Attribute Functions:: Functions to examine and set face attributes.
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
1542 * Merging Faces:: How Emacs combines the faces specified for a character.
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1543 * Font Selection:: Finding the best available font for a face.
53467
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
1544 * Face Functions:: How to define and examine faces.
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1545 * Auto Faces:: Hook for automatic face assignment.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1546 * Font Lookup:: Looking up the names of available fonts
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1547 and information about them.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1548 * Fontsets:: A fontset is a collection of fonts
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1549 that handle a range of character sets.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1550 @end menu
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1551
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1552 @node Standard Faces
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1553 @subsection Standard Faces
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1554
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1555 This table lists all the standard faces and their uses. Most of them
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1556 are used for displaying certain parts of the frames or certain kinds of
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1557 text; you can control how those places look by customizing these faces.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1558
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1559 @table @code
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1560 @item default
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1561 @kindex default @r{(face name)}
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1562 This face is used for ordinary text.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1563
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1564 @item mode-line
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1565 @kindex mode-line @r{(face name)}
43262
af1ba8f61638 (Standard Faces): Document mode-line-inactive.
Eli Zaretskii <eliz@gnu.org>
parents: 43099
diff changeset
1566 This face is used for the mode line of the selected window, and for
af1ba8f61638 (Standard Faces): Document mode-line-inactive.
Eli Zaretskii <eliz@gnu.org>
parents: 43099
diff changeset
1567 menu bars when toolkit menus are not used---but only if
af1ba8f61638 (Standard Faces): Document mode-line-inactive.
Eli Zaretskii <eliz@gnu.org>
parents: 43099
diff changeset
1568 @code{mode-line-inverse-video} is non-@code{nil}.
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1569
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1570 @item modeline
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1571 @kindex modeline @r{(face name)}
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1572 This is an alias for the @code{mode-line} face, for compatibility with
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1573 old Emacs versions.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1574
43262
af1ba8f61638 (Standard Faces): Document mode-line-inactive.
Eli Zaretskii <eliz@gnu.org>
parents: 43099
diff changeset
1575 @item mode-line-inactive
af1ba8f61638 (Standard Faces): Document mode-line-inactive.
Eli Zaretskii <eliz@gnu.org>
parents: 43099
diff changeset
1576 @kindex mode-line-inactive @r{(face name)}
af1ba8f61638 (Standard Faces): Document mode-line-inactive.
Eli Zaretskii <eliz@gnu.org>
parents: 43099
diff changeset
1577 This face is used for mode lines of non-selected windows.
43290
3198ecb4e71f Minor clarification.
Richard M. Stallman <rms@gnu.org>
parents: 43262
diff changeset
1578 This face inherits from @code{mode-line}, so changes
3198ecb4e71f Minor clarification.
Richard M. Stallman <rms@gnu.org>
parents: 43262
diff changeset
1579 in that face affect all windows.
43262
af1ba8f61638 (Standard Faces): Document mode-line-inactive.
Eli Zaretskii <eliz@gnu.org>
parents: 43099
diff changeset
1580
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1581 @item header-line
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1582 @kindex header-line @r{(face name)}
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1583 This face is used for the header lines of windows that have them.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1584
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1585 @item menu
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1586 This face controls the display of menus, both their colors and their
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1587 font. (This works only on certain systems.)
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1588
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1589 @item fringe
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1590 @kindex fringe @r{(face name)}
57193
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
1591 This face controls the default colors of window fringes, the thin areas on
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1592 either side that are used to display continuation and truncation glyphs.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1593
43099
761d92c0f64e (Standard Faces): Document the minibuffer-prompt face and the
Eli Zaretskii <eliz@gnu.org>
parents: 42905
diff changeset
1594 @item minibuffer-prompt
761d92c0f64e (Standard Faces): Document the minibuffer-prompt face and the
Eli Zaretskii <eliz@gnu.org>
parents: 42905
diff changeset
1595 @kindex minibuffer-prompt @r{(face name)}
761d92c0f64e (Standard Faces): Document the minibuffer-prompt face and the
Eli Zaretskii <eliz@gnu.org>
parents: 42905
diff changeset
1596 @vindex minibuffer-prompt-properties
761d92c0f64e (Standard Faces): Document the minibuffer-prompt face and the
Eli Zaretskii <eliz@gnu.org>
parents: 42905
diff changeset
1597 This face is used for the text of minibuffer prompts. By default,
761d92c0f64e (Standard Faces): Document the minibuffer-prompt face and the
Eli Zaretskii <eliz@gnu.org>
parents: 42905
diff changeset
1598 Emacs automatically adds this face to the value of
761d92c0f64e (Standard Faces): Document the minibuffer-prompt face and the
Eli Zaretskii <eliz@gnu.org>
parents: 42905
diff changeset
1599 @code{minibuffer-prompt-properties}, which is a list of text
761d92c0f64e (Standard Faces): Document the minibuffer-prompt face and the
Eli Zaretskii <eliz@gnu.org>
parents: 42905
diff changeset
1600 properties used to display the prompt text.
761d92c0f64e (Standard Faces): Document the minibuffer-prompt face and the
Eli Zaretskii <eliz@gnu.org>
parents: 42905
diff changeset
1601
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1602 @item scroll-bar
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1603 @kindex scroll-bar @r{(face name)}
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1604 This face controls the colors for display of scroll bars.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1605
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1606 @item tool-bar
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1607 @kindex tool-bar @r{(face name)}
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1608 This face is used for display of the tool bar, if any.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1609
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1610 @item region
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1611 @kindex region @r{(face name)}
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1612 This face is used for highlighting the region in Transient Mark mode.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1613
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1614 @item secondary-selection
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1615 @kindex secondary-selection @r{(face name)}
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1616 This face is used to show any secondary selection you have made.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1617
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1618 @item highlight
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1619 @kindex highlight @r{(face name)}
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1620 This face is meant to be used for highlighting for various purposes.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1621
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1622 @item trailing-whitespace
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1623 @kindex trailing-whitespace @r{(face name)}
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1624 This face is used to display excess whitespace at the end of a line,
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1625 if @code{show-trailing-whitespace} is non-@code{nil}.
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1626 @end table
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1627
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1628 In contrast, these faces are provided to change the appearance of text
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1629 in specific ways. You can use them on specific text, when you want
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1630 the effects they produce.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1631
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1632 @table @code
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1633 @item bold
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1634 @kindex bold @r{(face name)}
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1635 This face uses a bold font, if possible. It uses the bold variant of
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1636 the frame's font, if it has one. It's up to you to choose a default
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1637 font that has a bold variant, if you want to use one.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1638
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1639 @item italic
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1640 @kindex italic @r{(face name)}
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1641 This face uses the italic variant of the frame's font, if it has one.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1642
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1643 @item bold-italic
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1644 @kindex bold-italic @r{(face name)}
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1645 This face uses the bold italic variant of the frame's font, if it has
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1646 one.
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1647
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1648 @item underline
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1649 @kindex underline @r{(face name)}
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1650 This face underlines text.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1651
38278
9e543d761717 Fix several typos.
Gerd Moellmann <gerd@gnu.org>
parents: 37949
diff changeset
1652 @item fixed-pitch
9e543d761717 Fix several typos.
Gerd Moellmann <gerd@gnu.org>
parents: 37949
diff changeset
1653 @kindex fixed-pitch @r{(face name)}
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1654 This face forces use of a particular fixed-width font.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1655
38278
9e543d761717 Fix several typos.
Gerd Moellmann <gerd@gnu.org>
parents: 37949
diff changeset
1656 @item variable-pitch
9e543d761717 Fix several typos.
Gerd Moellmann <gerd@gnu.org>
parents: 37949
diff changeset
1657 @kindex variable-pitch @r{(face name)}
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1658 This face forces use of a particular variable-width font. It's
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1659 reasonable to customize this to use a different variable-width font, if
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1660 you like, but you should not make it a fixed-width font.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1661 @end table
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1662
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1663 @defvar show-trailing-whitespace
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1664 @tindex show-trailing-whitespace
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1665 If this variable is non-@code{nil}, Emacs uses the
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1666 @code{trailing-whitespace} face to display any spaces and tabs at the
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1667 end of a line.
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1668 @end defvar
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1669
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1670 @node Defining Faces
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
1671 @subsection Defining Faces
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1672
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1673 The way to define a new face is with @code{defface}. This creates a
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1674 kind of customization item (@pxref{Customization}) which the user can
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1675 customize using the Customization buffer (@pxref{Easy Customization,,,
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1676 emacs, The GNU Emacs Manual}).
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1677
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48948
diff changeset
1678 @defmac defface face spec doc [keyword value]...
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1679 This declares @var{face} as a customizable face that defaults according
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1680 to @var{spec}. You should not quote the symbol @var{face}. The
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1681 argument @var{doc} specifies the face documentation. The keywords you
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1682 can use in @code{defface} are the same ones that are meaningful in both
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1683 @code{defgroup} and @code{defcustom} (@pxref{Common Keywords}).
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1684
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1685 When @code{defface} executes, it defines the face according to
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
1686 @var{spec}, then uses any customizations that were read from the
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1687 init file (@pxref{Init File}) to override that specification.
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1688
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1689 The purpose of @var{spec} is to specify how the face should appear on
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1690 different kinds of terminals. It should be an alist whose elements have
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1691 the form @code{(@var{display} @var{atts})}. Each element's @sc{car},
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1692 @var{display}, specifies a class of terminals. The element's second element,
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1693 @var{atts}, is a list of face attributes and their values; it specifies
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1694 what the face should look like on that kind of terminal. The possible
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1695 attributes are defined in the value of @code{custom-face-attributes}.
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1696
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1697 The @var{display} part of an element of @var{spec} determines which
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1698 frames the element applies to. If more than one element of @var{spec}
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1699 matches a given frame, the first matching element is the only one used
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1700 for that frame. There are two possibilities for @var{display}:
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1701
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1702 @table @asis
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1703 @item @code{t}
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1704 This element of @var{spec} matches all frames. Therefore, any
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1705 subsequent elements of @var{spec} are never used. Normally
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1706 @code{t} is used in the last (or only) element of @var{spec}.
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1707
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
1708 @item a list
22252
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
1709 If @var{display} is a list, each element should have the form
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1710 @code{(@var{characteristic} @var{value}@dots{})}. Here
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1711 @var{characteristic} specifies a way of classifying frames, and the
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1712 @var{value}s are possible classifications which @var{display} should
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1713 apply to. Here are the possible values of @var{characteristic}:
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1714
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1715 @table @code
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1716 @item type
32802
66f219c7e8ca (Defining Faces): Document `graphic' display type in face specs.
Miles Bader <miles@gnu.org>
parents: 32552
diff changeset
1717 The kind of window system the frame uses---either @code{graphic} (any
66f219c7e8ca (Defining Faces): Document `graphic' display type in face specs.
Miles Bader <miles@gnu.org>
parents: 32552
diff changeset
1718 graphics-capable display), @code{x}, @code{pc} (for the MS-DOS console),
66f219c7e8ca (Defining Faces): Document `graphic' display type in face specs.
Miles Bader <miles@gnu.org>
parents: 32552
diff changeset
1719 @code{w32} (for MS Windows 9X/NT), or @code{tty} (a non-graphics-capable
66f219c7e8ca (Defining Faces): Document `graphic' display type in face specs.
Miles Bader <miles@gnu.org>
parents: 32552
diff changeset
1720 display).
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1721
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1722 @item class
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1723 What kinds of colors the frame supports---either @code{color},
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1724 @code{grayscale}, or @code{mono}.
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1725
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1726 @item background
22252
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
1727 The kind of background---either @code{light} or @code{dark}.
45745
394a19fc134e defface `supports' predicate
Miles Bader <miles@gnu.org>
parents: 44281
diff changeset
1728
54156
aa281cba47ea (Defining Faces): Add description for min-colors. Update example.
Eli Zaretskii <eliz@gnu.org>
parents: 54023
diff changeset
1729 @item min-colors
aa281cba47ea (Defining Faces): Add description for min-colors. Update example.
Eli Zaretskii <eliz@gnu.org>
parents: 54023
diff changeset
1730 An integer that represents the minimum number of colors the frame should
aa281cba47ea (Defining Faces): Add description for min-colors. Update example.
Eli Zaretskii <eliz@gnu.org>
parents: 54023
diff changeset
1731 support, it is compared with the result of @code{display-color-cells}.
aa281cba47ea (Defining Faces): Add description for min-colors. Update example.
Eli Zaretskii <eliz@gnu.org>
parents: 54023
diff changeset
1732
45745
394a19fc134e defface `supports' predicate
Miles Bader <miles@gnu.org>
parents: 44281
diff changeset
1733 @item supports
46170
115fa2a7cd26 Tweak text a bit.
Miles Bader <miles@gnu.org>
parents: 45750
diff changeset
1734 Whether or not the frame can display the face attributes given in
115fa2a7cd26 Tweak text a bit.
Miles Bader <miles@gnu.org>
parents: 45750
diff changeset
1735 @var{value}@dots{} (@pxref{Face Attributes}). See the documentation
115fa2a7cd26 Tweak text a bit.
Miles Bader <miles@gnu.org>
parents: 45750
diff changeset
1736 for the function @code{display-supports-face-attributes-p} for more
115fa2a7cd26 Tweak text a bit.
Miles Bader <miles@gnu.org>
parents: 45750
diff changeset
1737 information on exactly how this testing is done. @xref{Display Face
115fa2a7cd26 Tweak text a bit.
Miles Bader <miles@gnu.org>
parents: 45750
diff changeset
1738 Attribute Testing}.
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1739 @end table
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1740
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1741 If an element of @var{display} specifies more than one @var{value} for a
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1742 given @var{characteristic}, any of those values is acceptable. If
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1743 @var{display} has more than one element, each element should specify a
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1744 different @var{characteristic}; then @emph{each} characteristic of the
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1745 frame must match one of the @var{value}s specified for it in
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1746 @var{display}.
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1747 @end table
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1748 @end defmac
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1749
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1750 Here's how the standard face @code{region} is defined:
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1751
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1752 @example
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1753 @group
54156
aa281cba47ea (Defining Faces): Add description for min-colors. Update example.
Eli Zaretskii <eliz@gnu.org>
parents: 54023
diff changeset
1754 '((((class color) (min-colors 88) (background dark))
aa281cba47ea (Defining Faces): Add description for min-colors. Update example.
Eli Zaretskii <eliz@gnu.org>
parents: 54023
diff changeset
1755 :background "blue3")
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1756 @end group
54156
aa281cba47ea (Defining Faces): Add description for min-colors. Update example.
Eli Zaretskii <eliz@gnu.org>
parents: 54023
diff changeset
1757 (((class color) (min-colors 88) (background light))
aa281cba47ea (Defining Faces): Add description for min-colors. Update example.
Eli Zaretskii <eliz@gnu.org>
parents: 54023
diff changeset
1758 :background "lightgoldenrod2")
aa281cba47ea (Defining Faces): Add description for min-colors. Update example.
Eli Zaretskii <eliz@gnu.org>
parents: 54023
diff changeset
1759 (((class color) (min-colors 16) (background dark))
aa281cba47ea (Defining Faces): Add description for min-colors. Update example.
Eli Zaretskii <eliz@gnu.org>
parents: 54023
diff changeset
1760 :background "blue3")
aa281cba47ea (Defining Faces): Add description for min-colors. Update example.
Eli Zaretskii <eliz@gnu.org>
parents: 54023
diff changeset
1761 (((class color) (min-colors 16) (background light))
aa281cba47ea (Defining Faces): Add description for min-colors. Update example.
Eli Zaretskii <eliz@gnu.org>
parents: 54023
diff changeset
1762 :background "lightgoldenrod2")
aa281cba47ea (Defining Faces): Add description for min-colors. Update example.
Eli Zaretskii <eliz@gnu.org>
parents: 54023
diff changeset
1763 (((class color) (min-colors 8))
aa281cba47ea (Defining Faces): Add description for min-colors. Update example.
Eli Zaretskii <eliz@gnu.org>
parents: 54023
diff changeset
1764 :background "blue" :foreground "white")
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1765 (((type tty) (class mono))
54156
aa281cba47ea (Defining Faces): Add description for min-colors. Update example.
Eli Zaretskii <eliz@gnu.org>
parents: 54023
diff changeset
1766 :inverse-video t)
aa281cba47ea (Defining Faces): Add description for min-colors. Update example.
Eli Zaretskii <eliz@gnu.org>
parents: 54023
diff changeset
1767 (t :background "gray"))
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1768 @group
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1769 "Basic face for highlighting the region."
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1770 :group 'basic-faces)
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1771 @end group
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1772 @end example
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1773
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1774 Internally, @code{defface} uses the symbol property
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1775 @code{face-defface-spec} to record the face attributes specified in
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1776 @code{defface}, @code{saved-face} for the attributes saved by the user
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1777 with the customization buffer, and @code{face-documentation} for the
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1778 documentation string.
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1779
22252
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
1780 @defopt frame-background-mode
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
1781 This option, if non-@code{nil}, specifies the background type to use for
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
1782 interpreting face definitions. If it is @code{dark}, then Emacs treats
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
1783 all frames as if they had a dark background, regardless of their actual
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
1784 background colors. If it is @code{light}, then Emacs treats all frames
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
1785 as if they had a light background.
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
1786 @end defopt
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
1787
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1788 @node Face Attributes
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1789 @subsection Face Attributes
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1790 @cindex face attributes
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1791
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1792 The effect of using a face is determined by a fixed set of @dfn{face
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1793 attributes}. This table lists all the face attributes, and what they
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1794 mean. Note that in general, more than one face can be specified for a
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1795 given piece of text; when that happens, the attributes of all the faces
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1796 are merged to specify how to display the text. @xref{Merging Faces}.
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1797
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1798 In Emacs 21, any attribute in a face can have the value
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1799 @code{unspecified}. This means the face doesn't specify that attribute.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1800 In face merging, when the first face fails to specify a particular
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1801 attribute, that means the next face gets a chance. However, the
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1802 @code{default} face must specify all attributes.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1803
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1804 Some of these font attributes are meaningful only on certain kinds of
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1805 displays---if your display cannot handle a certain attribute, the
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1806 attribute is ignored. (The attributes @code{:family}, @code{:width},
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1807 @code{:height}, @code{:weight}, and @code{:slant} correspond to parts of
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1808 an X Logical Font Descriptor.)
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1809
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1810 @table @code
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1811 @item :family
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1812 Font family name, or fontset name (@pxref{Fontsets}). If you specify a
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1813 font family name, the wild-card characters @samp{*} and @samp{?} are
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1814 allowed.
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1815
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1816 @item :width
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1817 Relative proportionate width, also known as the character set width or
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1818 set width. This should be one of the symbols @code{ultra-condensed},
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1819 @code{extra-condensed}, @code{condensed}, @code{semi-condensed},
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1820 @code{normal}, @code{semi-expanded}, @code{expanded},
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1821 @code{extra-expanded}, or @code{ultra-expanded}.
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48948
diff changeset
1822
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1823 @item :height
32089
15b8a53f1d7a (Face Attributes): Add description of new :inherit face attribute, and
Miles Bader <miles@gnu.org>
parents: 31373
diff changeset
1824 Either the font height, an integer in units of 1/10 point, a floating
15b8a53f1d7a (Face Attributes): Add description of new :inherit face attribute, and
Miles Bader <miles@gnu.org>
parents: 31373
diff changeset
1825 point number specifying the amount by which to scale the height of any
15b8a53f1d7a (Face Attributes): Add description of new :inherit face attribute, and
Miles Bader <miles@gnu.org>
parents: 31373
diff changeset
1826 underlying face, or a function, which is called with the old height
15b8a53f1d7a (Face Attributes): Add description of new :inherit face attribute, and
Miles Bader <miles@gnu.org>
parents: 31373
diff changeset
1827 (from the underlying face), and should return the new height.
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48948
diff changeset
1828
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1829 @item :weight
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1830 Font weight---a symbol from this series (from most dense to most faint):
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1831 @code{ultra-bold}, @code{extra-bold}, @code{bold}, @code{semi-bold},
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1832 @code{normal}, @code{semi-light}, @code{light}, @code{extra-light},
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1833 or @code{ultra-light}.
25809
89230444d638 patched by pjr from diff by rms
Phillip Rulon <pjr@gnu.org>
parents: 25751
diff changeset
1834
89230444d638 patched by pjr from diff by rms
Phillip Rulon <pjr@gnu.org>
parents: 25751
diff changeset
1835 On a text-only terminal, any weight greater than normal is displayed as
89230444d638 patched by pjr from diff by rms
Phillip Rulon <pjr@gnu.org>
parents: 25751
diff changeset
1836 extra bright, and any weight less than normal is displayed as
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1837 half-bright (provided the terminal supports the feature).
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1838
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1839 @item :slant
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1840 Font slant---one of the symbols @code{italic}, @code{oblique}, @code{normal},
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1841 @code{reverse-italic}, or @code{reverse-oblique}.
25809
89230444d638 patched by pjr from diff by rms
Phillip Rulon <pjr@gnu.org>
parents: 25751
diff changeset
1842
89230444d638 patched by pjr from diff by rms
Phillip Rulon <pjr@gnu.org>
parents: 25751
diff changeset
1843 On a text-only terminal, slanted text is displayed as half-bright, if
89230444d638 patched by pjr from diff by rms
Phillip Rulon <pjr@gnu.org>
parents: 25751
diff changeset
1844 the terminal supports the feature.
89230444d638 patched by pjr from diff by rms
Phillip Rulon <pjr@gnu.org>
parents: 25751
diff changeset
1845
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1846 @item :foreground
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1847 Foreground color, a string.
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48948
diff changeset
1848
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1849 @item :background
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1850 Background color, a string.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1851
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1852 @item :inverse-video
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1853 Whether or not characters should be displayed in inverse video. The
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1854 value should be @code{t} (yes) or @code{nil} (no).
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1855
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1856 @item :stipple
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1857 The background stipple, a bitmap.
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1858
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1859 The value can be a string; that should be the name of a file containing
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1860 external-format X bitmap data. The file is found in the directories
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1861 listed in the variable @code{x-bitmap-file-path}.
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1862
40310
34f1a01f25fa *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 39404
diff changeset
1863 Alternatively, the value can specify the bitmap directly, with a list
34f1a01f25fa *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 39404
diff changeset
1864 of the form @code{(@var{width} @var{height} @var{data})}. Here,
34f1a01f25fa *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 39404
diff changeset
1865 @var{width} and @var{height} specify the size in pixels, and
34f1a01f25fa *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 39404
diff changeset
1866 @var{data} is a string containing the raw bits of the bitmap, row by
34f1a01f25fa *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 39404
diff changeset
1867 row. Each row occupies @math{(@var{width} + 7) / 8} consecutive bytes
34f1a01f25fa *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 39404
diff changeset
1868 in the string (which should be a unibyte string for best results).
34f1a01f25fa *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 39404
diff changeset
1869 This means that each row always occupies at least one whole byte.
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1870
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1871 If the value is @code{nil}, that means use no stipple pattern.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1872
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1873 Normally you do not need to set the stipple attribute, because it is
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1874 used automatically to handle certain shades of gray.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1875
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1876 @item :underline
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1877 Whether or not characters should be underlined, and in what color. If
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1878 the value is @code{t}, underlining uses the foreground color of the
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1879 face. If the value is a string, underlining uses that color. The
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1880 value @code{nil} means do not underline.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1881
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1882 @item :overline
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1883 Whether or not characters should be overlined, and in what color.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1884 The value is used like that of @code{:underline}.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1885
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1886 @item :strike-through
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1887 Whether or not characters should be strike-through, and in what
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1888 color. The value is used like that of @code{:underline}.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1889
32089
15b8a53f1d7a (Face Attributes): Add description of new :inherit face attribute, and
Miles Bader <miles@gnu.org>
parents: 31373
diff changeset
1890 @item :inherit
15b8a53f1d7a (Face Attributes): Add description of new :inherit face attribute, and
Miles Bader <miles@gnu.org>
parents: 31373
diff changeset
1891 The name of a face from which to inherit attributes, or a list of face
15b8a53f1d7a (Face Attributes): Add description of new :inherit face attribute, and
Miles Bader <miles@gnu.org>
parents: 31373
diff changeset
1892 names. Attributes from inherited faces are merged into the face like an
15b8a53f1d7a (Face Attributes): Add description of new :inherit face attribute, and
Miles Bader <miles@gnu.org>
parents: 31373
diff changeset
1893 underlying face would be, with higher priority than underlying faces.
15b8a53f1d7a (Face Attributes): Add description of new :inherit face attribute, and
Miles Bader <miles@gnu.org>
parents: 31373
diff changeset
1894
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1895 @item :box
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1896 Whether or not a box should be drawn around characters, its color, the
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1897 width of the box lines, and 3D appearance.
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1898 @end table
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1899
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1900 Here are the possible values of the @code{:box} attribute, and what
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1901 they mean:
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1902
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1903 @table @asis
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1904 @item @code{nil}
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1905 Don't draw a box.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1906
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1907 @item @code{t}
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1908 Draw a box with lines of width 1, in the foreground color.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1909
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1910 @item @var{color}
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1911 Draw a box with lines of width 1, in color @var{color}.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1912
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1913 @item @code{(:line-width @var{width} :color @var{color} :style @var{style})}
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1914 This way you can explicitly specify all aspects of the box. The value
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1915 @var{width} specifies the width of the lines to draw; it defaults to 1.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1916
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1917 The value @var{color} specifies the color to draw with. The default is
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1918 the foreground color of the face for simple boxes, and the background
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1919 color of the face for 3D boxes.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1920
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1921 The value @var{style} specifies whether to draw a 3D box. If it is
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1922 @code{released-button}, the box looks like a 3D button that is not being
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1923 pressed. If it is @code{pressed-button}, the box looks like a 3D button
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1924 that is being pressed. If it is @code{nil} or omitted, a plain 2D box
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1925 is used.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1926 @end table
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1927
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1928 The attributes @code{:overline}, @code{:strike-through} and
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1929 @code{:box} are new in Emacs 21. The attributes @code{:family},
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1930 @code{:height}, @code{:width}, @code{:weight}, @code{:slant} are also
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1931 new; previous versions used the following attributes, now semi-obsolete,
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1932 to specify some of the same information:
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1933
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1934 @table @code
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1935 @item :font
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1936 This attribute specifies the font name.
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1937
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1938 @item :bold
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1939 A non-@code{nil} value specifies a bold font.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1940
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1941 @item :italic
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1942 A non-@code{nil} value specifies an italic font.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1943 @end table
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1944
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1945 For compatibility, you can still set these ``attributes'' in Emacs 21,
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1946 even though they are not real face attributes. Here is what that does:
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1947
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1948 @table @code
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1949 @item :font
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1950 You can specify an X font name as the ``value'' of this ``attribute'';
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1951 that sets the @code{:family}, @code{:width}, @code{:height},
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1952 @code{:weight}, and @code{:slant} attributes according to the font name.
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1953
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1954 If the value is a pattern with wildcards, the first font that matches
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1955 the pattern is used to set these attributes.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1956
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1957 @item :bold
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1958 A non-@code{nil} makes the face bold; @code{nil} makes it normal.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1959 This actually works by setting the @code{:weight} attribute.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1960
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1961 @item :italic
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1962 A non-@code{nil} makes the face italic; @code{nil} makes it normal.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1963 This actually works by setting the @code{:slant} attribute.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1964 @end table
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1965
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1966 @defvar x-bitmap-file-path
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1967 This variable specifies a list of directories for searching
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1968 for bitmap files, for the @code{:stipple} attribute.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1969 @end defvar
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1970
25911
b192e4e3a9f5 Rename pixmap-spec-p to bitmap-spec-p.
Gerd Moellmann <gerd@gnu.org>
parents: 25875
diff changeset
1971 @defun bitmap-spec-p object
42888
04040cfbdf67 (set-face-stipple): Reference description of bitmap data
Richard M. Stallman <rms@gnu.org>
parents: 42827
diff changeset
1972 This returns @code{t} if @var{object} is a valid bitmap specification,
04040cfbdf67 (set-face-stipple): Reference description of bitmap data
Richard M. Stallman <rms@gnu.org>
parents: 42827
diff changeset
1973 suitable for use with @code{:stipple} (see above). It returns
04040cfbdf67 (set-face-stipple): Reference description of bitmap data
Richard M. Stallman <rms@gnu.org>
parents: 42827
diff changeset
1974 @code{nil} otherwise.
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1975 @end defun
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1976
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1977 @node Attribute Functions
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1978 @subsection Face Attribute Functions
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1979
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1980 You can modify the attributes of an existing face with the following
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1981 functions. If you specify @var{frame}, they affect just that frame;
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1982 otherwise, they affect all frames as well as the defaults that apply to
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1983 new frames.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1984
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1985 @tindex set-face-attribute
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1986 @defun set-face-attribute face frame &rest arguments
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1987 This function sets one or more attributes of face @var{face}
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1988 for frame @var{frame}. If @var{frame} is @code{nil}, it sets
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1989 the attribute for all frames, and the defaults for new frames.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1990
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1991 The extra arguments @var{arguments} specify the attributes to set, and
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1992 the values for them. They should consist of alternating attribute names
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
1993 (such as @code{:family} or @code{:underline}) and corresponding values.
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1994 Thus,
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1995
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1996 @example
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
1997 (set-face-attribute 'foo nil
46721
12862351ee03 Fix set-face-attribute example.
Richard M. Stallman <rms@gnu.org>
parents: 46338
diff changeset
1998 :width 'extended
12862351ee03 Fix set-face-attribute example.
Richard M. Stallman <rms@gnu.org>
parents: 46338
diff changeset
1999 :weight 'bold
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2000 :underline "red")
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2001 @end example
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2002
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2003 @noindent
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2004 sets the attributes @code{:width}, @code{:weight} and @code{:underline}
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2005 to the corresponding values.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2006 @end defun
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2007
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2008 @tindex face-attribute
46240
df64f9f41c5f Add entries for face-attribute-relative-p, merge-face-attribute.
Miles Bader <miles@gnu.org>
parents: 46170
diff changeset
2009 @defun face-attribute face attribute &optional frame inherit
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2010 This returns the value of the @var{attribute} attribute of face
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2011 @var{face} on @var{frame}. If @var{frame} is @code{nil},
39404
5b69d94ceef3 (Font Lookup, Attribute Functions)
Eli Zaretskii <eliz@gnu.org>
parents: 39221
diff changeset
2012 that means the selected frame (@pxref{Input Focus}).
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2013
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2014 If @var{frame} is @code{t}, the value is the default for
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2015 @var{face} for new frames.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2016
51652
55fb0658914a Fix minor Texinfo usage.
Richard M. Stallman <rms@gnu.org>
parents: 51000
diff changeset
2017 If @var{inherit} is @code{nil}, only attributes directly defined by
46240
df64f9f41c5f Add entries for face-attribute-relative-p, merge-face-attribute.
Miles Bader <miles@gnu.org>
parents: 46170
diff changeset
2018 @var{face} are considered, so the return value may be
51652
55fb0658914a Fix minor Texinfo usage.
Richard M. Stallman <rms@gnu.org>
parents: 51000
diff changeset
2019 @code{unspecified}, or a relative value. If @var{inherit} is
55fb0658914a Fix minor Texinfo usage.
Richard M. Stallman <rms@gnu.org>
parents: 51000
diff changeset
2020 non-@code{nil}, @var{face}'s definition of @var{attribute} is merged
55fb0658914a Fix minor Texinfo usage.
Richard M. Stallman <rms@gnu.org>
parents: 51000
diff changeset
2021 with the faces specified by its @code{:inherit} attribute; however the
55fb0658914a Fix minor Texinfo usage.
Richard M. Stallman <rms@gnu.org>
parents: 51000
diff changeset
2022 return value may still be @code{unspecified} or relative. If
55fb0658914a Fix minor Texinfo usage.
Richard M. Stallman <rms@gnu.org>
parents: 51000
diff changeset
2023 @var{inherit} is a face or a list of faces, then the result is further
55fb0658914a Fix minor Texinfo usage.
Richard M. Stallman <rms@gnu.org>
parents: 51000
diff changeset
2024 merged with that face (or faces), until it becomes specified and
55fb0658914a Fix minor Texinfo usage.
Richard M. Stallman <rms@gnu.org>
parents: 51000
diff changeset
2025 absolute.
46240
df64f9f41c5f Add entries for face-attribute-relative-p, merge-face-attribute.
Miles Bader <miles@gnu.org>
parents: 46170
diff changeset
2026
df64f9f41c5f Add entries for face-attribute-relative-p, merge-face-attribute.
Miles Bader <miles@gnu.org>
parents: 46170
diff changeset
2027 To ensure that the return value is always specified and absolute, use
df64f9f41c5f Add entries for face-attribute-relative-p, merge-face-attribute.
Miles Bader <miles@gnu.org>
parents: 46170
diff changeset
2028 a value of @code{default} for @var{inherit}; this will resolve any
df64f9f41c5f Add entries for face-attribute-relative-p, merge-face-attribute.
Miles Bader <miles@gnu.org>
parents: 46170
diff changeset
2029 unspecified or relative values by merging with the @code{default} face
df64f9f41c5f Add entries for face-attribute-relative-p, merge-face-attribute.
Miles Bader <miles@gnu.org>
parents: 46170
diff changeset
2030 (which is always completely specified).
df64f9f41c5f Add entries for face-attribute-relative-p, merge-face-attribute.
Miles Bader <miles@gnu.org>
parents: 46170
diff changeset
2031
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2032 For example,
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2033
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2034 @example
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2035 (face-attribute 'bold :weight)
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2036 @result{} bold
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2037 @end example
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2038 @end defun
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2039
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
2040 The functions above did not exist before Emacs 21. For compatibility
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
2041 with older Emacs versions, you can use the following functions to set
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2042 and examine the face attributes which existed in those versions.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2043
46240
df64f9f41c5f Add entries for face-attribute-relative-p, merge-face-attribute.
Miles Bader <miles@gnu.org>
parents: 46170
diff changeset
2044 @tindex face-attribute-relative-p
df64f9f41c5f Add entries for face-attribute-relative-p, merge-face-attribute.
Miles Bader <miles@gnu.org>
parents: 46170
diff changeset
2045 @defun face-attribute-relative-p attribute value
54023
3a7432ab26ae Minor fixes.
Richard M. Stallman <rms@gnu.org>
parents: 53929
diff changeset
2046 This function returns non-@code{nil} if @var{value}, when used as
46240
df64f9f41c5f Add entries for face-attribute-relative-p, merge-face-attribute.
Miles Bader <miles@gnu.org>
parents: 46170
diff changeset
2047 the value of the face attribute @var{attribute}, is relative (that is,
df64f9f41c5f Add entries for face-attribute-relative-p, merge-face-attribute.
Miles Bader <miles@gnu.org>
parents: 46170
diff changeset
2048 if it modifies an underlying or inherited value of @var{attribute}).
df64f9f41c5f Add entries for face-attribute-relative-p, merge-face-attribute.
Miles Bader <miles@gnu.org>
parents: 46170
diff changeset
2049 @end defun
df64f9f41c5f Add entries for face-attribute-relative-p, merge-face-attribute.
Miles Bader <miles@gnu.org>
parents: 46170
diff changeset
2050
df64f9f41c5f Add entries for face-attribute-relative-p, merge-face-attribute.
Miles Bader <miles@gnu.org>
parents: 46170
diff changeset
2051 @tindex merge-face-attribute
df64f9f41c5f Add entries for face-attribute-relative-p, merge-face-attribute.
Miles Bader <miles@gnu.org>
parents: 46170
diff changeset
2052 @defun merge-face-attribute attribute value1 value2
df64f9f41c5f Add entries for face-attribute-relative-p, merge-face-attribute.
Miles Bader <miles@gnu.org>
parents: 46170
diff changeset
2053 If @var{value1} is a relative value for the face attribute
df64f9f41c5f Add entries for face-attribute-relative-p, merge-face-attribute.
Miles Bader <miles@gnu.org>
parents: 46170
diff changeset
2054 @var{attribute}, returns it merged with the underlying value
df64f9f41c5f Add entries for face-attribute-relative-p, merge-face-attribute.
Miles Bader <miles@gnu.org>
parents: 46170
diff changeset
2055 @var{value2}; otherwise, if @var{value1} is an absolute value for the
51000
72af65197e01 Fix typos. Patch from Jesper Harder <harder@ifa.au.dk>.
Juanma Barranquero <lekktu@gmail.com>
parents: 49600
diff changeset
2056 face attribute @var{attribute}, returns @var{value1} unchanged.
46240
df64f9f41c5f Add entries for face-attribute-relative-p, merge-face-attribute.
Miles Bader <miles@gnu.org>
parents: 46170
diff changeset
2057 @end defun
df64f9f41c5f Add entries for face-attribute-relative-p, merge-face-attribute.
Miles Bader <miles@gnu.org>
parents: 46170
diff changeset
2058
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2059 @defun set-face-foreground face color &optional frame
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2060 @defunx set-face-background face color &optional frame
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2061 These functions set the foreground (or background, respectively) color
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2062 of face @var{face} to @var{color}. The argument @var{color} should be a
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2063 string, the name of a color.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2064
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2065 Certain shades of gray are implemented by stipple patterns on
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2066 black-and-white screens.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2067 @end defun
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2068
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2069 @defun set-face-stipple face pattern &optional frame
42888
04040cfbdf67 (set-face-stipple): Reference description of bitmap data
Richard M. Stallman <rms@gnu.org>
parents: 42827
diff changeset
2070 This function sets the background stipple pattern of face @var{face}
04040cfbdf67 (set-face-stipple): Reference description of bitmap data
Richard M. Stallman <rms@gnu.org>
parents: 42827
diff changeset
2071 to @var{pattern}. The argument @var{pattern} should be the name of a
04040cfbdf67 (set-face-stipple): Reference description of bitmap data
Richard M. Stallman <rms@gnu.org>
parents: 42827
diff changeset
2072 stipple pattern defined by the X server, or actual bitmap data
04040cfbdf67 (set-face-stipple): Reference description of bitmap data
Richard M. Stallman <rms@gnu.org>
parents: 42827
diff changeset
2073 (@pxref{Face Attributes}), or @code{nil} meaning don't use stipple.
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2074
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2075 Normally there is no need to pay attention to stipple patterns, because
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2076 they are used automatically to handle certain shades of gray.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2077 @end defun
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2078
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2079 @defun set-face-font face font &optional frame
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2080 This function sets the font of face @var{face}.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2081
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2082 In Emacs 21, this actually sets the attributes @code{:family},
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2083 @code{:width}, @code{:height}, @code{:weight}, and @code{:slant}
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2084 according to the font name @var{font}.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2085
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2086 In Emacs 20, this sets the font attribute. Once you set the font
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2087 explicitly, the bold and italic attributes cease to have any effect,
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2088 because the precise font that you specified is used.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2089 @end defun
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2090
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2091 @defun set-face-bold-p face bold-p &optional frame
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2092 This function specifies whether @var{face} should be bold. If
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2093 @var{bold-p} is non-@code{nil}, that means yes; @code{nil} means no.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2094
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2095 In Emacs 21, this sets the @code{:weight} attribute.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2096 In Emacs 20, it sets the @code{:bold} attribute.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2097 @end defun
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2098
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2099 @defun set-face-italic-p face italic-p &optional frame
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2100 This function specifies whether @var{face} should be italic. If
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2101 @var{italic-p} is non-@code{nil}, that means yes; @code{nil} means no.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2102
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2103 In Emacs 21, this sets the @code{:slant} attribute.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2104 In Emacs 20, it sets the @code{:italic} attribute.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2105 @end defun
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2106
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2107 @defun set-face-underline-p face underline-p &optional frame
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2108 This function sets the underline attribute of face @var{face}.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2109 Non-@code{nil} means do underline; @code{nil} means don't.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2110 @end defun
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2111
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2112 @defun invert-face face &optional frame
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2113 This function inverts the @code{:inverse-video} attribute of face
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2114 @var{face}. If the attribute is @code{nil}, this function sets it to
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2115 @code{t}, and vice versa.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2116 @end defun
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2117
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2118 These functions examine the attributes of a face. If you don't
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2119 specify @var{frame}, they refer to the default data for new frames.
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
2120 They return the symbol @code{unspecified} if the face doesn't define any
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
2121 value for that attribute.
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2122
46245
fb42c0446cbf Update face-foreground and face-background to mention INHERIT parameter.
Miles Bader <miles@gnu.org>
parents: 46240
diff changeset
2123 @defun face-foreground face &optional frame inherit
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2124 @defunx face-background face &optional frame
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2125 These functions return the foreground color (or background color,
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2126 respectively) of face @var{face}, as a string.
46245
fb42c0446cbf Update face-foreground and face-background to mention INHERIT parameter.
Miles Bader <miles@gnu.org>
parents: 46240
diff changeset
2127
54777
5745bf089073 Markup fixes.
Jesper Harder <harder@ifa.au.dk>
parents: 54156
diff changeset
2128 If @var{inherit} is @code{nil}, only a color directly defined by the face is
5745bf089073 Markup fixes.
Jesper Harder <harder@ifa.au.dk>
parents: 54156
diff changeset
2129 returned. If @var{inherit} is non-@code{nil}, any faces specified by its
46245
fb42c0446cbf Update face-foreground and face-background to mention INHERIT parameter.
Miles Bader <miles@gnu.org>
parents: 46240
diff changeset
2130 @code{:inherit} attribute are considered as well, and if @var{inherit}
fb42c0446cbf Update face-foreground and face-background to mention INHERIT parameter.
Miles Bader <miles@gnu.org>
parents: 46240
diff changeset
2131 is a face or a list of faces, then they are also considered, until a
fb42c0446cbf Update face-foreground and face-background to mention INHERIT parameter.
Miles Bader <miles@gnu.org>
parents: 46240
diff changeset
2132 specified color is found. To ensure that the return value is always
fb42c0446cbf Update face-foreground and face-background to mention INHERIT parameter.
Miles Bader <miles@gnu.org>
parents: 46240
diff changeset
2133 specified, use a value of @code{default} for @var{inherit}.
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2134 @end defun
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2135
46245
fb42c0446cbf Update face-foreground and face-background to mention INHERIT parameter.
Miles Bader <miles@gnu.org>
parents: 46240
diff changeset
2136 @defun face-stipple face &optional frame inherit
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2137 This function returns the name of the background stipple pattern of face
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2138 @var{face}, or @code{nil} if it doesn't have one.
46245
fb42c0446cbf Update face-foreground and face-background to mention INHERIT parameter.
Miles Bader <miles@gnu.org>
parents: 46240
diff changeset
2139
51652
55fb0658914a Fix minor Texinfo usage.
Richard M. Stallman <rms@gnu.org>
parents: 51000
diff changeset
2140 If @var{inherit} is @code{nil}, only a stipple directly defined by the
55fb0658914a Fix minor Texinfo usage.
Richard M. Stallman <rms@gnu.org>
parents: 51000
diff changeset
2141 face is returned. If @var{inherit} is non-@code{nil}, any faces
55fb0658914a Fix minor Texinfo usage.
Richard M. Stallman <rms@gnu.org>
parents: 51000
diff changeset
2142 specified by its @code{:inherit} attribute are considered as well, and
55fb0658914a Fix minor Texinfo usage.
Richard M. Stallman <rms@gnu.org>
parents: 51000
diff changeset
2143 if @var{inherit} is a face or a list of faces, then they are also
55fb0658914a Fix minor Texinfo usage.
Richard M. Stallman <rms@gnu.org>
parents: 51000
diff changeset
2144 considered, until a specified stipple is found. To ensure that the
55fb0658914a Fix minor Texinfo usage.
Richard M. Stallman <rms@gnu.org>
parents: 51000
diff changeset
2145 return value is always specified, use a value of @code{default} for
55fb0658914a Fix minor Texinfo usage.
Richard M. Stallman <rms@gnu.org>
parents: 51000
diff changeset
2146 @var{inherit}.
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2147 @end defun
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2148
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2149 @defun face-font face &optional frame
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2150 This function returns the name of the font of face @var{face}.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2151 @end defun
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2152
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2153 @defun face-bold-p face &optional frame
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2154 This function returns @code{t} if @var{face} is bold---that is, if it is
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2155 bolder than normal. It returns @code{nil} otherwise.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2156 @end defun
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2157
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2158 @defun face-italic-p face &optional frame
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2159 This function returns @code{t} if @var{face} is italic or oblique,
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2160 @code{nil} otherwise.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2161 @end defun
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2162
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2163 @defun face-underline-p face &optional frame
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2164 This function returns the @code{:underline} attribute of face @var{face}.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2165 @end defun
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2166
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2167 @defun face-inverse-video-p face &optional frame
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2168 This function returns the @code{:inverse-video} attribute of face @var{face}.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2169 @end defun
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2170
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2171 @node Merging Faces
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2172 @subsection Merging Faces for Display
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2173
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2174 Here are the ways to specify which faces to use for display of text:
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2175
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2176 @itemize @bullet
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2177 @item
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2178 With defaults. The @code{default} face is used as the ultimate
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2179 default for all text. (In Emacs 19 and 20, the @code{default}
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2180 face is used only when no other face is specified.)
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2181
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2182 For a mode line or header line, the face @code{modeline} or
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2183 @code{header-line} is used just before @code{default}.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2184
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2185 @item
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2186 With text properties. A character can have a @code{face} property; if
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2187 so, the faces and face attributes specified there apply. @xref{Special
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2188 Properties}.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2189
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2190 If the character has a @code{mouse-face} property, that is used instead
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2191 of the @code{face} property when the mouse is ``near enough'' to the
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2192 character.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2193
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2194 @item
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2195 With overlays. An overlay can have @code{face} and @code{mouse-face}
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2196 properties too; they apply to all the text covered by the overlay.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2197
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2198 @item
12098
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 12067
diff changeset
2199 With a region that is active. In Transient Mark mode, the region is
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2200 highlighted with the face @code{region} (@pxref{Standard Faces}).
12098
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 12067
diff changeset
2201
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 12067
diff changeset
2202 @item
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48948
diff changeset
2203 With special glyphs. Each glyph can specify a particular face
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2204 number. @xref{Glyphs}.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2205 @end itemize
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2206
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2207 If these various sources together specify more than one face for a
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2208 particular character, Emacs merges the attributes of the various faces
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2209 specified. The attributes of the faces of special glyphs come first;
12098
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 12067
diff changeset
2210 then comes the face for region highlighting, if appropriate;
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2211 then come attributes of faces from overlays, followed by those from text
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2212 properties, and last the default face.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2213
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2214 When multiple overlays cover one character, an overlay with higher
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2215 priority overrides those with lower priority. @xref{Overlays}.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2216
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2217 In Emacs 20, if an attribute such as the font or a color is not
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2218 specified in any of the above ways, the frame's own font or color is
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2219 used. In newer Emacs versions, this cannot happen, because the
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2220 @code{default} face specifies all attributes---in fact, the frame's own
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2221 font and colors are synonymous with those of the default face.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2222
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2223 @node Font Selection
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2224 @subsection Font Selection
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2225
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2226 @dfn{Selecting a font} means mapping the specified face attributes for
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2227 a character to a font that is available on a particular display. The
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2228 face attributes, as determined by face merging, specify most of the
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2229 font choice, but not all. Part of the choice depends on what character
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2230 it is.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2231
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2232 If the face specifies a fontset name, that fontset determines a
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2233 pattern for fonts of the given charset. If the face specifies a font
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2234 family, a font pattern is constructed.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2235
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2236 Emacs tries to find an available font for the given face attributes
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2237 and character's registry and encoding. If there is a font that matches
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2238 exactly, it is used, of course. The hard case is when no available font
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2239 exactly fits the specification. Then Emacs looks for one that is
27654
cabb1b4c4424 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 27447
diff changeset
2240 ``close''---one attribute at a time. You can specify the order to
cabb1b4c4424 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 27447
diff changeset
2241 consider the attributes. In the case where a specified font family is
cabb1b4c4424 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 27447
diff changeset
2242 not available, you can specify a set of mappings for alternatives to
cabb1b4c4424 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 27447
diff changeset
2243 try.
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2244
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2245 @defvar face-font-selection-order
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2246 @tindex face-font-selection-order
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2247 This variable specifies the order of importance of the face attributes
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2248 @code{:width}, @code{:height}, @code{:weight}, and @code{:slant}. The
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2249 value should be a list containing those four symbols, in order of
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2250 decreasing importance.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2251
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2252 Font selection first finds the best available matches for the first
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2253 attribute listed; then, among the fonts which are best in that way, it
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2254 searches for the best matches in the second attribute, and so on.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2255
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2256 The attributes @code{:weight} and @code{:width} have symbolic values in
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2257 a range centered around @code{normal}. Matches that are more extreme
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2258 (farther from @code{normal}) are somewhat preferred to matches that are
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2259 less extreme (closer to @code{normal}); this is designed to ensure that
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2260 non-normal faces contrast with normal ones, whenever possible.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2261
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2262 The default is @code{(:width :height :weight :slant)}, which means first
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2263 find the fonts closest to the specified @code{:width}, then---among the
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2264 fonts with that width---find a best match for the specified font height,
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2265 and so on.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2266
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2267 One example of a case where this variable makes a difference is when the
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2268 default font has no italic equivalent. With the default ordering, the
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2269 @code{italic} face will use a non-italic font that is similar to the
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2270 default one. But if you put @code{:slant} before @code{:height}, the
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2271 @code{italic} face will use an italic font, even if its height is not
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2272 quite right.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2273 @end defvar
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2274
33373
701833d4b661 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 32840
diff changeset
2275 @defvar face-font-family-alternatives
701833d4b661 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 32840
diff changeset
2276 @tindex face-font-family-alternatives
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2277 This variable lets you specify alternative font families to try, if a
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2278 given family is specified and doesn't exist. Each element should have
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2279 this form:
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2280
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2281 @example
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2282 (@var{family} @var{alternate-families}@dots{})
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2283 @end example
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2284
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2285 If @var{family} is specified but not available, Emacs will try the other
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2286 families given in @var{alternate-families}, one by one, until it finds a
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2287 family that does exist.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2288 @end defvar
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2289
33373
701833d4b661 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 32840
diff changeset
2290 @defvar face-font-registry-alternatives
701833d4b661 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 32840
diff changeset
2291 @tindex face-font-registry-alternatives
701833d4b661 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 32840
diff changeset
2292 This variable lets you specify alternative font registries to try, if a
701833d4b661 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 32840
diff changeset
2293 given registry is specified and doesn't exist. Each element should have
701833d4b661 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 32840
diff changeset
2294 this form:
701833d4b661 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 32840
diff changeset
2295
701833d4b661 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 32840
diff changeset
2296 @example
701833d4b661 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 32840
diff changeset
2297 (@var{registry} @var{alternate-registries}@dots{})
701833d4b661 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 32840
diff changeset
2298 @end example
701833d4b661 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 32840
diff changeset
2299
701833d4b661 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 32840
diff changeset
2300 If @var{registry} is specified but not available, Emacs will try the
701833d4b661 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 32840
diff changeset
2301 other registries given in @var{alternate-registries}, one by one,
701833d4b661 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 32840
diff changeset
2302 until it finds a registry that does exist.
701833d4b661 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 32840
diff changeset
2303 @end defvar
701833d4b661 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 32840
diff changeset
2304
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2305 Emacs can make use of scalable fonts, but by default it does not use
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2306 them, since the use of too many or too big scalable fonts can crash
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2307 XFree86 servers.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2308
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2309 @defvar scalable-fonts-allowed
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2310 @tindex scalable-fonts-allowed
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2311 This variable controls which scalable fonts to use. A value of
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2312 @code{nil}, the default, means do not use scalable fonts. @code{t}
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2313 means to use any scalable font that seems appropriate for the text.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2314
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2315 Otherwise, the value must be a list of regular expressions. Then a
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2316 scalable font is enabled for use if its name matches any regular
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2317 expression in the list. For example,
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2318
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2319 @example
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2320 (setq scalable-fonts-allowed '("muleindian-2$"))
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2321 @end example
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2322
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2323 @noindent
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2324 allows the use of scalable fonts with registry @code{muleindian-2}.
26698
73f718a9df4b (Overlays): Add menu entry for Finding Overlays.
Dave Love <fx@gnu.org>
parents: 26696
diff changeset
2325 @end defvar
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2326
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2327 @defun clear-face-cache &optional unload-p
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2328 @tindex clear-face-cache
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2329 This function clears the face cache for all frames.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2330 If @var{unload-p} is non-@code{nil}, that means to unload
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2331 all unused fonts as well.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2332 @end defun
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2333
52002
26d4153f70a1 (Width): Use \s syntax in example.
Richard M. Stallman <rms@gnu.org>
parents: 51652
diff changeset
2334 @defvar face-font-rescale-alist
26d4153f70a1 (Width): Use \s syntax in example.
Richard M. Stallman <rms@gnu.org>
parents: 51652
diff changeset
2335 This variable specifies scaling for certain faces. Its value should
26d4153f70a1 (Width): Use \s syntax in example.
Richard M. Stallman <rms@gnu.org>
parents: 51652
diff changeset
2336 be a list of elements of the form
26d4153f70a1 (Width): Use \s syntax in example.
Richard M. Stallman <rms@gnu.org>
parents: 51652
diff changeset
2337
26d4153f70a1 (Width): Use \s syntax in example.
Richard M. Stallman <rms@gnu.org>
parents: 51652
diff changeset
2338 @example
26d4153f70a1 (Width): Use \s syntax in example.
Richard M. Stallman <rms@gnu.org>
parents: 51652
diff changeset
2339 (@var{fontname-regexp} . @var{scale-factor})
26d4153f70a1 (Width): Use \s syntax in example.
Richard M. Stallman <rms@gnu.org>
parents: 51652
diff changeset
2340 @end example
26d4153f70a1 (Width): Use \s syntax in example.
Richard M. Stallman <rms@gnu.org>
parents: 51652
diff changeset
2341
26d4153f70a1 (Width): Use \s syntax in example.
Richard M. Stallman <rms@gnu.org>
parents: 51652
diff changeset
2342 If @var{fontname-regexp} matches the font name that is about to be
26d4153f70a1 (Width): Use \s syntax in example.
Richard M. Stallman <rms@gnu.org>
parents: 51652
diff changeset
2343 used, this says to choose a larger similar font according to the
26d4153f70a1 (Width): Use \s syntax in example.
Richard M. Stallman <rms@gnu.org>
parents: 51652
diff changeset
2344 factor @var{scale-factor}. You would use this feature to normalize
26d4153f70a1 (Width): Use \s syntax in example.
Richard M. Stallman <rms@gnu.org>
parents: 51652
diff changeset
2345 the font size if certain fonts are bigger or smaller than their
26d4153f70a1 (Width): Use \s syntax in example.
Richard M. Stallman <rms@gnu.org>
parents: 51652
diff changeset
2346 nominal heights and widths would suggest.
26d4153f70a1 (Width): Use \s syntax in example.
Richard M. Stallman <rms@gnu.org>
parents: 51652
diff changeset
2347 @end defvar
26d4153f70a1 (Width): Use \s syntax in example.
Richard M. Stallman <rms@gnu.org>
parents: 51652
diff changeset
2348
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2349 @node Face Functions
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2350 @subsection Functions for Working with Faces
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2351
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2352 Here are additional functions for creating and working with faces.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2353
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2354 @defun make-face name
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2355 This function defines a new face named @var{name}, initially with all
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2356 attributes @code{nil}. It does nothing if there is already a face named
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2357 @var{name}.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2358 @end defun
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2359
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2360 @defun face-list
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2361 This function returns a list of all defined face names.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2362 @end defun
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2363
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2364 @defun copy-face old-face new-name &optional frame new-frame
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2365 This function defines the face @var{new-name} as a copy of the existing
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2366 face named @var{old-face}. It creates the face @var{new-name} if that
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2367 doesn't already exist.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2368
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2369 If the optional argument @var{frame} is given, this function applies
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2370 only to that frame. Otherwise it applies to each frame individually,
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2371 copying attributes from @var{old-face} in each frame to @var{new-face}
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2372 in the same frame.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2373
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2374 If the optional argument @var{new-frame} is given, then @code{copy-face}
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2375 copies the attributes of @var{old-face} in @var{frame} to @var{new-name}
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2376 in @var{new-frame}.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2377 @end defun
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2378
12098
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 12067
diff changeset
2379 @defun face-id face
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
2380 This function returns the face number of face @var{face}.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2381 @end defun
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2382
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
2383 @defun face-documentation face
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
2384 This function returns the documentation string of face @var{face}, or
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
2385 @code{nil} if none was specified for it.
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
2386 @end defun
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
2387
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2388 @defun face-equal face1 face2 &optional frame
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2389 This returns @code{t} if the faces @var{face1} and @var{face2} have the
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2390 same attributes for display.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2391 @end defun
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2392
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2393 @defun face-differs-from-default-p face &optional frame
55899
4592654cd2e9 Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-369
Miles Bader <miles@gnu.org>
parents: 55246
diff changeset
2394 This returns non-@code{nil} if the face @var{face} displays
4592654cd2e9 Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-369
Miles Bader <miles@gnu.org>
parents: 55246
diff changeset
2395 differently from the default face.
22252
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
2396 @end defun
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
2397
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2398 @node Auto Faces
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2399 @subsection Automatic Face Assignment
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2400 @cindex automatic face assignment
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2401 @cindex faces, automatic choice
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2402
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2403 @cindex Font-Lock mode
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2404 Starting with Emacs 21, a hook is available for automatically
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2405 assigning faces to text in the buffer. This hook is used for part of
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2406 the implementation of Font-Lock mode.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2407
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2408 @tindex fontification-functions
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2409 @defvar fontification-functions
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2410 This variable holds a list of functions that are called by Emacs
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2411 redisplay as needed to assign faces automatically to text in the buffer.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2412
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2413 The functions are called in the order listed, with one argument, a
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2414 buffer position @var{pos}. Each function should attempt to assign faces
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2415 to the text in the current buffer starting at @var{pos}.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2416
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2417 Each function should record the faces they assign by setting the
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2418 @code{face} property. It should also add a non-@code{nil}
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2419 @code{fontified} property for all the text it has assigned faces to.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2420 That property tells redisplay that faces have been assigned to that text
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2421 already.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2422
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2423 It is probably a good idea for each function to do nothing if the
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2424 character after @var{pos} already has a non-@code{nil} @code{fontified}
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2425 property, but this is not required. If one function overrides the
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2426 assignments made by a previous one, the properties as they are
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2427 after the last function finishes are the ones that really matter.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2428
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2429 For efficiency, we recommend writing these functions so that they
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2430 usually assign faces to around 400 to 600 characters at each call.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2431 @end defvar
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2432
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2433 @node Font Lookup
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2434 @subsection Looking Up Fonts
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2435
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2436 @defun x-list-fonts pattern &optional face frame maximum
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2437 This function returns a list of available font names that match
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2438 @var{pattern}. If the optional arguments @var{face} and @var{frame} are
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2439 specified, then the list is limited to fonts that are the same size as
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2440 @var{face} currently is on @var{frame}.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2441
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2442 The argument @var{pattern} should be a string, perhaps with wildcard
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2443 characters: the @samp{*} character matches any substring, and the
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2444 @samp{?} character matches any single character. Pattern matching
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2445 of font names ignores case.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2446
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2447 If you specify @var{face} and @var{frame}, @var{face} should be a face name
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2448 (a symbol) and @var{frame} should be a frame.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2449
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2450 The optional argument @var{maximum} sets a limit on how many fonts to
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2451 return. If this is non-@code{nil}, then the return value is truncated
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2452 after the first @var{maximum} matching fonts. Specifying a small value
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2453 for @var{maximum} can make this function much faster, in cases where
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2454 many fonts match the pattern.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2455 @end defun
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2456
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2457 These additional functions are available starting in Emacs 21.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2458
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2459 @defun x-family-fonts &optional family frame
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2460 @tindex x-family-fonts
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2461 This function returns a list describing the available fonts for family
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2462 @var{family} on @var{frame}. If @var{family} is omitted or @code{nil},
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2463 this list applies to all families, and therefore, it contains all
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2464 available fonts. Otherwise, @var{family} must be a string; it may
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2465 contain the wildcards @samp{?} and @samp{*}.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2466
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2467 The list describes the display that @var{frame} is on; if @var{frame} is
39404
5b69d94ceef3 (Font Lookup, Attribute Functions)
Eli Zaretskii <eliz@gnu.org>
parents: 39221
diff changeset
2468 omitted or @code{nil}, it applies to the selected frame's display
5b69d94ceef3 (Font Lookup, Attribute Functions)
Eli Zaretskii <eliz@gnu.org>
parents: 39221
diff changeset
2469 (@pxref{Input Focus}).
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2470
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2471 The list contains a vector of the following form for each font:
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2472
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2473 @example
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2474 [@var{family} @var{width} @var{point-size} @var{weight} @var{slant}
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2475 @var{fixed-p} @var{full} @var{registry-and-encoding}]
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2476 @end example
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2477
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2478 The first five elements correspond to face attributes; if you
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2479 specify these attributes for a face, it will use this font.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2480
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2481 The last three elements give additional information about the font.
51652
55fb0658914a Fix minor Texinfo usage.
Richard M. Stallman <rms@gnu.org>
parents: 51000
diff changeset
2482 @var{fixed-p} is non-@code{nil} if the font is fixed-pitch.
55fb0658914a Fix minor Texinfo usage.
Richard M. Stallman <rms@gnu.org>
parents: 51000
diff changeset
2483 @var{full} is the full name of the font, and
55fb0658914a Fix minor Texinfo usage.
Richard M. Stallman <rms@gnu.org>
parents: 51000
diff changeset
2484 @var{registry-and-encoding} is a string giving the registry and
55fb0658914a Fix minor Texinfo usage.
Richard M. Stallman <rms@gnu.org>
parents: 51000
diff changeset
2485 encoding of the font.
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2486
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2487 The result list is sorted according to the current face font sort order.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2488 @end defun
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2489
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2490 @defun x-font-family-list &optional frame
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2491 @tindex x-font-family-list
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2492 This function returns a list of the font families available for
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2493 @var{frame}'s display. If @var{frame} is omitted or @code{nil}, it
39404
5b69d94ceef3 (Font Lookup, Attribute Functions)
Eli Zaretskii <eliz@gnu.org>
parents: 39221
diff changeset
2494 describes the selected frame's display (@pxref{Input Focus}).
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2495
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2496 The value is a list of elements of this form:
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2497
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2498 @example
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2499 (@var{family} . @var{fixed-p})
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2500 @end example
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2501
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2502 @noindent
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2503 Here @var{family} is a font family, and @var{fixed-p} is
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2504 non-@code{nil} if fonts of that family are fixed-pitch.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2505 @end defun
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2506
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2507 @defvar font-list-limit
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2508 @tindex font-list-limit
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2509 This variable specifies maximum number of fonts to consider in font
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2510 matching. The function @code{x-family-fonts} will not return more than
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2511 that many fonts, and font selection will consider only that many fonts
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2512 when searching a matching font for face attributes. The default is
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2513 currently 100.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2514 @end defvar
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2515
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2516 @node Fontsets
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2517 @subsection Fontsets
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2518
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2519 A @dfn{fontset} is a list of fonts, each assigned to a range of
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2520 character codes. An individual font cannot display the whole range of
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2521 characters that Emacs supports, but a fontset can. Fontsets have names,
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2522 just as fonts do, and you can use a fontset name in place of a font name
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2523 when you specify the ``font'' for a frame or a face. Here is
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2524 information about defining a fontset under Lisp program control.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2525
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2526 @defun create-fontset-from-fontset-spec fontset-spec &optional style-variant-p noerror
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2527 This function defines a new fontset according to the specification
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2528 string @var{fontset-spec}. The string should have this format:
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2529
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2530 @smallexample
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2531 @var{fontpattern}, @r{[}@var{charsetname}:@var{fontname}@r{]@dots{}}
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2532 @end smallexample
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2533
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2534 @noindent
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2535 Whitespace characters before and after the commas are ignored.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2536
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2537 The first part of the string, @var{fontpattern}, should have the form of
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2538 a standard X font name, except that the last two fields should be
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2539 @samp{fontset-@var{alias}}.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2540
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2541 The new fontset has two names, one long and one short. The long name is
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2542 @var{fontpattern} in its entirety. The short name is
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2543 @samp{fontset-@var{alias}}. You can refer to the fontset by either
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2544 name. If a fontset with the same name already exists, an error is
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2545 signaled, unless @var{noerror} is non-@code{nil}, in which case this
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2546 function does nothing.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2547
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2548 If optional argument @var{style-variant-p} is non-@code{nil}, that says
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2549 to create bold, italic and bold-italic variants of the fontset as well.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2550 These variant fontsets do not have a short name, only a long one, which
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2551 is made by altering @var{fontpattern} to indicate the bold or italic
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2552 status.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2553
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2554 The specification string also says which fonts to use in the fontset.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2555 See below for the details.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2556 @end defun
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2557
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2558 The construct @samp{@var{charset}:@var{font}} specifies which font to
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2559 use (in this fontset) for one particular character set. Here,
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2560 @var{charset} is the name of a character set, and @var{font} is the font
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2561 to use for that character set. You can use this construct any number of
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2562 times in the specification string.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2563
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2564 For the remaining character sets, those that you don't specify
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2565 explicitly, Emacs chooses a font based on @var{fontpattern}: it replaces
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2566 @samp{fontset-@var{alias}} with a value that names one character set.
52978
1a5c50faf357 Replace @sc{foo} with @acronym{FOO}.
Eli Zaretskii <eliz@gnu.org>
parents: 52940
diff changeset
2567 For the @acronym{ASCII} character set, @samp{fontset-@var{alias}} is replaced
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2568 with @samp{ISO8859-1}.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2569
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2570 In addition, when several consecutive fields are wildcards, Emacs
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2571 collapses them into a single wildcard. This is to prevent use of
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2572 auto-scaled fonts. Fonts made by scaling larger fonts are not usable
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2573 for editing, and scaling a smaller font is not useful because it is
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2574 better to use the smaller font in its own size, which Emacs does.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2575
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2576 Thus if @var{fontpattern} is this,
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2577
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2578 @example
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2579 -*-fixed-medium-r-normal-*-24-*-*-*-*-*-fontset-24
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2580 @end example
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2581
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2582 @noindent
52978
1a5c50faf357 Replace @sc{foo} with @acronym{FOO}.
Eli Zaretskii <eliz@gnu.org>
parents: 52940
diff changeset
2583 the font specification for @acronym{ASCII} characters would be this:
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2584
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2585 @example
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2586 -*-fixed-medium-r-normal-*-24-*-ISO8859-1
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2587 @end example
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2588
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2589 @noindent
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2590 and the font specification for Chinese GB2312 characters would be this:
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2591
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2592 @example
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2593 -*-fixed-medium-r-normal-*-24-*-gb2312*-*
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2594 @end example
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2595
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2596 You may not have any Chinese font matching the above font
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2597 specification. Most X distributions include only Chinese fonts that
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2598 have @samp{song ti} or @samp{fangsong ti} in the @var{family} field. In
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2599 such a case, @samp{Fontset-@var{n}} can be specified as below:
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2600
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2601 @smallexample
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2602 Emacs.Fontset-0: -*-fixed-medium-r-normal-*-24-*-*-*-*-*-fontset-24,\
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2603 chinese-gb2312:-*-*-medium-r-normal-*-24-*-gb2312*-*
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2604 @end smallexample
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2605
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2606 @noindent
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2607 Then, the font specifications for all but Chinese GB2312 characters have
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2608 @samp{fixed} in the @var{family} field, and the font specification for
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2609 Chinese GB2312 characters has a wild card @samp{*} in the @var{family}
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2610 field.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2611
52932
eb3f1895daff (Fontsets): Add description of the function set-fontset-font.
Kenichi Handa <handa@m17n.org>
parents: 52923
diff changeset
2612 @defun set-fontset-font name character fontname &optional frame
eb3f1895daff (Fontsets): Add description of the function set-fontset-font.
Kenichi Handa <handa@m17n.org>
parents: 52923
diff changeset
2613 This function modifies the existing fontset @var{name} to
eb3f1895daff (Fontsets): Add description of the function set-fontset-font.
Kenichi Handa <handa@m17n.org>
parents: 52923
diff changeset
2614 use the font name @var{fontname} for the character @var{character}.
eb3f1895daff (Fontsets): Add description of the function set-fontset-font.
Kenichi Handa <handa@m17n.org>
parents: 52923
diff changeset
2615
52940
cac3cb68235c (Fontsets): Fix texinfo usage.
Kenichi Handa <handa@m17n.org>
parents: 52932
diff changeset
2616 If @var{name} is @code{nil}, this function modifies the default
54023
3a7432ab26ae Minor fixes.
Richard M. Stallman <rms@gnu.org>
parents: 53929
diff changeset
2617 fontset, whose short name is @samp{fontset-default}.
52940
cac3cb68235c (Fontsets): Fix texinfo usage.
Kenichi Handa <handa@m17n.org>
parents: 52932
diff changeset
2618
cac3cb68235c (Fontsets): Fix texinfo usage.
Kenichi Handa <handa@m17n.org>
parents: 52932
diff changeset
2619 @var{character} may be a cons; @code{(@var{from} . @var{to})}, where
cac3cb68235c (Fontsets): Fix texinfo usage.
Kenichi Handa <handa@m17n.org>
parents: 52932
diff changeset
2620 @var{from} and @var{to} are non-generic characters. In that case, use
cac3cb68235c (Fontsets): Fix texinfo usage.
Kenichi Handa <handa@m17n.org>
parents: 52932
diff changeset
2621 @var{fontname} for all characters in the range @var{from} and @var{to}
cac3cb68235c (Fontsets): Fix texinfo usage.
Kenichi Handa <handa@m17n.org>
parents: 52932
diff changeset
2622 (inclusive).
52932
eb3f1895daff (Fontsets): Add description of the function set-fontset-font.
Kenichi Handa <handa@m17n.org>
parents: 52923
diff changeset
2623
eb3f1895daff (Fontsets): Add description of the function set-fontset-font.
Kenichi Handa <handa@m17n.org>
parents: 52923
diff changeset
2624 @var{character} may be a charset. In that case, use
eb3f1895daff (Fontsets): Add description of the function set-fontset-font.
Kenichi Handa <handa@m17n.org>
parents: 52923
diff changeset
2625 @var{fontname} for all character in the charsets.
eb3f1895daff (Fontsets): Add description of the function set-fontset-font.
Kenichi Handa <handa@m17n.org>
parents: 52923
diff changeset
2626
52940
cac3cb68235c (Fontsets): Fix texinfo usage.
Kenichi Handa <handa@m17n.org>
parents: 52932
diff changeset
2627 @var{fontname} may be a cons; @code{(@var{family} . @var{registry})},
cac3cb68235c (Fontsets): Fix texinfo usage.
Kenichi Handa <handa@m17n.org>
parents: 52932
diff changeset
2628 where @var{family} is a family name of a font (possibly including a
cac3cb68235c (Fontsets): Fix texinfo usage.
Kenichi Handa <handa@m17n.org>
parents: 52932
diff changeset
2629 foundry name at the head), @var{registry} is a registry name of a font
cac3cb68235c (Fontsets): Fix texinfo usage.
Kenichi Handa <handa@m17n.org>
parents: 52932
diff changeset
2630 (possibly including an encoding name at the tail).
cac3cb68235c (Fontsets): Fix texinfo usage.
Kenichi Handa <handa@m17n.org>
parents: 52932
diff changeset
2631
cac3cb68235c (Fontsets): Fix texinfo usage.
Kenichi Handa <handa@m17n.org>
parents: 52932
diff changeset
2632 For instance, this changes the default fontset to use a font of which
cac3cb68235c (Fontsets): Fix texinfo usage.
Kenichi Handa <handa@m17n.org>
parents: 52932
diff changeset
2633 registry name is @samp{JISX0208.1983} for all characters belonging to
cac3cb68235c (Fontsets): Fix texinfo usage.
Kenichi Handa <handa@m17n.org>
parents: 52932
diff changeset
2634 the charset @code{japanese-jisx0208}.
52932
eb3f1895daff (Fontsets): Add description of the function set-fontset-font.
Kenichi Handa <handa@m17n.org>
parents: 52923
diff changeset
2635
eb3f1895daff (Fontsets): Add description of the function set-fontset-font.
Kenichi Handa <handa@m17n.org>
parents: 52923
diff changeset
2636 @example
eb3f1895daff (Fontsets): Add description of the function set-fontset-font.
Kenichi Handa <handa@m17n.org>
parents: 52923
diff changeset
2637 (set-fontset-font nil 'japanese-jisx0208 '(nil . "JISX0208.1983"))
eb3f1895daff (Fontsets): Add description of the function set-fontset-font.
Kenichi Handa <handa@m17n.org>
parents: 52923
diff changeset
2638 @end example
eb3f1895daff (Fontsets): Add description of the function set-fontset-font.
Kenichi Handa <handa@m17n.org>
parents: 52923
diff changeset
2639
eb3f1895daff (Fontsets): Add description of the function set-fontset-font.
Kenichi Handa <handa@m17n.org>
parents: 52923
diff changeset
2640 @end defun
eb3f1895daff (Fontsets): Add description of the function set-fontset-font.
Kenichi Handa <handa@m17n.org>
parents: 52923
diff changeset
2641
52483
3bbb565fa7ac (Fontsets): Add char-displayable-p.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
2642 @defun char-displayable-p char
3bbb565fa7ac (Fontsets): Add char-displayable-p.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
2643 This function returns @code{t} if Emacs ought to be able to display
3bbb565fa7ac (Fontsets): Add char-displayable-p.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
2644 @var{char}. More precisely, if the selected frame's fontset has a
3bbb565fa7ac (Fontsets): Add char-displayable-p.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
2645 font to display the character set that @var{char} belongs to.
3bbb565fa7ac (Fontsets): Add char-displayable-p.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
2646
3bbb565fa7ac (Fontsets): Add char-displayable-p.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
2647 Fontsets can specify a font on a per-character basis; when the fontset
3bbb565fa7ac (Fontsets): Add char-displayable-p.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
2648 does that, this function's value may not be accurate.
3bbb565fa7ac (Fontsets): Add char-displayable-p.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
2649 @end defun
3bbb565fa7ac (Fontsets): Add char-displayable-p.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
2650
52141
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
2651 @node Fringes
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
2652 @section Fringes
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
2653 @cindex Fringes
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
2654
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
2655 The @dfn{fringes} of a window are thin vertical strips down the
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
2656 sides that are used for displaying bitmaps that indicate truncation,
54023
3a7432ab26ae Minor fixes.
Richard M. Stallman <rms@gnu.org>
parents: 53929
diff changeset
2657 continuation, horizontal scrolling, and the overlay arrow. The
52141
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
2658 fringes normally appear between the display margins and the window
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
2659 text, but you can put them outside the display margins for a specific
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
2660 buffer by setting @code{fringes-outside-margins} buffer-locally to a
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
2661 non-@code{nil} value.
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
2662
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
2663 @defvar fringes-outside-margins
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
2664 If the value is non-@code{nil}, the frames appear outside
57193
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
2665 the display margins.
52141
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
2666 @end defvar
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
2667
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
2668 @defvar left-fringe-width
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
2669 This variable, if non-@code{nil}, specifies the width of the left
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
2670 fringe in pixels.
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
2671 @end defvar
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
2672
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
2673 @defvar right-fringe-width
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
2674 This variable, if non-@code{nil}, specifies the width of the right
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
2675 fringe in pixels.
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
2676 @end defvar
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
2677
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
2678 The values of these variables take effect when you display the
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
2679 buffer in a window. If you change them while the buffer is visible,
54023
3a7432ab26ae Minor fixes.
Richard M. Stallman <rms@gnu.org>
parents: 53929
diff changeset
2680 you can call @code{set-window-buffer} to display it once again in the
3a7432ab26ae Minor fixes.
Richard M. Stallman <rms@gnu.org>
parents: 53929
diff changeset
2681 same window, to make the changes take effect.
52141
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
2682
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
2683 @defun set-window-fringes window left &optional right outside-margins
54023
3a7432ab26ae Minor fixes.
Richard M. Stallman <rms@gnu.org>
parents: 53929
diff changeset
2684 This function sets the fringe widths of window @var{window}.
53929
3ef7a4a3c230 (Fringes): Use consistent wording.
Kim F. Storm <storm@cua.dk>
parents: 53829
diff changeset
2685 If @var{window} is @code{nil}, the selected window is used.
52141
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
2686
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
2687 The argument @var{left} specifies the width in pixels of the left
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
2688 fringe, and likewise @var{right} for the right fringe. A value of
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
2689 @code{nil} for either one stands for the default width. If
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
2690 @var{outside-margins} is non-@code{nil}, that specifies that fringes
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
2691 should appear outside of the display margins.
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
2692 @end defun
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
2693
53929
3ef7a4a3c230 (Fringes): Use consistent wording.
Kim F. Storm <storm@cua.dk>
parents: 53829
diff changeset
2694 @defun window-fringes &optional window
52141
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
2695 This function returns information about the fringes of a window
53929
3ef7a4a3c230 (Fringes): Use consistent wording.
Kim F. Storm <storm@cua.dk>
parents: 53829
diff changeset
2696 @var{window}. If @var{window} is omitted or @code{nil}, the selected
3ef7a4a3c230 (Fringes): Use consistent wording.
Kim F. Storm <storm@cua.dk>
parents: 53829
diff changeset
2697 window is used. The value has the form @code{(@var{left-width}
52156
198af82c7606 (Warning Basics): Fix typo.
John Paul Wallington <jpw@pobox.com>
parents: 52141
diff changeset
2698 @var{right-width} @var{frames-outside-margins})}.
52141
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
2699 @end defun
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
2700
57193
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
2701 @defvar overflow-newline-into-fringe
57221
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2702 If this is non-@code{nil}, lines exactly as wide as the window (not
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2703 counting the final newline character) are not continued. Instead,
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2704 when point is at the end of the line, the cursor appears in the right
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2705 fringe.
57193
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
2706 @end defvar
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
2707
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
2708 @node Fringe Bitmaps
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
2709 @section Fringe Bitmaps
57221
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2710 @cindex fringe bitmaps
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2711 @cindex bitmaps, fringe
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2712
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2713 The @dfn{fringe bitmaps} are tiny icons Emacs displays in the window
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2714 fringe (on a graphic display) to indicate truncated or continued
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2715 lines, buffer boundaries, overlay arrow, etc. The fringe bitmaps are
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2716 shared by all frames and windows. You can redefine the built-in
57274
271dfa08c2d0 (Fringe Bitmaps): Use symbols rather than numbers
Kim F. Storm <storm@cua.dk>
parents: 57225
diff changeset
2717 fringe bitmaps, and you can define new fringe bitmaps.
57221
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2718
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2719 The way to display a bitmap in the left or right fringes for a given
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2720 line in a window is by specifying the @code{display} property for one
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2721 of the characters that appears in it. Use a display specification of
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2722 the form @code{(left-fringe @var{bitmap} [@var{face}])} or
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2723 @code{(right-fringe @var{bitmap} [@var{face}])} (@pxref{Display
57274
271dfa08c2d0 (Fringe Bitmaps): Use symbols rather than numbers
Kim F. Storm <storm@cua.dk>
parents: 57225
diff changeset
2724 Property}). Here, @var{bitmap} is a symbol identifying the bitmap
57221
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2725 you want, and @var{face} (which is optional) is the name of the face
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2726 whose colors should be used for displaying the bitmap.
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2727
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2728 These are the symbols identify the standard fringe bitmaps.
57274
271dfa08c2d0 (Fringe Bitmaps): Use symbols rather than numbers
Kim F. Storm <storm@cua.dk>
parents: 57225
diff changeset
2729 Evaluate @code{(require 'fringe)} to define them. Fringe bitmap
271dfa08c2d0 (Fringe Bitmaps): Use symbols rather than numbers
Kim F. Storm <storm@cua.dk>
parents: 57225
diff changeset
2730 symbols have their own name space.
57221
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2731
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2732 @table @asis
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2733 @item Truncation and continuation line bitmaps:
57274
271dfa08c2d0 (Fringe Bitmaps): Use symbols rather than numbers
Kim F. Storm <storm@cua.dk>
parents: 57225
diff changeset
2734 @code{left-truncation}, @code{right-truncation},
271dfa08c2d0 (Fringe Bitmaps): Use symbols rather than numbers
Kim F. Storm <storm@cua.dk>
parents: 57225
diff changeset
2735 @code{continued-line}, @code{continuation-line}.
57193
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
2736
57221
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2737 @item Buffer indication bitmaps:
57274
271dfa08c2d0 (Fringe Bitmaps): Use symbols rather than numbers
Kim F. Storm <storm@cua.dk>
parents: 57225
diff changeset
2738 @code{up-arrow}, @code{down-arrow},
271dfa08c2d0 (Fringe Bitmaps): Use symbols rather than numbers
Kim F. Storm <storm@cua.dk>
parents: 57225
diff changeset
2739 @code{top-left-angle}, @code{top-right-angle},
271dfa08c2d0 (Fringe Bitmaps): Use symbols rather than numbers
Kim F. Storm <storm@cua.dk>
parents: 57225
diff changeset
2740 @code{bottom-left-angle}, @code{bottom-right-angle},
271dfa08c2d0 (Fringe Bitmaps): Use symbols rather than numbers
Kim F. Storm <storm@cua.dk>
parents: 57225
diff changeset
2741 @code{left-bracket}, @code{right-bracket}.
57193
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
2742
57221
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2743 @item Empty line indication bitmap:
57274
271dfa08c2d0 (Fringe Bitmaps): Use symbols rather than numbers
Kim F. Storm <storm@cua.dk>
parents: 57225
diff changeset
2744 @code{empty-line}.
57193
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
2745
57221
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2746 @item Overlay arrow bitmap:
57274
271dfa08c2d0 (Fringe Bitmaps): Use symbols rather than numbers
Kim F. Storm <storm@cua.dk>
parents: 57225
diff changeset
2747 @code{overlay-arrow}.
57193
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
2748
57221
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2749 @item Bitmaps for displaying the cursor in right fringe:
57274
271dfa08c2d0 (Fringe Bitmaps): Use symbols rather than numbers
Kim F. Storm <storm@cua.dk>
parents: 57225
diff changeset
2750 @code{filled-box-cursor}, @code{hollow-box-cursor}, @code{hollow-square},
271dfa08c2d0 (Fringe Bitmaps): Use symbols rather than numbers
Kim F. Storm <storm@cua.dk>
parents: 57225
diff changeset
2751 @code{bar-cursor}, @code{hbar-cursor}.
57221
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2752 @end table
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2753
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2754 @defun fringe-bitmaps-at-pos &optional pos window
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2755 This function returns the fringe bitmaps of the display line
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2756 containing position @var{pos} in window @var{window}. The return
57331
c02ec4a1158e (Fringe Bitmaps): Update fringe-bitmaps-at-pos.
Kim F. Storm <storm@cua.dk>
parents: 57274
diff changeset
2757 value has the form @code{(@var{left} @var{right} @var{ov})}, where @var{left}
57274
271dfa08c2d0 (Fringe Bitmaps): Use symbols rather than numbers
Kim F. Storm <storm@cua.dk>
parents: 57225
diff changeset
2758 is the symbol for the fringe bitmap in the left fringe (or @code{nil}
57331
c02ec4a1158e (Fringe Bitmaps): Update fringe-bitmaps-at-pos.
Kim F. Storm <storm@cua.dk>
parents: 57274
diff changeset
2759 if no bitmap), @var{right} is similar for the right fringe, and @var{ov}
c02ec4a1158e (Fringe Bitmaps): Update fringe-bitmaps-at-pos.
Kim F. Storm <storm@cua.dk>
parents: 57274
diff changeset
2760 is non-@code{nil} if there is an overlay arrow in the left fringe.
57221
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2761
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2762 The value is @code{nil} if @var{pos} is not visible in @var{window}.
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2763 If @var{window} is @code{nil}, that stands for the selected window.
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2764 If @var{pos} is @code{nil}, that stands for the value of point in
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2765 @var{window}.
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2766 @end defun
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2767
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2768 @node Customizing Bitmaps
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2769 @section Customizing Fringe Bitmaps
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2770
57274
271dfa08c2d0 (Fringe Bitmaps): Use symbols rather than numbers
Kim F. Storm <storm@cua.dk>
parents: 57225
diff changeset
2771 @defun define-fringe-bitmap bitmap bits &optional height width align
271dfa08c2d0 (Fringe Bitmaps): Use symbols rather than numbers
Kim F. Storm <storm@cua.dk>
parents: 57225
diff changeset
2772 This function defines the symbol @var{bitmap} as a new fringe bitmap,
271dfa08c2d0 (Fringe Bitmaps): Use symbols rather than numbers
Kim F. Storm <storm@cua.dk>
parents: 57225
diff changeset
2773 or replaces an existing bitmap with that name.
57221
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2774
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2775 The argument @var{bits} specifies the image to use. It should be
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2776 either a string or a vector of integers, where each element (an
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2777 integer) corresponds to one row of the bitmap. Each bit of an integer
57274
271dfa08c2d0 (Fringe Bitmaps): Use symbols rather than numbers
Kim F. Storm <storm@cua.dk>
parents: 57225
diff changeset
2778 corresponds to one pixel of the bitmap, where the low bit corresponds
271dfa08c2d0 (Fringe Bitmaps): Use symbols rather than numbers
Kim F. Storm <storm@cua.dk>
parents: 57225
diff changeset
2779 to the rightmost pixel of the bitmap.
57221
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2780
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2781 The height is normally the length of @var{bits}. However, you
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2782 can specify a different height with non-@code{nil} @var{height}. The width
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2783 is normally 8, but you can specify a different width with non-@code{nil}
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2784 @var{width}. The width must be an integer between 1 and 16.
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2785
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2786 The argument @var{align} specifies the positioning of the bitmap
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2787 relative to the range of rows where it is used; the default is to
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2788 center the bitmap. The allowed values are @code{top}, @code{center},
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2789 or @code{bottom}.
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2790
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2791 The @var{align} argument may also be a list @code{(@var{align}
57225
27349bd528f6 Correct typos.
Luc Teirlinck <teirllm@auburn.edu>
parents: 57221
diff changeset
2792 @var{periodic})} where @var{align} is interpreted as described above.
57221
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2793 If @var{periodic} is non-@code{nil}, it specifies that the rows in
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2794 @code{bits} should be repeated enough times to reach the specified
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2795 height.
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2796
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2797 The return value on success is an integer identifying the new bitmap.
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2798 You should save that integer in a variable so it can be used to select
57274
271dfa08c2d0 (Fringe Bitmaps): Use symbols rather than numbers
Kim F. Storm <storm@cua.dk>
parents: 57225
diff changeset
2799 this bitmap.
271dfa08c2d0 (Fringe Bitmaps): Use symbols rather than numbers
Kim F. Storm <storm@cua.dk>
parents: 57225
diff changeset
2800
271dfa08c2d0 (Fringe Bitmaps): Use symbols rather than numbers
Kim F. Storm <storm@cua.dk>
parents: 57225
diff changeset
2801 This function signals an error if there are no more free bitmap slots.
57193
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
2802 @end defun
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
2803
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
2804 @defun destroy-fringe-bitmap bitmap
57221
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2805 This function destroy the fringe bitmap identified by @var{bitmap}.
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2806 If @var{bitmap} identifies a standard fringe bitmap, it actually
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2807 restores the standard definition of that bitmap, instead of
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2808 eliminating it entirely.
57193
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
2809 @end defun
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
2810
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
2811 @defun set-fringe-bitmap-face bitmap &optional face
57221
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2812 This sets the face for the fringe bitmap @var{bitmap} to @var{face}.
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2813 If @var{face} is @code{nil}, it selects the @code{fringe} face. The
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2814 bitmap's face controls the color to draw it in.
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2815
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2816 The face you use here should be derived from @code{fringe}, and should
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2817 specify only the foreground color.
57193
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
2818 @end defun
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
2819
57221
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2820 @defvar indicate-buffer-boundaries
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2821 This buffer-local variable controls how the buffer boundaries and
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2822 window scrolling are indicated in the window fringes.
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2823
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2824 Emacs can indicate the buffer boundaries---that is, the first and last
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2825 line in the buffer---with angle icons when they appear on the screen.
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2826 In addition, Emacs can display an up-arrow in the fringe to show
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2827 that there is text above the screen, and a down-arrow to show
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2828 there is text below the screen.
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2829
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2830 There are four kinds of basic values:
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2831
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2832 @table @asis
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2833 @item @code{nil}
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2834 Don't display the icons.
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2835 @item @code{left}
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2836 Display them in the left fringe.
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2837 @item @code{right}
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2838 Display them in the right fringe.
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2839 @item @var{anything-else}
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2840 Display the icon at the top of the window top in the left fringe, and other
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2841 in the right fringe.
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2842 @end table
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2843
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2844 If value is a cons @code{(@var{angles} . @var{arrows})}, @var{angles}
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2845 controls the angle icons, and @var{arrows} controls the arrows. Both
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2846 @var{angles} and @var{arrows} work according to the table above.
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2847 Thus, @code{(t . right)} places the top angle icon in the left
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2848 fringe, the bottom angle icon in the right fringe, and both arrows in
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2849 the right fringe.
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2850 @end defvar
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2851
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2852 @defvar default-indicate-buffer-boundaries
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2853 The value of this variable is the default value for
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2854 @code{indicate-buffer-boundaries} in buffers that do not override it.
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2855 @end defvar
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2856
52483
3bbb565fa7ac (Fontsets): Add char-displayable-p.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
2857 @node Scroll Bars
3bbb565fa7ac (Fontsets): Add char-displayable-p.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
2858 @section Scroll Bars
3bbb565fa7ac (Fontsets): Add char-displayable-p.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
2859
3bbb565fa7ac (Fontsets): Add char-displayable-p.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
2860 Normally the frame parameter @code{vertical-scroll-bars} controls
3bbb565fa7ac (Fontsets): Add char-displayable-p.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
2861 whether the windows in the frame have vertical scroll bars. A
3bbb565fa7ac (Fontsets): Add char-displayable-p.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
2862 non-@code{nil} parameter value means they do. The frame parameter
3bbb565fa7ac (Fontsets): Add char-displayable-p.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
2863 @code{scroll-bar-width} specifies how wide they are (@code{nil}
3bbb565fa7ac (Fontsets): Add char-displayable-p.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
2864 meaning the default). @xref{Window Frame Parameters}.
3bbb565fa7ac (Fontsets): Add char-displayable-p.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
2865
3bbb565fa7ac (Fontsets): Add char-displayable-p.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
2866 You can also control this for individual windows. Call the function
3bbb565fa7ac (Fontsets): Add char-displayable-p.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
2867 @code{set-window-scroll-bars} to specify what to do for a specific window:
3bbb565fa7ac (Fontsets): Add char-displayable-p.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
2868
3bbb565fa7ac (Fontsets): Add char-displayable-p.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
2869 @defun set-window-scroll-bars window width &optional vertical-type horizontal-type
57221
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2870 This function sets the width and type of scroll bars for window
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2871 @var{window}.
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2872
52483
3bbb565fa7ac (Fontsets): Add char-displayable-p.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
2873 @var{width} specifies the scroll bar width in pixels (@code{nil} means
57221
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2874 use the width specified for the frame). @var{vertical-type} specifies
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2875 whether to have a vertical scroll bar and, if so, where. The possible
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2876 values are @code{left}, @code{right} and @code{nil}, just like the
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2877 values of the @code{vertical-scroll-bars} frame parameter.
52483
3bbb565fa7ac (Fontsets): Add char-displayable-p.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
2878
3bbb565fa7ac (Fontsets): Add char-displayable-p.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
2879 The argument @var{horizontal-type} is meant to specify whether and
3bbb565fa7ac (Fontsets): Add char-displayable-p.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
2880 where to have horizontal scroll bars, but since they are not
57221
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2881 implemented, it has no effect. If @var{window} is @code{nil}, the
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2882 selected window is used.
52483
3bbb565fa7ac (Fontsets): Add char-displayable-p.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
2883 @end defun
3bbb565fa7ac (Fontsets): Add char-displayable-p.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
2884
3bbb565fa7ac (Fontsets): Add char-displayable-p.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
2885 @defun window-scroll-bars &optional window
3bbb565fa7ac (Fontsets): Add char-displayable-p.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
2886 Report the width and type of scroll bars specified for @var{window}.
53929
3ef7a4a3c230 (Fringes): Use consistent wording.
Kim F. Storm <storm@cua.dk>
parents: 53829
diff changeset
2887 If @var{window} is omitted or @code{nil}, the selected window is used.
3ef7a4a3c230 (Fringes): Use consistent wording.
Kim F. Storm <storm@cua.dk>
parents: 53829
diff changeset
2888 The value is a list of the form @code{(@var{width}
52483
3bbb565fa7ac (Fontsets): Add char-displayable-p.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
2889 @var{cols} @var{vertical-type} @var{horizontal-type})}. The value
3bbb565fa7ac (Fontsets): Add char-displayable-p.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
2890 @var{width} is the value that was specified for the width (which may
3bbb565fa7ac (Fontsets): Add char-displayable-p.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
2891 be @code{nil}); @var{cols} is the number of columns that the scroll
3bbb565fa7ac (Fontsets): Add char-displayable-p.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
2892 bar actually occupies.
3bbb565fa7ac (Fontsets): Add char-displayable-p.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
2893
3bbb565fa7ac (Fontsets): Add char-displayable-p.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
2894 @var{horizontal-type} is not actually meaningful.
3bbb565fa7ac (Fontsets): Add char-displayable-p.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
2895 @end defun
3bbb565fa7ac (Fontsets): Add char-displayable-p.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
2896
3bbb565fa7ac (Fontsets): Add char-displayable-p.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
2897 If you don't specify these values for a window with
3bbb565fa7ac (Fontsets): Add char-displayable-p.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
2898 @code{set-window-scroll-bars}, the buffer-local variables
3bbb565fa7ac (Fontsets): Add char-displayable-p.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
2899 @code{scroll-bar-mode} and @code{scroll-bar-width} in the buffer being
3bbb565fa7ac (Fontsets): Add char-displayable-p.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
2900 displayed control the window's vertical scroll bars. The function
3bbb565fa7ac (Fontsets): Add char-displayable-p.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
2901 @code{set-window-buffer} examines these variables. If you change them
3bbb565fa7ac (Fontsets): Add char-displayable-p.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
2902 in a buffer that is already visible in a window, you can make the
3bbb565fa7ac (Fontsets): Add char-displayable-p.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
2903 window take note of the new values by calling @code{set-window-buffer}
3bbb565fa7ac (Fontsets): Add char-displayable-p.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
2904 specifying the same buffer that is already displayed.
3bbb565fa7ac (Fontsets): Add char-displayable-p.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
2905
57201
2950fcfcfa44 Correct various typos.
Luc Teirlinck <teirllm@auburn.edu>
parents: 57193
diff changeset
2906 @node Pointer Shape
2950fcfcfa44 Correct various typos.
Luc Teirlinck <teirllm@auburn.edu>
parents: 57193
diff changeset
2907 @section Pointer Shape
57193
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
2908
57221
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2909 Normally, the mouse pointer has the @code{text} shape over text and
57193
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
2910 the @code{arrow} shape over window areas which do not correspond to
57221
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2911 any buffer text. You can specify the mouse pointer shape over text or
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2912 images via the @code{pointer} text property, and for images with the
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2913 @code{:pointer} and @code{:map} image properties.
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2914
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2915 The available pointer shapes are: @code{text} (or @code{nil}),
57193
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
2916 @code{arrow}, @code{hand}, @code{vdrag}, @code{hdrag},
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
2917 @code{modeline}, and @code{hourglass}.
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
2918
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
2919 @defvar void-text-area-pointer
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
2920 @tindex void-text-area-pointer
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
2921 This variable specifies the mouse pointer shape in void text areas,
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
2922 i.e. the areas after the end of a line or below the last line in the
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
2923 buffer. The default is to use the @code{arrow} (non-text) pointer.
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
2924 @end defvar
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
2925
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2926 @node Display Property
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2927 @section The @code{display} Property
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2928 @cindex display specification
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2929 @kindex display @r{(text property)}
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2930
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
2931 The @code{display} text property (or overlay property) is used to
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
2932 insert images into text, and also control other aspects of how text
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
2933 displays. These features are available starting in Emacs 21. The value
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
2934 of the @code{display} property should be a display specification, or a
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
2935 list or vector containing several display specifications. The rest of
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
2936 this section describes several kinds of display specifications and what
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
2937 they mean.
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2938
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2939 @menu
53467
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
2940 * Specified Space:: Displaying one space with a specified width.
57193
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
2941 * Pixel Specification:: Specifying space width or height in pixels.
53467
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
2942 * Other Display Specs:: Displaying an image; magnifying text; moving it
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48948
diff changeset
2943 up or down on the page; adjusting the width
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
2944 of spaces within text.
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
2945 * Display Margins:: Displaying text or images to the side of the main text.
53467
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
2946 * Conditional Display:: Making any of the above features conditional
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
2947 depending on some Lisp expression.
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2948 @end menu
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2949
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2950 @node Specified Space
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2951 @subsection Specified Spaces
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2952 @cindex spaces, specified height or width
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2953 @cindex specified spaces
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2954 @cindex variable-width spaces
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2955
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2956 To display a space of specified width and/or height, use a display
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
2957 specification of the form @code{(space . @var{props})}, where
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
2958 @var{props} is a property list (a list of alternating properties and
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
2959 values). You can put this property on one or more consecutive
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
2960 characters; a space of the specified height and width is displayed in
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
2961 place of @emph{all} of those characters. These are the properties you
44281
dfabb11c1e1a Minor cleanups.
Richard M. Stallman <rms@gnu.org>
parents: 43290
diff changeset
2962 can use in @var{props} to specify the weight of the space:
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2963
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2964 @table @code
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2965 @item :width @var{width}
57193
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
2966 If @var{width} is an integer or floating point number, it specifies
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
2967 that the space width should be @var{width} times the normal character
57221
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2968 width. @var{width} can also be a @dfn{pixel width} specification
57193
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
2969 (@pxref{Pixel Specification}).
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2970
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2971 @item :relative-width @var{factor}
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2972 Specifies that the width of the stretch should be computed from the
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2973 first character in the group of consecutive characters that have the
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2974 same @code{display} property. The space width is the width of that
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2975 character, multiplied by @var{factor}.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2976
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2977 @item :align-to @var{hpos}
57193
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
2978 Specifies that the space should be wide enough to reach @var{hpos}.
57221
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2979 If @var{hpos} is a number, it is measured in units of the normal
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2980 character width. @var{hpos} can also be a @dfn{pixel width}
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2981 specification (@pxref{Pixel Specification}).
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2982 @end table
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2983
44281
dfabb11c1e1a Minor cleanups.
Richard M. Stallman <rms@gnu.org>
parents: 43290
diff changeset
2984 You should use one and only one of the above properties. You can
57221
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
2985 also specify the height of the space, with these properties:
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2986
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2987 @table @code
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2988 @item :height @var{height}
57193
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
2989 Specifies the height of the space.
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
2990 If @var{height} is an integer or floating point number, it specifies
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
2991 that the space height should be @var{height} times the normal character
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
2992 height. The @var{height} may also be a @dfn{pixel height} specification
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
2993 (@pxref{Pixel Specification}).
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2994
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2995 @item :relative-height @var{factor}
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2996 Specifies the height of the space, multiplying the ordinary height
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2997 of the text having this display specification by @var{factor}.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2998
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
2999 @item :ascent @var{ascent}
57193
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3000 If the value of @var{ascent} is a non-negative number no greater than
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3001 100, it specifies that @var{ascent} percent of the height of the space
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3002 should be considered as the ascent of the space---that is, the part
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3003 above the baseline. The ascent may also be specified in pixel units
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3004 with a @dfn{pixel ascent} specification (@pxref{Pixel Specification}).
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3005
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3006 @end table
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3007
44281
dfabb11c1e1a Minor cleanups.
Richard M. Stallman <rms@gnu.org>
parents: 43290
diff changeset
3008 Don't use both @code{:height} and @code{:relative-height} together.
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3009
57221
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
3010 The @code{:height} and @code{:align-to} properties are supported on
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
3011 non-graphic terminals, but the other space properties in this section
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
3012 are not.
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
3013
57193
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3014 @node Pixel Specification
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3015 @subsection Pixel Specification for Spaces
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3016 @cindex spaces, pixel specification
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3017
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3018 The value of the @code{:width}, @code{:align-to}, @code{:height},
57221
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
3019 and @code{:ascent} properties can be a special kind of expression that
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
3020 is evaluated during redisplay. The result of the evaluation is used
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
3021 as an absolute number of pixels.
57193
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3022
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3023 The following expressions are supported:
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3024
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3025 @example
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3026 @group
57274
271dfa08c2d0 (Fringe Bitmaps): Use symbols rather than numbers
Kim F. Storm <storm@cua.dk>
parents: 57225
diff changeset
3027 @var{expr} ::= @var{num} | (@var{num}) | @var{unit} | @var{elem} | @var{pos} | @var{image} | @var{form}
57221
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
3028 @var{num} ::= @var{integer} | @var{float} | @var{symbol}
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
3029 @var{unit} ::= in | mm | cm | width | height
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
3030 @var{elem} ::= left-fringe | right-fringe | left-margin | right-margin
57193
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3031 | scroll-bar | text
57221
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
3032 @var{pos} ::= left | center | right
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
3033 @var{form} ::= (@var{num} . @var{expr}) | (@var{op} @var{expr} ...)
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
3034 @var{op} ::= + | -
57193
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3035 @end group
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3036 @end example
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3037
57221
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
3038 The form @var{num} specifies a fraction of the default frame font
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
3039 height or width. The form @code{(@var{num})} specifies an absolute
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
3040 number of pixels. If @var{num} is a symbol, @var{symbol}, its
57193
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3041 buffer-local variable binding is used.
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3042
57221
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
3043 The @code{in}, @code{mm}, and @code{cm} units specify the number of
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
3044 pixels per inch, millimeter, and centimeter, respectively. The
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
3045 @code{width} and @code{height} units correspond to the default width
57274
271dfa08c2d0 (Fringe Bitmaps): Use symbols rather than numbers
Kim F. Storm <storm@cua.dk>
parents: 57225
diff changeset
3046 and height of the current face. An image specification @code{image}
57193
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3047 corresponds to the width or height of the image.
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3048
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3049 The @code{left-fringe}, @code{right-fringe}, @code{left-margin},
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3050 @code{right-margin}, @code{scroll-bar}, and @code{text} elements
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3051 specify to the width of the corresponding area of the window.
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3052
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3053 The @code{left}, @code{center}, and @code{right} positions can be
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3054 used with @code{:align-to} to specify a position relative to the left
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3055 edge, center, or right edge of the text area.
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3056
57221
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
3057 Any of the above window elements (except @code{text}) can also be
57193
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3058 used with @code{:align-to} to specify that the position is relative to
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3059 the left edge of the given area. Once the base offset for a relative
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3060 position has been set (by the first occurrence of one of these
57225
27349bd528f6 Correct typos.
Luc Teirlinck <teirllm@auburn.edu>
parents: 57221
diff changeset
3061 symbols), further occurrences of these symbols are interpreted as the
57193
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3062 width of the specified area. For example, to align to the center of
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3063 the left-margin, use
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3064
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3065 @example
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3066 :align-to (+ left-margin (0.5 . left-margin))
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3067 @end example
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3068
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3069 If no specific base offset is set for alignment, it is always relative
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3070 to the left edge of the text area. For example, @samp{:align-to 0} in a
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3071 header-line aligns with the first text column in the text area.
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3072
57221
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
3073 A value of the form @code{(@var{num} . @var{expr})} stands
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
3074 multiplying the values of @var{num} and @var{expr}. For example,
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
3075 @code{(2 . in)} specifies a width of 2 inches, while @code{(0.5 .
57274
271dfa08c2d0 (Fringe Bitmaps): Use symbols rather than numbers
Kim F. Storm <storm@cua.dk>
parents: 57225
diff changeset
3076 @var{image})} specifies half the width (or height) of the specified image.
57221
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
3077
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
3078 The form @code{(+ @var{expr} ...)} adds up the value of the
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
3079 expressions. The form @code{(- @var{expr} ...)} negates or subtracts
57193
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3080 the value of the expressions.
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3081
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3082 @node Other Display Specs
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3083 @subsection Other Display Specifications
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3084
57221
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
3085 Here are the other sorts of display specifications that you can use
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
3086 in the @code{display} text property.
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
3087
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3088 @table @code
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3089 @item (image . @var{image-props})
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3090 This is in fact an image descriptor (@pxref{Images}). When used as a
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3091 display specification, it means to display the image instead of the text
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3092 that has the display specification.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3093
57193
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3094 @item (slice @var{x} @var{y} @var{width} @var{height})
57221
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
3095 This specification together with @code{image} specifies a @dfn{slice}
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
3096 (a partial area) of the image to display. The elements @var{y} and
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
3097 @var{x} specify the top left corner of the slice, within the image;
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
3098 @var{width} and @var{height} specify the width and height of the
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
3099 slice. Integer values are numbers of pixels. A floating point number
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
3100 in the range 0.0--1.0 stands for that fraction of the width or height
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
3101 of the entire image.
57193
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3102
32467
d8a494b62fbd string display property
Dave Love <fx@gnu.org>
parents: 32261
diff changeset
3103 @item ((margin nil) @var{string})
d8a494b62fbd string display property
Dave Love <fx@gnu.org>
parents: 32261
diff changeset
3104 @itemx @var{string}
d8a494b62fbd string display property
Dave Love <fx@gnu.org>
parents: 32261
diff changeset
3105 A display specification of this form means to display @var{string}
d8a494b62fbd string display property
Dave Love <fx@gnu.org>
parents: 32261
diff changeset
3106 instead of the text that has the display specification, at the same
d8a494b62fbd string display property
Dave Love <fx@gnu.org>
parents: 32261
diff changeset
3107 position as that text. This is a special case of marginal display
d8a494b62fbd string display property
Dave Love <fx@gnu.org>
parents: 32261
diff changeset
3108 (@pxref{Display Margins}).
d8a494b62fbd string display property
Dave Love <fx@gnu.org>
parents: 32261
diff changeset
3109
44281
dfabb11c1e1a Minor cleanups.
Richard M. Stallman <rms@gnu.org>
parents: 43290
diff changeset
3110 Recursive display specifications are not supported---string display
dfabb11c1e1a Minor cleanups.
Richard M. Stallman <rms@gnu.org>
parents: 43290
diff changeset
3111 specifications must not have @code{display} properties themselves.
36935
1ac3e0f3e75a *** empty log message ***
Dave Love <fx@gnu.org>
parents: 36730
diff changeset
3112
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3113 @item (space-width @var{factor})
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
3114 This display specification affects all the space characters within the
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
3115 text that has the specification. It displays all of these spaces
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
3116 @var{factor} times as wide as normal. The element @var{factor} should
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
3117 be an integer or float. Characters other than spaces are not affected
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
3118 at all; in particular, this has no effect on tab characters.
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3119
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3120 @item (height @var{height})
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3121 This display specification makes the text taller or shorter.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3122 Here are the possibilities for @var{height}:
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3123
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3124 @table @asis
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3125 @item @code{(+ @var{n})}
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3126 This means to use a font that is @var{n} steps larger. A ``step'' is
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
3127 defined by the set of available fonts---specifically, those that match
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
3128 what was otherwise specified for this text, in all attributes except
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
3129 height. Each size for which a suitable font is available counts as
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
3130 another step. @var{n} should be an integer.
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3131
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3132 @item @code{(- @var{n})}
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3133 This means to use a font that is @var{n} steps smaller.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3134
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3135 @item a number, @var{factor}
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3136 A number, @var{factor}, means to use a font that is @var{factor} times
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3137 as tall as the default font.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3138
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3139 @item a symbol, @var{function}
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3140 A symbol is a function to compute the height. It is called with the
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3141 current height as argument, and should return the new height to use.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3142
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3143 @item anything else, @var{form}
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3144 If the @var{height} value doesn't fit the previous possibilities, it is
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3145 a form. Emacs evaluates it to get the new height, with the symbol
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3146 @code{height} bound to the current specified font height.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3147 @end table
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3148
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3149 @item (raise @var{factor})
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3150 This kind of display specification raises or lowers the text
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3151 it applies to, relative to the baseline of the line.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3152
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3153 @var{factor} must be a number, which is interpreted as a multiple of the
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3154 height of the affected text. If it is positive, that means to display
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3155 the characters raised. If it is negative, that means to display them
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3156 lower down.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3157
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3158 If the text also has a @code{height} display specification, that does
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3159 not affect the amount of raising or lowering, which is based on the
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3160 faces used for the text.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3161 @end table
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3162
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3163 @node Display Margins
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3164 @subsection Displaying in the Margins
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3165 @cindex display margins
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3166 @cindex margins, display
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3167
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3168 A buffer can have blank areas called @dfn{display margins} on the left
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3169 and on the right. Ordinary text never appears in these areas, but you
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3170 can put things into the display margins using the @code{display}
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3171 property.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3172
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3173 To put text in the left or right display margin of the window, use a
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3174 display specification of the form @code{(margin right-margin)} or
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3175 @code{(margin left-margin)} on it. To put an image in a display margin,
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3176 use that display specification along with the display specification for
42476
fe0b84badbb1 Margin displays can't be mouse sensitive.
Richard M. Stallman <rms@gnu.org>
parents: 42297
diff changeset
3177 the image. Unfortunately, there is currently no way to make
fe0b84badbb1 Margin displays can't be mouse sensitive.
Richard M. Stallman <rms@gnu.org>
parents: 42297
diff changeset
3178 text or images in the margin mouse-sensitive.
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3179
42297
c4f9d48801a8 Explain using a before-string to put something in the margin.
Richard M. Stallman <rms@gnu.org>
parents: 42082
diff changeset
3180 If you put such a display specification directly on text in the
c4f9d48801a8 Explain using a before-string to put something in the margin.
Richard M. Stallman <rms@gnu.org>
parents: 42082
diff changeset
3181 buffer, the specified margin display appears @emph{instead of} that
c4f9d48801a8 Explain using a before-string to put something in the margin.
Richard M. Stallman <rms@gnu.org>
parents: 42082
diff changeset
3182 buffer text itself. To put something in the margin @emph{in
c4f9d48801a8 Explain using a before-string to put something in the margin.
Richard M. Stallman <rms@gnu.org>
parents: 42082
diff changeset
3183 association with} certain buffer text without preventing or altering
c4f9d48801a8 Explain using a before-string to put something in the margin.
Richard M. Stallman <rms@gnu.org>
parents: 42082
diff changeset
3184 the display of that text, put a @code{before-string} property on the
c4f9d48801a8 Explain using a before-string to put something in the margin.
Richard M. Stallman <rms@gnu.org>
parents: 42082
diff changeset
3185 text and put the display specification on the contents of the
c4f9d48801a8 Explain using a before-string to put something in the margin.
Richard M. Stallman <rms@gnu.org>
parents: 42082
diff changeset
3186 before-string.
c4f9d48801a8 Explain using a before-string to put something in the margin.
Richard M. Stallman <rms@gnu.org>
parents: 42082
diff changeset
3187
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3188 Before the display margins can display anything, you must give
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3189 them a nonzero width. The usual way to do that is to set these
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3190 variables:
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3191
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3192 @defvar left-margin-width
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3193 @tindex left-margin-width
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3194 This variable specifies the width of the left margin.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3195 It is buffer-local in all buffers.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3196 @end defvar
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3197
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3198 @defvar right-margin-width
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3199 @tindex right-margin-width
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3200 This variable specifies the width of the right margin.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3201 It is buffer-local in all buffers.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3202 @end defvar
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3203
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3204 Setting these variables does not immediately affect the window. These
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3205 variables are checked when a new buffer is displayed in the window.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3206 Thus, you can make changes take effect by calling
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3207 @code{set-window-buffer}.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3208
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3209 You can also set the margin widths immediately.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3210
36935
1ac3e0f3e75a *** empty log message ***
Dave Love <fx@gnu.org>
parents: 36730
diff changeset
3211 @defun set-window-margins window left &optional right
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3212 @tindex set-window-margins
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3213 This function specifies the margin widths for window @var{window}.
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48948
diff changeset
3214 The argument @var{left} controls the left margin and
36935
1ac3e0f3e75a *** empty log message ***
Dave Love <fx@gnu.org>
parents: 36730
diff changeset
3215 @var{right} controls the right margin (default @code{0}).
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3216 @end defun
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3217
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3218 @defun window-margins &optional window
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3219 @tindex window-margins
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3220 This function returns the left and right margins of @var{window}
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3221 as a cons cell of the form @code{(@var{left} . @var{right})}.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3222 If @var{window} is @code{nil}, the selected window is used.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3223 @end defun
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3224
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3225 @node Conditional Display
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3226 @subsection Conditional Display Specifications
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3227 @cindex conditional display specifications
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3228
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3229 You can make any display specification conditional. To do that,
29471
215b57502518 *** empty log message ***
Dave Love <fx@gnu.org>
parents: 29151
diff changeset
3230 package it in another list of the form @code{(when @var{condition} .
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3231 @var{spec})}. Then the specification @var{spec} applies only when
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3232 @var{condition} evaluates to a non-@code{nil} value. During the
39032
ed864621a68e Conditional Display): Adjust to API change.
Gerd Moellmann <gerd@gnu.org>
parents: 38278
diff changeset
3233 evaluation, @code{object} is bound to the string or buffer having the
ed864621a68e Conditional Display): Adjust to API change.
Gerd Moellmann <gerd@gnu.org>
parents: 38278
diff changeset
3234 conditional @code{display} property. @code{position} and
ed864621a68e Conditional Display): Adjust to API change.
Gerd Moellmann <gerd@gnu.org>
parents: 38278
diff changeset
3235 @code{buffer-position} are bound to the position within @code{object}
ed864621a68e Conditional Display): Adjust to API change.
Gerd Moellmann <gerd@gnu.org>
parents: 38278
diff changeset
3236 and the buffer position where the @code{display} property was found,
ed864621a68e Conditional Display): Adjust to API change.
Gerd Moellmann <gerd@gnu.org>
parents: 38278
diff changeset
3237 respectively. Both positions can be different when @code{object} is a
ed864621a68e Conditional Display): Adjust to API change.
Gerd Moellmann <gerd@gnu.org>
parents: 38278
diff changeset
3238 string.
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3239
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3240 @node Images
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3241 @section Images
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3242 @cindex images in buffers
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3243
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3244 To display an image in an Emacs buffer, you must first create an image
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3245 descriptor, then use it as a display specifier in the @code{display}
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3246 property of text that is displayed (@pxref{Display Property}). Like the
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3247 @code{display} property, this feature is available starting in Emacs 21.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3248
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3249 Emacs can display a number of different image formats; some of them
56109
53374ab0a92d (Images): Document new delayed library loading, variable
Juanma Barranquero <lekktu@gmail.com>
parents: 56020
diff changeset
3250 are supported only if particular support libraries are installed on
53374ab0a92d (Images): Document new delayed library loading, variable
Juanma Barranquero <lekktu@gmail.com>
parents: 56020
diff changeset
3251 your machine. In some environments, Emacs allows loading image
53374ab0a92d (Images): Document new delayed library loading, variable
Juanma Barranquero <lekktu@gmail.com>
parents: 56020
diff changeset
3252 libraries on demand; if so, the variable @code{image-library-alist}
53374ab0a92d (Images): Document new delayed library loading, variable
Juanma Barranquero <lekktu@gmail.com>
parents: 56020
diff changeset
3253 can be used to modify the set of known names for these dynamic
57225
27349bd528f6 Correct typos.
Luc Teirlinck <teirllm@auburn.edu>
parents: 57221
diff changeset
3254 libraries (though it is not possible to add new image formats).
56109
53374ab0a92d (Images): Document new delayed library loading, variable
Juanma Barranquero <lekktu@gmail.com>
parents: 56020
diff changeset
3255
53374ab0a92d (Images): Document new delayed library loading, variable
Juanma Barranquero <lekktu@gmail.com>
parents: 56020
diff changeset
3256 The supported image formats include XBM, XPM (needing the
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3257 libraries @code{libXpm} version 3.4k and @code{libz}), GIF (needing
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3258 @code{libungif} 4.1.0), Postscript, PBM, JPEG (needing the
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3259 @code{libjpeg} library version v6a), TIFF (needing @code{libtiff} v3.4),
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3260 and PNG (needing @code{libpng} 1.0.2).
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3261
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3262 You specify one of these formats with an image type symbol. The image
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3263 type symbols are @code{xbm}, @code{xpm}, @code{gif}, @code{postscript},
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3264 @code{pbm}, @code{jpeg}, @code{tiff}, and @code{png}.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3265
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3266 @defvar image-types
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3267 This variable contains a list of those image type symbols that are
56109
53374ab0a92d (Images): Document new delayed library loading, variable
Juanma Barranquero <lekktu@gmail.com>
parents: 56020
diff changeset
3268 potentially supported in the current configuration.
53374ab0a92d (Images): Document new delayed library loading, variable
Juanma Barranquero <lekktu@gmail.com>
parents: 56020
diff changeset
3269 @emph{Potentially} here means that Emacs knows about the image types,
53374ab0a92d (Images): Document new delayed library loading, variable
Juanma Barranquero <lekktu@gmail.com>
parents: 56020
diff changeset
3270 not necessarily that they can be loaded (they could depend on
53374ab0a92d (Images): Document new delayed library loading, variable
Juanma Barranquero <lekktu@gmail.com>
parents: 56020
diff changeset
3271 unavailable dynamic libraries, for example).
53374ab0a92d (Images): Document new delayed library loading, variable
Juanma Barranquero <lekktu@gmail.com>
parents: 56020
diff changeset
3272
53374ab0a92d (Images): Document new delayed library loading, variable
Juanma Barranquero <lekktu@gmail.com>
parents: 56020
diff changeset
3273 To know which image types are really available, use
53374ab0a92d (Images): Document new delayed library loading, variable
Juanma Barranquero <lekktu@gmail.com>
parents: 56020
diff changeset
3274 @code{image-type-available-p}.
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3275 @end defvar
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3276
56109
53374ab0a92d (Images): Document new delayed library loading, variable
Juanma Barranquero <lekktu@gmail.com>
parents: 56020
diff changeset
3277 @defvar image-library-alist
53374ab0a92d (Images): Document new delayed library loading, variable
Juanma Barranquero <lekktu@gmail.com>
parents: 56020
diff changeset
3278 This in an alist of image types vs external libraries needed to
53374ab0a92d (Images): Document new delayed library loading, variable
Juanma Barranquero <lekktu@gmail.com>
parents: 56020
diff changeset
3279 display them.
53374ab0a92d (Images): Document new delayed library loading, variable
Juanma Barranquero <lekktu@gmail.com>
parents: 56020
diff changeset
3280
56437
bd1f1cbf959f (Images): Fix Texinfo usage.
Juanma Barranquero <lekktu@gmail.com>
parents: 56233
diff changeset
3281 Each element is a list @code{(@var{image-type} @var{library}...)},
56109
53374ab0a92d (Images): Document new delayed library loading, variable
Juanma Barranquero <lekktu@gmail.com>
parents: 56020
diff changeset
3282 where the car is a supported image format from @code{image-types}, and
53374ab0a92d (Images): Document new delayed library loading, variable
Juanma Barranquero <lekktu@gmail.com>
parents: 56020
diff changeset
3283 the rest are strings giving alternate filenames for the corresponding
53374ab0a92d (Images): Document new delayed library loading, variable
Juanma Barranquero <lekktu@gmail.com>
parents: 56020
diff changeset
3284 external libraries to load.
53374ab0a92d (Images): Document new delayed library loading, variable
Juanma Barranquero <lekktu@gmail.com>
parents: 56020
diff changeset
3285
56185
4f36c90f5404 (Images): Remove redundant @vindex directives.
Juanma Barranquero <lekktu@gmail.com>
parents: 56109
diff changeset
3286 Emacs tries to load the libraries in the order they appear on the
4f36c90f5404 (Images): Remove redundant @vindex directives.
Juanma Barranquero <lekktu@gmail.com>
parents: 56109
diff changeset
3287 list; if none is loaded, the running session of Emacs won't support
4f36c90f5404 (Images): Remove redundant @vindex directives.
Juanma Barranquero <lekktu@gmail.com>
parents: 56109
diff changeset
3288 the image type. @code{pbm} and @code{xbm} don't need to be listed;
56109
53374ab0a92d (Images): Document new delayed library loading, variable
Juanma Barranquero <lekktu@gmail.com>
parents: 56020
diff changeset
3289 they're always supported.
53374ab0a92d (Images): Document new delayed library loading, variable
Juanma Barranquero <lekktu@gmail.com>
parents: 56020
diff changeset
3290
53374ab0a92d (Images): Document new delayed library loading, variable
Juanma Barranquero <lekktu@gmail.com>
parents: 56020
diff changeset
3291 This variable is ignored if the image libraries are statically linked
53374ab0a92d (Images): Document new delayed library loading, variable
Juanma Barranquero <lekktu@gmail.com>
parents: 56020
diff changeset
3292 into Emacs.
53374ab0a92d (Images): Document new delayed library loading, variable
Juanma Barranquero <lekktu@gmail.com>
parents: 56020
diff changeset
3293 @end defvar
53374ab0a92d (Images): Document new delayed library loading, variable
Juanma Barranquero <lekktu@gmail.com>
parents: 56020
diff changeset
3294
53374ab0a92d (Images): Document new delayed library loading, variable
Juanma Barranquero <lekktu@gmail.com>
parents: 56020
diff changeset
3295 @defun image-type-available-p type
53374ab0a92d (Images): Document new delayed library loading, variable
Juanma Barranquero <lekktu@gmail.com>
parents: 56020
diff changeset
3296 @findex image-type-available-p
53374ab0a92d (Images): Document new delayed library loading, variable
Juanma Barranquero <lekktu@gmail.com>
parents: 56020
diff changeset
3297
56437
bd1f1cbf959f (Images): Fix Texinfo usage.
Juanma Barranquero <lekktu@gmail.com>
parents: 56233
diff changeset
3298 This function returns non-@code{nil} if image type @var{type} is
bd1f1cbf959f (Images): Fix Texinfo usage.
Juanma Barranquero <lekktu@gmail.com>
parents: 56233
diff changeset
3299 available, i.e., if images of this type can be loaded and displayed in
bd1f1cbf959f (Images): Fix Texinfo usage.
Juanma Barranquero <lekktu@gmail.com>
parents: 56233
diff changeset
3300 Emacs. @var{type} should be one of the types contained in
bd1f1cbf959f (Images): Fix Texinfo usage.
Juanma Barranquero <lekktu@gmail.com>
parents: 56233
diff changeset
3301 @code{image-types}.
56109
53374ab0a92d (Images): Document new delayed library loading, variable
Juanma Barranquero <lekktu@gmail.com>
parents: 56020
diff changeset
3302
53374ab0a92d (Images): Document new delayed library loading, variable
Juanma Barranquero <lekktu@gmail.com>
parents: 56020
diff changeset
3303 For image types whose support libraries are statically linked, this
53374ab0a92d (Images): Document new delayed library loading, variable
Juanma Barranquero <lekktu@gmail.com>
parents: 56020
diff changeset
3304 function always returns @code{t}; for other image types, it returns
53374ab0a92d (Images): Document new delayed library loading, variable
Juanma Barranquero <lekktu@gmail.com>
parents: 56020
diff changeset
3305 @code{t} if the dynamic library could be loaded, @code{nil} otherwise.
53374ab0a92d (Images): Document new delayed library loading, variable
Juanma Barranquero <lekktu@gmail.com>
parents: 56020
diff changeset
3306 @end defun
53374ab0a92d (Images): Document new delayed library loading, variable
Juanma Barranquero <lekktu@gmail.com>
parents: 56020
diff changeset
3307
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3308 @menu
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
3309 * Image Descriptors:: How to specify an image for use in @code{:display}.
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
3310 * XBM Images:: Special features for XBM format.
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
3311 * XPM Images:: Special features for XPM format.
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
3312 * GIF Images:: Special features for GIF format.
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
3313 * Postscript Images:: Special features for Postscript format.
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
3314 * Other Image Types:: Various other formats are supported.
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
3315 * Defining Images:: Convenient ways to define an image for later use.
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
3316 * Showing Images:: Convenient ways to display an image once it is defined.
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
3317 * Image Cache:: Internal mechanisms of image display.
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3318 @end menu
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3319
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3320 @node Image Descriptors
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3321 @subsection Image Descriptors
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3322 @cindex image descriptor
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3323
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3324 An image description is a list of the form @code{(image
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3325 . @var{props})}, where @var{props} is a property list containing
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3326 alternating keyword symbols (symbols whose names start with a colon) and
26400
53eeb3b7c785 Patch from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 26221
diff changeset
3327 their values. You can use any Lisp object as a property, but the only
53eeb3b7c785 Patch from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 26221
diff changeset
3328 properties that have any special meaning are certain symbols, all of
53eeb3b7c785 Patch from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 26221
diff changeset
3329 them keywords.
53eeb3b7c785 Patch from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 26221
diff changeset
3330
53eeb3b7c785 Patch from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 26221
diff changeset
3331 Every image descriptor must contain the property @code{:type
53eeb3b7c785 Patch from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 26221
diff changeset
3332 @var{type}} to specify the format of the image. The value of @var{type}
53eeb3b7c785 Patch from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 26221
diff changeset
3333 should be an image type symbol; for example, @code{xpm} for an image in
53eeb3b7c785 Patch from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 26221
diff changeset
3334 XPM format.
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3335
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3336 Here is a list of other properties that are meaningful for all image
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3337 types:
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3338
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3339 @table @code
36730
1c038a1a02a1 Move :file, :data and :margin first in the table
Richard M. Stallman <rms@gnu.org>
parents: 36351
diff changeset
3340 @item :file @var{file}
1c038a1a02a1 Move :file, :data and :margin first in the table
Richard M. Stallman <rms@gnu.org>
parents: 36351
diff changeset
3341 The @code{:file} property specifies to load the image from file
1c038a1a02a1 Move :file, :data and :margin first in the table
Richard M. Stallman <rms@gnu.org>
parents: 36351
diff changeset
3342 @var{file}. If @var{file} is not an absolute file name, it is expanded
1c038a1a02a1 Move :file, :data and :margin first in the table
Richard M. Stallman <rms@gnu.org>
parents: 36351
diff changeset
3343 in @code{data-directory}.
1c038a1a02a1 Move :file, :data and :margin first in the table
Richard M. Stallman <rms@gnu.org>
parents: 36351
diff changeset
3344
1c038a1a02a1 Move :file, :data and :margin first in the table
Richard M. Stallman <rms@gnu.org>
parents: 36351
diff changeset
3345 @item :data @var{data}
1c038a1a02a1 Move :file, :data and :margin first in the table
Richard M. Stallman <rms@gnu.org>
parents: 36351
diff changeset
3346 The @code{:data} property specifies the actual contents of the image.
1c038a1a02a1 Move :file, :data and :margin first in the table
Richard M. Stallman <rms@gnu.org>
parents: 36351
diff changeset
3347 Each image must use either @code{:data} or @code{:file}, but not both.
1c038a1a02a1 Move :file, :data and :margin first in the table
Richard M. Stallman <rms@gnu.org>
parents: 36351
diff changeset
3348 For most image types, the value of the @code{:data} property should be a
1c038a1a02a1 Move :file, :data and :margin first in the table
Richard M. Stallman <rms@gnu.org>
parents: 36351
diff changeset
3349 string containing the image data; we recommend using a unibyte string.
1c038a1a02a1 Move :file, :data and :margin first in the table
Richard M. Stallman <rms@gnu.org>
parents: 36351
diff changeset
3350
1c038a1a02a1 Move :file, :data and :margin first in the table
Richard M. Stallman <rms@gnu.org>
parents: 36351
diff changeset
3351 Before using @code{:data}, look for further information in the section
1c038a1a02a1 Move :file, :data and :margin first in the table
Richard M. Stallman <rms@gnu.org>
parents: 36351
diff changeset
3352 below describing the specific image format. For some image types,
1c038a1a02a1 Move :file, :data and :margin first in the table
Richard M. Stallman <rms@gnu.org>
parents: 36351
diff changeset
3353 @code{:data} may not be supported; for some, it allows other data types;
1c038a1a02a1 Move :file, :data and :margin first in the table
Richard M. Stallman <rms@gnu.org>
parents: 36351
diff changeset
3354 for some, @code{:data} alone is not enough, so you need to use other
1c038a1a02a1 Move :file, :data and :margin first in the table
Richard M. Stallman <rms@gnu.org>
parents: 36351
diff changeset
3355 image properties along with @code{:data}.
1c038a1a02a1 Move :file, :data and :margin first in the table
Richard M. Stallman <rms@gnu.org>
parents: 36351
diff changeset
3356
1c038a1a02a1 Move :file, :data and :margin first in the table
Richard M. Stallman <rms@gnu.org>
parents: 36351
diff changeset
3357 @item :margin @var{margin}
1c038a1a02a1 Move :file, :data and :margin first in the table
Richard M. Stallman <rms@gnu.org>
parents: 36351
diff changeset
3358 The @code{:margin} property specifies how many pixels to add as an
51000
72af65197e01 Fix typos. Patch from Jesper Harder <harder@ifa.au.dk>.
Juanma Barranquero <lekktu@gmail.com>
parents: 49600
diff changeset
3359 extra margin around the image. The value, @var{margin}, must be a
36730
1c038a1a02a1 Move :file, :data and :margin first in the table
Richard M. Stallman <rms@gnu.org>
parents: 36351
diff changeset
3360 non-negative number, or a pair @code{(@var{x} . @var{y})} of such
1c038a1a02a1 Move :file, :data and :margin first in the table
Richard M. Stallman <rms@gnu.org>
parents: 36351
diff changeset
3361 numbers. If it is a pair, @var{x} specifies how many pixels to add
1c038a1a02a1 Move :file, :data and :margin first in the table
Richard M. Stallman <rms@gnu.org>
parents: 36351
diff changeset
3362 horizontally, and @var{y} specifies how many pixels to add vertically.
1c038a1a02a1 Move :file, :data and :margin first in the table
Richard M. Stallman <rms@gnu.org>
parents: 36351
diff changeset
3363 If @code{:margin} is not specified, the default is zero.
1c038a1a02a1 Move :file, :data and :margin first in the table
Richard M. Stallman <rms@gnu.org>
parents: 36351
diff changeset
3364
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3365 @item :ascent @var{ascent}
29151
fa8f476affa7 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 29102
diff changeset
3366 The @code{:ascent} property specifies the amount of the image's
fa8f476affa7 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 29102
diff changeset
3367 height to use for its ascent---that is, the part above the baseline.
fa8f476affa7 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 29102
diff changeset
3368 The value, @var{ascent}, must be a number in the range 0 to 100, or
fa8f476affa7 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 29102
diff changeset
3369 the symbol @code{center}.
fa8f476affa7 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 29102
diff changeset
3370
fa8f476affa7 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 29102
diff changeset
3371 If @var{ascent} is a number, that percentage of the image's height is
fa8f476affa7 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 29102
diff changeset
3372 used for its ascent.
fa8f476affa7 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 29102
diff changeset
3373
fa8f476affa7 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 29102
diff changeset
3374 If @var{ascent} is @code{center}, the image is vertically centered
fa8f476affa7 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 29102
diff changeset
3375 around a centerline which would be the vertical centerline of text drawn
fa8f476affa7 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 29102
diff changeset
3376 at the position of the image, in the manner specified by the text
fa8f476affa7 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 29102
diff changeset
3377 properties and overlays that apply to the image.
fa8f476affa7 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 29102
diff changeset
3378
fa8f476affa7 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 29102
diff changeset
3379 If this property is omitted, it defaults to 50.
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3380
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3381 @item :relief @var{relief}
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3382 The @code{:relief} property, if non-@code{nil}, adds a shadow rectangle
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3383 around the image. The value, @var{relief}, specifies the width of the
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3384 shadow lines, in pixels. If @var{relief} is negative, shadows are drawn
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3385 so that the image appears as a pressed button; otherwise, it appears as
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3386 an unpressed button.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3387
35364
19c93f3ebdce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 35278
diff changeset
3388 @item :conversion @var{algorithm}
19c93f3ebdce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 35278
diff changeset
3389 The @code{:conversion} property, if non-@code{nil}, specifies a
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3390 conversion algorithm that should be applied to the image before it is
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3391 displayed; the value, @var{algorithm}, specifies which algorithm.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3392
33996
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3393 @table @code
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3394 @item laplace
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3395 @itemx emboss
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3396 Specifies the Laplace edge detection algorithm, which blurs out small
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3397 differences in color while highlighting larger differences. People
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3398 sometimes consider this useful for displaying the image for a
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3399 ``disabled'' button.
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3400
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3401 @item (edge-detection :matrix @var{matrix} :color-adjust @var{adjust})
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3402 Specifies a general edge-detection algorithm. @var{matrix} must be
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3403 either a nine-element list or a nine-element vector of numbers. A pixel
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3404 at position @math{x/y} in the transformed image is computed from
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3405 original pixels around that position. @var{matrix} specifies, for each
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3406 pixel in the neighborhood of @math{x/y}, a factor with which that pixel
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3407 will influence the transformed pixel; element @math{0} specifies the
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3408 factor for the pixel at @math{x-1/y-1}, element @math{1} the factor for
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3409 the pixel at @math{x/y-1} etc., as shown below:
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3410 @iftex
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3411 @tex
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3412 $$\pmatrix{x-1/y-1 & x/y-1 & x+1/y-1 \cr
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3413 x-1/y & x/y & x+1/y \cr
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3414 x-1/y+1& x/y+1 & x+1/y+1 \cr}$$
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3415 @end tex
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3416 @end iftex
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3417 @ifnottex
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3418 @display
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3419 (x-1/y-1 x/y-1 x+1/y-1
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3420 x-1/y x/y x+1/y
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3421 x-1/y+1 x/y+1 x+1/y+1)
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3422 @end display
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3423 @end ifnottex
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3424
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3425 The resulting pixel is computed from the color intensity of the color
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3426 resulting from summing up the RGB values of surrounding pixels,
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3427 multiplied by the specified factors, and dividing that sum by the sum
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3428 of the factors' absolute values.
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3429
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3430 Laplace edge-detection currently uses a matrix of
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3431 @iftex
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3432 @tex
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3433 $$\pmatrix{1 & 0 & 0 \cr
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3434 0& 0 & 0 \cr
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3435 9 & 9 & -1 \cr}$$
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3436 @end tex
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3437 @end iftex
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3438 @ifnottex
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3439 @display
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3440 (1 0 0
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3441 0 0 0
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3442 9 9 -1)
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3443 @end display
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3444 @end ifnottex
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3445
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3446 Emboss edge-detection uses a matrix of
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3447 @iftex
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3448 @tex
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3449 $$\pmatrix{ 2 & -1 & 0 \cr
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3450 -1 & 0 & 1 \cr
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3451 0 & 1 & -2 \cr}$$
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3452 @end tex
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3453 @end iftex
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3454 @ifnottex
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3455 @display
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3456 ( 2 -1 0
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3457 -1 0 1
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3458 0 1 -2)
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3459 @end display
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3460 @end ifnottex
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3461
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3462 @item disabled
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3463 Specifies transforming the image so that it looks ``disabled''.
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3464 @end table
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3465
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3466 @item :mask @var{mask}
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3467 If @var{mask} is @code{heuristic} or @code{(heuristic @var{bg})}, build
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3468 a clipping mask for the image, so that the background of a frame is
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3469 visible behind the image. If @var{bg} is not specified, or if @var{bg}
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3470 is @code{t}, determine the background color of the image by looking at
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3471 the four corners of the image, assuming the most frequently occurring
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3472 color from the corners is the background color of the image. Otherwise,
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3473 @var{bg} must be a list @code{(@var{red} @var{green} @var{blue})}
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3474 specifying the color to assume for the background of the image.
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3475
51652
55fb0658914a Fix minor Texinfo usage.
Richard M. Stallman <rms@gnu.org>
parents: 51000
diff changeset
3476 If @var{mask} is @code{nil}, remove a mask from the image, if it has
55fb0658914a Fix minor Texinfo usage.
Richard M. Stallman <rms@gnu.org>
parents: 51000
diff changeset
3477 one. Images in some formats include a mask which can be removed by
55fb0658914a Fix minor Texinfo usage.
Richard M. Stallman <rms@gnu.org>
parents: 51000
diff changeset
3478 specifying @code{:mask nil}.
57193
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3479
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3480 @item :pointer @var{shape}
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3481 This specifies the pointer shape when the mouse pointer is over this
57225
27349bd528f6 Correct typos.
Luc Teirlinck <teirllm@auburn.edu>
parents: 57221
diff changeset
3482 image. @xref{Pointer Shape}, for available pointer shapes.
57193
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3483
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3484 @item :map @var{map}
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3485 This associates an image map of @dfn{hot spots} with this image.
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3486
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3487 An image map is an alist where each element has the format
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3488 @code{(@var{area} @var{id} @var{plist})}. An @var{area} is specified
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3489 as either a rectangle, a circle, or a polygon.
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3490
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3491 A rectangle is a cons
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3492 @code{(rect . ((@var{x0} . @var{y0}) . (@var{x1} . @var{y1})))}
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3493 which specifies the pixel coordinates of the upper left and bottom right
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3494 corners of the rectangle area.
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3495
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3496 A circle is a cons
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3497 @code{(circle . ((@var{x0} . @var{y0}) . @var{r}))}
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3498 which specifies the center and the radius of the circle; @var{r} may
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3499 be a float or integer.
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3500
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3501 A polygon is a cons
57201
2950fcfcfa44 Correct various typos.
Luc Teirlinck <teirllm@auburn.edu>
parents: 57193
diff changeset
3502 @code{(poly . [@var{x0} @var{y0} @var{x1} @var{y1} ...])}
57193
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3503 where each pair in the vector describes one corner in the polygon.
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3504
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3505 When the mouse pointer is above a hot-spot area of an image, the
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3506 @var{plist} of that hot-spot is consulted; if it contains a @code{help-echo}
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3507 property it defines a tool-tip for the hot-spot, and if it contains
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3508 a @code{pointer} property, it defines the shape of the mouse cursor when
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3509 it is over the hot-spot.
57225
27349bd528f6 Correct typos.
Luc Teirlinck <teirllm@auburn.edu>
parents: 57221
diff changeset
3510 @xref{Pointer Shape}, for available pointer shapes.
57193
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3511
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3512 When you click the mouse when the mouse pointer is over a hot-spot, an
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3513 event is composed by combining the @var{id} of the hot-spot with the
57221
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
3514 mouse event; for instance, @code{[area4 mouse-1]} if the hot-spot's
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
3515 @var{id} is @code{area4}.
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3516 @end table
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3517
33996
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3518 @defun image-mask-p spec &optional frame
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3519 @tindex image-mask-p
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3520 This function returns @code{t} if image @var{spec} has a mask bitmap.
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3521 @var{frame} is the frame on which the image will be displayed.
39404
5b69d94ceef3 (Font Lookup, Attribute Functions)
Eli Zaretskii <eliz@gnu.org>
parents: 39221
diff changeset
3522 @var{frame} @code{nil} or omitted means to use the selected frame
5b69d94ceef3 (Font Lookup, Attribute Functions)
Eli Zaretskii <eliz@gnu.org>
parents: 39221
diff changeset
3523 (@pxref{Input Focus}).
33996
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3524 @end defun
d3bd47722971 image-mask-p
Dave Love <fx@gnu.org>
parents: 33373
diff changeset
3525
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3526 @node XBM Images
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3527 @subsection XBM Images
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3528 @cindex XBM
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3529
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3530 To use XBM format, specify @code{xbm} as the image type. This image
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3531 format doesn't require an external library, so images of this type are
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3532 always supported.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3533
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3534 Additional image properties supported for the @code{xbm} image type are:
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3535
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3536 @table @code
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3537 @item :foreground @var{foreground}
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3538 The value, @var{foreground}, should be a string specifying the image
37949
1302dd937a79 Add that PBM and XBM image specs may have :foreground nil, and
Gerd Moellmann <gerd@gnu.org>
parents: 37170
diff changeset
3539 foreground color, or @code{nil} for the default color. This color is
1302dd937a79 Add that PBM and XBM image specs may have :foreground nil, and
Gerd Moellmann <gerd@gnu.org>
parents: 37170
diff changeset
3540 used for each pixel in the XBM that is 1. The default is the frame's
1302dd937a79 Add that PBM and XBM image specs may have :foreground nil, and
Gerd Moellmann <gerd@gnu.org>
parents: 37170
diff changeset
3541 foreground color.
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3542
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3543 @item :background @var{background}
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3544 The value, @var{background}, should be a string specifying the image
37949
1302dd937a79 Add that PBM and XBM image specs may have :foreground nil, and
Gerd Moellmann <gerd@gnu.org>
parents: 37170
diff changeset
3545 background color, or @code{nil} for the default color. This color is
1302dd937a79 Add that PBM and XBM image specs may have :foreground nil, and
Gerd Moellmann <gerd@gnu.org>
parents: 37170
diff changeset
3546 used for each pixel in the XBM that is 0. The default is the frame's
1302dd937a79 Add that PBM and XBM image specs may have :foreground nil, and
Gerd Moellmann <gerd@gnu.org>
parents: 37170
diff changeset
3547 background color.
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3548 @end table
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3549
27093
4b1a67a46d8c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 26986
diff changeset
3550 If you specify an XBM image using data within Emacs instead of an
28792
f870c858cfdf *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 28770
diff changeset
3551 external file, use the following three properties:
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3552
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3553 @table @code
28792
f870c858cfdf *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 28770
diff changeset
3554 @item :data @var{data}
f870c858cfdf *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 28770
diff changeset
3555 The value, @var{data}, specifies the contents of the image.
f870c858cfdf *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 28770
diff changeset
3556 There are three formats you can use for @var{data}:
f870c858cfdf *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 28770
diff changeset
3557
f870c858cfdf *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 28770
diff changeset
3558 @itemize @bullet
f870c858cfdf *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 28770
diff changeset
3559 @item
f870c858cfdf *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 28770
diff changeset
3560 A vector of strings or bool-vectors, each specifying one line of the
f870c858cfdf *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 28770
diff changeset
3561 image. Do specify @code{:height} and @code{:width}.
f870c858cfdf *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 28770
diff changeset
3562
f870c858cfdf *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 28770
diff changeset
3563 @item
f870c858cfdf *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 28770
diff changeset
3564 A string containing the same byte sequence as an XBM file would contain.
f870c858cfdf *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 28770
diff changeset
3565 You must not specify @code{:height} and @code{:width} in this case,
f870c858cfdf *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 28770
diff changeset
3566 because omitting them is what indicates the data has the format of an
f870c858cfdf *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 28770
diff changeset
3567 XBM file. The file contents specify the height and width of the image.
f870c858cfdf *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 28770
diff changeset
3568
f870c858cfdf *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 28770
diff changeset
3569 @item
f870c858cfdf *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 28770
diff changeset
3570 A string or a bool-vector containing the bits of the image (plus perhaps
f870c858cfdf *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 28770
diff changeset
3571 some extra bits at the end that will not be used). It should contain at
f870c858cfdf *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 28770
diff changeset
3572 least @var{width} * @code{height} bits. In this case, you must specify
f870c858cfdf *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 28770
diff changeset
3573 @code{:height} and @code{:width}, both to indicate that the string
f870c858cfdf *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 28770
diff changeset
3574 contains just the bits rather than a whole XBM file, and to specify the
f870c858cfdf *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 28770
diff changeset
3575 size of the image.
f870c858cfdf *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 28770
diff changeset
3576 @end itemize
f870c858cfdf *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 28770
diff changeset
3577
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3578 @item :width @var{width}
28792
f870c858cfdf *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 28770
diff changeset
3579 The value, @var{width}, specifies the width of the image, in pixels.
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3580
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3581 @item :height @var{height}
28792
f870c858cfdf *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 28770
diff changeset
3582 The value, @var{height}, specifies the height of the image, in pixels.
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3583 @end table
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3584
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3585 @node XPM Images
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3586 @subsection XPM Images
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3587 @cindex XPM
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3588
27093
4b1a67a46d8c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 26986
diff changeset
3589 To use XPM format, specify @code{xpm} as the image type. The
4b1a67a46d8c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 26986
diff changeset
3590 additional image property @code{:color-symbols} is also meaningful with
4b1a67a46d8c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 26986
diff changeset
3591 the @code{xpm} image type:
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3592
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3593 @table @code
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3594 @item :color-symbols @var{symbols}
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3595 The value, @var{symbols}, should be an alist whose elements have the
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3596 form @code{(@var{name} . @var{color})}. In each element, @var{name} is
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3597 the name of a color as it appears in the image file, and @var{color}
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3598 specifies the actual color to use for displaying that name.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3599 @end table
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3600
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3601 @node GIF Images
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3602 @subsection GIF Images
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3603 @cindex GIF
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3604
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3605 For GIF images, specify image type @code{gif}. Because of the patents
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3606 in the US covering the LZW algorithm, the continued use of GIF format is
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3607 a problem for the whole Internet; to end this problem, it is a good idea
56020
08d7fba3613a Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 55899
diff changeset
3608 for everyone, even outside the US, to stop using GIFs right away
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3609 (@uref{http://www.burnallgifs.org/}). But if you still want to use
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3610 them, Emacs can display them.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3611
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3612 @table @code
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3613 @item :index @var{index}
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3614 You can use @code{:index} to specify one image from a GIF file that
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3615 contains more than one image. This property specifies use of image
53422
1246d68686ac (Refresh Screen): Add force-window-update.
Richard M. Stallman <rms@gnu.org>
parents: 53308
diff changeset
3616 number @var{index} from the file. If the GIF file doesn't contain an
1246d68686ac (Refresh Screen): Add force-window-update.
Richard M. Stallman <rms@gnu.org>
parents: 53308
diff changeset
3617 image with index @var{index}, the image displays as a hollow box.
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3618 @end table
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3619
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3620 @ignore
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3621 This could be used to implement limited support for animated GIFs.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3622 For example, the following function displays a multi-image GIF file
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3623 at point-min in the current buffer, switching between sub-images
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3624 every 0.1 seconds.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3625
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3626 (defun show-anim (file max)
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3627 "Display multi-image GIF file FILE which contains MAX subimages."
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3628 (display-anim (current-buffer) file 0 max t))
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3629
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3630 (defun display-anim (buffer file idx max first-time)
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3631 (when (= idx max)
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3632 (setq idx 0))
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3633 (let ((img (create-image file nil :image idx)))
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3634 (save-excursion
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3635 (set-buffer buffer)
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3636 (goto-char (point-min))
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3637 (unless first-time (delete-char 1))
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3638 (insert-image img))
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3639 (run-with-timer 0.1 nil 'display-anim buffer file (1+ idx) max nil)))
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3640 @end ignore
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3641
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3642 @node Postscript Images
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3643 @subsection Postscript Images
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3644 @cindex Postscript images
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3645
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3646 To use Postscript for an image, specify image type @code{postscript}.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3647 This works only if you have Ghostscript installed. You must always use
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3648 these three properties:
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3649
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3650 @table @code
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3651 @item :pt-width @var{width}
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3652 The value, @var{width}, specifies the width of the image measured in
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3653 points (1/72 inch). @var{width} must be an integer.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3654
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3655 @item :pt-height @var{height}
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3656 The value, @var{height}, specifies the height of the image in points
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3657 (1/72 inch). @var{height} must be an integer.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3658
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3659 @item :bounding-box @var{box}
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3660 The value, @var{box}, must be a list or vector of four integers, which
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3661 specifying the bounding box of the Postscript image, analogous to the
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3662 @samp{BoundingBox} comment found in Postscript files.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3663
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3664 @example
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3665 %%BoundingBox: 22 171 567 738
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3666 @end example
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3667 @end table
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3668
27093
4b1a67a46d8c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 26986
diff changeset
3669 Displaying Postscript images from Lisp data is not currently
4b1a67a46d8c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 26986
diff changeset
3670 implemented, but it may be implemented by the time you read this.
4b1a67a46d8c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 26986
diff changeset
3671 See the @file{etc/NEWS} file to make sure.
4b1a67a46d8c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 26986
diff changeset
3672
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3673 @node Other Image Types
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3674 @subsection Other Image Types
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3675 @cindex PBM
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3676
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3677 For PBM images, specify image type @code{pbm}. Color, gray-scale and
32552
070ca96fa546 (Other Image Types): Add description of :foreground
Gerd Moellmann <gerd@gnu.org>
parents: 32467
diff changeset
3678 monochromatic images are supported. For mono PBM images, two additional
070ca96fa546 (Other Image Types): Add description of :foreground
Gerd Moellmann <gerd@gnu.org>
parents: 32467
diff changeset
3679 image properties are supported.
070ca96fa546 (Other Image Types): Add description of :foreground
Gerd Moellmann <gerd@gnu.org>
parents: 32467
diff changeset
3680
070ca96fa546 (Other Image Types): Add description of :foreground
Gerd Moellmann <gerd@gnu.org>
parents: 32467
diff changeset
3681 @table @code
070ca96fa546 (Other Image Types): Add description of :foreground
Gerd Moellmann <gerd@gnu.org>
parents: 32467
diff changeset
3682 @item :foreground @var{foreground}
070ca96fa546 (Other Image Types): Add description of :foreground
Gerd Moellmann <gerd@gnu.org>
parents: 32467
diff changeset
3683 The value, @var{foreground}, should be a string specifying the image
37949
1302dd937a79 Add that PBM and XBM image specs may have :foreground nil, and
Gerd Moellmann <gerd@gnu.org>
parents: 37170
diff changeset
3684 foreground color, or @code{nil} for the default color. This color is
1302dd937a79 Add that PBM and XBM image specs may have :foreground nil, and
Gerd Moellmann <gerd@gnu.org>
parents: 37170
diff changeset
3685 used for each pixel in the XBM that is 1. The default is the frame's
1302dd937a79 Add that PBM and XBM image specs may have :foreground nil, and
Gerd Moellmann <gerd@gnu.org>
parents: 37170
diff changeset
3686 foreground color.
32552
070ca96fa546 (Other Image Types): Add description of :foreground
Gerd Moellmann <gerd@gnu.org>
parents: 32467
diff changeset
3687
070ca96fa546 (Other Image Types): Add description of :foreground
Gerd Moellmann <gerd@gnu.org>
parents: 32467
diff changeset
3688 @item :background @var{background}
070ca96fa546 (Other Image Types): Add description of :foreground
Gerd Moellmann <gerd@gnu.org>
parents: 32467
diff changeset
3689 The value, @var{background}, should be a string specifying the image
37949
1302dd937a79 Add that PBM and XBM image specs may have :foreground nil, and
Gerd Moellmann <gerd@gnu.org>
parents: 37170
diff changeset
3690 background color, or @code{nil} for the default color. This color is
1302dd937a79 Add that PBM and XBM image specs may have :foreground nil, and
Gerd Moellmann <gerd@gnu.org>
parents: 37170
diff changeset
3691 used for each pixel in the XBM that is 0. The default is the frame's
1302dd937a79 Add that PBM and XBM image specs may have :foreground nil, and
Gerd Moellmann <gerd@gnu.org>
parents: 37170
diff changeset
3692 background color.
32552
070ca96fa546 (Other Image Types): Add description of :foreground
Gerd Moellmann <gerd@gnu.org>
parents: 32467
diff changeset
3693 @end table
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3694
27093
4b1a67a46d8c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 26986
diff changeset
3695 For JPEG images, specify image type @code{jpeg}.
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3696
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3697 For TIFF images, specify image type @code{tiff}.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3698
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3699 For PNG images, specify image type @code{png}.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3700
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3701 @node Defining Images
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3702 @subsection Defining Images
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3703
31373
a3fd71daf442 help-echo stuff, find-image, image-size.
Dave Love <fx@gnu.org>
parents: 29471
diff changeset
3704 The functions @code{create-image}, @code{defimage} and
a3fd71daf442 help-echo stuff, find-image, image-size.
Dave Love <fx@gnu.org>
parents: 29471
diff changeset
3705 @code{find-image} provide convenient ways to create image descriptors.
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3706
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3707 @defun create-image file &optional type &rest props
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3708 @tindex create-image
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3709 This function creates and returns an image descriptor which uses the
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3710 data in @var{file}.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3711
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3712 The optional argument @var{type} is a symbol specifying the image type.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3713 If @var{type} is omitted or @code{nil}, @code{create-image} tries to
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3714 determine the image type from the file's first few bytes, or else
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3715 from the file's name.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3716
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3717 The remaining arguments, @var{props}, specify additional image
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3718 properties---for example,
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3719
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3720 @example
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3721 (create-image "foo.xpm" 'xpm :heuristic-mask t)
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3722 @end example
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3723
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3724 The function returns @code{nil} if images of this type are not
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3725 supported. Otherwise it returns an image descriptor.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3726 @end defun
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3727
41058
3532d3226828 (Define Images): Fix the documentation of defimage. Suggested by
Eli Zaretskii <eliz@gnu.org>
parents: 40469
diff changeset
3728 @defmac defimage symbol specs &optional doc
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3729 @tindex defimage
41058
3532d3226828 (Define Images): Fix the documentation of defimage. Suggested by
Eli Zaretskii <eliz@gnu.org>
parents: 40469
diff changeset
3730 This macro defines @var{symbol} as an image name. The arguments
3532d3226828 (Define Images): Fix the documentation of defimage. Suggested by
Eli Zaretskii <eliz@gnu.org>
parents: 40469
diff changeset
3731 @var{specs} is a list which specifies how to display the image.
3532d3226828 (Define Images): Fix the documentation of defimage. Suggested by
Eli Zaretskii <eliz@gnu.org>
parents: 40469
diff changeset
3732 The third argument, @var{doc}, is an optional documentation string.
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3733
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3734 Each argument in @var{specs} has the form of a property list, and each
41058
3532d3226828 (Define Images): Fix the documentation of defimage. Suggested by
Eli Zaretskii <eliz@gnu.org>
parents: 40469
diff changeset
3735 one should specify at least the @code{:type} property and either the
3532d3226828 (Define Images): Fix the documentation of defimage. Suggested by
Eli Zaretskii <eliz@gnu.org>
parents: 40469
diff changeset
3736 @code{:file} or the @code{:data} property. The value of @code{:type}
3532d3226828 (Define Images): Fix the documentation of defimage. Suggested by
Eli Zaretskii <eliz@gnu.org>
parents: 40469
diff changeset
3737 should be a symbol specifying the image type, the value of
3532d3226828 (Define Images): Fix the documentation of defimage. Suggested by
Eli Zaretskii <eliz@gnu.org>
parents: 40469
diff changeset
3738 @code{:file} is the file to load the image from, and the value of
3532d3226828 (Define Images): Fix the documentation of defimage. Suggested by
Eli Zaretskii <eliz@gnu.org>
parents: 40469
diff changeset
3739 @code{:data} is a string containing the actual image data. Here is an
3532d3226828 (Define Images): Fix the documentation of defimage. Suggested by
Eli Zaretskii <eliz@gnu.org>
parents: 40469
diff changeset
3740 example:
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3741
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
3742 @example
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
3743 (defimage test-image
46338
6cf0fbc1d7da defimage does not evaluate SPECS.
Richard M. Stallman <rms@gnu.org>
parents: 46245
diff changeset
3744 ((:type xpm :file "~/test1.xpm")
6cf0fbc1d7da defimage does not evaluate SPECS.
Richard M. Stallman <rms@gnu.org>
parents: 46245
diff changeset
3745 (:type xbm :file "~/test1.xbm")))
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
3746 @end example
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3747
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3748 @code{defimage} tests each argument, one by one, to see if it is
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3749 usable---that is, if the type is supported and the file exists. The
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3750 first usable argument is used to make an image descriptor which is
41058
3532d3226828 (Define Images): Fix the documentation of defimage. Suggested by
Eli Zaretskii <eliz@gnu.org>
parents: 40469
diff changeset
3751 stored in @var{symbol}.
3532d3226828 (Define Images): Fix the documentation of defimage. Suggested by
Eli Zaretskii <eliz@gnu.org>
parents: 40469
diff changeset
3752
3532d3226828 (Define Images): Fix the documentation of defimage. Suggested by
Eli Zaretskii <eliz@gnu.org>
parents: 40469
diff changeset
3753 If none of the alternatives will work, then @var{symbol} is defined
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3754 as @code{nil}.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3755 @end defmac
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3756
31373
a3fd71daf442 help-echo stuff, find-image, image-size.
Dave Love <fx@gnu.org>
parents: 29471
diff changeset
3757 @defun find-image specs
a3fd71daf442 help-echo stuff, find-image, image-size.
Dave Love <fx@gnu.org>
parents: 29471
diff changeset
3758 @tindex find-image
a3fd71daf442 help-echo stuff, find-image, image-size.
Dave Love <fx@gnu.org>
parents: 29471
diff changeset
3759 This function provides a convenient way to find an image satisfying one
a3fd71daf442 help-echo stuff, find-image, image-size.
Dave Love <fx@gnu.org>
parents: 29471
diff changeset
3760 of a list of image specifications @var{specs}.
a3fd71daf442 help-echo stuff, find-image, image-size.
Dave Love <fx@gnu.org>
parents: 29471
diff changeset
3761
a3fd71daf442 help-echo stuff, find-image, image-size.
Dave Love <fx@gnu.org>
parents: 29471
diff changeset
3762 Each specification in @var{specs} is a property list with contents
a3fd71daf442 help-echo stuff, find-image, image-size.
Dave Love <fx@gnu.org>
parents: 29471
diff changeset
3763 depending on image type. All specifications must at least contain the
a3fd71daf442 help-echo stuff, find-image, image-size.
Dave Love <fx@gnu.org>
parents: 29471
diff changeset
3764 properties @code{:type @var{type}} and either @w{@code{:file @var{file}}}
a3fd71daf442 help-echo stuff, find-image, image-size.
Dave Love <fx@gnu.org>
parents: 29471
diff changeset
3765 or @w{@code{:data @var{DATA}}}, where @var{type} is a symbol specifying
a3fd71daf442 help-echo stuff, find-image, image-size.
Dave Love <fx@gnu.org>
parents: 29471
diff changeset
3766 the image type, e.g.@: @code{xbm}, @var{file} is the file to load the
a3fd71daf442 help-echo stuff, find-image, image-size.
Dave Love <fx@gnu.org>
parents: 29471
diff changeset
3767 image from, and @var{data} is a string containing the actual image data.
a3fd71daf442 help-echo stuff, find-image, image-size.
Dave Love <fx@gnu.org>
parents: 29471
diff changeset
3768 The first specification in the list whose @var{type} is supported, and
a3fd71daf442 help-echo stuff, find-image, image-size.
Dave Love <fx@gnu.org>
parents: 29471
diff changeset
3769 @var{file} exists, is used to construct the image specification to be
a3fd71daf442 help-echo stuff, find-image, image-size.
Dave Love <fx@gnu.org>
parents: 29471
diff changeset
3770 returned. If no specification is satisfied, @code{nil} is returned.
a3fd71daf442 help-echo stuff, find-image, image-size.
Dave Love <fx@gnu.org>
parents: 29471
diff changeset
3771
a3fd71daf442 help-echo stuff, find-image, image-size.
Dave Love <fx@gnu.org>
parents: 29471
diff changeset
3772 The image is looked for first on @code{load-path} and then in
a3fd71daf442 help-echo stuff, find-image, image-size.
Dave Love <fx@gnu.org>
parents: 29471
diff changeset
3773 @code{data-directory}.
a3fd71daf442 help-echo stuff, find-image, image-size.
Dave Love <fx@gnu.org>
parents: 29471
diff changeset
3774 @end defun
a3fd71daf442 help-echo stuff, find-image, image-size.
Dave Love <fx@gnu.org>
parents: 29471
diff changeset
3775
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3776 @node Showing Images
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3777 @subsection Showing Images
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3778
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3779 You can use an image descriptor by setting up the @code{display}
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3780 property yourself, but it is easier to use the functions in this
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3781 section.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3782
57193
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3783 @defun insert-image image &optional string area slice
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3784 This function inserts @var{image} in the current buffer at point. The
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3785 value @var{image} should be an image descriptor; it could be a value
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3786 returned by @code{create-image}, or the value of a symbol defined with
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
3787 @code{defimage}. The argument @var{string} specifies the text to put in
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
3788 the buffer to hold the image.
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3789
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3790 The argument @var{area} specifies whether to put the image in a margin.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3791 If it is @code{left-margin}, the image appears in the left margin;
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3792 @code{right-margin} specifies the right margin. If @var{area} is
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3793 @code{nil} or omitted, the image is displayed at point within the
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3794 buffer's text.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3795
57193
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3796 The argument @var{slice} specifies a slice of the image to insert. If
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3797 @var{slice} is @code{nil} or omitted the whole image is inserted.
57221
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
3798 Otherwise, @var{slice} is a list @code{(@var{x} @var{y} @var{width}
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
3799 @var{height})} which specifies the @var{x} and @var{y} positions and
57193
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3800 @var{width} and @var{height} of the image area to insert. Integer
57221
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
3801 values are in units of pixels. A floating point number in the range
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
3802 0.0--1.0 stands for that fraction of the width or height of the entire
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
3803 image.
57193
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3804
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
3805 Internally, this function inserts @var{string} in the buffer, and gives
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
3806 it a @code{display} property which specifies @var{image}. @xref{Display
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3807 Property}.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3808 @end defun
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3809
57193
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3810 @defun insert-sliced-image image &optional string area rows cols
57221
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
3811 This function inserts @var{image} in the current buffer at point, like
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
3812 @code{insert-image}, but splits the image into @var{rows}x@var{cols}
18bdf278f148 (Fringes): Rewrite previous change.
Richard M. Stallman <rms@gnu.org>
parents: 57202
diff changeset
3813 equally sized slices.
57193
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3814 @end defun
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3815
29471
215b57502518 *** empty log message ***
Dave Love <fx@gnu.org>
parents: 29151
diff changeset
3816 @defun put-image image pos &optional string area
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3817 This function puts image @var{image} in front of @var{pos} in the
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3818 current buffer. The argument @var{pos} should be an integer or a
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3819 marker. It specifies the buffer position where the image should appear.
29471
215b57502518 *** empty log message ***
Dave Love <fx@gnu.org>
parents: 29151
diff changeset
3820 The argument @var{string} specifies the text that should hold the image
215b57502518 *** empty log message ***
Dave Love <fx@gnu.org>
parents: 29151
diff changeset
3821 as an alternative to the default.
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3822
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3823 The argument @var{image} must be an image descriptor, perhaps returned
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3824 by @code{create-image} or stored by @code{defimage}.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3825
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3826 The argument @var{area} specifies whether to put the image in a margin.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3827 If it is @code{left-margin}, the image appears in the left margin;
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3828 @code{right-margin} specifies the right margin. If @var{area} is
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3829 @code{nil} or omitted, the image is displayed at point within the
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3830 buffer's text.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3831
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3832 Internally, this function creates an overlay, and gives it a
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3833 @code{before-string} property containing text that has a @code{display}
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3834 property whose value is the image. (Whew!)
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3835 @end defun
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3836
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3837 @defun remove-images start end &optional buffer
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3838 This function removes images in @var{buffer} between positions
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3839 @var{start} and @var{end}. If @var{buffer} is omitted or @code{nil},
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3840 images are removed from the current buffer.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3841
27331
be0a552c8320 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 27193
diff changeset
3842 This removes only images that were put into @var{buffer} the way
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3843 @code{put-image} does it, not images that were inserted with
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3844 @code{insert-image} or in other ways.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3845 @end defun
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3846
31373
a3fd71daf442 help-echo stuff, find-image, image-size.
Dave Love <fx@gnu.org>
parents: 29471
diff changeset
3847 @defun image-size spec &optional pixels frame
a3fd71daf442 help-echo stuff, find-image, image-size.
Dave Love <fx@gnu.org>
parents: 29471
diff changeset
3848 @tindex image-size
a3fd71daf442 help-echo stuff, find-image, image-size.
Dave Love <fx@gnu.org>
parents: 29471
diff changeset
3849 This function returns the size of an image as a pair
a3fd71daf442 help-echo stuff, find-image, image-size.
Dave Love <fx@gnu.org>
parents: 29471
diff changeset
3850 @w{@code{(@var{width} . @var{height})}}. @var{spec} is an image
51652
55fb0658914a Fix minor Texinfo usage.
Richard M. Stallman <rms@gnu.org>
parents: 51000
diff changeset
3851 specification. @var{pixels} non-@code{nil} means return sizes
55fb0658914a Fix minor Texinfo usage.
Richard M. Stallman <rms@gnu.org>
parents: 51000
diff changeset
3852 measured in pixels, otherwise return sizes measured in canonical
55fb0658914a Fix minor Texinfo usage.
Richard M. Stallman <rms@gnu.org>
parents: 51000
diff changeset
3853 character units (fractions of the width/height of the frame's default
55fb0658914a Fix minor Texinfo usage.
Richard M. Stallman <rms@gnu.org>
parents: 51000
diff changeset
3854 font). @var{frame} is the frame on which the image will be displayed.
39404
5b69d94ceef3 (Font Lookup, Attribute Functions)
Eli Zaretskii <eliz@gnu.org>
parents: 39221
diff changeset
3855 @var{frame} null or omitted means use the selected frame (@pxref{Input
5b69d94ceef3 (Font Lookup, Attribute Functions)
Eli Zaretskii <eliz@gnu.org>
parents: 39221
diff changeset
3856 Focus}).
31373
a3fd71daf442 help-echo stuff, find-image, image-size.
Dave Love <fx@gnu.org>
parents: 29471
diff changeset
3857 @end defun
a3fd71daf442 help-echo stuff, find-image, image-size.
Dave Love <fx@gnu.org>
parents: 29471
diff changeset
3858
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3859 @node Image Cache
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3860 @subsection Image Cache
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3861
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3862 Emacs stores images in an image cache when it displays them, so it can
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3863 display them again more efficiently. It removes an image from the cache
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3864 when it hasn't been displayed for a specified period of time.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3865
28770
313b9e6e2dbf *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 27971
diff changeset
3866 When an image is looked up in the cache, its specification is compared
313b9e6e2dbf *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 27971
diff changeset
3867 with cached image specifications using @code{equal}. This means that
313b9e6e2dbf *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 27971
diff changeset
3868 all images with equal specifications share the same image in the cache.
313b9e6e2dbf *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 27971
diff changeset
3869
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3870 @defvar image-cache-eviction-delay
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3871 @tindex image-cache-eviction-delay
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3872 This variable specifies the number of seconds an image can remain in the
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3873 cache without being displayed. When an image is not displayed for this
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3874 length of time, Emacs removes it from the image cache.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3875
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3876 If the value is @code{nil}, Emacs does not remove images from the cache
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3877 except when you explicitly clear it. This mode can be useful for
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3878 debugging.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3879 @end defvar
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3880
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3881 @defun clear-image-cache &optional frame
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3882 @tindex clear-image-cache
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3883 This function clears the image cache. If @var{frame} is non-@code{nil},
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3884 only the cache for that frame is cleared. Otherwise all frames' caches
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3885 are cleared.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
3886 @end defun
27447
ef387684dc33 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 27374
diff changeset
3887
53467
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3888 @node Buttons
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3889 @section Buttons
53468
f641b341c5ec Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-13
Miles Bader <miles@gnu.org>
parents: 53467
diff changeset
3890 @cindex buttons
53467
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3891 @cindex buttons in buffers
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3892 @cindex clickable buttons in buffers
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3893
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3894 The @emph{button} package defines functions for inserting and
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3895 manipulating clickable (with the mouse, or via keyboard commands)
53468
f641b341c5ec Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-13
Miles Bader <miles@gnu.org>
parents: 53467
diff changeset
3896 buttons in Emacs buffers, such as might be used for help hyper-links,
f641b341c5ec Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-13
Miles Bader <miles@gnu.org>
parents: 53467
diff changeset
3897 etc. Emacs uses buttons for the hyper-links in help text and the like.
53467
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3898
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3899 A button is essentially a set of properties attached (via text
55246
33248295ffc4 emacs -> Emacs.
Jesper Harder <harder@ifa.au.dk>
parents: 54777
diff changeset
3900 properties or overlays) to a region of text in an Emacs buffer, which
53467
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3901 are called its button properties. @xref{Button Properties}.
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3902
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3903 One of the these properties (@code{action}) is a function, which will
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3904 be called when the user invokes it using the keyboard or the mouse.
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3905 The invoked function may then examine the button and use its other
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3906 properties as desired.
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3907
55246
33248295ffc4 emacs -> Emacs.
Jesper Harder <harder@ifa.au.dk>
parents: 54777
diff changeset
3908 In some ways the Emacs button package duplicates functionality offered
53467
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3909 by the widget package (@pxref{Top, , Introduction, widget, The Emacs
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3910 Widget Library}), but the button package has the advantage that it is
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3911 much faster, much smaller, and much simpler to use (for elisp
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3912 programmers---for users, the result is about the same). The extra
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3913 speed and space savings are useful mainly if you need to create many
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3914 buttons in a buffer (for instance an @code{*Apropos*} buffer uses
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3915 buttons to make entries clickable, and may contain many thousands of
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3916 entries).
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3917
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3918 @menu
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3919 * Button Properties:: Button properties with special meanings.
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3920 * Button Types:: Defining common properties for classes of buttons.
55246
33248295ffc4 emacs -> Emacs.
Jesper Harder <harder@ifa.au.dk>
parents: 54777
diff changeset
3921 * Making Buttons:: Adding buttons to Emacs buffers.
53467
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3922 * Manipulating Buttons:: Getting and setting properties of buttons.
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3923 * Button Buffer Commands:: Buffer-wide commands and bindings for buttons.
57193
714a83d1ea32 (Display): Add 'Fringe Bitmaps' and 'Pointer
Kim F. Storm <storm@cua.dk>
parents: 56451
diff changeset
3924 * Manipulating Button Types::
53467
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3925 @end menu
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3926
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3927 @node Button Properties
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3928 @subsection Button Properties
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3929 @cindex button properties
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3930
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3931 Buttons have an associated list of properties defining their
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3932 appearance and behavior, and other arbitrary properties may be used
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3933 for application specific purposes.
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3934
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3935 Some properties that have special meaning to the button package
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3936 include:
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3937
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3938 @table @code
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3939
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3940 @item action
53468
f641b341c5ec Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-13
Miles Bader <miles@gnu.org>
parents: 53467
diff changeset
3941 @kindex action @r{(button property)}
53467
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3942 The function to call when the user invokes the button, which is passed
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3943 the single argument @var{button}. By default this is @code{ignore},
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3944 which does nothing.
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3945
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3946 @item mouse-action
53468
f641b341c5ec Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-13
Miles Bader <miles@gnu.org>
parents: 53467
diff changeset
3947 @kindex mouse-action @r{(button property)}
53467
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3948 This is similar to @code{action}, and when present, will be used
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3949 instead of @code{action} for button invocations resulting from
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3950 mouse-clicks (instead of the user hitting @key{RET}). If not
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3951 present, mouse-clicks use @code{action} instead.
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3952
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3953 @item face
53468
f641b341c5ec Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-13
Miles Bader <miles@gnu.org>
parents: 53467
diff changeset
3954 @kindex face @r{(button property)}
55246
33248295ffc4 emacs -> Emacs.
Jesper Harder <harder@ifa.au.dk>
parents: 54777
diff changeset
3955 This is an Emacs face controlling how buttons of this type are
53467
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3956 displayed; by default this is the @code{button} face.
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3957
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3958 @item mouse-face
53468
f641b341c5ec Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-13
Miles Bader <miles@gnu.org>
parents: 53467
diff changeset
3959 @kindex mouse-face @r{(button property)}
53467
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3960 This is an additional face which controls appearance during
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3961 mouse-overs (merged with the usual button face); by default this is
55246
33248295ffc4 emacs -> Emacs.
Jesper Harder <harder@ifa.au.dk>
parents: 54777
diff changeset
3962 the usual Emacs @code{highlight} face.
53467
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3963
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3964 @item keymap
53468
f641b341c5ec Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-13
Miles Bader <miles@gnu.org>
parents: 53467
diff changeset
3965 @kindex keymap @r{(button property)}
53467
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3966 The button's keymap, defining bindings active within the button
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3967 region. By default this is the usual button region keymap, stored
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3968 in the variable @code{button-map}, which defines @key{RET} and
53829
83980e864dd7 (Button Properties, Button Buffer Commands): mouse-2 invokes button,
John Paul Wallington <jpw@pobox.com>
parents: 53468
diff changeset
3969 @key{mouse-2} to invoke the button.
53467
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3970
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3971 @item type
53468
f641b341c5ec Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-13
Miles Bader <miles@gnu.org>
parents: 53467
diff changeset
3972 @kindex type @r{(button property)}
53467
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3973 The button-type of the button. When creating a button, this is
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3974 usually specified using the @code{:type} keyword argument.
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3975 @xref{Button Types}.
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3976
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3977 @item help-echo
53468
f641b341c5ec Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-13
Miles Bader <miles@gnu.org>
parents: 53467
diff changeset
3978 @kindex help-index @r{(button property)}
55246
33248295ffc4 emacs -> Emacs.
Jesper Harder <harder@ifa.au.dk>
parents: 54777
diff changeset
3979 A string displayed by the Emacs tool-tip help system; by default,
53467
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3980 @code{"mouse-2, RET: Push this button"}.
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3981
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3982 @item button
53468
f641b341c5ec Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-13
Miles Bader <miles@gnu.org>
parents: 53467
diff changeset
3983 @kindex button @r{(button property)}
53467
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3984 All buttons have a non-@code{nil} @code{button} property, which may be useful
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3985 in finding regions of text that comprise buttons (which is what the
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3986 standard button functions do).
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3987 @end table
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3988
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3989 There are other properties defined for the regions of text in a
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3990 button, but these are not generally interesting for typical uses.
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3991
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3992 @node Button Types
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3993 @subsection Button Types
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3994 @cindex button types
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3995
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
3996 Every button has a button @emph{type}, which defines default values
53468
f641b341c5ec Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-13
Miles Bader <miles@gnu.org>
parents: 53467
diff changeset
3997 for the button's properties. Button types are arranged in a
f641b341c5ec Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-13
Miles Bader <miles@gnu.org>
parents: 53467
diff changeset
3998 hierarchy, with specialized types inheriting from more general types,
f641b341c5ec Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-13
Miles Bader <miles@gnu.org>
parents: 53467
diff changeset
3999 so that it's easy to define special-purpose types of buttons for
f641b341c5ec Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-13
Miles Bader <miles@gnu.org>
parents: 53467
diff changeset
4000 specific tasks.
53467
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4001
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4002 @defun define-button-type name &rest properties
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4003 @tindex define-button-type
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4004 Define a `button type' called @var{name}. The remaining arguments
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4005 form a sequence of @var{property value} pairs, specifying default
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4006 property values for buttons with this type (a button's type may be set
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4007 by giving it a @code{type} property when creating the button, using
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4008 the @code{:type} keyword argument).
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4009
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4010 In addition, the keyword argument @code{:supertype} may be used to
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4011 specify a button-type from which @var{name} inherits its default
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4012 property values. Note that this inheritance happens only when
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4013 @var{name} is defined; subsequent changes to a supertype are not
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4014 reflected in its subtypes.
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4015 @end defun
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4016
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4017 Using @code{define-button-type} to define default properties for
53468
f641b341c5ec Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-13
Miles Bader <miles@gnu.org>
parents: 53467
diff changeset
4018 buttons is not necessary---buttons without any specified type use the
f641b341c5ec Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-13
Miles Bader <miles@gnu.org>
parents: 53467
diff changeset
4019 built-in button-type @code{button}---but it is is encouraged, since
f641b341c5ec Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-13
Miles Bader <miles@gnu.org>
parents: 53467
diff changeset
4020 doing so usually makes the resulting code clearer and more efficient.
f641b341c5ec Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-13
Miles Bader <miles@gnu.org>
parents: 53467
diff changeset
4021
f641b341c5ec Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-13
Miles Bader <miles@gnu.org>
parents: 53467
diff changeset
4022 @node Making Buttons
f641b341c5ec Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-13
Miles Bader <miles@gnu.org>
parents: 53467
diff changeset
4023 @subsection Making Buttons
53467
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4024 @cindex making buttons
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4025
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4026 Buttons are associated with a region of text, using an overlay or
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4027 text-properties to hold button-specific information, all of which are
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4028 initialized from the button's type (which defaults to the built-in
55246
33248295ffc4 emacs -> Emacs.
Jesper Harder <harder@ifa.au.dk>
parents: 54777
diff changeset
4029 button type @code{button}). Like all Emacs text, the appearance of
53467
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4030 the button is governed by the @code{face} property; by default (via
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4031 the @code{face} property inherited from the @code{button} button-type)
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4032 this is a simple underline, like a typical web-page link.
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4033
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4034 For convenience, there are two sorts of button-creation functions,
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4035 those that add button properties to an existing region of a buffer,
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4036 called @code{make-...button}, and those also insert the button text,
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4037 called @code{insert-...button}.
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4038
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4039 The button-creation functions all take the @code{&rest} argument
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4040 @var{properties}, which should be a sequence of @var{property value}
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4041 pairs, specifying properties to add to the button; see @ref{Button
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4042 Properties}. In addition, the keyword argument @code{:type} may be
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4043 used to specify a button-type from which to inherit other properties;
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4044 see @ref{Button Types}. Any properties not explicitly specified
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4045 during creation will be inherited from the button's type (if the type
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4046 defines such a property).
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4047
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4048 The following functions add a button using an overlay
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4049 (@pxref{Overlays}) to hold the button properties:
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4050
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4051 @defun make-button beg end &rest properties
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4052 @tindex make-button
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4053 Make a button from @var{beg} to @var{end} in the current buffer.
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4054 @end defun
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4055
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4056 @defun insert-button label &rest properties
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4057 @tindex insert-button
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4058 Insert a button with the label @var{label}.
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4059 @end defun
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4060
55246
33248295ffc4 emacs -> Emacs.
Jesper Harder <harder@ifa.au.dk>
parents: 54777
diff changeset
4061 The following functions are similar, but use Emacs text-properties
53467
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4062 (@pxref{Text Properties}) to hold the button properties, making the
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4063 button actually part of the text instead of being a property of the
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4064 buffer (using text-properties is usually faster than using overlays,
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4065 so this may be preferable when creating large numbers of buttons):
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4066
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4067 @defun make-text-button beg end &rest properties
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4068 @tindex make-text-button
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4069 Make a button from @var{beg} to @var{end} in the current buffer, using
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4070 text-properties.
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4071 @end defun
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4072
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4073 @defun insert-text-button label &rest properties
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4074 @tindex insert-text-button
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4075 Insert a button with the label @var{label}, using text-properties.
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4076 @end defun
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4077
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4078 Buttons using text-properties retain no markers into the buffer are
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4079 retained, which is important for speed in cases where there are
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4080 extremely large numbers of buttons.
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4081
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4082 @node Manipulating Buttons
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4083 @subsection Manipulating Buttons
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4084 @cindex manipulating buttons
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4085
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4086 These are functions for getting and setting properties of buttons.
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4087 Often these are used by a button's invocation function to determine
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4088 what to do.
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4089
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4090 Where a @var{button} parameter is specified, it means an object
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4091 referring to a specific button, either an overlay (for overlay
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4092 buttons), or a buffer-position or marker (for text property buttons).
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4093 Such an object is passed as the first argument to a button's
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4094 invocation function when it is invoked.
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4095
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4096 @defun button-start button
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4097 @tindex button-start
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4098 Return the position at which @var{button} starts.
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4099 @end defun
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4100
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4101 @defun button-end button
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4102 @tindex button-end
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4103 Return the position at which @var{button} ends.
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4104 @end defun
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4105
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4106 @defun button-get button prop
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4107 @tindex button-get
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4108 Get the property of button @var{button} named @var{prop}.
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4109 @end defun
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4110
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4111 @defun button-put button prop val
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4112 @tindex button-put
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4113 Set @var{button}'s @var{prop} property to @var{val}.
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4114 @end defun
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4115
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4116 @defun button-activate button &optional use-mouse-action
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4117 @tindex button-activate
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4118 Call @var{button}'s @code{action} property (i.e., invoke it). If
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4119 @var{use-mouse-action} is non-@code{nil}, try to invoke the button's
53468
f641b341c5ec Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-13
Miles Bader <miles@gnu.org>
parents: 53467
diff changeset
4120 @code{mouse-action} property instead of @code{action}; if the button
f641b341c5ec Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-13
Miles Bader <miles@gnu.org>
parents: 53467
diff changeset
4121 has no @code{mouse-action} property, use @code{action} as normal.
53467
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4122 @end defun
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4123
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4124 @defun button-label button
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4125 @tindex button-label
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4126 Return @var{button}'s text label.
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4127 @end defun
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4128
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4129 @defun button-type button
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4130 @tindex button-type
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4131 Return @var{button}'s button-type.
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4132 @end defun
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4133
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4134 @defun button-has-type-p button type
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4135 @tindex button-has-type-p
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4136 Return @code{t} if @var{button} has button-type @var{type}, or one of
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4137 @var{type}'s subtypes.
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4138 @end defun
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4139
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4140 @defun button-at pos
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4141 @tindex button-at
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4142 Return the button at position @var{pos} in the current buffer, or @code{nil}.
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4143 @end defun
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4144
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4145 @node Button Buffer Commands
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4146 @subsection Button Buffer Commands
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4147 @cindex button buffer commands
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4148
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4149 These are commands and functions for locating and operating on
55246
33248295ffc4 emacs -> Emacs.
Jesper Harder <harder@ifa.au.dk>
parents: 54777
diff changeset
4150 buttons in an Emacs buffer.
53467
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4151
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4152 @code{push-button} is the command that a user uses to actually `push'
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4153 a button, and is bound by default in the button itself to @key{RET}
53829
83980e864dd7 (Button Properties, Button Buffer Commands): mouse-2 invokes button,
John Paul Wallington <jpw@pobox.com>
parents: 53468
diff changeset
4154 and to @key{mouse-2} using a region-specific keymap. Commands
53467
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4155 that are useful outside the buttons itself, such as
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4156 @code{forward-button} and @code{backward-button} are additionally
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4157 available in the keymap stored in @code{button-buffer-map}; a mode
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4158 which uses buttons may want to use @code{button-buffer-map} as a
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4159 parent keymap for its keymap.
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4160
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4161 @deffn Command push-button &optional pos use-mouse-action
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4162 @tindex push-button
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4163 Perform the action specified by a button at location @var{pos}.
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4164 @var{pos} may be either a buffer position or a mouse-event. If
53468
f641b341c5ec Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-13
Miles Bader <miles@gnu.org>
parents: 53467
diff changeset
4165 @var{use-mouse-action} is non-@code{nil}, or @var{pos} is a
f641b341c5ec Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-13
Miles Bader <miles@gnu.org>
parents: 53467
diff changeset
4166 mouse-event (@pxref{Mouse Events}), try to invoke the button's
f641b341c5ec Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-13
Miles Bader <miles@gnu.org>
parents: 53467
diff changeset
4167 @code{mouse-action} property instead of @code{action}; if the button
f641b341c5ec Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-13
Miles Bader <miles@gnu.org>
parents: 53467
diff changeset
4168 has no @code{mouse-action} property, use @code{action} as normal.
f641b341c5ec Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-13
Miles Bader <miles@gnu.org>
parents: 53467
diff changeset
4169 @var{pos} defaults to point, except when @code{push-button} is invoked
f641b341c5ec Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-13
Miles Bader <miles@gnu.org>
parents: 53467
diff changeset
4170 interactively as the result of a mouse-event, in which case, the mouse
f641b341c5ec Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-13
Miles Bader <miles@gnu.org>
parents: 53467
diff changeset
4171 event's position is used. If there's no button at @var{pos}, do
53467
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4172 nothing and return @code{nil}, otherwise return @code{t}.
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4173 @end deffn
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4174
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4175 @deffn Command forward-button n &optional wrap display-message
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4176 @tindex forward-button
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4177 Move to the @var{n}th next button, or @var{n}th previous button if
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4178 @var{n} is negative. If @var{n} is zero, move to the start of any
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4179 button at point. If @var{wrap} is non-@code{nil}, moving past either
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4180 end of the buffer continues from the other end. If
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4181 @var{display-message} is non-@code{nil}, the button's help-echo string
53468
f641b341c5ec Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-13
Miles Bader <miles@gnu.org>
parents: 53467
diff changeset
4182 is displayed. Any button with a non-@code{nil} @code{skip} property
f641b341c5ec Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-13
Miles Bader <miles@gnu.org>
parents: 53467
diff changeset
4183 is skipped over. Returns the button found.
53467
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4184 @end deffn
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4185
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4186 @deffn Command backward-button n &optional wrap display-message
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4187 @tindex backward-button
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4188 Move to the @var{n}th previous button, or @var{n}th next button if
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4189 @var{n} is negative. If @var{n} is zero, move to the start of any
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4190 button at point. If @var{wrap} is non-@code{nil}, moving past either
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4191 end of the buffer continues from the other end. If
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4192 @var{display-message} is non-@code{nil}, the button's help-echo string
53468
f641b341c5ec Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-13
Miles Bader <miles@gnu.org>
parents: 53467
diff changeset
4193 is displayed. Any button with a non-@code{nil} @code{skip} property
f641b341c5ec Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-13
Miles Bader <miles@gnu.org>
parents: 53467
diff changeset
4194 is skipped over. Returns the button found.
53467
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4195 @end deffn
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4196
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4197 @defun next-button pos &optional count-current
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4198 @tindex next-button
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4199 Return the next button after position @var{pos} in the current buffer.
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4200 If @var{count-current} is non-@code{nil}, count any button at
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4201 @var{pos} in the search, instead of starting at the next button.
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4202 @end defun
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4203
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4204 @defun previous-button pos &optional count-current
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4205 @tindex previous-button
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4206 Return the @var{n}th button before position @var{pos} in the current
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4207 buffer. If @var{count-current} is non-@code{nil}, count any button at
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4208 @var{pos} in the search, instead of starting at the next button.
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4209 @end defun
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4210
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4211 @node Manipulating Button Types
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4212 @subsection Manipulating Button Types
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4213 @cindex manipulating button types
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4214
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4215 @defun button-type-put type prop val
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4216 @tindex button-type-put
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4217 Set the button-type @var{type}'s @var{prop} property to @var{val}.
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4218 @end defun
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4219
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4220 @defun button-type-get type prop
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4221 @tindex button-type-get
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4222 Get the property of button-type @var{type} named @var{prop}.
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4223 @end defun
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4224
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4225 @defun button-type-subtype-p type supertype
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4226 @tindex button-type-subtype-p
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4227 Return @code{t} if button-type @var{type} is a subtype of @var{supertype}.
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4228 @end defun
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4229
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4230 @node Blinking
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4231 @section Blinking Parentheses
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4232 @cindex parenthesis matching
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4233 @cindex blinking
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4234 @cindex balancing parentheses
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4235 @cindex close parenthesis
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4236
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4237 This section describes the mechanism by which Emacs shows a matching
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4238 open parenthesis when the user inserts a close parenthesis.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4239
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4240 @defvar blink-paren-function
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4241 The value of this variable should be a function (of no arguments) to
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4242 be called whenever a character with close parenthesis syntax is inserted.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4243 The value of @code{blink-paren-function} may be @code{nil}, in which
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4244 case nothing is done.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4245 @end defvar
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4246
22252
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
4247 @defopt blink-matching-paren
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4248 If this variable is @code{nil}, then @code{blink-matching-open} does
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4249 nothing.
22252
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
4250 @end defopt
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4251
22252
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
4252 @defopt blink-matching-paren-distance
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4253 This variable specifies the maximum distance to scan for a matching
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4254 parenthesis before giving up.
22252
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
4255 @end defopt
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4256
22252
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
4257 @defopt blink-matching-delay
12098
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 12067
diff changeset
4258 This variable specifies the number of seconds for the cursor to remain
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 12067
diff changeset
4259 at the matching parenthesis. A fraction of a second often gives
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 12067
diff changeset
4260 good results, but the default is 1, which works on all systems.
22252
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
4261 @end defopt
12098
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 12067
diff changeset
4262
22252
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
4263 @deffn Command blink-matching-open
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4264 This function is the default value of @code{blink-paren-function}. It
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4265 assumes that point follows a character with close parenthesis syntax and
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4266 moves the cursor momentarily to the matching opening character. If that
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4267 character is not already on the screen, it displays the character's
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4268 context in the echo area. To avoid long delays, this function does not
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4269 search farther than @code{blink-matching-paren-distance} characters.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4270
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4271 Here is an example of calling this function explicitly.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4272
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4273 @smallexample
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4274 @group
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4275 (defun interactive-blink-matching-open ()
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4276 @c Do not break this line! -- rms.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4277 @c The first line of a doc string
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4278 @c must stand alone.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4279 "Indicate momentarily the start of sexp before point."
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4280 (interactive)
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4281 @end group
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4282 @group
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4283 (let ((blink-matching-paren-distance
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4284 (buffer-size))
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4285 (blink-matching-paren t))
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4286 (blink-matching-open)))
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4287 @end group
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4288 @end smallexample
22252
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
4289 @end deffn
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4290
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4291 @node Inverse Video
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4292 @section Inverse Video
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4293 @cindex Inverse Video
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4294
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4295 @defopt inverse-video
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4296 @cindex highlighting
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4297 This variable controls whether Emacs uses inverse video for all text
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4298 on the screen. Non-@code{nil} means yes, @code{nil} means no. The
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4299 default is @code{nil}.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4300 @end defopt
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4301
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4302 @defopt mode-line-inverse-video
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
4303 This variable controls the use of inverse video for mode lines and menu
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
4304 bars. If it is non-@code{nil}, then these lines are displayed in
27331
be0a552c8320 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 27193
diff changeset
4305 inverse video. Otherwise, these lines are displayed normally, just like
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
4306 other text. The default is @code{t}.
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
4307
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
4308 For window frames, this feature actually applies the face named
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
4309 @code{mode-line}; that face is normally set up as the inverse of the
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
4310 default face, unless you change it.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4311 @end defopt
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4312
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4313 @node Usual Display
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4314 @section Usual Display Conventions
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4315
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4316 The usual display conventions define how to display each character
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4317 code. You can override these conventions by setting up a display table
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4318 (@pxref{Display Tables}). Here are the usual display conventions:
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4319
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4320 @itemize @bullet
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4321 @item
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4322 Character codes 32 through 126 map to glyph codes 32 through 126.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4323 Normally this means they display as themselves.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4324
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4325 @item
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4326 Character code 9 is a horizontal tab. It displays as whitespace
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4327 up to a position determined by @code{tab-width}.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4328
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4329 @item
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4330 Character code 10 is a newline.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4331
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4332 @item
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4333 All other codes in the range 0 through 31, and code 127, display in one
9009
7cdfcd5e71ff entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 8925
diff changeset
4334 of two ways according to the value of @code{ctl-arrow}. If it is
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4335 non-@code{nil}, these codes map to sequences of two glyphs, where the
52978
1a5c50faf357 Replace @sc{foo} with @acronym{FOO}.
Eli Zaretskii <eliz@gnu.org>
parents: 52940
diff changeset
4336 first glyph is the @acronym{ASCII} code for @samp{^}. (A display table can
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4337 specify a glyph to use instead of @samp{^}.) Otherwise, these codes map
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4338 just like the codes in the range 128 to 255.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4339
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
4340 On MS-DOS terminals, Emacs arranges by default for the character code
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
4341 127 to be mapped to the glyph code 127, which normally displays as an
52978
1a5c50faf357 Replace @sc{foo} with @acronym{FOO}.
Eli Zaretskii <eliz@gnu.org>
parents: 52940
diff changeset
4342 empty polygon. This glyph is used to display non-@acronym{ASCII} characters
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
4343 that the MS-DOS terminal doesn't support. @xref{MS-DOS and MULE,,,
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
4344 emacs, The GNU Emacs Manual}.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
4345
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4346 @item
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4347 Character codes 128 through 255 map to sequences of four glyphs, where
52978
1a5c50faf357 Replace @sc{foo} with @acronym{FOO}.
Eli Zaretskii <eliz@gnu.org>
parents: 52940
diff changeset
4348 the first glyph is the @acronym{ASCII} code for @samp{\}, and the others are
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
4349 digit characters representing the character code in octal. (A display
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
4350 table can specify a glyph to use instead of @samp{\}.)
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
4351
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
4352 @item
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
4353 Multibyte character codes above 256 are displayed as themselves, or as a
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
4354 question mark or empty box if the terminal cannot display that
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
4355 character.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4356 @end itemize
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4357
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4358 The usual display conventions apply even when there is a display
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4359 table, for any character whose entry in the active display table is
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4360 @code{nil}. Thus, when you set up a display table, you need only
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
4361 specify the characters for which you want special behavior.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4362
24951
7451b1458af1 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22843
diff changeset
4363 These display rules apply to carriage return (character code 13), when
7451b1458af1 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22843
diff changeset
4364 it appears in the buffer. But that character may not appear in the
7451b1458af1 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22843
diff changeset
4365 buffer where you expect it, if it was eliminated as part of end-of-line
25454
80ac191b6d2b *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 24951
diff changeset
4366 conversion (@pxref{Coding System Basics}).
24951
7451b1458af1 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22843
diff changeset
4367
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4368 These variables affect the way certain characters are displayed on the
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4369 screen. Since they change the number of columns the characters occupy,
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
4370 they also affect the indentation functions. These variables also affect
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
4371 how the mode line is displayed; if you want to force redisplay of the
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
4372 mode line using the new values, call the function
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
4373 @code{force-mode-line-update} (@pxref{Mode Line Format}).
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4374
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4375 @defopt ctl-arrow
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4376 @cindex control characters in display
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4377 This buffer-local variable controls how control characters are
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4378 displayed. If it is non-@code{nil}, they are displayed as a caret
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4379 followed by the character: @samp{^A}. If it is @code{nil}, they are
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4380 displayed as a backslash followed by three octal digits: @samp{\001}.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4381 @end defopt
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4382
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4383 @c Following may have overfull hbox.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4384 @defvar default-ctl-arrow
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4385 The value of this variable is the default value for @code{ctl-arrow} in
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4386 buffers that do not override it. @xref{Default Value}.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4387 @end defvar
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4388
26696
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
4389 @defopt indicate-empty-lines
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
4390 @tindex indicate-empty-lines
42905
09cd352a779e (Truncation, Overlay Arrow, Usual Display): Add index entries for fringe
Eli Zaretskii <eliz@gnu.org>
parents: 42888
diff changeset
4391 @cindex fringes, and empty line indication
52141
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
4392 When this is non-@code{nil}, Emacs displays a special glyph in the
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
4393 fringe of each empty line at the end of the buffer, on terminals that
a5d4d0a7b284 (Warnings): New node, and subnodes.
Richard M. Stallman <rms@gnu.org>
parents: 52002
diff changeset
4394 support it (window systems). @xref{Fringes}.
26696
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
4395 @end defopt
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26400
diff changeset
4396
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4397 @defopt tab-width
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4398 The value of this variable is the spacing between tab stops used for
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
4399 displaying tab characters in Emacs buffers. The value is in units of
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
4400 columns, and the default is 8. Note that this feature is completely
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
4401 independent of the user-settable tab stops used by the command
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
4402 @code{tab-to-tab-stop}. @xref{Indent Tabs}.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4403 @end defopt
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4404
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4405 @node Display Tables
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4406 @section Display Tables
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4407
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4408 @cindex display table
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
4409 You can use the @dfn{display table} feature to control how all possible
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
4410 character codes display on the screen. This is useful for displaying
52978
1a5c50faf357 Replace @sc{foo} with @acronym{FOO}.
Eli Zaretskii <eliz@gnu.org>
parents: 52940
diff changeset
4411 European languages that have letters not in the @acronym{ASCII} character
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
4412 set.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4413
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4414 The display table maps each character code into a sequence of
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
4415 @dfn{glyphs}, each glyph being a graphic that takes up one character
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4416 position on the screen. You can also define how to display each glyph
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4417 on your terminal, using the @dfn{glyph table}.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4418
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
4419 Display tables affect how the mode line is displayed; if you want to
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
4420 force redisplay of the mode line using a new display table, call
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
4421 @code{force-mode-line-update} (@pxref{Mode Line Format}).
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
4422
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4423 @menu
53467
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4424 * Display Table Format:: What a display table consists of.
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4425 * Active Display Table:: How Emacs selects a display table to use.
a18219fcd84d Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-12
Miles Bader <miles@gnu.org>
parents: 53422
diff changeset
4426 * Glyphs:: How to define a glyph, and what glyphs mean.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4427 @end menu
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4428
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4429 @node Display Table Format
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4430 @subsection Display Table Format
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4431
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
4432 A display table is actually a char-table (@pxref{Char-Tables}) with
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
4433 @code{display-table} as its subtype.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4434
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4435 @defun make-display-table
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4436 This creates and returns a display table. The table initially has
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4437 @code{nil} in all elements.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4438 @end defun
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4439
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
4440 The ordinary elements of the display table are indexed by character
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
4441 codes; the element at index @var{c} says how to display the character
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
4442 code @var{c}. The value should be @code{nil} or a vector of glyph
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
4443 values (@pxref{Glyphs}). If an element is @code{nil}, it says to
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
4444 display that character according to the usual display conventions
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
4445 (@pxref{Usual Display}).
12067
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
4446
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
4447 If you use the display table to change the display of newline
73dc8205d259 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 10211
diff changeset
4448 characters, the whole buffer will be displayed as one long ``line.''
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4449
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
4450 The display table also has six ``extra slots'' which serve special
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
4451 purposes. Here is a table of their meanings; @code{nil} in any slot
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
4452 means to use the default for that slot, as stated below.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4453
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4454 @table @asis
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
4455 @item 0
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4456 The glyph for the end of a truncated screen line (the default for this
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
4457 is @samp{$}). @xref{Glyphs}. Newer Emacs versions, on some platforms,
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
4458 display arrows to indicate truncation---the display table has no effect
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
4459 in these situations.
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
4460 @item 1
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4461 The glyph for the end of a continued line (the default is @samp{\}).
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
4462 Newer Emacs versions, on some platforms, display curved arrows to
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
4463 indicate truncation---the display table has no effect in these
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
4464 situations.
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
4465 @item 2
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4466 The glyph for indicating a character displayed as an octal character
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4467 code (the default is @samp{\}).
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
4468 @item 3
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4469 The glyph for indicating a control character (the default is @samp{^}).
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
4470 @item 4
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4471 A vector of glyphs for indicating the presence of invisible lines (the
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4472 default is @samp{...}). @xref{Selective Display}.
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
4473 @item 5
8925
b05788fd41f0 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 8096
diff changeset
4474 The glyph used to draw the border between side-by-side windows (the
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
4475 default is @samp{|}). @xref{Splitting Windows}. This takes effect only
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
4476 when there are no scroll bars; if scroll bars are supported and in use,
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
4477 a scroll bar separates the two windows.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4478 @end table
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4479
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4480 For example, here is how to construct a display table that mimics the
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4481 effect of setting @code{ctl-arrow} to a non-@code{nil} value:
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4482
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4483 @example
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4484 (setq disptab (make-display-table))
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4485 (let ((i 0))
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4486 (while (< i 32)
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4487 (or (= i ?\t) (= i ?\n)
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4488 (aset disptab i (vector ?^ (+ i 64))))
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4489 (setq i (1+ i)))
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4490 (aset disptab 127 (vector ?^ ??)))
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4491 @end example
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4492
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
4493 @defun display-table-slot display-table slot
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
4494 This function returns the value of the extra slot @var{slot} of
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
4495 @var{display-table}. The argument @var{slot} may be a number from 0 to
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
4496 5 inclusive, or a slot name (symbol). Valid symbols are
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
4497 @code{truncation}, @code{wrap}, @code{escape}, @code{control},
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
4498 @code{selective-display}, and @code{vertical-border}.
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
4499 @end defun
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
4500
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
4501 @defun set-display-table-slot display-table slot value
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
4502 This function stores @var{value} in the extra slot @var{slot} of
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
4503 @var{display-table}. The argument @var{slot} may be a number from 0 to
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
4504 5 inclusive, or a slot name (symbol). Valid symbols are
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
4505 @code{truncation}, @code{wrap}, @code{escape}, @code{control},
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
4506 @code{selective-display}, and @code{vertical-border}.
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
4507 @end defun
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
4508
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
4509 @defun describe-display-table display-table
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
4510 @tindex describe-display-table
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
4511 This function displays a description of the display table
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
4512 @var{display-table} in a help buffer.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
4513 @end defun
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
4514
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
4515 @deffn Command describe-current-display-table
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
4516 @tindex describe-current-display-table
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
4517 This command displays a description of the current display table in a
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
4518 help buffer.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
4519 @end deffn
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
4520
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4521 @node Active Display Table
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4522 @subsection Active Display Table
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4523 @cindex active display table
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4524
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4525 Each window can specify a display table, and so can each buffer. When
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4526 a buffer @var{b} is displayed in window @var{w}, display uses the
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4527 display table for window @var{w} if it has one; otherwise, the display
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4528 table for buffer @var{b} if it has one; otherwise, the standard display
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4529 table if any. The display table chosen is called the @dfn{active}
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4530 display table.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4531
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4532 @defun window-display-table window
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4533 This function returns @var{window}'s display table, or @code{nil}
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4534 if @var{window} does not have an assigned display table.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4535 @end defun
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4536
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4537 @defun set-window-display-table window table
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4538 This function sets the display table of @var{window} to @var{table}.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4539 The argument @var{table} should be either a display table or
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4540 @code{nil}.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4541 @end defun
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4542
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4543 @defvar buffer-display-table
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
4544 This variable is automatically buffer-local in all buffers; its value in
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
4545 a particular buffer specifies the display table for that buffer. If it
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
4546 is @code{nil}, that means the buffer does not have an assigned display
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
4547 table.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4548 @end defvar
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4549
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4550 @defvar standard-display-table
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4551 This variable's value is the default display table, used whenever a
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4552 window has no display table and neither does the buffer displayed in
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4553 that window. This variable is @code{nil} by default.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4554 @end defvar
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4555
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4556 If there is no display table to use for a particular window---that is,
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
4557 if the window specifies none, its buffer specifies none, and
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
4558 @code{standard-display-table} is @code{nil}---then Emacs uses the usual
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4559 display conventions for all character codes in that window. @xref{Usual
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4560 Display}.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4561
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
4562 A number of functions for changing the standard display table
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
4563 are defined in the library @file{disp-table}.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
4564
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4565 @node Glyphs
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4566 @subsection Glyphs
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4567
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4568 @cindex glyph
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4569 A @dfn{glyph} is a generalization of a character; it stands for an
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4570 image that takes up a single character position on the screen. Glyphs
47482
aabdbec10b60 Correct the explanation of glyphs and glyph table.
Richard M. Stallman <rms@gnu.org>
parents: 46721
diff changeset
4571 are represented in Lisp as integers, just as characters are. Normally
aabdbec10b60 Correct the explanation of glyphs and glyph table.
Richard M. Stallman <rms@gnu.org>
parents: 46721
diff changeset
4572 Emacs finds glyphs in the display table (@pxref{Display Tables}).
aabdbec10b60 Correct the explanation of glyphs and glyph table.
Richard M. Stallman <rms@gnu.org>
parents: 46721
diff changeset
4573
aabdbec10b60 Correct the explanation of glyphs and glyph table.
Richard M. Stallman <rms@gnu.org>
parents: 46721
diff changeset
4574 A glyph can be @dfn{simple} or it can be defined by the @dfn{glyph
aabdbec10b60 Correct the explanation of glyphs and glyph table.
Richard M. Stallman <rms@gnu.org>
parents: 46721
diff changeset
4575 table}. A simple glyph is just a way of specifying a character and a
aabdbec10b60 Correct the explanation of glyphs and glyph table.
Richard M. Stallman <rms@gnu.org>
parents: 46721
diff changeset
4576 face to output it in. The glyph code for a simple glyph, mod 524288,
aabdbec10b60 Correct the explanation of glyphs and glyph table.
Richard M. Stallman <rms@gnu.org>
parents: 46721
diff changeset
4577 is the character to output, and the glyph code divided by 524288
aabdbec10b60 Correct the explanation of glyphs and glyph table.
Richard M. Stallman <rms@gnu.org>
parents: 46721
diff changeset
4578 specifies the face number (@pxref{Face Functions}) to use while
aabdbec10b60 Correct the explanation of glyphs and glyph table.
Richard M. Stallman <rms@gnu.org>
parents: 46721
diff changeset
4579 outputting it. (524288 is
aabdbec10b60 Correct the explanation of glyphs and glyph table.
Richard M. Stallman <rms@gnu.org>
parents: 46721
diff changeset
4580 @ifnottex
aabdbec10b60 Correct the explanation of glyphs and glyph table.
Richard M. Stallman <rms@gnu.org>
parents: 46721
diff changeset
4581 2**19.)
aabdbec10b60 Correct the explanation of glyphs and glyph table.
Richard M. Stallman <rms@gnu.org>
parents: 46721
diff changeset
4582 @end ifnottex
aabdbec10b60 Correct the explanation of glyphs and glyph table.
Richard M. Stallman <rms@gnu.org>
parents: 46721
diff changeset
4583 @tex
aabdbec10b60 Correct the explanation of glyphs and glyph table.
Richard M. Stallman <rms@gnu.org>
parents: 46721
diff changeset
4584 $2^{19}$.)
aabdbec10b60 Correct the explanation of glyphs and glyph table.
Richard M. Stallman <rms@gnu.org>
parents: 46721
diff changeset
4585 @end tex
aabdbec10b60 Correct the explanation of glyphs and glyph table.
Richard M. Stallman <rms@gnu.org>
parents: 46721
diff changeset
4586 @xref{Faces}.
aabdbec10b60 Correct the explanation of glyphs and glyph table.
Richard M. Stallman <rms@gnu.org>
parents: 46721
diff changeset
4587
aabdbec10b60 Correct the explanation of glyphs and glyph table.
Richard M. Stallman <rms@gnu.org>
parents: 46721
diff changeset
4588 On character terminals, you can set up a @dfn{glyph table} to define
aabdbec10b60 Correct the explanation of glyphs and glyph table.
Richard M. Stallman <rms@gnu.org>
parents: 46721
diff changeset
4589 the meaning of glyph codes. The glyph codes is the value of the
aabdbec10b60 Correct the explanation of glyphs and glyph table.
Richard M. Stallman <rms@gnu.org>
parents: 46721
diff changeset
4590 variable @code{glyph-table}.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4591
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4592 @defvar glyph-table
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4593 The value of this variable is the current glyph table. It should be a
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48948
diff changeset
4594 vector; the @var{g}th element defines glyph code @var{g}.
47482
aabdbec10b60 Correct the explanation of glyphs and glyph table.
Richard M. Stallman <rms@gnu.org>
parents: 46721
diff changeset
4595
aabdbec10b60 Correct the explanation of glyphs and glyph table.
Richard M. Stallman <rms@gnu.org>
parents: 46721
diff changeset
4596 If a glyph code is greater than or equal to the length of the glyph
aabdbec10b60 Correct the explanation of glyphs and glyph table.
Richard M. Stallman <rms@gnu.org>
parents: 46721
diff changeset
4597 table, that code is automatically simple. If the value of
aabdbec10b60 Correct the explanation of glyphs and glyph table.
Richard M. Stallman <rms@gnu.org>
parents: 46721
diff changeset
4598 @code{glyph-table} is @code{nil} instead of a vector, then all glyphs
aabdbec10b60 Correct the explanation of glyphs and glyph table.
Richard M. Stallman <rms@gnu.org>
parents: 46721
diff changeset
4599 are simple. The glyph table is not used on graphical displays, only
aabdbec10b60 Correct the explanation of glyphs and glyph table.
Richard M. Stallman <rms@gnu.org>
parents: 46721
diff changeset
4600 on character terminals. On graphical displays, all glyphs are simple.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4601 @end defvar
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4602
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4603 Here are the possible types of elements in the glyph table:
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4604
22252
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
4605 @table @asis
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
4606 @item @var{string}
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4607 Send the characters in @var{string} to the terminal to output
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4608 this glyph. This alternative is available on character terminals,
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
4609 but not under a window system.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4610
22252
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
4611 @item @var{integer}
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
4612 Define this glyph code as an alias for glyph code @var{integer}. You
47482
aabdbec10b60 Correct the explanation of glyphs and glyph table.
Richard M. Stallman <rms@gnu.org>
parents: 46721
diff changeset
4613 can use an alias to specify a face code for the glyph and use a small
aabdbec10b60 Correct the explanation of glyphs and glyph table.
Richard M. Stallman <rms@gnu.org>
parents: 46721
diff changeset
4614 number as its code.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4615
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4616 @item @code{nil}
47482
aabdbec10b60 Correct the explanation of glyphs and glyph table.
Richard M. Stallman <rms@gnu.org>
parents: 46721
diff changeset
4617 This glyph is simple.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4618 @end table
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4619
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
4620 @defun create-glyph string
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
4621 @tindex create-glyph
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
4622 This function returns a newly-allocated glyph code which is set up to
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
4623 display by sending @var{string} to the terminal.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
4624 @end defun
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
4625
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4626 @node Beeping
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4627 @section Beeping
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4628 @cindex beeping
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4629 @cindex bell
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4630
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
4631 This section describes how to make Emacs ring the bell (or blink the
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
4632 screen) to attract the user's attention. Be conservative about how
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
4633 often you do this; frequent bells can become irritating. Also be
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
4634 careful not to use just beeping when signaling an error is more
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
4635 appropriate. (@xref{Errors}.)
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4636
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
4637 @defun ding &optional do-not-terminate
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4638 @cindex keyboard macro termination
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4639 This function beeps, or flashes the screen (see @code{visible-bell} below).
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4640 It also terminates any keyboard macro currently executing unless
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
4641 @var{do-not-terminate} is non-@code{nil}.
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4642 @end defun
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4643
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
4644 @defun beep &optional do-not-terminate
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4645 This is a synonym for @code{ding}.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4646 @end defun
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4647
22252
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
4648 @defopt visible-bell
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4649 This variable determines whether Emacs should flash the screen to
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4650 represent a bell. Non-@code{nil} means yes, @code{nil} means no. This
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
4651 is effective on a window system, and on a character-only terminal
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
4652 provided the terminal's Termcap entry defines the visible bell
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
4653 capability (@samp{vb}).
22252
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
4654 @end defopt
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4655
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
4656 @defvar ring-bell-function
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
4657 If this is non-@code{nil}, it specifies how Emacs should ``ring the
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
4658 bell.'' Its value should be a function of no arguments. If this is
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
4659 non-@code{nil}, it takes precedence over the @code{visible-bell}
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
4660 variable.
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
4661 @end defvar
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
4662
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4663 @node Window Systems
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4664 @section Window Systems
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4665
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4666 Emacs works with several window systems, most notably the X Window
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4667 System. Both Emacs and X use the term ``window'', but use it
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4668 differently. An Emacs frame is a single window as far as X is
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4669 concerned; the individual Emacs windows are not known to X at all.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4670
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4671 @defvar window-system
22252
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
4672 This variable tells Lisp programs what window system Emacs is running
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
4673 under. The possible values are
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
4674
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
4675 @table @code
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
4676 @item x
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4677 @cindex X Window System
22252
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
4678 Emacs is displaying using X.
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
4679 @item pc
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
4680 Emacs is displaying using MS-DOS.
22252
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
4681 @item w32
27332
5cfe77eaff45 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 27331
diff changeset
4682 Emacs is displaying using Windows.
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
4683 @item mac
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 25454
diff changeset
4684 Emacs is displaying using a Macintosh.
22252
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
4685 @item nil
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
4686 Emacs is using a character-based terminal.
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
4687 @end table
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4688 @end defvar
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4689
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4690 @defvar window-setup-hook
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
4691 This variable is a normal hook which Emacs runs after handling the
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18234
diff changeset
4692 initialization files. Emacs runs this hook after it has completed
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25809
diff changeset
4693 loading your init file, the default initialization file (if
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
4694 any), and the terminal-specific Lisp code, and running the hook
6598
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4695 @code{term-setup-hook}.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4696
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4697 This hook is used for internal purposes: setting up communication with
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4698 the window system, and creating the initial window. Users should not
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4699 interfere with it.
db2685239be9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4700 @end defvar
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 52380
diff changeset
4701
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 52380
diff changeset
4702 @ignore
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 52380
diff changeset
4703 arch-tag: ffdf5714-7ecf-415b-9023-fbc6b409c2c6
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 52380
diff changeset
4704 @end ignore