GNU bug report logs - #79760
Missing ‘lexical-binding’ cookie warning for scripts

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

Package: emacs; Reported by: Jonas Bernoulli <jonas@HIDDEN>; dated Mon, 3 Nov 2025 19:53:02 UTC; Maintainer for emacs is bug-gnu-emacs@HIDDEN.

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


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
 4cDlqvbd9mRCKaFQK9l6v6QVRmW9vnZOxF3z3FS3pYdp2lfH/w2Tm8yTqhHLkX/OYd3NWVwUP
 wnizB14kI62QijPFPQJsoWwY7X6SJGhMuHqHHT118yR9yCnW9V4dmuABN4Poe/ks4uS0z6IiL
 Rku/PcidAq5HvjGeDci1skl5JFXTPQ5YSibMj+HrevGL2vovRtWUti1G/59RxQSYh1FtkiQdk
 NZdPOwZruCDXKTIUDpOZrXC9Q/P0chCvejE0Y1Sk8ebPUF60XbpsoMaMgFfhhoe48gyyN+uej
 b2GpBsFm2MzC5OGYXA2+jdVZiQgAyPuf+gUIAZeGskce6KjO+3aqDYPXFScZu16Zk1gyeZxAu
 wrvMlx5uqUWoCsGhB1yG/BHHGS2FERY/AwHfQARA5A4FW4LMtxP/M+Y3mpIU0FkXXRmuHYA+/
 vynD2Oa/Q4lmqP5nlZC4Napm6FMKiFY+tTWTAYSoUibXCynYVkdQqm3Sjg7E2FgBeUQt1PUiE
 65kHjg8zzUbugAP38Xgcb6WJK0WPsW4KZ9L5a9lL2MV7/5BMQNwwTyKvJHkB1FMAxic/n7DFe
 aEEPLRdbZrPeZbsN2Uj2SbdYoKQXbBdB/0GK8iG1rG24it5ToyxtRJlDyjlFADACU95n0GLmW
 BPkQ2TJeOMyZpFGmnze2nb/yjrLc01Cixq/JJUJNtRmwBAdtsxJuG5BaZCG0BjXj5ibZIIreF
 E8ula1uSW2W1hzOWS3VIL0NWdoCdIMgD6gWph1oe6aKif/oCLFkdFG9EalN1CJqdnqCtmcpU+
 /IcGi/yAPireGXrUcafH512jeF57eVbwgewm6gHDKLe3wP1uCutXNyF7vV1SFi9ejVkH0jixG
 yAbOTAbgG9fSQ26oH+hUK431qpkwaRO+o/5ThRli3/43XJqqRNW8hPs/du3El0fFINUgD5xJo
 KUdjSZ8/SHVIptWoxoEvP6vyDUE3H5ciRN008+zKNishPnnjVtM78Cf0Q6B10xzJcpWWCNF+m
 U9LUnraCEBBVouj/nS3vjiQsa+x5/OhNIG5sLBKoUGeHuvDXOtMlpTN9RxrjtFhJHrMDGJUuG
 D6SoxPipM6nCQst7UorzkGyivwxBcYsy8SoFANeJ6sylKrDfPpnHuVlxanvTePL0XRNKLQtvd
 1sm7LDkUlFcFQPeah5v4+BgpdU4R5MPdhhbOrED6PtWa9gq9ZBpGE9+eJsPdgyoPOYh/OEWik
 WDtu4Qm8xR0PutlfnTKgJiytDVLqmLvkHcDm6Jo2YOO8BeiRGb0n+vjlop0sdn7cURjGUKR3O
 hWO1uRYELSNDEl2ue2zmWGmdy3Dwk48v+Vi2KleiB0qa0taeXJYWG3WIwutq/Xx6gu5tIpken
 61QHy+VC62wqI4pTQ4KkSxS0XOZAdf1vENZ7LMLT57jMQ9fosjR62J6rgQYOPguz2lg3nHem1
 8GnlvXxr34LDHiaOigxIjJm/U5UYf5hfbiEKD/2yiblm0kHczhlhDYtNrlHnQmJkq9telJ6Oc
 DGa4Smh+6zBt28eaRtc9hk0pjLDEJE18XYDAFyxnHlRxVcxW0QSKYNCs0WGJBxz4FjIYcr22C
 l0dg8e1kwwCrleACCxAL7gmUGvXW71Ta0BlumSRtNWHhiEfvm+BztE9SZql3Sky8ga7+h1iKv
 I/6gePWPXdJd7wctFbp6xraz2aI92gB1BxwleD8dOgPSv4gFgbHXkfXt9mTujiZ9M6EN0UrrI
 T12d7ecxxqaMRD7FCigjD1G9YXs1yQ7Dd9/p2cytk5Hf9BxAt3EBADDtwa6zhXFCAp4kOruDH
 qzx0pwF1hw7kCiNuT4xQ2LFoi1HdzjQ/2aN74sgLBNqDQWM43wXdOI2gLDJe9E8RPxiHU2+Uk
 jrWnNSfJL63LMHlvZZcF7zn/Avdr138ow8kzkwzaTualzrlS9VnTcMsdlnwJCKxaAQN4xS2Lv
 SM+2YQGtWsAA6X4bHMwNJ3hbtSaVkZxcJJxP6lTcPdH4SylZLCUJobdSLZ501XysGrkKTxtoO
 gqcImC273yVnbMmrEJnjMoFGSd58ZhXVV3m/M7/++GOIYVC+0Gc24x28g8yE8TWuaxdTCWojA
 4MYYfOvF9VhO19m14HVlFWSWCxiZO+Pt5tyGwvCiqJQQ89XRwQA4oHqYNiCN2qe5D1Na/nynR
 Gu7b5/Nl3eRCLF/pa2Li9tZw3LuDzoi7Y1p4ri4/4/+byBQEsT3frlaUsaYsoF6gAfGn+gO00
 bQu49FSVDVhxnAobjwV/zkCalwZP5Kf+7P6es9AvS86h3Ik8GKoc/Va5wx70E8L9keRax8R1L
 ub0UNmiMB+AFyA5+tAEmfKq/kJP+im8QPD1QUlrsWY8YU3BA1ScUUvoL5D78mru8w+y+uLXYF
 uZmNSq/+pLzaFJLgdfJKwg3ySzF0IUoBGic6C+BKeiwIy7ve5Ohwbfqkx5gzZ/PK//jP2ltQb
 kC6aAWIUYfmYkPJ12m7NiU3JHphrK8Y8f6WsKUtEP69YXHP+wGFN9JKlCT7fLRGY+7CqliXZk
 DH0kDgfMRHeNGN6uMEhLQ2IdE2RuHnFKfk7MZ0jzzlf0zGlJsYLqR6exq/A0iShlKK08ZF0Ti
 aV5U2GNf1Ck+c4s7ZZ1YYuBLfJxvOk2Y6o740MoRj1LmzpL9rqG9inc9c0H22CCYndU6b2BJi
 s7BOobUCVG1QYd4KC8hqz+NzuYVWh6UHU9l+/lspPzgoGYd1qpMfEbR+eX0WpWfgqxfe7jLuP
 lxsXSUMehK0jILz6+elOMUkfM6mGgnZiGgSlDjfzF3QDrJnmEdj1ni7wHKlLQDP/BYYlal3r5
 2h685NeMYbwIe/kFlS6niAgFLq9j4S56AMPDnk0ufLBfcCQ+fm6ONRj9oGPOPgagkTlvBhdAx
 HfgHCRTF5uSM1/7WLxp0kmWXQmXzo6CCPUcweASm54l/8D0Mbqcvd99mU1XdsKMTPCiJk68E4
 /miVEUtJllulXRMEKhiXIhlNNcpoNWOjZwUOIs7VAxDntrADQfBXgKP45yEWmlQ3Byh8lAPXF
 ltTJzvg2XL5yC3FT5tKWYYdEuRwsaXxWC4oZgQUIasYjzJ+Ker17LcYgetTDSEmLIAuyV1GEi
 CC5Ttc8pC/LqrLxehS3Qq9kPA+F/VwIs2xLWTo4DlHbFClXp3FvR+CGdYkrigRbJG48ProDmA
 WygUOT/AplZqOY3f+N/XOB0Rp8Qkr9QM7TRk5xsQQ+sG3oPZwqoBXjQ1WcNCDWpWQsrPgCGZN
 tbz0RqR50yw86hT0hQXtMBeEqN6ruIEqvFhJi/pTOhAghW2ocXOiWeYIQuMV8x3yodW0An95u
 0DyaKVNzvC8qT/fWXqno3A7g55aNuWu5VSXblYLABJBMnFdXWLwDP39l9eOx5FXhQO0cSB93c
 Xj/Er1SVPdDkIlnLdTzhBugLtCgZykt63w+/ZbYTc588nkefnZf0Dv0pErSlW/nAW44zmBblb
 WqK4df0eMnxKnDxgXqCjR/gTddO4VuuoBBMTFa9GTarfQJ4SyMAQtF8LScSmLeB39GUG/gcOy
 nVLl7+c9+tJ6glB2Er5rmsrBbT7I/ZGwy4RyvYmYaPAB4Plcb9yy6nAZdeK4BjHHc7oOwGaHF
 umPXp7YGKQqIJu5QcbzO9RMh2g5xlLJ77nJICF0LwT1vCcjnfQZSD7/xyeiVy3NHkuLP59HEO
 9dUHmjSpsy3HLJQaL1aakK+Co1UHpGi70/M9KothpYNSW/dlK0hcIDeqJFYSKIEl/g0zJOxG7
 yT5hwL3Kj+wguZARJpD5KqThra2tBwTCVRvjpNqSsEjnNRXV0utdSWctTM21NL6Jj4ryzjI8C
 bInRZ+qRORexn/itJjjjiXBeAOBx3pAxjO8tTSqGuwSLedpWDKIh/aiZq+7nVoSxYT942qSY8
 gGZsGBys0+eGhu6fPEvwILdPmiBErNzCi4eqc6QCv6GOJYImaaRb5zNIHC7EqqPV8qKIuhHA5
 fG5GJ4P6anpDOrtqxlUD7e0a2SLNV4numjiRr0QfCS4vbkj07kcViOB0H5zsjRI11R9NOkn51
 gztGowNUbHB5LP9xcFaSXoR8ZsLeDvh888KD5VlZLp3qiQi3aMz1+EH9lWBWGR0SLFxp8XSP9
 QxUdHxd1oSOdY4/BGkFYfUHSW3nBcFIwHEbHSJ880du9RHAYM9bCPgjOn+Fjnir6iWx6N6ujY
 SMAp3M4cHuhJOlgl2xj2Gc2Z1UeQdX/PbxD6rh40enCtAghh6bEORCChPas8qKOMBQ7wD1Abn
 27QPffCgWHEI51cdxrJjGu4Epds0NgXG7xfp4qkdYVRKa4LV9qYeImwTXh8m6+Y/6Z7Rccv2V
 t9qZfaeRDitPgXMLWx/Wh34WuxTwcQTARXKyVgxJ0SgG/1fp0SmvZCOEFuE7+nrz7n949Bn9F
 UiuYPodqvF7BYX34PUOs3aM4bD37W5F8vQBUtcIVuJcAGFqrVBI/mbJhc0p4gTXTzTU+CahaD
 1F2YJ9+G/gxccwhM18TSId3Ut9h9ODUjeNU+kLVQDOQMSzOMMyYHCWPf79okIh3LjkxVvYK7I
 m2HygAGesVwg5SDhz6DNuWh/yCtS+6dLVVqDJUvc480sNr/u0E3StpzeCH3hwvlCFS61EHxAp
 xxBEjkxFg+hD7Jd++uICeGPxPC61XZiShyF+BOaVFzWl7DF6td2AbwRH3Sdph6RsfOW6Bf4bn
 RK8GeISUqbY605kfGENj/FXRRuDT85eTW1vh3h3929CwWaOuS+q216YhKb9ND6hDcsylGgp9U
 CxLlQDTBFl2BxidSQ5uOd+cifTZS312XfCEaqiFpQHJ4Z06q0LqFShm+jPtFh1AbpvDed9cB9
 E89/VQYB+B6zadtw+PgX9KqW7mpO1svuNHsfHUFvJ7fui5pLbJcaallbMwoGRspFpWuWF73I3
 lWWahjWPik+vx0zt9+yogooBaK6/kAx7NsBwrqFIJBVW+6oMz0TQdwvlaOFCNszSO8+cZssEA
 njPhuD2k47/plcAEMeHTMuGFTXp28t+X7BghHTjqw+4VRNg98Bzw5Hr9GM7bIpUru/46UGMVz
 rU0ZFYc2zi+P30nsaL4qfW9qub4Xh6o79JWYac4XGjCgToBvgxXlKn6GfINAvVk+KlOyZAK0B
 q77R4ORe6rj0GzDncOJQ28xmsWkA9aMXkdEw8XxATJwlRrR8k3CP3CaS7H+A==
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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79760; Package emacs. Full text available.

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


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).




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79760; Package emacs. Full text available.

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


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





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79760; Package emacs. Full text available.

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


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?




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79760; Package emacs. Full text available.

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


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





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79760; Package emacs. Full text available.

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


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





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79760; Package emacs. Full text available.

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


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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79760; Package emacs. Full text available.

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


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)))





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79760; Package emacs. Full text available.

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


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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79760; Package emacs. Full text available.

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


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





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79760; Package emacs. Full text available.

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


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?




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79760; Package emacs. Full text available.

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


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





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79760; Package emacs. Full text available.

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


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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79760; Package emacs. Full text available.

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


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





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79760; Package emacs. Full text available.

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


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?




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79760; Package emacs. Full text available.

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


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





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79760; Package emacs. Full text available.

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


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




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79760; Package emacs. Full text available.

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


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





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79760; Package emacs. Full text available.

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


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?




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79760; Package emacs. Full text available.

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


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




Acknowledgement sent to Jonas Bernoulli <jonas@HIDDEN>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs@HIDDEN. Full text available.
Report forwarded to bug-gnu-emacs@HIDDEN:
bug#79760; Package emacs. Full text available.
Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.
Last modified: Fri, 7 Nov 2025 12:30:02 UTC

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