GNU bug report logs - #21466
[PATCH] Avoid defining (temporarily) vars and functions

Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.

Package: emacs,cc-mode; Reported by: Stefan Monnier <monnier@HIDDEN>; Keywords: patch; dated Sat, 12 Sep 2015 03:41:01 UTC; Maintainer for emacs is bug-gnu-emacs@HIDDEN.

Message received at 21466 <at> debbugs.gnu.org:


Received: (at 21466) by debbugs.gnu.org; 23 Jul 2021 13:14:52 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jul 23 09:14:52 2021
Received: from localhost ([127.0.0.1]:42582 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1m6v0u-0004cP-CO
	for submit <at> debbugs.gnu.org; Fri, 23 Jul 2021 09:14:52 -0400
Received: from quimby.gnus.org ([95.216.78.240]:38750)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <larsi@HIDDEN>) id 1m6v0s-0004c9-Ht
 for 21466 <at> debbugs.gnu.org; Fri, 23 Jul 2021 09:14:51 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org;
 s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date:
 References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding:
 Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender:
 Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=G2TNFFhQV6EFru/RCCC5MQbfu/7ofyoitAUKOVFTR9Q=; b=Iu2EJNL5fedBBaDMyNBDEBNLFL
 DAh3zDdjHALopzlpqwnewzE9HZHj+iSPKt7xt9Q+GS8CbQhaOvyEeZ2qYLst9bavW+rsPZU2OnC/e
 5GKHmRHxN1GpIppzlNQ1MdmH6yBuJAMouXa++X/55YpsYGJ7YE6j+n0mOdEnjYL277h0=;
Received: from cm-84.212.220.105.getinternet.no ([84.212.220.105] helo=elva)
 by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.92) (envelope-from <larsi@HIDDEN>)
 id 1m6v0j-00008r-Ke; Fri, 23 Jul 2021 15:14:44 +0200
From: Lars Ingebrigtsen <larsi@HIDDEN>
To: Stefan Monnier <monnier@HIDDEN>
Subject: Re: bug#21466: [PATCH] Avoid defining (temporarily) vars and functions
References: <jwvlhcc1f76.fsf@HIDDEN> <87eeeestgu.fsf@HIDDEN>
 <YJrqVlJR4iMvf2s1@ACM> <jwvlf8llyt3.fsf-monnier+emacs@HIDDEN>
X-Now-Playing: The Human League's _Octopus (2)_: "Words (Demo)"
Date: Fri, 23 Jul 2021 15:14:41 +0200
In-Reply-To: <jwvlf8llyt3.fsf-monnier+emacs@HIDDEN> (Stefan Monnier's message
 of "Tue, 11 May 2021 18:03:38 -0400")
Message-ID: <87fsw5cgu6.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org",
 has NOT identified this incoming email as spam.  The original
 message has been attached to this so you can view it or label
 similar future email.  If you have any questions, see
 @@CONTACT_ADDRESS@@ for details.
 Content preview:  Stefan Monnier <monnier@HIDDEN> writes: >> Also,
 in place of cc-bytecomp-defun is proposed declare-function. >> However this
 is in an inconsistent state,
 with the documentation >> requiring a FILE argument, 
 but Stefan's patch supplying nil. [...] 
 Content analysis details:   (-2.9 points, 5.0 required)
 pts rule name              description
 ---- ---------------------- --------------------------------------------------
 -1.0 ALL_TRUSTED            Passed through trusted hosts only via SMTP
 -1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%
 [score: 0.0000]
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 21466
Cc: Alan Mackenzie <acm@HIDDEN>, 21466 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Stefan Monnier <monnier@HIDDEN> writes:

>> Also, in place of cc-bytecomp-defun is proposed declare-function.
>> However this is in an inconsistent state, with the documentation
>> requiring a FILE argument, but Stefan's patch supplying nil.
>
> `declare-function` says:
>
>     The FILE argument is not used by the byte-compiler, but by the
>     `check-declare' package, which checks that FILE contains a
>     definition for FN.
>
> So indeed, a real FILE argument would be preferable, but passing nil
> works fine (it will simply prevent `check-declare` from making sure
> that file indeed defines that function,

I've now amended the doc string to `declare-function on the trunk to
mention this.

