mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-02-23 13:27:36 +00:00
* src/buffer.c (init_buffer_once): Initialize buffer_local_flags early.
* src/buffer.c (init_buffer_once): Initialize buffer_local_flags before calling reset_buffer_local_variables, and make sure we initialize it completely.
This commit is contained in:
parent
509257822c
commit
23ffeb9015
2 changed files with 95 additions and 72 deletions
|
|
@ -1,3 +1,9 @@
|
|||
2015-01-11 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* buffer.c (init_buffer_once): Initialize buffer_local_flags before
|
||||
calling reset_buffer_local_variables, and make sure we initialize
|
||||
it completely.
|
||||
|
||||
2015-01-11 Dmitry Antipov <dmantipov@yandex.ru>
|
||||
|
||||
* coding.c (Fcoding_system_plist): Use common style for docstring.
|
||||
|
|
|
|||
161
src/buffer.c
161
src/buffer.c
|
|
@ -5027,6 +5027,93 @@ init_buffer_once (void)
|
|||
|
||||
memset (buffer_permanent_local_flags, 0, sizeof buffer_permanent_local_flags);
|
||||
|
||||
/* 0 means not a lisp var, -1 means always local, else mask. */
|
||||
memset (&buffer_local_flags, 0, sizeof buffer_local_flags);
|
||||
bset_filename (&buffer_local_flags, make_number (-1));
|
||||
bset_directory (&buffer_local_flags, make_number (-1));
|
||||
bset_backed_up (&buffer_local_flags, make_number (-1));
|
||||
bset_save_length (&buffer_local_flags, make_number (-1));
|
||||
bset_auto_save_file_name (&buffer_local_flags, make_number (-1));
|
||||
bset_read_only (&buffer_local_flags, make_number (-1));
|
||||
bset_major_mode (&buffer_local_flags, make_number (-1));
|
||||
bset_mode_name (&buffer_local_flags, make_number (-1));
|
||||
bset_undo_list (&buffer_local_flags, make_number (-1));
|
||||
bset_mark_active (&buffer_local_flags, make_number (-1));
|
||||
bset_point_before_scroll (&buffer_local_flags, make_number (-1));
|
||||
bset_file_truename (&buffer_local_flags, make_number (-1));
|
||||
bset_invisibility_spec (&buffer_local_flags, make_number (-1));
|
||||
bset_file_format (&buffer_local_flags, make_number (-1));
|
||||
bset_auto_save_file_format (&buffer_local_flags, make_number (-1));
|
||||
bset_display_count (&buffer_local_flags, make_number (-1));
|
||||
bset_display_time (&buffer_local_flags, make_number (-1));
|
||||
bset_enable_multibyte_characters (&buffer_local_flags, make_number (-1));
|
||||
|
||||
/* These used to be stuck at 0 by default, but now that the all-zero value
|
||||
means Qnil, we have to initialize them explicitly. */
|
||||
bset_name (&buffer_local_flags, make_number (0));
|
||||
bset_mark (&buffer_local_flags, make_number (0));
|
||||
bset_local_var_alist (&buffer_local_flags, make_number (0));
|
||||
bset_keymap (&buffer_local_flags, make_number (0));
|
||||
bset_downcase_table (&buffer_local_flags, make_number (0));
|
||||
bset_upcase_table (&buffer_local_flags, make_number (0));
|
||||
bset_case_canon_table (&buffer_local_flags, make_number (0));
|
||||
bset_case_eqv_table (&buffer_local_flags, make_number (0));
|
||||
bset_minor_modes (&buffer_local_flags, make_number (0));
|
||||
bset_width_table (&buffer_local_flags, make_number (0));
|
||||
bset_pt_marker (&buffer_local_flags, make_number (0));
|
||||
bset_begv_marker (&buffer_local_flags, make_number (0));
|
||||
bset_zv_marker (&buffer_local_flags, make_number (0));
|
||||
bset_last_selected_window (&buffer_local_flags, make_number (0));
|
||||
|
||||
idx = 1;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, mode_line_format), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, abbrev_mode), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, overwrite_mode), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, case_fold_search), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, auto_fill_function), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, selective_display), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, selective_display_ellipses), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, tab_width), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, truncate_lines), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, word_wrap), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, ctl_arrow), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, fill_column), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, left_margin), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, abbrev_table), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, display_table), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, syntax_table), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, cache_long_scans), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, category_table), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, bidi_display_reordering), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, bidi_paragraph_direction), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, buffer_file_coding_system), idx);
|
||||
/* Make this one a permanent local. */
|
||||
buffer_permanent_local_flags[idx++] = 1;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, left_margin_cols), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, right_margin_cols), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, left_fringe_width), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, right_fringe_width), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, fringes_outside_margins), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, scroll_bar_width), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, scroll_bar_height), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, vertical_scroll_bar_type), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, horizontal_scroll_bar_type), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, indicate_empty_lines), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, indicate_buffer_boundaries), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, fringe_indicator_alist), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, fringe_cursor_alist), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, scroll_up_aggressively), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, scroll_down_aggressively), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, header_line_format), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, cursor_type), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, extra_line_spacing), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, cursor_in_non_selected_windows), idx); ++idx;
|
||||
|
||||
/* Need more room? */
|
||||
if (idx >= MAX_PER_BUFFER_VARS)
|
||||
emacs_abort ();
|
||||
last_per_buffer_idx = idx;
|
||||
|
||||
/* Make sure all markable slots in buffer_defaults
|
||||
are initialized reasonably, so mark_buffer won't choke. */
|
||||
reset_buffer (&buffer_defaults);
|
||||
|
|
@ -5113,79 +5200,9 @@ init_buffer_once (void)
|
|||
to say that it has its own local value for the slot.
|
||||
The local flag bits are in the local_var_flags slot of the buffer. */
|
||||
|
||||
/* Nothing can work if this isn't true */
|
||||
/* Nothing can work if this isn't true. */
|
||||
{ verify (sizeof (EMACS_INT) == word_size); }
|
||||
|
||||
/* 0 means not a lisp var, -1 means always local, else mask */
|
||||
memset (&buffer_local_flags, 0, sizeof buffer_local_flags);
|
||||
bset_filename (&buffer_local_flags, make_number (-1));
|
||||
bset_directory (&buffer_local_flags, make_number (-1));
|
||||
bset_backed_up (&buffer_local_flags, make_number (-1));
|
||||
bset_save_length (&buffer_local_flags, make_number (-1));
|
||||
bset_auto_save_file_name (&buffer_local_flags, make_number (-1));
|
||||
bset_read_only (&buffer_local_flags, make_number (-1));
|
||||
bset_major_mode (&buffer_local_flags, make_number (-1));
|
||||
bset_mode_name (&buffer_local_flags, make_number (-1));
|
||||
bset_undo_list (&buffer_local_flags, make_number (-1));
|
||||
bset_mark_active (&buffer_local_flags, make_number (-1));
|
||||
bset_point_before_scroll (&buffer_local_flags, make_number (-1));
|
||||
bset_file_truename (&buffer_local_flags, make_number (-1));
|
||||
bset_invisibility_spec (&buffer_local_flags, make_number (-1));
|
||||
bset_file_format (&buffer_local_flags, make_number (-1));
|
||||
bset_auto_save_file_format (&buffer_local_flags, make_number (-1));
|
||||
bset_display_count (&buffer_local_flags, make_number (-1));
|
||||
bset_display_time (&buffer_local_flags, make_number (-1));
|
||||
bset_enable_multibyte_characters (&buffer_local_flags, make_number (-1));
|
||||
|
||||
idx = 1;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, mode_line_format), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, abbrev_mode), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, overwrite_mode), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, case_fold_search), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, auto_fill_function), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, selective_display), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, selective_display_ellipses), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, tab_width), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, truncate_lines), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, word_wrap), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, ctl_arrow), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, fill_column), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, left_margin), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, abbrev_table), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, display_table), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, syntax_table), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, cache_long_scans), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, category_table), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, bidi_display_reordering), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, bidi_paragraph_direction), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, buffer_file_coding_system), idx);
|
||||
/* Make this one a permanent local. */
|
||||
buffer_permanent_local_flags[idx++] = 1;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, left_margin_cols), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, right_margin_cols), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, left_fringe_width), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, right_fringe_width), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, fringes_outside_margins), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, scroll_bar_width), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, scroll_bar_height), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, vertical_scroll_bar_type), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, horizontal_scroll_bar_type), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, indicate_empty_lines), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, indicate_buffer_boundaries), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, fringe_indicator_alist), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, fringe_cursor_alist), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, scroll_up_aggressively), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, scroll_down_aggressively), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, header_line_format), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, cursor_type), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, extra_line_spacing), idx); ++idx;
|
||||
XSETFASTINT (BVAR (&buffer_local_flags, cursor_in_non_selected_windows), idx); ++idx;
|
||||
|
||||
/* Need more room? */
|
||||
if (idx >= MAX_PER_BUFFER_VARS)
|
||||
emacs_abort ();
|
||||
last_per_buffer_idx = idx;
|
||||
|
||||
Vbuffer_alist = Qnil;
|
||||
current_buffer = 0;
|
||||
all_buffers = 0;
|
||||
|
|
@ -5202,7 +5219,7 @@ init_buffer_once (void)
|
|||
DEFSYM (Qkill_buffer_hook, "kill-buffer-hook");
|
||||
Fput (Qkill_buffer_hook, Qpermanent_local, Qt);
|
||||
|
||||
/* super-magic invisible buffer */
|
||||
/* Super-magic invisible buffer. */
|
||||
Vprin1_to_string_buffer = Fget_buffer_create (build_pure_c_string (" prin1"));
|
||||
Vbuffer_alist = Qnil;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue