annotate lispref/internals.texi @ 49506:ac9e2eeeb03d

New format of AUTHORS file; list each author name once followed by contributed and changed files. Improve selection of entries to include in list, and generate list of unrecognized entries indicating syntax errors in ChangeLog files. (authors-coding-system): New variable. (authors-many-files): Update doc string. (authors-aliases): Change format. Now one entry with multiple aliases per author. (authors-valid-file-names, authors-renamed-files-alist) (authors-renamed-files-regexps): New variables. (authors-canonical-file-name): New function. Validates that file exists or occurs in one of the above lists. Record unrecognized file names in global authors-invalid-file-names list. (authors-add): Change to record per-change counts. (authors-canonical-author-name): Handle new format of authors-aliases list. (authors-scan-change-log): Rename FILE arg to LOG-FILE. Change doc string to describe new entry format. Only add author entries for valid file names. (authors-print): Replace by authors-add-to-author-list. (authors-add-to-author-list): New function which reorders per-file entries and adds them to global authors-author-list. (authors): Instead of authors-print to insert in *Authors* buffer, use authors-add-to-author-list to reorder the list and then insert result in *Authors* buffer with new format. Generate *Authors Errors* compilation-mode buffer listing unrecognized ChangeLog entries.
author Kim F. Storm <storm@cua.dk>
date Wed, 29 Jan 2003 00:13:11 +0000
parents bfdd0deae843
children 5a24a10b0246 d7ddb3e565de
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1 @c -*-texinfo-*-
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2 @c This is part of the GNU Emacs Lisp Reference Manual.
27189
d2e5f1b7d8e2 Update copyrights.
Gerd Moellmann <gerd@gnu.org>
parents: 26783
diff changeset
3 @c Copyright (C) 1990, 1991, 1992, 1993, 1998, 1999
48261
f31837228578 Added two references from Buffer Internals to Buffer Gap.
Francesco Potortì <pot@gnu.org>
parents: 42282
diff changeset
4 @c Free Software Foundation, Inc.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
5 @c See the file elisp.texi for copying conditions.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
6 @setfilename ../info/internals
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
7 @node GNU Emacs Internals, Standard Errors, Tips, Top
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
8 @comment node-name, next, previous, up
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
9 @appendix GNU Emacs Internals
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
10
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
11 This chapter describes how the runnable Emacs executable is dumped with
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
12 the preloaded Lisp libraries in it, how storage is allocated, and some
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
13 internal aspects of GNU Emacs that may be of interest to C programmers.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
14
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
15 @menu
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
16 * Building Emacs:: How to the dumped Emacs is made.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
17 * Pure Storage:: A kludge to make preloaded Lisp functions sharable.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
18 * Garbage Collection:: Reclaiming space for Lisp objects no longer used.
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
19 * Memory Usage:: Info about total size of Lisp objects made so far.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
20 * Writing Emacs Primitives:: Writing C code for Emacs.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
21 * Object Internals:: Data formats of buffers, windows, processes.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
22 @end menu
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
23
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
24 @node Building Emacs
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
25 @appendixsec Building Emacs
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
26 @cindex building Emacs
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
27 @pindex temacs
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
28
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
29 This section explains the steps involved in building the Emacs
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
30 executable. You don't have to know this material to build and install
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
31 Emacs, since the makefiles do all these things automatically. This
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
32 information is pertinent to Emacs maintenance.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
33
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
34 Compilation of the C source files in the @file{src} directory
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
35 produces an executable file called @file{temacs}, also called a
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
36 @dfn{bare impure Emacs}. It contains the Emacs Lisp interpreter and I/O
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
37 routines, but not the editing commands.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
38
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
39 @cindex @file{loadup.el}
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
40 The command @w{@samp{temacs -l loadup}} uses @file{temacs} to create
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
41 the real runnable Emacs executable. These arguments direct
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
42 @file{temacs} to evaluate the Lisp files specified in the file
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
43 @file{loadup.el}. These files set up the normal Emacs editing
7601
c5927c75b2b5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7086
diff changeset
44 environment, resulting in an Emacs that is still impure but no longer
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
45 bare.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
46
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
47 It takes a substantial time to load the standard Lisp files. Luckily,
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
48 you don't have to do this each time you run Emacs; @file{temacs} can
7601
c5927c75b2b5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7086
diff changeset
49 dump out an executable program called @file{emacs} that has these files
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
50 preloaded. @file{emacs} starts more quickly because it does not need to
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
51 load the files. This is the Emacs executable that is normally
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
52 installed.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
53
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
54 To create @file{emacs}, use the command @samp{temacs -batch -l loadup
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
55 dump}. The purpose of @samp{-batch} here is to prevent @file{temacs}
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
56 from trying to initialize any of its data on the terminal; this ensures
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
57 that the tables of terminal information are empty in the dumped Emacs.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
58 The argument @samp{dump} tells @file{loadup.el} to dump a new executable
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
59 named @file{emacs}.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
60
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
61 Some operating systems don't support dumping. On those systems, you
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
62 must start Emacs with the @samp{temacs -l loadup} command each time you
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
63 use it. This takes a substantial time, but since you need to start
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
64 Emacs once a day at most---or once a week if you never log out---the
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
65 extra time is not too severe a problem.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
66
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
67 @cindex @file{site-load.el}
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
68
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
69 You can specify additional files to preload by writing a library named
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
70 @file{site-load.el} that loads them. You may need to add a definition
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
71
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
72 @example
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
73 #define SITELOAD_PURESIZE_EXTRA @var{n}
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
74 @end example
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
75
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
76 @noindent
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
77 to make @var{n} added bytes of pure space to hold the additional files.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
78 (Try adding increments of 20000 until it is big enough.) However, the
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
79 advantage of preloading additional files decreases as machines get
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
80 faster. On modern machines, it is usually not advisable.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
81
14514
2f15f316326d Clarify site-load.el vs site-init.el and how to deal with doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
82 After @file{loadup.el} reads @file{site-load.el}, it finds the
2f15f316326d Clarify site-load.el vs site-init.el and how to deal with doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
83 documentation strings for primitive and preloaded functions (and
2f15f316326d Clarify site-load.el vs site-init.el and how to deal with doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
84 variables) in the file @file{etc/DOC} where they are stored, by calling
2f15f316326d Clarify site-load.el vs site-init.el and how to deal with doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
85 @code{Snarf-documentation} (@pxref{Accessing Documentation}).
2f15f316326d Clarify site-load.el vs site-init.el and how to deal with doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
86
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
87 @cindex @file{site-init.el}
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
88 You can specify other Lisp expressions to execute just before dumping
14514
2f15f316326d Clarify site-load.el vs site-init.el and how to deal with doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
89 by putting them in a library named @file{site-init.el}. This file is
2f15f316326d Clarify site-load.el vs site-init.el and how to deal with doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
90 executed after the documentation strings are found.
2f15f316326d Clarify site-load.el vs site-init.el and how to deal with doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
91
2f15f316326d Clarify site-load.el vs site-init.el and how to deal with doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
92 If you want to preload function or variable definitions, there are
2f15f316326d Clarify site-load.el vs site-init.el and how to deal with doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
93 three ways you can do this and make their documentation strings
2f15f316326d Clarify site-load.el vs site-init.el and how to deal with doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
94 accessible when you subsequently run Emacs:
2f15f316326d Clarify site-load.el vs site-init.el and how to deal with doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
95
2f15f316326d Clarify site-load.el vs site-init.el and how to deal with doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
96 @itemize @bullet
2f15f316326d Clarify site-load.el vs site-init.el and how to deal with doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
97 @item
2f15f316326d Clarify site-load.el vs site-init.el and how to deal with doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
98 Arrange to scan these files when producing the @file{etc/DOC} file,
2f15f316326d Clarify site-load.el vs site-init.el and how to deal with doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
99 and load them with @file{site-load.el}.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
100
14514
2f15f316326d Clarify site-load.el vs site-init.el and how to deal with doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
101 @item
2f15f316326d Clarify site-load.el vs site-init.el and how to deal with doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
102 Load the files with @file{site-init.el}, then copy the files into the
2f15f316326d Clarify site-load.el vs site-init.el and how to deal with doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
103 installation directory for Lisp files when you install Emacs.
2f15f316326d Clarify site-load.el vs site-init.el and how to deal with doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
104
2f15f316326d Clarify site-load.el vs site-init.el and how to deal with doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
105 @item
2f15f316326d Clarify site-load.el vs site-init.el and how to deal with doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
106 Specify a non-@code{nil} value for
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
107 @code{byte-compile-dynamic-docstrings} as a local variable in each of these
14514
2f15f316326d Clarify site-load.el vs site-init.el and how to deal with doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
108 files, and load them with either @file{site-load.el} or
2f15f316326d Clarify site-load.el vs site-init.el and how to deal with doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
109 @file{site-init.el}. (This method has the drawback that the
2f15f316326d Clarify site-load.el vs site-init.el and how to deal with doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
110 documentation strings take up space in Emacs all the time.)
2f15f316326d Clarify site-load.el vs site-init.el and how to deal with doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
111 @end itemize
2f15f316326d Clarify site-load.el vs site-init.el and how to deal with doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
112
2f15f316326d Clarify site-load.el vs site-init.el and how to deal with doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
113 It is not advisable to put anything in @file{site-load.el} or
2f15f316326d Clarify site-load.el vs site-init.el and how to deal with doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
114 @file{site-init.el} that would alter any of the features that users
2f15f316326d Clarify site-load.el vs site-init.el and how to deal with doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
115 expect in an ordinary unmodified Emacs. If you feel you must override
2f15f316326d Clarify site-load.el vs site-init.el and how to deal with doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
116 normal features for your site, do it with @file{default.el}, so that
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
117 users can override your changes if they wish. @xref{Startup Summary}.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
118
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
119 @defun dump-emacs to-file from-file
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
120 @cindex unexec
18413
487c3d3c2283 dump-emacs works only with -batch.
Richard M. Stallman <rms@gnu.org>
parents: 16736
diff changeset
121 This function dumps the current state of Emacs into an executable file
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
122 @var{to-file}. It takes symbols from @var{from-file} (this is normally
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
123 the executable file @file{temacs}).
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
124
18413
487c3d3c2283 dump-emacs works only with -batch.
Richard M. Stallman <rms@gnu.org>
parents: 16736
diff changeset
125 If you want to use this function in an Emacs that was already dumped,
487c3d3c2283 dump-emacs works only with -batch.
Richard M. Stallman <rms@gnu.org>
parents: 16736
diff changeset
126 you must run Emacs with @samp{-batch}.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
127 @end defun
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
128
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
129 @node Pure Storage
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
130 @appendixsec Pure Storage
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
131 @cindex pure storage
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
132
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
133 Emacs Lisp uses two kinds of storage for user-created Lisp objects:
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
134 @dfn{normal storage} and @dfn{pure storage}. Normal storage is where
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
135 all the new data created during an Emacs session are kept; see the
7601
c5927c75b2b5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7086
diff changeset
136 following section for information on normal storage. Pure storage is
c5927c75b2b5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7086
diff changeset
137 used for certain data in the preloaded standard Lisp files---data that
c5927c75b2b5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7086
diff changeset
138 should never change during actual use of Emacs.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
139
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
140 Pure storage is allocated only while @file{temacs} is loading the
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
141 standard preloaded Lisp libraries. In the file @file{emacs}, it is
7601
c5927c75b2b5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7086
diff changeset
142 marked as read-only (on operating systems that permit this), so that
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
143 the memory space can be shared by all the Emacs jobs running on the
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
144 machine at once. Pure storage is not expandable; a fixed amount is
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
145 allocated when Emacs is compiled, and if that is not sufficient for the
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
146 preloaded libraries, @file{temacs} crashes. If that happens, you must
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
147 increase the compilation parameter @code{PURESIZE} in the file
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
148 @file{src/puresize.h}. This normally won't happen unless you try to
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
149 preload additional libraries or add features to the standard ones.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
150
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
151 @defun purecopy object
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
152 This function makes a copy in pure storage of @var{object}, and returns
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
153 it. It copies a string by simply making a new string with the same
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
154 characters in pure storage. It recursively copies the contents of
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
155 vectors and cons cells. It does not make copies of other objects such
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
156 as symbols, but just returns them unchanged. It signals an error if
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
157 asked to copy markers.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
158
11139
311f3ea4a759 Minor purecopy correction.
Richard M. Stallman <rms@gnu.org>
parents: 10487
diff changeset
159 This function is a no-op except while Emacs is being built and dumped;
311f3ea4a759 Minor purecopy correction.
Richard M. Stallman <rms@gnu.org>
parents: 10487
diff changeset
160 it is usually called only in the file @file{emacs/lisp/loaddefs.el}, but
311f3ea4a759 Minor purecopy correction.
Richard M. Stallman <rms@gnu.org>
parents: 10487
diff changeset
161 a few packages call it just in case you decide to preload them.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
162 @end defun
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
163
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
164 @defvar pure-bytes-used
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
165 The value of this variable is the number of bytes of pure storage
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
166 allocated so far. Typically, in a dumped Emacs, this number is very
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
167 close to the total amount of pure storage available---if it were not,
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
168 we would preallocate less.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
169 @end defvar
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
170
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
171 @defvar purify-flag
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
172 This variable determines whether @code{defun} should make a copy of the
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
173 function definition in pure storage. If it is non-@code{nil}, then the
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
174 function definition is copied into pure storage.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
175
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
176 This flag is @code{t} while loading all of the basic functions for
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
177 building Emacs initially (allowing those functions to be sharable and
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
178 non-collectible). Dumping Emacs as an executable always writes
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
179 @code{nil} in this variable, regardless of the value it actually has
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
180 before and after dumping.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
181
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
182 You should not change this flag in a running Emacs.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
183 @end defvar
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
184
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
185 @node Garbage Collection
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
186 @appendixsec Garbage Collection
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
187 @cindex garbage collector
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
188
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
189 @cindex memory allocation
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
190 When a program creates a list or the user defines a new function (such
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
191 as by loading a library), that data is placed in normal storage. If
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
192 normal storage runs low, then Emacs asks the operating system to
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
193 allocate more memory in blocks of 1k bytes. Each block is used for one
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
194 type of Lisp object, so symbols, cons cells, markers, etc., are
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
195 segregated in distinct blocks in memory. (Vectors, long strings,
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
196 buffers and certain other editing types, which are fairly large, are
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
197 allocated in individual blocks, one per object, while small strings are
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
198 packed into blocks of 8k bytes.)
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
199
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
200 It is quite common to use some storage for a while, then release it by
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
201 (for example) killing a buffer or deleting the last pointer to an
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
202 object. Emacs provides a @dfn{garbage collector} to reclaim this
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
203 abandoned storage. (This name is traditional, but ``garbage recycler''
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
204 might be a more intuitive metaphor for this facility.)
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
205
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
206 The garbage collector operates by finding and marking all Lisp objects
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
207 that are still accessible to Lisp programs. To begin with, it assumes
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
208 all the symbols, their values and associated function definitions, and
7601
c5927c75b2b5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7086
diff changeset
209 any data presently on the stack, are accessible. Any objects that can
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
210 be reached indirectly through other accessible objects are also
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
211 accessible.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
212
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
213 When marking is finished, all objects still unmarked are garbage. No
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
214 matter what the Lisp program or the user does, it is impossible to refer
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
215 to them, since there is no longer a way to reach them. Their space
7601
c5927c75b2b5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7086
diff changeset
216 might as well be reused, since no one will miss them. The second
c5927c75b2b5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7086
diff changeset
217 (``sweep'') phase of the garbage collector arranges to reuse them.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
218
27332
5cfe77eaff45 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 27189
diff changeset
219 @c ??? Maybe add something describing weak hash tables here?
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
220
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
221 @cindex free list
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
222 The sweep phase puts unused cons cells onto a @dfn{free list}
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
223 for future allocation; likewise for symbols and markers. It compacts
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
224 the accessible strings so they occupy fewer 8k blocks; then it frees the
7601
c5927c75b2b5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7086
diff changeset
225 other 8k blocks. Vectors, buffers, windows, and other large objects are
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
226 individually allocated and freed using @code{malloc} and @code{free}.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
227
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
228 @cindex CL note---allocate more storage
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
229 @quotation
7601
c5927c75b2b5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7086
diff changeset
230 @b{Common Lisp note:} Unlike other Lisps, GNU Emacs Lisp does not
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
231 call the garbage collector when the free list is empty. Instead, it
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
232 simply requests the operating system to allocate more storage, and
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
233 processing continues until @code{gc-cons-threshold} bytes have been
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
234 used.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
235
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
236 This means that you can make sure that the garbage collector will not
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
237 run during a certain portion of a Lisp program by calling the garbage
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
238 collector explicitly just before it (provided that portion of the
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
239 program does not use so much space as to force a second garbage
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
240 collection).
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
241 @end quotation
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
242
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
243 @deffn Command garbage-collect
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
244 This command runs a garbage collection, and returns information on
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
245 the amount of space in use. (Garbage collection can also occur
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
246 spontaneously if you use more than @code{gc-cons-threshold} bytes of
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
247 Lisp data since the previous garbage collection.)
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
248
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
249 @code{garbage-collect} returns a list containing the following
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
250 information:
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
251
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
252 @example
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
253 @group
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
254 ((@var{used-conses} . @var{free-conses})
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
255 (@var{used-syms} . @var{free-syms})
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
256 @end group
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
257 (@var{used-miscs} . @var{free-miscs})
39201
534f7d0b195c (Garbage Collection): Document the used and free
Eli Zaretskii <eliz@gnu.org>
parents: 33340
diff changeset
258 @var{used-string-chars}
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
259 @var{used-vector-slots}
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18413
diff changeset
260 (@var{used-floats} . @var{free-floats})
39201
534f7d0b195c (Garbage Collection): Document the used and free
Eli Zaretskii <eliz@gnu.org>
parents: 33340
diff changeset
261 (@var{used-intervals} . @var{free-intervals})
534f7d0b195c (Garbage Collection): Document the used and free
Eli Zaretskii <eliz@gnu.org>
parents: 33340
diff changeset
262 (@var{used-strings} . @var{free-strings}))
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
263 @end example
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
264
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
265 Here is an example:
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
266
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
267 @example
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
268 @group
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
269 (garbage-collect)
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18413
diff changeset
270 @result{} ((106886 . 13184) (9769 . 0)
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18413
diff changeset
271 (7731 . 4651) 347543 121628
39201
534f7d0b195c (Garbage Collection): Document the used and free
Eli Zaretskii <eliz@gnu.org>
parents: 33340
diff changeset
272 (31 . 94) (1273 . 168)
534f7d0b195c (Garbage Collection): Document the used and free
Eli Zaretskii <eliz@gnu.org>
parents: 33340
diff changeset
273 (25474 . 3569))
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
274 @end group
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
275 @end example
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
276
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
277 Here is a table explaining each element:
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
278
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
279 @table @var
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
280 @item used-conses
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
281 The number of cons cells in use.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
282
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
283 @item free-conses
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
284 The number of cons cells for which space has been obtained from the
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
285 operating system, but that are not currently being used.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
286
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
287 @item used-syms
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
288 The number of symbols in use.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
289
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
290 @item free-syms
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
291 The number of symbols for which space has been obtained from the
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
292 operating system, but that are not currently being used.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
293
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
294 @item used-miscs
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
295 The number of miscellaneous objects in use. These include markers and
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
296 overlays, plus certain objects not visible to users.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
297
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
298 @item free-miscs
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
299 The number of miscellaneous objects for which space has been obtained
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
300 from the operating system, but that are not currently being used.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
301
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
302 @item used-string-chars
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
303 The total size of all strings, in characters.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
304
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
305 @item used-vector-slots
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
306 The total number of elements of existing vectors.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
307
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
308 @item used-floats
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
309 @c Emacs 19 feature
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
310 The number of floats in use.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
311
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
312 @item free-floats
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
313 @c Emacs 19 feature
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
314 The number of floats for which space has been obtained from the
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
315 operating system, but that are not currently being used.
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
316
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
317 @item used-intervals
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
318 The number of intervals in use. Intervals are an internal
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
319 data structure used for representing text properties.
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
320
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
321 @item free-intervals
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
322 The number of intervals for which space has been obtained
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
323 from the operating system, but that are not currently being used.
39201
534f7d0b195c (Garbage Collection): Document the used and free
Eli Zaretskii <eliz@gnu.org>
parents: 33340
diff changeset
324
534f7d0b195c (Garbage Collection): Document the used and free
Eli Zaretskii <eliz@gnu.org>
parents: 33340
diff changeset
325 @item used-strings
534f7d0b195c (Garbage Collection): Document the used and free
Eli Zaretskii <eliz@gnu.org>
parents: 33340
diff changeset
326 The number of strings in use.
534f7d0b195c (Garbage Collection): Document the used and free
Eli Zaretskii <eliz@gnu.org>
parents: 33340
diff changeset
327
534f7d0b195c (Garbage Collection): Document the used and free
Eli Zaretskii <eliz@gnu.org>
parents: 33340
diff changeset
328 @item free-strings
534f7d0b195c (Garbage Collection): Document the used and free
Eli Zaretskii <eliz@gnu.org>
parents: 33340
diff changeset
329 The number of string headers for which the space was obtained from the
534f7d0b195c (Garbage Collection): Document the used and free
Eli Zaretskii <eliz@gnu.org>
parents: 33340
diff changeset
330 operating system, but which are currently not in use. (A string
534f7d0b195c (Garbage Collection): Document the used and free
Eli Zaretskii <eliz@gnu.org>
parents: 33340
diff changeset
331 object consists of a header and the storage for the string text
534f7d0b195c (Garbage Collection): Document the used and free
Eli Zaretskii <eliz@gnu.org>
parents: 33340
diff changeset
332 itself; the latter is only allocated when the string is created.)
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
333 @end table
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
334 @end deffn
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
335
15769
43d4b9cf0b69 Describe garbage-collection-messages.
Richard M. Stallman <rms@gnu.org>
parents: 14514
diff changeset
336 @defopt garbage-collection-messages
43d4b9cf0b69 Describe garbage-collection-messages.
Richard M. Stallman <rms@gnu.org>
parents: 14514
diff changeset
337 If this variable is non-@code{nil}, Emacs displays a message at the
43d4b9cf0b69 Describe garbage-collection-messages.
Richard M. Stallman <rms@gnu.org>
parents: 14514
diff changeset
338 beginning and end of garbage collection. The default value is
43d4b9cf0b69 Describe garbage-collection-messages.
Richard M. Stallman <rms@gnu.org>
parents: 14514
diff changeset
339 @code{nil}, meaning there are no such messages.
43d4b9cf0b69 Describe garbage-collection-messages.
Richard M. Stallman <rms@gnu.org>
parents: 14514
diff changeset
340 @end defopt
43d4b9cf0b69 Describe garbage-collection-messages.
Richard M. Stallman <rms@gnu.org>
parents: 14514
diff changeset
341
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
342 @defopt gc-cons-threshold
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
343 The value of this variable is the number of bytes of storage that must
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
344 be allocated for Lisp objects after one garbage collection in order to
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
345 trigger another garbage collection. A cons cell counts as eight bytes,
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
346 a string as one byte per character plus a few bytes of overhead, and so
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
347 on; space allocated to the contents of buffers does not count. Note
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
348 that the subsequent garbage collection does not happen immediately when
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
349 the threshold is exhausted, but only the next time the Lisp evaluator is
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
350 called.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
351
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18413
diff changeset
352 The initial threshold value is 400,000. If you specify a larger
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
353 value, garbage collection will happen less often. This reduces the
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
354 amount of time spent garbage collecting, but increases total memory use.
7601
c5927c75b2b5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7086
diff changeset
355 You may want to do this when running a program that creates lots of
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
356 Lisp data.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
357
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
358 You can make collections more frequent by specifying a smaller value,
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
359 down to 10,000. A value less than 10,000 will remain in effect only
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
360 until the subsequent garbage collection, at which time
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
361 @code{garbage-collect} will set the threshold back to 10,000.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
362 @end defopt
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
363
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
364 The value return by @code{garbage-collect} describes the amount of
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
365 memory used by Lisp data, broken down by data type. By contrast, the
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
366 function @code{memory-limit} provides information on the total amount of
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
367 memory Emacs is currently using.
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
368
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
369 @c Emacs 19 feature
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
370 @defun memory-limit
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
371 This function returns the address of the last byte Emacs has allocated,
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
372 divided by 1024. We divide the value by 1024 to make sure it fits in a
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
373 Lisp integer.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
374
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
375 You can use this to get a general idea of how your actions affect the
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
376 memory usage.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
377 @end defun
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
378
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
379 @node Memory Usage
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
380 @section Memory Usage
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
381
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
382 These functions and variables give information about the total amount
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
383 of memory allocation that Emacs has done, broken down by data type.
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
384 Note the difference between these and the values returned by
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
385 @code{(garbage-collect)}; those count objects that currently exist, but
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
386 these count the number or size of all allocations, including those for
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
387 objects that have since been freed.
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
388
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
389 @defvar cons-cells-consed
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
390 The total number of cons cells that have been allocated so far
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
391 in this Emacs session.
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
392 @end defvar
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
393
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
394 @defvar floats-consed
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
395 The total number of floats that have been allocated so far
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
396 in this Emacs session.
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
397 @end defvar
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
398
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
399 @defvar vector-cells-consed
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
400 The total number of vector cells that have been allocated so far
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
401 in this Emacs session.
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
402 @end defvar
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
403
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
404 @defvar symbols-consed
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
405 The total number of symbols that have been allocated so far
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
406 in this Emacs session.
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
407 @end defvar
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
408
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
409 @defvar string-chars-consed
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
410 The total number of string characters that have been allocated so far
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
411 in this Emacs session.
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
412 @end defvar
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
413
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
414 @defvar misc-objects-consed
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
415 The total number of miscellaneous objects that have been allocated so
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
416 far in this Emacs session. These include markers and overlays, plus
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
417 certain objects not visible to users.
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
418 @end defvar
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
419
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
420 @defvar intervals-consed
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
421 The total number of intervals that have been allocated so far
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
422 in this Emacs session.
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
423 @end defvar
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
424
39201
534f7d0b195c (Garbage Collection): Document the used and free
Eli Zaretskii <eliz@gnu.org>
parents: 33340
diff changeset
425 @defvar strings-consed
534f7d0b195c (Garbage Collection): Document the used and free
Eli Zaretskii <eliz@gnu.org>
parents: 33340
diff changeset
426 The total number of strings that have been allocated so far in this
534f7d0b195c (Garbage Collection): Document the used and free
Eli Zaretskii <eliz@gnu.org>
parents: 33340
diff changeset
427 Emacs session.
534f7d0b195c (Garbage Collection): Document the used and free
Eli Zaretskii <eliz@gnu.org>
parents: 33340
diff changeset
428 @end defvar
534f7d0b195c (Garbage Collection): Document the used and free
Eli Zaretskii <eliz@gnu.org>
parents: 33340
diff changeset
429
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
430 @node Writing Emacs Primitives
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
431 @appendixsec Writing Emacs Primitives
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
432 @cindex primitive function internals
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
433
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
434 Lisp primitives are Lisp functions implemented in C. The details of
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
435 interfacing the C function so that Lisp can call it are handled by a few
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
436 C macros. The only way to really understand how to write new C code is
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
437 to read the source, but we can explain some things here.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
438
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
439 An example of a special form is the definition of @code{or}, from
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
440 @file{eval.c}. (An ordinary function would have the same general
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
441 appearance.)
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
442
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
443 @cindex garbage collection protection
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
444 @smallexample
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
445 @group
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
446 DEFUN ("or", For, Sor, 0, UNEVALLED, 0,
42282
301b9b704145 Document new doc string format.
Richard M. Stallman <rms@gnu.org>
parents: 39201
diff changeset
447 doc: /* Eval args until one of them yields non-nil, then return that value.
301b9b704145 Document new doc string format.
Richard M. Stallman <rms@gnu.org>
parents: 39201
diff changeset
448 The remaining args are not evalled at all.
301b9b704145 Document new doc string format.
Richard M. Stallman <rms@gnu.org>
parents: 39201
diff changeset
449 If all args return nil, return nil.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
450 @end group
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
451 @group
42282
301b9b704145 Document new doc string format.
Richard M. Stallman <rms@gnu.org>
parents: 39201
diff changeset
452 usage: (or CONDITIONS ...) */)
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
453 (args)
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
454 Lisp_Object args;
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
455 @{
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
456 register Lisp_Object val;
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
457 Lisp_Object args_left;
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
458 struct gcpro gcpro1;
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
459 @end group
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
460
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
461 @group
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
462 if (NILP (args))
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
463 return Qnil;
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
464
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
465 args_left = args;
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
466 GCPRO1 (args_left);
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
467 @end group
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
468
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
469 @group
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
470 do
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
471 @{
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
472 val = Feval (Fcar (args_left));
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
473 if (!NILP (val))
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
474 break;
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
475 args_left = Fcdr (args_left);
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
476 @}
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
477 while (!NILP (args_left));
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
478 @end group
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
479
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
480 @group
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
481 UNGCPRO;
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
482 return val;
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
483 @}
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
484 @end group
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
485 @end smallexample
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
486
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
487 Let's start with a precise explanation of the arguments to the
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
488 @code{DEFUN} macro. Here is a template for them:
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
489
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
490 @example
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
491 DEFUN (@var{lname}, @var{fname}, @var{sname}, @var{min}, @var{max}, @var{interactive}, @var{doc})
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
492 @end example
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
493
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
494 @table @var
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
495 @item lname
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
496 This is the name of the Lisp symbol to define as the function name; in
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
497 the example above, it is @code{or}.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
498
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
499 @item fname
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
500 This is the C function name for this function. This is
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
501 the name that is used in C code for calling the function. The name is,
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
502 by convention, @samp{F} prepended to the Lisp name, with all dashes
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
503 (@samp{-}) in the Lisp name changed to underscores. Thus, to call this
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
504 function from C code, call @code{For}. Remember that the arguments must
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
505 be of type @code{Lisp_Object}; various macros and functions for creating
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
506 values of type @code{Lisp_Object} are declared in the file
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
507 @file{lisp.h}.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
508
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
509 @item sname
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
510 This is a C variable name to use for a structure that holds the data for
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
511 the subr object that represents the function in Lisp. This structure
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
512 conveys the Lisp symbol name to the initialization routine that will
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
513 create the symbol and store the subr object as its definition. By
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
514 convention, this name is always @var{fname} with @samp{F} replaced with
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
515 @samp{S}.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
516
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
517 @item min
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
518 This is the minimum number of arguments that the function requires. The
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
519 function @code{or} allows a minimum of zero arguments.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
520
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
521 @item max
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
522 This is the maximum number of arguments that the function accepts, if
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
523 there is a fixed maximum. Alternatively, it can be @code{UNEVALLED},
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
524 indicating a special form that receives unevaluated arguments, or
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
525 @code{MANY}, indicating an unlimited number of evaluated arguments (the
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
526 equivalent of @code{&rest}). Both @code{UNEVALLED} and @code{MANY} are
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
527 macros. If @var{max} is a number, it may not be less than @var{min} and
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
528 it may not be greater than seven.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
529
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
530 @item interactive
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
531 This is an interactive specification, a string such as might be used as
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
532 the argument of @code{interactive} in a Lisp function. In the case of
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
533 @code{or}, it is 0 (a null pointer), indicating that @code{or} cannot be
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
534 called interactively. A value of @code{""} indicates a function that
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
535 should receive no arguments when called interactively.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
536
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
537 @item doc
42282
301b9b704145 Document new doc string format.
Richard M. Stallman <rms@gnu.org>
parents: 39201
diff changeset
538 This is the documentation string. It uses C comment syntax rather
301b9b704145 Document new doc string format.
Richard M. Stallman <rms@gnu.org>
parents: 39201
diff changeset
539 than C string syntax because comment syntax requires nothing special
301b9b704145 Document new doc string format.
Richard M. Stallman <rms@gnu.org>
parents: 39201
diff changeset
540 to include multiple lines. The @samp{doc:} identifies the comment
301b9b704145 Document new doc string format.
Richard M. Stallman <rms@gnu.org>
parents: 39201
diff changeset
541 that follows as the documentation string. The @samp{/*} and @samp{*/}
301b9b704145 Document new doc string format.
Richard M. Stallman <rms@gnu.org>
parents: 39201
diff changeset
542 delimiters that begin and end the comment are not part of the
301b9b704145 Document new doc string format.
Richard M. Stallman <rms@gnu.org>
parents: 39201
diff changeset
543 documentation string.
301b9b704145 Document new doc string format.
Richard M. Stallman <rms@gnu.org>
parents: 39201
diff changeset
544
301b9b704145 Document new doc string format.
Richard M. Stallman <rms@gnu.org>
parents: 39201
diff changeset
545 If the last line of the documentation string begins with the keyword
301b9b704145 Document new doc string format.
Richard M. Stallman <rms@gnu.org>
parents: 39201
diff changeset
546 @samp{usage:}, the rest of the line is treated as the argument list
301b9b704145 Document new doc string format.
Richard M. Stallman <rms@gnu.org>
parents: 39201
diff changeset
547 for documentation purposes. This way, you can use different argument
301b9b704145 Document new doc string format.
Richard M. Stallman <rms@gnu.org>
parents: 39201
diff changeset
548 names in the documentation string from the ones used in the C code.
301b9b704145 Document new doc string format.
Richard M. Stallman <rms@gnu.org>
parents: 39201
diff changeset
549
301b9b704145 Document new doc string format.
Richard M. Stallman <rms@gnu.org>
parents: 39201
diff changeset
550 All the usual rules for documentation strings in Lisp code
301b9b704145 Document new doc string format.
Richard M. Stallman <rms@gnu.org>
parents: 39201
diff changeset
551 (@pxref{Documentation Tips}) apply to C code documentation strings
301b9b704145 Document new doc string format.
Richard M. Stallman <rms@gnu.org>
parents: 39201
diff changeset
552 too.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
553 @end table
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
554
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
555 After the call to the @code{DEFUN} macro, you must write the argument
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
556 name list that every C function must have, followed by ordinary C
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
557 declarations for the arguments. For a function with a fixed maximum
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
558 number of arguments, declare a C argument for each Lisp argument, and
7601
c5927c75b2b5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7086
diff changeset
559 give them all type @code{Lisp_Object}. When a Lisp function has no
c5927c75b2b5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7086
diff changeset
560 upper limit on the number of arguments, its implementation in C actually
c5927c75b2b5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7086
diff changeset
561 receives exactly two arguments: the first is the number of Lisp
c5927c75b2b5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7086
diff changeset
562 arguments, and the second is the address of a block containing their
c5927c75b2b5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7086
diff changeset
563 values. They have types @code{int} and @w{@code{Lisp_Object *}}.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
564
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
565 Within the function @code{For} itself, note the use of the macros
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
566 @code{GCPRO1} and @code{UNGCPRO}. @code{GCPRO1} is used to ``protect''
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
567 a variable from garbage collection---to inform the garbage collector that
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
568 it must look in that variable and regard its contents as an accessible
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
569 object. This is necessary whenever you call @code{Feval} or anything
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
570 that can directly or indirectly call @code{Feval}. At such a time, any
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
571 Lisp object that you intend to refer to again must be protected somehow.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
572 @code{UNGCPRO} cancels the protection of the variables that are
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
573 protected in the current function. It is necessary to do this explicitly.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
574
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
575 For most data types, it suffices to protect at least one pointer to
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
576 the object; as long as the object is not recycled, all pointers to it
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
577 remain valid. This is not so for strings, because the garbage collector
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
578 can move them. When the garbage collector moves a string, it relocates
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
579 all the pointers it knows about; any other pointers become invalid.
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
580 Therefore, you must protect all pointers to strings across any point
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
581 where garbage collection may be possible.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
582
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
583 The macro @code{GCPRO1} protects just one local variable. If you want
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
584 to protect two, use @code{GCPRO2} instead; repeating @code{GCPRO1} will
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
585 not work. Macros @code{GCPRO3} and @code{GCPRO4} also exist.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
586
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
587 These macros implicitly use local variables such as @code{gcpro1}; you
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
588 must declare these explicitly, with type @code{struct gcpro}. Thus, if
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
589 you use @code{GCPRO2}, you must declare @code{gcpro1} and @code{gcpro2}.
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
590 Alas, we can't explain all the tricky details here.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
591
10487
9a4ff0104cdc entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 10476
diff changeset
592 You must not use C initializers for static or global variables unless
27332
5cfe77eaff45 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 27189
diff changeset
593 the variables are never written once Emacs is dumped. These variables
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
594 with initializers are allocated in an area of memory that becomes
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
595 read-only (on certain operating systems) as a result of dumping Emacs.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
596 @xref{Pure Storage}.
10476
4d87344e6dfb *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7601
diff changeset
597
10487
9a4ff0104cdc entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 10476
diff changeset
598 Do not use static variables within functions---place all static
9a4ff0104cdc entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 10476
diff changeset
599 variables at top level in the file. This is necessary because Emacs on
9a4ff0104cdc entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 10476
diff changeset
600 some operating systems defines the keyword @code{static} as a null
9a4ff0104cdc entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 10476
diff changeset
601 macro. (This definition is used because those systems put all variables
9a4ff0104cdc entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 10476
diff changeset
602 declared static in a place that becomes read-only after dumping, whether
9a4ff0104cdc entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 10476
diff changeset
603 they have initializers or not.)
10476
4d87344e6dfb *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7601
diff changeset
604
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
605 Defining the C function is not enough to make a Lisp primitive
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
606 available; you must also create the Lisp symbol for the primitive and
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
607 store a suitable subr object in its function cell. The code looks like
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
608 this:
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
609
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
610 @example
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
611 defsubr (&@var{subr-structure-name});
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
612 @end example
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
613
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
614 @noindent
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
615 Here @var{subr-structure-name} is the name you used as the third
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
616 argument to @code{DEFUN}.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
617
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
618 If you add a new primitive to a file that already has Lisp primitives
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
619 defined in it, find the function (near the end of the file) named
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
620 @code{syms_of_@var{something}}, and add the call to @code{defsubr}
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
621 there. If the file doesn't have this function, or if you create a new
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
622 file, add to it a @code{syms_of_@var{filename}} (e.g.,
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
623 @code{syms_of_myfile}). Then find the spot in @file{emacs.c} where all
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
624 of these functions are called, and add a call to
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
625 @code{syms_of_@var{filename}} there.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
626
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
627 @vindex byte-boolean-vars
7601
c5927c75b2b5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7086
diff changeset
628 The function @code{syms_of_@var{filename}} is also the place to define
c5927c75b2b5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7086
diff changeset
629 any C variables that are to be visible as Lisp variables.
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
630 @code{DEFVAR_LISP} makes a C variable of type @code{Lisp_Object} visible
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
631 in Lisp. @code{DEFVAR_INT} makes a C variable of type @code{int}
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
632 visible in Lisp with a value that is always an integer.
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
633 @code{DEFVAR_BOOL} makes a C variable of type @code{int} visible in Lisp
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
634 with a value that is either @code{t} or @code{nil}. Note that variables
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
635 defined with @code{DEFVAR_BOOL} are automatically added to the list
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
636 @code{byte-boolean-vars} used by the byte compiler.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
637
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
638 If you define a file-scope C variable of type @code{Lisp_Object},
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
639 you must protect it from garbage-collection by calling @code{staticpro}
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
640 in @code{syms_of_@var{filename}}, like this:
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
641
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
642 @example
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
643 staticpro (&@var{variable});
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
644 @end example
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
645
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
646 Here is another example function, with more complicated arguments.
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
647 This comes from the code in @file{window.c}, and it demonstrates the use
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
648 of macros and functions to manipulate Lisp objects.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
649
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
650 @smallexample
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
651 @group
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
652 DEFUN ("coordinates-in-window-p", Fcoordinates_in_window_p,
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
653 Scoordinates_in_window_p, 2, 2,
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
654 "xSpecify coordinate pair: \nXExpression which evals to window: ",
48261
f31837228578 Added two references from Buffer Internals to Buffer Gap.
Francesco Potortì <pot@gnu.org>
parents: 42282
diff changeset
655 "Return non-nil if COORDINATES is in WINDOW.\n\
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
656 COORDINATES is a cons of the form (X . Y), X and Y being distances\n\
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
657 ...
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
658 @end group
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
659 @group
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
660 If they are on the border between WINDOW and its right sibling,\n\
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
661 `vertical-line' is returned.")
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
662 (coordinates, window)
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
663 register Lisp_Object coordinates, window;
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
664 @{
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
665 int x, y;
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
666 @end group
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
667
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
668 @group
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
669 CHECK_LIVE_WINDOW (window, 0);
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
670 CHECK_CONS (coordinates, 1);
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
671 x = XINT (Fcar (coordinates));
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
672 y = XINT (Fcdr (coordinates));
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
673 @end group
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
674
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
675 @group
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
676 switch (coordinates_in_window (XWINDOW (window), &x, &y))
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
677 @{
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
678 case 0: /* NOT in window at all. */
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
679 return Qnil;
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
680 @end group
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
681
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
682 @group
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
683 case 1: /* In text part of window. */
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
684 return Fcons (make_number (x), make_number (y));
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
685 @end group
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
686
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
687 @group
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
688 case 2: /* In mode line of window. */
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
689 return Qmode_line;
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
690 @end group
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
691
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
692 @group
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
693 case 3: /* On right border of window. */
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
694 return Qvertical_line;
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
695 @end group
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
696
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
697 @group
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
698 default:
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
699 abort ();
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
700 @}
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
701 @}
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
702 @end group
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
703 @end smallexample
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
704
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
705 Note that C code cannot call functions by name unless they are defined
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
706 in C. The way to call a function written in Lisp is to use
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
707 @code{Ffuncall}, which embodies the Lisp function @code{funcall}. Since
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
708 the Lisp function @code{funcall} accepts an unlimited number of
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
709 arguments, in C it takes two: the number of Lisp-level arguments, and a
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
710 one-dimensional array containing their values. The first Lisp-level
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
711 argument is the Lisp function to call, and the rest are the arguments to
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
712 pass to it. Since @code{Ffuncall} can call the evaluator, you must
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
713 protect pointers from garbage collection around the call to
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
714 @code{Ffuncall}.
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
715
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
716 The C functions @code{call0}, @code{call1}, @code{call2}, and so on,
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
717 provide handy ways to call a Lisp function conveniently with a fixed
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
718 number of arguments. They work by calling @code{Ffuncall}.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
719
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
720 @file{eval.c} is a very good file to look through for examples;
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
721 @file{lisp.h} contains the definitions for some important macros and
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
722 functions.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
723
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
724 If you define a function which is side-effect free, update the code in
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
725 @file{byte-opt.el} which binds @code{side-effect-free-fns} and
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
726 @code{side-effect-and-error-free-fns} to include it. This will help the
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
727 optimizer.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
728
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
729 @node Object Internals
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
730 @appendixsec Object Internals
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
731 @cindex object internals
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
732
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
733 GNU Emacs Lisp manipulates many different types of data. The actual
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18413
diff changeset
734 data are stored in a heap and the only access that programs have to it
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18413
diff changeset
735 is through pointers. Pointers are thirty-two bits wide in most
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
736 implementations. Depending on the operating system and type of machine
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18413
diff changeset
737 for which you compile Emacs, twenty-eight bits are used to address the
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 18413
diff changeset
738 object, and the remaining four bits are used for a GC mark bit and the
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
739 tag that identifies the object's type.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
740
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
741 Because Lisp objects are represented as tagged pointers, it is always
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
742 possible to determine the Lisp data type of any object. The C data type
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
743 @code{Lisp_Object} can hold any Lisp object of any data type. Ordinary
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
744 variables have type @code{Lisp_Object}, which means they can hold any
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
745 type of Lisp value; you can determine the actual data type only at run
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
746 time. The same is true for function arguments; if you want a function
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
747 to accept only a certain type of argument, you must check the type
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
748 explicitly using a suitable predicate (@pxref{Type Predicates}).
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
749 @cindex type checking internals
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
750
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
751 @menu
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
752 * Buffer Internals:: Components of a buffer structure.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
753 * Window Internals:: Components of a window structure.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
754 * Process Internals:: Components of a process structure.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
755 @end menu
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
756
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
757 @node Buffer Internals
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
758 @appendixsubsec Buffer Internals
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
759 @cindex internals, of buffer
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
760 @cindex buffer internals
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
761
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
762 Buffers contain fields not directly accessible by the Lisp programmer.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
763 We describe them here, naming them by the names used in the C code.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
764 Many are accessible indirectly in Lisp programs via Lisp primitives.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
765
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
766 Two structures are used to represent buffers in C. The
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
767 @code{buffer_text} structure contains fields describing the text of a
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
768 buffer; the @code{buffer} structure holds other fields. In the case
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
769 of indirect buffers, two or more @code{buffer} structures reference
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
770 the same @code{buffer_text} structure.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
771
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
772 Here is a list of the @code{struct buffer_text} fields:
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
773
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
774 @table @code
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
775 @item beg
27332
5cfe77eaff45 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 27189
diff changeset
776 This field contains the actual address of the buffer contents.
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
777
33340
5192df3c8dd6 Typo fixed.
Gerd Moellmann <gerd@gnu.org>
parents: 27332
diff changeset
778 @item gpt
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
779 This holds the character position of the gap in the buffer.
48261
f31837228578 Added two references from Buffer Internals to Buffer Gap.
Francesco Potortì <pot@gnu.org>
parents: 42282
diff changeset
780 @xref{Buffer Gap}.
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
781
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
782 @item z
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
783 This field contains the character position of the end of the buffer
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
784 text.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
785
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
786 @item gpt_byte
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
787 Contains the byte position of the gap.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
788
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
789 @item z_byte
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
790 Holds the byte position of the end of the buffer text.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
791
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
792 @item gap_size
48261
f31837228578 Added two references from Buffer Internals to Buffer Gap.
Francesco Potortì <pot@gnu.org>
parents: 42282
diff changeset
793 Contains the size of buffer's gap. @xref{Buffer Gap}.
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
794
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
795 @item modiff
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
796 This field counts buffer-modification events for this buffer. It is
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
797 incremented for each such event, and never otherwise changed.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
798
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
799 @item save_modiff
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
800 Contains the previous value of @code{modiff}, as of the last time a
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
801 buffer was visited or saved in a file.
48261
f31837228578 Added two references from Buffer Internals to Buffer Gap.
Francesco Potortì <pot@gnu.org>
parents: 42282
diff changeset
802
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
803 @item overlay_modiff
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
804 Counts modifications to overlays analogous to @code{modiff}.
48261
f31837228578 Added two references from Buffer Internals to Buffer Gap.
Francesco Potortì <pot@gnu.org>
parents: 42282
diff changeset
805
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
806 @item beg_unchanged
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
807 Holds the number of characters at the start of the text that are known
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
808 to be unchanged since the last redisplay that finished.
48261
f31837228578 Added two references from Buffer Internals to Buffer Gap.
Francesco Potortì <pot@gnu.org>
parents: 42282
diff changeset
809
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
810 @item end_unchanged
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
811 Holds the number of characters at the end of the text that are known to
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
812 be unchanged since the last redisplay that finished.
48261
f31837228578 Added two references from Buffer Internals to Buffer Gap.
Francesco Potortì <pot@gnu.org>
parents: 42282
diff changeset
813
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
814 @item unchanged_modified
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
815 Contains the value of @code{modiff} at the time of the last redisplay
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
816 that finished. If this value matches @code{modiff},
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
817 @code{beg_unchanged} and @code{end_unchanged} contain no useful
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
818 information.
48261
f31837228578 Added two references from Buffer Internals to Buffer Gap.
Francesco Potortì <pot@gnu.org>
parents: 42282
diff changeset
819
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
820 @item overlay_unchanged_modified
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
821 Contains the value of @code{overlay_modiff} at the time of the last
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
822 redisplay that finished. If this value matches @code{overlay_modiff},
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
823 @code{beg_unchanged} and @code{end_unchanged} contain no useful
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
824 information.
48261
f31837228578 Added two references from Buffer Internals to Buffer Gap.
Francesco Potortì <pot@gnu.org>
parents: 42282
diff changeset
825
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
826 @item markers
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
827 The markers that refer to this buffer. This is actually a single
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
828 marker, and successive elements in its marker @code{chain} are the other
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
829 markers referring to this buffer text.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
830
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
831 @item intervals
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
832 Contains the interval tree which records the text properties of this
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
833 buffer.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
834 @end table
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
835
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
836 The fields of @code{struct buffer} are:
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
837
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
838 @table @code
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
839 @item next
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
840 Points to the next buffer, in the chain of all buffers including killed
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
841 buffers. This chain is used only for garbage collection, in order to
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
842 collect killed buffers properly. Note that vectors, and most kinds of
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
843 objects allocated as vectors, are all on one chain, but buffers are on a
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
844 separate chain of their own.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
845
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
846 @item own_text
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
847 This is a @code{struct buffer_text} structure. In an ordinary buffer,
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
848 it holds the buffer contents. In indirect buffers, this field is not
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
849 used.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
850
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
851 @item text
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
852 This points to the @code{buffer_text} structure that is used for this
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
853 buffer. In an ordinary buffer, this is the @code{own_text} field above.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
854 In an indirect buffer, this is the @code{own_text} field of the base
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
855 buffer.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
856
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
857 @item pt
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
858 Contains the character position of point in a buffer.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
859
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
860 @item pt_byte
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
861 Contains the byte position of point in a buffer.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
862
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
863 @item begv
48261
f31837228578 Added two references from Buffer Internals to Buffer Gap.
Francesco Potortì <pot@gnu.org>
parents: 42282
diff changeset
864 This field contains the character position of the beginning of the
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
865 accessible range of text in the buffer.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
866
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
867 @item begv_byte
48261
f31837228578 Added two references from Buffer Internals to Buffer Gap.
Francesco Potortì <pot@gnu.org>
parents: 42282
diff changeset
868 This field contains the byte position of the beginning of the
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
869 accessible range of text in the buffer.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
870
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
871 @item zv
48261
f31837228578 Added two references from Buffer Internals to Buffer Gap.
Francesco Potortì <pot@gnu.org>
parents: 42282
diff changeset
872 This field contains the character position of the end of the
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
873 accessible range of text in the buffer.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
874
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
875 @item zv_byte
48261
f31837228578 Added two references from Buffer Internals to Buffer Gap.
Francesco Potortì <pot@gnu.org>
parents: 42282
diff changeset
876 This field contains the byte position of the end of the
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
877 accessible range of text in the buffer.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
878
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
879 @item base_buffer
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
880 In an indirect buffer, this points to the base buffer. In an ordinary
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
881 buffer, it is null.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
882
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
883 @item local_var_flags
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
884 This field contains flags indicating that certain variables are local in
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
885 this buffer. Such variables are declared in the C code using
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
886 @code{DEFVAR_PER_BUFFER}, and their buffer-local bindings are stored in
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
887 fields in the buffer structure itself. (Some of these fields are
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
888 described in this table.)
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
889
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
890 @item modtime
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
891 This field contains the modification time of the visited file. It is
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
892 set when the file is written or read. Before writing the buffer into a
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
893 file, this field is compared to the modification time of the file to see
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
894 if the file has changed on disk. @xref{Buffer Modification}.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
895
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
896 @item auto_save_modified
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
897 This field contains the time when the buffer was last auto-saved.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
898
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
899 @item auto_save_failure_time
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
900 The time at which we detected a failure to auto-save, or -1 if we didn't
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
901 have a failure.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
902
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
903 @item last_window_start
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
904 This field contains the @code{window-start} position in the buffer as of
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
905 the last time the buffer was displayed in a window.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
906
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
907 @item clip_changed
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
908 This flag is set when narrowing changes in a buffer.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
909
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
910 @item prevent_redisplay_optimizations_p
48261
f31837228578 Added two references from Buffer Internals to Buffer Gap.
Francesco Potortì <pot@gnu.org>
parents: 42282
diff changeset
911 this flag indicates that redisplay optimizations should not be used
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
912 to display this buffer.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
913
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
914 @item undo_list
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
915 This field points to the buffer's undo list. @xref{Undo}.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
916
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
917 @item name
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
918 The buffer name is a string that names the buffer. It is guaranteed to
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
919 be unique. @xref{Buffer Names}.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
920
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
921 @item filename
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
922 The name of the file visited in this buffer, or @code{nil}.
48261
f31837228578 Added two references from Buffer Internals to Buffer Gap.
Francesco Potortì <pot@gnu.org>
parents: 42282
diff changeset
923
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
924 @item directory
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
925 The directory for expanding relative file names.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
926
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
927 @item save_length
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
928 Length of the file this buffer is visiting, when last read or saved.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
929 This and other fields concerned with saving are not kept in the
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
930 @code{buffer_text} structure because indirect buffers are never saved.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
931
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
932 @item auto_save_file_name
48261
f31837228578 Added two references from Buffer Internals to Buffer Gap.
Francesco Potortì <pot@gnu.org>
parents: 42282
diff changeset
933 File name used for auto-saving this buffer. This is not in the
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
934 @code{buffer_text} because it's not used in indirect buffers at all.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
935
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
936 @item read_only
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
937 Non-@code{nil} means this buffer is read-only.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
938
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
939 @item mark
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
940 This field contains the mark for the buffer. The mark is a marker,
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
941 hence it is also included on the list @code{markers}. @xref{The Mark}.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
942
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
943 @item local_var_alist
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
944 This field contains the association list describing the buffer-local
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
945 variable bindings of this buffer, not including the built-in
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
946 buffer-local bindings that have special slots in the buffer object.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
947 (Those slots are omitted from this table.) @xref{Buffer-Local
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
948 Variables}.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
949
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
950 @item major_mode
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
951 Symbol naming the major mode of this buffer, e.g., @code{lisp-mode}.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
952
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
953 @item mode_name
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
954 Pretty name of major mode, e.g., @code{"Lisp"}.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
955
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
956 @item mode_line_format
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
957 Mode line element that controls the format of the mode line. If this
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
958 is @code{nil}, no mode line will be displayed.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
959
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
960 @item header_line_format
48261
f31837228578 Added two references from Buffer Internals to Buffer Gap.
Francesco Potortì <pot@gnu.org>
parents: 42282
diff changeset
961 This field is analoguous to @code{mode_line_format} for the mode
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
962 line displayed at the top of windows.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
963
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
964 @item keymap
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
965 This field holds the buffer's local keymap. @xref{Keymaps}.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
966
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
967 @item abbrev_table
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
968 This buffer's local abbrevs.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
969
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
970 @item syntax_table
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
971 This field contains the syntax table for the buffer. @xref{Syntax Tables}.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
972
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
973 @item category_table
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
974 This field contains the category table for the buffer.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
975
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
976 @item case_fold_search
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
977 The value of @code{case-fold-search} in this buffer.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
978
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
979 @item tab_width
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
980 The value of @code{tab-width} in this buffer.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
981
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
982 @item fill_column
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
983 The value of @code{fill-column} in this buffer.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
984
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
985 @item left_margin
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
986 The value of @code{left-margin} in this buffer.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
987
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
988 @item auto_fill_function
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
989 The value of @code{auto-fill-function} in this buffer.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
990
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
991 @item downcase_table
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
992 This field contains the conversion table for converting text to lower case.
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
993 @xref{Case Tables}.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
994
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
995 @item upcase_table
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
996 This field contains the conversion table for converting text to upper case.
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
997 @xref{Case Tables}.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
998
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
999 @item case_canon_table
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1000 This field contains the conversion table for canonicalizing text for
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1001 case-folding search. @xref{Case Tables}.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1002
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1003 @item case_eqv_table
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1004 This field contains the equivalence table for case-folding search.
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1005 @xref{Case Tables}.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1006
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1007 @item truncate_lines
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1008 The value of @code{truncate-lines} in this buffer.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1009
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1010 @item ctl_arrow
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1011 The value of @code{ctl-arrow} in this buffer.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1012
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1013 @item selective_display
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1014 The value of @code{selective-display} in this buffer.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1015
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1016 @item selective_display_ellipsis
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1017 The value of @code{selective-display-ellipsis} in this buffer.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1018
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1019 @item minor_modes
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1020 An alist of the minor modes of this buffer.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1021
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1022 @item overwrite_mode
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1023 The value of @code{overwrite_mode} in this buffer.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1024
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1025 @item abbrev_mode
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1026 The value of @code{abbrev-mode} in this buffer.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1027
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1028 @item display_table
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1029 This field contains the buffer's display table, or @code{nil} if it doesn't
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1030 have one. @xref{Display Tables}.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1031
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1032 @item save_modified
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1033 This field contains the time when the buffer was last saved, as an integer.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1034 @xref{Buffer Modification}.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1035
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1036 @item mark_active
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1037 This field is non-@code{nil} if the buffer's mark is active.
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1038
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1039 @item overlays_before
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1040 This field holds a list of the overlays in this buffer that end at or
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1041 before the current overlay center position. They are sorted in order of
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1042 decreasing end position.
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1043
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1044 @item overlays_after
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1045 This field holds a list of the overlays in this buffer that end after
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1046 the current overlay center position. They are sorted in order of
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1047 increasing beginning position.
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1048
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1049 @item overlay_center
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1050 This field holds the current overlay center position. @xref{Overlays}.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1051
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1052 @item enable_multibyte_characters
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1053 This field holds the buffer's local value of
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1054 @code{enable-multibyte-characters}---either @code{t} or @code{nil}.
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1055
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1056 @item buffer_file_coding_system
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1057 The value of @code{buffer-file-coding-system} in this buffer.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1058
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1059 @item file_format
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1060 The value of @code{buffer-file-format} in this buffer.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1061
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1062 @item pt_marker
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1063 In an indirect buffer, or a buffer that is the base of an indirect
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1064 buffer, this holds a marker that records point for this buffer when the
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1065 buffer is not current.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1066
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1067 @item begv_marker
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1068 In an indirect buffer, or a buffer that is the base of an indirect
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1069 buffer, this holds a marker that records @code{begv} for this buffer
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1070 when the buffer is not current.
48261
f31837228578 Added two references from Buffer Internals to Buffer Gap.
Francesco Potortì <pot@gnu.org>
parents: 42282
diff changeset
1071
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1072 @item zv_marker
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1073 In an indirect buffer, or a buffer that is the base of an indirect
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1074 buffer, this holds a marker that records @code{zv} for this buffer when
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1075 the buffer is not current.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1076
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1077 @item file_truename
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1078 The truename of the visited file, or @code{nil}.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1079
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1080 @item invisibility_spec
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1081 The value of @code{buffer-invisibility-spec} in this buffer.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1082
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1083 @item last_selected_window
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1084 This is the last window that was selected with this buffer in it, or @code{nil}
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1085 if that window no longer displays this buffer.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1086
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1087 @item display_count
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1088 This field is incremented each time the buffer is displayed in a window.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1089
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1090 @item left_margin_width
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1091 The value of @code{left-margin-width} in this buffer.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1092
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1093 @item right_margin_width
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1094 The value of @code{right-margin-width} in this buffer.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1095
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1096 @item indicate_empty_lines
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1097 Non-@code{nil} means indicate empty lines (lines with no text) with a
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1098 small bitmap in the fringe, when using a window system that can do it.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1099
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1100 @item display_time
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1101 This holds a time stamp that is updated each time this buffer is
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1102 displayed in a window.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1103
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1104 @item scroll_up_aggressively
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1105 The value of @code{scroll-up-aggressively} in this buffer.
48261
f31837228578 Added two references from Buffer Internals to Buffer Gap.
Francesco Potortì <pot@gnu.org>
parents: 42282
diff changeset
1106
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1107 @item scroll_down_aggressively
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1108 The value of @code{scroll-down-aggressively} in this buffer.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1109 @end table
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1110
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1111 @node Window Internals
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1112 @appendixsubsec Window Internals
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1113 @cindex internals, of window
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1114 @cindex window internals
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1115
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1116 Windows have the following accessible fields:
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1117
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1118 @table @code
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1119 @item frame
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1120 The frame that this window is on.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1121
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1122 @item mini_p
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1123 Non-@code{nil} if this window is a minibuffer window.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1124
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1125 @item parent
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1126 Internally, Emacs arranges windows in a tree; each group of siblings has
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1127 a parent window whose area includes all the siblings. This field points
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1128 to a window's parent.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1129
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1130 Parent windows do not display buffers, and play little role in display
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1131 except to shape their child windows. Emacs Lisp programs usually have
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1132 no access to the parent windows; they operate on the windows at the
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1133 leaves of the tree, which actually display buffers.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1134
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1135 The following four fields also describe the window tree structure.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1136
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1137 @item hchild
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1138 In a window subdivided horizontally by child windows, the leftmost child.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1139 Otherwise, @code{nil}.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1140
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1141 @item vchild
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1142 In a window subdivided vertically by child windows, the topmost child.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1143 Otherwise, @code{nil}.
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1144
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1145 @item next
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1146 The next sibling of this window. It is @code{nil} in a window that is
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1147 the rightmost or bottommost of a group of siblings.
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1148
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1149 @item prev
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1150 The previous sibling of this window. It is @code{nil} in a window that
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1151 is the leftmost or topmost of a group of siblings.
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1152
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1153 @item left
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1154 This is the left-hand edge of the window, measured in columns. (The
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1155 leftmost column on the screen is @w{column 0}.)
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1156
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1157 @item top
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1158 This is the top edge of the window, measured in lines. (The top line on
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1159 the screen is @w{line 0}.)
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1160
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1161 @item height
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1162 The height of the window, measured in lines.
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1163
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1164 @item width
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
1165 The width of the window, measured in columns. This width includes the
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
1166 scroll bar and fringes, and/or the separator line on the right of the
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
1167 window (if any).
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1168
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1169 @item buffer
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1170 The buffer that the window is displaying. This may change often during
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1171 the life of the window.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1172
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1173 @item start
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1174 The position in the buffer that is the first character to be displayed
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1175 in the window.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1176
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1177 @item pointm
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1178 @cindex window point internals
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1179 This is the value of point in the current buffer when this window is
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1180 selected; when it is not selected, it retains its previous value.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1181
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1182 @item force_start
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1183 If this flag is non-@code{nil}, it says that the window has been
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1184 scrolled explicitly by the Lisp program. This affects what the next
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1185 redisplay does if point is off the screen: instead of scrolling the
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1186 window to show the text around point, it moves point to a location that
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1187 is on the screen.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1188
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1189 @item frozen_window_start_p
48261
f31837228578 Added two references from Buffer Internals to Buffer Gap.
Francesco Potortì <pot@gnu.org>
parents: 42282
diff changeset
1190 This field is set temporarily to 1 to indicate to redisplay that
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1191 @code{start} of this window should not be changed, even if point
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1192 gets invisible.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1193
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1194 @item start_at_line_beg
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1195 Non-@code{nil} means current value of @code{start} was the beginning of a line
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1196 when it was chosen.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1197
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1198 @item too_small_ok
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1199 Non-@code{nil} means don't delete this window for becoming ``too small''.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1200
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1201 @item height_fixed_p
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1202 This field is temporarily set to 1 to fix the height of the selected
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1203 window when the echo area is resized.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1204
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1205 @item use_time
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1206 This is the last time that the window was selected. The function
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1207 @code{get-lru-window} uses this field.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1208
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1209 @item sequence_number
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1210 A unique number assigned to this window when it was created.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1211
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1212 @item last_modified
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1213 The @code{modiff} field of the window's buffer, as of the last time
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1214 a redisplay completed in this window.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1215
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1216 @item last_overlay_modified
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1217 The @code{overlay_modiff} field of the window's buffer, as of the last
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1218 time a redisplay completed in this window.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1219
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1220 @item last_point
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1221 The buffer's value of point, as of the last time a redisplay completed
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1222 in this window.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1223
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1224 @item last_had_star
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1225 A non-@code{nil} value means the window's buffer was ``modified'' when the
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1226 window was last updated.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1227
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1228 @item vertical_scroll_bar
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1229 This window's vertical scroll bar.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1230
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1231 @item left_margin_width
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1232 The width of the left margin in this window, or @code{nil} not to
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1233 specify it (in which case the buffer's value of @code{left-margin-width}
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1234 is used.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1235
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1236 @item right_margin_width
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1237 Likewise for the right margin.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1238
26783
626ae4bb4994 Fix makeinfo complaints.
Dave Love <fx@gnu.org>
parents: 26199
diff changeset
1239 @ignore
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1240 @item last_mark_x
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1241 @item last_mark_y
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1242 ???Not used.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1243 @end ignore
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1244
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1245 @item window_end_pos
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1246 This is computed as @code{z} minus the buffer position of the last glyph
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1247 in the current matrix of the window. The value is only valid if
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1248 @code{window_end_valid} is not @code{nil}.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1249
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1250 @item window_end_bytepos
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1251 The byte position corresponding to @code{window_end_pos}.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1252
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1253 @item window_end_vpos
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1254 The window-relative vertical position of the line containing
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1255 @code{window_end_pos}.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1256
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1257 @item window_end_valid
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1258 This field is set to a non-@code{nil} value if @code{window_end_pos} is truly
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1259 valid. This is @code{nil} if nontrivial redisplay is preempted since in that
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1260 case the display that @code{window_end_pos} was computed for did not get
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1261 onto the screen.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1262
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1263 @item redisplay_end_trigger
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1264 If redisplay in this window goes beyond this buffer position, it runs
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1265 run the @code{redisplay-end-trigger-hook}.
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1266
26783
626ae4bb4994 Fix makeinfo complaints.
Dave Love <fx@gnu.org>
parents: 26199
diff changeset
1267 @ignore
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1268 @item orig_height
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1269 @item orig_top
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1270 ??? Are temporary storage areas.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1271 @end ignore
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1272
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1273 @item cursor
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1274 A structure describing where the cursor is in this window.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1275
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1276 @item last_cursor
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1277 The value of @code{cursor} as of the last redisplay that finished.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1278
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1279 @item phys_cursor
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1280 A structure describing where the cursor of this window physically is.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1281
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1282 @item phys_cursor_type
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1283 The type of cursor that was last displayed on this window.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1284
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1285 @item phys_cursor_on_p
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1286 This field is non-zero if the cursor is physically on.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1287
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1288 @item cursor_off_p
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1289 Non-zero means the cursor in this window is logically on.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1290
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1291 @item last_cursor_off_p
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1292 This field contains the value of @code{cursor_off_p} as of the time of
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1293 the last redisplay.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1294
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1295 @item must_be_updated_p
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1296 This is set to 1 during redisplay when this window must be updated.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1297
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1298 @item hscroll
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1299 This is the number of columns that the display in the window is scrolled
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1300 horizontally to the left. Normally, this is 0.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1301
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1302 @item vscroll
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1303 Vertical scroll amount, in pixels. Normally, this is 0.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1304
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1305 @item dedicated
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1306 Non-@code{nil} if this window is dedicated to its buffer.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1307
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1308 @item display_table
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1309 The window's display table, or @code{nil} if none is specified for it.
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1310
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1311 @item update_mode_line
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1312 Non-@code{nil} means this window's mode line needs to be updated.
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1313
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1314 @item base_line_number
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1315 The line number of a certain position in the buffer, or @code{nil}.
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1316 This is used for displaying the line number of point in the mode line.
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1317
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1318 @item base_line_pos
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1319 The position in the buffer for which the line number is known, or
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1320 @code{nil} meaning none is known.
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1321
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1322 @item region_showing
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1323 If the region (or part of it) is highlighted in this window, this field
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1324 holds the mark position that made one end of that region. Otherwise,
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1325 this field is @code{nil}.
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1326
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1327 @item column_number_displayed
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1328 The column number currently displayed in this window's mode line, or @code{nil}
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1329 if column numbers are not being displayed.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1330
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1331 @item current_matrix
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1332 A glyph matrix describing the current display of this window.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1333
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1334 @item desired_matrix
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1335 A glyph matrix describing the desired display of this window.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1336 @end table
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1337
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1338 @node Process Internals
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1339 @appendixsubsec Process Internals
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1340 @cindex internals, of process
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1341 @cindex process internals
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1342
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1343 The fields of a process are:
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1344
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1345 @table @code
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1346 @item name
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1347 A string, the name of the process.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1348
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1349 @item command
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1350 A list containing the command arguments that were used to start this
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1351 process.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1352
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1353 @item filter
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1354 A function used to accept output from the process instead of a buffer,
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1355 or @code{nil}.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1356
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1357 @item sentinel
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1358 A function called whenever the process receives a signal, or @code{nil}.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1359
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1360 @item buffer
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1361 The associated buffer of the process.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1362
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1363 @item pid
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1364 An integer, the Unix process @sc{id}.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1365
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1366 @item childp
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1367 A flag, non-@code{nil} if this is really a child process.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1368 It is @code{nil} for a network connection.
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1369
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1370 @item mark
7601
c5927c75b2b5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7086
diff changeset
1371 A marker indicating the position of the end of the last output from this
c5927c75b2b5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7086
diff changeset
1372 process inserted into the buffer. This is often but not always the end
c5927c75b2b5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7086
diff changeset
1373 of the buffer.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1374
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1375 @item kill_without_query
7086
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1376 If this is non-@code{nil}, killing Emacs while this process is still
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1377 running does not ask for confirmation about killing the process.
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1378
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1379 @item raw_status_low
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1380 @itemx raw_status_high
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1381 These two fields record 16 bits each of the process status returned by
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1382 the @code{wait} system call.
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1383
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1384 @item status
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1385 The process status, as @code{process-status} should return it.
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1386
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1387 @item tick
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1388 @itemx update_tick
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1389 If these two fields are not equal, a change in the status of the process
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1390 needs to be reported, either by running the sentinel or by inserting a
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1391 message in the process buffer.
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1392
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1393 @item pty_flag
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1394 Non-@code{nil} if communication with the subprocess uses a @sc{pty};
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1395 @code{nil} if it uses a pipe.
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1396
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1397 @item infd
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1398 The file descriptor for input from the process.
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1399
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1400 @item outfd
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1401 The file descriptor for output to the process.
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1402
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1403 @item subtty
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1404 The file descriptor for the terminal that the subprocess is using. (On
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1405 some systems, there is no need to record this, so the value is
075343a6b32b *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6451
diff changeset
1406 @code{nil}.)
12098
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 11139
diff changeset
1407
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 11139
diff changeset
1408 @item tty_name
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 11139
diff changeset
1409 The name of the terminal that the subprocess is using,
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 11139
diff changeset
1410 or @code{nil} if it is using pipes.
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1411
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1412 @item decode_coding_system
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1413 Coding-system for decoding the input from this process.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1414
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1415 @item decoding_buf
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1416 A working buffer for decoding.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1417
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1418 @item decoding_carryover
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1419 Size of carryover in decoding.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1420
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1421 @item encode_coding_system
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1422 Coding-system for encoding the output to this process.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1423
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1424 @item encoding_buf
48701
bfdd0deae843 Fix typo.
Pavel Janík <Pavel@Janik.cz>
parents: 48261
diff changeset
1425 A working buffer for encoding.
26165
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1426
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1427 @item encoding_carryover
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1428 Size of carryover in encoding.
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1429
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1430 @item inherit_coding_system_flag
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1431 Flag to set @code{coding-system} of the process buffer from the
cdd1c350aae9 Patches from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
1432 coding system used to decode process output.
6451
8240c0b1d695 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1433 @end table