X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=src%2Fbuffer.c;h=2f2123fb50d83e872cf406c4fc8182c0a7fecc5f;hb=296255bdcdce5a2c39b20475bad2ac2ba25bfb84;hp=3be44f8524431bb3138ca33006eb9497a9c0e7a5;hpb=3e447015251ce6dcde843cbed10d9033d5538622;p=chise%2Fxemacs-chise.git- diff --git a/src/buffer.c b/src/buffer.c index 3be44f8..2f2123f 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -195,7 +195,6 @@ Lisp_Object QSscratch; /* "*scratch*" */ Lisp_Object Qdefault_directory; Lisp_Object Qkill_buffer_hook; -Lisp_Object Qrecord_buffer_hook; Lisp_Object Qrename_auto_save_file; @@ -567,7 +566,7 @@ finish_init_buffer (struct buffer *b, Lisp_Object name) 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; @@ -1027,6 +1026,7 @@ This does not change the name of the visited file (if any). /* 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); @@ -1304,13 +1304,13 @@ with `delete-process'. 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. */ @@ -1413,8 +1413,6 @@ buffer. See `other-buffer' for more information. XCDR (lynk) = f->buffer_alist; f->buffer_alist = lynk; - va_run_hook_with_args (Qrecord_buffer_hook, 1, buffer); - return Qnil; } @@ -1913,11 +1911,17 @@ dfc_convert_to_external_format (dfc_conversion_type source_type, 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); @@ -2052,6 +2056,15 @@ dfc_convert_to_internal_format (dfc_conversion_type source_type, { 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)) @@ -2064,6 +2077,7 @@ dfc_convert_to_internal_format (dfc_conversion_type source_type, 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); @@ -2148,12 +2162,13 @@ dfc_convert_to_internal_format (dfc_conversion_type source_type, 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"); @@ -2373,20 +2388,16 @@ List of functions called with no args to query before killing a buffer. /* 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 */ \