Alan, it sounded like you were generally positive to the patch (except
for the `declare-function' bit, which should now be clarified and the
(featurep 'xemacs))?  

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




Information forwarded to bug-gnu-emacs@HIDDEN, bug-cc-mode@HIDDEN:
bug#21466; Package emacs,cc-mode. Full text available.

Message received at 21466 <at> debbugs.gnu.org:


Received: (at 21466) by debbugs.gnu.org; 11 May 2021 22:03:53 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue May 11 18:03:53 2021
Received: from localhost ([127.0.0.1]:37713 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1lgaTo-0001OO-Pg
	for submit <at> debbugs.gnu.org; Tue, 11 May 2021 18:03:53 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:5792)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <monnier@HIDDEN>) id 1lgaTm-0001OB-Un
 for 21466 <at> debbugs.gnu.org; Tue, 11 May 2021 18:03:51 -0400
Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1])
 by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 534524414D6;
 Tue, 11 May 2021 18:03:45 -0400 (EDT)
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
 by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id B00D44414D0;
 Tue, 11 May 2021 18:03:39 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
 s=mail; t=1620770619;
 bh=/FPA5vlkS7B9LJVoTHDd3cZ7Wo5NMfqZzGN3Ht2KTSY=;
 h=From:To:Cc:Subject:References:Date:In-Reply-To:From;
 b=Dj4uKZdgIiRYrw0BZQ2CsDsBMJIpNxFZxbrWrxLK0JcRHG1zpPYwzoiMcBY/a5DLa
 4D2YebMaHl3NUs1PQeeloYwqM/QmEGHJaEpukfQs/LA19NzArZFLIoKJPKe9hCc7xy
 uulpO6CyZjvWG1ikFUoGrVlyevuatfhv+hMwYVpnH8Lp9B6I+nfTTKaFIY8RoqrORJ
 I/NWwWb9PWfAsTf+NrkDjp72zIPXZox8eXaYR2PBUMd9fMHQH+wq6duGCnhTbs/Xdy
 GqxL8PCR5dt3GMC/MOidLwjjICFUayGb9Z/LC8lhub5sy+hglpY7rq1bmvj7xdCr9r
 c5BYdcFgCIEiQ==
Received: from alfajor (76-10-140-76.dsl.teksavvy.com [76.10.140.76])
 by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 5C51912067C;
 Tue, 11 May 2021 18:03:39 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
To: Alan Mackenzie <acm@HIDDEN>
Subject: Re: bug#21466: [PATCH] Avoid defining (temporarily) vars and functions
Message-ID: <jwvlf8llyt3.fsf-monnier+emacs@HIDDEN>
References: <jwvlhcc1f76.fsf@HIDDEN> <87eeeestgu.fsf@HIDDEN>
 <YJrqVlJR4iMvf2s1@ACM>
Date: Tue, 11 May 2021 18:03:38 -0400
In-Reply-To: <YJrqVlJR4iMvf2s1@ACM> (Alan Mackenzie's message of "Tue, 11 May
 2021 20:34:30 +0000")
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results:  0
 ALL_TRUSTED                -1 Passed through trusted hosts only via SMTP
 AWL -0.067 Adjusted score from AWL reputation of From: address
 BAYES_00                 -1.9 Bayes spam probability is 0 to 1%
 DKIM_SIGNED               0.1 Message has a DKIM or DK signature,
 not necessarily valid
 DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
 DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
 domain
X-SPAM-LEVEL: 
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 21466
Cc: Lars Ingebrigtsen <larsi@HIDDEN>, 21466 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> There are little things I'm unhappy about with the patch: it
> explicitly tests (featurep 'xemacs), which is not done in CC Mode,
> being regarded as somewhat vulgar.  Instead specific functionalities
> are always tested for.

I use (featurep 'xemacs) because it results in cleaner byte-code because
the compiler replaces it with nil.  It also usually results in fewer
spurious warnings (because of the removal of XEmacs-only code).
[ I believe the same holds on XEmacs where (featurep 'xemacs) is
  optimized to t, which removes Emacs-only code.  ]
But that's just my favorite bikeshed color, it's not crucial for the patch.

> Also, in place of cc-bytecomp-defun is proposed declare-function.
> However this is in an inconsistent state, with the documentation
> requiring a FILE argument, but Stefan's patch supplying nil.

`declare-function` says:

    The FILE argument is not used by the byte-compiler, but by the
    `check-declare' package, which checks that FILE contains a
    definition for FN.

So indeed, a real FILE argument would be preferable, but passing nil
works fine (it will simply prevent `check-declare` from making sure
that file indeed defines that function, which is no different than what
we have now with `cc-bytecomp-defun` which `check-declare` also
ignores).
If you want the "better" option, then it will require changing
`cc-bytecomp-defun` so it takes a FILE arg.


        Stefan





Information forwarded to bug-gnu-emacs@HIDDEN, bug-cc-mode@HIDDEN:
bug#21466; Package emacs,cc-mode. Full text available.

Message received at 21466 <at> debbugs.gnu.org:


Received: (at 21466) by debbugs.gnu.org; 11 May 2021 20:34:40 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue May 11 16:34:40 2021
Received: from localhost ([127.0.0.1]:37606 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1lgZ5T-0003In-VS
	for submit <at> debbugs.gnu.org; Tue, 11 May 2021 16:34:40 -0400
Received: from colin.muc.de ([193.149.48.1]:51262 helo=mail.muc.de)
 by debbugs.gnu.org with smtp (Exim 4.84_2)
 (envelope-from <acm@HIDDEN>) id 1lgZ5R-0003IZ-E5
 for 21466 <at> debbugs.gnu.org; Tue, 11 May 2021 16:34:38 -0400
Received: (qmail 75955 invoked by uid 3782); 11 May 2021 20:34:30 -0000
Received: from acm.muc.de (p4fe15d8c.dip0.t-ipconnect.de [79.225.93.140])
 (using STARTTLS) by colin.muc.de (tmda-ofmipd) with ESMTP;
 Tue, 11 May 2021 22:34:30 +0200
Received: (qmail 13148 invoked by uid 1000); 11 May 2021 20:34:30 -0000
Date: Tue, 11 May 2021 20:34:30 +0000
To: Lars Ingebrigtsen <larsi@HIDDEN>
Subject: Re: bug#21466: [PATCH] Avoid defining (temporarily) vars and functions
Message-ID: <YJrqVlJR4iMvf2s1@ACM>
References: <jwvlhcc1f76.fsf@HIDDEN>
 <87eeeestgu.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <87eeeestgu.fsf@HIDDEN>
X-Submission-Agent: TMDA/1.3.x (Ph3nix)
From: Alan Mackenzie <acm@HIDDEN>
X-Primary-Address: acm@HIDDEN
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 21466
Cc: Stefan Monnier <monnier@HIDDEN>, 21466 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Hello, Lars.

On Mon, May 10, 2021 at 13:45:21 +0200, Lars Ingebrigtsen wrote:
> Stefan Monnier <monnier@HIDDEN> writes:

> > CC-mode currently defines various non-CC-mode variables and functions
> > with dummy values, as a way to avoid byte-compiler warnings when using
> > those external vars/functions.

> > Since this is dangerous business, CC-mode has to be extra careful to
> > undo such settings when they're not needed any more.

> This was five years ago, but skimming the code, it seems like it's
> generally applicable still?

> Alan, do you have any comments on this patch?

I meant to comment on it back then, but the patch is unusually difficult
to follow: most of the context lines are unhelpful in giving the
context, and the git macros identifying the current function in the diff
aren't working here, to a large degree.

There are little things I'm unhappy about with the patch: it explicitly
tests (featurep 'xemacs), which is not done in CC Mode, being regarded
as somewhat vulgar.  Instead specific functionalities are always tested
for.

Also, in place of cc-bytecomp-defun is proposed declare-function.
However this is in an inconsistent state, with the documentation
requiring a FILE argument, but Stefan's patch supplying nil.

It seems that cc-bytecomp-defvar has long (?always) been unnecessary,
given that (defvar foo) has ?always had the desired effect, even in
XEmacs.  So I don't have anything against clearing out the
cc-bytecomp-defvar's.

So, I don't object on principle to the principle of the patch, just
there are these little irritations about it, and it will need me to
study it more closely to check nothing subtle would get lost (I doubt it
would).

> -- 
> (domestic pets only, the antidote for overdose, milk.)
>    bloggy blog: http://lars.ingebrigtsen.no

-- 
Alan Mackenzie (Nuremberg, Germany).




Information forwarded to bug-gnu-emacs@HIDDEN, bug-cc-mode@HIDDEN:
bug#21466; Package emacs,cc-mode. Full text available.

Message received at 21466 <at> debbugs.gnu.org:


Received: (at 21466) by debbugs.gnu.org; 10 May 2021 11:45:32 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon May 10 07:45:32 2021
Received: from localhost ([127.0.0.1]:57558 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1lg4Ls-0001Bz-JQ
	for submit <at> debbugs.gnu.org; Mon, 10 May 2021 07:45:32 -0400
Received: from quimby.gnus.org ([95.216.78.240]:34354)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <larsi@HIDDEN>) id 1lg4Lq-00014m-Qc
 for 21466 <at> debbugs.gnu.org; Mon, 10 May 2021 07:45:31 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org;
 s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date:
 References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding:
 Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender:
 Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=ccRcndDx+GOvMvGm5+/gQLbgD9wwDU8K2nePzKXYWM0=; b=si42dYPwckmqvIjtn70+tQCDT2
 iAKwZfv6tk+kkYfrLu4UBbkT3SeZ5pGxdqruksUTraIw+ybs3nDDR0rZOk6zWDi5bz8IrUzPuUrnW
 oMotw2jh7Yeaysxy+obHAmgQy9Y6GjSRcvXk6ZkDlEUVlHruUEcQQOhpf2Rwgq/Wyj9A=;
Received: from cm-84.212.220.105.getinternet.no ([84.212.220.105] helo=xo)
 by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.92) (envelope-from <larsi@HIDDEN>)
 id 1lg4Lh-0007kb-OV; Mon, 10 May 2021 13:45:24 +0200
From: Lars Ingebrigtsen <larsi@HIDDEN>
To: Stefan Monnier <monnier@HIDDEN>
Subject: Re: bug#21466: [PATCH] Avoid defining (temporarily) vars and functions
References: <jwvlhcc1f76.fsf@HIDDEN>
X-Now-Playing: Severed Heads's _Gigapus_: "Courier"
Date: Mon, 10 May 2021 13:45:21 +0200
In-Reply-To: <jwvlhcc1f76.fsf@HIDDEN> (Stefan Monnier's message of
 "Fri, 11 Sep 2015 23:36:45 -0400")
Message-ID: <87eeeestgu.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org",
 has NOT identified this incoming email as spam.  The original
 message has been attached to this so you can view it or label
 similar future email.  If you have any questions, see
 @@CONTACT_ADDRESS@@ for details.
 Content preview: Stefan Monnier <monnier@HIDDEN> writes: > CC-mode
 currently defines various non-CC-mode variables and functions > with dummy
 values, as a way to avoid byte-compiler warnings when using > those external
 vars/functions. > > Since this is dang [...] 
 Content analysis details:   (-2.9 points, 5.0 required)
 pts rule name              description
 ---- ---------------------- --------------------------------------------------
 -1.0 ALL_TRUSTED            Passed through trusted hosts only via SMTP
 -1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%
 [score: 0.0000]
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 21466
Cc: Alan Mackenzie <acm@HIDDEN>, 21466 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Stefan Monnier <monnier@HIDDEN> writes:

> CC-mode currently defines various non-CC-mode variables and functions
> with dummy values, as a way to avoid byte-compiler warnings when using
> those external vars/functions.
>
> Since this is dangerous business, CC-mode has to be extra careful to
> undo such settings when they're not needed any more.

This was five years ago, but skimming the code, it seems like it's
generally applicable still?

Alan, do you have any comments on this patch?

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




Information forwarded to bug-gnu-emacs@HIDDEN, bug-cc-mode@HIDDEN:
bug#21466; Package emacs,cc-mode. Full text available.

Message received at 21466 <at> debbugs.gnu.org:


Received: (at 21466) by debbugs.gnu.org; 6 Nov 2019 01:29:21 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Nov 05 20:29:21 2019
Received: from localhost ([127.0.0.1]:39337 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1iSA8O-0002Rr-G9
	for submit <at> debbugs.gnu.org; Tue, 05 Nov 2019 20:29:20 -0500
Received: from host.gofardesign.uk ([208.79.239.190]:38761)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <stefan@HIDDEN>) id 1iSA8M-0002Rd-6A
 for 21466 <at> debbugs.gnu.org; Tue, 05 Nov 2019 20:29:18 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=marxist.se; 
 s=default;
 h=Content-Transfer-Encoding:Content-Type:MIME-Version:Message-ID:
 Date:References:In-Reply-To:Subject:Cc:To:From:Sender:Reply-To:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe:
 List-Post:List-Owner:List-Archive;
 bh=Ks8ygVjs2Vdnvv41xWejtFa/RMjo8r88/KIB67yYpwA=; b=dImy7fC5oOsc7IMgrxXGEkXdvN
 l5zbwkiHO2sda7dTBVrTyvGcNVkx9AXiPfLYeO0+TtoKh50CqOuOcPfoF0ShWysRjWzQHM06KQOYC
 pC73Tb+J1DR0DTz1IYmsVuqcrYiqR5jIV2282GT/Z8GmyTyMpOIJskH67MjbZ0CTOg4w=;
Received: from h-70-69.a785.priv.bahnhof.se ([155.4.70.69]:49380
 helo=localhost)
 by host.gofardesign.uk with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256)
 (Exim 4.92) (envelope-from <stefan@HIDDEN>)
 id 1iSA8E-0007vp-TB; Tue, 05 Nov 2019 19:29:12 -0600
From: Stefan Kangas <stefan@HIDDEN>
To: Stefan Monnier <monnier@HIDDEN>
Subject: Re: bug#21466: [PATCH] Avoid defining (temporarily) vars and functions
In-Reply-To: <jwvlhcc1f76.fsf@HIDDEN> (Stefan Monnier's message of
 "Fri, 11 Sep 2015 23:36:45 -0400")
References: <jwvlhcc1f76.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux)
Date: Wed, 06 Nov 2019 02:29:09 +0100
Message-ID: <87wocd4wt6.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-OutGoing-Spam-Status: No, score=-1.0
X-AntiAbuse: This header was added to track abuse,
 please include it with any abuse report
