Copyright (C) 1985-1989, 1992-1995 Free Software Foundation, Inc.
Copyright (C) 1995 Sun Microsystems, Inc.
Copyright (C) 1995, 1996 Ben Wing.
+ Copyright (C) 1999,2000,2001 MORIOKA Tomohiko
This file is part of XEmacs.
list per frame.)
Mly: a few changes for buffer-local vars, 19.8 or 19.9.
Ben Wing: some changes and cleanups for Mule, 19.12.
+ MORIOKA Tomohiko: some changes for XEmacs UTF-2000.
*/
/* This file contains functions that work with buffer objects.
#include "buffer.h"
#include "chartab.h"
+#include "casetab.h"
#include "commands.h"
#include "elhash.h"
#include "extents.h"
Lisp_Object Qswitch_to_buffer;
/* Two thresholds controlling how much undo information to keep. */
-int undo_threshold;
-int undo_high_threshold;
+Fixnum undo_threshold;
+Fixnum undo_high_threshold;
int find_file_compare_truenames;
int find_file_use_truenames;
}
#include "bufslots.h"
#undef MARKED_SLOT
-#if 0
-#define STRING256_P(obj) \
- (STRINGP (obj) && XSTRING_CHAR_LENGTH (obj) == 256)
- /* If the standard case table has been altered and invalidated,
- fix up its insides first. */
- if (!(STRING256_P(Vascii_upcase_table) &&
- STRING256_P(Vascii_canon_table) &&
- STRING256_P(Vascii_eqv_table)))
- {
- Fset_standard_case_table (Vascii_downcase_table);
- }
- b->downcase_table = Vascii_downcase_table;
- b->upcase_table = Vascii_upcase_table;
- b->case_canon_table = Vascii_canon_table;
- b->case_eqv_table = Vascii_eqv_table;
-#ifdef MULE
- b->mirror_downcase_table = Vmirror_ascii_downcase_table;
- b->mirror_upcase_table = Vmirror_ascii_upcase_table;
- b->mirror_case_canon_table = Vmirror_ascii_canon_table;
- b->mirror_case_eqv_table = Vmirror_ascii_eqv_table;
-#endif
-#endif
}
\f
/* #### 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, Qnil, Qnil);
+ GCPRO1 (buf);
+ Freplace_buffer_in_windows (buf, Qnil, Qall);
+ UNGCPRO;
font_lock_buffer_was_killed (b);
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);
{
Bufbyte 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);
See also the variable `find-file-use-truenames'.
*/ );
+#if defined(CYGWIN) || defined(WIN32_NATIVE)
+ find_file_compare_truenames = 1;
+#else
find_file_compare_truenames = 0;
+#endif
DEFVAR_BOOL ("find-file-use-truenames", &find_file_use_truenames /*
If this is true, then a buffer's visited file-name will always be
defs->mode_name = QSFundamental;
defs->abbrev_table = Qnil; /* real default setup by Lisp code */
- defs->downcase_table = Vascii_downcase_table;
- defs->upcase_table = Vascii_upcase_table;
- defs->case_canon_table = Vascii_canon_table;
- defs->case_eqv_table = Vascii_eqv_table;
+ defs->case_table = Vstandard_case_table;
#ifdef MULE
- defs->mirror_downcase_table = Vmirror_ascii_downcase_table;
- defs->mirror_upcase_table = Vmirror_ascii_upcase_table;
- defs->mirror_case_canon_table = Vmirror_ascii_canon_table;
- defs->mirror_case_eqv_table = Vmirror_ascii_eqv_table;
-
defs->category_table = Vstandard_category_table;
#endif /* MULE */
defs->syntax_table = Vstandard_syntax_table;
+#ifndef UTF2000
defs->mirror_syntax_table =
XCHAR_TABLE (Vstandard_syntax_table)->mirror_table;
+#endif
defs->modeline_format = build_string ("%-"); /* reset in loaddefs.el */
defs->case_fold_search = Qt;
defs->selective_display_ellipses = Qt;
defs->auto_save_modified = 0;
defs->auto_save_failure_time = -1;
defs->invisibility_spec = Qt;
+ defs->buffer_local_face_property = 0;
defs->indirect_children = Qnil;
syms->indirect_children = Qnil;
buffer_local_flags.generated_modeline_string = always_local_no_default;
buffer_local_flags.keymap = resettable;
- buffer_local_flags.downcase_table = resettable;
- buffer_local_flags.upcase_table = resettable;
- buffer_local_flags.case_canon_table = resettable;
- buffer_local_flags.case_eqv_table = resettable;
+ buffer_local_flags.case_table = resettable;
buffer_local_flags.syntax_table = resettable;
#ifdef MULE
buffer_local_flags.category_table = resettable;
syms = XBUFFER (Vbuffer_local_symbols);
buffer_defaults_saved_slots = &defs->BUFFER_SLOTS_FIRST_NAME;
buffer_local_symbols_saved_slots = &syms->BUFFER_SLOTS_FIRST_NAME;
- dumpstruct (&buffer_defaults_saved_slots, &buffer_slots_description);
- dumpstruct (&buffer_local_symbols_saved_slots, &buffer_slots_description);
+ dump_add_root_struct_ptr (&buffer_defaults_saved_slots, &buffer_slots_description);
+ dump_add_root_struct_ptr (&buffer_local_symbols_saved_slots, &buffer_slots_description);
DEFVAR_BUFFER_DEFAULTS ("default-modeline-format", modeline_format /*
Default value of `modeline-format' for buffers that don't override it.