bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#48264: [PATCH v4 02/14] Take offset not idx in PER_BUFFER_VALUE_P


From: Spencer Baugh
Subject: bug#48264: [PATCH v4 02/14] Take offset not idx in PER_BUFFER_VALUE_P
Date: Fri, 7 May 2021 22:08:53 -0400

This improves clarity and allows us to more easily change how
PER_BUFFER_VALUE_P works.

* src/buffer.h (PER_BUFFER_VALUE_P): Move to be in scope of
PER_BUFFER_IDX.  Take offset instead of idx, and perform the common
"idx == -1" check internally.
* src/data.c (store_symval_forwarding, set_internal)
(set_default_internal, Flocal_variable_p):
* src/buffer.c (buffer_local_variables_1): Pass offset not idx to
PER_BUFFER_VALUE_P, and remove idx == -1 checks.
---
 src/buffer.c |  3 +--
 src/buffer.h | 21 +++++++++++----------
 src/data.c   | 11 +++++------
 3 files changed, 17 insertions(+), 18 deletions(-)

diff --git a/src/buffer.c b/src/buffer.c
index 8b3e15bc81..c395c6ec98 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -1319,8 +1319,7 @@ buffer_lisp_local_variables (struct buffer *buf, bool 
clone)
 static Lisp_Object
 buffer_local_variables_1 (struct buffer *buf, int offset, Lisp_Object sym)
 {
-  int idx = PER_BUFFER_IDX (offset);
-  if ((idx == -1 || PER_BUFFER_VALUE_P (buf, idx))
+  if (PER_BUFFER_VALUE_P (buf, offset)
       && SYMBOLP (PER_BUFFER_SYMBOL (offset)))
     {
       sym = NILP (sym) ? PER_BUFFER_SYMBOL (offset) : sym;
diff --git a/src/buffer.h b/src/buffer.h
index 24e9c3fcbc..7367c2cb2b 100644
--- a/src/buffer.h
+++ b/src/buffer.h
@@ -1415,16 +1415,6 @@ OVERLAY_POSITION (Lisp_Object p)
 
 extern bool valid_per_buffer_idx (int);
 
-/* Value is true if the variable with index IDX has a local value
-   in buffer B.  */
-
-INLINE bool
-PER_BUFFER_VALUE_P (struct buffer *b, int idx)
-{
-  eassert (valid_per_buffer_idx (idx));
-  return b->local_flags[idx];
-}
-
 /* Set whether per-buffer variable with index IDX has a buffer-local
    value in buffer B.  VAL zero means it hasn't.  */
 
@@ -1491,6 +1481,17 @@ set_per_buffer_value (struct buffer *b, int offset, 
Lisp_Object value)
   *(Lisp_Object *)(offset + (char *) b) = value;
 }
 
+/* Value is true if the variable with offset OFFSET has a local value
+   in buffer B.  */
+
+INLINE bool
+PER_BUFFER_VALUE_P (struct buffer *b, int offset)
+{
+  int idx = PER_BUFFER_IDX (offset);
+  eassert (idx == -1 || valid_per_buffer_idx (idx));
+  return idx == -1 || b->local_flags[idx];
+}
+
 /* Downcase a character C, or make no change if that cannot be done.  */
 INLINE int
 downcase (int c)
diff --git a/src/data.c b/src/data.c
index d547f5da5e..bd399e0439 100644
--- a/src/data.c
+++ b/src/data.c
@@ -1280,7 +1280,7 @@ store_symval_forwarding (lispfwd valcontents, Lisp_Object 
newval,
            {
              struct buffer *b = XBUFFER (buf);
 
-             if (! PER_BUFFER_VALUE_P (b, idx))
+             if (! PER_BUFFER_VALUE_P (b, offset))
                set_per_buffer_value (b, offset, newval);
            }
        }
@@ -1597,8 +1597,8 @@ set_internal (Lisp_Object symbol, Lisp_Object newval, 
Lisp_Object where,
          {
            int offset = XBUFFER_OBJFWD (innercontents)->offset;
            int idx = PER_BUFFER_IDX (offset);
-           if (idx > 0 && bindflag == SET_INTERNAL_SET
-               && !PER_BUFFER_VALUE_P (buf, idx))
+           if (bindflag == SET_INTERNAL_SET
+               && !PER_BUFFER_VALUE_P (buf, offset))
              {
                if (let_shadows_buffer_binding_p (sym))
                  set_default_internal (symbol, newval, bindflag);
@@ -1899,7 +1899,7 @@ set_default_internal (Lisp_Object symbol, Lisp_Object 
value,
                  {
                    struct buffer *b = XBUFFER (buf);
 
-                   if (!PER_BUFFER_VALUE_P (b, idx))
+                   if (!PER_BUFFER_VALUE_P (b, offset))
                      set_per_buffer_value (b, offset, value);
                  }
              }
@@ -2238,8 +2238,7 @@ BUFFER defaults to the current buffer.  */)
        if (BUFFER_OBJFWDP (valcontents))
          {
            int offset = XBUFFER_OBJFWD (valcontents)->offset;
-           int idx = PER_BUFFER_IDX (offset);
-           if (idx == -1 || PER_BUFFER_VALUE_P (buf, idx))
+           if (PER_BUFFER_VALUE_P (buf, offset))
              return Qt;
          }
        return Qnil;
-- 
2.31.1






reply via email to

[Prev in Thread] Current Thread [Next in Thread]