annotate src/buffer.c @ 1252:86a17674c2a1

* buffer.c (Fbury_buffer): This used to undisplay the buffer being buried only if the BUFFER argument was nil. Instead, undisplay the buffer whenever it's displayed in the selected window, no matter how it was specified by BUFFER. This is how it behaves in 18.58, and I can't find any ChangeLog entry in 18.58 or 19.0 saying why they differ. Fix the doc string accordingly.
author Jim Blandy <jimb@redhat.com>
date Tue, 29 Sep 1992 04:08:04 +0000
parents beefc235076e
children 7afcf7be0d30
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1 /* Buffer manipulation primitives for GNU Emacs.
585
1d71babec025 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 550
diff changeset
2 Copyright (C) 1985, 1986, 1987, 1988, 1989, 1992 Free Software Foundation, Inc.
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
4 This file is part of GNU Emacs.
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
5
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
6 GNU Emacs is free software; you can redistribute it and/or modify
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
7 it under the terms of the GNU General Public License as published by
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
8 the Free Software Foundation; either version 1, or (at your option)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
9 any later version.
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
10
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
11 GNU Emacs is distributed in the hope that it will be useful,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
14 GNU General Public License for more details.
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
15
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
16 You should have received a copy of the GNU General Public License
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
17 along with GNU Emacs; see the file COPYING. If not, write to
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
18 the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
19
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
20
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
21 #include <sys/param.h>
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
22
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
23 #ifndef MAXPATHLEN
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
24 /* in 4.1, param.h fails to define this. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
25 #define MAXPATHLEN 1024
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
26 #endif /* not MAXPATHLEN */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
27
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
28 #include "config.h"
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
29 #include "lisp.h"
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
30 #include "window.h"
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
31 #include "commands.h"
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
32 #include "buffer.h"
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
33 #include "syntax.h"
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
34 #include "indent.h"
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
35
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
36 struct buffer *current_buffer; /* the current buffer */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
37
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
38 /* First buffer in chain of all buffers (in reverse order of creation).
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
39 Threaded through ->next. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
40
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
41 struct buffer *all_buffers;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
42
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
43 /* This structure holds the default values of the buffer-local variables
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
44 defined with DEFVAR_PER_BUFFER, that have special slots in each buffer.
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
45 The default value occupies the same slot in this structure
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
46 as an individual buffer's value occupies in that buffer.
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
47 Setting the default value also goes through the alist of buffers
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
48 and stores into each buffer that does not say it has a local value. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
49
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
50 struct buffer buffer_defaults;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
51
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
52 /* A Lisp_Object pointer to the above, used for staticpro */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
53
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
54 static Lisp_Object Vbuffer_defaults;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
55
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
56 /* This structure marks which slots in a buffer have corresponding
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
57 default values in buffer_defaults.
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
58 Each such slot has a nonzero value in this structure.
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
59 The value has only one nonzero bit.
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
60
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
61 When a buffer has its own local value for a slot,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
62 the bit for that slot (found in the same slot in this structure)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
63 is turned on in the buffer's local_var_flags slot.
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
64
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
65 If a slot in this structure is -1, then even though there may
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
66 be a DEFVAR_PER_BUFFER for the slot, there is no default value for it;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
67 and the corresponding slot in buffer_defaults is not used.
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
68
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
69 If a slot is -2, then there is no DEFVAR_PER_BUFFER for it,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
70 but there is a default value which is copied into each buffer.
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
71
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
72 If a slot in this structure is negative, then even though there may
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
73 be a DEFVAR_PER_BUFFER for the slot, there is no default value for it;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
74 and the corresponding slot in buffer_defaults is not used.
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
75
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
76 If a slot in this structure corresponding to a DEFVAR_PER_BUFFER is
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
77 zero, that is a bug */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
78
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
79 struct buffer buffer_local_flags;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
80
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
81 /* This structure holds the names of symbols whose values may be
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
82 buffer-local. It is indexed and accessed in the same way as the above. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
83
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
84 struct buffer buffer_local_symbols;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
85 /* A Lisp_Object pointer to the above, used for staticpro */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
86 static Lisp_Object Vbuffer_local_symbols;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
87
1001
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
88 /* This structure holds the required types for the values in the
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
89 buffer-local slots. If a slot contains Qnil, then the
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
90 corresponding buffer slot may contain a value of any type. If a
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
91 slot contains an integer, then prospective values' tags must be
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
92 equal to that integer. When a tag does not match, the function
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
93 buffer_slot_type_mismatch will signal an error. */
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
94 struct buffer buffer_local_types;
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
95
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
96 /* Nonzero means don't allow modification of protected fields. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
97
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
98 int check_protected_fields;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
99
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
100 Lisp_Object Fset_buffer ();
392
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
101 void set_buffer_internal ();
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
102
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
103 /* Alist of all buffer names vs the buffers. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
104 /* This used to be a variable, but is no longer,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
105 to prevent lossage due to user rplac'ing this alist or its elements. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
106 Lisp_Object Vbuffer_alist;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
107
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
108 /* Functions to call before and after each text change. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
109 Lisp_Object Vbefore_change_function;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
110 Lisp_Object Vafter_change_function;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
111
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
112 /* Function to call before changing an unmodified buffer. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
113 Lisp_Object Vfirst_change_function;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
114
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
115 Lisp_Object Qfundamental_mode, Qmode_class, Qpermanent_local;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
116
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
117 Lisp_Object Qprotected_field;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
118
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
119 Lisp_Object QSFundamental; /* A string "Fundamental" */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
120
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
121 Lisp_Object Qkill_buffer_hook;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
122
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
123 /* For debugging; temporary. See set_buffer_internal. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
124 /* Lisp_Object Qlisp_mode, Vcheck_symbol; */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
125
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
126 nsberror (spec)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
127 Lisp_Object spec;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
128 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
129 if (XTYPE (spec) == Lisp_String)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
130 error ("No buffer named %s", XSTRING (spec)->data);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
131 error ("Invalid buffer argument");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
132 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
133
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
134 DEFUN ("buffer-list", Fbuffer_list, Sbuffer_list, 0, 0, 0,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
135 "Return a list of all existing live buffers.")
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
136 ()
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
137 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
138 return Fmapcar (Qcdr, Vbuffer_alist);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
139 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
140
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
141 DEFUN ("get-buffer", Fget_buffer, Sget_buffer, 1, 1, 0,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
142 "Return the buffer named NAME (a string).\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
143 If there is no live buffer named NAME, return nil.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
144 NAME may also be a buffer; if so, the value is that buffer.")
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
145 (name)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
146 register Lisp_Object name;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
147 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
148 if (XTYPE (name) == Lisp_Buffer)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
149 return name;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
150 CHECK_STRING (name, 0);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
151
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
152 return Fcdr (Fassoc (name, Vbuffer_alist));
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
153 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
154
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
155 DEFUN ("get-file-buffer", Fget_file_buffer, Sget_file_buffer, 1, 1, 0,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
156 "Return the buffer visiting file FILENAME (a string).\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
157 If there is no such live buffer, return nil.")
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
158 (filename)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
159 register Lisp_Object filename;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
160 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
161 register Lisp_Object tail, buf, tem;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
162 CHECK_STRING (filename, 0);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
163 filename = Fexpand_file_name (filename, Qnil);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
164
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
165 for (tail = Vbuffer_alist; CONSP (tail); tail = XCONS (tail)->cdr)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
166 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
167 buf = Fcdr (XCONS (tail)->car);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
168 if (XTYPE (buf) != Lisp_Buffer) continue;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
169 if (XTYPE (XBUFFER (buf)->filename) != Lisp_String) continue;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
170 tem = Fstring_equal (XBUFFER (buf)->filename, filename);
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
171 if (!NILP (tem))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
172 return buf;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
173 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
174 return Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
175 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
176
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
177 /* Incremented for each buffer created, to assign the buffer number. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
178 int buffer_count;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
179
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
180 DEFUN ("get-buffer-create", Fget_buffer_create, Sget_buffer_create, 1, 1, 0,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
181 "Return the buffer named NAME, or create such a buffer and return it.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
182 A new buffer is created if there is no live buffer named NAME.\n\
1195
beefc235076e * buffer.c (Fget_buffer_create): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1041
diff changeset
183 If NAME starts with a space, the new buffer does not keep undo information.\n\
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
184 If NAME is a buffer instead of a string, then it is the value returned.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
185 The value is never nil.")
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
186 (name)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
187 register Lisp_Object name;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
188 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
189 register Lisp_Object buf, function, tem;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
190 int count = specpdl_ptr - specpdl;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
191 register struct buffer *b;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
192
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
193 buf = Fget_buffer (name);
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
194 if (!NILP (buf))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
195 return buf;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
196
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
197 b = (struct buffer *) malloc (sizeof (struct buffer));
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
198 if (!b)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
199 memory_full ();
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
200
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
201 BUF_GAP_SIZE (b) = 20;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
202 BUFFER_ALLOC (BUF_BEG_ADDR (b), BUF_GAP_SIZE (b));
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
203 if (! BUF_BEG_ADDR (b))
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
204 memory_full ();
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
205
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
206 BUF_PT (b) = 1;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
207 BUF_GPT (b) = 1;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
208 BUF_BEGV (b) = 1;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
209 BUF_ZV (b) = 1;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
210 BUF_Z (b) = 1;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
211 BUF_MODIFF (b) = 1;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
212
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
213 /* Put this on the chain of all buffers including killed ones. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
214 b->next = all_buffers;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
215 all_buffers = b;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
216
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
217 b->mark = Fmake_marker ();
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
218 /*b->number = make_number (++buffer_count);*/
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
219 b->name = name;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
220 if (XSTRING (name)->data[0] != ' ')
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
221 b->undo_list = Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
222 else
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
223 b->undo_list = Qt;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
224
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
225 reset_buffer (b);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
226
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
227 /* Put this in the alist of all live buffers. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
228 XSET (buf, Lisp_Buffer, b);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
229 Vbuffer_alist = nconc2 (Vbuffer_alist, Fcons (Fcons (name, buf), Qnil));
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
230
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
231 b->mark = Fmake_marker ();
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
232 b->markers = Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
233 b->name = name;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
234
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
235 function = buffer_defaults.major_mode;
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
236 if (NILP (function))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
237 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
238 tem = Fget (current_buffer->major_mode, Qmode_class);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
239 if (EQ (tem, Qnil))
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
240 function = current_buffer->major_mode;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
241 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
242
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
243 if (NILP (function) || EQ (function, Qfundamental_mode))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
244 return buf;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
245
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
246 /* To select a nonfundamental mode,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
247 select the buffer temporarily and then call the mode function. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
248
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
249 record_unwind_protect (save_excursion_restore, save_excursion_save ());
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
250
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
251 Fset_buffer (buf);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
252 call0 (function);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
253
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
254 return unbind_to (count, buf);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
255 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
256
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
257 /* Reinitialize everything about a buffer except its name and contents. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
258
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
259 void
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
260 reset_buffer (b)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
261 register struct buffer *b;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
262 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
263 b->filename = Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
264 b->directory = (current_buffer) ? current_buffer->directory : Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
265 b->modtime = 0;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
266 b->save_modified = 1;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
267 b->save_length = 0;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
268 b->last_window_start = 1;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
269 b->backed_up = Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
270 b->auto_save_modified = 0;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
271 b->auto_save_file_name = Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
272 b->read_only = Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
273 b->fieldlist = Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
274 reset_buffer_local_variables(b);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
275 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
276
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
277 reset_buffer_local_variables(b)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
278 register struct buffer *b;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
279 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
280 register int offset;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
281
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
282 /* Reset the major mode to Fundamental, together with all the
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
283 things that depend on the major mode.
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
284 default-major-mode is handled at a higher level.
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
285 We ignore it here. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
286 b->major_mode = Qfundamental_mode;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
287 b->keymap = Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
288 b->abbrev_table = Vfundamental_mode_abbrev_table;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
289 b->mode_name = QSFundamental;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
290 b->minor_modes = Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
291 b->downcase_table = Vascii_downcase_table;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
292 b->upcase_table = Vascii_upcase_table;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
293 b->case_canon_table = Vascii_downcase_table;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
294 b->case_eqv_table = Vascii_upcase_table;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
295 #if 0
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
296 b->sort_table = XSTRING (Vascii_sort_table);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
297 b->folding_sort_table = XSTRING (Vascii_folding_sort_table);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
298 #endif /* 0 */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
299
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
300 /* Reset all per-buffer variables to their defaults. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
301 b->local_var_alist = Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
302 b->local_var_flags = 0;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
303
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
304 /* For each slot that has a default value,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
305 copy that into the slot. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
306
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
307 for (offset = (char *)&buffer_local_flags.name - (char *)&buffer_local_flags;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
308 offset < sizeof (struct buffer);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
309 offset += sizeof (Lisp_Object)) /* sizeof int == sizeof Lisp_Object */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
310 if (*(int *)(offset + (char *) &buffer_local_flags) > 0
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
311 || *(int *)(offset + (char *) &buffer_local_flags) == -2)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
312 *(Lisp_Object *)(offset + (char *)b) =
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
313 *(Lisp_Object *)(offset + (char *)&buffer_defaults);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
314 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
315
392
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
316 /* We split this away from generate-new-buffer, because rename-buffer
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
317 and set-visited-file-name ought to be able to use this to really
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
318 rename the buffer properly. */
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
319
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
320 DEFUN ("generate-new-buffer-name", Fgenerate_new_buffer_name, Sgenerate_new_buffer_name,
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
321 1, 1, 0,
392
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
322 "Return a string that is the name of no existing buffer based on NAME.\n\
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
323 If there is no live buffer named NAME, then return NAME.\n\
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
324 Otherwise modify name by appending `<NUMBER>', incrementing NUMBER\n\
392
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
325 until an unused name is found, and then return that name.")
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
326 (name)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
327 register Lisp_Object name;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
328 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
329 register Lisp_Object gentemp, tem;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
330 int count;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
331 char number[10];
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
332
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
333 CHECK_STRING (name, 0);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
334
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
335 tem = Fget_buffer (name);
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
336 if (NILP (tem))
392
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
337 return name;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
338
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
339 count = 1;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
340 while (1)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
341 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
342 sprintf (number, "<%d>", ++count);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
343 gentemp = concat2 (name, build_string (number));
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
344 tem = Fget_buffer (gentemp);
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
345 if (NILP (tem))
392
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
346 return gentemp;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
347 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
348 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
349
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
350
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
351 DEFUN ("buffer-name", Fbuffer_name, Sbuffer_name, 0, 1, 0,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
352 "Return the name of BUFFER, as a string.\n\
392
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
353 With no argument or nil as argument, return the name of the current buffer.")
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
354 (buffer)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
355 register Lisp_Object buffer;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
356 {
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
357 if (NILP (buffer))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
358 return current_buffer->name;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
359 CHECK_BUFFER (buffer, 0);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
360 return XBUFFER (buffer)->name;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
361 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
362
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
363 DEFUN ("buffer-file-name", Fbuffer_file_name, Sbuffer_file_name, 0, 1, 0,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
364 "Return name of file BUFFER is visiting, or nil if none.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
365 No argument or nil as argument means use the current buffer.")
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
366 (buffer)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
367 register Lisp_Object buffer;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
368 {
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
369 if (NILP (buffer))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
370 return current_buffer->filename;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
371 CHECK_BUFFER (buffer, 0);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
372 return XBUFFER (buffer)->filename;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
373 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
374
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
375 DEFUN ("buffer-local-variables", Fbuffer_local_variables,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
376 Sbuffer_local_variables, 0, 1, 0,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
377 "Return an alist of variables that are buffer-local in BUFFER.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
378 Each element looks like (SYMBOL . VALUE) and describes one variable.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
379 Note that storing new VALUEs in these elements doesn't change the variables.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
380 No argument or nil as argument means use current buffer as BUFFER.")
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
381 (buffer)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
382 register Lisp_Object buffer;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
383 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
384 register struct buffer *buf;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
385 register Lisp_Object val;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
386
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
387 if (NILP (buffer))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
388 buf = current_buffer;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
389 else
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
390 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
391 CHECK_BUFFER (buffer, 0);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
392 buf = XBUFFER (buffer);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
393 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
394
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
395 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
396 /* Reference each variable in the alist in our current buffer.
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
397 If inquiring about the current buffer, this gets the current values,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
398 so store them into the alist so the alist is up to date.
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
399 If inquiring about some other buffer, this swaps out any values
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
400 for that buffer, making the alist up to date automatically. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
401 register Lisp_Object tem;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
402 for (tem = buf->local_var_alist; CONSP (tem); tem = XCONS (tem)->cdr)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
403 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
404 Lisp_Object v1 = Fsymbol_value (XCONS (XCONS (tem)->car)->car);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
405 if (buf == current_buffer)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
406 XCONS (XCONS (tem)->car)->cdr = v1;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
407 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
408 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
409
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
410 /* Make a copy of the alist, to return it. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
411 val = Fcopy_alist (buf->local_var_alist);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
412
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
413 /* Add on all the variables stored in special slots. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
414 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
415 register int offset, mask;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
416
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
417 for (offset = (char *)&buffer_local_symbols.name - (char *)&buffer_local_symbols;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
418 offset < sizeof (struct buffer);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
419 offset += (sizeof (int))) /* sizeof int == sizeof Lisp_Object */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
420 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
421 mask = *(int *)(offset + (char *) &buffer_local_flags);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
422 if (mask == -1 || (buf->local_var_flags & mask))
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
423 if (XTYPE (*(Lisp_Object *)(offset + (char *)&buffer_local_symbols))
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
424 == Lisp_Symbol)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
425 val = Fcons (Fcons (*(Lisp_Object *)(offset + (char *)&buffer_local_symbols),
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
426 *(Lisp_Object *)(offset + (char *)buf)),
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
427 val);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
428 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
429 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
430 return (val);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
431 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
432
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
433
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
434 DEFUN ("buffer-modified-p", Fbuffer_modified_p, Sbuffer_modified_p,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
435 0, 1, 0,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
436 "Return t if BUFFER was modified since its file was last read or saved.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
437 No argument or nil as argument means use current buffer as BUFFER.")
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
438 (buffer)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
439 register Lisp_Object buffer;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
440 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
441 register struct buffer *buf;
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
442 if (NILP (buffer))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
443 buf = current_buffer;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
444 else
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
445 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
446 CHECK_BUFFER (buffer, 0);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
447 buf = XBUFFER (buffer);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
448 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
449
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
450 return buf->save_modified < BUF_MODIFF (buf) ? Qt : Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
451 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
452
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
453 DEFUN ("set-buffer-modified-p", Fset_buffer_modified_p, Sset_buffer_modified_p,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
454 1, 1, 0,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
455 "Mark current buffer as modified or unmodified according to FLAG.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
456 A non-nil FLAG means mark the buffer modified.")
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
457 (flag)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
458 register Lisp_Object flag;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
459 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
460 register int already;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
461 register Lisp_Object fn;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
462
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
463 #ifdef CLASH_DETECTION
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
464 /* If buffer becoming modified, lock the file.
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
465 If buffer becoming unmodified, unlock the file. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
466
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
467 fn = current_buffer->filename;
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
468 if (!NILP (fn))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
469 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
470 already = current_buffer->save_modified < MODIFF;
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
471 if (!already && !NILP (flag))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
472 lock_file (fn);
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
473 else if (already && NILP (flag))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
474 unlock_file (fn);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
475 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
476 #endif /* CLASH_DETECTION */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
477
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
478 current_buffer->save_modified = NILP (flag) ? MODIFF : 0;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
479 update_mode_lines++;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
480 return flag;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
481 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
482
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
483 DEFUN ("buffer-modified-tick", Fbuffer_modified_tick, Sbuffer_modified_tick,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
484 0, 1, 0,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
485 "Return BUFFER's tick counter, incremented for each change in text.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
486 Each buffer has a tick counter which is incremented each time the text in\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
487 that buffer is changed. It wraps around occasionally.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
488 No argument or nil as argument means use current buffer as BUFFER.")
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
489 (buffer)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
490 register Lisp_Object buffer;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
491 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
492 register struct buffer *buf;
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
493 if (NILP (buffer))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
494 buf = current_buffer;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
495 else
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
496 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
497 CHECK_BUFFER (buffer, 0);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
498 buf = XBUFFER (buffer);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
499 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
500
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
501 return make_number (BUF_MODIFF (buf));
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
502 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
503
392
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
504 DEFUN ("rename-buffer", Frename_buffer, Srename_buffer, 1, 2,
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
505 "sRename buffer (to new name): ",
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
506 "Change current buffer's name to NEWNAME (a string).\n\
392
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
507 If second arg DISTINGUISH is nil or omitted, it is an error if a\n\
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
508 buffer named NEWNAME already exists.\n\
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
509 If DISTINGUISH is non-nil, come up with a new name using\n\
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
510 `generate-new-buffer-name'.\n\
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
511 Return the name we actually gave the buffer.\n\
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
512 This does not change the name of the visited file (if any).")
392
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
513 (name, distinguish)
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
514 register Lisp_Object name, distinguish;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
515 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
516 register Lisp_Object tem, buf;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
517
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
518 CHECK_STRING (name, 0);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
519 tem = Fget_buffer (name);
392
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
520 if (XBUFFER (tem) == current_buffer)
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
521 return current_buffer->name;
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
522 if (!NILP (tem))
392
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
523 {
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
524 if (!NILP (distinguish))
392
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
525 name = Fgenerate_new_buffer_name (name);
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
526 else
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
527 error ("Buffer name \"%s\" is in use", XSTRING (name)->data);
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
528 }
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
529
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
530 current_buffer->name = name;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
531 XSET (buf, Lisp_Buffer, current_buffer);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
532 Fsetcar (Frassq (buf, Vbuffer_alist), name);
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
533 if (NILP (current_buffer->filename) && !NILP (current_buffer->auto_save_file_name))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
534 call0 (intern ("rename-auto-save-file"));
392
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
535 return name;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
536 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
537
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
538 DEFUN ("other-buffer", Fother_buffer, Sother_buffer, 0, 1, 0,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
539 "Return most recently selected buffer other than BUFFER.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
540 Buffers not visible in windows are preferred to visible buffers.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
541 If no other buffer exists, the buffer `*scratch*' is returned.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
542 If BUFFER is omitted or nil, some interesting buffer is returned.")
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
543 (buffer)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
544 register Lisp_Object buffer;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
545 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
546 register Lisp_Object tail, buf, notsogood, tem;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
547 notsogood = Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
548
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
549 for (tail = Vbuffer_alist; !NILP (tail); tail = Fcdr (tail))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
550 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
551 buf = Fcdr (Fcar (tail));
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
552 if (EQ (buf, buffer))
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
553 continue;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
554 if (XSTRING (XBUFFER (buf)->name)->data[0] == ' ')
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
555 continue;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
556 tem = Fget_buffer_window (buf, Qnil);
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
557 if (NILP (tem))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
558 return buf;
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
559 if (NILP (notsogood))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
560 notsogood = buf;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
561 }
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
562 if (!NILP (notsogood))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
563 return notsogood;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
564 return Fget_buffer_create (build_string ("*scratch*"));
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
565 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
566
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
567 DEFUN ("buffer-disable-undo", Fbuffer_disable_undo, Sbuffer_disable_undo, 1,1,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
568 0,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
569 "Make BUFFER stop keeping undo information.")
648
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 585
diff changeset
570 (buffer)
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 585
diff changeset
571 register Lisp_Object buffer;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
572 {
648
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 585
diff changeset
573 Lisp_Object real_buffer;
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 585
diff changeset
574
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 585
diff changeset
575 if (NILP (buffer))
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 585
diff changeset
576 XSET (real_buffer, Lisp_Buffer, current_buffer);
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 585
diff changeset
577 else
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 585
diff changeset
578 {
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 585
diff changeset
579 real_buffer = Fget_buffer (buffer);
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 585
diff changeset
580 if (NILP (real_buffer))
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 585
diff changeset
581 nsberror (buffer);
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 585
diff changeset
582 }
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 585
diff changeset
583
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 585
diff changeset
584 XBUFFER (real_buffer)->undo_list = Qt;
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 585
diff changeset
585
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
586 return Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
587 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
588
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
589 DEFUN ("buffer-enable-undo", Fbuffer_enable_undo, Sbuffer_enable_undo,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
590 0, 1, "",
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
591 "Start keeping undo information for buffer BUFFER.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
592 No argument or nil as argument means do this for the current buffer.")
648
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 585
diff changeset
593 (buffer)
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 585
diff changeset
594 register Lisp_Object buffer;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
595 {
648
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 585
diff changeset
596 Lisp_Object real_buffer;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
597
648
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 585
diff changeset
598 if (NILP (buffer))
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 585
diff changeset
599 XSET (real_buffer, Lisp_Buffer, current_buffer);
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
600 else
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
601 {
648
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 585
diff changeset
602 real_buffer = Fget_buffer (buffer);
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 585
diff changeset
603 if (NILP (real_buffer))
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 585
diff changeset
604 nsberror (buffer);
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
605 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
606
648
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 585
diff changeset
607 if (EQ (XBUFFER (real_buffer)->undo_list, Qt))
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 585
diff changeset
608 XBUFFER (real_buffer)->undo_list = Qnil;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
609
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
610 return Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
611 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
612
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
613 /*
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
614 DEFVAR_LISP ("kill-buffer-hook", no_cell, "\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
615 Hook to be run (by `run-hooks', which see) when a buffer is killed.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
616 The buffer being killed will be current while the hook is running.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
617 See `kill-buffer'."
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
618 */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
619 DEFUN ("kill-buffer", Fkill_buffer, Skill_buffer, 1, 1, "bKill buffer: ",
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
620 "Kill the buffer BUFFER.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
621 The argument may be a buffer or may be the name of a buffer.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
622 An argument of nil means kill the current buffer.\n\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
623 Value is t if the buffer is actually killed, nil if user says no.\n\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
624 The value of `kill-buffer-hook' (which may be local to that buffer),\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
625 if not void, is a list of functions to be called, with no arguments,\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
626 before the buffer is actually killed. The buffer to be killed is current\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
627 when the hook functions are called.\n\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
628 Any processes that have this buffer as the `process-buffer' are killed\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
629 with `delete-process'.")
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
630 (bufname)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
631 Lisp_Object bufname;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
632 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
633 Lisp_Object buf;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
634 register struct buffer *b;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
635 register Lisp_Object tem;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
636 register struct Lisp_Marker *m;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
637 struct gcpro gcpro1, gcpro2;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
638
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
639 if (NILP (bufname))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
640 buf = Fcurrent_buffer ();
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
641 else
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
642 buf = Fget_buffer (bufname);
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
643 if (NILP (buf))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
644 nsberror (bufname);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
645
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
646 b = XBUFFER (buf);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
647
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
648 /* Query if the buffer is still modified. */
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
649 if (INTERACTIVE && !NILP (b->filename)
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
650 && BUF_MODIFF (b) > b->save_modified)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
651 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
652 GCPRO2 (buf, bufname);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
653 tem = do_yes_or_no_p (format1 ("Buffer %s modified; kill anyway? ",
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
654 XSTRING (b->name)->data));
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
655 UNGCPRO;
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
656 if (NILP (tem))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
657 return Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
658 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
659
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
660 /* Run kill-buffer hook with the buffer to be killed the current buffer. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
661 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
662 register Lisp_Object val;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
663 int count = specpdl_ptr - specpdl;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
664
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
665 record_unwind_protect (save_excursion_restore, save_excursion_save ());
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
666 set_buffer_internal (b);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
667 call1 (Vrun_hooks, Qkill_buffer_hook);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
668 unbind_to (count, Qnil);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
669 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
670
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
671 /* We have no more questions to ask. Verify that it is valid
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
672 to kill the buffer. This must be done after the questions
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
673 since anything can happen within do_yes_or_no_p. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
674
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
675 /* Don't kill the minibuffer now current. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
676 if (EQ (buf, XWINDOW (minibuf_window)->buffer))
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
677 return Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
678
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
679 if (NILP (b->name))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
680 return Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
681
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
682 /* Make this buffer not be current.
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
683 In the process, notice if this is the sole visible buffer
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
684 and give up if so. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
685 if (b == current_buffer)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
686 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
687 tem = Fother_buffer (buf);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
688 Fset_buffer (tem);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
689 if (b == current_buffer)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
690 return Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
691 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
692
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
693 /* Now there is no question: we can kill the buffer. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
694
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
695 #ifdef CLASH_DETECTION
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
696 /* Unlock this buffer's file, if it is locked. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
697 unlock_buffer (b);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
698 #endif /* CLASH_DETECTION */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
699
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
700 kill_buffer_processes (buf);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
701
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
702 tem = Vinhibit_quit;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
703 Vinhibit_quit = Qt;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
704 Vbuffer_alist = Fdelq (Frassq (buf, Vbuffer_alist), Vbuffer_alist);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
705 Freplace_buffer_in_windows (buf);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
706 Vinhibit_quit = tem;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
707
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
708 /* Delete any auto-save file. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
709 if (XTYPE (b->auto_save_file_name) == Lisp_String)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
710 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
711 Lisp_Object tem;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
712 tem = Fsymbol_value (intern ("delete-auto-save-files"));
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
713 if (! NILP (tem))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
714 unlink (XSTRING (b->auto_save_file_name)->data);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
715 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
716
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
717 /* Unchain all markers of this buffer
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
718 and leave them pointing nowhere. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
719 for (tem = b->markers; !EQ (tem, Qnil); )
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
720 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
721 m = XMARKER (tem);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
722 m->buffer = 0;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
723 tem = m->chain;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
724 m->chain = Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
725 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
726 b->markers = Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
727
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
728 b->name = Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
729 BUFFER_FREE (BUF_BEG_ADDR (b));
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
730 b->undo_list = Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
731
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
732 return Qt;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
733 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
734
550
3072b38789a7 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
735 /* Move the assoc for buffer BUF to the front of buffer-alist. Since
3072b38789a7 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
736 we do this each time BUF is selected visibly, the more recently
3072b38789a7 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
737 selected buffers are always closer to the front of the list. This
3072b38789a7 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
738 means that other_buffer is more likely to choose a relevant buffer. */
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
739
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
740 record_buffer (buf)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
741 Lisp_Object buf;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
742 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
743 register Lisp_Object link, prev;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
744
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
745 prev = Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
746 for (link = Vbuffer_alist; CONSP (link); link = XCONS (link)->cdr)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
747 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
748 if (EQ (XCONS (XCONS (link)->car)->cdr, buf))
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
749 break;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
750 prev = link;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
751 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
752
550
3072b38789a7 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
753 /* Effectively do Vbuffer_alist = Fdelq (link, Vbuffer_alist);
3072b38789a7 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
754 we cannot use Fdelq itself here because it allows quitting. */
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
755
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
756 if (NILP (prev))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
757 Vbuffer_alist = XCONS (Vbuffer_alist)->cdr;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
758 else
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
759 XCONS (prev)->cdr = XCONS (XCONS (prev)->cdr)->cdr;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
760
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
761 XCONS(link)->cdr = Vbuffer_alist;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
762 Vbuffer_alist = link;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
763 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
764
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
765 DEFUN ("switch-to-buffer", Fswitch_to_buffer, Sswitch_to_buffer, 1, 2, "BSwitch to buffer: ",
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
766 "Select buffer BUFFER in the current window.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
767 BUFFER may be a buffer or a buffer name.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
768 Optional second arg NORECORD non-nil means\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
769 do not put this buffer at the front of the list of recently selected ones.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
770 \n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
771 WARNING: This is NOT the way to work on another buffer temporarily\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
772 within a Lisp program! Use `set-buffer' instead. That avoids messing with\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
773 the window-buffer correspondences.")
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
774 (bufname, norecord)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
775 Lisp_Object bufname, norecord;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
776 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
777 register Lisp_Object buf;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
778 Lisp_Object tem;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
779
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
780 if (EQ (minibuf_window, selected_window))
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
781 error ("Cannot switch buffers in minibuffer window");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
782 tem = Fwindow_dedicated_p (selected_window);
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
783 if (!NILP (tem))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
784 error ("Cannot switch buffers in a dedicated window");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
785
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
786 if (NILP (bufname))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
787 buf = Fother_buffer (Fcurrent_buffer ());
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
788 else
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
789 buf = Fget_buffer_create (bufname);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
790 Fset_buffer (buf);
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
791 if (NILP (norecord))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
792 record_buffer (buf);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
793
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
794 Fset_window_buffer (EQ (selected_window, minibuf_window)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
795 ? Fnext_window (minibuf_window, Qnil) : selected_window,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
796 buf);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
797
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
798 return Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
799 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
800
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
801 DEFUN ("pop-to-buffer", Fpop_to_buffer, Spop_to_buffer, 1, 2, 0,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
802 "Select buffer BUFFER in some window, preferably a different one.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
803 If BUFFER is nil, then some other buffer is chosen.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
804 If `pop-up-windows' is non-nil, windows can be split to do this.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
805 If optional second arg OTHER-WINDOW is non-nil, insist on finding another\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
806 window even if BUFFER is already visible in the selected window.")
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
807 (bufname, other)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
808 Lisp_Object bufname, other;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
809 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
810 register Lisp_Object buf;
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
811 if (NILP (bufname))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
812 buf = Fother_buffer (Fcurrent_buffer ());
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
813 else
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
814 buf = Fget_buffer_create (bufname);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
815 Fset_buffer (buf);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
816 record_buffer (buf);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
817 Fselect_window (Fdisplay_buffer (buf, other));
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
818 return Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
819 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
820
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
821 DEFUN ("current-buffer", Fcurrent_buffer, Scurrent_buffer, 0, 0, 0,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
822 "Return the current buffer as a Lisp object.")
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
823 ()
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
824 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
825 register Lisp_Object buf;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
826 XSET (buf, Lisp_Buffer, current_buffer);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
827 return buf;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
828 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
829
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
830 /* Set the current buffer to b */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
831
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
832 void
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
833 set_buffer_internal (b)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
834 register struct buffer *b;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
835 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
836 register struct buffer *old_buf;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
837 register Lisp_Object tail, valcontents;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
838 enum Lisp_Type tem;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
839
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
840 if (current_buffer == b)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
841 return;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
842
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
843 windows_or_buffers_changed = 1;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
844 old_buf = current_buffer;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
845 current_buffer = b;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
846 last_known_column_point = -1; /* invalidate indentation cache */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
847
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
848 /* Look down buffer's list of local Lisp variables
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
849 to find and update any that forward into C variables. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
850
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
851 for (tail = b->local_var_alist; !NILP (tail); tail = XCONS (tail)->cdr)
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
852 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
853 valcontents = XSYMBOL (XCONS (XCONS (tail)->car)->car)->value;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
854 if ((XTYPE (valcontents) == Lisp_Buffer_Local_Value
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
855 || XTYPE (valcontents) == Lisp_Some_Buffer_Local_Value)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
856 && (tem = XTYPE (XCONS (valcontents)->car),
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
857 (tem == Lisp_Boolfwd || tem == Lisp_Intfwd
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
858 || tem == Lisp_Objfwd)))
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
859 /* Just reference the variable
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
860 to cause it to become set for this buffer. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
861 Fsymbol_value (XCONS (XCONS (tail)->car)->car);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
862 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
863
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
864 /* Do the same with any others that were local to the previous buffer */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
865
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
866 if (old_buf)
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
867 for (tail = old_buf->local_var_alist; !NILP (tail); tail = XCONS (tail)->cdr)
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
868 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
869 valcontents = XSYMBOL (XCONS (XCONS (tail)->car)->car)->value;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
870 if ((XTYPE (valcontents) == Lisp_Buffer_Local_Value
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
871 || XTYPE (valcontents) == Lisp_Some_Buffer_Local_Value)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
872 && (tem = XTYPE (XCONS (valcontents)->car),
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
873 (tem == Lisp_Boolfwd || tem == Lisp_Intfwd
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
874 || tem == Lisp_Objfwd)))
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
875 /* Just reference the variable
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
876 to cause it to become set for this buffer. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
877 Fsymbol_value (XCONS (XCONS (tail)->car)->car);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
878 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
879 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
880
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
881 DEFUN ("set-buffer", Fset_buffer, Sset_buffer, 1, 1, 0,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
882 "Make the buffer BUFFER current for editing operations.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
883 BUFFER may be a buffer or the name of an existing buffer.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
884 See also `save-excursion' when you want to make a buffer current temporarily.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
885 This function does not display the buffer, so its effect ends\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
886 when the current command terminates.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
887 Use `switch-to-buffer' or `pop-to-buffer' to switch buffers permanently.")
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
888 (bufname)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
889 register Lisp_Object bufname;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
890 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
891 register Lisp_Object buffer;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
892 buffer = Fget_buffer (bufname);
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
893 if (NILP (buffer))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
894 nsberror (bufname);
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
895 if (NILP (XBUFFER (buffer)->name))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
896 error ("Selecting deleted buffer");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
897 set_buffer_internal (XBUFFER (buffer));
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
898 return buffer;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
899 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
900
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
901 DEFUN ("barf-if-buffer-read-only", Fbarf_if_buffer_read_only,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
902 Sbarf_if_buffer_read_only, 0, 0, 0,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
903 "Signal a `buffer-read-only' error if the current buffer is read-only.")
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
904 ()
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
905 {
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
906 while (!NILP (current_buffer->read_only))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
907 Fsignal (Qbuffer_read_only, (Fcons (Fcurrent_buffer (), Qnil)));
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
908 return Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
909 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
910
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
911 DEFUN ("bury-buffer", Fbury_buffer, Sbury_buffer, 0, 1, "",
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
912 "Put BUFFER at the end of the list of all buffers.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
913 There it is the least likely candidate for `other-buffer' to return;\n\
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 648
diff changeset
914 thus, the least likely buffer for \\[switch-to-buffer] to select by default.\n\
1252
86a17674c2a1 * buffer.c (Fbury_buffer): This used to undisplay the buffer being
Jim Blandy <jimb@redhat.com>
parents: 1195
diff changeset
915 BUFFER is also removed from the selected window if it was displayed there.\n\
86a17674c2a1 * buffer.c (Fbury_buffer): This used to undisplay the buffer being
Jim Blandy <jimb@redhat.com>
parents: 1195
diff changeset
916 If BUFFER is omitted, the current buffer is buried.")
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
917 (buf)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
918 register Lisp_Object buf;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
919 {
1252
86a17674c2a1 * buffer.c (Fbury_buffer): This used to undisplay the buffer being
Jim Blandy <jimb@redhat.com>
parents: 1195
diff changeset
920 /* Figure out what buffer we're going to bury. */
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
921 if (NILP (buf))
1252
86a17674c2a1 * buffer.c (Fbury_buffer): This used to undisplay the buffer being
Jim Blandy <jimb@redhat.com>
parents: 1195
diff changeset
922 XSET (buf, Lisp_Buffer, current_buffer);
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
923 else
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
924 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
925 Lisp_Object buf1;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
926
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
927 buf1 = Fget_buffer (buf);
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
928 if (NILP (buf1))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
929 nsberror (buf);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
930 buf = buf1;
1252
86a17674c2a1 * buffer.c (Fbury_buffer): This used to undisplay the buffer being
Jim Blandy <jimb@redhat.com>
parents: 1195
diff changeset
931 }
86a17674c2a1 * buffer.c (Fbury_buffer): This used to undisplay the buffer being
Jim Blandy <jimb@redhat.com>
parents: 1195
diff changeset
932
86a17674c2a1 * buffer.c (Fbury_buffer): This used to undisplay the buffer being
Jim Blandy <jimb@redhat.com>
parents: 1195
diff changeset
933 /* Remove it from the screen. */
86a17674c2a1 * buffer.c (Fbury_buffer): This used to undisplay the buffer being
Jim Blandy <jimb@redhat.com>
parents: 1195
diff changeset
934 if (EQ (buf, XWINDOW (selected_frame)->buffer))
86a17674c2a1 * buffer.c (Fbury_buffer): This used to undisplay the buffer being
Jim Blandy <jimb@redhat.com>
parents: 1195
diff changeset
935 Fswitch_to_buffer (Fother_buffer (buf), Qnil);
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
936
1252
86a17674c2a1 * buffer.c (Fbury_buffer): This used to undisplay the buffer being
Jim Blandy <jimb@redhat.com>
parents: 1195
diff changeset
937 /* Move it to the end of the buffer list. */
86a17674c2a1 * buffer.c (Fbury_buffer): This used to undisplay the buffer being
Jim Blandy <jimb@redhat.com>
parents: 1195
diff changeset
938 {
86a17674c2a1 * buffer.c (Fbury_buffer): This used to undisplay the buffer being
Jim Blandy <jimb@redhat.com>
parents: 1195
diff changeset
939 register Lisp_Object aelt, link;
86a17674c2a1 * buffer.c (Fbury_buffer): This used to undisplay the buffer being
Jim Blandy <jimb@redhat.com>
parents: 1195
diff changeset
940
86a17674c2a1 * buffer.c (Fbury_buffer): This used to undisplay the buffer being
Jim Blandy <jimb@redhat.com>
parents: 1195
diff changeset
941 aelt = Frassq (buf, Vbuffer_alist);
86a17674c2a1 * buffer.c (Fbury_buffer): This used to undisplay the buffer being
Jim Blandy <jimb@redhat.com>
parents: 1195
diff changeset
942 link = Fmemq (aelt, Vbuffer_alist);
86a17674c2a1 * buffer.c (Fbury_buffer): This used to undisplay the buffer being
Jim Blandy <jimb@redhat.com>
parents: 1195
diff changeset
943 Vbuffer_alist = Fdelq (aelt, Vbuffer_alist);
86a17674c2a1 * buffer.c (Fbury_buffer): This used to undisplay the buffer being
Jim Blandy <jimb@redhat.com>
parents: 1195
diff changeset
944 XCONS (link)->cdr = Qnil;
86a17674c2a1 * buffer.c (Fbury_buffer): This used to undisplay the buffer being
Jim Blandy <jimb@redhat.com>
parents: 1195
diff changeset
945 Vbuffer_alist = nconc2 (Vbuffer_alist, link);
86a17674c2a1 * buffer.c (Fbury_buffer): This used to undisplay the buffer being
Jim Blandy <jimb@redhat.com>
parents: 1195
diff changeset
946 }
86a17674c2a1 * buffer.c (Fbury_buffer): This used to undisplay the buffer being
Jim Blandy <jimb@redhat.com>
parents: 1195
diff changeset
947
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
948 return Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
949 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
950
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
951 DEFUN ("erase-buffer", Ferase_buffer, Serase_buffer, 0, 0, 0,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
952 "Delete the entire contents of the current buffer.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
953 Any clipping restriction in effect (see `narrow-to-buffer') is removed,\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
954 so the buffer is truly empty after this.")
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
955 ()
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
956 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
957 Fwiden ();
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
958 del_range (BEG, Z);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
959 current_buffer->last_window_start = 1;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
960 /* Prevent warnings, or suspension of auto saving, that would happen
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
961 if future size is less than past size. Use of erase-buffer
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
962 implies that the future text is not really related to the past text. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
963 XFASTINT (current_buffer->save_length) = 0;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
964 return Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
965 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
966
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
967 validate_region (b, e)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
968 register Lisp_Object *b, *e;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
969 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
970 register int i;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
971
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
972 CHECK_NUMBER_COERCE_MARKER (*b, 0);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
973 CHECK_NUMBER_COERCE_MARKER (*e, 1);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
974
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
975 if (XINT (*b) > XINT (*e))
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
976 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
977 i = XFASTINT (*b); /* This is legit even if *b is < 0 */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
978 *b = *e;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
979 XFASTINT (*e) = i; /* because this is all we do with i. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
980 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
981
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
982 if (!(BEGV <= XINT (*b) && XINT (*b) <= XINT (*e)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
983 && XINT (*e) <= ZV))
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
984 args_out_of_range (*b, *e);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
985 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
986
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
987 Lisp_Object
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
988 list_buffers_1 (files)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
989 Lisp_Object files;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
990 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
991 register Lisp_Object tail, tem, buf;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
992 Lisp_Object col1, col2, col3, minspace;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
993 register struct buffer *old = current_buffer, *b;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
994 int desired_point = 0;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
995 Lisp_Object other_file_symbol;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
996
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
997 other_file_symbol = intern ("list-buffers-directory");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
998
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
999 XFASTINT (col1) = 19;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1000 XFASTINT (col2) = 25;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1001 XFASTINT (col3) = 40;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1002 XFASTINT (minspace) = 1;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1003
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1004 Fset_buffer (Vstandard_output);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1005
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1006 tail = intern ("Buffer-menu-mode");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1007 if (!EQ (tail, current_buffer->major_mode)
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
1008 && (tem = Ffboundp (tail), !NILP (tem)))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1009 call0 (tail);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1010 Fbuffer_disable_undo (Vstandard_output);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1011 current_buffer->read_only = Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1012
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1013 write_string ("\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1014 MR Buffer Size Mode File\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1015 -- ------ ---- ---- ----\n", -1);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1016
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
1017 for (tail = Vbuffer_alist; !NILP (tail); tail = Fcdr (tail))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1018 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1019 buf = Fcdr (Fcar (tail));
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1020 b = XBUFFER (buf);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1021 /* Don't mention the minibuffers. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1022 if (XSTRING (b->name)->data[0] == ' ')
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1023 continue;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1024 /* Optionally don't mention buffers that lack files. */
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
1025 if (!NILP (files) && NILP (b->filename))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1026 continue;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1027 /* Identify the current buffer. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1028 if (b == old)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1029 desired_point = point;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1030 write_string (b == old ? "." : " ", -1);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1031 /* Identify modified buffers */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1032 write_string (BUF_MODIFF (b) > b->save_modified ? "*" : " ", -1);
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
1033 write_string (NILP (b->read_only) ? " " : "% ", -1);
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1034 Fprinc (b->name, Qnil);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1035 Findent_to (col1, make_number (2));
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1036 XFASTINT (tem) = BUF_Z (b) - BUF_BEG (b);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1037 Fprin1 (tem, Qnil);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1038 Findent_to (col2, minspace);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1039 Fprinc (b->mode_name, Qnil);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1040 Findent_to (col3, minspace);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1041
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
1042 if (!NILP (b->filename))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1043 Fprinc (b->filename, Qnil);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1044 else
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1045 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1046 /* No visited file; check local value of list-buffers-directory. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1047 Lisp_Object tem;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1048 set_buffer_internal (b);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1049 tem = Fboundp (other_file_symbol);
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
1050 if (!NILP (tem))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1051 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1052 tem = Fsymbol_value (other_file_symbol);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1053 Fset_buffer (Vstandard_output);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1054 if (XTYPE (tem) == Lisp_String)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1055 Fprinc (tem, Qnil);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1056 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1057 else
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1058 Fset_buffer (Vstandard_output);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1059 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1060 write_string ("\n", -1);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1061 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1062
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1063 current_buffer->read_only = Qt;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1064 set_buffer_internal (old);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1065 /* Foo. This doesn't work since temp_output_buffer_show sets point to 1
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1066 if (desired_point)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1067 XBUFFER (Vstandard_output)->text.pointloc = desired_point;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1068 */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1069 return Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1070 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1071
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1072 DEFUN ("list-buffers", Flist_buffers, Slist_buffers, 0, 1, "P",
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1073 "Display a list of names of existing buffers.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1074 The list is displayed in a buffer named `*Buffer List*'.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1075 Note that buffers with names starting with spaces are omitted.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1076 Non-null optional arg FILES-ONLY means mention only file buffers.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1077 \n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1078 The M column contains a * for buffers that are modified.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1079 The R column contains a % for buffers that are read-only.")
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1080 (files)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1081 Lisp_Object files;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1082 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1083 internal_with_output_to_temp_buffer ("*Buffer List*",
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1084 list_buffers_1, files);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1085 return Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1086 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1087
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1088 DEFUN ("kill-all-local-variables", Fkill_all_local_variables, Skill_all_local_variables,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1089 0, 0, 0,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1090 "Switch to Fundamental mode by killing current buffer's local variables.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1091 Most local variable bindings are eliminated so that the default values\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1092 become effective once more. Also, the syntax table is set from\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1093 `standard-syntax-table', the local keymap is set to nil,\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1094 and the abbrev table from `fundamental-mode-abbrev-table'.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1095 This function also forces redisplay of the mode line.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1096 \n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1097 Every function to select a new major mode starts by\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1098 calling this function.\n\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1099 As a special exception, local variables whose names have\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1100 a non-nil `permanent-local' property are not eliminated by this function.")
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1101 ()
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1102 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1103 register Lisp_Object alist, sym, tem;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1104 Lisp_Object oalist;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1105 oalist = current_buffer->local_var_alist;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1106
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1107 /* Make sure no local variables remain set up with this buffer
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1108 for their current values. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1109
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
1110 for (alist = oalist; !NILP (alist); alist = XCONS (alist)->cdr)
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1111 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1112 sym = XCONS (XCONS (alist)->car)->car;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1113
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1114 /* Need not do anything if some other buffer's binding is now encached. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1115 tem = XCONS (XCONS (XSYMBOL (sym)->value)->cdr)->car;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1116 if (XBUFFER (tem) == current_buffer)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1117 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1118 /* Symbol is set up for this buffer's old local value.
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1119 Set it up for the current buffer with the default value. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1120
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1121 tem = XCONS (XCONS (XSYMBOL (sym)->value)->cdr)->cdr;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1122 XCONS (tem)->car = tem;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1123 XCONS (XCONS (XSYMBOL (sym)->value)->cdr)->car = Fcurrent_buffer ();
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1124 store_symval_forwarding (sym, XCONS (XSYMBOL (sym)->value)->car,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1125 XCONS (tem)->cdr);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1126 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1127 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1128
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1129 /* Actually eliminate all local bindings of this buffer. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1130
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1131 reset_buffer_local_variables (current_buffer);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1132
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1133 /* Redisplay mode lines; we are changing major mode. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1134
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1135 update_mode_lines++;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1136
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1137 /* Any which are supposed to be permanent,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1138 make local again, with the same values they had. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1139
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
1140 for (alist = oalist; !NILP (alist); alist = XCONS (alist)->cdr)
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1141 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1142 sym = XCONS (XCONS (alist)->car)->car;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1143 tem = Fget (sym, Qpermanent_local);
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
1144 if (! NILP (tem))
392
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
1145 {
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
1146 Fmake_local_variable (sym);
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
1147 Fset (sym, XCONS (XCONS (alist)->car)->cdr);
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
1148 }
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1149 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1150
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1151 /* Force mode-line redisplay. Useful here because all major mode
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1152 commands call this function. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1153 update_mode_lines++;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1154
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1155 return Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1156 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1157
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1158 DEFUN ("region-fields", Fregion_fields, Sregion_fields, 2, 4, "",
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1159 "Return list of fields overlapping a given portion of a buffer.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1160 The portion is specified by arguments START, END and BUFFER.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1161 BUFFER defaults to the current buffer.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1162 Optional 4th arg ERROR-CHECK non nil means just report an error\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1163 if any protected fields overlap this portion.")
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1164 (start, end, buffer, error_check)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1165 Lisp_Object start, end, buffer, error_check;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1166 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1167 register int start_loc, end_loc;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1168 Lisp_Object fieldlist;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1169 Lisp_Object collector;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1170
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
1171 if (NILP (buffer))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1172 fieldlist = current_buffer->fieldlist;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1173 else
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1174 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1175 CHECK_BUFFER (buffer, 1);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1176 fieldlist = XBUFFER (buffer)->fieldlist;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1177 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1178
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1179 CHECK_NUMBER_COERCE_MARKER (start, 2);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1180 start_loc = XINT (start);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1181
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1182 CHECK_NUMBER_COERCE_MARKER (end, 2);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1183 end_loc = XINT (end);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1184
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1185 collector = Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1186
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1187 while (XTYPE (fieldlist) == Lisp_Cons)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1188 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1189 register Lisp_Object field;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1190 register int field_start, field_end;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1191
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1192 field = XCONS (fieldlist)->car;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1193 field_start = marker_position (FIELD_START_MARKER (field)) - 1;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1194 field_end = marker_position (FIELD_END_MARKER (field));
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1195
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1196 if ((start_loc < field_start && end_loc > field_start)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1197 || (start_loc >= field_start && start_loc < field_end))
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1198 {
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
1199 if (!NILP (error_check))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1200 {
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
1201 if (!NILP (FIELD_PROTECTED_FLAG (field)))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1202 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1203 struct gcpro gcpro1;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1204 GCPRO1 (fieldlist);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1205 Fsignal (Qprotected_field, Fcons (field, Qnil));
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1206 UNGCPRO;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1207 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1208 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1209 else
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1210 collector = Fcons (field, collector);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1211 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1212
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1213 fieldlist = XCONS (fieldlist)->cdr;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1214 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1215
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1216 return collector;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1217 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1218
1001
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
1219 /* Somebody has tried to store NEWVAL into the buffer-local slot with
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
1220 offset XUINT (valcontents), and NEWVAL has an unacceptable type. */
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
1221 void
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
1222 buffer_slot_type_mismatch (valcontents, newval)
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
1223 Lisp_Object valcontents, newval;
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
1224 {
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
1225 unsigned int offset = XUINT (valcontents);
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
1226 char *symbol_name =
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
1227 (XSYMBOL (*(Lisp_Object *)(offset + (char *)&buffer_local_symbols))
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
1228 ->name->data);
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
1229 char *type_name;
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
1230
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
1231 switch (XINT (*(Lisp_Object *)(offset + (char *)&buffer_local_types)))
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
1232 {
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
1233 case Lisp_Int: type_name = "integers"; break;
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
1234 case Lisp_String: type_name = "strings"; break;
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
1235 case Lisp_Marker: type_name = "markers"; break;
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
1236 case Lisp_Symbol: type_name = "symbols"; break;
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
1237 case Lisp_Cons: type_name = "lists"; break;
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
1238 case Lisp_Vector: type_name = "vector"; break;
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
1239 default:
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
1240 abort ();
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
1241 }
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
1242
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
1243 error ("only %s should be stored in the buffer-local variable %s",
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
1244 type_name, symbol_name);
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
1245 }
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
1246
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1247 init_buffer_once ()
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1248 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1249 register Lisp_Object tem;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1250
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1251 /* Make sure all markable slots in buffer_defaults
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1252 are initialized reasonably, so mark_buffer won't choke. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1253 reset_buffer (&buffer_defaults);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1254 reset_buffer (&buffer_local_symbols);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1255 XSET (Vbuffer_defaults, Lisp_Buffer, &buffer_defaults);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1256 XSET (Vbuffer_local_symbols, Lisp_Buffer, &buffer_local_symbols);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1257
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1258 /* Set up the default values of various buffer slots. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1259 /* Must do these before making the first buffer! */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1260
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1261 /* real setup is done in loaddefs.el */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1262 buffer_defaults.mode_line_format = build_string ("%-");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1263 buffer_defaults.abbrev_mode = Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1264 buffer_defaults.overwrite_mode = Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1265 buffer_defaults.case_fold_search = Qt;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1266 buffer_defaults.auto_fill_function = Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1267 buffer_defaults.selective_display = Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1268 #ifndef old
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1269 buffer_defaults.selective_display_ellipses = Qt;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1270 #endif
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1271 buffer_defaults.abbrev_table = Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1272 buffer_defaults.display_table = Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1273 buffer_defaults.fieldlist = Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1274 buffer_defaults.undo_list = Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1275
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1276 XFASTINT (buffer_defaults.tab_width) = 8;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1277 buffer_defaults.truncate_lines = Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1278 buffer_defaults.ctl_arrow = Qt;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1279
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1280 XFASTINT (buffer_defaults.fill_column) = 70;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1281 XFASTINT (buffer_defaults.left_margin) = 0;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1282
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1283 /* Assign the local-flags to the slots that have default values.
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1284 The local flag is a bit that is used in the buffer
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1285 to say that it has its own local value for the slot.
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1286 The local flag bits are in the local_var_flags slot of the buffer. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1287
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1288 /* Nothing can work if this isn't true */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1289 if (sizeof (int) != sizeof (Lisp_Object)) abort ();
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1290
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1291 /* 0 means not a lisp var, -1 means always local, else mask */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1292 bzero (&buffer_local_flags, sizeof buffer_local_flags);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1293 XFASTINT (buffer_local_flags.filename) = -1;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1294 XFASTINT (buffer_local_flags.directory) = -1;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1295 XFASTINT (buffer_local_flags.backed_up) = -1;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1296 XFASTINT (buffer_local_flags.save_length) = -1;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1297 XFASTINT (buffer_local_flags.auto_save_file_name) = -1;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1298 XFASTINT (buffer_local_flags.read_only) = -1;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1299 XFASTINT (buffer_local_flags.major_mode) = -1;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1300 XFASTINT (buffer_local_flags.mode_name) = -1;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1301 XFASTINT (buffer_local_flags.undo_list) = -1;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1302
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1303 XFASTINT (buffer_local_flags.mode_line_format) = 1;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1304 XFASTINT (buffer_local_flags.abbrev_mode) = 2;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1305 XFASTINT (buffer_local_flags.overwrite_mode) = 4;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1306 XFASTINT (buffer_local_flags.case_fold_search) = 8;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1307 XFASTINT (buffer_local_flags.auto_fill_function) = 0x10;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1308 XFASTINT (buffer_local_flags.selective_display) = 0x20;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1309 #ifndef old
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1310 XFASTINT (buffer_local_flags.selective_display_ellipses) = 0x40;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1311 #endif
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1312 XFASTINT (buffer_local_flags.tab_width) = 0x80;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1313 XFASTINT (buffer_local_flags.truncate_lines) = 0x100;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1314 XFASTINT (buffer_local_flags.ctl_arrow) = 0x200;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1315 XFASTINT (buffer_local_flags.fill_column) = 0x400;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1316 XFASTINT (buffer_local_flags.left_margin) = 0x800;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1317 XFASTINT (buffer_local_flags.abbrev_table) = 0x1000;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1318 XFASTINT (buffer_local_flags.display_table) = 0x2000;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1319 XFASTINT (buffer_local_flags.fieldlist) = 0x4000;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1320 XFASTINT (buffer_local_flags.syntax_table) = 0x8000;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1321
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1322 Vbuffer_alist = Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1323 current_buffer = 0;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1324 all_buffers = 0;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1325
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1326 QSFundamental = build_string ("Fundamental");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1327
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1328 Qfundamental_mode = intern ("fundamental-mode");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1329 buffer_defaults.major_mode = Qfundamental_mode;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1330
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1331 Qmode_class = intern ("mode-class");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1332
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1333 Qprotected_field = intern ("protected-field");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1334
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1335 Qpermanent_local = intern ("permanent-local");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1336
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1337 Qkill_buffer_hook = intern ("kill-buffer-hook");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1338
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1339 Vprin1_to_string_buffer = Fget_buffer_create (build_string (" prin1"));
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1340 /* super-magic invisible buffer */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1341 Vbuffer_alist = Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1342
648
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 585
diff changeset
1343 Fset_buffer (Fget_buffer_create (build_string ("*scratch*")));
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1344 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1345
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1346 init_buffer ()
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1347 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1348 char buf[MAXPATHLEN+1];
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1349
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1350 Fset_buffer (Fget_buffer_create (build_string ("*scratch*")));
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1351 if (getwd (buf) == 0)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1352 fatal ("`getwd' failed: %s.\n", buf);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1353
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1354 #ifndef VMS
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1355 /* Maybe this should really use some standard subroutine
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1356 whose definition is filename syntax dependent. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1357 if (buf[strlen (buf) - 1] != '/')
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1358 strcat (buf, "/");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1359 #endif /* not VMS */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1360 current_buffer->directory = build_string (buf);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1361 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1362
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1363 /* initialize the buffer routines */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1364 syms_of_buffer ()
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1365 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1366 staticpro (&Vbuffer_defaults);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1367 staticpro (&Vbuffer_local_symbols);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1368 staticpro (&Qfundamental_mode);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1369 staticpro (&Qmode_class);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1370 staticpro (&QSFundamental);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1371 staticpro (&Vbuffer_alist);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1372 staticpro (&Qprotected_field);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1373 staticpro (&Qpermanent_local);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1374 staticpro (&Qkill_buffer_hook);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1375
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1376 Fput (Qprotected_field, Qerror_conditions,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1377 Fcons (Qprotected_field, Fcons (Qerror, Qnil)));
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1378 Fput (Qprotected_field, Qerror_message,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1379 build_string ("Attempt to modify a protected field"));
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1380
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1381 /* All these use DEFVAR_LISP_NOPRO because the slots in
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1382 buffer_defaults will all be marked via Vbuffer_defaults. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1383
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1384 DEFVAR_LISP_NOPRO ("default-mode-line-format",
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1385 &buffer_defaults.mode_line_format,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1386 "Default value of `mode-line-format' for buffers that don't override it.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1387 This is the same as (default-value 'mode-line-format).");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1388
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1389 DEFVAR_LISP_NOPRO ("default-abbrev-mode",
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1390 &buffer_defaults.abbrev_mode,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1391 "Default value of `abbrev-mode' for buffers that do not override it.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1392 This is the same as (default-value 'abbrev-mode).");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1393
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1394 DEFVAR_LISP_NOPRO ("default-ctl-arrow",
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1395 &buffer_defaults.ctl_arrow,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1396 "Default value of `ctl-arrow' for buffers that do not override it.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1397 This is the same as (default-value 'ctl-arrow).");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1398
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1399 DEFVAR_LISP_NOPRO ("default-truncate-lines",
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1400 &buffer_defaults.truncate_lines,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1401 "Default value of `truncate-lines' for buffers that do not override it.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1402 This is the same as (default-value 'truncate-lines).");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1403
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1404 DEFVAR_LISP_NOPRO ("default-fill-column",
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1405 &buffer_defaults.fill_column,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1406 "Default value of `fill-column' for buffers that do not override it.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1407 This is the same as (default-value 'fill-column).");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1408
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1409 DEFVAR_LISP_NOPRO ("default-left-margin",
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1410 &buffer_defaults.left_margin,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1411 "Default value of `left-margin' for buffers that do not override it.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1412 This is the same as (default-value 'left-margin).");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1413
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1414 DEFVAR_LISP_NOPRO ("default-tab-width",
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1415 &buffer_defaults.tab_width,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1416 "Default value of `tab-width' for buffers that do not override it.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1417 This is the same as (default-value 'tab-width).");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1418
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1419 DEFVAR_LISP_NOPRO ("default-case-fold-search",
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1420 &buffer_defaults.case_fold_search,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1421 "Default value of `case-fold-search' for buffers that don't override it.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1422 This is the same as (default-value 'case-fold-search).");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1423
1001
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
1424 DEFVAR_PER_BUFFER ("mode-line-format", &current_buffer->mode_line_format,
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
1425 Qnil, 0);
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1426
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1427 /* This doc string is too long for cpp; cpp dies if it isn't in a comment.
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1428 But make-docfile finds it!
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1429 DEFVAR_PER_BUFFER ("mode-line-format", &current_buffer->mode_line_format,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1430 "Template for displaying mode line for current buffer.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1431 Each buffer has its own value of this variable.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1432 Value may be a string, a symbol or a list or cons cell.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1433 For a symbol, its value is used (but it is ignored if t or nil).\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1434 A string appearing directly as the value of a symbol is processed verbatim\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1435 in that the %-constructs below are not recognized.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1436 For a list whose car is a symbol, the symbol's value is taken,\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1437 and if that is non-nil, the cadr of the list is processed recursively.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1438 Otherwise, the caddr of the list (if there is one) is processed.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1439 For a list whose car is a string or list, each element is processed\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1440 recursively and the results are effectively concatenated.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1441 For a list whose car is an integer, the cdr of the list is processed\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1442 and padded (if the number is positive) or truncated (if negative)\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1443 to the width specified by that number.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1444 A string is printed verbatim in the mode line except for %-constructs:\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1445 (%-constructs are allowed when the string is the entire mode-line-format\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1446 or when it is found in a cons-cell or a list)\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1447 %b -- print buffer name. %f -- print visited file name.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1448 %* -- print *, % or hyphen. %m -- print value of mode-name (obsolete).\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1449 %s -- print process status. %M -- print value of global-mode-string. (obs)\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1450 %p -- print percent of buffer above top of window, or top, bot or all.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1451 %n -- print Narrow if appropriate.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1452 %[ -- print one [ for each recursive editing level. %] similar.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1453 %% -- print %. %- -- print infinitely many dashes.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1454 Decimal digits after the % specify field width to which to pad.");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1455 */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1456
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1457 DEFVAR_LISP_NOPRO ("default-major-mode", &buffer_defaults.major_mode,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1458 "*Major mode for new buffers. Defaults to `fundamental-mode'.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1459 nil here means use current buffer's major mode.");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1460
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1461 DEFVAR_PER_BUFFER ("major-mode", &current_buffer->major_mode,
1001
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
1462 make_number (Lisp_Symbol),
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1463 "Symbol for current buffer's major mode.");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1464
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1465 DEFVAR_PER_BUFFER ("mode-name", &current_buffer->mode_name,
1001
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
1466 make_number (Lisp_String),
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1467 "Pretty name of current buffer's major mode (a string).");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1468
1001
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
1469 DEFVAR_PER_BUFFER ("abbrev-mode", &current_buffer->abbrev_mode, Qnil,
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1470 "Non-nil turns on automatic expansion of abbrevs as they are inserted.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1471 Automatically becomes buffer-local when set in any fashion.");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1472
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1473 DEFVAR_PER_BUFFER ("case-fold-search", &current_buffer->case_fold_search,
1001
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
1474 Qnil,
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1475 "*Non-nil if searches should ignore case.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1476 Automatically becomes buffer-local when set in any fashion.");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1477
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1478 DEFVAR_PER_BUFFER ("fill-column", &current_buffer->fill_column,
1001
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
1479 make_number (Lisp_Int),
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1480 "*Column beyond which automatic line-wrapping should happen.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1481 Automatically becomes buffer-local when set in any fashion.");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1482
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1483 DEFVAR_PER_BUFFER ("left-margin", &current_buffer->left_margin,
1001
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
1484 make_number (Lisp_Int),
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1485 "*Column for the default indent-line-function to indent to.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1486 Linefeed indents to this column in Fundamental mode.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1487 Automatically becomes buffer-local when set in any fashion.");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1488
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1489 DEFVAR_PER_BUFFER ("tab-width", &current_buffer->tab_width,
1001
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
1490 make_number (Lisp_Int),
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1491 "*Distance between tab stops (for display of tab characters), in columns.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1492 Automatically becomes buffer-local when set in any fashion.");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1493
1001
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
1494 DEFVAR_PER_BUFFER ("ctl-arrow", &current_buffer->ctl_arrow, Qnil,
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1495 "*Non-nil means display control chars with uparrow.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1496 Nil means use backslash and octal digits.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1497 Automatically becomes buffer-local when set in any fashion.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1498 This variable does not apply to characters whose display is specified\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1499 in the current display table (if there is one).");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1500
1001
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
1501 DEFVAR_PER_BUFFER ("truncate-lines", &current_buffer->truncate_lines, Qnil,
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1502 "*Non-nil means do not display continuation lines;\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1503 give each line of text one screen line.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1504 Automatically becomes buffer-local when set in any fashion.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1505 \n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1506 Note that this is overridden by the variable\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1507 `truncate-partial-width-windows' if that variable is non-nil\n\
764
bb24f1180bb6 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 739
diff changeset
1508 and this buffer is not full-frame width.");
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1509
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1510 DEFVAR_PER_BUFFER ("default-directory", &current_buffer->directory,
1001
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
1511 make_number (Lisp_String),
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1512 "Name of default directory of current buffer. Should end with slash.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1513 Each buffer has its own value of this variable.");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1514
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1515 DEFVAR_PER_BUFFER ("auto-fill-function", &current_buffer->auto_fill_function,
1001
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
1516 Qnil,
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1517 "Function called (if non-nil) to perform auto-fill.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1518 It is called after self-inserting a space at a column beyond `fill-column'.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1519 Each buffer has its own value of this variable.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1520 NOTE: This variable is not an ordinary hook;\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1521 It may not be a list of functions.");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1522
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1523 DEFVAR_PER_BUFFER ("buffer-file-name", &current_buffer->filename,
1001
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
1524 make_number (Lisp_String),
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1525 "Name of file visited in current buffer, or nil if not visiting a file.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1526 Each buffer has its own value of this variable.");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1527
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1528 DEFVAR_PER_BUFFER ("buffer-auto-save-file-name",
1041
da04b25b1759 Formatting change
Jim Blandy <jimb@redhat.com>
parents: 1038
diff changeset
1529 &current_buffer->auto_save_file_name,
1001
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
1530 make_number (Lisp_String),
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1531 "Name of file for auto-saving current buffer,\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1532 or nil if buffer should not be auto-saved.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1533 Each buffer has its own value of this variable.");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1534
1001
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
1535 DEFVAR_PER_BUFFER ("buffer-read-only", &current_buffer->read_only, Qnil,
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1536 "Non-nil if this buffer is read-only.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1537 Each buffer has its own value of this variable.");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1538
1001
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
1539 DEFVAR_PER_BUFFER ("buffer-backed-up", &current_buffer->backed_up, Qnil,
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1540 "Non-nil if this buffer's file has been backed up.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1541 Backing up is done before the first time the file is saved.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1542 Each buffer has its own value of this variable.");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1543
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1544 DEFVAR_PER_BUFFER ("buffer-saved-size", &current_buffer->save_length,
1001
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
1545 make_number (Lisp_Int),
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1546 "Length of current buffer when last read in, saved or auto-saved.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1547 0 initially.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1548 Each buffer has its own value of this variable.");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1549
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1550 DEFVAR_PER_BUFFER ("selective-display", &current_buffer->selective_display,
1001
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
1551 Qnil,
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1552 "Non-nil enables selective display:\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1553 Integer N as value means display only lines\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1554 that start with less than n columns of space.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1555 A value of t means, after a ^M, all the rest of the line is invisible.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1556 Then ^M's in the file are written into files as newlines.\n\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1557 Automatically becomes buffer-local when set in any fashion.");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1558
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1559 #ifndef old
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1560 DEFVAR_PER_BUFFER ("selective-display-ellipses",
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1561 &current_buffer->selective_display_ellipses,
1001
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
1562 Qnil,
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1563 "t means display ... on previous line when a line is invisible.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1564 Automatically becomes buffer-local when set in any fashion.");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1565 #endif
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1566
1001
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
1567 DEFVAR_PER_BUFFER ("overwrite-mode", &current_buffer->overwrite_mode, Qnil,
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1568 "Non-nil if self-insertion should replace existing text.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1569 Automatically becomes buffer-local when set in any fashion.");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1570
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1571 DEFVAR_PER_BUFFER ("buffer-display-table", &current_buffer->display_table,
1038
59fa7697bb14 (syms_of_buffer): Made buffer-display-table,
Richard M. Stallman <rms@gnu.org>
parents: 1001
diff changeset
1572 Qnil,
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1573 "Display table that controls display of the contents of current buffer.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1574 Automatically becomes buffer-local when set in any fashion.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1575 The display table is a vector created with `make-display-table'.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1576 The first 256 elements control how to display each possible text character.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1577 The value should be a \"rope\" (see `make-rope') or nil;\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1578 nil means display the character in the default fashion.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1579 The remaining five elements are ropes that control the display of\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1580 the end of a truncated screen line (element 256);\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1581 the end of a continued line (element 257);\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1582 the escape character used to display character codes in octal (element 258);\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1583 the character used as an arrow for control characters (element 259);\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1584 the decoration indicating the presence of invisible lines (element 260).\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1585 If this variable is nil, the value of `standard-display-table' is used.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1586 Each window can have its own, overriding display table.");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1587
1041
da04b25b1759 Formatting change
Jim Blandy <jimb@redhat.com>
parents: 1038
diff changeset
1588 DEFVAR_PER_BUFFER ("buffer-field-list", &current_buffer->fieldlist, Qnil,
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1589 "List of fields in the current buffer. See `add-field'.");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1590
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1591 DEFVAR_BOOL ("check-protected-fields", check_protected_fields,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1592 "Non-nil means don't allow modification of a protected field.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1593 See `add-field'.");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1594 check_protected_fields = 0;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1595
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1596 /*DEFVAR_LISP ("debug-check-symbol", &Vcheck_symbol,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1597 "Don't ask.");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1598 */
392
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
1599 DEFVAR_LISP ("before-change-function", &Vbefore_change_function,
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1600 "Function to call before each text change.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1601 Two arguments are passed to the function: the positions of\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1602 the beginning and end of the range of old text to be changed.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1603 \(For an insertion, the beginning and end are at the same place.)\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1604 No information is given about the length of the text after the change.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1605 position of the change\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1606 \n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1607 While executing the `before-change-function', changes to buffers do not\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1608 cause calls to any `before-change-function' or `after-change-function'.");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1609 Vbefore_change_function = Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1610
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1611 DEFVAR_LISP ("after-change-function", &Vafter_change_function,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1612 "Function to call after each text change.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1613 Three arguments are passed to the function: the positions of\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1614 the beginning and end of the range of changed text,\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1615 and the length of the pre-change text replaced by that range.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1616 \(For an insertion, the pre-change length is zero;\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1617 for a deletion, that length is the number of characters deleted,\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1618 and the post-change beginning and end are at the same place.)\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1619 \n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1620 While executing the `after-change-function', changes to buffers do not\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1621 cause calls to any `before-change-function' or `after-change-function'.");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1622 Vafter_change_function = Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1623
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1624 DEFVAR_LISP ("first-change-function", &Vfirst_change_function,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1625 "Function to call before changing a buffer which is unmodified.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1626 The function is called, with no arguments, if it is non-nil.");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1627 Vfirst_change_function = Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1628
1041
da04b25b1759 Formatting change
Jim Blandy <jimb@redhat.com>
parents: 1038
diff changeset
1629 DEFVAR_PER_BUFFER ("buffer-undo-list", &current_buffer->undo_list, Qnil,
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1630 "List of undo entries in current buffer.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1631 Recent changes come first; older changes follow newer.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1632 \n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1633 An entry (START . END) represents an insertion which begins at\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1634 position START and ends at position END.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1635 \n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1636 An entry (TEXT . POSITION) represents the deletion of the string TEXT\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1637 from (abs POSITION). If POSITION is positive, point was at the front\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1638 of the text being deleted; if negative, point was at the end.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1639 \n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1640 An entry (t HIGHWORD LOWWORD) indicates that the buffer had been\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1641 previously unmodified. HIGHWORD and LOWWORD are the high and low\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1642 16-bit words of the buffer's modification count at the time. If the\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1643 modification count of the most recent save is different, this entry is\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1644 obsolete.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1645 \n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1646 nil marks undo boundaries. The undo command treats the changes\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1647 between two undo boundaries as a single step to be undone.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1648 \n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1649 If the value of the variable is t, undo information is not recorded.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1650 ");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1651
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1652 defsubr (&Sbuffer_list);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1653 defsubr (&Sget_buffer);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1654 defsubr (&Sget_file_buffer);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1655 defsubr (&Sget_buffer_create);
392
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
1656 defsubr (&Sgenerate_new_buffer_name);
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1657 defsubr (&Sbuffer_name);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1658 /*defsubr (&Sbuffer_number);*/
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1659 defsubr (&Sbuffer_file_name);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1660 defsubr (&Sbuffer_local_variables);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1661 defsubr (&Sbuffer_modified_p);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1662 defsubr (&Sset_buffer_modified_p);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1663 defsubr (&Sbuffer_modified_tick);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1664 defsubr (&Srename_buffer);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1665 defsubr (&Sother_buffer);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1666 defsubr (&Sbuffer_disable_undo);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1667 defsubr (&Sbuffer_enable_undo);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1668 defsubr (&Skill_buffer);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1669 defsubr (&Serase_buffer);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1670 defsubr (&Sswitch_to_buffer);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1671 defsubr (&Spop_to_buffer);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1672 defsubr (&Scurrent_buffer);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1673 defsubr (&Sset_buffer);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1674 defsubr (&Sbarf_if_buffer_read_only);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1675 defsubr (&Sbury_buffer);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1676 defsubr (&Slist_buffers);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1677 defsubr (&Skill_all_local_variables);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1678 defsubr (&Sregion_fields);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1679 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1680
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1681 keys_of_buffer ()
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1682 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1683 initial_define_key (control_x_map, 'b', "switch-to-buffer");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1684 initial_define_key (control_x_map, 'k', "kill-buffer");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1685 initial_define_key (control_x_map, Ctl ('B'), "list-buffers");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1686 }