comparison src/buffer.c @ 39971:820d9cd6761a

Put doc strings in comments.
author Pavel Jan?k <Pavel@Janik.cz>
date Mon, 15 Oct 2001 20:51:37 +0000
parents efbac46c874c
children 579177964efa
comparison
equal deleted inserted replaced
39970:68ccba559c4b 39971:820d9cd6761a
37 #endif /* not MAXPATHLEN */ 37 #endif /* not MAXPATHLEN */
38 38
39 #ifdef HAVE_UNISTD_H 39 #ifdef HAVE_UNISTD_H
40 #include <unistd.h> 40 #include <unistd.h>
41 #endif 41 #endif
42 #define DOC_STRINGS_IN_COMMENTS
42 #include "lisp.h" 43 #include "lisp.h"
43 #include "intervals.h" 44 #include "intervals.h"
44 #include "window.h" 45 #include "window.h"
45 #include "commands.h" 46 #include "commands.h"
46 #include "buffer.h" 47 #include "buffer.h"
195 error ("No buffer named %s", XSTRING (spec)->data); 196 error ("No buffer named %s", XSTRING (spec)->data);
196 error ("Invalid buffer argument"); 197 error ("Invalid buffer argument");
197 } 198 }
198 199
199 DEFUN ("buffer-live-p", Fbuffer_live_p, Sbuffer_live_p, 1, 1, 0, 200 DEFUN ("buffer-live-p", Fbuffer_live_p, Sbuffer_live_p, 1, 1, 0,
200 "Return non-nil if OBJECT is a buffer which has not been killed.\n\ 201 /* Return non-nil if OBJECT is a buffer which has not been killed.
201 Value is nil if OBJECT is not a buffer or if it has been killed.") 202 Value is nil if OBJECT is not a buffer or if it has been killed. */
202 (object) 203 (object))
203 Lisp_Object object; 204 Lisp_Object object;
204 { 205 {
205 return ((BUFFERP (object) && ! NILP (XBUFFER (object)->name)) 206 return ((BUFFERP (object) && ! NILP (XBUFFER (object)->name))
206 ? Qt : Qnil); 207 ? Qt : Qnil);
207 } 208 }
208 209
209 DEFUN ("buffer-list", Fbuffer_list, Sbuffer_list, 0, 1, 0, 210 DEFUN ("buffer-list", Fbuffer_list, Sbuffer_list, 0, 1, 0,
210 "Return a list of all existing live buffers.\n\ 211 /* Return a list of all existing live buffers.
211 If the optional arg FRAME is a frame, we return that frame's buffer list.") 212 If the optional arg FRAME is a frame, we return that frame's buffer list. */
212 (frame) 213 (frame))
213 Lisp_Object frame; 214 Lisp_Object frame;
214 { 215 {
215 Lisp_Object framelist, general; 216 Lisp_Object framelist, general;
216 general = Fmapcar (Qcdr, Vbuffer_alist); 217 general = Fmapcar (Qcdr, Vbuffer_alist);
217 218
256 } 257 }
257 return Qnil; 258 return Qnil;
258 } 259 }
259 260
260 DEFUN ("get-buffer", Fget_buffer, Sget_buffer, 1, 1, 0, 261 DEFUN ("get-buffer", Fget_buffer, Sget_buffer, 1, 1, 0,
261 "Return the buffer named NAME (a string).\n\ 262 /* Return the buffer named NAME (a string).
262 If there is no live buffer named NAME, return nil.\n\ 263 If there is no live buffer named NAME, return nil.
263 NAME may also be a buffer; if so, the value is that buffer.") 264 NAME may also be a buffer; if so, the value is that buffer. */
264 (name) 265 (name))
265 register Lisp_Object name; 266 register Lisp_Object name;
266 { 267 {
267 if (BUFFERP (name)) 268 if (BUFFERP (name))
268 return name; 269 return name;
269 CHECK_STRING (name, 0); 270 CHECK_STRING (name, 0);
270 271
271 return Fcdr (assoc_ignore_text_properties (name, Vbuffer_alist)); 272 return Fcdr (assoc_ignore_text_properties (name, Vbuffer_alist));
272 } 273 }
273 274
274 DEFUN ("get-file-buffer", Fget_file_buffer, Sget_file_buffer, 1, 1, 0, 275 DEFUN ("get-file-buffer", Fget_file_buffer, Sget_file_buffer, 1, 1, 0,
275 "Return the buffer visiting file FILENAME (a string).\n\ 276 /* Return the buffer visiting file FILENAME (a string).
276 The buffer's `buffer-file-name' must match exactly the expansion of FILENAME.\n\ 277 The buffer's `buffer-file-name' must match exactly the expansion of FILENAME.
277 If there is no such live buffer, return nil.\n\ 278 If there is no such live buffer, return nil.
278 See also `find-buffer-visiting'.") 279 See also `find-buffer-visiting'. */
279 (filename) 280 (filename))
280 register Lisp_Object filename; 281 register Lisp_Object filename;
281 { 282 {
282 register Lisp_Object tail, buf, tem; 283 register Lisp_Object tail, buf, tem;
283 Lisp_Object handler; 284 Lisp_Object handler;
284 285
323 324
324 /* Incremented for each buffer created, to assign the buffer number. */ 325 /* Incremented for each buffer created, to assign the buffer number. */
325 int buffer_count; 326 int buffer_count;
326 327
327 DEFUN ("get-buffer-create", Fget_buffer_create, Sget_buffer_create, 1, 1, 0, 328 DEFUN ("get-buffer-create", Fget_buffer_create, Sget_buffer_create, 1, 1, 0,
328 "Return the buffer named NAME, or create such a buffer and return it.\n\ 329 /* Return the buffer named NAME, or create such a buffer and return it.
329 A new buffer is created if there is no live buffer named NAME.\n\ 330 A new buffer is created if there is no live buffer named NAME.
330 If NAME starts with a space, the new buffer does not keep undo information.\n\ 331 If NAME starts with a space, the new buffer does not keep undo information.
331 If NAME is a buffer instead of a string, then it is the value returned.\n\ 332 If NAME is a buffer instead of a string, then it is the value returned.
332 The value is never nil.") 333 The value is never nil. */
333 (name) 334 (name))
334 register Lisp_Object name; 335 register Lisp_Object name;
335 { 336 {
336 register Lisp_Object buf; 337 register Lisp_Object buf;
337 register struct buffer *b; 338 register struct buffer *b;
338 339
503 504
504 505
505 DEFUN ("make-indirect-buffer", Fmake_indirect_buffer, Smake_indirect_buffer, 506 DEFUN ("make-indirect-buffer", Fmake_indirect_buffer, Smake_indirect_buffer,
506 2, 3, 507 2, 3,
507 "bMake indirect buffer (to buffer): \nBName of indirect buffer: ", 508 "bMake indirect buffer (to buffer): \nBName of indirect buffer: ",
508 "Create and return an indirect buffer for buffer BASE-BUFFER, named NAME.\n\ 509 /* Create and return an indirect buffer for buffer BASE-BUFFER, named NAME.
509 BASE-BUFFER should be an existing buffer (or buffer name).\n\ 510 BASE-BUFFER should be an existing buffer (or buffer name).
510 NAME should be a string which is not the name of an existing buffer.\n\ 511 NAME should be a string which is not the name of an existing buffer.
511 Optional argument CLONE non-nil means preserve BASE-BUFFER's state,\n\ 512 Optional argument CLONE non-nil means preserve BASE-BUFFER's state,
512 such as major and minor modes, in the indirect buffer.\n\ 513 such as major and minor modes, in the indirect buffer.
513 CLONE nil means the indirect buffer's state is reset to default values.") 514 CLONE nil means the indirect buffer's state is reset to default values. */
514 (base_buffer, name, clone) 515 (base_buffer, name, clone))
515 Lisp_Object base_buffer, name, clone; 516 Lisp_Object base_buffer, name, clone;
516 { 517 {
517 Lisp_Object buf; 518 Lisp_Object buf;
518 struct buffer *b; 519 struct buffer *b;
519 520
722 and set-visited-file-name ought to be able to use this to really 723 and set-visited-file-name ought to be able to use this to really
723 rename the buffer properly. */ 724 rename the buffer properly. */
724 725
725 DEFUN ("generate-new-buffer-name", Fgenerate_new_buffer_name, Sgenerate_new_buffer_name, 726 DEFUN ("generate-new-buffer-name", Fgenerate_new_buffer_name, Sgenerate_new_buffer_name,
726 1, 2, 0, 727 1, 2, 0,
727 "Return a string that is the name of no existing buffer based on NAME.\n\ 728 /* Return a string that is the name of no existing buffer based on NAME.
728 If there is no live buffer named NAME, then return NAME.\n\ 729 If there is no live buffer named NAME, then return NAME.
729 Otherwise modify name by appending `<NUMBER>', incrementing NUMBER\n\ 730 Otherwise modify name by appending `<NUMBER>', incrementing NUMBER
730 until an unused name is found, and then return that name.\n\ 731 until an unused name is found, and then return that name.
731 Optional second argument IGNORE specifies a name that is okay to use\n\ 732 Optional second argument IGNORE specifies a name that is okay to use
732 \(if it is in the sequence to be tried)\n\ 733 \(if it is in the sequence to be tried)
733 even if a buffer with that name exists.") 734 even if a buffer with that name exists. */
734 (name, ignore) 735 (name, ignore))
735 register Lisp_Object name, ignore; 736 register Lisp_Object name, ignore;
736 { 737 {
737 register Lisp_Object gentemp, tem; 738 register Lisp_Object gentemp, tem;
738 int count; 739 int count;
739 char number[10]; 740 char number[10];
758 } 759 }
759 } 760 }
760 761
761 762
762 DEFUN ("buffer-name", Fbuffer_name, Sbuffer_name, 0, 1, 0, 763 DEFUN ("buffer-name", Fbuffer_name, Sbuffer_name, 0, 1, 0,
763 "Return the name of BUFFER, as a string.\n\ 764 /* Return the name of BUFFER, as a string.
764 With no argument or nil as argument, return the name of the current buffer.") 765 With no argument or nil as argument, return the name of the current buffer. */
765 (buffer) 766 (buffer))
766 register Lisp_Object buffer; 767 register Lisp_Object buffer;
767 { 768 {
768 if (NILP (buffer)) 769 if (NILP (buffer))
769 return current_buffer->name; 770 return current_buffer->name;
770 CHECK_BUFFER (buffer, 0); 771 CHECK_BUFFER (buffer, 0);
771 return XBUFFER (buffer)->name; 772 return XBUFFER (buffer)->name;
772 } 773 }
773 774
774 DEFUN ("buffer-file-name", Fbuffer_file_name, Sbuffer_file_name, 0, 1, 0, 775 DEFUN ("buffer-file-name", Fbuffer_file_name, Sbuffer_file_name, 0, 1, 0,
775 "Return name of file BUFFER is visiting, or nil if none.\n\ 776 /* Return name of file BUFFER is visiting, or nil if none.
776 No argument or nil as argument means use the current buffer.") 777 No argument or nil as argument means use the current buffer. */
777 (buffer) 778 (buffer))
778 register Lisp_Object buffer; 779 register Lisp_Object buffer;
779 { 780 {
780 if (NILP (buffer)) 781 if (NILP (buffer))
781 return current_buffer->filename; 782 return current_buffer->filename;
782 CHECK_BUFFER (buffer, 0); 783 CHECK_BUFFER (buffer, 0);
783 return XBUFFER (buffer)->filename; 784 return XBUFFER (buffer)->filename;
784 } 785 }
785 786
786 DEFUN ("buffer-base-buffer", Fbuffer_base_buffer, Sbuffer_base_buffer, 787 DEFUN ("buffer-base-buffer", Fbuffer_base_buffer, Sbuffer_base_buffer,
787 0, 1, 0, 788 0, 1, 0,
788 "Return the base buffer of indirect buffer BUFFER.\n\ 789 /* Return the base buffer of indirect buffer BUFFER.
789 If BUFFER is not indirect, return nil.") 790 If BUFFER is not indirect, return nil. */
790 (buffer) 791 (buffer))
791 register Lisp_Object buffer; 792 register Lisp_Object buffer;
792 { 793 {
793 struct buffer *base; 794 struct buffer *base;
794 Lisp_Object base_buffer; 795 Lisp_Object base_buffer;
795 796
807 return base_buffer; 808 return base_buffer;
808 } 809 }
809 810
810 DEFUN ("buffer-local-variables", Fbuffer_local_variables, 811 DEFUN ("buffer-local-variables", Fbuffer_local_variables,
811 Sbuffer_local_variables, 0, 1, 0, 812 Sbuffer_local_variables, 0, 1, 0,
812 "Return an alist of variables that are buffer-local in BUFFER.\n\ 813 /* Return an alist of variables that are buffer-local in BUFFER.
813 Most elements look like (SYMBOL . VALUE), describing one variable.\n\ 814 Most elements look like (SYMBOL . VALUE), describing one variable.
814 For a symbol that is locally unbound, just the symbol appears in the value.\n\ 815 For a symbol that is locally unbound, just the symbol appears in the value.
815 Note that storing new VALUEs in these elements doesn't change the variables.\n\ 816 Note that storing new VALUEs in these elements doesn't change the variables.
816 No argument or nil as argument means use current buffer as BUFFER.") 817 No argument or nil as argument means use current buffer as BUFFER. */
817 (buffer) 818 (buffer))
818 register Lisp_Object buffer; 819 register Lisp_Object buffer;
819 { 820 {
820 register struct buffer *buf; 821 register struct buffer *buf;
821 register Lisp_Object result; 822 register Lisp_Object result;
822 823
879 } 880 }
880 881
881 882
882 DEFUN ("buffer-modified-p", Fbuffer_modified_p, Sbuffer_modified_p, 883 DEFUN ("buffer-modified-p", Fbuffer_modified_p, Sbuffer_modified_p,
883 0, 1, 0, 884 0, 1, 0,
884 "Return t if BUFFER was modified since its file was last read or saved.\n\ 885 /* Return t if BUFFER was modified since its file was last read or saved.
885 No argument or nil as argument means use current buffer as BUFFER.") 886 No argument or nil as argument means use current buffer as BUFFER. */
886 (buffer) 887 (buffer))
887 register Lisp_Object buffer; 888 register Lisp_Object buffer;
888 { 889 {
889 register struct buffer *buf; 890 register struct buffer *buf;
890 if (NILP (buffer)) 891 if (NILP (buffer))
891 buf = current_buffer; 892 buf = current_buffer;
898 return BUF_SAVE_MODIFF (buf) < BUF_MODIFF (buf) ? Qt : Qnil; 899 return BUF_SAVE_MODIFF (buf) < BUF_MODIFF (buf) ? Qt : Qnil;
899 } 900 }
900 901
901 DEFUN ("set-buffer-modified-p", Fset_buffer_modified_p, Sset_buffer_modified_p, 902 DEFUN ("set-buffer-modified-p", Fset_buffer_modified_p, Sset_buffer_modified_p,
902 1, 1, 0, 903 1, 1, 0,
903 "Mark current buffer as modified or unmodified according to FLAG.\n\ 904 /* Mark current buffer as modified or unmodified according to FLAG.
904 A non-nil FLAG means mark the buffer modified.") 905 A non-nil FLAG means mark the buffer modified. */
905 (flag) 906 (flag))
906 register Lisp_Object flag; 907 register Lisp_Object flag;
907 { 908 {
908 register int already; 909 register int already;
909 register Lisp_Object fn; 910 register Lisp_Object fn;
910 Lisp_Object buffer, window; 911 Lisp_Object buffer, window;
949 return flag; 950 return flag;
950 } 951 }
951 952
952 DEFUN ("restore-buffer-modified-p", Frestore_buffer_modified_p, 953 DEFUN ("restore-buffer-modified-p", Frestore_buffer_modified_p,
953 Srestore_buffer_modified_p, 1, 1, 0, 954 Srestore_buffer_modified_p, 1, 1, 0,
954 "Like `set-buffer-modified-p', with a differences concerning redisplay.\n\ 955 /* Like `set-buffer-modified-p', with a differences concerning redisplay.
955 It is not ensured that mode lines will be updated to show the modified\n\ 956 It is not ensured that mode lines will be updated to show the modified
956 state of the current buffer. Use with care.") 957 state of the current buffer. Use with care. */
957 (flag) 958 (flag))
958 Lisp_Object flag; 959 Lisp_Object flag;
959 { 960 {
960 #ifdef CLASH_DETECTION 961 #ifdef CLASH_DETECTION
961 Lisp_Object fn; 962 Lisp_Object fn;
962 963
979 return flag; 980 return flag;
980 } 981 }
981 982
982 DEFUN ("buffer-modified-tick", Fbuffer_modified_tick, Sbuffer_modified_tick, 983 DEFUN ("buffer-modified-tick", Fbuffer_modified_tick, Sbuffer_modified_tick,
983 0, 1, 0, 984 0, 1, 0,
984 "Return BUFFER's tick counter, incremented for each change in text.\n\ 985 /* Return BUFFER's tick counter, incremented for each change in text.
985 Each buffer has a tick counter which is incremented each time the text in\n\ 986 Each buffer has a tick counter which is incremented each time the text in
986 that buffer is changed. It wraps around occasionally.\n\ 987 that buffer is changed. It wraps around occasionally.
987 No argument or nil as argument means use current buffer as BUFFER.") 988 No argument or nil as argument means use current buffer as BUFFER. */
988 (buffer) 989 (buffer))
989 register Lisp_Object buffer; 990 register Lisp_Object buffer;
990 { 991 {
991 register struct buffer *buf; 992 register struct buffer *buf;
992 if (NILP (buffer)) 993 if (NILP (buffer))
993 buf = current_buffer; 994 buf = current_buffer;
1000 return make_number (BUF_MODIFF (buf)); 1001 return make_number (BUF_MODIFF (buf));
1001 } 1002 }
1002 1003
1003 DEFUN ("rename-buffer", Frename_buffer, Srename_buffer, 1, 2, 1004 DEFUN ("rename-buffer", Frename_buffer, Srename_buffer, 1, 2,
1004 "sRename buffer (to new name): \nP", 1005 "sRename buffer (to new name): \nP",
1005 "Change current buffer's name to NEWNAME (a string).\n\ 1006 /* Change current buffer's name to NEWNAME (a string).
1006 If second arg UNIQUE is nil or omitted, it is an error if a\n\ 1007 If second arg UNIQUE is nil or omitted, it is an error if a
1007 buffer named NEWNAME already exists.\n\ 1008 buffer named NEWNAME already exists.
1008 If UNIQUE is non-nil, come up with a new name using\n\ 1009 If UNIQUE is non-nil, come up with a new name using
1009 `generate-new-buffer-name'.\n\ 1010 `generate-new-buffer-name'.
1010 Interactively, you can set UNIQUE with a prefix argument.\n\ 1011 Interactively, you can set UNIQUE with a prefix argument.
1011 We return the name we actually gave the buffer.\n\ 1012 We return the name we actually gave the buffer.
1012 This does not change the name of the visited file (if any).") 1013 This does not change the name of the visited file (if any). */
1013 (newname, unique) 1014 (newname, unique))
1014 register Lisp_Object newname, unique; 1015 register Lisp_Object newname, unique;
1015 { 1016 {
1016 register Lisp_Object tem, buf; 1017 register Lisp_Object tem, buf;
1017 1018
1018 CHECK_STRING (newname, 0); 1019 CHECK_STRING (newname, 0);
1049 /* Refetch since that last call may have done GC. */ 1050 /* Refetch since that last call may have done GC. */
1050 return current_buffer->name; 1051 return current_buffer->name;
1051 } 1052 }
1052 1053
1053 DEFUN ("other-buffer", Fother_buffer, Sother_buffer, 0, 3, 0, 1054 DEFUN ("other-buffer", Fother_buffer, Sother_buffer, 0, 3, 0,
1054 "Return most recently selected buffer other than BUFFER.\n\ 1055 /* Return most recently selected buffer other than BUFFER.
1055 Buffers not visible in windows are preferred to visible buffers,\n\ 1056 Buffers not visible in windows are preferred to visible buffers,
1056 unless optional second argument VISIBLE-OK is non-nil.\n\ 1057 unless optional second argument VISIBLE-OK is non-nil.
1057 If the optional third argument FRAME is non-nil, use that frame's\n\ 1058 If the optional third argument FRAME is non-nil, use that frame's
1058 buffer list instead of the selected frame's buffer list.\n\ 1059 buffer list instead of the selected frame's buffer list.
1059 If no other buffer exists, the buffer `*scratch*' is returned.\n\ 1060 If no other buffer exists, the buffer `*scratch*' is returned.
1060 If BUFFER is omitted or nil, some interesting buffer is returned.") 1061 If BUFFER is omitted or nil, some interesting buffer is returned. */
1061 (buffer, visible_ok, frame) 1062 (buffer, visible_ok, frame))
1062 register Lisp_Object buffer, visible_ok, frame; 1063 register Lisp_Object buffer, visible_ok, frame;
1063 { 1064 {
1064 Lisp_Object Fset_buffer_major_mode (); 1065 Lisp_Object Fset_buffer_major_mode ();
1065 register Lisp_Object tail, buf, notsogood, tem, pred, add_ons; 1066 register Lisp_Object tail, buf, notsogood, tem, pred, add_ons;
1066 notsogood = Qnil; 1067 notsogood = Qnil;
1120 return buf; 1121 return buf;
1121 } 1122 }
1122 1123
1123 DEFUN ("buffer-disable-undo", Fbuffer_disable_undo, Sbuffer_disable_undo, 1124 DEFUN ("buffer-disable-undo", Fbuffer_disable_undo, Sbuffer_disable_undo,
1124 0, 1, "", 1125 0, 1, "",
1125 "Make BUFFER stop keeping undo information.\n\ 1126 /* Make BUFFER stop keeping undo information.
1126 No argument or nil as argument means do this for the current buffer.") 1127 No argument or nil as argument means do this for the current buffer. */
1127 (buffer) 1128 (buffer))
1128 register Lisp_Object buffer; 1129 register Lisp_Object buffer;
1129 { 1130 {
1130 Lisp_Object real_buffer; 1131 Lisp_Object real_buffer;
1131 1132
1132 if (NILP (buffer)) 1133 if (NILP (buffer))
1143 return Qnil; 1144 return Qnil;
1144 } 1145 }
1145 1146
1146 DEFUN ("buffer-enable-undo", Fbuffer_enable_undo, Sbuffer_enable_undo, 1147 DEFUN ("buffer-enable-undo", Fbuffer_enable_undo, Sbuffer_enable_undo,
1147 0, 1, "", 1148 0, 1, "",
1148 "Start keeping undo information for buffer BUFFER.\n\ 1149 /* Start keeping undo information for buffer BUFFER.
1149 No argument or nil as argument means do this for the current buffer.") 1150 No argument or nil as argument means do this for the current buffer. */
1150 (buffer) 1151 (buffer))
1151 register Lisp_Object buffer; 1152 register Lisp_Object buffer;
1152 { 1153 {
1153 Lisp_Object real_buffer; 1154 Lisp_Object real_buffer;
1154 1155
1155 if (NILP (buffer)) 1156 if (NILP (buffer))
1172 Hook to be run (by `run-hooks', which see) when a buffer is killed.\n\ 1173 Hook to be run (by `run-hooks', which see) when a buffer is killed.\n\
1173 The buffer being killed will be current while the hook is running.\n\ 1174 The buffer being killed will be current while the hook is running.\n\
1174 See `kill-buffer'." 1175 See `kill-buffer'."
1175 */ 1176 */
1176 DEFUN ("kill-buffer", Fkill_buffer, Skill_buffer, 1, 1, "bKill buffer: ", 1177 DEFUN ("kill-buffer", Fkill_buffer, Skill_buffer, 1, 1, "bKill buffer: ",
1177 "Kill the buffer BUFFER.\n\ 1178 /* Kill the buffer BUFFER.
1178 The argument may be a buffer or may be the name of a buffer.\n\ 1179 The argument may be a buffer or may be the name of a buffer.
1179 An argument of nil means kill the current buffer.\n\n\ 1180 An argument of nil means kill the current buffer.
1180 Value is t if the buffer is actually killed, nil if user says no.\n\n\ 1181
1181 The value of `kill-buffer-hook' (which may be local to that buffer),\n\ 1182 Value is t if the buffer is actually killed, nil if user says no.
1182 if not void, is a list of functions to be called, with no arguments,\n\ 1183
1183 before the buffer is actually killed. The buffer to be killed is current\n\ 1184 The value of `kill-buffer-hook' (which may be local to that buffer),
1184 when the hook functions are called.\n\n\ 1185 if not void, is a list of functions to be called, with no arguments,
1185 Any processes that have this buffer as the `process-buffer' are killed\n\ 1186 before the buffer is actually killed. The buffer to be killed is current
1186 with SIGHUP.") 1187 when the hook functions are called.
1187 (buffer) 1188
1189 Any processes that have this buffer as the `process-buffer' are killed
1190 with SIGHUP. */
1191 (buffer))
1188 Lisp_Object buffer; 1192 Lisp_Object buffer;
1189 { 1193 {
1190 Lisp_Object buf; 1194 Lisp_Object buf;
1191 register struct buffer *b; 1195 register struct buffer *b;
1192 register Lisp_Object tem; 1196 register Lisp_Object tem;
1443 else 1447 else
1444 set_frame_buffer_list (frame, Fcons (buf, frame_buffer_list (frame))); 1448 set_frame_buffer_list (frame, Fcons (buf, frame_buffer_list (frame)));
1445 } 1449 }
1446 1450
1447 DEFUN ("set-buffer-major-mode", Fset_buffer_major_mode, Sset_buffer_major_mode, 1, 1, 0, 1451 DEFUN ("set-buffer-major-mode", Fset_buffer_major_mode, Sset_buffer_major_mode, 1, 1, 0,
1448 "Set an appropriate major mode for BUFFER, according to `default-major-mode'.\n\ 1452 /* Set an appropriate major mode for BUFFER, according to `default-major-mode'.
1449 Use this function before selecting the buffer, since it may need to inspect\n\ 1453 Use this function before selecting the buffer, since it may need to inspect
1450 the current buffer's major mode.") 1454 the current buffer's major mode. */
1451 (buffer) 1455 (buffer))
1452 Lisp_Object buffer; 1456 Lisp_Object buffer;
1453 { 1457 {
1454 int count; 1458 int count;
1455 Lisp_Object function; 1459 Lisp_Object function;
1456 1460
1521 1525
1522 return buf; 1526 return buf;
1523 } 1527 }
1524 1528
1525 DEFUN ("switch-to-buffer", Fswitch_to_buffer, Sswitch_to_buffer, 1, 2, "BSwitch to buffer: ", 1529 DEFUN ("switch-to-buffer", Fswitch_to_buffer, Sswitch_to_buffer, 1, 2, "BSwitch to buffer: ",
1526 "Select buffer BUFFER in the current window.\n\ 1530 /* Select buffer BUFFER in the current window.
1527 BUFFER may be a buffer or a buffer name.\n\ 1531 BUFFER may be a buffer or a buffer name.
1528 Optional second arg NORECORD non-nil means\n\ 1532 Optional second arg NORECORD non-nil means
1529 do not put this buffer at the front of the list of recently selected ones.\n\ 1533 do not put this buffer at the front of the list of recently selected ones.
1530 \n\ 1534
1531 WARNING: This is NOT the way to work on another buffer temporarily\n\ 1535 WARNING: This is NOT the way to work on another buffer temporarily
1532 within a Lisp program! Use `set-buffer' instead. That avoids messing with\n\ 1536 within a Lisp program! Use `set-buffer' instead. That avoids messing with
1533 the window-buffer correspondences.") 1537 the window-buffer correspondences. */
1534 (buffer, norecord) 1538 (buffer, norecord))
1535 Lisp_Object buffer, norecord; 1539 Lisp_Object buffer, norecord;
1536 { 1540 {
1537 char *err; 1541 char *err;
1538 1542
1539 err = no_switch_window (selected_window); 1543 err = no_switch_window (selected_window);
1541 1545
1542 return switch_to_buffer_1 (buffer, norecord); 1546 return switch_to_buffer_1 (buffer, norecord);
1543 } 1547 }
1544 1548
1545 DEFUN ("pop-to-buffer", Fpop_to_buffer, Spop_to_buffer, 1, 3, 0, 1549 DEFUN ("pop-to-buffer", Fpop_to_buffer, Spop_to_buffer, 1, 3, 0,
1546 "Select buffer BUFFER in some window, preferably a different one.\n\ 1550 /* Select buffer BUFFER in some window, preferably a different one.
1547 If BUFFER is nil, then some other buffer is chosen.\n\ 1551 If BUFFER is nil, then some other buffer is chosen.
1548 If `pop-up-windows' is non-nil, windows can be split to do this.\n\ 1552 If `pop-up-windows' is non-nil, windows can be split to do this.
1549 If optional second arg OTHER-WINDOW is non-nil, insist on finding another\n\ 1553 If optional second arg OTHER-WINDOW is non-nil, insist on finding another
1550 window even if BUFFER is already visible in the selected window.\n\ 1554 window even if BUFFER is already visible in the selected window.
1551 This uses the function `display-buffer' as a subroutine; see the documentation\n\ 1555 This uses the function `display-buffer' as a subroutine; see the documentation
1552 of `display-buffer' for additional customization information.\n\ 1556 of `display-buffer' for additional customization information.
1553 \n\ 1557
1554 Optional third arg NORECORD non-nil means\n\ 1558 Optional third arg NORECORD non-nil means
1555 do not put this buffer at the front of the list of recently selected ones.") 1559 do not put this buffer at the front of the list of recently selected ones. */
1556 (buffer, other_window, norecord) 1560 (buffer, other_window, norecord))
1557 Lisp_Object buffer, other_window, norecord; 1561 Lisp_Object buffer, other_window, norecord;
1558 { 1562 {
1559 register Lisp_Object buf; 1563 register Lisp_Object buf;
1560 if (NILP (buffer)) 1564 if (NILP (buffer))
1561 buf = Fother_buffer (Fcurrent_buffer (), Qnil, Qnil); 1565 buf = Fother_buffer (Fcurrent_buffer (), Qnil, Qnil);
1575 Fselect_window (Fdisplay_buffer (buf, other_window, Qnil)); 1579 Fselect_window (Fdisplay_buffer (buf, other_window, Qnil));
1576 return buf; 1580 return buf;
1577 } 1581 }
1578 1582
1579 DEFUN ("current-buffer", Fcurrent_buffer, Scurrent_buffer, 0, 0, 0, 1583 DEFUN ("current-buffer", Fcurrent_buffer, Scurrent_buffer, 0, 0, 0,
1580 "Return the current buffer as a Lisp object.") 1584 /* Return the current buffer as a Lisp object. */
1581 () 1585 ())
1582 { 1586 {
1583 register Lisp_Object buf; 1587 register Lisp_Object buf;
1584 XSETBUFFER (buf, current_buffer); 1588 XSETBUFFER (buf, current_buffer);
1585 return buf; 1589 return buf;
1586 } 1590 }
1771 BUF_ZV_BYTE (b) = marker_byte_position (b->zv_marker); 1775 BUF_ZV_BYTE (b) = marker_byte_position (b->zv_marker);
1772 } 1776 }
1773 } 1777 }
1774 1778
1775 DEFUN ("set-buffer", Fset_buffer, Sset_buffer, 1, 1, 0, 1779 DEFUN ("set-buffer", Fset_buffer, Sset_buffer, 1, 1, 0,
1776 "Make the buffer BUFFER current for editing operations.\n\ 1780 /* Make the buffer BUFFER current for editing operations.
1777 BUFFER may be a buffer or the name of an existing buffer.\n\ 1781 BUFFER may be a buffer or the name of an existing buffer.
1778 See also `save-excursion' when you want to make a buffer current temporarily.\n\ 1782 See also `save-excursion' when you want to make a buffer current temporarily.
1779 This function does not display the buffer, so its effect ends\n\ 1783 This function does not display the buffer, so its effect ends
1780 when the current command terminates.\n\ 1784 when the current command terminates.
1781 Use `switch-to-buffer' or `pop-to-buffer' to switch buffers permanently.") 1785 Use `switch-to-buffer' or `pop-to-buffer' to switch buffers permanently. */
1782 (buffer) 1786 (buffer))
1783 register Lisp_Object buffer; 1787 register Lisp_Object buffer;
1784 { 1788 {
1785 register Lisp_Object buf; 1789 register Lisp_Object buf;
1786 buf = Fget_buffer (buffer); 1790 buf = Fget_buffer (buffer);
1787 if (NILP (buf)) 1791 if (NILP (buf))
1803 return Qnil; 1807 return Qnil;
1804 } 1808 }
1805 1809
1806 DEFUN ("barf-if-buffer-read-only", Fbarf_if_buffer_read_only, 1810 DEFUN ("barf-if-buffer-read-only", Fbarf_if_buffer_read_only,
1807 Sbarf_if_buffer_read_only, 0, 0, 0, 1811 Sbarf_if_buffer_read_only, 0, 0, 0,
1808 "Signal a `buffer-read-only' error if the current buffer is read-only.") 1812 /* Signal a `buffer-read-only' error if the current buffer is read-only. */
1809 () 1813 ())
1810 { 1814 {
1811 if (!NILP (current_buffer->read_only) 1815 if (!NILP (current_buffer->read_only)
1812 && NILP (Vinhibit_read_only)) 1816 && NILP (Vinhibit_read_only))
1813 Fsignal (Qbuffer_read_only, (Fcons (Fcurrent_buffer (), Qnil))); 1817 Fsignal (Qbuffer_read_only, (Fcons (Fcurrent_buffer (), Qnil)));
1814 return Qnil; 1818 return Qnil;
1815 } 1819 }
1816 1820
1817 DEFUN ("bury-buffer", Fbury_buffer, Sbury_buffer, 0, 1, "", 1821 DEFUN ("bury-buffer", Fbury_buffer, Sbury_buffer, 0, 1, "",
1818 "Put BUFFER at the end of the list of all buffers.\n\ 1822 /* Put BUFFER at the end of the list of all buffers.
1819 There it is the least likely candidate for `other-buffer' to return;\n\ 1823 There it is the least likely candidate for `other-buffer' to return;
1820 thus, the least likely buffer for \\[switch-to-buffer] to select by default.\n\ 1824 thus, the least likely buffer for \\[switch-to-buffer] to select by default.
1821 If BUFFER is nil or omitted, bury the current buffer.\n\ 1825 If BUFFER is nil or omitted, bury the current buffer.
1822 Also, if BUFFER is nil or omitted, remove the current buffer from the\n\ 1826 Also, if BUFFER is nil or omitted, remove the current buffer from the
1823 selected window if it is displayed there.") 1827 selected window if it is displayed there. */
1824 (buffer) 1828 (buffer))
1825 register Lisp_Object buffer; 1829 register Lisp_Object buffer;
1826 { 1830 {
1827 /* Figure out what buffer we're going to bury. */ 1831 /* Figure out what buffer we're going to bury. */
1828 if (NILP (buffer)) 1832 if (NILP (buffer))
1829 { 1833 {
1867 1871
1868 return Qnil; 1872 return Qnil;
1869 } 1873 }
1870 1874
1871 DEFUN ("erase-buffer", Ferase_buffer, Serase_buffer, 0, 0, "*", 1875 DEFUN ("erase-buffer", Ferase_buffer, Serase_buffer, 0, 0, "*",
1872 "Delete the entire contents of the current buffer.\n\ 1876 /* Delete the entire contents of the current buffer.
1873 Any narrowing restriction in effect (see `narrow-to-region') is removed,\n\ 1877 Any narrowing restriction in effect (see `narrow-to-region') is removed,
1874 so the buffer is truly empty after this.") 1878 so the buffer is truly empty after this. */
1875 () 1879 ())
1876 { 1880 {
1877 Fwiden (); 1881 Fwiden ();
1878 1882
1879 del_range (BEG, Z); 1883 del_range (BEG, Z);
1880 1884
1941 return byte_pos; 1945 return byte_pos;
1942 } 1946 }
1943 1947
1944 DEFUN ("set-buffer-multibyte", Fset_buffer_multibyte, Sset_buffer_multibyte, 1948 DEFUN ("set-buffer-multibyte", Fset_buffer_multibyte, Sset_buffer_multibyte,
1945 1, 1, 0, 1949 1, 1, 0,
1946 "Set the multibyte flag of the current buffer to FLAG.\n\ 1950 /* Set the multibyte flag of the current buffer to FLAG.
1947 If FLAG is t, this makes the buffer a multibyte buffer.\n\ 1951 If FLAG is t, this makes the buffer a multibyte buffer.
1948 If FLAG is nil, this makes the buffer a single-byte buffer.\n\ 1952 If FLAG is nil, this makes the buffer a single-byte buffer.
1949 The buffer contents remain unchanged as a sequence of bytes\n\ 1953 The buffer contents remain unchanged as a sequence of bytes
1950 but the contents viewed as characters do change.") 1954 but the contents viewed as characters do change. */
1951 (flag) 1955 (flag))
1952 Lisp_Object flag; 1956 Lisp_Object flag;
1953 { 1957 {
1954 Lisp_Object tail, markers; 1958 Lisp_Object tail, markers;
1955 struct buffer *other; 1959 struct buffer *other;
1956 int undo_enabled_p = !EQ (current_buffer->undo_list, Qt); 1960 int undo_enabled_p = !EQ (current_buffer->undo_list, Qt);
2194 return flag; 2198 return flag;
2195 } 2199 }
2196 2200
2197 DEFUN ("kill-all-local-variables", Fkill_all_local_variables, Skill_all_local_variables, 2201 DEFUN ("kill-all-local-variables", Fkill_all_local_variables, Skill_all_local_variables,
2198 0, 0, 0, 2202 0, 0, 0,
2199 "Switch to Fundamental mode by killing current buffer's local variables.\n\ 2203 /* Switch to Fundamental mode by killing current buffer's local variables.
2200 Most local variable bindings are eliminated so that the default values\n\ 2204 Most local variable bindings are eliminated so that the default values
2201 become effective once more. Also, the syntax table is set from\n\ 2205 become effective once more. Also, the syntax table is set from
2202 `standard-syntax-table', the local keymap is set to nil,\n\ 2206 `standard-syntax-table', the local keymap is set to nil,
2203 and the abbrev table from `fundamental-mode-abbrev-table'.\n\ 2207 and the abbrev table from `fundamental-mode-abbrev-table'.
2204 This function also forces redisplay of the mode line.\n\ 2208 This function also forces redisplay of the mode line.
2205 \n\ 2209
2206 Every function to select a new major mode starts by\n\ 2210 Every function to select a new major mode starts by
2207 calling this function.\n\n\ 2211 calling this function.
2208 As a special exception, local variables whose names have\n\ 2212
2209 a non-nil `permanent-local' property are not eliminated by this function.\n\ 2213 As a special exception, local variables whose names have
2210 \n\ 2214 a non-nil `permanent-local' property are not eliminated by this function.
2211 The first thing this function does is run\n\ 2215
2212 the normal hook `change-major-mode-hook'.") 2216 The first thing this function does is run
2213 () 2217 the normal hook `change-major-mode-hook'. */
2218 ())
2214 { 2219 {
2215 register Lisp_Object alist, sym, tem; 2220 register Lisp_Object alist, sym, tem;
2216 Lisp_Object oalist; 2221 Lisp_Object oalist;
2217 2222
2218 if (!NILP (Vrun_hooks)) 2223 if (!NILP (Vrun_hooks))
3330 break; 3335 break;
3331 } 3336 }
3332 } 3337 }
3333 3338
3334 DEFUN ("overlayp", Foverlayp, Soverlayp, 1, 1, 0, 3339 DEFUN ("overlayp", Foverlayp, Soverlayp, 1, 1, 0,
3335 "Return t if OBJECT is an overlay.") 3340 /* Return t if OBJECT is an overlay. */
3336 (object) 3341 (object))
3337 Lisp_Object object; 3342 Lisp_Object object;
3338 { 3343 {
3339 return (OVERLAYP (object) ? Qt : Qnil); 3344 return (OVERLAYP (object) ? Qt : Qnil);
3340 } 3345 }
3341 3346
3342 DEFUN ("make-overlay", Fmake_overlay, Smake_overlay, 2, 5, 0, 3347 DEFUN ("make-overlay", Fmake_overlay, Smake_overlay, 2, 5, 0,
3343 "Create a new overlay with range BEG to END in BUFFER.\n\ 3348 /* Create a new overlay with range BEG to END in BUFFER.
3344 If omitted, BUFFER defaults to the current buffer.\n\ 3349 If omitted, BUFFER defaults to the current buffer.
3345 BEG and END may be integers or markers.\n\ 3350 BEG and END may be integers or markers.
3346 The fourth arg FRONT-ADVANCE, if non-nil, makes the\n\ 3351 The fourth arg FRONT-ADVANCE, if non-nil, makes the
3347 front delimiter advance when text is inserted there.\n\ 3352 front delimiter advance when text is inserted there.
3348 The fifth arg REAR-ADVANCE, if non-nil, makes the\n\ 3353 The fifth arg REAR-ADVANCE, if non-nil, makes the
3349 rear delimiter advance when text is inserted there.") 3354 rear delimiter advance when text is inserted there. */
3350 (beg, end, buffer, front_advance, rear_advance) 3355 (beg, end, buffer, front_advance, rear_advance))
3351 Lisp_Object beg, end, buffer; 3356 Lisp_Object beg, end, buffer;
3352 Lisp_Object front_advance, rear_advance; 3357 Lisp_Object front_advance, rear_advance;
3353 { 3358 {
3354 Lisp_Object overlay; 3359 Lisp_Object overlay;
3355 struct buffer *b; 3360 struct buffer *b;
3431 windows_or_buffers_changed = 1; 3436 windows_or_buffers_changed = 1;
3432 3437
3433 ++BUF_OVERLAY_MODIFF (buf); 3438 ++BUF_OVERLAY_MODIFF (buf);
3434 } 3439 }
3435 3440
3436 3441
3437 Lisp_Object Fdelete_overlay (); 3442 Lisp_Object Fdelete_overlay ();
3438 3443
3439 DEFUN ("move-overlay", Fmove_overlay, Smove_overlay, 3, 4, 0, 3444 DEFUN ("move-overlay", Fmove_overlay, Smove_overlay, 3, 4, 0,
3440 "Set the endpoints of OVERLAY to BEG and END in BUFFER.\n\ 3445 /* Set the endpoints of OVERLAY to BEG and END in BUFFER.
3441 If BUFFER is omitted, leave OVERLAY in the same buffer it inhabits now.\n\ 3446 If BUFFER is omitted, leave OVERLAY in the same buffer it inhabits now.
3442 If BUFFER is omitted, and OVERLAY is in no buffer, put it in the current\n\ 3447 If BUFFER is omitted, and OVERLAY is in no buffer, put it in the current
3443 buffer.") 3448 buffer. */
3444 (overlay, beg, end, buffer) 3449 (overlay, beg, end, buffer))
3445 Lisp_Object overlay, beg, end, buffer; 3450 Lisp_Object overlay, beg, end, buffer;
3446 { 3451 {
3447 struct buffer *b, *ob; 3452 struct buffer *b, *ob;
3448 Lisp_Object obuffer; 3453 Lisp_Object obuffer;
3449 int count = specpdl_ptr - specpdl; 3454 int count = specpdl_ptr - specpdl;
3539 3544
3540 return unbind_to (count, overlay); 3545 return unbind_to (count, overlay);
3541 } 3546 }
3542 3547
3543 DEFUN ("delete-overlay", Fdelete_overlay, Sdelete_overlay, 1, 1, 0, 3548 DEFUN ("delete-overlay", Fdelete_overlay, Sdelete_overlay, 1, 1, 0,
3544 "Delete the overlay OVERLAY from its buffer.") 3549 /* Delete the overlay OVERLAY from its buffer. */
3545 (overlay) 3550 (overlay))
3546 Lisp_Object overlay; 3551 Lisp_Object overlay;
3547 { 3552 {
3548 Lisp_Object buffer; 3553 Lisp_Object buffer;
3549 struct buffer *b; 3554 struct buffer *b;
3550 int count = specpdl_ptr - specpdl; 3555 int count = specpdl_ptr - specpdl;
3579 } 3584 }
3580 3585
3581 /* Overlay dissection functions. */ 3586 /* Overlay dissection functions. */
3582 3587
3583 DEFUN ("overlay-start", Foverlay_start, Soverlay_start, 1, 1, 0, 3588 DEFUN ("overlay-start", Foverlay_start, Soverlay_start, 1, 1, 0,
3584 "Return the position at which OVERLAY starts.") 3589 /* Return the position at which OVERLAY starts. */
3585 (overlay) 3590 (overlay))
3586 Lisp_Object overlay; 3591 Lisp_Object overlay;
3587 { 3592 {
3588 CHECK_OVERLAY (overlay, 0); 3593 CHECK_OVERLAY (overlay, 0);
3589 3594
3590 return (Fmarker_position (OVERLAY_START (overlay))); 3595 return (Fmarker_position (OVERLAY_START (overlay)));
3591 } 3596 }
3592 3597
3593 DEFUN ("overlay-end", Foverlay_end, Soverlay_end, 1, 1, 0, 3598 DEFUN ("overlay-end", Foverlay_end, Soverlay_end, 1, 1, 0,
3594 "Return the position at which OVERLAY ends.") 3599 /* Return the position at which OVERLAY ends. */
3595 (overlay) 3600 (overlay))
3596 Lisp_Object overlay; 3601 Lisp_Object overlay;
3597 { 3602 {
3598 CHECK_OVERLAY (overlay, 0); 3603 CHECK_OVERLAY (overlay, 0);
3599 3604
3600 return (Fmarker_position (OVERLAY_END (overlay))); 3605 return (Fmarker_position (OVERLAY_END (overlay)));
3601 } 3606 }
3602 3607
3603 DEFUN ("overlay-buffer", Foverlay_buffer, Soverlay_buffer, 1, 1, 0, 3608 DEFUN ("overlay-buffer", Foverlay_buffer, Soverlay_buffer, 1, 1, 0,
3604 "Return the buffer OVERLAY belongs to.") 3609 /* Return the buffer OVERLAY belongs to. */
3605 (overlay) 3610 (overlay))
3606 Lisp_Object overlay; 3611 Lisp_Object overlay;
3607 { 3612 {
3608 CHECK_OVERLAY (overlay, 0); 3613 CHECK_OVERLAY (overlay, 0);
3609 3614
3610 return Fmarker_buffer (OVERLAY_START (overlay)); 3615 return Fmarker_buffer (OVERLAY_START (overlay));
3611 } 3616 }
3612 3617
3613 DEFUN ("overlay-properties", Foverlay_properties, Soverlay_properties, 1, 1, 0, 3618 DEFUN ("overlay-properties", Foverlay_properties, Soverlay_properties, 1, 1, 0,
3614 "Return a list of the properties on OVERLAY.\n\ 3619 /* Return a list of the properties on OVERLAY.
3615 This is a copy of OVERLAY's plist; modifying its conses has no effect on\n\ 3620 This is a copy of OVERLAY's plist; modifying its conses has no effect on
3616 OVERLAY.") 3621 OVERLAY. */
3617 (overlay) 3622 (overlay))
3618 Lisp_Object overlay; 3623 Lisp_Object overlay;
3619 { 3624 {
3620 CHECK_OVERLAY (overlay, 0); 3625 CHECK_OVERLAY (overlay, 0);
3621 3626
3622 return Fcopy_sequence (XOVERLAY (overlay)->plist); 3627 return Fcopy_sequence (XOVERLAY (overlay)->plist);
3623 } 3628 }
3624 3629
3625 3630
3626 DEFUN ("overlays-at", Foverlays_at, Soverlays_at, 1, 1, 0, 3631 DEFUN ("overlays-at", Foverlays_at, Soverlays_at, 1, 1, 0,
3627 "Return a list of the overlays that contain position POS.") 3632 /* Return a list of the overlays that contain position POS. */
3628 (pos) 3633 (pos))
3629 Lisp_Object pos; 3634 Lisp_Object pos;
3630 { 3635 {
3631 int noverlays; 3636 int noverlays;
3632 Lisp_Object *overlay_vec; 3637 Lisp_Object *overlay_vec;
3633 int len; 3638 int len;
3650 xfree (overlay_vec); 3655 xfree (overlay_vec);
3651 return result; 3656 return result;
3652 } 3657 }
3653 3658
3654 DEFUN ("overlays-in", Foverlays_in, Soverlays_in, 2, 2, 0, 3659 DEFUN ("overlays-in", Foverlays_in, Soverlays_in, 2, 2, 0,
3655 "Return a list of the overlays that overlap the region BEG ... END.\n\ 3660 /* Return a list of the overlays that overlap the region BEG ... END.
3656 Overlap means that at least one character is contained within the overlay\n\ 3661 Overlap means that at least one character is contained within the overlay
3657 and also contained within the specified region.\n\ 3662 and also contained within the specified region.
3658 Empty overlays are included in the result if they are located at BEG\n\ 3663 Empty overlays are included in the result if they are located at BEG
3659 or between BEG and END.") 3664 or between BEG and END. */
3660 (beg, end) 3665 (beg, end))
3661 Lisp_Object beg, end; 3666 Lisp_Object beg, end;
3662 { 3667 {
3663 int noverlays; 3668 int noverlays;
3664 Lisp_Object *overlay_vec; 3669 Lisp_Object *overlay_vec;
3665 int len; 3670 int len;
3683 return result; 3688 return result;
3684 } 3689 }
3685 3690
3686 DEFUN ("next-overlay-change", Fnext_overlay_change, Snext_overlay_change, 3691 DEFUN ("next-overlay-change", Fnext_overlay_change, Snext_overlay_change,
3687 1, 1, 0, 3692 1, 1, 0,
3688 "Return the next position after POS where an overlay starts or ends.\n\ 3693 /* Return the next position after POS where an overlay starts or ends.
3689 If there are no more overlay boundaries after POS, return (point-max).") 3694 If there are no more overlay boundaries after POS, return (point-max). */
3690 (pos) 3695 (pos))
3691 Lisp_Object pos; 3696 Lisp_Object pos;
3692 { 3697 {
3693 int noverlays; 3698 int noverlays;
3694 int endpos; 3699 int endpos;
3695 Lisp_Object *overlay_vec; 3700 Lisp_Object *overlay_vec;
3724 return make_number (endpos); 3729 return make_number (endpos);
3725 } 3730 }
3726 3731
3727 DEFUN ("previous-overlay-change", Fprevious_overlay_change, 3732 DEFUN ("previous-overlay-change", Fprevious_overlay_change,
3728 Sprevious_overlay_change, 1, 1, 0, 3733 Sprevious_overlay_change, 1, 1, 0,
3729 "Return the previous position before POS where an overlay starts or ends.\n\ 3734 /* Return the previous position before POS where an overlay starts or ends.
3730 If there are no more overlay boundaries before POS, return (point-min).") 3735 If there are no more overlay boundaries before POS, return (point-min). */
3731 (pos) 3736 (pos))
3732 Lisp_Object pos; 3737 Lisp_Object pos;
3733 { 3738 {
3734 int noverlays; 3739 int noverlays;
3735 int prevpos; 3740 int prevpos;
3736 Lisp_Object *overlay_vec; 3741 Lisp_Object *overlay_vec;
3757 } 3762 }
3758 3763
3759 /* These functions are for debugging overlays. */ 3764 /* These functions are for debugging overlays. */
3760 3765
3761 DEFUN ("overlay-lists", Foverlay_lists, Soverlay_lists, 0, 0, 0, 3766 DEFUN ("overlay-lists", Foverlay_lists, Soverlay_lists, 0, 0, 0,
3762 "Return a pair of lists giving all the overlays of the current buffer.\n\ 3767 /* Return a pair of lists giving all the overlays of the current buffer.
3763 The car has all the overlays before the overlay center;\n\ 3768 The car has all the overlays before the overlay center;
3764 the cdr has all the overlays after the overlay center.\n\ 3769 the cdr has all the overlays after the overlay center.
3765 Recentering overlays moves overlays between these lists.\n\ 3770 Recentering overlays moves overlays between these lists.
3766 The lists you get are copies, so that changing them has no effect.\n\ 3771 The lists you get are copies, so that changing them has no effect.
3767 However, the overlays you get are the real objects that the buffer uses.") 3772 However, the overlays you get are the real objects that the buffer uses. */
3768 () 3773 ())
3769 { 3774 {
3770 Lisp_Object before, after; 3775 Lisp_Object before, after;
3771 before = current_buffer->overlays_before; 3776 before = current_buffer->overlays_before;
3772 if (CONSP (before)) 3777 if (CONSP (before))
3773 before = Fcopy_sequence (before); 3778 before = Fcopy_sequence (before);
3777 3782
3778 return Fcons (before, after); 3783 return Fcons (before, after);
3779 } 3784 }
3780 3785
3781 DEFUN ("overlay-recenter", Foverlay_recenter, Soverlay_recenter, 1, 1, 0, 3786 DEFUN ("overlay-recenter", Foverlay_recenter, Soverlay_recenter, 1, 1, 0,
3782 "Recenter the overlays of the current buffer around position POS.") 3787 /* Recenter the overlays of the current buffer around position POS. */
3783 (pos) 3788 (pos))
3784 Lisp_Object pos; 3789 Lisp_Object pos;
3785 { 3790 {
3786 CHECK_NUMBER_COERCE_MARKER (pos, 0); 3791 CHECK_NUMBER_COERCE_MARKER (pos, 0);
3787 3792
3788 recenter_overlay_lists (current_buffer, XINT (pos)); 3793 recenter_overlay_lists (current_buffer, XINT (pos));
3789 return Qnil; 3794 return Qnil;
3790 } 3795 }
3791 3796
3792 DEFUN ("overlay-get", Foverlay_get, Soverlay_get, 2, 2, 0, 3797 DEFUN ("overlay-get", Foverlay_get, Soverlay_get, 2, 2, 0,
3793 "Get the property of overlay OVERLAY with property name PROP.") 3798 /* Get the property of overlay OVERLAY with property name PROP. */
3794 (overlay, prop) 3799 (overlay, prop))
3795 Lisp_Object overlay, prop; 3800 Lisp_Object overlay, prop;
3796 { 3801 {
3797 Lisp_Object plist, fallback; 3802 Lisp_Object plist, fallback;
3798 3803
3799 CHECK_OVERLAY (overlay, 0); 3804 CHECK_OVERLAY (overlay, 0);
3817 3822
3818 return fallback; 3823 return fallback;
3819 } 3824 }
3820 3825
3821 DEFUN ("overlay-put", Foverlay_put, Soverlay_put, 3, 3, 0, 3826 DEFUN ("overlay-put", Foverlay_put, Soverlay_put, 3, 3, 0,
3822 "Set one property of overlay OVERLAY: give property PROP value VALUE.") 3827 /* Set one property of overlay OVERLAY: give property PROP value VALUE. */
3823 (overlay, prop, value) 3828 (overlay, prop, value))
3824 Lisp_Object overlay, prop, value; 3829 Lisp_Object overlay, prop, value;
3825 { 3830 {
3826 Lisp_Object tail, buffer; 3831 Lisp_Object tail, buffer;
3827 int changed; 3832 int changed;
3828 3833
4995 5000
4996 /* All these use DEFVAR_LISP_NOPRO because the slots in 5001 /* All these use DEFVAR_LISP_NOPRO because the slots in
4997 buffer_defaults will all be marked via Vbuffer_defaults. */ 5002 buffer_defaults will all be marked via Vbuffer_defaults. */
4998 5003
4999 DEFVAR_LISP_NOPRO ("default-mode-line-format", 5004 DEFVAR_LISP_NOPRO ("default-mode-line-format",
5000 &buffer_defaults.mode_line_format, 5005 &buffer_defaults.mode_line_format
5001 "Default value of `mode-line-format' for buffers that don't override it.\n\ 5006 /* Default value of `mode-line-format' for buffers that don't override it.
5002 This is the same as (default-value 'mode-line-format)."); 5007 This is the same as (default-value 'mode-line-format). */);
5003 5008
5004 DEFVAR_LISP_NOPRO ("default-header-line-format", 5009 DEFVAR_LISP_NOPRO ("default-header-line-format",
5005 &buffer_defaults.header_line_format, 5010 &buffer_defaults.header_line_format
5006 "Default value of `header-line-format' for buffers that don't override it.\n\ 5011 /* Default value of `header-line-format' for buffers that don't override it.
5007 This is the same as (default-value 'header-line-format)."); 5012 This is the same as (default-value 'header-line-format). */);
5008 5013
5009 DEFVAR_LISP_NOPRO ("default-cursor-type", &buffer_defaults.cursor_type, 5014 DEFVAR_LISP_NOPRO ("default-cursor-type", &buffer_defaults.cursor_type
5010 "Default value of `cursor-type' for buffers that don't override it.\n\ 5015 /* Default value of `cursor-type' for buffers that don't override it.
5011 This is the same as (default-value 'cursor-type)."); 5016 This is the same as (default-value 'cursor-type). */);
5012 5017
5013 DEFVAR_LISP_NOPRO ("default-line-spacing", 5018 DEFVAR_LISP_NOPRO ("default-line-spacing",
5014 &buffer_defaults.extra_line_spacing, 5019 &buffer_defaults.extra_line_spacing
5015 "Default value of `line-spacing' for buffers that don't override it.\n\ 5020 /* Default value of `line-spacing' for buffers that don't override it.
5016 This is the same as (default-value 'line-spacing)."); 5021 This is the same as (default-value 'line-spacing). */);
5017 5022
5018 DEFVAR_LISP_NOPRO ("default-abbrev-mode", 5023 DEFVAR_LISP_NOPRO ("default-abbrev-mode",
5019 &buffer_defaults.abbrev_mode, 5024 &buffer_defaults.abbrev_mode
5020 "Default value of `abbrev-mode' for buffers that do not override it.\n\ 5025 /* Default value of `abbrev-mode' for buffers that do not override it.
5021 This is the same as (default-value 'abbrev-mode)."); 5026 This is the same as (default-value 'abbrev-mode). */);
5022 5027
5023 DEFVAR_LISP_NOPRO ("default-ctl-arrow", 5028 DEFVAR_LISP_NOPRO ("default-ctl-arrow",
5024 &buffer_defaults.ctl_arrow, 5029 &buffer_defaults.ctl_arrow
5025 "Default value of `ctl-arrow' for buffers that do not override it.\n\ 5030 /* Default value of `ctl-arrow' for buffers that do not override it.
5026 This is the same as (default-value 'ctl-arrow)."); 5031 This is the same as (default-value 'ctl-arrow). */);
5027 5032
5028 DEFVAR_LISP_NOPRO ("default-direction-reversed", 5033 DEFVAR_LISP_NOPRO ("default-direction-reversed",
5029 &buffer_defaults.direction_reversed, 5034 &buffer_defaults.direction_reversed
5030 "Default value of `direction_reversed' for buffers that do not override it.\n\ 5035 /* Default value of `direction_reversed' for buffers that do not override it.
5031 This is the same as (default-value 'direction-reversed)."); 5036 This is the same as (default-value 'direction-reversed). */);
5032 5037
5033 DEFVAR_LISP_NOPRO ("default-enable-multibyte-characters", 5038 DEFVAR_LISP_NOPRO ("default-enable-multibyte-characters",
5034 &buffer_defaults.enable_multibyte_characters, 5039 &buffer_defaults.enable_multibyte_characters
5035 "*Default value of `enable-multibyte-characters' for buffers not overriding it.\n\ 5040 /* *Default value of `enable-multibyte-characters' for buffers not overriding it.
5036 This is the same as (default-value 'enable-multibyte-characters)."); 5041 This is the same as (default-value 'enable-multibyte-characters). */);
5037 5042
5038 DEFVAR_LISP_NOPRO ("default-buffer-file-coding-system", 5043 DEFVAR_LISP_NOPRO ("default-buffer-file-coding-system",
5039 &buffer_defaults.buffer_file_coding_system, 5044 &buffer_defaults.buffer_file_coding_system
5040 "Default value of `buffer-file-coding-system' for buffers not overriding it.\n\ 5045 /* Default value of `buffer-file-coding-system' for buffers not overriding it.
5041 This is the same as (default-value 'buffer-file-coding-system)."); 5046 This is the same as (default-value 'buffer-file-coding-system). */);
5042 5047
5043 DEFVAR_LISP_NOPRO ("default-truncate-lines", 5048 DEFVAR_LISP_NOPRO ("default-truncate-lines",
5044 &buffer_defaults.truncate_lines, 5049 &buffer_defaults.truncate_lines
5045 "Default value of `truncate-lines' for buffers that do not override it.\n\ 5050 /* Default value of `truncate-lines' for buffers that do not override it.
5046 This is the same as (default-value 'truncate-lines)."); 5051 This is the same as (default-value 'truncate-lines). */);
5047 5052
5048 DEFVAR_LISP_NOPRO ("default-fill-column", 5053 DEFVAR_LISP_NOPRO ("default-fill-column",
5049 &buffer_defaults.fill_column, 5054 &buffer_defaults.fill_column
5050 "Default value of `fill-column' for buffers that do not override it.\n\ 5055 /* Default value of `fill-column' for buffers that do not override it.
5051 This is the same as (default-value 'fill-column)."); 5056 This is the same as (default-value 'fill-column). */);
5052 5057
5053 DEFVAR_LISP_NOPRO ("default-left-margin", 5058 DEFVAR_LISP_NOPRO ("default-left-margin",
5054 &buffer_defaults.left_margin, 5059 &buffer_defaults.left_margin
5055 "Default value of `left-margin' for buffers that do not override it.\n\ 5060 /* Default value of `left-margin' for buffers that do not override it.
5056 This is the same as (default-value 'left-margin)."); 5061 This is the same as (default-value 'left-margin). */);
5057 5062
5058 DEFVAR_LISP_NOPRO ("default-tab-width", 5063 DEFVAR_LISP_NOPRO ("default-tab-width",
5059 &buffer_defaults.tab_width, 5064 &buffer_defaults.tab_width
5060 "Default value of `tab-width' for buffers that do not override it.\n\ 5065 /* Default value of `tab-width' for buffers that do not override it.
5061 This is the same as (default-value 'tab-width)."); 5066 This is the same as (default-value 'tab-width). */);
5062 5067
5063 DEFVAR_LISP_NOPRO ("default-case-fold-search", 5068 DEFVAR_LISP_NOPRO ("default-case-fold-search",
5064 &buffer_defaults.case_fold_search, 5069 &buffer_defaults.case_fold_search
5065 "Default value of `case-fold-search' for buffers that don't override it.\n\ 5070 /* Default value of `case-fold-search' for buffers that don't override it.
5066 This is the same as (default-value 'case-fold-search)."); 5071 This is the same as (default-value 'case-fold-search). */);
5067 5072
5068 #ifdef DOS_NT 5073 #ifdef DOS_NT
5069 DEFVAR_LISP_NOPRO ("default-buffer-file-type", 5074 DEFVAR_LISP_NOPRO ("default-buffer-file-type",
5070 &buffer_defaults.buffer_file_type, 5075 &buffer_defaults.buffer_file_type
5071 "Default file type for buffers that do not override it.\n\ 5076 /* Default file type for buffers that do not override it.
5072 This is the same as (default-value 'buffer-file-type).\n\ 5077 This is the same as (default-value 'buffer-file-type).
5073 The file type is nil for text, t for binary."); 5078 The file type is nil for text, t for binary. */);
5074 #endif 5079 #endif
5075 5080
5076 DEFVAR_LISP_NOPRO ("default-left-margin-width", 5081 DEFVAR_LISP_NOPRO ("default-left-margin-width",
5077 &buffer_defaults.left_margin_width, 5082 &buffer_defaults.left_margin_width
5078 "Default value of `left-margin-width' for buffers that don't override it.\n\ 5083 /* Default value of `left-margin-width' for buffers that don't override it.
5079 This is the same as (default-value 'left-margin-width)."); 5084 This is the same as (default-value 'left-margin-width). */);
5080 5085
5081 DEFVAR_LISP_NOPRO ("default-right-margin-width", 5086 DEFVAR_LISP_NOPRO ("default-right-margin-width",
5082 &buffer_defaults.right_margin_width, 5087 &buffer_defaults.right_margin_width
5083 "Default value of `right_margin_width' for buffers that don't override it.\n\ 5088 /* Default value of `right_margin_width' for buffers that don't override it.
5084 This is the same as (default-value 'right-margin-width)."); 5089 This is the same as (default-value 'right-margin-width). */);
5085 5090
5086 DEFVAR_LISP_NOPRO ("default-indicate-empty-lines", 5091 DEFVAR_LISP_NOPRO ("default-indicate-empty-lines",
5087 &buffer_defaults.indicate_empty_lines, 5092 &buffer_defaults.indicate_empty_lines
5088 "Default value of `indicate-empty-lines' for buffers that don't override it.\n\ 5093 /* Default value of `indicate-empty-lines' for buffers that don't override it.
5089 This is the same as (default-value 'indicate-empty-lines)."); 5094 This is the same as (default-value 'indicate-empty-lines). */);
5090 5095
5091 DEFVAR_LISP_NOPRO ("default-scroll-up-aggressively", 5096 DEFVAR_LISP_NOPRO ("default-scroll-up-aggressively",
5092 &buffer_defaults.scroll_up_aggressively, 5097 &buffer_defaults.scroll_up_aggressively
5093 "Default value of `scroll-up-aggressively' for buffers that\n\ 5098 /* Default value of `scroll-up-aggressively' for buffers that
5094 don't override it. This is the same as (default-value\n\ 5099 don't override it. This is the same as (default-value
5095 'scroll-up-aggressively)."); 5100 'scroll-up-aggressively). */);
5096 5101
5097 DEFVAR_LISP_NOPRO ("default-scroll-down-aggressively", 5102 DEFVAR_LISP_NOPRO ("default-scroll-down-aggressively",
5098 &buffer_defaults.scroll_down_aggressively, 5103 &buffer_defaults.scroll_down_aggressively
5099 "Default value of `scroll-down-aggressively' for buffers that\n\ 5104 /* Default value of `scroll-down-aggressively' for buffers that
5100 don't override it. This is the same as (default-value\n\ 5105 don't override it. This is the same as (default-value
5101 'scroll-down-aggressively)."); 5106 'scroll-down-aggressively). */);
5102 5107
5103 DEFVAR_PER_BUFFER ("header-line-format", 5108 DEFVAR_PER_BUFFER ("header-line-format",
5104 &current_buffer->header_line_format, 5109 &current_buffer->header_line_format,
5105 Qnil, 5110 Qnil
5106 "Analogous to `mode-line-format', but for the mode line that can be\n\ 5111 /* Analogous to `mode-line-format', but for the mode line that can be
5107 displayed at the top of a window."); 5112 displayed at the top of a window. */);
5108 5113
5109 DEFVAR_PER_BUFFER ("mode-line-format", &current_buffer->mode_line_format,
5110 Qnil, 0);
5111
5112 /* This doc string is too long for cpp; cpp dies if it isn't in a comment.
5113 But make-docfile finds it!
5114 DEFVAR_PER_BUFFER ("mode-line-format", &current_buffer->mode_line_format, 5114 DEFVAR_PER_BUFFER ("mode-line-format", &current_buffer->mode_line_format,
5115 Qnil, 5115 Qnil
5116 "Template for displaying mode line for current buffer.\n\ 5116 /* Template for displaying mode line for current buffer.
5117 Each buffer has its own value of this variable.\n\ 5117 Each buffer has its own value of this variable.
5118 Value may be nil, a string, a symbol or a list or cons cell.\n\ 5118 Value may be nil, a string, a symbol or a list or cons cell.
5119 A value of nil means don't display a mode line.\n\ 5119 A value of nil means don't display a mode line.
5120 For a symbol, its value is used (but it is ignored if t or nil).\n\ 5120 For a symbol, its value is used (but it is ignored if t or nil).
5121 A string appearing directly as the value of a symbol is processed verbatim\n\ 5121 A string appearing directly as the value of a symbol is processed verbatim
5122 in that the %-constructs below are not recognized.\n\ 5122 in that the %-constructs below are not recognized.
5123 For a list of the form `(:eval FORM)', FORM is evaluated and the result\n\ 5123 For a list of the form `(:eval FORM)', FORM is evaluated and the result
5124 is used as a mode line element.\n\ 5124 is used as a mode line element.
5125 For a list whose car is a symbol, the symbol's value is taken,\n\ 5125 For a list whose car is a symbol, the symbol's value is taken,
5126 and if that is non-nil, the cadr of the list is processed recursively.\n\ 5126 and if that is non-nil, the cadr of the list is processed recursively.
5127 Otherwise, the caddr of the list (if there is one) is processed.\n\ 5127 Otherwise, the caddr of the list (if there is one) is processed.
5128 For a list whose car is a string or list, each element is processed\n\ 5128 For a list whose car is a string or list, each element is processed
5129 recursively and the results are effectively concatenated.\n\ 5129 recursively and the results are effectively concatenated.
5130 For a list whose car is an integer, the cdr of the list is processed\n\ 5130 For a list whose car is an integer, the cdr of the list is processed
5131 and padded (if the number is positive) or truncated (if negative)\n\ 5131 and padded (if the number is positive) or truncated (if negative)
5132 to the width specified by that number.\n\ 5132 to the width specified by that number.
5133 A string is printed verbatim in the mode line except for %-constructs:\n\ 5133 A string is printed verbatim in the mode line except for %-constructs:
5134 (%-constructs are allowed when the string is the entire mode-line-format\n\ 5134 (%-constructs are allowed when the string is the entire mode-line-format
5135 or when it is found in a cons-cell or a list)\n\ 5135 or when it is found in a cons-cell or a list)
5136 %b -- print buffer name. %f -- print visited file name.\n\ 5136 %b -- print buffer name. %f -- print visited file name.
5137 %F -- print frame name.\n\ 5137 %F -- print frame name.
5138 %* -- print %, * or hyphen. %+ -- print *, % or hyphen.\n\ 5138 %* -- print %, * or hyphen. %+ -- print *, % or hyphen.
5139 %& is like %*, but ignore read-only-ness.\n\ 5139 %& is like %*, but ignore read-only-ness.
5140 % means buffer is read-only and * means it is modified.\n\ 5140 % means buffer is read-only and * means it is modified.
5141 For a modified read-only buffer, %* gives % and %+ gives *.\n\ 5141 For a modified read-only buffer, %* gives % and %+ gives *.
5142 %s -- print process status. %l -- print the current line number.\n\ 5142 %s -- print process status. %l -- print the current line number.
5143 %c -- print the current column number (this makes editing slower).\n\ 5143 %c -- print the current column number (this makes editing slower).
5144 To make the column number update correctly in all cases,\n\ 5144 To make the column number update correctly in all cases,
5145 `column-number-mode' must be non-nil.\n\ 5145 `column-number-mode' must be non-nil.
5146 %p -- print percent of buffer above top of window, or Top, Bot or All.\n\ 5146 %p -- print percent of buffer above top of window, or Top, Bot or All.
5147 %P -- print percent of buffer above bottom of window, perhaps plus Top,\n\ 5147 %P -- print percent of buffer above bottom of window, perhaps plus Top,
5148 or print Bottom or All.\n\ 5148 or print Bottom or All.
5149 %m -- print the mode name.\n\ 5149 %m -- print the mode name.
5150 %n -- print Narrow if appropriate.\n\ 5150 %n -- print Narrow if appropriate.
5151 %z -- print mnemonics of buffer, terminal, and keyboard coding systems.\n\ 5151 %z -- print mnemonics of buffer, terminal, and keyboard coding systems.
5152 %Z -- like %z, but including the end-of-line format.\n\ 5152 %Z -- like %z, but including the end-of-line format.
5153 %[ -- print one [ for each recursive editing level. %] similar.\n\ 5153 %[ -- print one [ for each recursive editing level. %] similar.
5154 %% -- print %. %- -- print infinitely many dashes.\n\ 5154 %% -- print %. %- -- print infinitely many dashes.
5155 Decimal digits after the % specify field width to which to pad."); 5155 Decimal digits after the % specify field width to which to pad. */);
5156 */ 5156
5157 5157 DEFVAR_LISP_NOPRO ("default-major-mode", &buffer_defaults.major_mode
5158 DEFVAR_LISP_NOPRO ("default-major-mode", &buffer_defaults.major_mode, 5158 /* *Major mode for new buffers. Defaults to `fundamental-mode'.
5159 "*Major mode for new buffers. Defaults to `fundamental-mode'.\n\ 5159 nil here means use current buffer's major mode. */);
5160 nil here means use current buffer's major mode.");
5161 5160
5162 DEFVAR_PER_BUFFER ("major-mode", &current_buffer->major_mode, 5161 DEFVAR_PER_BUFFER ("major-mode", &current_buffer->major_mode,
5163 make_number (Lisp_Symbol), 5162 make_number (Lisp_Symbol)
5164 "Symbol for current buffer's major mode."); 5163 /* Symbol for current buffer's major mode. */);
5165 5164
5166 DEFVAR_PER_BUFFER ("mode-name", &current_buffer->mode_name, 5165 DEFVAR_PER_BUFFER ("mode-name", &current_buffer->mode_name,
5167 make_number (Lisp_String), 5166 make_number (Lisp_String)
5168 "Pretty name of current buffer's major mode (a string)."); 5167 /* Pretty name of current buffer's major mode (a string). */);
5169 5168
5170 DEFVAR_PER_BUFFER ("abbrev-mode", &current_buffer->abbrev_mode, Qnil, 5169 DEFVAR_PER_BUFFER ("abbrev-mode", &current_buffer->abbrev_mode, Qnil
5171 "Non-nil turns on automatic expansion of abbrevs as they are inserted."); 5170 /* Non-nil turns on automatic expansion of abbrevs as they are inserted. */);
5172 5171
5173 DEFVAR_PER_BUFFER ("case-fold-search", &current_buffer->case_fold_search, 5172 DEFVAR_PER_BUFFER ("case-fold-search", &current_buffer->case_fold_search,
5174 Qnil, 5173 Qnil
5175 "*Non-nil if searches and matches should ignore case."); 5174 /* *Non-nil if searches and matches should ignore case. */);
5176 5175
5177 DEFVAR_PER_BUFFER ("fill-column", &current_buffer->fill_column, 5176 DEFVAR_PER_BUFFER ("fill-column", &current_buffer->fill_column,
5178 make_number (Lisp_Int), 5177 make_number (Lisp_Int)
5179 "*Column beyond which automatic line-wrapping should happen."); 5178 /* *Column beyond which automatic line-wrapping should happen. */);
5180 5179
5181 DEFVAR_PER_BUFFER ("left-margin", &current_buffer->left_margin, 5180 DEFVAR_PER_BUFFER ("left-margin", &current_buffer->left_margin,
5182 make_number (Lisp_Int), 5181 make_number (Lisp_Int)
5183 "*Column for the default indent-line-function to indent to.\n\ 5182 /* *Column for the default indent-line-function to indent to.
5184 Linefeed indents to this column in Fundamental mode."); 5183 Linefeed indents to this column in Fundamental mode. */);
5185 5184
5186 DEFVAR_PER_BUFFER ("tab-width", &current_buffer->tab_width, 5185 DEFVAR_PER_BUFFER ("tab-width", &current_buffer->tab_width,
5187 make_number (Lisp_Int), 5186 make_number (Lisp_Int)
5188 "*Distance between tab stops (for display of tab characters), in columns."); 5187 /* *Distance between tab stops (for display of tab characters), in columns. */);
5189 5188
5190 DEFVAR_PER_BUFFER ("ctl-arrow", &current_buffer->ctl_arrow, Qnil, 5189 DEFVAR_PER_BUFFER ("ctl-arrow", &current_buffer->ctl_arrow, Qnil
5191 "*Non-nil means display control chars with uparrow.\n\ 5190 /* *Non-nil means display control chars with uparrow.
5192 A value of nil means use backslash and octal digits.\n\ 5191 A value of nil means use backslash and octal digits.
5193 This variable does not apply to characters whose display is specified\n\ 5192 This variable does not apply to characters whose display is specified
5194 in the current display table (if there is one)."); 5193 in the current display table (if there is one). */);
5195 5194
5196 DEFVAR_PER_BUFFER ("enable-multibyte-characters", 5195 DEFVAR_PER_BUFFER ("enable-multibyte-characters",
5197 &current_buffer->enable_multibyte_characters, 5196 &current_buffer->enable_multibyte_characters,
5198 make_number (-1), 5197 make_number (-1)
5199 "Non-nil means the buffer contents are regarded as multi-byte characters.\n\ 5198 /* Non-nil means the buffer contents are regarded as multi-byte characters.
5200 Otherwise they are regarded as unibyte. This affects the display,\n\ 5199 Otherwise they are regarded as unibyte. This affects the display,
5201 file I/O and the behavior of various editing commands.\n\ 5200 file I/O and the behavior of various editing commands.
5202 \n\ 5201
5203 This variable is buffer-local but you cannot set it directly;\n\ 5202 This variable is buffer-local but you cannot set it directly;
5204 use the function `set-buffer-multibyte' to change a buffer's representation.\n\ 5203 use the function `set-buffer-multibyte' to change a buffer's representation.
5205 Changing its default value with `setq-default' is supported.\n\ 5204 Changing its default value with `setq-default' is supported.
5206 See also variable `default-enable-multibyte-characters' and Info node\n\ 5205 See also variable `default-enable-multibyte-characters' and Info node
5207 `(elisp)Text Representations'."); 5206 `(elisp)Text Representations'. */);
5208 5207
5209 DEFVAR_PER_BUFFER ("buffer-file-coding-system", 5208 DEFVAR_PER_BUFFER ("buffer-file-coding-system",
5210 &current_buffer->buffer_file_coding_system, Qnil, 5209 &current_buffer->buffer_file_coding_system, Qnil
5211 "Coding system to be used for encoding the buffer contents on saving.\n\ 5210 /* Coding system to be used for encoding the buffer contents on saving.
5212 This variable applies to saving the buffer, and also to `write-region'\n\ 5211 This variable applies to saving the buffer, and also to `write-region'
5213 and other functions that use `write-region'.\n\ 5212 and other functions that use `write-region'.
5214 It does not apply to sending output to subprocesses, however.\n\ 5213 It does not apply to sending output to subprocesses, however.
5215 \n\ 5214
5216 If this is nil, the buffer is saved without any code conversion\n\ 5215 If this is nil, the buffer is saved without any code conversion
5217 unless some coding system is specified in `file-coding-system-alist'\n\ 5216 unless some coding system is specified in `file-coding-system-alist'
5218 for the buffer file.\n\ 5217 for the buffer file.
5219 \n\ 5218
5220 The variable `coding-system-for-write', if non-nil, overrides this variable.\n\ 5219 The variable `coding-system-for-write', if non-nil, overrides this variable.
5221 \n\ 5220
5222 This variable is never applied to a way of decoding a file while reading it."); 5221 This variable is never applied to a way of decoding a file while reading it. */);
5223 5222
5224 DEFVAR_PER_BUFFER ("direction-reversed", &current_buffer->direction_reversed, 5223 DEFVAR_PER_BUFFER ("direction-reversed", &current_buffer->direction_reversed,
5225 Qnil, 5224 Qnil
5226 "*Non-nil means lines in the buffer are displayed right to left."); 5225 /* *Non-nil means lines in the buffer are displayed right to left. */);
5227 5226
5228 DEFVAR_PER_BUFFER ("truncate-lines", &current_buffer->truncate_lines, Qnil, 5227 DEFVAR_PER_BUFFER ("truncate-lines", &current_buffer->truncate_lines, Qnil
5229 "*Non-nil means do not display continuation lines;\n\ 5228 /* *Non-nil means do not display continuation lines;
5230 give each line of text one screen line.\n\ 5229 give each line of text one screen line.
5231 \n\ 5230
5232 Note that this is overridden by the variable\n\ 5231 Note that this is overridden by the variable
5233 `truncate-partial-width-windows' if that variable is non-nil\n\ 5232 `truncate-partial-width-windows' if that variable is non-nil
5234 and this buffer is not full-frame width."); 5233 and this buffer is not full-frame width. */);
5235 5234
5236 #ifdef DOS_NT 5235 #ifdef DOS_NT
5237 DEFVAR_PER_BUFFER ("buffer-file-type", &current_buffer->buffer_file_type, 5236 DEFVAR_PER_BUFFER ("buffer-file-type", &current_buffer->buffer_file_type,
5238 Qnil, 5237 Qnil
5239 "Non-nil if the visited file is a binary file.\n\ 5238 /* Non-nil if the visited file is a binary file.
5240 This variable is meaningful on MS-DOG and Windows NT.\n\ 5239 This variable is meaningful on MS-DOG and Windows NT.
5241 On those systems, it is automatically local in every buffer.\n\ 5240 On those systems, it is automatically local in every buffer.
5242 On other systems, this variable is normally always nil."); 5241 On other systems, this variable is normally always nil. */);
5243 #endif 5242 #endif
5244 5243
5245 DEFVAR_PER_BUFFER ("default-directory", &current_buffer->directory, 5244 DEFVAR_PER_BUFFER ("default-directory", &current_buffer->directory,
5246 make_number (Lisp_String), 5245 make_number (Lisp_String)
5247 "Name of default directory of current buffer. Should end with slash.\n\ 5246 /* Name of default directory of current buffer. Should end with slash.
5248 To interactively change the default directory, use command `cd'."); 5247 To interactively change the default directory, use command `cd'. */);
5249 5248
5250 DEFVAR_PER_BUFFER ("auto-fill-function", &current_buffer->auto_fill_function, 5249 DEFVAR_PER_BUFFER ("auto-fill-function", &current_buffer->auto_fill_function,
5251 Qnil, 5250 Qnil
5252 "Function called (if non-nil) to perform auto-fill.\n\ 5251 /* Function called (if non-nil) to perform auto-fill.
5253 It is called after self-inserting any character specified in\n\ 5252 It is called after self-inserting any character specified in
5254 the `auto-fill-chars' table.\n\ 5253 the `auto-fill-chars' table.
5255 NOTE: This variable is not a hook;\n\ 5254 NOTE: This variable is not a hook;
5256 its value may not be a list of functions."); 5255 its value may not be a list of functions. */);
5257 5256
5258 DEFVAR_PER_BUFFER ("buffer-file-name", &current_buffer->filename, 5257 DEFVAR_PER_BUFFER ("buffer-file-name", &current_buffer->filename,
5259 make_number (Lisp_String), 5258 make_number (Lisp_String)
5260 "Name of file visited in current buffer, or nil if not visiting a file."); 5259 /* Name of file visited in current buffer, or nil if not visiting a file. */);
5261 5260
5262 DEFVAR_PER_BUFFER ("buffer-file-truename", &current_buffer->file_truename, 5261 DEFVAR_PER_BUFFER ("buffer-file-truename", &current_buffer->file_truename,
5263 make_number (Lisp_String), 5262 make_number (Lisp_String)
5264 "Abbreviated truename of file visited in current buffer, or nil if none.\n\ 5263 /* Abbreviated truename of file visited in current buffer, or nil if none.
5265 The truename of a file is calculated by `file-truename'\n\ 5264 The truename of a file is calculated by `file-truename'
5266 and then abbreviated with `abbreviate-file-name'."); 5265 and then abbreviated with `abbreviate-file-name'. */);
5267 5266
5268 DEFVAR_PER_BUFFER ("buffer-auto-save-file-name", 5267 DEFVAR_PER_BUFFER ("buffer-auto-save-file-name",
5269 &current_buffer->auto_save_file_name, 5268 &current_buffer->auto_save_file_name,
5270 make_number (Lisp_String), 5269 make_number (Lisp_String)
5271 "Name of file for auto-saving current buffer,\n\ 5270 /* Name of file for auto-saving current buffer,
5272 or nil if buffer should not be auto-saved."); 5271 or nil if buffer should not be auto-saved. */);
5273 5272
5274 DEFVAR_PER_BUFFER ("buffer-read-only", &current_buffer->read_only, Qnil, 5273 DEFVAR_PER_BUFFER ("buffer-read-only", &current_buffer->read_only, Qnil
5275 "Non-nil if this buffer is read-only."); 5274 /* Non-nil if this buffer is read-only. */);
5276 5275
5277 DEFVAR_PER_BUFFER ("buffer-backed-up", &current_buffer->backed_up, Qnil, 5276 DEFVAR_PER_BUFFER ("buffer-backed-up", &current_buffer->backed_up, Qnil
5278 "Non-nil if this buffer's file has been backed up.\n\ 5277 /* Non-nil if this buffer's file has been backed up.
5279 Backing up is done before the first time the file is saved."); 5278 Backing up is done before the first time the file is saved. */);
5280 5279
5281 DEFVAR_PER_BUFFER ("buffer-saved-size", &current_buffer->save_length, 5280 DEFVAR_PER_BUFFER ("buffer-saved-size", &current_buffer->save_length,
5282 make_number (Lisp_Int), 5281 make_number (Lisp_Int)
5283 "Length of current buffer when last read in, saved or auto-saved.\n\ 5282 /* Length of current buffer when last read in, saved or auto-saved.
5284 0 initially."); 5283 0 initially. */);
5285 5284
5286 DEFVAR_PER_BUFFER ("selective-display", &current_buffer->selective_display, 5285 DEFVAR_PER_BUFFER ("selective-display", &current_buffer->selective_display,
5287 Qnil, 5286 Qnil
5288 "Non-nil enables selective display:\n\ 5287 /* Non-nil enables selective display:
5289 Integer N as value means display only lines\n\ 5288 Integer N as value means display only lines
5290 that start with less than n columns of space.\n\ 5289 that start with less than n columns of space.
5291 A value of t means, after a ^M, all the rest of the line is invisible.\n\ 5290 A value of t means, after a ^M, all the rest of the line is invisible.
5292 Then ^M's in the file are written into files as newlines."); 5291 Then ^M's in the file are written into files as newlines. */);
5293 5292
5294 #ifndef old 5293 #ifndef old
5295 DEFVAR_PER_BUFFER ("selective-display-ellipses", 5294 DEFVAR_PER_BUFFER ("selective-display-ellipses",
5296 &current_buffer->selective_display_ellipses, 5295 &current_buffer->selective_display_ellipses,
5297 Qnil, 5296 Qnil
5298 "t means display ... on previous line when a line is invisible."); 5297 /* t means display ... on previous line when a line is invisible. */);
5299 #endif 5298 #endif
5300 5299
5301 DEFVAR_PER_BUFFER ("overwrite-mode", &current_buffer->overwrite_mode, Qnil, 5300 DEFVAR_PER_BUFFER ("overwrite-mode", &current_buffer->overwrite_mode, Qnil
5302 "Non-nil if self-insertion should replace existing text.\n\ 5301 /* Non-nil if self-insertion should replace existing text.
5303 The value should be one of `overwrite-mode-textual',\n\ 5302 The value should be one of `overwrite-mode-textual',
5304 `overwrite-mode-binary', or nil.\n\ 5303 `overwrite-mode-binary', or nil.
5305 If it is `overwrite-mode-textual', self-insertion still\n\ 5304 If it is `overwrite-mode-textual', self-insertion still
5306 inserts at the end of a line, and inserts when point is before a tab,\n\ 5305 inserts at the end of a line, and inserts when point is before a tab,
5307 until the tab is filled in.\n\ 5306 until the tab is filled in.
5308 If `overwrite-mode-binary', self-insertion replaces newlines and tabs too."); 5307 If `overwrite-mode-binary', self-insertion replaces newlines and tabs too. */);
5309 5308
5310 #if 0 /* The doc string is too long for some compilers,
5311 but make-docfile can find it in this comment. */
5312 DEFVAR_PER_BUFFER ("buffer-display-table", &current_buffer->display_table, 5309 DEFVAR_PER_BUFFER ("buffer-display-table", &current_buffer->display_table,
5313 Qnil, 5310 Qnil
5314 "Display table that controls display of the contents of current buffer.\n\ 5311 /* Display table that controls display of the contents of current buffer.
5315 \n\ 5312
5316 If this variable is nil, the value of `standard-display-table' is used.\n\ 5313 If this variable is nil, the value of `standard-display-table' is used.
5317 Each window can have its own, overriding display table, see\n\ 5314 Each window can have its own, overriding display table, see
5318 `set-window-display-table' and `window-display-table'.\n\ 5315 `set-window-display-table' and `window-display-table'.
5319 \n\ 5316
5320 The display table is a char-table created with `make-display-table'.\n\ 5317 The display table is a char-table created with `make-display-table'.
5321 A char-table is an array indexed by character codes. Normal array\n\ 5318 A char-table is an array indexed by character codes. Normal array
5322 primitives `aref' and `aset' can be used to access elements of a char-table.\n\ 5319 primitives `aref' and `aset' can be used to access elements of a char-table.
5323 \n\ 5320
5324 Each of the char-table elements control how to display the corresponding\n\ 5321 Each of the char-table elements control how to display the corresponding
5325 text character: the element at index C in the table says how to display\n\ 5322 text character: the element at index C in the table says how to display
5326 the character whose code is C. Each element should be a vector of\n\ 5323 the character whose code is C. Each element should be a vector of
5327 characters or nil. nil means display the character in the default fashion;\n\ 5324 characters or nil. nil means display the character in the default fashion;
5328 otherwise, the characters from the vector are delivered to the screen\n\ 5325 otherwise, the characters from the vector are delivered to the screen
5329 instead of the original character.\n\ 5326 instead of the original character.
5330 \n\ 5327
5331 For example, (aset buffer-display-table ?X ?Y) will cause Emacs to display\n\ 5328 For example, (aset buffer-display-table ?X ?Y) will cause Emacs to display
5332 a capital Y instead of each X character.\n\ 5329 a capital Y instead of each X character.
5333 \n\ 5330
5334 In addition, a char-table has six extra slots to control the display of:\n\ 5331 In addition, a char-table has six extra slots to control the display of:
5335 \n\ 5332
5336 the end of a truncated screen line (extra-slot 0, a single character);\n\ 5333 the end of a truncated screen line (extra-slot 0, a single character);
5337 the end of a continued line (extra-slot 1, a single character);\n\ 5334 the end of a continued line (extra-slot 1, a single character);
5338 the escape character used to display character codes in octal\n\ 5335 the escape character used to display character codes in octal
5339 (extra-slot 2, a single character);\n\ 5336 (extra-slot 2, a single character);
5340 the character used as an arrow for control characters (extra-slot 3,\n\ 5337 the character used as an arrow for control characters (extra-slot 3,
5341 a single character);\n\ 5338 a single character);
5342 the decoration indicating the presence of invisible lines (extra-slot 4,\n\ 5339 the decoration indicating the presence of invisible lines (extra-slot 4,
5343 a vector of characters);\n\ 5340 a vector of characters);
5344 the character used to draw the border between side-by-side windows\n\ 5341 the character used to draw the border between side-by-side windows
5345 (extra-slot 5, a single character).\n\ 5342 (extra-slot 5, a single character).
5346 \n\ 5343
5347 See also the functions `display-table-slot' and `set-display-table-slot'."); 5344 See also the functions `display-table-slot' and `set-display-table-slot'. */);
5348 #endif
5349 DEFVAR_PER_BUFFER ("buffer-display-table", &current_buffer->display_table,
5350 Qnil, 0);
5351 5345
5352 DEFVAR_PER_BUFFER ("left-margin-width", &current_buffer->left_margin_width, 5346 DEFVAR_PER_BUFFER ("left-margin-width", &current_buffer->left_margin_width,
5353 Qnil, 5347 Qnil
5354 "*Width of left marginal area for display of a buffer.\n\ 5348 /* *Width of left marginal area for display of a buffer.
5355 A value of nil means no marginal area."); 5349 A value of nil means no marginal area. */);
5356 5350
5357 DEFVAR_PER_BUFFER ("right-margin-width", &current_buffer->right_margin_width, 5351 DEFVAR_PER_BUFFER ("right-margin-width", &current_buffer->right_margin_width,
5358 Qnil, 5352 Qnil
5359 "*Width of right marginal area for display of a buffer.\n\ 5353 /* *Width of right marginal area for display of a buffer.
5360 A value of nil means no marginal area."); 5354 A value of nil means no marginal area. */);
5361 5355
5362 DEFVAR_PER_BUFFER ("indicate-empty-lines", 5356 DEFVAR_PER_BUFFER ("indicate-empty-lines",
5363 &current_buffer->indicate_empty_lines, Qnil, 5357 &current_buffer->indicate_empty_lines, Qnil
5364 "*Visually indicate empty lines after the buffer end.\n\ 5358 /* *Visually indicate empty lines after the buffer end.
5365 If non-nil, a bitmap is displayed in the left fringe of a window on\n\ 5359 If non-nil, a bitmap is displayed in the left fringe of a window on
5366 window-systems."); 5360 window-systems. */);
5367 5361
5368 DEFVAR_PER_BUFFER ("scroll-up-aggressively", 5362 DEFVAR_PER_BUFFER ("scroll-up-aggressively",
5369 &current_buffer->scroll_up_aggressively, Qnil, 5363 &current_buffer->scroll_up_aggressively, Qnil
5370 "*If a number, scroll display up aggressively.\n\ 5364 /* *If a number, scroll display up aggressively.
5371 If scrolling a window because point is above the window start, choose\n\ 5365 If scrolling a window because point is above the window start, choose
5372 a new window start so that point ends up that fraction of the window's\n\ 5366 a new window start so that point ends up that fraction of the window's
5373 height from the top of the window."); 5367 height from the top of the window. */);
5374 5368
5375 DEFVAR_PER_BUFFER ("scroll-down-aggressively", 5369 DEFVAR_PER_BUFFER ("scroll-down-aggressively",
5376 &current_buffer->scroll_down_aggressively, Qnil, 5370 &current_buffer->scroll_down_aggressively, Qnil
5377 "*If a number, scroll display down aggressively.\n\ 5371 /* *If a number, scroll display down aggressively.
5378 If scrolling a window because point is below the window end, choose\n\ 5372 If scrolling a window because point is below the window end, choose
5379 a new window start so that point ends up that fraction of the window's\n\ 5373 a new window start so that point ends up that fraction of the window's
5380 height from the bottom of the window."); 5374 height from the bottom of the window. */);
5381 5375
5382 /*DEFVAR_LISP ("debug-check-symbol", &Vcheck_symbol, 5376 /*DEFVAR_LISP ("debug-check-symbol", &Vcheck_symbol,
5383 "Don't ask."); 5377 "Don't ask.");
5384 */ 5378 */
5385 5379
5386 DEFVAR_LISP ("before-change-functions", &Vbefore_change_functions, 5380 DEFVAR_LISP ("before-change-functions", &Vbefore_change_functions
5387 "List of functions to call before each text change.\n\ 5381 /* List of functions to call before each text change.
5388 Two arguments are passed to each function: the positions of\n\ 5382 Two arguments are passed to each function: the positions of
5389 the beginning and end of the range of old text to be changed.\n\ 5383 the beginning and end of the range of old text to be changed.
5390 \(For an insertion, the beginning and end are at the same place.)\n\ 5384 \(For an insertion, the beginning and end are at the same place.)
5391 No information is given about the length of the text after the change.\n\ 5385 No information is given about the length of the text after the change.
5392 \n\ 5386
5393 Buffer changes made while executing the `before-change-functions'\n\ 5387 Buffer changes made while executing the `before-change-functions'
5394 don't call any before-change or after-change functions.\n\ 5388 don't call any before-change or after-change functions.
5395 That's because these variables are temporarily set to nil.\n\ 5389 That's because these variables are temporarily set to nil.
5396 As a result, a hook function cannot straightforwardly alter the value of\n\ 5390 As a result, a hook function cannot straightforwardly alter the value of
5397 these variables. See the Emacs Lisp manual for a way of\n\ 5391 these variables. See the Emacs Lisp manual for a way of
5398 accomplishing an equivalent result by using other variables.\n\ 5392 accomplishing an equivalent result by using other variables.
5399 \n\ 5393
5400 If an unhandled error happens in running these functions,\n\ 5394 If an unhandled error happens in running these functions,
5401 the variable's value remains nil. That prevents the error\n\ 5395 the variable's value remains nil. That prevents the error
5402 from happening repeatedly and making Emacs nonfunctional."); 5396 from happening repeatedly and making Emacs nonfunctional. */);
5403 Vbefore_change_functions = Qnil; 5397 Vbefore_change_functions = Qnil;
5404 5398
5405 DEFVAR_LISP ("after-change-functions", &Vafter_change_functions, 5399 DEFVAR_LISP ("after-change-functions", &Vafter_change_functions
5406 "List of function to call after each text change.\n\ 5400 /* List of function to call after each text change.
5407 Three arguments are passed to each function: the positions of\n\ 5401 Three arguments are passed to each function: the positions of
5408 the beginning and end of the range of changed text,\n\ 5402 the beginning and end of the range of changed text,
5409 and the length in bytes of the pre-change text replaced by that range.\n\ 5403 and the length in bytes of the pre-change text replaced by that range.
5410 \(For an insertion, the pre-change length is zero;\n\ 5404 \(For an insertion, the pre-change length is zero;
5411 for a deletion, that length is the number of bytes deleted,\n\ 5405 for a deletion, that length is the number of bytes deleted,
5412 and the post-change beginning and end are at the same place.)\n\ 5406 and the post-change beginning and end are at the same place.)
5413 \n\ 5407
5414 Buffer changes made while executing the `after-change-functions'\n\ 5408 Buffer changes made while executing the `after-change-functions'
5415 don't call any before-change or after-change functions.\n\ 5409 don't call any before-change or after-change functions.
5416 That's because these variables are temporarily set to nil.\n\ 5410 That's because these variables are temporarily set to nil.
5417 As a result, a hook function cannot straightforwardly alter the value of\n\ 5411 As a result, a hook function cannot straightforwardly alter the value of
5418 these variables. See the Emacs Lisp manual for a way of\n\ 5412 these variables. See the Emacs Lisp manual for a way of
5419 accomplishing an equivalent result by using other variables.\n\ 5413 accomplishing an equivalent result by using other variables.
5420 \n\ 5414
5421 If an unhandled error happens in running these functions,\n\ 5415 If an unhandled error happens in running these functions,
5422 the variable's value remains nil. That prevents the error\n\ 5416 the variable's value remains nil. That prevents the error
5423 from happening repeatedly and making Emacs nonfunctional."); 5417 from happening repeatedly and making Emacs nonfunctional. */);
5424 Vafter_change_functions = Qnil; 5418 Vafter_change_functions = Qnil;
5425 5419
5426 DEFVAR_LISP ("first-change-hook", &Vfirst_change_hook, 5420 DEFVAR_LISP ("first-change-hook", &Vfirst_change_hook
5427 "A list of functions to call before changing a buffer which is unmodified.\n\ 5421 /* A list of functions to call before changing a buffer which is unmodified.
5428 The functions are run using the `run-hooks' function."); 5422 The functions are run using the `run-hooks' function. */);
5429 Vfirst_change_hook = Qnil; 5423 Vfirst_change_hook = Qnil;
5430 5424
5431 #if 0 /* The doc string is too long for some compilers, 5425 DEFVAR_PER_BUFFER ("buffer-undo-list", &current_buffer->undo_list, Qnil
5432 but make-docfile can find it in this comment. */ 5426 /* List of undo entries in current buffer.
5433 DEFVAR_PER_BUFFER ("buffer-undo-list", &current_buffer->undo_list, Qnil, 5427 Recent changes come first; older changes follow newer.
5434 "List of undo entries in current buffer.\n\ 5428
5435 Recent changes come first; older changes follow newer.\n\ 5429 An entry (BEG . END) represents an insertion which begins at
5436 \n\ 5430 position BEG and ends at position END.
5437 An entry (BEG . END) represents an insertion which begins at\n\ 5431
5438 position BEG and ends at position END.\n\ 5432 An entry (TEXT . POSITION) represents the deletion of the string TEXT
5439 \n\ 5433 from (abs POSITION). If POSITION is positive, point was at the front
5440 An entry (TEXT . POSITION) represents the deletion of the string TEXT\n\ 5434 of the text being deleted; if negative, point was at the end.
5441 from (abs POSITION). If POSITION is positive, point was at the front\n\ 5435
5442 of the text being deleted; if negative, point was at the end.\n\ 5436 An entry (t HIGH . LOW) indicates that the buffer previously had
5443 \n\ 5437 \"unmodified\" status. HIGH and LOW are the high and low 16-bit portions
5444 An entry (t HIGH . LOW) indicates that the buffer previously had\n\ 5438 of the visited file's modification time, as of that time. If the
5445 \"unmodified\" status. HIGH and LOW are the high and low 16-bit portions\n\ 5439 modification time of the most recent save is different, this entry is
5446 of the visited file's modification time, as of that time. If the\n\ 5440 obsolete.
5447 modification time of the most recent save is different, this entry is\n\ 5441
5448 obsolete.\n\ 5442 An entry (nil PROPERTY VALUE BEG . END) indicates that a text property
5449 \n\ 5443 was modified between BEG and END. PROPERTY is the property name,
5450 An entry (nil PROPERTY VALUE BEG . END) indicates that a text property\n\ 5444 and VALUE is the old value.
5451 was modified between BEG and END. PROPERTY is the property name,\n\ 5445
5452 and VALUE is the old value.\n\ 5446 An entry (MARKER . DISTANCE) indicates that the marker MARKER
5453 \n\ 5447 was adjusted in position by the offset DISTANCE (an integer).
5454 An entry (MARKER . DISTANCE) indicates that the marker MARKER\n\ 5448
5455 was adjusted in position by the offset DISTANCE (an integer).\n\ 5449 An entry of the form POSITION indicates that point was at the buffer
5456 \n\ 5450 location given by the integer. Undoing an entry of this form places
5457 An entry of the form POSITION indicates that point was at the buffer\n\ 5451 point at POSITION.
5458 location given by the integer. Undoing an entry of this form places\n\ 5452
5459 point at POSITION.\n\ 5453 nil marks undo boundaries. The undo command treats the changes
5460 \n\ 5454 between two undo boundaries as a single step to be undone.
5461 nil marks undo boundaries. The undo command treats the changes\n\ 5455
5462 between two undo boundaries as a single step to be undone.\n\ 5456 If the value of the variable is t, undo information is not recorded. */);
5463 \n\ 5457
5464 If the value of the variable is t, undo information is not recorded."); 5458 DEFVAR_PER_BUFFER ("mark-active", &current_buffer->mark_active, Qnil
5465 #endif 5459 /* Non-nil means the mark and region are currently active in this buffer. */);
5466 DEFVAR_PER_BUFFER ("buffer-undo-list", &current_buffer->undo_list, Qnil, 5460
5467 0); 5461 DEFVAR_PER_BUFFER ("cache-long-line-scans", &current_buffer->cache_long_line_scans, Qnil
5468 5462 /* Non-nil means that Emacs should use caches to handle long lines more quickly.
5469 DEFVAR_PER_BUFFER ("mark-active", &current_buffer->mark_active, Qnil, 5463
5470 "Non-nil means the mark and region are currently active in this buffer."); 5464 Normally, the line-motion functions work by scanning the buffer for
5471 5465 newlines. Columnar operations (like move-to-column and
5472 DEFVAR_PER_BUFFER ("cache-long-line-scans", &current_buffer->cache_long_line_scans, Qnil, 5466 compute-motion) also work by scanning the buffer, summing character
5473 "Non-nil means that Emacs should use caches to handle long lines more quickly.\n\ 5467 widths as they go. This works well for ordinary text, but if the
5474 \n\ 5468 buffer's lines are very long (say, more than 500 characters), these
5475 Normally, the line-motion functions work by scanning the buffer for\n\ 5469 motion functions will take longer to execute. Emacs may also take
5476 newlines. Columnar operations (like move-to-column and\n\ 5470 longer to update the display.
5477 compute-motion) also work by scanning the buffer, summing character\n\ 5471
5478 widths as they go. This works well for ordinary text, but if the\n\ 5472 If cache-long-line-scans is non-nil, these motion functions cache the
5479 buffer's lines are very long (say, more than 500 characters), these\n\ 5473 results of their scans, and consult the cache to avoid rescanning
5480 motion functions will take longer to execute. Emacs may also take\n\ 5474 regions of the buffer until the text is modified. The caches are most
5481 longer to update the display.\n\ 5475 beneficial when they prevent the most searching---that is, when the
5482 \n\ 5476 buffer contains long lines and large regions of characters with the
5483 If cache-long-line-scans is non-nil, these motion functions cache the\n\ 5477 same, fixed screen width.
5484 results of their scans, and consult the cache to avoid rescanning\n\ 5478
5485 regions of the buffer until the text is modified. The caches are most\n\ 5479 When cache-long-line-scans is non-nil, processing short lines will
5486 beneficial when they prevent the most searching---that is, when the\n\ 5480 become slightly slower (because of the overhead of consulting the
5487 buffer contains long lines and large regions of characters with the\n\ 5481 cache), and the caches will use memory roughly proportional to the
5488 same, fixed screen width.\n\ 5482 number of newlines and characters whose screen width varies.
5489 \n\ 5483
5490 When cache-long-line-scans is non-nil, processing short lines will\n\ 5484 The caches require no explicit maintenance; their accuracy is
5491 become slightly slower (because of the overhead of consulting the\n\ 5485 maintained internally by the Emacs primitives. Enabling or disabling
5492 cache), and the caches will use memory roughly proportional to the\n\ 5486 the cache should not affect the behavior of any of the motion
5493 number of newlines and characters whose screen width varies.\n\ 5487 functions; it should only affect their performance. */);
5494 \n\ 5488
5495 The caches require no explicit maintenance; their accuracy is\n\ 5489 DEFVAR_PER_BUFFER ("point-before-scroll", &current_buffer->point_before_scroll, Qnil
5496 maintained internally by the Emacs primitives. Enabling or disabling\n\ 5490 /* Value of point before the last series of scroll operations, or nil. */);
5497 the cache should not affect the behavior of any of the motion\n\ 5491
5498 functions; it should only affect their performance."); 5492 DEFVAR_PER_BUFFER ("buffer-file-format", &current_buffer->file_format, Qnil
5499 5493 /* List of formats to use when saving this buffer.
5500 DEFVAR_PER_BUFFER ("point-before-scroll", &current_buffer->point_before_scroll, Qnil, 5494 Formats are defined by `format-alist'. This variable is
5501 "Value of point before the last series of scroll operations, or nil."); 5495 set when a file is visited. Automatically local in all buffers. */);
5502
5503 DEFVAR_PER_BUFFER ("buffer-file-format", &current_buffer->file_format, Qnil,
5504 "List of formats to use when saving this buffer.\n\
5505 Formats are defined by `format-alist'. This variable is\n\
5506 set when a file is visited. Automatically local in all buffers.");
5507 5496
5508 DEFVAR_PER_BUFFER ("buffer-invisibility-spec", 5497 DEFVAR_PER_BUFFER ("buffer-invisibility-spec",
5509 &current_buffer->invisibility_spec, Qnil, 5498 &current_buffer->invisibility_spec, Qnil
5510 "Invisibility spec of this buffer.\n\ 5499 /* Invisibility spec of this buffer.
5511 The default is t, which means that text is invisible\n\ 5500 The default is t, which means that text is invisible
5512 if it has a non-nil `invisible' property.\n\ 5501 if it has a non-nil `invisible' property.
5513 If the value is a list, a text character is invisible if its `invisible'\n\ 5502 If the value is a list, a text character is invisible if its `invisible'
5514 property is an element in that list.\n\ 5503 property is an element in that list.
5515 If an element is a cons cell of the form (PROP . ELLIPSIS),\n\ 5504 If an element is a cons cell of the form (PROP . ELLIPSIS),
5516 then characters with property value PROP are invisible,\n\ 5505 then characters with property value PROP are invisible,
5517 and they have an ellipsis as well if ELLIPSIS is non-nil."); 5506 and they have an ellipsis as well if ELLIPSIS is non-nil. */);
5518 5507
5519 DEFVAR_PER_BUFFER ("buffer-display-count", 5508 DEFVAR_PER_BUFFER ("buffer-display-count",
5520 &current_buffer->display_count, Qnil, 5509 &current_buffer->display_count, Qnil
5521 "A number incremented each time this buffer is displayed in a window.\n\ 5510 /* A number incremented each time this buffer is displayed in a window.
5522 The function `set-window-buffer increments it."); 5511 The function `set-window-buffer' increments it. */);
5523 5512
5524 DEFVAR_PER_BUFFER ("buffer-display-time", 5513 DEFVAR_PER_BUFFER ("buffer-display-time",
5525 &current_buffer->display_time, Qnil, 5514 &current_buffer->display_time, Qnil
5526 "Time stamp updated each time this buffer is displayed in a window.\n\ 5515 /* Time stamp updated each time this buffer is displayed in a window.
5527 The function `set-window-buffer' updates this variable\n\ 5516 The function `set-window-buffer' updates this variable
5528 to the value obtained by calling `current-time'.\n\ 5517 to the value obtained by calling `current-time'.
5529 If the buffer has never been shown in a window, the value is nil."); 5518 If the buffer has never been shown in a window, the value is nil. */);
5530 5519
5531 DEFVAR_LISP ("transient-mark-mode", &Vtransient_mark_mode, 5520 DEFVAR_LISP ("transient-mark-mode", &Vtransient_mark_mode
5532 "*Non-nil means deactivate the mark when the buffer contents change.\n\ 5521 /* *Non-nil means deactivate the mark when the buffer contents change.
5533 Non-nil also enables highlighting of the region whenever the mark is active.\n\ 5522 Non-nil also enables highlighting of the region whenever the mark is active.
5534 The variable `highlight-nonselected-windows' controls whether to highlight\n\ 5523 The variable `highlight-nonselected-windows' controls whether to highlight
5535 all windows or just the selected window."); 5524 all windows or just the selected window. */);
5536 Vtransient_mark_mode = Qnil; 5525 Vtransient_mark_mode = Qnil;
5537 5526
5538 DEFVAR_LISP ("inhibit-read-only", &Vinhibit_read_only, 5527 DEFVAR_LISP ("inhibit-read-only", &Vinhibit_read_only
5539 "*Non-nil means disregard read-only status of buffers or characters.\n\ 5528 /* *Non-nil means disregard read-only status of buffers or characters.
5540 If the value is t, disregard `buffer-read-only' and all `read-only'\n\ 5529 If the value is t, disregard `buffer-read-only' and all `read-only'
5541 text properties. If the value is a list, disregard `buffer-read-only'\n\ 5530 text properties. If the value is a list, disregard `buffer-read-only'
5542 and disregard a `read-only' text property if the property value\n\ 5531 and disregard a `read-only' text property if the property value
5543 is a member of the list."); 5532 is a member of the list. */);
5544 Vinhibit_read_only = Qnil; 5533 Vinhibit_read_only = Qnil;
5545 5534
5546 DEFVAR_PER_BUFFER ("cursor-type", &current_buffer->cursor_type, Qnil, 5535 DEFVAR_PER_BUFFER ("cursor-type", &current_buffer->cursor_type, Qnil
5547 "Cursor to use in window displaying this buffer.\n\ 5536 /* Cursor to use in window displaying this buffer.
5548 Values are interpreted as follows:\n\ 5537 Values are interpreted as follows:
5549 \n\ 5538
5550 t use the cursor specified for the frame\n\ 5539 t use the cursor specified for the frame
5551 nil don't display a cursor\n\ 5540 nil don't display a cursor
5552 `bar' display a bar cursor with default width\n\ 5541 `bar' display a bar cursor with default width
5553 (bar . WIDTH) display a bar cursor with width WIDTH\n\ 5542 (bar . WIDTH) display a bar cursor with width WIDTH
5554 others display a box cursor."); 5543 others display a box cursor. */);
5555 5544
5556 DEFVAR_PER_BUFFER ("line-spacing", 5545 DEFVAR_PER_BUFFER ("line-spacing",
5557 &current_buffer->extra_line_spacing, Qnil, 5546 &current_buffer->extra_line_spacing, Qnil
5558 "Additional space to put between lines when displaying a buffer.\n\ 5547 /* Additional space to put between lines when displaying a buffer.
5559 The space is measured in pixels, and put below lines on window systems."); 5548 The space is measured in pixels, and put below lines on window systems. */);
5560 5549
5561 DEFVAR_LISP ("kill-buffer-query-functions", &Vkill_buffer_query_functions, 5550 DEFVAR_LISP ("kill-buffer-query-functions", &Vkill_buffer_query_functions
5562 "List of functions called with no args to query before killing a buffer."); 5551 /* List of functions called with no args to query before killing a buffer. */);
5563 Vkill_buffer_query_functions = Qnil; 5552 Vkill_buffer_query_functions = Qnil;
5564 5553
5565 defsubr (&Sbuffer_live_p); 5554 defsubr (&Sbuffer_live_p);
5566 defsubr (&Sbuffer_list); 5555 defsubr (&Sbuffer_list);
5567 defsubr (&Sget_buffer); 5556 defsubr (&Sget_buffer);