[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#48264: [PATCH v3 15/15] Add and use BVAR_FIELD macros
From: |
Eli Zaretskii |
Subject: |
bug#48264: [PATCH v3 15/15] Add and use BVAR_FIELD macros |
Date: |
Fri, 07 May 2021 14:03:28 +0300 |
> From: Spencer Baugh <sbaugh@catern.com>
> Date: Thu, 6 May 2021 17:33:46 -0400
> Cc: Spencer Baugh <sbaugh@catern.com>
>
> diff --git a/src/buffer.c b/src/buffer.c
> index abf112a898..e048e7559f 100644
> --- a/src/buffer.c
> +++ b/src/buffer.c
> @@ -122,17 +122,17 @@ fix_position (Lisp_Object pos)
> static void
> bset_abbrev_mode (struct buffer *b, Lisp_Object val)
> {
> - b->abbrev_mode_ = val;
> + b->BVAR_DEFAULTED_FIELD(abbrev_mode) = val;
Yuck! Can we avoid having a macro in the struct field names? I'd
prefer that the BVAR_DEFAULTED_FIELD macro accepted the buffer as
argument instead (if we need a macro at all; see below).
> --- a/src/buffer.h
> +++ b/src/buffer.h
> @@ -280,13 +280,18 @@ struct buffer_text
> bool_bf redisplay : 1;
> };
>
> +#define BVAR_FIELD(field) field ## _
> +#define BVAR_DEFAULTED_FIELD(field) field ## _defaulted_
I'm not sure these changes are for the better. Why not use _ and
_defaulted_ literally? The macros don't make code easier to write,
and at least for me make it harder to understand (because I need to
look up the macro definition).
> @@ -714,12 +719,12 @@ XBUFFER (Lisp_Object a)
> INLINE void
> bset_bidi_paragraph_direction (struct buffer *b, Lisp_Object val)
> {
> - b->bidi_paragraph_direction_ = val;
> + b->BVAR_DEFAULTED_FIELD(bidi_paragraph_direction) = val;
> }
> INLINE void
> bset_cache_long_scans (struct buffer *b, Lisp_Object val)
> {
> - b->cache_long_scans_ = val;
> + b->BVAR_DEFAULTED_FIELD(cache_long_scans) = val;
> }
> INLINE void
> bset_case_canon_table (struct buffer *b, Lisp_Object val)
> @@ -744,12 +749,12 @@ bset_display_count (struct buffer *b, Lisp_Object val)
> INLINE void
> bset_left_margin_cols (struct buffer *b, Lisp_Object val)
> {
> - b->left_margin_cols_ = val;
> + b->BVAR_DEFAULTED_FIELD(left_margin_cols) = val;
> }
Hmm... I'm not sure I understand the effect of these. Does it mean C
code can no longer set the buffer-local value of these variables, only
the default value?
> +#define PER_BUFFER_VAR_DEFAULTED_OFFSET(VAR) \
> + offsetof (struct buffer, BVAR_DEFAULTED_FIELD(VAR))
Likewise here: I don't see how such macros make the code more
readable. I think they make it less readable.
- bug#48264: [PATCH v3 07/15] Add BVAR_OR_DEFAULT macro as a stub, (continued)
bug#48264: [PATCH v3 10/15] Get rid of buffer_permanent_local_flags array, Spencer Baugh, 2021/05/06
bug#48264: [PATCH v3 11/15] Delete SET_PER_BUFFER_VALUE_P and buffer local_flags field, Spencer Baugh, 2021/05/06
bug#48264: [PATCH v3 13/15] Assert that PER_BUFFER_IDX for Lisp variables is not 0, Spencer Baugh, 2021/05/06
bug#48264: [PATCH v3 14/15] Remove PER_BUFFER_IDX and buffer_local_flags, Spencer Baugh, 2021/05/06
bug#48264: [PATCH v3 15/15] Add and use BVAR_FIELD macros, Spencer Baugh, 2021/05/06
- bug#48264: [PATCH v3 15/15] Add and use BVAR_FIELD macros,
Eli Zaretskii <=
- bug#48264: [PATCH v3 15/15] Add and use BVAR_FIELD macros, Spencer Baugh, 2021/05/07
- bug#48264: [PATCH v3 15/15] Add and use BVAR_FIELD macros, Eli Zaretskii, 2021/05/07
- bug#48264: [PATCH v3 15/15] Add and use BVAR_FIELD macros, Spencer Baugh, 2021/05/07
- bug#48264: [PATCH v3 15/15] Add and use BVAR_FIELD macros, Eli Zaretskii, 2021/05/08
- bug#48264: [PATCH v3 15/15] Add and use BVAR_FIELD macros, Spencer Baugh, 2021/05/08
- bug#48264: [PATCH v3 15/15] Add and use BVAR_FIELD macros, Eli Zaretskii, 2021/05/08
- bug#48264: [PATCH v3 15/15] Add and use BVAR_FIELD macros, Spencer Baugh, 2021/05/08
- bug#48264: [PATCH v3 15/15] Add and use BVAR_FIELD macros, Spencer Baugh, 2021/05/08
- bug#48264: [PATCH v3 15/15] Add and use BVAR_FIELD macros, Eli Zaretskii, 2021/05/09
- bug#48264: [PATCH v3 15/15] Add and use BVAR_FIELD macros, Spencer Baugh, 2021/05/09