GNU bug report logs - #61368
[PATCH] Extend go-ts-mode with support for pre-filling return statements

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: Evgeni Kolev <evgenysw@HIDDEN>; Keywords: patch; dated Wed, 8 Feb 2023 15:29:02 UTC; Maintainer for emacs is bug-gnu-emacs@HIDDEN.

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


Received: (at 61368) by debbugs.gnu.org; 18 Feb 2023 12:15:06 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Feb 18 07:15:06 2023
Received: from localhost ([127.0.0.1]:42722 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pTM7O-00027X-8e
	for submit <at> debbugs.gnu.org; Sat, 18 Feb 2023 07:15:06 -0500
Received: from mail-oi1-f174.google.com ([209.85.167.174]:35579)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <joaotavora@HIDDEN>) id 1pTM7M-00026l-PQ
 for 61368 <at> debbugs.gnu.org; Sat, 18 Feb 2023 07:15:05 -0500
Received: by mail-oi1-f174.google.com with SMTP id bp9so1349733oib.2
 for <61368 <at> debbugs.gnu.org>; Sat, 18 Feb 2023 04:15:04 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112;
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:from:to:cc:subject:date:message-id:reply-to;
 bh=w5EJA5zRniAjz5Wyb1cPrSgJCoM5U413AjH5fAql5Tc=;
 b=dqMEZzyS2LH+RK+oREuM0NSNeJ0sMX3/wrsOVinlCoGK77nKqCzS14zG5Bbg5gjV3v
 NkpD8aHmfaU4l68Y+YIbjDLiV3k4mPkE1gMkBDrBAZ/nByFAMSwypXo5fhlptc9o0vfI
 ylWfE9nvg/DI1xsFh8yJv0VpNoERonTNNCtkEcbprHB1WERWyDN2yU2Z4UWRMtXVXZXM
 +n80kuvStURAMqaenCj/SviRSMOT9w/JSH5aFaPiDZysPpIfO6f6rURrihs1ILCQROMS
 TFiUBssQoOksxgNui1ps3vkqLFojdXR7xcTMWWELY5SCLwx5ME6yBuVKC6eegSnHpP3/
 fz6A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20210112;
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
 :reply-to;
 bh=w5EJA5zRniAjz5Wyb1cPrSgJCoM5U413AjH5fAql5Tc=;
 b=Hll+2COSTIZknaG9X3gt4WoxLKEI/5uWWYLQpr7srmJPJ3xWDR2SWfvkxMPHOw38Sq
 Lh9FUVyiKCzbJSyrqhiAMJocd/m0cwk4ANHJJ+bJl4u7mmQHdY0N1s+apPe93kxrQg87
 Msy8SIL5s6x7bcxxNSbH9q+jtRnCSt3z6nzZVN5/XePPhqs3RxgwiPhVr4ct8hEkEfFY
 K96KZ4L/STCQKWibo51onqdNdc5aTu4RN5RWgxpcCm8jHG2V1Mq2ujJAT5RciOa32wyQ
 2PzUR4YkZj3BByf0oFxmxqgrbornjdz/f+rCg6sB2DlLanGjLhe26v+EdSCwLsZZVd2C
 aaeA==
X-Gm-Message-State: AO0yUKUUAUYEuowgLZwT/F1VNP7+6uKiv0MtxPkyE0ilxVXldoxYLttu
 G8X5TmQJFediVdgzaotuWPwsqgWS515Puegy2+M=
X-Google-Smtp-Source: AK7set9hnKBJABGKy5s+KYhWPUu4yjjyvYTJxFH82g5+yyLAQaVgFh5qkosh5PKFVaWOmtMGPr0Sep5XSO/NhqfYyJw=
X-Received: by 2002:a05:6808:128b:b0:37b:9a3:136f with SMTP id
 a11-20020a056808128b00b0037b09a3136fmr11801oiw.6.1676722499126; Sat, 18 Feb
 2023 04:14:59 -0800 (PST)
MIME-Version: 1.0
References: <CAMCrgaUgMx9+0Q8f_cezZ0TW_-u=mdeHf=TL=qw9wbhiS-nJ9w@HIDDEN>
 <83edr0nmq6.fsf@HIDDEN>
 <CAMCrgaUa26s2BM8EskKt5FTEyFqyioqx13abOFSMjcyShgG=Pg@HIDDEN>
 <83357flzys.fsf@HIDDEN>
 <CAMCrgaVHtNZ6vAyTfxdfXQYmE8TKQHJK-wKoc78YcF=eCygyTQ@HIDDEN>
In-Reply-To: <CAMCrgaVHtNZ6vAyTfxdfXQYmE8TKQHJK-wKoc78YcF=eCygyTQ@HIDDEN>
From: =?UTF-8?B?Sm/Do28gVMOhdm9yYQ==?= <joaotavora@HIDDEN>
Date: Sat, 18 Feb 2023 12:14:49 +0000
Message-ID: <CALDnm53sBt-o8txJ7ToZsA3BaFzYUVtnMLzPKz8wf0jKUROQPA@HIDDEN>
Subject: Re: bug#61368: [PATCH] Extend go-ts-mode with support for pre-filling
 return statements
To: Evgeni Kolev <evgenysw@HIDDEN>
Content-Type: multipart/alternative; boundary="000000000000f28c7d05f4f860df"
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 61368
Cc: Randy Taylor <dev@HIDDEN>, Eli Zaretskii <eliz@HIDDEN>,
 Theodor Thornhill <theo@HIDDEN>, 61368 <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 (-)

--000000000000f28c7d05f4f860df
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Sat, Feb 18, 2023, 11:46 Evgeni Kolev <evgenysw@HIDDEN> wrote:

> + Jo=C3=A3o, author of yasnippet.
>
> Hi, Jo=C3=A3o, I'd appreciate any suggestions you might have. I'm aiming =
to
> extend go-ts-mode with a snippet-like feature. go-ts-mode would be
> able to insert a "smart / context-aware" return statement. My question
> is - is there a way for major modes to provide yasnippet snippets? My
> understanding is the snippets are either created by each user
> individually, or distributed as a collection of snippets (e.g.
> yasnippet-snippets).


Snippets can be distributed as files, but that's not a very good way as I
see it today. One of the  reasons might be too leverage the TAB and menu
expansion of the yasnippet system. But probably you don't want this, and
snippets can also be defined programmatically, albeit not with a beautiful
language.

Are there any major modes which provide snippets
> (I wasn't able to find any in emacs' repo)?
>

That's because yasnippet is not part of the Emacs repo proper, i.e. the
"core". So adding snippets to major modes in the core would introduce into
the core a dependency on an non-core ELPA package.

Nevertheless, there are ways to conditionally provide functionality based
on whether the non-core package is detected.  A soft dependency. In my
opinion it makes sense for popular non-core packages: company,
markdown-mode, yasnippet, etc. Look at Eglot, for example.

Jo=C3=A3o

Jo=C3=A3o

--000000000000f28c7d05f4f860df
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"auto"><div><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D=
"gmail_attr">On Sat, Feb 18, 2023, 11:46 Evgeni Kolev &lt;<a href=3D"mailto=
:evgenysw@HIDDEN">evgenysw@HIDDEN</a>&gt; wrote:<br></div><blockquote=
 class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc soli=
