From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Spencer Baugh Newsgroups: gmane.emacs.bugs Subject: bug#48264: [PATCH v3 15/15] Add and use BVAR_FIELD macros Date: Sat, 08 May 2021 15:03:46 -0400 Message-ID: <875yztoxnx.fsf@catern.com> References: <877dkbsj9d.fsf@catern.com> <20210506213346.9730-16-sbaugh@catern.com> <835yzudcvz.fsf@gnu.org> <87o8dmr96v.fsf@catern.com> <83tunebsiu.fsf@gnu.org> <87mtt6p6co.fsf@catern.com> <83sg2xaf4l.fsf@gnu.org> <87czu1pcv0.fsf@catern.com> <83a6p59vk6.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="7182"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 48264@debbugs.gnu.org To: Eli Zaretskii , Stefan Monnier Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sat May 08 21:04:09 2021 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lfSFF-0001la-3Z for geb-bug-gnu-emacs@m.gmane-mx.org; Sat, 08 May 2021 21:04:09 +0200 Original-Received: from localhost ([::1]:40666 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lfSFE-0002Rf-67 for geb-bug-gnu-emacs@m.gmane-mx.org; Sat, 08 May 2021 15:04:08 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:58878) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lfSF8-0002RX-2X for bug-gnu-emacs@gnu.org; Sat, 08 May 2021 15:04:02 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:40213) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lfSF7-0003Pf-Qr for bug-gnu-emacs@gnu.org; Sat, 08 May 2021 15:04:01 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1lfSF7-0004LF-Ko for bug-gnu-emacs@gnu.org; Sat, 08 May 2021 15:04:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Spencer Baugh Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 08 May 2021 19:04:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 48264 X-GNU-PR-Package: emacs Original-Received: via spool by 48264-submit@debbugs.gnu.org id=B48264.162050063016683 (code B ref 48264); Sat, 08 May 2021 19:04:01 +0000 Original-Received: (at 48264) by debbugs.gnu.org; 8 May 2021 19:03:50 +0000 Original-Received: from localhost ([127.0.0.1]:51758 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lfSEw-0004L1-HE for submit@debbugs.gnu.org; Sat, 08 May 2021 15:03:50 -0400 Original-Received: from venus.catern.com ([68.183.49.163]:39502) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lfSEt-0004Kv-RL for 48264@debbugs.gnu.org; Sat, 08 May 2021 15:03:48 -0400 Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=98.7.229.235; helo=localhost; envelope-from=sbaugh@catern.com; receiver= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=catern.com; s=mail; t=1620500627; bh=EXGb0UNPLth4UGLPK4Xc+kMtrNHeTwxri5xmrirSh5w=; h=From:To:Cc:Subject:In-Reply-To:References:Date; b=eeCOjeJxBjTzwtszq9jvES6Uc9LldlP6nlNfFWAaGA/Awk8REj8F1wcmehSzhWZVf vNAp+0vqwBqT3d1+9PvNiCkMSp1RtCCkcHwjXT/k2g0M8jp1hflt5ggiKs3RmPh8Wx EUDgHUGpQVZFkZpFy/vK0cwLXQYU0ymMPzsq83bU= Original-Received: from localhost (cpe-98-7-229-235.nyc.res.rr.com [98.7.229.235]) by venus.catern.com (Postfix) with ESMTPSA id 4B1DA2E9363; Sat, 8 May 2021 19:03:47 +0000 (UTC) In-Reply-To: <83a6p59vk6.fsf@gnu.org> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:206026 Archived-At: Eli Zaretskii writes: >> From: Spencer Baugh >> Cc: 48264@debbugs.gnu.org >> Date: Sat, 08 May 2021 09:35:31 -0400 >> If you think such a conditionally-compiled runtime check would be >> acceptable for applying these changes, I can go ahead and write that. > > Yes, I think so. But if Lars or Stefan think differently, I might > reconsider. In the process of implementing the runtime check, I, of course, came up with a better compile-time check. How about this? --- src/buffer.h | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/buffer.h b/src/buffer.h index f78046a9a8..a8a662b1ed 100644 --- a/src/buffer.h +++ b/src/buffer.h @@ -280,13 +280,25 @@ struct buffer_text bool_bf redisplay : 1; }; +/* This structure is used purely as a list of field names that are + permitted for use with BVAR; it's never actually instantiated. */ +struct bvar_permanent_locals { + char name, filename, directory, backed_up, save_length, auto_save_file_name, + read_only, mark, local_var_alist, major_mode, local_minor_modes, mode_name, + keymap, downcase_table, upcase_table, case_canon_table, case_eqv_table, + mark_active, enable_multibyte_characters, file_format, + auto_save_file_format, width_table, pt_marker, begv_marker, zv_marker, + point_before_scroll, file_truename, invisibility_spec, last_selected_window, + display_count, display_time, undo_list; +}; /* Most code should use this macro to access Lisp fields in struct buffer. */ -#define BVAR(buf, field) ((buf)->field ## _) +#define BVAR(buf, field) \ + *((void) offsetof (struct bvar_permanent_locals, field), &(buf)->field ## _) -#define BVAR_OR_DEFAULT(buf, field) (EQ (BVAR ((buf), field), Qunbound) \ - ? BVAR (&buffer_defaults, field) \ - : BVAR ((buf), field)) +#define BVAR_OR_DEFAULT(buf, field) (EQ ((buf)->field ## _, Qunbound) \ + ? buffer_defaults.field ## _ \ + : (buf)->field ## _) /* Max number of builtin per-buffer variables. */ enum { MAX_PER_BUFFER_VARS = 50 }; -- 2.31.1