[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 13/16] Get rid of buffer_permanent_local_flags array
From: |
Spencer Baugh |
Subject: |
[PATCH v2 13/16] Get rid of buffer_permanent_local_flags array |
Date: |
Sat, 21 Nov 2020 21:34:42 -0500 |
This is only used in one place, for two variables; we can just special
case those variables in the place it's used.
---
lisp/bindings.el | 3 ++-
src/buffer.c | 28 +++++++++-------------------
2 files changed, 11 insertions(+), 20 deletions(-)
diff --git a/lisp/bindings.el b/lisp/bindings.el
index 250234e94c..ffa1c94584 100644
--- a/lisp/bindings.el
+++ b/lisp/bindings.el
@@ -771,7 +771,8 @@ okay. See `mode-line-format'.")
;; `kill-all-local-variables', because they have no default value.
;; For consistency, we give them the `permanent-local' property, even
;; though `kill-all-local-variables' does not actually consult it.
-;; See init_buffer_once in buffer.c for the origins of this list.
+;; See init_buffer_once and reset_buffer_local_variables in buffer.c
+;; for the origins of this list.
(mapc (lambda (sym) (put sym 'permanent-local t))
'(buffer-file-name default-directory buffer-backed-up
diff --git a/src/buffer.c b/src/buffer.c
index b05fdbd9b2..e7f9573eb5 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -94,10 +94,6 @@ struct buffer buffer_local_symbols;
((ptrdiff_t) min (MOST_POSITIVE_FIXNUM, \
min (PTRDIFF_MAX, SIZE_MAX) / word_size))
-/* Flags indicating which built-in buffer-local variables
- are permanent locals. */
-static char buffer_permanent_local_flags[MAX_PER_BUFFER_VARS];
-
/* Number of per-buffer variables used. */
static int last_per_buffer_idx;
@@ -1081,10 +1077,14 @@ reset_buffer_local_variables (struct buffer *b, bool
permanent_too)
/* For each slot that has a default value, copy that into the slot. */
FOR_EACH_PER_BUFFER_OBJECT_AT (offset)
{
- int idx = PER_BUFFER_IDX (offset);
if ((BUFFER_DEFAULT_VALUE_P (offset)
- && (permanent_too
- || buffer_permanent_local_flags[idx] == 0)))
+ && (permanent_too
+ /* Special case these two for backwards-compat; they're
+ flagged as permanent-locals in bindings.el, even
+ though they do have default values. */
+ || (offset != PER_BUFFER_VAR_OFFSET (truncate_lines)
+ && offset !=
+ PER_BUFFER_VAR_OFFSET (buffer_file_coding_system)))))
KILL_PER_BUFFER_VALUE (b, offset);
}
}
@@ -5119,7 +5119,6 @@ init_buffer_once (void)
buffer_defaults: default values of buffer-locals
buffer_local_flags: metadata
- buffer_permanent_local_flags: metadata
buffer_local_symbols: metadata
There must be a simpler way to store the metadata.
@@ -5127,11 +5126,6 @@ init_buffer_once (void)
int idx;
- /* Items flagged permanent get an explicit permanent-local property
- added in bindings.el, for clarity. */
- PDUMPER_REMEMBER_SCALAR (buffer_permanent_local_flags);
- 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_fixnum (-1));
@@ -5178,9 +5172,7 @@ init_buffer_once (void)
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);
- /* Make this one a permanent local. */
- buffer_permanent_local_flags[idx++] = 1;
+ 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;
@@ -5194,9 +5186,7 @@ init_buffer_once (void)
XSETFASTINT (BVAR (&buffer_local_flags, bidi_paragraph_direction), idx);
++idx;
XSETFASTINT (BVAR (&buffer_local_flags, bidi_paragraph_separate_re), idx);
++idx;
XSETFASTINT (BVAR (&buffer_local_flags, bidi_paragraph_start_re), 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, buffer_file_coding_system), idx);
++idx;
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;
--
2.28.0
- [PATCH v2 03/16] Stop checking the constant default for enable_multibyte_characters, (continued)
- [PATCH v2 04/16] Take buffer field name in DEFVAR_PER_BUFFER, Spencer Baugh, 2020/11/21
- [PATCH v2 08/16] Combine unnecessarily separate loops in buffer.c, Spencer Baugh, 2020/11/21
- [PATCH v2 09/16] Add and use BUFFER_DEFAULT_VALUE_P, Spencer Baugh, 2020/11/21
- [PATCH v2 06/16] Use bset_* functions instead of BVAR, Spencer Baugh, 2020/11/21
- [PATCH v2 07/16] Take offset not idx in PER_BUFFER_VALUE_P, Spencer Baugh, 2020/11/21
- [PATCH v2 11/16] Assert that PER_BUFFER_IDX for Lisp variables is not 0, Spencer Baugh, 2020/11/21
- [PATCH v2 14/16] Remove unnecessary Qunbound check, Spencer Baugh, 2020/11/21
- [PATCH v2 10/16] Add and use KILL_PER_BUFFER_VALUE, Spencer Baugh, 2020/11/21
- [PATCH v2 13/16] Get rid of buffer_permanent_local_flags array,
Spencer Baugh <=
- Re: [PATCH v2 13/16] Get rid of buffer_permanent_local_flags array, Eli Zaretskii, 2020/11/22
- [PATCH v2 12/16] Rearrange set_internal for buffer forwarded symbols, Spencer Baugh, 2020/11/21
- [PATCH v2 15/16] Remove local_flags array in struct buffer, Spencer Baugh, 2020/11/21
- Re: [PATCH v2 15/16] Remove local_flags array in struct buffer, Stefan Monnier, 2020/11/22
- [PATCH v2 16/16] Remove usage of buffer_local_flags, Spencer Baugh, 2020/11/21
- Re: [PATCH v2 00/16] Speeding up DEFVAR_PER_BUFFER, Kévin Le Gouguec, 2020/11/22
- Re: [PATCH v2 00/16] Speeding up DEFVAR_PER_BUFFER, Eli Zaretskii, 2020/11/22
- Re: [PATCH v2 00/16] Speeding up DEFVAR_PER_BUFFER, Spencer Baugh, 2020/11/22
- Re: [PATCH v2 00/16] Speeding up DEFVAR_PER_BUFFER, Eli Zaretskii, 2020/11/22
- Re: [PATCH v2 00/16] Speeding up DEFVAR_PER_BUFFER, Spencer Baugh, 2020/11/29