d;padding-left:1ex">+ Jo=C3=A3o, author of yasnippet.<br>
<br>
Hi, Jo=C3=A3o, I&#39;d appreciate any suggestions you might have. I&#39;m a=
iming to<br>
extend go-ts-mode with a snippet-like feature. go-ts-mode would be<br>
able to insert a &quot;smart / context-aware&quot; return statement. My que=
stion<br>
is - is there a way for major modes to provide yasnippet snippets? My<br>
understanding is the snippets are either created by each user<br>
individually, or distributed as a collection of snippets (e.g.<br>
yasnippet-snippets).</blockquote></div></div><div dir=3D"auto"><br></div><d=
iv dir=3D"auto">Snippets can be distributed as files, but that&#39;s not a =
very good way as I see it today. One of the=C2=A0 reasons might be too leve=
rage the TAB and menu expansion of the yasnippet system. But probably you d=
on&#39;t want this, and snippets can also be defined programmatically, albe=
it not with a beautiful language.=C2=A0</div><div dir=3D"auto"><br></div><d=
iv dir=3D"auto"><div class=3D"gmail_quote"><blockquote class=3D"gmail_quote=
" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">A=
re there any major modes which provide snippets<br>
(I wasn&#39;t able to find any in emacs&#39; repo)?<br></blockquote></div><=
/div><div dir=3D"auto"><br></div><div dir=3D"auto">That&#39;s because yasni=
ppet is not part of the Emacs repo proper, i.e. the &quot;core&quot;. So ad=
ding snippets to major modes in the core would introduce into the core a de=
pendency on an non-core ELPA package.</div><div dir=3D"auto"><br></div><div=
 dir=3D"auto">Nevertheless, there are ways to conditionally provide functio=
nality based on whether the non-core package is detected.=C2=A0 A soft depe=
ndency. In my opinion it makes sense for popular non-core packages: company=
, markdown-mode, yasnippet, etc. Look at Eglot, for example.</div><div dir=
=3D"auto"><br></div><div dir=3D"auto">Jo=C3=A3o</div><div dir=3D"auto"><br>=
</div><div dir=3D"auto">Jo=C3=A3o</div></div>

--000000000000f28c7d05f4f860df--




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

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


Received: (at 61368) by debbugs.gnu.org; 18 Feb 2023 11:46:39 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Feb 18 06:46:39 2023
Received: from localhost ([127.0.0.1]:42670 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pTLfq-0001GD-VC
	for submit <at> debbugs.gnu.org; Sat, 18 Feb 2023 06:46:39 -0500
Received: from mail-qv1-f45.google.com ([209.85.219.45]:36595)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <evgenysw@HIDDEN>) id 1pTLfp-0001G1-QD
 for 61368 <at> debbugs.gnu.org; Sat, 18 Feb 2023 06:46:38 -0500
Received: by mail-qv1-f45.google.com with SMTP id jy21so1993817qvb.3
 for <61368 <at> debbugs.gnu.org>; Sat, 18 Feb 2023 03:46:37 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20210112; t=1676720792;
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:from:to:cc:subject:date:message-id:reply-to;
 bh=5XmL9JNabLr/rnvO2UC0Uf6R15gxZ6H/9f5EnuQfLD0=;
 b=ickWjYOUICsBIdoykQGjP5cGV1jsqzwHK/NoUZyZzl0YoQl9agY+f58iLA1dNqZX1p
 9b47LVinjq/YAfY9hy0vIrb9EoxThbQH07KUHjnL1NR7ihx8iUz1+jVgSkwlpevTK3hC
 /hgNJPFuykzkJlTAf6nB/8sYSLiK8aMcCI61iZkXiPRLWEsPXGSTeBRWyMw71bCRoHiI
 c+lOq6c6ThaP4RBrcFWZ4yC8SlQLa9l3quzXXMOcyxJb/yJ7gdlHND0OPbVcEPFKlW1/
 SCzpJWtH6kXn4Kd8UtSneXUAb8vUfOupUgMX5q3MM8ClLwc7bcqatX3UsztDEqDaz9Fc
 WkbA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20210112; t=1676720792;
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
 :reply-to;
 bh=5XmL9JNabLr/rnvO2UC0Uf6R15gxZ6H/9f5EnuQfLD0=;
 b=3TOkmaAOW0KhZ/G5tijJNJ3r4HL1VO6DYGJB7a4lRW4V68Cui90Ok6eapI15TESKJL
 H5b9nDtoVauCQJtT92mmtwYvMZkBs2hu1571C9kTArA1l9iyeCWQvefVHCmA8QLSUmhJ
 nUml6k8qpIWESqhCUvbKIYGs47hIOearAphZfpgmQ87bALajzz9Vat6dl29K1wlPuRXe
 IskM05orAE2iQAp+rq/tKx2vfsPechEWQzHsgbTu8pGae+NMFftOb81/E50+pZR7eLzI
 KsOjGPnM/zSWGkn5UdwBgaL5m/RG9SEimqlgEhHd0/wzDDXWDuV9Elt0jJBHCTeKZb7L
 bm4Q==
X-Gm-Message-State: AO0yUKVhBXLzXHhWiFzbNo8B+JZb96AY9uhC8OcayYyxoSdSxZFyNWTk
 uFu0ZimAOtRZj55KEBNbP2tFCQMHjW8lzdsAjgLoAMIJ0rdEngKl
X-Google-Smtp-Source: AK7set/IYJK6bLCmuQszbvxkI3viWxSa6PwzsqF8HJ6PHD3ETZZj96X9YK9v/ItVtHTZcCQcDs/TMdlL6cg84JC4rEg=
X-Received: by 2002:a0c:dd8d:0:b0:56e:bb64:9907 with SMTP id
 v13-20020a0cdd8d000000b0056ebb649907mr66221qvk.61.1676720792161; Sat, 18 Feb
 2023 03:46:32 -0800 (PST)
MIME-Version: 1.0
References: <CAMCrgaUgMx9+0Q8f_cezZ0TW_-u=mdeHf=TL=qw9wbhiS-nJ9w@HIDDEN>
 <83edr0nmq6.fsf@HIDDEN>
 <CAMCrgaUa26s2BM8EskKt5FTEyFqyioqx13abOFSMjcyShgG=Pg@HIDDEN>
 <83357flzys.fsf@HIDDEN>
In-Reply-To: <83357flzys.fsf@HIDDEN>
From: Evgeni Kolev <evgenysw@HIDDEN>
Date: Sat, 18 Feb 2023 13:46:05 +0200
Message-ID: <CAMCrgaVHtNZ6vAyTfxdfXQYmE8TKQHJK-wKoc78YcF=eCygyTQ@HIDDEN>
Subject: Re: bug#61368: [PATCH] Extend go-ts-mode with support for pre-filling
 return statements
To: Eli Zaretskii <eliz@HIDDEN>,
 =?UTF-8?B?Sm/Do28gVMOhdm9yYQ==?= <joaotavora@HIDDEN>
Content-Type: multipart/mixed; boundary="0000000000003611f805f4f7fb5f"
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 61368
Cc: dev@HIDDEN, theo@HIDDEN, 61368 <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 (-)

--0000000000003611f805f4f7fb5f
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

+ Jo=C3=A3o, author of yasnippet.

Hi, Jo=C3=A3o, I'd appreciate any suggestions you might have. I'm aiming to
extend go-ts-mode with a snippet-like feature. go-ts-mode would be
able to insert a "smart / context-aware" return statement. My question
is - is there a way for major modes to provide yasnippet snippets? My
understanding is the snippets are either created by each user
individually, or distributed as a collection of snippets (e.g.
yasnippet-snippets). Are there any major modes which provide snippets
(I wasn't able to find any in emacs' repo)?

On Thu, Feb 9, 2023 at 3:40 PM Eli Zaretskii <eliz@HIDDEN> wrote:
> > Makes sense. I am familiar with electric-pair-mode. I see that it adds
> > a hook in post-self-insert-hook. Is your suggestion to do something
> > like this:
> > - add hook in post-self-insert-hook
> > - in the hook check if RET is typed after an "return"
> > - if yes, replace the "return" with the "context-aware return
> > statement", possibly using (yas-expand-snippet)
>
> Yes, something like that.  See electric.el for more examples.
>
> Electric modes are usually minor modes that let major modes customize
> them by setting variables.  Again, I think you will find examples in
> electric.el.

The attached patch now adds a (go-ts-electric-return-mode) which, when
enabled, replaces "return RET" with a context-aware return statement.
I used sh-script.el's (sh-electric-here-document-mode) as an example.

I'm concerned this electric mode can turn out to be too
aggressive/surprising for the user - "return RET" is a common text to
be entered, I'm not sure the user would always want it to be replaced.
For example, when debugging I might insert return statements all over
the place.

Put differently, I would be more comfortable if there's a distinct
mechanism to trigger the context-aware return, for example with a
trigger key like when a snippet is inserted.

--0000000000003611f805f4f7fb5f
Content-Type: application/octet-stream; 
	name="0001-Extend-go-ts-mode-with-support-for-pre-filling-retur.patch"
Content-Disposition: attachment; 
	filename="0001-Extend-go-ts-mode-with-support-for-pre-filling-retur.patch"
Content-Transfer-Encoding: base64
Content-ID: <f_le9vhjq30>
X-Attachment-Id: f_le9vhjq30

RnJvbSAzZWZhYTcxM2FjOWZkY2I0NTA3ZTk0NWMyZGI3NzFmN2JiM2ExYmU2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBFdmdlbmkgS29sZXYgPGV2Z2VueXN3QGdtYWlsLmNvbT4KRGF0
ZTogTW9uLCA2IEZlYiAyMDIzIDA5OjQ5OjUyICswMjAwClN1YmplY3Q6IFtQQVRDSF0gRXh0ZW5k
IGdvLXRzLW1vZGUgd2l0aCBzdXBwb3J0IGZvciBwcmUtZmlsbGluZyByZXR1cm4KIHN0YXRlbWVu
dHMKCkV4dGVuZCBnby10cy1tb2RlIHRvIGluc2VydCBjb250ZXh0LWF3YXJlIHJldHVybiBzdGF0
ZW1lbnQgZm9yIHRoZQpjdXJyZW50IGZ1bmN0aW9uLiBUaGUgcmV0dXJuIHN0YXRlbWVudCBpcyBw
cmUtZmlsbGVkIHdpdGggdGhlIHplcm8KdmFsdWVzIG9mIHRoZSBmdW5jdGlvbidzIG91dHB1dCBw
YXJhbWV0ZXJzLgoKRm9yIGV4YW1wbGUsIHRoaXMgcmV0dXJuIHN0YXRlbWVudCBpcyBhZGRlZCBi
eSBFbWFjczoKYGBgCmZ1bmMgZigpIChib29sLCBpbnQsIG15U3RydWN0LCAqaW50LCBjaGFuIGJv
b2wsIGVycm9yKSB7CiAgICByZXR1cm4gZmFsc2UsIDAsIG15U3RydWN0e30sIG5pbCwgbmlsLCBl
cnIKfQpgYGAKCiogbGlzcC9wcm9nbW9kZXMvZ28tdHMtbW9kZS5lbCAoZ28tdHMtbW9kZS1lcnJv
ci16ZXJvLXZhbHVlKTogTmV3CmRlZmN1c3RvbS4gKGdvLXRzLW1vZGUtaW5zZXJ0LXJldHVybiwg
Z28tdHMtbW9kZS1yZXR1cm4sCmdvLXRzLW1vZGUtLWZ1bmN0aW9uLXJldHVybi10eXBlcywgZ28t
dHMtbW9kZS0tZnVuY3Rpb24tYXQtcG9pbnQsCmdvLXRzLW1vZGUtLXR5cGVzLWZyb20tcGFyYW0t
ZGVjbGFyYXRpb24sIGdvLXRzLW1vZGUtLXplcm8tdmFsdWUpIE5ldwpmdW5jdGlvbnMuCi0tLQog
bGlzcC9wcm9nbW9kZXMvZ28tdHMtbW9kZS5lbCB8IDEwMyArKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDEwMyBpbnNlcnRpb25zKCspCgpkaWZmIC0t
Z2l0IGEvbGlzcC9wcm9nbW9kZXMvZ28tdHMtbW9kZS5lbCBiL2xpc3AvcHJvZ21vZGVzL2dvLXRz
LW1vZGUuZWwKaW5kZXggMmEyNzgzZjQ1ZjYuLjBhMTYzNzUzZjI5IDEwMDY0NAotLS0gYS9saXNw
L3Byb2dtb2Rlcy9nby10cy1tb2RlLmVsCisrKyBiL2xpc3AvcHJvZ21vZGVzL2dvLXRzLW1vZGUu
ZWwKQEAgLTQ2LDYgKzQ2LDE1IEBAIGdvLXRzLW1vZGUtaW5kZW50LW9mZnNldAogICA6c2FmZSAn
aW50ZWdlcnAKICAgOmdyb3VwICdnbykKIAorKGRlZmN1c3RvbSBnby10cy1tb2RlLWVycm9yLXpl
cm8tdmFsdWUgICJlcnIiCisgICJUaGUgemVybyB2YWx1ZSBmb3IgdHlwZSBcImVycm9yXCIuCitU
aGUgZGVmYXVsdCBpcyBcImVyclwiLCBhc3N1bWluZyB0aGVyZSdzIGEgdmFyaWFsYmUgbmFtZWQg
XCJlcnJcIiBpbgordGhlIGN1cnJlbnQgc2NvcGUuIgorICA6dmVyc2lvbiAiMzAiCisgIDp0eXBl
ICdzdHJpbmcKKyAgOm9wdGlvbnMgJygiZXJyIiwgImZtdC5FcnJvcmYoXCJmb3JtYXQ6ICV3XCIs
IGVycikiLCAiZXJyb3JzLldyYXAoZXJyLCBcImZvcm1hdFwiKSIpCisgIDpncm91cCAnZ28pCisK
IChkZWZ2YXIgZ28tdHMtbW9kZS0tc3ludGF4LXRhYmxlCiAgIChsZXQgKCh0YWJsZSAobWFrZS1z
eW50YXgtdGFibGUpKSkKICAgICAobW9kaWZ5LXN5bnRheC1lbnRyeSA/KyAgICIuIiAgICAgIHRh
YmxlKQpAQCAtMzI4LDYgKzMzNywxMDAgQEAgZ28tdHMtbW9kZS0tY29tbWVudC1vbi1wcmV2aW91
cy1saW5lLXAKICAgICAgKDw9ICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkgcG9pbnQgKHRyZWVz
aXQtbm9kZS1lbmQgbm9kZSkpCiAgICAgIChzdHJpbmctZXF1YWwgImNvbW1lbnQiICh0cmVlc2l0
LW5vZGUtdHlwZSBub2RlKSkpKSkKIAorKGRlZmluZS1taW5vci1tb2RlIGdvLXRzLWVsZWN0cmlj
LXJldHVybi1tb2RlCisgICJNYWtlIGByZXR1cm4gUkVUJyBpbnNlcnQgYSByZXR1cm4gc3RhdGVt
ZW50IHdpdGggemVybyB2YWx1ZXMuIgorICA6bGlnaHRlciBuaWwKKyAgKGlmIGdvLXRzLWVsZWN0
cmljLXJldHVybi1tb2RlCisgICAgICAoYWRkLWhvb2sgJ3Bvc3Qtc2VsZi1pbnNlcnQtaG9vayAj
J2dvLXRzLW1vZGUtLW1heWJlLWluc2VydC1yZXR1cm4gbmlsIHQpCisgICAgKHJlbW92ZS1ob29r
ICdwb3N0LXNlbGYtaW5zZXJ0LWhvb2sgIydnby10cy1tb2RlLS1tYXliZS1pbnNlcnQtcmV0dXJu
IHQpKSkKKworKGRlZnVuIGdvLXRzLW1vZGUtLW1heWJlLWluc2VydC1yZXR1cm4gKCkKKyAgIklm
IFJFVCBpcyBlbnRlcmVkIGFmdGVyIGByZXR1cm4nLCBhZGQgemVybyB2YWx1ZXMuIgorICAod2hl
biAoYW5kIChlcXVhbCAodGhpcy1jb21tYW5kLWtleXMpIChrYmQgIlJFVCIpKQorICAgICAgICAg
ICAgIChsb29raW5nLWJhY2sgKHJ4IHdvcmQtYm91bmRhcnkgInJldHVybiIgIlxuIiAoKiBzcGFj
ZSkpIChwb3MtYm9sIDApKSkKKyAgICAoZGVsZXRlLXJlZ2lvbiAocG9pbnQpIChwb3MtZW9sIDAp
KSA7OyBkZWxldGUgdGhlIGxpbmUgYWRkZWQgYnkgUkVUCisgICAgKGRlbGV0ZS1jaGFyICgtIChs
ZW5ndGggInJldHVybiIpKSkKKyAgICAoaW5zZXJ0IChnby10cy1tb2RlLXJldHVybikpKSkKKwor
KGRlZnVuIGdvLXRzLW1vZGUtcmV0dXJuKCkKKyAgIlJldHVybiBhIHJldHVybiBzdGF0ZW1lbnQg
d2l0aCB6ZXJvIHZhbHVlcyBmb3IgZnVuY3Rpb24gYXQgcG9pbnQuCitJdCdzIGFuIGVycm9yIHRv
IGNhbGwgdGhpcyBmdW5jdGlvbiBvdXRzaWRlIG9mIGEgZnVuY3Rpb24gYm9keS4iCisgIChpbnRl
cmFjdGl2ZSkKKyAgKGxldCogKChmdW5jLW5vZGUgKGdvLXRzLW1vZGUtLWZ1bmN0aW9uLWF0LXBv
aW50KSkKKyAgICAgICAgIChib2R5LW5vZGUgKHRyZWVzaXQtbm9kZS1jaGlsZC1ieS1maWVsZC1u
YW1lIGZ1bmMtbm9kZSAiYm9keSIpKSkKKworICAgICh1bmxlc3MgKGFuZCBib2R5LW5vZGUgKDwg
KHRyZWVzaXQtbm9kZS1zdGFydCBib2R5LW5vZGUpIChwb2ludCkgKHRyZWVzaXQtbm9kZS1lbmQg
Ym9keS1ub2RlKSkpCisgICAgICAodXNlci1lcnJvciAiUG9pbnQgbXVzdCBiZSBpbnNpZGUgYSBH
byBmdW5jdGlvbiBib2R5IikpCisKKyAgICAobGV0KiAoKHR5cGVzIChnby10cy1tb2RlLS1mdW5j
dGlvbi1yZXR1cm4tdHlwZXMgZnVuYy1ub2RlKSkKKyAgICAgICAgICAgKHplcm8tdmFsdWVzICht
YXBjYXIgJ2dvLXRzLW1vZGUtLXplcm8tdmFsdWUgdHlwZXMpKQorICAgICAgICAgICAocmV0dXJu
LXN0YXRlbWVudCAoZm9ybWF0ICJyZXR1cm4gJXMiIChzdHJpbmctam9pbiB6ZXJvLXZhbHVlcyAi
LCAiKSkpKQorICAgICAgKHN0cmluZy10cmltLXJpZ2h0IHJldHVybi1zdGF0ZW1lbnQpKSkpCisK
KyhkZWZ1biBnby10cy1tb2RlLS1mdW5jdGlvbi1hdC1wb2ludCAoKQorICAiUmV0dXJuIHRoZSB0
cmVlc2l0IGZ1bmN0aW9uIG5vZGUgYXQgcG9pbnQuCitGdW5jdGlvbiwgbWV0aG9kcyBhbmQgY2xv
c3VyZXMgKGFub255bW91cyBmdW5jdGlvbnMpIGFyZSByZWNvZ25pemVkLgorSWYgcG9pbnQgaXMg
bm90IGluIGEgcmVjb2duaXplZCBmdW5jdGlvbiwgbmlsIGlzIHJldHVybmVkLiIKKyAgKGludGVy
YWN0aXZlKQorICAodHJlZXNpdC1wYXJlbnQtdW50aWwKKyAgICh0cmVlc2l0LW5vZGUtYXQgKHBv
aW50KSkKKyAgIChsYW1iZGEgKHgpCisgICAgIChtZW1iZXIgKHRyZWVzaXQtbm9kZS10eXBlIHgp
CisgICAgICAgICAgICAgJygiZnVuY19saXRlcmFsIiAiZnVuY3Rpb25fZGVjbGFyYXRpb24iICJt
ZXRob2RfZGVjbGFyYXRpb24iKSkpIHQpKQorCisoZGVmdW4gZ28tdHMtbW9kZS0tZnVuY3Rpb24t
cmV0dXJuLXR5cGVzIChmdW5jLW5vZGUpCisgICJSZXR1cm4gdGhlIHR5cGVzIG9mIHRoZSBvdXRw
dXQgdmFyaWFibGVzIG9mIEZVTkMtTk9ERS4KK1RoZSByZXN1bHQgaXMgYSBsaXN0IHdoaWNoIGNv
dWxkIGNvbnRhaW4gYSBzaW5nbGUgZWxlbWVudCAodGhlIEdvCitmdW5jdGlvbiBoYXMgb25lIHJl
dHVybiBhcmd1bWVudCksIG11bHRpcGxlIGVsZW1lbnRzIChtdWx0aXBsZSByZXR1cm4KK2FyZ3Vt
ZW50cyksIG9yIG5vIGVsZW1lbnRzIChubyByZXR1cm4gYXJndW1lbnRzKS4iCisgIChsZXQgKChy
ZXN1bHQtbm9kZSAodHJlZXNpdC1ub2RlLWNoaWxkLWJ5LWZpZWxkLW5hbWUgZnVuYy1ub2RlICJy
ZXN1bHQiKSkpCisgICAgKHBjYXNlICh0cmVlc2l0LW5vZGUtdHlwZSByZXN1bHQtbm9kZSkKKyAg
ICAgICgicGFyYW1ldGVyX2xpc3QiIDs7IG11bHRpcGxlIHJldHVybiB2YWx1ZXMKKyAgICAgICAo
bGV0ICgodHlwZXMtbmVzdGVkICh0cmVlc2l0LWluZHVjZS1zcGFyc2UtdHJlZSByZXN1bHQtbm9k
ZSAicGFyYW1ldGVyX2RlY2xhcmF0aW9uIiAjJ2dvLXRzLW1vZGUtLXR5cGVzLWZyb20tcGFyYW0t
ZGVjbGFyYXRpb24pKSkKKyAgICAgICAgIChhcHBseSAjJ2FwcGVuZCAobWFwY2FyICdjYXIgKGNk
ciB0eXBlcy1uZXN0ZWQpKSkpKQorICAgICAgKChwcmVkIG51bGwpIDs7IG5vIHJldHVybiB2YWx1
ZQorICAgICAgIG5pbCkKKyAgICAgIChfIDs7IHNpbmdsZSByZXR1cm4gdmFsdWUKKyAgICAgICAo
bGlzdCAodHJlZXNpdC1ub2RlLXRleHQgcmVzdWx0LW5vZGUgdCkpKSkpKQorCisoZGVmdW4gZ28t
dHMtbW9kZS0tdHlwZXMtZnJvbS1wYXJhbS1kZWNsYXJhdGlvbiAobm9kZSkKKyAiRXh0cmFjdCB0
aGUgR28gdHlwZShzKSBmcm9tIE5PREUuICBJdCBtdXN0IGhhdmUgdHlwZSBwYXJhbWV0ZXJfZGVj
bGFyYXRpb24uCisKK0EgcGFyYW1ldGVyX2RlY2xhcmF0aW9uIG5vZGUgY2FuIGNvbnRhaW4gc2lu
Z2xlIHZhbHVlIGAoaW50KScsIG5hbWVkCitzaW5nbGUgdmFsdWUgYChzdW0gaW50KScsIG11bHRp
cGxlcyB2YWx1ZXMgYChpbnQsIGludCknLCBvciBtdWx0aXBsZQorbmFtZWQgdmFsdWVzIGAoeCwg
eSBpbnQpJy4KKworQWxsIHRoZSBhYm92ZSBjYXNlcyBhcmUgcmVjb2duaXplZC4gIE9ubHkgdGhl
IHR5cGVzIGFyZSByZXR1cm5lZCwgZm9yCitleGFtcGxlLCB3aXRoIHBhcmFtZXRlcl9kZWNsYXJh
dGlvbiBgKHgsIHkgaW50KScsIHRoZSByZXN1bHQgaXMKK1woXCJpbnRcIiwgXCJpbnRcIikuIgor
ICAobGV0ICgodHlwZSAodHJlZXNpdC1ub2RlLWNoaWxkLWJ5LWZpZWxkLW5hbWUgbm9kZSAidHlw
ZSIpKQorICAgICAgICAoY291bnQgKGxlbmd0aCAodHJlZXNpdC1xdWVyeS1jYXB0dXJlIG5vZGUg
IihwYXJhbWV0ZXJfZGVjbGFyYXRpb24gbmFtZTooXykgQG5hbWUpIiBuaWwgbmlsIHQpKSkpCisg
ICAgKG1ha2UtbGlzdCAoaWYgKHplcm9wIGNvdW50KSAxIGNvdW50KSAodHJlZXNpdC1ub2RlLXRl
eHQgdHlwZSB0KSkpKQorCisoZGVmdW4gZ28tdHMtbW9kZS0temVyby12YWx1ZSAoZ28tdHlwZSkK
KyAgIlJldHVybiB0aGUgR28gemVybyB2YWx1ZSBmb3IgR08tVFlQRS4KK0ZvciB0eXBlIFwiZXJy
b3JcIiwgdGhlIHplcm8gdmFsdWUgaXMgZGV0ZXJtaW5lZCBieSB2YXJpYWJsZQorYGdvLXRzLW1v
ZGUtZXJyb3ItemVyby12YWx1ZScuCisKK1RoaXMgZnVuY3Rpb24gYXNzdW1lcyBhcmJpdHJhcnkg
dHlwZXMgYXJlIEdvIHN0cnVjdHMsIGZvciBleGFtcGxlIGZvcgorR08tVFlQRSBcInBlcnNvblwi
LCB0aGUgcmV0dW4gdmFsdWUgaXMgXCJwZXJzb257fVwiLiIKKyAgKHBjYXNlIGdvLXR5cGUKKyAg
ICAoKG9yICJpbnQiICAiaW50OCIgICJpbnQxNiIgICJpbnQzMiIgICJpbnQ2NCIpICIwIikKKyAg
ICAoKG9yICJ1aW50IiAidWludDgiICJ1aW50MTYiICJ1aW50MzIiICJ1aW50NjQiKSAiMCIpCisg
ICAgKCJib29sIiAiZmFsc2UiKQorICAgICgic3RyaW5nIiAiXCJcIiIpCisgICAgKChvciAidWlu
dHB0ciIgImJ5dGUiICJydW5lIikgIjAiKQorICAgICgob3IgImZsb2F0MzIiICJmbG9hdDY0Iikg
IjAuMCIpCisgICAgKChvciAiY29tcGxleDY0IiAiY29tcGxleDEyOCIpICJjb21wbGV4KDAsIDAp
IikKKyAgICAoKHByZWQgKHN0cmluZy1wcmVmaXgtcCAibWFwIikpICJuaWwiKQorICAgICgocHJl
ZCAoc3RyaW5nLXByZWZpeC1wICIqIikpICJuaWwiKQorICAgICgocHJlZCAoc3RyaW5nLXByZWZp
eC1wICJbXSIpKSAibmlsIikKKyAgICAoKHByZWQgKHN0cmluZy1wcmVmaXgtcCAiY2hhbiIpKSAi
bmlsIikKKyAgICAoKHByZWQgKHN0cmluZy1wcmVmaXgtcCAiZnVuYyIpKSAibmlsIikKKyAgICAo
ImVycm9yIiBnby10cy1tb2RlLWVycm9yLXplcm8tdmFsdWUpCisgICAgKChyeCBib2wgKDErIChv
ciBhbHBoYW51bWVyaWMgIl8iICIuIikpIGVvbCkgKGNvbmNhdCBnby10eXBlICJ7fSIpKQorICAg
IChfICh1c2VyLWVycm9yICJVbmtub3duIEdvIHR5cGUgXCIlc1wiIiBnby10eXBlKSkpKQorCiA7
OyBnby5tb2Qgc3VwcG9ydC4KIAogKGRlZnZhciBnby1tb2QtdHMtbW9kZS0tc3ludGF4LXRhYmxl
Ci0tIAoyLjM5LjEKCg==
--0000000000003611f805f4f7fb5f--




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

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


Received: (at 61368) by debbugs.gnu.org; 9 Feb 2023 13:40:35 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Feb 09 08:40:35 2023
Received: from localhost ([127.0.0.1]:57938 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pQ7AA-0004Zx-S0
	for submit <at> debbugs.gnu.org; Thu, 09 Feb 2023 08:40:35 -0500
Received: from eggs.gnu.org ([209.51.188.92]:39630)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1pQ7A8-0004Zb-KA
 for 61368 <at> debbugs.gnu.org; Thu, 09 Feb 2023 08:40:33 -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 1pQ7A0-0003d5-6W; Thu, 09 Feb 2023 08:40:26 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=wPbpxefi8evV2B+m6L+EqIsMK9GlyUb9s770kYvV+0g=; b=pLeaweVTTLdt
 bo2tQLugi6yXGHFfB89VKtjqVXHTuMAuSlySygNttYJa3Clu/hDuOHQmWcLQ5RAELEaDs81E/bbPU
 5edQWeWtQcDkYsXSDV5vCbu/zAkb1d9wuKkyaeyxEv8O3FOcon4gM1k//7ohMD0olHHAtLanBbjMZ
 x/vuRrNDXSr3TZz1gk5v82+rX4sDQRXAHBL3Fp2lpufB1cH8pPPM5ctT7y2aZLOl+MGFO0zAjZ9di
 n9/zuA2nky3rxMqtp29J3kU/TMM64cLaiLXjIGodAclZGfizsN4oBqynOMPB/p8OY4Qc1foTQksCI
 d0l9TUPDHVVWbaHegcoK2w==;
Received: from [87.69.77.57] (helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1pQ79h-0003XN-HF; Thu, 09 Feb 2023 08:40:23 -0500
Date: Thu, 09 Feb 2023 15:39:55 +0200
Message-Id: <83357flzys.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Evgeni Kolev <evgenysw@HIDDEN>
In-Reply-To: <CAMCrgaUa26s2BM8EskKt5FTEyFqyioqx13abOFSMjcyShgG=Pg@HIDDEN>
 (message from Evgeni Kolev on Thu, 9 Feb 2023 13:47:01 +0200)
Subject: Re: bug#61368: [PATCH] Extend go-ts-mode with support for pre-filling
 return statements
References: <CAMCrgaUgMx9+0Q8f_cezZ0TW_-u=mdeHf=TL=qw9wbhiS-nJ9w@HIDDEN>
 <83edr0nmq6.fsf@HIDDEN>
 <CAMCrgaUa26s2BM8EskKt5FTEyFqyioqx13abOFSMjcyShgG=Pg@HIDDEN>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 61368
Cc: dev@HIDDEN, theo@HIDDEN, 61368 <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: Evgeni Kolev <evgenysw@HIDDEN>
> Date: Thu, 9 Feb 2023 13:47:01 +0200
> Cc: 61368 <at> debbugs.gnu.org, dev@HIDDEN, theo@HIDDEN
> 
> > Instead of a command bound to a special key sequences, would it
> > perhaps make more sense to add some kind of "electric" behavior to
> > "normal" keys?  Like perhaps typing RET after inserting "return" would
> > add the "context-aware return statement"?  Then the user could turn on
> > the electric behavior with some minor mode, and get this behavior,
> > while avoiding the need to dedicate a key sequence.
> >
> > WDYT?
> 
> Makes sense. I am familiar with electric-pair-mode. I see that it adds
> a hook in post-self-insert-hook. Is your suggestion to do something
> like this:
> - add hook in post-self-insert-hook
> - in the hook check if RET is typed after an "return"
> - if yes, replace the "return" with the "context-aware return
> statement", possibly using (yas-expand-snippet)

Yes, something like that.  See electric.el for more examples.

> I'm wondering what customization options would make sense for users -
> changing the electric trigger from "return" RET to "ret" RET for
> example.
> 
> Is there another major mode which can be used as an example for such
> electric behavior?

Electric modes are usually minor modes that let major modes customize
them by setting variables.  Again, I think you will find examples in
electric.el.




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

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


Received: (at 61368) by debbugs.gnu.org; 9 Feb 2023 11:47:36 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Feb 09 06:47:36 2023
Received: from localhost ([127.0.0.1]:57728 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pQ5Op-0005EE-Js
	for submit <at> debbugs.gnu.org; Thu, 09 Feb 2023 06:47:36 -0500
Received: from mail-qt1-f174.google.com ([209.85.160.174]:39639)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <evgenysw@HIDDEN>) id 1pQ5On-0005DX-Ar
 for 61368 <at> debbugs.gnu.org; Thu, 09 Feb 2023 06:47:33 -0500
Received: by mail-qt1-f174.google.com with SMTP id g18so1503590qtb.6
 for <61368 <at> debbugs.gnu.org>; Thu, 09 Feb 2023 03:47:33 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112;
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:from:to:cc:subject:date:message-id:reply-to;
 bh=xabf3RZYrrJ64Lb5TAyVS9s/yGdReZQfPJmmo2NHjSU=;
 b=i7X7DOfV+1x3t0pLmd7+du8tPv0Y+56iTr35zuo+2ZALQemzuo6JWotM9xrEhnITpC
 qBDImXbtNm4ZcYQof8GXa2s1NM/k/Wz9QzsAx1iOK8PhKmA3bvY/U/cDaHkytXgzs38F
 AD7SFF43wya9vkVzSAfEc/qKrpkRzW194SXVEe+I/qAVZ6z/98l8PKAJJRHI6V6wjc1G
 DPqd96vH6XkbwbItKpARI5SvF1nhZK7JJgINvsYExRU+WD4TZ4NV9F97/YEyh6LMqim+
 3Gelg99I1iy3/K6qFrW0Tjg0WruVjtDPtVUJgJtZNZ7CG43y706qGvJFN9BhRMk2h7rs
 w3dg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20210112;
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
 :reply-to;
 bh=xabf3RZYrrJ64Lb5TAyVS9s/yGdReZQfPJmmo2NHjSU=;
 b=lOrgZ7px9yzpg0kxTeMCXf5Kq7/iMFgiUtR/NMv/q6Y5HcWvudv+RSybONjECVXDv/
 2dVw/ZaXR6jxk4y0EV20NIDWqvpCU1w6b4wfmzMHDGSCYzG4Phy9IVUPUBL1Hh8EdmCR
 KE/grqbjoIueepOV1p0m5ybAp96DlbD7MHAqVQmt+3Kmac8RAuva+tPars/PAUI1QqZt
 HOWVs8juevgYcHXMFxscgq72lanKHR/RCuY0k338jDrr9DcTxORjaqctOfWtmwwQmTum
 y/EwHVdHO/sURLr7utCSXgLneP1lBmu/YAQek98ASnE46Q620Xpr3mwgKLs5GfTDZY7S
 RCOw==
X-Gm-Message-State: AO0yUKVvyEBB5AkIS6NCL1UfzIfNnHfApdJ61Y4jGbUaD24175Z7zYU1
 RFiD27BzWDAEyUPiFZnZn6sQCZpYzjHoYFRaCOE=
X-Google-Smtp-Source: AK7set+BQeSDvVgVlPieSrYKk+JqbwoDrcGq4LOivWypT44Sosa5SkVDbQ4jvV9GssbjL+kAwDhMYJKYY3RW5CbNH5g=
X-Received: by 2002:a05:622a:1007:b0:3ac:c2b8:13 with SMTP id
 d7-20020a05622a100700b003acc2b80013mr1868008qte.332.1675943247646; Thu, 09
 Feb 2023 03:47:27 -0800 (PST)
MIME-Version: 1.0
References: <CAMCrgaUgMx9+0Q8f_cezZ0TW_-u=mdeHf=TL=qw9wbhiS-nJ9w@HIDDEN>
 <83edr0nmq6.fsf@HIDDEN>
In-Reply-To: <83edr0nmq6.fsf@HIDDEN>
From: Evgeni Kolev <evgenysw@HIDDEN>
Date: Thu, 9 Feb 2023 13:47:01 +0200
Message-ID: <CAMCrgaUa26s2BM8EskKt5FTEyFqyioqx13abOFSMjcyShgG=Pg@HIDDEN>
Subject: Re: bug#61368: [PATCH] Extend go-ts-mode with support for pre-filling
 return statements
To: Eli Zaretskii <eliz@HIDDEN>
Content-Type: text/plain; charset="UTF-8"
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 61368
Cc: dev@HIDDEN, theo@HIDDEN, 61368 <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 (-)

On Wed, Feb 8, 2023 at 9:20 PM Theodor Thornhill <theo@HIDDEN> wrote:
>
> Evgeni Kolev <evgenysw@HIDDEN> writes:
>
> >
> > I'm open to suggestions about how to best expose this functionality to
> > the user. I think a snippet makes the most sense, but there's no
> > standard way for major modes to expose snippets as far as I'm aware.
> > It's possible to tweak C-c C-r to call (yas-expand-snippet) if
> > available, otherwise call (insert). In general, I don't feel strong
> > about the C-c C-r key binding, but I didn't have a better idea.
> >
>
> How about using tempo or skeleton as fallbacks when yasnippet isn't
> installed?

I've never used either of these packages. Is there a consensus which
one is preferred for major modes to use?

>
> Personally I think this should be a contrib to gopls as a code action so
> that others can benefit from it.  Is upstreaming it to gopls too hard?
>

Great suggestion! I did a quick research and this seems to already be
implemented in gopls here:
https://github.com/golang/tools/blob/master/gopls/internal/lsp/source/completion/statements.go#L179

To use it you have to enable "usePlaceholders", reference:
https://github.com/golang/tools/blob/master/gopls/doc/settings.md

Do you think it makes sense go-ts-mode to also have its own
implementation? I think it does - similar to how both gopls (eglot)
and tree sitter provide Imenu candidates. I personally use tree
sitter's Imenu (setq eglot-stay-out-of '(imenu)) because I find it
advantageous to avoid the RPC call to an external process.

Also having a tree sitter implementation is more flexible. For
example, I'm planning to have multiple yasnippet snippets for
different scenarios (wrap the error, don't wrap, return a new error,
etc.). The gopls implementation is ridgid - it only works if there's
an "err" variable in scope, and the trigger is one of these three "if
e", "if er" and "if err".

On Wed, Feb 8, 2023 at 6:30 PM Eli Zaretskii <eliz@HIDDEN> wrote:
> > The command go-ts-mode-insert-return is experimentally bound to a key
> > C-c C-r ("r" as return statement). It's a user error to run C-c C-r
> > outside of a function body.
>
> Instead of a command bound to a special key sequences, would it
> perhaps make more sense to add some kind of "electric" behavior to
> "normal" keys?  Like perhaps typing RET after inserting "return" would
> add the "context-aware return statement"?  Then the user could turn on
> the electric behavior with some minor mode, and get this behavior,
> while avoiding the need to dedicate a key sequence.
>
> WDYT?

Makes sense. I am familiar with electric-pair-mode. I see that it adds
a hook in post-self-insert-hook. Is your suggestion to do something
like this:
- add hook in post-self-insert-hook
- in the hook check if RET is typed after an "return"
- if yes, replace the "return" with the "context-aware return
statement", possibly using (yas-expand-snippet)

I'm wondering what customization options would make sense for users -
changing the electric trigger from "return" RET to "ret" RET for
example.

Is there another major mode which can be used as an example for such
electric behavior?




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

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


Received: (at submit) by debbugs.gnu.org; 8 Feb 2023 19:20:38 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Feb 08 14:20:38 2023
Received: from localhost ([127.0.0.1]:56701 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pPpzi-0001A1-Bv
	for submit <at> debbugs.gnu.org; Wed, 08 Feb 2023 14:20:38 -0500
Received: from lists.gnu.org ([209.51.188.17]:48136)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <theo@HIDDEN>) id 1pPpze-00019q-Ak
 for submit <at> debbugs.gnu.org; Wed, 08 Feb 2023 14:20:36 -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 <theo@HIDDEN>) id 1pPpze-0003Ve-4M
 for bug-gnu-emacs@HIDDEN; Wed, 08 Feb 2023 14:20:34 -0500
Received: from out-165.mta1.migadu.com ([2001:41d0:203:375::a5])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <theo@HIDDEN>) id 1pPpza-0004yW-Hm
 for bug-gnu-emacs@HIDDEN; Wed, 08 Feb 2023 14:20:33 -0500
