Add arch taglines
[bpt/emacs.git] / lispref / display.texi
1 @c -*-texinfo-*-
2 @c This is part of the GNU Emacs Lisp Reference Manual.
3 @c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2000, 2001, 2002
4 @c Free Software Foundation, Inc.
5 @c See the file elisp.texi for copying conditions.
6 @setfilename ../info/display
7 @node Display, Calendar, Processes, Top
8 @chapter Emacs Display
9
10 This chapter describes a number of features related to the display
11 that Emacs presents to the user.
12
13 @menu
14 * Refresh Screen:: Clearing the screen and redrawing everything on it.
15 * Forcing Redisplay:: Forcing redisplay.
16 * Truncation:: Folding or wrapping long text lines.
17 * The Echo Area:: Where messages are displayed.
18 * Warnings:: Displaying warning messages for the user.
19 * Invisible Text:: Hiding part of the buffer text.
20 * Selective Display:: Hiding part of the buffer text (the old way).
21 * Overlay Arrow:: Display of an arrow to indicate position.
22 * Temporary Displays:: Displays that go away automatically.
23 * Overlays:: Use overlays to highlight parts of the buffer.
24 * Width:: How wide a character or string is on the screen.
25 * Faces:: A face defines a graphics style for text characters:
26 font, colors, etc.
27 * Fringes:: Controlling window fringes.
28 * Display Property:: Enabling special display features.
29 * Images:: Displaying images in Emacs buffers.
30 * Blinking:: How Emacs shows the matching open parenthesis.
31 * Inverse Video:: Specifying how the screen looks.
32 * Usual Display:: The usual conventions for displaying nonprinting chars.
33 * Display Tables:: How to specify other conventions.
34 * Beeping:: Audible signal to the user.
35 * Window Systems:: Which window system is being used.
36 @end menu
37
38 @node Refresh Screen
39 @section Refreshing the Screen
40
41 The function @code{redraw-frame} redisplays the entire contents of a
42 given frame (@pxref{Frames}).
43
44 @c Emacs 19 feature
45 @defun redraw-frame frame
46 This function clears and redisplays frame @var{frame}.
47 @end defun
48
49 Even more powerful is @code{redraw-display}:
50
51 @deffn Command redraw-display
52 This function clears and redisplays all visible frames.
53 @end deffn
54
55 Processing user input takes absolute priority over redisplay. If you
56 call these functions when input is available, they do nothing
57 immediately, but a full redisplay does happen eventually---after all the
58 input has been processed.
59
60 Normally, suspending and resuming Emacs also refreshes the screen.
61 Some terminal emulators record separate contents for display-oriented
62 programs such as Emacs and for ordinary sequential display. If you are
63 using such a terminal, you might want to inhibit the redisplay on
64 resumption.
65
66 @defvar no-redraw-on-reenter
67 @cindex suspend (cf. @code{no-redraw-on-reenter})
68 @cindex resume (cf. @code{no-redraw-on-reenter})
69 This variable controls whether Emacs redraws the entire screen after it
70 has been suspended and resumed. Non-@code{nil} means there is no need
71 to redraw, @code{nil} means redrawing is needed. The default is @code{nil}.
72 @end defvar
73
74 @node Forcing Redisplay
75 @section Forcing Redisplay
76 @cindex forcing redisplay
77
78 Emacs redisplay normally stops if input arrives, and does not happen
79 at all if input is available before it starts. Most of the time, this
80 is exactly what you want. However, you can prevent preemption by
81 binding @code{redisplay-dont-pause} to a non-@code{nil} value.
82
83 @tindex redisplay-dont-pause
84 @defvar redisplay-dont-pause
85 If this variable is non-@code{nil}, pending input does not
86 prevent or halt redisplay; redisplay occurs, and finishes,
87 regardless of whether input is available. This feature is available
88 as of Emacs 21.
89 @end defvar
90
91 You can request a display update, but only if no input is pending,
92 with @code{(sit-for 0)}. To force a display update even when input is
93 pending, do this:
94
95 @example
96 (let ((redisplay-dont-pause t))
97 (sit-for 0))
98 @end example
99
100 @node Truncation
101 @section Truncation
102 @cindex line wrapping
103 @cindex continuation lines
104 @cindex @samp{$} in display
105 @cindex @samp{\} in display
106
107 When a line of text extends beyond the right edge of a window, the
108 line can either be continued on the next screen line, or truncated to
109 one screen line. The additional screen lines used to display a long
110 text line are called @dfn{continuation} lines. Normally, a @samp{$} in
111 the rightmost column of the window indicates truncation; a @samp{\} on
112 the rightmost column indicates a line that ``wraps'' onto the next line,
113 which is also called @dfn{continuing} the line. (The display table can
114 specify alternative indicators; see @ref{Display Tables}.)
115
116 On a windowed display, the @samp{$} and @samp{\} indicators are
117 replaced with graphics bitmaps displayed in the window fringes
118 (@pxref{Fringes}).
119
120 Note that continuation is different from filling; continuation happens
121 on the screen only, not in the buffer contents, and it breaks a line
122 precisely at the right margin, not at a word boundary. @xref{Filling}.
123
124 @defopt truncate-lines
125 This buffer-local variable controls how Emacs displays lines that extend
126 beyond the right edge of the window. The default is @code{nil}, which
127 specifies continuation. If the value is non-@code{nil}, then these
128 lines are truncated.
129
130 If the variable @code{truncate-partial-width-windows} is non-@code{nil},
131 then truncation is always used for side-by-side windows (within one
132 frame) regardless of the value of @code{truncate-lines}.
133 @end defopt
134
135 @defopt default-truncate-lines
136 This variable is the default value for @code{truncate-lines}, for
137 buffers that do not have buffer-local values for it.
138 @end defopt
139
140 @defopt truncate-partial-width-windows
141 This variable controls display of lines that extend beyond the right
142 edge of the window, in side-by-side windows (@pxref{Splitting Windows}).
143 If it is non-@code{nil}, these lines are truncated; otherwise,
144 @code{truncate-lines} says what to do with them.
145 @end defopt
146
147 When horizontal scrolling (@pxref{Horizontal Scrolling}) is in use in
148 a window, that forces truncation.
149
150 You can override the glyphs that indicate continuation or truncation
151 using the display table; see @ref{Display Tables}.
152
153 If your buffer contains @emph{very} long lines, and you use
154 continuation to display them, just thinking about them can make Emacs
155 redisplay slow. The column computation and indentation functions also
156 become slow. Then you might find it advisable to set
157 @code{cache-long-line-scans} to @code{t}.
158
159 @defvar cache-long-line-scans
160 If this variable is non-@code{nil}, various indentation and motion
161 functions, and Emacs redisplay, cache the results of scanning the
162 buffer, and consult the cache to avoid rescanning regions of the buffer
163 unless they are modified.
164
165 Turning on the cache slows down processing of short lines somewhat.
166
167 This variable is automatically buffer-local in every buffer.
168 @end defvar
169
170 @node The Echo Area
171 @section The Echo Area
172 @cindex error display
173 @cindex echo area
174
175 The @dfn{echo area} is used for displaying messages made with the
176 @code{message} primitive, and for echoing keystrokes. It is not the
177 same as the minibuffer, despite the fact that the minibuffer appears
178 (when active) in the same place on the screen as the echo area. The
179 @cite{GNU Emacs Manual} specifies the rules for resolving conflicts
180 between the echo area and the minibuffer for use of that screen space
181 (@pxref{Minibuffer,, The Minibuffer, emacs, The GNU Emacs Manual}).
182 Error messages appear in the echo area; see @ref{Errors}.
183
184 You can write output in the echo area by using the Lisp printing
185 functions with @code{t} as the stream (@pxref{Output Functions}), or as
186 follows:
187
188 @defun message string &rest arguments
189 This function displays a message in the echo area. The
190 argument @var{string} is similar to a C language @code{printf} control
191 string. See @code{format} in @ref{String Conversion}, for the details
192 on the conversion specifications. @code{message} returns the
193 constructed string.
194
195 In batch mode, @code{message} prints the message text on the standard
196 error stream, followed by a newline.
197
198 If @var{string}, or strings among the @var{arguments}, have @code{face}
199 text properties, these affect the way the message is displayed.
200
201 @c Emacs 19 feature
202 If @var{string} is @code{nil}, @code{message} clears the echo area; if
203 the echo area has been expanded automatically, this brings it back to
204 its normal size. If the minibuffer is active, this brings the
205 minibuffer contents back onto the screen immediately.
206
207 @vindex message-truncate-lines
208 Normally, displaying a long message resizes the echo area to display
209 the entire message. But if the variable @code{message-truncate-lines}
210 is non-@code{nil}, the echo area does not resize, and the message is
211 truncated to fit it, as in Emacs 20 and before.
212
213 @example
214 @group
215 (message "Minibuffer depth is %d."
216 (minibuffer-depth))
217 @print{} Minibuffer depth is 0.
218 @result{} "Minibuffer depth is 0."
219 @end group
220
221 @group
222 ---------- Echo Area ----------
223 Minibuffer depth is 0.
224 ---------- Echo Area ----------
225 @end group
226 @end example
227
228 To automatically display a message in the echo area or in a pop-buffer,
229 depending on its size, use @code{display-message-or-buffer}.
230 @end defun
231
232 @tindex with-temp-message
233 @defmac with-temp-message message &rest body
234 This construct displays a message in the echo area temporarily, during
235 the execution of @var{body}. It displays @var{message}, executes
236 @var{body}, then returns the value of the last body form while restoring
237 the previous echo area contents.
238 @end defmac
239
240 @defun message-or-box string &rest arguments
241 This function displays a message like @code{message}, but may display it
242 in a dialog box instead of the echo area. If this function is called in
243 a command that was invoked using the mouse---more precisely, if
244 @code{last-nonmenu-event} (@pxref{Command Loop Info}) is either
245 @code{nil} or a list---then it uses a dialog box or pop-up menu to
246 display the message. Otherwise, it uses the echo area. (This is the
247 same criterion that @code{y-or-n-p} uses to make a similar decision; see
248 @ref{Yes-or-No Queries}.)
249
250 You can force use of the mouse or of the echo area by binding
251 @code{last-nonmenu-event} to a suitable value around the call.
252 @end defun
253
254 @defun message-box string &rest arguments
255 This function displays a message like @code{message}, but uses a dialog
256 box (or a pop-up menu) whenever that is possible. If it is impossible
257 to use a dialog box or pop-up menu, because the terminal does not
258 support them, then @code{message-box} uses the echo area, like
259 @code{message}.
260 @end defun
261
262 @defun display-message-or-buffer message &optional buffer-name not-this-window frame
263 @tindex display-message-or-buffer
264 This function displays the message @var{message}, which may be either a
265 string or a buffer. If it is shorter than the maximum height of the
266 echo area, as defined by @code{max-mini-window-height}, it is displayed
267 in the echo area, using @code{message}. Otherwise,
268 @code{display-buffer} is used to show it in a pop-up buffer.
269
270 Returns either the string shown in the echo area, or when a pop-up
271 buffer is used, the window used to display it.
272
273 If @var{message} is a string, then the optional argument
274 @var{buffer-name} is the name of the buffer used to display it when a
275 pop-up buffer is used, defaulting to @samp{*Message*}. In the case
276 where @var{message} is a string and displayed in the echo area, it is
277 not specified whether the contents are inserted into the buffer anyway.
278
279 The optional arguments @var{not-this-window} and @var{frame} are as for
280 @code{display-buffer}, and only used if a buffer is displayed.
281 @end defun
282
283 @defun current-message
284 This function returns the message currently being displayed in the
285 echo area, or @code{nil} if there is none.
286 @end defun
287
288 @defvar cursor-in-echo-area
289 This variable controls where the cursor appears when a message is
290 displayed in the echo area. If it is non-@code{nil}, then the cursor
291 appears at the end of the message. Otherwise, the cursor appears at
292 point---not in the echo area at all.
293
294 The value is normally @code{nil}; Lisp programs bind it to @code{t}
295 for brief periods of time.
296 @end defvar
297
298 @defvar echo-area-clear-hook
299 This normal hook is run whenever the echo area is cleared---either by
300 @code{(message nil)} or for any other reason.
301 @end defvar
302
303 Almost all the messages displayed in the echo area are also recorded
304 in the @samp{*Messages*} buffer.
305
306 @defopt message-log-max
307 This variable specifies how many lines to keep in the @samp{*Messages*}
308 buffer. The value @code{t} means there is no limit on how many lines to
309 keep. The value @code{nil} disables message logging entirely. Here's
310 how to display a message and prevent it from being logged:
311
312 @example
313 (let (message-log-max)
314 (message @dots{}))
315 @end example
316 @end defopt
317
318 @defvar echo-keystrokes
319 This variable determines how much time should elapse before command
320 characters echo. Its value must be an integer or floating point number,
321 which specifies the
322 number of seconds to wait before echoing. If the user types a prefix
323 key (such as @kbd{C-x}) and then delays this many seconds before
324 continuing, the prefix key is echoed in the echo area. (Once echoing
325 begins in a key sequence, all subsequent characters in the same key
326 sequence are echoed immediately.)
327
328 If the value is zero, then command input is not echoed.
329 @end defvar
330
331 @node Warnings
332 @section Reporting Warnings
333 @cindex warnings
334
335 @dfn{Warnings} are a facility for a program to inform the user of a
336 possible problem, but continue running.
337
338 @menu
339 * Warning Basics:: Warnings concepts and functions to report them.
340 * Warning Variables:: Variables programs bind to customize their warnings.
341 * Warning Options:: Variables users set to control display of warnings.
342 @end menu
343
344 @node Warning Basics
345 @subsection Warning Basics
346 @cindex severity level
347
348 Every warning has a textual message, which explains the problem for
349 the user, and a @dfn{severity level} which is a symbol. Here are the
350 possible severity levels, in order of decreasing severity, and their
351 meanings:
352
353 @table @code
354 @item :emergency
355 A problem that will seriously impair Emacs operation soon
356 if you do not attend to it promptly.
357 @item :error
358 A report of data or circumstances that are inherently wrong.
359 @item :warning
360 A report of data or circumstances that are not inherently wrong, but
361 raise suspicion of a possible problem.
362 @item :debug
363 A report of information that may be useful if you are debugging.
364 @end table
365
366 When your program encounters invalid input data, it can either
367 signal a Lisp error by calling @code{error} or @code{signal} or report
368 a warning with severity @code{:error}. Signaling a Lisp error is the
369 easiest thing to do, but it means the program cannot continue
370 processing. If you want to take the trouble to implement a way to
371 continue processing despite the bad data, then reporting a warning of
372 severity @code{:error} is the right way to inform the user of the
373 problem. For instance, the Emacs Lisp byte compiler can report an
374 error that way and continue compiling other functions. (If the
375 program signals a Lisp error and then handles it with
376 @code{condition-case}, the user won't see the error message; it could
377 show the message to the user by reporting it as a warning.)
378
379 @cindex warning type
380 Each warning has a @dfn{warning type} to classify it. The type is a
381 list of symbols. The first symbol should be the custom group that you
382 use for the program's user options. For example, byte compiler
383 warnings use the warning type @code{(bytecomp)}. You can also
384 subcategorize the warnings, if you wish, by using more symbols in the
385 list.
386
387 @defun display-warning type message &optional level buffer-name
388 This function reports a warning, using @var{message} as the message
389 and @var{type} as the warning type. @var{level} should be the
390 severity level, with @code{:warning} being the default.
391
392 @var{buffer-name}, if non-@code{nil}, specifies the name of the buffer
393 for logging the warning. By default, it is @samp{*Warnings*}.
394 @end defun
395
396 @defun lwarn type level message &rest args
397 This function reports a warning using the value of @code{(format
398 @var{message} @var{args}...)} as the message. In other respects it is
399 equivalent to @code{display-warning}.
400 @end defun
401
402 @defun warn message &rest args
403 This function reports a warning using the value of @code{(format
404 @var{message} @var{args}...)} as the message, @code{(emacs)} as the
405 type, and @code{:warning} as the severity level. It exists for
406 compatibility only; we recommend not using it, because you should
407 specify a specific warning type.
408 @end defun
409
410 @node Warning Variables
411 @subsection Warning Variables
412
413 Programs can customize how their warnings appear by binding
414 the variables described in this section.
415
416 @defvar warning-levels
417 This list defines the meaning and severity order of the warning
418 severity levels. Each element defines one severity level,
419 and they are arranged in order of decreasing severity.
420
421 Each element has the form @code{(@var{level} @var{string}
422 @var{function})}, where @var{level} is the severity level it defines.
423 @var{string} specifies the textual description of this level.
424 @var{string} should use @samp{%s} to specify where to put the warning
425 type information, or it can omit the @samp{%s} so as not to include
426 that information.
427
428 The optional @var{function}, if non-@code{nil}, is a function to call
429 with no arguments, to get the user's attention.
430
431 Normally you should not change the value of this variable.
432 @end defvar
433
434 @defvar warning-prefix-function
435 If non-@code{nil}, te value is a function to generate prefix text for
436 warnings. Programs can bind the variable to a suitable function.
437 @code{display-warning} calls this function with the warnings buffer
438 current, and the function can insert text in it. That text becomes
439 the beginning of the warning message.
440
441 The function is called with two arguments, the severity level and its
442 entry in @code{warning-levels}. It should return a list to use as the
443 entry (this value need not be an actual member of
444 @code{warning-levels}). By constructing this value, the function to
445 change the severity of the warning, or specify different handling for
446 a given severity level.
447
448 If the variable's value is @code{nil} then there is no function
449 to call.
450 @end defvar
451
452 @defvar warning-series
453 Programs can bind this variable to @code{t} to say that the next
454 warning should begin a series. When several warnings form a series,
455 that means to leave point on the first warning of the series, rather
456 than keep move it for each warning so that it appears on the last one.
457 The series ends when the local binding is unbound and
458 @code{warning-series} becomes @code{nil} again.
459
460 The value can also be a symbol with a function definition. That is
461 equivalent to @code{t}, except that the next warning will also call
462 the function with no arguments with the warnings buffer current. The
463 function can insert text which will serve as a header for the series
464 of warnings.
465
466 Once a series has begun, the value is a marker which points to the
467 buffer position in the warnings buffer of the start of the series.
468
469 The variable's normal value is @code{nil}, which means to handle
470 each warning separately.
471 @end defvar
472
473 @defvar warning-fill-prefix
474 When this variable is non-@code{nil}, it specifies a fill prefix to
475 use for filling each warning's text.
476 @end defvar
477
478 @defvar warning-type-format
479 This variable specifies the format for displaying the warning type
480 in the warning message. The result of formatting the type this way
481 gets included in the message under the control of the string in the
482 entry in @code{warning-levels}. The default value is @code{" (%s)"}.
483 If you bind it to @code{""} then the warning type won't appear at
484 all.
485 @end defvar
486
487 @node Warning Options
488 @subsection Warning Options
489
490 These variables are used by users to control what happens
491 when a Lisp program reports a warning.
492
493 @defopt warning-minimum-level
494 This user option specifies the minimum severity level that should be
495 shown immediately to the user. The default is @code{:warning}, which
496 means to immediately display all warnings except @code{:debug}
497 warnings.
498 @end defopt
499
500 @defopt warning-minimum-log-level
501 This user option specifies the minimum severity level that should be
502 logged in the warnings buffer. The default is @code{:warning}, which
503 means to log all warnings except @code{:debug} warnings.
504 @end defopt
505
506 @defopt warning-suppress-types
507 This list specifies which warning types should not be displayed
508 immediately for the user. Each element of the list should be a list
509 of symbols. If its elements match the first elements in a warning
510 type, then that warning is not displayed immediately.
511 @end defopt
512
513 @defopt warning-suppress-log-types
514 This list specifies which warning types should not be logged in the
515 warnings buffer. Each element of the list should be a list of
516 symbols. If it matches the first few elements in a warning type, then
517 that warning is not logged.
518 @end defopt
519 @node Invisible Text
520 @section Invisible Text
521
522 @cindex invisible text
523 You can make characters @dfn{invisible}, so that they do not appear on
524 the screen, with the @code{invisible} property. This can be either a
525 text property (@pxref{Text Properties}) or a property of an overlay
526 (@pxref{Overlays}).
527
528 In the simplest case, any non-@code{nil} @code{invisible} property makes
529 a character invisible. This is the default case---if you don't alter
530 the default value of @code{buffer-invisibility-spec}, this is how the
531 @code{invisible} property works. You should normally use @code{t}
532 as the value of the @code{invisible} property if you don't plan
533 to set @code{buffer-invisibility-spec} yourself.
534
535 More generally, you can use the variable @code{buffer-invisibility-spec}
536 to control which values of the @code{invisible} property make text
537 invisible. This permits you to classify the text into different subsets
538 in advance, by giving them different @code{invisible} values, and
539 subsequently make various subsets visible or invisible by changing the
540 value of @code{buffer-invisibility-spec}.
541
542 Controlling visibility with @code{buffer-invisibility-spec} is
543 especially useful in a program to display the list of entries in a
544 database. It permits the implementation of convenient filtering
545 commands to view just a part of the entries in the database. Setting
546 this variable is very fast, much faster than scanning all the text in
547 the buffer looking for properties to change.
548
549 @defvar buffer-invisibility-spec
550 This variable specifies which kinds of @code{invisible} properties
551 actually make a character invisible.
552
553 @table @asis
554 @item @code{t}
555 A character is invisible if its @code{invisible} property is
556 non-@code{nil}. This is the default.
557
558 @item a list
559 Each element of the list specifies a criterion for invisibility; if a
560 character's @code{invisible} property fits any one of these criteria,
561 the character is invisible. The list can have two kinds of elements:
562
563 @table @code
564 @item @var{atom}
565 A character is invisible if its @code{invisible} property value
566 is @var{atom} or if it is a list with @var{atom} as a member.
567
568 @item (@var{atom} . t)
569 A character is invisible if its @code{invisible} property value
570 is @var{atom} or if it is a list with @var{atom} as a member.
571 Moreover, if this character is at the end of a line and is followed
572 by a visible newline, it displays an ellipsis.
573 @end table
574 @end table
575 @end defvar
576
577 Two functions are specifically provided for adding elements to
578 @code{buffer-invisibility-spec} and removing elements from it.
579
580 @defun add-to-invisibility-spec element
581 This function adds the element @var{element} to
582 @code{buffer-invisibility-spec} (if it is not already present in that
583 list). If @code{buffer-invisibility-spec} was @code{t}, it changes to
584 a list, @code{(t)}, so that text whose @code{invisible} property
585 is @code{t} remains invisible.
586 @end defun
587
588 @defun remove-from-invisibility-spec element
589 This removeds the element @var{element} from
590 @code{buffer-invisibility-spec}. This does nothing if @var{element}
591 is not in the list.
592 @end defun
593
594 A convention for use of @code{buffer-invisibility-spec} is that a
595 major mode should use the mode's own name as an element of
596 @code{buffer-invisibility-spec} and as the value of the
597 @code{invisible} property:
598
599 @example
600 ;; @r{If you want to display an ellipsis:}
601 (add-to-invisibility-spec '(my-symbol . t))
602 ;; @r{If you don't want ellipsis:}
603 (add-to-invisibility-spec 'my-symbol)
604
605 (overlay-put (make-overlay beginning end)
606 'invisible 'my-symbol)
607
608 ;; @r{When done with the overlays:}
609 (remove-from-invisibility-spec '(my-symbol . t))
610 ;; @r{Or respectively:}
611 (remove-from-invisibility-spec 'my-symbol)
612 @end example
613
614 @vindex line-move-ignore-invisible
615 Ordinarily, commands that operate on text or move point do not care
616 whether the text is invisible. The user-level line motion commands
617 explicitly ignore invisible newlines if
618 @code{line-move-ignore-invisible} is non-@code{nil}, but only because
619 they are explicitly programmed to do so.
620
621 Incremental search can make invisible overlays visible temporarily
622 and/or permanently when a match includes invisible text. To enable
623 this, the overlay should have a non-@code{nil}
624 @code{isearch-open-invisible} property. The property value should be a
625 function to be called with the overlay as an argument. This function
626 should make the overlay visible permanently; it is used when the match
627 overlaps the overlay on exit from the search.
628
629 During the search, such overlays are made temporarily visible by
630 temporarily modifying their invisible and intangible properties. If you
631 want this to be done differently for a certain overlay, give it an
632 @code{isearch-open-invisible-temporary} property which is a function.
633 The function is called with two arguments: the first is the overlay, and
634 the second is @code{nil} to make the overlay visible, or @code{t} to
635 make it invisible again.
636
637 @node Selective Display
638 @section Selective Display
639 @cindex selective display
640
641 @dfn{Selective display} refers to a pair of related features for
642 hiding certain lines on the screen.
643
644 The first variant, explicit selective display, is designed for use in
645 a Lisp program: it controls which lines are hidden by altering the text.
646 The invisible text feature (@pxref{Invisible Text}) has partially
647 replaced this feature.
648
649 In the second variant, the choice of lines to hide is made
650 automatically based on indentation. This variant is designed to be a
651 user-level feature.
652
653 The way you control explicit selective display is by replacing a
654 newline (control-j) with a carriage return (control-m). The text that
655 was formerly a line following that newline is now invisible. Strictly
656 speaking, it is temporarily no longer a line at all, since only newlines
657 can separate lines; it is now part of the previous line.
658
659 Selective display does not directly affect editing commands. For
660 example, @kbd{C-f} (@code{forward-char}) moves point unhesitatingly into
661 invisible text. However, the replacement of newline characters with
662 carriage return characters affects some editing commands. For example,
663 @code{next-line} skips invisible lines, since it searches only for
664 newlines. Modes that use selective display can also define commands
665 that take account of the newlines, or that make parts of the text
666 visible or invisible.
667
668 When you write a selectively displayed buffer into a file, all the
669 control-m's are output as newlines. This means that when you next read
670 in the file, it looks OK, with nothing invisible. The selective display
671 effect is seen only within Emacs.
672
673 @defvar selective-display
674 This buffer-local variable enables selective display. This means that
675 lines, or portions of lines, may be made invisible.
676
677 @itemize @bullet
678 @item
679 If the value of @code{selective-display} is @code{t}, then the character
680 control-m marks the start of invisible text; the control-m, and the rest
681 of the line following it, are not displayed. This is explicit selective
682 display.
683
684 @item
685 If the value of @code{selective-display} is a positive integer, then
686 lines that start with more than that many columns of indentation are not
687 displayed.
688 @end itemize
689
690 When some portion of a buffer is invisible, the vertical movement
691 commands operate as if that portion did not exist, allowing a single
692 @code{next-line} command to skip any number of invisible lines.
693 However, character movement commands (such as @code{forward-char}) do
694 not skip the invisible portion, and it is possible (if tricky) to insert
695 or delete text in an invisible portion.
696
697 In the examples below, we show the @emph{display appearance} of the
698 buffer @code{foo}, which changes with the value of
699 @code{selective-display}. The @emph{contents} of the buffer do not
700 change.
701
702 @example
703 @group
704 (setq selective-display nil)
705 @result{} nil
706
707 ---------- Buffer: foo ----------
708 1 on this column
709 2on this column
710 3n this column
711 3n this column
712 2on this column
713 1 on this column
714 ---------- Buffer: foo ----------
715 @end group
716
717 @group
718 (setq selective-display 2)
719 @result{} 2
720
721 ---------- Buffer: foo ----------
722 1 on this column
723 2on this column
724 2on this column
725 1 on this column
726 ---------- Buffer: foo ----------
727 @end group
728 @end example
729 @end defvar
730
731 @defvar selective-display-ellipses
732 If this buffer-local variable is non-@code{nil}, then Emacs displays
733 @samp{@dots{}} at the end of a line that is followed by invisible text.
734 This example is a continuation of the previous one.
735
736 @example
737 @group
738 (setq selective-display-ellipses t)
739 @result{} t
740
741 ---------- Buffer: foo ----------
742 1 on this column
743 2on this column ...
744 2on this column
745 1 on this column
746 ---------- Buffer: foo ----------
747 @end group
748 @end example
749
750 You can use a display table to substitute other text for the ellipsis
751 (@samp{@dots{}}). @xref{Display Tables}.
752 @end defvar
753
754 @node Overlay Arrow
755 @section The Overlay Arrow
756 @cindex overlay arrow
757
758 The @dfn{overlay arrow} is useful for directing the user's attention
759 to a particular line in a buffer. For example, in the modes used for
760 interface to debuggers, the overlay arrow indicates the line of code
761 about to be executed.
762
763 @defvar overlay-arrow-string
764 This variable holds the string to display to call attention to a
765 particular line, or @code{nil} if the arrow feature is not in use.
766 On a graphical display the contents of the string are ignored; instead a
767 glyph is displayed in the fringe area to the left of the display area.
768 @end defvar
769
770 @defvar overlay-arrow-position
771 This variable holds a marker that indicates where to display the overlay
772 arrow. It should point at the beginning of a line. On a non-graphical
773 display the arrow text
774 appears at the beginning of that line, overlaying any text that would
775 otherwise appear. Since the arrow is usually short, and the line
776 usually begins with indentation, normally nothing significant is
777 overwritten.
778
779 The overlay string is displayed only in the buffer that this marker
780 points into. Thus, only one buffer can have an overlay arrow at any
781 given time.
782 @c !!! overlay-arrow-position: but the overlay string may remain in the display
783 @c of some other buffer until an update is required. This should be fixed
784 @c now. Is it?
785 @end defvar
786
787 You can do a similar job by creating an overlay with a
788 @code{before-string} property. @xref{Overlay Properties}.
789
790 @node Temporary Displays
791 @section Temporary Displays
792
793 Temporary displays are used by Lisp programs to put output into a
794 buffer and then present it to the user for perusal rather than for
795 editing. Many help commands use this feature.
796
797 @defspec with-output-to-temp-buffer buffer-name forms@dots{}
798 This function executes @var{forms} while arranging to insert any output
799 they print into the buffer named @var{buffer-name}, which is first
800 created if necessary, and put into Help mode. Finally, the buffer is
801 displayed in some window, but not selected.
802
803 If the @var{forms} do not change the major mode in the output buffer, so
804 that it is still Help mode at the end of their execution, then
805 @code{with-output-to-temp-buffer} makes this buffer read-only at the
806 end, and also scans it for function and variable names to make them into
807 clickable cross-references.
808
809 The string @var{buffer-name} specifies the temporary buffer, which
810 need not already exist. The argument must be a string, not a buffer.
811 The buffer is erased initially (with no questions asked), and it is
812 marked as unmodified after @code{with-output-to-temp-buffer} exits.
813
814 @code{with-output-to-temp-buffer} binds @code{standard-output} to the
815 temporary buffer, then it evaluates the forms in @var{forms}. Output
816 using the Lisp output functions within @var{forms} goes by default to
817 that buffer (but screen display and messages in the echo area, although
818 they are ``output'' in the general sense of the word, are not affected).
819 @xref{Output Functions}.
820
821 Several hooks are available for customizing the behavior
822 of this construct; they are listed below.
823
824 The value of the last form in @var{forms} is returned.
825
826 @example
827 @group
828 ---------- Buffer: foo ----------
829 This is the contents of foo.
830 ---------- Buffer: foo ----------
831 @end group
832
833 @group
834 (with-output-to-temp-buffer "foo"
835 (print 20)
836 (print standard-output))
837 @result{} #<buffer foo>
838
839 ---------- Buffer: foo ----------
840 20
841
842 #<buffer foo>
843
844 ---------- Buffer: foo ----------
845 @end group
846 @end example
847 @end defspec
848
849 @defvar temp-buffer-show-function
850 If this variable is non-@code{nil}, @code{with-output-to-temp-buffer}
851 calls it as a function to do the job of displaying a help buffer. The
852 function gets one argument, which is the buffer it should display.
853
854 It is a good idea for this function to run @code{temp-buffer-show-hook}
855 just as @code{with-output-to-temp-buffer} normally would, inside of
856 @code{save-selected-window} and with the chosen window and buffer
857 selected.
858 @end defvar
859
860 @defvar temp-buffer-setup-hook
861 @tindex temp-buffer-setup-hook
862 This normal hook is run by @code{with-output-to-temp-buffer} before
863 evaluating @var{body}. When the hook runs, the temporary buffer is
864 current. This hook is normally set up with a function to put the
865 buffer in Help mode.
866 @end defvar
867
868 @defvar temp-buffer-show-hook
869 This normal hook is run by @code{with-output-to-temp-buffer} after
870 displaying the temporary buffer. When the hook runs, the temporary buffer
871 is current, and the window it was displayed in is selected. This hook
872 is normally set up with a function to make the buffer read only, and
873 find function names and variable names in it, provided the major mode
874 is Help mode.
875 @end defvar
876
877 @defun momentary-string-display string position &optional char message
878 This function momentarily displays @var{string} in the current buffer at
879 @var{position}. It has no effect on the undo list or on the buffer's
880 modification status.
881
882 The momentary display remains until the next input event. If the next
883 input event is @var{char}, @code{momentary-string-display} ignores it
884 and returns. Otherwise, that event remains buffered for subsequent use
885 as input. Thus, typing @var{char} will simply remove the string from
886 the display, while typing (say) @kbd{C-f} will remove the string from
887 the display and later (presumably) move point forward. The argument
888 @var{char} is a space by default.
889
890 The return value of @code{momentary-string-display} is not meaningful.
891
892 If the string @var{string} does not contain control characters, you can
893 do the same job in a more general way by creating (and then subsequently
894 deleting) an overlay with a @code{before-string} property.
895 @xref{Overlay Properties}.
896
897 If @var{message} is non-@code{nil}, it is displayed in the echo area
898 while @var{string} is displayed in the buffer. If it is @code{nil}, a
899 default message says to type @var{char} to continue.
900
901 In this example, point is initially located at the beginning of the
902 second line:
903
904 @example
905 @group
906 ---------- Buffer: foo ----------
907 This is the contents of foo.
908 @point{}Second line.
909 ---------- Buffer: foo ----------
910 @end group
911
912 @group
913 (momentary-string-display
914 "**** Important Message! ****"
915 (point) ?\r
916 "Type RET when done reading")
917 @result{} t
918 @end group
919
920 @group
921 ---------- Buffer: foo ----------
922 This is the contents of foo.
923 **** Important Message! ****Second line.
924 ---------- Buffer: foo ----------
925
926 ---------- Echo Area ----------
927 Type RET when done reading
928 ---------- Echo Area ----------
929 @end group
930 @end example
931 @end defun
932
933 @node Overlays
934 @section Overlays
935 @cindex overlays
936
937 You can use @dfn{overlays} to alter the appearance of a buffer's text on
938 the screen, for the sake of presentation features. An overlay is an
939 object that belongs to a particular buffer, and has a specified
940 beginning and end. It also has properties that you can examine and set;
941 these affect the display of the text within the overlay.
942
943 @menu
944 * Overlay Properties:: How to read and set properties.
945 What properties do to the screen display.
946 * Managing Overlays:: Creating and moving overlays.
947 * Finding Overlays:: Searching for overlays.
948 @end menu
949
950 @node Overlay Properties
951 @subsection Overlay Properties
952
953 Overlay properties are like text properties in that the properties that
954 alter how a character is displayed can come from either source. But in
955 most respects they are different. Text properties are considered a part
956 of the text; overlays are specifically considered not to be part of the
957 text. Thus, copying text between various buffers and strings preserves
958 text properties, but does not try to preserve overlays. Changing a
959 buffer's text properties marks the buffer as modified, while moving an
960 overlay or changing its properties does not. Unlike text property
961 changes, overlay changes are not recorded in the buffer's undo list.
962 @xref{Text Properties}, for comparison.
963
964 These functions are used for reading and writing the properties of an
965 overlay:
966
967 @defun overlay-get overlay prop
968 This function returns the value of property @var{prop} recorded in
969 @var{overlay}, if any. If @var{overlay} does not record any value for
970 that property, but it does have a @code{category} property which is a
971 symbol, that symbol's @var{prop} property is used. Otherwise, the value
972 is @code{nil}.
973 @end defun
974
975 @defun overlay-put overlay prop value
976 This function sets the value of property @var{prop} recorded in
977 @var{overlay} to @var{value}. It returns @var{value}.
978 @end defun
979
980 See also the function @code{get-char-property} which checks both
981 overlay properties and text properties for a given character.
982 @xref{Examining Properties}.
983
984 Many overlay properties have special meanings; here is a table
985 of them:
986
987 @table @code
988 @item priority
989 @kindex priority @r{(overlay property)}
990 This property's value (which should be a nonnegative integer number)
991 determines the priority of the overlay. The priority matters when two
992 or more overlays cover the same character and both specify the same
993 property; the one whose @code{priority} value is larger takes priority
994 over the other. For the @code{face} property, the higher priority
995 value does not completely replace the other; instead, its face
996 attributes override the face attributes of the lower priority
997 @code{face} property.
998
999 Currently, all overlays take priority over text properties. Please
1000 avoid using negative priority values, as we have not yet decided just
1001 what they should mean.
1002
1003 @item window
1004 @kindex window @r{(overlay property)}
1005 If the @code{window} property is non-@code{nil}, then the overlay
1006 applies only on that window.
1007
1008 @item category
1009 @kindex category @r{(overlay property)}
1010 If an overlay has a @code{category} property, we call it the
1011 @dfn{category} of the overlay. It should be a symbol. The properties
1012 of the symbol serve as defaults for the properties of the overlay.
1013
1014 @item face
1015 @kindex face @r{(overlay property)}
1016 This property controls the way text is displayed---for example, which
1017 font and which colors. @xref{Faces}, for more information.
1018
1019 In the simplest case, the value is a face name. It can also be a list;
1020 then each element can be any of these possibilities:
1021
1022 @itemize @bullet
1023 @item
1024 A face name (a symbol or string).
1025
1026 @item
1027 Starting in Emacs 21, a property list of face attributes. This has the
1028 form (@var{keyword} @var{value} @dots{}), where each @var{keyword} is a
1029 face attribute name and @var{value} is a meaningful value for that
1030 attribute. With this feature, you do not need to create a face each
1031 time you want to specify a particular attribute for certain text.
1032 @xref{Face Attributes}.
1033
1034 @item
1035 A cons cell of the form @code{(foreground-color . @var{color-name})} or
1036 @code{(background-color . @var{color-name})}. These elements specify
1037 just the foreground color or just the background color.
1038
1039 @code{(foreground-color . @var{color-name})} is equivalent to
1040 @code{(:foreground @var{color-name})}, and likewise for the background.
1041 @end itemize
1042
1043 @item mouse-face
1044 @kindex mouse-face @r{(overlay property)}
1045 This property is used instead of @code{face} when the mouse is within
1046 the range of the overlay.
1047
1048 @item display
1049 @kindex display @r{(overlay property)}
1050 This property activates various features that change the
1051 way text is displayed. For example, it can make text appear taller
1052 or shorter, higher or lower, wider or narrower, or replaced with an image.
1053 @xref{Display Property}.
1054
1055 @item help-echo
1056 @kindex help-echo @r{(text property)}
1057 If an overlay has a @code{help-echo} property, then when you move the
1058 mouse onto the text in the overlay, Emacs displays a help string in the
1059 echo area, or in the tooltip window. For details see @ref{Text
1060 help-echo}.
1061
1062 @item modification-hooks
1063 @kindex modification-hooks @r{(overlay property)}
1064 This property's value is a list of functions to be called if any
1065 character within the overlay is changed or if text is inserted strictly
1066 within the overlay.
1067
1068 The hook functions are called both before and after each change.
1069 If the functions save the information they receive, and compare notes
1070 between calls, they can determine exactly what change has been made
1071 in the buffer text.
1072
1073 When called before a change, each function receives four arguments: the
1074 overlay, @code{nil}, and the beginning and end of the text range to be
1075 modified.
1076
1077 When called after a change, each function receives five arguments: the
1078 overlay, @code{t}, the beginning and end of the text range just
1079 modified, and the length of the pre-change text replaced by that range.
1080 (For an insertion, the pre-change length is zero; for a deletion, that
1081 length is the number of characters deleted, and the post-change
1082 beginning and end are equal.)
1083
1084 @item insert-in-front-hooks
1085 @kindex insert-in-front-hooks @r{(overlay property)}
1086 This property's value is a list of functions to be called before and
1087 after inserting text right at the beginning of the overlay. The calling
1088 conventions are the same as for the @code{modification-hooks} functions.
1089
1090 @item insert-behind-hooks
1091 @kindex insert-behind-hooks @r{(overlay property)}
1092 This property's value is a list of functions to be called before and
1093 after inserting text right at the end of the overlay. The calling
1094 conventions are the same as for the @code{modification-hooks} functions.
1095
1096 @item invisible
1097 @kindex invisible @r{(overlay property)}
1098 The @code{invisible} property can make the text in the overlay
1099 invisible, which means that it does not appear on the screen.
1100 @xref{Invisible Text}, for details.
1101
1102 @item intangible
1103 @kindex intangible @r{(overlay property)}
1104 The @code{intangible} property on an overlay works just like the
1105 @code{intangible} text property. @xref{Special Properties}, for details.
1106
1107 @item isearch-open-invisible
1108 This property tells incremental search how to make an invisible overlay
1109 visible, permanently, if the final match overlaps it. @xref{Invisible
1110 Text}.
1111
1112 @item isearch-open-invisible-temporary
1113 This property tells incremental search how to make an invisible overlay
1114 visible, temporarily, during the search. @xref{Invisible Text}.
1115
1116 @item before-string
1117 @kindex before-string @r{(overlay property)}
1118 This property's value is a string to add to the display at the beginning
1119 of the overlay. The string does not appear in the buffer in any
1120 sense---only on the screen.
1121
1122 @item after-string
1123 @kindex after-string @r{(overlay property)}
1124 This property's value is a string to add to the display at the end of
1125 the overlay. The string does not appear in the buffer in any
1126 sense---only on the screen.
1127
1128 @item evaporate
1129 @kindex evaporate @r{(overlay property)}
1130 If this property is non-@code{nil}, the overlay is deleted automatically
1131 if it ever becomes empty (i.e., if it spans no characters).
1132
1133 @item local-map
1134 @cindex keymap of character (and overlays)
1135 @kindex local-map @r{(overlay property)}
1136 If this property is non-@code{nil}, it specifies a keymap for a portion
1137 of the text. The property's value replaces the buffer's local map, when
1138 the character after point is within the overlay. @xref{Active Keymaps}.
1139
1140 @item keymap
1141 @kindex keymap @r{(overlay property)}
1142 The @code{keymap} property is similar to @code{local-map} but overrides the
1143 buffer's local map (and the map specified by the @code{local-map}
1144 property) rather than replacing it.
1145 @end table
1146
1147 @node Managing Overlays
1148 @subsection Managing Overlays
1149
1150 This section describes the functions to create, delete and move
1151 overlays, and to examine their contents.
1152
1153 @defun make-overlay start end &optional buffer front-advance rear-advance
1154 This function creates and returns an overlay that belongs to
1155 @var{buffer} and ranges from @var{start} to @var{end}. Both @var{start}
1156 and @var{end} must specify buffer positions; they may be integers or
1157 markers. If @var{buffer} is omitted, the overlay is created in the
1158 current buffer.
1159
1160 The arguments @var{front-advance} and @var{rear-advance} specify the
1161 insertion type for the start of the overlay and for the end of the
1162 overlay, respectively. @xref{Marker Insertion Types}.
1163 @end defun
1164
1165 @defun overlay-start overlay
1166 This function returns the position at which @var{overlay} starts,
1167 as an integer.
1168 @end defun
1169
1170 @defun overlay-end overlay
1171 This function returns the position at which @var{overlay} ends,
1172 as an integer.
1173 @end defun
1174
1175 @defun overlay-buffer overlay
1176 This function returns the buffer that @var{overlay} belongs to.
1177 @end defun
1178
1179 @defun delete-overlay overlay
1180 This function deletes @var{overlay}. The overlay continues to exist as
1181 a Lisp object, and its property list is unchanged, but it ceases to be
1182 attached to the buffer it belonged to, and ceases to have any effect on
1183 display.
1184
1185 A deleted overlay is not permanently disconnected. You can give it a
1186 position in a buffer again by calling @code{move-overlay}.
1187 @end defun
1188
1189 @defun move-overlay overlay start end &optional buffer
1190 This function moves @var{overlay} to @var{buffer}, and places its bounds
1191 at @var{start} and @var{end}. Both arguments @var{start} and @var{end}
1192 must specify buffer positions; they may be integers or markers.
1193
1194 If @var{buffer} is omitted, @var{overlay} stays in the same buffer it
1195 was already associated with; if @var{overlay} was deleted, it goes into
1196 the current buffer.
1197
1198 The return value is @var{overlay}.
1199
1200 This is the only valid way to change the endpoints of an overlay. Do
1201 not try modifying the markers in the overlay by hand, as that fails to
1202 update other vital data structures and can cause some overlays to be
1203 ``lost''.
1204 @end defun
1205
1206 Here are some examples:
1207
1208 @example
1209 ;; @r{Create an overlay.}
1210 (setq foo (make-overlay 1 10))
1211 @result{} #<overlay from 1 to 10 in display.texi>
1212 (overlay-start foo)
1213 @result{} 1
1214 (overlay-end foo)
1215 @result{} 10
1216 (overlay-buffer foo)
1217 @result{} #<buffer display.texi>
1218 ;; @r{Give it a property we can check later.}
1219 (overlay-put foo 'happy t)
1220 @result{} t
1221 ;; @r{Verify the property is present.}
1222 (overlay-get foo 'happy)
1223 @result{} t
1224 ;; @r{Move the overlay.}
1225 (move-overlay foo 5 20)
1226 @result{} #<overlay from 5 to 20 in display.texi>
1227 (overlay-start foo)
1228 @result{} 5
1229 (overlay-end foo)
1230 @result{} 20
1231 ;; @r{Delete the overlay.}
1232 (delete-overlay foo)
1233 @result{} nil
1234 ;; @r{Verify it is deleted.}
1235 foo
1236 @result{} #<overlay in no buffer>
1237 ;; @r{A deleted overlay has no position.}
1238 (overlay-start foo)
1239 @result{} nil
1240 (overlay-end foo)
1241 @result{} nil
1242 (overlay-buffer foo)
1243 @result{} nil
1244 ;; @r{Undelete the overlay.}
1245 (move-overlay foo 1 20)
1246 @result{} #<overlay from 1 to 20 in display.texi>
1247 ;; @r{Verify the results.}
1248 (overlay-start foo)
1249 @result{} 1
1250 (overlay-end foo)
1251 @result{} 20
1252 (overlay-buffer foo)
1253 @result{} #<buffer display.texi>
1254 ;; @r{Moving and deleting the overlay does not change its properties.}
1255 (overlay-get foo 'happy)
1256 @result{} t
1257 @end example
1258
1259 @node Finding Overlays
1260 @subsection Searching for Overlays
1261
1262 @defun overlays-at pos
1263 This function returns a list of all the overlays that cover the
1264 character at position @var{pos} in the current buffer. The list is in
1265 no particular order. An overlay contains position @var{pos} if it
1266 begins at or before @var{pos}, and ends after @var{pos}.
1267
1268 To illustrate usage, here is a Lisp function that returns a list of the
1269 overlays that specify property @var{prop} for the character at point:
1270
1271 @smallexample
1272 (defun find-overlays-specifying (prop)
1273 (let ((overlays (overlays-at (point)))
1274 found)
1275 (while overlays
1276 (let ((overlay (car overlays)))
1277 (if (overlay-get overlay prop)
1278 (setq found (cons overlay found))))
1279 (setq overlays (cdr overlays)))
1280 found))
1281 @end smallexample
1282 @end defun
1283
1284 @defun overlays-in beg end
1285 This function returns a list of the overlays that overlap the region
1286 @var{beg} through @var{end}. ``Overlap'' means that at least one
1287 character is contained within the overlay and also contained within the
1288 specified region; however, empty overlays are included in the result if
1289 they are located at @var{beg}, or strictly between @var{beg} and @var{end}.
1290 @end defun
1291
1292 @defun next-overlay-change pos
1293 This function returns the buffer position of the next beginning or end
1294 of an overlay, after @var{pos}.
1295 @end defun
1296
1297 @defun previous-overlay-change pos
1298 This function returns the buffer position of the previous beginning or
1299 end of an overlay, before @var{pos}.
1300 @end defun
1301
1302 Here's an easy way to use @code{next-overlay-change} to search for the
1303 next character which gets a non-@code{nil} @code{happy} property from
1304 either its overlays or its text properties (@pxref{Property Search}):
1305
1306 @smallexample
1307 (defun find-overlay-prop (prop)
1308 (save-excursion
1309 (while (and (not (eobp))
1310 (not (get-char-property (point) 'happy)))
1311 (goto-char (min (next-overlay-change (point))
1312 (next-single-property-change (point) 'happy))))
1313 (point)))
1314 @end smallexample
1315
1316 @node Width
1317 @section Width
1318
1319 Since not all characters have the same width, these functions let you
1320 check the width of a character. @xref{Primitive Indent}, and
1321 @ref{Screen Lines}, for related functions.
1322
1323 @defun char-width char
1324 This function returns the width in columns of the character @var{char},
1325 if it were displayed in the current buffer and the selected window.
1326 @end defun
1327
1328 @defun string-width string
1329 This function returns the width in columns of the string @var{string},
1330 if it were displayed in the current buffer and the selected window.
1331 @end defun
1332
1333 @defun truncate-string-to-width string width &optional start-column padding
1334 This function returns the part of @var{string} that fits within
1335 @var{width} columns, as a new string.
1336
1337 If @var{string} does not reach @var{width}, then the result ends where
1338 @var{string} ends. If one multi-column character in @var{string}
1339 extends across the column @var{width}, that character is not included in
1340 the result. Thus, the result can fall short of @var{width} but cannot
1341 go beyond it.
1342
1343 The optional argument @var{start-column} specifies the starting column.
1344 If this is non-@code{nil}, then the first @var{start-column} columns of
1345 the string are omitted from the value. If one multi-column character in
1346 @var{string} extends across the column @var{start-column}, that
1347 character is not included.
1348
1349 The optional argument @var{padding}, if non-@code{nil}, is a padding
1350 character added at the beginning and end of the result string, to extend
1351 it to exactly @var{width} columns. The padding character is used at the
1352 end of the result if it falls short of @var{width}. It is also used at
1353 the beginning of the result if one multi-column character in
1354 @var{string} extends across the column @var{start-column}.
1355
1356 @example
1357 (truncate-string-to-width "\tab\t" 12 4)
1358 @result{} "ab"
1359 (truncate-string-to-width "\tab\t" 12 4 ?\s)
1360 @result{} " ab "
1361 @end example
1362 @end defun
1363
1364 @node Faces
1365 @section Faces
1366 @cindex faces
1367
1368 A @dfn{face} is a named collection of graphical attributes: font
1369 family, foreground color, background color, optional underlining, and
1370 many others. Faces are used in Emacs to control the style of display of
1371 particular parts of the text or the frame.
1372
1373 @cindex face id
1374 Each face has its own @dfn{face number}, which distinguishes faces at
1375 low levels within Emacs. However, for most purposes, you refer to
1376 faces in Lisp programs by their names.
1377
1378 @defun facep object
1379 This function returns @code{t} if @var{object} is a face name symbol (or
1380 if it is a vector of the kind used internally to record face data). It
1381 returns @code{nil} otherwise.
1382 @end defun
1383
1384 Each face name is meaningful for all frames, and by default it has the
1385 same meaning in all frames. But you can arrange to give a particular
1386 face name a special meaning in one frame if you wish.
1387
1388 @menu
1389 * Standard Faces:: The faces Emacs normally comes with.
1390 * Defining Faces:: How to define a face with @code{defface}.
1391 * Face Attributes:: What is in a face?
1392 * Attribute Functions:: Functions to examine and set face attributes.
1393 * Merging Faces:: How Emacs combines the faces specified for a character.
1394 * Font Selection:: Finding the best available font for a face.
1395 * Face Functions:: How to define and examine faces.
1396 * Auto Faces:: Hook for automatic face assignment.
1397 * Font Lookup:: Looking up the names of available fonts
1398 and information about them.
1399 * Fontsets:: A fontset is a collection of fonts
1400 that handle a range of character sets.
1401 @end menu
1402
1403 @node Standard Faces
1404 @subsection Standard Faces
1405
1406 This table lists all the standard faces and their uses. Most of them
1407 are used for displaying certain parts of the frames or certain kinds of
1408 text; you can control how those places look by customizing these faces.
1409
1410 @table @code
1411 @item default
1412 @kindex default @r{(face name)}
1413 This face is used for ordinary text.
1414
1415 @item mode-line
1416 @kindex mode-line @r{(face name)}
1417 This face is used for the mode line of the selected window, and for
1418 menu bars when toolkit menus are not used---but only if
1419 @code{mode-line-inverse-video} is non-@code{nil}.
1420
1421 @item modeline
1422 @kindex modeline @r{(face name)}
1423 This is an alias for the @code{mode-line} face, for compatibility with
1424 old Emacs versions.
1425
1426 @item mode-line-inactive
1427 @kindex mode-line-inactive @r{(face name)}
1428 This face is used for mode lines of non-selected windows.
1429 This face inherits from @code{mode-line}, so changes
1430 in that face affect all windows.
1431
1432 @item header-line
1433 @kindex header-line @r{(face name)}
1434 This face is used for the header lines of windows that have them.
1435
1436 @item menu
1437 This face controls the display of menus, both their colors and their
1438 font. (This works only on certain systems.)
1439
1440 @item fringe
1441 @kindex fringe @r{(face name)}
1442 This face controls the colors of window fringes, the thin areas on
1443 either side that are used to display continuation and truncation glyphs.
1444
1445 @item minibuffer-prompt
1446 @kindex minibuffer-prompt @r{(face name)}
1447 @vindex minibuffer-prompt-properties
1448 This face is used for the text of minibuffer prompts. By default,
1449 Emacs automatically adds this face to the value of
1450 @code{minibuffer-prompt-properties}, which is a list of text
1451 properties used to display the prompt text.
1452
1453 @item scroll-bar
1454 @kindex scroll-bar @r{(face name)}
1455 This face controls the colors for display of scroll bars.
1456
1457 @item tool-bar
1458 @kindex tool-bar @r{(face name)}
1459 This face is used for display of the tool bar, if any.
1460
1461 @item region
1462 @kindex region @r{(face name)}
1463 This face is used for highlighting the region in Transient Mark mode.
1464
1465 @item secondary-selection
1466 @kindex secondary-selection @r{(face name)}
1467 This face is used to show any secondary selection you have made.
1468
1469 @item highlight
1470 @kindex highlight @r{(face name)}
1471 This face is meant to be used for highlighting for various purposes.
1472
1473 @item trailing-whitespace
1474 @kindex trailing-whitespace @r{(face name)}
1475 This face is used to display excess whitespace at the end of a line,
1476 if @code{show-trailing-whitespace} is non-@code{nil}.
1477 @end table
1478
1479 In contrast, these faces are provided to change the appearance of text
1480 in specific ways. You can use them on specific text, when you want
1481 the effects they produce.
1482
1483 @table @code
1484 @item bold
1485 @kindex bold @r{(face name)}
1486 This face uses a bold font, if possible. It uses the bold variant of
1487 the frame's font, if it has one. It's up to you to choose a default
1488 font that has a bold variant, if you want to use one.
1489
1490 @item italic
1491 @kindex italic @r{(face name)}
1492 This face uses the italic variant of the frame's font, if it has one.
1493
1494 @item bold-italic
1495 @kindex bold-italic @r{(face name)}
1496 This face uses the bold italic variant of the frame's font, if it has
1497 one.
1498
1499 @item underline
1500 @kindex underline @r{(face name)}
1501 This face underlines text.
1502
1503 @item fixed-pitch
1504 @kindex fixed-pitch @r{(face name)}
1505 This face forces use of a particular fixed-width font.
1506
1507 @item variable-pitch
1508 @kindex variable-pitch @r{(face name)}
1509 This face forces use of a particular variable-width font. It's
1510 reasonable to customize this to use a different variable-width font, if
1511 you like, but you should not make it a fixed-width font.
1512 @end table
1513
1514 @defvar show-trailing-whitespace
1515 @tindex show-trailing-whitespace
1516 If this variable is non-@code{nil}, Emacs uses the
1517 @code{trailing-whitespace} face to display any spaces and tabs at the
1518 end of a line.
1519 @end defvar
1520
1521 @node Defining Faces
1522 @subsection Defining Faces
1523
1524 The way to define a new face is with @code{defface}. This creates a
1525 kind of customization item (@pxref{Customization}) which the user can
1526 customize using the Customization buffer (@pxref{Easy Customization,,,
1527 emacs, The GNU Emacs Manual}).
1528
1529 @defmac defface face spec doc [keyword value]...
1530 This declares @var{face} as a customizable face that defaults according
1531 to @var{spec}. You should not quote the symbol @var{face}. The
1532 argument @var{doc} specifies the face documentation. The keywords you
1533 can use in @code{defface} are the same ones that are meaningful in both
1534 @code{defgroup} and @code{defcustom} (@pxref{Common Keywords}).
1535
1536 When @code{defface} executes, it defines the face according to
1537 @var{spec}, then uses any customizations that were read from the
1538 init file (@pxref{Init File}) to override that specification.
1539
1540 The purpose of @var{spec} is to specify how the face should appear on
1541 different kinds of terminals. It should be an alist whose elements have
1542 the form @code{(@var{display} @var{atts})}. Each element's @sc{car},
1543 @var{display}, specifies a class of terminals. The element's second element,
1544 @var{atts}, is a list of face attributes and their values; it specifies
1545 what the face should look like on that kind of terminal. The possible
1546 attributes are defined in the value of @code{custom-face-attributes}.
1547
1548 The @var{display} part of an element of @var{spec} determines which
1549 frames the element applies to. If more than one element of @var{spec}
1550 matches a given frame, the first matching element is the only one used
1551 for that frame. There are two possibilities for @var{display}:
1552
1553 @table @asis
1554 @item @code{t}
1555 This element of @var{spec} matches all frames. Therefore, any
1556 subsequent elements of @var{spec} are never used. Normally
1557 @code{t} is used in the last (or only) element of @var{spec}.
1558
1559 @item a list
1560 If @var{display} is a list, each element should have the form
1561 @code{(@var{characteristic} @var{value}@dots{})}. Here
1562 @var{characteristic} specifies a way of classifying frames, and the
1563 @var{value}s are possible classifications which @var{display} should
1564 apply to. Here are the possible values of @var{characteristic}:
1565
1566 @table @code
1567 @item type
1568 The kind of window system the frame uses---either @code{graphic} (any
1569 graphics-capable display), @code{x}, @code{pc} (for the MS-DOS console),
1570 @code{w32} (for MS Windows 9X/NT), or @code{tty} (a non-graphics-capable
1571 display).
1572
1573 @item class
1574 What kinds of colors the frame supports---either @code{color},
1575 @code{grayscale}, or @code{mono}.
1576
1577 @item background
1578 The kind of background---either @code{light} or @code{dark}.
1579
1580 @item supports
1581 Whether or not the frame can display the face attributes given in
1582 @var{value}@dots{} (@pxref{Face Attributes}). See the documentation
1583 for the function @code{display-supports-face-attributes-p} for more
1584 information on exactly how this testing is done. @xref{Display Face
1585 Attribute Testing}.
1586 @end table
1587
1588 If an element of @var{display} specifies more than one @var{value} for a
1589 given @var{characteristic}, any of those values is acceptable. If
1590 @var{display} has more than one element, each element should specify a
1591 different @var{characteristic}; then @emph{each} characteristic of the
1592 frame must match one of the @var{value}s specified for it in
1593 @var{display}.
1594 @end table
1595 @end defmac
1596
1597 Here's how the standard face @code{region} is defined:
1598
1599 @example
1600 @group
1601 (defface region
1602 `((((type tty) (class color))
1603 (:background "blue" :foreground "white"))
1604 @end group
1605 (((type tty) (class mono))
1606 (:inverse-video t))
1607 (((class color) (background dark))
1608 (:background "blue"))
1609 (((class color) (background light))
1610 (:background "lightblue"))
1611 (t (:background "gray")))
1612 @group
1613 "Basic face for highlighting the region."
1614 :group 'basic-faces)
1615 @end group
1616 @end example
1617
1618 Internally, @code{defface} uses the symbol property
1619 @code{face-defface-spec} to record the face attributes specified in
1620 @code{defface}, @code{saved-face} for the attributes saved by the user
1621 with the customization buffer, and @code{face-documentation} for the
1622 documentation string.
1623
1624 @defopt frame-background-mode
1625 This option, if non-@code{nil}, specifies the background type to use for
1626 interpreting face definitions. If it is @code{dark}, then Emacs treats
1627 all frames as if they had a dark background, regardless of their actual
1628 background colors. If it is @code{light}, then Emacs treats all frames
1629 as if they had a light background.
1630 @end defopt
1631
1632 @node Face Attributes
1633 @subsection Face Attributes
1634 @cindex face attributes
1635
1636 The effect of using a face is determined by a fixed set of @dfn{face
1637 attributes}. This table lists all the face attributes, and what they
1638 mean. Note that in general, more than one face can be specified for a
1639 given piece of text; when that happens, the attributes of all the faces
1640 are merged to specify how to display the text. @xref{Merging Faces}.
1641
1642 In Emacs 21, any attribute in a face can have the value
1643 @code{unspecified}. This means the face doesn't specify that attribute.
1644 In face merging, when the first face fails to specify a particular
1645 attribute, that means the next face gets a chance. However, the
1646 @code{default} face must specify all attributes.
1647
1648 Some of these font attributes are meaningful only on certain kinds of
1649 displays---if your display cannot handle a certain attribute, the
1650 attribute is ignored. (The attributes @code{:family}, @code{:width},
1651 @code{:height}, @code{:weight}, and @code{:slant} correspond to parts of
1652 an X Logical Font Descriptor.)
1653
1654 @table @code
1655 @item :family
1656 Font family name, or fontset name (@pxref{Fontsets}). If you specify a
1657 font family name, the wild-card characters @samp{*} and @samp{?} are
1658 allowed.
1659
1660 @item :width
1661 Relative proportionate width, also known as the character set width or
1662 set width. This should be one of the symbols @code{ultra-condensed},
1663 @code{extra-condensed}, @code{condensed}, @code{semi-condensed},
1664 @code{normal}, @code{semi-expanded}, @code{expanded},
1665 @code{extra-expanded}, or @code{ultra-expanded}.
1666
1667 @item :height
1668 Either the font height, an integer in units of 1/10 point, a floating
1669 point number specifying the amount by which to scale the height of any
1670 underlying face, or a function, which is called with the old height
1671 (from the underlying face), and should return the new height.
1672
1673 @item :weight
1674 Font weight---a symbol from this series (from most dense to most faint):
1675 @code{ultra-bold}, @code{extra-bold}, @code{bold}, @code{semi-bold},
1676 @code{normal}, @code{semi-light}, @code{light}, @code{extra-light},
1677 or @code{ultra-light}.
1678
1679 On a text-only terminal, any weight greater than normal is displayed as
1680 extra bright, and any weight less than normal is displayed as
1681 half-bright (provided the terminal supports the feature).
1682
1683 @item :slant
1684 Font slant---one of the symbols @code{italic}, @code{oblique}, @code{normal},
1685 @code{reverse-italic}, or @code{reverse-oblique}.
1686
1687 On a text-only terminal, slanted text is displayed as half-bright, if
1688 the terminal supports the feature.
1689
1690 @item :foreground
1691 Foreground color, a string.
1692
1693 @item :background
1694 Background color, a string.
1695
1696 @item :inverse-video
1697 Whether or not characters should be displayed in inverse video. The
1698 value should be @code{t} (yes) or @code{nil} (no).
1699
1700 @item :stipple
1701 The background stipple, a bitmap.
1702
1703 The value can be a string; that should be the name of a file containing
1704 external-format X bitmap data. The file is found in the directories
1705 listed in the variable @code{x-bitmap-file-path}.
1706
1707 Alternatively, the value can specify the bitmap directly, with a list
1708 of the form @code{(@var{width} @var{height} @var{data})}. Here,
1709 @var{width} and @var{height} specify the size in pixels, and
1710 @var{data} is a string containing the raw bits of the bitmap, row by
1711 row. Each row occupies @math{(@var{width} + 7) / 8} consecutive bytes
1712 in the string (which should be a unibyte string for best results).
1713 This means that each row always occupies at least one whole byte.
1714
1715 If the value is @code{nil}, that means use no stipple pattern.
1716
1717 Normally you do not need to set the stipple attribute, because it is
1718 used automatically to handle certain shades of gray.
1719
1720 @item :underline
1721 Whether or not characters should be underlined, and in what color. If
1722 the value is @code{t}, underlining uses the foreground color of the
1723 face. If the value is a string, underlining uses that color. The
1724 value @code{nil} means do not underline.
1725
1726 @item :overline
1727 Whether or not characters should be overlined, and in what color.
1728 The value is used like that of @code{:underline}.
1729
1730 @item :strike-through
1731 Whether or not characters should be strike-through, and in what
1732 color. The value is used like that of @code{:underline}.
1733
1734 @item :inherit
1735 The name of a face from which to inherit attributes, or a list of face
1736 names. Attributes from inherited faces are merged into the face like an
1737 underlying face would be, with higher priority than underlying faces.
1738
1739 @item :box
1740 Whether or not a box should be drawn around characters, its color, the
1741 width of the box lines, and 3D appearance.
1742 @end table
1743
1744 Here are the possible values of the @code{:box} attribute, and what
1745 they mean:
1746
1747 @table @asis
1748 @item @code{nil}
1749 Don't draw a box.
1750
1751 @item @code{t}
1752 Draw a box with lines of width 1, in the foreground color.
1753
1754 @item @var{color}
1755 Draw a box with lines of width 1, in color @var{color}.
1756
1757 @item @code{(:line-width @var{width} :color @var{color} :style @var{style})}
1758 This way you can explicitly specify all aspects of the box. The value
1759 @var{width} specifies the width of the lines to draw; it defaults to 1.
1760
1761 The value @var{color} specifies the color to draw with. The default is
1762 the foreground color of the face for simple boxes, and the background
1763 color of the face for 3D boxes.
1764
1765 The value @var{style} specifies whether to draw a 3D box. If it is
1766 @code{released-button}, the box looks like a 3D button that is not being
1767 pressed. If it is @code{pressed-button}, the box looks like a 3D button
1768 that is being pressed. If it is @code{nil} or omitted, a plain 2D box
1769 is used.
1770 @end table
1771
1772 The attributes @code{:overline}, @code{:strike-through} and
1773 @code{:box} are new in Emacs 21. The attributes @code{:family},
1774 @code{:height}, @code{:width}, @code{:weight}, @code{:slant} are also
1775 new; previous versions used the following attributes, now semi-obsolete,
1776 to specify some of the same information:
1777
1778 @table @code
1779 @item :font
1780 This attribute specifies the font name.
1781
1782 @item :bold
1783 A non-@code{nil} value specifies a bold font.
1784
1785 @item :italic
1786 A non-@code{nil} value specifies an italic font.
1787 @end table
1788
1789 For compatibility, you can still set these ``attributes'' in Emacs 21,
1790 even though they are not real face attributes. Here is what that does:
1791
1792 @table @code
1793 @item :font
1794 You can specify an X font name as the ``value'' of this ``attribute'';
1795 that sets the @code{:family}, @code{:width}, @code{:height},
1796 @code{:weight}, and @code{:slant} attributes according to the font name.
1797
1798 If the value is a pattern with wildcards, the first font that matches
1799 the pattern is used to set these attributes.
1800
1801 @item :bold
1802 A non-@code{nil} makes the face bold; @code{nil} makes it normal.
1803 This actually works by setting the @code{:weight} attribute.
1804
1805 @item :italic
1806 A non-@code{nil} makes the face italic; @code{nil} makes it normal.
1807 This actually works by setting the @code{:slant} attribute.
1808 @end table
1809
1810 @defvar x-bitmap-file-path
1811 This variable specifies a list of directories for searching
1812 for bitmap files, for the @code{:stipple} attribute.
1813 @end defvar
1814
1815 @defun bitmap-spec-p object
1816 This returns @code{t} if @var{object} is a valid bitmap specification,
1817 suitable for use with @code{:stipple} (see above). It returns
1818 @code{nil} otherwise.
1819 @end defun
1820
1821 @node Attribute Functions
1822 @subsection Face Attribute Functions
1823
1824 You can modify the attributes of an existing face with the following
1825 functions. If you specify @var{frame}, they affect just that frame;
1826 otherwise, they affect all frames as well as the defaults that apply to
1827 new frames.
1828
1829 @tindex set-face-attribute
1830 @defun set-face-attribute face frame &rest arguments
1831 This function sets one or more attributes of face @var{face}
1832 for frame @var{frame}. If @var{frame} is @code{nil}, it sets
1833 the attribute for all frames, and the defaults for new frames.
1834
1835 The extra arguments @var{arguments} specify the attributes to set, and
1836 the values for them. They should consist of alternating attribute names
1837 (such as @code{:family} or @code{:underline}) and corresponding values.
1838 Thus,
1839
1840 @example
1841 (set-face-attribute 'foo nil
1842 :width 'extended
1843 :weight 'bold
1844 :underline "red")
1845 @end example
1846
1847 @noindent
1848 sets the attributes @code{:width}, @code{:weight} and @code{:underline}
1849 to the corresponding values.
1850 @end defun
1851
1852 @tindex face-attribute
1853 @defun face-attribute face attribute &optional frame inherit
1854 This returns the value of the @var{attribute} attribute of face
1855 @var{face} on @var{frame}. If @var{frame} is @code{nil},
1856 that means the selected frame (@pxref{Input Focus}).
1857
1858 If @var{frame} is @code{t}, the value is the default for
1859 @var{face} for new frames.
1860
1861 If @var{inherit} is @code{nil}, only attributes directly defined by
1862 @var{face} are considered, so the return value may be
1863 @code{unspecified}, or a relative value. If @var{inherit} is
1864 non-@code{nil}, @var{face}'s definition of @var{attribute} is merged
1865 with the faces specified by its @code{:inherit} attribute; however the
1866 return value may still be @code{unspecified} or relative. If
1867 @var{inherit} is a face or a list of faces, then the result is further
1868 merged with that face (or faces), until it becomes specified and
1869 absolute.
1870
1871 To ensure that the return value is always specified and absolute, use
1872 a value of @code{default} for @var{inherit}; this will resolve any
1873 unspecified or relative values by merging with the @code{default} face
1874 (which is always completely specified).
1875
1876 For example,
1877
1878 @example
1879 (face-attribute 'bold :weight)
1880 @result{} bold
1881 @end example
1882 @end defun
1883
1884 The functions above did not exist before Emacs 21. For compatibility
1885 with older Emacs versions, you can use the following functions to set
1886 and examine the face attributes which existed in those versions.
1887
1888 @tindex face-attribute-relative-p
1889 @defun face-attribute-relative-p attribute value
1890 This function returns non-@code{nil} if @var{value}, when used as a
1891 the value of the face attribute @var{attribute}, is relative (that is,
1892 if it modifies an underlying or inherited value of @var{attribute}).
1893 @end defun
1894
1895 @tindex merge-face-attribute
1896 @defun merge-face-attribute attribute value1 value2
1897 If @var{value1} is a relative value for the face attribute
1898 @var{attribute}, returns it merged with the underlying value
1899 @var{value2}; otherwise, if @var{value1} is an absolute value for the
1900 face attribute @var{attribute}, returns @var{value1} unchanged.
1901 @end defun
1902
1903 @defun set-face-foreground face color &optional frame
1904 @defunx set-face-background face color &optional frame
1905 These functions set the foreground (or background, respectively) color
1906 of face @var{face} to @var{color}. The argument @var{color} should be a
1907 string, the name of a color.
1908
1909 Certain shades of gray are implemented by stipple patterns on
1910 black-and-white screens.
1911 @end defun
1912
1913 @defun set-face-stipple face pattern &optional frame
1914 This function sets the background stipple pattern of face @var{face}
1915 to @var{pattern}. The argument @var{pattern} should be the name of a
1916 stipple pattern defined by the X server, or actual bitmap data
1917 (@pxref{Face Attributes}), or @code{nil} meaning don't use stipple.
1918
1919 Normally there is no need to pay attention to stipple patterns, because
1920 they are used automatically to handle certain shades of gray.
1921 @end defun
1922
1923 @defun set-face-font face font &optional frame
1924 This function sets the font of face @var{face}.
1925
1926 In Emacs 21, this actually sets the attributes @code{:family},
1927 @code{:width}, @code{:height}, @code{:weight}, and @code{:slant}
1928 according to the font name @var{font}.
1929
1930 In Emacs 20, this sets the font attribute. Once you set the font
1931 explicitly, the bold and italic attributes cease to have any effect,
1932 because the precise font that you specified is used.
1933 @end defun
1934
1935 @defun set-face-bold-p face bold-p &optional frame
1936 This function specifies whether @var{face} should be bold. If
1937 @var{bold-p} is non-@code{nil}, that means yes; @code{nil} means no.
1938
1939 In Emacs 21, this sets the @code{:weight} attribute.
1940 In Emacs 20, it sets the @code{:bold} attribute.
1941 @end defun
1942
1943 @defun set-face-italic-p face italic-p &optional frame
1944 This function specifies whether @var{face} should be italic. If
1945 @var{italic-p} is non-@code{nil}, that means yes; @code{nil} means no.
1946
1947 In Emacs 21, this sets the @code{:slant} attribute.
1948 In Emacs 20, it sets the @code{:italic} attribute.
1949 @end defun
1950
1951 @defun set-face-underline-p face underline-p &optional frame
1952 This function sets the underline attribute of face @var{face}.
1953 Non-@code{nil} means do underline; @code{nil} means don't.
1954 @end defun
1955
1956 @defun invert-face face &optional frame
1957 This function inverts the @code{:inverse-video} attribute of face
1958 @var{face}. If the attribute is @code{nil}, this function sets it to
1959 @code{t}, and vice versa.
1960 @end defun
1961
1962 These functions examine the attributes of a face. If you don't
1963 specify @var{frame}, they refer to the default data for new frames.
1964 They return the symbol @code{unspecified} if the face doesn't define any
1965 value for that attribute.
1966
1967 @defun face-foreground face &optional frame inherit
1968 @defunx face-background face &optional frame
1969 These functions return the foreground color (or background color,
1970 respectively) of face @var{face}, as a string.
1971
1972 If @var{inherit} is nil, only a color directly defined by the face is
1973 returned. If @var{inherit} is non-nil, any faces specified by its
1974 @code{:inherit} attribute are considered as well, and if @var{inherit}
1975 is a face or a list of faces, then they are also considered, until a
1976 specified color is found. To ensure that the return value is always
1977 specified, use a value of @code{default} for @var{inherit}.
1978 @end defun
1979
1980 @defun face-stipple face &optional frame inherit
1981 This function returns the name of the background stipple pattern of face
1982 @var{face}, or @code{nil} if it doesn't have one.
1983
1984 If @var{inherit} is @code{nil}, only a stipple directly defined by the
1985 face is returned. If @var{inherit} is non-@code{nil}, any faces
1986 specified by its @code{:inherit} attribute are considered as well, and
1987 if @var{inherit} is a face or a list of faces, then they are also
1988 considered, until a specified stipple is found. To ensure that the
1989 return value is always specified, use a value of @code{default} for
1990 @var{inherit}.
1991 @end defun
1992
1993 @defun face-font face &optional frame
1994 This function returns the name of the font of face @var{face}.
1995 @end defun
1996
1997 @defun face-bold-p face &optional frame
1998 This function returns @code{t} if @var{face} is bold---that is, if it is
1999 bolder than normal. It returns @code{nil} otherwise.
2000 @end defun
2001
2002 @defun face-italic-p face &optional frame
2003 This function returns @code{t} if @var{face} is italic or oblique,
2004 @code{nil} otherwise.
2005 @end defun
2006
2007 @defun face-underline-p face &optional frame
2008 This function returns the @code{:underline} attribute of face @var{face}.
2009 @end defun
2010
2011 @defun face-inverse-video-p face &optional frame
2012 This function returns the @code{:inverse-video} attribute of face @var{face}.
2013 @end defun
2014
2015 @node Merging Faces
2016 @subsection Merging Faces for Display
2017
2018 Here are the ways to specify which faces to use for display of text:
2019
2020 @itemize @bullet
2021 @item
2022 With defaults. The @code{default} face is used as the ultimate
2023 default for all text. (In Emacs 19 and 20, the @code{default}
2024 face is used only when no other face is specified.)
2025
2026 For a mode line or header line, the face @code{modeline} or
2027 @code{header-line} is used just before @code{default}.
2028
2029 @item
2030 With text properties. A character can have a @code{face} property; if
2031 so, the faces and face attributes specified there apply. @xref{Special
2032 Properties}.
2033
2034 If the character has a @code{mouse-face} property, that is used instead
2035 of the @code{face} property when the mouse is ``near enough'' to the
2036 character.
2037
2038 @item
2039 With overlays. An overlay can have @code{face} and @code{mouse-face}
2040 properties too; they apply to all the text covered by the overlay.
2041
2042 @item
2043 With a region that is active. In Transient Mark mode, the region is
2044 highlighted with the face @code{region} (@pxref{Standard Faces}).
2045
2046 @item
2047 With special glyphs. Each glyph can specify a particular face
2048 number. @xref{Glyphs}.
2049 @end itemize
2050
2051 If these various sources together specify more than one face for a
2052 particular character, Emacs merges the attributes of the various faces
2053 specified. The attributes of the faces of special glyphs come first;
2054 then comes the face for region highlighting, if appropriate;
2055 then come attributes of faces from overlays, followed by those from text
2056 properties, and last the default face.
2057
2058 When multiple overlays cover one character, an overlay with higher
2059 priority overrides those with lower priority. @xref{Overlays}.
2060
2061 In Emacs 20, if an attribute such as the font or a color is not
2062 specified in any of the above ways, the frame's own font or color is
2063 used. In newer Emacs versions, this cannot happen, because the
2064 @code{default} face specifies all attributes---in fact, the frame's own
2065 font and colors are synonymous with those of the default face.
2066
2067 @node Font Selection
2068 @subsection Font Selection
2069
2070 @dfn{Selecting a font} means mapping the specified face attributes for
2071 a character to a font that is available on a particular display. The
2072 face attributes, as determined by face merging, specify most of the
2073 font choice, but not all. Part of the choice depends on what character
2074 it is.
2075
2076 For multibyte characters, typically each font covers only one
2077 character set. So each character set (@pxref{Character Sets}) specifies
2078 a registry and encoding to use, with the character set's
2079 @code{x-charset-registry} property. Its value is a string containing
2080 the registry and the encoding, with a dash between them:
2081
2082 @example
2083 (plist-get (charset-plist 'latin-iso8859-1)
2084 'x-charset-registry)
2085 @result{} "ISO8859-1"
2086 @end example
2087
2088 Unibyte text does not have character sets, so displaying a unibyte
2089 character takes the registry and encoding from the variable
2090 @code{face-default-registry}.
2091
2092 @defvar face-default-registry
2093 This variable specifies which registry and encoding to use in choosing
2094 fonts for unibyte characters. The value is initialized at Emacs startup
2095 time from the font the user specified for Emacs.
2096 @end defvar
2097
2098 If the face specifies a fontset name, that fontset determines a
2099 pattern for fonts of the given charset. If the face specifies a font
2100 family, a font pattern is constructed.
2101
2102 Emacs tries to find an available font for the given face attributes
2103 and character's registry and encoding. If there is a font that matches
2104 exactly, it is used, of course. The hard case is when no available font
2105 exactly fits the specification. Then Emacs looks for one that is
2106 ``close''---one attribute at a time. You can specify the order to
2107 consider the attributes. In the case where a specified font family is
2108 not available, you can specify a set of mappings for alternatives to
2109 try.
2110
2111 @defvar face-font-selection-order
2112 @tindex face-font-selection-order
2113 This variable specifies the order of importance of the face attributes
2114 @code{:width}, @code{:height}, @code{:weight}, and @code{:slant}. The
2115 value should be a list containing those four symbols, in order of
2116 decreasing importance.
2117
2118 Font selection first finds the best available matches for the first
2119 attribute listed; then, among the fonts which are best in that way, it
2120 searches for the best matches in the second attribute, and so on.
2121
2122 The attributes @code{:weight} and @code{:width} have symbolic values in
2123 a range centered around @code{normal}. Matches that are more extreme
2124 (farther from @code{normal}) are somewhat preferred to matches that are
2125 less extreme (closer to @code{normal}); this is designed to ensure that
2126 non-normal faces contrast with normal ones, whenever possible.
2127
2128 The default is @code{(:width :height :weight :slant)}, which means first
2129 find the fonts closest to the specified @code{:width}, then---among the
2130 fonts with that width---find a best match for the specified font height,
2131 and so on.
2132
2133 One example of a case where this variable makes a difference is when the
2134 default font has no italic equivalent. With the default ordering, the
2135 @code{italic} face will use a non-italic font that is similar to the
2136 default one. But if you put @code{:slant} before @code{:height}, the
2137 @code{italic} face will use an italic font, even if its height is not
2138 quite right.
2139 @end defvar
2140
2141 @defvar face-font-family-alternatives
2142 @tindex face-font-family-alternatives
2143 This variable lets you specify alternative font families to try, if a
2144 given family is specified and doesn't exist. Each element should have
2145 this form:
2146
2147 @example
2148 (@var{family} @var{alternate-families}@dots{})
2149 @end example
2150
2151 If @var{family} is specified but not available, Emacs will try the other
2152 families given in @var{alternate-families}, one by one, until it finds a
2153 family that does exist.
2154 @end defvar
2155
2156 @defvar face-font-registry-alternatives
2157 @tindex face-font-registry-alternatives
2158 This variable lets you specify alternative font registries to try, if a
2159 given registry is specified and doesn't exist. Each element should have
2160 this form:
2161
2162 @example
2163 (@var{registry} @var{alternate-registries}@dots{})
2164 @end example
2165
2166 If @var{registry} is specified but not available, Emacs will try the
2167 other registries given in @var{alternate-registries}, one by one,
2168 until it finds a registry that does exist.
2169 @end defvar
2170
2171 Emacs can make use of scalable fonts, but by default it does not use
2172 them, since the use of too many or too big scalable fonts can crash
2173 XFree86 servers.
2174
2175 @defvar scalable-fonts-allowed
2176 @tindex scalable-fonts-allowed
2177 This variable controls which scalable fonts to use. A value of
2178 @code{nil}, the default, means do not use scalable fonts. @code{t}
2179 means to use any scalable font that seems appropriate for the text.
2180
2181 Otherwise, the value must be a list of regular expressions. Then a
2182 scalable font is enabled for use if its name matches any regular
2183 expression in the list. For example,
2184
2185 @example
2186 (setq scalable-fonts-allowed '("muleindian-2$"))
2187 @end example
2188
2189 @noindent
2190 allows the use of scalable fonts with registry @code{muleindian-2}.
2191 @end defvar
2192
2193 @defun clear-face-cache &optional unload-p
2194 @tindex clear-face-cache
2195 This function clears the face cache for all frames.
2196 If @var{unload-p} is non-@code{nil}, that means to unload
2197 all unused fonts as well.
2198 @end defun
2199
2200 @defvar face-font-rescale-alist
2201 This variable specifies scaling for certain faces. Its value should
2202 be a list of elements of the form
2203
2204 @example
2205 (@var{fontname-regexp} . @var{scale-factor})
2206 @end example
2207
2208 If @var{fontname-regexp} matches the font name that is about to be
2209 used, this says to choose a larger similar font according to the
2210 factor @var{scale-factor}. You would use this feature to normalize
2211 the font size if certain fonts are bigger or smaller than their
2212 nominal heights and widths would suggest.
2213 @end defvar
2214
2215 @node Face Functions
2216 @subsection Functions for Working with Faces
2217
2218 Here are additional functions for creating and working with faces.
2219
2220 @defun make-face name
2221 This function defines a new face named @var{name}, initially with all
2222 attributes @code{nil}. It does nothing if there is already a face named
2223 @var{name}.
2224 @end defun
2225
2226 @defun face-list
2227 This function returns a list of all defined face names.
2228 @end defun
2229
2230 @defun copy-face old-face new-name &optional frame new-frame
2231 This function defines the face @var{new-name} as a copy of the existing
2232 face named @var{old-face}. It creates the face @var{new-name} if that
2233 doesn't already exist.
2234
2235 If the optional argument @var{frame} is given, this function applies
2236 only to that frame. Otherwise it applies to each frame individually,
2237 copying attributes from @var{old-face} in each frame to @var{new-face}
2238 in the same frame.
2239
2240 If the optional argument @var{new-frame} is given, then @code{copy-face}
2241 copies the attributes of @var{old-face} in @var{frame} to @var{new-name}
2242 in @var{new-frame}.
2243 @end defun
2244
2245 @defun face-id face
2246 This function returns the face number of face @var{face}.
2247 @end defun
2248
2249 @defun face-documentation face
2250 This function returns the documentation string of face @var{face}, or
2251 @code{nil} if none was specified for it.
2252 @end defun
2253
2254 @defun face-equal face1 face2 &optional frame
2255 This returns @code{t} if the faces @var{face1} and @var{face2} have the
2256 same attributes for display.
2257 @end defun
2258
2259 @defun face-differs-from-default-p face &optional frame
2260 This returns @code{t} if the face @var{face} displays differently from
2261 the default face. A face is considered to be ``the same'' as the
2262 default face if each attribute is either the same as that of the default
2263 face, or unspecified (meaning to inherit from the default).
2264 @end defun
2265
2266 @node Auto Faces
2267 @subsection Automatic Face Assignment
2268 @cindex automatic face assignment
2269 @cindex faces, automatic choice
2270
2271 @cindex Font-Lock mode
2272 Starting with Emacs 21, a hook is available for automatically
2273 assigning faces to text in the buffer. This hook is used for part of
2274 the implementation of Font-Lock mode.
2275
2276 @tindex fontification-functions
2277 @defvar fontification-functions
2278 This variable holds a list of functions that are called by Emacs
2279 redisplay as needed to assign faces automatically to text in the buffer.
2280
2281 The functions are called in the order listed, with one argument, a
2282 buffer position @var{pos}. Each function should attempt to assign faces
2283 to the text in the current buffer starting at @var{pos}.
2284
2285 Each function should record the faces they assign by setting the
2286 @code{face} property. It should also add a non-@code{nil}
2287 @code{fontified} property for all the text it has assigned faces to.
2288 That property tells redisplay that faces have been assigned to that text
2289 already.
2290
2291 It is probably a good idea for each function to do nothing if the
2292 character after @var{pos} already has a non-@code{nil} @code{fontified}
2293 property, but this is not required. If one function overrides the
2294 assignments made by a previous one, the properties as they are
2295 after the last function finishes are the ones that really matter.
2296
2297 For efficiency, we recommend writing these functions so that they
2298 usually assign faces to around 400 to 600 characters at each call.
2299 @end defvar
2300
2301 @node Font Lookup
2302 @subsection Looking Up Fonts
2303
2304 @defun x-list-fonts pattern &optional face frame maximum
2305 This function returns a list of available font names that match
2306 @var{pattern}. If the optional arguments @var{face} and @var{frame} are
2307 specified, then the list is limited to fonts that are the same size as
2308 @var{face} currently is on @var{frame}.
2309
2310 The argument @var{pattern} should be a string, perhaps with wildcard
2311 characters: the @samp{*} character matches any substring, and the
2312 @samp{?} character matches any single character. Pattern matching
2313 of font names ignores case.
2314
2315 If you specify @var{face} and @var{frame}, @var{face} should be a face name
2316 (a symbol) and @var{frame} should be a frame.
2317
2318 The optional argument @var{maximum} sets a limit on how many fonts to
2319 return. If this is non-@code{nil}, then the return value is truncated
2320 after the first @var{maximum} matching fonts. Specifying a small value
2321 for @var{maximum} can make this function much faster, in cases where
2322 many fonts match the pattern.
2323 @end defun
2324
2325 These additional functions are available starting in Emacs 21.
2326
2327 @defun x-family-fonts &optional family frame
2328 @tindex x-family-fonts
2329 This function returns a list describing the available fonts for family
2330 @var{family} on @var{frame}. If @var{family} is omitted or @code{nil},
2331 this list applies to all families, and therefore, it contains all
2332 available fonts. Otherwise, @var{family} must be a string; it may
2333 contain the wildcards @samp{?} and @samp{*}.
2334
2335 The list describes the display that @var{frame} is on; if @var{frame} is
2336 omitted or @code{nil}, it applies to the selected frame's display
2337 (@pxref{Input Focus}).
2338
2339 The list contains a vector of the following form for each font:
2340
2341 @example
2342 [@var{family} @var{width} @var{point-size} @var{weight} @var{slant}
2343 @var{fixed-p} @var{full} @var{registry-and-encoding}]
2344 @end example
2345
2346 The first five elements correspond to face attributes; if you
2347 specify these attributes for a face, it will use this font.
2348
2349 The last three elements give additional information about the font.
2350 @var{fixed-p} is non-@code{nil} if the font is fixed-pitch.
2351 @var{full} is the full name of the font, and
2352 @var{registry-and-encoding} is a string giving the registry and
2353 encoding of the font.
2354
2355 The result list is sorted according to the current face font sort order.
2356 @end defun
2357
2358 @defun x-font-family-list &optional frame
2359 @tindex x-font-family-list
2360 This function returns a list of the font families available for
2361 @var{frame}'s display. If @var{frame} is omitted or @code{nil}, it
2362 describes the selected frame's display (@pxref{Input Focus}).
2363
2364 The value is a list of elements of this form:
2365
2366 @example
2367 (@var{family} . @var{fixed-p})
2368 @end example
2369
2370 @noindent
2371 Here @var{family} is a font family, and @var{fixed-p} is
2372 non-@code{nil} if fonts of that family are fixed-pitch.
2373 @end defun
2374
2375 @defvar font-list-limit
2376 @tindex font-list-limit
2377 This variable specifies maximum number of fonts to consider in font
2378 matching. The function @code{x-family-fonts} will not return more than
2379 that many fonts, and font selection will consider only that many fonts
2380 when searching a matching font for face attributes. The default is
2381 currently 100.
2382 @end defvar
2383
2384 @node Fontsets
2385 @subsection Fontsets
2386
2387 A @dfn{fontset} is a list of fonts, each assigned to a range of
2388 character codes. An individual font cannot display the whole range of
2389 characters that Emacs supports, but a fontset can. Fontsets have names,
2390 just as fonts do, and you can use a fontset name in place of a font name
2391 when you specify the ``font'' for a frame or a face. Here is
2392 information about defining a fontset under Lisp program control.
2393
2394 @defun create-fontset-from-fontset-spec fontset-spec &optional style-variant-p noerror
2395 This function defines a new fontset according to the specification
2396 string @var{fontset-spec}. The string should have this format:
2397
2398 @smallexample
2399 @var{fontpattern}, @r{[}@var{charsetname}:@var{fontname}@r{]@dots{}}
2400 @end smallexample
2401
2402 @noindent
2403 Whitespace characters before and after the commas are ignored.
2404
2405 The first part of the string, @var{fontpattern}, should have the form of
2406 a standard X font name, except that the last two fields should be
2407 @samp{fontset-@var{alias}}.
2408
2409 The new fontset has two names, one long and one short. The long name is
2410 @var{fontpattern} in its entirety. The short name is
2411 @samp{fontset-@var{alias}}. You can refer to the fontset by either
2412 name. If a fontset with the same name already exists, an error is
2413 signaled, unless @var{noerror} is non-@code{nil}, in which case this
2414 function does nothing.
2415
2416 If optional argument @var{style-variant-p} is non-@code{nil}, that says
2417 to create bold, italic and bold-italic variants of the fontset as well.
2418 These variant fontsets do not have a short name, only a long one, which
2419 is made by altering @var{fontpattern} to indicate the bold or italic
2420 status.
2421
2422 The specification string also says which fonts to use in the fontset.
2423 See below for the details.
2424 @end defun
2425
2426 The construct @samp{@var{charset}:@var{font}} specifies which font to
2427 use (in this fontset) for one particular character set. Here,
2428 @var{charset} is the name of a character set, and @var{font} is the font
2429 to use for that character set. You can use this construct any number of
2430 times in the specification string.
2431
2432 For the remaining character sets, those that you don't specify
2433 explicitly, Emacs chooses a font based on @var{fontpattern}: it replaces
2434 @samp{fontset-@var{alias}} with a value that names one character set.
2435 For the @sc{ascii} character set, @samp{fontset-@var{alias}} is replaced
2436 with @samp{ISO8859-1}.
2437
2438 In addition, when several consecutive fields are wildcards, Emacs
2439 collapses them into a single wildcard. This is to prevent use of
2440 auto-scaled fonts. Fonts made by scaling larger fonts are not usable
2441 for editing, and scaling a smaller font is not useful because it is
2442 better to use the smaller font in its own size, which Emacs does.
2443
2444 Thus if @var{fontpattern} is this,
2445
2446 @example
2447 -*-fixed-medium-r-normal-*-24-*-*-*-*-*-fontset-24
2448 @end example
2449
2450 @noindent
2451 the font specification for @sc{ascii} characters would be this:
2452
2453 @example
2454 -*-fixed-medium-r-normal-*-24-*-ISO8859-1
2455 @end example
2456
2457 @noindent
2458 and the font specification for Chinese GB2312 characters would be this:
2459
2460 @example
2461 -*-fixed-medium-r-normal-*-24-*-gb2312*-*
2462 @end example
2463
2464 You may not have any Chinese font matching the above font
2465 specification. Most X distributions include only Chinese fonts that
2466 have @samp{song ti} or @samp{fangsong ti} in the @var{family} field. In
2467 such a case, @samp{Fontset-@var{n}} can be specified as below:
2468
2469 @smallexample
2470 Emacs.Fontset-0: -*-fixed-medium-r-normal-*-24-*-*-*-*-*-fontset-24,\
2471 chinese-gb2312:-*-*-medium-r-normal-*-24-*-gb2312*-*
2472 @end smallexample
2473
2474 @noindent
2475 Then, the font specifications for all but Chinese GB2312 characters have
2476 @samp{fixed} in the @var{family} field, and the font specification for
2477 Chinese GB2312 characters has a wild card @samp{*} in the @var{family}
2478 field.
2479
2480 @node Fringes
2481 @section Fringes
2482 @cindex Fringes
2483
2484 The @dfn{fringes} of a window are thin vertical strips down the
2485 sides that are used for displaying bitmaps that indicate truncation,
2486 continuation, and horizontal scrolling, the overlay arrow. The
2487 fringes normally appear between the display margins and the window
2488 text, but you can put them outside the display margins for a specific
2489 buffer by setting @code{fringes-outside-margins} buffer-locally to a
2490 non-@code{nil} value.
2491
2492 @defvar fringes-outside-margins
2493 If the value is non-@code{nil}, the frames appear outside
2494 the display margins.
2495 @end defvar
2496
2497 @defvar left-fringe-width
2498 This variable, if non-@code{nil}, specifies the width of the left
2499 fringe in pixels.
2500 @end defvar
2501
2502 @defvar right-fringe-width
2503 This variable, if non-@code{nil}, specifies the width of the right
2504 fringe in pixels.
2505 @end defvar
2506
2507 The values of these variables take effect when you display the
2508 buffer in a window. If you change them while the buffer is visible,
2509 you can call @code{set-buffer-window} to display it in a window again.
2510
2511 @defun set-window-fringes window left &optional right outside-margins
2512 This function sets the fringe widthes of window @var{window}.
2513 If window is @code{nil}, that stands for the selected window.
2514
2515 The argument @var{left} specifies the width in pixels of the left
2516 fringe, and likewise @var{right} for the right fringe. A value of
2517 @code{nil} for either one stands for the default width. If
2518 @var{outside-margins} is non-@code{nil}, that specifies that fringes
2519 should appear outside of the display margins.
2520 @end defun
2521
2522 @defun window-fringes window
2523 This function returns information about the fringes of a window
2524 @var{window}. The value has the form @code{(@var{left-width}
2525 @var{right-width} @var{frames-outside-margins})}.
2526 @end defun
2527
2528 @node Display Property
2529 @section The @code{display} Property
2530 @cindex display specification
2531 @kindex display @r{(text property)}
2532
2533 The @code{display} text property (or overlay property) is used to
2534 insert images into text, and also control other aspects of how text
2535 displays. These features are available starting in Emacs 21. The value
2536 of the @code{display} property should be a display specification, or a
2537 list or vector containing several display specifications. The rest of
2538 this section describes several kinds of display specifications and what
2539 they mean.
2540
2541 @menu
2542 * Specified Space:: Displaying one space with a specified width.
2543 * Other Display Specs:: Displaying an image; magnifying text; moving it
2544 up or down on the page; adjusting the width
2545 of spaces within text.
2546 * Display Margins:: Displaying text or images to the side of the main text.
2547 * Conditional Display:: Making any of the above features conditional
2548 depending on some Lisp expression.
2549 @end menu
2550
2551 @node Specified Space
2552 @subsection Specified Spaces
2553 @cindex spaces, specified height or width
2554 @cindex specified spaces
2555 @cindex variable-width spaces
2556
2557 To display a space of specified width and/or height, use a display
2558 specification of the form @code{(space . @var{props})}, where
2559 @var{props} is a property list (a list of alternating properties and
2560 values). You can put this property on one or more consecutive
2561 characters; a space of the specified height and width is displayed in
2562 place of @emph{all} of those characters. These are the properties you
2563 can use in @var{props} to specify the weight of the space:
2564
2565 @table @code
2566 @item :width @var{width}
2567 Specifies that the space width should be @var{width} times the normal
2568 character width. @var{width} can be an integer or floating point
2569 number.
2570
2571 @item :relative-width @var{factor}
2572 Specifies that the width of the stretch should be computed from the
2573 first character in the group of consecutive characters that have the
2574 same @code{display} property. The space width is the width of that
2575 character, multiplied by @var{factor}.
2576
2577 @item :align-to @var{hpos}
2578 Specifies that the space should be wide enough to reach @var{hpos}. The
2579 value @var{hpos} is measured in units of the normal character width. It
2580 may be an integer or a floating point number.
2581 @end table
2582
2583 You should use one and only one of the above properties. You can
2584 also specify the height of the space, with other properties:
2585
2586 @table @code
2587 @item :height @var{height}
2588 Specifies the height of the space, as @var{height},
2589 measured in terms of the normal line height.
2590
2591 @item :relative-height @var{factor}
2592 Specifies the height of the space, multiplying the ordinary height
2593 of the text having this display specification by @var{factor}.
2594
2595 @item :ascent @var{ascent}
2596 Specifies that @var{ascent} percent of the height of the space should be
2597 considered as the ascent of the space---that is, the part above the
2598 baseline. The value of @var{ascent} must be a non-negative number no
2599 greater than 100.
2600 @end table
2601
2602 Don't use both @code{:height} and @code{:relative-height} together.
2603
2604 @node Other Display Specs
2605 @subsection Other Display Specifications
2606
2607 @table @code
2608 @item (image . @var{image-props})
2609 This is in fact an image descriptor (@pxref{Images}). When used as a
2610 display specification, it means to display the image instead of the text
2611 that has the display specification.
2612
2613 @item ((margin nil) @var{string})
2614 @itemx @var{string}
2615 A display specification of this form means to display @var{string}
2616 instead of the text that has the display specification, at the same
2617 position as that text. This is a special case of marginal display
2618 (@pxref{Display Margins}).
2619
2620 Recursive display specifications are not supported---string display
2621 specifications must not have @code{display} properties themselves.
2622
2623 @item (space-width @var{factor})
2624 This display specification affects all the space characters within the
2625 text that has the specification. It displays all of these spaces
2626 @var{factor} times as wide as normal. The element @var{factor} should
2627 be an integer or float. Characters other than spaces are not affected
2628 at all; in particular, this has no effect on tab characters.
2629
2630 @item (height @var{height})
2631 This display specification makes the text taller or shorter.
2632 Here are the possibilities for @var{height}:
2633
2634 @table @asis
2635 @item @code{(+ @var{n})}
2636 This means to use a font that is @var{n} steps larger. A ``step'' is
2637 defined by the set of available fonts---specifically, those that match
2638 what was otherwise specified for this text, in all attributes except
2639 height. Each size for which a suitable font is available counts as
2640 another step. @var{n} should be an integer.
2641
2642 @item @code{(- @var{n})}
2643 This means to use a font that is @var{n} steps smaller.
2644
2645 @item a number, @var{factor}
2646 A number, @var{factor}, means to use a font that is @var{factor} times
2647 as tall as the default font.
2648
2649 @item a symbol, @var{function}
2650 A symbol is a function to compute the height. It is called with the
2651 current height as argument, and should return the new height to use.
2652
2653 @item anything else, @var{form}
2654 If the @var{height} value doesn't fit the previous possibilities, it is
2655 a form. Emacs evaluates it to get the new height, with the symbol
2656 @code{height} bound to the current specified font height.
2657 @end table
2658
2659 @item (raise @var{factor})
2660 This kind of display specification raises or lowers the text
2661 it applies to, relative to the baseline of the line.
2662
2663 @var{factor} must be a number, which is interpreted as a multiple of the
2664 height of the affected text. If it is positive, that means to display
2665 the characters raised. If it is negative, that means to display them
2666 lower down.
2667
2668 If the text also has a @code{height} display specification, that does
2669 not affect the amount of raising or lowering, which is based on the
2670 faces used for the text.
2671 @end table
2672
2673 @node Display Margins
2674 @subsection Displaying in the Margins
2675 @cindex display margins
2676 @cindex margins, display
2677
2678 A buffer can have blank areas called @dfn{display margins} on the left
2679 and on the right. Ordinary text never appears in these areas, but you
2680 can put things into the display margins using the @code{display}
2681 property.
2682
2683 To put text in the left or right display margin of the window, use a
2684 display specification of the form @code{(margin right-margin)} or
2685 @code{(margin left-margin)} on it. To put an image in a display margin,
2686 use that display specification along with the display specification for
2687 the image. Unfortunately, there is currently no way to make
2688 text or images in the margin mouse-sensitive.
2689
2690 If you put such a display specification directly on text in the
2691 buffer, the specified margin display appears @emph{instead of} that
2692 buffer text itself. To put something in the margin @emph{in
2693 association with} certain buffer text without preventing or altering
2694 the display of that text, put a @code{before-string} property on the
2695 text and put the display specification on the contents of the
2696 before-string.
2697
2698 Before the display margins can display anything, you must give
2699 them a nonzero width. The usual way to do that is to set these
2700 variables:
2701
2702 @defvar left-margin-width
2703 @tindex left-margin-width
2704 This variable specifies the width of the left margin.
2705 It is buffer-local in all buffers.
2706 @end defvar
2707
2708 @defvar right-margin-width
2709 @tindex right-margin-width
2710 This variable specifies the width of the right margin.
2711 It is buffer-local in all buffers.
2712 @end defvar
2713
2714 Setting these variables does not immediately affect the window. These
2715 variables are checked when a new buffer is displayed in the window.
2716 Thus, you can make changes take effect by calling
2717 @code{set-window-buffer}.
2718
2719 You can also set the margin widths immediately.
2720
2721 @defun set-window-margins window left &optional right
2722 @tindex set-window-margins
2723 This function specifies the margin widths for window @var{window}.
2724 The argument @var{left} controls the left margin and
2725 @var{right} controls the right margin (default @code{0}).
2726 @end defun
2727
2728 @defun window-margins &optional window
2729 @tindex window-margins
2730 This function returns the left and right margins of @var{window}
2731 as a cons cell of the form @code{(@var{left} . @var{right})}.
2732 If @var{window} is @code{nil}, the selected window is used.
2733 @end defun
2734
2735 @node Conditional Display
2736 @subsection Conditional Display Specifications
2737 @cindex conditional display specifications
2738
2739 You can make any display specification conditional. To do that,
2740 package it in another list of the form @code{(when @var{condition} .
2741 @var{spec})}. Then the specification @var{spec} applies only when
2742 @var{condition} evaluates to a non-@code{nil} value. During the
2743 evaluation, @code{object} is bound to the string or buffer having the
2744 conditional @code{display} property. @code{position} and
2745 @code{buffer-position} are bound to the position within @code{object}
2746 and the buffer position where the @code{display} property was found,
2747 respectively. Both positions can be different when @code{object} is a
2748 string.
2749
2750 @node Images
2751 @section Images
2752 @cindex images in buffers
2753
2754 To display an image in an Emacs buffer, you must first create an image
2755 descriptor, then use it as a display specifier in the @code{display}
2756 property of text that is displayed (@pxref{Display Property}). Like the
2757 @code{display} property, this feature is available starting in Emacs 21.
2758
2759 Emacs can display a number of different image formats; some of them
2760 are supported only if particular support libraries are installed on your
2761 machine. The supported image formats include XBM, XPM (needing the
2762 libraries @code{libXpm} version 3.4k and @code{libz}), GIF (needing
2763 @code{libungif} 4.1.0), Postscript, PBM, JPEG (needing the
2764 @code{libjpeg} library version v6a), TIFF (needing @code{libtiff} v3.4),
2765 and PNG (needing @code{libpng} 1.0.2).
2766
2767 You specify one of these formats with an image type symbol. The image
2768 type symbols are @code{xbm}, @code{xpm}, @code{gif}, @code{postscript},
2769 @code{pbm}, @code{jpeg}, @code{tiff}, and @code{png}.
2770
2771 @defvar image-types
2772 This variable contains a list of those image type symbols that are
2773 supported in the current configuration.
2774 @end defvar
2775
2776 @menu
2777 * Image Descriptors:: How to specify an image for use in @code{:display}.
2778 * XBM Images:: Special features for XBM format.
2779 * XPM Images:: Special features for XPM format.
2780 * GIF Images:: Special features for GIF format.
2781 * Postscript Images:: Special features for Postscript format.
2782 * Other Image Types:: Various other formats are supported.
2783 * Defining Images:: Convenient ways to define an image for later use.
2784 * Showing Images:: Convenient ways to display an image once it is defined.
2785 * Image Cache:: Internal mechanisms of image display.
2786 @end menu
2787
2788 @node Image Descriptors
2789 @subsection Image Descriptors
2790 @cindex image descriptor
2791
2792 An image description is a list of the form @code{(image
2793 . @var{props})}, where @var{props} is a property list containing
2794 alternating keyword symbols (symbols whose names start with a colon) and
2795 their values. You can use any Lisp object as a property, but the only
2796 properties that have any special meaning are certain symbols, all of
2797 them keywords.
2798
2799 Every image descriptor must contain the property @code{:type
2800 @var{type}} to specify the format of the image. The value of @var{type}
2801 should be an image type symbol; for example, @code{xpm} for an image in
2802 XPM format.
2803
2804 Here is a list of other properties that are meaningful for all image
2805 types:
2806
2807 @table @code
2808 @item :file @var{file}
2809 The @code{:file} property specifies to load the image from file
2810 @var{file}. If @var{file} is not an absolute file name, it is expanded
2811 in @code{data-directory}.
2812
2813 @item :data @var{data}
2814 The @code{:data} property specifies the actual contents of the image.
2815 Each image must use either @code{:data} or @code{:file}, but not both.
2816 For most image types, the value of the @code{:data} property should be a
2817 string containing the image data; we recommend using a unibyte string.
2818
2819 Before using @code{:data}, look for further information in the section
2820 below describing the specific image format. For some image types,
2821 @code{:data} may not be supported; for some, it allows other data types;
2822 for some, @code{:data} alone is not enough, so you need to use other
2823 image properties along with @code{:data}.
2824
2825 @item :margin @var{margin}
2826 The @code{:margin} property specifies how many pixels to add as an
2827 extra margin around the image. The value, @var{margin}, must be a
2828 non-negative number, or a pair @code{(@var{x} . @var{y})} of such
2829 numbers. If it is a pair, @var{x} specifies how many pixels to add
2830 horizontally, and @var{y} specifies how many pixels to add vertically.
2831 If @code{:margin} is not specified, the default is zero.
2832
2833 @item :ascent @var{ascent}
2834 The @code{:ascent} property specifies the amount of the image's
2835 height to use for its ascent---that is, the part above the baseline.
2836 The value, @var{ascent}, must be a number in the range 0 to 100, or
2837 the symbol @code{center}.
2838
2839 If @var{ascent} is a number, that percentage of the image's height is
2840 used for its ascent.
2841
2842 If @var{ascent} is @code{center}, the image is vertically centered
2843 around a centerline which would be the vertical centerline of text drawn
2844 at the position of the image, in the manner specified by the text
2845 properties and overlays that apply to the image.
2846
2847 If this property is omitted, it defaults to 50.
2848
2849 @item :relief @var{relief}
2850 The @code{:relief} property, if non-@code{nil}, adds a shadow rectangle
2851 around the image. The value, @var{relief}, specifies the width of the
2852 shadow lines, in pixels. If @var{relief} is negative, shadows are drawn
2853 so that the image appears as a pressed button; otherwise, it appears as
2854 an unpressed button.
2855
2856 @item :conversion @var{algorithm}
2857 The @code{:conversion} property, if non-@code{nil}, specifies a
2858 conversion algorithm that should be applied to the image before it is
2859 displayed; the value, @var{algorithm}, specifies which algorithm.
2860
2861 @table @code
2862 @item laplace
2863 @itemx emboss
2864 Specifies the Laplace edge detection algorithm, which blurs out small
2865 differences in color while highlighting larger differences. People
2866 sometimes consider this useful for displaying the image for a
2867 ``disabled'' button.
2868
2869 @item (edge-detection :matrix @var{matrix} :color-adjust @var{adjust})
2870 Specifies a general edge-detection algorithm. @var{matrix} must be
2871 either a nine-element list or a nine-element vector of numbers. A pixel
2872 at position @math{x/y} in the transformed image is computed from
2873 original pixels around that position. @var{matrix} specifies, for each
2874 pixel in the neighborhood of @math{x/y}, a factor with which that pixel
2875 will influence the transformed pixel; element @math{0} specifies the
2876 factor for the pixel at @math{x-1/y-1}, element @math{1} the factor for
2877 the pixel at @math{x/y-1} etc., as shown below:
2878 @iftex
2879 @tex
2880 $$\pmatrix{x-1/y-1 & x/y-1 & x+1/y-1 \cr
2881 x-1/y & x/y & x+1/y \cr
2882 x-1/y+1& x/y+1 & x+1/y+1 \cr}$$
2883 @end tex
2884 @end iftex
2885 @ifnottex
2886 @display
2887 (x-1/y-1 x/y-1 x+1/y-1
2888 x-1/y x/y x+1/y
2889 x-1/y+1 x/y+1 x+1/y+1)
2890 @end display
2891 @end ifnottex
2892
2893 The resulting pixel is computed from the color intensity of the color
2894 resulting from summing up the RGB values of surrounding pixels,
2895 multiplied by the specified factors, and dividing that sum by the sum
2896 of the factors' absolute values.
2897
2898 Laplace edge-detection currently uses a matrix of
2899 @iftex
2900 @tex
2901 $$\pmatrix{1 & 0 & 0 \cr
2902 0& 0 & 0 \cr
2903 9 & 9 & -1 \cr}$$
2904 @end tex
2905 @end iftex
2906 @ifnottex
2907 @display
2908 (1 0 0
2909 0 0 0
2910 9 9 -1)
2911 @end display
2912 @end ifnottex
2913
2914 Emboss edge-detection uses a matrix of
2915 @iftex
2916 @tex
2917 $$\pmatrix{ 2 & -1 & 0 \cr
2918 -1 & 0 & 1 \cr
2919 0 & 1 & -2 \cr}$$
2920 @end tex
2921 @end iftex
2922 @ifnottex
2923 @display
2924 ( 2 -1 0
2925 -1 0 1
2926 0 1 -2)
2927 @end display
2928 @end ifnottex
2929
2930 @item disabled
2931 Specifies transforming the image so that it looks ``disabled''.
2932 @end table
2933
2934 @item :mask @var{mask}
2935 If @var{mask} is @code{heuristic} or @code{(heuristic @var{bg})}, build
2936 a clipping mask for the image, so that the background of a frame is
2937 visible behind the image. If @var{bg} is not specified, or if @var{bg}
2938 is @code{t}, determine the background color of the image by looking at
2939 the four corners of the image, assuming the most frequently occurring
2940 color from the corners is the background color of the image. Otherwise,
2941 @var{bg} must be a list @code{(@var{red} @var{green} @var{blue})}
2942 specifying the color to assume for the background of the image.
2943
2944 If @var{mask} is @code{nil}, remove a mask from the image, if it has
2945 one. Images in some formats include a mask which can be removed by
2946 specifying @code{:mask nil}.
2947 @end table
2948
2949 @defun image-mask-p spec &optional frame
2950 @tindex image-mask-p
2951 This function returns @code{t} if image @var{spec} has a mask bitmap.
2952 @var{frame} is the frame on which the image will be displayed.
2953 @var{frame} @code{nil} or omitted means to use the selected frame
2954 (@pxref{Input Focus}).
2955 @end defun
2956
2957 @node XBM Images
2958 @subsection XBM Images
2959 @cindex XBM
2960
2961 To use XBM format, specify @code{xbm} as the image type. This image
2962 format doesn't require an external library, so images of this type are
2963 always supported.
2964
2965 Additional image properties supported for the @code{xbm} image type are:
2966
2967 @table @code
2968 @item :foreground @var{foreground}
2969 The value, @var{foreground}, should be a string specifying the image
2970 foreground color, or @code{nil} for the default color. This color is
2971 used for each pixel in the XBM that is 1. The default is the frame's
2972 foreground color.
2973
2974 @item :background @var{background}
2975 The value, @var{background}, should be a string specifying the image
2976 background color, or @code{nil} for the default color. This color is
2977 used for each pixel in the XBM that is 0. The default is the frame's
2978 background color.
2979 @end table
2980
2981 If you specify an XBM image using data within Emacs instead of an
2982 external file, use the following three properties:
2983
2984 @table @code
2985 @item :data @var{data}
2986 The value, @var{data}, specifies the contents of the image.
2987 There are three formats you can use for @var{data}:
2988
2989 @itemize @bullet
2990 @item
2991 A vector of strings or bool-vectors, each specifying one line of the
2992 image. Do specify @code{:height} and @code{:width}.
2993
2994 @item
2995 A string containing the same byte sequence as an XBM file would contain.
2996 You must not specify @code{:height} and @code{:width} in this case,
2997 because omitting them is what indicates the data has the format of an
2998 XBM file. The file contents specify the height and width of the image.
2999
3000 @item
3001 A string or a bool-vector containing the bits of the image (plus perhaps
3002 some extra bits at the end that will not be used). It should contain at
3003 least @var{width} * @code{height} bits. In this case, you must specify
3004 @code{:height} and @code{:width}, both to indicate that the string
3005 contains just the bits rather than a whole XBM file, and to specify the
3006 size of the image.
3007 @end itemize
3008
3009 @item :width @var{width}
3010 The value, @var{width}, specifies the width of the image, in pixels.
3011
3012 @item :height @var{height}
3013 The value, @var{height}, specifies the height of the image, in pixels.
3014 @end table
3015
3016 @node XPM Images
3017 @subsection XPM Images
3018 @cindex XPM
3019
3020 To use XPM format, specify @code{xpm} as the image type. The
3021 additional image property @code{:color-symbols} is also meaningful with
3022 the @code{xpm} image type:
3023
3024 @table @code
3025 @item :color-symbols @var{symbols}
3026 The value, @var{symbols}, should be an alist whose elements have the
3027 form @code{(@var{name} . @var{color})}. In each element, @var{name} is
3028 the name of a color as it appears in the image file, and @var{color}
3029 specifies the actual color to use for displaying that name.
3030 @end table
3031
3032 @node GIF Images
3033 @subsection GIF Images
3034 @cindex GIF
3035
3036 For GIF images, specify image type @code{gif}. Because of the patents
3037 in the US covering the LZW algorithm, the continued use of GIF format is
3038 a problem for the whole Internet; to end this problem, it is a good idea
3039 for everyone, even outside the US, to stop using GIFS right away
3040 (@uref{http://www.burnallgifs.org/}). But if you still want to use
3041 them, Emacs can display them.
3042
3043 @table @code
3044 @item :index @var{index}
3045 You can use @code{:index} to specify one image from a GIF file that
3046 contains more than one image. This property specifies use of image
3047 number @var{index} from the file. An error is signaled if the GIF file
3048 doesn't contain an image with index @var{index}.
3049 @end table
3050
3051 @ignore
3052 This could be used to implement limited support for animated GIFs.
3053 For example, the following function displays a multi-image GIF file
3054 at point-min in the current buffer, switching between sub-images
3055 every 0.1 seconds.
3056
3057 (defun show-anim (file max)
3058 "Display multi-image GIF file FILE which contains MAX subimages."
3059 (display-anim (current-buffer) file 0 max t))
3060
3061 (defun display-anim (buffer file idx max first-time)
3062 (when (= idx max)
3063 (setq idx 0))
3064 (let ((img (create-image file nil :image idx)))
3065 (save-excursion
3066 (set-buffer buffer)
3067 (goto-char (point-min))
3068 (unless first-time (delete-char 1))
3069 (insert-image img))
3070 (run-with-timer 0.1 nil 'display-anim buffer file (1+ idx) max nil)))
3071 @end ignore
3072
3073 @node Postscript Images
3074 @subsection Postscript Images
3075 @cindex Postscript images
3076
3077 To use Postscript for an image, specify image type @code{postscript}.
3078 This works only if you have Ghostscript installed. You must always use
3079 these three properties:
3080
3081 @table @code
3082 @item :pt-width @var{width}
3083 The value, @var{width}, specifies the width of the image measured in
3084 points (1/72 inch). @var{width} must be an integer.
3085
3086 @item :pt-height @var{height}
3087 The value, @var{height}, specifies the height of the image in points
3088 (1/72 inch). @var{height} must be an integer.
3089
3090 @item :bounding-box @var{box}
3091 The value, @var{box}, must be a list or vector of four integers, which
3092 specifying the bounding box of the Postscript image, analogous to the
3093 @samp{BoundingBox} comment found in Postscript files.
3094
3095 @example
3096 %%BoundingBox: 22 171 567 738
3097 @end example
3098 @end table
3099
3100 Displaying Postscript images from Lisp data is not currently
3101 implemented, but it may be implemented by the time you read this.
3102 See the @file{etc/NEWS} file to make sure.
3103
3104 @node Other Image Types
3105 @subsection Other Image Types
3106 @cindex PBM
3107
3108 For PBM images, specify image type @code{pbm}. Color, gray-scale and
3109 monochromatic images are supported. For mono PBM images, two additional
3110 image properties are supported.
3111
3112 @table @code
3113 @item :foreground @var{foreground}
3114 The value, @var{foreground}, should be a string specifying the image
3115 foreground color, or @code{nil} for the default color. This color is
3116 used for each pixel in the XBM that is 1. The default is the frame's
3117 foreground color.
3118
3119 @item :background @var{background}
3120 The value, @var{background}, should be a string specifying the image
3121 background color, or @code{nil} for the default color. This color is
3122 used for each pixel in the XBM that is 0. The default is the frame's
3123 background color.
3124 @end table
3125
3126 For JPEG images, specify image type @code{jpeg}.
3127
3128 For TIFF images, specify image type @code{tiff}.
3129
3130 For PNG images, specify image type @code{png}.
3131
3132 @node Defining Images
3133 @subsection Defining Images
3134
3135 The functions @code{create-image}, @code{defimage} and
3136 @code{find-image} provide convenient ways to create image descriptors.
3137
3138 @defun create-image file &optional type &rest props
3139 @tindex create-image
3140 This function creates and returns an image descriptor which uses the
3141 data in @var{file}.
3142
3143 The optional argument @var{type} is a symbol specifying the image type.
3144 If @var{type} is omitted or @code{nil}, @code{create-image} tries to
3145 determine the image type from the file's first few bytes, or else
3146 from the file's name.
3147
3148 The remaining arguments, @var{props}, specify additional image
3149 properties---for example,
3150
3151 @example
3152 (create-image "foo.xpm" 'xpm :heuristic-mask t)
3153 @end example
3154
3155 The function returns @code{nil} if images of this type are not
3156 supported. Otherwise it returns an image descriptor.
3157 @end defun
3158
3159 @defmac defimage symbol specs &optional doc
3160 @tindex defimage
3161 This macro defines @var{symbol} as an image name. The arguments
3162 @var{specs} is a list which specifies how to display the image.
3163 The third argument, @var{doc}, is an optional documentation string.
3164
3165 Each argument in @var{specs} has the form of a property list, and each
3166 one should specify at least the @code{:type} property and either the
3167 @code{:file} or the @code{:data} property. The value of @code{:type}
3168 should be a symbol specifying the image type, the value of
3169 @code{:file} is the file to load the image from, and the value of
3170 @code{:data} is a string containing the actual image data. Here is an
3171 example:
3172
3173 @example
3174 (defimage test-image
3175 ((:type xpm :file "~/test1.xpm")
3176 (:type xbm :file "~/test1.xbm")))
3177 @end example
3178
3179 @code{defimage} tests each argument, one by one, to see if it is
3180 usable---that is, if the type is supported and the file exists. The
3181 first usable argument is used to make an image descriptor which is
3182 stored in @var{symbol}.
3183
3184 If none of the alternatives will work, then @var{symbol} is defined
3185 as @code{nil}.
3186 @end defmac
3187
3188 @defun find-image specs
3189 @tindex find-image
3190 This function provides a convenient way to find an image satisfying one
3191 of a list of image specifications @var{specs}.
3192
3193 Each specification in @var{specs} is a property list with contents
3194 depending on image type. All specifications must at least contain the
3195 properties @code{:type @var{type}} and either @w{@code{:file @var{file}}}
3196 or @w{@code{:data @var{DATA}}}, where @var{type} is a symbol specifying
3197 the image type, e.g.@: @code{xbm}, @var{file} is the file to load the
3198 image from, and @var{data} is a string containing the actual image data.
3199 The first specification in the list whose @var{type} is supported, and
3200 @var{file} exists, is used to construct the image specification to be
3201 returned. If no specification is satisfied, @code{nil} is returned.
3202
3203 The image is looked for first on @code{load-path} and then in
3204 @code{data-directory}.
3205 @end defun
3206
3207 @node Showing Images
3208 @subsection Showing Images
3209
3210 You can use an image descriptor by setting up the @code{display}
3211 property yourself, but it is easier to use the functions in this
3212 section.
3213
3214 @defun insert-image image &optional string area
3215 This function inserts @var{image} in the current buffer at point. The
3216 value @var{image} should be an image descriptor; it could be a value
3217 returned by @code{create-image}, or the value of a symbol defined with
3218 @code{defimage}. The argument @var{string} specifies the text to put in
3219 the buffer to hold the image.
3220
3221 The argument @var{area} specifies whether to put the image in a margin.
3222 If it is @code{left-margin}, the image appears in the left margin;
3223 @code{right-margin} specifies the right margin. If @var{area} is
3224 @code{nil} or omitted, the image is displayed at point within the
3225 buffer's text.
3226
3227 Internally, this function inserts @var{string} in the buffer, and gives
3228 it a @code{display} property which specifies @var{image}. @xref{Display
3229 Property}.
3230 @end defun
3231
3232 @defun put-image image pos &optional string area
3233 This function puts image @var{image} in front of @var{pos} in the
3234 current buffer. The argument @var{pos} should be an integer or a
3235 marker. It specifies the buffer position where the image should appear.
3236 The argument @var{string} specifies the text that should hold the image
3237 as an alternative to the default.
3238
3239 The argument @var{image} must be an image descriptor, perhaps returned
3240 by @code{create-image} or stored by @code{defimage}.
3241
3242 The argument @var{area} specifies whether to put the image in a margin.
3243 If it is @code{left-margin}, the image appears in the left margin;
3244 @code{right-margin} specifies the right margin. If @var{area} is
3245 @code{nil} or omitted, the image is displayed at point within the
3246 buffer's text.
3247
3248 Internally, this function creates an overlay, and gives it a
3249 @code{before-string} property containing text that has a @code{display}
3250 property whose value is the image. (Whew!)
3251 @end defun
3252
3253 @defun remove-images start end &optional buffer
3254 This function removes images in @var{buffer} between positions
3255 @var{start} and @var{end}. If @var{buffer} is omitted or @code{nil},
3256 images are removed from the current buffer.
3257
3258 This removes only images that were put into @var{buffer} the way
3259 @code{put-image} does it, not images that were inserted with
3260 @code{insert-image} or in other ways.
3261 @end defun
3262
3263 @defun image-size spec &optional pixels frame
3264 @tindex image-size
3265 This function returns the size of an image as a pair
3266 @w{@code{(@var{width} . @var{height})}}. @var{spec} is an image
3267 specification. @var{pixels} non-@code{nil} means return sizes
3268 measured in pixels, otherwise return sizes measured in canonical
3269 character units (fractions of the width/height of the frame's default
3270 font). @var{frame} is the frame on which the image will be displayed.
3271 @var{frame} null or omitted means use the selected frame (@pxref{Input
3272 Focus}).
3273 @end defun
3274
3275 @node Image Cache
3276 @subsection Image Cache
3277
3278 Emacs stores images in an image cache when it displays them, so it can
3279 display them again more efficiently. It removes an image from the cache
3280 when it hasn't been displayed for a specified period of time.
3281
3282 When an image is looked up in the cache, its specification is compared
3283 with cached image specifications using @code{equal}. This means that
3284 all images with equal specifications share the same image in the cache.
3285
3286 @defvar image-cache-eviction-delay
3287 @tindex image-cache-eviction-delay
3288 This variable specifies the number of seconds an image can remain in the
3289 cache without being displayed. When an image is not displayed for this
3290 length of time, Emacs removes it from the image cache.
3291
3292 If the value is @code{nil}, Emacs does not remove images from the cache
3293 except when you explicitly clear it. This mode can be useful for
3294 debugging.
3295 @end defvar
3296
3297 @defun clear-image-cache &optional frame
3298 @tindex clear-image-cache
3299 This function clears the image cache. If @var{frame} is non-@code{nil},
3300 only the cache for that frame is cleared. Otherwise all frames' caches
3301 are cleared.
3302 @end defun
3303
3304 @node Blinking
3305 @section Blinking Parentheses
3306 @cindex parenthesis matching
3307 @cindex blinking
3308 @cindex balancing parentheses
3309 @cindex close parenthesis
3310
3311 This section describes the mechanism by which Emacs shows a matching
3312 open parenthesis when the user inserts a close parenthesis.
3313
3314 @defvar blink-paren-function
3315 The value of this variable should be a function (of no arguments) to
3316 be called whenever a character with close parenthesis syntax is inserted.
3317 The value of @code{blink-paren-function} may be @code{nil}, in which
3318 case nothing is done.
3319 @end defvar
3320
3321 @defopt blink-matching-paren
3322 If this variable is @code{nil}, then @code{blink-matching-open} does
3323 nothing.
3324 @end defopt
3325
3326 @defopt blink-matching-paren-distance
3327 This variable specifies the maximum distance to scan for a matching
3328 parenthesis before giving up.
3329 @end defopt
3330
3331 @defopt blink-matching-delay
3332 This variable specifies the number of seconds for the cursor to remain
3333 at the matching parenthesis. A fraction of a second often gives
3334 good results, but the default is 1, which works on all systems.
3335 @end defopt
3336
3337 @deffn Command blink-matching-open
3338 This function is the default value of @code{blink-paren-function}. It
3339 assumes that point follows a character with close parenthesis syntax and
3340 moves the cursor momentarily to the matching opening character. If that
3341 character is not already on the screen, it displays the character's
3342 context in the echo area. To avoid long delays, this function does not
3343 search farther than @code{blink-matching-paren-distance} characters.
3344
3345 Here is an example of calling this function explicitly.
3346
3347 @smallexample
3348 @group
3349 (defun interactive-blink-matching-open ()
3350 @c Do not break this line! -- rms.
3351 @c The first line of a doc string
3352 @c must stand alone.
3353 "Indicate momentarily the start of sexp before point."
3354 (interactive)
3355 @end group
3356 @group
3357 (let ((blink-matching-paren-distance
3358 (buffer-size))
3359 (blink-matching-paren t))
3360 (blink-matching-open)))
3361 @end group
3362 @end smallexample
3363 @end deffn
3364
3365 @node Inverse Video
3366 @section Inverse Video
3367 @cindex Inverse Video
3368
3369 @defopt inverse-video
3370 @cindex highlighting
3371 This variable controls whether Emacs uses inverse video for all text
3372 on the screen. Non-@code{nil} means yes, @code{nil} means no. The
3373 default is @code{nil}.
3374 @end defopt
3375
3376 @defopt mode-line-inverse-video
3377 This variable controls the use of inverse video for mode lines and menu
3378 bars. If it is non-@code{nil}, then these lines are displayed in
3379 inverse video. Otherwise, these lines are displayed normally, just like
3380 other text. The default is @code{t}.
3381
3382 For window frames, this feature actually applies the face named
3383 @code{mode-line}; that face is normally set up as the inverse of the
3384 default face, unless you change it.
3385 @end defopt
3386
3387 @node Usual Display
3388 @section Usual Display Conventions
3389
3390 The usual display conventions define how to display each character
3391 code. You can override these conventions by setting up a display table
3392 (@pxref{Display Tables}). Here are the usual display conventions:
3393
3394 @itemize @bullet
3395 @item
3396 Character codes 32 through 126 map to glyph codes 32 through 126.
3397 Normally this means they display as themselves.
3398
3399 @item
3400 Character code 9 is a horizontal tab. It displays as whitespace
3401 up to a position determined by @code{tab-width}.
3402
3403 @item
3404 Character code 10 is a newline.
3405
3406 @item
3407 All other codes in the range 0 through 31, and code 127, display in one
3408 of two ways according to the value of @code{ctl-arrow}. If it is
3409 non-@code{nil}, these codes map to sequences of two glyphs, where the
3410 first glyph is the @sc{ascii} code for @samp{^}. (A display table can
3411 specify a glyph to use instead of @samp{^}.) Otherwise, these codes map
3412 just like the codes in the range 128 to 255.
3413
3414 On MS-DOS terminals, Emacs arranges by default for the character code
3415 127 to be mapped to the glyph code 127, which normally displays as an
3416 empty polygon. This glyph is used to display non-@sc{ascii} characters
3417 that the MS-DOS terminal doesn't support. @xref{MS-DOS and MULE,,,
3418 emacs, The GNU Emacs Manual}.
3419
3420 @item
3421 Character codes 128 through 255 map to sequences of four glyphs, where
3422 the first glyph is the @sc{ascii} code for @samp{\}, and the others are
3423 digit characters representing the character code in octal. (A display
3424 table can specify a glyph to use instead of @samp{\}.)
3425
3426 @item
3427 Multibyte character codes above 256 are displayed as themselves, or as a
3428 question mark or empty box if the terminal cannot display that
3429 character.
3430 @end itemize
3431
3432 The usual display conventions apply even when there is a display
3433 table, for any character whose entry in the active display table is
3434 @code{nil}. Thus, when you set up a display table, you need only
3435 specify the characters for which you want special behavior.
3436
3437 These display rules apply to carriage return (character code 13), when
3438 it appears in the buffer. But that character may not appear in the
3439 buffer where you expect it, if it was eliminated as part of end-of-line
3440 conversion (@pxref{Coding System Basics}).
3441
3442 These variables affect the way certain characters are displayed on the
3443 screen. Since they change the number of columns the characters occupy,
3444 they also affect the indentation functions. These variables also affect
3445 how the mode line is displayed; if you want to force redisplay of the
3446 mode line using the new values, call the function
3447 @code{force-mode-line-update} (@pxref{Mode Line Format}).
3448
3449 @defopt ctl-arrow
3450 @cindex control characters in display
3451 This buffer-local variable controls how control characters are
3452 displayed. If it is non-@code{nil}, they are displayed as a caret
3453 followed by the character: @samp{^A}. If it is @code{nil}, they are
3454 displayed as a backslash followed by three octal digits: @samp{\001}.
3455 @end defopt
3456
3457 @c Following may have overfull hbox.
3458 @defvar default-ctl-arrow
3459 The value of this variable is the default value for @code{ctl-arrow} in
3460 buffers that do not override it. @xref{Default Value}.
3461 @end defvar
3462
3463 @defopt indicate-empty-lines
3464 @tindex indicate-empty-lines
3465 @cindex fringes, and empty line indication
3466 When this is non-@code{nil}, Emacs displays a special glyph in the
3467 fringe of each empty line at the end of the buffer, on terminals that
3468 support it (window systems). @xref{Fringes}.
3469 @end defopt
3470
3471 @defopt tab-width
3472 The value of this variable is the spacing between tab stops used for
3473 displaying tab characters in Emacs buffers. The value is in units of
3474 columns, and the default is 8. Note that this feature is completely
3475 independent of the user-settable tab stops used by the command
3476 @code{tab-to-tab-stop}. @xref{Indent Tabs}.
3477 @end defopt
3478
3479 @node Display Tables
3480 @section Display Tables
3481
3482 @cindex display table
3483 You can use the @dfn{display table} feature to control how all possible
3484 character codes display on the screen. This is useful for displaying
3485 European languages that have letters not in the @sc{ascii} character
3486 set.
3487
3488 The display table maps each character code into a sequence of
3489 @dfn{glyphs}, each glyph being a graphic that takes up one character
3490 position on the screen. You can also define how to display each glyph
3491 on your terminal, using the @dfn{glyph table}.
3492
3493 Display tables affect how the mode line is displayed; if you want to
3494 force redisplay of the mode line using a new display table, call
3495 @code{force-mode-line-update} (@pxref{Mode Line Format}).
3496
3497 @menu
3498 * Display Table Format:: What a display table consists of.
3499 * Active Display Table:: How Emacs selects a display table to use.
3500 * Glyphs:: How to define a glyph, and what glyphs mean.
3501 @end menu
3502
3503 @node Display Table Format
3504 @subsection Display Table Format
3505
3506 A display table is actually a char-table (@pxref{Char-Tables}) with
3507 @code{display-table} as its subtype.
3508
3509 @defun make-display-table
3510 This creates and returns a display table. The table initially has
3511 @code{nil} in all elements.
3512 @end defun
3513
3514 The ordinary elements of the display table are indexed by character
3515 codes; the element at index @var{c} says how to display the character
3516 code @var{c}. The value should be @code{nil} or a vector of glyph
3517 values (@pxref{Glyphs}). If an element is @code{nil}, it says to
3518 display that character according to the usual display conventions
3519 (@pxref{Usual Display}).
3520
3521 If you use the display table to change the display of newline
3522 characters, the whole buffer will be displayed as one long ``line.''
3523
3524 The display table also has six ``extra slots'' which serve special
3525 purposes. Here is a table of their meanings; @code{nil} in any slot
3526 means to use the default for that slot, as stated below.
3527
3528 @table @asis
3529 @item 0
3530 The glyph for the end of a truncated screen line (the default for this
3531 is @samp{$}). @xref{Glyphs}. Newer Emacs versions, on some platforms,
3532 display arrows to indicate truncation---the display table has no effect
3533 in these situations.
3534 @item 1
3535 The glyph for the end of a continued line (the default is @samp{\}).
3536 Newer Emacs versions, on some platforms, display curved arrows to
3537 indicate truncation---the display table has no effect in these
3538 situations.
3539 @item 2
3540 The glyph for indicating a character displayed as an octal character
3541 code (the default is @samp{\}).
3542 @item 3
3543 The glyph for indicating a control character (the default is @samp{^}).
3544 @item 4
3545 A vector of glyphs for indicating the presence of invisible lines (the
3546 default is @samp{...}). @xref{Selective Display}.
3547 @item 5
3548 The glyph used to draw the border between side-by-side windows (the
3549 default is @samp{|}). @xref{Splitting Windows}. This takes effect only
3550 when there are no scroll bars; if scroll bars are supported and in use,
3551 a scroll bar separates the two windows.
3552 @end table
3553
3554 For example, here is how to construct a display table that mimics the
3555 effect of setting @code{ctl-arrow} to a non-@code{nil} value:
3556
3557 @example
3558 (setq disptab (make-display-table))
3559 (let ((i 0))
3560 (while (< i 32)
3561 (or (= i ?\t) (= i ?\n)
3562 (aset disptab i (vector ?^ (+ i 64))))
3563 (setq i (1+ i)))
3564 (aset disptab 127 (vector ?^ ??)))
3565 @end example
3566
3567 @defun display-table-slot display-table slot
3568 This function returns the value of the extra slot @var{slot} of
3569 @var{display-table}. The argument @var{slot} may be a number from 0 to
3570 5 inclusive, or a slot name (symbol). Valid symbols are
3571 @code{truncation}, @code{wrap}, @code{escape}, @code{control},
3572 @code{selective-display}, and @code{vertical-border}.
3573 @end defun
3574
3575 @defun set-display-table-slot display-table slot value
3576 This function stores @var{value} in the extra slot @var{slot} of
3577 @var{display-table}. The argument @var{slot} may be a number from 0 to
3578 5 inclusive, or a slot name (symbol). Valid symbols are
3579 @code{truncation}, @code{wrap}, @code{escape}, @code{control},
3580 @code{selective-display}, and @code{vertical-border}.
3581 @end defun
3582
3583 @defun describe-display-table display-table
3584 @tindex describe-display-table
3585 This function displays a description of the display table
3586 @var{display-table} in a help buffer.
3587 @end defun
3588
3589 @deffn Command describe-current-display-table
3590 @tindex describe-current-display-table
3591 This command displays a description of the current display table in a
3592 help buffer.
3593 @end deffn
3594
3595 @node Active Display Table
3596 @subsection Active Display Table
3597 @cindex active display table
3598
3599 Each window can specify a display table, and so can each buffer. When
3600 a buffer @var{b} is displayed in window @var{w}, display uses the
3601 display table for window @var{w} if it has one; otherwise, the display
3602 table for buffer @var{b} if it has one; otherwise, the standard display
3603 table if any. The display table chosen is called the @dfn{active}
3604 display table.
3605
3606 @defun window-display-table window
3607 This function returns @var{window}'s display table, or @code{nil}
3608 if @var{window} does not have an assigned display table.
3609 @end defun
3610
3611 @defun set-window-display-table window table
3612 This function sets the display table of @var{window} to @var{table}.
3613 The argument @var{table} should be either a display table or
3614 @code{nil}.
3615 @end defun
3616
3617 @defvar buffer-display-table
3618 This variable is automatically buffer-local in all buffers; its value in
3619 a particular buffer specifies the display table for that buffer. If it
3620 is @code{nil}, that means the buffer does not have an assigned display
3621 table.
3622 @end defvar
3623
3624 @defvar standard-display-table
3625 This variable's value is the default display table, used whenever a
3626 window has no display table and neither does the buffer displayed in
3627 that window. This variable is @code{nil} by default.
3628 @end defvar
3629
3630 If there is no display table to use for a particular window---that is,
3631 if the window specifies none, its buffer specifies none, and
3632 @code{standard-display-table} is @code{nil}---then Emacs uses the usual
3633 display conventions for all character codes in that window. @xref{Usual
3634 Display}.
3635
3636 A number of functions for changing the standard display table
3637 are defined in the library @file{disp-table}.
3638
3639 @node Glyphs
3640 @subsection Glyphs
3641
3642 @cindex glyph
3643 A @dfn{glyph} is a generalization of a character; it stands for an
3644 image that takes up a single character position on the screen. Glyphs
3645 are represented in Lisp as integers, just as characters are. Normally
3646 Emacs finds glyphs in the display table (@pxref{Display Tables}).
3647
3648 A glyph can be @dfn{simple} or it can be defined by the @dfn{glyph
3649 table}. A simple glyph is just a way of specifying a character and a
3650 face to output it in. The glyph code for a simple glyph, mod 524288,
3651 is the character to output, and the glyph code divided by 524288
3652 specifies the face number (@pxref{Face Functions}) to use while
3653 outputting it. (524288 is
3654 @ifnottex
3655 2**19.)
3656 @end ifnottex
3657 @tex
3658 $2^{19}$.)
3659 @end tex
3660 @xref{Faces}.
3661
3662 On character terminals, you can set up a @dfn{glyph table} to define
3663 the meaning of glyph codes. The glyph codes is the value of the
3664 variable @code{glyph-table}.
3665
3666 @defvar glyph-table
3667 The value of this variable is the current glyph table. It should be a
3668 vector; the @var{g}th element defines glyph code @var{g}.
3669
3670 If a glyph code is greater than or equal to the length of the glyph
3671 table, that code is automatically simple. If the value of
3672 @code{glyph-table} is @code{nil} instead of a vector, then all glyphs
3673 are simple. The glyph table is not used on graphical displays, only
3674 on character terminals. On graphical displays, all glyphs are simple.
3675 @end defvar
3676
3677 Here are the possible types of elements in the glyph table:
3678
3679 @table @asis
3680 @item @var{string}
3681 Send the characters in @var{string} to the terminal to output
3682 this glyph. This alternative is available on character terminals,
3683 but not under a window system.
3684
3685 @item @var{integer}
3686 Define this glyph code as an alias for glyph code @var{integer}. You
3687 can use an alias to specify a face code for the glyph and use a small
3688 number as its code.
3689
3690 @item @code{nil}
3691 This glyph is simple.
3692 @end table
3693
3694 @defun create-glyph string
3695 @tindex create-glyph
3696 This function returns a newly-allocated glyph code which is set up to
3697 display by sending @var{string} to the terminal.
3698 @end defun
3699
3700 @node Beeping
3701 @section Beeping
3702 @cindex beeping
3703 @cindex bell
3704
3705 This section describes how to make Emacs ring the bell (or blink the
3706 screen) to attract the user's attention. Be conservative about how
3707 often you do this; frequent bells can become irritating. Also be
3708 careful not to use just beeping when signaling an error is more
3709 appropriate. (@xref{Errors}.)
3710
3711 @defun ding &optional do-not-terminate
3712 @cindex keyboard macro termination
3713 This function beeps, or flashes the screen (see @code{visible-bell} below).
3714 It also terminates any keyboard macro currently executing unless
3715 @var{do-not-terminate} is non-@code{nil}.
3716 @end defun
3717
3718 @defun beep &optional do-not-terminate
3719 This is a synonym for @code{ding}.
3720 @end defun
3721
3722 @defopt visible-bell
3723 This variable determines whether Emacs should flash the screen to
3724 represent a bell. Non-@code{nil} means yes, @code{nil} means no. This
3725 is effective on a window system, and on a character-only terminal
3726 provided the terminal's Termcap entry defines the visible bell
3727 capability (@samp{vb}).
3728 @end defopt
3729
3730 @defvar ring-bell-function
3731 If this is non-@code{nil}, it specifies how Emacs should ``ring the
3732 bell.'' Its value should be a function of no arguments. If this is
3733 non-@code{nil}, it takes precedence over the @code{visible-bell}
3734 variable.
3735 @end defvar
3736
3737 @node Window Systems
3738 @section Window Systems
3739
3740 Emacs works with several window systems, most notably the X Window
3741 System. Both Emacs and X use the term ``window'', but use it
3742 differently. An Emacs frame is a single window as far as X is
3743 concerned; the individual Emacs windows are not known to X at all.
3744
3745 @defvar window-system
3746 This variable tells Lisp programs what window system Emacs is running
3747 under. The possible values are
3748
3749 @table @code
3750 @item x
3751 @cindex X Window System
3752 Emacs is displaying using X.
3753 @item pc
3754 Emacs is displaying using MS-DOS.
3755 @item w32
3756 Emacs is displaying using Windows.
3757 @item mac
3758 Emacs is displaying using a Macintosh.
3759 @item nil
3760 Emacs is using a character-based terminal.
3761 @end table
3762 @end defvar
3763
3764 @defvar window-setup-hook
3765 This variable is a normal hook which Emacs runs after handling the
3766 initialization files. Emacs runs this hook after it has completed
3767 loading your init file, the default initialization file (if
3768 any), and the terminal-specific Lisp code, and running the hook
3769 @code{term-setup-hook}.
3770
3771 This hook is used for internal purposes: setting up communication with
3772 the window system, and creating the initial window. Users should not
3773 interfere with it.
3774 @end defvar
3775
3776 @ignore
3777 arch-tag: ffdf5714-7ecf-415b-9023-fbc6b409c2c6
3778 @end ignore