X-AntiAbuse: Primary Hostname - host.gofardesign.uk
X-AntiAbuse: Original Domain - debbugs.gnu.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - marxist.se
X-Get-Message-Sender-Via: host.gofardesign.uk: authenticated_id:
 stefan@HIDDEN
X-Authenticated-Sender: host.gofardesign.uk: stefan@HIDDEN
X-Source: 
X-Source-Args: 
X-Source-Dir: 
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 21466
Cc: Alan Mackenzie <acm@HIDDEN>, 21466 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Stefan Monnier <monnier@HIDDEN> writes:

> Package: Emacs
> Version: 25.0.50
>
>
> CC-mode currently defines various non-CC-mode variables and functions
> with dummy values, as a way to avoid byte-compiler warnings when using
> those external vars/functions.
>
> Since this is dangerous business, CC-mode has to be extra careful to
> undo such settings when they're not needed any more.
>
> It might have made sense back in the days when the byte-compiler did not
> offer built-in ways to silence those warnings, but nowadays we can
> do better.
>
> Any objections to the patch below (which also removes the unused
> cc-bytecomp-put, while we're at it)?

Hi Alan,

This patch was sent to the bug list in 2015, but it seems like it
never got a reply at the time.

Assuming this patch is still relevant, could you please take a look?

Best regards,
Stefan Kangas

> 2015-09-12  Stefan Monnier  <monnier@HIDDEN>
>
> 	* lisp/progmodes/cc-bytecomp.el: Use newer compiler-silencers.
> 	(cc-bytecomp-defvar): Use just (defvar <foo>) when that is known to
> 	silence the byte-compiler warnings.
> 	(cc-bytecomp-defun): Use just (declare-function <foo>) when that is
> 	known to silence the byte-compiler warnings.
> 	(cc-bytecomp-boundp, cc-bytecomp-fboundp): Change accordingly.
> 	(cc-bytecomp-put): Remove, unused.
> 	(cc-bytecomp-original-properties): Remove var.
> 	(cc-bytecomp-setup-environment, cc-bytecomp-restore-environment):
> 	Don't use cc-bytecomp-original-properties any more.
>
>
> diff --git a/lisp/progmodes/cc-bytecomp.el b/lisp/progmodes/cc-bytecomp.el
> index 81b7a82..fff2a9e 100644
> --- a/lisp/progmodes/cc-bytecomp.el
> +++ b/lisp/progmodes/cc-bytecomp.el
> @@ -75,12 +75,10 @@
>=20=20
>  (defvar cc-bytecomp-unbound-variables nil)
>  (defvar cc-bytecomp-original-functions nil)
> -(defvar cc-bytecomp-original-properties nil)
>  (defvar cc-bytecomp-loaded-files nil)
>=20=20
>  (setq cc-bytecomp-unbound-variables nil)
>  (setq cc-bytecomp-original-functions nil)
> -(setq cc-bytecomp-original-properties nil)
>  (setq cc-bytecomp-loaded-files nil)
>=20=20
>  (defvar cc-bytecomp-environment-set nil)
> @@ -173,16 +171,6 @@ perhaps a `cc-bytecomp-restore-environment' is forgo=
tten somewhere"))
>  		  (cc-bytecomp-debug-msg
>  		   "cc-bytecomp-setup-environment: Covered function %s" fun))))
>  	  (setq p (cdr p)))
> -	(setq p cc-bytecomp-original-properties)
> -	(while p
> -	  (let ((sym (car (car (car p))))
> -		(prop (cdr (car (car p))))
> -		(tempdef (car (cdr (car p)))))
> -	    (put sym prop tempdef)
> -	    (cc-bytecomp-debug-msg
> -	     "cc-bytecomp-setup-environment: Bound property %s for %s to %s"
> -	     prop sym tempdef))
> -	  (setq p (cdr p)))
>  	(setq cc-bytecomp-environment-set t)
>  	(cc-bytecomp-debug-msg
>  	 "cc-bytecomp-setup-environment: Done"))))
> @@ -232,22 +220,6 @@ perhaps a `cc-bytecomp-restore-environment' is forgo=
tten somewhere"))
>  		   "cc-bytecomp-restore-environment: Not restoring function %s"
>  		   fun))))
>  	  (setq p (cdr p)))
> -	(setq p cc-bytecomp-original-properties)
> -	(while p
> -	  (let ((sym (car (car (car p))))
> -		(prop (cdr (car (car p))))
> -		(tempdef (car (cdr (car p))))
> -		(origdef (cdr (cdr (car p)))))
> -	    (if (eq (get sym prop) tempdef)
> -		(progn
> -		  (put sym prop origdef)
> -		  (cc-bytecomp-debug-msg
> -		   "cc-bytecomp-restore-environment: Restored property %s for %s to %s"
> -		   prop sym origdef))
> -	      (cc-bytecomp-debug-msg
> -	       "cc-bytecomp-restore-environment: Not restoring property %s for =
%s"
> -	       prop sym)))
> -	  (setq p (cdr p)))
>  	(setq cc-bytecomp-environment-set nil)
>  	(cc-bytecomp-debug-msg
>  	 "cc-bytecomp-restore-environment: Done"))))
> @@ -348,25 +320,28 @@ afterwards.  Don't use within `eval-when-compile'."
>       (eval-when-compile (cc-bytecomp-setup-environment))))
>=20=20
>  (defmacro cc-bytecomp-defvar (var)
> -  "Binds the symbol as a variable during compilation of the file,
> +  "Bind the symbol as a variable during compilation of the file,
>  to silence the byte compiler.  Don't use within `eval-when-compile'."
> -  `(eval-when-compile
> -     (if (boundp ',var)
> -	 (cc-bytecomp-debug-msg
> -	  "cc-bytecomp-defvar: %s bound already as variable" ',var)
> -       (if (not (memq ',var cc-bytecomp-unbound-variables))
> -	   (progn
> -	     (cc-bytecomp-debug-msg
> -	      "cc-bytecomp-defvar: Saving %s (as unbound)" ',var)
> -	     (setq cc-bytecomp-unbound-variables
> -		   (cons ',var cc-bytecomp-unbound-variables))))
> -       (if (cc-bytecomp-is-compiling)
> -	   (progn
> -	     (defvar ,var)
> -	     (set ',var (intern (concat "cc-bytecomp-ignore-var:"
> -					(symbol-name ',var))))
> -	     (cc-bytecomp-debug-msg
> -	      "cc-bytecomp-defvar: Covered variable %s" ',var))))))
> +  (if (not (featurep 'xemacs))
> +      `(defvar ,var)
> +    ;; Not sure if XEmacs's =E2=80=98defvar=E2=80=99 works in the same w=
ay.
> +    `(eval-when-compile
> +       (if (boundp ',var)
> +	   (cc-bytecomp-debug-msg
> +	    "cc-bytecomp-defvar: %s bound already as variable" ',var)
> +	 (if (not (memq ',var cc-bytecomp-unbound-variables))
> +	     (progn
> +	       (cc-bytecomp-debug-msg
> +		"cc-bytecomp-defvar: Saving %s (as unbound)" ',var)
> +	       (setq cc-bytecomp-unbound-variables
> +		     (cons ',var cc-bytecomp-unbound-variables))))
> +	 (if (cc-bytecomp-is-compiling)
> +	     (progn
> +	       (defvar ,var)
> +	       (set ',var (intern (concat "cc-bytecomp-ignore-var:"
> +					  (symbol-name ',var))))
> +	       (cc-bytecomp-debug-msg
> +		"cc-bytecomp-defvar: Covered variable %s" ',var)))))))
>=20=20
>  (defmacro cc-bytecomp-defun (fun)
>    "Bind the symbol as a function during compilation of the file,
> @@ -377,48 +352,33 @@ definition.  That means that this macro will not sh=
ut up warnings
>  about incorrect number of arguments.  It's dangerous to try to replace
>  existing functions since the byte compiler might need the definition
>  at compile time, e.g. for macros and inline functions."
> -  `(eval-when-compile
> -     (if (fboundp ',fun)
> -	 (cc-bytecomp-debug-msg
> -	  "cc-bytecomp-defun: %s bound already as function" ',fun)
> -       (if (not (assq ',fun cc-bytecomp-original-functions))
> -	   (progn
> -	     (cc-bytecomp-debug-msg
> -	      "cc-bytecomp-defun: Saving %s (as unbound)" ',fun)
> -	     (setq cc-bytecomp-original-functions
> -		   (cons (list ',fun nil 'unbound)
> -			 cc-bytecomp-original-functions))))
> -       (if (cc-bytecomp-is-compiling)
> -	   (progn
> -	     (fset ',fun (intern (concat "cc-bytecomp-ignore-fun:"
> -					 (symbol-name ',fun))))
> -	     (cc-bytecomp-debug-msg
> -	      "cc-bytecomp-defun: Covered function %s" ',fun))))))
> -
> -(defmacro cc-bytecomp-put (symbol propname value)
> -  "Set a property on a symbol during compilation (and evaluation) of
> -the file.  Don't use outside `eval-when-compile'."
> -  `(eval-when-compile
> -     (if (not (assoc (cons ,symbol ,propname) cc-bytecomp-original-prope=
rties))
> -	 (progn
> +  (if (fboundp 'declare-function)
> +      `(declare-function ,fun nil)
> +    `(eval-when-compile
> +       (if (fboundp ',fun)
>  	   (cc-bytecomp-debug-msg
> -	    "cc-bytecomp-put: Saving property %s for %s with value %s"
> -	    ,propname ,symbol (get ,symbol ,propname))
> -	   (setq cc-bytecomp-original-properties
> -		 (cons (cons (cons ,symbol ,propname)
> -			     (cons ,value (get ,symbol ,propname)))
> -		       cc-bytecomp-original-properties))))
> -     (put ,symbol ,propname ,value)
> -     (cc-bytecomp-debug-msg
> -      "cc-bytecomp-put: Bound property %s for %s to %s"
> -      ,propname ,symbol ,value)))
> +	    "cc-bytecomp-defun: %s bound already as function" ',fun)
> +	 (if (not (assq ',fun cc-bytecomp-original-functions))
> +	     (progn
> +	       (cc-bytecomp-debug-msg
> +		"cc-bytecomp-defun: Saving %s (as unbound)" ',fun)
> +	       (setq cc-bytecomp-original-functions
> +		     (cons (list ',fun nil 'unbound)
> +			   cc-bytecomp-original-functions))))
> +	 (if (cc-bytecomp-is-compiling)
> +	     (progn
> +	       (fset ',fun (intern (concat "cc-bytecomp-ignore-fun:"
> +					   (symbol-name ',fun))))
> +	       (cc-bytecomp-debug-msg
> +		"cc-bytecomp-defun: Covered function %s" ',fun)))))))
>=20=20
>  (defmacro cc-bytecomp-boundp (symbol)
>    "Return non-nil if the given symbol is bound as a variable outside
>  the compilation.  This is the same as using `boundp' but additionally
>  exclude any variables that have been bound during compilation with
>  `cc-bytecomp-defvar'."
> -  (if (and (cc-bytecomp-is-compiling)
> +  (if (and (featurep 'xemacs)
> +	   (cc-bytecomp-is-compiling)
>  	   (memq (car (cdr symbol)) cc-bytecomp-unbound-variables))
>        nil
>      `(boundp ,symbol)))
> @@ -429,7 +389,8 @@ the compilation.  This is the same as using `fboundp'=
 but additionally
>  exclude any functions that have been bound during compilation with
>  `cc-bytecomp-defun'."
>    (let (fun-elem)
> -    (if (and (cc-bytecomp-is-compiling)
> +    (if (and (not (fboundp 'declare-function))
> +	     (cc-bytecomp-is-compiling)
>  	     (setq fun-elem (assq (car (cdr symbol))
>  				  cc-bytecomp-original-functions))
>  	     (eq (elt fun-elem 2) 'unbound))




Information forwarded to bug-gnu-emacs@HIDDEN, bug-cc-mode@HIDDEN:
bug#21466; Package emacs,cc-mode. Full text available.

Message received at 21466 <at> debbugs.gnu.org:


Received: (at 21466) by debbugs.gnu.org; 29 Oct 2015 13:09:59 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Oct 29 09:09:59 2015
Received: from localhost ([127.0.0.1]:43410 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.80)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1Zrmxm-0006lG-Vf
	for submit <at> debbugs.gnu.org; Thu, 29 Oct 2015 09:09:58 -0400
Received: from ironport2-out.teksavvy.com ([206.248.154.181]:12667)
 by debbugs.gnu.org with esmtp (Exim 4.80)
 (envelope-from <monnier@HIDDEN>) id 1ZrmxO-0006kl-TM
 for 21466 <at> debbugs.gnu.org; Thu, 29 Oct 2015 09:09:53 -0400
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: A0A8FgA731xV/+Z93mhcgxCBMoJQToUHu0CHSwQCAoE8OhMBAQEBAQEBgQpBBYNdAQEDASMzIwULCxoCGA4CAhQYDTeIJAirDKQXAQEBBwIBH4EhihmEUjMHgmiBRQWLRKlAI2GBKRyBbiIxgQMkgSABAQE
X-IPAS-Result: A0A8FgA731xV/+Z93mhcgxCBMoJQToUHu0CHSwQCAoE8OhMBAQEBAQEBgQpBBYNdAQEDASMzIwULCxoCGA4CAhQYDTeIJAirDKQXAQEBBwIBH4EhihmEUjMHgmiBRQWLRKlAI2GBKRyBbiIxgQMkgSABAQE
X-IronPort-AV: E=Sophos;i="5.13,465,1427774400"; d="scan'208";a="171944489"
Received: from 104-222-125-230.cpe.teksavvy.com (HELO fmsmemgm.homelinux.net)
 ([104.222.125.230])
 by ironport2-out.teksavvy.com with ESMTP/TLS/DHE-RSA-AES256-SHA;
 29 Oct 2015 09:09:30 -0400
Received: by fmsmemgm.homelinux.net (Postfix, from userid 20848)
 id AA264AE25E; Thu, 29 Oct 2015 09:09:29 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
To: 21466 <at> debbugs.gnu.org
Subject: Re: bug#21466: [PATCH] Avoid defining (temporarily) vars and functions
Message-ID: <jwv1tcdstxg.fsf-monnier+bug#21466@HIDDEN>
References: <jwvlhcc1f76.fsf@HIDDEN>
Date: Thu, 29 Oct 2015 09:09:29 -0400
In-Reply-To: <jwvlhcc1f76.fsf@HIDDEN> (Stefan Monnier's message of
 "Fri, 11 Sep 2015 23:36:45 -0400")
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.0.50 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: 0.3 (/)
X-Debbugs-Envelope-To: 21466
Cc: bug-cc-mode@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: 0.3 (/)

Ping?


        Stefan


>>>>> "Stefan" =3D=3D Stefan Monnier <monnier@HIDDEN> writes:

> Package: Emacs
> Version: 25.0.50


> CC-mode currently defines various non-CC-mode variables and functions
> with dummy values, as a way to avoid byte-compiler warnings when using
> those external vars/functions.

> Since this is dangerous business, CC-mode has to be extra careful to
> undo such settings when they're not needed any more.

> It might have made sense back in the days when the byte-compiler did not
> offer built-in ways to silence those warnings, but nowadays we can
> do better.

> Any objections to the patch below (which also removes the unused
> cc-bytecomp-put, while we're at it)?


>         Stefan


> 2015-09-12  Stefan Monnier  <monnier@HIDDEN>

> 	* lisp/progmodes/cc-bytecomp.el: Use newer compiler-silencers.
> 	(cc-bytecomp-defvar): Use just (defvar <foo>) when that is known to
> 	silence the byte-compiler warnings.
> 	(cc-bytecomp-defun): Use just (declare-function <foo>) when that is
> 	known to silence the byte-compiler warnings.
> 	(cc-bytecomp-boundp, cc-bytecomp-fboundp): Change accordingly.
> 	(cc-bytecomp-put): Remove, unused.
> 	(cc-bytecomp-original-properties): Remove var.
> 	(cc-bytecomp-setup-environment, cc-bytecomp-restore-environment):
> 	Don't use cc-bytecomp-original-properties any more.


> diff --git a/lisp/progmodes/cc-bytecomp.el b/lisp/progmodes/cc-bytecomp.el
> index 81b7a82..fff2a9e 100644
> --- a/lisp/progmodes/cc-bytecomp.el
> +++ b/lisp/progmodes/cc-bytecomp.el
> @@ -75,12 +75,10 @@
=20
>  (defvar cc-bytecomp-unbound-variables nil)
>  (defvar cc-bytecomp-original-functions nil)
> -(defvar cc-bytecomp-original-properties nil)
>  (defvar cc-bytecomp-loaded-files nil)
=20
>  (setq cc-bytecomp-unbound-variables nil)
>  (setq cc-bytecomp-original-functions nil)
> -(setq cc-bytecomp-original-properties nil)
>  (setq cc-bytecomp-loaded-files nil)
=20
>  (defvar cc-bytecomp-environment-set nil)
> @@ -173,16 +171,6 @@ perhaps a `cc-bytecomp-restore-environment' is forgo=
tten somewhere"))
>  		  (cc-bytecomp-debug-msg
>  		   "cc-bytecomp-setup-environment: Covered function %s" fun))))
>  	  (setq p (cdr p)))
> -	(setq p cc-bytecomp-original-properties)
> -	(while p
> -	  (let ((sym (car (car (car p))))
> -		(prop (cdr (car (car p))))
> -		(tempdef (car (cdr (car p)))))
> -	    (put sym prop tempdef)
> -	    (cc-bytecomp-debug-msg
> -	     "cc-bytecomp-setup-environment: Bound property %s for %s to %s"
> -	     prop sym tempdef))
> -	  (setq p (cdr p)))
>  	(setq cc-bytecomp-environment-set t)
>  	(cc-bytecomp-debug-msg
>  	 "cc-bytecomp-setup-environment: Done"))))
> @@ -232,22 +220,6 @@ perhaps a `cc-bytecomp-restore-environment' is forgo=
tten somewhere"))
>  		   "cc-bytecomp-restore-environment: Not restoring function %s"
>  		   fun))))
>  	  (setq p (cdr p)))
> -	(setq p cc-bytecomp-original-properties)
> -	(while p
> -	  (let ((sym (car (car (car p))))
> -		(prop (cdr (car (car p))))
> -		(tempdef (car (cdr (car p))))
> -		(origdef (cdr (cdr (car p)))))
> -	    (if (eq (get sym prop) tempdef)
> -		(progn
> -		  (put sym prop origdef)
> -		  (cc-bytecomp-debug-msg
> -		   "cc-bytecomp-restore-environment: Restored property %s for %s to %s"
> -		   prop sym origdef))
> -	      (cc-bytecomp-debug-msg
> -	       "cc-bytecomp-restore-environment: Not restoring property %s for =
%s"
> -	       prop sym)))
> -	  (setq p (cdr p)))
>  	(setq cc-bytecomp-environment-set nil)
>  	(cc-bytecomp-debug-msg
>  	 "cc-bytecomp-restore-environment: Done"))))
> @@ -348,25 +320,28 @@ afterwards.  Don't use within `eval-when-compile'."
>       (eval-when-compile (cc-bytecomp-setup-environment))))
=20
>  (defmacro cc-bytecomp-defvar (var)
> -  "Binds the symbol as a variable during compilation of the file,
> +  "Bind the symbol as a variable during compilation of the file,
>  to silence the byte compiler.  Don't use within `eval-when-compile'."
> -  `(eval-when-compile
> -     (if (boundp ',var)
> -	 (cc-bytecomp-debug-msg
> -	  "cc-bytecomp-defvar: %s bound already as variable" ',var)
> -       (if (not (memq ',var cc-bytecomp-unbound-variables))
> -	   (progn
> -	     (cc-bytecomp-debug-msg
> -	      "cc-bytecomp-defvar: Saving %s (as unbound)" ',var)
> -	     (setq cc-bytecomp-unbound-variables
> -		   (cons ',var cc-bytecomp-unbound-variables))))
> -       (if (cc-bytecomp-is-compiling)
> -	   (progn
> -	     (defvar ,var)
> -	     (set ',var (intern (concat "cc-bytecomp-ignore-var:"
> -					(symbol-name ',var))))
> -	     (cc-bytecomp-debug-msg
> -	      "cc-bytecomp-defvar: Covered variable %s" ',var))))))
> +  (if (not (featurep 'xemacs))
> +      `(defvar ,var)
> +    ;; Not sure if XEmacs's =E2=80=98defvar=E2=80=99 works in the same w=
ay.
> +    `(eval-when-compile
> +       (if (boundp ',var)
> +	   (cc-bytecomp-debug-msg
> +	    "cc-bytecomp-defvar: %s bound already as variable" ',var)
> +	 (if (not (memq ',var cc-bytecomp-unbound-variables))
> +	     (progn
> +	       (cc-bytecomp-debug-msg
> +		"cc-bytecomp-defvar: Saving %s (as unbound)" ',var)
> +	       (setq cc-bytecomp-unbound-variables
> +		     (cons ',var cc-bytecomp-unbound-variables))))
> +	 (if (cc-bytecomp-is-compiling)
> +	     (progn
> +	       (defvar ,var)
> +	       (set ',var (intern (concat "cc-bytecomp-ignore-var:"
> +					  (symbol-name ',var))))
> +	       (cc-bytecomp-debug-msg
> +		"cc-bytecomp-defvar: Covered variable %s" ',var)))))))
=20
>  (defmacro cc-bytecomp-defun (fun)
>    "Bind the symbol as a function during compilation of the file,
> @@ -377,48 +352,33 @@ definition.  That means that this macro will not sh=
ut up warnings
>  about incorrect number of arguments.  It's dangerous to try to replace
>  existing functions since the byte compiler might need the definition
>  at compile time, e.g. for macros and inline functions."
> -  `(eval-when-compile
> -     (if (fboundp ',fun)
> -	 (cc-bytecomp-debug-msg
> -	  "cc-bytecomp-defun: %s bound already as function" ',fun)
> -       (if (not (assq ',fun cc-bytecomp-original-functions))
> -	   (progn
> -	     (cc-bytecomp-debug-msg
> -	      "cc-bytecomp-defun: Saving %s (as unbound)" ',fun)
> -	     (setq cc-bytecomp-original-functions
> -		   (cons (list ',fun nil 'unbound)
> -			 cc-bytecomp-original-functions))))
> -       (if (cc-bytecomp-is-compiling)
> -	   (progn
> -	     (fset ',fun (intern (concat "cc-bytecomp-ignore-fun:"
> -					 (symbol-name ',fun))))
> -	     (cc-bytecomp-debug-msg
> -	      "cc-bytecomp-defun: Covered function %s" ',fun))))))
> -
> -(defmacro cc-bytecomp-put (symbol propname value)
> -  "Set a property on a symbol during compilation (and evaluation) of
> -the file.  Don't use outside `eval-when-compile'."
> -  `(eval-when-compile
> -     (if (not (assoc (cons ,symbol ,propname) cc-bytecomp-original-prope=
rties))
> -	 (progn
> +  (if (fboundp 'declare-function)
> +      `(declare-function ,fun nil)
> +    `(eval-when-compile
> +       (if (fboundp ',fun)
>  	   (cc-bytecomp-debug-msg
> -	    "cc-bytecomp-put: Saving property %s for %s with value %s"
> -	    ,propname ,symbol (get ,symbol ,propname))
> -	   (setq cc-bytecomp-original-properties
> -		 (cons (cons (cons ,symbol ,propname)
> -			     (cons ,value (get ,symbol ,propname)))
> -		       cc-bytecomp-original-properties))))
> -     (put ,symbol ,propname ,value)
> -     (cc-bytecomp-debug-msg
> -      "cc-bytecomp-put: Bound property %s for %s to %s"
> -      ,propname ,symbol ,value)))
> +	    "cc-bytecomp-defun: %s bound already as function" ',fun)
> +	 (if (not (assq ',fun cc-bytecomp-original-functions))
> +	     (progn
> +	       (cc-bytecomp-debug-msg
> +		"cc-bytecomp-defun: Saving %s (as unbound)" ',fun)
> +	       (setq cc-bytecomp-original-functions
> +		     (cons (list ',fun nil 'unbound)
> +			   cc-bytecomp-original-functions))))
> +	 (if (cc-bytecomp-is-compiling)
> +	     (progn
> +	       (fset ',fun (intern (concat "cc-bytecomp-ignore-fun:"
> +					   (symbol-name ',fun))))
> +	       (cc-bytecomp-debug-msg
> +		"cc-bytecomp-defun: Covered function %s" ',fun)))))))
=20
>  (defmacro cc-bytecomp-boundp (symbol)
>    "Return non-nil if the given symbol is bound as a variable outside
>  the compilation.  This is the same as using `boundp' but additionally
>  exclude any variables that have been bound during compilation with
>  `cc-bytecomp-defvar'."
> -  (if (and (cc-bytecomp-is-compiling)
> +  (if (and (featurep 'xemacs)
> +	   (cc-bytecomp-is-compiling)
>  	   (memq (car (cdr symbol)) cc-bytecomp-unbound-variables))
>        nil
>      `(boundp ,symbol)))
> @@ -429,7 +389,8 @@ the compilation.  This is the same as using `fboundp'=
 but additionally
>  exclude any functions that have been bound during compilation with
>  `cc-bytecomp-defun'."
>    (let (fun-elem)
> -    (if (and (cc-bytecomp-is-compiling)
> +    (if (and (not (fboundp 'declare-function))
> +	     (cc-bytecomp-is-compiling)
>  	     (setq fun-elem (assq (car (cdr symbol))
>  				  cc-bytecomp-original-functions))
>  	     (eq (elt fun-elem 2) 'unbound))








Information forwarded to bug-gnu-emacs@HIDDEN, bug-cc-mode@HIDDEN:
bug#21466; Package emacs,cc-mode. Full text available.

Message received at submit <at> debbugs.gnu.org:


Received: (at submit) by debbugs.gnu.org; 12 Sep 2015 03:40:39 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Sep 11 23:40:39 2015
Received: from localhost ([127.0.0.1]:57565 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.80)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1Zabg6-0004vx-Hl
	for submit <at> debbugs.gnu.org; Fri, 11 Sep 2015 23:40:39 -0400
Received: from eggs.gnu.org ([208.118.235.92]:51596)
 by debbugs.gnu.org with esmtp (Exim 4.80)
 (envelope-from <monnier@HIDDEN>) id 1Zabg4-0004vq-Sk
 for submit <at> debbugs.gnu.org; Fri, 11 Sep 2015 23:40:37 -0400
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
 (envelope-from <monnier@HIDDEN>) id 1Zabg2-0001pW-Oq
 for submit <at> debbugs.gnu.org; Fri, 11 Sep 2015 23:40:36 -0400
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org
X-Spam-Level: 
X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50 autolearn=disabled
 version=3.3.2
Received: from lists.gnu.org ([2001:4830:134:3::11]:50054)
 by eggs.gnu.org with esmtp (Exim 4.71)
 (envelope-from <monnier@HIDDEN>) id 1Zabg2-0001p7-LG
 for submit <at> debbugs.gnu.org; Fri, 11 Sep 2015 23:40:34 -0400
Received: from eggs.gnu.org ([2001:4830:134:3::10]:33362)
 by lists.gnu.org with esmtp (Exim 4.71)
 (envelope-from <monnier@HIDDEN>) id 1Zabg0-0003oA-Mm
 for bug-gnu-emacs@HIDDEN; Fri, 11 Sep 2015 23:40:34 -0400
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
 (envelope-from <monnier@HIDDEN>) id 1Zabfx-0001my-B6
 for bug-gnu-emacs@HIDDEN; Fri, 11 Sep 2015 23:40:32 -0400
Received: from ironport2-out.teksavvy.com ([206.248.154.181]:37562)
 by eggs.gnu.org with esmtp (Exim 4.71)
 (envelope-from <monnier@HIDDEN>) id 1Zabfx-0001mT-4H
 for bug-gnu-emacs@HIDDEN; Fri, 11 Sep 2015 23:40:29 -0400
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: A0AdIgA731xV/zi6xEVcgxABgQMuglBOsgUBkAyGAASBQDwRAQEBAQEBAYEKQQWEBjNYAgUTDgIRARwNN4gsmy+PXaRDgSGSDYFFBYtEnw+IbIFFI2FmAQoBAQE1HIFuIjGBAySBIAEBAQ
X-IPAS-Result: A0AdIgA731xV/zi6xEVcgxABgQMuglBOsgUBkAyGAASBQDwRAQEBAQEBAYEKQQWEBjNYAgUTDgIRARwNN4gsmy+PXaRDgSGSDYFFBYtEnw+IbIFFI2FmAQoBAQE1HIFuIjGBAySBIAEBAQ
X-IronPort-AV: E=Sophos;i="5.13,465,1427774400"; d="scan'208";a="164612669"
Received: from 69-196-186-56.dsl.teksavvy.com (HELO fmsmemgm.homelinux.net)
 ([69.196.186.56])
 by ironport2-out.teksavvy.com with ESMTP/TLS/DHE-RSA-AES256-SHA;
 11 Sep 2015 23:37:26 -0400
Received: by fmsmemgm.homelinux.net (Postfix, from userid 20848)
 id 53C8EAE12C; Fri, 11 Sep 2015 23:36:45 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
To: bug-gnu-emacs@HIDDEN
Subject: [PATCH] Avoid defining (temporarily) vars and functions
X-debbugs-cc: bug-cc-mode@HIDDEN
Date: Fri, 11 Sep 2015 23:36:45 -0400
Message-ID: <jwvlhcc1f76.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-detected-operating-system: by eggs.gnu.org: Genre and OS details not
 recognized.
X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address
 (bad octet value).
X-Received-From: 2001:4830:134:3::11
X-Spam-Score: -4.0 (----)
X-Debbugs-Envelope-To: submit
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -4.0 (----)

Package: Emacs
Version: 25.0.50


CC-mode currently defines various non-CC-mode variables and functions
with dummy values, as a way to avoid byte-compiler warnings when using
those external vars/functions.

Since this is dangerous business, CC-mode has to be extra careful to
undo such settings when they're not needed any more.

It might have made sense back in the days when the byte-compiler did not
offer built-in ways to silence those warnings, but nowadays we can
do better.

Any objections to the patch below (which also removes the unused
cc-bytecomp-put, while we're at it)?


        Stefan


2015-09-12  Stefan Monnier  <monnier@HIDDEN>

	* lisp/progmodes/cc-bytecomp.el: Use newer compiler-silencers.
	(cc-bytecomp-defvar): Use just (defvar <foo>) when that is known to
	silence the byte-compiler warnings.
	(cc-bytecomp-defun): Use just (declare-function <foo>) when that is
	known to silence the byte-compiler warnings.
	(cc-bytecomp-boundp, cc-bytecomp-fboundp): Change accordingly.
	(cc-bytecomp-put): Remove, unused.
	(cc-bytecomp-original-properties): Remove var.
	(cc-bytecomp-setup-environment, cc-bytecomp-restore-environment):
	Don't use cc-bytecomp-original-properties any more.


diff --git a/lisp/progmodes/cc-bytecomp.el b/lisp/progmodes/cc-bytecomp.el
index 81b7a82..fff2a9e 100644
--- a/lisp/progmodes/cc-bytecomp.el
+++ b/lisp/progmodes/cc-bytecomp.el
@@ -75,12 +75,10 @@
=20
 (defvar cc-bytecomp-unbound-variables nil)
 (defvar cc-bytecomp-original-functions nil)
-(defvar cc-bytecomp-original-properties nil)
 (defvar cc-bytecomp-loaded-files nil)
=20
 (setq cc-bytecomp-unbound-variables nil)
 (setq cc-bytecomp-original-functions nil)
-(setq cc-bytecomp-original-properties nil)
 (setq cc-bytecomp-loaded-files nil)
=20
 (defvar cc-bytecomp-environment-set nil)
@@ -173,16 +171,6 @@ perhaps a `cc-bytecomp-restore-environment' is forgott=
en somewhere"))
 		  (cc-bytecomp-debug-msg
 		   "cc-bytecomp-setup-environment: Covered function %s" fun))))
 	  (setq p (cdr p)))
-	(setq p cc-bytecomp-original-properties)
-	(while p
-	  (let ((sym (car (car (car p))))
-		(prop (cdr (car (car p))))
-		(tempdef (car (cdr (car p)))))
-	    (put sym prop tempdef)
-	    (cc-bytecomp-debug-msg
-	     "cc-bytecomp-setup-environment: Bound property %s for %s to %s"
-	     prop sym tempdef))
-	  (setq p (cdr p)))
 	(setq cc-bytecomp-environment-set t)
 	(cc-bytecomp-debug-msg
 	 "cc-bytecomp-setup-environment: Done"))))
@@ -232,22 +220,6 @@ perhaps a `cc-bytecomp-restore-environment' is forgott=
en somewhere"))
 		   "cc-bytecomp-restore-environment: Not restoring function %s"
 		   fun))))
 	  (setq p (cdr p)))
-	(setq p cc-bytecomp-original-properties)
-	(while p
-	  (let ((sym (car (car (car p))))
-		(prop (cdr (car (car p))))
-		(tempdef (car (cdr (car p))))
-		(origdef (cdr (cdr (car p)))))
-	    (if (eq (get sym prop) tempdef)
-		(progn
-		  (put sym prop origdef)
-		  (cc-bytecomp-debug-msg
-		   "cc-bytecomp-restore-environment: Restored property %s for %s to %s"
-		   prop sym origdef))
-	      (cc-bytecomp-debug-msg
-	       "cc-bytecomp-restore-environment: Not restoring property %s for %s"
-	       prop sym)))
-	  (setq p (cdr p)))
 	(setq cc-bytecomp-environment-set nil)
 	(cc-bytecomp-debug-msg
 	 "cc-bytecomp-restore-environment: Done"))))
@@ -348,25 +320,28 @@ afterwards.  Don't use within `eval-when-compile'."
      (eval-when-compile (cc-bytecomp-setup-environment))))
=20
 (defmacro cc-bytecomp-defvar (var)
-  "Binds the symbol as a variable during compilation of the file,
+  "Bind the symbol as a variable during compilation of the file,
 to silence the byte compiler.  Don't use within `eval-when-compile'."
-  `(eval-when-compile
-     (if (boundp ',var)
-	 (cc-bytecomp-debug-msg
-	  "cc-bytecomp-defvar: %s bound already as variable" ',var)
-       (if (not (memq ',var cc-bytecomp-unbound-variables))
-	   (progn
-	     (cc-bytecomp-debug-msg
-	      "cc-bytecomp-defvar: Saving %s (as unbound)" ',var)
-	     (setq cc-bytecomp-unbound-variables
-		   (cons ',var cc-bytecomp-unbound-variables))))
-       (if (cc-bytecomp-is-compiling)
-	   (progn
-	     (defvar ,var)
-	     (set ',var (intern (concat "cc-bytecomp-ignore-var:"
-					(symbol-name ',var))))
-	     (cc-bytecomp-debug-msg
-	      "cc-bytecomp-defvar: Covered variable %s" ',var))))))
+  (if (not (featurep 'xemacs))
+      `(defvar ,var)
+    ;; Not sure if XEmacs's =E2=80=98defvar=E2=80=99 works in the same way.
+    `(eval-when-compile
+       (if (boundp ',var)
+	   (cc-bytecomp-debug-msg
+	    "cc-bytecomp-defvar: %s bound already as variable" ',var)
+	 (if (not (memq ',var cc-bytecomp-unbound-variables))
+	     (progn
+	       (cc-bytecomp-debug-msg
+		"cc-bytecomp-defvar: Saving %s (as unbound)" ',var)
+	       (setq cc-bytecomp-unbound-variables
+		     (cons ',var cc-bytecomp-unbound-variables))))
+	 (if (cc-bytecomp-is-compiling)
+	     (progn
+	       (defvar ,var)
+	       (set ',var (intern (concat "cc-bytecomp-ignore-var:"
+					  (symbol-name ',var))))
+	       (cc-bytecomp-debug-msg
+		"cc-bytecomp-defvar: Covered variable %s" ',var)))))))
=20
 (defmacro cc-bytecomp-defun (fun)
   "Bind the symbol as a function during compilation of the file,
@@ -377,48 +352,33 @@ definition.  That means that this macro will not shut=
 up warnings
 about incorrect number of arguments.  It's dangerous to try to replace
 existing functions since the byte compiler might need the definition
 at compile time, e.g. for macros and inline functions."
-  `(eval-when-compile
-     (if (fboundp ',fun)
-	 (cc-bytecomp-debug-msg
-	  "cc-bytecomp-defun: %s bound already as function" ',fun)
-       (if (not (assq ',fun cc-bytecomp-original-functions))
-	   (progn
-	     (cc-bytecomp-debug-msg
-	      "cc-bytecomp-defun: Saving %s (as unbound)" ',fun)
-	     (setq cc-bytecomp-original-functions
-		   (cons (list ',fun nil 'unbound)
-			 cc-bytecomp-original-functions))))
-       (if (cc-bytecomp-is-compiling)
-	   (progn
-	     (fset ',fun (intern (concat "cc-bytecomp-ignore-fun:"
-					 (symbol-name ',fun))))
-	     (cc-bytecomp-debug-msg
-	      "cc-bytecomp-defun: Covered function %s" ',fun))))))
-
-(defmacro cc-bytecomp-put (symbol propname value)
-  "Set a property on a symbol during compilation (and evaluation) of
-the file.  Don't use outside `eval-when-compile'."
-  `(eval-when-compile
-     (if (not (assoc (cons ,symbol ,propname) cc-bytecomp-original-propert=
ies))
-	 (progn
+  (if (fboundp 'declare-function)
+      `(declare-function ,fun nil)
+    `(eval-when-compile
+       (if (fboundp ',fun)
 	   (cc-bytecomp-debug-msg
-	    "cc-bytecomp-put: Saving property %s for %s with value %s"
-	    ,propname ,symbol (get ,symbol ,propname))
-	   (setq cc-bytecomp-original-properties
-		 (cons (cons (cons ,symbol ,propname)
-			     (cons ,value (get ,symbol ,propname)))
-		       cc-bytecomp-original-properties))))
-     (put ,symbol ,propname ,value)
-     (cc-bytecomp-debug-msg
-      "cc-bytecomp-put: Bound property %s for %s to %s"
-      ,propname ,symbol ,value)))
+	    "cc-bytecomp-defun: %s bound already as function" ',fun)
+	 (if (not (assq ',fun cc-bytecomp-original-functions))
+	     (progn
+	       (cc-bytecomp-debug-msg
+		"cc-bytecomp-defun: Saving %s (as unbound)" ',fun)
+	       (setq cc-bytecomp-original-functions
+		     (cons (list ',fun nil 'unbound)
+			   cc-bytecomp-original-functions))))
+	 (if (cc-bytecomp-is-compiling)
+	     (progn
+	       (fset ',fun (intern (concat "cc-bytecomp-ignore-fun:"
+					   (symbol-name ',fun))))
+	       (cc-bytecomp-debug-msg
+		"cc-bytecomp-defun: Covered function %s" ',fun)))))))
=20
 (defmacro cc-bytecomp-boundp (symbol)
   "Return non-nil if the given symbol is bound as a variable outside
 the compilation.  This is the same as using `boundp' but additionally
 exclude any variables that have been bound during compilation with
 `cc-bytecomp-defvar'."
-  (if (and (cc-bytecomp-is-compiling)
+  (if (and (featurep 'xemacs)
+	   (cc-bytecomp-is-compiling)
 	   (memq (car (cdr symbol)) cc-bytecomp-unbound-variables))
       nil
     `(boundp ,symbol)))
@@ -429,7 +389,8 @@ the compilation.  This is the same as using `fboundp' b=
ut additionally
 exclude any functions that have been bound during compilation with
 `cc-bytecomp-defun'."
   (let (fun-elem)
-    (if (and (cc-bytecomp-is-compiling)
+    (if (and (not (fboundp 'declare-function))
+	     (cc-bytecomp-is-compiling)
 	     (setq fun-elem (assq (car (cdr symbol))
 				  cc-bytecomp-original-functions))
 	     (eq (elt fun-elem 2) 'unbound))




Acknowledgement sent to Stefan Monnier <monnier@HIDDEN>:
New bug report received and forwarded. Copy sent to bug-cc-mode@HIDDEN, bug-gnu-emacs@HIDDEN. Full text available.
Report forwarded to bug-cc-mode@HIDDEN, bug-gnu-emacs@HIDDEN:
bug#21466; Package emacs. Full text available.
Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.
Last modified: Fri, 23 Jul 2021 13:30:02 UTC

GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997 nCipher Corporation Ltd, 1994-97 Ian Jackson.