X-Report-Abuse: Please report any abuse attempt to abuse@HIDDEN and
 include these headers.
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=thornhill.no;
 s=key1; t=1675884028;
 h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
 in-reply-to:in-reply-to:references:references;
 bh=5Xnl/zb6YScx0+0e9VRnmchqHJz5WXBIyKXkUrMgR2c=;
 b=PgQsIUoy+zSeX5IXGr4T5Tq3Uokj8w2x85qsN/3KmKukkFhxcP3Nu6MH8u59EAEPFoqqUp
 RsOVckDwYxw0d2UuffvQrZnMGlFhicJDj3wlHNYY9gipyRz7MvQgCaDEvKUSAuvVxhRghz
 iHfaY04I9Eq4w9GO3fCifXnobpypM6nBxui77US4Mxd0ItQ++CcbC+LAbghu65UYhrojMS
 gh0Ci8dHmdcm67Ak8RnUS4Ug015H0UGLKBF19g6urWS3JfkpAyfWcbCI9d59SUXQfdssDb
 KXb5KLIeD6BhK7Ml/ZDMNFDzLeGAL9iqlAmYYejEoz6cm9RYNit/TH4M4tzBYg==
From: Theodor Thornhill <theo@HIDDEN>
To: Evgeni Kolev <evgenysw@HIDDEN>, bug-gnu-emacs@HIDDEN
Subject: Re: [PATCH] Extend go-ts-mode with support for pre-filling return
 statements
