Received: (at 79760) by debbugs.gnu.org; 7 Nov 2025 12:30:58 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Nov 07 07:30:58 2025 Received: from localhost ([127.0.0.1]:45628 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vHLcI-0004fj-4a for submit <at> debbugs.gnu.org; Fri, 07 Nov 2025 07:30:58 -0500 Received: from mout.gmx.net ([212.227.15.18]:49875) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <michael.albinus@HIDDEN>) id 1vHLcD-0004KI-K1 for 79760 <at> debbugs.gnu.org; Fri, 07 Nov 2025 07:30:55 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1762518647; x=1763123447; i=michael.albinus@HIDDEN; bh=wJr8vRjIeszQzzli0gl6H3vpJThalPf4JAZQnMHXyQg=; h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References:Date: Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=KoyTZucriIQcQpmeueSWnCNkPwqabVpnJK5doM0T8AEvGpbA9ZqQHYSSbmPafOzF W8gaucvTSpCz9WRFC3HccqGmjCgn/7diJMvd66uAoBhu9WuL01UxCYBTo4G3rHE+g hpEh/gZXCn/ZkTw+p9K0P5P3lGSncgb0KSm3peOa8QU8H+WciP8hPzisxnGu5ks3X EPWneCNJWA55tf3epWXExcEzKeYjwh4ZTYsV53bInvFJFFkiaIaxaVFvuu11/7Os1 5cethb8O4r7tk1V5+pQunLhHD93XQQWkVszb3yGLUUQ9OWRJn5xh7wYk6TzPIJhEJ Y09tXYbHd7gF6F/2lg== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from gandalf.gmx.de ([185.89.37.61]) by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1Mg6e4-1vs4s50enW-00jkA6; Fri, 07 Nov 2025 13:30:47 +0100 From: Michael Albinus <michael.albinus@HIDDEN> To: Pip Cet via "Bug reports for GNU Emacs, the Swiss army knife of text editors" <bug-gnu-emacs@HIDDEN> Subject: Re: bug#79760: Missing =?utf-8?Q?=E2=80=98lexical-binding?= =?utf-8?Q?=E2=80=99?= cookie warning for scripts In-Reply-To: <87wm429p5g.fsf@HIDDEN> References: <874iraevwr.fsf@HIDDEN> <87tsz9d1te.fsf@HIDDEN> <87a510emzk.fsf@HIDDEN> <86y0oked82.fsf@HIDDEN> <87frard1os.fsf@HIDDEN> <86ms4zd0hp.fsf@HIDDEN> <jwvldkjpc23.fsf-monnier+emacs@HIDDEN> <861pmbcnbl.fsf@HIDDEN> <jwvh5v7ntnn.fsf-monnier+emacs@HIDDEN> <87wm429p5g.fsf@HIDDEN> Date: Fri, 07 Nov 2025 13:30:45 +0100 Message-ID: <871pma81oq.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K1:W5Lbi/RWJ4cRHn4Mi+KBHvtxAExNlfRuU5Dyta0eOXGV2LMdHNn hbojWKBgNx92Btl+B/2PBTqrCfhelu8KgWUfZmOS5cZvztOj8bQnDEtK0dIOP3MRe9qk+wC Q9MAsVdHiZZ2GDjEMMbuREfDRMSdZQXW5+v5rTbBAL+9DRKiTHknQ8eYsZWglpvtMRpqwHI tHWhtDvQwWwx9k2Z4Pagw== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:jMiXKkfQwlA=;CyELsiB4c/KM5bkL0VNEhILesCJ 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 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79760 Cc: 79760 <at> debbugs.gnu.org, Pip Cet <pipcet@HIDDEN>, jonas@HIDDEN, Eli Zaretskii <eliz@HIDDEN>, Stefan Monnier <monnier@HIDDEN> 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.7 (-) Pip Cet via "Bug reports for GNU Emacs, the Swiss army knife of text editors" <bug-gnu-emacs@HIDDEN> writes: Hi, > diff --git a/etc/NEWS b/etc/NEWS > index 0dbe168d8c1..47cdd54f02b 100644 > --- a/etc/NEWS > +++ b/etc/NEWS > @@ -3031,6 +3031,16 @@ and blocks Emacs, or does not provide ways to lim= it how often it runs. > =0C > * Incompatible Lisp Changes in Emacs 31.1 > =20 > +** Files loaded from '-x' and '--script' now use lexical binding. > +If you don't have time to adapt your script's code to the lexical > +binding dialect (see (info "(elisp)Converting to Lexical Binding")), In etc/NEWS, we say something like =2D-8<---------------cut here---------------start------------->8--- binding dialect (see the Info node "(elisp) Converting to Lexical Binding"= ), =2D-8<---------------cut here---------------end--------------->8--- > +you can wrap your code in: > + > + #!/usr/bin/env -S emacs --batch --script > + (eval > + '(progn > + YOUR CODE HERE)) > + Best regards, Michael.
bug-gnu-emacs@HIDDEN:bug#79760; Package emacs.
Full text available.Received: (at 79760) by debbugs.gnu.org; 7 Nov 2025 12:05:30 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Nov 07 07:05:30 2025 Received: from localhost ([127.0.0.1]:45589 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vHLDd-0001cz-KX for submit <at> debbugs.gnu.org; Fri, 07 Nov 2025 07:05:29 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:37554) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vHLDb-0001bw-Sn for 79760 <at> debbugs.gnu.org; Fri, 07 Nov 2025 07:05:28 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1vHLDV-00017N-UK; Fri, 07 Nov 2025 07:05:21 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=dbScm04OiIvDima+jNGuZCdKqOSI+geUUG9n7+gXz3Q=; b=qh0B03jCciPbGkOFeFhs cfkPMQVIQMUm1/Cdv2UP/BW8w8a+axddcljv7bS+FbLpG1iGAqWGjGMX49ur4Md9oiGcqW+mLGNxS H/iUOpcwoxC5zRrY/IjmWOXg+7W1IHjjMt70/k6jABHpGKeM60L/8E1xTjePaJ1qTss1lHhNyLgYf DWJ9JN46m2yyQNdgVWl5C/gPOkjdQ7WavCFtpVTSaqI3r53nzwZWTOI2aQ3UuANwjCg5K/x6Q8K9d YUA3xeirLe9e3TgZWgZ6wTs2BTgdl6RVZVINoVyBoZqsHkYmvAIrJxEoFJvnTb7RRzyxHasJO2gRY DBILi6k1psFfFw==; Date: Fri, 07 Nov 2025 14:05:17 +0200 Message-Id: <86jz029hfm.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Pip Cet <pipcet@HIDDEN> In-Reply-To: <871pma3vhn.fsf@HIDDEN> (message from Pip Cet on Fri, 07 Nov 2025 11:58:18 +0000) Subject: Re: bug#79760: Missing =?utf-8?Q?=E2=80=98lexical-binding?= =?utf-8?Q?=E2=80=99?= cookie warning for scripts References: <874iraevwr.fsf@HIDDEN> <86y0oked82.fsf@HIDDEN> <87frard1os.fsf@HIDDEN> <86ms4zd0hp.fsf@HIDDEN> <jwvldkjpc23.fsf-monnier+emacs@HIDDEN> <861pmbcnbl.fsf@HIDDEN> <jwvh5v7ntnn.fsf-monnier+emacs@HIDDEN> <87wm429p5g.fsf@HIDDEN> <86ms4y9j34.fsf@HIDDEN> <871pma3vhn.fsf@HIDDEN> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79760 Cc: 79760 <at> debbugs.gnu.org, jonas@HIDDEN, monnier@HIDDEN 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 (---) > Date: Fri, 07 Nov 2025 11:58:18 +0000 > From: Pip Cet <pipcet@HIDDEN> > Cc: monnier@HIDDEN, jonas@HIDDEN, 79760 <at> debbugs.gnu.org > > "Eli Zaretskii" <eliz@HIDDEN> writes: > > >> Date: Fri, 07 Nov 2025 09:18:39 +0000 > >> From: Pip Cet <pipcet@HIDDEN> > >> Cc: Eli Zaretskii <eliz@HIDDEN>, jonas@HIDDEN, 79760 <at> debbugs.gnu.org > >> > >> @@ -2974,7 +2976,7 @@ command-line--eval-script > >> file file nil t > >> (lambda (buffer _) > >> (with-current-buffer buffer > >> - (goto-char (point-min)) > >> + (setq-local lexical-binding t) > >> (when (looking-at "#!") > >> (forward-line)) > >> (let (value form) > > > > Why should we delete the goto-char line? > > Thanks for spotting that! That change was unintended (it happens to be > harmless because load-with-code-conversion leaves point at BOB, but best > not to rely on that). Agreed. I'm okay with the rest of the patch, but let's hear from Stefan (and Jonas if he has comments).
bug-gnu-emacs@HIDDEN:bug#79760; Package emacs.
Full text available.Received: (at 79760) by debbugs.gnu.org; 7 Nov 2025 11:58:36 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Nov 07 06:58:36 2025 Received: from localhost ([127.0.0.1]:45572 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vHL6y-0001Ku-7O for submit <at> debbugs.gnu.org; Fri, 07 Nov 2025 06:58:36 -0500 Received: from mail-10630.protonmail.ch ([79.135.106.30]:33391) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <pipcet@HIDDEN>) id 1vHL6u-0001Kj-C8 for 79760 <at> debbugs.gnu.org; Fri, 07 Nov 2025 06:58:34 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com; s=protonmail3; t=1762516704; x=1762775904; bh=2QR3kc6uEKtOMaOJTpDbahqQiKFRRF0YEcNcXVLxZmE=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=SfOUQEk5QR9zXpEf+IqzshNoYqNQQHYScnY1Y5/OSMmWEjlFuRFZetbCGm3KSOCXq IWcemkkr7zJAuYQnCjm8OYKMIUZ+tBDH8lnCW8QAQW5PiZCDDHSzZYyvTXOdCcjBBS glYihltsMT/3kCVdlqbPNkhGZH7mBngZz9p57C1sk0T99tj4FrSM4Nl0J5If1MKqiW RcHbZhPI5FqDFRrdQVrcwtw/Iyz4XFwQCE/4VvBTLbxfVo1Q0Vgdg1Fhf7PQMUSpoL T5Z7l+P9T/MWzsUHk6t+Ia95kjuuomOvU/zNrHQymLpYJbqMzpMjnIgge6xbzoMFKJ 19i+Td7jKt9tw== Date: Fri, 07 Nov 2025 11:58:18 +0000 To: Eli Zaretskii <eliz@HIDDEN> From: Pip Cet <pipcet@HIDDEN> Subject: =?utf-8?Q?Re:_bug#79760:_Missing_=E2=80=98lexical-binding=E2=80=99_cookie_warning_for_scripts?= Message-ID: <871pma3vhn.fsf@HIDDEN> In-Reply-To: <86ms4y9j34.fsf@HIDDEN> References: <874iraevwr.fsf@HIDDEN> <86y0oked82.fsf@HIDDEN> <87frard1os.fsf@HIDDEN> <86ms4zd0hp.fsf@HIDDEN> <jwvldkjpc23.fsf-monnier+emacs@HIDDEN> <861pmbcnbl.fsf@HIDDEN> <jwvh5v7ntnn.fsf-monnier+emacs@HIDDEN> <87wm429p5g.fsf@HIDDEN> <86ms4y9j34.fsf@HIDDEN> Feedback-ID: 112775352:user:proton X-Pm-Message-ID: 01aff21cbe663f76777ccdedb044e267109c8716 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79760 Cc: 79760 <at> debbugs.gnu.org, jonas@HIDDEN, monnier@HIDDEN 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 (-) "Eli Zaretskii" <eliz@HIDDEN> writes: >> Date: Fri, 07 Nov 2025 09:18:39 +0000 >> From: Pip Cet <pipcet@HIDDEN> >> Cc: Eli Zaretskii <eliz@HIDDEN>, jonas@HIDDEN, 79760@HIDDEN= g >> >> @@ -2974,7 +2976,7 @@ command-line--eval-script >> file file nil t >> (lambda (buffer _) >> (with-current-buffer buffer >> - (goto-char (point-min)) >> + (setq-local lexical-binding t) >> (when (looking-at "#!") >> (forward-line)) >> (let (value form) > > Why should we delete the goto-char line? Thanks for spotting that! That change was unintended (it happens to be harmless because load-with-code-conversion leaves point at BOB, but best not to rely on that). Pip
bug-gnu-emacs@HIDDEN:bug#79760; Package emacs.
Full text available.Received: (at 79760) by debbugs.gnu.org; 7 Nov 2025 11:29:49 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Nov 07 06:29:49 2025 Received: from localhost ([127.0.0.1]:45463 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vHKf7-0008RS-0J for submit <at> debbugs.gnu.org; Fri, 07 Nov 2025 06:29:49 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:48200) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vHKf4-0008Qv-5a for 79760 <at> debbugs.gnu.org; Fri, 07 Nov 2025 06:29:47 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1vHKew-0005nw-Oi; Fri, 07 Nov 2025 06:29:38 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=NtBpZ3PdVctmQka1lV1vr6R1/VXXxR0jhKR2geyuBLk=; b=SP0XcgHkWHCADH64yD7E dyCrZ9VH9ugmDEy2SveGNAwARB5ENjgI2hfyea0bSjyLvMKo2eEq6CQ3By0zSJKAW90kcUlwxQUpg agLE81vBPlUWM29gxSmwi2G9GPbYhAD8C6GwphbKl+3HMIkJFYtkzRv49e1SY5CIe+ZUqntT3dQa2 HyHPOTPSlAo5HKd7nfXH2tLrf2LidDtrnlViUcypETNHjWgmG63L12tZ+KcpC0g0vK/+k7LPbBFVF a/+d7zWgRMS6ClwUqvVJAm6obBXljrvqhLVUHVPXVVCVohfLcPwKuuM0ylGSONbuqpLezFLS5wngE GhkRBpQNJib3xw==; Date: Fri, 07 Nov 2025 13:29:35 +0200 Message-Id: <86ms4y9j34.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Pip Cet <pipcet@HIDDEN> In-Reply-To: <87wm429p5g.fsf@HIDDEN> (message from Pip Cet on Fri, 07 Nov 2025 09:18:39 +0000) Subject: Re: bug#79760: Missing =?utf-8?Q?=E2=80=98lexical-binding?= =?utf-8?Q?=E2=80=99?= cookie warning for scripts References: <874iraevwr.fsf@HIDDEN> <87tsz9d1te.fsf@HIDDEN> <87a510emzk.fsf@HIDDEN> <86y0oked82.fsf@HIDDEN> <87frard1os.fsf@HIDDEN> <86ms4zd0hp.fsf@HIDDEN> <jwvldkjpc23.fsf-monnier+emacs@HIDDEN> <861pmbcnbl.fsf@HIDDEN> <jwvh5v7ntnn.fsf-monnier+emacs@HIDDEN> <87wm429p5g.fsf@HIDDEN> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79760 Cc: 79760 <at> debbugs.gnu.org, jonas@HIDDEN, monnier@HIDDEN 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 (---) > Date: Fri, 07 Nov 2025 09:18:39 +0000 > From: Pip Cet <pipcet@HIDDEN> > Cc: Eli Zaretskii <eliz@HIDDEN>, jonas@HIDDEN, 79760 <at> debbugs.gnu.org > > @@ -2974,7 +2976,7 @@ command-line--eval-script > file file nil t > (lambda (buffer _) > (with-current-buffer buffer > - (goto-char (point-min)) > + (setq-local lexical-binding t) > (when (looking-at "#!") > (forward-line)) > (let (value form) Why should we delete the goto-char line?
bug-gnu-emacs@HIDDEN:bug#79760; Package emacs.
Full text available.
Received: (at 79760) by debbugs.gnu.org; 7 Nov 2025 09:18:56 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Nov 07 04:18:56 2025
Received: from localhost ([127.0.0.1]:45147 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vHIcS-0003B1-Ba
for submit <at> debbugs.gnu.org; Fri, 07 Nov 2025 04:18:56 -0500
Received: from mail-4322.protonmail.ch ([185.70.43.22]:17689)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <pipcet@HIDDEN>)
id 1vHIcP-0003Ag-6Z
for 79760 <at> debbugs.gnu.org; Fri, 07 Nov 2025 04:18:54 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com;
s=protonmail3; t=1762507126; x=1762766326;
bh=zCdVu3xxPkBDDgsRLZ8Wpsm+WM0+ILWCR3ssWHC8fcU=;
h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References:
Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID:
Message-ID:BIMI-Selector;
b=BCC6K8lZOUAvga5NrSGLB5sfFhKl/Mzl79UXz5eLnFq4FyWr0/zuleAD531rpEPPN
4Zh8JQnpfH/Cwpd9BfzdGvb1WDPdmmjozeVd2TEOhvSrjJUhjtUliGt82jd12oUDxr
6hDki2S/FGathJSbrcn4ZRcvTt6h0sGn9UgLklBXF6p1sCEGaDhR7ESGjxoQEt5j8G
O63sIlvRYu58yF18qNVixEfJ79OUAF+/NDB2k11mZBBSeLYYMPmgvoIuUbQtQk3C9x
FnqFvr8zXoCAlGnrX3FtwQRx7atzY3FfHO185wIKa+dAQ+JbVR9OOchfC8ZyQlHPO9
zNZdYLg8KuFRw==
Date: Fri, 07 Nov 2025 09:18:39 +0000
To: Stefan Monnier <monnier@HIDDEN>
From: Pip Cet <pipcet@HIDDEN>
Subject: =?utf-8?Q?Re:_bug#79760:_Missing_=E2=80=98lexical-binding=E2=80=99_cookie_warning_for_scripts?=
Message-ID: <87wm429p5g.fsf@HIDDEN>
In-Reply-To: <jwvh5v7ntnn.fsf-monnier+emacs@HIDDEN>
References: <874iraevwr.fsf@HIDDEN> <87tsz9d1te.fsf@HIDDEN>
<87a510emzk.fsf@HIDDEN> <86y0oked82.fsf@HIDDEN>
<87frard1os.fsf@HIDDEN> <86ms4zd0hp.fsf@HIDDEN>
<jwvldkjpc23.fsf-monnier+emacs@HIDDEN> <861pmbcnbl.fsf@HIDDEN>
<jwvh5v7ntnn.fsf-monnier+emacs@HIDDEN>
Feedback-ID: 112775352:user:proton
X-Pm-Message-ID: 156b4f0cc368d56ed69f57990c114189de7083bb
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 79760
Cc: Eli Zaretskii <eliz@HIDDEN>, jonas@HIDDEN, 79760 <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 (-)
Pip Cet <pipcet@HIDDEN> writes:
> "Stefan Monnier" <monnier@HIDDEN> writes:
>
>> Eli Zaretskii [2025-11-06 15:17:34] wrote:
>>
>>>> From: Stefan Monnier <monnier@HIDDEN>
>>>> Cc: Pip Cet <pipcet@HIDDEN>, jonas@HIDDEN, 79760@debbugs=
.gnu.org
>>>> Date: Thu, 06 Nov 2025 07:49:12 -0500
>>>>
>>>> >> My understanding was that the lexical-binding cookie needs to be se=
t at
>>>> >> read time, not just when the code executes, because of macro expans=
ion.
>>>> >
>>>> > That probably means we will need to introduce a command-line option
>>>> > (or maybe just using --eval will do?) to allow scripts to be run wit=
h
>>>> > dynamic binding in effect. Because even if we make lexical-binding
>>>> > non-nil in --script, we still need to allow dynamic binding when it'=
s
>>>> > needed. Any other ideas?
>>>>
>>>> We could provide a macro
>>>>
>>>> (defmacro with-lexical-binding (lexbind &rest code)
>>>> (declare (indent 1) (debug t))
>>>> `(eval ',(macroexp-progn code) ,lexbind))
>>>>
>>>> So they could wrap their code inside
>>>>
>>>> (with-lexical-binding nil
>>>> ...)
>>>
>>> Should be fine, I think.
>>
>> Actually, it's just as easy to use `eval`, so maybe the patch below is
>> all we need?
>
> I don't think that actually works for emacs --script; it does work for
> emacs -scripteval.
Proposed patch:
From 5fa18e08471120808a54540764bd896a27313a7e Mon Sep 17 00:00:00 2001
From: Pip Cet <pipcet@HIDDEN>
Date: Fri, 7 Nov 2025 09:12:55 +0000
Subject: [PATCH] The --script option now enforces lexical binding (bug#7976=
0)
* etc/NEWS: Document the change.
* lisp/startup.el (command-line--load-script): Set 'lexical-binding';
if we delete the first line, insert a new line to preserve line
numbers.
(command-line--eval-script): Set 'lexical-binding'.
---
etc/NEWS | 10 ++++++++++
lisp/startup.el | 6 ++++--
2 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/etc/NEWS b/etc/NEWS
index 0dbe168d8c1..47cdd54f02b 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -3031,6 +3031,16 @@ and blocks Emacs, or does not provide ways to limit =
how often it runs.
=0C
* Incompatible Lisp Changes in Emacs 31.1
=20
+** Files loaded from '-x' and '--script' now use lexical binding.
+If you don't have time to adapt your script's code to the lexical
+binding dialect (see (info "(elisp)Converting to Lexical Binding")),
+you can wrap your code in:
+
+ #!/usr/bin/env -S emacs --batch --script
+ (eval
+ '(progn
+ YOUR CODE HERE))
+
+++
** String mutation has been restricted further.
'aset' on unibyte strings now requires the new character to be a single
diff --git a/lisp/startup.el b/lisp/startup.el
index aab8fcfe9f2..5bf03d19e95 100644
--- a/lisp/startup.el
+++ b/lisp/startup.el
@@ -2961,12 +2961,14 @@ command-line--load-script
file file nil t
(lambda (buffer file)
(with-current-buffer buffer
+ (setq-local lexical-binding t)
(goto-char (point-min))
;; Removing the #! and then calling `eval-buffer' will make the
;; reader not signal an error if it then turns out that the
;; buffer is empty.
(when (looking-at "#!")
- (delete-line))
+ (delete-line)
+ (insert ";; -*- lexical-binding: t -*-\n"))
(eval-buffer buffer nil file nil t)))))
=20
(defun command-line--eval-script (file)
@@ -2974,7 +2976,7 @@ command-line--eval-script
file file nil t
(lambda (buffer _)
(with-current-buffer buffer
- (goto-char (point-min))
+ (setq-local lexical-binding t)
(when (looking-at "#!")
(forward-line))
(let (value form)
--=20
2.51.1
bug-gnu-emacs@HIDDEN:bug#79760; Package emacs.
Full text available.
Received: (at 79760) by debbugs.gnu.org; 6 Nov 2025 15:14:52 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Nov 06 10:14:52 2025
Received: from localhost ([127.0.0.1]:38677 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vH1hL-0005cW-VB
for submit <at> debbugs.gnu.org; Thu, 06 Nov 2025 10:14:52 -0500
Received: from mail-4322.protonmail.ch ([185.70.43.22]:49255)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <pipcet@HIDDEN>)
id 1vH1hI-0005cM-Be
for 79760 <at> debbugs.gnu.org; Thu, 06 Nov 2025 10:14:49 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com;
s=protonmail3; t=1762442082; x=1762701282;
bh=VNGCUte1kuv+rGqRJBN1axih49RhqiVCWcpmKjbZSX4=;
h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References:
Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID:
Message-ID:BIMI-Selector;
b=Rm5tWa1xfk5rAZ8BppT6G37AEmHfdiXrQGIf19qam/CphV0SpWcN+BTplXQ580SeX
3cqaZCwxTZCT1Yy1tiQNv0/nDtU/r8zZGqiEaNYdrT9czLTVhMOtcKRRvBKeSmsAUC
/8qdO62PcsL6U+scCmuVWaIgTDfLgJMEAN/S+DsVpMIpu+6rhLigRvE7bUOYwKSFa4
4lClgiXDnTXfsc/XZ1iJNZS5zE+/qeISThq3C++xtOrAepzs1x1G6o1a7GD1EEMC9+
n+wWowKLn06KlBOXh3XTNQwCPh+MUNOxcmbKAL3qmVVKVcR8+PwpEQGcqvbECwfegO
DmxXRXglVCAyg==
Date: Thu, 06 Nov 2025 15:14:19 +0000
To: Stefan Monnier <monnier@HIDDEN>
From: Pip Cet <pipcet@HIDDEN>
Subject: =?utf-8?Q?Re:_bug#79760:_Missing_=E2=80=98lexical-binding=E2=80=99_cookie_warning_for_scripts?=
Message-ID: <87pl9vb3co.fsf@HIDDEN>
In-Reply-To: <jwvh5v7ntnn.fsf-monnier+emacs@HIDDEN>
References: <874iraevwr.fsf@HIDDEN> <87tsz9d1te.fsf@HIDDEN>
<87a510emzk.fsf@HIDDEN> <86y0oked82.fsf@HIDDEN>
<87frard1os.fsf@HIDDEN> <86ms4zd0hp.fsf@HIDDEN>
<jwvldkjpc23.fsf-monnier+emacs@HIDDEN> <861pmbcnbl.fsf@HIDDEN>
<jwvh5v7ntnn.fsf-monnier+emacs@HIDDEN>
Feedback-ID: 112775352:user:proton
X-Pm-Message-ID: bac6169627b59807dc9d6038f27317750b140eda
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 79760
Cc: Eli Zaretskii <eliz@HIDDEN>, jonas@HIDDEN, 79760 <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:
> Eli Zaretskii [2025-11-06 15:17:34] wrote:
>
>>> From: Stefan Monnier <monnier@HIDDEN>
>>> Cc: Pip Cet <pipcet@HIDDEN>, jonas@HIDDEN, 79760@debbugs.=
gnu.org
>>> Date: Thu, 06 Nov 2025 07:49:12 -0500
>>>
>>> >> My understanding was that the lexical-binding cookie needs to be set=
at
>>> >> read time, not just when the code executes, because of macro expansi=
on.
>>> >
>>> > That probably means we will need to introduce a command-line option
>>> > (or maybe just using --eval will do?) to allow scripts to be run with
>>> > dynamic binding in effect. Because even if we make lexical-binding
>>> > non-nil in --script, we still need to allow dynamic binding when it's
>>> > needed. Any other ideas?
>>>
>>> We could provide a macro
>>>
>>> (defmacro with-lexical-binding (lexbind &rest code)
>>> (declare (indent 1) (debug t))
>>> `(eval ',(macroexp-progn code) ,lexbind))
>>>
>>> So they could wrap their code inside
>>>
>>> (with-lexical-binding nil
>>> ...)
>>
>> Should be fine, I think.
>
> Actually, it's just as easy to use `eval`, so maybe the patch below is
> all we need?
I don't think that actually works for emacs --script; it does work for
emacs -scripteval.
> diff --git a/etc/NEWS b/etc/NEWS
> index 9243db67bce..eb1ffeed5ba 100644
> --- a/etc/NEWS
> +++ b/etc/NEWS
> @@ -3037,6 +3037,15 @@ and blocks Emacs, or does not provide ways to limi=
t how often it runs.
> =0C
> * Incompatible Lisp Changes in Emacs 31.1
>
> +** Files loaded from '-x' and '--script' now use lexical binding.
> +If you don't have time to adapt your script's code to the lexical
> +binding dialect (see (info "(elisp)Converting to Lexical Binding")),
> +you can wrap your code in:
> +
> + #!/usr/bin/emacs --script
^^^^^^^^^^^^^^^^^^^^^^^
I realize this is just an example, but can we please find a better
string to put here? I suggest "/usr/bin/env -S emacs --batch --script",
which
1. works on weird systems like guix (no /usr/bin except for env)
2. looks in your $PATH on normal systems
3. avoids reading user init files
4. can be expanded to include further arguments
5. avoids -scripteval (aka -x) and its weirdness
It'll break on systems which don't have /usr/bin/env, but those are much
less common than systems where emacs doesn't live in /usr/bin (or,
worse, it's the wrong version).
Pip
bug-gnu-emacs@HIDDEN:bug#79760; Package emacs.
Full text available.Received: (at 79760) by debbugs.gnu.org; 6 Nov 2025 14:50:51 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Nov 06 09:50:50 2025 Received: from localhost ([127.0.0.1]:38509 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vH1K6-0004hg-GH for submit <at> debbugs.gnu.org; Thu, 06 Nov 2025 09:50:50 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:48854) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vH1K2-0004gl-2z for 79760 <at> debbugs.gnu.org; Thu, 06 Nov 2025 09:50:48 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1vH1Jv-0005xG-CM; Thu, 06 Nov 2025 09:50:39 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=GcnSVZ2M53GFrfynhTCUK2BHJN0d43syok8P7KStpYo=; b=H03aYQk2mqm0v99CJon2 9PlkQSooo4xISpPUE7zXKLNkpz9axbQdUvgZ5hgoPSGKqWYJhH+pYKmVr6+LCsIVMIYCL9mPnCnJq WeZTyavQY8RM28hvBUwdBO05tnKefjATHN+u+29FCsJNu7+Cf/4W9NLICed1azsMmh2JVKYyYs7Qm /HFeG/5PPe0BUlzV52dyd7A9PlpVUfGQPAv4EITLcVD/xkor2Vv1TupZ5LPYpINnKzHemRB+7/827 dhEwwHG3zIJ4+o6Q5hzqM4avwpmTK2HOhvFFxCfiUVC96JzHSvikN2BoarK5uI98cMKSXWXPEI0jO JpJDupcRLerVog==; Date: Thu, 06 Nov 2025 16:50:35 +0200 Message-Id: <86qzubb4g4.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Stefan Monnier <monnier@HIDDEN> In-Reply-To: <jwvh5v7ntnn.fsf-monnier+emacs@HIDDEN> (message from Stefan Monnier on Thu, 06 Nov 2025 09:07:20 -0500) Subject: Re: bug#79760: Missing =?utf-8?Q?=E2=80=98lexical-binding?= =?utf-8?Q?=E2=80=99?= cookie warning for scripts References: <874iraevwr.fsf@HIDDEN> <86wm46g8vx.fsf@HIDDEN> <87a51294no.fsf@HIDDEN> <87tsz9d1te.fsf@HIDDEN> <87a510emzk.fsf@HIDDEN> <86y0oked82.fsf@HIDDEN> <87frard1os.fsf@HIDDEN> <86ms4zd0hp.fsf@HIDDEN> <jwvldkjpc23.fsf-monnier+emacs@HIDDEN> <861pmbcnbl.fsf@HIDDEN> <jwvh5v7ntnn.fsf-monnier+emacs@HIDDEN> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79760 Cc: pipcet@HIDDEN, jonas@HIDDEN, 79760 <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 (---) > From: Stefan Monnier <monnier@HIDDEN> > Cc: pipcet@HIDDEN, jonas@HIDDEN, 79760 <at> debbugs.gnu.org > Date: Thu, 06 Nov 2025 09:07:20 -0500 > > Eli Zaretskii [2025-11-06 15:17:34] wrote: > > >> We could provide a macro > >> > >> (defmacro with-lexical-binding (lexbind &rest code) > >> (declare (indent 1) (debug t)) > >> `(eval ',(macroexp-progn code) ,lexbind)) > >> > >> So they could wrap their code inside > >> > >> (with-lexical-binding nil > >> ...) > > > > Should be fine, I think. > > Actually, it's just as easy to use `eval`, so maybe the patch below is > all we need? Assuming that 'eval' will always use dynamic binding, sure.
bug-gnu-emacs@HIDDEN:bug#79760; Package emacs.
Full text available.
Received: (at 79760) by debbugs.gnu.org; 6 Nov 2025 14:07:37 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Nov 06 09:07:37 2025
Received: from localhost ([127.0.0.1]:38171 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vH0eH-0001JJ-0a
for submit <at> debbugs.gnu.org; Thu, 06 Nov 2025 09:07:37 -0500
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:47078)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1vH0eE-0001Ix-Kz
for 79760 <at> debbugs.gnu.org; Thu, 06 Nov 2025 09:07:35 -0500
Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1])
by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 2996B440FC0;
Thu, 6 Nov 2025 09:07:29 -0500 (EST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1762438047;
bh=UK3llMlevhzfq2dHleY1f78mkcnbLlTvlG8Jt2DWmlU=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=A/ZNa+a4gboStjmgKlcTEKgEB/DLVbbMBYFPh//AAOzu52Zx61uAQrdaPOlFjWc7Q
m7FyZBbyli7qPCSjr91fsPiJlKeu/myopgO2EmpdSOa/hc7+QocBSl6J70U+c72n4T
w4p71zHSj1kg6y5dfXpsJe+Bv6FgDdAYRwgJBxaXC2/aTUhHu/+/nK+ZWijOJo5ypN
4UhXg/WkoqJW6YYrEDEFZEh6CTU7ID/nsQ0/Hj7uWoiGeAg3hGg4IS6cpM11Fq3Xz7
Ve04KpDrffUzonzaHeOCpxE59izihvV0cHBDGzI0rg00WYscG4D4I2VqR+lP4BY6ht
vdrA498Zxxv1g==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id BDED3440F94;
Thu, 6 Nov 2025 09:07:27 -0500 (EST)
Received: from asado (unknown [181.28.45.30])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id BDEC512039E;
Thu, 6 Nov 2025 09:07:24 -0500 (EST)
From: Stefan Monnier <monnier@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#79760: Missing =?utf-8?Q?=E2=80=98lexical-binding?=
=?utf-8?Q?=E2=80=99?= cookie warning for scripts
In-Reply-To: <861pmbcnbl.fsf@HIDDEN>
Message-ID: <jwvh5v7ntnn.fsf-monnier+emacs@HIDDEN>
References: <874iraevwr.fsf@HIDDEN> <86wm46g8vx.fsf@HIDDEN>
<87a51294no.fsf@HIDDEN> <87tsz9d1te.fsf@HIDDEN>
<87a510emzk.fsf@HIDDEN> <86y0oked82.fsf@HIDDEN>
<87frard1os.fsf@HIDDEN> <86ms4zd0hp.fsf@HIDDEN>
<jwvldkjpc23.fsf-monnier+emacs@HIDDEN> <861pmbcnbl.fsf@HIDDEN>
Date: Thu, 06 Nov 2025 09:07:20 -0500
User-Agent: Gnus/5.13 (Gnus v5.13)
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.096 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
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 79760
Cc: pipcet@HIDDEN, jonas@HIDDEN, 79760 <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 (---)
Eli Zaretskii [2025-11-06 15:17:34] wrote:
>> From: Stefan Monnier <monnier@HIDDEN>
>> Cc: Pip Cet <pipcet@HIDDEN>, jonas@HIDDEN, 79760 <at> debbugs.gnu.org
>> Date: Thu, 06 Nov 2025 07:49:12 -0500
>>
>> >> My understanding was that the lexical-binding cookie needs to be set at
>> >> read time, not just when the code executes, because of macro expansion.
>> >
>> > That probably means we will need to introduce a command-line option
>> > (or maybe just using --eval will do?) to allow scripts to be run with
>> > dynamic binding in effect. Because even if we make lexical-binding
>> > non-nil in --script, we still need to allow dynamic binding when it's
>> > needed. Any other ideas?
>>
>> We could provide a macro
>>
>> (defmacro with-lexical-binding (lexbind &rest code)
>> (declare (indent 1) (debug t))
>> `(eval ',(macroexp-progn code) ,lexbind))
>>
>> So they could wrap their code inside
>>
>> (with-lexical-binding nil
>> ...)
>
> Should be fine, I think.
Actually, it's just as easy to use `eval`, so maybe the patch below is
all we need?
Stefan
diff --git a/etc/NEWS b/etc/NEWS
index 9243db67bce..eb1ffeed5ba 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -3037,6 +3037,15 @@ and blocks Emacs, or does not provide ways to limit how often it runs.
* Incompatible Lisp Changes in Emacs 31.1
+** Files loaded from '-x' and '--script' now use lexical binding.
+If you don't have time to adapt your script's code to the lexical
+binding dialect (see (info "(elisp)Converting to Lexical Binding")),
+you can wrap your code in:
+
+ #!/usr/bin/emacs --script
+ (eval
+ '(YOUR CODE HERE))
+
+++
** String mutation has been restricted further.
'aset' on unibyte strings now requires the new character to be a single
diff --git a/lisp/startup.el b/lisp/startup.el
index aab8fcfe9f2..45c78052077 100644
--- a/lisp/startup.el
+++ b/lisp/startup.el
@@ -2744,6 +2744,7 @@ command-line-1
((member argi '("-scriptload" "-scripteval"))
(let* ((file (command-line-normalize-file-name
(or argval (pop command-line-args-left))))
+ (lexical-binding t)
;; Take file from default dir.
(file-ex (expand-file-name file))
(truename (file-truename file-ex)))
bug-gnu-emacs@HIDDEN:bug#79760; Package emacs.
Full text available.Received: (at 79760) by debbugs.gnu.org; 6 Nov 2025 13:17:48 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Nov 06 08:17:47 2025 Received: from localhost ([127.0.0.1]:37963 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vGzs3-000764-7R for submit <at> debbugs.gnu.org; Thu, 06 Nov 2025 08:17:47 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:54756) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vGzs0-00075y-4b for 79760 <at> debbugs.gnu.org; Thu, 06 Nov 2025 08:17:45 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1vGzru-0003np-17; Thu, 06 Nov 2025 08:17:38 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=OISybweZiyfFNj5wIeAspsXWxp9PhqTukq3D/F6n/p0=; b=Vyxnn8aSagwa6kXYdHOM ZgKIsDju2bJemvZbEh/Ox8jo1vFj1cbPiIElR41q0Dra31pDJA/qxd5U7xpJNjX5JmxsG2VfcnYCj RbDWayyWmto5ykzwHAy4tdfW4eZk/xHH9sMhNQ6fguunaFFJJ2gxm1M1iVy4has/+w3sT5JyEkJDy exmBICIh0RukOJNA7A5Qk1bgyqLa2xKjqfP4Nh56yR+smqCl4101NfhMsjo7K+WSLPvqwaqg1Qilw ZrjetLWZV6s15CrRWYx3VFXgpHySU0P5aXDORW5f/uhTUXA/PkvhhZvisdlqB0bJqniiviFsAkkpV sKWXXK6TV94YDw==; Date: Thu, 06 Nov 2025 15:17:34 +0200 Message-Id: <861pmbcnbl.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Stefan Monnier <monnier@HIDDEN> In-Reply-To: <jwvldkjpc23.fsf-monnier+emacs@HIDDEN> (message from Stefan Monnier on Thu, 06 Nov 2025 07:49:12 -0500) Subject: Re: bug#79760: Missing =?utf-8?Q?=E2=80=98lexical-binding?= =?utf-8?Q?=E2=80=99?= cookie warning for scripts References: <874iraevwr.fsf@HIDDEN> <86wm46g8vx.fsf@HIDDEN> <87a51294no.fsf@HIDDEN> <87tsz9d1te.fsf@HIDDEN> <87a510emzk.fsf@HIDDEN> <86y0oked82.fsf@HIDDEN> <87frard1os.fsf@HIDDEN> <86ms4zd0hp.fsf@HIDDEN> <jwvldkjpc23.fsf-monnier+emacs@HIDDEN> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 79760 Cc: pipcet@HIDDEN, jonas@HIDDEN, 79760 <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 (---) > From: Stefan Monnier <monnier@HIDDEN> > Cc: Pip Cet <pipcet@HIDDEN>, jonas@HIDDEN, 79760 <at> debbugs.gnu.org > Date: Thu, 06 Nov 2025 07:49:12 -0500 > > >> My understanding was that the lexical-binding cookie needs to be set at > >> read time, not just when the code executes, because of macro expansion. > > > > That probably means we will need to introduce a command-line option > > (or maybe just using --eval will do?) to allow scripts to be run with > > dynamic binding in effect. Because even if we make lexical-binding > > non-nil in --script, we still need to allow dynamic binding when it's > > needed. Any other ideas? > > We could provide a macro > > (defmacro with-lexical-binding (lexbind &rest code) > (declare (indent 1) (debug t)) > `(eval ',(macroexp-progn code) ,lexbind)) > > So they could wrap their code inside > > (with-lexical-binding nil > ...) Should be fine, I think.
bug-gnu-emacs@HIDDEN:bug#79760; Package emacs.
Full text available.
Received: (at 79760) by debbugs.gnu.org; 6 Nov 2025 12:49:30 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Nov 06 07:49:30 2025
Received: from localhost ([127.0.0.1]:37879 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vGzQg-00062I-9A
for submit <at> debbugs.gnu.org; Thu, 06 Nov 2025 07:49:30 -0500
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:3655)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1vGzQc-00061v-DQ
for 79760 <at> debbugs.gnu.org; Thu, 06 Nov 2025 07:49:27 -0500
Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id D2EAC81690;
Thu, 6 Nov 2025 07:49:20 -0500 (EST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1762433360;
bh=LoWgwRaZR/l8mzpmcXIRuQSvyu5oa0qFZ2KUr9dGQRs=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=jvAlDAaWDn5uXH+8cd2dI9V7Ks0w8BmGcGXHXWr+o2R0D4S9hvrY8h5+1ma2dQYkf
utgqPHsnTfy15+zdzPMoiWMi9AAt8xdzRYP29+64fkvppRzmpm0FL0qJxlkOuFtbpC
JPD4kwTDmEQEJh3VlramJiyJ18LrXdnaKfB4JLvvANFEAXoLJDscd3xaC4lul6ErCs
F/JswlQjdPebtVCtDwMK1FcEyh1VYQT2SO9RjWajiPTDZ+xjjiIt9UwzxnGr9z6vKW
w4u5Xx5uqqs8ms1pdJXyS2qWKjVzH2JW90uz1pIbezhCswrySEiQem2wdjKo8LmWqR
dc8kYQ9XMsk4g==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 0B18C81679;
Thu, 6 Nov 2025 07:49:20 -0500 (EST)
Received: from asado (unknown [181.28.45.30])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 50D0D12022A;
Thu, 6 Nov 2025 07:49:18 -0500 (EST)
From: Stefan Monnier <monnier@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#79760: Missing =?utf-8?Q?=E2=80=98lexical-binding?=
=?utf-8?Q?=E2=80=99?= cookie warning for scripts
In-Reply-To: <86ms4zd0hp.fsf@HIDDEN>
Message-ID: <jwvldkjpc23.fsf-monnier+emacs@HIDDEN>
References: <874iraevwr.fsf@HIDDEN> <86wm46g8vx.fsf@HIDDEN>
<87a51294no.fsf@HIDDEN> <87tsz9d1te.fsf@HIDDEN>
<87a510emzk.fsf@HIDDEN> <86y0oked82.fsf@HIDDEN>
<87frard1os.fsf@HIDDEN> <86ms4zd0hp.fsf@HIDDEN>
Date: Thu, 06 Nov 2025 07:49:12 -0500
User-Agent: Gnus/5.13 (Gnus v5.13)
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.245 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
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 79760
Cc: Pip Cet <pipcet@HIDDEN>, jonas@HIDDEN, 79760 <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 (---)
>> My understanding was that the lexical-binding cookie needs to be set at
>> read time, not just when the code executes, because of macro expansion.
>
> That probably means we will need to introduce a command-line option
> (or maybe just using --eval will do?) to allow scripts to be run with
> dynamic binding in effect. Because even if we make lexical-binding
> non-nil in --script, we still need to allow dynamic binding when it's
> needed. Any other ideas?
We could provide a macro
(defmacro with-lexical-binding (lexbind &rest code)
(declare (indent 1) (debug t))
`(eval ',(macroexp-progn code) ,lexbind))
So they could wrap their code inside
(with-lexical-binding nil
...)
Of course, experience tells us that for the vast majority of cases,
changing the default of `lexical-binding` has no visible effect anyway.
Stefan
bug-gnu-emacs@HIDDEN:bug#79760; Package emacs.
Full text available.Received: (at 79760) by debbugs.gnu.org; 6 Nov 2025 08:33:44 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Nov 06 03:33:44 2025 Received: from localhost ([127.0.0.1]:36481 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vGvR9-0007sj-Rf for submit <at> debbugs.gnu.org; Thu, 06 Nov 2025 03:33:44 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:56674) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vGvR7-0007sF-3T for 79760 <at> debbugs.gnu.org; Thu, 06 Nov 2025 03:33:41 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1vGvQy-0001AD-3j; Thu, 06 Nov 2025 03:33:32 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=GTYgsG1ztQtHURP7fiWmZNs/87+mk0EYUk+0d1UzjO8=; b=UhK5EmcXeYCJw+Dt210d i3Z4VurUCsgbKWsQ76WBQd+is1epXA0Ncwjoy2PJ0LPKSgO328PiIU6L6enqto8e4Mcww3uAiVWEz 0segdfABhYJXmTjYgrYx0Q7S3v0osmt9HfWZAkfEuGUIEC8d1qMe0SfLQ/iy/ZUrLXbcTaQG0aNbr HBB8A5lCVco8KfRf6lx9oj1xgLWDnwiMugutAFLfxsJxzKSzE4FldwNabuINj0AnCmjoGU2Bi8LBb cPVObdhzWdkzvCM6NqPHjXaC2skyJ7VAN3xV2KnVP/1sCvM14Zi1YHG78G+vONezV6GcR5d8rwMBz YszZzO38li2pSQ==; Date: Thu, 06 Nov 2025 10:33:06 +0200 Message-Id: <86ms4zd0hp.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Pip Cet <pipcet@HIDDEN> In-Reply-To: <87frard1os.fsf@HIDDEN> (message from Pip Cet on Thu, 06 Nov 2025 08:07:20 +0000) Subject: Re: bug#79760: Missing =?utf-8?Q?=E2=80=98lexical-binding?= =?utf-8?Q?=E2=80=99?= cookie warning for scripts References: <874iraevwr.fsf@HIDDEN> <86wm46g8vx.fsf@HIDDEN> <87a51294no.fsf@HIDDEN> <87tsz9d1te.fsf@HIDDEN> <87a510emzk.fsf@HIDDEN> <86y0oked82.fsf@HIDDEN> <87frard1os.fsf@HIDDEN> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79760 Cc: 79760 <at> debbugs.gnu.org, jonas@HIDDEN, monnier@HIDDEN 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 (---) > Date: Thu, 06 Nov 2025 08:07:20 +0000 > From: Pip Cet <pipcet@HIDDEN> > Cc: Stefan Monnier <monnier@HIDDEN>, jonas@HIDDEN, 79760 <at> debbugs.gnu.org > > "Eli Zaretskii" <eliz@HIDDEN> writes: > > > Why cannot the Lisp script begin with something like > > > > (setq-default lexical-binding t) > > > > ? > > In general, that doesn't work: > > #!/usr/bin/env -S emacs -Q --batch -l > (setq-default lexical-binding t) > (let ((x 3)) > (setq closure (lambda () (cl-incf x)))) > (message "%S" (let ((x 42)) (funcall closure))) > > produces "43" here, but should produce "4", if the lexical-binding setq > were effective. > > My understanding was that the lexical-binding cookie needs to be set at > read time, not just when the code executes, because of macro expansion. That probably means we will need to introduce a command-line option (or maybe just using --eval will do?) to allow scripts to be run with dynamic binding in effect. Because even if we make lexical-binding non-nil in --script, we still need to allow dynamic binding when it's needed. Any other ideas? > Note that "-scriptload" (aka --script) and "-scripteval" (aka -x) behave > differently here: scriptload starts by removing the #! line (throwing > off all line numbers for future errors), then calls eval-buffer. > scripteval reads and executes forms one by one, which means the > setq-default thing appears to work. Maybe a bug to fix, or at least a subtlety to document, right?
bug-gnu-emacs@HIDDEN:bug#79760; Package emacs.
Full text available.Received: (at 79760) by debbugs.gnu.org; 6 Nov 2025 08:07:36 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Nov 06 03:07:36 2025 Received: from localhost ([127.0.0.1]:36302 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vGv1r-0006pk-TN for submit <at> debbugs.gnu.org; Thu, 06 Nov 2025 03:07:36 -0500 Received: from mail-4322.protonmail.ch ([185.70.43.22]:62537) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <pipcet@HIDDEN>) id 1vGv1p-0006pS-DJ for 79760 <at> debbugs.gnu.org; Thu, 06 Nov 2025 03:07:34 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com; s=protonmail3; t=1762416446; x=1762675646; bh=7UO56xycjgy8qqIsQ0PfjJ8ulx8N9rqX1OP5UJx8ijc=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=kBMEHT9vNIN5TltVuI91hpCM1fRqJEeMcssr3bJbX6P7lpuxwdnaJSBqsn+BIC8fP wsU4CqtyqljgbtVKloU0+Yj2hkiEdFNTE/utjhSeySbBjnD+YJhxPwLlKndZowDt3P GMEFmTHsUX1EXJIh+d0EtYVOSkelUO0HLmF/50+ZgBUeXRWnV0CsEhEGkdJUt3yqsN Fo/EY5Gpzc7mgP3a5YVyn40caD+TE/31g0APSg0Xb7EXUSMNhhYZw77UXGz0J7NggW m+Nk6/+kcGYTvkh/9tjghrV6+KVY5L7gwrB3VTmtYSiLa77kXxCF1U7eaZ1b+Daxy7 XDc74VgWvKeJQ== Date: Thu, 06 Nov 2025 08:07:20 +0000 To: Eli Zaretskii <eliz@HIDDEN> From: Pip Cet <pipcet@HIDDEN> Subject: =?utf-8?Q?Re:_bug#79760:_Missing_=E2=80=98lexical-binding=E2=80=99_cookie_warning_for_scripts?= Message-ID: <87frard1os.fsf@HIDDEN> In-Reply-To: <86y0oked82.fsf@HIDDEN> References: <874iraevwr.fsf@HIDDEN> <86wm46g8vx.fsf@HIDDEN> <87a51294no.fsf@HIDDEN> <87tsz9d1te.fsf@HIDDEN> <87a510emzk.fsf@HIDDEN> <86y0oked82.fsf@HIDDEN> Feedback-ID: 112775352:user:proton X-Pm-Message-ID: 97578fee57b3db0d1a9bd3d0d21ce3f0e4f4af0a MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79760 Cc: 79760 <at> debbugs.gnu.org, jonas@HIDDEN, Stefan Monnier <monnier@HIDDEN> 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 (-) "Eli Zaretskii" <eliz@HIDDEN> writes: >> Date: Wed, 05 Nov 2025 11:29:42 +0000 >> From: Pip Cet <pipcet@HIDDEN> >> Cc: Eli Zaretskii <eliz@HIDDEN>, 79760 <at> debbugs.gnu.org >> >> Maybe that's a good idea, but I think our priority here should be to >> find a reliable way to run a shebang Elisp script with lexical binding >> and document it. > > Why cannot the Lisp script begin with something like > > (setq-default lexical-binding t) > > ? In general, that doesn't work: #!/usr/bin/env -S emacs -Q --batch -l (setq-default lexical-binding t) (let ((x 3)) (setq closure (lambda () (cl-incf x)))) (message "%S" (let ((x 42)) (funcall closure))) produces "43" here, but should produce "4", if the lexical-binding setq were effective. My understanding was that the lexical-binding cookie needs to be set at read time, not just when the code executes, because of macro expansion. Note that "-scriptload" (aka --script) and "-scripteval" (aka -x) behave differently here: scriptload starts by removing the #! line (throwing off all line numbers for future errors), then calls eval-buffer. scripteval reads and executes forms one by one, which means the setq-default thing appears to work. Pip
bug-gnu-emacs@HIDDEN:bug#79760; Package emacs.
Full text available.Received: (at 79760) by debbugs.gnu.org; 6 Nov 2025 06:07:44 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Nov 06 01:07:44 2025 Received: from localhost ([127.0.0.1]:35457 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vGt9s-0000bM-9b for submit <at> debbugs.gnu.org; Thu, 06 Nov 2025 01:07:44 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:55392) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vGt9p-0000bG-EG for 79760 <at> debbugs.gnu.org; Thu, 06 Nov 2025 01:07:42 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1vGt9i-0005XI-68; Thu, 06 Nov 2025 01:07:34 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=QxqMz6NuvTB2c9RevWojAmazab3vLqxtemIjxJJf8/Y=; b=INHQ0QAbdgudlO2kokot eGHnQSR1Q0zXRGg6CIBy8zrU6mNdCrtC7xDfDC/aJLRFqMkcXNYmJUuWPEPQFsg3ViUiIZXYCW3hn 9DeyVbgygLBp11n8WxW2RrFZwXFi6pZbyLZGEXCnYr9XI6klEfqaT402djKs86TY43YwtIMFKShXD kAqZx/nSLp7usVB/gaEMGJ+fMdmtcEED5BU5sjDXksqVrB9lhrIaDKsgEZXgKTS6ynoEfvJ5cJzxp R8WZ4/wgF+J7ALG1shzQnYqjhnjPMDeS/dUXK2OgNQFD2zlTQUnhhceoRht2dTkBGZX4V+S+YGYHW YScq5NXdQzUL4A==; Date: Thu, 06 Nov 2025 08:07:30 +0200 Message-Id: <86346relst.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Stefan Monnier <monnier@HIDDEN> In-Reply-To: <jwvv7jorzfw.fsf-monnier+emacs@HIDDEN> (message from Stefan Monnier on Wed, 05 Nov 2025 15:38:04 -0500) Subject: Re: bug#79760: Missing =?utf-8?Q?=E2=80=98lexical-binding?= =?utf-8?Q?=E2=80=99?= cookie warning for scripts References: <874iraevwr.fsf@HIDDEN> <86wm46g8vx.fsf@HIDDEN> <87a51294no.fsf@HIDDEN> <87tsz9d1te.fsf@HIDDEN> <87a510emzk.fsf@HIDDEN> <86y0oked82.fsf@HIDDEN> <jwvv7jorzfw.fsf-monnier+emacs@HIDDEN> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79760 Cc: pipcet@HIDDEN, jonas@HIDDEN, 79760 <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 (---) > From: Stefan Monnier <monnier@HIDDEN> > Cc: Pip Cet <pipcet@HIDDEN>, 79760 <at> debbugs.gnu.org, jonas@HIDDEN > Date: Wed, 05 Nov 2025 15:38:04 -0500 > > > Why cannot the Lisp script begin with something like > > > > (setq-default lexical-binding t) > > > > ? > > > > In general, given that our long-term goal is to make lexical-binding > > be non-nil by default, I'd prefer not to complicate Emacs due to > > temporary problems that soon will go away. > > Stefan, WDYT? > > I'd suggest to side-step the problem and change the default value of > `lexical-binding` to t when loading a script with `-x` or > `--script`, indeed. OK, but let's then document that a script that wants to use dynamic binding, it should use something like (setq-default lexical-binding nil) in its first line.
bug-gnu-emacs@HIDDEN:bug#79760; Package emacs.
Full text available.
Received: (at 79760) by debbugs.gnu.org; 5 Nov 2025 20:38:19 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Nov 05 15:38:19 2025
Received: from localhost ([127.0.0.1]:59275 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vGkGo-0006xW-Kz
for submit <at> debbugs.gnu.org; Wed, 05 Nov 2025 15:38:18 -0500
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:26558)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1vGkGm-0006xB-3i
for 79760 <at> debbugs.gnu.org; Wed, 05 Nov 2025 15:38:16 -0500
Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1])
by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 98548441B23;
Wed, 5 Nov 2025 15:38:10 -0500 (EST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1762375089;
bh=tqCjXRN1VqCe0V34qSxWpCtNLD0anBSwuNjxY596Ijw=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=DSqba8E50CY4ijZG9WwbHOAcVy61Bp1ddfZAgjItM10yHftOhoPPH7S1q3HZZmTIj
DdjAHB5toRDAXEB/K8adM4Zfld+X6+x315zENz0foXDxFdNABbSDXlxAigxuxRPOew
MMEWz6svLdAYzjWVlJD1uuGqKiKcNiVm1kC0W19TXfa5xAcSMryt2eiWHmZi467oS4
IViBUK3e5JoCEgaDfFYjQNwLbBRMwFb7BUjUNqvqWCwetnh1RdADZQ2e2qYBNx4A7I
wVyRs7AbNTQPjSv7RUYjFn2+Y6/wx7KRl5WD2h3s5DvmThyUpG8g/ov1n7Pg1Dm3C+
x9sZ0sj0pvgxQ==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id B3B6C44127B;
Wed, 5 Nov 2025 15:38:09 -0500 (EST)
Received: from asado (unknown [190.55.48.190])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 29D6412024C;
Wed, 5 Nov 2025 15:38:07 -0500 (EST)
From: Stefan Monnier <monnier@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#79760: Missing =?utf-8?Q?=E2=80=98lexical-binding?=
=?utf-8?Q?=E2=80=99?= cookie warning for scripts
In-Reply-To: <86y0oked82.fsf@HIDDEN>
Message-ID: <jwvv7jorzfw.fsf-monnier+emacs@HIDDEN>
References: <874iraevwr.fsf@HIDDEN> <86wm46g8vx.fsf@HIDDEN>
<87a51294no.fsf@HIDDEN> <87tsz9d1te.fsf@HIDDEN>
<87a510emzk.fsf@HIDDEN> <86y0oked82.fsf@HIDDEN>
Date: Wed, 05 Nov 2025 15:38:04 -0500
User-Agent: Gnus/5.13 (Gnus v5.13)
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
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
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 79760
Cc: Pip Cet <pipcet@HIDDEN>, jonas@HIDDEN, 79760 <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 (---)
> Why cannot the Lisp script begin with something like
>
> (setq-default lexical-binding t)
>
> ?
>
> In general, given that our long-term goal is to make lexical-binding
> be non-nil by default, I'd prefer not to complicate Emacs due to
> temporary problems that soon will go away.
> Stefan, WDYT?
I'd suggest to side-step the problem and change the default value of
`lexical-binding` to t when loading a script with `-x` or
`--script`, indeed.
Stefan
bug-gnu-emacs@HIDDEN:bug#79760; Package emacs.
Full text available.Received: (at 79760) by debbugs.gnu.org; 5 Nov 2025 15:00:53 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Nov 05 10:00:53 2025 Received: from localhost ([127.0.0.1]:57091 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vGf0H-0007RE-HF for submit <at> debbugs.gnu.org; Wed, 05 Nov 2025 10:00:53 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:35252) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vGf0F-0007Qy-4Y for 79760 <at> debbugs.gnu.org; Wed, 05 Nov 2025 10:00:52 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1vGf08-00015G-HP; Wed, 05 Nov 2025 10:00:44 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=jPW22uqM3X0mZezFYMWf9EkQywHiW6CaJLKijyOhtdY=; b=Q+fuLt0w7I5tVN2OmCCt Ky/YiCxjHWlw1JhOebxnpcrHcubEqcNMJ92BUs/DYN3fY3s8z4M0qqY4xiFSoVH530+M/NXuiVmJk AQjVx41FvFxHOv73JO4gciIGrVmHWJBO+ExnLRmVxVr+3sBd+G3KDRaDBmlYUY3kSzELpDu2hB75d YvXPYu70h/xCiIObTUonfdg54ex5GocAI7nMhnbwVGNFiPkzJhaZDgkYT/jlZ4U9zvUS2VkfGzABH 7eQF5nh1ceCuiJdCkbQ05CLwZG5Lr9wcBMxY55key+8OMazGCC6lih8rPGjkksU3Qs2cyCJpJLhyx cPL2cvb4537B7A==; Date: Wed, 05 Nov 2025 17:00:29 +0200 Message-Id: <86y0oked82.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Pip Cet <pipcet@HIDDEN>, Stefan Monnier <monnier@HIDDEN> In-Reply-To: <87a510emzk.fsf@HIDDEN> (message from Pip Cet on Wed, 05 Nov 2025 11:29:42 +0000) Subject: Re: bug#79760: Missing =?utf-8?Q?=E2=80=98lexical-binding?= =?utf-8?Q?=E2=80=99?= cookie warning for scripts References: <874iraevwr.fsf@HIDDEN> <86wm46g8vx.fsf@HIDDEN> <87a51294no.fsf@HIDDEN> <87tsz9d1te.fsf@HIDDEN> <87a510emzk.fsf@HIDDEN> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79760 Cc: 79760 <at> debbugs.gnu.org, jonas@HIDDEN 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 (---) > Date: Wed, 05 Nov 2025 11:29:42 +0000 > From: Pip Cet <pipcet@HIDDEN> > Cc: Eli Zaretskii <eliz@HIDDEN>, 79760 <at> debbugs.gnu.org > > Maybe that's a good idea, but I think our priority here should be to > find a reliable way to run a shebang Elisp script with lexical binding > and document it. Why cannot the Lisp script begin with something like (setq-default lexical-binding t) ? In general, given that our long-term goal is to make lexical-binding be non-nil by default, I'd prefer not to complicate Emacs due to temporary problems that soon will go away. Stefan, WDYT?
bug-gnu-emacs@HIDDEN:bug#79760; Package emacs.
Full text available.
Received: (at 79760) by debbugs.gnu.org; 5 Nov 2025 11:29:56 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Nov 05 06:29:56 2025
Received: from localhost ([127.0.0.1]:56594 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vGbi7-0004XF-PE
for submit <at> debbugs.gnu.org; Wed, 05 Nov 2025 06:29:56 -0500
Received: from mail-24418.protonmail.ch ([109.224.244.18]:18767)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <pipcet@HIDDEN>)
id 1vGbi5-0004Wt-FR
for 79760 <at> debbugs.gnu.org; Wed, 05 Nov 2025 06:29:54 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com;
s=protonmail3; t=1762342187; x=1762601387;
bh=h5665V2HnezabXWEYf6OzlusnmCaOq+z0cu8D/HqDCQ=;
h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References:
Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID:
Message-ID:BIMI-Selector;
b=Vc029cjtkYTieVxs1TWkFVC+U6swKmbJ+nt2ycLX+opgm+ulI7115dJI1haaxO+L3
WX/WW4PjQIJOq0SMuEdxD/7J/D0dZo4huObdzvY8L17JfHs5cv/ZthcHe23NOfwkzh
4Stb/Sk2i93AX+VktFXrZ7aUW+r4c7mF+5sV9cyBb+MG8zWCMKEyHr21dsJIG78g9i
rs01vnRSjFo9XxAhZaP8WnK4jEHtw8Os+3l6PVNp3ZLpJwlON93Dv5nKA+xS+wEUib
6456fXomH4RTGamWmu/fsCCLgkrpzTOQ/ZKKuIQmvRD8On5e++LpY/e1BvN/fXZcde
eWcpm8n0AFN0Q==
Date: Wed, 05 Nov 2025 11:29:42 +0000
To: Jonas Bernoulli <jonas@HIDDEN>
From: Pip Cet <pipcet@HIDDEN>
Subject: =?utf-8?Q?Re:_bug#79760:_Missing_=E2=80=98lexical-binding=E2=80=99_cookie_warning_for_scripts?=
Message-ID: <87a510emzk.fsf@HIDDEN>
In-Reply-To: <87tsz9d1te.fsf@HIDDEN>
References: <874iraevwr.fsf@HIDDEN> <86wm46g8vx.fsf@HIDDEN>
<87a51294no.fsf@HIDDEN> <87tsz9d1te.fsf@HIDDEN>
Feedback-ID: 112775352:user:proton
X-Pm-Message-ID: 77475f511917a5634700ff1a19a705e37e6e0cdc
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 79760
Cc: Eli Zaretskii <eliz@HIDDEN>, 79760 <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 (-)
"Jonas Bernoulli" <jonas@HIDDEN> writes:
> Pip Cet <pipcet@HIDDEN> writes:
>
>> "Eli Zaretskii" <eliz@HIDDEN> writes:
>>
>>>> Date: Mon, 03 Nov 2025 20:52:20 +0100
>>>> From: Jonas Bernoulli via "Bug reports for GNU Emacs,
>>>> the Swiss army knife of text editors" <bug-gnu-emacs@HIDDEN>
>>>>
>>>> Hello,
>>>>
>>>> I get
>>>>
>>>> Missing =E2=80=98lexical-binding=E2=80=99 cookie in "da-script"
>>>>
>>>> warnings for scripts that have to place the cookie on the second line
>>>> because they look like this:
>>>>
>>>> #!/bin/sh
>>>> ":"; exec emacs -Q --script "$0" -- "$@" # -*- mode: emacs-lisp; lex=
ical-binding: t; -*-
>>>> (... lisp goes here ...)
>>
>> Can you try putting "(message "%S" lexical-binding)" there? Unless I
>> made a mistake copying this, the lexical-binding cookie doesn't actually
>> work.
>
> Yes you are absolutely right.
> (Sorry, could not resist. I am in fact a human.)
>
>>>> But when I visit such files, the local value of`lexical-binding' is t
>>>> as expected.
>>
>> So this is the unexpected part, right?
>
> In a way, yes. What I would like to do is to set the value and then
> have that choice respected when the file is executed as a script and
> also when it is visited in a buffer. When doing what I have done
> above, it is not respected in the first case but not in the second.
> That's worse than if this setting were just never respected.
I agree.
>>> You expect the part after the # to be somehow passed to the Emacs that
>>> is executed by "exec emacs"? That's a comment, as far as the shell is
>>> concerned, isn't it?
>>
>>> The Lisp code passed to Emacs is what starts with (... lisp goes here
>>> ...), right? Or am I missing something?
>>
>> No, the entire file is passed (by name) to Emacs, including the shebang
>> itself. Emacs discards it in lread.c, and the second line is valid Lisp.
>>
>> I don't know whether this helps, but
>>
>> #!/usr/bin/env -S emacs -x
>> ;; -*- lexical-binding: t -*-
>> (message "%S" lexical-binding)
>
> I completely forgot about that (emacs -x). For the record, that was
> added in Emacs 29.1. I going to use this instead of the hack above.
If it worked, that would be a good idea :-)
>> appears to work on a GNU/Linux system, where the GNU coreutils env is
>> installed in this standard location, but only with new emacs versions.
>
> Setting lexical-binding does not seem to work on GNU GUIX using Emacs
> 31.0.50. On this distribution "/usr/bin/env" is a symlink to something
> like "/gnu/store/f2rcir6yz0n74jaa6d0fm82f8flmwjnk-coreutils-9.1/bin/env".
> Even if I use that explicitly, lexical-binding is still nil.
#!/usr/bin/env -S emacs --batch -l
works.
#!/usr/bin/env -S emacs -x
doesn't work.
This appears to be because of the code in startup.el.
I would not want to actually touch this code; I think we should merely
document the current behavior rather than changing it.
>> Maybe /bin/env should be used instead. Note that this useful feature
>> also allows you to pass extra command line parameters to emacs.
>>
>> The problem is this code in lread.c:
>>
>> if (ch !=3D ';')
>> /* The first line isn't a comment, just give up. */
>> {
>> unreadchar (&source, ch);
>> return Cookie_None;
>> }
>>
>> AFAIK, no valid shell script starts with a semicolon, so there's no way
>> to make this work with #!/bin/sh. Using zsh instead works.
>
> Seems to me this should be changed to also look at the second line
> (at least when using "emacs -x").
I don't think we reach this code at all for emacs -x.
> By the way --and that's just something I though of right now-- maybe
> this is an opportunity to *always* look at the second line as well.
> That way, one could replace
>
> ;;; this-library-has-a-long-name.el --- And it also needs a long descri=
ption -*- mode: lexical-binding: t;
>
> with
>
> ;;; this-library-has-a-long-name.el --- And it also needs a long descri=
ption
> ;; -*- lexical-binding: t;
>
> (Of course we would not be able to actually use this for a few years,
> except in new libraries that need at least Emacs 31 for other reasons
> anyway.)
Maybe that's a good idea, but I think our priority here should be to
find a reliable way to run a shebang Elisp script with lexical binding
and document it.
Pip
bug-gnu-emacs@HIDDEN:bug#79760; Package emacs.
Full text available.
Received: (at 79760) by debbugs.gnu.org; 4 Nov 2025 19:40:07 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Nov 04 14:40:07 2025
Received: from localhost ([127.0.0.1]:49641 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vGMsv-0004sw-TT
for submit <at> debbugs.gnu.org; Tue, 04 Nov 2025 14:40:07 -0500
Received: from mail.hostpark.net ([212.243.197.30]:45218)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <jonas@HIDDEN>) id 1vGMsr-0004r8-ER
for 79760 <at> debbugs.gnu.org; Tue, 04 Nov 2025 14:40:04 -0500
Received: from localhost (localhost [127.0.0.1])
by mail.hostpark.net (Postfix) with ESMTP id 0C7D4166D2;
Tue, 04 Nov 2025 20:39:59 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=bernoul.li; h=
content-transfer-encoding:content-type:content-type:mime-version
:message-id:date:date:references:in-reply-to:subject:subject
:from:from; s=sel2011a; t=1762285198; bh=NAOxw1RsALrkmcgzaiqB/9U
3j5dX/YPaWDhWo7yzVC0=; b=B5gjHu4BFN29wdc0FsBHCzulzEHs894oG0qjrYt
BxsllhMHhjwPCmztilij834tj5XqSk56Gp9FnQpIJ5J/BVLbIPHCmUb9NOhBmemD
Nn2FlQhdX1L6xQxfkUmKWcvcCWpnIInxYfTZ5jQ4Fpnfswf0FvPxIBpM7bvuvlP/
eFH0=
X-Virus-Scanned: by Hostpark/NetZone Mailprotection at hostpark.net
Received: from mail.hostpark.net ([127.0.0.1])
by localhost (mail1.hostpark.net [127.0.0.1]) (amavis, port 10224) with ESMTP
id CjbNFVQerW8a; Tue, 4 Nov 2025 20:39:58 +0100 (CET)
Received: from customer (localhost [127.0.0.1])
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
key-exchange secp256r1 server-signature RSA-PSS (2048 bits) server-digest
SHA256) (No client certificate requested)
by mail.hostpark.net (Postfix) with ESMTPSA id 3CEBF16148;
Tue, 04 Nov 2025 20:39:57 +0100 (CET)
From: Jonas Bernoulli <jonas@HIDDEN>
To: Pip Cet <pipcet@HIDDEN>, Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#79760: Missing =?utf-8?Q?=E2=80=98lexical-binding?=
=?utf-8?Q?=E2=80=99?= cookie warning for scripts
In-Reply-To: <87a51294no.fsf@HIDDEN>
References: <874iraevwr.fsf@HIDDEN> <86wm46g8vx.fsf@HIDDEN>
<87a51294no.fsf@HIDDEN>
Date: Tue, 04 Nov 2025 20:39:57 +0100
Message-ID: <87tsz9d1te.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 79760
Cc: 79760 <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.7 (-)
Pip Cet <pipcet@HIDDEN> writes:
> "Eli Zaretskii" <eliz@HIDDEN> writes:
>
>>> Date: Mon, 03 Nov 2025 20:52:20 +0100
>>> From: Jonas Bernoulli via "Bug reports for GNU Emacs,
>>> the Swiss army knife of text editors" <bug-gnu-emacs@HIDDEN>
>>>
>>> Hello,
>>>
>>> I get
>>>
>>> Missing =E2=80=98lexical-binding=E2=80=99 cookie in "da-script"
>>>
>>> warnings for scripts that have to place the cookie on the second line
>>> because they look like this:
>>>
>>> #!/bin/sh
>>> ":"; exec emacs -Q --script "$0" -- "$@" # -*- mode: emacs-lisp; lexi=
cal-binding: t; -*-
>>> (... lisp goes here ...)
>
> Can you try putting "(message "%S" lexical-binding)" there? Unless I
> made a mistake copying this, the lexical-binding cookie doesn't actually
> work.
Yes you are absolutely right.
(Sorry, could not resist. I am in fact a human.)
>>> But when I visit such files, the local value of`lexical-binding' is t
>>> as expected.
>
> So this is the unexpected part, right?
In a way, yes. What I would like to do is to set the value and then
have that choice respected when the file is executed as a script and
also when it is visited in a buffer. When doing what I have done
above, it is not respected in the first case but not in the second.
That's worse than if this setting were just never respected.
>> You expect the part after the # to be somehow passed to the Emacs that
>> is executed by "exec emacs"? That's a comment, as far as the shell is
>> concerned, isn't it?
>
>> The Lisp code passed to Emacs is what starts with (... lisp goes here
>> ...), right? Or am I missing something?
>
> No, the entire file is passed (by name) to Emacs, including the shebang
> itself. Emacs discards it in lread.c, and the second line is valid Lisp.
>
> I don't know whether this helps, but
>
> #!/usr/bin/env -S emacs -x
> ;; -*- lexical-binding: t -*-
> (message "%S" lexical-binding)
I completely forgot about that (emacs -x). For the record, that was
added in Emacs 29.1. I going to use this instead of the hack above.
> appears to work on a GNU/Linux system, where the GNU coreutils env is
> installed in this standard location, but only with new emacs versions.
Setting lexical-binding does not seem to work on GNU GUIX using Emacs
31.0.50. On this distribution "/usr/bin/env" is a symlink to something
like "/gnu/store/f2rcir6yz0n74jaa6d0fm82f8flmwjnk-coreutils-9.1/bin/env".
Even if I use that explicitly, lexical-binding is still nil.
> Maybe /bin/env should be used instead. Note that this useful feature
> also allows you to pass extra command line parameters to emacs.
>
> The problem is this code in lread.c:
>
> if (ch !=3D ';')
> /* The first line isn't a comment, just give up. */
> {
> unreadchar (&source, ch);
> return Cookie_None;
> }
>
> AFAIK, no valid shell script starts with a semicolon, so there's no way
> to make this work with #!/bin/sh. Using zsh instead works.
Seems to me this should be changed to also look at the second line
(at least when using "emacs -x").
By the way --and that's just something I though of right now-- maybe
this is an opportunity to *always* look at the second line as well.
That way, one could replace
;;; this-library-has-a-long-name.el --- And it also needs a long descript=
ion -*- mode: lexical-binding: t;
with
;;; this-library-has-a-long-name.el --- And it also needs a long descript=
ion
;; -*- lexical-binding: t;
(Of course we would not be able to actually use this for a few years,
except in new libraries that need at least Emacs 31 for other reasons
anyway.)
>
> Pip
Thanks!
Jonas
bug-gnu-emacs@HIDDEN:bug#79760; Package emacs.
Full text available.
Received: (at 79760) by debbugs.gnu.org; 3 Nov 2025 21:42:19 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Nov 03 16:42:19 2025
Received: from localhost ([127.0.0.1]:43762 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vG2Jb-0004iG-6T
for submit <at> debbugs.gnu.org; Mon, 03 Nov 2025 16:42:18 -0500
Received: from mail-4322.protonmail.ch ([185.70.43.22]:47333)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <pipcet@HIDDEN>)
id 1vG2JU-0004hs-Pt
for 79760 <at> debbugs.gnu.org; Mon, 03 Nov 2025 16:42:10 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com;
s=protonmail3; t=1762206121; x=1762465321;
bh=kUkTRV2rDp96wCVHgHn5vYwx29Ng0fORWr+ErkPd7n4=;
h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References:
Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID:
Message-ID:BIMI-Selector;
b=gd4GFJ8VqU1uagaXktVmnkb5fS5Gb+hVm4uzyR9OTvoyAXDnNFqW4E1qtl8+DDw+X
US0guyVvh+1GJ7KY5j5LJE83V+GxyrvsyVNvi+t+g43rw5QdchDl1liPByNyHx0UQd
dc861Cm1M5ySmbr1qZkpCkZdXZOoyrmJxkci//WORrM0veILOq5f3jE9c0/hRVs1mA
iGFBQnRR1mNYpIfSm4FaQJelJJRRqMA7zLMsRD/2kyVzy2R10xBDv4H2zsaosBnbCy
07xtGHDrBixcNFyCQVGXB13EF73KeXNPOnbWRJPxWGatlK3YBqwC11FTgun7fqfxAr
pskeCpMLjAIyQ==
Date: Mon, 03 Nov 2025 21:41:55 +0000
To: Eli Zaretskii <eliz@HIDDEN>
From: Pip Cet <pipcet@HIDDEN>
Subject: =?utf-8?Q?Re:_bug#79760:_Missing_=E2=80=98lexical-binding=E2=80=99_cookie_warning_for_scripts?=
Message-ID: <87a51294no.fsf@HIDDEN>
In-Reply-To: <86wm46g8vx.fsf@HIDDEN>
References: <874iraevwr.fsf@HIDDEN> <86wm46g8vx.fsf@HIDDEN>
Feedback-ID: 112775352:user:proton
X-Pm-Message-ID: 30061a2188d9de315d3643d1d00ff8cf8a49d78f
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 79760
Cc: 79760 <at> debbugs.gnu.org, Jonas Bernoulli <jonas@HIDDEN>
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 (-)
"Eli Zaretskii" <eliz@HIDDEN> writes:
>> Date: Mon, 03 Nov 2025 20:52:20 +0100
>> From: Jonas Bernoulli via "Bug reports for GNU Emacs,
>> the Swiss army knife of text editors" <bug-gnu-emacs@HIDDEN>
>>
>> Hello,
>>
>> I get
>>
>> Missing =E2=80=98lexical-binding=E2=80=99 cookie in "da-script"
>>
>> warnings for scripts that have to place the cookie on the second line
>> because they look like this:
>>
>> #!/bin/sh
>> ":"; exec emacs -Q --script "$0" -- "$@" # -*- mode: emacs-lisp; lexic=
al-binding: t; -*-
>> (... lisp goes here ...)
Can you try putting "(message "%S" lexical-binding)" there? Unless I
made a mistake copying this, the lexical-binding cookie doesn't actually
work.
>> But when I visit such files, the local value of`lexical-binding' is t
>> as expected.
So this is the unexpected part, right?
> You expect the part after the # to be somehow passed to the Emacs that
> is executed by "exec emacs"? That's a comment, as far as the shell is
> concerned, isn't it?
> The Lisp code passed to Emacs is what starts with (... lisp goes here
> ...), right? Or am I missing something?
No, the entire file is passed (by name) to Emacs, including the shebang
itself. Emacs discards it in lread.c, and the second line is valid Lisp.
I don't know whether this helps, but
#!/usr/bin/env -S emacs -x
;; -*- lexical-binding: t -*-
(message "%S" lexical-binding)
appears to work on a GNU/Linux system, where the GNU coreutils env is
installed in this standard location, but only with new emacs versions.
Maybe /bin/env should be used instead. Note that this useful feature
also allows you to pass extra command line parameters to emacs.
The problem is this code in lread.c:
if (ch !=3D ';')
/* The first line isn't a comment, just give up. */
{
unreadchar (&source, ch);
return Cookie_None;
}
AFAIK, no valid shell script starts with a semicolon, so there's no way
to make this work with #!/bin/sh. Using zsh instead works.
Pip
bug-gnu-emacs@HIDDEN:bug#79760; Package emacs.
Full text available.Received: (at 79760) by debbugs.gnu.org; 3 Nov 2025 20:26:58 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Nov 03 15:26:58 2025 Received: from localhost ([127.0.0.1]:43275 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vG18j-0001oP-JY for submit <at> debbugs.gnu.org; Mon, 03 Nov 2025 15:26:57 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:59020) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vG18g-0001oF-FV for 79760 <at> debbugs.gnu.org; Mon, 03 Nov 2025 15:26:55 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1vG18Y-0007Dk-4o; Mon, 03 Nov 2025 15:26:46 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=JxRr6u6p2ShXzpGXtG76j2OU4iCUZjuZA+tgXG6dm0A=; b=mMDIBHoLrPpvUS+SRuOl vW/PMZ/u+7SEquTLM08cqUAf60CVgyrXUsD4pVExAaCrbWLHEM1rgdCta/WOo83J4ddfn3BHGV61B bZ76vII29m18sj3bskuvHy8pQUpJ6ryDIuB1Sdt4QLgPhcgrJl//N9n/OStZNtOeCkU+UO9RevqTM KBaJYa7gF5KhIyUt5brBQK0g44fbXUWVoSP0csFNesuUaJJaadg8OF14XwuekW21DKvUB34epGBbF pTdGWt+3cW3A47hu/5xQYZbg6it7i2JE3PlXJIQLkNVnAX4/sJxpO7aPfYro6OHW48yDFx2tPCI2B 4MGJtS1Jh99nVA==; Date: Mon, 03 Nov 2025 22:26:42 +0200 Message-Id: <86wm46g8vx.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Jonas Bernoulli <jonas@HIDDEN> In-Reply-To: <874iraevwr.fsf@HIDDEN> (bug-gnu-emacs@HIDDEN) Subject: Re: bug#79760: Missing =?utf-8?Q?=E2=80=98lexical-binding?= =?utf-8?Q?=E2=80=99?= cookie warning for scripts References: <874iraevwr.fsf@HIDDEN> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79760 Cc: 79760 <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 (---) > Date: Mon, 03 Nov 2025 20:52:20 +0100 > From: Jonas Bernoulli via "Bug reports for GNU Emacs, > the Swiss army knife of text editors" <bug-gnu-emacs@HIDDEN> > > Hello, > > I get > > Missing ‘lexical-binding’ cookie in "da-script" > > warnings for scripts that have to place the cookie on the second line > because they look like this: > > #!/bin/sh > ":"; exec emacs -Q --script "$0" -- "$@" # -*- mode: emacs-lisp; lexical-binding: t; -*- > (... lisp goes here ...) > > But when I visit such files, the local value of`lexical-binding' is t > as expected. You expect the part after the # to be somehow passed to the Emacs that is executed by "exec emacs"? That's a comment, as far as the shell is concerned, isn't it? The Lisp code passed to Emacs is what starts with (... lisp goes here ...), right? Or am I missing something?
bug-gnu-emacs@HIDDEN:bug#79760; Package emacs.
Full text available.
Received: (at submit) by debbugs.gnu.org; 3 Nov 2025 19:52:57 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Nov 03 14:52:57 2025
Received: from localhost ([127.0.0.1]:43111 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vG0bo-0000h3-98
for submit <at> debbugs.gnu.org; Mon, 03 Nov 2025 14:52:56 -0500
Received: from lists.gnu.org ([2001:470:142::17]:52250)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <jonas@HIDDEN>) id 1vG0bh-0000gv-Rx
for submit <at> debbugs.gnu.org; Mon, 03 Nov 2025 14:52:50 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10])
by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.90_1) (envelope-from <jonas@HIDDEN>) id 1vG0bc-0001Zh-5F
for bug-gnu-emacs@HIDDEN; Mon, 03 Nov 2025 14:52:44 -0500
Received: from mail.hostpark.net ([212.243.197.30])
by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.90_1) (envelope-from <jonas@HIDDEN>) id 1vG0bQ-0006bt-QO
for bug-gnu-emacs@HIDDEN; Mon, 03 Nov 2025 14:52:42 -0500
Received: from localhost (localhost [127.0.0.1])
by mail.hostpark.net (Postfix) with ESMTP id 9383A1626A
for <bug-gnu-emacs@HIDDEN>; Mon, 03 Nov 2025 20:52:21 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=bernoul.li; h=
content-transfer-encoding:content-type:content-type:mime-version
:message-id:date:date:subject:subject:from:from; s=sel2011a; t=
1762199541; bh=vOAQPQJZyPS6Z/ibJRTgJSqbC62wOG956fOQ1xAO2fo=; b=t
zlSqPpZFWPnVTr4tkbG5aNY05y/8+R2jSoYrkXsxY++gKkIlCCBbvc6BamQZR7tz
yLkqcN1WFL/O4lIDTuYV3JPiYK5DmcBrNxLw/6ih3lMwRnkU6d22G6+JS1pr90r5
OqXH1KYrPleMFMzxBhtmGc5BqTgp6h7oYz34vHEjAw=
X-Virus-Scanned: by Hostpark/NetZone Mailprotection at hostpark.net
Received: from mail.hostpark.net ([127.0.0.1])
by localhost (mail1.hostpark.net [127.0.0.1]) (amavis, port 10224) with ESMTP
id P7_dQXDUv0Ws for <bug-gnu-emacs@HIDDEN>;
Mon, 3 Nov 2025 20:52:21 +0100 (CET)
Received: from customer (localhost [127.0.0.1])
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
key-exchange secp256r1 server-signature RSA-PSS (2048 bits) server-digest
SHA256) (No client certificate requested)
by mail.hostpark.net (Postfix) with ESMTPSA id 4C3BE16148
for <bug-gnu-emacs@HIDDEN>; Mon, 03 Nov 2025 20:52:21 +0100 (CET)
From: Jonas Bernoulli <jonas@HIDDEN>
To: bug-gnu-emacs@HIDDEN
Subject: Missing =?utf-8?Q?=E2=80=98lexical-binding=E2=80=99?= cookie
warning for scripts
Date: Mon, 03 Nov 2025 20:52:20 +0100
Message-ID: <874iraevwr.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Received-SPF: pass client-ip=212.243.197.30; envelope-from=jonas@HIDDEN;
helo=mail.hostpark.net
X-Spam_score_int: -23
X-Spam_score: -2.4
X-Spam_bar: --
X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIM_INVALID=0.1,
DKIM_SIGNED=0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001,
RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001,
RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001,
SPF_PASS=-0.001 autolearn=ham autolearn_force=no
X-Spam_action: no action
X-Spam-Score: 0.9 (/)
X-Debbugs-Envelope-To: submit
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: -0.1 (/)
Hello,
I get=20
Missing =E2=80=98lexical-binding=E2=80=99 cookie in "da-script"
warnings for scripts that have to place the cookie on the second line
because they look like this:
#!/bin/sh
":"; exec emacs -Q --script "$0" -- "$@" # -*- mode: emacs-lisp; lexical-=
binding: t; -*-
(... lisp goes here ...)
But when I visit such files, the local value of`lexical-binding' is t
as expected.
Cheers,
Jonas
Jonas Bernoulli <jonas@HIDDEN>:bug-gnu-emacs@HIDDEN.
Full text available.bug-gnu-emacs@HIDDEN:bug#79760; Package emacs.
Full text available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.