Lisp_Object Qdefault_directory;
Lisp_Object Qkill_buffer_hook;
-Lisp_Object Qrecord_buffer_hook;
Lisp_Object Qrename_auto_save_file;
local_var_alist is set to Qnil at the same point, in
nuke_all_buffer_slots(). */
reset_buffer_local_variables (b, 1);
- b->directory = ((current_buffer) ? current_buffer->directory : Qnil);
+ b->directory = current_buffer ? current_buffer->directory : Qnil;
b->last_window_start = 1;
/* The aconses in the Vbuffer_alist are shared with frame->buffer_alist,
so this will change it in the per-frame ordering as well. */
Fsetcar (Frassq (buf, Vbuffer_alist), newname);
+
if (NILP (current_buffer->filename)
&& !NILP (current_buffer->auto_save_file_name))
call0 (Qrename_auto_save_file);
kill_buffer_processes (buf);
+ delete_from_buffer_alist (buf);
+
/* #### This is a problem if this buffer is in a dedicated window.
Need to undedicate any windows of this buffer first (and delete them?)
*/
Freplace_buffer_in_windows (buf);
- delete_from_buffer_alist (buf);
-
font_lock_buffer_was_killed (b);
/* Delete any auto-save file, if we saved it in this session. */
XCDR (lynk) = f->buffer_alist;
f->buffer_alist = lynk;
- va_run_hook_with_args (Qrecord_buffer_hook, 1, buffer);
-
return Qnil;
}
const Bufbyte *end;
for (end = ptr + len; ptr < end;)
{
+#ifdef UTF2000
+ Bufbyte c =
+ (*ptr < 0xc0) ? *ptr :
+ ((*ptr & 0x1f) << 6) | (*(ptr+1) & 0x3f);
+#else
Bufbyte c =
(BYTE_ASCII_P (*ptr)) ? *ptr :
(*ptr == LEADING_BYTE_CONTROL_1) ? (*(ptr+1) - 0x20) :
(*ptr == LEADING_BYTE_LATIN_ISO8859_1) ? (*(ptr+1)) :
'~';
+#endif
Dynarr_add (conversion_out_dynarr, (Extbyte) c);
INC_CHARPTR (ptr);
{
Extbyte c = *ptr;
+#ifdef UTF2000
+ if (BYTE_ASCII_P (c))
+ Dynarr_add (conversion_in_dynarr, c);
+ else
+ {
+ Dynarr_add (conversion_in_dynarr, (c >> 6) | 0xC0);
+ Dynarr_add (conversion_in_dynarr, (c & 0x3F) | 0x80);
+ }
+#else
if (BYTE_ASCII_P (c))
Dynarr_add (conversion_in_dynarr, c);
else if (BYTE_C1_P (c))
Dynarr_add (conversion_in_dynarr, LEADING_BYTE_LATIN_ISO8859_1);
Dynarr_add (conversion_in_dynarr, c);
}
+#endif
}
#else
Dynarr_add_many (conversion_in_dynarr, source->data.ptr, source->data.len);
void
syms_of_buffer (void)
{
+ INIT_LRECORD_IMPLEMENTATION (buffer);
+
defsymbol (&Qbuffer_live_p, "buffer-live-p");
defsymbol (&Qbuffer_or_string_p, "buffer-or-string-p");
defsymbol (&Qmode_class, "mode-class");
defsymbol (&Qrename_auto_save_file, "rename-auto-save-file");
defsymbol (&Qkill_buffer_hook, "kill-buffer-hook");
- defsymbol (&Qrecord_buffer_hook, "record-buffer-hook");
defsymbol (&Qpermanent_local, "permanent-local");
defsymbol (&Qfirst_change_hook, "first-change-hook");
/* Renamed from DEFVAR_PER_BUFFER because FSFmacs D_P_B takes
a bogus extra arg, which confuses an otherwise identical make-docfile.c */
-
-/* Declaring this stuff as const produces 'Cannot reinitialize' messages
- from SunPro C's fix-and-continue feature (a way neato feature that
- makes debugging unbelievably more bearable) */
#define DEFVAR_BUFFER_LOCAL_1(lname, field_name, forward_type, magicfun) do { \
- static CONST_IF_NOT_DEBUG struct symbol_value_forward I_hate_C = \
+ static const struct symbol_value_forward I_hate_C = \
{ /* struct symbol_value_forward */ \
{ /* struct symbol_value_magic */ \
{ /* struct lcrecord_header */ \
{ /* struct lrecord_header */ \
- 1, /* type - index into lrecord_implementations_table */ \
- 0, /* mark bit */ \
- 0, /* c_readonly bit */ \
- 0 /* lisp_readonly bit */ \
+ lrecord_type_symbol_value_forward, /* lrecord_type_index */ \
+ 1, /* mark bit */ \
+ 1, /* c_readonly bit */ \
+ 1 /* lisp_readonly bit */ \
}, \
0, /* next */ \
0, /* uid */ \