In-Reply-To: <CAMCrgaUgMx9+0Q8f_cezZ0TW_-u=mdeHf=TL=qw9wbhiS-nJ9w@HIDDEN>
References: <CAMCrgaUgMx9+0Q8f_cezZ0TW_-u=mdeHf=TL=qw9wbhiS-nJ9w@HIDDEN>
Date: Wed, 08 Feb 2023 20:20:27 +0100
Message-ID: <87o7q46k1w.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain
X-Migadu-Flow: FLOW_OUT
Received-SPF: pass client-ip=2001:41d0:203:375::a5;
 envelope-from=theo@HIDDEN; helo=out-165.mta1.migadu.com
X-Spam_score_int: -20
X-Spam_score: -2.1
X-Spam_bar: --
X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,
 DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001,
 SPF_PASS=-0.001 autolearn=ham autolearn_force=no
X-Spam_action: no action
X-Spam-Score: -1.4 (-)
X-Debbugs-Envelope-To: submit
Cc: Randy Taylor <dev@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: -2.4 (--)

Evgeni Kolev <evgenysw@HIDDEN> writes:

> [CC Randy, author of go-ts-mode, Theo, who asked to keep the patches coming :)]
>

:-)

> This is a patch which adds support to go-ts-mode to insert
> context-aware return statements for the current function. The return
> statements are pre-filled with the Go zero values of the output
> parameters.
>
> For example, all these return statements are inserted by M-x
> go-ts-mode-insert-return:
>
> ```
> func f() (x, y, z int) {
>     return 0, 0, 0
> }
>
> func exotic() (bool, int, myStruct, *int, chan bool, error) {
>     return false, 0, myStruct{}, nil, nil, err
> }
>
> func closure(numbers []int) {
>     sort.Slice(numbers, func(i, j int) bool {
>         return false
>     })
> }
> ```

Cool!

>
> The command go-ts-mode-insert-return is experimentally bound to a key
> C-c C-r ("r" as return statement). It's a user error to run C-c C-r
> outside of a function body.
>
> Customization: when the output params contain "error" the pre-filled
> text is "err". A customization variable is added to allow the user to
> pick a different value, for example they might pick `fmt.Errorf("...:
> %w", err)` which will result in error wrapping:
> ```
> func f() (int, error) {
>     return 0, fmt.Errorf("...: %w", err)
> }
> ```
>
> Personally, I'll use yasnippet instead of C-c C-r. Something like this:
> ```
>  # -*- mode: snippet -*-
>  # name: ret
>  # key: ret
>  # type: command
>  # --
>
>  (let ((go-ts-mode-error-zero-value "${1:fmt.Errorf(\"${2:format}:
> %w\", err)}"))
>    (yas-expand-snippet (go-ts-mode-return)))
> ```
>
> I'm open to suggestions about how to best expose this functionality to
> the user. I think a snippet makes the most sense, but there's no
> standard way for major modes to expose snippets as far as I'm aware.
> It's possible to tweak C-c C-r to call (yas-expand-snippet) if
> available, otherwise call (insert). In general, I don't feel strong
> about the C-c C-r key binding, but I didn't have a better idea.
>

How about using tempo or skeleton as fallbacks when yasnippet isn't
installed? 

> Known bug: this example does not work, fails with error "Unknown Go
> type "[int]int"":
> ```
> func notOk() (int, map[int]int) {
> }
> ```
> The root cause is an issue with the tree-sitter-go parser. The bug has
> been reported here
> https://github.com/tree-sitter/tree-sitter-go/issues/107
>
> Known limitation: unfamiliar types are assumed to be structs. This
> assumption does not work for aliased types. For example:
> ```
> type MyInt = int
>
> func alias() MyInt {
>     return MyInt{}
> }
> ```
> Above the correct return statement is "return MyInt(0)". My assumption
> is that type aliases of primitive types are rare in Go codebases. In
> these rare cases, the user is expected to replace "MyInt{}" with
> "MyInt(0)", or not use C-c C-r at all.
>
> Inspired by: this emacs conf talk "08:21 Intelligent templates"
> https://emacsconf.org/2022/talks/treesitter/
>
> Feedback is more than welcome! In particular:
> - how to best expose the functionality - key binding, snippet (how
> exactly?), something else?
>

Personally I think this should be a contrib to gopls as a code action so
that others can benefit from it.  Is upstreaming it to gopls too hard?


Theo




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

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


Received: (at 61368) by debbugs.gnu.org; 8 Feb 2023 16:30:34 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Feb 08 11:30:33 2023
Received: from localhost ([127.0.0.1]:56481 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pPnL7-00053h-Ip
	for submit <at> debbugs.gnu.org; Wed, 08 Feb 2023 11:30:33 -0500
Received: from eggs.gnu.org ([209.51.188.92]:37030)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1pPnL3-00053O-Nn
 for 61368 <at> debbugs.gnu.org; Wed, 08 Feb 2023 11:30:32 -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 1pPnKx-0001Tl-OP; Wed, 08 Feb 2023 11:30:23 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=1fIsDX8gvJyxcR8Pdhg95blb4yEHM0Geu7LqdkYiyD8=; b=ppni7rf5ADHP
 GVdizalj0Baaq8SoKOryD/kjnEOp9Yzd/zFN3siwPp4yHZgcpJVnxK3sWv58moyJ0C3cXDOt+8YwT
 4ayoIU3KcmVfD11j4VeuF8J9E2g+1WkcqUKwOxt1YyFM7RB6Ey51ktNMdvjMV3PgNvbdv9GFY0Afx
 kk4pKtJit0rlB3QtmQGBI3Noqj2f4SRX0ozD9awjwCQEbhlWcxOSNcVBkzZz1fuKKw0my82OvN4/2
 eXjIfbcbisyP1g96zw4zYd3HkXc3+dTEf/9Mjw1Fd+dPTRteM9iCrLCiyuUdmXswJbkMuGPkat/C5
 qHq8PgaiCOsTuJM/2XBRCg==;
Received: from [87.69.77.57] (helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1pPnKx-0007fX-7y; Wed, 08 Feb 2023 11:30:23 -0500
Date: Wed, 08 Feb 2023 18:30:41 +0200
Message-Id: <83edr0nmq6.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Evgeni Kolev <evgenysw@HIDDEN>
In-Reply-To: <CAMCrgaUgMx9+0Q8f_cezZ0TW_-u=mdeHf=TL=qw9wbhiS-nJ9w@HIDDEN>
 (message from Evgeni Kolev on Wed, 8 Feb 2023 17:27:58 +0200)
Subject: Re: bug#61368: [PATCH] Extend go-ts-mode with support for pre-filling
 return statements
References: <CAMCrgaUgMx9+0Q8f_cezZ0TW_-u=mdeHf=TL=qw9wbhiS-nJ9w@HIDDEN>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 61368
Cc: dev@HIDDEN, theo@HIDDEN, 61368 <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 (---)

> Cc: Randy Taylor <dev@HIDDEN>, Theodor Thornhill <theo@HIDDEN>
> From: Evgeni Kolev <evgenysw@HIDDEN>
> Date: Wed, 8 Feb 2023 17:27:58 +0200
> 
> This is a patch which adds support to go-ts-mode to insert
> context-aware return statements for the current function. The return
> statements are pre-filled with the Go zero values of the output
> parameters.
> 
> For example, all these return statements are inserted by M-x
> go-ts-mode-insert-return:
> 
> ```
> func f() (x, y, z int) {
>     return 0, 0, 0
> }
> 
> func exotic() (bool, int, myStruct, *int, chan bool, error) {
>     return false, 0, myStruct{}, nil, nil, err
> }
> 
> func closure(numbers []int) {
>     sort.Slice(numbers, func(i, j int) bool {
>         return false
>     })
> }
> ```
> 
> The command go-ts-mode-insert-return is experimentally bound to a key
> C-c C-r ("r" as return statement). It's a user error to run C-c C-r
> outside of a function body.

Instead of a command bound to a special key sequences, would it
perhaps make more sense to add some kind of "electric" behavior to
"normal" keys?  Like perhaps typing RET after inserting "return" would
add the "context-aware return statement"?  Then the user could turn on
the electric behavior with some minor mode, and get this behavior,
while avoiding the need to dedicate a key sequence.

WDYT?




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

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


Received: (at submit) by debbugs.gnu.org; 8 Feb 2023 15:28:39 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Feb 08 10:28:39 2023
Received: from localhost ([127.0.0.1]:56344 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pPmNC-0003Cg-JC
	for submit <at> debbugs.gnu.org; Wed, 08 Feb 2023 10:28:38 -0500
Received: from lists.gnu.org ([209.51.188.17]:39906)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <evgenysw@HIDDEN>) id 1pPmN9-0003CX-K2
 for submit <at> debbugs.gnu.org; Wed, 08 Feb 2023 10:28:36 -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 <evgenysw@HIDDEN>)
 id 1pPmN4-0000FZ-3V
 for bug-gnu-emacs@HIDDEN; Wed, 08 Feb 2023 10:28:33 -0500
Received: from mail-qt1-x829.google.com ([2607:f8b0:4864:20::829])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.90_1) (envelope-from <evgenysw@HIDDEN>)
 id 1pPmN1-0004GK-Ea
 for bug-gnu-emacs@HIDDEN; Wed, 08 Feb 2023 10:28:29 -0500
Received: by mail-qt1-x829.google.com with SMTP id q13so2706423qtx.2
 for <bug-gnu-emacs@HIDDEN>; Wed, 08 Feb 2023 07:28:25 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112;
 h=cc:to:subject:message-id:date:from:mime-version:from:to:cc:subject
 :date:message-id:reply-to;
 bh=znGEijb3n5b8BZkPQMvx6xxjW917Px/eqPIvdWTyIkI=;
 b=UPbe/+c9vihICLEGVko/teBzjWl5s9XJKKjUb7C80R0X+ntggbYCharNMmIr8+I34J
 C6zzQYIprIlF1emmcRzwsha77WXw84lteyfAQzx+ozDWJfzIUhzA3S88HCEVZF+WOhLd
 8H3bk7mcvb4Wu6k5ydD9xcydp+TIjBGtCEmAoNc85DuyXWvPW8Oq6HLxmE9d41+ZDzOr
 iZdEP8BA3d2r9t8GP8B0JAGg3ybR2qP914zW3E9U2cwZcv0bDOxcsBu5+ZTsvmtt+flT
 CiQNv1xcEvq4XsB2n6V7iPy56h62YReW+OJDTwlHKa1oAU4DAeLEPl+0mv0Ibs8GhniF
 O4PA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20210112;
 h=cc:to:subject:message-id:date:from:mime-version:x-gm-message-state
 :from:to:cc:subject:date:message-id:reply-to;
 bh=znGEijb3n5b8BZkPQMvx6xxjW917Px/eqPIvdWTyIkI=;
 b=ZffZp/B4ZSM9oSDWVPl1LK3mNpsiGguLQdB92qFRH4t3bRQBMAAKMKIy6sCPSD+1hk
 GLUf/qt8s8wJg8TKE4wi3TmEcsgKkCMGOW5a+GHeBmzieV12jrdEgscbbjpm3kv1wdJu
 BadF4m5+s/OuM0qZ8AlnUEmowjd2Rg3VZPIsAnqFUYt/3oY/OvG9x1gugIg+wwGBCEGH
 bBFwE1GVFr5Acs3vexTzAA9eLzpvTzRL/x/MifKhK98cLY2ijWyqB9yqaFAyR8hiaeyk
 8IDKwz8w15/0oYw4jisSOLrj87pscWZYAYZ4bvdJRGb1gYKJXuyEEdvpVgHtLcs0MBRb
 GEPA==
X-Gm-Message-State: AO0yUKU+vXKYKgYXcZGaqpoAWfgllEFSAeqUncEcfp7TYfrHFgH8gCyg
 PrtZIRq4B2BBi6Qr+6Apd8ibdaNYYuFy81Gp90VYg8JB0n5uBw==
X-Google-Smtp-Source: AK7set8Q5ZZuxREwxjnzGdWIvHyOSqkmmgykNibVSOLXVK3EfKi6zdMrzacUQhq4XHD3RXvd2hB6cFZ8CCCwaE3p3R4=
X-Received: by 2002:a05:622a:b:b0:3b9:bd60:2679 with SMTP id
 x11-20020a05622a000b00b003b9bd602679mr1589425qtw.381.1675870104544; Wed, 08
 Feb 2023 07:28:24 -0800 (PST)
MIME-Version: 1.0
From: Evgeni Kolev <evgenysw@HIDDEN>
Date: Wed, 8 Feb 2023 17:27:58 +0200
Message-ID: <CAMCrgaUgMx9+0Q8f_cezZ0TW_-u=mdeHf=TL=qw9wbhiS-nJ9w@HIDDEN>
Subject: [PATCH] Extend go-ts-mode with support for pre-filling return
 statements
To: bug-gnu-emacs@HIDDEN
Content-Type: multipart/mixed; boundary="00000000000045bbbd05f431ead0"
Received-SPF: pass client-ip=2607:f8b0:4864:20::829;
 envelope-from=evgenysw@HIDDEN; helo=mail-qt1-x829.google.com
X-Spam_score_int: -20
X-Spam_score: -2.1
X-Spam_bar: --
X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,
 DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001,
 RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001,
 SPF_PASS=-0.001 autolearn=ham autolearn_force=no
X-Spam_action: no action
X-Spam-Score: -1.3 (-)
X-Debbugs-Envelope-To: submit
Cc: Randy Taylor <dev@HIDDEN>, Theodor Thornhill <theo@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: -2.3 (--)

--00000000000045bbbd05f431ead0
Content-Type: text/plain; charset="UTF-8"

[CC Randy, author of go-ts-mode, Theo, who asked to keep the patches coming :)]

This is a patch which adds support to go-ts-mode to insert
context-aware return statements for the current function. The return
statements are pre-filled with the Go zero values of the output
parameters.

For example, all these return statements are inserted by M-x
go-ts-mode-insert-return:

```
func f() (x, y, z int) {
    return 0, 0, 0
}

func exotic() (bool, int, myStruct, *int, chan bool, error) {
    return false, 0, myStruct{}, nil, nil, err
}

func closure(numbers []int) {
    sort.Slice(numbers, func(i, j int) bool {
        return false
    })
}
```

The command go-ts-mode-insert-return is experimentally bound to a key
C-c C-r ("r" as return statement). It's a user error to run C-c C-r
outside of a function body.

Customization: when the output params contain "error" the pre-filled
text is "err". A customization variable is added to allow the user to
pick a different value, for example they might pick `fmt.Errorf("...:
%w", err)` which will result in error wrapping:
```
func f() (int, error) {
    return 0, fmt.Errorf("...: %w", err)
}
```

Personally, I'll use yasnippet instead of C-c C-r. Something like this:
```
 # -*- mode: snippet -*-
 # name: ret
 # key: ret
 # type: command
 # --

 (let ((go-ts-mode-error-zero-value "${1:fmt.Errorf(\"${2:format}:
%w\", err)}"))
   (yas-expand-snippet (go-ts-mode-return)))
```

I'm open to suggestions about how to best expose this functionality to
the user. I think a snippet makes the most sense, but there's no
standard way for major modes to expose snippets as far as I'm aware.
It's possible to tweak C-c C-r to call (yas-expand-snippet) if
available, otherwise call (insert). In general, I don't feel strong
about the C-c C-r key binding, but I didn't have a better idea.

Known bug: this example does not work, fails with error "Unknown Go
type "[int]int"":
```
func notOk() (int, map[int]int) {
}
```
The root cause is an issue with the tree-sitter-go parser. The bug has
been reported here
https://github.com/tree-sitter/tree-sitter-go/issues/107

Known limitation: unfamiliar types are assumed to be structs. This
assumption does not work for aliased types. For example:
```
type MyInt = int

func alias() MyInt {
    return MyInt{}
}
```
Above the correct return statement is "return MyInt(0)". My assumption
is that type aliases of primitive types are rare in Go codebases. In
these rare cases, the user is expected to replace "MyInt{}" with
"MyInt(0)", or not use C-c C-r at all.

Inspired by: this emacs conf talk "08:21 Intelligent templates"
https://emacsconf.org/2022/talks/treesitter/

Feedback is more than welcome! In particular:
- how to best expose the functionality - key binding, snippet (how
exactly?), something else?

Evgeni

--00000000000045bbbd05f431ead0
Content-Type: application/x-patch; 
	name="0001-Extend-go-ts-mode-with-support-for-pre-filling-retur.patch"
Content-Disposition: attachment; 
	filename="0001-Extend-go-ts-mode-with-support-for-pre-filling-retur.patch"
Content-Transfer-Encoding: base64
Content-ID: <f_ldvr1ev90>
X-Attachment-Id: f_ldvr1ev90

RnJvbSBjNTIxMjJjOTgzNzU5OWQ2MzFhODdiNjI1NWNkZjE4OTQ2NTI5MDc4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBFdmdlbmkgS29sZXYgPGV2Z2VueXN3QGdtYWlsLmNvbT4KRGF0
ZTogTW9uLCA2IEZlYiAyMDIzIDA5OjQ5OjUyICswMjAwClN1YmplY3Q6IFtQQVRDSF0gRXh0ZW5k
IGdvLXRzLW1vZGUgd2l0aCBzdXBwb3J0IGZvciBwcmUtZmlsbGluZyByZXR1cm4KIHN0YXRlbWVu
dHMKCkV4dGVuZCBnby10cy1tb2RlIHRvIGluc2VydCBjb250ZXh0LWF3YXJlIHJldHVybiBzdGF0
ZW1lbnQgZm9yIHRoZQpjdXJyZW50IGZ1bmN0aW9uLiBUaGUgcmV0dXJuIHN0YXRlbWVudCBpcyBw
cmUtZmlsbGVkIHdpdGggdGhlIHplcm8KdmFsdWVzIG9mIHRoZSBmdW5jdGlvbidzIG91dHB1dCBw
YXJhbWV0ZXJzLgoKRm9yIGV4YW1wbGUsIHRoaXMgcmV0dXJuIHN0YXRlbWVudCBpcyBhZGRlZCBi
eSBFbWFjczoKYGBgCmZ1bmMgZigpIChib29sLCBpbnQsIG15U3RydWN0LCAqaW50LCBjaGFuIGJv
b2wsIGVycm9yKSB7CiAgICByZXR1cm4gZmFsc2UsIDAsIG15U3RydWN0e30sIG5pbCwgbmlsLCBl
cnIKfQpgYGAKCiogbGlzcC9wcm9nbW9kZXMvZ28tdHMtbW9kZS5lbCAoZ28tdHMtbW9kZS1lcnJv
ci16ZXJvLXZhbHVlKTogTmV3CmRlZmN1c3RvbS4gKGdvLXRzLW1vZGUtaW5zZXJ0LXJldHVybiwg
Z28tdHMtbW9kZS1yZXR1cm4sCmdvLXRzLW1vZGUtLWZ1bmN0aW9uLXJldHVybi10eXBlcywgZ28t
dHMtbW9kZS0tZnVuY3Rpb24tYXQtcG9pbnQsCmdvLXRzLW1vZGUtLXR5cGVzLWZyb20tcGFyYW0t
ZGVjbGFyYXRpb24sIGdvLXRzLW1vZGUtLXplcm8tdmFsdWUpIE5ldwpmdW5jdGlvbnMuCi0tLQog
bGlzcC9wcm9nbW9kZXMvZ28tdHMtbW9kZS5lbCB8IDEwMiArKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrLQogMSBmaWxlIGNoYW5nZWQsIDEwMSBpbnNlcnRpb25zKCspLCAxIGRlbGV0
aW9uKC0pCgpkaWZmIC0tZ2l0IGEvbGlzcC9wcm9nbW9kZXMvZ28tdHMtbW9kZS5lbCBiL2xpc3Av
cHJvZ21vZGVzL2dvLXRzLW1vZGUuZWwKaW5kZXggMmEyNzgzZjQ1ZjYuLjdmZmRjYTE2MDI5IDEw
MDY0NAotLS0gYS9saXNwL3Byb2dtb2Rlcy9nby10cy1tb2RlLmVsCisrKyBiL2xpc3AvcHJvZ21v
ZGVzL2dvLXRzLW1vZGUuZWwKQEAgLTQ2LDYgKzQ2LDE1IEBAIGdvLXRzLW1vZGUtaW5kZW50LW9m
ZnNldAogICA6c2FmZSAnaW50ZWdlcnAKICAgOmdyb3VwICdnbykKIAorKGRlZmN1c3RvbSBnby10
cy1tb2RlLWVycm9yLXplcm8tdmFsdWUgICJlcnIiCisgICJUaGUgemVybyB2YWx1ZSBmb3IgdHlw
ZSBcImVycm9yXCIuCitUaGUgZGVmYXVsdCBpcyBcImVyclwiLCBhc3N1bWluZyB0aGVyZSdzIGEg
dmFyaWFsYmUgbmFtZWQgXCJlcnJcIiBpbgordGhlIGN1cnJlbnQgc2NvcGUuIgorICA6dmVyc2lv
biAiMzAiCisgIDp0eXBlICdzdHJpbmcKKyAgOm9wdGlvbnMgJygiZXJyIiwgImZtdC5FcnJvcmYo
XCJmb3JtYXQ6ICV3XCIsIGVycikiLCAiZXJyb3JzLldyYXAoZXJyLCBcImZvcm1hdFwiKSIpCisg
IDpncm91cCAnZ28pCisKIChkZWZ2YXIgZ28tdHMtbW9kZS0tc3ludGF4LXRhYmxlCiAgIChsZXQg
KCh0YWJsZSAobWFrZS1zeW50YXgtdGFibGUpKSkKICAgICAobW9kaWZ5LXN5bnRheC1lbnRyeSA/
KyAgICIuIiAgICAgIHRhYmxlKQpAQCAtMTk5LDcgKzIwOCw4IEBAIGdvLXRzLW1vZGUtLWZvbnQt
bG9jay1zZXR0aW5ncwogKGRlZnZhci1rZXltYXAgZ28tdHMtbW9kZS1tYXAKICAgOmRvYyAiS2V5
bWFwIHVzZWQgaW4gR28gbW9kZSwgcG93ZXJlZCBieSB0cmVlLXNpdHRlciIKICAgOnBhcmVudCBw
cm9nLW1vZGUtbWFwCi0gICJDLWMgQy1kIiAjJ2dvLXRzLW1vZGUtZG9jc3RyaW5nKQorICAiQy1j
IEMtZCIgIydnby10cy1tb2RlLWRvY3N0cmluZworICAiQy1jIEMtciIgIydnby10cy1tb2RlLWlu
c2VydC1yZXR1cm4pCiAKIDs7OyMjI2F1dG9sb2FkCiAoZGVmaW5lLWRlcml2ZWQtbW9kZSBnby10
cy1tb2RlIHByb2ctbW9kZSAiR28iCkBAIC0zMjgsNiArMzM4LDk2IEBAIGdvLXRzLW1vZGUtLWNv
bW1lbnQtb24tcHJldmlvdXMtbGluZS1wCiAgICAgICg8PSAodHJlZXNpdC1ub2RlLXN0YXJ0IG5v
ZGUpIHBvaW50ICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpKQogICAgICAoc3RyaW5nLWVxdWFsICJj
b21tZW50IiAodHJlZXNpdC1ub2RlLXR5cGUgbm9kZSkpKSkpCiAKKyhkZWZ1biBnby10cy1tb2Rl
LWluc2VydC1yZXR1cm4oKQorICAiSW5zZXJ0IGEgcmV0dXJuIHN0YXRlbWVudCB3aXRoIHplcm8g
dmFsdWVzIGZvciBmdW5jdGlvbiBhdCBwb2ludC4KK0l0J3MgYW4gZXJyb3IgdG8gY2FsbCB0aGlz
IGZ1bmN0aW9uIG91dHNpZGUgb2YgYSBmdW5jdGlvbiBib2R5LiIKKyAgKGludGVyYWN0aXZlKQor
ICAobGV0ICgocmV0dXJuLXN0YXRlbWVudCAoZ28tdHMtbW9kZS1yZXR1cm4pKSkKKyAgICAobGV0
ICgoc3RhcnQgKHBvaW50KSkpCisgICAgICAoYmFjay10by1pbmRlbnRhdGlvbikKKyAgICAgIChp
bnNlcnQgcmV0dXJuLXN0YXRlbWVudCkKKyAgICAgIChuZXdsaW5lLWFuZC1pbmRlbnQpCisgICAg
ICAoaW5kZW50LXJlZ2lvbiBzdGFydCAocG9pbnQpKSkpKQorCisoZGVmdW4gZ28tdHMtbW9kZS1y
ZXR1cm4oKQorICAiUmV0dXJuIGEgcmV0dXJuIHN0YXRlbWVudCB3aXRoIHplcm8gdmFsdWVzIGZv
ciBmdW5jdGlvbiBhdCBwb2ludC4KK0l0J3MgYW4gZXJyb3IgdG8gY2FsbCB0aGlzIGZ1bmN0aW9u
IG91dHNpZGUgb2YgYSBmdW5jdGlvbiBib2R5LiIKKyAgKGludGVyYWN0aXZlKQorICAobGV0KiAo
KGZ1bmMtbm9kZSAoZ28tdHMtbW9kZS0tZnVuY3Rpb24tYXQtcG9pbnQpKQorICAgICAgICAgKGJv
ZHktbm9kZSAodHJlZXNpdC1ub2RlLWNoaWxkLWJ5LWZpZWxkLW5hbWUgZnVuYy1ub2RlICJib2R5
IikpKQorCisgICAgKHVubGVzcyAoYW5kIGJvZHktbm9kZSAoPCAodHJlZXNpdC1ub2RlLXN0YXJ0
IGJvZHktbm9kZSkgKHBvaW50KSAodHJlZXNpdC1ub2RlLWVuZCBib2R5LW5vZGUpKSkKKyAgICAg
ICh1c2VyLWVycm9yICJQb2ludCBtdXN0IGJlIGluc2lkZSBhIEdvIGZ1bmN0aW9uIGJvZHkiKSkK
KworICAgIChsZXQqICgodHlwZXMgKGdvLXRzLW1vZGUtLWZ1bmN0aW9uLXJldHVybi10eXBlcyBm
dW5jLW5vZGUpKQorICAgICAgICAgICAoemVyby12YWx1ZXMgKG1hcGNhciAnZ28tdHMtbW9kZS0t
emVyby12YWx1ZSB0eXBlcykpCisgICAgICAgICAgIChyZXR1cm4tc3RhdGVtZW50IChmb3JtYXQg
InJldHVybiAlcyIgKHN0cmluZy1qb2luIHplcm8tdmFsdWVzICIsICIpKSkpCisgICAgICAoc3Ry
aW5nLXRyaW0tcmlnaHQgcmV0dXJuLXN0YXRlbWVudCkpKSkKKworKGRlZnVuIGdvLXRzLW1vZGUt
LWZ1bmN0aW9uLWF0LXBvaW50ICgpCisgICJSZXR1cm4gdGhlIHRyZWVzaXQgZnVuY3Rpb24gbm9k
ZSBhdCBwb2ludC4KK0Z1bmN0aW9uLCBtZXRob2RzIGFuZCBjbG9zdXJlcyAoYW5vbnltb3VzIGZ1
bmN0aW9ucykgYXJlIHJlY29nbml6ZWQuCitJZiBwb2ludCBpcyBub3QgaW4gYSByZWNvZ25pemVk
IGZ1bmN0aW9uLCBuaWwgaXMgcmV0dXJuZWQuIgorICAoaW50ZXJhY3RpdmUpCisgICh0cmVlc2l0
LXBhcmVudC11bnRpbAorICAgKHRyZWVzaXQtbm9kZS1hdCAocG9pbnQpKQorICAgKGxhbWJkYSAo
eCkKKyAgICAgKG1lbWJlciAodHJlZXNpdC1ub2RlLXR5cGUgeCkKKyAgICAgICAgICAgICAnKCJm
dW5jX2xpdGVyYWwiICJmdW5jdGlvbl9kZWNsYXJhdGlvbiIgIm1ldGhvZF9kZWNsYXJhdGlvbiIp
KSkgdCkpCisKKyhkZWZ1biBnby10cy1tb2RlLS1mdW5jdGlvbi1yZXR1cm4tdHlwZXMgKGZ1bmMt
bm9kZSkKKyAgIlJldHVybiB0aGUgdHlwZXMgb2YgdGhlIG91dHB1dCB2YXJpYWJsZXMgb2YgRlVO
Qy1OT0RFLgorVGhlIHJlc3VsdCBpcyBhIGxpc3Qgd2hpY2ggY291bGQgY29udGFpbiBhIHNpbmds
ZSBlbGVtZW50ICh0aGUgR28KK2Z1bmN0aW9uIGhhcyBvbmUgcmV0dXJuIGFyZ3VtZW50KSwgbXVs
dGlwbGUgZWxlbWVudHMgKG11bHRpcGxlIHJldHVybgorYXJndW1lbnRzKSwgb3Igbm8gZWxlbWVu
dHMgKG5vIHJldHVybiBhcmd1bWVudHMpLiIKKyAgKGxldCAoKHJlc3VsdC1ub2RlICh0cmVlc2l0
LW5vZGUtY2hpbGQtYnktZmllbGQtbmFtZSBmdW5jLW5vZGUgInJlc3VsdCIpKSkKKyAgICAocGNh
c2UgKHRyZWVzaXQtbm9kZS10eXBlIHJlc3VsdC1ub2RlKQorICAgICAgKCJwYXJhbWV0ZXJfbGlz
dCIgOzsgbXVsdGlwbGUgcmV0dXJuIHZhbHVlcworICAgICAgIChsZXQgKCh0eXBlcy1uZXN0ZWQg
KHRyZWVzaXQtaW5kdWNlLXNwYXJzZS10cmVlIHJlc3VsdC1ub2RlICJwYXJhbWV0ZXJfZGVjbGFy
YXRpb24iICMnZ28tdHMtbW9kZS0tdHlwZXMtZnJvbS1wYXJhbS1kZWNsYXJhdGlvbikpKQorICAg
ICAgICAgKGFwcGx5ICMnYXBwZW5kIChtYXBjYXIgJ2NhciAoY2RyIHR5cGVzLW5lc3RlZCkpKSkp
CisgICAgICAoKHByZWQgbnVsbCkgOzsgbm8gcmV0dXJuIHZhbHVlCisgICAgICAgbmlsKQorICAg
ICAgKF8gOzsgc2luZ2xlIHJldHVybiB2YWx1ZQorICAgICAgIChsaXN0ICh0cmVlc2l0LW5vZGUt
dGV4dCByZXN1bHQtbm9kZSB0KSkpKSkpCisKKyhkZWZ1biBnby10cy1tb2RlLS10eXBlcy1mcm9t
LXBhcmFtLWRlY2xhcmF0aW9uIChub2RlKQorICJFeHRyYWN0IHRoZSBHbyB0eXBlKHMpIGZyb20g
Tk9ERS4gIEl0IG11c3QgaGF2ZSB0eXBlIHBhcmFtZXRlcl9kZWNsYXJhdGlvbi4KKworQSBwYXJh
bWV0ZXJfZGVjbGFyYXRpb24gbm9kZSBjYW4gY29udGFpbiBzaW5nbGUgdmFsdWUgYChpbnQpJywg
bmFtZWQKK3NpbmdsZSB2YWx1ZSBgKHN1bSBpbnQpJywgbXVsdGlwbGVzIHZhbHVlcyBgKGludCwg
aW50KScsIG9yIG11bHRpcGxlCituYW1lZCB2YWx1ZXMgYCh4LCB5IGludCknLgorCitBbGwgdGhl
IGFib3ZlIGNhc2VzIGFyZSByZWNvZ25pemVkLiAgT25seSB0aGUgdHlwZXMgYXJlIHJldHVybmVk
LCBmb3IKK2V4YW1wbGUsIHdpdGggcGFyYW1ldGVyX2RlY2xhcmF0aW9uIGAoeCwgeSBpbnQpJywg
dGhlIHJlc3VsdCBpcworXChcImludFwiLCBcImludFwiKS4iCisgIChsZXQgKCh0eXBlICh0cmVl
c2l0LW5vZGUtY2hpbGQtYnktZmllbGQtbmFtZSBub2RlICJ0eXBlIikpCisgICAgICAgIChjb3Vu
dCAobGVuZ3RoICh0cmVlc2l0LXF1ZXJ5LWNhcHR1cmUgbm9kZSAiKHBhcmFtZXRlcl9kZWNsYXJh
dGlvbiBuYW1lOihfKSBAbmFtZSkiIG5pbCBuaWwgdCkpKSkKKyAgICAobWFrZS1saXN0IChpZiAo
emVyb3AgY291bnQpIDEgY291bnQpICh0cmVlc2l0LW5vZGUtdGV4dCB0eXBlIHQpKSkpCisKKyhk
ZWZ1biBnby10cy1tb2RlLS16ZXJvLXZhbHVlIChnby10eXBlKQorICAiUmV0dXJuIHRoZSBHbyB6
ZXJvIHZhbHVlIGZvciBHTy1UWVBFLgorRm9yIHR5cGUgXCJlcnJvclwiLCB0aGUgemVybyB2YWx1
ZSBpcyBkZXRlcm1pbmVkIGJ5IHZhcmlhYmxlCitgZ28tdHMtbW9kZS1lcnJvci16ZXJvLXZhbHVl
Jy4KKworVGhpcyBmdW5jdGlvbiBhc3N1bWVzIGFyYml0cmFyeSB0eXBlcyBhcmUgR28gc3RydWN0
cywgZm9yIGV4YW1wbGUgZm9yCitHTy1UWVBFIFwicGVyc29uXCIsIHRoZSByZXR1biB2YWx1ZSBp
cyBcInBlcnNvbnt9XCIuIgorICAocGNhc2UgZ28tdHlwZQorICAgICgob3IgImludCIgICJpbnQ4
IiAgImludDE2IiAgImludDMyIiAgImludDY0IikgIjAiKQorICAgICgob3IgInVpbnQiICJ1aW50
OCIgInVpbnQxNiIgInVpbnQzMiIgInVpbnQ2NCIpICIwIikKKyAgICAoImJvb2wiICJmYWxzZSIp
CisgICAgKCJzdHJpbmciICJcIlwiIikKKyAgICAoKG9yICJ1aW50cHRyIiAiYnl0ZSIgInJ1bmUi
KSAiMCIpCisgICAgKChvciAiZmxvYXQzMiIgImZsb2F0NjQiKSAiMC4wIikKKyAgICAoKG9yICJj
b21wbGV4NjQiICJjb21wbGV4MTI4IikgImNvbXBsZXgoMCwgMCkiKQorICAgICgocHJlZCAoc3Ry
aW5nLXByZWZpeC1wICJtYXAiKSkgIm5pbCIpCisgICAgKChwcmVkIChzdHJpbmctcHJlZml4LXAg
IioiKSkgIm5pbCIpCisgICAgKChwcmVkIChzdHJpbmctcHJlZml4LXAgIltdIikpICJuaWwiKQor
ICAgICgocHJlZCAoc3RyaW5nLXByZWZpeC1wICJjaGFuIikpICJuaWwiKQorICAgICgocHJlZCAo
c3RyaW5nLXByZWZpeC1wICJmdW5jIikpICJuaWwiKQorICAgICgiZXJyb3IiIGdvLXRzLW1vZGUt
ZXJyb3ItemVyby12YWx1ZSkKKyAgICAoKHJ4IGJvbCAoMSsgKG9yIGFscGhhbnVtZXJpYyAiXyIg
Ii4iKSkgZW9sKSAoY29uY2F0IGdvLXR5cGUgInt9IikpCisgICAgKF8gKHVzZXItZXJyb3IgIlVu
a25vd24gR28gdHlwZSBcIiVzXCIiIGdvLXR5cGUpKSkpCisKIDs7IGdvLm1vZCBzdXBwb3J0Lgog
CiAoZGVmdmFyIGdvLW1vZC10cy1tb2RlLS1zeW50YXgtdGFibGUKLS0gCjIuMzkuMQoK
--00000000000045bbbd05f431ead0--




Acknowledgement sent to Evgeni Kolev <evgenysw@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#61368; 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: Sat, 18 Feb 2023 12:30:02 UTC

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