Received: (at 81150) by debbugs.gnu.org; 1 Jun 2026 11:27:25 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Jun 01 07:27:25 2026 Received: from localhost ([127.0.0.1]:41159 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wU0nl-000831-Bg for submit <at> debbugs.gnu.org; Mon, 01 Jun 2026 07:27:25 -0400 Received: from mail-oi1-x236.google.com ([2607:f8b0:4864:20::236]:55545) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <joaotavora@HIDDEN>) id 1wU0ni-00082l-FU for 81150 <at> debbugs.gnu.org; Mon, 01 Jun 2026 07:27:23 -0400 Received: by mail-oi1-x236.google.com with SMTP id 5614622812f47-4855562f32eso3547609b6e.2 for <81150 <at> debbugs.gnu.org>; Mon, 01 Jun 2026 04:27:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1780313241; cv=none; d=google.com; s=arc-20240605; b=P2TvoUzQqJ0X86hSDvzzR+sd/jkHLw4qg3jhcKLjT4yuyDXbcdFl4RBT/U3jjEGnKg ed7HsT96K1vP4ql8r1LvzjyMz9NZZfI+o9UjFNTUzi2A4bU/b66HRhu5Tyy/uUHRCLJj FtF586aIjviZ7HTO8BSnktzhTnhZicB8ojjG6ozpP2p+fTDLIS0rOiFobxKm1iXc1ZYj wtSGne9SdOp72a0+ZG1lIAdcwuLFtpSqyESOPTL53aJ68J77M80uc4MwIrlRDUsh3bvW VUTUGmflchq0sYpSlHzO0Sp2JX5Qe92A94WbfziYkV9c6ErlEVmTOTIE7DumzPIbuRri kX1Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=SHRGCZOmhGPMz2AYUeDSY8V+Dpy6zLBlCcADH7CqxEU=; fh=BjX9xndj3iKw10jkQLJMq6rxMOy7aA7/6YaRowGb+/Y=; b=drPxm3E29fADlNNK8ba4VLAYgsgcDLIcmXmn1rrlk4SmC503YkxV7+Xwb3fio2x+5U l44vdP4kUKodVQS3VS655lr5wuFpVxyzAb1Qx1Nwve7xauoE0B2sCLp7Pa8X0Rc9PD8z qGVPwOSOCy6ebxt9FAug0dws0cNoJUeGsd0QWspVjWtBF53OBN/LQ+13lhvM73l9KcG2 ex777aqWiY88CkX8zeuT/HNEI7wjAGVmLRpcU2zoKYvK0kHx9p3OFag8e2izqzGXfiQh VWhj04OlmV0rIN513R/flK+6CMBWDwvc4hjmYT4BfJuUbv0R4cVI49J0YKM5tBX+365Z FlUg==; darn=debbugs.gnu.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780313241; x=1780918041; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=SHRGCZOmhGPMz2AYUeDSY8V+Dpy6zLBlCcADH7CqxEU=; b=I6cSIUHmPtMicxRqm7cMlStkG9NpMOghn6mUZOJ5F6t2ftcnvizx9R7g/0ZOVP1R49 MjVjrJ+B98wQmhPp3Txgq2j032YcK8rY1YqWxt1jZFOmg2oFjoiw4Y+PT2HPpJwGoojl 5axjIn9FAIqZyBgYcO5u3N3n7O/0YkrkE526WTu9BuB9yTWFHBubGkY/bH+T1QRuB36c NzFXtpNod2q4hikjqaLVlSpTxtj9iJcMZZ66WNDLRrKlnHlq+6nfPH+LGD26z8q5WzES X1RaVxWuUNx3OeehO+Qbz+lpjLJddmEe9kr0g3kFP840UkdAyVMRly01cFNqVCbFOo6H 2wvA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780313241; x=1780918041; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=SHRGCZOmhGPMz2AYUeDSY8V+Dpy6zLBlCcADH7CqxEU=; b=hcyXdes3P8Q/GqEKqexlzg5oJXhTUsKwXZ8wmC2mW7aFl0SwL1teJhsbdSS1t+fcXh iOQQWAjD8HL2zu6PwLd02NSjgPGzx1vYY1lFUim2INuZj4STHxDDRiSOm1c+PnWMbVWJ xJXeN3d63d14p13idnkcMgqKX3/uJFDrs3JgiJjNgjaPdKcTUEot2t6PSM9KRy/0PUxm k4Z9+7vJOAO2zfBPD9PWGpAF1KSr7yv3l2i+lJU0ll8On60WoKW0Pcp0wcyS9st9q1GK zaVoT5I1CPNYHnF889yHdj262jiVxWsDBqJpzkEkm05go2M+T4TFNJSY6iGsf6SZWT63 h4sQ== X-Forwarded-Encrypted: i=1; AFNElJ9GOtKZMzrth2xDFDji7BYJsIg2a9PzxxAE/9kn3vi4Eh8s9p4huGHaBEQiiemlxEhjKXpsvg==@debbugs.gnu.org X-Gm-Message-State: AOJu0YxHlNCQsfnRu+yF0z3XeVmLS7sF4DkhrLfA/vhuvCUBPGmuUhrv 99D82HMlbcXYMNPFjfhUUjAD8M/Lxctz/FumZ1TyqyXg46zYE2LTUX+XXsvHI8rgzoEJqr3vUXW N3Lpx1YpPTxj1btYA60wjZhmVgL4xyIg= X-Gm-Gg: Acq92OHMTBR2z8mYyOvjTN941uNktJG4G1xP1JUNrzkAk4p+858AveL44WjUib//YYW xKhfYnofQ7tpgvzdFBkyQRAg5KMm8FL8yd8KRp/lQ7LiEcRju5bneJpO0caLLC1yS8Z+VtelTyE B3aYpmTr6uHabbbY16hhs/F4VSCzgDi85O0/ArYCgelNP3IhvBjubYic269rnXXRa1xJlNC3FPq 9fWs9q3wM4eMmKVFpK4Hklg9n22eMtGtkxOLbFAB+IyH1SPXN/RSoGdBvSRxSXL9Iwvi8/ac5wC 35+4SVdIkzOldmKapPHi3yZqWgh6PSrp0HnVPigjvroYMpyGqY6tbsTCnL2+beiVLeIlmT1MKRW qVg== X-Received: by 2002:a05:6808:181c:b0:485:6129:1112 with SMTP id 5614622812f47-485fb4342fbmr5432620b6e.29.1780313241515; Mon, 01 Jun 2026 04:27:21 -0700 (PDT) MIME-Version: 1.0 References: <87qzmqtts1.fsf@HIDDEN> In-Reply-To: <87qzmqtts1.fsf@HIDDEN> From: =?UTF-8?B?Sm/Do28gVMOhdm9yYQ==?= <joaotavora@HIDDEN> Date: Mon, 1 Jun 2026 12:27:09 +0100 X-Gm-Features: AVHnY4JaU2u2jOkJVB5mLiN0ORR0yYw0uR7WzjBNPLfzWFZ_VwQXkaCUY0rN-34 Message-ID: <CALDnm51nPbR93-D6nEh+LZuDKhxzWHAJBWA_baE6cCuHL-0p9w@HIDDEN> Subject: Re: markdown-ts-mode and markdown-ts-view-mode demoted on the release branch To: Sean Whitton <spwhitton@HIDDEN> Content-Type: multipart/alternative; boundary="000000000000597e9d06532f7a90" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 81150 Cc: Rahul Martim Juliato <rahuljuliato@HIDDEN>, =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN>, 81150 <at> debbugs.gnu.org, emacs-devel <emacs-devel@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: 0.0 (/) --000000000000597e9d06532f7a90 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Shame, but I can understand. I'll do the corresponding fixes. But can people still use it in Eglot in Emacs 31 at all? Jo=C3=A3o On Mon, Jun 1, 2026, 11:54 Sean Whitton <spwhitton@HIDDEN> wrote: > Eli and I have discussed it and decided to disable markdown-ts-mode and > markdown-ts-view-mode on the release branch. > They'll still be included in the release but marked as experimental, and > not advertised with autoloads or in NEWS. > > We've ended up doing feature development on the release branch which is > not right. If you have minimal fixes you can still install them on > emacs-31, but otherwise let's get these modes ready for Emacs 32 on > master. > > This will be disappointing, and I apologise for that. Eli and I are > trying to balance the importance of getting a pretest out soon versus > the inclusion of any particular new features. > > Jo=C3=A3o, I edited EGLOT-NEWS but I am not sure I did in a way that's > compatible with how you do releases, possibly that needs fixing. > Let me know if I can do anything. > > -- > Sean Whitton > --000000000000597e9d06532f7a90 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"auto"><div>Shame, but I can understand. I'll do the corresp= onding fixes. But can people still use it in Eglot in Emacs 31 at all?</div= ><div><br></div><div data-smartmail=3D"gmail_signature">Jo=C3=A3o</div></di= v><br><div class=3D"gmail_quote gmail_quote_container"><div dir=3D"ltr" cla= ss=3D"gmail_attr">On Mon, Jun 1, 2026, 11:54 Sean Whitton <<a href=3D"ma= ilto:spwhitton@HIDDEN">spwhitton@HIDDEN</a>> wrote:<br><= /div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;bo= rder-left:1px solid rgb(204,204,204);padding-left:1ex">Eli and I have discu= ssed it and decided to disable markdown-ts-mode and<br> markdown-ts-view-mode on the release branch.<br> They'll still be included in the release but marked as experimental, an= d<br> not advertised with autoloads or in NEWS.<br> <br> We've ended up doing feature development on the release branch which is= <br> not right.=C2=A0 If you have minimal fixes you can still install them on<br= > emacs-31, but otherwise let's get these modes ready for Emacs 32 on<br> master.<br> <br> This will be disappointing, and I apologise for that.=C2=A0 Eli and I are<b= r> trying to balance the importance of getting a pretest out soon versus<br> the inclusion of any particular new features.<br> <br> Jo=C3=A3o, I edited EGLOT-NEWS but I am not sure I did in a way that's<= br> compatible with how you do releases, possibly that needs fixing.<br> Let me know if I can do anything.<br> <br> -- <br> Sean Whitton<br> </blockquote></div> --000000000000597e9d06532f7a90--
bug-gnu-emacs@HIDDEN:bug#81150; Package emacs.
Full text available.Received: (at 81150) by debbugs.gnu.org; 1 Jun 2026 11:25:14 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Jun 01 07:25:13 2026 Received: from localhost ([127.0.0.1]:41135 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wU0lc-0007w1-Po for submit <at> debbugs.gnu.org; Mon, 01 Jun 2026 07:25:13 -0400 Received: from mail-oo1-xc2c.google.com ([2607:f8b0:4864:20::c2c]:60610) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <joaotavora@HIDDEN>) id 1wU0la-0007sx-5U for 81150 <at> debbugs.gnu.org; Mon, 01 Jun 2026 07:25:11 -0400 Received: by mail-oo1-xc2c.google.com with SMTP id 006d021491bc7-69d8f70cb0cso5825642eaf.0 for <81150 <at> debbugs.gnu.org>; Mon, 01 Jun 2026 04:25:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1780313109; cv=none; d=google.com; s=arc-20240605; b=KhtnYWJCvnyDHK4IbqKWQkUZ1XCYV8cSzVQmtmczTfGT0Nzd/3tDTDDouXa4FbrtWp WZFHGHjHNRvPg+qwj/4/BVl8p1vYegp3z9WKCG6AGjYVUieGu1kh+sJ2RK9n6L5i0R5Y /n1qzOVpJH09rcPknGWXvFUo4hbPLa8fDSc25f1aRlLeUgEXOGqDcOZwCZRYHlOIF0W9 288w0EX/V9uI7HJiz8dyeLTw2pH12tCrS4vJ8WXO+Ck2auYSa/4NaN7i9s6X4mgRAYUi QzpksHho05jTrYtVT8JMoPyfpgSHQs2x0Y6E5+E/LHmODRxvgQgue4gys57rl7l93y7M NXdw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=JrN+2d0xT+F0XP1fI+dZpT+7oINRf2Wf+PYoVvdUnxQ=; fh=IO2uHze6l+z2qIW3h8GlqT3eAwiN8tUkAotLkybb7cc=; b=SiPBdAS90v02o+OwlAEQgoFUPQTSGX4X6dwYYPwK3vAMhulQFp0jm/HFcB2wo+ZZUG kMbJgA0Kdq0SwjTuG+4ntTnEEd8jaddZO+CTarSz/2lfwKi2KCYCb9Qcdfb38Q58WSn/ 90uJ7VS2JQQYrwItAjoIgbtOi+Au26WNOnUWz9rNTl0CHQh/NoP1JpVVviU8qylFa7sB 1D0p3qDGpSS3N7R1fXqd+tXpIrIA0GgOjO+SIfdnZ6LimHjwLkum65v7ywBsU49HTmK7 HV0rur6ziHOxSQTZ9oQBHUKVL47xcSSFskZWcFGD0RkV5G5YQJW8M7QU0KO2DMu/E1Mn rK3A==; darn=debbugs.gnu.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780313109; x=1780917909; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=JrN+2d0xT+F0XP1fI+dZpT+7oINRf2Wf+PYoVvdUnxQ=; b=ECBshWjzJGeWd3ow0oE1i0BRlcgMauch2zG8dut+k6ZnTLfp7vkvs9n98cF/03lxOY z5cE5DYcM/NR8aPaqXlDp395cj40X0SG2+vQR00oU+bNWWqlWrjM5Pl+ZAydvdk2V+9r W7pJ1ayFVvNcM6YIswUWDa1SZpZzGdwwlU06Q3hAHBllasTpVXbZcdXiZNPh4d3nyHux FrxDhFJdFDrQ+xHe77aEjtlex5WnSgjwrhkLNH4oqX9YXe4rQbe5BJeGRqsmzACcorFn eyYMj6KhtLVaSmTuyAHWgcPUlaJ/DjJtLpmIZu20KhjAc6r1ELYA2qLYKZDD1QqQ/GAo hvAg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780313109; x=1780917909; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=JrN+2d0xT+F0XP1fI+dZpT+7oINRf2Wf+PYoVvdUnxQ=; b=hL1GM+/ncdKdv+TOYcwVQMCNELgtxFKxp+t+J/PS/ypLmwCK5EYkdHSXWLS9lnLOMI eDOokJ3a4mxWpvt8PBoBztzpu2zz7W4YejWXweyaejEoi6HntBDkVvbxMJ0K5LXoCirj xRfHUkumT5lC0ruIBv6JWBYPlwRASU3j3JuPAj5I0OUVK1dQK/i8Endr0Yh24ruRxJjl oF8nsVTMa8jPAJ+VTNaN1q49qW0nahcFRnzBU7iOGenNYKzcIe47FDuAHLk9jFNnaNEs vTcBRCYnz2e9RX5iVqJKD71kM2VKG3anasRwreYqw7Lk9jGknQa4zJESrYr51jVjrjYk K4KA== X-Forwarded-Encrypted: i=1; AFNElJ8GieiZs/v9n4KJfq48ASwT5s+aM6qPxUhfeSk9llmzqY/EuTUw9LW4egsW2x6YETgdBfEO9g==@debbugs.gnu.org X-Gm-Message-State: AOJu0YwdMKbIg2AQRc6JnNHOTl1zUIIUgfDUZYzYFsB2wREKTWrvKXmk A4duKe27A2gVlDbrEqJn8VEncYAb66lnju48+q50oSUJyHu4HBDLLH86xFMmBba+OE1PhrHQSA7 rRvmq1zcdPUKgM/XIgD3AEMV+kme0qVc= X-Gm-Gg: Acq92OFdOX8B0V+8+MlLno3n65QrtMNTIO8cKpqyWh8/NdCZFBUv1NpjXS3IxUNamUV K4UIXk/rtQ/KqPsTIICA4QmI4KQ1ZGuXBBlF4bMiKy9oom+UOfM5ZW2uw+8DMRSXjvZZ0Zab80M IgpMtRHIljJg6gD0Y4XocrOwHXVLXXdgxCrUQBZRyfXTFa9Mk8X9gZUax40oJKg/MbuinfZMW0O ORaWZYJmo1vWCSlm7RE/WAMTzq4iKcFZnkp4dKMXTpj5fVJSe1xearbaLCHzzIE5ZsftgnM2N5z Z+Z1nsE0QwthWdX5gdRswm55n+TsewKP+XRpStcs+MANch5HLaRANL7hZoxESpWOT8/iTtmtlWC /sQ== X-Received: by 2002:a05:6820:c2c3:10b0:69e:30ea:133e with SMTP id 006d021491bc7-69e30ea1773mr259525eaf.34.1780313109236; Mon, 01 Jun 2026 04:25:09 -0700 (PDT) MIME-Version: 1.0 References: <CAJ8YToa+nueew9wQ52xJtD-jXOdcA+Vq+NZEVcd=Q3V66opHSg@HIDDEN> <CAN+1HbpLJqPWufz3mOmAm1Oq=+_a38aMH5FZub5-pn5=C4msSw@HIDDEN> <87pl2dq2a7.fsf@HIDDEN> <87se79pxdd.fsf@HIDDEN> <CAJ8YToZazwzGtP9QU-ijh+VSTiDBW3PAOPCq4S-Xh8YeHAtB1Q@HIDDEN> <CALDnm53Z+oOs+=Y0t-gpgreWcC=2=2qRguT=DbVtcx4RFtOSRg@HIDDEN> <CAJ8YToafSau+bEJKtaKORVN4-_APO09AZ03CL_dGj5rD_j1-3Q@HIDDEN> <87o6hxp2tj.fsf@HIDDEN> <CAJ8YTobrDNoMFyQcG9vrj_6kRhng=f7ak-_m66ovwZ=nye822g@HIDDEN> <87ik83q4ti.fsf@HIDDEN> <CAN+1Hbp4n76dbjcOSJLm3xfkVac8Gj76pv8XAmcucOUmngEmLQ@HIDDEN> <86wlwjy4vv.fsf@HIDDEN> <CAN+1HbrQdqcURTQ_GtdPQ1s+JTBxSZwx30ZQWJysqu0pOZRwHA@HIDDEN> <86tsrnxx7p.fsf@HIDDEN> <CAN+1Hbq2W3=A9TmepqU6JjYonm7ur-P4euFyzRnQ4ssTMDfvbw@HIDDEN> <86h5nnxut1.fsf@HIDDEN> <87ecirp1lz.fsf@HIDDEN> <m2tsrnatjg.fsf@HIDDEN> <877boiprbw.fsf@HIDDEN> <CAJ8YTobpmmvp_3QSP1prxBdoBLVV8bBkq5NeNEEXN12GgudEOw@HIDDEN> In-Reply-To: <CAJ8YTobpmmvp_3QSP1prxBdoBLVV8bBkq5NeNEEXN12GgudEOw@HIDDEN> From: =?UTF-8?B?Sm/Do28gVMOhdm9yYQ==?= <joaotavora@HIDDEN> Date: Mon, 1 Jun 2026 12:24:56 +0100 X-Gm-Features: AVHnY4JZx2p38EtWZ1Gb8d88nGAcX4ubIsQXThhoO7B0eKgPhCRAdHXzaQs69zU Message-ID: <CALDnm53cjeydPptci8iPZ_aju291VtTFbw_tLAObdd3fyNCB+w@HIDDEN> Subject: Re: bug#81150: 31.0.60; eglot: performance issue with markdown-ts-mode To: Romain Ouabdelkader <romain.ouabdelkader@HIDDEN> Content-Type: multipart/alternative; boundary="000000000000770f3506532f72a3" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 81150 Cc: Eli Zaretskii <eliz@HIDDEN>, Rahul Martim Juliato <rahuljuliato@HIDDEN>, =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN>, 81150 <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: 0.0 (/) --000000000000770f3506532f72a3 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable I think I know what's up, easy fix. Will fix Jo=C3=A3o T=C3=A1vora On Mon, Jun 1, 2026, 11:35 Romain Ouabdelkader < romain.ouabdelkader@HIDDEN> wrote: > Hello Jo=C3=A3o, > > I updated emacs on the 31 branch and got the following error, I believe > related to the changes with eglot-documentation-renderer > > emacs -Q > M-x eglot > > Debugger entered--Lisp error: (void-function eglot--builtin-mdown-p) > eglot--builtin-mdown-p() > #f(compiled-function () #<bytecode 0x1d6d6b09da8850c>)() > funcall(#f(compiled-function () #<bytecode 0x1d6d6b09da8850c>)) > eval((funcall #'#f(compiled-function () #<bytecode 0x1d6d6b09da8850c>))= ) > custom-initialize-reset(eglot-documentation-renderer (funcall > #'#f(compiled-function () #<bytecode 0x1d6d6b09da8850c>))) > custom-declare-variable(eglot-documentation-renderer (funcall > #'#f(compiled-function () #<bytecode 0x1d6d6b09da8850c>)) "Control > rendering of LSP documentation fragments.\nIf set to a major mode symbol > `gfm-view-mode' or `markdown-ts-view-mode'\nrequest markdown-snippets and > use the corresponding Markdown renderer.\nIf t, always request and render > plain text snippets. If set to nil,\ndecide dynamically." :type (choice > (const :tag "Plain text" t) (const :tag "Auto-detect" nil) (function :tag > "Renderer")) :package-version (Eglot . "1.24")) > byte-code(...) > command-execute(eglot record) > execute-extended-command(nil "eglot" "eg") > funcall-interactively(execute-extended-command nil "eglot" "eg") > command-execute(execute-extended-command) > > I think that's because eglot--builtin-mdown-p is defined after > eglot-documentation-renderer, moving it before fixes the issue. > > Thank you! > > On Mon, 1 Jun 2026 at 11:01, Jo=C3=A3o T=C3=A1vora <joaotavora@HIDDEN>= wrote: > >> Rahul Martim Juliato <rahuljuliato@HIDDEN> writes: >> >> > + (if (and (eq render #'markdown-ts-view-mode) >> > + (fboundp 'markdown-ts-render-markup)) >> > + (string-trim (markdown-ts-render-markup string)) >> >> Hi Rahul, >> >> This is precisely the special-casing I'm trying to cut down on, not >> increase. In fact, ideally -- and Eli has already said this elsewhere >> -- Emacs's existing mechanisms for designating and automatically >> selecting a major-mode to apply to a buffer should be enough. It's true >> that Eglot's purposes they aren't, at the moment, due to a wringle in >> markdown.el which requires a special extractor. Hence the somewhat >> generic 'eglot-documentation-renderer' function, that ideally I'd get >> rid of somewhere down the line. >> >> So the solution you proposed, IMO is a not a step in the right >> direction. Short-lived temp buffers -- not strings -- and major modes >> are, in my experience, how you manipulate fragments of data big or small >> in Emacs, and when used right, they're very performant (for this reason >> I don't understand this "work buffer" thing at all, but I digress). >> >> So in summary I don't know how you reasoned to arrive at this change, I >> personally don't agree with this outcome. However I do read this in >> your latest patch to markdown-ts-mode. >> >> > + ;; command) skips imenu, outline, the optional embedded grammars, >> and the >> > + ;; table/code-block context modes, none of which a read-only render >> [like Eglot's] needs. >> > + ;; The interactive `markdown-ts-view-mode' keeps them all. >> >> I don't think it's true, and Eglot ElDoc could well use fontification of >> code blocks inside server-provided markdown-snippets. LSP servers send >> more and more markdown data through the wires (Rust and Go servers are >> especially especially prolific), so I think it's a feature to keep. >> >> So frankly, I'd take something like the patch I sent in earlier for >> emacs 31. It could be made even simpler if you got rid of the >> time-based cache invalidation I invented (attached). Coupled with what >> I already installed for Eglot, it effectively fixes the performance >> problem we have here. For Emacs master/32 you can discuss something >> more sophisticated in emacs-devel. >> >> Jo=C3=A3o >> >> diff --git a/lisp/textmodes/markdown-ts-mode.el >> b/lisp/textmodes/markdown-ts-mode.el >> index fed6ded192c..105c5c3429a 100644 >> --- a/lisp/textmodes/markdown-ts-mode.el >> +++ b/lisp/textmodes/markdown-ts-mode.el >> @@ -5201,6 +5201,17 @@ markdown-ts-mode-menu >> ["Export table to CSV" markdown-ts-table-export-table-csv >> :help "Export the table at point to a comma-separated values buffer"] >> ["Export table to TSV" markdown-ts-table-export-table-tsv >> :help "Export the table at point to a tab-separated values buffer"]))) >> >> +(defvar markdown-ts--ts-ready-cache ; maybe make manually invalidatable >> + (list (make-hash-table :test #'equal) nil)) >> + >> +(defun markdown-ts--ts-ready-p (language &optional quiet) >> + "Like `treesit-ready-p' with LANGUAGE and QUIET, but cached." >> + (let* ((tbl (car markdown-ts--ts-ready-cache)) >> + (cached (gethash language tbl 'absent))) >> + (cond ((eq cached 'absent) >> + (puthash language (treesit-ready-p language quiet) tbl)) >> + (cached)))) >> + >> (defun markdown-ts--set-up () >> "Set up the buffer for `markdown-ts-mode'. >> If `markdown-ts--set-up-inline' is non-nil, use a lightweight set up fo= r >> @@ -5276,7 +5287,7 @@ markdown-ts--set-up >> (dolist (prop '(invisible display button category action >> help-echo)) >> (add-to-list 'font-lock-extra-managed-props prop))) >> >> - (when (treesit-ready-p 'html t) >> + (when (markdown-ts--ts-ready-p 'html t) >> (treesit-parser-create 'html) >> (require 'html-ts-mode) >> (defvar html-ts-mode--font-lock-settings) >> @@ -5300,7 +5311,7 @@ markdown-ts--set-up >> :host 'markdown-inline >> '((html_tag) @html))))) >> >> - (when (treesit-ready-p 'yaml t) >> + (when (markdown-ts--ts-ready-p 'yaml t) >> (require 'yaml-ts-mode) >> (defvar yaml-ts-mode--font-lock-settings) >> (defvar yaml-ts-mode--font-lock-feature-list) >> @@ -5319,7 +5330,7 @@ markdown-ts--set-up >> :local t >> '((minus_metadata) @yaml))))) >> >> - (when (treesit-ready-p 'toml t) >> + (when (markdown-ts--ts-ready-p 'toml t) >> (require 'toml-ts-mode) >> (defvar toml-ts-mode--font-lock-settings) >> (defvar toml-ts-mode--font-lock-feature-list) >> @@ -5390,15 +5401,17 @@ markdown-ts-mode-install-parsers >> >> (defun markdown-ts-mode--initialize () >> "Invoke this from major mode definitions after local variable set up.= " >> - (treesit-ensure-installed 'markdown) >> - (treesit-ensure-installed 'markdown-inline) >> + (unless (cadr markdown-ts--ts-ready-cache) >> + (treesit-ensure-installed 'markdown) >> + (treesit-ensure-installed 'markdown-inline) >> + (setf (cadr markdown-ts--ts-ready-cache) t)) >> ;; Bypass `treesit-max-buffer-size' so the mode activates in large >> ;; buffers instead of refusing. `treesit-ready-p' would otherwise >> ;; refuse and emit a misleading "parsers not found" message even when >> ;; they are installed. Revisit if `treesit-parser-create' gains its >> ;; own buffer-size guard (see bug#80909). >> (let ((treesit-max-buffer-size most-positive-fixnum)) >> - (cond ((treesit-ready-p '(markdown markdown-inline) t) >> + (cond ((markdown-ts--ts-ready-p '(markdown markdown-inline) t) >> (markdown-ts--set-up)) >> (t >> (warn "markdown-ts-mode cannot be set up; using text-mode. >> >> >> >> --000000000000770f3506532f72a3 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"auto"><div dir=3D"auto">I think I know what's up, easy fix.= Will fix</div><div dir=3D"auto"><br></div><div data-smartmail=3D"gmail_sig= nature" dir=3D"auto">Jo=C3=A3o T=C3=A1vora</div><br><div class=3D"gmail_quo= te gmail_quote_container" dir=3D"auto"><div dir=3D"ltr" class=3D"gmail_attr= ">On Mon, Jun 1, 2026, 11:35 Romain Ouabdelkader <<a href=3D"mailto:roma= in.ouabdelkader@HIDDEN">romain.ouabdelkader@HIDDEN</a>> wrote:<br>= </div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;b= order-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr">He= llo Jo=C3=A3o,<div><br></div><div>I updated emacs on the 31 branch and got = the following error, I believe related to the changes with eglot-documentat= ion-renderer</div><div><br></div><div>emacs -Q</div><div>M-x eglot</div><di= v><br></div><div>Debugger entered--Lisp error: (void-function eglot--builti= n-mdown-p)<br>=C2=A0 eglot--builtin-mdown-p()<br>=C2=A0 #f(compiled-functio= n () #<bytecode 0x1d6d6b09da8850c>)()<br>=C2=A0 funcall(#f(compiled-f= unction () #<bytecode 0x1d6d6b09da8850c>))<br>=C2=A0 eval((funcall #&= #39;#f(compiled-function () #<bytecode 0x1d6d6b09da8850c>)))<br>=C2= =A0 custom-initialize-reset(eglot-documentation-renderer (funcall #'#f(= compiled-function () #<bytecode 0x1d6d6b09da8850c>)))<br>=C2=A0 custo= m-declare-variable(eglot-documentation-renderer (funcall #'#f(compiled-= function () #<bytecode 0x1d6d6b09da8850c>)) "Control rendering o= f LSP documentation fragments.\nIf set to a major mode symbol `gfm-view-mod= e' or `markdown-ts-view-mode'\nrequest markdown-snippets and use th= e corresponding Markdown renderer.\nIf t, always request and render plain t= ext snippets.=C2=A0 If set to nil,\ndecide dynamically." :type (choice= (const :tag "Plain text" t) (const :tag "Auto-detect" = nil) (function :tag "Renderer")) :package-version (Eglot . "= 1.24"))<br>=C2=A0 byte-code(...)<br>=C2=A0 command-execute(eglot recor= d)<br>=C2=A0 execute-extended-command(nil "eglot" "eg")= <br>=C2=A0 funcall-interactively(execute-extended-command nil "eglot&q= uot; "eg")<br>=C2=A0 command-execute(execute-extended-command)</d= iv><div><br></div><div>I think that's because=C2=A0eglot--builtin-mdown= -p is defined after eglot-documentation-renderer, moving it before fixes th= e issue.</div><div><br></div><div>Thank you!</div></div><br><div class=3D"g= mail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, 1 Jun 2026 at 11:= 01, Jo=C3=A3o T=C3=A1vora <<a href=3D"mailto:joaotavora@HIDDEN" targe= t=3D"_blank" rel=3D"noreferrer">joaotavora@HIDDEN</a>> wrote:<br></di= v><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;borde= r-left:1px solid rgb(204,204,204);padding-left:1ex">Rahul Martim Juliato &l= t;<a href=3D"mailto:rahuljuliato@HIDDEN" target=3D"_blank" rel=3D"norefe= rrer">rahuljuliato@HIDDEN</a>> writes:<br> <br> > +=C2=A0 =C2=A0 (if (and (eq render #'markdown-ts-view-mode)<br> > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(fboundp 'markdow= n-ts-render-markup))<br> > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 (string-trim (markdown-ts-render-markup s= tring))<br> <br> Hi Rahul,<br> <br> This is precisely the special-casing I'm trying to cut down on, not<br> increase.=C2=A0 In fact, ideally -- and Eli has already said this elsewhere= <br> -- Emacs's existing mechanisms for designating and automatically<br> selecting a major-mode to apply to a buffer should be enough.=C2=A0 It'= s true<br> that Eglot's purposes they aren't, at the moment, due to a wringle = in<br> markdown.el which requires a special extractor.=C2=A0 Hence the somewhat<br= > generic 'eglot-documentation-renderer' function, that ideally I'= ;d get<br> rid of somewhere down the line.<br> <br> So the solution you proposed, IMO is a not a step in the right<br> direction.=C2=A0 Short-lived temp buffers -- not strings -- and major modes= <br> are, in my experience, how you manipulate fragments of data big or small<br= > in Emacs, and when used right, they're very performant (for this reason= <br> I don't understand this "work buffer" thing at all, but I dig= ress).<br> <br> So in summary I don't know how you reasoned to arrive at this change, I= <br> personally don't agree with this outcome.=C2=A0 However I do read this = in<br> your latest patch to markdown-ts-mode.<br> <br> > +=C2=A0 ;; command) skips imenu, outline, the optional embedded gramma= rs, and the<br> > +=C2=A0 ;; table/code-block context modes, none of which a read-only r= ender [like Eglot's] needs.<br> > +=C2=A0 ;; The interactive `markdown-ts-view-mode' keeps them all.= <br> <br> I don't think it's true, and Eglot ElDoc could well use fontificati= on of<br> code blocks inside server-provided markdown-snippets.=C2=A0 LSP servers sen= d<br> more and more markdown data through the wires (Rust and Go servers are<br> especially especially prolific), so I think it's a feature to keep.<br> <br> So frankly, I'd take something like the patch I sent in earlier for<br> emacs 31.=C2=A0 It could be made even simpler if you got rid of the<br> time-based cache invalidation I invented (attached).=C2=A0 Coupled with wha= t<br> I already installed for Eglot, it effectively fixes the performance<br> problem we have here.=C2=A0 For Emacs master/32 you can discuss something<b= r> more sophisticated in emacs-devel.<br> <br> Jo=C3=A3o<br> <br> diff --git a/lisp/textmodes/markdown-ts-mode.el b/lisp/textmodes/markdown-t= s-mode.el<br> index fed6ded192c..105c5c3429a 100644<br> --- a/lisp/textmodes/markdown-ts-mode.el<br> +++ b/lisp/textmodes/markdown-ts-mode.el<br> @@ -5201,6 +5201,17 @@ markdown-ts-mode-menu<br> =C2=A0 =C2=A0 =C2=A0 ["Export table to CSV"=C2=A0 =C2=A0 =C2=A0 m= arkdown-ts-table-export-table-csv=C2=A0 =C2=A0 =C2=A0:help "Export the= table at point to a comma-separated values buffer"]<br> =C2=A0 =C2=A0 =C2=A0 ["Export table to TSV"=C2=A0 =C2=A0 =C2=A0 m= arkdown-ts-table-export-table-tsv=C2=A0 =C2=A0 =C2=A0:help "Export the= table at point to a tab-separated values buffer"])))<br> <br> +(defvar markdown-ts--ts-ready-cache ; maybe make manually invalidatable<br= > +=C2=A0 (list (make-hash-table :test #'equal) nil))<br> +<br> +(defun markdown-ts--ts-ready-p (language &optional quiet)<br> +=C2=A0 "Like `treesit-ready-p' with LANGUAGE and QUIET, but cache= d."<br> +=C2=A0 (let* ((tbl (car markdown-ts--ts-ready-cache))<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(cached (gethash language tbl 'absen= t)))<br> +=C2=A0 =C2=A0 (cond ((eq cached 'absent)<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(puthash language (treesit-ready-= p language quiet) tbl))<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (cached))))<br> +<br> =C2=A0(defun markdown-ts--set-up ()<br> =C2=A0 =C2=A0"Set up the buffer for `markdown-ts-mode'.<br> =C2=A0If `markdown-ts--set-up-inline' is non-nil, use a lightweight set= up for<br> @@ -5276,7 +5287,7 @@ markdown-ts--set-up<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (dolist (prop '(invisible dis= play button category action help-echo))<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (add-to-list 'font-loc= k-extra-managed-props prop)))<br> <br> -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(when (treesit-ready-p 'html t)<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(when (markdown-ts--ts-ready-p 'html= t)<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (treesit-parser-create 'html)= <br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (require 'html-ts-mode)<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (defvar html-ts-mode--font-lock-s= ettings)<br> @@ -5300,7 +5311,7 @@ markdown-ts--set-up<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0:host 'markdown-inline<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0'((html_tag) @html)))))<br= > <br> -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(when (treesit-ready-p 'yaml t)<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(when (markdown-ts--ts-ready-p 'yaml= t)<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (require 'yaml-ts-mode)<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (defvar yaml-ts-mode--font-lock-s= ettings)<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (defvar yaml-ts-mode--font-lock-f= eature-list)<br> @@ -5319,7 +5330,7 @@ markdown-ts--set-up<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0:local t<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0'((minus_metadata) @yaml))= )))<br> <br> -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(when (treesit-ready-p 'toml t)<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(when (markdown-ts--ts-ready-p 'toml= t)<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (require 'toml-ts-mode)<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (defvar toml-ts-mode--font-lock-s= ettings)<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (defvar toml-ts-mode--font-lock-f= eature-list)<br> @@ -5390,15 +5401,17 @@ markdown-ts-mode-install-parsers<br> <br> =C2=A0(defun markdown-ts-mode--initialize ()<br> =C2=A0 =C2=A0"Invoke this from major mode definitions after local vari= able set up."<br> -=C2=A0 (treesit-ensure-installed 'markdown)<br> -=C2=A0 (treesit-ensure-installed 'markdown-inline)<br> +=C2=A0 (unless (cadr markdown-ts--ts-ready-cache)<br> +=C2=A0 =C2=A0 (treesit-ensure-installed 'markdown)<br> +=C2=A0 =C2=A0 (treesit-ensure-installed 'markdown-inline)<br> +=C2=A0 =C2=A0 (setf (cadr markdown-ts--ts-ready-cache) t))<br> =C2=A0 =C2=A0;; Bypass `treesit-max-buffer-size' so the mode activates = in large<br> =C2=A0 =C2=A0;; buffers instead of refusing.=C2=A0 `treesit-ready-p' wo= uld otherwise<br> =C2=A0 =C2=A0;; refuse and emit a misleading "parsers not found" = message even when<br> =C2=A0 =C2=A0;; they are installed.=C2=A0 Revisit if `treesit-parser-create= ' gains its<br> =C2=A0 =C2=A0;; own buffer-size guard (see bug#80909).<br> =C2=A0 =C2=A0(let ((treesit-max-buffer-size most-positive-fixnum))<br> -=C2=A0 =C2=A0 (cond ((treesit-ready-p '(markdown markdown-inline) t)<b= r> +=C2=A0 =C2=A0 (cond ((markdown-ts--ts-ready-p '(markdown markdown-inli= ne) t)<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (markdown-ts--set-up))<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(t<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (warn "markdown-ts-mode cann= ot be set up; using text-mode.<br> <br> <br> <br> </blockquote></div> </blockquote></div></div> --000000000000770f3506532f72a3--
bug-gnu-emacs@HIDDEN:bug#81150; Package emacs.
Full text available.Received: (at 81150) by debbugs.gnu.org; 1 Jun 2026 11:21:53 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Jun 01 07:21:53 2026 Received: from localhost ([127.0.0.1]:41103 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wU0iO-0007fB-Rk for submit <at> debbugs.gnu.org; Mon, 01 Jun 2026 07:21:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57382) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1wU0iM-0007er-Ep for 81150 <at> debbugs.gnu.org; Mon, 01 Jun 2026 07:21:51 -0400 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 1wU0iG-0005v0-U0; Mon, 01 Jun 2026 07:21:44 -0400 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=bS9Ux8h7dBEhwB0xFwCQIRY6H6yff5unji8nxqt7OyM=; b=GpfqwJhEjo4k2n1n6IxJ q5uSOYdyo8v3WbcFNOfmrewg03F+Dy3iXF9C7cfXpuAe3g5Q4dw5tpQxu8VDmYZU/vSaUykfKHSAt QcUA57wjW4PkHajlLj8juKbgnIaFSdhTaqTmaQZLcMoD/ng678ogsF535TWPM48VYcg2rz/GPULRu IfKp9I5xh79cemtZVoD23pKCl3M3uWEJAh6wkfGAXRUtmEfXKx+Msp8rQR3AlZwVE2BHJKYggEUIB iSxugm+eLkxgoQz/GHHR0lF2C5gml5deCTHBOgdSsTprENDAUrUnoVGGQb8Ixe7RL5d9B+rPPuUT/ AAwa0xfOzElhOQ==; Date: Mon, 01 Jun 2026 14:21:42 +0300 Message-Id: <86bjduy08p.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: =?utf-8?B?Sm/Do28gVMOhdm9yYQ==?= <joaotavora@HIDDEN> In-Reply-To: <87ecirp1lz.fsf@HIDDEN> (message from =?utf-8?B?Sm/Do28g?= =?utf-8?B?VMOhdm9yYQ==?= on Mon, 01 Jun 2026 01:04:40 +0100) Subject: Re: bug#81150: 31.0.60; eglot: performance issue with markdown-ts-mode References: <CAJ8YToa+nueew9wQ52xJtD-jXOdcA+Vq+NZEVcd=Q3V66opHSg@HIDDEN> <CAN+1HbpLJqPWufz3mOmAm1Oq=+_a38aMH5FZub5-pn5=C4msSw@HIDDEN> <87pl2dq2a7.fsf@HIDDEN> <87se79pxdd.fsf@HIDDEN> <CAJ8YToZazwzGtP9QU-ijh+VSTiDBW3PAOPCq4S-Xh8YeHAtB1Q@HIDDEN> <CALDnm53Z+oOs+=Y0t-gpgreWcC=2=2qRguT=DbVtcx4RFtOSRg@HIDDEN> <CAJ8YToafSau+bEJKtaKORVN4-_APO09AZ03CL_dGj5rD_j1-3Q@HIDDEN> <87o6hxp2tj.fsf@HIDDEN> <CAJ8YTobrDNoMFyQcG9vrj_6kRhng=f7ak-_m66ovwZ=nye822g@HIDDEN> <87ik83q4ti.fsf@HIDDEN> <CAN+1Hbp4n76dbjcOSJLm3xfkVac8Gj76pv8XAmcucOUmngEmLQ@HIDDEN> <86wlwjy4vv.fsf@HIDDEN> <CAN+1HbrQdqcURTQ_GtdPQ1s+JTBxSZwx30ZQWJysqu0pOZRwHA@HIDDEN> <86tsrnxx7p.fsf@HIDDEN> <CAN+1Hbq2W3=A9TmepqU6JjYonm7ur-P4euFyzRnQ4ssTMDfvbw@HIDDEN> <86h5nnxut1.fsf@HIDDEN> <87ecirp1lz.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: 81150 Cc: rahuljuliato@HIDDEN, shipmints@HIDDEN, 81150 <at> debbugs.gnu.org, romain.ouabdelkader@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 (---) > From: João Távora <joaotavora@HIDDEN> > Cc: Stéphane Marks <shipmints@HIDDEN>, > rahuljuliato@HIDDEN, > 81150 <at> debbugs.gnu.org, romain.ouabdelkader@HIDDEN > Date: Mon, 01 Jun 2026 01:04:40 +0100 > > Eli Zaretskii <eliz@HIDDEN> writes: > > > Look at the Git history. The mode got lots of significant changes > > less than a month ago, and markdown-ts-view-mode was added just 2 > > weeks ago. I don't see how we can honestly expect the code churn to > > stop soon enough for these modes to be eligible to serve as default > > modes. New modes always have rough edges which take time to smooth. > > It's okay to keep fixing them further, but we should avoid making > > other features depend on that. > > Just weighing in to say I have to sort of agree with Eli. Do you guys > really need a whole new major mode and so much redesign work to fix > this? Attach a simple patch to markdown-ts-mode after my sig that uses > some simple caches. markdown-ts-view-mode is now only about 3-4 times > slower than gfm-view-mode for this (possibly somewhat silly) zero-load > case. And for any normal piece of markdown it is now only about 2 times > slower and "fast enough" I think (I don't notice any slowdowns). And > for large pieces of markdown it is quite a bit faster than > gfm-view-mode. So don't get _too_ hung on micro-benchmarks... Smaller and simpler changes on the emacs-31 release branch will certainly help, not only to be sure they are safe enough, but also by lowering the risk for unintended consequences and the need for further changes on the branch. > I'm sure you can find some caching strategy and more surgical changes to > improve markdown-ts-mode without machining loads of code (for example, > does a new parser need to be created for every markdown-ts-mode > invocation?) I think any such improvements are better developed on the master branch.
bug-gnu-emacs@HIDDEN:bug#81150; Package emacs.
Full text available.Received: (at 81150) by debbugs.gnu.org; 1 Jun 2026 10:55:04 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Jun 01 06:55:04 2026 Received: from localhost ([127.0.0.1]:40874 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wU0IR-0005pl-Kh for submit <at> debbugs.gnu.org; Mon, 01 Jun 2026 06:55:03 -0400 Received: from fhigh-a3-smtp.messagingengine.com ([103.168.172.154]:32819) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <spwhitton@HIDDEN>) id 1wU0IP-0005ox-2t for 81150 <at> debbugs.gnu.org; Mon, 01 Jun 2026 06:55:01 -0400 Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailfhigh.phl.internal (Postfix) with ESMTP id D566514000B0; Mon, 1 Jun 2026 06:54:55 -0400 (EDT) Received: from phl-frontend-04 ([10.202.2.163]) by phl-compute-02.internal (MEProxy); Mon, 01 Jun 2026 06:54:55 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=spwhitton.name; h=cc:cc:content-transfer-encoding:content-type:content-type :date:date:from:from:in-reply-to:message-id:mime-version :reply-to:subject:subject:to:to; s=fm2; t=1780311295; x= 1780397695; bh=sDryq+m+0zJo54HrgiJeR864h5/VpsUTj2HLekKNKJY=; b=v d1lm7Vud34hFiBdIlMbufjv3vWf6N4HeeKYywmRgFzgdKwO2+L0U4WtMH84hfmFj 754TIrB5JLmGtOd8d6oAHufm7MEd9RKS6LMDwCcT4eNRpL259KZ6xMn8iquAwvw7 GNhjkfzxE/HhuoyXSGyDR4CnujBzCbEwYa9gIbHo8Npka4ZMVSTGsukyhT5G5xlF aMzoNUWCND0Q1vkTL+dMD3mt/P3ucIM92yviXNQVBqS9ijUnh1YLRNlqmHdH5PAM PTnXrYStI1Eu9xx3U8Q9KmQxCYwGe8HuhfBGxBAYpRh/YjU0oCSjMIm1yQJuIuX9 lrCy26PCZJ9Wy66juwzrA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:message-id:mime-version:reply-to:subject :subject:to:to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm1; t=1780311295; x=1780397695; bh=sDryq+m+0zJo54HrgiJeR864h5/V psUTj2HLekKNKJY=; b=B9i0LHw/he0KQIwCaNKjy7Jw8hRLz5JpK9EDYSV8m5rH PMJgk96Pu7zrpJvNoP9dEvIJQnWraKSqNTAhPvHQWWNzZitIjL6RMHzhrJHsPjw+ Os1ZB0mWbXnqUNq39gXCkO3GwGidS06u8+bGMVM7GdWwuRXDWAI/aGCTq7WhEKqd Vluib+P2dcdWqHy89MsB6vQtLykhiHdU3nNCByodwZe/dc+PVvIOOt4rJKU4K7Fy ZQByxzphhgGL/8/Jikm9ClEFnjc2mDyhMvKGTgRiAdLEOKjoHLq++xPYsvQszkQM P2N600rka8M3AoS57k5c3tGapPfyk2rxN/EtzEMebw== X-ME-Sender: <xms:_2QdapB-sGIcGmo3BpgJqaP14OhJD1Mi013R6fd1lCvOpoDcmcdFOA> <xme:_2QdauYpyD5NSS9kZoCAP0novwqaqn_u7qh0uqGv6UcnrDhQyRqt6K3xvfj7vlzf- jI9S89ncWUqrUlEw55O-elNDGGzdUAwSr-iGI95oWsWVu-eWP3KtxM> X-ME-Received: <xmr:_2Qdas4N-UdJtsJQBLMwlxXMLXXx_UsYtE-lVZxbb96JBA0hStAvia8ilnhBAoo7hZbjd34aewDV> X-ME-Proxy-Cause: dmFkZTGAxaUWviYepVSzq9MK5wCei1J0CTEN/aDnftzGeIu+e5OnOaPqvVS+0KuESMMrcF /xbntHHpYDmYjkPF9epcLKHma9lQ40ztYDkk1YKXSibnzGD+I35cOClsoGPR7lDxC+zeqr wNm36g247Pp4ngnSKVC7S9wDYGACi8MmWZ0NFWt7AfXTQ+brtr0yU0IdWBVacIHTPJDaiF rBvHLpNkqbpEVmnBS7fIz7F+qB79txB9huc2wEQzom4CpLgi2tO7iOPwdrfXNm630nMsvE kEoBdvgrfiSWjaLwr0A14Edv3JRBTR/B54+0CS8oRpy2Qa5qXf2Ko9Mviu68D0nibizYaF nhzFw+XmObuUVkMv28G9Fk8+XFPkpPlSIUPHwWvfTWKcw5up0XOCL6ZjXYJKjGSZIpveHY rQM9KmW70c46bA4FBIxy1TtK4qBpPEelECYd+zMRQU5qtSpNrVClehOV5igUOe/34OfdRc qP+1yS99r2KGsbofc8PXIQy0PN3NihZQcDFOoK17YsG1g/gFTPH61f3sjfKovl0NylPc0a mKTmF6IOq3bGZ2lMArKF02aotynF8pY+E7K5YKAha2KpCnoDKdIKt3LzfJxdrvlUJt1qe9 jAKI3K/iSGET25DOCBLa+AR+/Aq8HTdqNl59vTsS+TKnpQscyDN66/Qm9iOg X-ME-Proxy: <xmx:_2QdavYe-0pG09MlH_WFQSoBcIpslwll2kOsI0Q4SzswEBN7f_hyPQ> <xmx:_2Qdarjvmp4ldEiCbKEFzg46aoEqs9T1sSvd4LFh-lA5V3pqIQhN8A> <xmx:_2Qdag-780yP2Xg4GrGug4lKRGyEgDbeKPCZipggLDnR93KjoM_ijA> <xmx:_2Qdampn44fBQyudAsE5AGNKw-TnmQt5uBnxsp1Qr6ESgefU0T3kBw> <xmx:_2Qdapw3Z8LlRM1faYbtZFhCCxveZG9J8M7LOeZVeQGEBpBm5nQmb1n9> Feedback-ID: i62564b17:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 1 Jun 2026 06:54:55 -0400 (EDT) Received: by melete.silentflame.com (Postfix, from userid 1000) id ACC877E69CA; Mon, 01 Jun 2026 11:54:54 +0100 (BST) From: Sean Whitton <spwhitton@HIDDEN> To: =?utf-8?Q?St=C3=A9phane?= Marks <shipmints@HIDDEN>, Rahul Martim Juliato <rahuljuliato@HIDDEN> Subject: markdown-ts-mode and markdown-ts-view-mode demoted on the release branch Date: Mon, 01 Jun 2026 11:54:54 +0100 Message-ID: <87qzmqtts1.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: 81150 Cc: =?utf-8?B?Sm/Do28gVMOhdm9y?= =?utf-8?B?YQ==?= <joaotavora@HIDDEN>, 81150 <at> debbugs.gnu.org, emacs-devel@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 (-) Eli and I have discussed it and decided to disable markdown-ts-mode and markdown-ts-view-mode on the release branch. They'll still be included in the release but marked as experimental, and not advertised with autoloads or in NEWS. We've ended up doing feature development on the release branch which is not right. If you have minimal fixes you can still install them on emacs-31, but otherwise let's get these modes ready for Emacs 32 on master. This will be disappointing, and I apologise for that. Eli and I are trying to balance the importance of getting a pretest out soon versus the inclusion of any particular new features. Jo=C3=A3o, I edited EGLOT-NEWS but I am not sure I did in a way that's compatible with how you do releases, possibly that needs fixing. Let me know if I can do anything. --=20 Sean Whitton
bug-gnu-emacs@HIDDEN:bug#81150; Package emacs.
Full text available.Received: (at 81150) by debbugs.gnu.org; 1 Jun 2026 10:35:24 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Jun 01 06:35:24 2026 Received: from localhost ([127.0.0.1]:40757 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wTzzK-0002ma-LC for submit <at> debbugs.gnu.org; Mon, 01 Jun 2026 06:35:24 -0400 Received: from mail-lf1-x136.google.com ([2a00:1450:4864:20::136]:48332) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <romain.ouabdelkader@HIDDEN>) id 1wTzzG-0002lV-BC for 81150 <at> debbugs.gnu.org; Mon, 01 Jun 2026 06:35:16 -0400 Received: by mail-lf1-x136.google.com with SMTP id 2adb3069b0e04-5aa6fee4ec6so369262e87.0 for <81150 <at> debbugs.gnu.org>; Mon, 01 Jun 2026 03:35:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1780310112; cv=none; d=google.com; s=arc-20240605; b=L1jxZZ7HuUeOSDsJkFge76LdGeac+zsipnID9lpnZrDm25MeU+/BBW5xvM0iWs7v8F BsqV66xfDm1c2dRZDtWNfRbeHAVvIWWPoT7ZHAaS1Ks3wi4P/yk9eP1w+ZeaHOrpOQDc 5svu0epBa+0fA5ttrtcCkAwh9Qm4ImtTxOnxIQ37FOEzlJ0Cg5xf5+4dngJORYhw5ZJt xsPTVv+HsqdbC7iGxJGMhc0ODuPHLbLs4ue7/37cMGudwd31NxUk33nrANuaSUy877aF +VVVeAFQdmdBiVDI0SiHDHmmExeDYHYBwV+Etp040Rw2rn8sZfWRxmxuvG/UrE3nEIRc JDaQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=CssvYmryZJbUZaBT//bsHcznqJhn21yL61KM5Cdx2tU=; fh=vmvC8Be+2buqvsBnPzEzostr7cRUuAYdFesi7MeSu9s=; b=J6u+9Z5HCOH9wsGPmDrPqsZe1I1WTVvUZ165AkT13I6XPuE/C0bl4eGbr7Rd/zziVH 053JF9GZ+tS/9GM3quW61eXr0nNlBs2d8szClx7fZxiFYLNrdDRz8eFN0WLQiisu9NV2 B4J2eWUfC6ZGf3QScjPC3e/dVF8piaTJYTy8yZFzGpbKjbHWYzfneL5P0K+xhLhRM6Ux iMDrDjnnZCEXJJTeCR+yCOgarLC1WzdH7gGit4v0nB4/ls+4biEyAyXMnm4fRxJjExxd XHxq9z76u883gzpoZtpaUDKGI9Rx9S0WwFhua/UVTjw6yroK+//stpwi2uuN3FOGChAy RslA==; darn=debbugs.gnu.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780310112; x=1780914912; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=CssvYmryZJbUZaBT//bsHcznqJhn21yL61KM5Cdx2tU=; b=r7FTm1eY5zpMBD6YJW+5iquLB2tfqi2KIqR1ekxJrz2GAEzgPUkhAMWmRWXVR/Fgvz Sm4aqIBzwTzbfHbZCtZ37iwVClYwf2HNIGXBOr/QQNufDl2GQBwc9a2WpoTi9TIKCrGA Lxs0KK1BUvQQ3+A8lqI3HoZyLDdJ/5DyUVsUeHo1e3KDdT1jfx4CpAmlnvxrf5c1AYie bwn6ck8dFDjWgarrJ0iRKjDxI42014KXAAYgb2oGXWoOzY0RK5GHoCY8TpcRCXTteN3I livVG4VlYEPhwoVpfF2LhQn1UA0WvPdCCNmezdRlYTaDlJjKcHixvoTRWFoofT28LhRz 7jig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780310112; x=1780914912; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=CssvYmryZJbUZaBT//bsHcznqJhn21yL61KM5Cdx2tU=; b=LLK7XeEcwmt0QWLatj4G6pQKtobxkylOM0CLj6JQYwqPYXVn+JV8DbLTVo/ChmjztX p0Wx5ji1fpEVt85MFzW9rG1fsR5heMPn4kLcoGxIzqlgYN3kFZLAwqSXrEKXu3zbYESd FjAna8RITc0WBYdfjAQtKpFursUQk6xEUZs8cwo/c31N5gMM00AAQ/iixV858Ojn1nzb eYh/lGg7MepKrv8mfWBfdjo7Uq0+fVdIamMLhwh0SA20Ud3+GhFIMLkuigf7M8SebrkZ rDTLPdbOaHqxtp18M5DRCgVtl/IQx+EzK9xwE0/65hbv4PcVYNbMyVa5nRIPmonzlJJO eb8w== X-Forwarded-Encrypted: i=1; AFNElJ9CkIfGvS5UommYtMOnpgf6nTodPDQWkVOB+FqvXFke3LmInl37sQ0Hp1TtuZu4mUHISXM2Lw==@debbugs.gnu.org X-Gm-Message-State: AOJu0YwkIilNax+01WUGz2f6s/HmWP68SU2fnLKUYBWPY0tdj+I/LUt+ ds2p+Q3z3Yc7IQl/k4cICM2zSF2Xrieoc+3evQra4mtL49FtO29HO4maO19uVrwU9t9upwc75pg uSXfvj8MSceotqqt/Rkaf3Y2ySuz0Z7o= X-Gm-Gg: Acq92OFGglbWzcMLoMlbOrFJzGdHFHBv6gCf6zSWW7gJpkHOoyqwWfxddJS99FaYdV7 74HW8d5doNacr7+mtCK4xprrSj0ZMggoRRZNEXlPVjHichqO6MopwMYRKvFwrSythZbe6P7hxcv 3ViT9QrTcHQgqStMQpMEHr77PCIoo+x9WdCUK/GqR6TgvCFOIDbECE8yWAIa4lICymnDuQWoSg/ p/fZhiehFeqcLf+PxAYb6MTUv9RicblaKlDTwy8KO+RqbBP7QwmEhsfeVQuWWDMY1agTw8MLaXp 3I+cnaRs560SSfxYEJzl X-Received: by 2002:a05:6512:138a:b0:5aa:6af9:3829 with SMTP id 2adb3069b0e04-5aa6af94599mr1398937e87.29.1780310112077; Mon, 01 Jun 2026 03:35:12 -0700 (PDT) MIME-Version: 1.0 References: <CAJ8YToa+nueew9wQ52xJtD-jXOdcA+Vq+NZEVcd=Q3V66opHSg@HIDDEN> <CAN+1HbpLJqPWufz3mOmAm1Oq=+_a38aMH5FZub5-pn5=C4msSw@HIDDEN> <87pl2dq2a7.fsf@HIDDEN> <87se79pxdd.fsf@HIDDEN> <CAJ8YToZazwzGtP9QU-ijh+VSTiDBW3PAOPCq4S-Xh8YeHAtB1Q@HIDDEN> <CALDnm53Z+oOs+=Y0t-gpgreWcC=2=2qRguT=DbVtcx4RFtOSRg@HIDDEN> <CAJ8YToafSau+bEJKtaKORVN4-_APO09AZ03CL_dGj5rD_j1-3Q@HIDDEN> <87o6hxp2tj.fsf@HIDDEN> <CAJ8YTobrDNoMFyQcG9vrj_6kRhng=f7ak-_m66ovwZ=nye822g@HIDDEN> <87ik83q4ti.fsf@HIDDEN> <CAN+1Hbp4n76dbjcOSJLm3xfkVac8Gj76pv8XAmcucOUmngEmLQ@HIDDEN> <86wlwjy4vv.fsf@HIDDEN> <CAN+1HbrQdqcURTQ_GtdPQ1s+JTBxSZwx30ZQWJysqu0pOZRwHA@HIDDEN> <86tsrnxx7p.fsf@HIDDEN> <CAN+1Hbq2W3=A9TmepqU6JjYonm7ur-P4euFyzRnQ4ssTMDfvbw@HIDDEN> <86h5nnxut1.fsf@HIDDEN> <87ecirp1lz.fsf@HIDDEN> <m2tsrnatjg.fsf@HIDDEN> <877boiprbw.fsf@HIDDEN> In-Reply-To: <877boiprbw.fsf@HIDDEN> From: Romain Ouabdelkader <romain.ouabdelkader@HIDDEN> Date: Mon, 1 Jun 2026 12:34:34 +0200 X-Gm-Features: AVHnY4JBgk62fLQUfrfa-IZZfrbC4s0VTlFBwZOcTwcamhjPFGdrzQXpDQ18xbY Message-ID: <CAJ8YTobpmmvp_3QSP1prxBdoBLVV8bBkq5NeNEEXN12GgudEOw@HIDDEN> Subject: Re: bug#81150: 31.0.60; eglot: performance issue with markdown-ts-mode To: =?UTF-8?B?Sm/Do28gVMOhdm9yYQ==?= <joaotavora@HIDDEN> Content-Type: multipart/alternative; boundary="000000000000d20c8d06532ebfa5" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 81150 Cc: Eli Zaretskii <eliz@HIDDEN>, Rahul Martim Juliato <rahuljuliato@HIDDEN>, =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN>, 81150 <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: 0.0 (/) --000000000000d20c8d06532ebfa5 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hello Jo=C3=A3o, I updated emacs on the 31 branch and got the following error, I believe related to the changes with eglot-documentation-renderer emacs -Q M-x eglot Debugger entered--Lisp error: (void-function eglot--builtin-mdown-p) eglot--builtin-mdown-p() #f(compiled-function () #<bytecode 0x1d6d6b09da8850c>)() funcall(#f(compiled-function () #<bytecode 0x1d6d6b09da8850c>)) eval((funcall #'#f(compiled-function () #<bytecode 0x1d6d6b09da8850c>))) custom-initialize-reset(eglot-documentation-renderer (funcall #'#f(compiled-function () #<bytecode 0x1d6d6b09da8850c>))) custom-declare-variable(eglot-documentation-renderer (funcall #'#f(compiled-function () #<bytecode 0x1d6d6b09da8850c>)) "Control rendering of LSP documentation fragments.\nIf set to a major mode symbol `gfm-view-mode' or `markdown-ts-view-mode'\nrequest markdown-snippets and use the corresponding Markdown renderer.\nIf t, always request and render plain text snippets. If set to nil,\ndecide dynamically." :type (choice (const :tag "Plain text" t) (const :tag "Auto-detect" nil) (function :tag "Renderer")) :package-version (Eglot . "1.24")) byte-code(...) command-execute(eglot record) execute-extended-command(nil "eglot" "eg") funcall-interactively(execute-extended-command nil "eglot" "eg") command-execute(execute-extended-command) I think that's because eglot--builtin-mdown-p is defined after eglot-documentation-renderer, moving it before fixes the issue. Thank you! On Mon, 1 Jun 2026 at 11:01, Jo=C3=A3o T=C3=A1vora <joaotavora@HIDDEN> w= rote: > Rahul Martim Juliato <rahuljuliato@HIDDEN> writes: > > > + (if (and (eq render #'markdown-ts-view-mode) > > + (fboundp 'markdown-ts-render-markup)) > > + (string-trim (markdown-ts-render-markup string)) > > Hi Rahul, > > This is precisely the special-casing I'm trying to cut down on, not > increase. In fact, ideally -- and Eli has already said this elsewhere > -- Emacs's existing mechanisms for designating and automatically > selecting a major-mode to apply to a buffer should be enough. It's true > that Eglot's purposes they aren't, at the moment, due to a wringle in > markdown.el which requires a special extractor. Hence the somewhat > generic 'eglot-documentation-renderer' function, that ideally I'd get > rid of somewhere down the line. > > So the solution you proposed, IMO is a not a step in the right > direction. Short-lived temp buffers -- not strings -- and major modes > are, in my experience, how you manipulate fragments of data big or small > in Emacs, and when used right, they're very performant (for this reason > I don't understand this "work buffer" thing at all, but I digress). > > So in summary I don't know how you reasoned to arrive at this change, I > personally don't agree with this outcome. However I do read this in > your latest patch to markdown-ts-mode. > > > + ;; command) skips imenu, outline, the optional embedded grammars, an= d > the > > + ;; table/code-block context modes, none of which a read-only render > [like Eglot's] needs. > > + ;; The interactive `markdown-ts-view-mode' keeps them all. > > I don't think it's true, and Eglot ElDoc could well use fontification of > code blocks inside server-provided markdown-snippets. LSP servers send > more and more markdown data through the wires (Rust and Go servers are > especially especially prolific), so I think it's a feature to keep. > > So frankly, I'd take something like the patch I sent in earlier for > emacs 31. It could be made even simpler if you got rid of the > time-based cache invalidation I invented (attached). Coupled with what > I already installed for Eglot, it effectively fixes the performance > problem we have here. For Emacs master/32 you can discuss something > more sophisticated in emacs-devel. > > Jo=C3=A3o > > diff --git a/lisp/textmodes/markdown-ts-mode.el > b/lisp/textmodes/markdown-ts-mode.el > index fed6ded192c..105c5c3429a 100644 > --- a/lisp/textmodes/markdown-ts-mode.el > +++ b/lisp/textmodes/markdown-ts-mode.el > @@ -5201,6 +5201,17 @@ markdown-ts-mode-menu > ["Export table to CSV" markdown-ts-table-export-table-csv > :help "Export the table at point to a comma-separated values buffer"] > ["Export table to TSV" markdown-ts-table-export-table-tsv > :help "Export the table at point to a tab-separated values buffer"]))) > > +(defvar markdown-ts--ts-ready-cache ; maybe make manually invalidatable > + (list (make-hash-table :test #'equal) nil)) > + > +(defun markdown-ts--ts-ready-p (language &optional quiet) > + "Like `treesit-ready-p' with LANGUAGE and QUIET, but cached." > + (let* ((tbl (car markdown-ts--ts-ready-cache)) > + (cached (gethash language tbl 'absent))) > + (cond ((eq cached 'absent) > + (puthash language (treesit-ready-p language quiet) tbl)) > + (cached)))) > + > (defun markdown-ts--set-up () > "Set up the buffer for `markdown-ts-mode'. > If `markdown-ts--set-up-inline' is non-nil, use a lightweight set up for > @@ -5276,7 +5287,7 @@ markdown-ts--set-up > (dolist (prop '(invisible display button category action > help-echo)) > (add-to-list 'font-lock-extra-managed-props prop))) > > - (when (treesit-ready-p 'html t) > + (when (markdown-ts--ts-ready-p 'html t) > (treesit-parser-create 'html) > (require 'html-ts-mode) > (defvar html-ts-mode--font-lock-settings) > @@ -5300,7 +5311,7 @@ markdown-ts--set-up > :host 'markdown-inline > '((html_tag) @html))))) > > - (when (treesit-ready-p 'yaml t) > + (when (markdown-ts--ts-ready-p 'yaml t) > (require 'yaml-ts-mode) > (defvar yaml-ts-mode--font-lock-settings) > (defvar yaml-ts-mode--font-lock-feature-list) > @@ -5319,7 +5330,7 @@ markdown-ts--set-up > :local t > '((minus_metadata) @yaml))))) > > - (when (treesit-ready-p 'toml t) > + (when (markdown-ts--ts-ready-p 'toml t) > (require 'toml-ts-mode) > (defvar toml-ts-mode--font-lock-settings) > (defvar toml-ts-mode--font-lock-feature-list) > @@ -5390,15 +5401,17 @@ markdown-ts-mode-install-parsers > > (defun markdown-ts-mode--initialize () > "Invoke this from major mode definitions after local variable set up." > - (treesit-ensure-installed 'markdown) > - (treesit-ensure-installed 'markdown-inline) > + (unless (cadr markdown-ts--ts-ready-cache) > + (treesit-ensure-installed 'markdown) > + (treesit-ensure-installed 'markdown-inline) > + (setf (cadr markdown-ts--ts-ready-cache) t)) > ;; Bypass `treesit-max-buffer-size' so the mode activates in large > ;; buffers instead of refusing. `treesit-ready-p' would otherwise > ;; refuse and emit a misleading "parsers not found" message even when > ;; they are installed. Revisit if `treesit-parser-create' gains its > ;; own buffer-size guard (see bug#80909). > (let ((treesit-max-buffer-size most-positive-fixnum)) > - (cond ((treesit-ready-p '(markdown markdown-inline) t) > + (cond ((markdown-ts--ts-ready-p '(markdown markdown-inline) t) > (markdown-ts--set-up)) > (t > (warn "markdown-ts-mode cannot be set up; using text-mode. > > > > --000000000000d20c8d06532ebfa5 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr">Hello Jo=C3=A3o,<div><br></div><div>I updated emacs on the= 31 branch and got the following error, I believe related to the changes wi= th eglot-documentation-renderer</div><div><br></div><div>emacs -Q</div><div= >M-x eglot</div><div><br></div><div>Debugger entered--Lisp error: (void-fun= ction eglot--builtin-mdown-p)<br>=C2=A0 eglot--builtin-mdown-p()<br>=C2=A0 = #f(compiled-function () #<bytecode 0x1d6d6b09da8850c>)()<br>=C2=A0 fu= ncall(#f(compiled-function () #<bytecode 0x1d6d6b09da8850c>))<br>=C2= =A0 eval((funcall #'#f(compiled-function () #<bytecode 0x1d6d6b09da8= 850c>)))<br>=C2=A0 custom-initialize-reset(eglot-documentation-renderer = (funcall #'#f(compiled-function () #<bytecode 0x1d6d6b09da8850c>)= ))<br>=C2=A0 custom-declare-variable(eglot-documentation-renderer (funcall = #'#f(compiled-function () #<bytecode 0x1d6d6b09da8850c>)) "C= ontrol rendering of LSP documentation fragments.\nIf set to a major mode sy= mbol `gfm-view-mode' or `markdown-ts-view-mode'\nrequest markdown-s= nippets and use the corresponding Markdown renderer.\nIf t, always request = and render plain text snippets.=C2=A0 If set to nil,\ndecide dynamically.&q= uot; :type (choice (const :tag "Plain text" t) (const :tag "= Auto-detect" nil) (function :tag "Renderer")) :package-versi= on (Eglot . "1.24"))<br>=C2=A0 byte-code(...)<br>=C2=A0 command-e= xecute(eglot record)<br>=C2=A0 execute-extended-command(nil "eglot&quo= t; "eg")<br>=C2=A0 funcall-interactively(execute-extended-command= nil "eglot" "eg")<br>=C2=A0 command-execute(execute-ex= tended-command)</div><div><br></div><div>I think that's because=C2=A0eg= lot--builtin-mdown-p is defined after eglot-documentation-renderer, moving = it before fixes the issue.</div><div><br></div><div>Thank you!</div></div><= br><div class=3D"gmail_quote gmail_quote_container"><div dir=3D"ltr" class= =3D"gmail_attr">On Mon, 1 Jun 2026 at 11:01, Jo=C3=A3o T=C3=A1vora <<a h= ref=3D"mailto:joaotavora@HIDDEN">joaotavora@HIDDEN</a>> wrote:<br>= </div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;b= order-left:1px solid rgb(204,204,204);padding-left:1ex">Rahul Martim Juliat= o <<a href=3D"mailto:rahuljuliato@HIDDEN" target=3D"_blank">rahuljuli= ato@HIDDEN</a>> writes:<br> <br> > +=C2=A0 =C2=A0 (if (and (eq render #'markdown-ts-view-mode)<br> > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(fboundp 'markdow= n-ts-render-markup))<br> > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 (string-trim (markdown-ts-render-markup s= tring))<br> <br> Hi Rahul,<br> <br> This is precisely the special-casing I'm trying to cut down on, not<br> increase.=C2=A0 In fact, ideally -- and Eli has already said this elsewhere= <br> -- Emacs's existing mechanisms for designating and automatically<br> selecting a major-mode to apply to a buffer should be enough.=C2=A0 It'= s true<br> that Eglot's purposes they aren't, at the moment, due to a wringle = in<br> markdown.el which requires a special extractor.=C2=A0 Hence the somewhat<br= > generic 'eglot-documentation-renderer' function, that ideally I'= ;d get<br> rid of somewhere down the line.<br> <br> So the solution you proposed, IMO is a not a step in the right<br> direction.=C2=A0 Short-lived temp buffers -- not strings -- and major modes= <br> are, in my experience, how you manipulate fragments of data big or small<br= > in Emacs, and when used right, they're very performant (for this reason= <br> I don't understand this "work buffer" thing at all, but I dig= ress).<br> <br> So in summary I don't know how you reasoned to arrive at this change, I= <br> personally don't agree with this outcome.=C2=A0 However I do read this = in<br> your latest patch to markdown-ts-mode.<br> <br> > +=C2=A0 ;; command) skips imenu, outline, the optional embedded gramma= rs, and the<br> > +=C2=A0 ;; table/code-block context modes, none of which a read-only r= ender [like Eglot's] needs.<br> > +=C2=A0 ;; The interactive `markdown-ts-view-mode' keeps them all.= <br> <br> I don't think it's true, and Eglot ElDoc could well use fontificati= on of<br> code blocks inside server-provided markdown-snippets.=C2=A0 LSP servers sen= d<br> more and more markdown data through the wires (Rust and Go servers are<br> especially especially prolific), so I think it's a feature to keep.<br> <br> So frankly, I'd take something like the patch I sent in earlier for<br> emacs 31.=C2=A0 It could be made even simpler if you got rid of the<br> time-based cache invalidation I invented (attached).=C2=A0 Coupled with wha= t<br> I already installed for Eglot, it effectively fixes the performance<br> problem we have here.=C2=A0 For Emacs master/32 you can discuss something<b= r> more sophisticated in emacs-devel.<br> <br> Jo=C3=A3o<br> <br> diff --git a/lisp/textmodes/markdown-ts-mode.el b/lisp/textmodes/markdown-t= s-mode.el<br> index fed6ded192c..105c5c3429a 100644<br> --- a/lisp/textmodes/markdown-ts-mode.el<br> +++ b/lisp/textmodes/markdown-ts-mode.el<br> @@ -5201,6 +5201,17 @@ markdown-ts-mode-menu<br> =C2=A0 =C2=A0 =C2=A0 ["Export table to CSV"=C2=A0 =C2=A0 =C2=A0 m= arkdown-ts-table-export-table-csv=C2=A0 =C2=A0 =C2=A0:help "Export the= table at point to a comma-separated values buffer"]<br> =C2=A0 =C2=A0 =C2=A0 ["Export table to TSV"=C2=A0 =C2=A0 =C2=A0 m= arkdown-ts-table-export-table-tsv=C2=A0 =C2=A0 =C2=A0:help "Export the= table at point to a tab-separated values buffer"])))<br> <br> +(defvar markdown-ts--ts-ready-cache ; maybe make manually invalidatable<br= > +=C2=A0 (list (make-hash-table :test #'equal) nil))<br> +<br> +(defun markdown-ts--ts-ready-p (language &optional quiet)<br> +=C2=A0 "Like `treesit-ready-p' with LANGUAGE and QUIET, but cache= d."<br> +=C2=A0 (let* ((tbl (car markdown-ts--ts-ready-cache))<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(cached (gethash language tbl 'absen= t)))<br> +=C2=A0 =C2=A0 (cond ((eq cached 'absent)<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(puthash language (treesit-ready-= p language quiet) tbl))<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (cached))))<br> +<br> =C2=A0(defun markdown-ts--set-up ()<br> =C2=A0 =C2=A0"Set up the buffer for `markdown-ts-mode'.<br> =C2=A0If `markdown-ts--set-up-inline' is non-nil, use a lightweight set= up for<br> @@ -5276,7 +5287,7 @@ markdown-ts--set-up<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (dolist (prop '(invisible dis= play button category action help-echo))<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (add-to-list 'font-loc= k-extra-managed-props prop)))<br> <br> -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(when (treesit-ready-p 'html t)<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(when (markdown-ts--ts-ready-p 'html= t)<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (treesit-parser-create 'html)= <br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (require 'html-ts-mode)<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (defvar html-ts-mode--font-lock-s= ettings)<br> @@ -5300,7 +5311,7 @@ markdown-ts--set-up<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0:host 'markdown-inline<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0'((html_tag) @html)))))<br= > <br> -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(when (treesit-ready-p 'yaml t)<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(when (markdown-ts--ts-ready-p 'yaml= t)<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (require 'yaml-ts-mode)<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (defvar yaml-ts-mode--font-lock-s= ettings)<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (defvar yaml-ts-mode--font-lock-f= eature-list)<br> @@ -5319,7 +5330,7 @@ markdown-ts--set-up<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0:local t<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0'((minus_metadata) @yaml))= )))<br> <br> -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(when (treesit-ready-p 'toml t)<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(when (markdown-ts--ts-ready-p 'toml= t)<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (require 'toml-ts-mode)<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (defvar toml-ts-mode--font-lock-s= ettings)<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (defvar toml-ts-mode--font-lock-f= eature-list)<br> @@ -5390,15 +5401,17 @@ markdown-ts-mode-install-parsers<br> <br> =C2=A0(defun markdown-ts-mode--initialize ()<br> =C2=A0 =C2=A0"Invoke this from major mode definitions after local vari= able set up."<br> -=C2=A0 (treesit-ensure-installed 'markdown)<br> -=C2=A0 (treesit-ensure-installed 'markdown-inline)<br> +=C2=A0 (unless (cadr markdown-ts--ts-ready-cache)<br> +=C2=A0 =C2=A0 (treesit-ensure-installed 'markdown)<br> +=C2=A0 =C2=A0 (treesit-ensure-installed 'markdown-inline)<br> +=C2=A0 =C2=A0 (setf (cadr markdown-ts--ts-ready-cache) t))<br> =C2=A0 =C2=A0;; Bypass `treesit-max-buffer-size' so the mode activates = in large<br> =C2=A0 =C2=A0;; buffers instead of refusing.=C2=A0 `treesit-ready-p' wo= uld otherwise<br> =C2=A0 =C2=A0;; refuse and emit a misleading "parsers not found" = message even when<br> =C2=A0 =C2=A0;; they are installed.=C2=A0 Revisit if `treesit-parser-create= ' gains its<br> =C2=A0 =C2=A0;; own buffer-size guard (see bug#80909).<br> =C2=A0 =C2=A0(let ((treesit-max-buffer-size most-positive-fixnum))<br> -=C2=A0 =C2=A0 (cond ((treesit-ready-p '(markdown markdown-inline) t)<b= r> +=C2=A0 =C2=A0 (cond ((markdown-ts--ts-ready-p '(markdown markdown-inli= ne) t)<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (markdown-ts--set-up))<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(t<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (warn "markdown-ts-mode cann= ot be set up; using text-mode.<br> <br> <br> <br> </blockquote></div> --000000000000d20c8d06532ebfa5--
bug-gnu-emacs@HIDDEN:bug#81150; Package emacs.
Full text available.
Received: (at 81150) by debbugs.gnu.org; 1 Jun 2026 09:01:30 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Jun 01 05:01:30 2026
Received: from localhost ([127.0.0.1]:39943 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1wTyWX-00086A-Ik
for submit <at> debbugs.gnu.org; Mon, 01 Jun 2026 05:01:30 -0400
Received: from mail-wm1-x336.google.com ([2a00:1450:4864:20::336]:52269)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <joaotavora@HIDDEN>)
id 1wTyWR-000854-IA
for 81150 <at> debbugs.gnu.org; Mon, 01 Jun 2026 05:01:27 -0400
Received: by mail-wm1-x336.google.com with SMTP id
5b1f17b1804b1-490a7629380so11208475e9.0
for <81150 <at> debbugs.gnu.org>; Mon, 01 Jun 2026 02:01:23 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20251104; t=1780304482; x=1780909282; darn=debbugs.gnu.org;
h=content-transfer-encoding:mime-version:user-agent:message-id:date
:references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date
:message-id:reply-to;
bh=NOhX4TBd9KJeoYQuAfXyAkYyJOsNYQLXaLFJB5LpGvk=;
b=OpKeftPBFpJh/kxLzxXwmUHgcdYsqKnjJBZ3Pv4eNPhE884KmYYheem6YvAwoN4gDS
WghAFOle+tusGofJ5/Um4Y/Hzt5eztN99BToIi5oDFKA8Ei40/S8KrR5EospKBf+qh4I
490l5aTfWoGWPic/RvHEMfWLr246oqhv1AAVrU65H/3kH+miRjvB4sLOc6dz14E/Isoq
FQ7TjTUN5yLC4gobySCZ2uUJ1lK66UqijHpGBwzU3VYgKWQyTNUOU3ejyQxJkG7qezSs
XyqAOg+qceXceyHjN1Q7KDLCLTcd1ygn3i+9WiB/zafeXM3+PyEXU0hjF0VVZ6BIavkq
vPBA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20251104; t=1780304482; x=1780909282;
h=content-transfer-encoding:mime-version:user-agent:message-id:date
:references:in-reply-to:subject:cc:to:from:x-gm-gg
:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
bh=NOhX4TBd9KJeoYQuAfXyAkYyJOsNYQLXaLFJB5LpGvk=;
b=FzeMPvN82qxIVbWpvkno4cyiHAqQYL/vc5coQkYF4kKdlwpGv9AoExv3/+JTaMqZnm
jItYlsRF4qBf0/eowxvkNYyrkHIA2LWpC0nWsCpHa3R7IrwnZDyTFVDl8UWMEMF6u1qi
yZU/iScxXqXHB/NilyDoN9ZyOVEE8bFrjeoyEZzUXUeG4uObeMQ9ImTbL6ZZII4xhF49
HLXd9G9sHpqP5Kpb2WPV8d1iLKlgwYy8igy3dHm6P/iMzuk7Eijppogpj+tsUZSaQHkH
lFEBu5nlzXoTJBleIiVXFm02RwtJOLLUQiQkMHlK24UfhwPAhHPh9tExB6w3Y30WdLio
z2kw==
X-Forwarded-Encrypted: i=1;
AFNElJ9CfJMoET7mNZbdNIA8lJvdSkKKzMkmVkaYnXILRJmjyl0ds5eng1ZQSOO154Ioz420Cek6bw==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YymgrBP1GY5KW9nCa+gTmvkVzRdra7w+ldMnghRfpJ6jP+kVSxT
+6hu0Izye8r0HBw7lEKDx9HjW7TIH1Fl5fYRvkfxcMsuH6XmQmblg2pP
X-Gm-Gg: Acq92OEJ5fEWyDi6dUaMhJ4xxSUfh6mXNBTBUi81F/4WqFmImhwGB8iZQJ4dj/pyfSf
QkP0JSl7WSFZjijVim/DX/Ff8/FqBEaji5jDv38yWYRuyoKbx6nWu+ojoICqGjVrsEBBws7LH/U
CcW0D623OGd7FhlQ1uxhrTalxmJiPpsOHL+9BOr9E47Cp5QNTnGxcGq6bbd3AwcVGHRbxkBhUV7
phh54sBc9H/PgFdu3O4tmnNujjfqCumTD90VOnrAJnFiaELyUCr4+JDQFiVzAb+GXIlI2xccPjA
xDuUzVw6OPn9nzYT/L+XeXgsSHmO+kWKLp4N3ofDxWIJmxvpKCrulkhdfpOgMW0sES+Lfzbm4hU
LYALw71RWLDhj0INtxTTIVuhZWb2z3Th7ToDDeLnsVQV0PZt+h0gKj2pjdlTq4LbG9b7Xf5bjfE
hayTscbVNMLcZJ4V0mGAl9dJvjcozdJNUoFJIY+LEHb/bueTxjrVzCQh6+b4LK5AJk3Ye3mp+ep
yZudGU78vKMDMmBtAS7vnuIUFxnw4fiVH2sTPdx
X-Received: by 2002:a05:600c:8a0d:20b0:48a:906b:14ca with SMTP id
5b1f17b1804b1-490a293dcaamr130064515e9.20.1780304481261;
Mon, 01 Jun 2026 02:01:21 -0700 (PDT)
Received: from krug (87-196-72-133.net.novis.pt. [87.196.72.133])
by smtp.gmail.com with ESMTPSA id
ffacd0b85a97d-45ef32fabcasm23193527f8f.0.2026.06.01.02.01.20
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Mon, 01 Jun 2026 02:01:20 -0700 (PDT)
From: =?utf-8?B?Sm/Do28gVMOhdm9yYQ==?= <joaotavora@HIDDEN>
To: Rahul Martim Juliato <rahuljuliato@HIDDEN>
Subject: Re: bug#81150: 31.0.60; eglot: performance issue with markdown-ts-mode
In-Reply-To: <m2tsrnatjg.fsf@HIDDEN>
References: <CAJ8YToa+nueew9wQ52xJtD-jXOdcA+Vq+NZEVcd=Q3V66opHSg@HIDDEN>
<CAN+1HbpLJqPWufz3mOmAm1Oq=+_a38aMH5FZub5-pn5=C4msSw@HIDDEN>
<87pl2dq2a7.fsf@HIDDEN> <87se79pxdd.fsf@HIDDEN>
<CAJ8YToZazwzGtP9QU-ijh+VSTiDBW3PAOPCq4S-Xh8YeHAtB1Q@HIDDEN>
<CALDnm53Z+oOs+=Y0t-gpgreWcC=2=2qRguT=DbVtcx4RFtOSRg@HIDDEN>
<CAJ8YToafSau+bEJKtaKORVN4-_APO09AZ03CL_dGj5rD_j1-3Q@HIDDEN>
<87o6hxp2tj.fsf@HIDDEN>
<CAJ8YTobrDNoMFyQcG9vrj_6kRhng=f7ak-_m66ovwZ=nye822g@HIDDEN>
<87ik83q4ti.fsf@HIDDEN>
<CAN+1Hbp4n76dbjcOSJLm3xfkVac8Gj76pv8XAmcucOUmngEmLQ@HIDDEN>
<86wlwjy4vv.fsf@HIDDEN>
<CAN+1HbrQdqcURTQ_GtdPQ1s+JTBxSZwx30ZQWJysqu0pOZRwHA@HIDDEN>
<86tsrnxx7p.fsf@HIDDEN>
<CAN+1Hbq2W3=A9TmepqU6JjYonm7ur-P4euFyzRnQ4ssTMDfvbw@HIDDEN>
<86h5nnxut1.fsf@HIDDEN> <87ecirp1lz.fsf@HIDDEN>
<m2tsrnatjg.fsf@HIDDEN>
Date: Mon, 01 Jun 2026 10:01:23 +0100
Message-ID: <877boiprbw.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: 1.0 (+)
X-Debbugs-Envelope-To: 81150
Cc: Eli Zaretskii <eliz@HIDDEN>,
=?utf-8?Q?St=C3=A9phane?= Marks <shipmints@HIDDEN>, 81150 <at> debbugs.gnu.org,
romain.ouabdelkader@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: 0.0 (/)
Rahul Martim Juliato <rahuljuliato@HIDDEN> writes:
> + (if (and (eq render #'markdown-ts-view-mode)
> + (fboundp 'markdown-ts-render-markup))
> + (string-trim (markdown-ts-render-markup string))
Hi Rahul,
This is precisely the special-casing I'm trying to cut down on, not
increase. In fact, ideally -- and Eli has already said this elsewhere
-- Emacs's existing mechanisms for designating and automatically
selecting a major-mode to apply to a buffer should be enough. It's true
that Eglot's purposes they aren't, at the moment, due to a wringle in
markdown.el which requires a special extractor. Hence the somewhat
generic 'eglot-documentation-renderer' function, that ideally I'd get
rid of somewhere down the line.
So the solution you proposed, IMO is a not a step in the right
direction. Short-lived temp buffers -- not strings -- and major modes
are, in my experience, how you manipulate fragments of data big or small
in Emacs, and when used right, they're very performant (for this reason
I don't understand this "work buffer" thing at all, but I digress).
So in summary I don't know how you reasoned to arrive at this change, I
personally don't agree with this outcome. However I do read this in
your latest patch to markdown-ts-mode.
> + ;; command) skips imenu, outline, the optional embedded grammars, and =
the
> + ;; table/code-block context modes, none of which a read-only render [l=
ike Eglot's] needs.
> + ;; The interactive `markdown-ts-view-mode' keeps them all.
I don't think it's true, and Eglot ElDoc could well use fontification of
code blocks inside server-provided markdown-snippets. LSP servers send
more and more markdown data through the wires (Rust and Go servers are
especially especially prolific), so I think it's a feature to keep.
So frankly, I'd take something like the patch I sent in earlier for
emacs 31. It could be made even simpler if you got rid of the
time-based cache invalidation I invented (attached). Coupled with what
I already installed for Eglot, it effectively fixes the performance
problem we have here. For Emacs master/32 you can discuss something
more sophisticated in emacs-devel.
Jo=C3=A3o
diff --git a/lisp/textmodes/markdown-ts-mode.el b/lisp/textmodes/markdown-t=
s-mode.el
index fed6ded192c..105c5c3429a 100644
--- a/lisp/textmodes/markdown-ts-mode.el
+++ b/lisp/textmodes/markdown-ts-mode.el
@@ -5201,6 +5201,17 @@ markdown-ts-mode-menu
["Export table to CSV" markdown-ts-table-export-table-csv :h=
elp "Export the table at point to a comma-separated values buffer"]
["Export table to TSV" markdown-ts-table-export-table-tsv :h=
elp "Export the table at point to a tab-separated values buffer"])))
=20
+(defvar markdown-ts--ts-ready-cache ; maybe make manually invalidatable
+ (list (make-hash-table :test #'equal) nil))
+
+(defun markdown-ts--ts-ready-p (language &optional quiet)
+ "Like `treesit-ready-p' with LANGUAGE and QUIET, but cached."
+ (let* ((tbl (car markdown-ts--ts-ready-cache))
+ (cached (gethash language tbl 'absent)))
+ (cond ((eq cached 'absent)
+ (puthash language (treesit-ready-p language quiet) tbl))
+ (cached))))
+
(defun markdown-ts--set-up ()
"Set up the buffer for `markdown-ts-mode'.
If `markdown-ts--set-up-inline' is non-nil, use a lightweight set up for
@@ -5276,7 +5287,7 @@ markdown-ts--set-up
(dolist (prop '(invisible display button category action help-e=
cho))
(add-to-list 'font-lock-extra-managed-props prop)))
=20
- (when (treesit-ready-p 'html t)
+ (when (markdown-ts--ts-ready-p 'html t)
(treesit-parser-create 'html)
(require 'html-ts-mode)
(defvar html-ts-mode--font-lock-settings)
@@ -5300,7 +5311,7 @@ markdown-ts--set-up
:host 'markdown-inline
'((html_tag) @html)))))
=20
- (when (treesit-ready-p 'yaml t)
+ (when (markdown-ts--ts-ready-p 'yaml t)
(require 'yaml-ts-mode)
(defvar yaml-ts-mode--font-lock-settings)
(defvar yaml-ts-mode--font-lock-feature-list)
@@ -5319,7 +5330,7 @@ markdown-ts--set-up
:local t
'((minus_metadata) @yaml)))))
=20
- (when (treesit-ready-p 'toml t)
+ (when (markdown-ts--ts-ready-p 'toml t)
(require 'toml-ts-mode)
(defvar toml-ts-mode--font-lock-settings)
(defvar toml-ts-mode--font-lock-feature-list)
@@ -5390,15 +5401,17 @@ markdown-ts-mode-install-parsers
=20
(defun markdown-ts-mode--initialize ()
"Invoke this from major mode definitions after local variable set up."
- (treesit-ensure-installed 'markdown)
- (treesit-ensure-installed 'markdown-inline)
+ (unless (cadr markdown-ts--ts-ready-cache)
+ (treesit-ensure-installed 'markdown)
+ (treesit-ensure-installed 'markdown-inline)
+ (setf (cadr markdown-ts--ts-ready-cache) t))
;; Bypass `treesit-max-buffer-size' so the mode activates in large
;; buffers instead of refusing. `treesit-ready-p' would otherwise
;; refuse and emit a misleading "parsers not found" message even when
;; they are installed. Revisit if `treesit-parser-create' gains its
;; own buffer-size guard (see bug#80909).
(let ((treesit-max-buffer-size most-positive-fixnum))
- (cond ((treesit-ready-p '(markdown markdown-inline) t)
+ (cond ((markdown-ts--ts-ready-p '(markdown markdown-inline) t)
(markdown-ts--set-up))
(t
(warn "markdown-ts-mode cannot be set up; using text-mode.
=20=20=20=20
bug-gnu-emacs@HIDDEN:bug#81150; Package emacs.
Full text available.
Received: (at 81150) by debbugs.gnu.org; 1 Jun 2026 02:22:58 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun May 31 22:22:58 2026
Received: from localhost ([127.0.0.1]:36809 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1wTsIr-0008NW-OP
for submit <at> debbugs.gnu.org; Sun, 31 May 2026 22:22:58 -0400
Received: from mail-yw1-x1135.google.com ([2607:f8b0:4864:20::1135]:45171)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <rahuljuliato@HIDDEN>)
id 1wTsIo-0008NL-Vq
for 81150 <at> debbugs.gnu.org; Sun, 31 May 2026 22:22:55 -0400
Received: by mail-yw1-x1135.google.com with SMTP id
00721157ae682-7dca5a81be2so34288417b3.2
for <81150 <at> debbugs.gnu.org>; Sun, 31 May 2026 19:22:54 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20251104; t=1780280574; x=1780885374; darn=debbugs.gnu.org;
h=mime-version:user-agent:message-id:date:face:references:in-reply-to
:subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
bh=dBHF+WnVoAcA1EqIs34kIRXt3poa6FS5NvW7GFG8Iyc=;
b=CKdt+x2WCTKbEA0p7+cUpoMZzY/PtcrxP8OLrJP2V9j7Re/SGiEzEYIeuCMRzZ+lSa
BWIBwVP+fvMDs58aQTzHY8OOdkCjPrK5qBR8klnteAIqJpoq/R+Wh5YiLwrhglL5h16Z
1E1doDpWxN0KymbXZYJk487HK3HUKw9FxlKCDREVAa5IhA2qV8BRLNeVZjXwwV9e2Vvc
8Nph9GcxApBvwc2hHecG59IMCLsmEGzknlk2tQZBaocJYGnhKN89CyDRteeTxVNa1orT
4jBC9MN3jRXUb1g2z9BC25+oKHzFRKvV6FMorEhYBble6ly+OSoLEAs1tTKww8vMDnkj
lluA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20251104; t=1780280574; x=1780885374;
h=mime-version:user-agent:message-id:date:face:references:in-reply-to
:subject:cc:to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject
:date:message-id:reply-to;
bh=dBHF+WnVoAcA1EqIs34kIRXt3poa6FS5NvW7GFG8Iyc=;
b=JJ7nngto6+YYwPxdf5hmuyRGiLeZ1WjCzvCAGuFe0lqgr4vLI/rm+I1vQMG6qcUK8o
AgyOrm5+uG8yjYLIhLDs/mnapc0AX1XlGwfMZknzigPxCVZKiaKpSYGFYh9tVA6XGBKp
X8aZcFzuLCUj+KiYII5uD8Hp7aonrwJcxL7EoNVH1UhZz/6+gij5CmsXke0QC1uckptw
+lB4gMgfpCR5o3loa69Zs81OZkKIKHD31gjRB8IGEVX3S0Q78DVSESCN8gotZHC64lf4
obtYOJEHZdMAbgPICujW4TG9JSmDbQk1YGNCTaWGfoNvfVh4qaxZdrrllfnz/GgDG7bS
HQyQ==
X-Forwarded-Encrypted: i=1;
AFNElJ9YIuErVqC8zqyQ11FUdQ7JyfupSovmuVOZAy66ztqMgfkDX9NHIIrlleHA6aEE6EnT8N63Mg==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YxO2jAK9y0EMMMHLVy1PS8edk9moRSs/je3VLY0irA1LPhjlhnh
MWtLS+zQkzHeX+T7KtHoZSbCAxVsavWNas7xMjB62OTUMgkRfwsBOOtm
X-Gm-Gg: Acq92OEHctGAxQGbi5LT0QIE8hCccSzCjCMm52/2g3fTT1FwoWIaJtc9l8i1QKFFxi7
E8+cNbP8nX1W7LYN1YXVDZvwk+iP8vkV2aImGCX9BhZf35KLJYFfyEbjQRX8xqdBpljM9VP3i7y
UYXwrlV+rd/LuV/0OA0jbUCh1r6qlqCXd5F+i0JiH4ERBZSUbbADysNxouYYA1OVIsPEm93MjDq
jLHCwBgXp79d31VG0lt/ug+YzhBZU7QBS4pwdYjZUC6opep4pWHdN2KC+xscimOpjGV+ORqHO9X
ni5KcrFOpoe62Si/AC7FqQmctkm2vkTCAywtSjxyPd3scedyssQGR7Or3AzGatvpv5aYIUq4hvl
+tgBNrTdbc9SZoo5ZBWZZy85JJF4+Vp+dEO5AlAoft0P7EEblg/grLhHenUSTKE+IAncK/4qtTV
sU2iU/0fDoTYjg1f3jTA7/DVIAfAf9XO637X3Yy4i3IdUtL4ByIcGbB+ymL1zrUt+YvpqBS6h5p
eUdiLGZQxg95bjLNbPQoo2xsZlOsDx5h1JMydlcTDxfGSZi4a9jnxm5Hs8lHH5bOLk=
X-Received: by 2002:a05:690c:3693:b0:7ba:f1a2:a448 with SMTP id
00721157ae682-7e057bb5893mr80129467b3.10.1780280573976;
Sun, 31 May 2026 19:22:53 -0700 (PDT)
Received: from MacBook-Pro.local (201-93-59-43.dial-up.telesp.net.br.
[201.93.59.43]) by smtp.gmail.com with ESMTPSA id
00721157ae682-7e175de0d60sm31858687b3.10.2026.05.31.19.22.50
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sun, 31 May 2026 19:22:52 -0700 (PDT)
From: Rahul Martim Juliato <rahuljuliato@HIDDEN>
X-Google-Original-From: Rahul Martim Juliato <rahul.juliato@HIDDEN>
To: =?utf-8?B?Sm/Do28gVMOhdm9yYQ==?= <joaotavora@HIDDEN>
Subject: Re: bug#81150: 31.0.60; eglot: performance issue with markdown-ts-mode
In-Reply-To: <87ecirp1lz.fsf@HIDDEN>
References: <CAJ8YToa+nueew9wQ52xJtD-jXOdcA+Vq+NZEVcd=Q3V66opHSg@HIDDEN>
<CAN+1HbpLJqPWufz3mOmAm1Oq=+_a38aMH5FZub5-pn5=C4msSw@HIDDEN>
<87pl2dq2a7.fsf@HIDDEN> <87se79pxdd.fsf@HIDDEN>
<CAJ8YToZazwzGtP9QU-ijh+VSTiDBW3PAOPCq4S-Xh8YeHAtB1Q@HIDDEN>
<CALDnm53Z+oOs+=Y0t-gpgreWcC=2=2qRguT=DbVtcx4RFtOSRg@HIDDEN>
<CAJ8YToafSau+bEJKtaKORVN4-_APO09AZ03CL_dGj5rD_j1-3Q@HIDDEN>
<87o6hxp2tj.fsf@HIDDEN>
<CAJ8YTobrDNoMFyQcG9vrj_6kRhng=f7ak-_m66ovwZ=nye822g@HIDDEN>
<87ik83q4ti.fsf@HIDDEN>
<CAN+1Hbp4n76dbjcOSJLm3xfkVac8Gj76pv8XAmcucOUmngEmLQ@HIDDEN>
<86wlwjy4vv.fsf@HIDDEN>
<CAN+1HbrQdqcURTQ_GtdPQ1s+JTBxSZwx30ZQWJysqu0pOZRwHA@HIDDEN>
<86tsrnxx7p.fsf@HIDDEN>
<CAN+1Hbq2W3=A9TmepqU6JjYonm7ur-P4euFyzRnQ4ssTMDfvbw@HIDDEN>
<86h5nnxut1.fsf@HIDDEN> <87ecirp1lz.fsf@HIDDEN>
Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAAAXNSR0IB2cksfwAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAABhQTFRFDxIfFR9FMD+RM2CBkZPbZKPEn+Xt////lKVMgwAAAAFiS0dEAIgFHUgAAAAJcEhZcwAALiMAAC4jAXilP3YAAAAHdElNRQfqAhsDFwcfcr7WAAACY0lEQVRIx7VVWbLbMAwzBZG6/41LcJHXpl/Vm/G8OADBBWKOo44c//mM2yeoH7go/kqQG3zlucDxgwTzkwz9XVl+K8Z8igL5p4KYKbApCHDC5aGXn7EcD1KCkUl9154EtSJUJWwWIIJbZyLVIIgTguGdCobxQ4nLI3gRLECO9axcwgNYQi81yH5KhGXZ1oU7XSH3YUnQ488YsesOCWrwxYOAgAtW1ZCEZKxoNR4TCILXGnPbjJ65v8ZrbB4fbI02pUaelSjuDKboCS1LifMEg1HwaOpRvV/2Ylja5ekjafyFYU2AnGOTMagh5Qbrs6OngFxTkhFPxUYUZePl3iQnSB7Y+3gcvQocDSYeWOuDYorXZagzhioeqWVSH3ivfvS54/EcW8LvB2eTSJDtbtkJXeGTD/1FwCbMNI/pnC0CjYi3ej2HhDvOD121dGzGFyHgM+5DUnhLNc0lKm0OYptQsWPTJKPMMuil0rhU6+E51th4obJqinOMntOBM59pzlg0wmICoRc3ML5tgpzpODRdk02MQmaEL8YIhdEElJniQbvDRSh7DicV9qjmQFeFHA3mosS8EU6+8g2jV8dzc3jpTK0ZFwWObITvpXZv1MRJXDSOs6WskFcxVKqIlKPMJpzxp9I+udrjLx3tKfB9unHslNi/Wj9AZt8+mGEnnTmPIzMYM5ZENgp1XVghv+uN4/ZE7sf4gXJV9yvHJp1/7EvJlTlz
pUspOFJt723pVYz9c2cpgHYfKSMXVz72TvL/rJqxL92+D2cGuelri9Nkc5wX6Hjf6cqEsoPptle/Vtllqb3eEPkHU2QXL+sLC8kAAAAASUVORK5CYII=
X-PGP-Key: https://www.rahuljuliato.com/rahul_pub_key.asc
Date: Sun, 31 May 2026 23:22:43 -0300
Message-ID: <m2tsrnatjg.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Spam-Score: 1.0 (+)
X-Debbugs-Envelope-To: 81150
Cc: Eli Zaretskii <eliz@HIDDEN>, rahuljuliato@HIDDEN,
=?utf-8?Q?St=C3=A9phane?= Marks <shipmints@HIDDEN>, 81150 <at> debbugs.gnu.org,
romain.ouabdelkader@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: 0.0 (/)
--=-=-=
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Sorry, I was out for most of the day and night today and couldn't
contribute to the discussion or anything like it.
Thanks for all your input. Just so we're on the same page: I finished
the "I'm on it" tasks I talked about yesterday.
Here's how I'm managing it (patch attached and mirror on the end of the
message).
Along the way I also considered a few more rough edges in
markdown-ts-mode itself to provide a smoother experience when called
from eglot, so let me explain what my changed version does:
On eglot, a minimal change (I'll leave it to Jo=C3=A3o to decide if this is
the best way, but it's meant to be called like this): when the chosen
renderer is markdown-ts, eglot calls a plain function,
markdown-ts-render-markup, with the markup string, instead of opening a
fresh buffer and running a full major-mode setup for every fragment.
And eglot--builtin-mdown-p now reuses markdown-ts' own cached
availability check (markdown-ts-available-p) instead of re-probing the
grammar on every call, which is the treesit-grammar-location cost Romain
saw eating ~88%. (One small thing: I had to move eglot--builtin-mdown-p
above the eglot-documentation-renderer defcustom, since the defcustom's
default calls it and otherwise a fresh load signals void-function.)
This render (the change on markdown-ts-mode) does the following:
- It fontifies through a single buffer that is initialized once and
reused: per fragment we just erase, insert, refontify and read the
string back. The expensive part of tree-sitter is creating the
parsers per buffer; doing that once instead of ~200 times per
keystroke is where most of the speed comes from.
- It's a stripped-down, read-only renderer: it turns off the
editing-only machinery a throwaway render doesn't need, imenu,
outline, folding and the optional embedded grammars (html, yaml,
toml). That mostly trims the one-time setup rather than the
per-keystroke cost, but it keeps the render path lean and lets the
interactive markdown-ts-view-mode keep all those features.
- It caches the fontified result, keyed on the markup string (bounded,
with a max-string-length guard so we don't hold huge strings). LSP
servers resend identical fragments constantly, and a single
signatureHelp repeats the same parameter docs across overloads, so
~216 fragments collapse to ~36 unique ones, and repeated hovers cost
nothing.
- It won't ask to install grammars that aren't present. A ```lang
block in a doc whose grammar isn't installed simply renders
unfontified instead of prompting to install it mid-hover.
I can now compare to gfm in my own benchmarks (the Field case Romain
provided, 6 overloads x ~35 params, ~216 fragments per keystroke):
- gfm called multiple times (a fresh buffer per fragment, as eglot
does today): ~0.05 s per keystroke.
- markdown-ts called multiple times: the init cost is paid once
(~4 ms, building the reused buffer); after that every fragment is
~0.04 s per keystroke, on par with gfm, and once the cache warms up
it drops to ~0.008 s cold and effectively 0 on repeat hovers.
So I think this option is a winner. I'd love some feedback on testing.
I did it with the provided case and it's working on both macOS and
GNU/Linux, it feels instant, and imho better than gfm mode.
Jo=C3=A3o, can you profile it with your batch tester?
About this being the default method or not, I'll leave it to the
maintainers to decide, but my 2 cents:
We disable it in auto-mode by default, because user machines have all
sorts of combinations of tree-sitter grammars: opting into some and not
others, relying on the distro's grammars rather than compiling them
themselves, and so on. So we made it opt-in as Eli stated.
I'm also guessing there'll be some friction for users not used to the
tree-sitter shenanigans once eglot exposes this rendering option, so
making it opt-in would help keep the bug reports under control too.
Feedback like the one we got in this thread is wonderfully enlightening,
so if we first keep it to users who opt in, I think we should still make
markdown-ts an opt-in option for the renderer and keep collecting users'
feedback.
The branch is recreated off emacs-31 so it sits cleanly on top of the
eglot-documentation-renderer change (at least the one I pulled from the
morning):n
branch: 'markdown-ts-mode-faster'
https://github.com/LionyxML/emacs-mirror/tree/feat/markdown-ts-mode-faster
Two separated commits, one for eglot and one for markdown-ts-mode.
https://github.com/LionyxML/emacs-mirror/commits/feat/markdown-ts-mode-fa=
ster/
Small note, this branch also has another small bug fix: bug#81118, the
bug#81150 suggested changes acumulate after that one.
The patches applied on the mirror branch are also attached.
Thanks, and sorry again for dropping off the thread today.
--=20
Rahul
--=-=-=
Content-Type: application/octet-stream; charset=utf-8
Content-Disposition: attachment;
filename=0001-eglot-Use-fast-renderer-for-markup-bug-81150.patch
Content-Transfer-Encoding: base64
RnJvbSBjNGZhZTUzNDlmMGU0NWY1YzczNGJkM2IyNzQxNTZmY2FmN2U0MWI1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBSYWh1bCBNYXJ0aW0gSnVsaWF0byA8cmFodWwuanVsaWF0b0Bn
bWFpbC5jb20+CkRhdGU6IFN1biwgMzEgTWF5IDIwMjYgMTE6NTI6NDggLTAzMDAKU3ViamVjdDog
W1BBVENIIDEvMl0gZWdsb3Q6IFVzZSBmYXN0IHJlbmRlcmVyIGZvciBtYXJrdXAgKGJ1ZyM4MTE1
MCkKCldoZW4gbWFya2Rvd24tdHMtdmlldy1tb2RlIGlzIHRoZSBkb2N1bWVudGF0aW9uIHJlbmRl
cmVyLApmb250aWZ5IG1hcmt1cCB0aHJvdWdoIG1hcmtkb3duLXRzLXJlbmRlci1tYXJrdXAsIHdo
aWNoIHJldXNlcwpvbmUgYnVmZmVyIGFuZCBjYWNoZXMgcmVzdWx0cywgaW5zdGVhZCBvZiBhIGZy
ZXNoIG1ham9yLW1vZGUKYnVmZmVyIHBlciBmcmFnbWVudDsgYW5kIHVzZSBpdHMgY2FjaGVkIGF2
YWlsYWJpbGl0eSBjaGVjawppbnN0ZWFkIG9mIHByb2JpbmcgdGhlIGdyYW1tYXIgb24gZXZlcnkg
Y2FsbC4KCiogbGlzcC9wcm9nbW9kZXMvZWdsb3QuZWwgKGVnbG90LS1mb3JtYXQtbWFya3VwKTog
V2hlbiB0aGUKcmVuZGVyZXIgaXMgJ21hcmtkb3duLXRzLXZpZXctbW9kZScsIHJlbmRlciB2aWEK
J21hcmtkb3duLXRzLXJlbmRlci1tYXJrdXAnIHdoZW4gYXZhaWxhYmxlLCBmYWxsaW5nIGJhY2sg
dG8gdGhlCnRocm93YXdheSBidWZmZXIgb3RoZXJ3aXNlLiAgKGVnbG90LS1idWlsdGluLW1kb3du
LXApOiBVc2UKJ21hcmtkb3duLXRzLWF2YWlsYWJsZS1wJyB3aGVuIGF2YWlsYWJsZS4gIE1vdmUg
aXRzIGRlZmluaXRpb24KYmVmb3JlICdlZ2xvdC1kb2N1bWVudGF0aW9uLXJlbmRlcmVyJywgd2hv
c2UgZGVmYXVsdCBjYWxscyBpdCwKc28gbG9hZGluZyBlZ2xvdC5lbCBkb2VzIG5vdCBzaWduYWwg
YSB2b2lkLWZ1bmN0aW9uLgotLS0KIGxpc3AvcHJvZ21vZGVzL2VnbG90LmVsIHwgMzMgKysrKysr
KysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTkgaW5zZXJ0aW9u
cygrKSwgMTQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGlzcC9wcm9nbW9kZXMvZWdsb3Qu
ZWwgYi9saXNwL3Byb2dtb2Rlcy9lZ2xvdC5lbAppbmRleCA1MDRhNWUxMjExMi4uMThkY2ZmYTUz
NTUgMTAwNjQ0Ci0tLSBhL2xpc3AvcHJvZ21vZGVzL2VnbG90LmVsCisrKyBiL2xpc3AvcHJvZ21v
ZGVzL2VnbG90LmVsCkBAIC01MzcsNiArNTM3LDE1IEBAIGVnbG90LWV4dGVuZC10by14cmVmCiAg
ICJJZiBub24tbmlsLCBhY3RpdmF0ZSBFZ2xvdCBpbiBjcm9zcy1yZWZlcmVuY2VkIG5vbi1wcm9q
ZWN0IGZpbGVzLiIKICAgOnR5cGUgJ2Jvb2xlYW4pCiAKKyhkZWNsYXJlLWZ1bmN0aW9uIHRyZWVz
aXQtZ3JhbW1hci1sb2NhdGlvbiAidHJlZXNpdC5jIikKKworKGRlZnVuIGVnbG90LS1idWlsdGlu
LW1kb3duLXAgKCkKKyAgKGlmIChmYm91bmRwICdtYXJrZG93bi10cy1hdmFpbGFibGUtcCkKKyAg
ICAgIChtYXJrZG93bi10cy1hdmFpbGFibGUtcCkKKyAgICAoYW5kIChmYm91bmRwICdtYXJrZG93
bi10cy12aWV3LW1vZGUpCisgICAgICAgICAoZmJvdW5kcCAndHJlZXNpdC1ncmFtbWFyLWxvY2F0
aW9uKQorICAgICAgICAgKHRyZWVzaXQtZ3JhbW1hci1sb2NhdGlvbiAnbWFya2Rvd24pKSkpCisK
IChkZWZjdXN0b20gZWdsb3QtZG9jdW1lbnRhdGlvbi1yZW5kZXJlciAoY29uZCAoKGVnbG90LS1i
dWlsdGluLW1kb3duLXApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdtYXJrZG93bi10cy12aWV3LW1vZGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKChmYm91bmRwICdnZm0tdmlldy1tb2RlKQpAQCAtNzM4LDEz
ICs3NDcsNiBAQCBlZ2xvdC0tZXhlY3V0YWJsZS1maW5kCiAgIChpZiAoPj0gZW1hY3MtbWFqb3It
dmVyc2lvbiAyNykgKGV4ZWN1dGFibGUtZmluZCBjb21tYW5kIHJlbW90ZSkKICAgICAoZXhlY3V0
YWJsZS1maW5kIGNvbW1hbmQpKSkKIAotKGRlY2xhcmUtZnVuY3Rpb24gdHJlZXNpdC1ncmFtbWFy
LWxvY2F0aW9uICJ0cmVlc2l0LmMiKQotCi0oZGVmdW4gZWdsb3QtLWJ1aWx0aW4tbWRvd24tcCAo
KQotICAoYW5kIChmYm91bmRwICdtYXJrZG93bi10cy12aWV3LW1vZGUpCi0gICAgICAgKGZib3Vu
ZHAgJ3RyZWVzaXQtZ3JhbW1hci1sb2NhdGlvbikKLSAgICAgICAodHJlZXNpdC1ncmFtbWFyLWxv
Y2F0aW9uICdtYXJrZG93bikpKQotCiAoZGVmdW4gZWdsb3QtLWFjY2VwdGVkLWZvcm1hdHMgKCkK
ICAgKGlmIChhbmQgKG5vdCAoZXEgdCBlZ2xvdC1kb2N1bWVudGF0aW9uLXJlbmRlcmVyKSkKICAg
ICAgICAgICAgKG9yIChmYm91bmRwICdnZm0tdmlldy1tb2RlKSAoZWdsb3QtLWJ1aWx0aW4tbWRv
d24tcCkpKQpAQCAtMjI5MiwxMyArMjI5NCwxNiBAQCBlZ2xvdC0tZm9ybWF0LW1hcmt1cAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJtYXJrZG93biIgbmlsKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKCJwbGFpbnRleHQiICd0ZXh0LW1vZGUpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoXyBtYWpvci1tb2RlKSkpKSkpCi0gICAgKHdpdGgtdGVtcC1idWZm
ZXIKLSAgICAgIChzZXRxLWxvY2FsIG1hcmtkb3duLWZvbnRpZnktY29kZS1ibG9ja3MtbmF0aXZl
bHkgdCkKLSAgICAgIChpbnNlcnQgc3RyaW5nKQotICAgICAgKGxldCAoKGluaGliaXQtbWVzc2Fn
ZSB0KSAobWVzc2FnZS1sb2ctbWF4IG5pbCkpCi0gICAgICAgIChpZ25vcmUtZXJyb3JzIChkZWxh
eS1tb2RlLWhvb2tzIChmdW5jYWxsIHJlbmRlcikpKQotICAgICAgICAoZm9udC1sb2NrLWVuc3Vy
ZSkKLSAgICAgICAgKHN0cmluZy10cmltIChmdW5jYWxsIGV4dHJhY3QpKSkpKSkKKyAgICAoaWYg
KGFuZCAoZXEgcmVuZGVyICMnbWFya2Rvd24tdHMtdmlldy1tb2RlKQorICAgICAgICAgICAgIChm
Ym91bmRwICdtYXJrZG93bi10cy1yZW5kZXItbWFya3VwKSkKKyAgICAgICAgKHN0cmluZy10cmlt
IChtYXJrZG93bi10cy1yZW5kZXItbWFya3VwIHN0cmluZykpCisgICAgICAod2l0aC10ZW1wLWJ1
ZmZlcgorICAgICAgICAoc2V0cS1sb2NhbCBtYXJrZG93bi1mb250aWZ5LWNvZGUtYmxvY2tzLW5h
dGl2ZWx5IHQpCisgICAgICAgIChpbnNlcnQgc3RyaW5nKQorICAgICAgICAobGV0ICgoaW5oaWJp
dC1tZXNzYWdlIHQpIChtZXNzYWdlLWxvZy1tYXggbmlsKSkKKyAgICAgICAgICAoaWdub3JlLWVy
cm9ycyAoZGVsYXktbW9kZS1ob29rcyAoZnVuY2FsbCByZW5kZXIpKSkKKyAgICAgICAgICAoZm9u
dC1sb2NrLWVuc3VyZSkKKyAgICAgICAgICAoc3RyaW5nLXRyaW0gKGZ1bmNhbGwgZXh0cmFjdCkp
KSkpKSkKIAogKGRlZnVuIGVnbG90LS1yZWFkLXNlcnZlciAocHJvbXB0ICZvcHRpb25hbCBkb250
LWlmLWp1c3QtdGhlLW9uZSkKICAgIlJlYWQgYSBydW5uaW5nIEVnbG90IHNlcnZlciBmcm9tIG1p
bmlidWZmZXIgdXNpbmcgUFJPTVBULgotLSAKMi41NC4wCgo=
--=-=-=
Content-Type: application/octet-stream; charset=utf-8
Content-Disposition: attachment;
filename=0002-markdown-ts-mode-Add-faster-renderer-bug-81150.patch
Content-Transfer-Encoding: base64
RnJvbSA5OTNhNDlhMjVhMzViMmI3OTBhODBiNDFiY2ZhMzE1ODRiNzNlMGVmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBSYWh1bCBNYXJ0aW0gSnVsaWF0byA8cmFodWwuanVsaWF0b0Bn
bWFpbC5jb20+CkRhdGU6IFN1biwgMzEgTWF5IDIwMjYgMTE6NTE6NTMgLTAzMDAKU3ViamVjdDog
W1BBVENIIDIvMl0gbWFya2Rvd24tdHMtbW9kZTogQWRkIGZhc3RlciByZW5kZXJlciAoYnVnIzgx
MTUwKQoKRWdsb3QgZm9udGlmaWVzIGVhY2ggTFNQIG1hcmt1cCBmcmFnbWVudCBpbiBhIGZyZXNo
IG1ham9yLW1vZGUKYnVmZmVyLiAgT24gbGFyZ2Ugc2lnbmF0dXJlcyAofjIwMCBmcmFnbWVudHMp
IHRyZWUtc2l0dGVyJ3MKcGVyLWJ1ZmZlciBwYXJzZXIgc2V0dXAgZG9taW5hdGVkIGFuZCBmcm96
ZSBFbWFjcy4gIFJlbmRlcgp0aHJvdWdoIGEgc2luZ2xlIGJ1ZmZlciB0aGF0IGlzIGluaXRpYWxp
emVkIG9uY2UgYW5kIHJldXNlZCwKY2FjaGUgdGhlIHJlc3VsdHMsIGFuZCBjYWNoZSB0aGUgcG9z
aXRpdmUgZ3JhbW1hci1hdmFpbGFiaWxpdHkKY2hlY2ssIHNvIHJlcGVhdGVkIGFuZCBkdXBsaWNh
dGUgZnJhZ21lbnRzIGNvc3QgbGl0dGxlIG9yCm5vdGhpbmcuCgoqIGxpc3AvdGV4dG1vZGVzL21h
cmtkb3duLXRzLW1vZGUuZWwgKG1hcmtkb3duLXRzLXJlbmRlci1tb2RlKToKTmV3IG1vZGUsIGEg
cmVhZC1vbmx5IGJhdGNoIHJlbmRlcmVyIHRoYXQgc2tpcHMgaW1lbnUsIG91dGxpbmUsCmVtYmVk
ZGVkIGdyYW1tYXJzIGFuZCBmb2xkaW5nLCBhbmQgbmV2ZXIgaW5zdGFsbHMgdHJlZS1zaXR0ZXIK
Z3JhbW1hcnMuCihtYXJrZG93bi10cy1yZW5kZXItbWFya3VwKTogTmV3IGZ1bmN0aW9uOyBmb250
aWZ5IGEgbWFya3VwCnN0cmluZyB2aWEgdGhlIHJldXNlZCByZW5kZXIgYnVmZmVyLCB3aXRoIGFu
IG9wdGlvbmFsIE5PLUNBQ0hFCmFyZ3VtZW50LgoobWFya2Rvd24tdHMtLXJlbmRlci1tYXJrdXAt
MSk6IE5ldyBpbnRlcm5hbCB3b3JrZXIuCihtYXJrZG93bi10cy1hdmFpbGFibGUtcCk6IE5ldyBm
dW5jdGlvbjsgY2FjaGVkCmdyYW1tYXItYXZhaWxhYmlsaXR5IGNoZWNrLCBjYWNoZXMgb25seSB0
aGUgcG9zaXRpdmUgcmVzdWx0LgoobWFya2Rvd24tdHMtcmVuZGVyLXJlc2V0KTogTmV3IGNvbW1h
bmQ7IGRpc2NhcmQgdGhlIHJlbmRlcgpidWZmZXIgYW5kIHJlc3VsdCBjYWNoZSBzbyB0aGUgbmV4
dCByZW5kZXIgcmVidWlsZHMuCihtYXJrZG93bi10cy1yZW5kZXItY2FjaGUtbGltaXQpCihtYXJr
ZG93bi10cy1yZW5kZXItY2FjaGUtbWF4aW11bS1zdHJpbmctbGVuZ3RoKTogTmV3IG9wdGlvbnMu
CihtYXJrZG93bi10cy0tZ3JhbW1hcnMtcmVhZHksIG1hcmtkb3duLXRzLS1yZW5kZXItYnVmZmVy
KQoobWFya2Rvd24tdHMtLXJlbmRlci1idWZmZXItbmFtZSwgbWFya2Rvd24tdHMtLXJlbmRlci1j
YWNoZSk6Ck5ldyB2YXJpYWJsZXMuCihtYXJrZG93bi10cy0tc2V0LXVwLCBtYXJrZG93bi10cy1t
b2RlLS1pbml0aWFsaXplKTogQWRkIEJBVENICmFyZ3VtZW50OyB3aGVuIG5vbi1uaWwsIHNraXAg
dGhlIGludGVyYWN0aXZlLW9ubHkgc2V0dXAuICBNb3ZlCnRoYXQgbGVhbmVyIHNldHVwIG91dCBv
ZiAnbWFya2Rvd24tdHMtdmlldy1tb2RlJywgd2hpY2gga2VlcHMKaXRzIGZ1bGwgZmVhdHVyZSBz
ZXQuCi0tLQogbGlzcC90ZXh0bW9kZXMvbWFya2Rvd24tdHMtbW9kZS5lbCB8IDQwNiArKysrKysr
KysrKysrKysrKysrKy0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDI4MCBpbnNlcnRpb25zKCsp
LCAxMjYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGlzcC90ZXh0bW9kZXMvbWFya2Rvd24t
dHMtbW9kZS5lbCBiL2xpc3AvdGV4dG1vZGVzL21hcmtkb3duLXRzLW1vZGUuZWwKaW5kZXggZmI4
OTVjOTIzMWYuLjA5ZWJhNzdiYjQ3IDEwMDY0NAotLS0gYS9saXNwL3RleHRtb2Rlcy9tYXJrZG93
bi10cy1tb2RlLmVsCisrKyBiL2xpc3AvdGV4dG1vZGVzL21hcmtkb3duLXRzLW1vZGUuZWwKQEAg
LTc4NCw2ICs3ODQsOSBAQCBtYXJrZG93bi10cy10YXNrLWNoZWNrZWQKIChkZWZ2YXIgbWFya2Rv
d24tdHMtLXNldC11cC1pbmxpbmUgbmlsCiAgICJMZXQgYmluZCB0aGlzIHRvIG5vbi1uaWwgZm9y
IGlubGluZSBgbWFya2Rvd24tdHMtbW9kZScgYnVmZmVycy4iKQogCisoZGVmdmFyIG1hcmtkb3du
LXRzLS1ncmFtbWFycy1yZWFkeSBuaWwKKyAgIk5vbi1uaWwgaWYgYG1hcmtkb3duJyBhbmQgYG1h
cmtkb3duLWlubGluZScgZ3JhbW1hcnMgYXJlIGF2YWlsYWJsZS4iKQorCiAoZGVmdmFyIG1hcmtk
b3duLXRzLWNvZGUtYmxvY2stbW9kZXMKICAgYCgoc2ggYmFzaC10cy1tb2RlKQogICAgIChzaGVs
bCBiYXNoLXRzLW1vZGUpCkBAIC01MjA5LDExICs1MjEyLDE0IEBAIG1hcmtkb3duLXRzLW1vZGUt
bWVudQogICAgICBbIkV4cG9ydCB0YWJsZSB0byBDU1YiICAgICAgbWFya2Rvd24tdHMtdGFibGUt
ZXhwb3J0LXRhYmxlLWNzdiAgICAgOmhlbHAgIkV4cG9ydCB0aGUgdGFibGUgYXQgcG9pbnQgdG8g
YSBjb21tYS1zZXBhcmF0ZWQgdmFsdWVzIGJ1ZmZlciJdCiAgICAgIFsiRXhwb3J0IHRhYmxlIHRv
IFRTViIgICAgICBtYXJrZG93bi10cy10YWJsZS1leHBvcnQtdGFibGUtdHN2ICAgICA6aGVscCAi
RXhwb3J0IHRoZSB0YWJsZSBhdCBwb2ludCB0byBhIHRhYi1zZXBhcmF0ZWQgdmFsdWVzIGJ1ZmZl
ciJdKSkpCiAKLShkZWZ1biBtYXJrZG93bi10cy0tc2V0LXVwICgpCisoZGVmdW4gbWFya2Rvd24t
dHMtLXNldC11cCAoYmF0Y2gpCiAgICJTZXQgdXAgdGhlIGJ1ZmZlciBmb3IgYG1hcmtkb3duLXRz
LW1vZGUnLgogSWYgYG1hcmtkb3duLXRzLS1zZXQtdXAtaW5saW5lJyBpcyBub24tbmlsLCB1c2Ug
YSBsaWdodHdlaWdodCBzZXQgdXAgZm9yCiBlbWJlZGRlZCBpbmxpbmUgYG1hcmtkb3duLXRzLW1v
ZGUnIGJ1ZmZlcnMuCiAKK0lmIEJBVENIIGlzIG5vbi1uaWwsIGF2b2lkIHNldCB1cCBjb3N0cyBm
b3IgaW50ZXJhY3RpdmUgZmVhdHVyZXMgc3VjaCBhcworYGltZW51JyBhbmQgYG91dGxpbmUtbW9k
ZScgYW5kIG9wdGlvbmFsIGB0cmVlc2l0JyBncmFtbWFycy4KKwogTk9URTogQ2FsbCB0aGlzIGZ1
bmN0aW9uIG9ubHkgd2hlbiB0aGUgdHJlZXNpdCBgbWFya2Rvd24nIGFuZAogYG1hcmtkb3duLWlu
bGluZScgcGFyc2VycyBhcmUgYXZhaWxhYmxlLiIKIApAQCAtNTI1NiwxMDggKzUyNjIsMTE3IEBA
IG1hcmtkb3duLXRzLS1zZXQtdXAKICAgICAgICAgIDs7IFJhbmdlIHNldHRpbmdzIGRpZmZlciBp
biB0aGUgbWFzdGVyIGJ1ZmZlciB2cy4gaW5saW5lIGFib3ZlLgogICAgICAgICAgKHNldHEtbG9j
YWwgdHJlZXNpdC1yYW5nZS1zZXR0aW5ncyAobWFya2Rvd24tdHMtLXJhbmdlLXNldHRpbmdzKSkK
IAotICAgICAgICAgOzsgQ29uZmlndXJlIGZlYXR1cmVzIG5lZWRlZCBvbmx5IGluIHRoZSBtYXN0
ZXIgYnVmZmVyLgotCi0gICAgICAgICA7OyBJbWVudSBzdXBwb3J0LgotICAgICAgICAgKHNldHEt
bG9jYWwgdHJlZXNpdC1zaW1wbGUtaW1lbnUtc2V0dGluZ3MKLSAgICAgICAgICAgICAgICAgICAg
IGAoKCJIZWFkaW5ncyIgLCMnbWFya2Rvd24tdHMtLWltZW51LWhlYWRpbmctbm9kZS1wCi0gICAg
ICAgICAgICAgICAgICAgICAgICBuaWwgLCMnbWFya2Rvd24tdHMtLWltZW51LWhlYWRpbmctbmFt
ZS1mdW5jdGlvbikKLSAgICAgICAgICAgICAgICAgICAgICAgKCJDb2RlIEJsb2NrcyIgLCMnbWFy
a2Rvd24tdHMtLWltZW51LWNvZGUtYmxvY2stbm9kZS1wCi0gICAgICAgICAgICAgICAgICAgICAg
ICBuaWwgLCMnbWFya2Rvd24tdHMtLWltZW51LWNvZGUtYmxvY2stbmFtZS1mdW5jdGlvbikpKQot
Ci0gICAgICAgICA7OyBPdXRsaW5lIHN1cHBvcnQuCi0gICAgICAgICAoc2V0cS1sb2NhbCB0cmVl
c2l0LW91dGxpbmUtcHJlZGljYXRlICMnbWFya2Rvd24tdHMtLW91dGxpbmUtcHJlZGljYXRlKQot
ICAgICAgICAgKHNldHEtbG9jYWwgb3V0bGluZS1taW5vci1tb2RlLWN5Y2xlIHQpCi0gICAgICAg
ICAob3V0bGluZS1taW5vci1tb2RlIDEpCi0gICAgICAgICAobWFya2Rvd24tdHMtLWFwcGx5LWVs
bGlwc2lzKQotCi0gICAgICAgICA7OyBOT1RFOiBgb3V0bGluZS12aWV3LWNoYW5nZS1ob29rJyB3
YXMgb2Jzb2xldGVkIGluIDI5LjEgKGNvbW1pdAotICAgICAgICAgOzsgNTNiMWU2Zjk2Y2IpIG9u
IHRoZSBncm91bmRzIHRoYXQgb25seSBsYXp5LWxvY2sgdXNlZCBpdCwgYnV0IG5vCi0gICAgICAg
ICA7OyByZXBsYWNlbWVudCB3YXMgcHJvdmlkZWQgYW5kIG91dGxpbmUuZWwgaXRzZWxmIHN0aWxs
IHJ1bnMgdGhlIGhvb2sKLSAgICAgICAgIDs7IGluIDEwKyBwbGFjZXMuCi0gICAgICAgICAod2l0
aC1zdXBwcmVzc2VkLXdhcm5pbmdzICgob2Jzb2xldGUgb3V0bGluZS12aWV3LWNoYW5nZS1ob29r
KSkKLSAgICAgICAgICAgKGFkZC1ob29rICdvdXRsaW5lLXZpZXctY2hhbmdlLWhvb2sKLSAgICAg
ICAgICAgICAgICAgICAgICMnbWFya2Rvd24tdHMtLW91dGxpbmUtdmlldy1jaGFuZ2UgbmlsIHQp
KQotCi0gICAgICAgICAocHJvZ24KLSAgICAgICAgICAgKG1ha2UtbG9jYWwtdmFyaWFibGUgJ2Zv
bnQtbG9jay1leHRyYS1tYW5hZ2VkLXByb3BzKQotICAgICAgICAgICAoZG9saXN0IChwcm9wICco
aW52aXNpYmxlIGRpc3BsYXkgYnV0dG9uIGNhdGVnb3J5IGFjdGlvbiBoZWxwLWVjaG8pKQotICAg
ICAgICAgICAgIChhZGQtdG8tbGlzdCAnZm9udC1sb2NrLWV4dHJhLW1hbmFnZWQtcHJvcHMgcHJv
cCkpKQotCi0gICAgICAgICAod2hlbiAodHJlZXNpdC1yZWFkeS1wICdodG1sIHQpCi0gICAgICAg
ICAgICh0cmVlc2l0LXBhcnNlci1jcmVhdGUgJ2h0bWwpCi0gICAgICAgICAgIChyZXF1aXJlICdo
dG1sLXRzLW1vZGUpCi0gICAgICAgICAgIChkZWZ2YXIgaHRtbC10cy1tb2RlLS1mb250LWxvY2st
c2V0dGluZ3MpCi0gICAgICAgICAgIChkZWZ2YXIgaHRtbC10cy1tb2RlLS10cmVlc2l0LWZvbnQt
bG9jay1mZWF0dXJlLWxpc3QpCi0gICAgICAgICAgIChzZXRxLWxvY2FsIHRyZWVzaXQtZm9udC1s
b2NrLXNldHRpbmdzCi0gICAgICAgICAgICAgICAgICAgICAgIChhcHBlbmQgdHJlZXNpdC1mb250
LWxvY2stc2V0dGluZ3MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodG1sLXRzLW1v
ZGUtLWZvbnQtbG9jay1zZXR0aW5ncykpCi0gICAgICAgICAgIChzZXRxLWxvY2FsIHRyZWVzaXQt
Zm9udC1sb2NrLWZlYXR1cmUtbGlzdAotICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1t
ZXJnZS1mb250LWxvY2stZmVhdHVyZS1saXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICB0cmVl
c2l0LWZvbnQtbG9jay1mZWF0dXJlLWxpc3QKLSAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwt
dHMtbW9kZS0tdHJlZXNpdC1mb250LWxvY2stZmVhdHVyZS1saXN0KSkKLSAgICAgICAgICAgKHNl
dHEtbG9jYWwgdHJlZXNpdC1yYW5nZS1zZXR0aW5ncwotICAgICAgICAgICAgICAgICAgICAgICAo
YXBwZW5kIHRyZWVzaXQtcmFuZ2Utc2V0dGluZ3MKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAodHJlZXNpdC1yYW5nZS1ydWxlcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA6ZW1iZWQgJ2h0bWwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmhvc3QgJ21h
cmtkb3duCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpsb2NhbCB0Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICcoKGh0bWxfYmxvY2spIEBodG1sKQotCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDplbWJlZCAnaHRtbAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA6aG9zdCAnbWFya2Rvd24taW5saW5lCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICcoKGh0bWxfdGFnKSBAaHRtbCkpKSkpCi0KLSAgICAgICAgICh3aGVuICh0
cmVlc2l0LXJlYWR5LXAgJ3lhbWwgdCkKLSAgICAgICAgICAgKHJlcXVpcmUgJ3lhbWwtdHMtbW9k
ZSkKLSAgICAgICAgICAgKGRlZnZhciB5YW1sLXRzLW1vZGUtLWZvbnQtbG9jay1zZXR0aW5ncykK
LSAgICAgICAgICAgKGRlZnZhciB5YW1sLXRzLW1vZGUtLWZvbnQtbG9jay1mZWF0dXJlLWxpc3Qp
Ci0gICAgICAgICAgIChzZXRxLWxvY2FsIHRyZWVzaXQtZm9udC1sb2NrLXNldHRpbmdzCi0gICAg
ICAgICAgICAgICAgICAgICAgIChhcHBlbmQgdHJlZXNpdC1mb250LWxvY2stc2V0dGluZ3MKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5YW1sLXRzLW1vZGUtLWZvbnQtbG9jay1zZXR0
aW5ncykpCi0gICAgICAgICAgIChzZXRxLWxvY2FsIHRyZWVzaXQtZm9udC1sb2NrLWZlYXR1cmUt
bGlzdAotICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1tZXJnZS1mb250LWxvY2stZmVh
dHVyZS1saXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICB0cmVlc2l0LWZvbnQtbG9jay1mZWF0
dXJlLWxpc3QKLSAgICAgICAgICAgICAgICAgICAgICAgIHlhbWwtdHMtbW9kZS0tZm9udC1sb2Nr
LWZlYXR1cmUtbGlzdCkpCi0gICAgICAgICAgIChzZXRxLWxvY2FsIHRyZWVzaXQtcmFuZ2Utc2V0
dGluZ3MKLSAgICAgICAgICAgICAgICAgICAgICAgKGFwcGVuZCB0cmVlc2l0LXJhbmdlLXNldHRp
bmdzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtcmFuZ2UtcnVsZXMK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmVtYmVkICd5YW1sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDpob3N0ICdtYXJrZG93bgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA6bG9jYWwgdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
KChtaW51c19tZXRhZGF0YSkgQHlhbWwpKSkpKQotCi0gICAgICAgICAod2hlbiAodHJlZXNpdC1y
ZWFkeS1wICd0b21sIHQpCi0gICAgICAgICAgIChyZXF1aXJlICd0b21sLXRzLW1vZGUpCi0gICAg
ICAgICAgIChkZWZ2YXIgdG9tbC10cy1tb2RlLS1mb250LWxvY2stc2V0dGluZ3MpCi0gICAgICAg
ICAgIChkZWZ2YXIgdG9tbC10cy1tb2RlLS1mb250LWxvY2stZmVhdHVyZS1saXN0KQotICAgICAg
ICAgICAoc2V0cSB0cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5ncwotICAgICAgICAgICAgICAgICAo
YXBwZW5kIHRyZWVzaXQtZm9udC1sb2NrLXNldHRpbmdzCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgdG9tbC10cy1tb2RlLS1mb250LWxvY2stc2V0dGluZ3MpKQotICAgICAgICAgICAoc2V0cS1s
b2NhbCB0cmVlc2l0LWZvbnQtbG9jay1mZWF0dXJlLWxpc3QKLSAgICAgICAgICAgICAgICAgICAg
ICAgKHRyZWVzaXQtbWVyZ2UtZm9udC1sb2NrLWZlYXR1cmUtbGlzdAotICAgICAgICAgICAgICAg
ICAgICAgICAgdHJlZXNpdC1mb250LWxvY2stZmVhdHVyZS1saXN0Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB0b21sLXRzLW1vZGUtLWZvbnQtbG9jay1mZWF0dXJlLWxpc3QpKQotICAgICAgICAg
ICAoc2V0cS1sb2NhbCB0cmVlc2l0LXJhbmdlLXNldHRpbmdzCi0gICAgICAgICAgICAgICAgICAg
ICAgIChhcHBlbmQgdHJlZXNpdC1yYW5nZS1zZXR0aW5ncwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICh0cmVlc2l0LXJhbmdlLXJ1bGVzCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDplbWJlZCAndG9tbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6aG9z
dCAnbWFya2Rvd24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmxvY2FsIHQKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJygocGx1c19tZXRhZGF0YSkgQHRvbWwpKSkp
KQotCi0gICAgICAgICA7OyBTdXBwb3J0IGZvciBleGVjdXRpbmcgY29tbWFuZHMgaW4gYSBjb2Rl
LWJsb2NrIGNvbnRleHQuCi0gICAgICAgICAod2hlbiBtYXJrZG93bi10cy1lbmFibGUtY29kZS1i
bG9jay1jb250ZXh0LW1vZGUKLSAgICAgICAgICAgKG1hcmtkb3duLXRzLWNvZGUtYmxvY2stY29u
dGV4dC1tb2RlKSkKLQotICAgICAgICAgOzsgU3VwcG9ydCBmb3IgdGFibGUgbW9kZS4KLSAgICAg
ICAgICh3aGVuIG1hcmtkb3duLXRzLWVuYWJsZS10YWJsZS1tb2RlCi0gICAgICAgICAgIChtYXJr
ZG93bi10cy10YWJsZS1tb2RlKSkpKQorICAgICAgICAgOzsgYGludmlzaWJsZScvYGRpc3BsYXkn
L2V0Yy4gbXVzdCBiZSBmb250LWxvY2stbWFuYWdlZCBmb3IKKyAgICAgICAgIDs7IGhpZGUtbWFy
a3VwLCB3aGljaCBib3RoIHRoZSBlZGl0aW5nIG1vZGUgYW5kIHRoZSBsZWFuIHZpZXcKKyAgICAg
ICAgIDs7IG1vZGUgdXNlLCBzbyB0aGlzIHJ1bnMgZm9yIHRoZSBtYXN0ZXIgYnVmZmVyIHJlZ2Fy
ZGxlc3MuCisgICAgICAgICAobWFrZS1sb2NhbC12YXJpYWJsZSAnZm9udC1sb2NrLWV4dHJhLW1h
bmFnZWQtcHJvcHMpCisgICAgICAgICAoZG9saXN0IChwcm9wICcoaW52aXNpYmxlIGRpc3BsYXkg
YnV0dG9uIGNhdGVnb3J5IGFjdGlvbiBoZWxwLWVjaG8pKQorICAgICAgICAgICAoYWRkLXRvLWxp
c3QgJ2ZvbnQtbG9jay1leHRyYS1tYW5hZ2VkLXByb3BzIHByb3ApKSkpCisKKyAgOzsgVGhlIGZl
YXR1cmVzIGJlbG93IGFyZSBlZGl0aW5nLW9ubHkuICBgbWFya2Rvd24tdHMtcmVuZGVyLW1vZGUn
ICh1c2VkCisgIDs7IGUuZy4gYnkgRWxkb2MvRWdsb3QgdG8gZm9udGlmeSBzaG9ydCBtYXJrdXAg
c25pcHBldHMgbWFueSB0aW1lcyBwZXIKKyAgOzsgY29tbWFuZCkgc2tpcHMgaW1lbnUsIG91dGxp
bmUsIHRoZSBvcHRpb25hbCBlbWJlZGRlZCBncmFtbWFycywgYW5kIHRoZQorICA7OyB0YWJsZS9j
b2RlLWJsb2NrIGNvbnRleHQgbW9kZXMsIG5vbmUgb2Ygd2hpY2ggYSByZWFkLW9ubHkgcmVuZGVy
IG5lZWRzLgorICA7OyBUaGUgaW50ZXJhY3RpdmUgYG1hcmtkb3duLXRzLXZpZXctbW9kZScga2Vl
cHMgdGhlbSBhbGwuCisgICh1bmxlc3MgKG9yIG1hcmtkb3duLXRzLS1zZXQtdXAtaW5saW5lIGJh
dGNoKQorICAgIDs7IEltZW51IHN1cHBvcnQuCisgICAgKHNldHEtbG9jYWwgdHJlZXNpdC1zaW1w
bGUtaW1lbnUtc2V0dGluZ3MKKyAgICAgICAgICAgICAgICBgKCgiSGVhZGluZ3MiICwjJ21hcmtk
b3duLXRzLS1pbWVudS1oZWFkaW5nLW5vZGUtcAorICAgICAgICAgICAgICAgICAgIG5pbCAsIydt
YXJrZG93bi10cy0taW1lbnUtaGVhZGluZy1uYW1lLWZ1bmN0aW9uKQorICAgICAgICAgICAgICAg
ICAgKCJDb2RlIEJsb2NrcyIgLCMnbWFya2Rvd24tdHMtLWltZW51LWNvZGUtYmxvY2stbm9kZS1w
CisgICAgICAgICAgICAgICAgICAgbmlsICwjJ21hcmtkb3duLXRzLS1pbWVudS1jb2RlLWJsb2Nr
LW5hbWUtZnVuY3Rpb24pKSkKKworICAgIDs7IE91dGxpbmUgc3VwcG9ydC4KKyAgICAoc2V0cS1s
b2NhbCB0cmVlc2l0LW91dGxpbmUtcHJlZGljYXRlICMnbWFya2Rvd24tdHMtLW91dGxpbmUtcHJl
ZGljYXRlKQorICAgIChzZXRxLWxvY2FsIG91dGxpbmUtbWlub3ItbW9kZS1jeWNsZSB0KQorICAg
IChvdXRsaW5lLW1pbm9yLW1vZGUgMSkKKyAgICAobWFya2Rvd24tdHMtLWFwcGx5LWVsbGlwc2lz
KQorCisgICAgOzsgTk9URTogYG91dGxpbmUtdmlldy1jaGFuZ2UtaG9vaycgd2FzIG9ic29sZXRl
ZCBpbiAyOS4xIChjb21taXQKKyAgICA7OyA1M2IxZTZmOTZjYikgb24gdGhlIGdyb3VuZHMgdGhh
dCBvbmx5IGxhenktbG9jayB1c2VkIGl0LCBidXQgbm8KKyAgICA7OyByZXBsYWNlbWVudCB3YXMg
cHJvdmlkZWQgYW5kIG91dGxpbmUuZWwgaXRzZWxmIHN0aWxsIHJ1bnMgdGhlIGhvb2sKKyAgICA7
OyBpbiAxMCsgcGxhY2VzLgorICAgICh3aXRoLXN1cHByZXNzZWQtd2FybmluZ3MgKChvYnNvbGV0
ZSBvdXRsaW5lLXZpZXctY2hhbmdlLWhvb2spKQorICAgICAgKGFkZC1ob29rICdvdXRsaW5lLXZp
ZXctY2hhbmdlLWhvb2sKKyAgICAgICAgICAgICAgICAjJ21hcmtkb3duLXRzLS1vdXRsaW5lLXZp
ZXctY2hhbmdlIG5pbCB0KSkKKworICAgICh3aGVuICh0cmVlc2l0LXJlYWR5LXAgJ2h0bWwgdCkK
KyAgICAgICh0cmVlc2l0LXBhcnNlci1jcmVhdGUgJ2h0bWwpCisgICAgICAocmVxdWlyZSAnaHRt
bC10cy1tb2RlKQorICAgICAgKGRlZnZhciBodG1sLXRzLW1vZGUtLWZvbnQtbG9jay1zZXR0aW5n
cykKKyAgICAgIChkZWZ2YXIgaHRtbC10cy1tb2RlLS10cmVlc2l0LWZvbnQtbG9jay1mZWF0dXJl
LWxpc3QpCisgICAgICAoc2V0cS1sb2NhbCB0cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5ncworICAg
ICAgICAgICAgICAgICAgKGFwcGVuZCB0cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5ncworICAgICAg
ICAgICAgICAgICAgICAgICAgICBodG1sLXRzLW1vZGUtLWZvbnQtbG9jay1zZXR0aW5ncykpCisg
ICAgICAoc2V0cS1sb2NhbCB0cmVlc2l0LWZvbnQtbG9jay1mZWF0dXJlLWxpc3QKKyAgICAgICAg
ICAgICAgICAgICh0cmVlc2l0LW1lcmdlLWZvbnQtbG9jay1mZWF0dXJlLWxpc3QKKyAgICAgICAg
ICAgICAgICAgICB0cmVlc2l0LWZvbnQtbG9jay1mZWF0dXJlLWxpc3QKKyAgICAgICAgICAgICAg
ICAgICBodG1sLXRzLW1vZGUtLXRyZWVzaXQtZm9udC1sb2NrLWZlYXR1cmUtbGlzdCkpCisgICAg
ICAoc2V0cS1sb2NhbCB0cmVlc2l0LXJhbmdlLXNldHRpbmdzCisgICAgICAgICAgICAgICAgICAo
YXBwZW5kIHRyZWVzaXQtcmFuZ2Utc2V0dGluZ3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
KHRyZWVzaXQtcmFuZ2UtcnVsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDplbWJlZCAn
aHRtbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgOmhvc3QgJ21hcmtkb3duCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICA6bG9jYWwgdAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
JygoaHRtbF9ibG9jaykgQGh0bWwpCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDplbWJl
ZCAnaHRtbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgOmhvc3QgJ21hcmtkb3duLWlubGlu
ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgJygoaHRtbF90YWcpIEBodG1sKSkpKSkKKwor
ICAgICh3aGVuICh0cmVlc2l0LXJlYWR5LXAgJ3lhbWwgdCkKKyAgICAgIChyZXF1aXJlICd5YW1s
LXRzLW1vZGUpCisgICAgICAoZGVmdmFyIHlhbWwtdHMtbW9kZS0tZm9udC1sb2NrLXNldHRpbmdz
KQorICAgICAgKGRlZnZhciB5YW1sLXRzLW1vZGUtLWZvbnQtbG9jay1mZWF0dXJlLWxpc3QpCisg
ICAgICAoc2V0cS1sb2NhbCB0cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5ncworICAgICAgICAgICAg
ICAgICAgKGFwcGVuZCB0cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5ncworICAgICAgICAgICAgICAg
ICAgICAgICAgICB5YW1sLXRzLW1vZGUtLWZvbnQtbG9jay1zZXR0aW5ncykpCisgICAgICAoc2V0
cS1sb2NhbCB0cmVlc2l0LWZvbnQtbG9jay1mZWF0dXJlLWxpc3QKKyAgICAgICAgICAgICAgICAg
ICh0cmVlc2l0LW1lcmdlLWZvbnQtbG9jay1mZWF0dXJlLWxpc3QKKyAgICAgICAgICAgICAgICAg
ICB0cmVlc2l0LWZvbnQtbG9jay1mZWF0dXJlLWxpc3QKKyAgICAgICAgICAgICAgICAgICB5YW1s
LXRzLW1vZGUtLWZvbnQtbG9jay1mZWF0dXJlLWxpc3QpKQorICAgICAgKHNldHEtbG9jYWwgdHJl
ZXNpdC1yYW5nZS1zZXR0aW5ncworICAgICAgICAgICAgICAgICAgKGFwcGVuZCB0cmVlc2l0LXJh
bmdlLXNldHRpbmdzCisgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LXJhbmdlLXJ1
bGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZW1iZWQgJ3lhbWwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDpob3N0ICdtYXJrZG93bgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOmxvY2FsIHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICcoKG1pbnVzX21ldGFkYXRh
KSBAeWFtbCkpKSkpCisKKyAgICAod2hlbiAodHJlZXNpdC1yZWFkeS1wICd0b21sIHQpCisgICAg
ICAocmVxdWlyZSAndG9tbC10cy1tb2RlKQorICAgICAgKGRlZnZhciB0b21sLXRzLW1vZGUtLWZv
bnQtbG9jay1zZXR0aW5ncykKKyAgICAgIChkZWZ2YXIgdG9tbC10cy1tb2RlLS1mb250LWxvY2st
ZmVhdHVyZS1saXN0KQorICAgICAgKHNldHEgdHJlZXNpdC1mb250LWxvY2stc2V0dGluZ3MKKyAg
ICAgICAgICAgIChhcHBlbmQgdHJlZXNpdC1mb250LWxvY2stc2V0dGluZ3MKKyAgICAgICAgICAg
ICAgICAgICAgdG9tbC10cy1tb2RlLS1mb250LWxvY2stc2V0dGluZ3MpKQorICAgICAgKHNldHEt
bG9jYWwgdHJlZXNpdC1mb250LWxvY2stZmVhdHVyZS1saXN0CisgICAgICAgICAgICAgICAgICAo
dHJlZXNpdC1tZXJnZS1mb250LWxvY2stZmVhdHVyZS1saXN0CisgICAgICAgICAgICAgICAgICAg
dHJlZXNpdC1mb250LWxvY2stZmVhdHVyZS1saXN0CisgICAgICAgICAgICAgICAgICAgdG9tbC10
cy1tb2RlLS1mb250LWxvY2stZmVhdHVyZS1saXN0KSkKKyAgICAgIChzZXRxLWxvY2FsIHRyZWVz
aXQtcmFuZ2Utc2V0dGluZ3MKKyAgICAgICAgICAgICAgICAgIChhcHBlbmQgdHJlZXNpdC1yYW5n
ZS1zZXR0aW5ncworICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1yYW5nZS1ydWxl
cworICAgICAgICAgICAgICAgICAgICAgICAgICAgOmVtYmVkICd0b21sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICA6aG9zdCAnbWFya2Rvd24KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IDpsb2NhbCB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAnKChwbHVzX21ldGFkYXRhKSBA
dG9tbCkpKSkpCisKKyAgICA7OyBTdXBwb3J0IGZvciBleGVjdXRpbmcgY29tbWFuZHMgaW4gYSBj
b2RlLWJsb2NrIGNvbnRleHQuCisgICAgKHdoZW4gbWFya2Rvd24tdHMtZW5hYmxlLWNvZGUtYmxv
Y2stY29udGV4dC1tb2RlCisgICAgICAobWFya2Rvd24tdHMtY29kZS1ibG9jay1jb250ZXh0LW1v
ZGUpKQorCisgICAgOzsgU3VwcG9ydCBmb3IgdGFibGUgbW9kZS4KKyAgICAod2hlbiBtYXJrZG93
bi10cy1lbmFibGUtdGFibGUtbW9kZQorICAgICAgKG1hcmtkb3duLXRzLXRhYmxlLW1vZGUpKSkK
IAogICAodHJlZXNpdC1tYWpvci1tb2RlLXNldHVwKQogCi0gIDs7IERvIG5vdCBlbmFibGUgYGpp
dC1sb2NrLW1vZGUnIGluIGluZGlyZWN0IGJ1ZmZlcnMgc3VjaCBhcyB0aGUgb25lCi0gIDs7IHdl
IHVzZSBmb3IgY29kZSBibG9jayBjb21tYW5kcy4KKyAgOzsgTGlua2lmeSBiYXJlIFVSSXMgbGF6
aWx5IHZpYSBqaXQtbG9jay4gIFNraXAgaXQgb25seSBpbiBpbmRpcmVjdAorICA7OyBidWZmZXJz
IChzdWNoIGFzIHRoZSBvbmUgdXNlZCBmb3IgY29kZS1ibG9jayBjb21tYW5kcykuICBUaGUgbGVh
bgorICA7OyByZW5kZXIgcGF0aCBsZWF2ZXMgaXQgcmVnaXN0ZXJlZCBoYXJtbGVzc2x5OiBmb250
aWZpY2F0aW9uIHRoZXJlIGlzCisgIDs7IGRyaXZlbiBieSBgZm9udC1sb2NrLWVuc3VyZScsIHNv
IGppdC1sb2NrIG5ldmVyIHJ1bnMgYW5kIHRoaXMgbmV2ZXIKKyAgOzsgZmlyZXMgLS0gbm8gbmVl
ZCB0byBzcGVjaWFsLWNhc2UgaXQgKGFuZCByaXNrIGZvcmdldHRpbmcgd2UgZGlkKS4KICAgKHVu
bGVzcyAoYnVmZmVyLWJhc2UtYnVmZmVyKQogICAgIChqaXQtbG9jay1yZWdpc3RlciAjJ21hcmtk
b3duLXRzLS1mb250aWZ5LWJhcmUtdXJpKSkKIApAQCAtNTM2OCwxMiArNTM4MywxNCBAQCBtYXJr
ZG93bi10cy0tc2V0LXVwCiAgICAgOzsgY29tbWFuZHMgdGhhdCByZWx5IG9uIGBvdXRsaW5lLXNl
YXJjaC1mdW5jdGlvbicsIHdoaWNoCiAgICAgOzsgYHRyZWVzaXQtbWFqb3ItbW9kZS1zZXR1cCcg
aW5zdGFsbHMgZnJvbSBgdHJlZXNpdC1vdXRsaW5lLXByZWRpY2F0ZScuCiAgICAgKG1hcmtkb3du
LXRzLS1zZXQtaGlkZS1tYXJrdXAgbWFya2Rvd24tdHMtaGlkZS1tYXJrdXApCi0gICAgOzsgUmVz
cGVjdCB0aGUgdXNlcidzIGRlZmF1bHQgb3V0bGluZSBmb2xkaW5nLgotICAgIChwY2FzZSBtYXJr
ZG93bi10cy1kZWZhdWx0LWZvbGRpbmcKLSAgICAgICgnc2hvdy1hbGwgKGlnbm9yZSkpCi0gICAg
ICAoJ2ZvbGQtYWxsIChvdXRsaW5lLWhpZGUtc3VibGV2ZWxzIDEpKQotICAgICAgKCdmb2xkLWhl
YWRpbmdzIChvdXRsaW5lLXNob3ctYWxsKQotICAgICAgICAgICAgICAgICAgICAgIChvdXRsaW5l
LWhpZGUtcmVnaW9uLWJvZHkgKHBvaW50LW1pbikgKHBvaW50LW1heCkpKSkpKQorICAgIDs7IFJl
c3BlY3QgdGhlIHVzZXIncyBkZWZhdWx0IG91dGxpbmUgZm9sZGluZyAob3V0bGluZSBpcyBlZGl0
aW5nLW9ubHksCisgICAgOzsgc28gdGhlIGxlYW4gcmVuZGVyIHBhdGggc2tpcHMgdGhpcykuCisg
ICAgKHVubGVzcyBiYXRjaAorICAgICAgKHBjYXNlIG1hcmtkb3duLXRzLWRlZmF1bHQtZm9sZGlu
ZworICAgICAgICAoJ3Nob3ctYWxsIChpZ25vcmUpKQorICAgICAgICAoJ2ZvbGQtYWxsIChvdXRs
aW5lLWhpZGUtc3VibGV2ZWxzIDEpKQorICAgICAgICAoJ2ZvbGQtaGVhZGluZ3MgKG91dGxpbmUt
c2hvdy1hbGwpCisgICAgICAgICAgICAgICAgICAgICAgICAob3V0bGluZS1oaWRlLXJlZ2lvbi1i
b2R5IChwb2ludC1taW4pIChwb2ludC1tYXgpKSkpKSkpCiAKIChkZWZ1biBtYXJrZG93bi10cy1t
b2RlLWluc3RhbGwtcGFyc2VycyAoYXJnKQogICAiSW5zdGFsbCBgbWFya2Rvd24tdHMtbW9kZScg
dHJlZS1zaXR0ZXIgbGFuZ3VhZ2UgcGFyc2Vycy4KQEAgLTUzOTYsMzMgKzU0MTMsNDEgQEAgbWFy
a2Rvd24tdHMtbW9kZS1pbnN0YWxsLXBhcnNlcnMKICAgICAgIChyZXF1aXJlICd0b21sLXRzLW1v
ZGUpCiAgICAgICAodHJlZXNpdC1pbnN0YWxsLWxhbmd1YWdlLWdyYW1tYXIgJ3RvbWwpKSkpCiAK
LShkZWZ1biBtYXJrZG93bi10cy1tb2RlLS1pbml0aWFsaXplICgpCi0gICJJbnZva2UgdGhpcyBm
cm9tIG1ham9yIG1vZGUgZGVmaW5pdGlvbnMgYWZ0ZXIgbG9jYWwgdmFyaWFibGUgc2V0IHVwLiIK
LSAgKHRyZWVzaXQtZW5zdXJlLWluc3RhbGxlZCAnbWFya2Rvd24pCi0gICh0cmVlc2l0LWVuc3Vy
ZS1pbnN0YWxsZWQgJ21hcmtkb3duLWlubGluZSkKLSAgOzsgQnlwYXNzIGB0cmVlc2l0LW1heC1i
dWZmZXItc2l6ZScgc28gdGhlIG1vZGUgYWN0aXZhdGVzIGluIGxhcmdlCi0gIDs7IGJ1ZmZlcnMg
aW5zdGVhZCBvZiByZWZ1c2luZy4gIGB0cmVlc2l0LXJlYWR5LXAnIHdvdWxkIG90aGVyd2lzZQot
ICA7OyByZWZ1c2UgYW5kIGVtaXQgYSBtaXNsZWFkaW5nICJwYXJzZXJzIG5vdCBmb3VuZCIgbWVz
c2FnZSBldmVuIHdoZW4KLSAgOzsgdGhleSBhcmUgaW5zdGFsbGVkLiAgUmV2aXNpdCBpZiBgdHJl
ZXNpdC1wYXJzZXItY3JlYXRlJyBnYWlucyBpdHMKLSAgOzsgb3duIGJ1ZmZlci1zaXplIGd1YXJk
IChzZWUgYnVnIzgwOTA5KS4KLSAgKGxldCAoKHRyZWVzaXQtbWF4LWJ1ZmZlci1zaXplIG1vc3Qt
cG9zaXRpdmUtZml4bnVtKSkKLSAgICAoY29uZCAoKHRyZWVzaXQtcmVhZHktcCAnKG1hcmtkb3du
IG1hcmtkb3duLWlubGluZSkgdCkKLSAgICAgICAgICAgKG1hcmtkb3duLXRzLS1zZXQtdXApKQot
ICAgICAgICAgICh0Ci0gICAgICAgICAgICh3YXJuICJtYXJrZG93bi10cy1tb2RlIGNhbm5vdCBi
ZSBzZXQgdXA7IHVzaW5nIHRleHQtbW9kZS4KKyhkZWZ1biBtYXJrZG93bi10cy1tb2RlLS1pbml0
aWFsaXplIChiYXRjaCkKKyAgIkludm9rZSB0aGlzIGZyb20gbWFqb3IgbW9kZSBkZWZpbml0aW9u
cyBhZnRlciBsb2NhbCB2YXJpYWJsZSBzZXQgdXAuCitJZiBCQVRDSCBpcyBub24tbmlsLCBhdm9p
ZCBzZXQgdXAgY29zdHMgZm9yIGludGVyYWN0aXZlIGZlYXR1cmVzIHN1Y2ggYXMKK2BpbWVudScg
YW5kIGBvdXRsaW5lLW1vZGUnIGFuZCBvcHRpb25hbCBgdHJlZXNpdCcgZ3JhbW1hcnMuIgorICAo
aWYgbWFya2Rvd24tdHMtLWdyYW1tYXJzLXJlYWR5CisgICAgICAobWFya2Rvd24tdHMtLXNldC11
cCBiYXRjaCkKKyAgICA7OyBUaGUgYmF0Y2ggcGF0aCBpcyBzaWxlbnQ6IG5ldmVyIGluc3RhbGwg
b3IgcHJvbXB0IHRvIGluc3RhbGwKKyAgICA7OyBncmFtbWFycy4gIElmIHRoZXkgYXJlIG1pc3Np
bmcsIHVzZSBgdGV4dC1tb2RlJy4KKyAgICAodW5sZXNzIGJhdGNoCisgICAgICAodHJlZXNpdC1l
bnN1cmUtaW5zdGFsbGVkICdtYXJrZG93bikKKyAgICAgICh0cmVlc2l0LWVuc3VyZS1pbnN0YWxs
ZWQgJ21hcmtkb3duLWlubGluZSkpCisgICAgOzsgQnlwYXNzIGB0cmVlc2l0LW1heC1idWZmZXIt
c2l6ZScgc28gdGhlIG1vZGUgYWN0aXZhdGVzIGluIGxhcmdlCisgICAgOzsgYnVmZmVycyBpbnN0
ZWFkIG9mIHJlZnVzaW5nLiAgYHRyZWVzaXQtcmVhZHktcCcgd291bGQgb3RoZXJ3aXNlCisgICAg
OzsgcmVmdXNlIGFuZCBlbWl0IGEgbWlzbGVhZGluZyAicGFyc2VycyBub3QgZm91bmQiIG1lc3Nh
Z2UgZXZlbiB3aGVuCisgICAgOzsgdGhleSBhcmUgaW5zdGFsbGVkLiAgUmV2aXNpdCBpZiBgdHJl
ZXNpdC1wYXJzZXItY3JlYXRlJyBnYWlucyBpdHMKKyAgICA7OyBvd24gYnVmZmVyLXNpemUgZ3Vh
cmQgKHNlZSBidWcjODA5MDkpLgorICAgIChsZXQgKCh0cmVlc2l0LW1heC1idWZmZXItc2l6ZSBt
b3N0LXBvc2l0aXZlLWZpeG51bSkpCisgICAgICAoY29uZCAoKHNldHEgbWFya2Rvd24tdHMtLWdy
YW1tYXJzLXJlYWR5CisgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtcmVhZHktcCAnKG1hcmtk
b3duIG1hcmtkb3duLWlubGluZSkgdCkpCisgICAgICAgICAgICAgKG1hcmtkb3duLXRzLS1zZXQt
dXAgYmF0Y2gpKQorICAgICAgICAgICAgKHQKKyAgICAgICAgICAgICAod2FybiAibWFya2Rvd24t
dHMtbW9kZSBjYW5ub3QgYmUgc2V0IHVwOyB1c2luZyB0ZXh0LW1vZGUuCiAlcy4iCi0gICAgICAg
ICAgICAgICAgIChpZiAodHJlZXNpdC1hdmFpbGFibGUtcCkKLSAgICAgICAgICAgICAgICAgICAg
ICJUaGUgdHJlZS1zaXR0ZXIgcGFyc2VycyBgbWFya2Rvd24nIGFuZCBgbWFya2Rvd24taW5saW5l
JyB3ZXJlIG5vdCBmb3VuZC4KKyAgICAgICAgICAgICAgICAgICAoaWYgKHRyZWVzaXQtYXZhaWxh
YmxlLXApCisgICAgICAgICAgICAgICAgICAgICAgICJUaGUgdHJlZS1zaXR0ZXIgcGFyc2VycyBg
bWFya2Rvd24nIGFuZCBgbWFya2Rvd24taW5saW5lJyB3ZXJlIG5vdCBmb3VuZC4KIFVzZSB0aGUg
Y29tbWFuZCBgbWFya2Rvd24tdHMtbW9kZS1pbnN0YWxsLXBhcnNlcnMnIHRvIGluc3RhbGwgdGhl
bS4KIFdpdGggYSBwcmVmaXggYXJndW1lbnQsIGl0IGNhbiBhbHNvIGluc3RhbGwgb3B0aW9uYWwg
cGFyc2VycyIKLSAgICAgICAgICAgICAgICAgICAiRW1hY3Mgd2FzIGJ1aWx0IHdpdGhvdXQgVHJl
ZS1zaXR0ZXIgc3VwcG9ydCwgb3IgY291bGQgbm90IGxvYWQgVHJlZS1zaXR0ZXIiKSkKLSAgICAg
ICAgICAgKHRleHQtbW9kZSkpKSkpCisgICAgICAgICAgICAgICAgICAgICAiRW1hY3Mgd2FzIGJ1
aWx0IHdpdGhvdXQgVHJlZS1zaXR0ZXIgc3VwcG9ydCwgb3IgY291bGQgbm90IGxvYWQgVHJlZS1z
aXR0ZXIiKSkKKyAgICAgICAgICAgICAodGV4dC1tb2RlKSkpKSkpCiAKIDs7OyMjI2F1dG9sb2Fk
CiAoZGVmaW5lLWRlcml2ZWQtbW9kZSBtYXJrZG93bi10cy1tb2RlIHRleHQtbW9kZSAiTWFya2Rv
d24iCiAgICJNYWpvciBtb2RlIGZvciBlZGl0aW5nIE1hcmtkb3duIHVzaW5nIHRyZWUtc2l0dGVy
IGdyYW1tYXIuCiBOT1RFOiBTZWUgYG1hcmtkb3duLXRzLS1zZXQtdXAtaW5saW5lJy4iCi0gICht
YXJrZG93bi10cy1tb2RlLS1pbml0aWFsaXplKSkKKyAgKG1hcmtkb3duLXRzLW1vZGUtLWluaXRp
YWxpemUgbmlsKSkKIAogKGRlcml2ZWQtbW9kZS1hZGQtcGFyZW50cyAnbWFya2Rvd24tdHMtbW9k
ZSAnKG1hcmtkb3duLW1vZGUpKQogCkBAIC01NDQ0LDEzICs1NDY5LDE0MiBAQCBtYXJrZG93bi10
cy12aWV3LW1vZGUKICAgKHNldHEtbG9jYWwgbWFya2Rvd24tdHMtZW5hYmxlLWNvZGUtYmxvY2st
Y29udGV4dC1tb2RlIG5pbCkKICAgKHNldHEtbG9jYWwgbWFya2Rvd24tdHMtZW5hYmxlLXRhYmxl
LW1vZGUgbmlsKQogICAocnVuLWhvb2tzICdtYXJrZG93bi10cy12aWV3LW1vZGUtcHJlLWluaXQt
aG9vaykKLSAgKG1hcmtkb3duLXRzLW1vZGUtLWluaXRpYWxpemUpCisgIChtYXJrZG93bi10cy1t
b2RlLS1pbml0aWFsaXplIG5pbCkKICAgKHNldHEgYnVmZmVyLXJlYWQtb25seSB0KSkKIAogKGRl
cml2ZWQtbW9kZS1hZGQtcGFyZW50cyAnbWFya2Rvd24tdHMtdmlldy1tb2RlICcobWFya2Rvd24t
dHMtbW9kZSBzcGVjaWFsLW1vZGUpKQogCis7OzsgUmVuZGVyIG1vZGUgYW5kIHN0cmluZyByZW5k
ZXJlcjoKKworOzs7IyMjYXV0b2xvYWQKKyhkZWZpbmUtZGVyaXZlZC1tb2RlIG1hcmtkb3duLXRz
LXJlbmRlci1tb2RlCisgIG5pbCA7IEludGVudGlvbmFsbHkgbGVmdCBibGFuazsgc2VlIGBkZXJp
dmVkLW1vZGUtYWRkLXBhcmVudHMnIGJlbG93LgorICAiTWFya2Rvd24gUmVuZGVyIgorICAiTGln
aHR3ZWlnaHQgcmVhZC1vbmx5IG1vZGUgZm9yIHJlbmRlcmluZyBNYXJrZG93biBzdHJpbmdzLgor
VGhpcyBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIG5vbi1pbnRlcmFjdGl2ZWx5IG1vZGUgYW5kIGRv
ZXMgbm90IHNldCB1cAorYGltZW51JywgYG91dGxpbmUtbW9kZScsIGVtYmVkZGVkIGdyYW1tYXJz
LCBmb2xkaW5nLCBhbmQgZG9lcyBub3QKK2luc3RhbGwgb3IgcHJvbXB0IHRvIGluc3RhbGwgdHJl
ZS1zaXR0ZXIgZ3JhbW1hcnMuICBBbHNvIHNlZSB0aGUKK2NvbnZlbmllbmNlIGZ1bmN0aW9uIGBt
YXJrZG93bi10cy1yZW5kZXItbWFya3VwJy4iCisgIDs7IFRoZXNlIG92ZXJyaWRlcyBzaG91bGQg
bWlycm9yIHRob3NlIGluIGBtYXJrZG93bi10cy12aWV3LW1vZGUnLgorICAoc2V0cS1sb2NhbCBt
YXJrZG93bi10cy1tZW51LWJhci1zaG93IG5pbCkKKyAgKHNldHEtbG9jYWwgbWFya2Rvd24tdHMt
aGlkZS1tYXJrdXAgdCkKKyAgKHNldHEtbG9jYWwgbWFya2Rvd24tdHMtaW5saW5lLWltYWdlcyB0
KQorICAoc2V0cS1sb2NhbCBtYXJrZG93bi10cy1oYXJkLWxpbmUtYnJlYWstYmFja3NsYXNoICdo
aWRlKQorICAoc2V0cS1sb2NhbCBtYXJrZG93bi10cy1oYXJkLWxpbmUtYnJlYWstc3BhY2UgJ2hp
ZGUpCisgIChzZXRxLWxvY2FsIG1hcmtkb3duLXRzLWZvbnRpZnktY29kZS1ibG9ja3MtbmF0aXZl
bHkgdCkKKyAgKHNldHEtbG9jYWwgbWFya2Rvd24tdHMtZW5hYmxlLWNvZGUtYmxvY2stY29udGV4
dC1tb2RlIG5pbCkKKyAgKHNldHEtbG9jYWwgbWFya2Rvd24tdHMtZW5hYmxlLXRhYmxlLW1vZGUg
bmlsKQorICAocnVuLWhvb2tzICdtYXJrZG93bi10cy12aWV3LW1vZGUtcHJlLWluaXQtaG9vaykK
KyAgKG1hcmtkb3duLXRzLW1vZGUtLWluaXRpYWxpemUgJ2JhdGNoKQorICAoc2V0cSBidWZmZXIt
cmVhZC1vbmx5IHQpKQorCisoZGVyaXZlZC1tb2RlLWFkZC1wYXJlbnRzICdtYXJrZG93bi10cy1y
ZW5kZXItbW9kZQorICAgICAgICAgICAgICAgICAgICAgICAgICAnKG1hcmtkb3duLXRzLXZpZXct
bW9kZSBtYXJrZG93bi10cy1tb2RlIHNwZWNpYWwtbW9kZSkpCisKKyhkZWZjdXN0b20gbWFya2Rv
d24tdHMtcmVuZGVyLWNhY2hlLWxpbWl0IDI1NgorICAiTWF4aW11bSByZW5kZXJlZCBtYXJrdXAg
c3RyaW5ncyBjYWNoZWQgYnkgYG1hcmtkb3duLXRzLXJlbmRlci1tYXJrdXAnLgorTmlsIG9yIDAg
ZGlzYWJsZXMgY2FjaGluZy4gIERpc2NhcmQgY2FjaGVkIHJlbmRlcnMgd2l0aAorYG1hcmtkb3du
LXRzLXJlbmRlci1yZXNldCcuIgorICA6dHlwZSAnKGNob2ljZSAoY29uc3QgOnRhZyAiRGlzYWJs
ZSIgbmlsKSBuYXRudW0pCisgIDp2ZXJzaW9uICIzMS4xIikKKworKGRlZmN1c3RvbSBtYXJrZG93
bi10cy1yZW5kZXItY2FjaGUtbWF4aW11bS1zdHJpbmctbGVuZ3RoICgqIDIgMTAyNCkKKyAgIlN0
cmluZ3MgbG9uZ2VyIHRoYW4gdGhpcyBhcmUgbm90IGNhY2hlZCBieSBgbWFya2Rvd24tdHMtcmVu
ZGVyLW1hcmt1cCcuCitVc2UgMCB0byBkaXNhYmxlIHRoZSBsZW5ndGggbGltaXQuIgorICA6dHlw
ZSAnbmF0bnVtCisgIDp2ZXJzaW9uICIzMS4xIikKKworKGRlZmNvbnN0IG1hcmtkb3duLXRzLS1y
ZW5kZXItYnVmZmVyLW5hbWUgIiAqbWFya2Rvd24tdHMtcmVuZGVyKiIKKyAgIkhpZGRlbiBidWZm
ZXIgbmFtZSBmb3IgYG1hcmtkb3duLXRzLXJlbmRlci1tYXJrdXAnLiIpCisKKyhkZWZ2YXIgbWFy
a2Rvd24tdHMtLXJlbmRlci1idWZmZXIgbmlsCisgICJIaWRkZW4gYnVmZmVyIGZvciBgbWFya2Rv
d24tdHMtcmVuZGVyLW1hcmt1cCcuIikKKworKGRlZnZhciBtYXJrZG93bi10cy0tcmVuZGVyLWNh
Y2hlIChtYWtlLWhhc2gtdGFibGUgOnRlc3QgJ2VxdWFsKQorICAiTWFwcyBhIHJhdyBtYXJrdXAg
c3RyaW5nIHRvIGl0cyBmb250aWZpZWQgcmVzdWx0LgorU2VlIGBtYXJrZG93bi10cy1yZW5kZXIt
Y2FjaGUtbGltaXQnLiIpCisKKyhkZWZ1biBtYXJrZG93bi10cy1yZW5kZXItcmVzZXQgKCkKKyAg
IkRpc2NhcmQgdGhlIGBtYXJrZG93bi10cy1yZW5kZXItbWFya3VwJyBjYWNoZSBhbmQgaXRzIHNo
YXJlZCBidWZmZXIuCitUaGUgbmV4dCByZW5kZXIgcmVidWlsZHMgdGhlbSwgZS5nLiB0byBwaWNr
IHVwIGEgdGhlbWUgb3IgYSBuZXdseQoraW5zdGFsbGVkIGdyYW1tYXIuIgorICAoaW50ZXJhY3Rp
dmUpCisgICh3aGVuIG1hcmtkb3duLXRzLS1yZW5kZXItYnVmZmVyCisgICAgKGtpbGwtYnVmZmVy
IG1hcmtkb3duLXRzLS1yZW5kZXItYnVmZmVyKSkKKyAgKHNldHEgbWFya2Rvd24tdHMtLXJlbmRl
ci1idWZmZXIgbmlsKQorICAoY2xyaGFzaCBtYXJrZG93bi10cy0tcmVuZGVyLWNhY2hlKSkKKwor
KGRlZnVuIG1hcmtkb3duLXRzLS1yZW5kZXItbWFya3VwLTEgKHN0cmluZykKKyAgIlJldHVybiBw
cm9wZXJ0aXplZCwgZm9udGlmaWVkIE1hcmtkb3duIFNUUklORy4KK1JldXNlIGEgc2hhcmVkIGJ1
ZmZlciB0byBpbXByb3ZlIHBlcmZvcm1hbmNlIG9mIHJlcGVhdGVkIHJlbmRlcmluZworY2FsbHMu
IgorICA7OyBOZXZlciBpbnN0YWxsIChvciBwcm9tcHQgdG8gaW5zdGFsbCkgdHJlZS1zaXR0ZXIg
Z3JhbW1hcnMgZnJvbSB0aGUKKyAgOzsgcmVuZGVyIHBhdGguICBCb3VuZCBkeW5hbWljYWxseSBz
byBlbWJlZGRlZCBmZW5jZWQgY29kZS1ibG9jaworICA7OyByZW5kZXJpbmcgd2lsbCBub3QgcHJv
bXB0LiAgQW4gdW5hdmFpbGFibGUgZ3JhbW1hciBsZWF2ZXMgdGhhdAorICA7OyBibG9jayB1bmZv
bnRpZmllZC4gIFByaW1pbmcgYXZhaWxhYmxlIGdyYW1tYXJzIGlzIHVwIHRvIHRoZSB1c2VyLgor
ICAobGV0ICgodHJlZXNpdC1hdXRvLWluc3RhbGwtZ3JhbW1hciAnbmV2ZXIpKQorICAgKHVubGVz
cyAoYnVmZmVyLWxpdmUtcCBtYXJrZG93bi10cy0tcmVuZGVyLWJ1ZmZlcikKKyAgICAoc2V0cSBt
YXJrZG93bi10cy0tcmVuZGVyLWJ1ZmZlcgorICAgICAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVy
IChnZW5lcmF0ZS1uZXctYnVmZmVyIG1hcmtkb3duLXRzLS1yZW5kZXItYnVmZmVyLW5hbWUpCisg
ICAgICAgICAgICAobGV0ICgoaW5oaWJpdC1tZXNzYWdlIHQpIChtZXNzYWdlLWxvZy1tYXggbmls
KSkKKyAgICAgICAgICAgICAgKGlnbm9yZS1lcnJvcnMgKG1hcmtkb3duLXRzLXJlbmRlci1tb2Rl
KSkpCisgICAgICAgICAgICAoY3VycmVudC1idWZmZXIpKSkpCisgICAod2l0aC1jdXJyZW50LWJ1
ZmZlciBtYXJrZG93bi10cy0tcmVuZGVyLWJ1ZmZlcgorICAgIChsZXQgKChpbmhpYml0LXJlYWQt
b25seSB0KSAoaW5oaWJpdC1tZXNzYWdlIHQpIChtZXNzYWdlLWxvZy1tYXggbmlsKSkKKyAgICAg
IDs7IENsZWFuIG9ubHkgaW1hZ2Ugb3ZlcmxheXMuICBBIGJsaW5kIGByZW1vdmUtb3ZlcmxheXMn
IHdvdWxkCisgICAgICA7OyBhbHNvIGRlbGV0ZSB0aGUgb3ZlcmxheXMgdGhhdCBhbmNob3IgdHJl
ZS1zaXR0ZXIncyBgOmxvY2FsJworICAgICAgOzsgZW1iZWRkZWQgcGFyc2VycyAobWFya2Rvd24t
aW5saW5lLCBjb2RlIGJsb2NrcyksIG9ycGhhbmluZyB0aGVtCisgICAgICA7OyBzbyB0aGV5IGFj
Y3VtdWxhdGUgYW5kIG1ha2UgZWFjaCByZXVzZSBwcm9ncmVzc2l2ZWx5IHNsb3dlci4KKyAgICAg
IDs7IFVzaW5nIGBlcmFzZS1idWZmZXInIGxldHMgdHJlZS1zaXR0ZXIgcmVjbGFpbSB0aGVtLgor
ICAgICAgKG1hcmtkb3duLXRzLS1yZW1vdmUtaW1hZ2Utb3ZlcmxheXMpCisgICAgICAoZXJhc2Ut
YnVmZmVyKQorICAgICAgKGluc2VydCBzdHJpbmcpCisgICAgICAocnVuLWhvb2tzICdtYXJrZG93
bi10cy12aWV3LW1vZGUtcHJlLWluaXQtaG9vaykKKyAgICAgIChmb250LWxvY2stZW5zdXJlKQor
ICAgICAgKGJ1ZmZlci1zdHJpbmcpKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtcmVuZGVyLW1h
cmt1cCAoc3RyaW5nICZvcHRpb25hbCBuby1jYWNoZSkKKyAgIlJldHVybiBwcm9wZXJ0aXplZCwg
Zm9udGlmaWVkIE1hcmtkb3duIFNUUklORy4KK1JlbmRlciBTVFJJTkcgaW4gYSBgbWFya2Rvd24t
dHMtcmVuZGVyLW1vZGUnIGJ1ZmZlci4KK0NhY2hlIHJhdyBTVFJJTkcgYW5kIGl0cyByZW5kZXIu
ICBTZWUgYG1hcmtkb3duLXRzLXJlbmRlci1jYWNoZS1saW1pdCcKK2FuZCBgbWFya2Rvd24tdHMt
cmVuZGVyLWNhY2hlLW1heGltdW0tc3RyaW5nLWxlbmd0aCcKK0lmIG9wdGlvbmFsIE5PLUNBQ0hF
IGlzIG5vbi1uaWwsIGRvIG5vdCBjYWNoZSBTVFJJTkcgb3IgaXRzIHJlc3VsdC4KK1JldHVybiBT
VFJJTkcgaWYgY29yZSBNYXJrZG93biBncmFtbWFycyBhcmUgdW5hdmFpbGFibGUuCitEbyBub3Qg
cHJvbXB0IHRvIGluc3RhbGwgZ3JhbW1hcnMuIgorICAoY29uZAorICAgKChub3QgKG1hcmtkb3du
LXRzLWF2YWlsYWJsZS1wKSkKKyAgICBzdHJpbmcpCisgICAoKHN0cmluZy1lbXB0eS1wIHN0cmlu
ZykKKyAgICBzdHJpbmcpCisgICAoKGFuZCAobm90IG5vLWNhY2hlKQorICAgICAgICAgKDw9IChs
ZW5ndGggc3RyaW5nKQorICAgICAgICAgICAgbWFya2Rvd24tdHMtcmVuZGVyLWNhY2hlLW1heGlt
dW0tc3RyaW5nLWxlbmd0aCkKKyAgICAgICAgIG1hcmtkb3duLXRzLXJlbmRlci1jYWNoZS1saW1p
dAorICAgICAgICAgKD4gbWFya2Rvd24tdHMtcmVuZGVyLWNhY2hlLWxpbWl0IDApKQorICAgIChv
ciAoZ2V0aGFzaCBzdHJpbmcgbWFya2Rvd24tdHMtLXJlbmRlci1jYWNoZSkKKyAgICAgICAgKHBy
b2duCisgICAgICAgICAgKHdoZW4gKD49IChoYXNoLXRhYmxlLWNvdW50IG1hcmtkb3duLXRzLS1y
ZW5kZXItY2FjaGUpCisgICAgICAgICAgICAgICAgICAgIG1hcmtkb3duLXRzLXJlbmRlci1jYWNo
ZS1saW1pdCkKKyAgICAgICAgICAgIChjbHJoYXNoIG1hcmtkb3duLXRzLS1yZW5kZXItY2FjaGUp
KQorICAgICAgICAgIChwdXRoYXNoIHN0cmluZworICAgICAgICAgICAgICAgICAgIChtYXJrZG93
bi10cy0tcmVuZGVyLW1hcmt1cC0xIHN0cmluZykKKyAgICAgICAgICAgICAgICAgICBtYXJrZG93
bi10cy0tcmVuZGVyLWNhY2hlKSkpKQorICAgKHQKKyAgICAobWFya2Rvd24tdHMtLXJlbmRlci1t
YXJrdXAtMSBzdHJpbmcpKSkpCisKIDs7OyBNb2RlIHV0aWxpdGllczoKIAorOzs7IyMjYXV0b2xv
YWQKKyhkZWZ1biBtYXJrZG93bi10cy1hdmFpbGFibGUtcCAoKQorICAiUmV0dXJuIG5vbi1uaWwg
aWYgYG1hcmtkb3duJyBhbmQgYG1hcmtkb3duLWlubGluZScgZ3JhbW1hcnMgYXJlIGF2YWlsYWJs
ZS4KK1VzZSB0aGlzIHRvIGF2b2lkIGV4cGVuc2l2ZSBgdHJlZXNpdCcgZ3JhbW1hciBwcm9iaW5n
IGZ1bmN0aW9ucy4gIFRoaXMKK2RvZXMgbm90IGluc3RhbGwgZ3JhbW1hcnMgb3IgcHJvbXB0IHRv
IGluc3RhbGwgdGhlbS4gIFVzZSB0aGUKK2ludGVyYWN0aXZlIG1vZGVzIGBtYXJrZG93bi10cy1t
b2RlJyBvciBgbWFya2Rvd24tdHMtdmlldy1tb2RlJyBvciB0aGUKK2NvbW1hbmQgYG1hcmtkb3du
LXRzLW1vZGUtaW5zdGFsbC1wYXJzZXJzJyB0byBpbnN0YWxsIHRoZW0uIgorICAob3IgbWFya2Rv
d24tdHMtLWdyYW1tYXJzLXJlYWR5CisgICAgICAoc2V0cSBtYXJrZG93bi10cy0tZ3JhbW1hcnMt
cmVhZHkKKyAgICAgICAgICAgICh0cmVlc2l0LXJlYWR5LXAgJyhtYXJrZG93biBtYXJrZG93bi1p
bmxpbmUpIHQpKSkpCisKIDs7OyMjI2F1dG9sb2FkCiAoZGVmdW4gbWFya2Rvd24tdHMtYnVmZmVy
LXN0cmluZyAoKQogICAiTGlrZSBgYnVmZmVyLXN0cmluZycsIGFuZCBjb252ZXJ0IG92ZXJsYXkg
cHJvcGVydGllcyB0byB0ZXh0IHByb3BlcnRpZXMuIgotLSAKMi41NC4wCgo=
--=-=-=--
bug-gnu-emacs@HIDDEN:bug#81150; Package emacs.
Full text available.
Received: (at 81150) by debbugs.gnu.org; 1 Jun 2026 00:04:44 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun May 31 20:04:44 2026
Received: from localhost ([127.0.0.1]:35845 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1wTq95-0008Gi-NN
for submit <at> debbugs.gnu.org; Sun, 31 May 2026 20:04:44 -0400
Received: from mail-wm1-x331.google.com ([2a00:1450:4864:20::331]:57833)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <joaotavora@HIDDEN>)
id 1wTq93-0008GV-FC
for 81150 <at> debbugs.gnu.org; Sun, 31 May 2026 20:04:42 -0400
Received: by mail-wm1-x331.google.com with SMTP id
5b1f17b1804b1-4904c1ce4c1so104904995e9.3
for <81150 <at> debbugs.gnu.org>; Sun, 31 May 2026 17:04:41 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20251104; t=1780272280; x=1780877080; darn=debbugs.gnu.org;
h=content-transfer-encoding:mime-version:user-agent:message-id:date
:references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date
:message-id:reply-to;
bh=A/6CwyF4wCgrnf1RJAD+y1A68JcSfmD/369gtu34E18=;
b=Mkf/9djfJTpPharUfPGBCNIABkmtinHeeScA6JFHOnCLX1VsdDuK/pk7wHdjN12o4a
TBxHxX/hql1imzqCWLU6mPpxynBIGpfwSPDATrvbe3WfeJtGsIgos3DMMaabz4B48ZUT
OTi9WIhVekK2M83Nv945NYj5ZXBuMmWZeEHv/O79x3PuaH1KdoWIZoqSkYzHFZPCZAWz
02jZCeiuDmutcwIwGb1wDsnMcfIPPGrCocraFi4SmbYCeRQwPPaGnZAsYnqpqQOA0CZA
c/o/XnUl4pmsBohHf5fywxdcyglVNQFZxLdBfzhiE0XM5cM1KKM1dbCN48p5G07zB3WP
Jy6w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20251104; t=1780272280; x=1780877080;
h=content-transfer-encoding:mime-version:user-agent:message-id:date
:references:in-reply-to:subject:cc:to:from:x-gm-gg
:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
bh=A/6CwyF4wCgrnf1RJAD+y1A68JcSfmD/369gtu34E18=;
b=rn6uTUudWDPb8bILdmpa4UBNxYlwoNRvVASJJVyKHz00s6KGJZE7q3LLJs9WoH3ra6
JrSY6wiwjqC7fOOFzYxX01KDpLGc03yr9EO58koLmsGYvioH06ZFpZNxiCRoJeRMWCIr
FaY1/HVXeB0IPIf5emkSKeIEuzUxYg9rGQwNxgkV8obH/9VDF7p9LMMqUDC89MfSAZqJ
P3elx1Mk83XS/UOgWTgjBYV1jvwlRph13GhrgYfNKVnyUrfbKMAKvZ6yxSXXlW/3JOau
B/vr2irihHjcTTKeBaat0L1I1v6Eo/MZHI/U+kb9V7GP0YZpBKwmsuL/BgG5xES3XgT+
SOzQ==
X-Forwarded-Encrypted: i=1;
AFNElJ+WGz7OgTajviWdE8WLAcmexGALIzq76qyz0rrcsZV87dYJyyLfM4EAOBH8E2sjYZ9A+erB7A==@debbugs.gnu.org
X-Gm-Message-State: AOJu0Yw9hk1olydYeB3GQ+FQ5pNz+6JRr7Ujf2fZYHP7Xo/3Byt17u1z
O027sF1UUp4JOwQ5Ib1c+lcpgZUnuAMOnxm7z2PLjjW9PlTvN5CNlcBh
X-Gm-Gg: Acq92OFjtTihuqvaXyBH/xFUNGoiYvT8d8Plk6XDsxzDY9rrTvijd5FVLn1sPMoly8t
c7lVST9BdtuKXwKo0EFzMh8BEk4eh7NzFizbasJUYtIAkuZWVX5AF1hYjgC5HJvn+N8PjtkHWfW
yAZNDCoTEhVMdgKqLjO+dgDpm2s30NnPhMXFPvvNl5eva76TcrcRR2tbhiaCtgn9E7mzeHU4qKI
/hp/qyh/Lc+rmIt3w3PvRTW6k4NyYxwH8ZESQFWgBtBhH9QkasWkfEgv9CK2+ma3BalKhnWrnmk
gRqT2Td6nbIFV539JfSSANoyt1/Xx+DhXsg7htQN8FTsz8yzWJG1bLHw4xiRYL1cqBBZ6tgfSNR
oDHKdh/qnhs+UMtPgUjmiLCjUO24SCKjuORlLVsS+ck8zi5kJM/VeuONg9JuhVG6/htlnUY3d09
VkT7//TbrWrFABkWw9DYlwoq5a1jrXGN7VLxn91LgZ9HP/4NY79yyQN/3zwRZ4rAGo5+6Fd4jFa
qhfDz9ZdrsMHz/L3E8OXTr+OS13/XNJ7pTNHv/D
X-Received: by 2002:a05:600d:644e:20b0:48a:53ea:140b with SMTP id
5b1f17b1804b1-490a296b260mr118811295e9.28.1780272279650;
Sun, 31 May 2026 17:04:39 -0700 (PDT)
Received: from krug (87-196-72-133.net.novis.pt. [87.196.72.133])
by smtp.gmail.com with ESMTPSA id
ffacd0b85a97d-45ef34b47eesm23014347f8f.9.2026.05.31.17.04.37
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sun, 31 May 2026 17:04:38 -0700 (PDT)
From: =?utf-8?B?Sm/Do28gVMOhdm9yYQ==?= <joaotavora@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#81150: 31.0.60; eglot: performance issue with markdown-ts-mode
In-Reply-To: <86h5nnxut1.fsf@HIDDEN>
References: <CAJ8YToa+nueew9wQ52xJtD-jXOdcA+Vq+NZEVcd=Q3V66opHSg@HIDDEN>
<CAN+1HbpLJqPWufz3mOmAm1Oq=+_a38aMH5FZub5-pn5=C4msSw@HIDDEN>
<87pl2dq2a7.fsf@HIDDEN> <87se79pxdd.fsf@HIDDEN>
<CAJ8YToZazwzGtP9QU-ijh+VSTiDBW3PAOPCq4S-Xh8YeHAtB1Q@HIDDEN>
<CALDnm53Z+oOs+=Y0t-gpgreWcC=2=2qRguT=DbVtcx4RFtOSRg@HIDDEN>
<CAJ8YToafSau+bEJKtaKORVN4-_APO09AZ03CL_dGj5rD_j1-3Q@HIDDEN>
<87o6hxp2tj.fsf@HIDDEN>
<CAJ8YTobrDNoMFyQcG9vrj_6kRhng=f7ak-_m66ovwZ=nye822g@HIDDEN>
<87ik83q4ti.fsf@HIDDEN>
<CAN+1Hbp4n76dbjcOSJLm3xfkVac8Gj76pv8XAmcucOUmngEmLQ@HIDDEN>
<86wlwjy4vv.fsf@HIDDEN>
<CAN+1HbrQdqcURTQ_GtdPQ1s+JTBxSZwx30ZQWJysqu0pOZRwHA@HIDDEN>
<86tsrnxx7p.fsf@HIDDEN>
<CAN+1Hbq2W3=A9TmepqU6JjYonm7ur-P4euFyzRnQ4ssTMDfvbw@HIDDEN>
<86h5nnxut1.fsf@HIDDEN>
Date: Mon, 01 Jun 2026 01:04:40 +0100
Message-ID: <87ecirp1lz.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: 1.0 (+)
X-Debbugs-Envelope-To: 81150
Cc: rahuljuliato@HIDDEN,
=?utf-8?Q?St=C3=A9phane?= Marks <shipmints@HIDDEN>, 81150 <at> debbugs.gnu.org,
romain.ouabdelkader@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: 0.0 (/)
Eli Zaretskii <eliz@HIDDEN> writes:
> Look at the Git history. The mode got lots of significant changes
> less than a month ago, and markdown-ts-view-mode was added just 2
> weeks ago. I don't see how we can honestly expect the code churn to
> stop soon enough for these modes to be eligible to serve as default
> modes. New modes always have rough edges which take time to smooth.
> It's okay to keep fixing them further, but we should avoid making
> other features depend on that.
Just weighing in to say I have to sort of agree with Eli. Do you guys
really need a whole new major mode and so much redesign work to fix
this? Attach a simple patch to markdown-ts-mode after my sig that uses
some simple caches. markdown-ts-view-mode is now only about 3-4 times
slower than gfm-view-mode for this (possibly somewhat silly) zero-load
case. And for any normal piece of markdown it is now only about 2 times
slower and "fast enough" I think (I don't notice any slowdowns). And
for large pieces of markdown it is quite a bit faster than
gfm-view-mode. So don't get _too_ hung on micro-benchmarks...
I'm sure you can find some caching strategy and more surgical changes to
improve markdown-ts-mode without machining loads of code (for example,
does a new parser need to be created for every markdown-ts-mode
invocation?)
Anyway here are the benchmarks after applying the patch after my sig:
;; zero load, 3-4 times slower
(with-temp-buffer (benchmark-run 1500 (gfm-view-mode))); (0.379997643999=
99997 2 0.2339596430000057)
(with-temp-buffer (benchmark-run 1500 (markdown-ts-view-mode))); (1.2196=
75224 2 0.23708139599999356)
=20=20=20=20
;; light load, 2 times slower
(with-temp-buffer
(insert "# heading\n```\nbla\n bla\n bla \n```\n_italic_ *bold* `thing=
y`\n")
(insert "# heading\n```\nbla\n bla\n bla \n```\n_italic_ *bold* `thing=
y`\n")
(benchmark-run 1500 (gfm-view-mode))); (0.6469930239999999 3 0.3571805=
2699999703)
(with-temp-buffer
(insert "# heading\n```\nbla\n bla\n bla \n```\n_italic_ *bold* `thing=
y`\n")
(insert "# heading\n```\nbla\n bla\n bla \n```\n_italic_ *bold* `thing=
y`\n")
(benchmark-run 1 (markdown-ts-view-mode))); (1.301772127 2 0.229782055=
00000115)
=20=20=20=20
;; large load, 3 times faster
(with-temp-buffer
(url-insert-file-contents "https://raw.githubusercontent.com/joaotavor=
a/eglot/refs/heads/master/README.md")
(benchmark-run 500 (gfm-view-mode))) ; (2.8858082080000003 10 1.160608=
188999987)
(with-temp-buffer
(url-insert-file-contents "https://raw.githubusercontent.com/joaotavor=
a/eglot/refs/heads/master/README.md")
(benchmark-run 500 (markdown-ts-view-mode))) ; (1.07349551 2 0.2401280=
870000022)
Jo=C3=A3o
diff --git a/lisp/textmodes/markdown-ts-mode.el b/lisp/textmodes/markdown-t=
s-mode.el
index fed6ded192c..7f21efebbb9 100644
--- a/lisp/textmodes/markdown-ts-mode.el
+++ b/lisp/textmodes/markdown-ts-mode.el
@@ -5201,6 +5201,20 @@ markdown-ts-mode-menu
["Export table to CSV" markdown-ts-table-export-table-csv :h=
elp "Export the table at point to a comma-separated values buffer"]
["Export table to TSV" markdown-ts-table-export-table-tsv :h=
elp "Export the table at point to a tab-separated values buffer"])))
=20
+(defvar markdown-ts--ts-ready-cache
+ (list (float-time) (make-hash-table :test #'equal) nil))
+
+(defun markdown-ts--ts-ready-p (language &optional quiet)
+ "Like `treesit-ready-p' with LANGUAGE and QUIET, but cached."
+ (let ((tbl (cadr markdown-ts--ts-ready-cache)))
+ (when (> (- (float-time) (car markdown-ts--ts-ready-cache)) 300)
+ (clrhash tbl))
+ (let ((cached (gethash language tbl 'absent)))
+ (cond ((eq cached 'absent)
+ (setcar markdown-ts--ts-ready-cache (float-time))
+ (puthash language (treesit-ready-p language quiet) tbl))
+ (cached)))))
+
(defun markdown-ts--set-up ()
"Set up the buffer for `markdown-ts-mode'.
If `markdown-ts--set-up-inline' is non-nil, use a lightweight set up for
@@ -5276,7 +5290,7 @@ markdown-ts--set-up
(dolist (prop '(invisible display button category action help-e=
cho))
(add-to-list 'font-lock-extra-managed-props prop)))
=20
- (when (treesit-ready-p 'html t)
+ (when (markdown-ts--ts-ready-p 'html t)
(treesit-parser-create 'html)
(require 'html-ts-mode)
(defvar html-ts-mode--font-lock-settings)
@@ -5300,7 +5314,7 @@ markdown-ts--set-up
:host 'markdown-inline
'((html_tag) @html)))))
=20
- (when (treesit-ready-p 'yaml t)
+ (when (markdown-ts--ts-ready-p 'yaml t)
(require 'yaml-ts-mode)
(defvar yaml-ts-mode--font-lock-settings)
(defvar yaml-ts-mode--font-lock-feature-list)
@@ -5319,7 +5333,7 @@ markdown-ts--set-up
:local t
'((minus_metadata) @yaml)))))
=20
- (when (treesit-ready-p 'toml t)
+ (when (markdown-ts--ts-ready-p 'toml t)
(require 'toml-ts-mode)
(defvar toml-ts-mode--font-lock-settings)
(defvar toml-ts-mode--font-lock-feature-list)
@@ -5390,15 +5404,17 @@ markdown-ts-mode-install-parsers
=20
(defun markdown-ts-mode--initialize ()
"Invoke this from major mode definitions after local variable set up."
- (treesit-ensure-installed 'markdown)
- (treesit-ensure-installed 'markdown-inline)
+ (unless (caddr markdown-ts--ts-ready-cache)
+ (treesit-ensure-installed 'markdown)
+ (treesit-ensure-installed 'markdown-inline)
+ (setcar (cddr markdown-ts--ts-ready-cache) t))
;; Bypass `treesit-max-buffer-size' so the mode activates in large
;; buffers instead of refusing. `treesit-ready-p' would otherwise
;; refuse and emit a misleading "parsers not found" message even when
;; they are installed. Revisit if `treesit-parser-create' gains its
;; own buffer-size guard (see bug#80909).
(let ((treesit-max-buffer-size most-positive-fixnum))
- (cond ((treesit-ready-p '(markdown markdown-inline) t)
+ (cond ((markdown-ts--ts-ready-p '(markdown markdown-inline) t)
(markdown-ts--set-up))
(t
(warn "markdown-ts-mode cannot be set up; using text-mode.
bug-gnu-emacs@HIDDEN:bug#81150; Package emacs.
Full text available.Received: (at 81150) by debbugs.gnu.org; 31 May 2026 19:07:02 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun May 31 15:07:02 2026 Received: from localhost ([127.0.0.1]:33327 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wTlUz-00056P-83 for submit <at> debbugs.gnu.org; Sun, 31 May 2026 15:07:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:53076) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1wTlUx-00056C-Hc for 81150 <at> debbugs.gnu.org; Sun, 31 May 2026 15:07:00 -0400 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 1wTlUs-0000CA-5v; Sun, 31 May 2026 15:06:54 -0400 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=y0IxWhPxJh9EGORsmXMcfeTVFsgcHAiLTOIqy6lLUys=; b=YNBY59QVNofUr4Qvvxhh hyX+DI6OQPX8PFGi8xvwQMYitpiQo1zy3oj1ndDWM/Ap9r3Zh1Z5KIRZEoysG1CsrFiJJyKBsKjia vF2xJTZUcLJ9aisk6nC4xXbbd7MYGQ9Af/uNK2ajsB/t8Ju8xQzYbePzJ2IbpdwMzXO+ASDpHW3cR RsAM463MC+m6T7xynN8sP7o9RUIPquDe6Tyv3NE3cFVluDgJ6hAiPGosxc6vUkpdh3LbKZ7W6wvCe es6xRvwoPpjUgtZNc2vwQPDjsXPkbnoRbk9w1shtaSoPqhTsgQ6wyHlhnB+BZjdlyhIz7OSPuGqeV cqgsVssPDglydQ==; Date: Sun, 31 May 2026 22:06:50 +0300 Message-Id: <86h5nnxut1.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: =?utf-8?Q?St=C3=A9phane?= Marks <shipmints@HIDDEN> In-Reply-To: <CAN+1Hbq2W3=A9TmepqU6JjYonm7ur-P4euFyzRnQ4ssTMDfvbw@HIDDEN> (message from =?utf-8?Q?St=C3=A9phane?= Marks on Sun, 31 May 2026 14:25:19 -0400) Subject: Re: bug#81150: 31.0.60; eglot: performance issue with markdown-ts-mode References: <CAJ8YToa+nueew9wQ52xJtD-jXOdcA+Vq+NZEVcd=Q3V66opHSg@HIDDEN> <CAN+1HbpLJqPWufz3mOmAm1Oq=+_a38aMH5FZub5-pn5=C4msSw@HIDDEN> <87pl2dq2a7.fsf@HIDDEN> <87se79pxdd.fsf@HIDDEN> <CAJ8YToZazwzGtP9QU-ijh+VSTiDBW3PAOPCq4S-Xh8YeHAtB1Q@HIDDEN> <CALDnm53Z+oOs+=Y0t-gpgreWcC=2=2qRguT=DbVtcx4RFtOSRg@HIDDEN> <CAJ8YToafSau+bEJKtaKORVN4-_APO09AZ03CL_dGj5rD_j1-3Q@HIDDEN> <87o6hxp2tj.fsf@HIDDEN> <CAJ8YTobrDNoMFyQcG9vrj_6kRhng=f7ak-_m66ovwZ=nye822g@HIDDEN> <87ik83q4ti.fsf@HIDDEN> <CAN+1Hbp4n76dbjcOSJLm3xfkVac8Gj76pv8XAmcucOUmngEmLQ@HIDDEN> <86wlwjy4vv.fsf@HIDDEN> <CAN+1HbrQdqcURTQ_GtdPQ1s+JTBxSZwx30ZQWJysqu0pOZRwHA@HIDDEN> <86tsrnxx7p.fsf@HIDDEN> <CAN+1Hbq2W3=A9TmepqU6JjYonm7ur-P4euFyzRnQ4ssTMDfvbw@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: 81150 Cc: rahuljuliato@HIDDEN, joaotavora@HIDDEN, 81150 <at> debbugs.gnu.org, romain.ouabdelkader@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 (---) > From: Stéphane Marks <shipmints@HIDDEN> > Date: Sun, 31 May 2026 14:25:19 -0400 > Cc: joaotavora@HIDDEN, rahuljuliato@HIDDEN, 81150 <at> debbugs.gnu.org, > romain.ouabdelkader@HIDDEN > > On Sun, May 31, 2026 at 2:14 PM Eli Zaretskii <eliz@HIDDEN> wrote: > > > From: Stéphane Marks <shipmints@HIDDEN> > > Date: Sun, 31 May 2026 12:25:42 -0400 > > Cc: joaotavora@HIDDEN, rahuljuliato@HIDDEN, 81150 <at> debbugs.gnu.org, > > romain.ouabdelkader@HIDDEN > > > > Given these problems and the fact that we want to start the pretest > > soon, I think it's better if we currently remove markdown-ts-view-mode > > (or any other variant of markdown-ts-mode) from Eglot, and let you and > > Rahul bring the mode up to speed. Introducing yet another mode so > > close to a pretest runs a high risk of causing more unanticipated > > problems, and it isn't right to make such significant changes that > > affect other Emacs features. Personally, I think all those additional > > variants of markdown-ts-mode should be installed on master, not on the > > emacs-31 release branch. > > > > It's a minor variation on the theme. How about we see how it goes and we'll decide as a group? > > In what world is it okay to add complete new modes after a feature > freeze? With so little time left to see how it goes before the > release, how can we be sure there are no unintended consequences in > this minor variation, like there were in the previously-introduced > variations? > > Please look at this from the project-management POV. We do want to > release Emacs 31.1 soon, don't we? If we do, features that are > evidently not mature enough should be deferred to the next release. > > Surely up to you and I'm not privy to the release dates. Locking down emacs-31 a few weeks ago came as a > surprise without forewarning at least on the public lists. That's not true, we announced it a week or so before it happened. In any case, such an event is always a kind of "surprise", because development of different parts of Emacs is asynchronous, and we cannot plan this stuff in advance, never have. And there's nothing wrong with markdown-ts-mode per se, we just made a mistake rushing it to be the default mode in Eglot and for *.md files, on the (what now turns out to be mistaken) assumption that it is mature enough. > In any case, a mode is just a function, in the end, so if we solved the issue without a mode but > with just a "function" would it really be that different? No, of course not. The fact that you'd like to make it a mode is just an indication of how significant the changes are. > How about we wait to see the code and then decide. How long to wait? What if we want to put out a pretest in a couple of weeks? > don't really have much of a horse in the 31 vs. 32 race but I would like to see the new core markdown mode be > as useful as we can make it (within reason). I think there are a few more code tweaks in addition to these we've > been sitting on while helping eglot. work-buffer--release improvement is an example of one that's not > markdown specific but where markdown exposed a rough edge. Look at the Git history. The mode got lots of significant changes less than a month ago, and markdown-ts-view-mode was added just 2 weeks ago. I don't see how we can honestly expect the code churn to stop soon enough for these modes to be eligible to serve as default modes. New modes always have rough edges which take time to smooth. It's okay to keep fixing them further, but we should avoid making other features depend on that.
bug-gnu-emacs@HIDDEN:bug#81150; Package emacs.
Full text available.Received: (at 81150) by debbugs.gnu.org; 31 May 2026 18:25:35 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun May 31 14:25:35 2026 Received: from localhost ([127.0.0.1]:32947 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wTkqs-0002GL-FC for submit <at> debbugs.gnu.org; Sun, 31 May 2026 14:25:34 -0400 Received: from mail-vs1-xe2e.google.com ([2607:f8b0:4864:20::e2e]:58567) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1wTkqq-0002G2-0z for 81150 <at> debbugs.gnu.org; Sun, 31 May 2026 14:25:32 -0400 Received: by mail-vs1-xe2e.google.com with SMTP id ada2fe7eead31-6c5ac3fa819so520412137.0 for <81150 <at> debbugs.gnu.org>; Sun, 31 May 2026 11:25:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1780251931; cv=none; d=google.com; s=arc-20240605; b=XbS1w4C6UH7/f3eiWz376iGTxfFPbuJBK/EjXawTQiyPijOpcJzch1HZYqFPI4GtGQ YBizn4k+R1acbC1T6365AtiKkWpW8FpNWta4i18hflicfo7efhVVkPr9PyPNaujlENb6 ggJDqu82uh9e6LQZJGHlpsdldlkHgQYNZj9gnGHpB21bECJpxSQoT+iom1IrfEqJFu88 N81nCy7OBs2uKwkLOetl3gbvvJZAEguxnWHZH9x/9RPIbSe+u4Z+hERem/UGeT+pJ8Eq ODz41ZMtBMfoYOVa0T2EzGk+jAEf0ptwVw7Ck+UXIwUqeeKiVIXvirII/Si8+Aow3rjI TN8g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=lbw3fx6TFvhXatJW7dxuK2qfEgctYEVEpSPF6R2ynTI=; fh=Fl336dDZKvSjAcOu68gG4jWi2hLViXneShYgLB9q+3c=; b=FAHrzrjIp430xamlEdayD0/WXCyIF1sTW1jAbXI3Jcb8sfkuWiG8W0WWqO5GDN2jOk 8A6/K5t51Zhn2JmkFPzwhH5+cbzwcDR7D6FmN68aEW5F8rVhf0hdep1Z+6L7UVHRDLrg x8jr9kgkfo4nau3SnvHT3O6ww4OR31uHD9p+oQvUlnSQ7oAkOe/emLwj0jrDfCFj5ztw yt/OiCmKC2LBt3/q7Ey/iJb8YLVYq5XLc8GrjnMCUQ07u/TDFzbKZb5ji+NyGPQOu/9E 1d1g51yG9S3tUDIZgGxA2LNTBOrbwoJ5+sJiewWUF0VBqe2JUhorC1zYwX8GtVq39jVh D7iA==; darn=debbugs.gnu.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780251931; x=1780856731; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=lbw3fx6TFvhXatJW7dxuK2qfEgctYEVEpSPF6R2ynTI=; b=dLQfwM0XBOnIJuPM5OZU/6TkxfAeSRG+2Lz/+UBkcQzovYKVqxUdTL3gRHwa0n+ULo IpiLGwOoXn70R+bxHibtQLMe2nhzOgzquqXQb5YsnDTIIlolafJc0eetOg1OrFsZbN28 ikz0gGPPfdmxZ+p255nSDS0Tz0SN+zyVfyCYCYCj/40/6iA64T0TtX9wWnsmCTX7B5tS eOGl9QakuOIra7juJSxgjlTbOEeFtZFnVIaxFzLIsOlYMUslZrXZHhJbMJY7+CIMZ1L2 7InKMppO/slu7XQIlNOt4EYSdhRb/q0PcxGleVlr7tFdehxt/B3Bkn0NHCns7uqKLqBt KWTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780251931; x=1780856731; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=lbw3fx6TFvhXatJW7dxuK2qfEgctYEVEpSPF6R2ynTI=; b=f6wHqX86ckgMirr3qPtqQgI8/+4gHGrFwLSUuqGfjfOpl9rW1jKHbh76I3h2I0OitU yWQUKPvSm/pIqhYfJ84Fr4Q3j289BJcr5H32rfFHynTlRBBhE0/8Ve5rdvQK+ShJYLEq OJbN+lcdBhP5au+RSh9aZmrvO9hg6OTdNMU4/+MGnzJ/oARaumKcNF+NkHO5kvCfKwaI q7CQqFL7qAJxKQ9p+ivLYoReXNM5SSANdNXIs4D1XrmBtz4Uf7CNhioip/ecU8+kIMIm AO9CIsGLeoYGRjsU+9CkYvQ8CqrHHJvncYG1blLY6ztiqAoaqHmVb1DGn7fVWZ1lKfc4 iVBA== X-Forwarded-Encrypted: i=1; AFNElJ/pJiIicH2dKGYhKTnJ5Xr0pBVkRmPywpnTaEly9WFEOnH8PljjI9xGLAWHq8ou61bVAicXdg==@debbugs.gnu.org X-Gm-Message-State: AOJu0YzxY6JejUkdeIeuotNNE5izbWtWHowzV4HUudMBRldbTmjf3gxo pkz0PzMJ53eo0847ntrBF0PfQNo7YQ/86JzKW4TmOdtoL6c8FIxWawkuZMJkjizCajS2XYV3nf2 P0LgrxudCZhDLEgAgjeET2sG9HGrrW/M= X-Gm-Gg: Acq92OFo0FU207fbao5cyblCSPJhj9J9ZEj4Rvk68wOaFXdvbv9gfHoGXXJ/ciFcpMC gq95v0m7Mjn6+sUSwCA1VpJW9pTFi/cCk1U3XuQZarq/yPNMMosAQ7NTLB/C7iTSQUWKFB+PvdW SZrNpsTNf+tvfPjjuaLaLtbSG8No4t6SSg9earbnZIfiKOTbPI+wM9TbuvzJWx2Nb9e++MVCnlg ZHORKE65MrENiIoMEhUHujcke7zNxU+7f8fP5m94uZICoHj+zcXgR7Jh0nOE/5QNjXxENhmBMvQ Hw/GBffjfECRy87R0vubZtjgrumQGcK6tpvtJf63IwJLX1ML/hazlY7vUfJhA1Hpx0jtIaU7MbJ BUjgqU+k4l6VYk7tyLk553/0JmoGsn09nBa71JRowZ7RUdete6rF57fmPSbp19DjxAof8 X-Received: by 2002:a67:e70e:0:b0:635:1bc8:3568 with SMTP id ada2fe7eead31-6c69f98721fmr2904931137.23.1780251931192; Sun, 31 May 2026 11:25:31 -0700 (PDT) MIME-Version: 1.0 References: <CAJ8YToa+nueew9wQ52xJtD-jXOdcA+Vq+NZEVcd=Q3V66opHSg@HIDDEN> <CAN+1HbpLJqPWufz3mOmAm1Oq=+_a38aMH5FZub5-pn5=C4msSw@HIDDEN> <87pl2dq2a7.fsf@HIDDEN> <87se79pxdd.fsf@HIDDEN> <CAJ8YToZazwzGtP9QU-ijh+VSTiDBW3PAOPCq4S-Xh8YeHAtB1Q@HIDDEN> <CALDnm53Z+oOs+=Y0t-gpgreWcC=2=2qRguT=DbVtcx4RFtOSRg@HIDDEN> <CAJ8YToafSau+bEJKtaKORVN4-_APO09AZ03CL_dGj5rD_j1-3Q@HIDDEN> <87o6hxp2tj.fsf@HIDDEN> <CAJ8YTobrDNoMFyQcG9vrj_6kRhng=f7ak-_m66ovwZ=nye822g@HIDDEN> <87ik83q4ti.fsf@HIDDEN> <CAN+1Hbp4n76dbjcOSJLm3xfkVac8Gj76pv8XAmcucOUmngEmLQ@HIDDEN> <86wlwjy4vv.fsf@HIDDEN> <CAN+1HbrQdqcURTQ_GtdPQ1s+JTBxSZwx30ZQWJysqu0pOZRwHA@HIDDEN> <86tsrnxx7p.fsf@HIDDEN> In-Reply-To: <86tsrnxx7p.fsf@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Sun, 31 May 2026 14:25:19 -0400 X-Gm-Features: AVHnY4IPROgkk21Fk6OysPpuXc0PQDg4r0B2AZ9L1C7rvb34M3ceUTtyk68hz5o Message-ID: <CAN+1Hbq2W3=A9TmepqU6JjYonm7ur-P4euFyzRnQ4ssTMDfvbw@HIDDEN> Subject: Re: bug#81150: 31.0.60; eglot: performance issue with markdown-ts-mode To: Eli Zaretskii <eliz@HIDDEN> Content-Type: multipart/alternative; boundary="000000000000f831f20653213326" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 81150 Cc: rahuljuliato@HIDDEN, joaotavora@HIDDEN, 81150 <at> debbugs.gnu.org, romain.ouabdelkader@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: 0.0 (/) --000000000000f831f20653213326 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sun, May 31, 2026 at 2:14=E2=80=AFPM Eli Zaretskii <eliz@HIDDEN> wrote: > > From: St=C3=A9phane Marks <shipmints@HIDDEN> > > Date: Sun, 31 May 2026 12:25:42 -0400 > > Cc: joaotavora@HIDDEN, rahuljuliato@HIDDEN, 81150 <at> debbugs.gnu.org= , > > > romain.ouabdelkader@HIDDEN > > > > Given these problems and the fact that we want to start the pretest > > soon, I think it's better if we currently remove markdown-ts-view-mode > > (or any other variant of markdown-ts-mode) from Eglot, and let you and > > Rahul bring the mode up to speed. Introducing yet another mode so > > close to a pretest runs a high risk of causing more unanticipated > > problems, and it isn't right to make such significant changes that > > affect other Emacs features. Personally, I think all those additional > > variants of markdown-ts-mode should be installed on master, not on the > > emacs-31 release branch. > > > > It's a minor variation on the theme. How about we see how it goes and > we'll decide as a group? > > In what world is it okay to add complete new modes after a feature > freeze? With so little time left to see how it goes before the > release, how can we be sure there are no unintended consequences in > this minor variation, like there were in the previously-introduced > variations? > > Please look at this from the project-management POV. We do want to > release Emacs 31.1 soon, don't we? If we do, features that are > evidently not mature enough should be deferred to the next release. > Surely up to you and I'm not privy to the release dates. Locking down emacs-31 a few weeks ago came as a surprise without forewarning at least on the public lists. I'm sure you and Sean (and maybe others) discussed it separately. In any case, a mode is just a function, in the end, so if we solved the issue without a mode but with just a "function" would it really be that different? How about we wait to see the code and then decide. I don't really have much of a horse in the 31 vs. 32 race but I would like to see the new core markdown mode be as useful as we can make it (within reason). I think there are a few more code tweaks in addition to these we've been sitting on while helping eglot. work-buffer--release improvement is an example of one that's not markdown specific but where markdown exposed a rough edge. --000000000000f831f20653213326 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon= t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">= On Sun, May 31, 2026 at 2:14=E2=80=AFPM Eli Zaretskii <<a href=3D"mailto= :eliz@HIDDEN">eliz@HIDDEN</a>> wrote:</span></div></div><div class=3D"= gmail_quote gmail_quote_container"><blockquote class=3D"gmail_quote" style= =3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding= -left:1ex">> From: St=C3=A9phane Marks <<a href=3D"mailto:shipmints@g= mail.com" target=3D"_blank">shipmints@HIDDEN</a>><br> > Date: Sun, 31 May 2026 12:25:42 -0400<br> > Cc: <a href=3D"mailto:joaotavora@HIDDEN" target=3D"_blank">joaotavo= ra@HIDDEN</a>, <a href=3D"mailto:rahuljuliato@HIDDEN" target=3D"_blan= k">rahuljuliato@HIDDEN</a>, <a href=3D"mailto:81150 <at> debbugs.gnu.org" tar= get=3D"_blank">81150 <at> debbugs.gnu.org</a>, <br> >=C2=A0 =C2=A0 =C2=A0 =C2=A0<a href=3D"mailto:romain.ouabdelkader@gmail.= com" target=3D"_blank">romain.ouabdelkader@HIDDEN</a><br> > <br> >=C2=A0 Given these problems and the fact that we want to start the pret= est<br> >=C2=A0 soon, I think it's better if we currently remove markdown-ts= -view-mode<br> >=C2=A0 (or any other variant of markdown-ts-mode) from Eglot, and let y= ou and<br> >=C2=A0 Rahul bring the mode up to speed.=C2=A0 Introducing yet another = mode so<br> >=C2=A0 close to a pretest runs a high risk of causing more unanticipate= d<br> >=C2=A0 problems, and it isn't right to make such significant change= s that<br> >=C2=A0 affect other Emacs features.=C2=A0 Personally, I think all those= additional<br> >=C2=A0 variants of markdown-ts-mode should be installed on master, not = on the<br> >=C2=A0 emacs-31 release branch.<br> > <br> > It's a minor variation on the theme.=C2=A0 How about we see how it= goes and we'll decide as a group?<br> <br> In what world is it okay to add complete new modes after a feature<br> freeze?=C2=A0 With so little time left to see how it goes before the<br> release, how can we be sure there are no unintended consequences in<br> this minor variation, like there were in the previously-introduced<br> variations?<br> <br> Please look at this from the project-management POV.=C2=A0 We do want to<br= > release Emacs 31.1 soon, don't we?=C2=A0 If we do, features that are<br= > evidently not mature enough should be deferred to the next release.<br></bl= ockquote><div><br></div><div class=3D"gmail_default" style=3D"font-family:m= onospace">Surely up to you and I'm not privy=C2=A0to the=C2=A0release d= ates.=C2=A0 Locking down emacs-31 a few weeks ago came as a surprise withou= t forewarning at least on the public lists.=C2=A0 I'm sure you and Sean= (and maybe others) discussed it separately.=C2=A0 In any case, a mode is j= ust a function, in the end, so if we solved the issue without a mode but wi= th just a "function" would it really be that different?=C2=A0 How= about we wait to see the code and then decide.=C2=A0 I don't really ha= ve much of a horse in the 31 vs. 32 race but I would like to see the new co= re markdown mode be as useful as we can make it (within reason).=C2=A0 I th= ink there are a few more code tweaks in addition to these we've been si= tting on while helping eglot.=C2=A0 work-buffer--release improvement is an = example of one that's not markdown specific but where markdown exposed = a rough edge.</div></div></div> --000000000000f831f20653213326--
bug-gnu-emacs@HIDDEN:bug#81150; Package emacs.
Full text available.Received: (at 81150) by debbugs.gnu.org; 31 May 2026 18:15:02 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun May 31 14:15:02 2026 Received: from localhost ([127.0.0.1]:32818 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wTkgf-0001Rn-Ty for submit <at> debbugs.gnu.org; Sun, 31 May 2026 14:15:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39970) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1wTkge-0001RH-CP for 81150 <at> debbugs.gnu.org; Sun, 31 May 2026 14:15:00 -0400 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 1wTkgZ-0001Wr-31; Sun, 31 May 2026 14:14:55 -0400 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=QkwgmAQaPaVYGlGmSAjz2zo9SQWqJqN7kR0uNEJyH2o=; b=GcQwrovqHoVqpAKaq5c1 RWYbzBE9O3V9MTUUVyH+KCnxW9LyfHovrXTUFZlcViBc7pESDkoNNPlk1iOqlajihCv38ZFo9NCnR l1Oko9nHl0NkcLjJN+1tD5m1EvOEr3w8GD4C6Zh5GEqFAaEt0E1VM/eq36B+FV7itdZcrvBJQ64U8 opg/Vt8FMIRDbb3uwg2fgNS3sxwEA3eYhaZZVb0twCi5mrZArKl8757SfuZFRB/tCoqMlSrWjYwmW R2rtY7Sf1YCVmTCu1Xmmpjv0ttgIwqXEq5pykmL2AIQXHNaqp2qgUua1SDHm049YKV4APUXdWdDRc 2CChC9D5bG8iKA==; Date: Sun, 31 May 2026 21:14:50 +0300 Message-Id: <86tsrnxx7p.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: =?utf-8?Q?St=C3=A9phane?= Marks <shipmints@HIDDEN> In-Reply-To: <CAN+1HbrQdqcURTQ_GtdPQ1s+JTBxSZwx30ZQWJysqu0pOZRwHA@HIDDEN> (message from =?utf-8?Q?St=C3=A9phane?= Marks on Sun, 31 May 2026 12:25:42 -0400) Subject: Re: bug#81150: 31.0.60; eglot: performance issue with markdown-ts-mode References: <CAJ8YToa+nueew9wQ52xJtD-jXOdcA+Vq+NZEVcd=Q3V66opHSg@HIDDEN> <CAN+1HbpLJqPWufz3mOmAm1Oq=+_a38aMH5FZub5-pn5=C4msSw@HIDDEN> <87pl2dq2a7.fsf@HIDDEN> <87se79pxdd.fsf@HIDDEN> <CAJ8YToZazwzGtP9QU-ijh+VSTiDBW3PAOPCq4S-Xh8YeHAtB1Q@HIDDEN> <CALDnm53Z+oOs+=Y0t-gpgreWcC=2=2qRguT=DbVtcx4RFtOSRg@HIDDEN> <CAJ8YToafSau+bEJKtaKORVN4-_APO09AZ03CL_dGj5rD_j1-3Q@HIDDEN> <87o6hxp2tj.fsf@HIDDEN> <CAJ8YTobrDNoMFyQcG9vrj_6kRhng=f7ak-_m66ovwZ=nye822g@HIDDEN> <87ik83q4ti.fsf@HIDDEN> <CAN+1Hbp4n76dbjcOSJLm3xfkVac8Gj76pv8XAmcucOUmngEmLQ@HIDDEN> <86wlwjy4vv.fsf@HIDDEN> <CAN+1HbrQdqcURTQ_GtdPQ1s+JTBxSZwx30ZQWJysqu0pOZRwHA@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: 81150 Cc: rahuljuliato@HIDDEN, joaotavora@HIDDEN, 81150 <at> debbugs.gnu.org, romain.ouabdelkader@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 (---) > From: Stéphane Marks <shipmints@HIDDEN> > Date: Sun, 31 May 2026 12:25:42 -0400 > Cc: joaotavora@HIDDEN, rahuljuliato@HIDDEN, 81150 <at> debbugs.gnu.org, > romain.ouabdelkader@HIDDEN > > Given these problems and the fact that we want to start the pretest > soon, I think it's better if we currently remove markdown-ts-view-mode > (or any other variant of markdown-ts-mode) from Eglot, and let you and > Rahul bring the mode up to speed. Introducing yet another mode so > close to a pretest runs a high risk of causing more unanticipated > problems, and it isn't right to make such significant changes that > affect other Emacs features. Personally, I think all those additional > variants of markdown-ts-mode should be installed on master, not on the > emacs-31 release branch. > > It's a minor variation on the theme. How about we see how it goes and we'll decide as a group? In what world is it okay to add complete new modes after a feature freeze? With so little time left to see how it goes before the release, how can we be sure there are no unintended consequences in this minor variation, like there were in the previously-introduced variations? Please look at this from the project-management POV. We do want to release Emacs 31.1 soon, don't we? If we do, features that are evidently not mature enough should be deferred to the next release.
bug-gnu-emacs@HIDDEN:bug#81150; Package emacs.
Full text available.Received: (at 81150) by debbugs.gnu.org; 31 May 2026 16:25:58 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun May 31 12:25:58 2026 Received: from localhost ([127.0.0.1]:60156 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wTiz7-0002Y8-U2 for submit <at> debbugs.gnu.org; Sun, 31 May 2026 12:25:58 -0400 Received: from mail-vk1-xa30.google.com ([2607:f8b0:4864:20::a30]:52664) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1wTiz4-0002Xy-Mr for 81150 <at> debbugs.gnu.org; Sun, 31 May 2026 12:25:55 -0400 Received: by mail-vk1-xa30.google.com with SMTP id 71dfb90a1353d-59c1bacf871so508918e0c.1 for <81150 <at> debbugs.gnu.org>; Sun, 31 May 2026 09:25:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1780244754; cv=none; d=google.com; s=arc-20240605; b=B+KSXMO6nnz/rMjQDnKCdWeXPwq42l28pOjVsOfdPa2AOe6QkTCWE7bXir6eCBMOWS wPKOem8GRlCX4Nmx+4FLRSlSZGkLtobB6zkvQ6xx7p2MvVziMKxMvkejkDemtWcml5vU x9BjSkUo3Lu1bTJx++b8VDWbn0vkXCNeTBlu+rSNKEhPoPDtuJ92ez/Y2DoAGs+ciRma e2LgPb2bngibAfLZAbACKWuZrVx7l0XaDyyOoXEZmnzOR75arphMWJgJwUYrLC/x4g9P xQ3fE7/BGkVat1Vjqwe5Ejok2aS93tPJxa1EkTu38KhN8kEIoS6pWhxMcuils1NU5S1D VNOA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=xA9Lh/eS2nAdWMUIKmjfg3jvUE3XBjk9LKzO3s757O8=; fh=KT4Pz5qXGLjfqC+fu8+6K//EB/sCJeyeO0I/jisNU5s=; b=hE94Fr0/msVtEYiw8hnNnV+TZ6BtngEoJUGp2KQaIYhf2QRX1i1J2G16O+0aovQWHo 7slYJTA7oLSloN+1GthuuHPt7l7q1KuxDWy19FNENM5/p6QNI9aRoGC4xoTbrRESvHhb HhYIypNYRWRTgZK4ZThsVQcqjOfrDY5x2+uhqrwvbPdkiijppGimmg2zLgBqJShFwGTR G44+SbG3WxrMdaFfUHtWuOjvDzlUEE5v/7iJcv4w6tlEhQHxB3rrTYSxCBL8esCWFHfj oW7ZEJ8WNW0VUtOMomHUGQOmi/qk/SzpAop8X0CK3szqbhWrrtjSv6LIQ+GI9dj81iBd ZDTQ==; darn=debbugs.gnu.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780244754; x=1780849554; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=xA9Lh/eS2nAdWMUIKmjfg3jvUE3XBjk9LKzO3s757O8=; b=EbgSH1RoNcaRBTlzOoeWAzeGZLyvtWtnn2DbLtvmHO9oa/OrxiIZKbbsfIBL9cw3Rg n+adjyF807+liqVmErP8iCHhmpgI6wrjKPv8HvDv8skCi7JlpNtB8XkbFK2r99wNqSYw nDEQRAQe9QTrh+7sE6d/zrPQCqB8mWZ9X8cODiYDzIieLV3g2S3aU+PfTf8wU+ESJzQE za1J3MZAQmR7Uyjm9diJQUgk3qMmp1c9ywb8p79bRe/+HYZp1S+/H+BgD0g1r0ZsE1ey lyOaLJ29o1Qz1JAF2DFKipLYP6ycKBuGL5tstakG2Tl5rw6PWhwbgNFIHBvu5LyGi1jA /1kA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780244754; x=1780849554; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=xA9Lh/eS2nAdWMUIKmjfg3jvUE3XBjk9LKzO3s757O8=; b=OyRjuMBpxAIR6QGexOGLl3tPK1u36GUjXDH7yNdaqaKywOtEILv0vJazSptqknKq// VVmAvsIfnlsfJKm/yHTdvPFg2rWrGIZOyedy96nQmcfL8sf+yVihSCw7wowtL9w0Xzwz oe9mt5V8lLqO8QvZuESjsDH7nzDOrFCF3912estPaTLSOflNwEO8ckmIVfI3i13C2mRk fHsvS5vx8OXMnrUeRjTJIZk0Ul8SSra8eSRc1RtIZlFciYOCI0evNO0g8BX8hYeBfaU0 KNjAZYLfY87owIzNtxQsYLRAoj6nXKKYeMskL+KyN505uQ4Wv5o6CmhHaAiL0Y2EE0B4 ez9A== X-Forwarded-Encrypted: i=1; AFNElJ+gzKEUO4FkDHiGCqJat0HgLAYyT9lGVqPXjDloAs05Fn2sq8Fu3yQJxqpn5UTrh82rSGQtiA==@debbugs.gnu.org X-Gm-Message-State: AOJu0Yw8+6Ra0sy+7Nkaewrkd3v1hpyGpV4Li2/SwX4p/HTHbouMLK2H PE6ymBsZFs72I4xkk8inaFeeKCOJwDsoNzT5NcQqL/rpxavMgQ6nmQcky/+zOsa7/GStWtEBwul HP1JIzSq4b7M/UqtOF5XmFdcjkaLm7rQ= X-Gm-Gg: Acq92OHG5CxezPuag/+yNoswcHBzeV+vBm05NheRNTS7ormckFcYlhUkbC2PlFc4gkM 63GQ1Xmq23slgStwhCa/CdHIyQvHtNA0oVzEIA0J8M6Rzt/X3gDDmUqVB5UvsguovkJ8TMYpT2s eDZ6szFIwh7VAWhpiU82jOvSVAcTKksDiC2302tPiDQ6Dv2L4fixSAMa+zHbqF2tBQs2CXrBUmv OgwGSGPIjMhzh8ehwMF9+KgGy5zmt/5/5uHSg3Hl6U6dZAPzyW3d42oE/rwiaKS+ehrdanX2iNi +mk5yJPmgwhWe/FJStIsYfBf/KwKsLYT/PZlumV7oSQP32TmRNzRrZGaejxDM7eQiH7glBPtbhk VlNZPeR6ampF5qCWt/k01LSkMwG3TrsvTKnXwbYNHpHYCAziR5ImKMTNesSvVUSlogB91 X-Received: by 2002:a05:6102:9d0:b0:66b:a0d7:abc4 with SMTP id ada2fe7eead31-6c6772b5220mr2666781137.0.1780244753818; Sun, 31 May 2026 09:25:53 -0700 (PDT) MIME-Version: 1.0 References: <CAJ8YToa+nueew9wQ52xJtD-jXOdcA+Vq+NZEVcd=Q3V66opHSg@HIDDEN> <CAN+1HbpLJqPWufz3mOmAm1Oq=+_a38aMH5FZub5-pn5=C4msSw@HIDDEN> <87pl2dq2a7.fsf@HIDDEN> <87se79pxdd.fsf@HIDDEN> <CAJ8YToZazwzGtP9QU-ijh+VSTiDBW3PAOPCq4S-Xh8YeHAtB1Q@HIDDEN> <CALDnm53Z+oOs+=Y0t-gpgreWcC=2=2qRguT=DbVtcx4RFtOSRg@HIDDEN> <CAJ8YToafSau+bEJKtaKORVN4-_APO09AZ03CL_dGj5rD_j1-3Q@HIDDEN> <87o6hxp2tj.fsf@HIDDEN> <CAJ8YTobrDNoMFyQcG9vrj_6kRhng=f7ak-_m66ovwZ=nye822g@HIDDEN> <87ik83q4ti.fsf@HIDDEN> <CAN+1Hbp4n76dbjcOSJLm3xfkVac8Gj76pv8XAmcucOUmngEmLQ@HIDDEN> <86wlwjy4vv.fsf@HIDDEN> In-Reply-To: <86wlwjy4vv.fsf@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Sun, 31 May 2026 12:25:42 -0400 X-Gm-Features: AVHnY4JNOwvaQ9CXHxmOAaiZGVRQKouXxla0pSj70A26b8BlDieI-VPeQ6ssQfU Message-ID: <CAN+1HbrQdqcURTQ_GtdPQ1s+JTBxSZwx30ZQWJysqu0pOZRwHA@HIDDEN> Subject: Re: bug#81150: 31.0.60; eglot: performance issue with markdown-ts-mode To: Eli Zaretskii <eliz@HIDDEN> Content-Type: multipart/alternative; boundary="0000000000002a2a4a06531f88f0" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 81150 Cc: rahuljuliato@HIDDEN, joaotavora@HIDDEN, 81150 <at> debbugs.gnu.org, romain.ouabdelkader@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: 0.0 (/) --0000000000002a2a4a06531f88f0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sun, May 31, 2026 at 11:29=E2=80=AFAM Eli Zaretskii <eliz@HIDDEN> wrote= : > > Cc: Rahul Martim Juliato <rahuljuliato@HIDDEN>, 81150@HIDDEN= g > , > > Romain Ouabdelkader <romain.ouabdelkader@HIDDEN> > > From: St=C3=A9phane Marks <shipmints@HIDDEN> > > Date: Sun, 31 May 2026 10:58:41 -0400 > > > > I've cleaned up and pushed this change to emacs-31. The new > > eglot-documentation-renderer defaults to markdown-ts-view-mode if you > > have the grammar available, but most people probably won't at this > > point, and it can easily be set to gfm-view-mode. Depending on how > > things evolve I can eventually flip the two expressions: > > > > (defcustom eglot-documentation-renderer (cond ((eglot--builtin-mdown-p= ) > > 'markdown-ts-view-mode) > > ((fboundp 'gfm-view-mode= ) > > 'gfm-view-mode) > > (t > > nil)) > > "Control rendering of LSP documentation fragments. > > ... > > > > Anyway, let's hope Rahul and St=C3=A9phane can speed up m-ts-v-m > > initialization and parsing in general. Here's a benchmark showing > > zero-load rendering to be (atm) 15x times slower on m-ts-v-m than > > gfm-view-mode. > > > > (benchmark-run 500 (with-temp-buffer (gfm-view-mode))) ; (0.204455428 = 1 > 0.12382291299999792) > > (benchmark-run 500 (with-temp-buffer (markdown-ts-view-mode))) ; > (3.1686958869999997 7 > > 0.7760925679999957) > > > > We're leaving markdown-ts-view-mode in place and we added > markdown-ts-render-mode which is more > > restrictive and intended specifically for eglot/eldoc type rendering us= e > cases with no interactivity with the > > markdown buffer itself (unlike markdown-ts-mode and > markdown-ts-view-mode). > > > > I don't know if Rahul has reviewed the latest but an early look at the > benchmark suggests this ratio on my > > machine: > > > > (benchmark-run 500 (with-temp-buffer (gfm-view-mode))) ; (2.483635 0 0.= 0) > > (benchmark-run 500 (with-temp-buffer (markdown-ts-view-mode))) ; > (13.047932000000001 1 > > 0.053444999999999965) > > (benchmark-run 500 (with-temp-buffer (markdown-ts-render-mode))) ; > (1.253587 0 0.0) > > > > And with the even more efficient reusable work buffers which stress gc > less: > > > > (benchmark-run 500 (with-work-buffer (gfm-view-mode))) ; (2.381208 0 0.= 0) > > (benchmark-run 500 (with-work-buffer (markdown-ts-view-mode))) ; > (8.37147 1 0.05578499999999975) > > (benchmark-run 500 (with-work-buffer (markdown-ts-render-mode))) ; > (1.1801679999999999 0 0.0) > > Given these problems and the fact that we want to start the pretest > soon, I think it's better if we currently remove markdown-ts-view-mode > (or any other variant of markdown-ts-mode) from Eglot, and let you and > Rahul bring the mode up to speed. Introducing yet another mode so > close to a pretest runs a high risk of causing more unanticipated > problems, and it isn't right to make such significant changes that > affect other Emacs features. Personally, I think all those additional > variants of markdown-ts-mode should be installed on master, not on the > emacs-31 release branch. > It's a minor variation on the theme. How about we see how it goes and we'll decide as a group? --0000000000002a2a4a06531f88f0 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon= t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">= On Sun, May 31, 2026 at 11:29=E2=80=AFAM Eli Zaretskii <<a href=3D"mailt= o:eliz@HIDDEN">eliz@HIDDEN</a>> wrote:</span></div></div><div class=3D= "gmail_quote gmail_quote_container"><blockquote class=3D"gmail_quote" style= =3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding= -left:1ex">> Cc: Rahul Martim Juliato <<a href=3D"mailto:rahuljuliato= @gmail.com" target=3D"_blank">rahuljuliato@HIDDEN</a>>, <a href=3D"ma= ilto:81150 <at> debbugs.gnu.org" target=3D"_blank">81150 <at> debbugs.gnu.org</a>,<br= > >=C2=A0 Romain Ouabdelkader <<a href=3D"mailto:romain.ouabdelkader@gm= ail.com" target=3D"_blank">romain.ouabdelkader@HIDDEN</a>><br> > From: St=C3=A9phane Marks <<a href=3D"mailto:shipmints@HIDDEN" t= arget=3D"_blank">shipmints@HIDDEN</a>><br> > Date: Sun, 31 May 2026 10:58:41 -0400<br> > <br> >=C2=A0 I've cleaned up and pushed this change to emacs-31.=C2=A0 Th= e new<br> >=C2=A0 eglot-documentation-renderer defaults to markdown-ts-view-mode i= f you<br> >=C2=A0 have the grammar available, but most people probably won't a= t this<br> >=C2=A0 point, and it can easily be set to gfm-view-mode.=C2=A0 Dependin= g on how<br> >=C2=A0 things evolve I can eventually flip the two expressions:<br> > <br> >=C2=A0 (defcustom eglot-documentation-renderer (cond ((eglot--builtin-m= down-p)<br> >=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0'markdown-ts-view-mode)<br> >=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 ((fboundp 'gfm-view-mode)<br> >=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0'gfm-view-mode)<br> >=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 (t<br> >=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0nil))<br> >=C2=A0 =C2=A0 "Control rendering of LSP documentation fragments.<b= r> >=C2=A0 =C2=A0 ...<br> > <br> >=C2=A0 Anyway, let's hope Rahul and St=C3=A9phane can speed up m-ts= -v-m<br> >=C2=A0 initialization and parsing in general.=C2=A0 Here's a benchm= ark showing<br> >=C2=A0 zero-load rendering to be (atm) 15x times slower on m-ts-v-m tha= n<br> >=C2=A0 gfm-view-mode.<br> > <br> >=C2=A0 (benchmark-run 500 (with-temp-buffer (gfm-view-mode))) ; (0.2044= 55428 1 0.12382291299999792)<br> >=C2=A0 (benchmark-run 500 (with-temp-buffer (markdown-ts-view-mode))) ;= (3.1686958869999997 7<br> >=C2=A0 0.7760925679999957)<br> > <br> > We're leaving markdown-ts-view-mode in place and we added markdown= -ts-render-mode which is more<br> > restrictive and intended specifically for eglot/eldoc type rendering u= se cases with no interactivity with the<br> > markdown buffer itself (unlike markdown-ts-mode and markdown-ts-view-m= ode).<br> > <br> > I don't know if Rahul has reviewed the latest but an early look at= the benchmark suggests this ratio on my<br> > machine:<br> > <br> > (benchmark-run 500 (with-temp-buffer (gfm-view-mode))) ; (2.483635 0 0= .0)<br> > (benchmark-run 500 (with-temp-buffer (markdown-ts-view-mode))) ; (13.0= 47932000000001 1<br> > 0.053444999999999965)<br> > (benchmark-run 500 (with-temp-buffer (markdown-ts-render-mode))) ; (1.= 253587 0 0.0)<br> > <br> > And with the even more efficient reusable work buffers which stress gc= less:<br> > <br> > (benchmark-run 500 (with-work-buffer (gfm-view-mode))) ; (2.381208 0 0= .0)<br> > (benchmark-run 500 (with-work-buffer (markdown-ts-view-mode))) ; (8.37= 147 1 0.05578499999999975)<br> > (benchmark-run 500 (with-work-buffer (markdown-ts-render-mode))) ; (1.= 1801679999999999 0 0.0)<br> <br> Given these problems and the fact that we want to start the pretest<br> soon, I think it's better if we currently remove markdown-ts-view-mode<= br> (or any other variant of markdown-ts-mode) from Eglot, and let you and<br> Rahul bring the mode up to speed.=C2=A0 Introducing yet another mode so<br> close to a pretest runs a high risk of causing more unanticipated<br> problems, and it isn't right to make such significant changes that<br> affect other Emacs features.=C2=A0 Personally, I think all those additional= <br> variants of markdown-ts-mode should be installed on master, not on the<br> emacs-31 release branch.<br></blockquote><div><br></div><div class=3D"gmail= _default" style=3D"font-family:monospace">It's a minor variation on the= theme.=C2=A0 How about we see how it goes and we'll decide as a group?= </div></div></div> --0000000000002a2a4a06531f88f0--
bug-gnu-emacs@HIDDEN:bug#81150; Package emacs.
Full text available.Received: (at 81150) by debbugs.gnu.org; 31 May 2026 15:29:19 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun May 31 11:29:19 2026 Received: from localhost ([127.0.0.1]:59700 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wTi6J-0004UY-3F for submit <at> debbugs.gnu.org; Sun, 31 May 2026 11:29:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57366) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1wTi6G-0004UC-Mx for 81150 <at> debbugs.gnu.org; Sun, 31 May 2026 11:29:17 -0400 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 1wTi6B-0003xu-DG; Sun, 31 May 2026 11:29:11 -0400 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=oaBMLHQhV7XF+XmhAA0iwL2GqU0Ho+08QmvOatag+Wg=; b=MHxkTLBoG7s3Zc1TLhfU z73VCKT1UhMjpMJt2/bDT2zpG/WNPBzBtBWS32fiR2Nz+nveTPzC5nFgvLeWh4qvG4OssaRuqWcFy gX3g7z++Qy/kBOHoWruBmq43GuvyDkdF12hvyYspVg1e/Fne6IbPHUvGaJB/b3ZhZ68S1fDRZE9nv Hvh0wOYViqD7HWHCn7ILtwRN9d/QanjIxmg2qbZDg6xLuKfno00mJPOvCgNnJ5EiGk/ZZ52scsZ8h FWnh8sj7xZqmbe1Bc5aDfpsnmY5lg0a4SXOQhY/l4lxefzpEEcrBgts/LJjL3nmJo7VN3AsSAB8It lGMd3oTvBjhYcA==; Date: Sun, 31 May 2026 18:29:08 +0300 Message-Id: <86wlwjy4vv.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: =?utf-8?Q?St=C3=A9phane?= Marks <shipmints@HIDDEN> In-Reply-To: <CAN+1Hbp4n76dbjcOSJLm3xfkVac8Gj76pv8XAmcucOUmngEmLQ@HIDDEN> (message from =?utf-8?Q?St=C3=A9phane?= Marks on Sun, 31 May 2026 10:58:41 -0400) Subject: Re: bug#81150: 31.0.60; eglot: performance issue with markdown-ts-mode References: <CAJ8YToa+nueew9wQ52xJtD-jXOdcA+Vq+NZEVcd=Q3V66opHSg@HIDDEN> <CAN+1HbpLJqPWufz3mOmAm1Oq=+_a38aMH5FZub5-pn5=C4msSw@HIDDEN> <87pl2dq2a7.fsf@HIDDEN> <87se79pxdd.fsf@HIDDEN> <CAJ8YToZazwzGtP9QU-ijh+VSTiDBW3PAOPCq4S-Xh8YeHAtB1Q@HIDDEN> <CALDnm53Z+oOs+=Y0t-gpgreWcC=2=2qRguT=DbVtcx4RFtOSRg@HIDDEN> <CAJ8YToafSau+bEJKtaKORVN4-_APO09AZ03CL_dGj5rD_j1-3Q@HIDDEN> <87o6hxp2tj.fsf@HIDDEN> <CAJ8YTobrDNoMFyQcG9vrj_6kRhng=f7ak-_m66ovwZ=nye822g@HIDDEN> <87ik83q4ti.fsf@HIDDEN> <CAN+1Hbp4n76dbjcOSJLm3xfkVac8Gj76pv8XAmcucOUmngEmLQ@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: 81150 Cc: rahuljuliato@HIDDEN, joaotavora@HIDDEN, 81150 <at> debbugs.gnu.org, romain.ouabdelkader@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 (---) > Cc: Rahul Martim Juliato <rahuljuliato@HIDDEN>, 81150 <at> debbugs.gnu.org, > Romain Ouabdelkader <romain.ouabdelkader@HIDDEN> > From: Stéphane Marks <shipmints@HIDDEN> > Date: Sun, 31 May 2026 10:58:41 -0400 > > I've cleaned up and pushed this change to emacs-31. The new > eglot-documentation-renderer defaults to markdown-ts-view-mode if you > have the grammar available, but most people probably won't at this > point, and it can easily be set to gfm-view-mode. Depending on how > things evolve I can eventually flip the two expressions: > > (defcustom eglot-documentation-renderer (cond ((eglot--builtin-mdown-p) > 'markdown-ts-view-mode) > ((fboundp 'gfm-view-mode) > 'gfm-view-mode) > (t > nil)) > "Control rendering of LSP documentation fragments. > ... > > Anyway, let's hope Rahul and Stéphane can speed up m-ts-v-m > initialization and parsing in general. Here's a benchmark showing > zero-load rendering to be (atm) 15x times slower on m-ts-v-m than > gfm-view-mode. > > (benchmark-run 500 (with-temp-buffer (gfm-view-mode))) ; (0.204455428 1 0.12382291299999792) > (benchmark-run 500 (with-temp-buffer (markdown-ts-view-mode))) ; (3.1686958869999997 7 > 0.7760925679999957) > > We're leaving markdown-ts-view-mode in place and we added markdown-ts-render-mode which is more > restrictive and intended specifically for eglot/eldoc type rendering use cases with no interactivity with the > markdown buffer itself (unlike markdown-ts-mode and markdown-ts-view-mode). > > I don't know if Rahul has reviewed the latest but an early look at the benchmark suggests this ratio on my > machine: > > (benchmark-run 500 (with-temp-buffer (gfm-view-mode))) ; (2.483635 0 0.0) > (benchmark-run 500 (with-temp-buffer (markdown-ts-view-mode))) ; (13.047932000000001 1 > 0.053444999999999965) > (benchmark-run 500 (with-temp-buffer (markdown-ts-render-mode))) ; (1.253587 0 0.0) > > And with the even more efficient reusable work buffers which stress gc less: > > (benchmark-run 500 (with-work-buffer (gfm-view-mode))) ; (2.381208 0 0.0) > (benchmark-run 500 (with-work-buffer (markdown-ts-view-mode))) ; (8.37147 1 0.05578499999999975) > (benchmark-run 500 (with-work-buffer (markdown-ts-render-mode))) ; (1.1801679999999999 0 0.0) Given these problems and the fact that we want to start the pretest soon, I think it's better if we currently remove markdown-ts-view-mode (or any other variant of markdown-ts-mode) from Eglot, and let you and Rahul bring the mode up to speed. Introducing yet another mode so close to a pretest runs a high risk of causing more unanticipated problems, and it isn't right to make such significant changes that affect other Emacs features. Personally, I think all those additional variants of markdown-ts-mode should be installed on master, not on the emacs-31 release branch.
bug-gnu-emacs@HIDDEN:bug#81150; Package emacs.
Full text available.Received: (at 81150) by debbugs.gnu.org; 31 May 2026 14:58:57 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun May 31 10:58:57 2026 Received: from localhost ([127.0.0.1]:59414 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wThcu-0002Q6-JA for submit <at> debbugs.gnu.org; Sun, 31 May 2026 10:58:57 -0400 Received: from mail-vs1-xe30.google.com ([2607:f8b0:4864:20::e30]:55320) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1wThcs-0002Pt-69 for 81150 <at> debbugs.gnu.org; Sun, 31 May 2026 10:58:54 -0400 Received: by mail-vs1-xe30.google.com with SMTP id ada2fe7eead31-6ca16bbc52aso255833137.2 for <81150 <at> debbugs.gnu.org>; Sun, 31 May 2026 07:58:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1780239533; cv=none; d=google.com; s=arc-20240605; b=EcfhnCTesUlEcuBn3F2PnzX6aRs0jHThNKG4GDKM2Glvx48cOWUijJCSH0sXm2r/2s C5d6u5aEwFasLKEw1I3OORsAvd5w6jsv1BPSZmQ4RNfGkOw8mPIynkTP8cOpzkHKYgCM blIh6y0/RQjbiDJ0Allrf8gKD60FPEBqoQd/wtl5da2doD0f7ktF2DhVKa1bbeb0W8nj OrkSyKQEJxXUTWU0Ix75duPmOZJeQk65Rc7OCF+lnKmNOHL/XVy5FzSUlSuZ73XFvwyQ qh0OuVmpCY4EADEBL1RBVQLjj1Rv2l8YSFVVtTtIjtsceRZYACAOg1wCST3U+a/WKGqz SC8A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=O/Cb6XzMvBejlp+edk9ab7Gi7aR9TcTw6jJ0CvkKk4A=; fh=KFgYxD9ZSo4uEVJzRwTw4oYu0Wv96Sdlql6cShLxWZA=; b=jC7k2tXokmyRjuqqT+zJ9Duq4XXYlwZwY5WrQFD6bRIyy6Gd2BnJg8+RdOfUFxS2LI U9jv0V4so1WWNG3guxEHVUXtn2YL+63bVgdmRFfKOZginV/1ax33fRQXVc9X+mBKLiGJ VYP3s5KBO4M+BG5pS+MA3wzf9+8OhSDPPI77gVkpWyVcSaCE4jFyBJqZCb9llhVCQ2Ox +aUXVRrj5CElQGAoLfo9SxOLOpkK8SUaEtdKO3wnXX5orJFtZBvJebSQqTnUvwD7bdGV 5Va/PDKYVbZnRDqQPYmq45LOt8GdElj9knDmfpz+RgSXdMGHJ/F7QXGkl8kpXO2Wx08L VIdQ==; darn=debbugs.gnu.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780239533; x=1780844333; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=O/Cb6XzMvBejlp+edk9ab7Gi7aR9TcTw6jJ0CvkKk4A=; b=DHk/e/yinG1OsMZ4Befu5leAHL9OUht7qiwY1iF1DceczK5Es+/I5lVrHIIW+hh+3Z KXTfUrGO5GMUWhcr7ch3MfZFHUsl0yIoviiDMiRaDEETrC1LMc4X+kKrxg48llyDw+se /IU11dl125eZVebo/1qtLp6SbNvSKknf/kncuMXTiwf83BHzH7rVA9fsoegA4gZwcypd rxZMZZeqYuSgZ0r9Ntfu5XgwBY6AubBTJD8AStxQ2Tp3g+WwLjhBzbH9xrWPJcCaac1Z RizedpLYeCPL5naHpZPC5xXz+bdNuZFEGEggdLe2gK1KYp38F65JjLnXuLKbPdmWQ0HJ 32jw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780239533; x=1780844333; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=O/Cb6XzMvBejlp+edk9ab7Gi7aR9TcTw6jJ0CvkKk4A=; b=dQlNvBxiCdCeWmWCfaaQ2SOCDwDrpdXmMM5paptt1oJE4l6mL90qde5ZDZtz8vCSkx znAk6u3tCwOesQKbR5GEyue0k8Zfx+vEDt4VueiWlKqIFhaFe2eiGbvddnRhOHOIn3vz q8uqcCtB1+DVXWRNNKLRhIH2EZfewBv5/gVOak9HQWCIRXuJrIrhXNQQpEZwGhEtcc5w TZ504Wwzfkhl/XYgq07ratpeYxTB9h+I4rEuhUnjrdeob+5HPxs38puU1+0BjQFDlwhy fbmjrSSBttAGN7VhJsdOJjqSVUUburTb6dg+r/lgrKk3OVs7vb4C2GIDrb0TAz5qXe5V fSgw== X-Forwarded-Encrypted: i=1; AFNElJ95rI7MGo7gcsVrN+r71Wa86D9EzDUPgbEmIv+azHmtBk0pFkzjZMCobZ6pN1Qlk5VRYZOV5A==@debbugs.gnu.org X-Gm-Message-State: AOJu0YxtvtZfG4SJ7bJ6SB+ixp2QCamvlAE+1R+I1krhpAPZUwt36BQ3 2QnOhCgK+ac0VNh4trjIYui4KOcicVT+IolrPKJna44TzGVS9KX9fWtwyGPZPRLdpR+aWzN0A05 FvXolQJmyp5WN9hdJ5GC6g+stvGICFMI= X-Gm-Gg: Acq92OFlvH5Tf/vi5F2HGB6DFEj5HrraPg2wZoIIEIkPBQNxqiTw7l8Jbd7ox2NLDgE R9PEeuT3B4ewWfC+T6nEt7g1JjoJu5pxMBxQIyZKcuJgG0PnxUMyf71OHsMKUWLQPMmmUjKwpaQ 7cNOIdMDUwPIztMsM7iG0DUD5XFIdbnb7OFuZx6gpX+Zvdmxg3ejnzWTRtq22i086zyoXikKRV2 Hoo7VDMPFSIWhNEDJ1Wi9fyksuOxpGmgVmXp4gWkF7B4jnrcjg91nWXjmGd3fDdYZbVx9UTDlUy fyRrU5c7p1NzwpMBTDDIFbPp+hSMJQpMy6NgtQdGd6qfXRWh2shIuuMaOMr6GfYeoukjWMN0UDO 0FWf1PQKEiS2A1LiCEajQgz2E3RbyG/BhlyMzxbN9yjUGd3oe+3CoiWMseJbpyd8VJ0Xu X-Received: by 2002:a05:6102:32c7:b0:632:8eb6:7a1d with SMTP id ada2fe7eead31-6c6990c0f75mr2426832137.9.1780239533286; Sun, 31 May 2026 07:58:53 -0700 (PDT) MIME-Version: 1.0 References: <CAJ8YToa+nueew9wQ52xJtD-jXOdcA+Vq+NZEVcd=Q3V66opHSg@HIDDEN> <CAN+1HbpLJqPWufz3mOmAm1Oq=+_a38aMH5FZub5-pn5=C4msSw@HIDDEN> <87pl2dq2a7.fsf@HIDDEN> <87se79pxdd.fsf@HIDDEN> <CAJ8YToZazwzGtP9QU-ijh+VSTiDBW3PAOPCq4S-Xh8YeHAtB1Q@HIDDEN> <CALDnm53Z+oOs+=Y0t-gpgreWcC=2=2qRguT=DbVtcx4RFtOSRg@HIDDEN> <CAJ8YToafSau+bEJKtaKORVN4-_APO09AZ03CL_dGj5rD_j1-3Q@HIDDEN> <87o6hxp2tj.fsf@HIDDEN> <CAJ8YTobrDNoMFyQcG9vrj_6kRhng=f7ak-_m66ovwZ=nye822g@HIDDEN> <87ik83q4ti.fsf@HIDDEN> In-Reply-To: <87ik83q4ti.fsf@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Sun, 31 May 2026 10:58:41 -0400 X-Gm-Features: AVHnY4I8bmfrLE5epH75nx-2MoIxYKGHCld7B1lb3oZxpr30Rk0Oy2hp8r0NUfI Message-ID: <CAN+1Hbp4n76dbjcOSJLm3xfkVac8Gj76pv8XAmcucOUmngEmLQ@HIDDEN> Subject: Re: bug#81150: 31.0.60; eglot: performance issue with markdown-ts-mode To: =?UTF-8?B?Sm/Do28gVMOhdm9yYQ==?= <joaotavora@HIDDEN> Content-Type: multipart/alternative; boundary="000000000000ff292b06531e5079" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 81150 Cc: Rahul Martim Juliato <rahuljuliato@HIDDEN>, 81150 <at> debbugs.gnu.org, Romain Ouabdelkader <romain.ouabdelkader@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: 0.0 (/) --000000000000ff292b06531e5079 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sun, May 31, 2026 at 5:57=E2=80=AFAM Jo=C3=A3o T=C3=A1vora <joaotavora@g= mail.com> wrote: > Romain Ouabdelkader <romain.ouabdelkader@HIDDEN> writes: > > > Thank you Jo=C3=A3o, > > > > I tested the patch with (setq eglot-documentation-renderer > > 'gfm-view-mode), and can confirm that it fixes the freeze. > > I've cleaned up and pushed this change to emacs-31. The new > eglot-documentation-renderer defaults to markdown-ts-view-mode if you > have the grammar available, but most people probably won't at this > point, and it can easily be set to gfm-view-mode. Depending on how > things evolve I can eventually flip the two expressions: > > (defcustom eglot-documentation-renderer (cond ((eglot--builtin-mdown-p) > 'markdown-ts-view-mode) > ((fboundp 'gfm-view-mode) > 'gfm-view-mode) > (t > nil)) > "Control rendering of LSP documentation fragments. > ... > > Anyway, let's hope Rahul and St=C3=A9phane can speed up m-ts-v-m > initialization and parsing in general. Here's a benchmark showing > zero-load rendering to be (atm) 15x times slower on m-ts-v-m than > gfm-view-mode. > > (benchmark-run 500 (with-temp-buffer (gfm-view-mode))) ; (0.204455428 1 > 0.12382291299999792) > (benchmark-run 500 (with-temp-buffer (markdown-ts-view-mode))) ; > (3.1686958869999997 7 0.7760925679999957) > We're leaving markdown-ts-view-mode in place and we added markdown-ts-render-mode which is more restrictive and intended specifically for eglot/eldoc type rendering use cases with no interactivity with the markdown buffer itself (unlike markdown-ts-mode and markdown-ts-view-mode). I don't know if Rahul has reviewed the latest but an early look at the benchmark suggests this ratio on my machine: (benchmark-run 500 (with-temp-buffer (gfm-view-mode))) ; (2.483635 0 0.0) (benchmark-run 500 (with-temp-buffer (markdown-ts-view-mode))) ; (13.047932000000001 1 0.053444999999999965) (benchmark-run 500 (with-temp-buffer (markdown-ts-render-mode))) ; (1.253587 0 0.0) And with the even more efficient reusable work buffers which stress gc less= : (benchmark-run 500 (with-work-buffer (gfm-view-mode))) ; (2.381208 0 0.0) (benchmark-run 500 (with-work-buffer (markdown-ts-view-mode))) ; (8.37147 1 0.05578499999999975) (benchmark-run 500 (with-work-buffer (markdown-ts-render-mode))) ; (1.1801679999999999 0 0.0) -St=C3=A9phane --000000000000ff292b06531e5079 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon= t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">= On Sun, May 31, 2026 at 5:57=E2=80=AFAM Jo=C3=A3o T=C3=A1vora <<a href= =3D"mailto:joaotavora@HIDDEN">joaotavora@HIDDEN</a>> wrote:</span>= </div></div><div class=3D"gmail_quote gmail_quote_container"><blockquote cl= ass=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid= rgb(204,204,204);padding-left:1ex">Romain Ouabdelkader <<a href=3D"mail= to:romain.ouabdelkader@HIDDEN" target=3D"_blank">romain.ouabdelkader@gma= il.com</a>> writes:<br> <br> > Thank you Jo=C3=A3o, <br> ><br> > I tested the patch with (setq eglot-documentation-renderer<br> > 'gfm-view-mode), and can confirm that it fixes the freeze.<br> <br> I've cleaned up and pushed this change to emacs-31.=C2=A0 The new<br> eglot-documentation-renderer defaults to markdown-ts-view-mode if you<br> have the grammar available, but most people probably won't at this<br> point, and it can easily be set to gfm-view-mode.=C2=A0 Depending on how<br= > things evolve I can eventually flip the two expressions:<br> <br> (defcustom eglot-documentation-renderer (cond ((eglot--builtin-mdown-p)<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0'markdown-ts-view-mode)<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 ((fboundp 'gfm-view-mode)<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0'gfm-view-mode)<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 (t<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0nil))<br> =C2=A0 "Control rendering of LSP documentation fragments.<br> =C2=A0 ...<br> <br> Anyway, let's hope Rahul and St=C3=A9phane can speed up m-ts-v-m<br> initialization and parsing in general.=C2=A0 Here's a benchmark showing= <br> zero-load rendering to be (atm) 15x times slower on m-ts-v-m than<br> gfm-view-mode.<br> <br> (benchmark-run 500 (with-temp-buffer (gfm-view-mode))) ; (0.204455428 1 0.1= 2382291299999792)<br> (benchmark-run 500 (with-temp-buffer (markdown-ts-view-mode))) ; (3.1686958= 869999997 7 0.7760925679999957)<br></blockquote><div><br></div><div><span s= tyle=3D"font-family:monospace">We're leaving markdown-ts-view-mode in p= lace and we added markdown-ts-render-mode which is more restrictive <span c= lass=3D"gmail_default" style=3D"font-family:monospace"></span>a<span class= =3D"gmail_default" style=3D"font-family:monospace">nd</span>=C2=A0intended = specifically for eglot/eldoc type rendering use cases<span class=3D"gmail_d= efault" style=3D"font-family:monospace"> with no interactivity with=C2=A0th= e markdown buffer itself (unlike markdown-ts-mode and markdown-ts-view-mode= )</span>.</span></div><div><br></div><div class=3D"gmail_default" style=3D"= font-family:monospace">I don't know if Rahul has reviewed the latest bu= t an early look at the benchmark suggests this ratio on my machine:</div><d= iv class=3D"gmail_default" style=3D"font-family:monospace"><br></div><div c= lass=3D"gmail_default" style=3D"font-family:monospace">(benchmark-run 500 (= with-temp-buffer (gfm-view-mode))) ; (2.483635 0 0.0)</div><div class=3D"gm= ail_default" style=3D"font-family:monospace">(benchmark-run 500 (with-temp-= buffer (markdown-ts-view-mode))) ; (13.047932000000001 1 0.0534449999999999= 65)</div><div class=3D"gmail_default" style=3D"font-family:monospace">(benc= hmark-run 500 (with-temp-buffer (markdown-ts-render-mode))) ; (1.253587 0 0= .0)</div><div class=3D"gmail_default" style=3D"font-family:monospace"><br><= /div><div class=3D"gmail_default" style=3D"font-family:monospace">And with = the even more efficient reusable work buffers which stress gc less:</div><d= iv class=3D"gmail_default" style=3D"font-family:monospace"><br></div><div c= lass=3D"gmail_default" style=3D"font-family:monospace">(benchmark-run 500 (= with-work-buffer (gfm-view-mode))) ; (2.381208 0 0.0)<br>(benchmark-run 500= (with-work-buffer (markdown-ts-view-mode))) ; (8.37147 1 0.055784999999999= 75)<br>(benchmark-run 500 (with-work-buffer (markdown-ts-render-mode))) ; (= 1.1801679999999999 0 0.0)</div><div class=3D"gmail_default" style=3D"font-f= amily:monospace"><br></div><div class=3D"gmail_default" style=3D"font-famil= y:monospace">-St=C3=A9phane=C2=A0</div><div class=3D"gmail_default" style= =3D"font-family:monospace"><br></div><div class=3D"gmail_default" style=3D"= font-family:monospace"><br></div></div></div> --000000000000ff292b06531e5079--
bug-gnu-emacs@HIDDEN:bug#81150; Package emacs.
Full text available.
Received: (at 81150) by debbugs.gnu.org; 31 May 2026 09:57:50 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun May 31 05:57:49 2026
Received: from localhost ([127.0.0.1]:55495 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1wTcvV-00015R-48
for submit <at> debbugs.gnu.org; Sun, 31 May 2026 05:57:49 -0400
Received: from mail-wm1-x331.google.com ([2a00:1450:4864:20::331]:53378)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <joaotavora@HIDDEN>)
id 1wTcvR-00014z-Uf
for 81150 <at> debbugs.gnu.org; Sun, 31 May 2026 05:57:46 -0400
Received: by mail-wm1-x331.google.com with SMTP id
5b1f17b1804b1-4903d730b1fso82174145e9.2
for <81150 <at> debbugs.gnu.org>; Sun, 31 May 2026 02:57:45 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20251104; t=1780221464; x=1780826264; darn=debbugs.gnu.org;
h=content-transfer-encoding:mime-version:user-agent:message-id:date
:references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date
:message-id:reply-to;
bh=dvBbxHfLd7HUkkJIIZPEoXmCRVvJEofxCzwe2v/bpRs=;
b=V9rEbImkDvJbCUjh2/Unm9bShvN39ARrDIeR5oWYOUd8ktrxgteehoY3Pfrf5KNW0F
q15DNX8JvuJpzNPfNEqoIci3k03Soau9mQt14JB28hlkOHTfPjEi+E1sja9B5O2+XCAq
fTfPNLALmV5pJWoRzoLCtzXBPSc3kw4T8GgQ5D9BIiuj0Gvwzndpa23Tg3Lct02WrziT
pu9BbqHbq9VG7TO/sEfivEq8xPvXFCrW4M3w+61l5W5sT6lP120/kVD/+/65LQqK2eK0
kILjyIz+mKC/SZ+FDZ4KcxzrhtbKgeIk1sSGZTNEDZH7IDNR1R0RG+xP7ZZirqosF5H2
r+jQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20251104; t=1780221464; x=1780826264;
h=content-transfer-encoding:mime-version:user-agent:message-id:date
:references:in-reply-to:subject:cc:to:from:x-gm-gg
:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
bh=dvBbxHfLd7HUkkJIIZPEoXmCRVvJEofxCzwe2v/bpRs=;
b=eg3t9NFJgcUpS8fbhoq24wBQnNC3xwFuZ/I/Y6ZUKrHl9Rh99vWD2Nu0EPwlizB4xf
xo8TnMATTH8gSbjQv5NVRezPgYLNAlg2ZanDxr+h88c0c55q4ruSr17EB2OGStKeQml6
uSkXkfI9qDmuNHbXVzqS2pVv2koKuTN9fzguA7/DSlmHAoIlhDsw8DfkXs0jh+0T2Nte
9o8r/4KU0OxEdyqTMnDeGu11ebgd4uwCeCdn6a7bGNA+e866MjLyb/OM40OI6jucwDbM
koeCm/kFTcx+GB7d8gL3UUBPsVKXq03s6m12PxmPtTTgfjvTzwBRfZRuj+D4EMTob9UD
nCQw==
X-Forwarded-Encrypted: i=1;
AFNElJ9GdpeU8W2XOvaHoKpRIc4NgjSda/Sd8aYYYTaF1jOVbWpVqiqCFrbV0Tasp8Uqpfd/T7NwrQ==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YzLr9BsxzgnNDlCNjDxnVUhw5OXuxH9I5GMR02ZwT4GwgeL0aAZ
/Tkvq8zfTaBetAbxLtzrrRLSRwwQIQnag7wTDgozrSyrRfn9U55EX29K+fzIRQ==
X-Gm-Gg: Acq92OEVMHBWbGhJncGzSWNB4e6ozV955k06SVFxRHJ9MdCYM/CPFYMv5SleqnIVlQ2
m3qJkJmTeGubmI4dVzNvWS2QcILeI3N89BLGIB2IUMrsmCzJcv/nScRkT7Tnzb8gmv72M1csUs7
drhh3/NOaakHEx42lLyVkAtpWOA9Hi1n6WeEUUUgK8o4pmtinvMKlp0xAU6fs2chujrz8Tcpp9O
CjvL1wrA5hufyjs7qwfaWbDkNzKzCbirHJRZjXgizgldhzy7fkp7/Kp5YIrfQgv5jtFBLF2VqR3
saljBiTC7iOQ1Ezf2rLj5nQKqndIWDgth31f16nRRdVugX450Za6siXxt76UFqdMP9J/2qPGXas
s/nqi92Rg/K8HvMJLygfnFNNiqUHNxcDnn6jnd8qZ7Ehd1HA5CM947vtRuByO1o4gHhEKvnDr6R
xNo6QDD8Sg/2ErqBsqF5BE/5Sdq7cHnJvdZyQFy+95LuVr28n9mNh7HrGWQ/VQ9fDovSAsroH+6
VciXTlIhy+MEnghY5QEmOFhH0sHuhpQJej/S2tb
X-Received: by 2002:a05:600c:8508:b0:490:52fb:12dd with SMTP id
5b1f17b1804b1-490a2915bc8mr129216295e9.10.1780221464138;
Sun, 31 May 2026 02:57:44 -0700 (PDT)
Received: from krug (87-196-72-133.net.novis.pt. [87.196.72.133])
by smtp.gmail.com with ESMTPSA id
ffacd0b85a97d-45ef35598e5sm15371455f8f.27.2026.05.31.02.57.42
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sun, 31 May 2026 02:57:43 -0700 (PDT)
From: =?utf-8?B?Sm/Do28gVMOhdm9yYQ==?= <joaotavora@HIDDEN>
To: Romain Ouabdelkader <romain.ouabdelkader@HIDDEN>
Subject: Re: bug#81150: 31.0.60; eglot: performance issue with markdown-ts-mode
In-Reply-To: <CAJ8YTobrDNoMFyQcG9vrj_6kRhng=f7ak-_m66ovwZ=nye822g@HIDDEN>
References: <CAJ8YToa+nueew9wQ52xJtD-jXOdcA+Vq+NZEVcd=Q3V66opHSg@HIDDEN>
<CAN+1HbpLJqPWufz3mOmAm1Oq=+_a38aMH5FZub5-pn5=C4msSw@HIDDEN>
<87pl2dq2a7.fsf@HIDDEN> <87se79pxdd.fsf@HIDDEN>
<CAJ8YToZazwzGtP9QU-ijh+VSTiDBW3PAOPCq4S-Xh8YeHAtB1Q@HIDDEN>
<CALDnm53Z+oOs+=Y0t-gpgreWcC=2=2qRguT=DbVtcx4RFtOSRg@HIDDEN>
<CAJ8YToafSau+bEJKtaKORVN4-_APO09AZ03CL_dGj5rD_j1-3Q@HIDDEN>
<87o6hxp2tj.fsf@HIDDEN>
<CAJ8YTobrDNoMFyQcG9vrj_6kRhng=f7ak-_m66ovwZ=nye822g@HIDDEN>
Date: Sun, 31 May 2026 10:57:45 +0100
Message-ID: <87ik83q4ti.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: 1.0 (+)
X-Debbugs-Envelope-To: 81150
Cc: Rahul Martim Juliato <rahuljuliato@HIDDEN>,
=?utf-8?Q?St=C3=A9phan?= =?utf-8?Q?e?= Marks <shipmints@HIDDEN>,
81150 <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: 0.0 (/)
Romain Ouabdelkader <romain.ouabdelkader@HIDDEN> writes:
> Thank you Jo=C3=A3o,=20
>
> I tested the patch with (setq eglot-documentation-renderer
> 'gfm-view-mode), and can confirm that it fixes the freeze.
I've cleaned up and pushed this change to emacs-31. The new
eglot-documentation-renderer defaults to markdown-ts-view-mode if you
have the grammar available, but most people probably won't at this
point, and it can easily be set to gfm-view-mode. Depending on how
things evolve I can eventually flip the two expressions:
(defcustom eglot-documentation-renderer (cond ((eglot--builtin-mdown-p)
'markdown-ts-view-mode)
((fboundp 'gfm-view-mode)
'gfm-view-mode)
(t
nil))
"Control rendering of LSP documentation fragments.
...
Anyway, let's hope Rahul and St=C3=A9phane can speed up m-ts-v-m
initialization and parsing in general. Here's a benchmark showing
zero-load rendering to be (atm) 15x times slower on m-ts-v-m than
gfm-view-mode.
(benchmark-run 500 (with-temp-buffer (gfm-view-mode))) ; (0.204455428 1 0.1=
2382291299999792)
(benchmark-run 500 (with-temp-buffer (markdown-ts-view-mode))) ; (3.1686958=
869999997 7 0.7760925679999957)
Jo=C3=A3o
bug-gnu-emacs@HIDDEN:bug#81150; Package emacs.
Full text available.Received: (at 81150) by debbugs.gnu.org; 30 May 2026 19:19:30 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat May 30 15:19:30 2026 Received: from localhost ([127.0.0.1]:45837 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wTPDW-0002TK-3o for submit <at> debbugs.gnu.org; Sat, 30 May 2026 15:19:30 -0400 Received: from mail-vk1-xa2a.google.com ([2607:f8b0:4864:20::a2a]:57370) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <rahuljuliato@HIDDEN>) id 1wTPDU-0002TA-9t for 81150 <at> debbugs.gnu.org; Sat, 30 May 2026 15:19:28 -0400 Received: by mail-vk1-xa2a.google.com with SMTP id 71dfb90a1353d-59d6e44e5c8so310937e0c.2 for <81150 <at> debbugs.gnu.org>; Sat, 30 May 2026 12:19:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780168767; x=1780773567; darn=debbugs.gnu.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:date:from:from:to :cc:subject:date:message-id:reply-to; bh=5Osyo+WEFrhCbgZ+Kcoeq5A5eCDzFWayvb75pq8E4tc=; b=eoUG5Jp0cSrEo+sVS0DKVnaLyyLenWqnP+I+34rGa8YDCcWJIYy14B6zga3toz6SGx EEF2vxV37ep4BecqMbL8iGfryIt1Vs0pbvTCF7B0+lNVAjB6Jn0Sc2xk6W4OBau+/+rx Rwfm67Xf9Q4dC/mz2P9Z5V5E9QR7/Q43NaXdGXHBlpLD5sJPK/r155RaxTZZGNcLY/hC SeZglVn1maBJ/TPzJf73fN7nybqghj2GdYk1C7DaEkDspGrWXrLCeslDZaZiL2n7ck47 fGpwzB+fvpj4Vnk4TM98XGZrU0VNrTrhjWcDNrpHkbjrBUVR92eKV9ApPSf62NbXmAHr VvBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780168767; x=1780773567; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=5Osyo+WEFrhCbgZ+Kcoeq5A5eCDzFWayvb75pq8E4tc=; b=hqbQ/P+aLmt+aGPDDi4bb/Pahn/1gHy0rmz/f3pK/YoN/E170AIfvGat/4n48wlCYC q0+Pj1DKc0s6oZpo8FJrAGIEVF/BjdSzC6Hp5+Y0xU+nrMo+S3Gb+t+Mh0NAI+xmM6Hm KkHrzgrjyh6jtdVQiqvmuL1OlQ5LogcB4TcLBTpOuSgcT/6vC/xZ5xcv3b47VHC7DsVN f3q4Smjfry1SuqeBUtS7rHEy1hXqcxN108BzQWbe/x4gYWDWqu29te5MMjaPTWkB4N6c Scjfl9SqgHvPmkuW0t4UWjChzHx04YgUIZGFMQMRyIXyL9bMKKezMYo6wYnmR7FcJmd2 YvNg== X-Forwarded-Encrypted: i=1; AFNElJ9XaAIcHtQGxHtsuFKzg81vMOS8Er4S/3/8qN5FI7Nud5EcIr12jalpCdyCfQTD0r7ovxEcrw==@debbugs.gnu.org X-Gm-Message-State: AOJu0Yynam9vnCiQ1HlUX5/q3KMx3uyttFNwd9suob5dv2lIVmDYoZfC Y7O5dZP3vEBwN5Dh5vSs8TLDEaW5iMOOMHlZdbxOrjT8EaUZ6Zbl2e3BdhuG4Is1II8= X-Gm-Gg: Acq92OHZ7caDWAVfZLFGF1VbBIB2eBYfT+XX67Dqp32/teMrH8cCSIRDklU3NDAfYUX pmFQhmpSSo52R0FU8IZoC4+OPbQIFpKUsPIj0FTI11vlIeG9RApNinIFsxxLLWzgaWg9jGkqExm xLhpqywwq/EfKazaaQLX/XXvF8pGXVzvhCn+6YzRUTTjbO87n3rMR807fV7oFHsCv2fjY+R9ldO a8/p7eNeXwu6dcyX8BsyyZSTC8RjYwcqtzkfb0Nr6q1+2AcSjjcTAlcwIMk6V7Wn+9QRH9s2pTP ZNeoKl9/Un9D0brtl+KbFERMUl51o34GqDD9pBLYcsclOMwNAv9+gUcvfn08LDj7Rv9TL4XDNCW bcbNNqk1yTar+k5vRt4w4wyZCx9CJInyKF1ujM5zwdyxeMz91YVO1rdLv7+uXsPgjJMqKmMQpTl f/ovqZZIa5BahP7wNJ+yaRh3ee1TighC3wK0NSMXOrbuNIBX7HE9QLVwqPbISuw+ZcSih318uoZ AJdRJRx4AVodwLaCUfK1VQExe/hBPAp+xQtfkJIgydEt36vIGaMqyMu X-Received: by 2002:a05:6122:46a3:b0:56b:579c:82e with SMTP id 71dfb90a1353d-59bf1a40ae2mr1883337e0c.5.1780168767332; Sat, 30 May 2026 12:19:27 -0700 (PDT) Received: from MacBook-Pro.local (201-93-59-43.dial-up.telesp.net.br. [201.93.59.43]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-599d92702d2sm3533628e0c.11.2026.05.30.12.19.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 May 2026 12:19:26 -0700 (PDT) From: Rahul Martim Juliato <rahuljuliato@HIDDEN> X-Google-Original-From: Rahul Martim Juliato <rahul.juliato@HIDDEN> Date: Sat, 30 May 2026 16:19:22 -0300 To: =?utf-8?B?Sm/Do28gVMOhdm9yYQ==?= <joaotavora@HIDDEN> Subject: Re: bug#81150: 31.0.60; eglot: performance issue with markdown-ts-mode Message-ID: <ahs21elodi7sLEM6@HIDDEN> X-PGP-Key: https://www.rahuljuliato.com/rahul_pub_key.asc References: <CAJ8YToa+nueew9wQ52xJtD-jXOdcA+Vq+NZEVcd=Q3V66opHSg@HIDDEN> <CAN+1HbpLJqPWufz3mOmAm1Oq=+_a38aMH5FZub5-pn5=C4msSw@HIDDEN> <87pl2dq2a7.fsf@HIDDEN> <87se79pxdd.fsf@HIDDEN> <CAJ8YToZazwzGtP9QU-ijh+VSTiDBW3PAOPCq4S-Xh8YeHAtB1Q@HIDDEN> <CALDnm53Z+oOs+=Y0t-gpgreWcC=2=2qRguT=DbVtcx4RFtOSRg@HIDDEN> <CAJ8YToafSau+bEJKtaKORVN4-_APO09AZ03CL_dGj5rD_j1-3Q@HIDDEN> <87o6hxp2tj.fsf@HIDDEN> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <87o6hxp2tj.fsf@HIDDEN> X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 81150 Cc: =?utf-8?B?U3TDqXBoYW5l?= Marks <shipmints@HIDDEN>, 81150 <at> debbugs.gnu.org, Romain Ouabdelkader <romain.ouabdelkader@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: 0.0 (/) On Sat 30 May 12:14, João Távora wrote: > Alright, thanks for the testing. This just means there is work to do on > both eglot.el and markdown-ts-mode in my opinion. > Agreed! Though a fair bit more on the markdown-ts-mode side, I think :) > You can try this very lightly tested Eglot patch after my sig. It will > solve the slowdown on Eglot's side, but not on markdown-ts-mode's size. > > Until Rahul finds a fix to to markdown-ts-mode.el I recommend either > ... I'm on it. This needs some heavier lifting and a few architecture changes on the markdown-ts-mode side, so I'm hashing it out off-list with Stéphane directly. I'd rather show you something solid than think out loud here, but early signs are promising on the performance front, hoping to have something concrete to put in front of you soon. -- Rahul Martim Juliato
bug-gnu-emacs@HIDDEN:bug#81150; Package emacs.
Full text available.Received: (at 81150) by debbugs.gnu.org; 30 May 2026 11:48:54 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat May 30 07:48:54 2026 Received: from localhost ([127.0.0.1]:39492 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wTIBK-0003R6-S0 for submit <at> debbugs.gnu.org; Sat, 30 May 2026 07:48:53 -0400 Received: from mail-lj1-x22f.google.com ([2a00:1450:4864:20::22f]:53688) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <romain.ouabdelkader@HIDDEN>) id 1wTIBB-0003PM-C4 for 81150 <at> debbugs.gnu.org; Sat, 30 May 2026 07:48:43 -0400 Received: by mail-lj1-x22f.google.com with SMTP id 38308e7fff4ca-3965f215817so8926621fa.3 for <81150 <at> debbugs.gnu.org>; Sat, 30 May 2026 04:48:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1780141715; cv=none; d=google.com; s=arc-20240605; b=JHSBCE+hA5QwmyvcQzf4ZZCKZ5Y3jt+3xj1s8NVlKfYjNhiX9r25MJj3UXBsIKFSYy /gSSN46WQvyRucbWBduT6NhFKcrJwQ7L/e6Qrv5ujssS3hw2dYrCMPOqXFzDzJu3SYuT ua6ZM4tszsvNFPRzRy9r3n4lSdR5wNHVwkhBocJtp9UrOqqxHvFfIO5BPXUjlRKKvfUD ntmWVXyrvL5FLrQgRpLujPUpdbSUWKSgY/sR3CB/qkvmb7rwq25/52AGTDjcB/GlneOu W1ml1NWiMmHEN9Q0QmD/EPkP8B/jNnBq5u7IyR7uU2aMRL6zbKIiKNthQJ61uoTay+gZ KkJg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=ZZYm6hsG1X4yGOctZrYbFbK2vQV+FAh2xQ6rAugfaXc=; fh=o1mvMUPNsC8143UsqmvuFF55L+i7Y4nkMpIOqbBYIDM=; b=LgA8JjklEXGkpUGkeXILiF9048a+U/lz2L8ygkxpJhVcexna1q7Ai4Ks0/SnHAU6cS w42dqhGwhhS4J6q+s70jP2udS/q15498NI1mHKkqySyTNNk80uYMqQbCTQw9rTJBiW5l RgUd2Y1eNrjvb7HbCg8TIBB0D0+4TTrEONvxfhvGLHxnJngH120WHbjSMlIPvfFKMYuT 46NzUf2SMl/fPixpbK48Nnu+TZQmSVjsQeMJuu477PT/5cjC+vHXf9qRhmKvGMYj/Zi5 HemnaZp1ZXogIJ40jb2/JawEbO0Fn2AlD/XzVg56VrO9TyoiSxw9AIJqaYWdwFBmmUgO nFGQ==; darn=debbugs.gnu.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780141715; x=1780746515; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=ZZYm6hsG1X4yGOctZrYbFbK2vQV+FAh2xQ6rAugfaXc=; b=Xb2dxBsyTwd3vH2Wp/1gfZ7HiwqF/apGibuzXdcyouu7WTRTUW3uahbdzzbDkdU45s XgUXvIbZcU1i+z9fT87XIzXrusLlqPLUSMQGKPwE27saatYk2hHXr99BtEISK6b9QOnG va8FaWYWsQIAKTRbcT3r9KpoPAWF9AbcIK4Qgi6116UBLxnNKOGU8zQ6j3M2JixmxVRl ifhb7MIA8fQZkVBF3Lat4WBDiDhspr/jiSozW9jAZxCxlPnhZDLaPHw3KkeZqCeGqx/6 iwuTHaIrr53IMrdKV5tzVhQ4a7S4TOjjNFhzzpLLle1nwH3NCvMEkTfhaR1sPix102Up yfkw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780141715; x=1780746515; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=ZZYm6hsG1X4yGOctZrYbFbK2vQV+FAh2xQ6rAugfaXc=; b=oAbIlxoIvhECv3RtsNckHn0zHGv6HbzJT3RnQYuzuwMOmnlliY3VRfNJoii5jEUSEj N6XjVJC/PhWc5mirnwutx3E65MuNv7hDzOXj0VCjrYLsHv4rvEXBppLnSynaQszHFWbF KniOcIDtIrymoOQjxxX5ZhEc0PzqrEaFPCpt66kcw5nlyA7M2gAoNEAy04ovAqepGCpZ JjJbJAn8Vsmlh13yFUu0LDvMGP/CUjONYAQjB0PVN9huDUJLRjr7ub3QjUoXRmyGRwAi I7U+KzYrgFSFukbq6OLaC7+ZYJicmuxNqYkIoZO0mXfZS1fQwATGThRLUJtprxkF/am1 T9AQ== X-Forwarded-Encrypted: i=1; AFNElJ+WZiANlnlp1LfApj9Meir1I1afo4iNO3oodCmHJKktlFW3b81naYvC2w2MyL0W0+wO+1wVjQ==@debbugs.gnu.org X-Gm-Message-State: AOJu0YwCFgTAP5guBm1qPMNkytyRbzBu0U5mKnmvWhHGgrj+emFgnq0w Sc8m/IhZGyuxKOgVQx4SHBUQYo5TLgXRiyoRn9JR0nyk7/HQidfdR11wOzNsRYyUSdKoGrBZhza HsxxFTaZIUUbUAlNhMqW/ftsKoVNHyww= X-Gm-Gg: Acq92OEI11pAlDATS3Tq6aLpmN+87FxSMvLzQIqlczbi2R1SPSgkWjUMjtP4qVofKQQ MOZwrkxS+9iKqU9/TVhxdIY0PwfExiXoC6UdMHA+LoNqkRcWC/AC/koTfgd+j2hwO5cpUyZQiJx tEHSzt8fEBwBoOc4/HeDYjWTuvqWzj871fGRW5CnQ0yYjgLerIrQQ/p+j2cM4NfFaQFdnrD/AVO Efa9UWSvTlmL72vjgb5a/Pn7osEim9L/ZPx7LzerNkfT40FdF5giI851qCa6vsOD23v1DP+ceYX 3NkhLDXECdxN59OU+Im+74nB6SqoGNs2ur9aYrP+rTp1Eacc/Q== X-Received: by 2002:a2e:a00a:0:b0:393:82e9:fb63 with SMTP id 38308e7fff4ca-39664ed244emr8057271fa.1.1780141715023; Sat, 30 May 2026 04:48:35 -0700 (PDT) MIME-Version: 1.0 References: <CAJ8YToa+nueew9wQ52xJtD-jXOdcA+Vq+NZEVcd=Q3V66opHSg@HIDDEN> <CAN+1HbpLJqPWufz3mOmAm1Oq=+_a38aMH5FZub5-pn5=C4msSw@HIDDEN> <87pl2dq2a7.fsf@HIDDEN> <87se79pxdd.fsf@HIDDEN> <CAJ8YToZazwzGtP9QU-ijh+VSTiDBW3PAOPCq4S-Xh8YeHAtB1Q@HIDDEN> <CALDnm53Z+oOs+=Y0t-gpgreWcC=2=2qRguT=DbVtcx4RFtOSRg@HIDDEN> <CAJ8YToafSau+bEJKtaKORVN4-_APO09AZ03CL_dGj5rD_j1-3Q@HIDDEN> <87o6hxp2tj.fsf@HIDDEN> In-Reply-To: <87o6hxp2tj.fsf@HIDDEN> From: Romain Ouabdelkader <romain.ouabdelkader@HIDDEN> Date: Sat, 30 May 2026 13:47:57 +0200 X-Gm-Features: AVHnY4K9WxlhXsfF19kPvaK7jbdZZr9SDlKfGEdEs-cJEWteValtznklIe2q9xY Message-ID: <CAJ8YTobrDNoMFyQcG9vrj_6kRhng=f7ak-_m66ovwZ=nye822g@HIDDEN> Subject: Re: bug#81150: 31.0.60; eglot: performance issue with markdown-ts-mode To: =?UTF-8?B?Sm/Do28gVMOhdm9yYQ==?= <joaotavora@HIDDEN> Content-Type: multipart/alternative; boundary="00000000000092ec070653078a2d" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 81150 Cc: Rahul Martim Juliato <rahuljuliato@HIDDEN>, =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN>, 81150 <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: 0.0 (/) --00000000000092ec070653078a2d Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Thank you Jo=C3=A3o, I tested the patch with (setq eglot-documentation-renderer 'gfm-view-mode), and can confirm that it fixes the freeze. On Sat, 30 May 2026 at 13:13, Jo=C3=A3o T=C3=A1vora <joaotavora@HIDDEN> = wrote: > Romain Ouabdelkader <romain.ouabdelkader@HIDDEN> writes: > > > I tested by updating eglot--builtin-mdown-p like so: > > > > (defun eglot--builtin-mdown-p () > > (and (fboundp 'markdown-ts-view-mode) > > (fboundp 'treesit-grammar-location) > > (treesit-grammar-location 'markdown) > > + nil)) > > > > I still see a freeze of about 0.5s (hard to tell precisely), and it > revealed that (treesit-grammar-location 'markdown) is > > pretty slow on my system: > > 12881 88% eglot--builtin-mdown-p > > Attached is the full profile. > > > > I then removed (treesit-grammar-location 'markdown), and the freeze is > gone entirely. > > Alright, thanks for the testing. This just means there is work to do on > both eglot.el and markdown-ts-mode in my opinion. > > You can try this very lightly tested Eglot patch after my sig. It will > solve the slowdown on Eglot's side, but not on markdown-ts-mode's size. > > Until Rahul finds a fix to to markdown-ts-mode.el I recommend either > going back to Eglot 1.23 or using this patch and setting the new > eglot-documentation-renderer (a re-skin of the now-obsolete > eglot-prefer-plaintext) to 'gfm-view-mode (if you have it) or t. > > Jo=C3=A3o > diff --git a/lisp/progmodes/eglot.el b/lisp/progmodes/eglot.el > index e945dfb9739..d1ad2020970 100644 > --- a/lisp/progmodes/eglot.el > +++ b/lisp/progmodes/eglot.el > @@ -149,6 +149,8 @@ tramp-use-ssh-controlmaster-options > 'eglot-managed-mode-hook "1.6") > (define-obsolete-variable-alias 'eglot-confirm-server-initiated-edits > 'eglot-confirm-server-edits "1.16") > +(define-obsolete-variable-alias 'eglot-prefer-plaintext > + 'eglot-doc-renderer "1.24") > (make-obsolete-variable 'eglot-events-buffer-size > 'eglot-events-buffer-config "1.16") > (define-obsolete-function-alias 'eglot--uri-to-path #'eglot-uri-to-path > "1.16") > @@ -535,8 +537,17 @@ eglot-extend-to-xref > "If non-nil, activate Eglot in cross-referenced non-project files." > :type 'boolean) > > -(defcustom eglot-prefer-plaintext nil > - "If non-nil, always request plaintext responses to hover requests." > +(defcustom eglot-documentation-renderer (cond ((eglot--builtin-mdown-p) > + 'markdown-ts-view-mode) > + ((fboundp 'gfm-view-mode) > + 'gfm-view-mode) > + (t > + nil)) > + "Control rendering of LSP documentation fragments. > +If set to a major mode symbol `gfm-view-mode' or `markdown-ts-view-mode' > +request markdown-snippets and use the corresponding Markdown renderer. > +If t, always request and render plain text snippets. If set to nil, > +decide dynamically." > :type 'boolean > :package-version '(Eglot . "1.17.30")) > > @@ -733,7 +744,7 @@ eglot--builtin-mdown-p > (treesit-grammar-location 'markdown))) > > (defun eglot--accepted-formats () > - (if (and (not eglot-prefer-plaintext) > + (if (and (not (eq t eglot-documentation-renderer)) > (or (fboundp 'gfm-view-mode) (eglot--builtin-mdown-p))) > ["markdown" "plaintext"] > ["plaintext"])) > @@ -2263,12 +2274,14 @@ eglot--format-markup > finally return (buffer-string))) > (calc2 (forced-mode) > (cond > - (forced-mode `(,forced-mode)) > - ((eglot--builtin-mdown-p) `(,#'markdown-ts-view-mode)) > - ((fboundp 'gfm-view-mode) `(,#'gfm-view-mode ,#'gfm-extract)) > - (t `(#'text-mode)))) > + (forced-mode forced-mode) > + ((fboundp eglot-documentation-renderer) > eglot-documentation-renderer) > + ((eglot--builtin-mdown-p) #'markdown-ts-view-mode) > + ((fboundp 'gfm-view-mode) #'gfm-view-mode) > + (t #'text-mode))) > (calc (s &optional (forced-mode mode) &aux (x (calc2 forced-mode)= )) > - (setq string s render (car x) extract (or (cadr x) > #'buffer-string)))) > + (setq string s render x > + extract (if (eq x 'gfm-view-mode) #'gfm-extract > #'buffer-string)))) > (cond ((stringp markup) (calc markup)) ; plain string > ((setq lang (plist-get markup :language)) ; deprecated > MarkedString > (calc (format "```%s\n%s\n```" lang (plist-get markup > :value)))) > > > > --00000000000092ec070653078a2d Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr">Thank you Jo=C3=A3o,=C2=A0<div><br></div><div>I tested the= patch with=C2=A0(setq eglot-documentation-renderer 'gfm-view-mode), an= d can confirm that it fixes the freeze.</div></div><br><div class=3D"gmail_= quote gmail_quote_container"><div dir=3D"ltr" class=3D"gmail_attr">On Sat, = 30 May 2026 at 13:13, Jo=C3=A3o T=C3=A1vora <<a href=3D"mailto:joaotavor= a@HIDDEN">joaotavora@HIDDEN</a>> wrote:<br></div><blockquote class= =3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rg= b(204,204,204);padding-left:1ex">Romain Ouabdelkader <<a href=3D"mailto:= romain.ouabdelkader@HIDDEN" target=3D"_blank">romain.ouabdelkader@gmail.= com</a>> writes:<br> <br> > I tested by updating eglot--builtin-mdown-p like so:<br> ><br> >=C2=A0 (defun eglot--builtin-mdown-p ()<br> >=C2=A0 =C2=A0 (and (fboundp 'markdown-ts-view-mode)<br> >=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(fboundp 'treesit-grammar-locatio= n)<br> >=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(treesit-grammar-location 'markdo= wn)<br> > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 nil))<br> ><br> > I still see a freeze of about 0.5s (hard to tell precisely), and it re= vealed that (treesit-grammar-location 'markdown) is<br> > pretty slow on my system:<br> >=C2=A0 =C2=A0 =C2=A0 =C2=A0 12881=C2=A0 88%=C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0eglot--builtin-mdown-p<br> > Attached is the full profile.<br> ><br> > I then removed (treesit-grammar-location 'markdown), and the freez= e is gone entirely.<br> <br> Alright, thanks for the testing.=C2=A0 This just means there is work to do = on<br> both eglot.el and markdown-ts-mode in my opinion.<br> <br> You can try this very lightly tested Eglot patch after my sig.=C2=A0 It wil= l<br> solve the slowdown on Eglot's side, but not on markdown-ts-mode's s= ize.<br> <br> Until Rahul finds a fix to to markdown-ts-mode.el I recommend either<br> going back to Eglot 1.23 or using this patch and setting the new<br> eglot-documentation-renderer (a re-skin of the now-obsolete<br> eglot-prefer-plaintext) to 'gfm-view-mode (if you have it) or t.<br> <br> Jo=C3=A3o<br> diff --git a/lisp/progmodes/eglot.el b/lisp/progmodes/eglot.el<br> index e945dfb9739..d1ad2020970 100644<br> --- a/lisp/progmodes/eglot.el<br> +++ b/lisp/progmodes/eglot.el<br> @@ -149,6 +149,8 @@ tramp-use-ssh-controlmaster-options<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0'eglot-managed-mode-hook "1.6")<br> =C2=A0(define-obsolete-variable-alias 'eglot-confirm-server-initiated-e= dits<br> =C2=A0 =C2=A0'eglot-confirm-server-edits "1.16")<br> +(define-obsolete-variable-alias 'eglot-prefer-plaintext<br> +=C2=A0 'eglot-doc-renderer "1.24")<br> =C2=A0(make-obsolete-variable 'eglot-events-buffer-size<br> =C2=A0 =C2=A0'eglot-events-buffer-config "1.16")<br> =C2=A0(define-obsolete-function-alias 'eglot--uri-to-path #'eglot-u= ri-to-path "1.16")<br> @@ -535,8 +537,17 @@ eglot-extend-to-xref<br> =C2=A0 =C2=A0"If non-nil, activate Eglot in cross-referenced non-proje= ct files."<br> =C2=A0 =C2=A0:type 'boolean)<br> <br> -(defcustom eglot-prefer-plaintext nil<br> -=C2=A0 "If non-nil, always request plaintext responses to hover reque= sts."<br> +(defcustom eglot-documentation-renderer (cond ((eglot--builtin-mdown-p)<br= > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0'markdown-ts-view-mode)<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 ((fboundp 'gfm-view-mode)<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0'gfm-view-mode)<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 (t<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0nil))<br> +=C2=A0 "Control rendering of LSP documentation fragments.<br> +If set to a major mode symbol `gfm-view-mode' or `markdown-ts-view-mod= e'<br> +request markdown-snippets and use the corresponding Markdown renderer.<br> +If t, always request and render plain text snippets.=C2=A0 If set to nil,<= br> +decide dynamically."<br> =C2=A0 =C2=A0:type 'boolean<br> =C2=A0 =C2=A0:package-version '(Eglot . "1.17.30"))<br> <br> @@ -733,7 +744,7 @@ eglot--builtin-mdown-p<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 (treesit-grammar-location 'markdown)))<br> <br> =C2=A0(defun eglot--accepted-formats ()<br> -=C2=A0 (if (and (not eglot-prefer-plaintext)<br> +=C2=A0 (if (and (not (eq t eglot-documentation-renderer))<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (or (fboundp 'gfm-view-mode) = (eglot--builtin-mdown-p)))<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0["markdown" "plaintext"]<br> =C2=A0 =C2=A0 =C2=A0["plaintext"]))<br> @@ -2263,12 +2274,14 @@ eglot--format-markup<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0finall= y return (buffer-string)))<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 (calc2 (forced-mode)<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (cond<br> -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (forced-mode=C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 `(,forced-mode))<br> -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ((eglot--builtin-mdown-p) `(,#'mark= down-ts-view-mode))<br> -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ((fboundp 'gfm-view-mode) `(,#'= gfm-view-mode ,#'gfm-extract))<br> -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (t=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 `(#'text-mode))))<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (forced-mode=C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0forced-mode)<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ((fboundp eglot-documentation-renderer)= eglot-documentation-renderer)<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ((eglot--builtin-mdown-p) #'markdow= n-ts-view-mode)<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ((fboundp 'gfm-view-mode) #'gfm= -view-mode)<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (t=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 #'text-mode)))<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 (calc (s &optional (forced-mode mode) &= aux (x (calc2 forced-mode)))<br> -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(setq string s render (car x) extract (o= r (cadr x) #'buffer-string))))<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(setq string s render x<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0extract (if (eq x &= #39;gfm-view-mode) #'gfm-extract #'buffer-string))))<br> =C2=A0 =C2=A0 =C2=A0(cond ((stringp markup) (calc markup))=C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 ; plain string<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0((setq lang (plist-get markup :lan= guage))=C2=A0 =C2=A0; deprecated MarkedString<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (calc (format "```%s\n%s\n``= `" lang (plist-get markup :value))))<br> <br> <br> <br> </blockquote></div> --00000000000092ec070653078a2d--
bug-gnu-emacs@HIDDEN:bug#81150; Package emacs.
Full text available.
Received: (at 81150) by debbugs.gnu.org; 30 May 2026 11:14:03 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat May 30 07:14:03 2026
Received: from localhost ([127.0.0.1]:38957 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1wTHdi-0005mw-3n
for submit <at> debbugs.gnu.org; Sat, 30 May 2026 07:14:02 -0400
Received: from mail-wm1-x336.google.com ([2a00:1450:4864:20::336]:59462)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <joaotavora@HIDDEN>)
id 1wTHdg-0005ma-4Y
for 81150 <at> debbugs.gnu.org; Sat, 30 May 2026 07:14:00 -0400
Received: by mail-wm1-x336.google.com with SMTP id
5b1f17b1804b1-4903997fcb5so89084605e9.2
for <81150 <at> debbugs.gnu.org>; Sat, 30 May 2026 04:14:00 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20251104; t=1780139639; x=1780744439; darn=debbugs.gnu.org;
h=content-transfer-encoding:mime-version:user-agent:message-id:date
:references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date
:message-id:reply-to;
bh=IUI2vsHkPoUE/VZWvLiUWLK5CiO4hTNVozkrJ1ddU7w=;
b=QRnhjMipXi2xWo5aR5n4qJBKszWBT0CQKj+71LRgf++d+tKDHz3mnrDEM1CKnrcz0R
n8QBA9LGtYVeyCuJLW/mYSHIRgP64MgNKyqZ5TTioFmbR75AfX+c+vTpbqzZ6J9K2x1e
jB0J1zXuPGQfGWmR/9inIZKuxp3i/o+7LOJw3FBuRcNlKlI7sluucgsWoy8JGhDIPjRF
72xfEAYsa7wO6uWiG0IbDyka+UryAdv/LOv+OI+N3gEPaJqKmUEgALfcc3H32pOm9PvC
n6YDbJ/cr8ch+9EFUDFN/ZCjljfmXDUzAfkFxeRpTGp+xOBf9STIrIahn1z+t9/Eu5uN
OZ8A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20251104; t=1780139639; x=1780744439;
h=content-transfer-encoding:mime-version:user-agent:message-id:date
:references:in-reply-to:subject:cc:to:from:x-gm-gg
:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
bh=IUI2vsHkPoUE/VZWvLiUWLK5CiO4hTNVozkrJ1ddU7w=;
b=Vq+UwKGm8XIpSGmSl+GCVdiU0C5zPVjWRh2OP2xE47xb0AYJkBstL5oBWlZyZaTI34
bWIcwakNNdURgn1dae6o8Ggaw+iXp7AexoUxIfaF66SoavSdfXpTNWkF0+Gg7bS5Xck3
xJflNUSJsrSt0yxc1+lUOQfpWM+2wYM0r36lU7nV1Cf4DWaFWA3oX92HLZVMpp/A9s3x
6GeD7+o9fwCqdAycglWIoxqQktdmr42qbUSDlMiVV7aKv10PwQzC39BmYrocEfjI/489
LejVeZuSKQr1TLvJbzltz7J7VpbjkosIn63bKz7x8/2AWpqj+PKglDpCKoNC/jdhuJtB
RGBQ==
X-Forwarded-Encrypted: i=1;
AFNElJ/FHZwnCAYCsWRECJYncNq0vDUQK92qeZC8KJBthXB5tjzf0+cPbJaIFRa39KTd98iEBl5Dwg==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YyT/Hu2UAzq9IWCDV/j5rxZphwcF20FkFgjVHprTRHx8GlRshvE
xZDiRhI829BYWKYJvdbGzmypa6y+diT0TCzY35G1NoU+z8tUMejljVuTle7jIw==
X-Gm-Gg: Acq92OGTZ+RTaG1HkeQyQ0rhm8pYbZYvp5LxQDI2qZozVhtyFKyGm9GMEkyBN0w/GnF
H9nnHdFOVyI5HlTak9HHW7qAMR1x1As3uBHU1eWUsaskws5mCnsPmKmzMWyOg32zjqcKyM/TRJ6
7rW6m0KQIGHBSzrs3XoUc6ReZ6ZV7fMSjYmmWmMGjqSXi/wdwb0RUwc7vWCWLGpy2Z9DOgiFYZY
A7wO2MculvhpJdfrzTWbiivHxqVIlDPCkX/bjuIvsfdb2lyWb3k4OOKb19mLcGCZw+PUNfTJacK
KSPnZM54LtlxYTAH62/VTNWmJv3E4YNpkB8nH5YjBxiN6aJelvmAXPK05WItl28Cdm+OOcdsPVQ
UJCX5NuudnqOHsEybu8Lw0DhxrjeoOsZk8rpx/ivWt6sxkM4NGEZfD46oNMVn5KbZIB3hxJlv5A
FeX6iBsxb6J6g4NU3mQ5J7q7EdQOaLPhWIHaj2A+yHgP/oMcwgcXh/S+Kx2hz8GZz0OWTsjbIDN
VvaYecQ4A6pXiFfa1GL9/DlfCAwS3etAsuUCg==
X-Received: by 2002:a05:600c:34c8:b0:488:ac01:72de with SMTP id
5b1f17b1804b1-490a2b6e3d2mr54061935e9.5.1780139638647;
Sat, 30 May 2026 04:13:58 -0700 (PDT)
Received: from krug (87-196-74-99.net.novis.pt. [87.196.74.99])
by smtp.gmail.com with ESMTPSA id
5b1f17b1804b1-4909d696cfdsm98142205e9.4.2026.05.30.04.13.57
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sat, 30 May 2026 04:13:58 -0700 (PDT)
From: =?utf-8?B?Sm/Do28gVMOhdm9yYQ==?= <joaotavora@HIDDEN>
To: Romain Ouabdelkader <romain.ouabdelkader@HIDDEN>
Subject: Re: bug#81150: 31.0.60; eglot: performance issue with markdown-ts-mode
In-Reply-To: <CAJ8YToafSau+bEJKtaKORVN4-_APO09AZ03CL_dGj5rD_j1-3Q@HIDDEN>
References: <CAJ8YToa+nueew9wQ52xJtD-jXOdcA+Vq+NZEVcd=Q3V66opHSg@HIDDEN>
<CAN+1HbpLJqPWufz3mOmAm1Oq=+_a38aMH5FZub5-pn5=C4msSw@HIDDEN>
<87pl2dq2a7.fsf@HIDDEN> <87se79pxdd.fsf@HIDDEN>
<CAJ8YToZazwzGtP9QU-ijh+VSTiDBW3PAOPCq4S-Xh8YeHAtB1Q@HIDDEN>
<CALDnm53Z+oOs+=Y0t-gpgreWcC=2=2qRguT=DbVtcx4RFtOSRg@HIDDEN>
<CAJ8YToafSau+bEJKtaKORVN4-_APO09AZ03CL_dGj5rD_j1-3Q@HIDDEN>
Date: Sat, 30 May 2026 12:14:00 +0100
Message-ID: <87o6hxp2tj.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: 4.6 (++++)
X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org",
has NOT identified this incoming email as spam. The original
message has been attached to this so you can view it or label
similar future email. If you have any questions, see
the administrator of that system for details.
Content preview: Romain Ouabdelkader writes: > I tested by updating
eglot--builtin-mdown-p
like so: > > (defun eglot--builtin-mdown-p () > (and (fboundp
'markdown-ts-view-mode)
> (fboundp 'treesit-grammar-location) > (treesit-grammar-location 'm [...]
Content analysis details: (4.6 points, 10.0 required)
pts rule name description
---- ---------------------- --------------------------------------------------
3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS
[87.196.74.99 listed in zen.spamhaus.org]
-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/,
no trust [2a00:1450:4864:20:0:0:0:336 listed in]
[list.dnswl.org]
0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail
provider (joaotavora[at]gmail.com)
1.0 FORGED_GMAIL_RCVD 'From' gmail.com does not match 'Received'
headers
-0.0 SPF_PASS SPF: sender matches SPF record
0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record
X-Debbugs-Envelope-To: 81150
Cc: Rahul Martim Juliato <rahuljuliato@HIDDEN>,
=?utf-8?Q?St=C3=A9phan?= =?utf-8?Q?e?= Marks <shipmints@HIDDEN>,
81150 <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.6 (+++)
X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org",
has NOT identified this incoming email as spam. The original
message has been attached to this so you can view it or label
similar future email. If you have any questions, see
the administrator of that system for details.
Content preview: Romain Ouabdelkader writes: > I tested by updating eglot--builtin-mdown-p
like so: > > (defun eglot--builtin-mdown-p () > (and (fboundp 'markdown-ts-view-mode)
> (fboundp 'treesit-grammar-location) > (treesit-grammar-location 'm [...]
Content analysis details: (3.6 points, 10.0 required)
pts rule name description
---- ---------------------- --------------------------------------------------
3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS
[87.196.74.99 listed in zen.spamhaus.org]
-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/,
no trust
[2a00:1450:4864:20:0:0:0:336 listed in]
[list.dnswl.org]
0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail
provider (joaotavora[at]gmail.com)
1.0 FORGED_GMAIL_RCVD 'From' gmail.com does not match 'Received'
headers
-0.0 SPF_PASS SPF: sender matches SPF record
0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record
-1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list
manager
Romain Ouabdelkader <romain.ouabdelkader@HIDDEN> writes:
> I tested by updating eglot--builtin-mdown-p like so:
>
> (defun eglot--builtin-mdown-p ()
> (and (fboundp 'markdown-ts-view-mode)
> (fboundp 'treesit-grammar-location)
> (treesit-grammar-location 'markdown)
> + nil))
>
> I still see a freeze of about 0.5s (hard to tell precisely), and it revea=
led that (treesit-grammar-location 'markdown) is
> pretty slow on my system:
> 12881 88% eglot--builtin-mdown-p
> Attached is the full profile.
>
> I then removed (treesit-grammar-location 'markdown), and the freeze is go=
ne entirely.
Alright, thanks for the testing. This just means there is work to do on
both eglot.el and markdown-ts-mode in my opinion.
You can try this very lightly tested Eglot patch after my sig. It will
solve the slowdown on Eglot's side, but not on markdown-ts-mode's size.
Until Rahul finds a fix to to markdown-ts-mode.el I recommend either
going back to Eglot 1.23 or using this patch and setting the new
eglot-documentation-renderer (a re-skin of the now-obsolete
eglot-prefer-plaintext) to 'gfm-view-mode (if you have it) or t.
Jo=C3=A3o
diff --git a/lisp/progmodes/eglot.el b/lisp/progmodes/eglot.el
index e945dfb9739..d1ad2020970 100644
--- a/lisp/progmodes/eglot.el
+++ b/lisp/progmodes/eglot.el
@@ -149,6 +149,8 @@ tramp-use-ssh-controlmaster-options
'eglot-managed-mode-hook "1.6")
(define-obsolete-variable-alias 'eglot-confirm-server-initiated-edits
'eglot-confirm-server-edits "1.16")
+(define-obsolete-variable-alias 'eglot-prefer-plaintext
+ 'eglot-doc-renderer "1.24")
(make-obsolete-variable 'eglot-events-buffer-size
'eglot-events-buffer-config "1.16")
(define-obsolete-function-alias 'eglot--uri-to-path #'eglot-uri-to-path "1=
.16")
@@ -535,8 +537,17 @@ eglot-extend-to-xref
"If non-nil, activate Eglot in cross-referenced non-project files."
:type 'boolean)
=20
-(defcustom eglot-prefer-plaintext nil
- "If non-nil, always request plaintext responses to hover requests."
+(defcustom eglot-documentation-renderer (cond ((eglot--builtin-mdown-p)
+ 'markdown-ts-view-mode)
+ ((fboundp 'gfm-view-mode)
+ 'gfm-view-mode)
+ (t
+ nil))
+ "Control rendering of LSP documentation fragments.
+If set to a major mode symbol `gfm-view-mode' or `markdown-ts-view-mode'
+request markdown-snippets and use the corresponding Markdown renderer.
+If t, always request and render plain text snippets. If set to nil,
+decide dynamically."
:type 'boolean
:package-version '(Eglot . "1.17.30"))
=20
@@ -733,7 +744,7 @@ eglot--builtin-mdown-p
(treesit-grammar-location 'markdown)))
=20
(defun eglot--accepted-formats ()
- (if (and (not eglot-prefer-plaintext)
+ (if (and (not (eq t eglot-documentation-renderer))
(or (fboundp 'gfm-view-mode) (eglot--builtin-mdown-p)))
["markdown" "plaintext"]
["plaintext"]))
@@ -2263,12 +2274,14 @@ eglot--format-markup
finally return (buffer-string)))
(calc2 (forced-mode)
(cond
- (forced-mode `(,forced-mode))
- ((eglot--builtin-mdown-p) `(,#'markdown-ts-view-mode))
- ((fboundp 'gfm-view-mode) `(,#'gfm-view-mode ,#'gfm-extract))
- (t `(#'text-mode))))
+ (forced-mode forced-mode)
+ ((fboundp eglot-documentation-renderer) eglot-documentation-rend=
erer)
+ ((eglot--builtin-mdown-p) #'markdown-ts-view-mode)
+ ((fboundp 'gfm-view-mode) #'gfm-view-mode)
+ (t #'text-mode)))
(calc (s &optional (forced-mode mode) &aux (x (calc2 forced-mode)))
- (setq string s render (car x) extract (or (cadr x) #'buffer-strin=
g))))
+ (setq string s render x
+ extract (if (eq x 'gfm-view-mode) #'gfm-extract #'buffer-st=
ring))))
(cond ((stringp markup) (calc markup)) ; plain string
((setq lang (plist-get markup :language)) ; deprecated MarkedS=
tring
(calc (format "```%s\n%s\n```" lang (plist-get markup :value))))
bug-gnu-emacs@HIDDEN:bug#81150; Package emacs.
Full text available.
Received: (at 81150) by debbugs.gnu.org; 30 May 2026 10:11:41 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat May 30 06:11:40 2026
Received: from localhost ([127.0.0.1]:38002 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1wTGfC-0008Km-AS
for submit <at> debbugs.gnu.org; Sat, 30 May 2026 06:11:40 -0400
Received: from mail-lj1-x233.google.com ([2a00:1450:4864:20::233]:61884)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <romain.ouabdelkader@HIDDEN>)
id 1wTGez-0008Im-4f
for 81150 <at> debbugs.gnu.org; Sat, 30 May 2026 06:11:26 -0400
Received: by mail-lj1-x233.google.com with SMTP id
38308e7fff4ca-38be5e86918so38825031fa.3
for <81150 <at> debbugs.gnu.org>; Sat, 30 May 2026 03:11:17 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; t=1780135875; cv=none;
d=google.com; s=arc-20240605;
b=ZVXTM4/H+tS1qWn42xPaMOemBSLCuEbRMmkWvztAJikNAfMZNrC/04BmShmi/zd/zO
40ROYAQj5voHs2P/pYYq51LC3OcQ40yzGiuMXouEK11a3S310rArzs1btfkpq30hYMTn
vCBjEUwOIoCj7xvXQHd7t8ci3/eXLgcIRDtm/PlMRr1rltv2cLZTuK2rsnPXsMuwjpK2
+/0Sb4/6KpveX/OQCKx0is/GUsRyg1gl+nCgtSmVUgfto7C0d4M7fb47nMGNj0i5kU64
Z7hjgD8FYE3i2S4DhsRgDM395ya9GzNTvSbu8cMTfVgTkAq+2LK91OZAXXsJ0t8+yIkz
SBmA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;
s=arc-20240605;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:dkim-signature;
bh=XA/JyoG3s9bQr4N469MCd8kDcaU59i6lj+TfVO6Zpd0=;
fh=b7HVG0GZ+NXoCsGH6tBs88hWUUx2H4vHa/rZb6wTANY=;
b=NeceQ+hWU1gpTNrIf5E+ey+MkpvU/XOfkwMNmzNX2ADUxeVipd++KEAw2163dYqa2T
gVITzSv1sFngMdBHKc5id9Nx12mOR939EhxA8UPnSuIh2OFCVkZVEJ8HxNIxHq2D5z9p
PfqvT/m01JO/mYVSzxJvamsXWVFINh6svPK8Ak6YtunEuMfaDQ6Pdm/z0u2RH+RX3pBZ
TY/c6UXAtamNmmWOOIq6/CcyX8W4bZgaMe4ylM0/b8LuyzDUhURCR8pnqEckCRzeX97R
X0ArVUJ4iv5QJtPiWkM7ltkftpBsk02iOhS8f3brIrt48HqOgrrK5aLKbvw5ObRfSg3l
NYZA==; darn=debbugs.gnu.org
ARC-Authentication-Results: i=1; mx.google.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20251104; t=1780135875; x=1780740675; darn=debbugs.gnu.org;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:from:to:cc:subject:date:message-id:reply-to;
bh=XA/JyoG3s9bQr4N469MCd8kDcaU59i6lj+TfVO6Zpd0=;
b=q7hifcI0O3S4wm1q4ghC/GCFRhJTuyuBBz8JygeYssCT9++00SGSDMq2lNR9QC5YeN
xWYfropLu/ZkLBjuRGqDOpX0zz+jBxrGJM8tF3ggRskKwcgbRmgrofDAAYPMMHTiXiBy
uF8LlWubmzyZtt/2w8ZjoAiH2WelSg2bZGbdaja5CvRnv9RGCqNrWab2p4izfuNqmW2q
Rn68CjqbDKEbJUCtLx8sIpNikBhuW9ZShoyDquaoRPNMpsgWHlU1egSm3Ixyct8yWZvP
TOOVpmx/7FLAwLBrOv39KrLvyJvgrPhCXXZcugYgN1Pou7e4r7FPVHUvTrQcR78Wf1nJ
RnIQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20251104; t=1780135875; x=1780740675;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
:message-id:reply-to;
bh=XA/JyoG3s9bQr4N469MCd8kDcaU59i6lj+TfVO6Zpd0=;
b=R1sCpu2U0eYBUydkX4sTQ8XWINylGvNPL9v4DnjN3k5aJ/qgrpUEzXneotNITKSr/D
fCyl0oDCsqQiSBYRzuMq3YP7h996f3wrRl+qYiLD9lfSw7RI5RWiKKW+BzJeDL7B/rqQ
E8s6bZqPfAEUEcBtvwLxtRGYukwri0WtYUECiO0fwxkpKAWp/AWzeSEERA6n8k5FC1Ks
77B4yDigjA+XPuAvNGoxGuiKSIzX8KzcN8mvIqCGX5a/bRz4CbGhlspPH8J5XwSoV1t9
8x7Z2LYldGU/2/w6Y56XOcZGHeBar/i7HDLvJlXxP3FVdSaGfGvS5UEs0qVlz/qPL03O
C+9A==
X-Forwarded-Encrypted: i=1;
AFNElJ8FrQ3dVrL//VoERSTKEyUZIkZ5BBkilgomjEh+496XRu2KNqecFF0TGkdIzjStsi4wn1MEUQ==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YyIwuRvQYI79deFjaHM+XN7WAeQWDCeKIhDvI/z/vfnSuSsSe6f
GZ8seVfh/Ntne0QrykO3M5dKw6wkusI+Xk7dZBqOMHqdyawSMGHX+HTHu6H/bYeAW8d9wIbWWD3
Y0rprAWVcpMGDhkP9j7dfS54pzxLOAbA=
X-Gm-Gg: Acq92OEfy1Y+rQUVPz8Ymc6R7/lRdKSicaU1g8LfCzMmUqfZyvGYucCEM3RSvhji1wz
t8z9Pfw9IDFvI25zL3cptMwjFzZCDVDen0tJBtYVuVgyJQ7d5jW0sCp/AzU9iWCnVK/GgXr1M+6
C52SUb3sMjhbSNi5nox7thkuOdFk+VkIPtdQUZ8t+8dilJWG8Hw5lasQrTCOkJW/xP3Mw8D/b7U
xihuCmj66pLhy08OLgJFCPefmKFJcU4AyNhvfW1sTs0WVzuB3nC2wIM5KWFhYkN05vQsjd2FlXk
/QKidJMG1dGZf2jCC4qdGRAz1PIBTqeaxBCvqj4F70+P55k6lA==
X-Received: by 2002:a2e:a715:0:b0:393:e33d:b713 with SMTP id
38308e7fff4ca-39664e83f90mr5299101fa.10.1780135875284; Sat, 30 May 2026
03:11:15 -0700 (PDT)
MIME-Version: 1.0
References: <CAJ8YToa+nueew9wQ52xJtD-jXOdcA+Vq+NZEVcd=Q3V66opHSg@HIDDEN>
<CAN+1HbpLJqPWufz3mOmAm1Oq=+_a38aMH5FZub5-pn5=C4msSw@HIDDEN>
<87pl2dq2a7.fsf@HIDDEN> <87se79pxdd.fsf@HIDDEN>
<CAJ8YToZazwzGtP9QU-ijh+VSTiDBW3PAOPCq4S-Xh8YeHAtB1Q@HIDDEN>
<CALDnm53Z+oOs+=Y0t-gpgreWcC=2=2qRguT=DbVtcx4RFtOSRg@HIDDEN>
In-Reply-To: <CALDnm53Z+oOs+=Y0t-gpgreWcC=2=2qRguT=DbVtcx4RFtOSRg@HIDDEN>
From: Romain Ouabdelkader <romain.ouabdelkader@HIDDEN>
Date: Sat, 30 May 2026 12:10:37 +0200
X-Gm-Features: AVHnY4L_6GGpQ0LBk3IvlJ1XZQ-MRTh5eQCJobksZWRt4FAJYqAr7Ai5HUZQMh8
Message-ID: <CAJ8YToafSau+bEJKtaKORVN4-_APO09AZ03CL_dGj5rD_j1-3Q@HIDDEN>
Subject: Re: bug#81150: 31.0.60; eglot: performance issue with markdown-ts-mode
To: =?UTF-8?B?Sm/Do28gVMOhdm9yYQ==?= <joaotavora@HIDDEN>
Content-Type: multipart/mixed; boundary="0000000000007fc1d00653062ee3"
X-Spam-Score: 1.0 (+)
X-Debbugs-Envelope-To: 81150
Cc: Rahul Martim Juliato <rahuljuliato@HIDDEN>,
=?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN>, 81150 <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: 0.0 (/)
--0000000000007fc1d00653062ee3
Content-Type: multipart/alternative; boundary="0000000000007fc1cf0653062ee1"
--0000000000007fc1cf0653062ee1
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
I tested by updating eglot--builtin-mdown-p like so:
(defun eglot--builtin-mdown-p ()
(and (fboundp 'markdown-ts-view-mode)
(fboundp 'treesit-grammar-location)
(treesit-grammar-location 'markdown)
+ nil))
I still see a freeze of about 0.5s (hard to tell precisely), and it
revealed that (treesit-grammar-location 'markdown) is pretty slow on my
system:
12881 88% eglot--builtin-mdown-p
Attached is the full profile.
I then removed (treesit-grammar-location 'markdown), and the freeze is gone
entirely.
On Sat, 30 May 2026 at 11:45, Jo=C3=A3o T=C3=A1vora <joaotavora@HIDDEN> =
wrote:
> Thanks. Can you test without your patch disabling markdown-ts-view-mode
> somehow (either patch eglot.el or temporarily uninstall a vital grammar) =
so
> that Eglot uses markdown.el's gfm-view-mode instead? Do you still get the
> slow performance?
>
> Jo=C3=A3o
>
> Jo=C3=A3o T=C3=A1vora
>
> On Sat, May 30, 2026, 10:33 Romain Ouabdelkader <
> romain.ouabdelkader@HIDDEN> wrote:
>
>> Hello Jo=C3=A3o, Rahul,
>>
>> Just for reference, I tested the provided patch. While better, I still
>> have a freeze of around 1s.
>> Attached is another lisp profile with emacs -Q.
>>
>> Thank you
>>
>>
>> On Sat, 30 May 2026 at 02:14, Jo=C3=A3o T=C3=A1vora <joaotavora@HIDDEN=
m> wrote:
>>
>>> Rahul Martim Juliato <rahuljuliato@HIDDEN> writes:
>>>
>>> > Some extra explanation: the slow part was not on the markdown
>>> > fontification, that is only a few percent of the time. The cost was
>>> > paying the whole major-mode setup over and over in a tight
>>> > loop. Initializing the mode once removes that multiplication and need=
s
>>> > no change to markdown-ts-mode, which is fine when it runs once. It al=
so
>>> > helps every server and every markup format, not just this one case.
>>>
>>> Thanks Rahul for analyzing this,
>>>
>>> However, I have a different view on where this should be fixed, and it'=
s
>>> very simple IMO. If a given piece of cache that is created and stored
>>> each time the major-mode-initialization is done is *not* invalidated
>>> when the whole buffer is erased, then that piece of cache should not be
>>> per-buffer-major-mode-initialization it should be global, or at least
>>> done only once for the first ever major-mode initialized with
>>> markdown-ts-mode, or what am I missing.
>>>
>>> To be frank, I prefer to go back to ELPA markdown-mode until this is
>>> sorted. There is no reason a treesitter major-mode should be slower to
>>> to parse a buffer from scratch than a mode built entirely in Elisp, or
>>> demand special care from Elisp programs. So I think this should be
>>> fixed in markdown-ts-mode's design.
>>>
>>> > I considered caching grammar availability in markdown-ts-mode, but
>>> > decided against it. Availability is runtime state, and a user can
>>> > install the grammar later during the same Emacs session. Because of
>>> > that, caching a "not available" result felt wrong.
>>>
>>> Is this the expensive part when markdown-ts-mode runs? Then just cache
>>> the "yes, it's available".
>>>
>>> Jo=C3=A3o
>>>
>>
--0000000000007fc1cf0653062ee1
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">I tested by updating=C2=A0eglot--builtin-mdown-p=C2=A0like=
so:<div><br></div><div>=C2=A0(defun eglot--builtin-mdown-p ()<br>=C2=A0 =
=C2=A0(and (fboundp 'markdown-ts-view-mode)<br>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 (fboundp 'treesit-grammar-location)<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
(treesit-grammar-location 'markdown)<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0ni=
l))<br></div><div><br></div><div>I still see a freeze of about 0.5s (hard t=
o tell precisely), and it revealed that (treesit-grammar-location 'mark=
down) is pretty slow on my system:</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0128=
81 =C2=A088% =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 eglot-=
-builtin-mdown-p</div><div>Attached is the full profile.</div><div><br></di=
v><div>I then=C2=A0removed (treesit-grammar-location 'markdown), and th=
e freeze is gone entirely.</div><div><br></div></div><br><div class=3D"gmai=
l_quote gmail_quote_container"><div dir=3D"ltr" class=3D"gmail_attr">On Sat=
, 30 May 2026 at 11:45, Jo=C3=A3o T=C3=A1vora <<a href=3D"mailto:joaotav=
ora@HIDDEN">joaotavora@HIDDEN</a>> wrote:<br></div><blockquote cla=
ss=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid =
rgb(204,204,204);padding-left:1ex"><div dir=3D"auto"><div>Thanks. Can you t=
est without your patch disabling markdown-ts-view-mode somehow (either patc=
h eglot.el or temporarily uninstall a vital grammar) so that Eglot uses mar=
kdown.el's gfm-view-mode instead? Do you still get the slow performance=
?=C2=A0</div><div dir=3D"auto"><br></div><div dir=3D"auto">Jo=C3=A3o=C2=A0<=
/div><div><br></div><div>Jo=C3=A3o T=C3=A1vora</div></div><br><div class=3D=
"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Sat, May 30, 2026, 1=
0:33 Romain Ouabdelkader <<a href=3D"mailto:romain.ouabdelkader@HIDDEN=
m" target=3D"_blank">romain.ouabdelkader@HIDDEN</a>> wrote:<br></div>=
<blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-=
left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr">Hello=C2=
=A0Jo=C3=A3o, Rahul,<div><br></div><div>Just for reference, I tested the pr=
ovided patch. While better, I still have a freeze of around 1s.</div><div>A=
ttached=C2=A0is another lisp profile with emacs -Q.</div><div><br></div><di=
v>Thank you</div><div><br></div></div><br><div class=3D"gmail_quote"><div d=
ir=3D"ltr" class=3D"gmail_attr">On Sat, 30 May 2026 at 02:14, Jo=C3=A3o T=
=C3=A1vora <<a href=3D"mailto:joaotavora@HIDDEN" rel=3D"noreferrer" t=
arget=3D"_blank">joaotavora@HIDDEN</a>> wrote:<br></div><blockquote c=
lass=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px soli=
d rgb(204,204,204);padding-left:1ex">Rahul Martim Juliato <<a href=3D"ma=
ilto:rahuljuliato@HIDDEN" rel=3D"noreferrer" target=3D"_blank">rahuljuli=
ato@HIDDEN</a>> writes:<br>
<br>
> Some extra explanation: the slow part was not on the markdown<br>
> fontification, that is only a few percent of the time. The cost was<br=
>
> paying the whole major-mode setup over and over in a tight<br>
> loop. Initializing the mode once removes that multiplication and needs=
<br>
> no change to markdown-ts-mode, which is fine when it runs once. It als=
o<br>
> helps every server and every markup format, not just this one case.<br=
>
<br>
Thanks Rahul for analyzing this,<br>
<br>
However, I have a different view on where this should be fixed, and it'=
s<br>
very simple IMO.=C2=A0 If a given piece of cache that is created and stored=
<br>
each time the major-mode-initialization is done is *not* invalidated<br>
when the whole buffer is erased, then that piece of cache should not be<br>
per-buffer-major-mode-initialization it should be global, or at least<br>
done only once for the first ever major-mode initialized with<br>
markdown-ts-mode, or what am I missing.<br>
<br>
To be frank, I prefer to go back to ELPA markdown-mode until this is<br>
sorted.=C2=A0 There is no reason a treesitter major-mode should be slower t=
o<br>
to parse a buffer from scratch than a mode built entirely in Elisp, or<br>
demand special care from Elisp programs.=C2=A0 So I think this should be<br=
>
fixed in markdown-ts-mode's design.<br>
<br>
> I considered caching grammar availability in markdown-ts-mode, but<br>
> decided against it. Availability is runtime state, and a user can<br>
> install the grammar later during the same Emacs session. Because of<br=
>
> that, caching a "not available" result felt wrong.<br>
<br>
Is this the expensive part when markdown-ts-mode runs?=C2=A0 Then just cach=
e<br>
the "yes, it's available".<br>
<br>
Jo=C3=A3o<br>
</blockquote></div>
</blockquote></div>
</blockquote></div>
--0000000000007fc1cf0653062ee1--
--0000000000007fc1d00653062ee3
Content-Type: text/plain; charset="US-ASCII"; name="bench_markdown_non_ts.txt"
Content-Disposition: attachment; filename="bench_markdown_non_ts.txt"
Content-Transfer-Encoding: base64
Content-ID: <f_mps6t80q0>
X-Attachment-Id: f_mps6t80q0
ICAgICAgIDEzNTA3ICA5MyUgLSB0aW1lci1ldmVudC1oYW5kbGVyCiAgICAgICAxMzUwNyAgOTMl
ICAtIGFwcGx5CiAgICAgICAxMzQ1MiAgOTIlICAgLSAjPGJ5dGUtY29kZS1mdW5jdGlvbiA3Qzg+
CiAgICAgICAxMzQ1MSAgOTIlICAgIC0ganNvbnJwYy1jb25uZWN0aW9uLXJlY2VpdmUKICAgICAg
IDEzNDA0ICA5MiUgICAgIC0ganNvbnJwYy0tY29udGludWUKICAgICAgIDEzNDA0ICA5MiUgICAg
ICAtICM8Ynl0ZS1jb2RlLWZ1bmN0aW9uIEI5Rj4KICAgICAgIDEzNDA0ICA5MiUgICAgICAgLSBh
cHBseQogICAgICAgMTM0MDMgIDkyJSAgICAgICAgLSAjPGJ5dGUtY29kZS1mdW5jdGlvbiBCRUE+
CiAgICAgICAxMzMyMiAgOTIlICAgICAgICAgLSBtYXBjb25jYXQKICAgICAgIDEzMzEwICA5MSUg
ICAgICAgICAgLSAjPGJ5dGUtY29kZS1mdW5jdGlvbiA1NUE+CiAgICAgICAxMzMxMCAgOTElICAg
ICAgICAgICAtIGVnbG90LS1zaWctaW5mbwogICAgICAgMTMyNTMgIDkxJSAgICAgICAgICAgIC0g
ZWdsb3QtLWZvcm1hdC1tYXJrdXAKICAgICAgIDEyODgxICA4OCUgICAgICAgICAgICAgLSAjPGJ5
dGUtY29kZS1mdW5jdGlvbiA1M0E+CiAgICAgICAxMjg4MSAgODglICAgICAgICAgICAgICAtICM8
Ynl0ZS1jb2RlLWZ1bmN0aW9uIDUxMD4KICAgICAgIDEyODgxICA4OCUgICAgICAgICAgICAgICAg
IGVnbG90LS1idWlsdGluLW1kb3duLXAKICAgICAgICAgMzA0ICAgMiUgICAgICAgICAgICAgLSBm
b250LWxvY2stZW5zdXJlCiAgICAgICAgIDMwMyAgIDIlICAgICAgICAgICAgICAtICM8Ynl0ZS1j
b2RlLWZ1bmN0aW9uIEI4MT4KICAgICAgICAgMzAzICAgMiUgICAgICAgICAgICAgICAtIGZvbnQt
bG9jay1mb250aWZ5LXJlZ2lvbgogICAgICAgICAzMDMgICAyJSAgICAgICAgICAgICAgICAtIGZv
bnQtbG9jay1kZWZhdWx0LWZvbnRpZnktcmVnaW9uCiAgICAgICAgIDI5OCAgIDIlICAgICAgICAg
ICAgICAgICAtIGZvbnQtbG9jay1mb250aWZ5LWtleXdvcmRzLXJlZ2lvbgogICAgICAgICAgNjYg
ICAwJSAgICAgICAgICAgICAgICAgIC0gbWFya2Rvd24tbWF0Y2gtaXRhbGljCiAgICAgICAgICAy
NSAgIDAlICAgICAgICAgICAgICAgICAgIC0gbWFya2Rvd24tbWF0Y2gtaW5saW5lLWdlbmVyaWMK
ICAgICAgICAgICA1ICAgMCUgICAgICAgICAgICAgICAgICAgIC0gbWFya2Rvd24tY29kZS1ibG9j
ay1hdC1wb3MKICAgICAgICAgICA0ICAgMCUgICAgICAgICAgICAgICAgICAgICAtIG1hcmtkb3du
LWdldC1lbmNsb3NpbmctZmVuY2VkLWJsb2NrLWNvbnN0cnVjdAogICAgICAgICAgIDIgICAwJSAg
ICAgICAgICAgICAgICAgICAgICAtIGNsLWZpbmQtaWYKICAgICAgICAgICAyICAgMCUgICAgICAg
ICAgICAgICAgICAgICAgIC0gY2wtZmluZAogICAgICAgICAgIDIgICAwJSAgICAgICAgICAgICAg
ICAgICAgICAgIC0gY2wtcG9zaXRpb24KICAgICAgICAgICAyICAgMCUgICAgICAgICAgICAgICAg
ICAgICAgICAgLSBjbC0tcG9zaXRpb24KICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZnVuY2FsbAogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgICAgICAg
ICAtIG1hcmtkb3duLWdldC1mZW5jZWQtYmxvY2stbWlkZGxlLXByb3BlcnRpZXMKICAgICAgICAg
ICAxICAgMCUgICAgICAgICAgICAgICAgICAgICAgIC0gY2wtbWFwY2FyCiAgICAgICAgICAgMSAg
IDAlICAgICAgICAgICAgICAgICAgICAgICAgICBjbC10aGlyZAogICAgICAgICAgIDEgICAwJSAg
ICAgICAgICAgICAgICAgICAgICAtIGNsLW1hcGNhcgogICAgICAgICAgIDEgICAwJSAgICAgICAg
ICAgICAgICAgICAgICAgICAjPG5hdGl2ZS1jb21wLWZ1bmN0aW9uIEY2MTZlNmY2ZTc5NmQ2Zjc1
NzMyZDZjNjE2ZDYyNjQ2MV9hbm9ueW1vdXNfbGFtYmRhXzg3PgogICAgICAgICAgMjQgICAwJSAg
ICAgICAgICAgICAgICAgICAtIG1hcmtkb3duLWlubGluZS1jb2RlLWF0LXBvcwogICAgICAgICAg
MjMgICAwJSAgICAgICAgICAgICAgICAgICAgLSBtYXJrZG93bi1tYXRjaC1jb2RlCiAgICAgICAg
ICAyMCAgIDAlICAgICAgICAgICAgICAgICAgICAgLSBtYXJrZG93bi1zZWFyY2gtdW50aWwtY29u
ZGl0aW9uCiAgICAgICAgICAxNyAgIDAlICAgICAgICAgICAgICAgICAgICAgICAgcmUtc2VhcmNo
LWZvcndhcmQKICAgICAgICAgICAzICAgMCUgICAgICAgICAgICAgICAgICAgICAgLSAjPGJ5dGUt
Y29kZS1mdW5jdGlvbiA4RUM+CiAgICAgICAgICAgMyAgIDAlICAgICAgICAgICAgICAgICAgICAg
ICAtIG1hcmtkb3duLWNvZGUtYmxvY2stYXQtcG9zCiAgICAgICAgICAgMSAgIDAlICAgICAgICAg
ICAgICAgICAgICAgICAgICBtYXJrZG93bi1nZXQtZW5jbG9zaW5nLWZlbmNlZC1ibG9jay1jb25z
dHJ1Y3QKICAgICAgICAgIDEzICAgMCUgICAgICAgICAgICAgICAgICAgLSBtYXJrZG93bi1pbmxp
bmUtY29kZS1hdC1wb3MtcAogICAgICAgICAgMTMgICAwJSAgICAgICAgICAgICAgICAgICAgLSBt
YXJrZG93bi1pbmxpbmUtY29kZS1hdC1wb3MKICAgICAgICAgIDExICAgMCUgICAgICAgICAgICAg
ICAgICAgICAtIG1hcmtkb3duLW1hdGNoLWNvZGUKICAgICAgICAgIDEwICAgMCUgICAgICAgICAg
ICAgICAgICAgICAgLSBtYXJrZG93bi1zZWFyY2gtdW50aWwtY29uZGl0aW9uCiAgICAgICAgICAg
OSAgIDAlICAgICAgICAgICAgICAgICAgICAgICAgIHJlLXNlYXJjaC1mb3J3YXJkCiAgICAgICAg
ICAgMSAgIDAlICAgICAgICAgICAgICAgICAgICAgICAtICM8Ynl0ZS1jb2RlLWZ1bmN0aW9uIDk0
Qz4KICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgICAgICAgICAgICAgIGdldC10ZXh0LXBy
b3BlcnR5CiAgICAgICAgICAgMiAgIDAlICAgICAgICAgICAgICAgICAgICAgICBtYXJrZG93bi1i
ZWdpbm5pbmctb2YtdGV4dC1ibG9jawogICAgICAgICAgNTggICAwJSAgICAgICAgICAgICAgICAg
IC0gbWFya2Rvd24tbWF0Y2gtYm9sZAogICAgICAgICAgMzUgICAwJSAgICAgICAgICAgICAgICAg
ICAtIG1hcmtkb3duLW1hdGNoLWlubGluZS1nZW5lcmljCiAgICAgICAgICAgMiAgIDAlICAgICAg
ICAgICAgICAgICAgICAtIG1hcmtkb3duLWNvZGUtYmxvY2stYXQtcG9zCiAgICAgICAgICAgMiAg
IDAlICAgICAgICAgICAgICAgICAgICAgLSBtYXJrZG93bi1nZXQtZW5jbG9zaW5nLWZlbmNlZC1i
bG9jay1jb25zdHJ1Y3QKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgICAgICAgICAgLSBt
YXJrZG93bi1nZXQtZmVuY2VkLWJsb2NrLWVuZC1wcm9wZXJ0aWVzCiAgICAgICAgICAgMSAgIDAl
ICAgICAgICAgICAgICAgICAgICAgICAtIGNsLW1hcGNhcgogICAgICAgICAgIDEgICAwJSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIzxuYXRpdmUtY29tcC1mdW5jdGlvbiBGNjE2ZTZmNmU3OTZk
NmY3NTczMmQ2YzYxNmQ2MjY0NjFfYW5vbnltb3VzX2xhbWJkYV84MD4KICAgICAgICAgIDIyICAg
MCUgICAgICAgICAgICAgICAgICAgLSBtYXJrZG93bi1pbmxpbmUtY29kZS1hdC1wb3MKICAgICAg
ICAgIDE5ICAgMCUgICAgICAgICAgICAgICAgICAgIC0gbWFya2Rvd24tbWF0Y2gtY29kZQogICAg
ICAgICAgMTkgICAwJSAgICAgICAgICAgICAgICAgICAgIC0gbWFya2Rvd24tc2VhcmNoLXVudGls
LWNvbmRpdGlvbgogICAgICAgICAgMTcgICAwJSAgICAgICAgICAgICAgICAgICAgICAgIHJlLXNl
YXJjaC1mb3J3YXJkCiAgICAgICAgICAgMiAgIDAlICAgICAgICAgICAgICAgICAgICAgIC0gIzxi
eXRlLWNvZGUtZnVuY3Rpb24gNTQxPgogICAgICAgICAgIDIgICAwJSAgICAgICAgICAgICAgICAg
ICAgICAgICBtYXJrZG93bi1jb2RlLWJsb2NrLWF0LXBvcwogICAgICAgICAgIDIgICAwJSAgICAg
ICAgICAgICAgICAgICAgICBtYXJrZG93bi1iZWdpbm5pbmctb2YtdGV4dC1ibG9jawogICAgICAg
ICAgIDEgICAwJSAgICAgICAgICAgICAgICAgICAgICBtYXJrZG93bi1lbmQtb2YtdGV4dC1ibG9j
awogICAgICAgICAgMzEgICAwJSAgICAgICAgICAgICAgICAgIC0gbWFya2Rvd24tZm9udGlmeS1w
bGFpbi11cmlzCiAgICAgICAgICAzMSAgIDAlICAgICAgICAgICAgICAgICAgIC0gbWFya2Rvd24t
bWF0Y2gtcGxhaW4tdXJpcwogICAgICAgICAgMzEgICAwJSAgICAgICAgICAgICAgICAgICAgICBt
YXJrZG93bi1tYXRjaC1pbmxpbmUtZ2VuZXJpYwogICAgICAgICAgMjAgICAwJSAgICAgICAgICAg
ICAgICAgIC0gbWFya2Rvd24tZm9udGlmeS1zdWItc3VwZXJzY3JpcHRzCiAgICAgICAgICAyMCAg
IDAlICAgICAgICAgICAgICAgICAgIC0gbWFya2Rvd24tc2VhcmNoLXVudGlsLWNvbmRpdGlvbgog
ICAgICAgICAgMjAgICAwJSAgICAgICAgICAgICAgICAgICAgICByZS1zZWFyY2gtZm9yd2FyZAog
ICAgICAgICAgMTYgICAwJSAgICAgICAgICAgICAgICAgIC0gbWFya2Rvd24tbWF0Y2gtY29kZQog
ICAgICAgICAgMTUgICAwJSAgICAgICAgICAgICAgICAgICAtIG1hcmtkb3duLXNlYXJjaC11bnRp
bC1jb25kaXRpb24KICAgICAgICAgIDEyICAgMCUgICAgICAgICAgICAgICAgICAgICAgcmUtc2Vh
cmNoLWZvcndhcmQKICAgICAgICAgICAzICAgMCUgICAgICAgICAgICAgICAgICAgIC0gIzxieXRl
LWNvZGUtZnVuY3Rpb24gQUU4PgogICAgICAgICAgIDMgICAwJSAgICAgICAgICAgICAgICAgICAg
IC0gbWFya2Rvd24tY29kZS1ibG9jay1hdC1wb3MKICAgICAgICAgICAxICAgMCUgICAgICAgICAg
ICAgICAgICAgICAgLSBtYXJrZG93bi1nZXQtZW5jbG9zaW5nLWZlbmNlZC1ibG9jay1jb25zdHJ1
Y3QKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgICAgICAgICAgIC0gbWFya2Rvd24tZ2V0
LWZlbmNlZC1ibG9jay1iZWdpbi1wcm9wZXJ0aWVzCiAgICAgICAgICAgMSAgIDAlICAgICAgICAg
ICAgICAgICAgICAgICAgLSBjbC1tYXBjYXIKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjPG5hdGl2ZS1jb21wLWZ1bmN0aW9uIEY2MTZlNmY2ZTc5NmQ2Zjc1NzMy
ZDZjNjE2ZDYyNjQ2MV9hbm9ueW1vdXNfbGFtYmRhXzc5PgogICAgICAgICAgIDcgICAwJSAgICAg
ICAgICAgICAgICAgIC0gZm9udC1sb2NrLXByZXBlbmQtdGV4dC1wcm9wZXJ0eQogICAgICAgICAg
IDcgICAwJSAgICAgICAgICAgICAgICAgICAgIGZvbnQtbG9jay0tYWRkLXRleHQtcHJvcGVydHkK
ICAgICAgICAgICA2ICAgMCUgICAgICAgICAgICAgICAgICAtIG1hcmtkb3duLWZvbnRpZnktaW5s
aW5lLWxpbmtzCiAgICAgICAgICAgNiAgIDAlICAgICAgICAgICAgICAgICAgIC0gbWFya2Rvd24t
bWF0Y2gtZ2VuZXJpYy1saW5rcwogICAgICAgICAgIDMgICAwJSAgICAgICAgICAgICAgICAgICAg
LSBtYXJrZG93bi1tYXRjaC1nZW5lcmljLWxpbmtzCiAgICAgICAgICAgMiAgIDAlICAgICAgICAg
ICAgICAgICAgICAgLSBtYXJrZG93bi1tYXRjaC1nZW5lcmljLWxpbmtzCiAgICAgICAgICAgMiAg
IDAlICAgICAgICAgICAgICAgICAgICAgICAgcmUtc2VhcmNoLWZvcndhcmQKICAgICAgICAgICAx
ICAgMCUgICAgICAgICAgICAgICAgICAgICAgIHJlLXNlYXJjaC1mb3J3YXJkCiAgICAgICAgICAg
MyAgIDAlICAgICAgICAgICAgICAgICAgICAgIHJlLXNlYXJjaC1mb3J3YXJkCiAgICAgICAgICAg
MyAgIDAlICAgICAgICAgICAgICAgICAgLSBtYXJrZG93bi1tYXRjaC1pbmxpbmUtYXR0cmlidXRl
cwogICAgICAgICAgIDMgICAwJSAgICAgICAgICAgICAgICAgICAgIG1hcmtkb3duLW1hdGNoLWlu
bGluZS1nZW5lcmljCiAgICAgICAgICAgMiAgIDAlICAgICAgICAgICAgICAgICAgLSBtYXJrZG93
bi1mb250aWZ5LWJsb2NrcXVvdGVzCiAgICAgICAgICAgMiAgIDAlICAgICAgICAgICAgICAgICAg
IC0gbWFya2Rvd24tbWF0Y2gtYmxvY2txdW90ZXMKICAgICAgICAgICAyICAgMCUgICAgICAgICAg
ICAgICAgICAgICAgbWFya2Rvd24tbWF0Y2gtcHJvcGVydGl6ZWQtdGV4dAogICAgICAgICAgIDEg
ICAwJSAgICAgICAgICAgICAgICAgICAgbWFya2Rvd24tZm9udGlmeS1saXN0LWl0ZW1zCiAgICAg
ICAgICAgMSAgIDAlICAgICAgICAgICAgICAgICAgICBldmFsCiAgICAgICAgICAgMSAgIDAlICAg
ICAgICAgICAgICAgICAgICBtYXJrZG93bi1mb250aWZ5LXRhYmxlcwogICAgICAgICAgIDEgICAw
JSAgICAgICAgICAgICAgICAgIC0gbWFya2Rvd24tZm9udGlmeS1mZW5jZWQtY29kZS1ibG9ja3MK
ICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgICAgICAgLSBtYXJrZG93bi1mb250aWZ5LWNv
ZGUtYmxvY2tzLWdlbmVyaWMKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgICAgICAgICAg
bWFya2Rvd24tbWF0Y2gtZmVuY2VkLWNvZGUtYmxvY2tzCiAgICAgICAgICAgMSAgIDAlICAgICAg
ICAgICAgICAgICAgLSBtYXJrZG93bi1tYXRjaC1lc2NhcGUKICAgICAgICAgICAxICAgMCUgICAg
ICAgICAgICAgICAgICAgICBzZWFyY2gtZm9yd2FyZC1yZWdleHAKICAgICAgICAgICA1ICAgMCUg
ICAgICAgICAgICAgICAgIC0gZm9udC1sb2NrLWZvbnRpZnktc3ludGFjdGljYWxseS1yZWdpb24K
ICAgICAgICAgICA1ICAgMCUgICAgICAgICAgICAgICAgICAgIGZvbnQtbG9jay1kZWZhdWx0LWZv
bnRpZnktc3ludGFjdGljYWxseQogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgLSBmb250
LWxvY2stc2V0LWRlZmF1bHRzCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAgLSBmb250
LWxvY2stY29tcGlsZS1rZXl3b3JkcwogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgICAg
IGZvbnQtbG9jay1jb21waWxlLWtleXdvcmQKICAgICAgICAgIDQzICAgMCUgICAgICAgICAgICAg
LSAjPG5hdGl2ZS1jb21wLWZ1bmN0aW9uIEY2MTZlNmY2ZTc5NmQ2Zjc1NzMyZDZjNjE2ZDYyNjQ2
MV9hbm9ueW1vdXNfbGFtYmRhXzk0PgogICAgICAgICAgMjYgICAwJSAgICAgICAgICAgICAgLSBt
YXJrZG93bi1nZm0tY2hlY2tib3gtYWZ0ZXItY2hhbmdlLWZ1bmN0aW9uCiAgICAgICAgICAxNiAg
IDAlICAgICAgICAgICAgICAgICBtYXJrZG93bi1tYWtlLWdmbS1jaGVja2JveGVzLWJ1dHRvbnMK
ICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgICAgc3ludGF4LXBwc3MtZmx1c2gtY2FjaGUK
ICAgICAgICAgIDE1ICAgMCUgICAgICAgICAgICAgLSBnZm0tdmlldy1tb2RlCiAgICAgICAgICAx
NSAgIDAlICAgICAgICAgICAgICAtIGdmbS1tb2RlCiAgICAgICAgICAxNCAgIDAlICAgICAgICAg
ICAgICAgLSBtYXJrZG93bi1tb2RlCiAgICAgICAgICAgOSAgIDAlICAgICAgICAgICAgICAgIC0g
c3ludGF4LXByb3BlcnRpemUKICAgICAgICAgICA2ICAgMCUgICAgICAgICAgICAgICAgIC0gbWFy
a2Rvd24tc3ludGF4LXByb3BlcnRpemUKICAgICAgICAgICAzICAgMCUgICAgICAgICAgICAgICAg
ICAtIG1hcmtkb3duLXN5bnRheC1wcm9wZXJ0aXplLXByZS1ibG9ja3MKICAgICAgICAgICAxICAg
MCUgICAgICAgICAgICAgICAgICAgICBtYXJrZG93bi1jYWxjdWxhdGUtbGlzdC1sZXZlbHMKICAg
ICAgICAgICAxICAgMCUgICAgICAgICAgICAgICAgICAgICBtYXJrZG93bi1jdXItbGluZS1ibGFu
ay1wCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAgICAgICBtYXJrZG93bi1zeW50YXgt
cHJvcGVydGl6ZS1ocnMKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgICAgICAgIG1hcmtk
b3duLXN5bnRheC1wcm9wZXJ0aXplLWJsb2NrcXVvdGVzCiAgICAgICAgICAgMSAgIDAlICAgICAg
ICAgICAgICAgICAgIGFkZC1ob29rCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAgICAg
ICM8Ynl0ZS1jb2RlLWZ1bmN0aW9uIDNFQT4KICAgICAgICAgICAyICAgMCUgICAgICAgICAgICAg
ICAgICBhZGQtaG9vawogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgICAgIHJ1bi1tb2Rl
LWhvb2tzCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAgICAgbWFya2Rvd24tbWFrZS1n
Zm0tY2hlY2tib3hlcy1idXR0b25zCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAgIC0g
dmVyc2lvbjwKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgICAgICAgdmVyc2lvbi10by1s
aXN0CiAgICAgICAgICAgNSAgIDAlICAgICAgICAgICAgICAgZ2VuZXJhdGUtbmV3LWJ1ZmZlcgog
ICAgICAgICAgIDMgICAwJSAgICAgICAgICAgICAgIHN0cmluZy10cmltCiAgICAgICAgICAgMSAg
IDAlICAgICAgICAgICAgICAgbWFrZS1jbG9zdXJlCiAgICAgICAgICAzNyAgIDAlICAgICAgICAg
ICAgLSByZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcKICAgICAgICAgIDE3ICAgMCUgICAgICAgICAg
ICAgICBjb25jYXQKICAgICAgICAgIDgwICAgMCUgICAgICAgICAtICM8Ynl0ZS1jb2RlLWZ1bmN0
aW9uIDMyNj4KICAgICAgICAgIDgwICAgMCUgICAgICAgICAgLSAjPGJ5dGUtY29kZS1mdW5jdGlv
biA5RTI+CiAgICAgICAgICA4MCAgIDAlICAgICAgICAgICAtIHJ1bi1ob29rLXdpdGgtYXJncwog
ICAgICAgICAgODAgICAwJSAgICAgICAgICAgIC0gZWxkb2MtZGlzcGxheS1pbi1lY2hvLWFyZWEK
ICAgICAgICAgIDgwICAgMCUgICAgICAgICAgICAgLSBlbGRvYy0tbWVzc2FnZQogICAgICAgICAg
ODAgICAwJSAgICAgICAgICAgICAgLSBlbGRvYy1taW5pYnVmZmVyLW1lc3NhZ2UKICAgICAgICAg
IDgwICAgMCUgICAgICAgICAgICAgICAtIG1lc3NhZ2UKICAgICAgICAgIDczICAgMCUgICAgICAg
ICAgICAgICAgLSByZWRpc3BsYXlfaW50ZXJuYWwgKEMgZnVuY3Rpb24pCiAgICAgICAgICAgNCAg
IDAlICAgICAgICAgICAgICAgICAtIGV2YWwKICAgICAgICAgICA0ICAgMCUgICAgICAgICAgICAg
ICAgICAtIGNsLWxvb3AKICAgICAgICAgICA0ICAgMCUgICAgICAgICAgICAgICAgICAgLSBjbC1i
bG9jawogICAgICAgICAgIDQgICAwJSAgICAgICAgICAgICAgICAgICAgLSBjbC0tYmxvY2std3Jh
cHBlcgogICAgICAgICAgIDQgICAwJSAgICAgICAgICAgICAgICAgICAgIC0gbGV0CiAgICAgICAg
ICAgNCAgIDAlICAgICAgICAgICAgICAgICAgICAgIC0gY2F0Y2gKICAgICAgICAgICA0ICAgMCUg
ICAgICAgICAgICAgICAgICAgICAgIC0gbGV0KgogICAgICAgICAgIDQgICAwJSAgICAgICAgICAg
ICAgICAgICAgICAgIC0gd2hpbGUKICAgICAgICAgICA0ICAgMCUgICAgICAgICAgICAgICAgICAg
ICAgICAgLSBzZXRxCiAgICAgICAgICAgNCAgIDAlICAgICAgICAgICAgICAgICAgICAgICAgICAt
IGZvcm1hdC1tb2RlLWxpbmUKICAgICAgICAgICAzICAgMCUgICAgICAgICAgICAgICAgICAgICAg
ICAgICAtIGV2YWwKICAgICAgICAgICAyICAgMCUgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LSB3aGVuLWxldCoKICAgICAgICAgICAyICAgMCUgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC0gaWYtbGV0KgogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC0gbGV0KgogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAt
IGlmCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBy
b3BlcnRpemUKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAt
ICM8Ynl0ZS1jb2RlLWZ1bmN0aW9uIDUyMD4KICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbC0tYnVpbGQtYmluZGluZ3MKICAgICAgICAgICAx
ICAgMCUgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSB3aGVuLWxldAogICAgICAgICAgIDEg
ICAwJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBpZi1sZXQqCiAgICAgICAgICAgMSAg
IDAlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBsZXQqCiAgICAgICAgICAgMSAgIDAl
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gaWYKICAgICAgICAgICAxICAgMCUgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gY2wtbG9vcAogICAgICAgICAgIDEgICAwJSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gY2wtYmxvY2sKICAgICAgICAgICAxICAg
MCUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSAjPGJ5dGUtY29kZS1mdW5jdGlv
biA2MUQ+CiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludGVybgogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgICAgICBzdWJzdGl0dXRl
LWNvbW1hbmQta2V5cwogICAgICAgICAgIDEgICAwJSAgICAgICAgIC0gZWdsb3QtLXNpZy1pbmZv
CiAgICAgICAgICAgMSAgIDAlICAgICAgICAgIC0gZWdsb3QtLWNoZWNrLW9iamVjdAogICAgICAg
ICAgIDEgICAwJSAgICAgICAgICAgICBlZ2xvdC0taW50ZXJmYWNlCiAgICAgICAgICAgMSAgIDAl
ICAgICAgICAtICM8Ynl0ZS1jb2RlLWZ1bmN0aW9uIEZDMj4KICAgICAgICAgICAxICAgMCUgICAg
ICAgICAtIHNlcS1lbXB0eS1wCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgIC0gYXBwbHkKICAg
ICAgICAgICAxICAgMCUgICAgICAgICAgICAgIzxieXRlLWNvZGUtZnVuY3Rpb24gRTU3PgogICAg
ICAgICAgNDQgICAwJSAgICAgLSBhcHBseQogICAgICAgICAgNDQgICAwJSAgICAgIC0ganNvbnJw
Yy0tZXZlbnQKICAgICAgICAgIDQ0ICAgMCUgICAgICAgLSAjPGJ5dGUtY29kZS1mdW5jdGlvbiA1
NzA+CiAgICAgICAgICA0NCAgIDAlICAgICAgICAtIGFwcGx5CiAgICAgICAgICA0NCAgIDAlICAg
ICAgICAgICBqc29ucnBjLS1sb2ctZXZlbnQKICAgICAgICAgICAxICAgMCUgICAgICAgbWFrZS1j
bG9zdXJlCiAgICAgICAgICAgMSAgIDAlICAgICAgIGpzb25ycGMtLXJlbW92ZQogICAgICAgICAg
NTIgICAwJSAgIC0gZWxkb2MtLXVwZGF0ZQogICAgICAgICAgNTIgICAwJSAgICAtIGVsZG9jLXBy
aW50LWN1cnJlbnQtc3ltYm9sLWluZm8KICAgICAgICAgIDUyICAgMCUgICAgIC0gZWxkb2MtLWlu
dm9rZS1zdHJhdGVneQogICAgICAgICAgNTIgICAwJSAgICAgIC0gZWxkb2MtZG9jdW1lbnRhdGlv
bi1jb21wb3NlCiAgICAgICAgICAyMiAgIDAlICAgICAgIC0gZWdsb3QtY29kZS1hY3Rpb24tc3Vn
Z2VzdGlvbgogICAgICAgICAgMTcgICAwJSAgICAgICAgLSBlZ2xvdC0tYXN5bmMtcmVxdWVzdAog
ICAgICAgICAgMTcgICAwJSAgICAgICAgIC0ganNvbnJwYy1hc3luYy1yZXF1ZXN0CiAgICAgICAg
ICAxNyAgIDAlICAgICAgICAgIC0ganNvbnJwYy0tYXN5bmMtcmVxdWVzdC0xCiAgICAgICAgICAx
NiAgIDAlICAgICAgICAgICAtIGFwcGx5CiAgICAgICAgICAxNiAgIDAlICAgICAgICAgICAgLSBq
c29ucnBjLWNvbm5lY3Rpb24tc2VuZAogICAgICAgICAgMTYgICAwJSAgICAgICAgICAgICAtIGFw
cGx5CiAgICAgICAgICAxNiAgIDAlICAgICAgICAgICAgICAtICM8Ynl0ZS1jb2RlLWZ1bmN0aW9u
IDBBNj4KICAgICAgICAgIDE2ICAgMCUgICAgICAgICAgICAgICAgIHByb2Nlc3Mtc2VuZC1zdHJp
bmcKICAgICAgICAgICAxICAgMCUgICAgICAgICAgIC0gIzxieXRlLWNvZGUtZnVuY3Rpb24gMUYy
PgogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgIC0gcnVuLXdpdGgtdGltZXIKICAgICAgICAg
ICAxICAgMCUgICAgICAgICAgICAgICBydW4tYXQtdGltZQogICAgICAgICAgIDQgICAwJSAgICAg
ICAgLSBlZ2xvdC0tY29kZS1hY3Rpb24tYm91bmRzCiAgICAgICAgICAgNCAgIDAlICAgICAgICAg
LSBib3VuZHMtb2YtdGhpbmctYXQtcG9pbnQKICAgICAgICAgICAyICAgMCUgICAgICAgICAgLSB0
aGluZy1hdC1wb2ludC0tZW5kLW9mLXNleHAKICAgICAgICAgICAyICAgMCUgICAgICAgICAgIC0g
Zm9yd2FyZC1zZXhwCiAgICAgICAgICAgMiAgIDAlICAgICAgICAgICAgLSBweXRob24tbmF2LWZv
cndhcmQtc2V4cAogICAgICAgICAgIDIgICAwJSAgICAgICAgICAgICAtIHB5dGhvbi1uYXYtLWZv
cndhcmQtc2V4cAogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgLSBweXRob24tc3ludGF4
LWNvbnRleHQtdHlwZQogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgIC0gc3ludGF4LXBw
c3MKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgICAgICBwYXJzZS1wYXJ0aWFsLXNleHAK
ICAgICAgICAgICAxICAgMCUgICAgICAgICAgICBzZXEtc29tZQogICAgICAgICAgIDEgICAwJSAg
ICAgICAgLSBlZ2xvdC1zZXJ2ZXItY2FwYWJsZQogICAgICAgICAgIDEgICAwJSAgICAgICAgIC0g
ZWdsb3QtLWNhcGFiaWxpdGllcwogICAgICAgICAgIDEgICAwJSAgICAgICAgICAtIGFwcGx5CiAg
ICAgICAgICAgMSAgIDAlICAgICAgICAgICAtICM8Ynl0ZS1jb2RlLWZ1bmN0aW9uIEJGQz4KICAg
ICAgICAgICAxICAgMCUgICAgICAgICAgICAgIHNsb3QtdmFsdWUKICAgICAgICAgIDEzICAgMCUg
ICAgICAgLSBlZ2xvdC1oaWdobGlnaHQtZWxkb2MtZnVuY3Rpb24KICAgICAgICAgIDEzICAgMCUg
ICAgICAgIC0gZWdsb3QtLWFzeW5jLXJlcXVlc3QKICAgICAgICAgIDEzICAgMCUgICAgICAgICAt
IGpzb25ycGMtYXN5bmMtcmVxdWVzdAogICAgICAgICAgMTMgICAwJSAgICAgICAgICAtIGpzb25y
cGMtLWFzeW5jLXJlcXVlc3QtMQogICAgICAgICAgMTMgICAwJSAgICAgICAgICAgLSBhcHBseQog
ICAgICAgICAgMTMgICAwJSAgICAgICAgICAgIC0ganNvbnJwYy1jb25uZWN0aW9uLXNlbmQKICAg
ICAgICAgIDEzICAgMCUgICAgICAgICAgICAgLSBhcHBseQogICAgICAgICAgMTMgICAwJSAgICAg
ICAgICAgICAgLSAjPGJ5dGUtY29kZS1mdW5jdGlvbiAwQTY+CiAgICAgICAgICAxMyAgIDAlICAg
ICAgICAgICAgICAgICBwcm9jZXNzLXNlbmQtc3RyaW5nCiAgICAgICAgICAgOSAgIDAlICAgICAg
IC0gZWdsb3QtaG92ZXItZWxkb2MtZnVuY3Rpb24KICAgICAgICAgICA4ICAgMCUgICAgICAgIC0g
ZWdsb3QtLWFzeW5jLXJlcXVlc3QKICAgICAgICAgICA4ICAgMCUgICAgICAgICAtIGpzb25ycGMt
YXN5bmMtcmVxdWVzdAogICAgICAgICAgIDggICAwJSAgICAgICAgICAtIGpzb25ycGMtLWFzeW5j
LXJlcXVlc3QtMQogICAgICAgICAgIDggICAwJSAgICAgICAgICAgLSBhcHBseQogICAgICAgICAg
IDggICAwJSAgICAgICAgICAgIC0ganNvbnJwYy1jb25uZWN0aW9uLXNlbmQKICAgICAgICAgICA4
ICAgMCUgICAgICAgICAgICAgLSBhcHBseQogICAgICAgICAgIDggICAwJSAgICAgICAgICAgICAg
LSAjPGJ5dGUtY29kZS1mdW5jdGlvbiAwQTY+CiAgICAgICAgICAgOCAgIDAlICAgICAgICAgICAg
ICAgICBwcm9jZXNzLXNlbmQtc3RyaW5nCiAgICAgICAgICAgOCAgIDAlICAgICAgIC0gZWdsb3Qt
c2lnbmF0dXJlLWVsZG9jLWZ1bmN0aW9uCiAgICAgICAgICAgOCAgIDAlICAgICAgICAtIGVnbG90
LS1hc3luYy1yZXF1ZXN0CiAgICAgICAgICAgOCAgIDAlICAgICAgICAgLSBqc29ucnBjLWFzeW5j
LXJlcXVlc3QKICAgICAgICAgICA4ICAgMCUgICAgICAgICAgLSBqc29ucnBjLS1hc3luYy1yZXF1
ZXN0LTEKICAgICAgICAgICA4ICAgMCUgICAgICAgICAgIC0gYXBwbHkKICAgICAgICAgICA4ICAg
MCUgICAgICAgICAgICAtIGpzb25ycGMtY29ubmVjdGlvbi1zZW5kCiAgICAgICAgICAgOCAgIDAl
ICAgICAgICAgICAgIC0gYXBwbHkKICAgICAgICAgICA4ICAgMCUgICAgICAgICAgICAgIC0gIzxi
eXRlLWNvZGUtZnVuY3Rpb24gMEE2PgogICAgICAgICAgIDggICAwJSAgICAgICAgICAgICAgICAg
cHJvY2Vzcy1zZW5kLXN0cmluZwogICAgICAgICAgIDIgICAwJSAgIC0gaml0LWxvY2stY29udGV4
dC0tdXBkYXRlCiAgICAgICAgICAgMiAgIDAlICAgICAgaml0LWxvY2stY29udGV4dC1mb250aWZ5
CiAgICAgICAgICAgMSAgIDAlICAgLSBibGluay1jdXJzb3Itc3RhcnQKICAgICAgICAgICAxICAg
MCUgICAgLSBibGluay1jdXJzb3ItLXN0YXJ0LXRpbWVyCiAgICAgICAgICAgMSAgIDAlICAgICAg
IHJ1bi13aXRoLXRpbWVyCiAgICAgICAgIDcwMiAgIDQlICAgQXV0b21hdGljIEdDCiAgICAgICAg
IDE0MiAgIDAlICAgcmVkaXNwbGF5X2ludGVybmFsIChDIGZ1bmN0aW9uKQogICAgICAgICAxMTcg
ICAwJSAtIGNvbW1hbmQtZXhlY3V0ZQogICAgICAgICAxMTUgICAwJSAgLSBieXRlLWNvZGUKICAg
ICAgICAgMTE1ICAgMCUgICAtIHJlYWQtZXh0ZW5kZWQtY29tbWFuZAogICAgICAgICAxMTUgICAw
JSAgICAtIHJlYWQtZXh0ZW5kZWQtY29tbWFuZC0xCiAgICAgICAgIDExNSAgIDAlICAgICAtIGNv
bXBsZXRpbmctcmVhZC1kZWZhdWx0CiAgICAgICAgICAyMCAgIDAlICAgICAgICByZWRpc3BsYXlf
aW50ZXJuYWwgKEMgZnVuY3Rpb24pCiAgICAgICAgICAxNCAgIDAlICAgICAgLSBjb21tYW5kLWV4
ZWN1dGUKICAgICAgICAgIDE0ICAgMCUgICAgICAgLSBmdW5jYWxsLWludGVyYWN0aXZlbHkKICAg
ICAgICAgIDExICAgMCUgICAgICAgIC0gbWluaWJ1ZmZlci1jb21wbGV0ZS1hbmQtZXhpdAogICAg
ICAgICAgMTEgICAwJSAgICAgICAgIC0gY29tcGxldGlvbi1jb21wbGV0ZS1hbmQtZXhpdAogICAg
ICAgICAgMTEgICAwJSAgICAgICAgICAtIGNvbXBsZXRpb24tLWNvbXBsZXRlLWFuZC1leGl0CiAg
ICAgICAgICAxMSAgIDAlICAgICAgICAgICAtICM8Ynl0ZS1jb2RlLWZ1bmN0aW9uIEZCOD4KICAg
ICAgICAgIDExICAgMCUgICAgICAgICAgICAtIGNvbXBsZXRpb24tLWRvLWNvbXBsZXRpb24KICAg
ICAgICAgICA5ICAgMCUgICAgICAgICAgICAgLSBjb21wbGV0aW9uLXRyeS1jb21wbGV0aW9uCiAg
ICAgICAgICAgOSAgIDAlICAgICAgICAgICAgICAtIGNvbXBsZXRpb24tLW50aC1jb21wbGV0aW9u
CiAgICAgICAgICAgOSAgIDAlICAgICAgICAgICAgICAgLSBzZXEtc29tZQogICAgICAgICAgIDkg
ICAwJSAgICAgICAgICAgICAgICAtIHNlcS1kbwogICAgICAgICAgIDkgICAwJSAgICAgICAgICAg
ICAgICAgLSBtYXBjCiAgICAgICAgICAgOSAgIDAlICAgICAgICAgICAgICAgICAgLSAjPGJ5dGUt
Y29kZS1mdW5jdGlvbiA3QTQ+CiAgICAgICAgICAgOSAgIDAlICAgICAgICAgICAgICAgICAgIC0g
IzxieXRlLWNvZGUtZnVuY3Rpb24gNUJFPgogICAgICAgICAgIDkgICAwJSAgICAgICAgICAgICAg
ICAgICAgLSBldmFsCiAgICAgICAgICAgOSAgIDAlICAgICAgICAgICAgICAgICAgICAgLSBsZXQK
ICAgICAgICAgICA5ICAgMCUgICAgICAgICAgICAgICAgICAgICAgLSBmdW5jYWxsCiAgICAgICAg
ICAgOSAgIDAlICAgICAgICAgICAgICAgICAgICAgICAtICM8Ynl0ZS1jb2RlLWZ1bmN0aW9uIEFC
NT4KICAgICAgICAgICA5ICAgMCUgICAgICAgICAgICAgICAgICAgICAgICAtIGNvbXBsZXRpb24t
YmFzaWMtdHJ5LWNvbXBsZXRpb24KICAgICAgICAgICA5ICAgMCUgICAgICAgICAgICAgICAgICAg
ICAgICAgLSAjPG5hdGl2ZS1jb21wLWZ1bmN0aW9uIEY2MTZlNmY2ZTc5NmQ2Zjc1NzMyZDZjNjE2
ZDYyNjQ2MV9hbm9ueW1vdXNfbGFtYmRhXzU2PgogICAgICAgICAgIDkgICAwJSAgICAgICAgICAg
ICAgICAgICAgICAgICAgLSBjb21wbGV0ZS13aXRoLWFjdGlvbgogICAgICAgICAgIDkgICAwJSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5LWNvbXBsZXRpb24KICAgICAgICAgICAyICAg
MCUgICAgICAgICAgICAgLSBtaW5pYnVmZmVyLWNvbXBsZXRpb24taGVscAogICAgICAgICAgIDEg
ICAwJSAgICAgICAgICAgICAgLSB0ZW1wLWJ1ZmZlci13aW5kb3ctc2hvdwogICAgICAgICAgIDEg
ICAwJSAgICAgICAgICAgICAgIC0gZGlzcGxheS1idWZmZXIKICAgICAgICAgICAxICAgMCUgICAg
ICAgICAgICAgICAgLSBkaXNwbGF5LWJ1ZmZlci1yZXVzZS13aW5kb3cKICAgICAgICAgICAxICAg
MCUgICAgICAgICAgICAgICAgIC0gd2luZG93LS1kaXNwbGF5LWJ1ZmZlcgogICAgICAgICAgIDEg
ICAwJSAgICAgICAgICAgICAgICAgIC0gIzxieXRlLWNvZGUtZnVuY3Rpb24gQTk4PgogICAgICAg
ICAgIDEgICAwJSAgICAgICAgICAgICAgICAgICAtIGRpc3BsYXktY29tcGxldGlvbi1saXN0CiAg
ICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAgICAgICAtIGNvbXBsZXRpb24tc2V0dXAtZnVu
Y3Rpb24KICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgICAgICAgICAtIHN1YnN0aXR1dGUt
Y29tbWFuZC1rZXlzCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAgICAgICAgICAgd2hl
cmUtaXMtaW50ZXJuYWwKICAgICAgICAgICAzICAgMCUgICAgICAgIC0gbWluaWJ1ZmZlci1jb21w
bGV0ZQogICAgICAgICAgIDMgICAwJSAgICAgICAgIC0gY29tcGxldGlvbi1pbi1yZWdpb24KICAg
ICAgICAgICAzICAgMCUgICAgICAgICAgLSBjb21wbGV0aW9uLS1pbi1yZWdpb24KICAgICAgICAg
ICAzICAgMCUgICAgICAgICAgIC0gIzxieXRlLWNvZGUtZnVuY3Rpb24gRTg0PgogICAgICAgICAg
IDMgICAwJSAgICAgICAgICAgIC0gYXBwbHkKICAgICAgICAgICAzICAgMCUgICAgICAgICAgICAg
LSAjPGJ5dGUtY29kZS1mdW5jdGlvbiBERDQ+CiAgICAgICAgICAgMyAgIDAlICAgICAgICAgICAg
ICAtIGNvbXBsZXRpb24tLWluLXJlZ2lvbi0xCiAgICAgICAgICAgMyAgIDAlICAgICAgICAgICAg
ICAgLSBjb21wbGV0aW9uLS1kby1jb21wbGV0aW9uCiAgICAgICAgICAgMyAgIDAlICAgICAgICAg
ICAgICAgIC0gbWluaWJ1ZmZlci1jb21wbGV0aW9uLWhlbHAKICAgICAgICAgICAyICAgMCUgICAg
ICAgICAgICAgICAgIC0gdGVtcC1idWZmZXItd2luZG93LXNob3cKICAgICAgICAgICAyICAgMCUg
ICAgICAgICAgICAgICAgICAtIGRpc3BsYXktYnVmZmVyCiAgICAgICAgICAgMiAgIDAlICAgICAg
ICAgICAgICAgICAgIC0gZGlzcGxheS1idWZmZXItYXQtYm90dG9tCiAgICAgICAgICAgMSAgIDAl
ICAgICAgICAgICAgICAgICAgICAtIHNwbGl0LXdpbmRvdy1uby1lcnJvcgogICAgICAgICAgIDEg
ICAwJSAgICAgICAgICAgICAgICAgICAgIC0gc3BsaXQtd2luZG93CiAgICAgICAgICAgMSAgIDAl
ICAgICAgICAgICAgICAgICAgICAgICAgc3BsaXQtd2luZG93LWludGVybmFsCiAgICAgICAgICAg
MSAgIDAlICAgICAgICAgICAgICAgICAgICAtIHdpbmRvdy0tZGlzcGxheS1idWZmZXIKICAgICAg
ICAgICAxICAgMCUgICAgICAgICAgICAgICAgICAgICAtIGNvbXBsZXRpb25zLS1maXQtd2luZG93
LXRvLWJ1ZmZlcgogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgICAgICAgICAtIGZpdC13
aW5kb3ctdG8tYnVmZmVyCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAgICAgICAgICAt
IHdpbmRvdy1yZXNpemUtbm8tZXJyb3IKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgICAg
ICAgICAgICAgIHdpbmRvdy1yZXNpemUKICAgICAgICAgICAyICAgMCUgICAgICAtIHRpbWVyLWV2
ZW50LWhhbmRsZXIKICAgICAgICAgICAyICAgMCUgICAgICAgLSBhcHBseQogICAgICAgICAgIDIg
ICAwJSAgICAgICAgLSBjb21wbGV0aW9ucy0tYmFja2dyb3VuZC11cGRhdGUKICAgICAgICAgICAx
ICAgMCUgICAgICAgICAgIGlucHV0LXBlbmRpbmctcAogICAgICAgICAgIDEgICAwJSAgICAgICAg
IC0gcmVkaXNwbGF5CiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgcmVkaXNwbGF5X2ludGVy
bmFsIChDIGZ1bmN0aW9uKQogICAgICAgICAgIDIgICAwJSAgLSBmdW5jYWxsLWludGVyYWN0aXZl
bHkKICAgICAgICAgICAyICAgMCUgICAtIGV4ZWN1dGUtZXh0ZW5kZWQtY29tbWFuZAogICAgICAg
ICAgIDIgICAwJSAgICAtIGNvbW1hbmQtZXhlY3V0ZQogICAgICAgICAgIDIgICAwJSAgICAgLSBm
dW5jYWxsLWludGVyYWN0aXZlbHkKICAgICAgICAgICAxICAgMCUgICAgICAgIHByb2ZpbGVyLXN0
YXJ0CiAgICAgICAgICAgMSAgIDAlICAgICAgICBwcm9maWxlci1yZXBvcnQKICAgICAgICAgIDEw
ICAgMCUgLSAuLi4KICAgICAgICAgICA3ICAgMCUgIC0gY29tcGxldGlvbi1hbGwtY29tcGxldGlv
bnMKICAgICAgICAgICA3ICAgMCUgICAtIGNvbXBsZXRpb24tLW50aC1jb21wbGV0aW9uCiAgICAg
ICAgICAgNyAgIDAlICAgIC0gc2VxLXNvbWUKICAgICAgICAgICA3ICAgMCUgICAgIC0gc2VxLWRv
CiAgICAgICAgICAgNyAgIDAlICAgICAgLSBtYXBjCiAgICAgICAgICAgNyAgIDAlICAgICAgIC0g
IzxieXRlLWNvZGUtZnVuY3Rpb24gMDU5PgogICAgICAgICAgIDcgICAwJSAgICAgICAgLSAjPGJ5
dGUtY29kZS1mdW5jdGlvbiAwQUU+CiAgICAgICAgICAgNyAgIDAlICAgICAgICAgLSBldmFsCiAg
ICAgICAgICAgNyAgIDAlICAgICAgICAgIC0gbGV0CiAgICAgICAgICAgNyAgIDAlICAgICAgICAg
ICAtIGZ1bmNhbGwKICAgICAgICAgICA3ICAgMCUgICAgICAgICAgICAtICM8Ynl0ZS1jb2RlLWZ1
bmN0aW9uIDAyMT4KICAgICAgICAgICA3ICAgMCUgICAgICAgICAgICAgLSBjb21wbGV0aW9uLWJh
c2ljLWFsbC1jb21wbGV0aW9ucwogICAgICAgICAgIDcgICAwJSAgICAgICAgICAgICAgLSBjb21w
bGV0aW9uLXBjbS0tYWxsLWNvbXBsZXRpb25zCiAgICAgICAgICAgNyAgIDAlICAgICAgICAgICAg
ICAgLSAjPG5hdGl2ZS1jb21wLWZ1bmN0aW9uIEY2MTZlNmY2ZTc5NmQ2Zjc1NzMyZDZjNjE2ZDYy
NjQ2MV9hbm9ueW1vdXNfbGFtYmRhXzU2PgogICAgICAgICAgIDcgICAwJSAgICAgICAgICAgICAg
ICAtIGNvbXBsZXRlLXdpdGgtYWN0aW9uCiAgICAgICAgICAgNyAgIDAlICAgICAgICAgICAgICAg
ICAgIGFsbC1jb21wbGV0aW9ucwogICAgICAgICAgIDMgICAwJSAgLSBweXRob24tc2hlbGwtZ2V0
LXByb2Nlc3MKICAgICAgICAgICAzICAgMCUgICAtIHB5dGhvbi1zaGVsbC1nZXQtYnVmZmVyCiAg
ICAgICAgICAgMyAgIDAlICAgIC0gc2VxLXNvbWUKICAgICAgICAgICAzICAgMCUgICAgIC0gc2Vx
LWRvCiAgICAgICAgICAgMyAgIDAlICAgICAgLSBtYXBjCiAgICAgICAgICAgMyAgIDAlICAgICAg
IC0gIzxieXRlLWNvZGUtZnVuY3Rpb24gNEM1PgogICAgICAgICAgIDMgICAwJSAgICAgICAgLSAj
PG5hdGl2ZS1jb21wLWZ1bmN0aW9uIEY2MTZlNmY2ZTc5NmQ2Zjc1NzMyZDZjNjE2ZDYyNjQ2MV9h
bm9ueW1vdXNfbGFtYmRhXzYyPgogICAgICAgICAgIDMgICAwJSAgICAgICAgIC0gcHl0aG9uLXNo
ZWxsLWdldC1wcm9jZXNzLW5hbWUKICAgICAgICAgICAzICAgMCUgICAgICAgICAgLSBwcm9qZWN0
LW5hbWUKICAgICAgICAgICAzICAgMCUgICAgICAgICAgIC0gYXBwbHkKICAgICAgICAgICAzICAg
MCUgICAgICAgICAgICAtICM8Ynl0ZS1jb2RlLWZ1bmN0aW9uIEJDRT4KICAgICAgICAgICAzICAg
MCUgICAgICAgICAgICAgLSBhcHBseQogICAgICAgICAgIDMgICAwJSAgICAgICAgICAgICAgLSAj
PGJ5dGUtY29kZS1mdW5jdGlvbiAxOTc+CiAgICAgICAgICAgMiAgIDAlICAgICAgICAgICAgICAg
LSBwcm9qZWN0LS12YWx1ZS1pbi1kaXIKICAgICAgICAgICAyICAgMCUgICAgICAgICAgICAgICAg
LSBwcm9qZWN0LS1nZXQtY2FjaGVkCiAgICAgICAgICAgMiAgIDAlICAgICAgICAgICAgICAgICAg
IHZjLWZpbGUtZ2V0cHJvcAogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgIC0gIzxieXRl
LWNvZGUtZnVuY3Rpb24gMEYyPgogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgICAtIGFw
cGx5CiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAgICAtICM8Ynl0ZS1jb2RlLWZ1bmN0
aW9uIDBBRD4KICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgICAgICAgIGZpbGUtbmFtZS1u
b25kaXJlY3RvcnkKICAgICAgICAgICAxICAgMCUgLSBqc29ucnBjLS1wcm9jZXNzLWZpbHRlcgog
ICAgICAgICAgIDEgICAwJSAgICBidWZmZXItc3RyaW5nCg==
--0000000000007fc1d00653062ee3--
bug-gnu-emacs@HIDDEN:bug#81150; Package emacs.
Full text available.Received: (at 81150) by debbugs.gnu.org; 30 May 2026 09:45:28 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat May 30 05:45:27 2026 Received: from localhost ([127.0.0.1]:37804 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wTGFv-0004OK-Eq for submit <at> debbugs.gnu.org; Sat, 30 May 2026 05:45:27 -0400 Received: from mail-oo1-xc35.google.com ([2607:f8b0:4864:20::c35]:49233) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <joaotavora@HIDDEN>) id 1wTGFp-0004N1-Is for 81150 <at> debbugs.gnu.org; Sat, 30 May 2026 05:45:20 -0400 Received: by mail-oo1-xc35.google.com with SMTP id 006d021491bc7-6969c864c89so8150026eaf.2 for <81150 <at> debbugs.gnu.org>; Sat, 30 May 2026 02:45:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1780134316; cv=none; d=google.com; s=arc-20240605; b=U7zH6RAmlgRX6QmfFnPIXT0FQ7FZUJ+DuWpwwDbt93tWqbf7Oa8Q8aNjDrgh/jFBlP b9k3U5nqtLvvmC0uCXgVdjNjSUBn5gSHmb+ekq/ZmF0Hw72lGNEKLQGtst7+zUgydCQX u8XGNgRsR2duIV46TDVlb3Z9g6FBPNY974XOcQY2w7Mx9ZRcSk2DolQmIi1JNqva8lua nnhw6i02Ywwxum4COmTBDe/jgDNjOK7y1LgsQai8lIayM/Nf5HJv6VhyzzYrho0SZqN1 euIlD287z5UL7UPDM1nXfJkXUH3UDRIwImA0yTnhwoTub2eyER+FvZ7p5COMGLSvexMd Kz6w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=4jk1DJgxHlY3970MHewxHkzUMWzC30EHPW0BkGunPd0=; fh=rcv1pdES7f0KZbpvl/9kFb9ENL8Wmba0Inrr9F3VvR4=; b=I636AGxXWgYcBiRo9DuGQJ6Fht/A8QpxnbLs1gvjjUZ4NCTz67piyv8RjV7aBFwG+X 1FXE4sP7Ol766jUeEsY+cl73qWMXNnUlb5y+oo1IFFZxeZYaqCOuMS+XUZ+BO7Xi3LZT 29G5ChzIFqDClwoB6GeXmKTL3cbPyM/jBWJnUPwxwVhchowEqYKpMn8X6DajsnNXPj+u /soG8rgtDLjDfE1IkW5NgwHsI1Ljrm9X3+vVOFuOBU83mEkH3sIXTzjQS4pfud1h1BcB MaSJh2PHN0TIpluKyU6pX58MswED0PWw8dfnQOCSDHIdE6ePWEoeWFo/3/PIyqiAHuxz ah7g==; darn=debbugs.gnu.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780134316; x=1780739116; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=4jk1DJgxHlY3970MHewxHkzUMWzC30EHPW0BkGunPd0=; b=ZtifkT/8ZqfM48i1XQ4gda4LuOy8wQJD55rvuf8B2r3/yg/K83c67noozdEGgtxU32 r/LjpWNTsFD/CyNhND2Mtwy1qMVm16HLG1pHk1FuPKYr5je+ILv8cxqC+C5rgqgNl8XI mebIhRiVtu2r/vd+6x/FWaZCs0G9j1MqTZLGhnTDzsGmYV2ksIgLsKLBNpcsAb8v6x7y Fzd1kuvyXS0OtEul6Lg8Vl6+91KcfQ+1y0YqxxZVbWXok1b0oDSmJlyi41U3ZtFgR3no J8Lg10+gLu9LfivlK3IZ648SF+1IUhxqgcBlEMXaD/0cCAjbtn8d/uXmVPpAYRMiwx46 FwbA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780134316; x=1780739116; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=4jk1DJgxHlY3970MHewxHkzUMWzC30EHPW0BkGunPd0=; b=rAhJWuur+N68YnOfPbPRQLsF0iuzXQ58DauBYwyMl2ClSU32u+M+nAdaFPZg52kzFi jmgLam1rUSp7R6+TW3q6wAeR1pRusEb2sBq6t2IabuAhreWr9EHlLDHtS6uvfIQtLbbo ba4mo43dQ/j4355WMKj+ZQtW9Yp6elCWgeRK6d6QpPcDDwG6HeG7tJ0qJl3qSynQfxBV 03d6Lo5QYuCekwOn2El+jt/ArXgmunNM+Ze3/vL0hZ8/L6CwvN6LXMuTz5c9d9WFJ6Iq Rcte/SF0b/QyfpqAdfSf4yVYN/11M28Gx7EzezbnVjnffsk+cD8xDnQEuRlSmHLGt1Fb N21Q== X-Forwarded-Encrypted: i=1; AFNElJ9A4dD6Ste5KGVgIiEvi0plKMQdzyZWn24qVKNV9y7I/XUtC2A0fpOUDfxAZv7IMhmND7FUYg==@debbugs.gnu.org X-Gm-Message-State: AOJu0Yx55cQW2ug1J2WtlBMLvJeWBUQE4sOBgiokkcGYhNbQ6+P7SoAv yRFtwh7ELldSxYFgD9jaYQ9E4krmDyEhlq5+7iyw395H66mmBlQrp6ASZS5rddeYK3xr74LJuFV SsNiRHSPfmWyA9hy8KFXAR8KikkxLb04= X-Gm-Gg: Acq92OEkh0xCriqbuoVMI5IHNOuyV9EWgj3ldWf43gDAkp2vkA+PycnTv1YQBpTOrAw wX3DBetFlmkbpJTj3M6LGwjhz6uOsTy2R0R2mhz5JiMjCXSO7tVwpuPGOzYam2c+froX1xPZ6+d ezkBtr6qORVUlL2wX+CuLax/025AIHJLoTvx3aYFucMeyszK2+mKbxKfTtXM+L035XJB3h9diiP c8IEX6Nb+4zBLlH+OFYCJL4XPrFhZ453WhvXjEdFaVvq3w/9M1tTHeLwIWs7k8jqta3BbTQzw0U i9T7q0y+Ozve25qTh9WUnddBLEFdCQm6iQwvroVmPtZRzJh0MlgW1mD5qRx+ecmOYD+PsgQkez3 15g== X-Received: by 2002:a05:6820:4cc8:b0:694:914f:c18f with SMTP id 006d021491bc7-69e102c9234mr1313077eaf.3.1780134316283; Sat, 30 May 2026 02:45:16 -0700 (PDT) MIME-Version: 1.0 References: <CAJ8YToa+nueew9wQ52xJtD-jXOdcA+Vq+NZEVcd=Q3V66opHSg@HIDDEN> <CAN+1HbpLJqPWufz3mOmAm1Oq=+_a38aMH5FZub5-pn5=C4msSw@HIDDEN> <87pl2dq2a7.fsf@HIDDEN> <87se79pxdd.fsf@HIDDEN> <CAJ8YToZazwzGtP9QU-ijh+VSTiDBW3PAOPCq4S-Xh8YeHAtB1Q@HIDDEN> In-Reply-To: <CAJ8YToZazwzGtP9QU-ijh+VSTiDBW3PAOPCq4S-Xh8YeHAtB1Q@HIDDEN> From: =?UTF-8?B?Sm/Do28gVMOhdm9yYQ==?= <joaotavora@HIDDEN> Date: Sat, 30 May 2026 10:45:04 +0100 X-Gm-Features: AVHnY4I0MdPkoiwk_8L6x6s7mIZr4NDoTeN3QQsq0Cr0nKeqDyYXqOt1eO2pNeI Message-ID: <CALDnm53Z+oOs+=Y0t-gpgreWcC=2=2qRguT=DbVtcx4RFtOSRg@HIDDEN> Subject: Re: bug#81150: 31.0.60; eglot: performance issue with markdown-ts-mode To: Romain Ouabdelkader <romain.ouabdelkader@HIDDEN> Content-Type: multipart/alternative; boundary="000000000000931c23065305d1eb" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 81150 Cc: Rahul Martim Juliato <rahuljuliato@HIDDEN>, =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN>, 81150 <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: 0.0 (/) --000000000000931c23065305d1eb Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Thanks. Can you test without your patch disabling markdown-ts-view-mode somehow (either patch eglot.el or temporarily uninstall a vital grammar) so that Eglot uses markdown.el's gfm-view-mode instead? Do you still get the slow performance? Jo=C3=A3o Jo=C3=A3o T=C3=A1vora On Sat, May 30, 2026, 10:33 Romain Ouabdelkader < romain.ouabdelkader@HIDDEN> wrote: > Hello Jo=C3=A3o, Rahul, > > Just for reference, I tested the provided patch. While better, I still > have a freeze of around 1s. > Attached is another lisp profile with emacs -Q. > > Thank you > > > On Sat, 30 May 2026 at 02:14, Jo=C3=A3o T=C3=A1vora <joaotavora@HIDDEN= > wrote: > >> Rahul Martim Juliato <rahuljuliato@HIDDEN> writes: >> >> > Some extra explanation: the slow part was not on the markdown >> > fontification, that is only a few percent of the time. The cost was >> > paying the whole major-mode setup over and over in a tight >> > loop. Initializing the mode once removes that multiplication and needs >> > no change to markdown-ts-mode, which is fine when it runs once. It als= o >> > helps every server and every markup format, not just this one case. >> >> Thanks Rahul for analyzing this, >> >> However, I have a different view on where this should be fixed, and it's >> very simple IMO. If a given piece of cache that is created and stored >> each time the major-mode-initialization is done is *not* invalidated >> when the whole buffer is erased, then that piece of cache should not be >> per-buffer-major-mode-initialization it should be global, or at least >> done only once for the first ever major-mode initialized with >> markdown-ts-mode, or what am I missing. >> >> To be frank, I prefer to go back to ELPA markdown-mode until this is >> sorted. There is no reason a treesitter major-mode should be slower to >> to parse a buffer from scratch than a mode built entirely in Elisp, or >> demand special care from Elisp programs. So I think this should be >> fixed in markdown-ts-mode's design. >> >> > I considered caching grammar availability in markdown-ts-mode, but >> > decided against it. Availability is runtime state, and a user can >> > install the grammar later during the same Emacs session. Because of >> > that, caching a "not available" result felt wrong. >> >> Is this the expensive part when markdown-ts-mode runs? Then just cache >> the "yes, it's available". >> >> Jo=C3=A3o >> > --000000000000931c23065305d1eb Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"auto"><div>Thanks. Can you test without your patch disabling ma= rkdown-ts-view-mode somehow (either patch eglot.el or temporarily uninstall= a vital grammar) so that Eglot uses markdown.el's gfm-view-mode instea= d? Do you still get the slow performance?=C2=A0</div><div dir=3D"auto"><br>= </div><div dir=3D"auto">Jo=C3=A3o=C2=A0</div><div><br></div><div data-smart= mail=3D"gmail_signature">Jo=C3=A3o T=C3=A1vora</div></div><br><div class=3D= "gmail_quote gmail_quote_container"><div dir=3D"ltr" class=3D"gmail_attr">O= n Sat, May 30, 2026, 10:33 Romain Ouabdelkader <<a href=3D"mailto:romain= .ouabdelkader@HIDDEN">romain.ouabdelkader@HIDDEN</a>> wrote:<br></= div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;bor= der-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr">Hell= o=C2=A0Jo=C3=A3o, Rahul,<div><br></div><div>Just for reference, I tested th= e provided patch. While better, I still have a freeze of around 1s.</div><d= iv>Attached=C2=A0is another lisp profile with emacs -Q.</div><div><br></div= ><div>Thank you</div><div><br></div></div><br><div class=3D"gmail_quote"><d= iv dir=3D"ltr" class=3D"gmail_attr">On Sat, 30 May 2026 at 02:14, Jo=C3=A3o= T=C3=A1vora <<a href=3D"mailto:joaotavora@HIDDEN" target=3D"_blank" = rel=3D"noreferrer">joaotavora@HIDDEN</a>> wrote:<br></div><blockquote= class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px so= lid rgb(204,204,204);padding-left:1ex">Rahul Martim Juliato <<a href=3D"= mailto:rahuljuliato@HIDDEN" target=3D"_blank" rel=3D"noreferrer">rahulju= liato@HIDDEN</a>> writes:<br> <br> > Some extra explanation: the slow part was not on the markdown<br> > fontification, that is only a few percent of the time. The cost was<br= > > paying the whole major-mode setup over and over in a tight<br> > loop. Initializing the mode once removes that multiplication and needs= <br> > no change to markdown-ts-mode, which is fine when it runs once. It als= o<br> > helps every server and every markup format, not just this one case.<br= > <br> Thanks Rahul for analyzing this,<br> <br> However, I have a different view on where this should be fixed, and it'= s<br> very simple IMO.=C2=A0 If a given piece of cache that is created and stored= <br> each time the major-mode-initialization is done is *not* invalidated<br> when the whole buffer is erased, then that piece of cache should not be<br> per-buffer-major-mode-initialization it should be global, or at least<br> done only once for the first ever major-mode initialized with<br> markdown-ts-mode, or what am I missing.<br> <br> To be frank, I prefer to go back to ELPA markdown-mode until this is<br> sorted.=C2=A0 There is no reason a treesitter major-mode should be slower t= o<br> to parse a buffer from scratch than a mode built entirely in Elisp, or<br> demand special care from Elisp programs.=C2=A0 So I think this should be<br= > fixed in markdown-ts-mode's design.<br> <br> > I considered caching grammar availability in markdown-ts-mode, but<br> > decided against it. Availability is runtime state, and a user can<br> > install the grammar later during the same Emacs session. Because of<br= > > that, caching a "not available" result felt wrong.<br> <br> Is this the expensive part when markdown-ts-mode runs?=C2=A0 Then just cach= e<br> the "yes, it's available".<br> <br> Jo=C3=A3o<br> </blockquote></div> </blockquote></div> --000000000000931c23065305d1eb--
bug-gnu-emacs@HIDDEN:bug#81150; Package emacs.
Full text available.Received: (at 81150) by debbugs.gnu.org; 30 May 2026 09:34:12 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat May 30 05:34:11 2026 Received: from localhost ([127.0.0.1]:37668 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wTG4w-0002lz-9Z for submit <at> debbugs.gnu.org; Sat, 30 May 2026 05:34:11 -0400 Received: from mail-lf1-x12d.google.com ([2a00:1450:4864:20::12d]:42103) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <romain.ouabdelkader@HIDDEN>) id 1wTG4m-0002kA-EC for 81150 <at> debbugs.gnu.org; Sat, 30 May 2026 05:33:59 -0400 Received: by mail-lf1-x12d.google.com with SMTP id 2adb3069b0e04-5aa653221d1so166397e87.0 for <81150 <at> debbugs.gnu.org>; Sat, 30 May 2026 02:33:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1780133630; cv=none; d=google.com; s=arc-20240605; b=lv2ygDASE29lS4cv5f2Iq4prizK1NoWgY34NZVYRpZVGGGGIJz0huvTLYvSiaBk+t1 R0z16mk/r3+TIrGjs1Gl+3ddL2LMGswDDG0fdY2DatwZtPLrrIagtTEUDm4X9Q8+rXmo xCyRyQP5gJzp70k8WFoIBkMtTvZJbHz5GFOwHhMxKWhJ4UgGrctZBPIsCE19WefIlNkU RTpKeKhy8wnWobHZFBs1b5xLWTHH3NfjFwp0lLnirlGQGvNhOvEViWFrPvV6IwU9F8p9 IeKsmYhMeWncXVZUrQ2unVlsOPl29i7kKZMABdztPgSTihHkJ3jZq+8nITHSQ7CWTNem e6JA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=nPZXGMqbL4+vJH71DpCtGeex/RvnObmWuxii4hXp8UU=; fh=uPUFl8kOjCEHCERYzHUO1xOE2YHwA3dtbop3kwyJULw=; b=MaLsgfFTWp7tQutnf6q6DlQ6OzfZUVvyGUORrYJj5uZgz9PeCd7necro2Fsr8I2zD7 N8NZq97VW+pG4y3cGq8InpXyXq+xhpYlaFqqPJdoyUbosPdMEduMH82XdGByFaHmnCYx Xr/LnShdfpdCTDzZ2sTgLH0UbOwvIrsR0ZYVlGj4rbeRzo8WHHa9o8l+GCuT311TPlXH o/Jn4awFIjUqrX3M2fAapsLlIg+k5RpT/auZ+0pS9tDtIgMZdmfKvjBq7A5/SGPArjcm ny2J0glMqPimiE98BxkLKK5s7g9xglcA3/BAurhyMM87sFddqY6svXykLOs0tzlStIMP gGgA==; darn=debbugs.gnu.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780133630; x=1780738430; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=nPZXGMqbL4+vJH71DpCtGeex/RvnObmWuxii4hXp8UU=; b=EnFl2RWf8BjhEMk+QomJLL8Hc2nbSP6iInAMlD5RlVRfatm+nO0eK3iCQESI1tSbpx RSN7B2AmUUXH1DeZrcmQhWnsWbZoj+ZFP1RanVVKZ6w4yGzvZ0lZDAaCiokHLaIwpPDw AIAkWIqf1rKtK0hgaRR3+mhKe64z6ZVGQPv8z0stIgsLXZ++Ux/nTVqbd6kLtx8Z5s3i xkeT8f5WlT7dt29u4yBZGq1PoPAVLj70dAxCE9YlNCV7MgVVWIjZmAj2FF86p2ylV9bT QWChEKIRtc+LCJ39QoX7LxOiL0Km80NMRSQwpWhmz4JAr7wfJ1BFeiHwzPEsu8M/2bvK x0zw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780133630; x=1780738430; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=nPZXGMqbL4+vJH71DpCtGeex/RvnObmWuxii4hXp8UU=; b=CP0hxNV+yjRBBvcM7/1fhfI2UxF2U8+x7XKXutUe7gWVp0geNShhpjJlbgSKpM2c/3 7B3Fqpnn9Tl2GpsXuh2vHDBgB2aMpaEN6XU3Xtj1xAzx2aX2LyhFjqrv4bJE7pZDgB/s XGoeu5SEQ1fPJe/YIGSVJCXG/LCwRW141UTrVkXfol9G72bZlKrXKoauoF5B/Fn00ZkN 01Xn+7zMgrdfvgDyVoxn8C6smzHgQ5gjiiavvTLGHl5JDff1i+EETaYqTBHBhCRRI8fL PmYDb0SXBLokkPeHjbZ1EucmpS07dW+BF+dzyDp68pfAixflbZoJz0vsLF8cCUkL7eIP UINA== X-Forwarded-Encrypted: i=1; AFNElJ/B5HAuPML/fAYSs8Lvcnj7w4RHPBhUhFqiMd+dbwVUrhioDL3Y6/rxvtg69QBBbYHqIGjP9g==@debbugs.gnu.org X-Gm-Message-State: AOJu0YwxmQ0Gaebj7BkAZ02jChwFspBtwXg96vcfmwvtd/4Z2BVApUMq 5b56jBG+40CSUvKZZk/TvUmxmUkXhnWXpfB8vgyhkNOUkjxa2AZDihBTMBGBn2KoSsYktGYeZ3o FetN6IIApvbUrjDDB9LB8mODQsD0eo84= X-Gm-Gg: Acq92OGJzTCEP/tSb0ABWQ91YJK1lc9FQ4iRj9osjAMWAF6R0hcruP03SBsHFSfTBXr 5Zz3LbalUK4FNGCwukqhraG7WPJSfiexMD9Ps+ezNa+EyDSNIVODIxnaQq1dy2MeEDnrLmewluV 4VqNy4+GziX2eNIUV/nZphSJ2ZkaNBo0dh458UIr1iH5tRsAGa2cU2Olyl3h8hPBOtZyqJbJoEu 8WIsRsf8g8vo1sBBOIbAOjhqkSyMn5BnerpBn6W8GzlKIFtPOk73+wkEpKtn1+OZcmc7XMZh9kp m8zYDFwRWGllOk0XbJ4MwgnPLLlHGXfipnZvxnH0WyfhQWVaU6b7m/vSxtPZ X-Received: by 2002:a05:6512:3d8a:b0:5a8:7d71:e63 with SMTP id 2adb3069b0e04-5aa58ffccecmr1676554e87.13.1780133630215; Sat, 30 May 2026 02:33:50 -0700 (PDT) MIME-Version: 1.0 References: <CAJ8YToa+nueew9wQ52xJtD-jXOdcA+Vq+NZEVcd=Q3V66opHSg@HIDDEN> <CAN+1HbpLJqPWufz3mOmAm1Oq=+_a38aMH5FZub5-pn5=C4msSw@HIDDEN> <87pl2dq2a7.fsf@HIDDEN> <87se79pxdd.fsf@HIDDEN> In-Reply-To: <87se79pxdd.fsf@HIDDEN> From: Romain Ouabdelkader <romain.ouabdelkader@HIDDEN> Date: Sat, 30 May 2026 11:33:12 +0200 X-Gm-Features: AVHnY4KaiKhXdovKBvqsWHNjrpwU0RKm_WPQoQNkDU42lF3VGqPN9FAj8dCYRbE Message-ID: <CAJ8YToZazwzGtP9QU-ijh+VSTiDBW3PAOPCq4S-Xh8YeHAtB1Q@HIDDEN> Subject: Re: bug#81150: 31.0.60; eglot: performance issue with markdown-ts-mode To: =?UTF-8?B?Sm/Do28gVMOhdm9yYQ==?= <joaotavora@HIDDEN> Content-Type: multipart/mixed; boundary="000000000000ae9f63065305a85f" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 81150 Cc: Rahul Martim Juliato <rahuljuliato@HIDDEN>, =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN>, 81150 <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: 0.0 (/) --000000000000ae9f63065305a85f Content-Type: multipart/alternative; boundary="000000000000ae9f61065305a85d" --000000000000ae9f61065305a85d Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hello Jo=C3=A3o, Rahul, Just for reference, I tested the provided patch. While better, I still have a freeze of around 1s. Attached is another lisp profile with emacs -Q. Thank you On Sat, 30 May 2026 at 02:14, Jo=C3=A3o T=C3=A1vora <joaotavora@HIDDEN> = wrote: > Rahul Martim Juliato <rahuljuliato@HIDDEN> writes: > > > Some extra explanation: the slow part was not on the markdown > > fontification, that is only a few percent of the time. The cost was > > paying the whole major-mode setup over and over in a tight > > loop. Initializing the mode once removes that multiplication and needs > > no change to markdown-ts-mode, which is fine when it runs once. It also > > helps every server and every markup format, not just this one case. > > Thanks Rahul for analyzing this, > > However, I have a different view on where this should be fixed, and it's > very simple IMO. If a given piece of cache that is created and stored > each time the major-mode-initialization is done is *not* invalidated > when the whole buffer is erased, then that piece of cache should not be > per-buffer-major-mode-initialization it should be global, or at least > done only once for the first ever major-mode initialized with > markdown-ts-mode, or what am I missing. > > To be frank, I prefer to go back to ELPA markdown-mode until this is > sorted. There is no reason a treesitter major-mode should be slower to > to parse a buffer from scratch than a mode built entirely in Elisp, or > demand special care from Elisp programs. So I think this should be > fixed in markdown-ts-mode's design. > > > I considered caching grammar availability in markdown-ts-mode, but > > decided against it. Availability is runtime state, and a user can > > install the grammar later during the same Emacs session. Because of > > that, caching a "not available" result felt wrong. > > Is this the expensive part when markdown-ts-mode runs? Then just cache > the "yes, it's available". > > Jo=C3=A3o > --000000000000ae9f61065305a85d Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr">Hello=C2=A0Jo=C3=A3o, Rahul,<div><br></div><div>Just for r= eference, I tested the provided patch. While better, I still have a freeze = of around 1s.</div><div>Attached=C2=A0is another lisp profile with emacs -Q= .</div><div><br></div><div>Thank you</div><div><br></div></div><br><div cla= ss=3D"gmail_quote gmail_quote_container"><div dir=3D"ltr" class=3D"gmail_at= tr">On Sat, 30 May 2026 at 02:14, Jo=C3=A3o T=C3=A1vora <<a href=3D"mail= to:joaotavora@HIDDEN">joaotavora@HIDDEN</a>> wrote:<br></div><bloc= kquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:= 1px solid rgb(204,204,204);padding-left:1ex">Rahul Martim Juliato <<a hr= ef=3D"mailto:rahuljuliato@HIDDEN" target=3D"_blank">rahuljuliato@HIDDEN= om</a>> writes:<br> <br> > Some extra explanation: the slow part was not on the markdown<br> > fontification, that is only a few percent of the time. The cost was<br= > > paying the whole major-mode setup over and over in a tight<br> > loop. Initializing the mode once removes that multiplication and needs= <br> > no change to markdown-ts-mode, which is fine when it runs once. It als= o<br> > helps every server and every markup format, not just this one case.<br= > <br> Thanks Rahul for analyzing this,<br> <br> However, I have a different view on where this should be fixed, and it'= s<br> very simple IMO.=C2=A0 If a given piece of cache that is created and stored= <br> each time the major-mode-initialization is done is *not* invalidated<br> when the whole buffer is erased, then that piece of cache should not be<br> per-buffer-major-mode-initialization it should be global, or at least<br> done only once for the first ever major-mode initialized with<br> markdown-ts-mode, or what am I missing.<br> <br> To be frank, I prefer to go back to ELPA markdown-mode until this is<br> sorted.=C2=A0 There is no reason a treesitter major-mode should be slower t= o<br> to parse a buffer from scratch than a mode built entirely in Elisp, or<br> demand special care from Elisp programs.=C2=A0 So I think this should be<br= > fixed in markdown-ts-mode's design.<br> <br> > I considered caching grammar availability in markdown-ts-mode, but<br> > decided against it. Availability is runtime state, and a user can<br> > install the grammar later during the same Emacs session. Because of<br= > > that, caching a "not available" result felt wrong.<br> <br> Is this the expensive part when markdown-ts-mode runs?=C2=A0 Then just cach= e<br> the "yes, it's available".<br> <br> Jo=C3=A3o<br> </blockquote></div> --000000000000ae9f61065305a85d-- --000000000000ae9f63065305a85f Content-Type: text/plain; charset="US-ASCII"; name="patched_bench_emacsQ.txt" Content-Disposition: attachment; filename="patched_bench_emacsQ.txt" Content-Transfer-Encoding: base64 Content-ID: <f_mps5jw1w0> X-Attachment-Id: f_mps5jw1w0 ICAgICAgICA0OTE1ICA4NSUgLSB0aW1lci1ldmVudC1oYW5kbGVyCiAgICAgICAgNDkxNCAgODUl ICAtIGFwcGx5CiAgICAgICAgNDg4MyAgODUlICAgLSAjPGJ5dGUtY29kZS1mdW5jdGlvbiBCODQ+ CiAgICAgICAgNDg4MiAgODUlICAgIC0ganNvbnJwYy1jb25uZWN0aW9uLXJlY2VpdmUKICAgICAg ICA0ODU1ICA4NCUgICAgIC0ganNvbnJwYy0tY29udGludWUKICAgICAgICA0ODU1ICA4NCUgICAg ICAtICM8Ynl0ZS1jb2RlLWZ1bmN0aW9uIDYwNT4KICAgICAgICA0ODU1ICA4NCUgICAgICAgLSBh cHBseQogICAgICAgIDQ4NTUgIDg0JSAgICAgICAgLSAjPGJ5dGUtY29kZS1mdW5jdGlvbiA2MkQ+ CiAgICAgICAgNDc5NCAgODMlICAgICAgICAgLSBtYXBjb25jYXQKICAgICAgICA0NzgzICA4MyUg ICAgICAgICAgLSAjPGJ5dGUtY29kZS1mdW5jdGlvbiBEMTI+CiAgICAgICAgNDc4MyAgODMlICAg ICAgICAgICAtIGVnbG90LS1zaWctaW5mbwogICAgICAgIDQ3MzggIDgyJSAgICAgICAgICAgIC0g ZWdsb3QtLWZvcm1hdC1tYXJrdXAKICAgICAgICA0NzM4ICA4MiUgICAgICAgICAgICAgLSBsZXQq CiAgICAgICAgNDczOCAgODIlICAgICAgICAgICAgICAtIHByb2duCiAgICAgICAgNDczNyAgODIl ICAgICAgICAgICAgICAgLSBsZXQqCiAgICAgICAgNDczNCAgODIlICAgICAgICAgICAgICAgIC0g cHJvZ24KICAgICAgICA0NzMxICA4MiUgICAgICAgICAgICAgICAgIC0gc2F2ZS1jdXJyZW50LWJ1 ZmZlcgogICAgICAgIDQ3MzEgIDgyJSAgICAgICAgICAgICAgICAgIC0gbGV0CiAgICAgICAgMjc4 MCAgNDglICAgICAgICAgICAgICAgICAgIC0gZm9udC1sb2NrLWVuc3VyZQogICAgICAgIDI3Nzkg IDQ4JSAgICAgICAgICAgICAgICAgICAgLSAjPGJ5dGUtY29kZS1mdW5jdGlvbiAzODE+CiAgICAg ICAgMjc3OSAgNDglICAgICAgICAgICAgICAgICAgICAgLSBmb250LWxvY2stZm9udGlmeS1yZWdp b24KICAgICAgICAyNzc5ICA0OCUgICAgICAgICAgICAgICAgICAgICAgLSBmb250LWxvY2stZGVm YXVsdC1mb250aWZ5LXJlZ2lvbgogICAgICAgIDI3NzkgIDQ4JSAgICAgICAgICAgICAgICAgICAg ICAgLSBmb250LWxvY2stZm9udGlmeS1zeW50YWN0aWNhbGx5LXJlZ2lvbgogICAgICAgIDI3Nzkg IDQ4JSAgICAgICAgICAgICAgICAgICAgICAgIC0gdHJlZXNpdC1mb250LWxvY2stZm9udGlmeS1y ZWdpb24KICAgICAgICAyNjE4ICA0NSUgICAgICAgICAgICAgICAgICAgICAgICAgLSB0cmVlc2l0 LXVwZGF0ZS1yYW5nZXMKICAgICAgICAyNjE4ICA0NSUgICAgICAgICAgICAgICAgICAgICAgICAg IC0gdHJlZXNpdC0tdXBkYXRlLXJhbmdlLTEKICAgICAgICAyMzUzICA0MSUgICAgICAgICAgICAg ICAgICAgICAgICAgICAtIHRyZWVzaXQtLXVwZGF0ZS1yYW5nZXMtbG9jYWwKICAgICAgICAxOTU3 ICAzNCUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmVlc2l0LXBhcnNlci1jcmVhdGUK ICAgICAgICAgMzk1ICAgNiUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmVlc2l0LXF1 ZXJ5LXJhbmdlCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dHJlZXNpdC1xdWVyeS1yYW5nZS1ieS1sYW5ndWFnZQogICAgICAgICAyNjUgICA0JSAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0gdHJlZXNpdC0tdXBkYXRlLXJhbmdlcy1ub24tbG9jYWwKICAg ICAgICAgMjU5ICAgNCUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmVlc2l0LXF1ZXJ5 LXJhbmdlCiAgICAgICAgICAgNSAgIDAlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJl ZXNpdC1wYXJzZXItbGlzdAogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRyZWVzaXQtcGFyc2VyLWluY2x1ZGVkLXJhbmdlcwogICAgICAgICAxNTEgICAyJSAg ICAgICAgICAgICAgICAgICAgICAgICAtIHRyZWVzaXQtLWZvbnQtbG9jay1mb250aWZ5LXJlZ2lv bi0xCiAgICAgICAgICAzNyAgIDAlICAgICAgICAgICAgICAgICAgICAgICAgICAtIG1hcmtkb3du LXRzLS1mb250aWZ5LWVudGl0eQogICAgICAgICAgMTYgICAwJSAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0gbWFya2Rvd24tdHMtLWRlY29kZS1lbnRpdHkKICAgICAgICAgICA5ICAgMCUgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLSBvcmctZW50aXR5LWdldAogICAgICAgICAgIDkgICAw JSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NvYwogICAgICAgICAgIDYgICAwJSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoLXN0cmluZwogICAgICAgICAgMTAgICAw JSAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gdHJlZXNpdC1ub2RlLXRleHQKICAgICAgICAg ICAxICAgMCUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmVlc2l0LW5vZGUtYnVmZmVy CiAgICAgICAgICAgNSAgIDAlICAgICAgICAgICAgICAgICAgICAgICAgICAgLSB0cmVlc2l0LWZv bnRpZnktd2l0aC1vdmVycmlkZQogICAgICAgICAgIDUgICAwJSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAtIGZvbnQtbG9jay1hcHBlbmQtdGV4dC1wcm9wZXJ0eQogICAgICAgICAgIDQgICAw JSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWxvY2stLWFkZC10ZXh0LXByb3Bl cnR5CiAgICAgICAgICAgNyAgIDAlICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtkb3du LXRzLS1mb250aWZ5LWJhY2tzbGFzaC1lc2NhcGUKICAgICAgICAgICA3ICAgMCUgICAgICAgICAg ICAgICAgICAgICAgICAgIC0gbWFya2Rvd24tdHMtLWZvbnRpZnktZGVsaW1pdGVyCiAgICAgICAg ICAgNSAgIDAlICAgICAgICAgICAgICAgICAgICAgICAgICAgLSB0cmVlc2l0LWZvbnRpZnktd2l0 aC1vdmVycmlkZQogICAgICAgICAgIDUgICAwJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAt IGZvbnQtbG9jay1wcmVwZW5kLXRleHQtcHJvcGVydHkKICAgICAgICAgICA1ICAgMCUgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1sb2NrLS1hZGQtdGV4dC1wcm9wZXJ0eQogICAg ICAgICAgIDQgICAwJSAgICAgICAgICAgICAgICAgICAgICAgICAgLSBtYXJrZG93bi10cy0tZm9u dGlmeS1oYXJkLWxpbmUtYnJlYWsKICAgICAgICAgICAyICAgMCUgICAgICAgICAgICAgICAgICAg ICAgICAgICAtIHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJyaWRlCiAgICAgICAgICAgMiAgIDAl ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gZm9udC1sb2NrLWFwcGVuZC10ZXh0LXByb3Bl cnR5CiAgICAgICAgICAgMiAgIDAlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQt bG9jay0tYWRkLXRleHQtcHJvcGVydHkKICAgICAgICAgICA0ICAgMCUgICAgICAgICAgICAgICAg ICAgICAgICAgIC0gdHJlZXNpdC1mb250aWZ5LXdpdGgtb3ZlcnJpZGUKICAgICAgICAgICA0ICAg MCUgICAgICAgICAgICAgICAgICAgICAgICAgICAtIGZvbnQtbG9jay1wcmVwZW5kLXRleHQtcHJv cGVydHkKICAgICAgICAgICA0ICAgMCUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250 LWxvY2stLWFkZC10ZXh0LXByb3BlcnR5CiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAg ICAgICAgICAgICAtIG1hcmtkb3duLXRzLS1mb250aWZ5LXVub3JkZXJlZC1saXN0LW1hcmtlcgog ICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2Rvd24tdHMt LWxpc3QtaXRlbS1kZXB0aAogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgICAgICAgICAg ICAgICBtYXJrZG93bi10cy0tZm9udGlmeS1saW5rLW5vZGUKICAgICAgICAgICAxICAgMCUgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZmFjZXAKICAgICAgICAgICAyICAgMCUgICAgICAgICAg ICAgICAgICAgICAgICAgICB0cmVlc2l0LXBhcnNlci1yb290LW5vZGUKICAgICAgICAgICAxICAg MCUgICAgICAgICAgICAgICAgICAgICAgICAgLSBjbC1yZW1vdmUtaWYtbm90CiAgICAgICAgICAg MSAgIDAlICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsLXJlbW92ZQogICAgICAgICAgIDEg ICAwJSAgICAgICAgICAgICAgICAgICAgLSBmb250LWxvY2stc2V0LWRlZmF1bHRzCiAgICAgICAg ICAgMSAgIDAlICAgICAgICAgICAgICAgICAgICAgICBkZXJpdmVkLW1vZGUtcAogICAgICAgICA5 ODMgIDE3JSAgICAgICAgICAgICAgICAgICAtIGluc2VydAogICAgICAgICAgIDQgICAwJSAgICAg ICAgICAgICAgICAgICAgLSBqaXQtbG9jay1hZnRlci1jaGFuZ2UKICAgICAgICAgICAxICAgMCUg ICAgICAgICAgICAgICAgICAgICAgICM8Ynl0ZS1jb2RlLWZ1bmN0aW9uIDZCOD4KICAgICAgICAg OTQ5ICAxNiUgICAgICAgICAgICAgICAgICAgICBlcmFzZS1idWZmZXIKICAgICAgICAgIDE5ICAg MCUgICAgICAgICAgICAgICAgICAgLSBzdHJpbmctdHJpbQogICAgICAgICAgMTUgICAwJSAgICAg ICAgICAgICAgICAgICAgLSBmdW5jYWxsCiAgICAgICAgICAxNSAgIDAlICAgICAgICAgICAgICAg ICAgICAgICBidWZmZXItc3RyaW5nCiAgICAgICAgICAgMyAgIDAlICAgICAgICAgICAgICAgICAt IGNvbmQKICAgICAgICAgICAzICAgMCUgICAgICAgICAgICAgICAgICAtIGZ1bmNhbGwKICAgICAg ICAgICAxICAgMCUgICAgICAgICAgICAgICAgICAgLSAjPGludGVycHJldGVkLWZ1bmN0aW9uIDY3 Mz4KICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgICAgICAgIC0gbGV0KgogICAgICAgICAg IDEgICAwJSAgICAgICAgICAgICAgICAgICAgIC0gZnVuY2FsbAogICAgICAgICAgIDEgICAwJSAg ICAgICAgICAgICAgICAgICAgICAtICM8aW50ZXJwcmV0ZWQtZnVuY3Rpb24gNjUxPgogICAgICAg ICAgIDEgICAwJSAgICAgICAgICAgICAgICAgICAgICAgLSBjb25kCiAgICAgICAgICAgMSAgIDAl ICAgICAgICAgICAgICAgICAgICAgICAgICBlZ2xvdC0tYnVpbHRpbi1tZG93bi1wCiAgICAgICAg ICAgMSAgIDAlICAgICAgICAgICAgICAgICAgIC0gIzxpbnRlcnByZXRlZC1mdW5jdGlvbiBFM0E+ CiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAgICAgICAtIGxldCoKICAgICAgICAgICAx ICAgMCUgICAgICAgICAgICAgICAgICAgICAtIGZ1bmNhbGwKICAgICAgICAgICAxICAgMCUgICAg ICAgICAgICAgICAgICAgICAgLSAjPGludGVycHJldGVkLWZ1bmN0aW9uIDYyQj4KICAgICAgICAg ICAxICAgMCUgICAgICAgICAgICAgICAgICAgICAgIC0gY29uZAogICAgICAgICAgIDEgICAwJSAg ICAgICAgICAgICAgICAgICAgICAgICAgZWdsb3QtLWJ1aWx0aW4tbWRvd24tcAogICAgICAgICAg IDEgICAwJSAgICAgICAgICAgICAgICAgICAtICM8aW50ZXJwcmV0ZWQtZnVuY3Rpb24gRDM1Pgog ICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgICAgICAgLSBsZXQqCiAgICAgICAgICAgMSAg IDAlICAgICAgICAgICAgICAgICAgICAgLSBmdW5jYWxsCiAgICAgICAgICAgMSAgIDAlICAgICAg ICAgICAgICAgICAgICAgIC0gIzxpbnRlcnByZXRlZC1mdW5jdGlvbiA1OTk+CiAgICAgICAgICAg MSAgIDAlICAgICAgICAgICAgICAgICAgICAgICAtIGNvbmQKICAgICAgICAgICAxICAgMCUgICAg ICAgICAgICAgICAgICAgICAgICAgIGVnbG90LS1idWlsdGluLW1kb3duLXAKICAgICAgICAgICAz ICAgMCUgICAgICAgICAgICAgICAgLSBmdW5jdGlvbgogICAgICAgICAgIDMgICAwJSAgICAgICAg ICAgICAgICAgLSBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUKICAgICAgICAgICAyICAg MCUgICAgICAgICAgICAgICAgICAtIG1hY3JvZXhwYW5kLWFsbAogICAgICAgICAgIDEgICAwJSAg ICAgICAgICAgICAgICAgICAtIG1hY3JvZXhwLS1leHBhbmQtYWxsCiAgICAgICAgICAgMSAgIDAl ICAgICAgICAgICAgICAgICAgICAtIG1hY3JvZXhwLS1hbGwtZm9ybXMKICAgICAgICAgICAxICAg MCUgICAgICAgICAgICAgICAgICAgICAtIG1hY3JvZXhwLS1leHBhbmQtYWxsCiAgICAgICAgICAg MSAgIDAlICAgICAgICAgICAgICAgICAgICAgIC0gbWFjcm9leHAtLWFsbC1mb3JtcwogICAgICAg ICAgIDEgICAwJSAgICAgICAgICAgICAgICAgICAgICAgLSBtYWNyb2V4cC0tZXhwYW5kLWFsbAog ICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgICAgICAgICAgIC0gbWFjcm9leHAtLWFsbC1m b3JtcwogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgICAgICAgICAgICAtIG1hY3JvZXhw LS1leHBhbmQtYWxsCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAgICAgICAgICAgICAt IG1hY3JvZXhwLS1leHBhbmQtYWxsCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBtYWNyb2V4cC0tYWxsLWZvcm1zCiAgICAgICAgICAgMSAgIDAlICAgICAgICAg ICAgICAgICAgLSBjY29udi1mdgogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgICAgICAt IGNjb252LWFuYWx5emUtZm9ybQogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgICAgICAg LSBjY29udi0tYW5hbHl6ZS1mdW5jdGlvbgogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAg ICAgICAgICAgIzxuYXRpdmUtY29tcC1mdW5jdGlvbiBGNjE2ZTZmNmU3OTZkNmY3NTczMmQ2YzYx NmQ2MjY0NjFfYW5vbnltb3VzX2xhbWJkYV8yND4KICAgICAgICAgIDI2ICAgMCUgICAgICAgICAg ICAtIHJlcGxhY2UtcmVnZXhwLWluLXN0cmluZwogICAgICAgICAgIDkgICAwJSAgICAgICAgICAg ICAgIGNvbmNhdAogICAgICAgICAgNjEgICAxJSAgICAgICAgIC0gIzxieXRlLWNvZGUtZnVuY3Rp b24gNjMwPgogICAgICAgICAgNjEgICAxJSAgICAgICAgICAtICM8Ynl0ZS1jb2RlLWZ1bmN0aW9u IDdGNT4KICAgICAgICAgIDYxICAgMSUgICAgICAgICAgIC0gcnVuLWhvb2std2l0aC1hcmdzCiAg ICAgICAgICA1OSAgIDElICAgICAgICAgICAgLSBlbGRvYy1kaXNwbGF5LWluLWVjaG8tYXJlYQog ICAgICAgICAgNTggICAxJSAgICAgICAgICAgICAtIGVsZG9jLS1tZXNzYWdlCiAgICAgICAgICA1 OCAgIDElICAgICAgICAgICAgICAtIGVsZG9jLW1pbmlidWZmZXItbWVzc2FnZQogICAgICAgICAg NTggICAxJSAgICAgICAgICAgICAgIC0gbWVzc2FnZQogICAgICAgICAgNDkgICAwJSAgICAgICAg ICAgICAgICAtIHJlZGlzcGxheV9pbnRlcm5hbCAoQyBmdW5jdGlvbikKICAgICAgICAgICAxICAg MCUgICAgICAgICAgICAgICAgIC0gZnVuY2FsbAogICAgICAgICAgIDEgICAwJSAgICAgICAgICAg ICAgICAgIC0gIzxieXRlLWNvZGUtZnVuY3Rpb24gRDZCPgogICAgICAgICAgIDEgICAwJSAgICAg ICAgICAgICAgICAgICAtIGd1aS1iYWNrZW5kLXNlbGVjdGlvbi1leGlzdHMtcAogICAgICAgICAg IDEgICAwJSAgICAgICAgICAgICAgICAgICAgLSBhcHBseQogICAgICAgICAgIDEgICAwJSAgICAg ICAgICAgICAgICAgICAgIC0gIzxieXRlLWNvZGUtZnVuY3Rpb24gQUI1PgogICAgICAgICAgIDEg ICAwJSAgICAgICAgICAgICAgICAgICAgICAgIG5zLXNlbGVjdGlvbi1leGlzdHMtcAogICAgICAg ICAgIDEgICAwJSAgICAgICAgICAgICAgIGZyYW1lLWhlaWdodAogICAgICAgICAgIDIgICAwJSAg ICAgICAgICAgIC0gZWxkb2MtZGlzcGxheS1pbi1idWZmZXIKICAgICAgICAgICAyICAgMCUgICAg ICAgICAgICAgICBlbGRvYy0tZm9ybWF0LWRvYy1idWZmZXIKICAgICAgICAgIDI3ICAgMCUgICAg IC0gYXBwbHkKICAgICAgICAgIDI3ICAgMCUgICAgICAtIGpzb25ycGMtLWV2ZW50CiAgICAgICAg ICAyNyAgIDAlICAgICAgIC0gIzxieXRlLWNvZGUtZnVuY3Rpb24gMkZBPgogICAgICAgICAgMjcg ICAwJSAgICAgICAgLSBhcHBseQogICAgICAgICAgMjcgICAwJSAgICAgICAgIC0ganNvbnJwYy0t bG9nLWV2ZW50CiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAganNvbnJwYy0tbGltaXQtYnVm ZmVyLXNpemUKICAgICAgICAgICAxICAgMCUgICAgICBnZW5lcmF0ZS1uZXctYnVmZmVyCiAgICAg ICAgICAyOCAgIDAlICAgLSBlbGRvYy0tdXBkYXRlCiAgICAgICAgICAyOCAgIDAlICAgIC0gZWxk b2MtcHJpbnQtY3VycmVudC1zeW1ib2wtaW5mbwogICAgICAgICAgMjggICAwJSAgICAgLSBlbGRv Yy0taW52b2tlLXN0cmF0ZWd5CiAgICAgICAgICAyOCAgIDAlICAgICAgLSBlbGRvYy1kb2N1bWVu dGF0aW9uLWNvbXBvc2UKICAgICAgICAgIDEzICAgMCUgICAgICAgLSBlZ2xvdC1jb2RlLWFjdGlv bi1zdWdnZXN0aW9uCiAgICAgICAgICAxMiAgIDAlICAgICAgICAtIGVnbG90LS1hc3luYy1yZXF1 ZXN0CiAgICAgICAgICAxMSAgIDAlICAgICAgICAgLSBqc29ucnBjLWFzeW5jLXJlcXVlc3QKICAg ICAgICAgIDExICAgMCUgICAgICAgICAgLSBqc29ucnBjLS1hc3luYy1yZXF1ZXN0LTEKICAgICAg ICAgIDEwICAgMCUgICAgICAgICAgIC0gYXBwbHkKICAgICAgICAgIDEwICAgMCUgICAgICAgICAg ICAtIGpzb25ycGMtY29ubmVjdGlvbi1zZW5kCiAgICAgICAgICAxMCAgIDAlICAgICAgICAgICAg IC0gYXBwbHkKICAgICAgICAgIDEwICAgMCUgICAgICAgICAgICAgIC0gIzxieXRlLWNvZGUtZnVu Y3Rpb24gMEFCPgogICAgICAgICAgIDkgICAwJSAgICAgICAgICAgICAgICAgcHJvY2Vzcy1zZW5k LXN0cmluZwogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgICAganNvbnJwYy1jb252ZXJ0 LXRvLWVuZHBvaW50CiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAtICM8Ynl0ZS1jb2RlLWZ1 bmN0aW9uIDk1Mz4KICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAtIHJ1bi13aXRoLXRpbWVy CiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgIC0gcnVuLWF0LXRpbWUKICAgICAgICAgICAx ICAgMCUgICAgICAgICAgICAgICAgdGltZXItcmVsYXRpdmUtdGltZQogICAgICAgICAgIDEgICAw JSAgICAgICAgICAgZWdsb3QtLWNhbmNlbC1pbmZsaWdodC1hc3luYy1yZXF1ZXN0cwogICAgICAg ICAgIDEgICAwJSAgICAgICAgLSBlZ2xvdC0tY29kZS1hY3Rpb24tcGFyYW1zCiAgICAgICAgICAg MSAgIDAlICAgICAgICAgLSBlZ2xvdC1yZWdpb24tcmFuZ2UKICAgICAgICAgICAxICAgMCUgICAg ICAgICAgLSBlZ2xvdC0tcG9zLXRvLWxzcC1wb3NpdGlvbgogICAgICAgICAgIDEgICAwJSAgICAg ICAgICAgICBlZ2xvdC11dGYtMTYtbGluZXBvcwogICAgICAgICAgIDcgICAwJSAgICAgICAtIGVn bG90LWhpZ2hsaWdodC1lbGRvYy1mdW5jdGlvbgogICAgICAgICAgIDcgICAwJSAgICAgICAgLSBl Z2xvdC0tYXN5bmMtcmVxdWVzdAogICAgICAgICAgIDcgICAwJSAgICAgICAgIC0ganNvbnJwYy1h c3luYy1yZXF1ZXN0CiAgICAgICAgICAgNyAgIDAlICAgICAgICAgIC0ganNvbnJwYy0tYXN5bmMt cmVxdWVzdC0xCiAgICAgICAgICAgNyAgIDAlICAgICAgICAgICAtIGFwcGx5CiAgICAgICAgICAg NyAgIDAlICAgICAgICAgICAgLSBqc29ucnBjLWNvbm5lY3Rpb24tc2VuZAogICAgICAgICAgIDcg ICAwJSAgICAgICAgICAgICAtIGFwcGx5CiAgICAgICAgICAgNyAgIDAlICAgICAgICAgICAgICAt ICM8Ynl0ZS1jb2RlLWZ1bmN0aW9uIDBBQj4KICAgICAgICAgICA3ICAgMCUgICAgICAgICAgICAg ICAgIHByb2Nlc3Mtc2VuZC1zdHJpbmcKICAgICAgICAgICA1ICAgMCUgICAgICAgLSBlZ2xvdC1o b3Zlci1lbGRvYy1mdW5jdGlvbgogICAgICAgICAgIDUgICAwJSAgICAgICAgLSBlZ2xvdC0tYXN5 bmMtcmVxdWVzdAogICAgICAgICAgIDUgICAwJSAgICAgICAgIC0ganNvbnJwYy1hc3luYy1yZXF1 ZXN0CiAgICAgICAgICAgNSAgIDAlICAgICAgICAgIC0ganNvbnJwYy0tYXN5bmMtcmVxdWVzdC0x CiAgICAgICAgICAgNSAgIDAlICAgICAgICAgICAtIGFwcGx5CiAgICAgICAgICAgNSAgIDAlICAg ICAgICAgICAgLSBqc29ucnBjLWNvbm5lY3Rpb24tc2VuZAogICAgICAgICAgIDUgICAwJSAgICAg ICAgICAgICAtIGFwcGx5CiAgICAgICAgICAgNSAgIDAlICAgICAgICAgICAgICAtICM8Ynl0ZS1j b2RlLWZ1bmN0aW9uIDBBQj4KICAgICAgICAgICA1ICAgMCUgICAgICAgICAgICAgICAgIHByb2Nl c3Mtc2VuZC1zdHJpbmcKICAgICAgICAgICAzICAgMCUgICAgICAgLSBlZ2xvdC1zaWduYXR1cmUt ZWxkb2MtZnVuY3Rpb24KICAgICAgICAgICAzICAgMCUgICAgICAgIC0gZWdsb3QtLWFzeW5jLXJl cXVlc3QKICAgICAgICAgICAzICAgMCUgICAgICAgICAtIGpzb25ycGMtYXN5bmMtcmVxdWVzdAog ICAgICAgICAgIDMgICAwJSAgICAgICAgICAtIGpzb25ycGMtLWFzeW5jLXJlcXVlc3QtMQogICAg ICAgICAgIDMgICAwJSAgICAgICAgICAgLSBhcHBseQogICAgICAgICAgIDMgICAwJSAgICAgICAg ICAgIC0ganNvbnJwYy1jb25uZWN0aW9uLXNlbmQKICAgICAgICAgICAzICAgMCUgICAgICAgICAg ICAgLSBhcHBseQogICAgICAgICAgIDMgICAwJSAgICAgICAgICAgICAgLSAjPGJ5dGUtY29kZS1m dW5jdGlvbiAwQUI+CiAgICAgICAgICAgMyAgIDAlICAgICAgICAgICAgICAgICBwcm9jZXNzLXNl bmQtc3RyaW5nCiAgICAgICAgICAgMiAgIDAlICAgLSAjPGJ5dGUtY29kZS1mdW5jdGlvbiAyQTE+ CiAgICAgICAgICAgMiAgIDAlICAgIC0gZWdsb3QtLXNpZ25hbC10ZXh0RG9jdW1lbnQvZGlkQ2hh bmdlCiAgICAgICAgICAgMiAgIDAlICAgICAtIGpzb25ycGMtbm90aWZ5CiAgICAgICAgICAgMiAg IDAlICAgICAgLSBqc29ucnBjLWNvbm5lY3Rpb24tc2VuZAogICAgICAgICAgIDIgICAwJSAgICAg ICAtIGFwcGx5CiAgICAgICAgICAgMiAgIDAlICAgICAgICAtICM8Ynl0ZS1jb2RlLWZ1bmN0aW9u IDBBQj4KICAgICAgICAgICAyICAgMCUgICAgICAgICAgIHByb2Nlc3Mtc2VuZC1zdHJpbmcKICAg ICAgICAgICAxICAgMCUgICAtIHNob3ctcGFyZW4tZnVuY3Rpb24KICAgICAgICAgICAxICAgMCUg ICAgLSBzaG93LXBhcmVuLS1kZWZhdWx0CiAgICAgICAgICAgMSAgIDAlICAgICAtIHNob3ctcGFy ZW4tLWxvY2F0ZS1uZWFyLXBhcmVuCiAgICAgICAgICAgMSAgIDAlICAgICAgLSBzaG93LXBhcmVu LS1jYXRlZ29yaXplLXBhcmVuCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgc3ludGF4LWFmdGVy CiAgICAgICAgIDU5MSAgMTAlICAgQXV0b21hdGljIEdDCiAgICAgICAgIDExNCAgIDElIC0gY29t bWFuZC1leGVjdXRlCiAgICAgICAgIDExMCAgIDElICAtIGJ5dGUtY29kZQogICAgICAgICAxMTAg ICAxJSAgIC0gcmVhZC1leHRlbmRlZC1jb21tYW5kCiAgICAgICAgIDExMCAgIDElICAgIC0gcmVh ZC1leHRlbmRlZC1jb21tYW5kLTEKICAgICAgICAgMTEwICAgMSUgICAgIC0gY29tcGxldGluZy1y ZWFkLWRlZmF1bHQKICAgICAgICAgIDIxICAgMCUgICAgICAgIHJlZGlzcGxheV9pbnRlcm5hbCAo QyBmdW5jdGlvbikKICAgICAgICAgIDExICAgMCUgICAgICAtIGNvbW1hbmQtZXhlY3V0ZQogICAg ICAgICAgMTEgICAwJSAgICAgICAtIGZ1bmNhbGwtaW50ZXJhY3RpdmVseQogICAgICAgICAgIDgg ICAwJSAgICAgICAgLSBtaW5pYnVmZmVyLWNvbXBsZXRlLWFuZC1leGl0CiAgICAgICAgICAgOCAg IDAlICAgICAgICAgLSBjb21wbGV0aW9uLWNvbXBsZXRlLWFuZC1leGl0CiAgICAgICAgICAgOCAg IDAlICAgICAgICAgIC0gY29tcGxldGlvbi0tY29tcGxldGUtYW5kLWV4aXQKICAgICAgICAgICA4 ICAgMCUgICAgICAgICAgIC0gIzxieXRlLWNvZGUtZnVuY3Rpb24gODVDPgogICAgICAgICAgIDgg ICAwJSAgICAgICAgICAgIC0gY29tcGxldGlvbi0tZG8tY29tcGxldGlvbgogICAgICAgICAgIDcg ICAwJSAgICAgICAgICAgICAtIGNvbXBsZXRpb24tdHJ5LWNvbXBsZXRpb24KICAgICAgICAgICA3 ICAgMCUgICAgICAgICAgICAgIC0gY29tcGxldGlvbi0tbnRoLWNvbXBsZXRpb24KICAgICAgICAg ICA3ICAgMCUgICAgICAgICAgICAgICAtIHNlcS1zb21lCiAgICAgICAgICAgNyAgIDAlICAgICAg ICAgICAgICAgIC0gc2VxLWRvCiAgICAgICAgICAgNyAgIDAlICAgICAgICAgICAgICAgICAtIG1h cGMKICAgICAgICAgICA3ICAgMCUgICAgICAgICAgICAgICAgICAtICM8Ynl0ZS1jb2RlLWZ1bmN0 aW9uIEY3Nz4KICAgICAgICAgICA3ICAgMCUgICAgICAgICAgICAgICAgICAgLSAjPGJ5dGUtY29k ZS1mdW5jdGlvbiA0MzY+CiAgICAgICAgICAgNyAgIDAlICAgICAgICAgICAgICAgICAgICAtIGV2 YWwKICAgICAgICAgICA3ICAgMCUgICAgICAgICAgICAgICAgICAgICAtIGxldAogICAgICAgICAg IDcgICAwJSAgICAgICAgICAgICAgICAgICAgICAtIGZ1bmNhbGwKICAgICAgICAgICA3ICAgMCUg ICAgICAgICAgICAgICAgICAgICAgIC0gIzxieXRlLWNvZGUtZnVuY3Rpb24gMzA4PgogICAgICAg ICAgIDcgICAwJSAgICAgICAgICAgICAgICAgICAgICAgIC0gY29tcGxldGlvbi1iYXNpYy10cnkt Y29tcGxldGlvbgogICAgICAgICAgIDcgICAwJSAgICAgICAgICAgICAgICAgICAgICAgICAtICM8 bmF0aXZlLWNvbXAtZnVuY3Rpb24gRjYxNmU2ZjZlNzk2ZDZmNzU3MzJkNmM2MTZkNjI2NDYxX2Fu b255bW91c19sYW1iZGFfNTY+CiAgICAgICAgICAgNyAgIDAlICAgICAgICAgICAgICAgICAgICAg ICAgICAtIGNvbXBsZXRlLXdpdGgtYWN0aW9uCiAgICAgICAgICAgNyAgIDAlICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB0cnktY29tcGxldGlvbgogICAgICAgICAgIDEgICAwJSAgICAgICAg ICAgICAgIG1pbmlidWZmZXItY29tcGxldGlvbi1oZWxwCiAgICAgICAgICAgMyAgIDAlICAgICAg ICAtIG1pbmlidWZmZXItY29tcGxldGUKICAgICAgICAgICAzICAgMCUgICAgICAgICAtIGNvbXBs ZXRpb24taW4tcmVnaW9uCiAgICAgICAgICAgMyAgIDAlICAgICAgICAgIC0gY29tcGxldGlvbi0t aW4tcmVnaW9uCiAgICAgICAgICAgMyAgIDAlICAgICAgICAgICAtICM8Ynl0ZS1jb2RlLWZ1bmN0 aW9uIDAwRj4KICAgICAgICAgICAzICAgMCUgICAgICAgICAgICAtIGFwcGx5CiAgICAgICAgICAg MyAgIDAlICAgICAgICAgICAgIC0gIzxieXRlLWNvZGUtZnVuY3Rpb24gNUQ0PgogICAgICAgICAg IDMgICAwJSAgICAgICAgICAgICAgLSBjb21wbGV0aW9uLS1pbi1yZWdpb24tMQogICAgICAgICAg IDMgICAwJSAgICAgICAgICAgICAgIC0gY29tcGxldGlvbi0tZG8tY29tcGxldGlvbgogICAgICAg ICAgIDMgICAwJSAgICAgICAgICAgICAgICAtIG1pbmlidWZmZXItY29tcGxldGlvbi1oZWxwCiAg ICAgICAgICAgMiAgIDAlICAgICAgICAgICAgICAgICAtIHRlbXAtYnVmZmVyLXdpbmRvdy1zaG93 CiAgICAgICAgICAgMiAgIDAlICAgICAgICAgICAgICAgICAgLSBkaXNwbGF5LWJ1ZmZlcgogICAg ICAgICAgIDIgICAwJSAgICAgICAgICAgICAgICAgICAtIGRpc3BsYXktYnVmZmVyLWF0LWJvdHRv bQogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgICAgICAgICBzcGxpdC13aW5kb3ctbm8t ZXJyb3IKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgICAgICAgIC0gd2luZG93LS1kaXNw bGF5LWJ1ZmZlcgogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgICAgICAgIC0gY29tcGxl dGlvbnMtLWZpdC13aW5kb3ctdG8tYnVmZmVyCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAg ICAgICAgICAgICAgZml0LXdpbmRvdy10by1idWZmZXIKICAgICAgICAgICAzICAgMCUgICAgICAt IHRpbWVyLWV2ZW50LWhhbmRsZXIKICAgICAgICAgICAzICAgMCUgICAgICAgLSBhcHBseQogICAg ICAgICAgIDMgICAwJSAgICAgICAgLSBjb21wbGV0aW9ucy0tYmFja2dyb3VuZC11cGRhdGUKICAg ICAgICAgICAzICAgMCUgICAgICAgICAgIGlucHV0LXBlbmRpbmctcAogICAgICAgICAgIDQgICAw JSAgLSBmdW5jYWxsLWludGVyYWN0aXZlbHkKICAgICAgICAgICAxICAgMCUgICAtIG5leHQtbGlu ZQogICAgICAgICAgIDEgICAwJSAgICAtIGxpbmUtbW92ZQogICAgICAgICAgIDEgICAwJSAgICAg LSBkZWZhdWx0LWxpbmUtaGVpZ2h0CiAgICAgICAgICAgMSAgIDAlICAgICAgICBkZWZhdWx0LWZv bnQtaGVpZ2h0CiAgICAgICAgICAgMSAgIDAlICAgLSBraWxsLXJlZ2lvbgogICAgICAgICAgIDEg ICAwJSAgICAtIGtpbGwtbmV3CiAgICAgICAgICAgMSAgIDAlICAgICAtIGd1aS1zZWxlY3QtdGV4 dAogICAgICAgICAgIDEgICAwJSAgICAgIC0gZ3VpLXNldC1zZWxlY3Rpb24KICAgICAgICAgICAx ICAgMCUgICAgICAgLSBndWktYmFja2VuZC1zZXQtc2VsZWN0aW9uCiAgICAgICAgICAgMSAgIDAl ICAgICAgICAtIGFwcGx5CiAgICAgICAgICAgMSAgIDAlICAgICAgICAgLSAjPGJ5dGUtY29kZS1m dW5jdGlvbiA4MEY+CiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgbnMtb3duLXNlbGVjdGlv bi1pbnRlcm5hbAogICAgICAgICAgIDEgICAwJSAgIC0gZmlsZS1ub3RpZnktaGFuZGxlLWV2ZW50 CiAgICAgICAgICAgMSAgIDAlICAgIC0gZmlsZS1ub3RpZnktLWNhbGxiYWNrLWtxdWV1ZQogICAg ICAgICAgIDEgICAwJSAgICAgLSBmaWxlLW5vdGlmeS0taGFuZGxlLWV2ZW50CiAgICAgICAgICAg MSAgIDAlICAgICAgLSBmaWxlLW5vdGlmeS0tY2FsbC1oYW5kbGVyCiAgICAgICAgICAgMSAgIDAl ICAgICAgIC0gIzxieXRlLWNvZGUtZnVuY3Rpb24gMkE2PgogICAgICAgICAgIDEgICAwJSAgICAg ICAgLSBlZ2xvdC1wYXRoLXRvLXVyaQogICAgICAgICAgIDEgICAwJSAgICAgICAgIC0gZmlsZS10 cnVlbmFtZQogICAgICAgICAgIDEgICAwJSAgICAgICAgICAtIGZpbGUtdHJ1ZW5hbWUKICAgICAg ICAgICAxICAgMCUgICAgICAgICAgIC0gZmlsZS10cnVlbmFtZQogICAgICAgICAgIDEgICAwJSAg ICAgICAgICAgICAgZmlsZS10cnVlbmFtZQogICAgICAgICAgIDEgICAwJSAgICAgZXhlY3V0ZS1l eHRlbmRlZC1jb21tYW5kCiAgICAgICAgICA5NyAgIDElIC0gcmVkaXNwbGF5X2ludGVybmFsIChD IGZ1bmN0aW9uKQogICAgICAgICAgIDEgICAwJSAgICByZWRpc3BsYXktLXByZS1yZWRpc3BsYXkt ZnVuY3Rpb25zCiAgICAgICAgICAgNyAgIDAlIC0gLi4uCiAgICAgICAgICAgNiAgIDAlICAtIGNv bXBsZXRpb24tYWxsLWNvbXBsZXRpb25zCiAgICAgICAgICAgNiAgIDAlICAgLSBjb21wbGV0aW9u LS1udGgtY29tcGxldGlvbgogICAgICAgICAgIDYgICAwJSAgICAtIHNlcS1zb21lCiAgICAgICAg ICAgNiAgIDAlICAgICAtIHNlcS1kbwogICAgICAgICAgIDYgICAwJSAgICAgIC0gbWFwYwogICAg ICAgICAgIDYgICAwJSAgICAgICAtICM8Ynl0ZS1jb2RlLWZ1bmN0aW9uIEM2NT4KICAgICAgICAg ICA2ICAgMCUgICAgICAgIC0gIzxieXRlLWNvZGUtZnVuY3Rpb24gMEQyPgogICAgICAgICAgIDYg ICAwJSAgICAgICAgIC0gZXZhbAogICAgICAgICAgIDYgICAwJSAgICAgICAgICAtIGxldAogICAg ICAgICAgIDYgICAwJSAgICAgICAgICAgLSBmdW5jYWxsCiAgICAgICAgICAgNiAgIDAlICAgICAg ICAgICAgLSAjPGJ5dGUtY29kZS1mdW5jdGlvbiBDNDE+CiAgICAgICAgICAgNiAgIDAlICAgICAg ICAgICAgIC0gY29tcGxldGlvbi1iYXNpYy1hbGwtY29tcGxldGlvbnMKICAgICAgICAgICA2ICAg MCUgICAgICAgICAgICAgIC0gY29tcGxldGlvbi1wY20tLWFsbC1jb21wbGV0aW9ucwogICAgICAg ICAgIDYgICAwJSAgICAgICAgICAgICAgIC0gIzxuYXRpdmUtY29tcC1mdW5jdGlvbiBGNjE2ZTZm NmU3OTZkNmY3NTczMmQ2YzYxNmQ2MjY0NjFfYW5vbnltb3VzX2xhbWJkYV81Nj4KICAgICAgICAg ICA2ICAgMCUgICAgICAgICAgICAgICAgLSBjb21wbGV0ZS13aXRoLWFjdGlvbgogICAgICAgICAg IDYgICAwJSAgICAgICAgICAgICAgICAgICBhbGwtY29tcGxldGlvbnMKICAgICAgICAgICAxICAg MCUgIC0gY2wtbG9vcAogICAgICAgICAgIDEgICAwJSAgIC0gY2wtYmxvY2sKICAgICAgICAgICAx ICAgMCUgICAgLSBjbC0tYmxvY2std3JhcHBlcgogICAgICAgICAgIDEgICAwJSAgICAgLSBsZXQK ICAgICAgICAgICAxICAgMCUgICAgICAtIGNhdGNoCiAgICAgICAgICAgMSAgIDAlICAgICAgIC0g bGV0KgogICAgICAgICAgIDEgICAwJSAgICAgICAgLSBjbC1sb29wCiAgICAgICAgICAgMSAgIDAl ICAgICAgICAgLSBjbC1ibG9jawogICAgICAgICAgIDEgICAwJSAgICAgICAgICAtIGNsLS1ibG9j ay13cmFwcGVyCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAtIGxldAogICAgICAgICAgIDEg ICAwJSAgICAgICAgICAgIC0gY2F0Y2gKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgLSBs ZXQqCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAtIHdoaWxlCiAgICAgICAgICAgMSAg IDAlICAgICAgICAgICAgICAgLSBjbC1jYWxsZgogICAgICAgICAgIDEgICAwJSAgICAgICAgICAg ICAgICAtICM8Ynl0ZS1jb2RlLWZ1bmN0aW9uIENEOT4KICAgICAgICAgICAxICAgMCUgICAgICAg ICAgICAgICAgICAgZ3YtZ2V0CiAgICAgICAgICAgNCAgIDAlIC0ganNvbnJwYy0tcHJvY2Vzcy1m aWx0ZXIKICAgICAgICAgICAyICAgMCUgICAgYnVmZmVyLXN0cmluZwogICAgICAgICAgIDIgICAw JSAgLSBqc29ucnBjLS1qc29uLXJlYWQKICAgICAgICAgICAyICAgMCUgICAgIGpzb24tcGFyc2Ut YnVmZmVyCg== --000000000000ae9f63065305a85f--
bug-gnu-emacs@HIDDEN:bug#81150; Package emacs.
Full text available.Received: (at 81150) by debbugs.gnu.org; 30 May 2026 00:14:13 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri May 29 20:14:13 2026 Received: from localhost ([127.0.0.1]:33028 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wT7LA-0007DZ-L3 for submit <at> debbugs.gnu.org; Fri, 29 May 2026 20:14:13 -0400 Received: from mail-wm1-x329.google.com ([2a00:1450:4864:20::329]:43189) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <joaotavora@HIDDEN>) id 1wT7L7-0007DE-VW for 81150 <at> debbugs.gnu.org; Fri, 29 May 2026 20:14:10 -0400 Received: by mail-wm1-x329.google.com with SMTP id 5b1f17b1804b1-490686877a1so44317855e9.0 for <81150 <at> debbugs.gnu.org>; Fri, 29 May 2026 17:14:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780100045; x=1780704845; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=fcbbYRzBE+vO6yU1YNTek665Reg5CZFVE9JgqwlL698=; b=nZ+oVdbeDeN4ncTRZI8AuXIDPGbQ0Rr56zF22uecx/20Q/tIcPuxuCm4W9iB9OGzqD p7UD3+QKA2QFELfocnwslTVYCnME2XkzAA/i0m7UBozD7jO5tLaOm/6FOSgBqaBiI/if GyTeNJttvASfMSSaaDi+AH5cvNmAMidaH53fw4yaOMYRGdbUIPRvIyKiMAJJQrIfhil1 +ya+wMjxty8Z1lY0POtUtP27vkg/rKpM+yOiRXE8nkeUV6CuxAek5GxF3mE678eSIF2F 9XUtXkxU9EE4mNMMYG9PSKQUn6new44TJwi1RwzMRVIdi2a9ICwptngTIhjYpxq7r8C/ IvDw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780100045; x=1780704845; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=fcbbYRzBE+vO6yU1YNTek665Reg5CZFVE9JgqwlL698=; b=oWd+QLv2aOUTGLKB34hFs86ziWhk/WGuhisOGw4VyX7d8VWYqvBZCmfYBao0igD+MF ngUdWEZbGnNDEReAhCQtQ7uSV9R6MYtMp0X9SGExV3a7fDmUgLIg5t6W+HBewEeDMzYx pOErcd7YPfkuAE4XYmiEYidR7LBWU4PPLFo55YVNFA/qkmsuIjFhKPPgBfZfDQUbPhck ADr9GOrMvOiqr/NErvyy2L0HE/4zHf/bx51DSLp/DNdDMh7OHBg4WlfGGdWsLDYgayZJ TjaA7s7sV/vTZle46OKWgQd+F3+ZqpsmIsF1L7QhEUF2wP4drKtsFkxJvVHeSo8QQyOv WB1g== X-Forwarded-Encrypted: i=1; AFNElJ/9sI1TCRloZi4QioEC2hHJ2EYxb1wBK2mFbZQxBwDvW3hcTUebqSM9yQuXgNUOP676nqHVUQ==@debbugs.gnu.org X-Gm-Message-State: AOJu0YyS6nz8UGIoHV+aOptHKPrkjPAbUv7h2iLksWbE+rCakxkY/mv0 UXqvnqDPlwrF0ZoIA/a0p8izEaJeAU42Ufr0OA/zMogB/w1kHNimTMIbfWB8ww== X-Gm-Gg: Acq92OFU2gwBWZ7DogNrWgbNmiyU/9G90b7DYDeDeBKEGT5ts+fAGCSLb/FnLOh+vrB MDCn1tkwv0IADZa0f1dc0elWZFSrckWqceFFZUr+9V+iil08o5eI9tjMNJEZ52cfIyKEOAx4Dp6 T1VvXCFdIuAIk6la5Ea8yyVWymKm9Ee5xiqUZsHTGm10XU7f8PyoaqQXB+X3N1v+Yi/YIyhbzvB 6igRrID0N8YehL0CLkKL2fok8SkX1K4BIVKQ5K/qrbs5jb6McQs8/2u1z6Rului0itzYucrx/9L YC4YpIIGkgK4eKHIOJBt02TNkDtOwSTSJzllieZDpd3stGJheG990kHHNmmPDhjA03cQs7emPhv YwEqVgRGWt8zEiBfRqpRX01+eBXyZyzITnamQ2U1SyXGisW9W7OuABKE7TxBKvnEN0Hf4yeYMJ3 v7kFrhisYq2AOPfX2tLKH+C2Yt6iKQ6ZFnxmGQLkhTHknRfmrKJrSORk0iyKcNMaU3ZSTs7xbsJ NLgjHVAItVgGdPJ5kXVbqsFzTWb4mkvuzjDWRZ/4DVYceSqC6o= X-Received: by 2002:a05:600c:1387:b0:490:3cf0:8d81 with SMTP id 5b1f17b1804b1-490a2a4e8ebmr17074985e9.13.1780100045311; Fri, 29 May 2026 17:14:05 -0700 (PDT) Received: from krug (87-196-72-133.net.novis.pt. [87.196.72.133]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-490a25e4fe7sm31784745e9.0.2026.05.29.17.14.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 May 2026 17:14:04 -0700 (PDT) From: =?utf-8?B?Sm/Do28gVMOhdm9yYQ==?= <joaotavora@HIDDEN> To: Rahul Martim Juliato <rahuljuliato@HIDDEN> Subject: Re: bug#81150: 31.0.60; eglot: performance issue with markdown-ts-mode In-Reply-To: <87pl2dq2a7.fsf@HIDDEN> References: <CAJ8YToa+nueew9wQ52xJtD-jXOdcA+Vq+NZEVcd=Q3V66opHSg@HIDDEN> <CAN+1HbpLJqPWufz3mOmAm1Oq=+_a38aMH5FZub5-pn5=C4msSw@HIDDEN> <87pl2dq2a7.fsf@HIDDEN> Date: Sat, 30 May 2026 01:14:06 +0100 Message-ID: <87se79pxdd.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 81150 Cc: =?utf-8?Q?St=C3=A9phane?= Marks <shipmints@HIDDEN>, 81150 <at> debbugs.gnu.org, Romain Ouabdelkader <romain.ouabdelkader@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: 0.0 (/) Rahul Martim Juliato <rahuljuliato@HIDDEN> writes: > Some extra explanation: the slow part was not on the markdown > fontification, that is only a few percent of the time. The cost was > paying the whole major-mode setup over and over in a tight > loop. Initializing the mode once removes that multiplication and needs > no change to markdown-ts-mode, which is fine when it runs once. It also > helps every server and every markup format, not just this one case. Thanks Rahul for analyzing this, However, I have a different view on where this should be fixed, and it's very simple IMO. If a given piece of cache that is created and stored each time the major-mode-initialization is done is *not* invalidated when the whole buffer is erased, then that piece of cache should not be per-buffer-major-mode-initialization it should be global, or at least done only once for the first ever major-mode initialized with markdown-ts-mode, or what am I missing. To be frank, I prefer to go back to ELPA markdown-mode until this is sorted. There is no reason a treesitter major-mode should be slower to to parse a buffer from scratch than a mode built entirely in Elisp, or demand special care from Elisp programs. So I think this should be fixed in markdown-ts-mode's design. > I considered caching grammar availability in markdown-ts-mode, but > decided against it. Availability is runtime state, and a user can > install the grammar later during the same Emacs session. Because of > that, caching a "not available" result felt wrong. Is this the expensive part when markdown-ts-mode runs? Then just cache the "yes, it's available". Jo=C3=A3o
bug-gnu-emacs@HIDDEN:bug#81150; Package emacs.
Full text available.
Received: (at 81150) by debbugs.gnu.org; 29 May 2026 22:28:14 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri May 29 18:28:14 2026
Received: from localhost ([127.0.0.1]:60478 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1wT5ga-0000Wi-Ki
for submit <at> debbugs.gnu.org; Fri, 29 May 2026 18:28:14 -0400
Received: from mail-yx1-xb135.google.com ([2607:f8b0:4864:20::b135]:55498)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <rahuljuliato@HIDDEN>)
id 1wT5gW-0000WT-Ky
for 81150 <at> debbugs.gnu.org; Fri, 29 May 2026 18:28:10 -0400
Received: by mail-yx1-xb135.google.com with SMTP id
956f58d0204a3-66058b880e9so874854d50.2
for <81150 <at> debbugs.gnu.org>; Fri, 29 May 2026 15:28:08 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20251104; t=1780093688; x=1780698488; darn=debbugs.gnu.org;
h=mime-version:user-agent:message-id:date:face:references:in-reply-to
:subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
bh=elMXMyrYEldGi3DQK8P8JyiD7Q1OzAB12UFPKsA9dks=;
b=chkhofQc2MK+3jDW0owM9pDjm9LmxuL+oO0GfQRS970lXTVfCc7KCRYWxUMP4KSuzu
ZxtOdDPqbU3QHB+DtXPCl6o8grhcmLzejWH+bQcrOsaDe3r/sq9/iLYzNhgzmOVZDHOS
PyD2n8xl4rGz0y6tLLvlAvQb3BePck1bcAm3Y0y6WBoR2sa2+I7HpKIW/QNEhD8bb29U
S3sIrZHjtg059lKO0Y7MWCuLRiLKHLwWV9XbPhSXU08PY52/eB8c65dvtjQwS+KoYfq2
Nd5FWQEev1SzhfcyG4hq1GfTUDQM6UzOLs4R47ryUW9ae5ssO8xQJPig1kFkej5NiS26
Y3FQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20251104; t=1780093688; x=1780698488;
h=mime-version:user-agent:message-id:date:face:references:in-reply-to
:subject:cc:to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject
:date:message-id:reply-to;
bh=elMXMyrYEldGi3DQK8P8JyiD7Q1OzAB12UFPKsA9dks=;
b=baXFtdCXMsHDBZM13r1Amq9hZiOPFGYzXPrEW7fMU58uL9Dr3gjfTWXY6SfYxSHqnY
nQpuNzPbFuKYwqeA+QrR2u6INu0gq9yvOi1PhrGctbnzSn+iUxbrr9pVxT4WwYbNqxtT
5zHFrkTl9wZy+BoEWTvPpeIPGigKOV1nyScLYmxR5krS16LVe9v+AXbayGuCqFAE0QIX
DcUUwahPL3JIDNHjY2WqczqgknuLUKvxmko745zwqC93jh/+6351xHuq9vUGVv9ESWXY
6tLEDx7xlWxZbjQH4IkVGMcanb5yWaJbCcQcBBbSxSWH76TXpn8mNXQWqzThxq12Sg4g
zjtQ==
X-Forwarded-Encrypted: i=1;
AFNElJ8Bpbx+qNmYra8pU9mgA8HN87NM2zl9YJVCj8iRhsh8cZJJ/oZgJwbtYXiVxP6INYYs58uG7w==@debbugs.gnu.org
X-Gm-Message-State: AOJu0Yz+RVG6TyLjiELrl6qG5uoZDNY1uVXJuMYQZoEb8V10xx7SD0SZ
VUz82cdxv8r9BN4YW9ocyAEhnYLU4pLRrWd0VSmRkby5IJ0lY6mura9F
X-Gm-Gg: Acq92OEpMJ5Hrr2Xy8KCsX4OJ1ETE2BEPzMJ8C52ZPW0SrI3oa/+GoazOUt/lRKt8Bn
nS8WpNWrGbWFquk415ymc6c9t0ywOTsgRceSDQ/XhHlo3Ub2SDMGvTwQGQxQiafSO4+Xr1N7oHn
tglpsmDnPZCuAUDJeV2vmtd6Ro5/M5Sw9hBYiCMC1CD3r8tDO9qXmK31coJzG7C9mH50rDeQy/f
51J5+rJP0MLuECZ02WwmESiyd32o1ce0Uf24lqltH8R5yTpRTy9kyBuYtCOCfGqN3B2PRG098Rd
yBf4g0k97Hs9JkKdIw6JM5ggZfL19bkC9PKukZbrQyFPzAiEYt5s+tKKjql5OPwgS9vf6cgIQFe
qVofclBbk578BLwB5sxAZXdsNve8OLT0oaEV2ukA7FKiTGM3zTY99wzalzgGjKV09MYg7/V4QNs
4LlILsmh9ISltj1qnoiANqKuR/jLQq8b0T9NV0kOGFkkEzF5DBCPjtmjg=
X-Received: by 2002:a05:690e:d45:b0:654:1261:8b3f with SMTP id
956f58d0204a3-6605ed7c038mr1204580d50.16.1780093687400;
Fri, 29 May 2026 15:28:07 -0700 (PDT)
Received: from deb ([2.59.157.33]) by smtp.gmail.com with ESMTPSA id
956f58d0204a3-66053d80b3dsm1190012d50.21.2026.05.29.15.28.04
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Fri, 29 May 2026 15:28:06 -0700 (PDT)
From: Rahul Martim Juliato <rahuljuliato@HIDDEN>
X-Google-Original-From: Rahul Martim Juliato <rahul.juliato@HIDDEN>
To: =?utf-8?Q?St=C3=A9phane?= Marks <shipmints@HIDDEN>
Subject: Re: bug#81150: 31.0.60; eglot: performance issue with markdown-ts-mode
In-Reply-To: <CAN+1HbpLJqPWufz3mOmAm1Oq=+_a38aMH5FZub5-pn5=C4msSw@HIDDEN>
References: <CAJ8YToa+nueew9wQ52xJtD-jXOdcA+Vq+NZEVcd=Q3V66opHSg@HIDDEN>
<CAN+1HbpLJqPWufz3mOmAm1Oq=+_a38aMH5FZub5-pn5=C4msSw@HIDDEN>
Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAAAXNSR0IB2cksfwAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAABhQTFRFDxIfFR9FMD+RM2CBkZPbZKPEn+Xt////lKVMgwAAAAFiS0dEAIgFHUgAAAAJcEhZcwAALiMAAC4jAXilP3YAAAAHdElNRQfqAhsDFwcfcr7WAAACY0lEQVRIx7VVWbLbMAwzBZG6/41LcJHXpl/Vm/G8OADBBWKOo44c//mM2yeoH7go/kqQG3zlucDxgwTzkwz9XVl+K8Z8igL5p4KYKbApCHDC5aGXn7EcD1KCkUl9154EtSJUJWwWIIJbZyLVIIgTguGdCobxQ4nLI3gRLECO9axcwgNYQi81yH5KhGXZ1oU7XSH3YUnQ488YsesOCWrwxYOAgAtW1ZCEZKxoNR4TCILXGnPbjJ65v8ZrbB4fbI02pUaelSjuDKboCS1LifMEg1HwaOpRvV/2Ylja5ekjafyFYU2AnGOTMagh5Qbrs6OngFxTkhFPxUYUZePl3iQnSB7Y+3gcvQocDSYeWOuDYorXZagzhioeqWVSH3ivfvS54/EcW8LvB2eTSJDtbtkJXeGTD/1FwCbMNI/pnC0CjYi3ej2HhDvOD121dGzGFyHgM+5DUnhLNc0lKm0OYptQsWPTJKPMMuil0rhU6+E51th4obJqinOMntOBM59pzlg0wmICoRc3ML5tgpzpODRdk02MQmaEL8YIhdEElJniQbvDRSh7DicV9qjmQFeFHA3mosS8EU6+8g2jV8dzc3jpTK0ZFwWObITvpXZv1MRJXDSOs6WskFcxVKqIlKPMJpzxp9I+udrjLx3tKfB9unHslNi/Wj9AZt8+mGEnnTmPIzMYM5ZENgp1XVghv+uN4/ZE7sf4gXJV9yvHJp1/7EvJlTlz
pUspOFJt723pVYz9c2cpgHYfKSMXVz72TvL/rJqxL92+D2cGuelri9Nkc5wX6Hjf6cqEsoPptle/Vtllqb3eEPkHU2QXL+sLC8kAAAAASUVORK5CYII=
X-PGP-Key: https://www.rahuljuliato.com/rahul_pub_key.asc
Date: Fri, 29 May 2026 19:28:00 -0300
Message-ID: <87pl2dq2a7.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Spam-Score: 1.0 (+)
X-Debbugs-Envelope-To: 81150
Cc: =?utf-8?B?Sm/Do28gVMOhdm9yYQ==?= <joaotavora@HIDDEN>,
81150 <at> debbugs.gnu.org, Romain Ouabdelkader <romain.ouabdelkader@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: 0.0 (/)
--=-=-=
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
St=C3=A9phane Marks <shipmints@HIDDEN> writes:
> On Fri, May 29, 2026 at 2:11=E2=80=AFPM Romain Ouabdelkader <romain.ouabd=
elkader@HIDDEN> wrote:
>
> Hello,
>
> I noticed a big performance issue after updating to emacs31 related to
> eglot/markdown-ts-mode.
> Cursor movement or edition inside function calls in python are very
> slow, emacs freezes while displaying the eldoc function signature.
>
> The freeze duration depends on the function complexity, big function/cla=
ss
> like pydantic.Fields hangs emacs for more than 3 seconds.
>
> Reproduced with emacs -Q.
> How to reproduce:
> - Enable eglot with pyright-langserver
> - Place your cursor in a function call like Field("te|st")
> - Wait eldoc-idle-delay (0.5s by default)
> - Then try to move cursor or insert char
> - Emacs will hang
>
> Note that I reproduced the issue with both pyright-langserver and ty,
> but pyright-langserver performance seems a bit worse (maybe they don't
> return exactly the same doc).
>
> Attached is a lisp cpu profile.
> I also provided two sample files: one using pydantic, and another standa=
lone
> one if you can't install it (I copied pydantic's Field signature).
>
> I used pydantic's Field because the hang is very apparent but it happens
> on all decently big functions.
>
> In GNU Emacs 31.0.60 (build 1, aarch64-apple-darwin24.6.0, NS
> appkit-2575.70 Version 15.7.4 (Build 24G517)) of 2026-05-29 built on
> MBPro-MHFY4Y3W3H
> Windowing system distributor 'Apple', version 10.3.2575
> System Description: macOS 15.7.4
>
> Configured using:
> 'configure --disable-dependency-tracking --disable-silent-rules
> --enable-locallisppath=3D/opt/homebrew/share/emacs/site-lisp
> --infodir=3D/opt/homebrew/Cellar/emacs-plus@31/31.0.60/share/info/emacs
> --prefix=3D/opt/homebrew/Cellar/emacs-plus@31/31.0.60
> --with-native-compilation=3Daot --with-xml2 --with-gnutls
> --without-compress-install 'CFLAGS=3D-DFD_SETSIZE=3D10000
> -DDARWIN_UNLIMITED_SELECT -I/opt/homebrew/opt/sqlite/include
> -I/opt/homebrew/opt/gcc/include -I/opt/homebrew/opt/libgccjit/include'
> --without-dbus --without-imagemagick --with-modules --with-rsvg
> --with-webp --with-ns --disable-ns-self-contained
> 'LDFLAGS=3D-L/opt/homebrew/opt/sqlite/lib -L/opt/homebrew/lib/gcc/15
> -Wl,-rpath,/opt/homebrew/lib/gcc/15''
>
> Configured features:
> ACL GIF GLIB GMP GNUTLS JPEG LCMS2 LIBXML2 MODULES NATIVE_COMP NOTIFY
> KQUEUE NS PDUMPER PNG RSVG SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS
> TREE_SITTER WEBP XIM ZLIB
>
> Important settings:
> value of $LANG: en_US.UTF-8
> locale-coding-system: utf-8-unix
>
> Major mode: Python
>
> Minor modes in effect:
> midnight-mode: t
> consult-denote-mode: t
> denote-menu-bar-mode: t
> ws-butler-mode: t
> magit-prime-mode: t
> repeat-fu-mode: t
> highlight-parentheses-mode: t
> topsy-mode: t
> dirvish-override-dired-mode: t
> global-jinx-mode: t
> jinx-mode: t
> meow-global-mode: t
> meow-mode: t
> meow-normal-mode: t
> meow-esc-mode: t
> marginalia-mode: t
> vertico-multiform-mode: t
> vertico-mode: t
> sideline-mode: t
> csv-field-index-mode: t
> global-treesit-fold-mode: t
> treesit-fold-mode: t
> global-org-modern-mode: t
> dape-breakpoint-global-mode: t
> dape-breakpoint-mode: t
> dape-many-windows: t
> repeat-mode: t
> windmove-mode: t
> global-diff-hl-mode: t
> diff-hl-mode: t
> dtrt-indent-global-mode: t
> dtrt-indent-mode: t
> winner-mode: t
> fancy-compilation-mode: t
> apheleia-mode: t
> corfu-popupinfo-mode: t
> global-corfu-mode: t
> corfu-mode: t
> which-key-mode: t
> treemacs-filewatch-mode: t
> treemacs-follow-mode: t
> treemacs-git-mode: t
> treemacs-fringe-indicator-mode: t
> rainbow-delimiters-mode: t
> eglot--managed-mode: t
> hexl-follow-ascii: t
> magit-delta-mode: t
> global-git-commit-mode: t
> yas-global-mode: t
> yas-minor-mode: t
> doom-modeline-mode: t
> electric-pair-mode: t
> gcmh-mode: t
> flymake-mode: t
> override-global-mode: t
> server-mode: t
> el-patch-use-package-mode: t
> pixel-scroll-precision-mode: t
> global-subword-mode: t
> subword-mode: t
> global-so-long-mode: t
> delete-selection-mode: (delete-selection-pre-hook t)
> global-auto-revert-mode: t
> savehist-mode: t
> straight-use-package-mode: t
> straight-package-neutering-mode: t
> tooltip-mode: t
> global-eldoc-mode: t
> eldoc-mode: t
> show-paren-mode: t
> electric-indent-mode: t
> mouse-wheel-mode: t
> file-name-shadow-mode: t
> global-font-lock-mode: t
> font-lock-mode: t
> minibuffer-nonselected-mode: t
> minibuffer-regexp-mode: t
> line-number-mode: t
> transient-mark-mode: t
> auto-composition-mode: t
> auto-encryption-mode: t
> auto-compression-mode: t
>
> Load-path shadows:
> /Users/romain.ouabdelkader/.emacs.d/straight/build/which-key/which-key h=
ides
> /opt/homebrew/Cellar/emacs-plus@31/31.0.60/share/emacs/31.0.60/lisp/whic=
h-key
> /Users/romain.ouabdelkader/.emacs.d/straight/build/transient/transient h=
ides
> /opt/homebrew/Cellar/emacs-plus@31/31.0.60/share/emacs/31.0.60/lisp/tran=
sient
> /Users/romain.ouabdelkader/.emacs.d/straight/build/jsonrpc/jsonrpc hides
> /opt/homebrew/Cellar/emacs-plus@31/31.0.60/share/emacs/31.0.60/lisp/json=
rpc
> /Users/romain.ouabdelkader/.emacs.d/straight/build/bind-key/bind-key hid=
es
> /opt/homebrew/Cellar/emacs-plus@31/31.0.60/share/emacs/31.0.60/lisp/bind=
-key
> /Users/romain.ouabdelkader/emacs-conf/custom hides
> /opt/homebrew/Cellar/emacs-plus@31/31.0.60/share/emacs/31.0.60/lisp/cust=
om
> /Users/romain.ouabdelkader/.emacs.d/straight/build/use-package/use-packa=
ge-jump hides
> /opt/homebrew/Cellar/emacs-plus@31/31.0.60/share/emacs/31.0.60/lisp/use-=
package/use-package-jump
> /Users/romain.ouabdelkader/.emacs.d/straight/build/use-package/use-packa=
ge-ensure-system-package hides
> /opt/homebrew/Cellar/emacs-plus@31/31.0.60/share/emacs/31.0.60/lisp/use-=
package/use-package-ensure-system-package
>
> /Users/romain.ouabdelkader/.emacs.d/straight/build/use-package/use-packa=
ge-diminish hides
> /opt/homebrew/Cellar/emacs-plus@31/31.0.60/share/emacs/31.0.60/lisp/use-=
package/use-package-diminish
> /Users/romain.ouabdelkader/.emacs.d/straight/build/use-package/use-packa=
ge hides
> /opt/homebrew/Cellar/emacs-plus@31/31.0.60/share/emacs/31.0.60/lisp/use-=
package/use-package
> /Users/romain.ouabdelkader/.emacs.d/straight/build/use-package/use-packa=
ge-delight hides
> /opt/homebrew/Cellar/emacs-plus@31/31.0.60/share/emacs/31.0.60/lisp/use-=
package/use-package-delight
> /Users/romain.ouabdelkader/.emacs.d/straight/build/use-package/use-packa=
ge-lint hides
> /opt/homebrew/Cellar/emacs-plus@31/31.0.60/share/emacs/31.0.60/lisp/use-=
package/use-package-lint
> /Users/romain.ouabdelkader/.emacs.d/straight/build/use-package/use-packa=
ge-core hides
> /opt/homebrew/Cellar/emacs-plus@31/31.0.60/share/emacs/31.0.60/lisp/use-=
package/use-package-core
> /Users/romain.ouabdelkader/.emacs.d/straight/build/use-package/use-packa=
ge-ensure hides
> /opt/homebrew/Cellar/emacs-plus@31/31.0.60/share/emacs/31.0.60/lisp/use-=
package/use-package-ensure
> /Users/romain.ouabdelkader/.emacs.d/straight/build/use-package/use-packa=
ge-bind-key hides
> /opt/homebrew/Cellar/emacs-plus@31/31.0.60/share/emacs/31.0.60/lisp/use-=
package/use-package-bind-key
> /Users/romain.ouabdelkader/.emacs.d/straight/build/compat/compat hides
> /opt/homebrew/Cellar/emacs-plus@31/31.0.60/share/emacs/31.0.60/lisp/emac=
s-lisp/compat
> /Users/romain.ouabdelkader/.emacs.d/straight/build/seq/seq hides
> /opt/homebrew/Cellar/emacs-plus@31/31.0.60/share/emacs/31.0.60/lisp/emac=
s-lisp/seq
>
> Features:
> (shadow mail-extr emacsbug lisp-mnt message rfc822 mml mml-sec mm-decode
> mm-bodies mm-encode mailabbrev gmm-utils sendmail help-fns radix-tree
> tramp-cmds yank-media dired-aux dirvish-widgets vc-hg vc-bzr vc-src
> vc-sccs vc-svn vc-cvs vc-rcs bug-reference magit-extras consult-xref
> toml-ts-mode yaml-ts-mode html-ts-mode markdown-ts-mode vertico-repeat
> repeat-fu-preset-meow graphics custom-monokai-theme package-review calc
> calc-loaddefs calc-macs verb verb-restclient verb-util verb-autoloads
> agent-shell agent-shell-viewport agent-shell-ui agent-shell-worktree
> agent-shell-usage agent-shell-styles agent-shell-qwen agent-shell-pi
> agent-shell-opencode agent-shell-openai agent-shell-mistral
> agent-shell-kiro agent-shell-kimi agent-shell-hermes
> agent-shell-active-message agent-shell-heartbeat agent-shell-goose
> agent-shell-google agent-shell-github agent-shell-droid
> agent-shell-experimental agent-shell-diff agent-shell-devcontainer
> agent-shell-cursor agent-shell-config agent-shell-completion
> agent-shell-project agent-shell-cline agent-shell-codebuddy
> agent-shell-auggie agent-shell-anthropic markdown-overlays
> markdown-overlays-tables agent-shell-autoloads acp acp-traffic
> acp-autoloads shell-maker goto-addr shell-maker-autoloads midnight
> consult-denote consult-denote-autoloads denote denote-autoloads
> use-package-ensure ws-butler ws-butler-autoloads magit-prime
> magit-prime-autoloads macher gptel-context macher-autoloads org-download
> org-attach org-download-autoloads casual casual-lib package url-handlers
> package-activate casual-autoloads minuet plz minuet-autoloads
> plz-autoloads repeat-fu repeat-fu-autoloads ediff ediff-merg ediff-mult
> ediff-wind ediff-diff ediff-help ediff-init ediff-util cycle-quotes
> cycle-quotes-autoloads gptel-quick gptel-quick-autoloads
> highlight-parentheses highlight-parentheses-autoloads crux
> crux-autoloads topsy topsy-autoloads dirvish dirvish-autoloads jinx
> jinx-autoloads impatient-mode-autoloads htmlize-autoloads
> simple-httpd-autoloads consult-dir recentf consult-dir-autoloads
> web-mode advice web-mode-autoloads meow-tree-sitter
> meow-tree-sitter-autoloads meow-vterm meow-vterm-autoloads meow
> meow-tutor meow-cheatsheet meow-cheatsheet-layout meow-core meow-shims
> meow-esc meow-command array meow-thing meow-visual meow-keypad
> meow-beacon meow-helpers meow-util meow-keymap meow-face meow-var
> meow-autoloads embark-org embark-consult embark ffap
> embark-consult-autoloads embark-autoloads marginalia
> marginalia-autoloads consult-compile consult consult-autoloads
> vertico-sort vertico-multiform vertico vertico-autoloads
> sideline-flymake sideline-flymake-autoloads sideline sideline-autoloads
> yaml gptel-agent gptel-agent-tools url-http url-auth mail-parse rfc2231
> rfc2047 rfc2045 ietf-drums url-gw nsm eww vtable url-queue shr
> pixel-fill kinsoku url-file svg xml puny mm-url gnus nnheader gnus-util
> range mm-util mail-prsvr gptel-agent-autoloads yaml-autoloads
> gptel-integrations mcp mcp-autoloads gptel-openai gptel-anthropic gptel
> gptel-request gptel-autoloads nerd-icons-corfu
> nerd-icons-corfu-autoloads csv-mode sort csv-mode-autoloads treesit-fold
> treesit-fold-summary treesit-fold-parsers treesit-fold-util
> treesit-fold-autoloads terraform-mode-autoloads hcl-mode-autoloads
> org-modern-indent org-indent org-modern-indent-autoloads org-modern
> org-modern-autoloads dape gdb-mi bindat gud dape-autoloads
> jsonrpc-autoloads repeat windmove diff-hl-show-hunk-inline
> diff-hl-inline-popup diff-hl-show-hunk diff-hl log-view vc-dir vc
> diff-hl-autoloads browse-at-remote browse-at-remote-autoloads wgrep grep
> wgrep-autoloads dtrt-indent dtrt-indent-autoloads winner cus-edit
> cus-start cus-load fancy-compilation fancy-compilation-autoloads
> apheleia apheleia-rcs apheleia-dp apheleia-formatters apheleia-utils
> apheleia-log apheleia-formatter-context apheleia-autoloads cape dabbrev
> cape-autoloads async async-autoloads orderless orderless-autoloads
> corfu-popupinfo corfu-auto corfu corfu-autoloads eldoc-box
> eldoc-box-autoloads which-key which-key-autoloads treemacs
> treemacs-header-line treemacs-compatibility treemacs-mode
> treemacs-bookmarks treemacs-tags treemacs-interface treemacs-persistence
> treemacs-filewatch-mode treemacs-follow-mode treemacs-rendering
> treemacs-annotations treemacs-async treemacs-workspaces treemacs-dom
> treemacs-visuals treemacs-fringe-indicator pulse treemacs-faces
> treemacs-icons treemacs-scope treemacs-themes treemacs-core-utils
> pfuture hl-line treemacs-logging treemacs-customization treemacs-macros
> treemacs-autoloads cfrs-autoloads posframe-autoloads hydra-autoloads
> lv-autoloads pfuture-autoloads ace-window-autoloads avy-autoloads
> markdown-mode markdown-mode-autoloads rainbow-delimiters
> rainbow-delimiters-autoloads typescript-ts-mode string-inflection
> string-inflection-autoloads groovy-mode-autoloads kotlin-mode-autoloads
> pyvenv pyvenv-autoloads multi-vterm multi-vterm-autoloads vterm-toggle
> tramp-sh vterm-toggle-autoloads vterm magit-bookmark bookmark
> tramp-cache time-stamp tramp trampver tramp-integration tramp-message
> tramp-compat parse-time iso8601 tramp-loaddefs face-remap color term
> ehelp vterm-module term/xterm xterm vterm-autoloads sqlformat-autoloads
> reformatter-autoloads sql view rust-mode-autoloads js c-ts-common
> cc-mode cc-fonts cc-guess cc-menus cc-cmds eglot tree-widget wid-edit
> external-completion jsonrpc seq-25 ert ewoc debug backtrace
> project-local dockerfile-mode dockerfile-mode-autoloads nhexl-mode
> disp-table hexl nhexl-mode-autoloads swift-mode-autoloads yaml-mode
> yaml-mode-autoloads quickrun ht eshell em-banner esh-mode esh-var
> esh-cmd esh-ext esh-proc esh-opt esh-io esh-arg esh-module
> esh-module-loaddefs esh-util quickrun-autoloads ht-autoloads magit-delta
> xterm-color magit-delta-autoloads xterm-color-autoloads git-timemachine
> vc-git files-x vc-dispatcher git-timemachine-autoloads epa-file request
> mailheader mail-utils request-autoloads magit-submodule magit-blame
> magit-stash magit-reflog magit-bisect magit-push magit-pull magit-fetch
> magit-clone magit-remote magit-commit magit-sequence magit-notes
> magit-worktree magit-tag magit-merge magit-branch magit-reset
> magit-files magit-refs magit-status magit epa derived epg rfc6068
> epg-config magit-repos magit-apply dired dired-loaddefs magit-wip
> magit-log magit-diff which-func smerge-mode diff diff-mode track-changes
> git-commit log-edit pcvs-util add-log magit-core magit-autorevert
> magit-margin magit-transient magit-process magit-mode browse-url url
> url-proxy url-privacy url-expand url-methods url-history url-cookie
> generate-lisp-file url-domsuf url-util mailcap benchmark magit-git
> magit-base magit-section cursor-sensor transient pp crm llama
> transient-autoloads magit-section-autoloads llama-autoloads yasnippet
> yasnippet-autoloads use-package-diminish multiple-cursors
> mc-separate-operations rectangular-region-mode mc-mark-pop mc-edit-lines
> mc-hide-unmatched-lines-mode mc-mark-more sgml-mode facemenu dom
> mc-cycle-cursors multiple-cursors-core rect multiple-cursors-autoloads
> finder-inf phi-search phi-search-core phi-search-autoloads all-the-icons
> all-the-icons-faces data-material data-weathericons data-octicons
> data-fileicons data-faicons data-alltheicons all-the-icons-autoloads
> doom-modeline doom-modeline-segments doom-modeline-env
> doom-modeline-core shrink-path nerd-icons nerd-icons-faces
> nerd-icons-data nerd-icons-data-mdicon nerd-icons-data-flicon
> nerd-icons-data-codicon nerd-icons-data-devicon nerd-icons-data-sucicon
> nerd-icons-data-wicon nerd-icons-data-faicon nerd-icons-data-powerline
> nerd-icons-data-octicon nerd-icons-data-pomicon nerd-icons-data-ipsicon
> doom-modeline-autoloads shrink-path-autoloads nerd-icons-autoloads
> symbol-overlay symbol-overlay-autoloads seq-autoloads dumb-jump xref
> dumb-jump-autoloads vundo vundo-autoloads elec-pair diminish
> diminish-autoloads gcmh gcmh-autoloads org-agenda org-element
> org-persist xdg org-id avl-tree generator org-refile ob-shell ob-sql
> ob-python python pcase ob-dot org ob ob-tangle ob-ref ob-lob ob-table
> ob-exp org-macro org-src sh-script smie treesit executable ob-comint
> org-element-ast inline org-pcomplete org-list org-footnote org-faces
> org-entities time-date noutline outline org-version ob-emacs-lisp
> ob-core ob-eval org-cycle org-table ol org-fold org-fold-core org-keys
> oc org-compat org-loaddefs find-func cal-menu calendar cal-loaddefs
> org-macs format-spec flymake compile text-property-search thingatpt
> edmacro kmacro use-package-bind-key bind-key easy-mmode pass f dash
> imenu password-store-otp s pass-autoloads f-autoloads dash-autoloads
> password-store-otp-autoloads s-autoloads password-store auth-source-pass
> byte-opt url-parse url-vars auth-source eieio eieio-core password-cache
> json map with-editor shell pcomplete server cond-let compat
> password-store-autoloads with-editor-autoloads cond-let-autoloads
> compat-autoloads undo-fu undo-fu-autoloads el-patch-autoloads el-patch
> el-patch-stub cc-styles cc-align cc-engine cc-vars cc-defs pixel-scroll
> comint ansi-osc ansi-color ring project use-package-core cap-words
> superword subword so-long comp comp-cstr warnings icons comp-run
> comp-common rx delsel autorevert filenotify savehist cl
> use-package-autoloads info bind-key-autoloads straight-autoloads cl-seq
> cl-extra help-mode straight subr-x cl-macs gv cl-loaddefs cl-lib
> bytecomp byte-compile rmc iso-transl tooltip cconv eldoc paren electric
> uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel
> term/ns-win ns-win ucs-normalize mule-util term/common-win tool-bar dnd
> fontset image regexp-opt fringe tabulated-list replace newcomment
> text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow
> isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax
> font-core term/tty-colors frame minibuffer nadvice seq simple cl-generic
> indonesian philippine cham georgian utf-8-lang misc-lang vietnamese
> tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek
> romanian slovak czech european ethiopic indian cyrillic chinese
> composite emoji-zwj charscript charprop case-table epa-hook
> jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs
> theme-loaddefs faces cus-face macroexp files window text-properties
> overlay sha1 md5 base64 format env code-pages mule custom widget keymap
> hashtable-print-readable backquote threads kqueue cocoa ns lcms2
> multi-tty make-network-process tty-child-frames native-compile emacs)
>
> Memory information:
> ((conses 16 1157465 3256484) (symbols 48 62369 112)
> (strings 32 271774 81068) (string-bytes 1 10625027)
> (vectors 16 115096) (vector-slots 8 1897416 2274258)
> (floats 8 2043 19015) (intervals 56 14505 8329) (buffers 1064 46))
>
> + Joao and Rahul
>
Thanks for the ping St=C3=A9phane.
Hi there everyone!
This is a reproduceable bug. I could replicate it on my end, though not
with 3 seconds freeze but still feeling a 1 to 1.5 second block. Thanks
for the detailed report Romain.
Double checking what was reported. It only happens when eglot folows the
markdown route, which is the case once the markdown tree-sitter grammar
is installed, without it and going on the plaintext route, it feels
instant.
Analyzing the provided profile, it looks like most of the time was spent
in eglot--format-markup tree. For every markup fragment eglot opens a
fresh temp buffer and runs a full markdown-ts-view-mode setup.
eglot--sig-info calls that once for the signature doc and once per
parameter, and the signature handler renders every overload. For a
function like Field that is around 200 full major-mode initializations
per keystroke, all done synchronously while handling the LSP reply, yep,
it makes the UI block.
Please find a patch attached suggesting a change on eglot (feel free to
change it in anyway Jo=C3=A3o), so it renders into one reusable buffer
instead of a new temp buffer each time. The buffer is created and
initialized once, then for each fragment we just erase it, insert the
text, refontify and read the result back. The mode is only
re-initialized if the render mode actually changes.
I did some non-scientific measures and it feels like this change alone
makes it way faster, at least I could not tell it was "happening"
anymore.
Romain, if you could please test it and give us some feedback on other
heavy workflows it would be nice, I'm no longer working with python
theses days, can't say I have a real world project to test.
Some extra explanation: the slow part was not on the markdown
fontification, that is only a few percent of the time. The cost was
paying the whole major-mode setup over and over in a tight
loop. Initializing the mode once removes that multiplication and needs
no change to markdown-ts-mode, which is fine when it runs once. It also
helps every server and every markup format, not just this one case.
I considered caching grammar availability in markdown-ts-mode, but
decided against it. Availability is runtime state, and a user can
install the grammar later during the same Emacs session. Because of
that, caching a "not available" result felt wrong.
Thanks
--=20
Rahul Martim Juliato
--=-=-=
Content-Type: application/octet-stream; charset=utf-8
Content-Disposition: attachment;
filename=0001-Eglot-Reuse-buffer-to-fontify-markup-bug-81150.patch
Content-Transfer-Encoding: base64
RnJvbSBmNzM2NzNiMzZmM2M3NjhhOWI0YWE5ZDk5YWRhMWRjNzlmMDEzMzFiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBSYWh1bCBNYXJ0aW0gSnVsaWF0byA8cmFodWwuanVsaWF0b0Bn
bWFpbC5jb20+CkRhdGU6IEZyaSwgMjkgTWF5IDIwMjYgMTk6MTg6MzUgLTAzMDAKU3ViamVjdDog
W1BBVENIXSBFZ2xvdDogUmV1c2UgYnVmZmVyIHRvIGZvbnRpZnkgbWFya3VwIChidWcjODExNTAp
CgoqIGxpc3AvcHJvZ21vZGVzL2VnbG90LmVsIChlZ2xvdC0tbWFya3VwLWJ1ZmZlcikKKGVnbG90
LS1tYXJrdXAtYnVmZmVyLXJlbmRlcik6IE5ldyB2YXJpYWJsZXMuCihlZ2xvdC0tbWFya3VwLXJl
bmRlci1idWZmZXIpOiBOZXcgZnVuY3Rpb24uCihlZ2xvdC0tZm9ybWF0LW1hcmt1cCk6IFJlbmRl
ciBpbnRvIHRoZSByZXVzZWQgYnVmZmVyIGluc3RlYWQgb2YKYSBmcmVzaCB0ZW1wb3JhcnkgYnVm
ZmVyLgotLS0KIGxpc3AvcHJvZ21vZGVzL2VnbG90LmVsIHwgMzUgKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAzMCBpbnNlcnRpb25zKCspLCA1IGRl
bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpc3AvcHJvZ21vZGVzL2VnbG90LmVsIGIvbGlzcC9w
cm9nbW9kZXMvZWdsb3QuZWwKaW5kZXggZTk0NWRmYjk3MzkuLmNkMDRjZjkxZmNkIDEwMDY0NAot
LS0gYS9saXNwL3Byb2dtb2Rlcy9lZ2xvdC5lbAorKysgYi9saXNwL3Byb2dtb2Rlcy9lZ2xvdC5l
bApAQCAtMjI0MCw2ICsyMjQwLDMxIEBAIGVnbG90LS1zbmlwcGV0LWV4cGFuc2lvbi1mbgogICAg
ICAgICAgICAodW5sZXNzIChib3VuZC1hbmQtdHJ1ZS1wIHlhcy1taW5vci1tb2RlKSAoeWFzLW1p
bm9yLW1vZGUgMSkpCiAgICAgICAgICAgIChhcHBseSAjJ3lhcy1leHBhbmQtc25pcHBldCBhcmdz
KSkpKSkKIAorKGRlZnZhciBlZ2xvdC0tbWFya3VwLWJ1ZmZlciBuaWwKKyAgIlJldXNhYmxlIGJ1
ZmZlciB1c2VkIGJ5IGBlZ2xvdC0tZm9ybWF0LW1hcmt1cCcgdG8gZm9udGlmeSBtYXJrdXAuIikK
KworKGRlZnZhciBlZ2xvdC0tbWFya3VwLWJ1ZmZlci1yZW5kZXIgbmlsCisgICJSZW5kZXIgbW9k
ZSBgZWdsb3QtLW1hcmt1cC1idWZmZXInIGlzIGN1cnJlbnRseSBpbml0aWFsaXplZCBmb3IuIikK
KworKGRlZnVuIGVnbG90LS1tYXJrdXAtcmVuZGVyLWJ1ZmZlciAocmVuZGVyKQorICAiUmV0dXJu
IGEgYnVmZmVyIGluaXRpYWxpemVkIHdpdGggUkVOREVSIG1vZGUgZm9yIGZvbnRpZnlpbmcgbWFy
a3VwLgorVGhlIGJ1ZmZlciBpcyByZXVzZWQgYWNyb3NzIGNhbGxzIGFuZCBvbmx5IHJlLWluaXRp
YWxpemVkIHdoZW4gUkVOREVSCitjaGFuZ2VzLCBzbyB0aGF0IHRoZSAocG90ZW50aWFsbHkgZXhw
ZW5zaXZlKSBtYWpvci1tb2RlIHNldHVwIGlzIHBhaWQKK29uY2UgcGVyIHNlc3Npb24gaW5zdGVh
ZCBvZiBvbmNlIHBlciBtYXJrdXAgZnJhZ21lbnQgKGJ1ZyM4MTE1MCkuIgorICAodW5sZXNzIChh
bmQgKGJ1ZmZlci1saXZlLXAgZWdsb3QtLW1hcmt1cC1idWZmZXIpCisgICAgICAgICAgICAgICAo
ZXF1YWwgZWdsb3QtLW1hcmt1cC1idWZmZXItcmVuZGVyIHJlbmRlcikpCisgICAgKHdoZW4gKGJ1
ZmZlci1saXZlLXAgZWdsb3QtLW1hcmt1cC1idWZmZXIpCisgICAgICAoa2lsbC1idWZmZXIgZWds
b3QtLW1hcmt1cC1idWZmZXIpKQorICAgIChzZXRxIGVnbG90LS1tYXJrdXAtYnVmZmVyLXJlbmRl
ciByZW5kZXIKKyAgICAgICAgICBlZ2xvdC0tbWFya3VwLWJ1ZmZlcgorICAgICAgICAgICh3aXRo
LWN1cnJlbnQtYnVmZmVyIChnZW5lcmF0ZS1uZXctYnVmZmVyICIgKmVnbG90LW1hcmt1cCoiKQor
ICAgICAgICAgICAgOzsgRm9yIHRoZSBjb252ZW50aW9uYWwgYG1hcmtkb3duLW1vZGUnL2BnZm0t
dmlldy1tb2RlJyBwYXRoLgorICAgICAgICAgICAgKHNldHEtbG9jYWwgbWFya2Rvd24tZm9udGlm
eS1jb2RlLWJsb2Nrcy1uYXRpdmVseSB0KQorICAgICAgICAgICAgKGxldCAoKGluaGliaXQtbWVz
c2FnZSB0KSAobWVzc2FnZS1sb2ctbWF4IG5pbCkpCisgICAgICAgICAgICAgIChpZ25vcmUtZXJy
b3JzIChkZWxheS1tb2RlLWhvb2tzIChmdW5jYWxsIHJlbmRlcikpKSkKKyAgICAgICAgICAgIChj
dXJyZW50LWJ1ZmZlcikpKSkKKyAgZWdsb3QtLW1hcmt1cC1idWZmZXIpCisKIChjbC1kZWZ1biBl
Z2xvdC0tZm9ybWF0LW1hcmt1cAogICAgIChtYXJrdXAgJm9wdGlvbmFsIG1vZGUKICAgICAgICAg
ICAgICZhdXggc3RyaW5nIGxhbmcgcmVuZGVyIGV4dHJhY3QpCkBAIC0yMjc3LDExICsyMzAyLDEx
IEBAIGVnbG90LS1mb3JtYXQtbWFya3VwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
Im1hcmtkb3duIiBuaWwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoInBsYWludGV4
dCIgJ3RleHQtbW9kZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfIG1ham9yLW1v
ZGUpKSkpKSkKLSAgICAod2l0aC10ZW1wLWJ1ZmZlcgotICAgICAgKHNldHEtbG9jYWwgbWFya2Rv
d24tZm9udGlmeS1jb2RlLWJsb2Nrcy1uYXRpdmVseSB0KQotICAgICAgKGluc2VydCBzdHJpbmcp
Ci0gICAgICAobGV0ICgoaW5oaWJpdC1tZXNzYWdlIHQpIChtZXNzYWdlLWxvZy1tYXggbmlsKSkK
LSAgICAgICAgKGlnbm9yZS1lcnJvcnMgKGRlbGF5LW1vZGUtaG9va3MgKGZ1bmNhbGwgcmVuZGVy
KSkpCisgICAgKHdpdGgtY3VycmVudC1idWZmZXIgKGVnbG90LS1tYXJrdXAtcmVuZGVyLWJ1ZmZl
ciByZW5kZXIpCisgICAgICAobGV0ICgoaW5oaWJpdC1yZWFkLW9ubHkgdCkgKGluaGliaXQtbWVz
c2FnZSB0KSAobWVzc2FnZS1sb2ctbWF4IG5pbCkpCisgICAgICAgIChyZW1vdmUtb3ZlcmxheXMp
CisgICAgICAgIChlcmFzZS1idWZmZXIpCisgICAgICAgIChpbnNlcnQgc3RyaW5nKQogICAgICAg
ICAoZm9udC1sb2NrLWVuc3VyZSkKICAgICAgICAgKHN0cmluZy10cmltIChmdW5jYWxsIGV4dHJh
Y3QpKSkpKSkKIAotLSAKMi40Ny4zCgo=
--=-=-=--
bug-gnu-emacs@HIDDEN:bug#81150; Package emacs.
Full text available.
Received: (at 81150) by debbugs.gnu.org; 29 May 2026 18:21:39 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri May 29 14:21:39 2026
Received: from localhost ([127.0.0.1]:58146 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1wT1pu-0002jd-T1
for submit <at> debbugs.gnu.org; Fri, 29 May 2026 14:21:39 -0400
Received: from mail-ua1-x92a.google.com ([2607:f8b0:4864:20::92a]:42375)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <shipmints@HIDDEN>)
id 1wT1pq-0002j9-UP
for 81150 <at> debbugs.gnu.org; Fri, 29 May 2026 14:21:33 -0400
Received: by mail-ua1-x92a.google.com with SMTP id
a1e0cc1a2514c-96387cf6335so2057636241.1
for <81150 <at> debbugs.gnu.org>; Fri, 29 May 2026 11:21:30 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; t=1780078890; cv=none;
d=google.com; s=arc-20240605;
b=VwgbZIdOZ+m5ucy7npUxNrcDZ6xAo2hRZXXigm6VGdDVvExMjj6VX653FI+WjJmeHe
Dqe37sXhwieKjHXRbN0f5fnZnD89JMdj8CO0I6hU+G2w4laPyCed0uZeFJeqV8Y6fFUp
HFG/xYdCvbWXTjLsq2vekmY3Rq7FPlpmTnWAcEio5ZsoPghcTQrBuHpkAIZS0gLHPC3p
slWCPdlsryjW1c0zpfETFgmUh9nXaQGM3PccJZgnLf6otC2N9fgl9ypYn/IHw0Bu/k2I
gUeMWKU1UxpfNyyd3KKWqaYW53N0l79CUVjHxeZTE8HuhPtopXBdfFwsh+3nB/0+CTEW
EZzg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;
s=arc-20240605;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:dkim-signature;
bh=mYGrl7DvD/B7fqQHbTLb/yJNryL4vE5BQ5RtYlCEXvg=;
fh=AvbPrUSr/tl+uSTS67Z8Aodc7z/tUBsbCUGsSuQmK/I=;
b=kKlSi/+V0bUITGVxZTv75TCmneeT+iQpo5fZF1XrkJ+zbUZNLwuwR7FCm8/m3Roi3u
fV4IeclZKxcdZGWeo7+GXcxVfyC1APWmOgm3vLJuNmlNd1lG17NMpKlpb/UDTLFJvzE0
C8AVKKkgzAYds0eTOKJV96W5aOoCEsdUtydaen2yaS/pSk6XmqtPjx0gx8FbTbtT44iv
v6YsJSZDvnvuXxoHAMmX9qfhjrRJcDdR40ZqQcI0xKeQGh9b+xGjdNtbkLga3LKIbiTa
YuvcsaWCiFR/tY2CmMGxjK59BpOrR7f0Frj/+5zq7xm+XzGZU3y5HnxY/wSpkVrsq1HO
+Qqw==; darn=debbugs.gnu.org
ARC-Authentication-Results: i=1; mx.google.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20251104; t=1780078890; x=1780683690; darn=debbugs.gnu.org;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:from:to:cc:subject:date:message-id:reply-to;
bh=mYGrl7DvD/B7fqQHbTLb/yJNryL4vE5BQ5RtYlCEXvg=;
b=UxWgiJpWhwmobNFk+/leST4/8Sjo18kPiAk5oH2CvsTVOMCCCYgSetxGOAMpYPdsll
Bu8qEyo8jmpGb24lvvHe9pz3mSSZ7X9uAwSfvfBPe7g+xeVjdCNwKYW3HnGM8V4UrVDr
mqVWNmoNxb2hXhUT5Nu+Sa4yt/8EOySLlqHI9nrAUtCy0n/30mQ7or7nJj2G9Lk28oLf
D50biw1+zpPxor6Mbn3pQttm21uQ/OSlCcCFw6eyU3oAbw8TOMUhLznWx5IMCeCsm++I
hGd4SdIp13S/Pexmozxnmp48Zxldo5YMAd0lrblZwFPsxgwBBz0YFI3RC7QvX2+JXgcC
2WGA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20251104; t=1780078890; x=1780683690;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
:message-id:reply-to;
bh=mYGrl7DvD/B7fqQHbTLb/yJNryL4vE5BQ5RtYlCEXvg=;
b=Q2WZ9JPvBqD19AKpokiH/c3VH7l41j6lpTwv3I9uHUn16UZLuz41VT37md4ltsVEv8
l3+R3I3xZuuNKXlSEgAf2FmWDpjkLdX+2z6P8J7CkJueliOzcQytSbPFoNMc49YS+12c
Z2fwutTI+JTupQ/Nl3LxtSbn0sZUZo2Pg8AXIzsKLFClSeBkgPla0Q6s5ltdIZyzLWze
C3/Rtdq5+XFeAQHPNmYy+mWY05v2Gbg/5nPJMyWfjpJ4OxYNlKJIhyu55D/BcjyP/zs+
5+h5V9LddekMAnlUkN6KWG0oUhLFd+hyQnpHDgGPG0PDYAS9rRga14nHKRXzYLE0yHI/
6LQA==
X-Gm-Message-State: AOJu0YzWFZ1Oois3ipj5b4JrzlyFRn+cPZ7ZtAmcdIc07aAQsI0zN6Fi
b54cRzmVfJVvT7xqNYRBIp6FxR7WwLLLhBeF9zGKRpY6glS/3mWJheH4f5Y+CTjSuEbkR0rUq9N
ELHhAiA5bZVC9kYslzx1NxhT2/mxeBlL96w==
X-Gm-Gg: Acq92OE44aCJv+CF1Efeq65rnFv776S6DUccDVWCuEktdYvOIQmbTwkvBAVt2e3KFQV
oNFAvIEFPYu0ejO683I13fUzLagtXuBu/lmbIZxmGeRc1NKyicmigt4fWqhNNERzGULO8GSpv46
1xnhJhVYpoqsBR5tKmcbE/NGqgGJqWHc+kt7kV/ww/AC1aCN4fLmMJVwqrCn5FhbArTW++doBgM
1mtScZmK8nZ0BTwXGJvmyfEUNqji+URNxHTulN0a58vCVXarZnCrNUsCrDf85E/VcSvQ8WB1BEA
qkPR+elm5cUS27xxJ22mKW+bMcxLGfXfkPL2PiHBQ3Czkr/YCO5hGoLtv305MBXA81qFj0QRVJv
gS/UhYcvhcf6u8rre6ywBMrtAe/zp9eJxyAB3iEefK8JDWW4qs9aApQ/7SwY=
X-Received: by 2002:a05:6102:4414:b0:634:420a:ab25 with SMTP id
ada2fe7eead31-6c635d16c95mr294972137.9.1780078889869; Fri, 29 May 2026
11:21:29 -0700 (PDT)
MIME-Version: 1.0
References: <CAJ8YToa+nueew9wQ52xJtD-jXOdcA+Vq+NZEVcd=Q3V66opHSg@HIDDEN>
In-Reply-To: <CAJ8YToa+nueew9wQ52xJtD-jXOdcA+Vq+NZEVcd=Q3V66opHSg@HIDDEN>
From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN>
Date: Fri, 29 May 2026 14:21:18 -0400
X-Gm-Features: AVHnY4ISDtlNzKLXUdMXm7eom_vlc_msgi42_C5RugS_-OjB5xWxSw2H6u9IHFI
Message-ID: <CAN+1HbpLJqPWufz3mOmAm1Oq=+_a38aMH5FZub5-pn5=C4msSw@HIDDEN>
Subject: Re: bug#81150: 31.0.60; eglot: performance issue with markdown-ts-mode
To: Romain Ouabdelkader <romain.ouabdelkader@HIDDEN>
Content-Type: multipart/alternative; boundary="000000000000e726720652f8e9f2"
X-Spam-Score: 1.0 (+)
X-Debbugs-Envelope-To: 81150
Cc: Rahul Juliato <rahul.juliato@HIDDEN>,
=?UTF-8?B?Sm/Do28gVMOhdm9yYQ==?= <joaotavora@HIDDEN>, 81150 <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: 0.0 (/)
--000000000000e726720652f8e9f2
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
On Fri, May 29, 2026 at 2:11=E2=80=AFPM Romain Ouabdelkader <
romain.ouabdelkader@HIDDEN> wrote:
> Hello,
>
> I noticed a big performance issue after updating to emacs31 related to
> eglot/markdown-ts-mode.
> Cursor movement or edition inside function calls in python are very
> slow, emacs freezes while displaying the eldoc function signature.
>
> The freeze duration depends on the function complexity, big function/clas=
s
> like pydantic.Fields hangs emacs for more than 3 seconds.
>
> Reproduced with emacs -Q.
> How to reproduce:
> - Enable eglot with pyright-langserver
> - Place your cursor in a function call like Field("te|st")
> - Wait eldoc-idle-delay (0.5s by default)
> - Then try to move cursor or insert char
> - Emacs will hang
>
> Note that I reproduced the issue with both pyright-langserver and ty,
> but pyright-langserver performance seems a bit worse (maybe they don't
> return exactly the same doc).
>
> Attached is a lisp cpu profile.
> I also provided two sample files: one using pydantic, and another
> standalone
> one if you can't install it (I copied pydantic's Field signature).
>
> I used pydantic's Field because the hang is very apparent but it happens
> on all decently big functions.
>
>
> In GNU Emacs 31.0.60 (build 1, aarch64-apple-darwin24.6.0, NS
> appkit-2575.70 Version 15.7.4 (Build 24G517)) of 2026-05-29 built on
> MBPro-MHFY4Y3W3H
> Windowing system distributor 'Apple', version 10.3.2575
> System Description: macOS 15.7.4
>
> Configured using:
> 'configure --disable-dependency-tracking --disable-silent-rules
> --enable-locallisppath=3D/opt/homebrew/share/emacs/site-lisp
> --infodir=3D/opt/homebrew/Cellar/emacs-plus@31/31.0.60/share/info/emacs
> --prefix=3D/opt/homebrew/Cellar/emacs-plus@31/31.0.60
> --with-native-compilation=3Daot --with-xml2 --with-gnutls
> --without-compress-install 'CFLAGS=3D-DFD_SETSIZE=3D10000
> -DDARWIN_UNLIMITED_SELECT -I/opt/homebrew/opt/sqlite/include
> -I/opt/homebrew/opt/gcc/include -I/opt/homebrew/opt/libgccjit/include'
> --without-dbus --without-imagemagick --with-modules --with-rsvg
> --with-webp --with-ns --disable-ns-self-contained
> 'LDFLAGS=3D-L/opt/homebrew/opt/sqlite/lib -L/opt/homebrew/lib/gcc/15
> -Wl,-rpath,/opt/homebrew/lib/gcc/15''
>
> Configured features:
> ACL GIF GLIB GMP GNUTLS JPEG LCMS2 LIBXML2 MODULES NATIVE_COMP NOTIFY
> KQUEUE NS PDUMPER PNG RSVG SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS
> TREE_SITTER WEBP XIM ZLIB
>
> Important settings:
> value of $LANG: en_US.UTF-8
> locale-coding-system: utf-8-unix
>
> Major mode: Python
>
> Minor modes in effect:
> midnight-mode: t
> consult-denote-mode: t
> denote-menu-bar-mode: t
> ws-butler-mode: t
> magit-prime-mode: t
> repeat-fu-mode: t
> highlight-parentheses-mode: t
> topsy-mode: t
> dirvish-override-dired-mode: t
> global-jinx-mode: t
> jinx-mode: t
> meow-global-mode: t
> meow-mode: t
> meow-normal-mode: t
> meow-esc-mode: t
> marginalia-mode: t
> vertico-multiform-mode: t
> vertico-mode: t
> sideline-mode: t
> csv-field-index-mode: t
> global-treesit-fold-mode: t
> treesit-fold-mode: t
> global-org-modern-mode: t
> dape-breakpoint-global-mode: t
> dape-breakpoint-mode: t
> dape-many-windows: t
> repeat-mode: t
> windmove-mode: t
> global-diff-hl-mode: t
> diff-hl-mode: t
> dtrt-indent-global-mode: t
> dtrt-indent-mode: t
> winner-mode: t
> fancy-compilation-mode: t
> apheleia-mode: t
> corfu-popupinfo-mode: t
> global-corfu-mode: t
> corfu-mode: t
> which-key-mode: t
> treemacs-filewatch-mode: t
> treemacs-follow-mode: t
> treemacs-git-mode: t
> treemacs-fringe-indicator-mode: t
> rainbow-delimiters-mode: t
> eglot--managed-mode: t
> hexl-follow-ascii: t
> magit-delta-mode: t
> global-git-commit-mode: t
> yas-global-mode: t
> yas-minor-mode: t
> doom-modeline-mode: t
> electric-pair-mode: t
> gcmh-mode: t
> flymake-mode: t
> override-global-mode: t
> server-mode: t
> el-patch-use-package-mode: t
> pixel-scroll-precision-mode: t
> global-subword-mode: t
> subword-mode: t
> global-so-long-mode: t
> delete-selection-mode: (delete-selection-pre-hook t)
> global-auto-revert-mode: t
> savehist-mode: t
> straight-use-package-mode: t
> straight-package-neutering-mode: t
> tooltip-mode: t
> global-eldoc-mode: t
> eldoc-mode: t
> show-paren-mode: t
> electric-indent-mode: t
> mouse-wheel-mode: t
> file-name-shadow-mode: t
> global-font-lock-mode: t
> font-lock-mode: t
> minibuffer-nonselected-mode: t
> minibuffer-regexp-mode: t
> line-number-mode: t
> transient-mark-mode: t
> auto-composition-mode: t
> auto-encryption-mode: t
> auto-compression-mode: t
>
> Load-path shadows:
> /Users/romain.ouabdelkader/.emacs.d/straight/build/which-key/which-key
> hides /opt/homebrew/Cellar/emacs-plus@31
> /31.0.60/share/emacs/31.0.60/lisp/which-key
> /Users/romain.ouabdelkader/.emacs.d/straight/build/transient/transient
> hides /opt/homebrew/Cellar/emacs-plus@31
> /31.0.60/share/emacs/31.0.60/lisp/transient
> /Users/romain.ouabdelkader/.emacs.d/straight/build/jsonrpc/jsonrpc hides
> /opt/homebrew/Cellar/emacs-plus@31
> /31.0.60/share/emacs/31.0.60/lisp/jsonrpc
> /Users/romain.ouabdelkader/.emacs.d/straight/build/bind-key/bind-key hide=
s
> /opt/homebrew/Cellar/emacs-plus@31
> /31.0.60/share/emacs/31.0.60/lisp/bind-key
> /Users/romain.ouabdelkader/emacs-conf/custom hides
> /opt/homebrew/Cellar/emacs-plus@31/31.0.60/share/emacs/31.0.60/lisp/custo=
m
> /Users/romain.ouabdelkader/.emacs.d/straight/build/use-package/use-packag=
e-jump
> hides /opt/homebrew/Cellar/emacs-plus@31
> /31.0.60/share/emacs/31.0.60/lisp/use-package/use-package-jump
> /Users/romain.ouabdelkader/.emacs.d/straight/build/use-package/use-packag=
e-ensure-system-package
> hides /opt/homebrew/Cellar/emacs-plus@31
> /31.0.60/share/emacs/31.0.60/lisp/use-package/use-package-ensure-system-p=
ackage
> /Users/romain.ouabdelkader/.emacs.d/straight/build/use-package/use-packag=
e-diminish
> hides /opt/homebrew/Cellar/emacs-plus@31
> /31.0.60/share/emacs/31.0.60/lisp/use-package/use-package-diminish
> /Users/romain.ouabdelkader/.emacs.d/straight/build/use-package/use-packag=
e
> hides /opt/homebrew/Cellar/emacs-plus@31
> /31.0.60/share/emacs/31.0.60/lisp/use-package/use-package
> /Users/romain.ouabdelkader/.emacs.d/straight/build/use-package/use-packag=
e-delight
> hides /opt/homebrew/Cellar/emacs-plus@31
> /31.0.60/share/emacs/31.0.60/lisp/use-package/use-package-delight
> /Users/romain.ouabdelkader/.emacs.d/straight/build/use-package/use-packag=
e-lint
> hides /opt/homebrew/Cellar/emacs-plus@31
> /31.0.60/share/emacs/31.0.60/lisp/use-package/use-package-lint
> /Users/romain.ouabdelkader/.emacs.d/straight/build/use-package/use-packag=
e-core
> hides /opt/homebrew/Cellar/emacs-plus@31
> /31.0.60/share/emacs/31.0.60/lisp/use-package/use-package-core
> /Users/romain.ouabdelkader/.emacs.d/straight/build/use-package/use-packag=
e-ensure
> hides /opt/homebrew/Cellar/emacs-plus@31
> /31.0.60/share/emacs/31.0.60/lisp/use-package/use-package-ensure
> /Users/romain.ouabdelkader/.emacs.d/straight/build/use-package/use-packag=
e-bind-key
> hides /opt/homebrew/Cellar/emacs-plus@31
> /31.0.60/share/emacs/31.0.60/lisp/use-package/use-package-bind-key
> /Users/romain.ouabdelkader/.emacs.d/straight/build/compat/compat hides
> /opt/homebrew/Cellar/emacs-plus@31
> /31.0.60/share/emacs/31.0.60/lisp/emacs-lisp/compat
> /Users/romain.ouabdelkader/.emacs.d/straight/build/seq/seq hides
> /opt/homebrew/Cellar/emacs-plus@31
> /31.0.60/share/emacs/31.0.60/lisp/emacs-lisp/seq
>
> Features:
> (shadow mail-extr emacsbug lisp-mnt message rfc822 mml mml-sec mm-decode
> mm-bodies mm-encode mailabbrev gmm-utils sendmail help-fns radix-tree
> tramp-cmds yank-media dired-aux dirvish-widgets vc-hg vc-bzr vc-src
> vc-sccs vc-svn vc-cvs vc-rcs bug-reference magit-extras consult-xref
> toml-ts-mode yaml-ts-mode html-ts-mode markdown-ts-mode vertico-repeat
> repeat-fu-preset-meow graphics custom-monokai-theme package-review calc
> calc-loaddefs calc-macs verb verb-restclient verb-util verb-autoloads
> agent-shell agent-shell-viewport agent-shell-ui agent-shell-worktree
> agent-shell-usage agent-shell-styles agent-shell-qwen agent-shell-pi
> agent-shell-opencode agent-shell-openai agent-shell-mistral
> agent-shell-kiro agent-shell-kimi agent-shell-hermes
> agent-shell-active-message agent-shell-heartbeat agent-shell-goose
> agent-shell-google agent-shell-github agent-shell-droid
> agent-shell-experimental agent-shell-diff agent-shell-devcontainer
> agent-shell-cursor agent-shell-config agent-shell-completion
> agent-shell-project agent-shell-cline agent-shell-codebuddy
> agent-shell-auggie agent-shell-anthropic markdown-overlays
> markdown-overlays-tables agent-shell-autoloads acp acp-traffic
> acp-autoloads shell-maker goto-addr shell-maker-autoloads midnight
> consult-denote consult-denote-autoloads denote denote-autoloads
> use-package-ensure ws-butler ws-butler-autoloads magit-prime
> magit-prime-autoloads macher gptel-context macher-autoloads org-download
> org-attach org-download-autoloads casual casual-lib package url-handlers
> package-activate casual-autoloads minuet plz minuet-autoloads
> plz-autoloads repeat-fu repeat-fu-autoloads ediff ediff-merg ediff-mult
> ediff-wind ediff-diff ediff-help ediff-init ediff-util cycle-quotes
> cycle-quotes-autoloads gptel-quick gptel-quick-autoloads
> highlight-parentheses highlight-parentheses-autoloads crux
> crux-autoloads topsy topsy-autoloads dirvish dirvish-autoloads jinx
> jinx-autoloads impatient-mode-autoloads htmlize-autoloads
> simple-httpd-autoloads consult-dir recentf consult-dir-autoloads
> web-mode advice web-mode-autoloads meow-tree-sitter
> meow-tree-sitter-autoloads meow-vterm meow-vterm-autoloads meow
> meow-tutor meow-cheatsheet meow-cheatsheet-layout meow-core meow-shims
> meow-esc meow-command array meow-thing meow-visual meow-keypad
> meow-beacon meow-helpers meow-util meow-keymap meow-face meow-var
> meow-autoloads embark-org embark-consult embark ffap
> embark-consult-autoloads embark-autoloads marginalia
> marginalia-autoloads consult-compile consult consult-autoloads
> vertico-sort vertico-multiform vertico vertico-autoloads
> sideline-flymake sideline-flymake-autoloads sideline sideline-autoloads
> yaml gptel-agent gptel-agent-tools url-http url-auth mail-parse rfc2231
> rfc2047 rfc2045 ietf-drums url-gw nsm eww vtable url-queue shr
> pixel-fill kinsoku url-file svg xml puny mm-url gnus nnheader gnus-util
> range mm-util mail-prsvr gptel-agent-autoloads yaml-autoloads
> gptel-integrations mcp mcp-autoloads gptel-openai gptel-anthropic gptel
> gptel-request gptel-autoloads nerd-icons-corfu
> nerd-icons-corfu-autoloads csv-mode sort csv-mode-autoloads treesit-fold
> treesit-fold-summary treesit-fold-parsers treesit-fold-util
> treesit-fold-autoloads terraform-mode-autoloads hcl-mode-autoloads
> org-modern-indent org-indent org-modern-indent-autoloads org-modern
> org-modern-autoloads dape gdb-mi bindat gud dape-autoloads
> jsonrpc-autoloads repeat windmove diff-hl-show-hunk-inline
> diff-hl-inline-popup diff-hl-show-hunk diff-hl log-view vc-dir vc
> diff-hl-autoloads browse-at-remote browse-at-remote-autoloads wgrep grep
> wgrep-autoloads dtrt-indent dtrt-indent-autoloads winner cus-edit
> cus-start cus-load fancy-compilation fancy-compilation-autoloads
> apheleia apheleia-rcs apheleia-dp apheleia-formatters apheleia-utils
> apheleia-log apheleia-formatter-context apheleia-autoloads cape dabbrev
> cape-autoloads async async-autoloads orderless orderless-autoloads
> corfu-popupinfo corfu-auto corfu corfu-autoloads eldoc-box
> eldoc-box-autoloads which-key which-key-autoloads treemacs
> treemacs-header-line treemacs-compatibility treemacs-mode
> treemacs-bookmarks treemacs-tags treemacs-interface treemacs-persistence
> treemacs-filewatch-mode treemacs-follow-mode treemacs-rendering
> treemacs-annotations treemacs-async treemacs-workspaces treemacs-dom
> treemacs-visuals treemacs-fringe-indicator pulse treemacs-faces
> treemacs-icons treemacs-scope treemacs-themes treemacs-core-utils
> pfuture hl-line treemacs-logging treemacs-customization treemacs-macros
> treemacs-autoloads cfrs-autoloads posframe-autoloads hydra-autoloads
> lv-autoloads pfuture-autoloads ace-window-autoloads avy-autoloads
> markdown-mode markdown-mode-autoloads rainbow-delimiters
> rainbow-delimiters-autoloads typescript-ts-mode string-inflection
> string-inflection-autoloads groovy-mode-autoloads kotlin-mode-autoloads
> pyvenv pyvenv-autoloads multi-vterm multi-vterm-autoloads vterm-toggle
> tramp-sh vterm-toggle-autoloads vterm magit-bookmark bookmark
> tramp-cache time-stamp tramp trampver tramp-integration tramp-message
> tramp-compat parse-time iso8601 tramp-loaddefs face-remap color term
> ehelp vterm-module term/xterm xterm vterm-autoloads sqlformat-autoloads
> reformatter-autoloads sql view rust-mode-autoloads js c-ts-common
> cc-mode cc-fonts cc-guess cc-menus cc-cmds eglot tree-widget wid-edit
> external-completion jsonrpc seq-25 ert ewoc debug backtrace
> project-local dockerfile-mode dockerfile-mode-autoloads nhexl-mode
> disp-table hexl nhexl-mode-autoloads swift-mode-autoloads yaml-mode
> yaml-mode-autoloads quickrun ht eshell em-banner esh-mode esh-var
> esh-cmd esh-ext esh-proc esh-opt esh-io esh-arg esh-module
> esh-module-loaddefs esh-util quickrun-autoloads ht-autoloads magit-delta
> xterm-color magit-delta-autoloads xterm-color-autoloads git-timemachine
> vc-git files-x vc-dispatcher git-timemachine-autoloads epa-file request
> mailheader mail-utils request-autoloads magit-submodule magit-blame
> magit-stash magit-reflog magit-bisect magit-push magit-pull magit-fetch
> magit-clone magit-remote magit-commit magit-sequence magit-notes
> magit-worktree magit-tag magit-merge magit-branch magit-reset
> magit-files magit-refs magit-status magit epa derived epg rfc6068
> epg-config magit-repos magit-apply dired dired-loaddefs magit-wip
> magit-log magit-diff which-func smerge-mode diff diff-mode track-changes
> git-commit log-edit pcvs-util add-log magit-core magit-autorevert
> magit-margin magit-transient magit-process magit-mode browse-url url
> url-proxy url-privacy url-expand url-methods url-history url-cookie
> generate-lisp-file url-domsuf url-util mailcap benchmark magit-git
> magit-base magit-section cursor-sensor transient pp crm llama
> transient-autoloads magit-section-autoloads llama-autoloads yasnippet
> yasnippet-autoloads use-package-diminish multiple-cursors
> mc-separate-operations rectangular-region-mode mc-mark-pop mc-edit-lines
> mc-hide-unmatched-lines-mode mc-mark-more sgml-mode facemenu dom
> mc-cycle-cursors multiple-cursors-core rect multiple-cursors-autoloads
> finder-inf phi-search phi-search-core phi-search-autoloads all-the-icons
> all-the-icons-faces data-material data-weathericons data-octicons
> data-fileicons data-faicons data-alltheicons all-the-icons-autoloads
> doom-modeline doom-modeline-segments doom-modeline-env
> doom-modeline-core shrink-path nerd-icons nerd-icons-faces
> nerd-icons-data nerd-icons-data-mdicon nerd-icons-data-flicon
> nerd-icons-data-codicon nerd-icons-data-devicon nerd-icons-data-sucicon
> nerd-icons-data-wicon nerd-icons-data-faicon nerd-icons-data-powerline
> nerd-icons-data-octicon nerd-icons-data-pomicon nerd-icons-data-ipsicon
> doom-modeline-autoloads shrink-path-autoloads nerd-icons-autoloads
> symbol-overlay symbol-overlay-autoloads seq-autoloads dumb-jump xref
> dumb-jump-autoloads vundo vundo-autoloads elec-pair diminish
> diminish-autoloads gcmh gcmh-autoloads org-agenda org-element
> org-persist xdg org-id avl-tree generator org-refile ob-shell ob-sql
> ob-python python pcase ob-dot org ob ob-tangle ob-ref ob-lob ob-table
> ob-exp org-macro org-src sh-script smie treesit executable ob-comint
> org-element-ast inline org-pcomplete org-list org-footnote org-faces
> org-entities time-date noutline outline org-version ob-emacs-lisp
> ob-core ob-eval org-cycle org-table ol org-fold org-fold-core org-keys
> oc org-compat org-loaddefs find-func cal-menu calendar cal-loaddefs
> org-macs format-spec flymake compile text-property-search thingatpt
> edmacro kmacro use-package-bind-key bind-key easy-mmode pass f dash
> imenu password-store-otp s pass-autoloads f-autoloads dash-autoloads
> password-store-otp-autoloads s-autoloads password-store auth-source-pass
> byte-opt url-parse url-vars auth-source eieio eieio-core password-cache
> json map with-editor shell pcomplete server cond-let compat
> password-store-autoloads with-editor-autoloads cond-let-autoloads
> compat-autoloads undo-fu undo-fu-autoloads el-patch-autoloads el-patch
> el-patch-stub cc-styles cc-align cc-engine cc-vars cc-defs pixel-scroll
> comint ansi-osc ansi-color ring project use-package-core cap-words
> superword subword so-long comp comp-cstr warnings icons comp-run
> comp-common rx delsel autorevert filenotify savehist cl
> use-package-autoloads info bind-key-autoloads straight-autoloads cl-seq
> cl-extra help-mode straight subr-x cl-macs gv cl-loaddefs cl-lib
> bytecomp byte-compile rmc iso-transl tooltip cconv eldoc paren electric
> uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel
> term/ns-win ns-win ucs-normalize mule-util term/common-win tool-bar dnd
> fontset image regexp-opt fringe tabulated-list replace newcomment
> text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow
> isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax
> font-core term/tty-colors frame minibuffer nadvice seq simple cl-generic
> indonesian philippine cham georgian utf-8-lang misc-lang vietnamese
> tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek
> romanian slovak czech european ethiopic indian cyrillic chinese
> composite emoji-zwj charscript charprop case-table epa-hook
> jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs
> theme-loaddefs faces cus-face macroexp files window text-properties
> overlay sha1 md5 base64 format env code-pages mule custom widget keymap
> hashtable-print-readable backquote threads kqueue cocoa ns lcms2
> multi-tty make-network-process tty-child-frames native-compile emacs)
>
> Memory information:
> ((conses 16 1157465 3256484) (symbols 48 62369 112)
> (strings 32 271774 81068) (string-bytes 1 10625027)
> (vectors 16 115096) (vector-slots 8 1897416 2274258)
> (floats 8 2043 19015) (intervals 56 14505 8329) (buffers 1064 46))
>
+ Joao and Rahul
--000000000000e726720652f8e9f2
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon=
t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">=
On Fri, May 29, 2026 at 2:11=E2=80=AFPM Romain Ouabdelkader <<a href=3D"=
mailto:romain.ouabdelkader@HIDDEN">romain.ouabdelkader@HIDDEN</a>>=
wrote:</span></div></div><div class=3D"gmail_quote gmail_quote_container">=
<blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-=
left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr">Hello,<b=
r><br>I noticed a big performance issue after updating to emacs31 related t=
o<br>eglot/markdown-ts-mode.<br>Cursor movement or edition inside function =
calls in python are very<br>slow, emacs freezes while displaying the eldoc =
function signature.<br><br>The freeze duration depends on the function comp=
lexity, big function/class<br>like pydantic.Fields hangs emacs for more tha=
n 3 seconds.<br><br>Reproduced with emacs -Q.<br>How to reproduce:<br>- Ena=
ble eglot with pyright-langserver<br>- Place your cursor in a function call=
like Field("te|st")<br>- Wait eldoc-idle-delay (0.5s by default)=
<br>- Then try to move cursor or insert char<br>- Emacs will hang<br><br>No=
te that I reproduced the issue with both pyright-langserver and ty,<br>but =
pyright-langserver performance seems a bit worse (maybe they don't<br>r=
eturn exactly the same doc).<br><br>Attached is a lisp cpu profile.<br>I al=
so provided two sample files: one using pydantic, and another standalone<br=
>one if you can't install it (I copied pydantic's Field signature).=
<br><br>I used pydantic's=C2=A0Field because the hang is very apparent =
but it happens=C2=A0<div>on all decently big functions.<br><br><br>In GNU E=
macs 31.0.60 (build 1, aarch64-apple-darwin24.6.0, NS<br>=C2=A0appkit-2575.=
70 Version 15.7.4 (Build 24G517)) of 2026-05-29 built on<br>=C2=A0MBPro-MHF=
Y4Y3W3H<br>Windowing system distributor 'Apple', version 10.3.2575<=
br>System Description: =C2=A0macOS 15.7.4<br><br>Configured using:<br>=C2=
=A0'configure --disable-dependency-tracking --disable-silent-rules<br>=
=C2=A0--enable-locallisppath=3D/opt/homebrew/share/emacs/site-lisp<br>=C2=
=A0--infodir=3D/opt/homebrew/Cellar/emacs-plus@31/31.0.60/share/info/emacs<=
br>=C2=A0--prefix=3D/opt/homebrew/Cellar/emacs-plus@31/31.0.60<br>=C2=A0--w=
ith-native-compilation=3Daot --with-xml2 --with-gnutls<br>=C2=A0--without-c=
ompress-install 'CFLAGS=3D-DFD_SETSIZE=3D10000<br>=C2=A0-DDARWIN_UNLIMI=
TED_SELECT -I/opt/homebrew/opt/sqlite/include<br>=C2=A0-I/opt/homebrew/opt/=
gcc/include -I/opt/homebrew/opt/libgccjit/include'<br>=C2=A0--without-d=
bus --without-imagemagick --with-modules --with-rsvg<br>=C2=A0--with-webp -=
-with-ns --disable-ns-self-contained<br>=C2=A0'LDFLAGS=3D-L/opt/homebre=
w/opt/sqlite/lib -L/opt/homebrew/lib/gcc/15<br>=C2=A0-Wl,-rpath,/opt/homebr=
ew/lib/gcc/15''<br><br>Configured features:<br>ACL GIF GLIB GMP GNU=
TLS JPEG LCMS2 LIBXML2 MODULES NATIVE_COMP NOTIFY<br>KQUEUE NS PDUMPER PNG =
RSVG SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS<br>TREE_SITTER WEBP XIM ZLIB<=
br><br>Important settings:<br>=C2=A0 value of $LANG: en_US.UTF-8<br>=C2=A0 =
locale-coding-system: utf-8-unix<br><br>Major mode: Python<br><br>Minor mod=
es in effect:<br>=C2=A0 midnight-mode: t<br>=C2=A0 consult-denote-mode: t<b=
r>=C2=A0 denote-menu-bar-mode: t<br>=C2=A0 ws-butler-mode: t<br>=C2=A0 magi=
t-prime-mode: t<br>=C2=A0 repeat-fu-mode: t<br>=C2=A0 highlight-parentheses=
-mode: t<br>=C2=A0 topsy-mode: t<br>=C2=A0 dirvish-override-dired-mode: t<b=
r>=C2=A0 global-jinx-mode: t<br>=C2=A0 jinx-mode: t<br>=C2=A0 meow-global-m=
ode: t<br>=C2=A0 meow-mode: t<br>=C2=A0 meow-normal-mode: t<br>=C2=A0 meow-=
esc-mode: t<br>=C2=A0 marginalia-mode: t<br>=C2=A0 vertico-multiform-mode: =
t<br>=C2=A0 vertico-mode: t<br>=C2=A0 sideline-mode: t<br>=C2=A0 csv-field-=
index-mode: t<br>=C2=A0 global-treesit-fold-mode: t<br>=C2=A0 treesit-fold-=
mode: t<br>=C2=A0 global-org-modern-mode: t<br>=C2=A0 dape-breakpoint-globa=
l-mode: t<br>=C2=A0 dape-breakpoint-mode: t<br>=C2=A0 dape-many-windows: t<=
br>=C2=A0 repeat-mode: t<br>=C2=A0 windmove-mode: t<br>=C2=A0 global-diff-h=
l-mode: t<br>=C2=A0 diff-hl-mode: t<br>=C2=A0 dtrt-indent-global-mode: t<br=
>=C2=A0 dtrt-indent-mode: t<br>=C2=A0 winner-mode: t<br>=C2=A0 fancy-compil=
ation-mode: t<br>=C2=A0 apheleia-mode: t<br>=C2=A0 corfu-popupinfo-mode: t<=
br>=C2=A0 global-corfu-mode: t<br>=C2=A0 corfu-mode: t<br>=C2=A0 which-key-=
mode: t<br>=C2=A0 treemacs-filewatch-mode: t<br>=C2=A0 treemacs-follow-mode=
: t<br>=C2=A0 treemacs-git-mode: t<br>=C2=A0 treemacs-fringe-indicator-mode=
: t<br>=C2=A0 rainbow-delimiters-mode: t<br>=C2=A0 eglot--managed-mode: t<b=
r>=C2=A0 hexl-follow-ascii: t<br>=C2=A0 magit-delta-mode: t<br>=C2=A0 globa=
l-git-commit-mode: t<br>=C2=A0 yas-global-mode: t<br>=C2=A0 yas-minor-mode:=
t<br>=C2=A0 doom-modeline-mode: t<br>=C2=A0 electric-pair-mode: t<br>=C2=
=A0 gcmh-mode: t<br>=C2=A0 flymake-mode: t<br>=C2=A0 override-global-mode: =
t<br>=C2=A0 server-mode: t<br>=C2=A0 el-patch-use-package-mode: t<br>=C2=A0=
pixel-scroll-precision-mode: t<br>=C2=A0 global-subword-mode: t<br>=C2=A0 =
subword-mode: t<br>=C2=A0 global-so-long-mode: t<br>=C2=A0 delete-selection=
-mode: (delete-selection-pre-hook t)<br>=C2=A0 global-auto-revert-mode: t<b=
r>=C2=A0 savehist-mode: t<br>=C2=A0 straight-use-package-mode: t<br>=C2=A0 =
straight-package-neutering-mode: t<br>=C2=A0 tooltip-mode: t<br>=C2=A0 glob=
al-eldoc-mode: t<br>=C2=A0 eldoc-mode: t<br>=C2=A0 show-paren-mode: t<br>=
=C2=A0 electric-indent-mode: t<br>=C2=A0 mouse-wheel-mode: t<br>=C2=A0 file=
-name-shadow-mode: t<br>=C2=A0 global-font-lock-mode: t<br>=C2=A0 font-lock=
-mode: t<br>=C2=A0 minibuffer-nonselected-mode: t<br>=C2=A0 minibuffer-rege=
xp-mode: t<br>=C2=A0 line-number-mode: t<br>=C2=A0 transient-mark-mode: t<b=
r>=C2=A0 auto-composition-mode: t<br>=C2=A0 auto-encryption-mode: t<br>=C2=
=A0 auto-compression-mode: t<br><br>Load-path shadows:<br>/Users/romain.oua=
bdelkader/.emacs.d/straight/build/which-key/which-key hides /opt/homebrew/C=
ellar/emacs-plus@31/31.0.60/share/emacs/31.0.60/lisp/which-key<br>/Users/ro=
main.ouabdelkader/.emacs.d/straight/build/transient/transient hides /opt/ho=
mebrew/Cellar/emacs-plus@31/31.0.60/share/emacs/31.0.60/lisp/transient<br>/=
Users/romain.ouabdelkader/.emacs.d/straight/build/jsonrpc/jsonrpc hides /op=
t/homebrew/Cellar/emacs-plus@31/31.0.60/share/emacs/31.0.60/lisp/jsonrpc<br=
>/Users/romain.ouabdelkader/.emacs.d/straight/build/bind-key/bind-key hides=
/opt/homebrew/Cellar/emacs-plus@31/31.0.60/share/emacs/31.0.60/lisp/bind-k=
ey<br>/Users/romain.ouabdelkader/emacs-conf/custom hides /opt/homebrew/Cell=
ar/emacs-plus@31/31.0.60/share/emacs/31.0.60/lisp/custom<br>/Users/romain.o=
uabdelkader/.emacs.d/straight/build/use-package/use-package-jump hides /opt=
/homebrew/Cellar/emacs-plus@31/31.0.60/share/emacs/31.0.60/lisp/use-package=
/use-package-jump<br>/Users/romain.ouabdelkader/.emacs.d/straight/build/use=
-package/use-package-ensure-system-package hides /opt/homebrew/Cellar/emacs=
-plus@31/31.0.60/share/emacs/31.0.60/lisp/use-package/use-package-ensure-sy=
stem-package<br>/Users/romain.ouabdelkader/.emacs.d/straight/build/use-pack=
age/use-package-diminish hides /opt/homebrew/Cellar/emacs-plus@31/31.0.60/s=
hare/emacs/31.0.60/lisp/use-package/use-package-diminish<br>/Users/romain.o=
uabdelkader/.emacs.d/straight/build/use-package/use-package hides /opt/home=
brew/Cellar/emacs-plus@31/31.0.60/share/emacs/31.0.60/lisp/use-package/use-=
package<br>/Users/romain.ouabdelkader/.emacs.d/straight/build/use-package/u=
se-package-delight hides /opt/homebrew/Cellar/emacs-plus@31/31.0.60/share/e=
macs/31.0.60/lisp/use-package/use-package-delight<br>/Users/romain.ouabdelk=
ader/.emacs.d/straight/build/use-package/use-package-lint hides /opt/homebr=
ew/Cellar/emacs-plus@31/31.0.60/share/emacs/31.0.60/lisp/use-package/use-pa=
ckage-lint<br>/Users/romain.ouabdelkader/.emacs.d/straight/build/use-packag=
e/use-package-core hides /opt/homebrew/Cellar/emacs-plus@31/31.0.60/share/e=
macs/31.0.60/lisp/use-package/use-package-core<br>/Users/romain.ouabdelkade=
r/.emacs.d/straight/build/use-package/use-package-ensure hides /opt/homebre=
w/Cellar/emacs-plus@31/31.0.60/share/emacs/31.0.60/lisp/use-package/use-pac=
kage-ensure<br>/Users/romain.ouabdelkader/.emacs.d/straight/build/use-packa=
ge/use-package-bind-key hides /opt/homebrew/Cellar/emacs-plus@31/31.0.60/sh=
are/emacs/31.0.60/lisp/use-package/use-package-bind-key<br>/Users/romain.ou=
abdelkader/.emacs.d/straight/build/compat/compat hides /opt/homebrew/Cellar=
/emacs-plus@31/31.0.60/share/emacs/31.0.60/lisp/emacs-lisp/compat<br>/Users=
/romain.ouabdelkader/.emacs.d/straight/build/seq/seq hides /opt/homebrew/Ce=
llar/emacs-plus@31/31.0.60/share/emacs/31.0.60/lisp/emacs-lisp/seq<br><br>F=
eatures:<br>(shadow mail-extr emacsbug lisp-mnt message rfc822 mml mml-sec =
mm-decode<br>mm-bodies mm-encode mailabbrev gmm-utils sendmail help-fns rad=
ix-tree<br>tramp-cmds yank-media dired-aux dirvish-widgets vc-hg vc-bzr vc-=
src<br>vc-sccs vc-svn vc-cvs vc-rcs bug-reference magit-extras consult-xref=
<br>toml-ts-mode yaml-ts-mode html-ts-mode markdown-ts-mode vertico-repeat<=
br>repeat-fu-preset-meow graphics custom-monokai-theme package-review calc<=
br>calc-loaddefs calc-macs verb verb-restclient verb-util verb-autoloads<br=
>agent-shell agent-shell-viewport agent-shell-ui agent-shell-worktree<br>ag=
ent-shell-usage agent-shell-styles agent-shell-qwen agent-shell-pi<br>agent=
-shell-opencode agent-shell-openai agent-shell-mistral<br>agent-shell-kiro =
agent-shell-kimi agent-shell-hermes<br>agent-shell-active-message agent-she=
ll-heartbeat agent-shell-goose<br>agent-shell-google agent-shell-github age=
nt-shell-droid<br>agent-shell-experimental agent-shell-diff agent-shell-dev=
container<br>agent-shell-cursor agent-shell-config agent-shell-completion<b=
r>agent-shell-project agent-shell-cline agent-shell-codebuddy<br>agent-shel=
l-auggie agent-shell-anthropic markdown-overlays<br>markdown-overlays-table=
s agent-shell-autoloads acp acp-traffic<br>acp-autoloads shell-maker goto-a=
ddr shell-maker-autoloads midnight<br>consult-denote consult-denote-autoloa=
ds denote denote-autoloads<br>use-package-ensure ws-butler ws-butler-autolo=
ads magit-prime<br>magit-prime-autoloads macher gptel-context macher-autolo=
ads org-download<br>org-attach org-download-autoloads casual casual-lib pac=
kage url-handlers<br>package-activate casual-autoloads minuet plz minuet-au=
toloads<br>plz-autoloads repeat-fu repeat-fu-autoloads ediff ediff-merg edi=
ff-mult<br>ediff-wind ediff-diff ediff-help ediff-init ediff-util cycle-quo=
tes<br>cycle-quotes-autoloads gptel-quick gptel-quick-autoloads<br>highligh=
t-parentheses highlight-parentheses-autoloads crux<br>crux-autoloads topsy =
topsy-autoloads dirvish dirvish-autoloads jinx<br>jinx-autoloads impatient-=
mode-autoloads htmlize-autoloads<br>simple-httpd-autoloads consult-dir rece=
ntf consult-dir-autoloads<br>web-mode advice web-mode-autoloads meow-tree-s=
itter<br>meow-tree-sitter-autoloads meow-vterm meow-vterm-autoloads meow<br=
>meow-tutor meow-cheatsheet meow-cheatsheet-layout meow-core meow-shims<br>=
meow-esc meow-command array meow-thing meow-visual meow-keypad<br>meow-beac=
on meow-helpers meow-util meow-keymap meow-face meow-var<br>meow-autoloads =
embark-org embark-consult embark ffap<br>embark-consult-autoloads embark-au=
toloads marginalia<br>marginalia-autoloads consult-compile consult consult-=
autoloads<br>vertico-sort vertico-multiform vertico vertico-autoloads<br>si=
deline-flymake sideline-flymake-autoloads sideline sideline-autoloads<br>ya=
ml gptel-agent gptel-agent-tools url-http url-auth mail-parse rfc2231<br>rf=
c2047 rfc2045 ietf-drums url-gw nsm eww vtable url-queue shr<br>pixel-fill =
kinsoku url-file svg xml puny mm-url gnus nnheader gnus-util<br>range mm-ut=
il mail-prsvr gptel-agent-autoloads yaml-autoloads<br>gptel-integrations mc=
p mcp-autoloads gptel-openai gptel-anthropic gptel<br>gptel-request gptel-a=
utoloads nerd-icons-corfu<br>nerd-icons-corfu-autoloads csv-mode sort csv-m=
ode-autoloads treesit-fold<br>treesit-fold-summary treesit-fold-parsers tre=
esit-fold-util<br>treesit-fold-autoloads terraform-mode-autoloads hcl-mode-=
autoloads<br>org-modern-indent org-indent org-modern-indent-autoloads org-m=
odern<br>org-modern-autoloads dape gdb-mi bindat gud dape-autoloads<br>json=
rpc-autoloads repeat windmove diff-hl-show-hunk-inline<br>diff-hl-inline-po=
pup diff-hl-show-hunk diff-hl log-view vc-dir vc<br>diff-hl-autoloads brows=
e-at-remote browse-at-remote-autoloads wgrep grep<br>wgrep-autoloads dtrt-i=
ndent dtrt-indent-autoloads winner cus-edit<br>cus-start cus-load fancy-com=
pilation fancy-compilation-autoloads<br>apheleia apheleia-rcs apheleia-dp a=
pheleia-formatters apheleia-utils<br>apheleia-log apheleia-formatter-contex=
t apheleia-autoloads cape dabbrev<br>cape-autoloads async async-autoloads o=
rderless orderless-autoloads<br>corfu-popupinfo corfu-auto corfu corfu-auto=
loads eldoc-box<br>eldoc-box-autoloads which-key which-key-autoloads treema=
cs<br>treemacs-header-line treemacs-compatibility treemacs-mode<br>treemacs=
-bookmarks treemacs-tags treemacs-interface treemacs-persistence<br>treemac=
s-filewatch-mode treemacs-follow-mode treemacs-rendering<br>treemacs-annota=
tions treemacs-async treemacs-workspaces treemacs-dom<br>treemacs-visuals t=
reemacs-fringe-indicator pulse treemacs-faces<br>treemacs-icons treemacs-sc=
ope treemacs-themes treemacs-core-utils<br>pfuture hl-line treemacs-logging=
treemacs-customization treemacs-macros<br>treemacs-autoloads cfrs-autoload=
s posframe-autoloads hydra-autoloads<br>lv-autoloads pfuture-autoloads ace-=
window-autoloads avy-autoloads<br>markdown-mode markdown-mode-autoloads rai=
nbow-delimiters<br>rainbow-delimiters-autoloads typescript-ts-mode string-i=
nflection<br>string-inflection-autoloads groovy-mode-autoloads kotlin-mode-=
autoloads<br>pyvenv pyvenv-autoloads multi-vterm multi-vterm-autoloads vter=
m-toggle<br>tramp-sh vterm-toggle-autoloads vterm magit-bookmark bookmark<b=
r>tramp-cache time-stamp tramp trampver tramp-integration tramp-message<br>=
tramp-compat parse-time iso8601 tramp-loaddefs face-remap color term<br>ehe=
lp vterm-module term/xterm xterm vterm-autoloads sqlformat-autoloads<br>ref=
ormatter-autoloads sql view rust-mode-autoloads js c-ts-common<br>cc-mode c=
c-fonts cc-guess cc-menus cc-cmds eglot tree-widget wid-edit<br>external-co=
mpletion jsonrpc seq-25 ert ewoc debug backtrace<br>project-local dockerfil=
e-mode dockerfile-mode-autoloads nhexl-mode<br>disp-table hexl nhexl-mode-a=
utoloads swift-mode-autoloads yaml-mode<br>yaml-mode-autoloads quickrun ht =
eshell em-banner esh-mode esh-var<br>esh-cmd esh-ext esh-proc esh-opt esh-i=
o esh-arg esh-module<br>esh-module-loaddefs esh-util quickrun-autoloads ht-=
autoloads magit-delta<br>xterm-color magit-delta-autoloads xterm-color-auto=
loads git-timemachine<br>vc-git files-x vc-dispatcher git-timemachine-autol=
oads epa-file request<br>mailheader mail-utils request-autoloads magit-subm=
odule magit-blame<br>magit-stash magit-reflog magit-bisect magit-push magit=
-pull magit-fetch<br>magit-clone magit-remote magit-commit magit-sequence m=
agit-notes<br>magit-worktree magit-tag magit-merge magit-branch magit-reset=
<br>magit-files magit-refs magit-status magit epa derived epg rfc6068<br>ep=
g-config magit-repos magit-apply dired dired-loaddefs magit-wip<br>magit-lo=
g magit-diff which-func smerge-mode diff diff-mode track-changes<br>git-com=
mit log-edit pcvs-util add-log magit-core magit-autorevert<br>magit-margin =
magit-transient magit-process magit-mode browse-url url<br>url-proxy url-pr=
ivacy url-expand url-methods url-history url-cookie<br>generate-lisp-file u=
rl-domsuf url-util mailcap benchmark magit-git<br>magit-base magit-section =
cursor-sensor transient pp crm llama<br>transient-autoloads magit-section-a=
utoloads llama-autoloads yasnippet<br>yasnippet-autoloads use-package-dimin=
ish multiple-cursors<br>mc-separate-operations rectangular-region-mode mc-m=
ark-pop mc-edit-lines<br>mc-hide-unmatched-lines-mode mc-mark-more sgml-mod=
e facemenu dom<br>mc-cycle-cursors multiple-cursors-core rect multiple-curs=
ors-autoloads<br>finder-inf phi-search phi-search-core phi-search-autoloads=
all-the-icons<br>all-the-icons-faces data-material data-weathericons data-=
octicons<br>data-fileicons data-faicons data-alltheicons all-the-icons-auto=
loads<br>doom-modeline doom-modeline-segments doom-modeline-env<br>doom-mod=
eline-core shrink-path nerd-icons nerd-icons-faces<br>nerd-icons-data nerd-=
icons-data-mdicon nerd-icons-data-flicon<br>nerd-icons-data-codicon nerd-ic=
ons-data-devicon nerd-icons-data-sucicon<br>nerd-icons-data-wicon nerd-icon=
s-data-faicon nerd-icons-data-powerline<br>nerd-icons-data-octicon nerd-ico=
ns-data-pomicon nerd-icons-data-ipsicon<br>doom-modeline-autoloads shrink-p=
ath-autoloads nerd-icons-autoloads<br>symbol-overlay symbol-overlay-autoloa=
ds seq-autoloads dumb-jump xref<br>dumb-jump-autoloads vundo vundo-autoload=
s elec-pair diminish<br>diminish-autoloads gcmh gcmh-autoloads org-agenda o=
rg-element<br>org-persist xdg org-id avl-tree generator org-refile ob-shell=
ob-sql<br>ob-python python pcase ob-dot org ob ob-tangle ob-ref ob-lob ob-=
table<br>ob-exp org-macro org-src sh-script smie treesit executable ob-comi=
nt<br>org-element-ast inline org-pcomplete org-list org-footnote org-faces<=
br>org-entities time-date noutline outline org-version ob-emacs-lisp<br>ob-=
core ob-eval org-cycle org-table ol org-fold org-fold-core org-keys<br>oc o=
rg-compat org-loaddefs find-func cal-menu calendar cal-loaddefs<br>org-macs=
format-spec flymake compile text-property-search thingatpt<br>edmacro kmac=
ro use-package-bind-key bind-key easy-mmode pass f dash<br>imenu password-s=
tore-otp s pass-autoloads f-autoloads dash-autoloads<br>password-store-otp-=
autoloads s-autoloads password-store auth-source-pass<br>byte-opt url-parse=
url-vars auth-source eieio eieio-core password-cache<br>json map with-edit=
or shell pcomplete server cond-let compat<br>password-store-autoloads with-=
editor-autoloads cond-let-autoloads<br>compat-autoloads undo-fu undo-fu-aut=
oloads el-patch-autoloads el-patch<br>el-patch-stub cc-styles cc-align cc-e=
ngine cc-vars cc-defs pixel-scroll<br>comint ansi-osc ansi-color ring proje=
ct use-package-core cap-words<br>superword subword so-long comp comp-cstr w=
arnings icons comp-run<br>comp-common rx delsel autorevert filenotify saveh=
ist cl<br>use-package-autoloads info bind-key-autoloads straight-autoloads =
cl-seq<br>cl-extra help-mode straight subr-x cl-macs gv cl-loaddefs cl-lib<=
br>bytecomp byte-compile rmc iso-transl tooltip cconv eldoc paren electric<=
br>uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel<br>term/n=
s-win ns-win ucs-normalize mule-util term/common-win tool-bar dnd<br>fontse=
t image regexp-opt fringe tabulated-list replace newcomment<br>text-mode li=
sp-mode prog-mode register page tab-bar menu-bar rfn-eshadow<br>isearch eas=
ymenu timer select scroll-bar mouse jit-lock font-lock syntax<br>font-core =
term/tty-colors frame minibuffer nadvice seq simple cl-generic<br>indonesia=
n philippine cham georgian utf-8-lang misc-lang vietnamese<br>tibetan thai =
tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek<br>romanian slov=
ak czech european ethiopic indian cyrillic chinese<br>composite emoji-zwj c=
harscript charprop case-table epa-hook<br>jka-cmpr-hook help abbrev obarray=
oclosure cl-preloaded button loaddefs<br>theme-loaddefs faces cus-face mac=
roexp files window text-properties<br>overlay sha1 md5 base64 format env co=
de-pages mule custom widget keymap<br>hashtable-print-readable backquote th=
reads kqueue cocoa ns lcms2<br>multi-tty make-network-process tty-child-fra=
mes native-compile emacs)<br><br>Memory information:<br>((conses 16 1157465=
3256484) (symbols 48 62369 112)<br>=C2=A0(strings 32 271774 81068) (string=
-bytes 1 10625027)<br>=C2=A0(vectors 16 115096) (vector-slots 8 1897416 227=
4258)<br>=C2=A0(floats 8 2043 19015) (intervals 56 14505 8329) (buffers 106=
4 46))<br></div></div></blockquote><div><br></div><div class=3D"gmail_defau=
lt" style=3D"font-family:monospace">+ Joao and Rahul</div></div></div>
--000000000000e726720652f8e9f2--
bug-gnu-emacs@HIDDEN:bug#81150; Package emacs.
Full text available.
Received: (at submit) by debbugs.gnu.org; 29 May 2026 18:11:00 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri May 29 14:11:00 2026
Received: from localhost ([127.0.0.1]:58093 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1wT1fY-00014l-Jc
for submit <at> debbugs.gnu.org; Fri, 29 May 2026 14:11:00 -0400
Received: from lists1p.gnu.org ([2001:470:142::17]:56900)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <romain.ouabdelkader@HIDDEN>)
id 1wT1fN-00011k-RZ
for submit <at> debbugs.gnu.org; Fri, 29 May 2026 14:10:51 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10])
by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.90_1) (envelope-from <romain.ouabdelkader@HIDDEN>)
id 1wT1fF-0004Am-Im
for bug-gnu-emacs@HIDDEN; Fri, 29 May 2026 14:10:33 -0400
Received: from mail-lj1-x22d.google.com ([2a00:1450:4864:20::22d])
by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.90_1) (envelope-from <romain.ouabdelkader@HIDDEN>)
id 1wT1f8-0000ok-Sb
for bug-gnu-emacs@HIDDEN; Fri, 29 May 2026 14:10:33 -0400
Received: by mail-lj1-x22d.google.com with SMTP id
38308e7fff4ca-38be5e86918so34392531fa.3
for <bug-gnu-emacs@HIDDEN>; Fri, 29 May 2026 11:10:25 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; t=1780078224; cv=none;
d=google.com; s=arc-20240605;
b=JvF0NHRewMoYG9s1bM36+Ruq7L9ClDtuDPrFUSt+bhPdJu02GDtZFvhOaLsd3W8jaT
/fhdJUE/X5XtzF/jGTaHywMHLxmBI5Y+GDtp+45I+8ECoo/nMwgVgn5lcOADkohnrtxq
dYywxsOVX+unJNpPJkaAWbuzkmRL8WgCGKYwxc7Lf44fvZV+2viPDa5F+n2Da6QL+jmi
XwkepQPmH6hFW6OhoNb2j46C9AxS/pfVr2OXABgRNBAwt+fAirTiArMcZw7kOAj/Hz+M
1PGiFlqHZAiKXzLFCGoCUQHXo0u49C+GXOCQPYOgcA7k42LUt6ZAaBz0OsMYX1kG5gJZ
a78w==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;
s=arc-20240605;
h=to:subject:message-id:date:from:mime-version:dkim-signature;
bh=T/uL35xUE1no33479Sbj9XctscV7VO/XHUSryqmYNRg=;
fh=+R8aXOFVnuBbN1nRXJJI02Ia//JUQJmLW/Uk/VaA0ag=;
b=T5Hdde/8vCAbV/fHVdt+Ueu+3wElytraX330S84LW2+yUrQ1THpY2g3c0I8Q2gcZHK
0v9a3P2TeqJI/N0ZrMHjSZp5/NnJanm+MRwbUKZ4BmKYuKcmPB6jY9w1qOlJC3EVYfgl
+Nu4eUDpW0IyFtavaVHWpMhOvRC3xKoS4xu8wlS6iJlN30W7V0CNAoEU8i7JkS4PsCYA
ebZkuZGR8rsb0D+U3Aa1/9vgy4Yr18q+DqVs90r1opQ+FJvB0mrEFyKfT80WeLyuuIhL
tK58xgvweR3JAwV+zpWfWJHoYPylT2lCvJ+ADUVuzVKKvuItkwnWgiGjR9jXPOf0sHRg
PDjA==; darn=gnu.org
ARC-Authentication-Results: i=1; mx.google.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20251104; t=1780078224; x=1780683024; darn=gnu.org;
h=to:subject:message-id:date:from:mime-version:from:to:cc:subject
:date:message-id:reply-to;
bh=T/uL35xUE1no33479Sbj9XctscV7VO/XHUSryqmYNRg=;
b=JRNdJacAgIObsGWw4JAhV0ZLCWo5Uim32EtZNk2RNZSUOcD1KmknWdELvJ7ksZKWdD
rkqd1yee0//aYySBXWCE4Id+oEgpFoYILxXa3WQpc4tBwWeKxzI+vIBwiut4AbwNp9QJ
kWZHwQ81RYJ6k9DzjZ97TMM7L+vZ5WPddQPQVzgw5/Eo46SU/21CVlilIUraSj4mwd1N
oJIzyqHE/cfrfapEhIA4IZ8usm3YyuBnTuzwgDWXMFmu3RIhIxIzp28DxxmS5rcDRIfQ
S6z9Q0/X5f8UR6In1EnU7ePtFKLLtbORP03AQE+F1aqV3uo4Lty4T9+XinmMmFLaM4lN
LgcQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20251104; t=1780078224; x=1780683024;
h=to:subject:message-id:date:from:mime-version:x-gm-gg
:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
bh=T/uL35xUE1no33479Sbj9XctscV7VO/XHUSryqmYNRg=;
b=UrdUl/8rOcWWa70ONUPoIAx6CDhy+iMfW4HQYzCODEbhmOWQXRXDC+sp/90S/AWHXN
I2QUR5r99L+2R6/heamKqxQS6WKUqnkQgUHk7yekHh0v8QvRGNTvzHWm49VwVYSZ+X4n
B15RPIitu5nwwornb8+VzcKLvbs8RSCeB2haSmMe4qkIG9cy7lCpI2gxtIt4b7iPFU9B
KmxIyojTRwrFCK7vN+jM+wjSfTg5EozjpccedMPpqy7Bhc202XW199njs9B/X8RbGa3p
dhd3xrJ3xW6btiqv4EVdDmfBeTv8g24bZLGJKYsu/88lU4FzfkaOzLfxU0B2u6kAZWYd
EiFQ==
X-Gm-Message-State: AOJu0YyhKfIZplOgbWYzXPWt5nta44zCUtUJ+FbOSioKLgrSNfW0Pg0J
QC9lqvJgFzMypkvgbr99w/Xn8pRcquPfvp9kuZwQWish90RKuVxm/h0KB6PP8vj9mWlByXXJnP2
l22wlj/xyLmatRa4kBmOtkCiSBqWV+22xtcrcwScn8A==
X-Gm-Gg: Acq92OEIJdgXuSYRREsjdLWrrsyoopHaIHCFUr8twqdg5WDL5WgtiMjnPpTttyJAug6
UkCQka0RgtIInV7mmmc/+qZzb9hANwAx1+FSQYl8SS+7+cy+2r5dXxn5mH8nqOMHwQbhEOmo919
k0wDhS1QBndH1VmAe/QuScWuviSe9fYQq52/7kcrquuq0l5j7WE+gAg0wG3AeK4hhWP71LLyMd/
6JvgiRzlp+qwXR8Rcat1yYvRvzREJQVXk8XDSD4+CXSKWJ5ceSQS6I+29KZuBWWKxgNLrLRHyyc
Js3+ylA/UBh+3M65Hgz3Nd1uZZOkKA717OSvN4go0I7heKiYGg==
X-Received: by 2002:a05:651c:4199:b0:394:1192:5e0c with SMTP id
38308e7fff4ca-39664f2df7amr1677551fa.21.1780078223499; Fri, 29 May 2026
11:10:23 -0700 (PDT)
MIME-Version: 1.0
From: Romain Ouabdelkader <romain.ouabdelkader@HIDDEN>
Date: Fri, 29 May 2026 20:09:46 +0200
X-Gm-Features: AVHnY4L6ixO3_6ymFvpbr8IPe-DmqzI5-TWh-sXMB2h_XgmDXZ22Z5hXj0P4tbI
Message-ID: <CAJ8YToa+nueew9wQ52xJtD-jXOdcA+Vq+NZEVcd=Q3V66opHSg@HIDDEN>
Subject: 31.0.60; eglot: performance issue with markdown-ts-mode
To: bug-gnu-emacs@HIDDEN
Content-Type: multipart/mixed; boundary="0000000000002f4c7e0652f8c2d7"
Received-SPF: pass client-ip=2a00:1450:4864:20::22d;
envelope-from=romain.ouabdelkader@HIDDEN; helo=mail-lj1-x22d.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,
HTML_MESSAGE=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: 2.0 (++)
X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org",
has NOT identified this incoming email as spam. The original
message has been attached to this so you can view it or label
similar future email. If you have any questions, see
the administrator of that system for details.
Content preview: Hello, I noticed a big performance issue after updating to
emacs31 related to eglot/markdown-ts-mode. Cursor movement or edition inside
function calls in python are very slow, emacs freezes while displaying [...]
Content analysis details: (2.0 points, 10.0 required)
pts rule name description
---- ---------------------- --------------------------------------------------
-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/,
no trust [2001:470:142:0:0:0:0:17 listed in] [list.dnswl.org]
-0.0 SPF_HELO_PASS SPF: HELO matches SPF record
0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail
provider (romain.ouabdelkader[at]gmail.com)
1.0 FORGED_GMAIL_RCVD 'From' gmail.com does not match 'Received'
headers
1.0 SPF_SOFTFAIL SPF: sender does not match SPF record (softfail)
0.0 HTML_MESSAGE BODY: HTML included in message
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: 1.0 (+)
--0000000000002f4c7e0652f8c2d7
Content-Type: multipart/alternative; boundary="0000000000002f4c7d0652f8c2d5"
--0000000000002f4c7d0652f8c2d5
Content-Type: text/plain; charset="UTF-8"
Hello,
I noticed a big performance issue after updating to emacs31 related to
eglot/markdown-ts-mode.
Cursor movement or edition inside function calls in python are very
slow, emacs freezes while displaying the eldoc function signature.
The freeze duration depends on the function complexity, big function/class
like pydantic.Fields hangs emacs for more than 3 seconds.
Reproduced with emacs -Q.
How to reproduce:
- Enable eglot with pyright-langserver
- Place your cursor in a function call like Field("te|st")
- Wait eldoc-idle-delay (0.5s by default)
- Then try to move cursor or insert char
- Emacs will hang
Note that I reproduced the issue with both pyright-langserver and ty,
but pyright-langserver performance seems a bit worse (maybe they don't
return exactly the same doc).
Attached is a lisp cpu profile.
I also provided two sample files: one using pydantic, and another standalone
one if you can't install it (I copied pydantic's Field signature).
I used pydantic's Field because the hang is very apparent but it happens
on all decently big functions.
In GNU Emacs 31.0.60 (build 1, aarch64-apple-darwin24.6.0, NS
appkit-2575.70 Version 15.7.4 (Build 24G517)) of 2026-05-29 built on
MBPro-MHFY4Y3W3H
Windowing system distributor 'Apple', version 10.3.2575
System Description: macOS 15.7.4
Configured using:
'configure --disable-dependency-tracking --disable-silent-rules
--enable-locallisppath=/opt/homebrew/share/emacs/site-lisp
--infodir=/opt/homebrew/Cellar/emacs-plus@31/31.0.60/share/info/emacs
--prefix=/opt/homebrew/Cellar/emacs-plus@31/31.0.60
--with-native-compilation=aot --with-xml2 --with-gnutls
--without-compress-install 'CFLAGS=-DFD_SETSIZE=10000
-DDARWIN_UNLIMITED_SELECT -I/opt/homebrew/opt/sqlite/include
-I/opt/homebrew/opt/gcc/include -I/opt/homebrew/opt/libgccjit/include'
--without-dbus --without-imagemagick --with-modules --with-rsvg
--with-webp --with-ns --disable-ns-self-contained
'LDFLAGS=-L/opt/homebrew/opt/sqlite/lib -L/opt/homebrew/lib/gcc/15
-Wl,-rpath,/opt/homebrew/lib/gcc/15''
Configured features:
ACL GIF GLIB GMP GNUTLS JPEG LCMS2 LIBXML2 MODULES NATIVE_COMP NOTIFY
KQUEUE NS PDUMPER PNG RSVG SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS
TREE_SITTER WEBP XIM ZLIB
Important settings:
value of $LANG: en_US.UTF-8
locale-coding-system: utf-8-unix
Major mode: Python
Minor modes in effect:
midnight-mode: t
consult-denote-mode: t
denote-menu-bar-mode: t
ws-butler-mode: t
magit-prime-mode: t
repeat-fu-mode: t
highlight-parentheses-mode: t
topsy-mode: t
dirvish-override-dired-mode: t
global-jinx-mode: t
jinx-mode: t
meow-global-mode: t
meow-mode: t
meow-normal-mode: t
meow-esc-mode: t
marginalia-mode: t
vertico-multiform-mode: t
vertico-mode: t
sideline-mode: t
csv-field-index-mode: t
global-treesit-fold-mode: t
treesit-fold-mode: t
global-org-modern-mode: t
dape-breakpoint-global-mode: t
dape-breakpoint-mode: t
dape-many-windows: t
repeat-mode: t
windmove-mode: t
global-diff-hl-mode: t
diff-hl-mode: t
dtrt-indent-global-mode: t
dtrt-indent-mode: t
winner-mode: t
fancy-compilation-mode: t
apheleia-mode: t
corfu-popupinfo-mode: t
global-corfu-mode: t
corfu-mode: t
which-key-mode: t
treemacs-filewatch-mode: t
treemacs-follow-mode: t
treemacs-git-mode: t
treemacs-fringe-indicator-mode: t
rainbow-delimiters-mode: t
eglot--managed-mode: t
hexl-follow-ascii: t
magit-delta-mode: t
global-git-commit-mode: t
yas-global-mode: t
yas-minor-mode: t
doom-modeline-mode: t
electric-pair-mode: t
gcmh-mode: t
flymake-mode: t
override-global-mode: t
server-mode: t
el-patch-use-package-mode: t
pixel-scroll-precision-mode: t
global-subword-mode: t
subword-mode: t
global-so-long-mode: t
delete-selection-mode: (delete-selection-pre-hook t)
global-auto-revert-mode: t
savehist-mode: t
straight-use-package-mode: t
straight-package-neutering-mode: t
tooltip-mode: t
global-eldoc-mode: t
eldoc-mode: t
show-paren-mode: t
electric-indent-mode: t
mouse-wheel-mode: t
file-name-shadow-mode: t
global-font-lock-mode: t
font-lock-mode: t
minibuffer-nonselected-mode: t
minibuffer-regexp-mode: t
line-number-mode: t
transient-mark-mode: t
auto-composition-mode: t
auto-encryption-mode: t
auto-compression-mode: t
Load-path shadows:
/Users/romain.ouabdelkader/.emacs.d/straight/build/which-key/which-key
hides /opt/homebrew/Cellar/emacs-plus@31
/31.0.60/share/emacs/31.0.60/lisp/which-key
/Users/romain.ouabdelkader/.emacs.d/straight/build/transient/transient
hides /opt/homebrew/Cellar/emacs-plus@31
/31.0.60/share/emacs/31.0.60/lisp/transient
/Users/romain.ouabdelkader/.emacs.d/straight/build/jsonrpc/jsonrpc hides
/opt/homebrew/Cellar/emacs-plus@31/31.0.60/share/emacs/31.0.60/lisp/jsonrpc
/Users/romain.ouabdelkader/.emacs.d/straight/build/bind-key/bind-key hides
/opt/homebrew/Cellar/emacs-plus@31/31.0.60/share/emacs/31.0.60/lisp/bind-key
/Users/romain.ouabdelkader/emacs-conf/custom hides
/opt/homebrew/Cellar/emacs-plus@31/31.0.60/share/emacs/31.0.60/lisp/custom
/Users/romain.ouabdelkader/.emacs.d/straight/build/use-package/use-package-jump
hides /opt/homebrew/Cellar/emacs-plus@31
/31.0.60/share/emacs/31.0.60/lisp/use-package/use-package-jump
/Users/romain.ouabdelkader/.emacs.d/straight/build/use-package/use-package-ensure-system-package
hides /opt/homebrew/Cellar/emacs-plus@31
/31.0.60/share/emacs/31.0.60/lisp/use-package/use-package-ensure-system-package
/Users/romain.ouabdelkader/.emacs.d/straight/build/use-package/use-package-diminish
hides /opt/homebrew/Cellar/emacs-plus@31
/31.0.60/share/emacs/31.0.60/lisp/use-package/use-package-diminish
/Users/romain.ouabdelkader/.emacs.d/straight/build/use-package/use-package
hides /opt/homebrew/Cellar/emacs-plus@31
/31.0.60/share/emacs/31.0.60/lisp/use-package/use-package
/Users/romain.ouabdelkader/.emacs.d/straight/build/use-package/use-package-delight
hides /opt/homebrew/Cellar/emacs-plus@31
/31.0.60/share/emacs/31.0.60/lisp/use-package/use-package-delight
/Users/romain.ouabdelkader/.emacs.d/straight/build/use-package/use-package-lint
hides /opt/homebrew/Cellar/emacs-plus@31
/31.0.60/share/emacs/31.0.60/lisp/use-package/use-package-lint
/Users/romain.ouabdelkader/.emacs.d/straight/build/use-package/use-package-core
hides /opt/homebrew/Cellar/emacs-plus@31
/31.0.60/share/emacs/31.0.60/lisp/use-package/use-package-core
/Users/romain.ouabdelkader/.emacs.d/straight/build/use-package/use-package-ensure
hides /opt/homebrew/Cellar/emacs-plus@31
/31.0.60/share/emacs/31.0.60/lisp/use-package/use-package-ensure
/Users/romain.ouabdelkader/.emacs.d/straight/build/use-package/use-package-bind-key
hides /opt/homebrew/Cellar/emacs-plus@31
/31.0.60/share/emacs/31.0.60/lisp/use-package/use-package-bind-key
/Users/romain.ouabdelkader/.emacs.d/straight/build/compat/compat hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.60/share/emacs/31.0.60/lisp/emacs-lisp/compat
/Users/romain.ouabdelkader/.emacs.d/straight/build/seq/seq hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.60/share/emacs/31.0.60/lisp/emacs-lisp/seq
Features:
(shadow mail-extr emacsbug lisp-mnt message rfc822 mml mml-sec mm-decode
mm-bodies mm-encode mailabbrev gmm-utils sendmail help-fns radix-tree
tramp-cmds yank-media dired-aux dirvish-widgets vc-hg vc-bzr vc-src
vc-sccs vc-svn vc-cvs vc-rcs bug-reference magit-extras consult-xref
toml-ts-mode yaml-ts-mode html-ts-mode markdown-ts-mode vertico-repeat
repeat-fu-preset-meow graphics custom-monokai-theme package-review calc
calc-loaddefs calc-macs verb verb-restclient verb-util verb-autoloads
agent-shell agent-shell-viewport agent-shell-ui agent-shell-worktree
agent-shell-usage agent-shell-styles agent-shell-qwen agent-shell-pi
agent-shell-opencode agent-shell-openai agent-shell-mistral
agent-shell-kiro agent-shell-kimi agent-shell-hermes
agent-shell-active-message agent-shell-heartbeat agent-shell-goose
agent-shell-google agent-shell-github agent-shell-droid
agent-shell-experimental agent-shell-diff agent-shell-devcontainer
agent-shell-cursor agent-shell-config agent-shell-completion
agent-shell-project agent-shell-cline agent-shell-codebuddy
agent-shell-auggie agent-shell-anthropic markdown-overlays
markdown-overlays-tables agent-shell-autoloads acp acp-traffic
acp-autoloads shell-maker goto-addr shell-maker-autoloads midnight
consult-denote consult-denote-autoloads denote denote-autoloads
use-package-ensure ws-butler ws-butler-autoloads magit-prime
magit-prime-autoloads macher gptel-context macher-autoloads org-download
org-attach org-download-autoloads casual casual-lib package url-handlers
package-activate casual-autoloads minuet plz minuet-autoloads
plz-autoloads repeat-fu repeat-fu-autoloads ediff ediff-merg ediff-mult
ediff-wind ediff-diff ediff-help ediff-init ediff-util cycle-quotes
cycle-quotes-autoloads gptel-quick gptel-quick-autoloads
highlight-parentheses highlight-parentheses-autoloads crux
crux-autoloads topsy topsy-autoloads dirvish dirvish-autoloads jinx
jinx-autoloads impatient-mode-autoloads htmlize-autoloads
simple-httpd-autoloads consult-dir recentf consult-dir-autoloads
web-mode advice web-mode-autoloads meow-tree-sitter
meow-tree-sitter-autoloads meow-vterm meow-vterm-autoloads meow
meow-tutor meow-cheatsheet meow-cheatsheet-layout meow-core meow-shims
meow-esc meow-command array meow-thing meow-visual meow-keypad
meow-beacon meow-helpers meow-util meow-keymap meow-face meow-var
meow-autoloads embark-org embark-consult embark ffap
embark-consult-autoloads embark-autoloads marginalia
marginalia-autoloads consult-compile consult consult-autoloads
vertico-sort vertico-multiform vertico vertico-autoloads
sideline-flymake sideline-flymake-autoloads sideline sideline-autoloads
yaml gptel-agent gptel-agent-tools url-http url-auth mail-parse rfc2231
rfc2047 rfc2045 ietf-drums url-gw nsm eww vtable url-queue shr
pixel-fill kinsoku url-file svg xml puny mm-url gnus nnheader gnus-util
range mm-util mail-prsvr gptel-agent-autoloads yaml-autoloads
gptel-integrations mcp mcp-autoloads gptel-openai gptel-anthropic gptel
gptel-request gptel-autoloads nerd-icons-corfu
nerd-icons-corfu-autoloads csv-mode sort csv-mode-autoloads treesit-fold
treesit-fold-summary treesit-fold-parsers treesit-fold-util
treesit-fold-autoloads terraform-mode-autoloads hcl-mode-autoloads
org-modern-indent org-indent org-modern-indent-autoloads org-modern
org-modern-autoloads dape gdb-mi bindat gud dape-autoloads
jsonrpc-autoloads repeat windmove diff-hl-show-hunk-inline
diff-hl-inline-popup diff-hl-show-hunk diff-hl log-view vc-dir vc
diff-hl-autoloads browse-at-remote browse-at-remote-autoloads wgrep grep
wgrep-autoloads dtrt-indent dtrt-indent-autoloads winner cus-edit
cus-start cus-load fancy-compilation fancy-compilation-autoloads
apheleia apheleia-rcs apheleia-dp apheleia-formatters apheleia-utils
apheleia-log apheleia-formatter-context apheleia-autoloads cape dabbrev
cape-autoloads async async-autoloads orderless orderless-autoloads
corfu-popupinfo corfu-auto corfu corfu-autoloads eldoc-box
eldoc-box-autoloads which-key which-key-autoloads treemacs
treemacs-header-line treemacs-compatibility treemacs-mode
treemacs-bookmarks treemacs-tags treemacs-interface treemacs-persistence
treemacs-filewatch-mode treemacs-follow-mode treemacs-rendering
treemacs-annotations treemacs-async treemacs-workspaces treemacs-dom
treemacs-visuals treemacs-fringe-indicator pulse treemacs-faces
treemacs-icons treemacs-scope treemacs-themes treemacs-core-utils
pfuture hl-line treemacs-logging treemacs-customization treemacs-macros
treemacs-autoloads cfrs-autoloads posframe-autoloads hydra-autoloads
lv-autoloads pfuture-autoloads ace-window-autoloads avy-autoloads
markdown-mode markdown-mode-autoloads rainbow-delimiters
rainbow-delimiters-autoloads typescript-ts-mode string-inflection
string-inflection-autoloads groovy-mode-autoloads kotlin-mode-autoloads
pyvenv pyvenv-autoloads multi-vterm multi-vterm-autoloads vterm-toggle
tramp-sh vterm-toggle-autoloads vterm magit-bookmark bookmark
tramp-cache time-stamp tramp trampver tramp-integration tramp-message
tramp-compat parse-time iso8601 tramp-loaddefs face-remap color term
ehelp vterm-module term/xterm xterm vterm-autoloads sqlformat-autoloads
reformatter-autoloads sql view rust-mode-autoloads js c-ts-common
cc-mode cc-fonts cc-guess cc-menus cc-cmds eglot tree-widget wid-edit
external-completion jsonrpc seq-25 ert ewoc debug backtrace
project-local dockerfile-mode dockerfile-mode-autoloads nhexl-mode
disp-table hexl nhexl-mode-autoloads swift-mode-autoloads yaml-mode
yaml-mode-autoloads quickrun ht eshell em-banner esh-mode esh-var
esh-cmd esh-ext esh-proc esh-opt esh-io esh-arg esh-module
esh-module-loaddefs esh-util quickrun-autoloads ht-autoloads magit-delta
xterm-color magit-delta-autoloads xterm-color-autoloads git-timemachine
vc-git files-x vc-dispatcher git-timemachine-autoloads epa-file request
mailheader mail-utils request-autoloads magit-submodule magit-blame
magit-stash magit-reflog magit-bisect magit-push magit-pull magit-fetch
magit-clone magit-remote magit-commit magit-sequence magit-notes
magit-worktree magit-tag magit-merge magit-branch magit-reset
magit-files magit-refs magit-status magit epa derived epg rfc6068
epg-config magit-repos magit-apply dired dired-loaddefs magit-wip
magit-log magit-diff which-func smerge-mode diff diff-mode track-changes
git-commit log-edit pcvs-util add-log magit-core magit-autorevert
magit-margin magit-transient magit-process magit-mode browse-url url
url-proxy url-privacy url-expand url-methods url-history url-cookie
generate-lisp-file url-domsuf url-util mailcap benchmark magit-git
magit-base magit-section cursor-sensor transient pp crm llama
transient-autoloads magit-section-autoloads llama-autoloads yasnippet
yasnippet-autoloads use-package-diminish multiple-cursors
mc-separate-operations rectangular-region-mode mc-mark-pop mc-edit-lines
mc-hide-unmatched-lines-mode mc-mark-more sgml-mode facemenu dom
mc-cycle-cursors multiple-cursors-core rect multiple-cursors-autoloads
finder-inf phi-search phi-search-core phi-search-autoloads all-the-icons
all-the-icons-faces data-material data-weathericons data-octicons
data-fileicons data-faicons data-alltheicons all-the-icons-autoloads
doom-modeline doom-modeline-segments doom-modeline-env
doom-modeline-core shrink-path nerd-icons nerd-icons-faces
nerd-icons-data nerd-icons-data-mdicon nerd-icons-data-flicon
nerd-icons-data-codicon nerd-icons-data-devicon nerd-icons-data-sucicon
nerd-icons-data-wicon nerd-icons-data-faicon nerd-icons-data-powerline
nerd-icons-data-octicon nerd-icons-data-pomicon nerd-icons-data-ipsicon
doom-modeline-autoloads shrink-path-autoloads nerd-icons-autoloads
symbol-overlay symbol-overlay-autoloads seq-autoloads dumb-jump xref
dumb-jump-autoloads vundo vundo-autoloads elec-pair diminish
diminish-autoloads gcmh gcmh-autoloads org-agenda org-element
org-persist xdg org-id avl-tree generator org-refile ob-shell ob-sql
ob-python python pcase ob-dot org ob ob-tangle ob-ref ob-lob ob-table
ob-exp org-macro org-src sh-script smie treesit executable ob-comint
org-element-ast inline org-pcomplete org-list org-footnote org-faces
org-entities time-date noutline outline org-version ob-emacs-lisp
ob-core ob-eval org-cycle org-table ol org-fold org-fold-core org-keys
oc org-compat org-loaddefs find-func cal-menu calendar cal-loaddefs
org-macs format-spec flymake compile text-property-search thingatpt
edmacro kmacro use-package-bind-key bind-key easy-mmode pass f dash
imenu password-store-otp s pass-autoloads f-autoloads dash-autoloads
password-store-otp-autoloads s-autoloads password-store auth-source-pass
byte-opt url-parse url-vars auth-source eieio eieio-core password-cache
json map with-editor shell pcomplete server cond-let compat
password-store-autoloads with-editor-autoloads cond-let-autoloads
compat-autoloads undo-fu undo-fu-autoloads el-patch-autoloads el-patch
el-patch-stub cc-styles cc-align cc-engine cc-vars cc-defs pixel-scroll
comint ansi-osc ansi-color ring project use-package-core cap-words
superword subword so-long comp comp-cstr warnings icons comp-run
comp-common rx delsel autorevert filenotify savehist cl
use-package-autoloads info bind-key-autoloads straight-autoloads cl-seq
cl-extra help-mode straight subr-x cl-macs gv cl-loaddefs cl-lib
bytecomp byte-compile rmc iso-transl tooltip cconv eldoc paren electric
uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel
term/ns-win ns-win ucs-normalize mule-util term/common-win tool-bar dnd
fontset image regexp-opt fringe tabulated-list replace newcomment
text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow
isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax
font-core term/tty-colors frame minibuffer nadvice seq simple cl-generic
indonesian philippine cham georgian utf-8-lang misc-lang vietnamese
tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek
romanian slovak czech european ethiopic indian cyrillic chinese
composite emoji-zwj charscript charprop case-table epa-hook
jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs
theme-loaddefs faces cus-face macroexp files window text-properties
overlay sha1 md5 base64 format env code-pages mule custom widget keymap
hashtable-print-readable backquote threads kqueue cocoa ns lcms2
multi-tty make-network-process tty-child-frames native-compile emacs)
Memory information:
((conses 16 1157465 3256484) (symbols 48 62369 112)
(strings 32 271774 81068) (string-bytes 1 10625027)
(vectors 16 115096) (vector-slots 8 1897416 2274258)
(floats 8 2043 19015) (intervals 56 14505 8329) (buffers 1064 46))
--0000000000002f4c7d0652f8c2d5
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">Hello,<br><br>I noticed a big performance issue after upda=
ting to emacs31 related to<br>eglot/markdown-ts-mode.<br>Cursor movement or=
edition inside function calls in python are very<br>slow, emacs freezes wh=
ile displaying the eldoc function signature.<br><br>The freeze duration dep=
ends on the function complexity, big function/class<br>like pydantic.Fields=
hangs emacs for more than 3 seconds.<br><br>Reproduced with emacs -Q.<br>H=
ow to reproduce:<br>- Enable eglot with pyright-langserver<br>- Place your =
cursor in a function call like Field("te|st")<br>- Wait eldoc-idl=
e-delay (0.5s by default)<br>- Then try to move cursor or insert char<br>- =
Emacs will hang<br><br>Note that I reproduced the issue with both pyright-l=
angserver and ty,<br>but pyright-langserver performance seems a bit worse (=
maybe they don't<br>return exactly the same doc).<br><br>Attached is a =
lisp cpu profile.<br>I also provided two sample files: one using pydantic, =
and another standalone<br>one if you can't install it (I copied pydanti=
c's Field signature).<br><br>I used pydantic's=C2=A0Field because t=
he hang is very apparent but it happens=C2=A0<div>on all decently big funct=
ions.<br><br><br>In GNU Emacs 31.0.60 (build 1, aarch64-apple-darwin24.6.0,=
NS<br>=C2=A0appkit-2575.70 Version 15.7.4 (Build 24G517)) of 2026-05-29 bu=
ilt on<br>=C2=A0MBPro-MHFY4Y3W3H<br>Windowing system distributor 'Apple=
', version 10.3.2575<br>System Description: =C2=A0macOS 15.7.4<br><br>C=
onfigured using:<br>=C2=A0'configure --disable-dependency-tracking --di=
sable-silent-rules<br>=C2=A0--enable-locallisppath=3D/opt/homebrew/share/em=
acs/site-lisp<br>=C2=A0--infodir=3D/opt/homebrew/Cellar/emacs-plus@31/31.0.=
60/share/info/emacs<br>=C2=A0--prefix=3D/opt/homebrew/Cellar/emacs-plus@31/=
31.0.60<br>=C2=A0--with-native-compilation=3Daot --with-xml2 --with-gnutls<=
br>=C2=A0--without-compress-install 'CFLAGS=3D-DFD_SETSIZE=3D10000<br>=
=C2=A0-DDARWIN_UNLIMITED_SELECT -I/opt/homebrew/opt/sqlite/include<br>=C2=
=A0-I/opt/homebrew/opt/gcc/include -I/opt/homebrew/opt/libgccjit/include=
9;<br>=C2=A0--without-dbus --without-imagemagick --with-modules --with-rsvg=
<br>=C2=A0--with-webp --with-ns --disable-ns-self-contained<br>=C2=A0'L=
DFLAGS=3D-L/opt/homebrew/opt/sqlite/lib -L/opt/homebrew/lib/gcc/15<br>=C2=
=A0-Wl,-rpath,/opt/homebrew/lib/gcc/15''<br><br>Configured features=
:<br>ACL GIF GLIB GMP GNUTLS JPEG LCMS2 LIBXML2 MODULES NATIVE_COMP NOTIFY<=
br>KQUEUE NS PDUMPER PNG RSVG SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS<br>T=
REE_SITTER WEBP XIM ZLIB<br><br>Important settings:<br>=C2=A0 value of $LAN=
G: en_US.UTF-8<br>=C2=A0 locale-coding-system: utf-8-unix<br><br>Major mode=
: Python<br><br>Minor modes in effect:<br>=C2=A0 midnight-mode: t<br>=C2=A0=
consult-denote-mode: t<br>=C2=A0 denote-menu-bar-mode: t<br>=C2=A0 ws-butl=
er-mode: t<br>=C2=A0 magit-prime-mode: t<br>=C2=A0 repeat-fu-mode: t<br>=C2=
=A0 highlight-parentheses-mode: t<br>=C2=A0 topsy-mode: t<br>=C2=A0 dirvish=
-override-dired-mode: t<br>=C2=A0 global-jinx-mode: t<br>=C2=A0 jinx-mode: =
t<br>=C2=A0 meow-global-mode: t<br>=C2=A0 meow-mode: t<br>=C2=A0 meow-norma=
l-mode: t<br>=C2=A0 meow-esc-mode: t<br>=C2=A0 marginalia-mode: t<br>=C2=A0=
vertico-multiform-mode: t<br>=C2=A0 vertico-mode: t<br>=C2=A0 sideline-mod=
e: t<br>=C2=A0 csv-field-index-mode: t<br>=C2=A0 global-treesit-fold-mode: =
t<br>=C2=A0 treesit-fold-mode: t<br>=C2=A0 global-org-modern-mode: t<br>=C2=
=A0 dape-breakpoint-global-mode: t<br>=C2=A0 dape-breakpoint-mode: t<br>=C2=
=A0 dape-many-windows: t<br>=C2=A0 repeat-mode: t<br>=C2=A0 windmove-mode: =
t<br>=C2=A0 global-diff-hl-mode: t<br>=C2=A0 diff-hl-mode: t<br>=C2=A0 dtrt=
-indent-global-mode: t<br>=C2=A0 dtrt-indent-mode: t<br>=C2=A0 winner-mode:=
t<br>=C2=A0 fancy-compilation-mode: t<br>=C2=A0 apheleia-mode: t<br>=C2=A0=
corfu-popupinfo-mode: t<br>=C2=A0 global-corfu-mode: t<br>=C2=A0 corfu-mod=
e: t<br>=C2=A0 which-key-mode: t<br>=C2=A0 treemacs-filewatch-mode: t<br>=
=C2=A0 treemacs-follow-mode: t<br>=C2=A0 treemacs-git-mode: t<br>=C2=A0 tre=
emacs-fringe-indicator-mode: t<br>=C2=A0 rainbow-delimiters-mode: t<br>=C2=
=A0 eglot--managed-mode: t<br>=C2=A0 hexl-follow-ascii: t<br>=C2=A0 magit-d=
elta-mode: t<br>=C2=A0 global-git-commit-mode: t<br>=C2=A0 yas-global-mode:=
t<br>=C2=A0 yas-minor-mode: t<br>=C2=A0 doom-modeline-mode: t<br>=C2=A0 el=
ectric-pair-mode: t<br>=C2=A0 gcmh-mode: t<br>=C2=A0 flymake-mode: t<br>=C2=
=A0 override-global-mode: t<br>=C2=A0 server-mode: t<br>=C2=A0 el-patch-use=
-package-mode: t<br>=C2=A0 pixel-scroll-precision-mode: t<br>=C2=A0 global-=
subword-mode: t<br>=C2=A0 subword-mode: t<br>=C2=A0 global-so-long-mode: t<=
br>=C2=A0 delete-selection-mode: (delete-selection-pre-hook t)<br>=C2=A0 gl=
obal-auto-revert-mode: t<br>=C2=A0 savehist-mode: t<br>=C2=A0 straight-use-=
package-mode: t<br>=C2=A0 straight-package-neutering-mode: t<br>=C2=A0 tool=
tip-mode: t<br>=C2=A0 global-eldoc-mode: t<br>=C2=A0 eldoc-mode: t<br>=C2=
=A0 show-paren-mode: t<br>=C2=A0 electric-indent-mode: t<br>=C2=A0 mouse-wh=
eel-mode: t<br>=C2=A0 file-name-shadow-mode: t<br>=C2=A0 global-font-lock-m=
ode: t<br>=C2=A0 font-lock-mode: t<br>=C2=A0 minibuffer-nonselected-mode: t=
<br>=C2=A0 minibuffer-regexp-mode: t<br>=C2=A0 line-number-mode: t<br>=C2=
=A0 transient-mark-mode: t<br>=C2=A0 auto-composition-mode: t<br>=C2=A0 aut=
o-encryption-mode: t<br>=C2=A0 auto-compression-mode: t<br><br>Load-path sh=
adows:<br>/Users/romain.ouabdelkader/.emacs.d/straight/build/which-key/whic=
h-key hides /opt/homebrew/Cellar/emacs-plus@31/31.0.60/share/emacs/31.0.60/=
lisp/which-key<br>/Users/romain.ouabdelkader/.emacs.d/straight/build/transi=
ent/transient hides /opt/homebrew/Cellar/emacs-plus@31/31.0.60/share/emacs/=
31.0.60/lisp/transient<br>/Users/romain.ouabdelkader/.emacs.d/straight/buil=
d/jsonrpc/jsonrpc hides /opt/homebrew/Cellar/emacs-plus@31/31.0.60/share/em=
acs/31.0.60/lisp/jsonrpc<br>/Users/romain.ouabdelkader/.emacs.d/straight/bu=
ild/bind-key/bind-key hides /opt/homebrew/Cellar/emacs-plus@31/31.0.60/shar=
e/emacs/31.0.60/lisp/bind-key<br>/Users/romain.ouabdelkader/emacs-conf/cust=
om hides /opt/homebrew/Cellar/emacs-plus@31/31.0.60/share/emacs/31.0.60/lis=
p/custom<br>/Users/romain.ouabdelkader/.emacs.d/straight/build/use-package/=
use-package-jump hides /opt/homebrew/Cellar/emacs-plus@31/31.0.60/share/ema=
cs/31.0.60/lisp/use-package/use-package-jump<br>/Users/romain.ouabdelkader/=
.emacs.d/straight/build/use-package/use-package-ensure-system-package hides=
/opt/homebrew/Cellar/emacs-plus@31/31.0.60/share/emacs/31.0.60/lisp/use-pa=
ckage/use-package-ensure-system-package<br>/Users/romain.ouabdelkader/.emac=
s.d/straight/build/use-package/use-package-diminish hides /opt/homebrew/Cel=
lar/emacs-plus@31/31.0.60/share/emacs/31.0.60/lisp/use-package/use-package-=
diminish<br>/Users/romain.ouabdelkader/.emacs.d/straight/build/use-package/=
use-package hides /opt/homebrew/Cellar/emacs-plus@31/31.0.60/share/emacs/31=
.0.60/lisp/use-package/use-package<br>/Users/romain.ouabdelkader/.emacs.d/s=
traight/build/use-package/use-package-delight hides /opt/homebrew/Cellar/em=
acs-plus@31/31.0.60/share/emacs/31.0.60/lisp/use-package/use-package-deligh=
t<br>/Users/romain.ouabdelkader/.emacs.d/straight/build/use-package/use-pac=
kage-lint hides /opt/homebrew/Cellar/emacs-plus@31/31.0.60/share/emacs/31.0=
.60/lisp/use-package/use-package-lint<br>/Users/romain.ouabdelkader/.emacs.=
d/straight/build/use-package/use-package-core hides /opt/homebrew/Cellar/em=
acs-plus@31/31.0.60/share/emacs/31.0.60/lisp/use-package/use-package-core<b=
r>/Users/romain.ouabdelkader/.emacs.d/straight/build/use-package/use-packag=
e-ensure hides /opt/homebrew/Cellar/emacs-plus@31/31.0.60/share/emacs/31.0.=
60/lisp/use-package/use-package-ensure<br>/Users/romain.ouabdelkader/.emacs=
.d/straight/build/use-package/use-package-bind-key hides /opt/homebrew/Cell=
ar/emacs-plus@31/31.0.60/share/emacs/31.0.60/lisp/use-package/use-package-b=
ind-key<br>/Users/romain.ouabdelkader/.emacs.d/straight/build/compat/compat=
hides /opt/homebrew/Cellar/emacs-plus@31/31.0.60/share/emacs/31.0.60/lisp/=
emacs-lisp/compat<br>/Users/romain.ouabdelkader/.emacs.d/straight/build/seq=
/seq hides /opt/homebrew/Cellar/emacs-plus@31/31.0.60/share/emacs/31.0.60/l=
isp/emacs-lisp/seq<br><br>Features:<br>(shadow mail-extr emacsbug lisp-mnt =
message rfc822 mml mml-sec mm-decode<br>mm-bodies mm-encode mailabbrev gmm-=
utils sendmail help-fns radix-tree<br>tramp-cmds yank-media dired-aux dirvi=
sh-widgets vc-hg vc-bzr vc-src<br>vc-sccs vc-svn vc-cvs vc-rcs bug-referenc=
e magit-extras consult-xref<br>toml-ts-mode yaml-ts-mode html-ts-mode markd=
own-ts-mode vertico-repeat<br>repeat-fu-preset-meow graphics custom-monokai=
-theme package-review calc<br>calc-loaddefs calc-macs verb verb-restclient =
verb-util verb-autoloads<br>agent-shell agent-shell-viewport agent-shell-ui=
agent-shell-worktree<br>agent-shell-usage agent-shell-styles agent-shell-q=
wen agent-shell-pi<br>agent-shell-opencode agent-shell-openai agent-shell-m=
istral<br>agent-shell-kiro agent-shell-kimi agent-shell-hermes<br>agent-she=
ll-active-message agent-shell-heartbeat agent-shell-goose<br>agent-shell-go=
ogle agent-shell-github agent-shell-droid<br>agent-shell-experimental agent=
-shell-diff agent-shell-devcontainer<br>agent-shell-cursor agent-shell-conf=
ig agent-shell-completion<br>agent-shell-project agent-shell-cline agent-sh=
ell-codebuddy<br>agent-shell-auggie agent-shell-anthropic markdown-overlays=
<br>markdown-overlays-tables agent-shell-autoloads acp acp-traffic<br>acp-a=
utoloads shell-maker goto-addr shell-maker-autoloads midnight<br>consult-de=
note consult-denote-autoloads denote denote-autoloads<br>use-package-ensure=
ws-butler ws-butler-autoloads magit-prime<br>magit-prime-autoloads macher =
gptel-context macher-autoloads org-download<br>org-attach org-download-auto=
loads casual casual-lib package url-handlers<br>package-activate casual-aut=
oloads minuet plz minuet-autoloads<br>plz-autoloads repeat-fu repeat-fu-aut=
oloads ediff ediff-merg ediff-mult<br>ediff-wind ediff-diff ediff-help edif=
f-init ediff-util cycle-quotes<br>cycle-quotes-autoloads gptel-quick gptel-=
quick-autoloads<br>highlight-parentheses highlight-parentheses-autoloads cr=
ux<br>crux-autoloads topsy topsy-autoloads dirvish dirvish-autoloads jinx<b=
r>jinx-autoloads impatient-mode-autoloads htmlize-autoloads<br>simple-httpd=
-autoloads consult-dir recentf consult-dir-autoloads<br>web-mode advice web=
-mode-autoloads meow-tree-sitter<br>meow-tree-sitter-autoloads meow-vterm m=
eow-vterm-autoloads meow<br>meow-tutor meow-cheatsheet meow-cheatsheet-layo=
ut meow-core meow-shims<br>meow-esc meow-command array meow-thing meow-visu=
al meow-keypad<br>meow-beacon meow-helpers meow-util meow-keymap meow-face =
meow-var<br>meow-autoloads embark-org embark-consult embark ffap<br>embark-=
consult-autoloads embark-autoloads marginalia<br>marginalia-autoloads consu=
lt-compile consult consult-autoloads<br>vertico-sort vertico-multiform vert=
ico vertico-autoloads<br>sideline-flymake sideline-flymake-autoloads sideli=
ne sideline-autoloads<br>yaml gptel-agent gptel-agent-tools url-http url-au=
th mail-parse rfc2231<br>rfc2047 rfc2045 ietf-drums url-gw nsm eww vtable u=
rl-queue shr<br>pixel-fill kinsoku url-file svg xml puny mm-url gnus nnhead=
er gnus-util<br>range mm-util mail-prsvr gptel-agent-autoloads yaml-autoloa=
ds<br>gptel-integrations mcp mcp-autoloads gptel-openai gptel-anthropic gpt=
el<br>gptel-request gptel-autoloads nerd-icons-corfu<br>nerd-icons-corfu-au=
toloads csv-mode sort csv-mode-autoloads treesit-fold<br>treesit-fold-summa=
ry treesit-fold-parsers treesit-fold-util<br>treesit-fold-autoloads terrafo=
rm-mode-autoloads hcl-mode-autoloads<br>org-modern-indent org-indent org-mo=
dern-indent-autoloads org-modern<br>org-modern-autoloads dape gdb-mi bindat=
gud dape-autoloads<br>jsonrpc-autoloads repeat windmove diff-hl-show-hunk-=
inline<br>diff-hl-inline-popup diff-hl-show-hunk diff-hl log-view vc-dir vc=
<br>diff-hl-autoloads browse-at-remote browse-at-remote-autoloads wgrep gre=
p<br>wgrep-autoloads dtrt-indent dtrt-indent-autoloads winner cus-edit<br>c=
us-start cus-load fancy-compilation fancy-compilation-autoloads<br>apheleia=
apheleia-rcs apheleia-dp apheleia-formatters apheleia-utils<br>apheleia-lo=
g apheleia-formatter-context apheleia-autoloads cape dabbrev<br>cape-autolo=
ads async async-autoloads orderless orderless-autoloads<br>corfu-popupinfo =
corfu-auto corfu corfu-autoloads eldoc-box<br>eldoc-box-autoloads which-key=
which-key-autoloads treemacs<br>treemacs-header-line treemacs-compatibilit=
y treemacs-mode<br>treemacs-bookmarks treemacs-tags treemacs-interface tree=
macs-persistence<br>treemacs-filewatch-mode treemacs-follow-mode treemacs-r=
endering<br>treemacs-annotations treemacs-async treemacs-workspaces treemac=
s-dom<br>treemacs-visuals treemacs-fringe-indicator pulse treemacs-faces<br=
>treemacs-icons treemacs-scope treemacs-themes treemacs-core-utils<br>pfutu=
re hl-line treemacs-logging treemacs-customization treemacs-macros<br>treem=
acs-autoloads cfrs-autoloads posframe-autoloads hydra-autoloads<br>lv-autol=
oads pfuture-autoloads ace-window-autoloads avy-autoloads<br>markdown-mode =
markdown-mode-autoloads rainbow-delimiters<br>rainbow-delimiters-autoloads =
typescript-ts-mode string-inflection<br>string-inflection-autoloads groovy-=
mode-autoloads kotlin-mode-autoloads<br>pyvenv pyvenv-autoloads multi-vterm=
multi-vterm-autoloads vterm-toggle<br>tramp-sh vterm-toggle-autoloads vter=
m magit-bookmark bookmark<br>tramp-cache time-stamp tramp trampver tramp-in=
tegration tramp-message<br>tramp-compat parse-time iso8601 tramp-loaddefs f=
ace-remap color term<br>ehelp vterm-module term/xterm xterm vterm-autoloads=
sqlformat-autoloads<br>reformatter-autoloads sql view rust-mode-autoloads =
js c-ts-common<br>cc-mode cc-fonts cc-guess cc-menus cc-cmds eglot tree-wid=
get wid-edit<br>external-completion jsonrpc seq-25 ert ewoc debug backtrace=
<br>project-local dockerfile-mode dockerfile-mode-autoloads nhexl-mode<br>d=
isp-table hexl nhexl-mode-autoloads swift-mode-autoloads yaml-mode<br>yaml-=
mode-autoloads quickrun ht eshell em-banner esh-mode esh-var<br>esh-cmd esh=
-ext esh-proc esh-opt esh-io esh-arg esh-module<br>esh-module-loaddefs esh-=
util quickrun-autoloads ht-autoloads magit-delta<br>xterm-color magit-delta=
-autoloads xterm-color-autoloads git-timemachine<br>vc-git files-x vc-dispa=
tcher git-timemachine-autoloads epa-file request<br>mailheader mail-utils r=
equest-autoloads magit-submodule magit-blame<br>magit-stash magit-reflog ma=
git-bisect magit-push magit-pull magit-fetch<br>magit-clone magit-remote ma=
git-commit magit-sequence magit-notes<br>magit-worktree magit-tag magit-mer=
ge magit-branch magit-reset<br>magit-files magit-refs magit-status magit ep=
a derived epg rfc6068<br>epg-config magit-repos magit-apply dired dired-loa=
ddefs magit-wip<br>magit-log magit-diff which-func smerge-mode diff diff-mo=
de track-changes<br>git-commit log-edit pcvs-util add-log magit-core magit-=
autorevert<br>magit-margin magit-transient magit-process magit-mode browse-=
url url<br>url-proxy url-privacy url-expand url-methods url-history url-coo=
kie<br>generate-lisp-file url-domsuf url-util mailcap benchmark magit-git<b=
r>magit-base magit-section cursor-sensor transient pp crm llama<br>transien=
t-autoloads magit-section-autoloads llama-autoloads yasnippet<br>yasnippet-=
autoloads use-package-diminish multiple-cursors<br>mc-separate-operations r=
ectangular-region-mode mc-mark-pop mc-edit-lines<br>mc-hide-unmatched-lines=
-mode mc-mark-more sgml-mode facemenu dom<br>mc-cycle-cursors multiple-curs=
ors-core rect multiple-cursors-autoloads<br>finder-inf phi-search phi-searc=
h-core phi-search-autoloads all-the-icons<br>all-the-icons-faces data-mater=
ial data-weathericons data-octicons<br>data-fileicons data-faicons data-all=
theicons all-the-icons-autoloads<br>doom-modeline doom-modeline-segments do=
om-modeline-env<br>doom-modeline-core shrink-path nerd-icons nerd-icons-fac=
es<br>nerd-icons-data nerd-icons-data-mdicon nerd-icons-data-flicon<br>nerd=
-icons-data-codicon nerd-icons-data-devicon nerd-icons-data-sucicon<br>nerd=
-icons-data-wicon nerd-icons-data-faicon nerd-icons-data-powerline<br>nerd-=
icons-data-octicon nerd-icons-data-pomicon nerd-icons-data-ipsicon<br>doom-=
modeline-autoloads shrink-path-autoloads nerd-icons-autoloads<br>symbol-ove=
rlay symbol-overlay-autoloads seq-autoloads dumb-jump xref<br>dumb-jump-aut=
oloads vundo vundo-autoloads elec-pair diminish<br>diminish-autoloads gcmh =
gcmh-autoloads org-agenda org-element<br>org-persist xdg org-id avl-tree ge=
nerator org-refile ob-shell ob-sql<br>ob-python python pcase ob-dot org ob =
ob-tangle ob-ref ob-lob ob-table<br>ob-exp org-macro org-src sh-script smie=
treesit executable ob-comint<br>org-element-ast inline org-pcomplete org-l=
ist org-footnote org-faces<br>org-entities time-date noutline outline org-v=
ersion ob-emacs-lisp<br>ob-core ob-eval org-cycle org-table ol org-fold org=
-fold-core org-keys<br>oc org-compat org-loaddefs find-func cal-menu calend=
ar cal-loaddefs<br>org-macs format-spec flymake compile text-property-searc=
h thingatpt<br>edmacro kmacro use-package-bind-key bind-key easy-mmode pass=
f dash<br>imenu password-store-otp s pass-autoloads f-autoloads dash-autol=
oads<br>password-store-otp-autoloads s-autoloads password-store auth-source=
-pass<br>byte-opt url-parse url-vars auth-source eieio eieio-core password-=
cache<br>json map with-editor shell pcomplete server cond-let compat<br>pas=
sword-store-autoloads with-editor-autoloads cond-let-autoloads<br>compat-au=
toloads undo-fu undo-fu-autoloads el-patch-autoloads el-patch<br>el-patch-s=
tub cc-styles cc-align cc-engine cc-vars cc-defs pixel-scroll<br>comint ans=
i-osc ansi-color ring project use-package-core cap-words<br>superword subwo=
rd so-long comp comp-cstr warnings icons comp-run<br>comp-common rx delsel =
autorevert filenotify savehist cl<br>use-package-autoloads info bind-key-au=
toloads straight-autoloads cl-seq<br>cl-extra help-mode straight subr-x cl-=
macs gv cl-loaddefs cl-lib<br>bytecomp byte-compile rmc iso-transl tooltip =
cconv eldoc paren electric<br>uniquify ediff-hook vc-hooks lisp-float-type =
elisp-mode mwheel<br>term/ns-win ns-win ucs-normalize mule-util term/common=
-win tool-bar dnd<br>fontset image regexp-opt fringe tabulated-list replace=
newcomment<br>text-mode lisp-mode prog-mode register page tab-bar menu-bar=
rfn-eshadow<br>isearch easymenu timer select scroll-bar mouse jit-lock fon=
t-lock syntax<br>font-core term/tty-colors frame minibuffer nadvice seq sim=
ple cl-generic<br>indonesian philippine cham georgian utf-8-lang misc-lang =
vietnamese<br>tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 he=
brew greek<br>romanian slovak czech european ethiopic indian cyrillic chine=
se<br>composite emoji-zwj charscript charprop case-table epa-hook<br>jka-cm=
pr-hook help abbrev obarray oclosure cl-preloaded button loaddefs<br>theme-=
loaddefs faces cus-face macroexp files window text-properties<br>overlay sh=
a1 md5 base64 format env code-pages mule custom widget keymap<br>hashtable-=
print-readable backquote threads kqueue cocoa ns lcms2<br>multi-tty make-ne=
twork-process tty-child-frames native-compile emacs)<br><br>Memory informat=
ion:<br>((conses 16 1157465 3256484) (symbols 48 62369 112)<br>=C2=A0(strin=
gs 32 271774 81068) (string-bytes 1 10625027)<br>=C2=A0(vectors 16 115096) =
(vector-slots 8 1897416 2274258)<br>=C2=A0(floats 8 2043 19015) (intervals =
56 14505 8329) (buffers 1064 46))<br></div></div>
--0000000000002f4c7d0652f8c2d5--
--0000000000002f4c7e0652f8c2d7
Content-Type: text/plain; charset="US-ASCII"; name="bench-eglot.txt"
Content-Disposition: attachment; filename="bench-eglot.txt"
Content-Transfer-Encoding: base64
Content-ID: <f_mpr8hjq70>
X-Attachment-Id: f_mpr8hjq70
ICAgICAgIDc5MDUyICA5OCUgLSB0aW1lci1ldmVudC1oYW5kbGVyCiAgICAgICA3OTA1MiAgOTgl
ICAtIGFwcGx5CiAgICAgICA3OTAyNyAgOTglICAgLSAjPGJ5dGUtY29kZS1mdW5jdGlvbiA2QTU+
CiAgICAgICA3OTAyNyAgOTglICAgIC0ganNvbnJwYy1jb25uZWN0aW9uLXJlY2VpdmUKICAgICAg
IDc5MDAyICA5OCUgICAgIC0ganNvbnJwYy0tY29udGludWUKICAgICAgIDc5MDAyICA5OCUgICAg
ICAtICM8Ynl0ZS1jb2RlLWZ1bmN0aW9uIDM1RD4KICAgICAgIDc5MDAxICA5OCUgICAgICAgLSBh
cHBseQogICAgICAgNzkwMDEgIDk4JSAgICAgICAgLSAjPGJ5dGUtY29kZS1mdW5jdGlvbiAzMTQ+
CiAgICAgICA3ODk2MyAgOTglICAgICAgICAgLSBtYXBjb25jYXQKICAgICAgIDc4OTU1ICA5OCUg
ICAgICAgICAgLSAjPGJ5dGUtY29kZS1mdW5jdGlvbiA1REE+CiAgICAgICA3ODk1NSAgOTglICAg
ICAgICAgICAtIGVnbG90LS1zaWctaW5mbwogICAgICAgNzg5MzkgIDk4JSAgICAgICAgICAgIC0g
ZWdsb3QtLWZvcm1hdC1tYXJrdXAKICAgICAgIDQ0NzA2ICA1NSUgICAgICAgICAgICAgLSBtYXJr
ZG93bi10cy12aWV3LW1vZGUKICAgICAgIDQ0NzA2ICA1NSUgICAgICAgICAgICAgIC0gbWFya2Rv
d24tdHMtbW9kZS0taW5pdGlhbGl6ZQogICAgICAgMjQ1MzEgIDMwJSAgICAgICAgICAgICAgIC0g
bWFya2Rvd24tdHMtLXNldC11cAogICAgICAgMTQ1MDkgIDE4JSAgICAgICAgICAgICAgICAtIHRy
ZWVzaXQtcmVhZHktcAogICAgICAgMTQ1MDkgIDE4JSAgICAgICAgICAgICAgICAgICB0cmVlc2l0
LWxhbmd1YWdlLWF2YWlsYWJsZS1wCiAgICAgICAxMDEyMSAgMTIlICAgICAgICAgICAgICAgICB0
cmVlc2l0LWVuc3VyZS1pbnN0YWxsZWQKICAgICAgIDEwMDUyICAxMiUgICAgICAgICAgICAgICAt
IHRyZWVzaXQtcmVhZHktcAogICAgICAgMTAwNTIgIDEyJSAgICAgICAgICAgICAgICAgIHRyZWVz
aXQtbGFuZ3VhZ2UtYXZhaWxhYmxlLXAKICAgICAgIDI4Nzc1ICAzNSUgICAgICAgICAgICAgLSBm
b250LWxvY2stZW5zdXJlCiAgICAgICAyODc3NCAgMzUlICAgICAgICAgICAgICAtICM8Ynl0ZS1j
b2RlLWZ1bmN0aW9uIEY4MT4KICAgICAgIDI4Nzc0ICAzNSUgICAgICAgICAgICAgICAtIGZvbnQt
bG9jay1mb250aWZ5LXJlZ2lvbgogICAgICAgMjg3NzQgIDM1JSAgICAgICAgICAgICAgICAtIGZv
bnQtbG9jay1kZWZhdWx0LWZvbnRpZnktcmVnaW9uCiAgICAgICAyODc3MyAgMzUlICAgICAgICAg
ICAgICAgICAtIGZvbnQtbG9jay1mb250aWZ5LXN5bnRhY3RpY2FsbHktcmVnaW9uCiAgICAgICAy
ODc3MyAgMzUlICAgICAgICAgICAgICAgICAgLSB0cmVlc2l0LWZvbnQtbG9jay1mb250aWZ5LXJl
Z2lvbgogICAgICAgMjg2OTUgIDM1JSAgICAgICAgICAgICAgICAgICAtIHRyZWVzaXQtdXBkYXRl
LXJhbmdlcwogICAgICAgMjg2OTUgIDM1JSAgICAgICAgICAgICAgICAgICAgLSB0cmVlc2l0LS11
cGRhdGUtcmFuZ2UtMQogICAgICAgMjgzMDUgIDM1JSAgICAgICAgICAgICAgICAgICAgIC0gdHJl
ZXNpdC0tdXBkYXRlLXJhbmdlcy1sb2NhbAogICAgICAgMjEzMDUgIDI2JSAgICAgICAgICAgICAg
ICAgICAgICAtIHRyZWVzaXQtcXVlcnktcmFuZ2UKICAgICAgICAgICAxICAgMCUgICAgICAgICAg
ICAgICAgICAgICAgIC0gdHJlZXNpdC1wYXR0ZXJuLWV4cGFuZAogICAgICAgICAgIDEgICAwJSAg
ICAgICAgICAgICAgICAgICAgICAgICAgdHJlZXNpdC1wYXR0ZXJuLWV4cGFuZAogICAgICAgIDU3
NjQgICA3JSAgICAgICAgICAgICAgICAgICAgICAtIHRyZWVzaXQtcXVlcnktcmFuZ2UtYnktbGFu
Z3VhZ2UKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgICAgICAgICAgIC0gdHJlZXNpdC1w
YXR0ZXJuLWV4cGFuZAogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgICAgICAgICAgICAg
dHJlZXNpdC1wYXR0ZXJuLWV4cGFuZAogICAgICAgIDEyMzQgICAxJSAgICAgICAgICAgICAgICAg
ICAgICAgIHRyZWVzaXQtcGFyc2VyLWNyZWF0ZQogICAgICAgICAgIDEgICAwJSAgICAgICAgICAg
ICAgICAgICAgICAgIGZ1bmN0aW9ucAogICAgICAgICAzODcgICAwJSAgICAgICAgICAgICAgICAg
ICAgIC0gdHJlZXNpdC0tdXBkYXRlLXJhbmdlcy1ub24tbG9jYWwKICAgICAgICAgMzg3ICAgMCUg
ICAgICAgICAgICAgICAgICAgICAgICB0cmVlc2l0LXF1ZXJ5LXJhbmdlCiAgICAgICAgICA2NSAg
IDAlICAgICAgICAgICAgICAgICAgIC0gdHJlZXNpdC0tZm9udC1sb2NrLWZvbnRpZnktcmVnaW9u
LTEKICAgICAgICAgIDExICAgMCUgICAgICAgICAgICAgICAgICAgIC0gbWFya2Rvd24tdHMtLWZv
bnRpZnktZW50aXR5CiAgICAgICAgICAgNSAgIDAlICAgICAgICAgICAgICAgICAgICAgLSBtYXJr
ZG93bi10cy0tZGVjb2RlLWVudGl0eQogICAgICAgICAgIDUgICAwJSAgICAgICAgICAgICAgICAg
ICAgICAtIG9yZy1lbnRpdHktZ2V0CiAgICAgICAgICAgNSAgIDAlICAgICAgICAgICAgICAgICAg
ICAgICAgIGFzc29jCiAgICAgICAgICAgNCAgIDAlICAgICAgICAgICAgICAgICAgICAgLSB0cmVl
c2l0LWZvbnRpZnktd2l0aC1vdmVycmlkZQogICAgICAgICAgIDQgICAwJSAgICAgICAgICAgICAg
ICAgICAgICAtIGZvbnQtbG9jay1hcHBlbmQtdGV4dC1wcm9wZXJ0eQogICAgICAgICAgIDQgICAw
JSAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWxvY2stLWFkZC10ZXh0LXByb3BlcnR5CiAg
ICAgICAgICAgMiAgIDAlICAgICAgICAgICAgICAgICAgICAgICB0cmVlc2l0LW5vZGUtdGV4dAog
ICAgICAgICAgIDUgICAwJSAgICAgICAgICAgICAgICAgICAgLSBtYXJrZG93bi10cy0tZm9udGlm
eS1kZWxpbWl0ZXIKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgICAgICAgICAtIHRyZWVz
aXQtZm9udGlmeS13aXRoLW92ZXJyaWRlCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAg
ICAgICAgIC0gZm9udC1sb2NrLXByZXBlbmQtdGV4dC1wcm9wZXJ0eQogICAgICAgICAgIDEgICAw
JSAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWxvY2stLWFkZC10ZXh0LXByb3BlcnR5CiAg
ICAgICAgICAgMyAgIDAlICAgICAgICAgICAgICAgICAgICAtIG1hcmtkb3duLXRzLS1mb250aWZ5
LWJhY2tzbGFzaC1lc2NhcGUKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgICAgICAgICAt
IHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJyaWRlCiAgICAgICAgICAgMSAgIDAlICAgICAgICAg
ICAgICAgICAgICAgIC0gZm9udC1sb2NrLWFwcGVuZC10ZXh0LXByb3BlcnR5CiAgICAgICAgICAg
MSAgIDAlICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtbG9jay0tYWRkLXRleHQtcHJvcGVy
dHkKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgICAgICAgIC0gbWFya2Rvd24tdHMtLWZv
bnRpZnktaGFyZC1saW5lLWJyZWFrCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAgICAg
ICAgLSB0cmVlc2l0LWZvbnRpZnktd2l0aC1vdmVycmlkZQogICAgICAgICAgIDEgICAwJSAgICAg
ICAgICAgICAgICAgICAgICAtIGZvbnQtbG9jay1hcHBlbmQtdGV4dC1wcm9wZXJ0eQogICAgICAg
ICAgIDEgICAwJSAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWxvY2stLWFkZC10ZXh0LXBy
b3BlcnR5CiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAgICAgICAtIG1hcmtkb3duLXRz
LS1mb250aWZ5LXVub3JkZXJlZC1saXN0LW1hcmtlcgogICAgICAgICAgIDEgICAwJSAgICAgICAg
ICAgICAgICAgICAgIC0gbWFya2Rvd24tdHMtLXJlc29sdmUtZGlzcGxheS12YWx1ZQogICAgICAg
ICAgIDEgICAwJSAgICAgICAgICAgICAgICAgICAgICAtIGNoYXItZGlzcGxheWFibGUtcAogICAg
ICAgICAgIDEgICAwJSAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbC1jaGFyLWZvbnQK
ICAgICAgICAgICA0ICAgMCUgICAgICAgICAgICAgICAgICAgLSBjbC1yZW1vdmUtaWYtbm90CiAg
ICAgICAgICAgNCAgIDAlICAgICAgICAgICAgICAgICAgICAtIGNsLXJlbW92ZQogICAgICAgICAg
IDEgICAwJSAgICAgICAgICAgICAgICAgICAgICAgZnVuY2FsbAogICAgICAgICAgIDEgICAwJSAg
ICAgICAgICAgICAgICAgICAgICAgY2wtbGRpZmYKICAgICAgICAgICAzICAgMCUgICAgICAgICAg
ICAgICAgICAgICB0cmVlc2l0LXBhcnNlci1yb290LW5vZGUKICAgICAgICAgICAxICAgMCUgICAg
ICAgICAgICAgICAgICAgZm9udC1sb2NrLWZvbnRpZnkta2V5d29yZHMtcmVnaW9uCiAgICAgICAg
ICAgMSAgIDAlICAgICAgICAgICAgICAgIGZvbnQtbG9jay1zZXQtZGVmYXVsdHMKICAgICAgICA1
NDQ3ICAgNiUgICAgICAgICAgICAgLSAjPGJ5dGUtY29kZS1mdW5jdGlvbiAxQjQ+CiAgICAgICAg
NTQ0NyAgIDYlICAgICAgICAgICAgICAtICM8Ynl0ZS1jb2RlLWZ1bmN0aW9uIDQzMT4KICAgICAg
ICA1NDQ3ICAgNiUgICAgICAgICAgICAgICAgIGVnbG90LS1idWlsdGluLW1kb3duLXAKICAgICAg
ICAgICA1ICAgMCUgICAgICAgICAgICAgICBzdHJpbmctdHJpbQogICAgICAgICAgIDQgICAwJSAg
ICAgICAgICAgICAgIGJ1ZmZlci1zdHJpbmcKICAgICAgICAgICA5ICAgMCUgICAgICAgICAgICAt
IHJlcGxhY2UtcmVnZXhwLWluLXN0cmluZwogICAgICAgICAgIDMgICAwJSAgICAgICAgICAgICAg
IGNvbmNhdAogICAgICAgICAgMzggICAwJSAgICAgICAgIC0gIzxieXRlLWNvZGUtZnVuY3Rpb24g
RjY0PgogICAgICAgICAgMzggICAwJSAgICAgICAgICAtICM8Ynl0ZS1jb2RlLWZ1bmN0aW9uIDhF
Mj4KICAgICAgICAgIDM4ICAgMCUgICAgICAgICAgIC0gcnVuLWhvb2std2l0aC1hcmdzCiAgICAg
ICAgICAzNiAgIDAlICAgICAgICAgICAgLSBlbGRvYy1kaXNwbGF5LWluLWVjaG8tYXJlYQogICAg
ICAgICAgMzQgICAwJSAgICAgICAgICAgICAtIGVsZG9jLS1tZXNzYWdlCiAgICAgICAgICAzNCAg
IDAlICAgICAgICAgICAgICAtIGVsZG9jLW1pbmlidWZmZXItbWVzc2FnZQogICAgICAgICAgMzQg
ICAwJSAgICAgICAgICAgICAgIC0gbWVzc2FnZQogICAgICAgICAgMzAgICAwJSAgICAgICAgICAg
ICAgICAgIHJlZGlzcGxheV9pbnRlcm5hbCAoQyBmdW5jdGlvbikKICAgICAgICAgICAxICAgMCUg
ICAgICAgICAgICAgICBmcmFtZS1oZWlnaHQKICAgICAgICAgICAyICAgMCUgICAgICAgICAgICAt
IGVsZG9jLWRpc3BsYXktaW4tYnVmZmVyCiAgICAgICAgICAgMiAgIDAlICAgICAgICAgICAgICAg
ZWxkb2MtLWZvcm1hdC1kb2MtYnVmZmVyCiAgICAgICAgICAyNCAgIDAlICAgICAtIGFwcGx5CiAg
ICAgICAgICAyNCAgIDAlICAgICAgLSBqc29ucnBjLS1ldmVudAogICAgICAgICAgMjQgICAwJSAg
ICAgICAtICM8Ynl0ZS1jb2RlLWZ1bmN0aW9uIDk3NT4KICAgICAgICAgIDI0ICAgMCUgICAgICAg
IC0gYXBwbHkKICAgICAgICAgIDI0ICAgMCUgICAgICAgICAgIGpzb25ycGMtLWxvZy1ldmVudAog
ICAgICAgICAgIDEgICAwJSAgICAgLSBqc29ucnBjLS1yZW1vdmUKICAgICAgICAgICAxICAgMCUg
ICAgICAtIHNsb3QtdmFsdWUKICAgICAgICAgICAxICAgMCUgICAgICAgICBlaWVpby0tc2xvdC1u
YW1lLWluZGV4CiAgICAgICAgICAyMyAgIDAlICAgLSBlbGRvYy0tdXBkYXRlCiAgICAgICAgICAy
MyAgIDAlICAgIC0gZWxkb2MtcHJpbnQtY3VycmVudC1zeW1ib2wtaW5mbwogICAgICAgICAgMjMg
ICAwJSAgICAgLSBlbGRvYy0taW52b2tlLXN0cmF0ZWd5CiAgICAgICAgICAyMyAgIDAlICAgICAg
LSBlbGRvYy1kb2N1bWVudGF0aW9uLWNvbXBvc2UKICAgICAgICAgIDExICAgMCUgICAgICAgLSBl
Z2xvdC1jb2RlLWFjdGlvbi1zdWdnZXN0aW9uCiAgICAgICAgICAgOSAgIDAlICAgICAgICAtIGVn
bG90LS1hc3luYy1yZXF1ZXN0CiAgICAgICAgICAgOSAgIDAlICAgICAgICAgLSBqc29ucnBjLWFz
eW5jLXJlcXVlc3QKICAgICAgICAgICA5ICAgMCUgICAgICAgICAgLSBqc29ucnBjLS1hc3luYy1y
ZXF1ZXN0LTEKICAgICAgICAgICA5ICAgMCUgICAgICAgICAgIC0gYXBwbHkKICAgICAgICAgICA5
ICAgMCUgICAgICAgICAgICAtIGpzb25ycGMtY29ubmVjdGlvbi1zZW5kCiAgICAgICAgICAgOSAg
IDAlICAgICAgICAgICAgIC0gYXBwbHkKICAgICAgICAgICA5ICAgMCUgICAgICAgICAgICAgIC0g
IzxieXRlLWNvZGUtZnVuY3Rpb24gMjQzPgogICAgICAgICAgIDggICAwJSAgICAgICAgICAgICAg
ICAgcHJvY2Vzcy1zZW5kLXN0cmluZwogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgIC0g
anNvbnJwYy0tZXZlbnQKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgICAgLSAjPGJ5dGUt
Y29kZS1mdW5jdGlvbiAyMkU+CiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAgICAtIGFw
cGx5CiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAgICAgICBqc29ucnBjLS1sb2ctZXZl
bnQKICAgICAgICAgICAxICAgMCUgICAgICAgIC0gZWdsb3QtLWNvZGUtYWN0aW9uLWJvdW5kcwog
ICAgICAgICAgIDEgICAwJSAgICAgICAgIC0gZWdsb3QtLWZseW1ha2Utc25pZmYtZGlhZ25vc3Rp
Y3MKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICBmbHltYWtlLWRpYWdub3N0aWNzCiAgICAg
ICAgICAgMSAgIDAlICAgICAgICAtIGVnbG90LXNlcnZlci1jYXBhYmxlCiAgICAgICAgICAgMSAg
IDAlICAgICAgICAgICBlZ2xvdC0tY2FwYWJpbGl0aWVzCiAgICAgICAgICAgNiAgIDAlICAgICAg
IC0gZWdsb3QtaGlnaGxpZ2h0LWVsZG9jLWZ1bmN0aW9uCiAgICAgICAgICAgNiAgIDAlICAgICAg
ICAtIGVnbG90LS1hc3luYy1yZXF1ZXN0CiAgICAgICAgICAgNiAgIDAlICAgICAgICAgLSBqc29u
cnBjLWFzeW5jLXJlcXVlc3QKICAgICAgICAgICA2ICAgMCUgICAgICAgICAgLSBqc29ucnBjLS1h
c3luYy1yZXF1ZXN0LTEKICAgICAgICAgICA2ICAgMCUgICAgICAgICAgIC0gYXBwbHkKICAgICAg
ICAgICA2ICAgMCUgICAgICAgICAgICAtIGpzb25ycGMtY29ubmVjdGlvbi1zZW5kCiAgICAgICAg
ICAgNiAgIDAlICAgICAgICAgICAgIC0gYXBwbHkKICAgICAgICAgICA2ICAgMCUgICAgICAgICAg
ICAgIC0gIzxieXRlLWNvZGUtZnVuY3Rpb24gMjQzPgogICAgICAgICAgIDYgICAwJSAgICAgICAg
ICAgICAgICAgcHJvY2Vzcy1zZW5kLXN0cmluZwogICAgICAgICAgIDUgICAwJSAgICAgICAtIGVn
bG90LWhvdmVyLWVsZG9jLWZ1bmN0aW9uCiAgICAgICAgICAgNSAgIDAlICAgICAgICAtIGVnbG90
LS1hc3luYy1yZXF1ZXN0CiAgICAgICAgICAgNSAgIDAlICAgICAgICAgLSBqc29ucnBjLWFzeW5j
LXJlcXVlc3QKICAgICAgICAgICA1ICAgMCUgICAgICAgICAgLSBqc29ucnBjLS1hc3luYy1yZXF1
ZXN0LTEKICAgICAgICAgICA1ICAgMCUgICAgICAgICAgIC0gYXBwbHkKICAgICAgICAgICA1ICAg
MCUgICAgICAgICAgICAtIGpzb25ycGMtY29ubmVjdGlvbi1zZW5kCiAgICAgICAgICAgNSAgIDAl
ICAgICAgICAgICAgIC0gYXBwbHkKICAgICAgICAgICA1ICAgMCUgICAgICAgICAgICAgIC0gIzxi
eXRlLWNvZGUtZnVuY3Rpb24gMjQzPgogICAgICAgICAgIDUgICAwJSAgICAgICAgICAgICAgICAg
cHJvY2Vzcy1zZW5kLXN0cmluZwogICAgICAgICAgIDEgICAwJSAgICAgICAtIGVnbG90LXNpZ25h
dHVyZS1lbGRvYy1mdW5jdGlvbgogICAgICAgICAgIDEgICAwJSAgICAgICAgLSBlZ2xvdC0tYXN5
bmMtcmVxdWVzdAogICAgICAgICAgIDEgICAwJSAgICAgICAgIC0ganNvbnJwYy1hc3luYy1yZXF1
ZXN0CiAgICAgICAgICAgMSAgIDAlICAgICAgICAgIC0ganNvbnJwYy0tYXN5bmMtcmVxdWVzdC0x
CiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAtIGFwcGx5CiAgICAgICAgICAgMSAgIDAlICAg
ICAgICAgICAgLSBqc29ucnBjLWNvbm5lY3Rpb24tc2VuZAogICAgICAgICAgIDEgICAwJSAgICAg
ICAgICAgICAtIGFwcGx5CiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAtICM8Ynl0ZS1j
b2RlLWZ1bmN0aW9uIDI0Mz4KICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgICAgIHByb2Nl
c3Mtc2VuZC1zdHJpbmcKICAgICAgICAgICAyICAgMCUgICAtIHNob3ctcGFyZW4tZnVuY3Rpb24K
ICAgICAgICAgICAyICAgMCUgICAgLSBzaG93LXBhcmVuLS1kZWZhdWx0CiAgICAgICAgICAgMSAg
IDAlICAgICAtIHN5bnRheC1wcHNzCiAgICAgICAgICAgMSAgIDAlICAgICAgICBwYXJzZS1wYXJ0
aWFsLXNleHAKICAgICAgICAgICAxICAgMCUgICAgIC0gc2hvdy1wYXJlbi0tbG9jYXRlLW5lYXIt
cGFyZW4KICAgICAgICAgICAxICAgMCUgICAgICAgIGJhY2stdG8taW5kZW50YXRpb24KICAgICAg
ICAxMDc2ICAgMSUgICBBdXRvbWF0aWMgR0MKICAgICAgICAgMjI3ICAgMCUgLSBjb21tYW5kLWV4
ZWN1dGUKICAgICAgICAgMTQ0ICAgMCUgIC0gYnl0ZS1jb2RlCiAgICAgICAgIDE0NCAgIDAlICAg
LSByZWFkLWV4dGVuZGVkLWNvbW1hbmQKICAgICAgICAgMTQ0ICAgMCUgICAgLSByZWFkLWV4dGVu
ZGVkLWNvbW1hbmQtMQogICAgICAgICAxNDQgICAwJSAgICAgLSBjb21wbGV0aW5nLXJlYWQtZGVm
YXVsdAogICAgICAgICAgMzEgICAwJSAgICAgICAgcmVkaXNwbGF5X2ludGVybmFsIChDIGZ1bmN0
aW9uKQogICAgICAgICAgMTUgICAwJSAgICAgIC0gY29tbWFuZC1leGVjdXRlCiAgICAgICAgICAx
NSAgIDAlICAgICAgIC0gZnVuY2FsbC1pbnRlcmFjdGl2ZWx5CiAgICAgICAgICAxNCAgIDAlICAg
ICAgICAtIG1pbmlidWZmZXItY29tcGxldGUKICAgICAgICAgIDE0ICAgMCUgICAgICAgICAtIGNv
bXBsZXRpb24taW4tcmVnaW9uCiAgICAgICAgICAxNCAgIDAlICAgICAgICAgIC0gY29tcGxldGlv
bi0taW4tcmVnaW9uCiAgICAgICAgICAxNCAgIDAlICAgICAgICAgICAtICM8Ynl0ZS1jb2RlLWZ1
bmN0aW9uIDIwNj4KICAgICAgICAgIDE0ICAgMCUgICAgICAgICAgICAtIGFwcGx5CiAgICAgICAg
ICAxNCAgIDAlICAgICAgICAgICAgIC0gIzxieXRlLWNvZGUtZnVuY3Rpb24gMUQ0PgogICAgICAg
ICAgMTQgICAwJSAgICAgICAgICAgICAgLSBjb21wbGV0aW9uLS1pbi1yZWdpb24tMQogICAgICAg
ICAgMTQgICAwJSAgICAgICAgICAgICAgIC0gY29tcGxldGlvbi0tZG8tY29tcGxldGlvbgogICAg
ICAgICAgIDcgICAwJSAgICAgICAgICAgICAgICAtIG1pbmlidWZmZXItY29tcGxldGlvbi1oZWxw
CiAgICAgICAgICAgNCAgIDAlICAgICAgICAgICAgICAgICAtIHRlbXAtYnVmZmVyLXdpbmRvdy1z
aG93CiAgICAgICAgICAgNCAgIDAlICAgICAgICAgICAgICAgICAgLSBkaXNwbGF5LWJ1ZmZlcgog
ICAgICAgICAgIDMgICAwJSAgICAgICAgICAgICAgICAgICAtIGRpc3BsYXktYnVmZmVyLWF0LWJv
dHRvbQogICAgICAgICAgIDIgICAwJSAgICAgICAgICAgICAgICAgICAgLSB3aW5kb3ctLWRpc3Bs
YXktYnVmZmVyCiAgICAgICAgICAgMiAgIDAlICAgICAgICAgICAgICAgICAgICAgLSBjb21wbGV0
aW9ucy0tZml0LXdpbmRvdy10by1idWZmZXIKICAgICAgICAgICAyICAgMCUgICAgICAgICAgICAg
ICAgICAgICAgICBmaXQtd2luZG93LXRvLWJ1ZmZlcgogICAgICAgICAgIDEgICAwJSAgICAgICAg
ICAgICAgICAgICAgLSBzcGxpdC13aW5kb3ctbm8tZXJyb3IKICAgICAgICAgICAxICAgMCUgICAg
ICAgICAgICAgICAgICAgICAtIHNwbGl0LXdpbmRvdwogICAgICAgICAgIDEgICAwJSAgICAgICAg
ICAgICAgICAgICAgICAgIHNwbGl0LXdpbmRvdy1pbnRlcm5hbAogICAgICAgICAgIDEgICAwJSAg
ICAgICAgICAgICAgICAgICAgIGRpc3BsYXktYnVmZmVyLWFzc3EtcmVnZXhwCiAgICAgICAgICAg
NyAgIDAlICAgICAgICAgICAgICAgIC0gY29tcGxldGlvbi10cnktY29tcGxldGlvbgogICAgICAg
ICAgIDcgICAwJSAgICAgICAgICAgICAgICAgLSBjb21wbGV0aW9uLS1udGgtY29tcGxldGlvbgog
ICAgICAgICAgIDcgICAwJSAgICAgICAgICAgICAgICAgIC0gc2VxLXNvbWUKICAgICAgICAgICA3
ICAgMCUgICAgICAgICAgICAgICAgICAgLSBzZXEtZG8KICAgICAgICAgICA3ICAgMCUgICAgICAg
ICAgICAgICAgICAgIC0gbWFwYwogICAgICAgICAgIDcgICAwJSAgICAgICAgICAgICAgICAgICAg
IC0gIzxieXRlLWNvZGUtZnVuY3Rpb24gNEFDPgogICAgICAgICAgIDcgICAwJSAgICAgICAgICAg
ICAgICAgICAgICAtICM8Ynl0ZS1jb2RlLWZ1bmN0aW9uIEJBQj4KICAgICAgICAgICA3ICAgMCUg
ICAgICAgICAgICAgICAgICAgICAgIC0gZXZhbAogICAgICAgICAgIDcgICAwJSAgICAgICAgICAg
ICAgICAgICAgICAgIC0gbGV0CiAgICAgICAgICAgNyAgIDAlICAgICAgICAgICAgICAgICAgICAg
ICAgIC0gZnVuY2FsbAogICAgICAgICAgIDcgICAwJSAgICAgICAgICAgICAgICAgICAgICAgICAg
LSAjPGJ5dGUtY29kZS1mdW5jdGlvbiBFNEE+CiAgICAgICAgICAgNyAgIDAlICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLSBjb21wbGV0aW9uLWJhc2ljLXRyeS1jb21wbGV0aW9uCiAgICAgICAg
ICAgNyAgIDAlICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gIzxuYXRpdmUtY29tcC1mdW5j
dGlvbiBGNjE2ZTZmNmU3OTZkNmY3NTczMmQ2YzYxNmQ2MjY0NjFfYW5vbnltb3VzX2xhbWJkYV81
Nj4KICAgICAgICAgICA3ICAgMCUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gY29tcGxl
dGUtd2l0aC1hY3Rpb24KICAgICAgICAgICA3ICAgMCUgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRyeS1jb21wbGV0aW9uCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgIHNlbGYtaW5z
ZXJ0LWNvbW1hbmQKICAgICAgICAgICAyICAgMCUgICAgICAtIHRpbWVyLWV2ZW50LWhhbmRsZXIK
ICAgICAgICAgICAyICAgMCUgICAgICAgLSBhcHBseQogICAgICAgICAgIDIgICAwJSAgICAgICAg
LSBjb21wbGV0aW9ucy0tYmFja2dyb3VuZC11cGRhdGUKICAgICAgICAgICAyICAgMCUgICAgICAg
ICAgIGlucHV0LXBlbmRpbmctcAogICAgICAgICAgNjggICAwJSAgLSBmdW5jYWxsLWludGVyYWN0
aXZlbHkKICAgICAgICAgIDY2ICAgMCUgICAtIGlzcGVsbAogICAgICAgICAgNjYgICAwJSAgICAt
IGlzcGVsbC1idWZmZXIKICAgICAgICAgIDY2ICAgMCUgICAgIC0gaXNwZWxsLXJlZ2lvbgogICAg
ICAgICAgNDAgICAwJSAgICAgIC0gaXNwZWxsLXNldC1zcGVsbGNoZWNrZXItcGFyYW1zCiAgICAg
ICAgICAzNyAgIDAlICAgICAgIC0gaXNwZWxsLWZpbmQtYXNwZWxsLWRpY3Rpb25hcmllcwogICAg
ICAgICAgMjAgICAwJSAgICAgICAgLSBpc3BlbGwtYXNwZWxsLWZpbmQtZGljdGlvbmFyeQogICAg
ICAgICAgMTEgICAwJSAgICAgICAgICAgZmlsZS1yZWFkYWJsZS1wCiAgICAgICAgICAgNiAgIDAl
ICAgICAgICAgLSBpc3BlbGwtZ2V0LWFzcGVsbC1jb25maWctdmFsdWUKICAgICAgICAgICA2ICAg
MCUgICAgICAgICAgLSBpc3BlbGwtY2FsbC1wcm9jZXNzCiAgICAgICAgICAgNiAgIDAlICAgICAg
ICAgICAgIGNhbGwtcHJvY2VzcwogICAgICAgICAgIDMgICAwJSAgICAgICAgIC0gaW5zZXJ0LWZp
bGUtY29udGVudHMKICAgICAgICAgICAyICAgMCUgICAgICAgICAgLSBzZXQtYXV0by1jb2RpbmcK
ICAgICAgICAgICAyICAgMCUgICAgICAgICAgIC0gZmluZC1hdXRvLWNvZGluZwogICAgICAgICAg
IDEgICAwJSAgICAgICAgICAgICAgc2dtbC14bWwtYXV0by1jb2RpbmctZnVuY3Rpb24KICAgICAg
ICAgICAxICAgMCUgICAgICAgICAgICAgIGF1dG8tY29kaW5nLWFsaXN0LWxvb2t1cAogICAgICAg
ICAgMTQgICAwJSAgICAgICAgLSBpc3BlbGwtYXNwZWxsLWFkZC1hbGlhc2VzCiAgICAgICAgICAg
MSAgIDAlICAgICAgICAgICBmaWxlLWV4cGFuZC13aWxkY2FyZHMKICAgICAgICAgICAzICAgMCUg
ICAgICAgIC0gaXNwZWxsLWNhbGwtcHJvY2VzcwogICAgICAgICAgIDMgICAwJSAgICAgICAgICAg
Y2FsbC1wcm9jZXNzCiAgICAgICAgICAgMyAgIDAlICAgICAgIC0gaXNwZWxsLWNoZWNrLXZlcnNp
b24KICAgICAgICAgICAzICAgMCUgICAgICAgIC0gaXNwZWxsLWNhbGwtcHJvY2VzcwogICAgICAg
ICAgIDMgICAwJSAgICAgICAgICAgY2FsbC1wcm9jZXNzCiAgICAgICAgICAyMSAgIDAlICAgICAg
LSBpc3BlbGwtcHJvY2Vzcy1saW5lCiAgICAgICAgICAyMCAgIDAlICAgICAgIC0gaXNwZWxsLWNv
bW1hbmQtbG9vcAogICAgICAgICAgMTQgICAwJSAgICAgICAgLSByZWFkLWtleQogICAgICAgICAg
MTIgICAwJSAgICAgICAgIC0gcmVhZC1rZXktc2VxdWVuY2UtdmVjdG9yCiAgICAgICAgICAgMyAg
IDAlICAgICAgICAgICAgcmVkaXNwbGF5X2ludGVybmFsIChDIGZ1bmN0aW9uKQogICAgICAgICAg
IDEgICAwJSAgICAgICAgICAtIHRpbWVyLWV2ZW50LWhhbmRsZXIKICAgICAgICAgICAxICAgMCUg
ICAgICAgICAgIC0gYXBwbHkKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAtIGppdC1sb2Nr
LWNvbnRleHQtLXVwZGF0ZQogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgIGppdC1sb2Nr
LWNvbnRleHQtZm9udGlmeQogICAgICAgICAgIDIgICAwJSAgICAgICAgIC0gIzxieXRlLWNvZGUt
ZnVuY3Rpb24gRTk2PgogICAgICAgICAgIDIgICAwJSAgICAgICAgICAtIG1lc3NhZ2UKICAgICAg
ICAgICAyICAgMCUgICAgICAgICAgICAgcmVkaXNwbGF5X2ludGVybmFsIChDIGZ1bmN0aW9uKQog
ICAgICAgICAgIDEgICAwJSAgICAgICAgICBwb3MtdmlzaWJsZS1pbi13aW5kb3ctZ3JvdXAtcAog
ICAgICAgICAgIDEgICAwJSAgICAgICAgLSBpc3BlbGwtaGlnaGxpZ2h0LXNwZWxsaW5nLWVycm9y
CiAgICAgICAgICAgMSAgIDAlICAgICAgICAgLSBpc3BlbGwtaGlnaGxpZ2h0LXNwZWxsaW5nLWVy
cm9yLW92ZXJsYXkKICAgICAgICAgICAxICAgMCUgICAgICAgICAgLSBpc2VhcmNoLWxhenktaGln
aGxpZ2h0LW5ldy1sb29wCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgIHJlZGlzcGxheV9p
bnRlcm5hbCAoQyBmdW5jdGlvbikKICAgICAgICAgICAxICAgMCUgICAgICAgLSBzaXQtZm9yCiAg
ICAgICAgICAgMSAgIDAlICAgICAgICAgIHJlZGlzcGxheV9pbnRlcm5hbCAoQyBmdW5jdGlvbikK
ICAgICAgICAgICA1ICAgMCUgICAgICAtIGlzcGVsbC1hY2NlcHQtYnVmZmVyLWxvY2FsLWRlZnMK
ICAgICAgICAgICA1ICAgMCUgICAgICAgLSBpc3BlbGwtYnVmZmVyLWxvY2FsLXdvcmRzCiAgICAg
ICAgICAgNSAgIDAlICAgICAgICAtIGlzcGVsbC1pbml0LXByb2Nlc3MKICAgICAgICAgICAyICAg
MCUgICAgICAgICAtIGlzcGVsbC1jaGVjay12ZXJzaW9uCiAgICAgICAgICAgMiAgIDAlICAgICAg
ICAgIC0gaXNwZWxsLWNhbGwtcHJvY2VzcwogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICBj
YWxsLXByb2Nlc3MKICAgICAgICAgICAxICAgMCUgICAgICAgICAtIG1ha2UtcHJvZ3Jlc3MtcmVw
b3J0ZXIKICAgICAgICAgICAxICAgMCUgICAgICAgICAgLSBwcm9ncmVzcy1yZXBvcnRlci1kby11
cGRhdGUKICAgICAgICAgICAxICAgMCUgICAgICAgICAgIC0gcHJvZ3Jlc3MtcmVwb3J0ZXItZWNo
by1hcmVhCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICByZWRpc3BsYXlfaW50ZXJuYWwg
KEMgZnVuY3Rpb24pCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICBzaXQtZm9yCiAgICAgICAg
ICAgMSAgIDAlICAgICAgICAgLSBwcm9ncmVzcy1yZXBvcnRlci1kb25lCiAgICAgICAgICAgMSAg
IDAlICAgICAgICAgICAgcHJvZ3Jlc3MtcmVwb3J0ZXItZWNoby1hcmVhCiAgICAgICAgICAgMSAg
IDAlICAgLSBwcmV2aW91cy1saW5lCiAgICAgICAgICAgMSAgIDAlICAgIC0gbGluZS1tb3ZlCiAg
ICAgICAgICAgMSAgIDAlICAgICAgIGxpbmUtbW92ZS12aXN1YWwKICAgICAgICAgICAxICAgMCUg
ICAgIGV4ZWN1dGUtZXh0ZW5kZWQtY29tbWFuZAogICAgICAgICAgIDQgICAwJSAgLSBkZWZ2YXIK
ICAgICAgICAgICA0ICAgMCUgICAtIGJ5dGUtY29kZQogICAgICAgICAgIDQgICAwJSAgICAtIGlz
cGVsbC1jaGVjay12ZXJzaW9uCiAgICAgICAgICAgNCAgIDAlICAgICAtIGlzcGVsbC1jYWxsLXBy
b2Nlc3MKICAgICAgICAgICA0ICAgMCUgICAgICAgIGNhbGwtcHJvY2VzcwogICAgICAgICAgNjgg
ICAwJSAtIHJlZGlzcGxheV9pbnRlcm5hbCAoQyBmdW5jdGlvbikKICAgICAgICAgICAzICAgMCUg
IC0gZXZhbAogICAgICAgICAgIDIgICAwJSAgIC0gY2wtbG9vcAogICAgICAgICAgIDIgICAwJSAg
ICAtIGNsLWJsb2NrCiAgICAgICAgICAgMSAgIDAlICAgICAtIGNsLS1ibG9jay13cmFwcGVyCiAg
ICAgICAgICAgMSAgIDAlICAgICAgLSBsZXQKICAgICAgICAgICAxICAgMCUgICAgICAgLSBjYXRj
aAogICAgICAgICAgIDEgICAwJSAgICAgICAgLSBsZXQqCiAgICAgICAgICAgMSAgIDAlICAgICAg
ICAgLSB3aGlsZQogICAgICAgICAgIDEgICAwJSAgICAgICAgICAtIHNldHEKICAgICAgICAgICAx
ICAgMCUgICAgICAgICAgIC0gZm9ybWF0LW1vZGUtbGluZQogICAgICAgICAgIDEgICAwJSAgICAg
ICAgICAgIC0gZXZhbAogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAtIHdoZW4tbGV0Kgog
ICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgICBpZi1sZXQqCiAgICAgICAgICAgMSAgIDAl
ICAgLSBpZgogICAgICAgICAgIDEgICAwJSAgICAgIGZyYW1lLXBhcmFtZXRlcgogICAgICAgICAg
IDggICAwJSAtIC4uLgogICAgICAgICAgIDggICAwJSAgLSBjb21wbGV0aW9uLWFsbC1jb21wbGV0
aW9ucwogICAgICAgICAgIDggICAwJSAgIC0gY29tcGxldGlvbi0tbnRoLWNvbXBsZXRpb24KICAg
ICAgICAgICA4ICAgMCUgICAgLSBzZXEtc29tZQogICAgICAgICAgIDggICAwJSAgICAgLSBzZXEt
ZG8KICAgICAgICAgICA4ICAgMCUgICAgICAtIG1hcGMKICAgICAgICAgICA4ICAgMCUgICAgICAg
LSAjPGJ5dGUtY29kZS1mdW5jdGlvbiBFMzM+CiAgICAgICAgICAgOCAgIDAlICAgICAgICAtICM8
Ynl0ZS1jb2RlLWZ1bmN0aW9uIEVDQj4KICAgICAgICAgICA4ICAgMCUgICAgICAgICAtIGV2YWwK
ICAgICAgICAgICA4ICAgMCUgICAgICAgICAgLSBsZXQKICAgICAgICAgICA4ICAgMCUgICAgICAg
ICAgIC0gZnVuY2FsbAogICAgICAgICAgIDggICAwJSAgICAgICAgICAgIC0gIzxieXRlLWNvZGUt
ZnVuY3Rpb24gRTFCPgogICAgICAgICAgIDggICAwJSAgICAgICAgICAgICAtIGNvbXBsZXRpb24t
YmFzaWMtYWxsLWNvbXBsZXRpb25zCiAgICAgICAgICAgOCAgIDAlICAgICAgICAgICAgICAtIGNv
bXBsZXRpb24tcGNtLS1hbGwtY29tcGxldGlvbnMKICAgICAgICAgICA4ICAgMCUgICAgICAgICAg
ICAgICAtICM8bmF0aXZlLWNvbXAtZnVuY3Rpb24gRjYxNmU2ZjZlNzk2ZDZmNzU3MzJkNmM2MTZk
NjI2NDYxX2Fub255bW91c19sYW1iZGFfNTY+CiAgICAgICAgICAgOCAgIDAlICAgICAgICAgICAg
ICAgIC0gY29tcGxldGUtd2l0aC1hY3Rpb24KICAgICAgICAgICA4ICAgMCUgICAgICAgICAgICAg
ICAgICAgYWxsLWNvbXBsZXRpb25zCiAgICAgICAgICAgMSAgIDAlIC0ganNvbnJwYy0tcHJvY2Vz
cy1maWx0ZXIKICAgICAgICAgICAxICAgMCUgIC0ganNvbnJwYy0tanNvbi1yZWFkCiAgICAgICAg
ICAgMSAgIDAlICAgICBqc29uLXBhcnNlLWJ1ZmZlcgo=
--0000000000002f4c7e0652f8c2d7
Content-Type: text/x-python-script; charset="US-ASCII"; name="test_pydantic.py"
Content-Disposition: attachment; filename="test_pydantic.py"
Content-Transfer-Encoding: base64
Content-ID: <f_mpr8i8nq1>
X-Attachment-Id: f_mpr8i8nq1
ZnJvbSBweWRhbnRpYyBpbXBvcnQgRmllbGQKCiMgcGxhY2UgeW91ciBjdXJzb3IgaGVyZQojICAg
ICAgICB2CkZpZWxkKCJ0ZXN0IikK
--0000000000002f4c7e0652f8c2d7
Content-Type: text/x-python-script; charset="US-ASCII"; name="test_standalone.py"
Content-Disposition: attachment; filename="test_standalone.py"
Content-Transfer-Encoding: base64
Content-ID: <f_mpr8i8o22>
X-Attachment-Id: f_mpr8i8o22
aW1wb3J0IHJlCmZyb20gdHlwaW5nIGltcG9ydCBBbnksIENhbGxhYmxlLCBMaXRlcmFsLCBUeXBl
VmFyLCBvdmVybG9hZCwgVHlwZWREaWN0CmZyb20gdHlwaW5nX2V4dGVuc2lvbnMgaW1wb3J0IFVu
cGFjaywgZGVwcmVjYXRlZCBhcyBEZXByZWNhdGVkCgpfVW5zZXQ6IEFueSA9IG9iamVjdCgpCl9U
ID0gVHlwZVZhcigiX1QiKQoKSnNvbkRpY3QgPSBkaWN0W3N0ciwgQW55XQpQeWRhbnRpY1VuZGVm
aW5lZCA9IG9iamVjdCgpCgoKY2xhc3MgX0VtcHR5S3dhcmdzKFR5cGVkRGljdCk6CiAgICBwYXNz
CgoKY2xhc3MgQWxpYXNQYXRoOgogICAgcGFzcwoKCmNsYXNzIEFsaWFzQ2hvaWNlczoKICAgIHBh
c3MKCgpjbGFzcyBGaWVsZEluZm86CiAgICBwYXNzCgoKY2xhc3MgRGlzY3JpbWluYXRvcjoKICAg
IHBhc3MKCgpjbGFzcyB0eXBlczoKICAgIERpc2NyaW1pbmF0b3IgPSBEaXNjcmltaW5hdG9yCgoK
Y2xhc3MgYW5ub3RhdGVkX3R5cGVzOgogICAgU3VwcG9ydHNHdCA9IEFueQogICAgU3VwcG9ydHNH
ZSA9IEFueQogICAgU3VwcG9ydHNMdCA9IEFueQogICAgU3VwcG9ydHNMZSA9IEFueQoKCkBvdmVy
bG9hZCAgIyB0eXBlIGhpbnQgdGhlIHJldHVybiB2YWx1ZSBhcyBgQW55YCB0byBhdm9pZCB0eXBl
IGNoZWNraW5nIHJlZ3Jlc3Npb25zIHdoZW4gdXNpbmcgYC4uLmAuCmRlZiBGaWVsZCgKICAgIGRl
ZmF1bHQ6IGVsbGlwc2lzLCAgIyBub3FhOiBGODIxICAjIFRPRE86IHVzZSBgX3R5cGluZ19leHRy
YS5FbGxpcHNpc1R5cGVgIHdoZW4gd2UgZHJvcCBQeTMuOQogICAgKiwKICAgIGFsaWFzOiBzdHIg
fCBOb25lID0gX1Vuc2V0LAogICAgYWxpYXNfcHJpb3JpdHk6IGludCB8IE5vbmUgPSBfVW5zZXQs
CiAgICB2YWxpZGF0aW9uX2FsaWFzOiBzdHIgfCBBbGlhc1BhdGggfCBBbGlhc0Nob2ljZXMgfCBO
b25lID0gX1Vuc2V0LAogICAgc2VyaWFsaXphdGlvbl9hbGlhczogc3RyIHwgTm9uZSA9IF9VbnNl
dCwKICAgIHRpdGxlOiBzdHIgfCBOb25lID0gX1Vuc2V0LAogICAgZmllbGRfdGl0bGVfZ2VuZXJh
dG9yOiBDYWxsYWJsZVtbc3RyLCBGaWVsZEluZm9dLCBzdHJdIHwgTm9uZSA9IF9VbnNldCwKICAg
IGRlc2NyaXB0aW9uOiBzdHIgfCBOb25lID0gX1Vuc2V0LAogICAgZXhhbXBsZXM6IGxpc3RbQW55
XSB8IE5vbmUgPSBfVW5zZXQsCiAgICBleGNsdWRlOiBib29sIHwgTm9uZSA9IF9VbnNldCwKICAg
IGV4Y2x1ZGVfaWY6IENhbGxhYmxlW1tBbnldLCBib29sXSB8IE5vbmUgPSBfVW5zZXQsCiAgICBk
aXNjcmltaW5hdG9yOiBzdHIgfCB0eXBlcy5EaXNjcmltaW5hdG9yIHwgTm9uZSA9IF9VbnNldCwK
ICAgIGRlcHJlY2F0ZWQ6IERlcHJlY2F0ZWQgfCBzdHIgfCBib29sIHwgTm9uZSA9IF9VbnNldCwK
ICAgIGpzb25fc2NoZW1hX2V4dHJhOiBKc29uRGljdCB8IENhbGxhYmxlW1tKc29uRGljdF0sIE5v
bmVdIHwgTm9uZSA9IF9VbnNldCwKICAgIGZyb3plbjogYm9vbCB8IE5vbmUgPSBfVW5zZXQsCiAg
ICB2YWxpZGF0ZV9kZWZhdWx0OiBib29sIHwgTm9uZSA9IF9VbnNldCwKICAgIHJlcHI6IGJvb2wg
PSBfVW5zZXQsCiAgICBpbml0OiBib29sIHwgTm9uZSA9IF9VbnNldCwKICAgIGluaXRfdmFyOiBi
b29sIHwgTm9uZSA9IF9VbnNldCwKICAgIGt3X29ubHk6IGJvb2wgfCBOb25lID0gX1Vuc2V0LAog
ICAgcGF0dGVybjogc3RyIHwgcmUuUGF0dGVybltzdHJdIHwgTm9uZSA9IF9VbnNldCwKICAgIHN0
cmljdDogYm9vbCB8IE5vbmUgPSBfVW5zZXQsCiAgICBjb2VyY2VfbnVtYmVyc190b19zdHI6IGJv
b2wgfCBOb25lID0gX1Vuc2V0LAogICAgZ3Q6IGFubm90YXRlZF90eXBlcy5TdXBwb3J0c0d0IHwg
Tm9uZSA9IF9VbnNldCwKICAgIGdlOiBhbm5vdGF0ZWRfdHlwZXMuU3VwcG9ydHNHZSB8IE5vbmUg
PSBfVW5zZXQsCiAgICBsdDogYW5ub3RhdGVkX3R5cGVzLlN1cHBvcnRzTHQgfCBOb25lID0gX1Vu
c2V0LAogICAgbGU6IGFubm90YXRlZF90eXBlcy5TdXBwb3J0c0xlIHwgTm9uZSA9IF9VbnNldCwK
ICAgIG11bHRpcGxlX29mOiBmbG9hdCB8IE5vbmUgPSBfVW5zZXQsCiAgICBhbGxvd19pbmZfbmFu
OiBib29sIHwgTm9uZSA9IF9VbnNldCwKICAgIG1heF9kaWdpdHM6IGludCB8IE5vbmUgPSBfVW5z
ZXQsCiAgICBkZWNpbWFsX3BsYWNlczogaW50IHwgTm9uZSA9IF9VbnNldCwKICAgIG1pbl9sZW5n
dGg6IGludCB8IE5vbmUgPSBfVW5zZXQsCiAgICBtYXhfbGVuZ3RoOiBpbnQgfCBOb25lID0gX1Vu
c2V0LAogICAgdW5pb25fbW9kZTogTGl0ZXJhbFsic21hcnQiLCAibGVmdF90b19yaWdodCJdID0g
X1Vuc2V0LAogICAgZmFpbF9mYXN0OiBib29sIHwgTm9uZSA9IF9VbnNldCwKICAgICoqZXh0cmE6
IFVucGFja1tfRW1wdHlLd2FyZ3NdLAopIC0+IEFueTogLi4uCkBvdmVybG9hZCAgIyBgZGVmYXVs
dGAgYXJndW1lbnQgc2V0LCB2YWxpZGF0ZV9kZWZhdWx0PVRydWUgKG5vIHR5cGUgY2hlY2tpbmcg
b24gdGhlIGRlZmF1bHQgdmFsdWUpCmRlZiBGaWVsZCgKICAgIGRlZmF1bHQ6IEFueSwKICAgICos
CiAgICBhbGlhczogc3RyIHwgTm9uZSA9IF9VbnNldCwKICAgIGFsaWFzX3ByaW9yaXR5OiBpbnQg
fCBOb25lID0gX1Vuc2V0LAogICAgdmFsaWRhdGlvbl9hbGlhczogc3RyIHwgQWxpYXNQYXRoIHwg
QWxpYXNDaG9pY2VzIHwgTm9uZSA9IF9VbnNldCwKICAgIHNlcmlhbGl6YXRpb25fYWxpYXM6IHN0
ciB8IE5vbmUgPSBfVW5zZXQsCiAgICB0aXRsZTogc3RyIHwgTm9uZSA9IF9VbnNldCwKICAgIGZp
ZWxkX3RpdGxlX2dlbmVyYXRvcjogQ2FsbGFibGVbW3N0ciwgRmllbGRJbmZvXSwgc3RyXSB8IE5v
bmUgPSBfVW5zZXQsCiAgICBkZXNjcmlwdGlvbjogc3RyIHwgTm9uZSA9IF9VbnNldCwKICAgIGV4
YW1wbGVzOiBsaXN0W0FueV0gfCBOb25lID0gX1Vuc2V0LAogICAgZXhjbHVkZTogYm9vbCB8IE5v
bmUgPSBfVW5zZXQsCiAgICBleGNsdWRlX2lmOiBDYWxsYWJsZVtbQW55XSwgYm9vbF0gfCBOb25l
ID0gX1Vuc2V0LAogICAgZGlzY3JpbWluYXRvcjogc3RyIHwgdHlwZXMuRGlzY3JpbWluYXRvciB8
IE5vbmUgPSBfVW5zZXQsCiAgICBkZXByZWNhdGVkOiBEZXByZWNhdGVkIHwgc3RyIHwgYm9vbCB8
IE5vbmUgPSBfVW5zZXQsCiAgICBqc29uX3NjaGVtYV9leHRyYTogSnNvbkRpY3QgfCBDYWxsYWJs
ZVtbSnNvbkRpY3RdLCBOb25lXSB8IE5vbmUgPSBfVW5zZXQsCiAgICBmcm96ZW46IGJvb2wgfCBO
b25lID0gX1Vuc2V0LAogICAgdmFsaWRhdGVfZGVmYXVsdDogTGl0ZXJhbFtUcnVlXSA9IF9VbnNl
dCwKICAgIHJlcHI6IGJvb2wgPSBfVW5zZXQsCiAgICBpbml0OiBib29sIHwgTm9uZSA9IF9VbnNl
dCwKICAgIGluaXRfdmFyOiBib29sIHwgTm9uZSA9IF9VbnNldCwKICAgIGt3X29ubHk6IGJvb2wg
fCBOb25lID0gX1Vuc2V0LAogICAgcGF0dGVybjogc3RyIHwgcmUuUGF0dGVybltzdHJdIHwgTm9u
ZSA9IF9VbnNldCwKICAgIHN0cmljdDogYm9vbCB8IE5vbmUgPSBfVW5zZXQsCiAgICBjb2VyY2Vf
bnVtYmVyc190b19zdHI6IGJvb2wgfCBOb25lID0gX1Vuc2V0LAogICAgZ3Q6IGFubm90YXRlZF90
eXBlcy5TdXBwb3J0c0d0IHwgTm9uZSA9IF9VbnNldCwKICAgIGdlOiBhbm5vdGF0ZWRfdHlwZXMu
U3VwcG9ydHNHZSB8IE5vbmUgPSBfVW5zZXQsCiAgICBsdDogYW5ub3RhdGVkX3R5cGVzLlN1cHBv
cnRzTHQgfCBOb25lID0gX1Vuc2V0LAogICAgbGU6IGFubm90YXRlZF90eXBlcy5TdXBwb3J0c0xl
IHwgTm9uZSA9IF9VbnNldCwKICAgIG11bHRpcGxlX29mOiBmbG9hdCB8IE5vbmUgPSBfVW5zZXQs
CiAgICBhbGxvd19pbmZfbmFuOiBib29sIHwgTm9uZSA9IF9VbnNldCwKICAgIG1heF9kaWdpdHM6
IGludCB8IE5vbmUgPSBfVW5zZXQsCiAgICBkZWNpbWFsX3BsYWNlczogaW50IHwgTm9uZSA9IF9V
bnNldCwKICAgIG1pbl9sZW5ndGg6IGludCB8IE5vbmUgPSBfVW5zZXQsCiAgICBtYXhfbGVuZ3Ro
OiBpbnQgfCBOb25lID0gX1Vuc2V0LAogICAgdW5pb25fbW9kZTogTGl0ZXJhbFsic21hcnQiLCAi
bGVmdF90b19yaWdodCJdID0gX1Vuc2V0LAogICAgZmFpbF9mYXN0OiBib29sIHwgTm9uZSA9IF9V
bnNldCwKICAgICoqZXh0cmE6IFVucGFja1tfRW1wdHlLd2FyZ3NdLAopIC0+IEFueTogLi4uCkBv
dmVybG9hZCAgIyBgZGVmYXVsdGAgYXJndW1lbnQgc2V0LCB2YWxpZGF0ZV9kZWZhdWx0PUZhbHNl
IG9yIHVuc2V0CmRlZiBGaWVsZCgKICAgIGRlZmF1bHQ6IF9ULAogICAgKiwKICAgIGFsaWFzOiBz
dHIgfCBOb25lID0gX1Vuc2V0LAogICAgYWxpYXNfcHJpb3JpdHk6IGludCB8IE5vbmUgPSBfVW5z
ZXQsCiAgICB2YWxpZGF0aW9uX2FsaWFzOiBzdHIgfCBBbGlhc1BhdGggfCBBbGlhc0Nob2ljZXMg
fCBOb25lID0gX1Vuc2V0LAogICAgc2VyaWFsaXphdGlvbl9hbGlhczogc3RyIHwgTm9uZSA9IF9V
bnNldCwKICAgIHRpdGxlOiBzdHIgfCBOb25lID0gX1Vuc2V0LAogICAgZmllbGRfdGl0bGVfZ2Vu
ZXJhdG9yOiBDYWxsYWJsZVtbc3RyLCBGaWVsZEluZm9dLCBzdHJdIHwgTm9uZSA9IF9VbnNldCwK
ICAgIGRlc2NyaXB0aW9uOiBzdHIgfCBOb25lID0gX1Vuc2V0LAogICAgZXhhbXBsZXM6IGxpc3Rb
QW55XSB8IE5vbmUgPSBfVW5zZXQsCiAgICBleGNsdWRlOiBib29sIHwgTm9uZSA9IF9VbnNldCwK
ICAgIGV4Y2x1ZGVfaWY6IENhbGxhYmxlW1tBbnldLCBib29sXSB8IE5vbmUgPSBfVW5zZXQsCiAg
ICBkaXNjcmltaW5hdG9yOiBzdHIgfCB0eXBlcy5EaXNjcmltaW5hdG9yIHwgTm9uZSA9IF9VbnNl
dCwKICAgIGRlcHJlY2F0ZWQ6IERlcHJlY2F0ZWQgfCBzdHIgfCBib29sIHwgTm9uZSA9IF9VbnNl
dCwKICAgIGpzb25fc2NoZW1hX2V4dHJhOiBKc29uRGljdCB8IENhbGxhYmxlW1tKc29uRGljdF0s
IE5vbmVdIHwgTm9uZSA9IF9VbnNldCwKICAgIGZyb3plbjogYm9vbCB8IE5vbmUgPSBfVW5zZXQs
CiAgICB2YWxpZGF0ZV9kZWZhdWx0OiBMaXRlcmFsW0ZhbHNlXSA9IC4uLiwKICAgIHJlcHI6IGJv
b2wgPSBfVW5zZXQsCiAgICBpbml0OiBib29sIHwgTm9uZSA9IF9VbnNldCwKICAgIGluaXRfdmFy
OiBib29sIHwgTm9uZSA9IF9VbnNldCwKICAgIGt3X29ubHk6IGJvb2wgfCBOb25lID0gX1Vuc2V0
LAogICAgcGF0dGVybjogc3RyIHwgcmUuUGF0dGVybltzdHJdIHwgTm9uZSA9IF9VbnNldCwKICAg
IHN0cmljdDogYm9vbCB8IE5vbmUgPSBfVW5zZXQsCiAgICBjb2VyY2VfbnVtYmVyc190b19zdHI6
IGJvb2wgfCBOb25lID0gX1Vuc2V0LAogICAgZ3Q6IGFubm90YXRlZF90eXBlcy5TdXBwb3J0c0d0
IHwgTm9uZSA9IF9VbnNldCwKICAgIGdlOiBhbm5vdGF0ZWRfdHlwZXMuU3VwcG9ydHNHZSB8IE5v
bmUgPSBfVW5zZXQsCiAgICBsdDogYW5ub3RhdGVkX3R5cGVzLlN1cHBvcnRzTHQgfCBOb25lID0g
X1Vuc2V0LAogICAgbGU6IGFubm90YXRlZF90eXBlcy5TdXBwb3J0c0xlIHwgTm9uZSA9IF9VbnNl
dCwKICAgIG11bHRpcGxlX29mOiBmbG9hdCB8IE5vbmUgPSBfVW5zZXQsCiAgICBhbGxvd19pbmZf
bmFuOiBib29sIHwgTm9uZSA9IF9VbnNldCwKICAgIG1heF9kaWdpdHM6IGludCB8IE5vbmUgPSBf
VW5zZXQsCiAgICBkZWNpbWFsX3BsYWNlczogaW50IHwgTm9uZSA9IF9VbnNldCwKICAgIG1pbl9s
ZW5ndGg6IGludCB8IE5vbmUgPSBfVW5zZXQsCiAgICBtYXhfbGVuZ3RoOiBpbnQgfCBOb25lID0g
X1Vuc2V0LAogICAgdW5pb25fbW9kZTogTGl0ZXJhbFsic21hcnQiLCAibGVmdF90b19yaWdodCJd
ID0gX1Vuc2V0LAogICAgZmFpbF9mYXN0OiBib29sIHwgTm9uZSA9IF9VbnNldCwKICAgICoqZXh0
cmE6IFVucGFja1tfRW1wdHlLd2FyZ3NdLAopIC0+IF9UOiAuLi4KQG92ZXJsb2FkICAjIGBkZWZh
dWx0X2ZhY3RvcnlgIGFyZ3VtZW50IHNldCwgdmFsaWRhdGVfZGVmYXVsdD1UcnVlICAobm8gdHlw
ZSBjaGVja2luZyBvbiB0aGUgZGVmYXVsdCB2YWx1ZSkKZGVmIEZpZWxkKCAgIyBweXJpZ2h0OiBp
Z25vcmVbcmVwb3J0T3ZlcmxhcHBpbmdPdmVybG9hZF0KICAgICosCiAgICBkZWZhdWx0X2ZhY3Rv
cnk6IENhbGxhYmxlW1tdLCBBbnldIHwgQ2FsbGFibGVbW2RpY3Rbc3RyLCBBbnldXSwgQW55XSwK
ICAgIGFsaWFzOiBzdHIgfCBOb25lID0gX1Vuc2V0LAogICAgYWxpYXNfcHJpb3JpdHk6IGludCB8
IE5vbmUgPSBfVW5zZXQsCiAgICB2YWxpZGF0aW9uX2FsaWFzOiBzdHIgfCBBbGlhc1BhdGggfCBB
bGlhc0Nob2ljZXMgfCBOb25lID0gX1Vuc2V0LAogICAgc2VyaWFsaXphdGlvbl9hbGlhczogc3Ry
IHwgTm9uZSA9IF9VbnNldCwKICAgIHRpdGxlOiBzdHIgfCBOb25lID0gX1Vuc2V0LAogICAgZmll
bGRfdGl0bGVfZ2VuZXJhdG9yOiBDYWxsYWJsZVtbc3RyLCBGaWVsZEluZm9dLCBzdHJdIHwgTm9u
ZSA9IF9VbnNldCwKICAgIGRlc2NyaXB0aW9uOiBzdHIgfCBOb25lID0gX1Vuc2V0LAogICAgZXhh
bXBsZXM6IGxpc3RbQW55XSB8IE5vbmUgPSBfVW5zZXQsCiAgICBleGNsdWRlOiBib29sIHwgTm9u
ZSA9IF9VbnNldCwKICAgIGV4Y2x1ZGVfaWY6IENhbGxhYmxlW1tBbnldLCBib29sXSB8IE5vbmUg
PSBfVW5zZXQsCiAgICBkaXNjcmltaW5hdG9yOiBzdHIgfCB0eXBlcy5EaXNjcmltaW5hdG9yIHwg
Tm9uZSA9IF9VbnNldCwKICAgIGRlcHJlY2F0ZWQ6IERlcHJlY2F0ZWQgfCBzdHIgfCBib29sIHwg
Tm9uZSA9IF9VbnNldCwKICAgIGpzb25fc2NoZW1hX2V4dHJhOiBKc29uRGljdCB8IENhbGxhYmxl
W1tKc29uRGljdF0sIE5vbmVdIHwgTm9uZSA9IF9VbnNldCwKICAgIGZyb3plbjogYm9vbCB8IE5v
bmUgPSBfVW5zZXQsCiAgICB2YWxpZGF0ZV9kZWZhdWx0OiBMaXRlcmFsW1RydWVdID0gX1Vuc2V0
LAogICAgcmVwcjogYm9vbCA9IF9VbnNldCwKICAgIGluaXQ6IGJvb2wgfCBOb25lID0gX1Vuc2V0
LAogICAgaW5pdF92YXI6IGJvb2wgfCBOb25lID0gX1Vuc2V0LAogICAga3dfb25seTogYm9vbCB8
IE5vbmUgPSBfVW5zZXQsCiAgICBwYXR0ZXJuOiBzdHIgfCByZS5QYXR0ZXJuW3N0cl0gfCBOb25l
ID0gX1Vuc2V0LAogICAgc3RyaWN0OiBib29sIHwgTm9uZSA9IF9VbnNldCwKICAgIGNvZXJjZV9u
dW1iZXJzX3RvX3N0cjogYm9vbCB8IE5vbmUgPSBfVW5zZXQsCiAgICBndDogYW5ub3RhdGVkX3R5
cGVzLlN1cHBvcnRzR3QgfCBOb25lID0gX1Vuc2V0LAogICAgZ2U6IGFubm90YXRlZF90eXBlcy5T
dXBwb3J0c0dlIHwgTm9uZSA9IF9VbnNldCwKICAgIGx0OiBhbm5vdGF0ZWRfdHlwZXMuU3VwcG9y
dHNMdCB8IE5vbmUgPSBfVW5zZXQsCiAgICBsZTogYW5ub3RhdGVkX3R5cGVzLlN1cHBvcnRzTGUg
fCBOb25lID0gX1Vuc2V0LAogICAgbXVsdGlwbGVfb2Y6IGZsb2F0IHwgTm9uZSA9IF9VbnNldCwK
ICAgIGFsbG93X2luZl9uYW46IGJvb2wgfCBOb25lID0gX1Vuc2V0LAogICAgbWF4X2RpZ2l0czog
aW50IHwgTm9uZSA9IF9VbnNldCwKICAgIGRlY2ltYWxfcGxhY2VzOiBpbnQgfCBOb25lID0gX1Vu
c2V0LAogICAgbWluX2xlbmd0aDogaW50IHwgTm9uZSA9IF9VbnNldCwKICAgIG1heF9sZW5ndGg6
IGludCB8IE5vbmUgPSBfVW5zZXQsCiAgICB1bmlvbl9tb2RlOiBMaXRlcmFsWyJzbWFydCIsICJs
ZWZ0X3RvX3JpZ2h0Il0gPSBfVW5zZXQsCiAgICBmYWlsX2Zhc3Q6IGJvb2wgfCBOb25lID0gX1Vu
c2V0LAogICAgKipleHRyYTogVW5wYWNrW19FbXB0eUt3YXJnc10sCikgLT4gQW55OiAuLi4KQG92
ZXJsb2FkICAjIGBkZWZhdWx0X2ZhY3RvcnlgIGFyZ3VtZW50IHNldCwgdmFsaWRhdGVfZGVmYXVs
dD1GYWxzZSBvciB1bnNldApkZWYgRmllbGQoCiAgICAqLAogICAgZGVmYXVsdF9mYWN0b3J5OiBD
YWxsYWJsZVtbXSwgX1RdIHwgQ2FsbGFibGVbW2RpY3Rbc3RyLCBBbnldXSwgX1RdLAogICAgYWxp
YXM6IHN0ciB8IE5vbmUgPSBfVW5zZXQsCiAgICBhbGlhc19wcmlvcml0eTogaW50IHwgTm9uZSA9
IF9VbnNldCwKICAgIHZhbGlkYXRpb25fYWxpYXM6IHN0ciB8IEFsaWFzUGF0aCB8IEFsaWFzQ2hv
aWNlcyB8IE5vbmUgPSBfVW5zZXQsCiAgICBzZXJpYWxpemF0aW9uX2FsaWFzOiBzdHIgfCBOb25l
ID0gX1Vuc2V0LAogICAgdGl0bGU6IHN0ciB8IE5vbmUgPSBfVW5zZXQsCiAgICBmaWVsZF90aXRs
ZV9nZW5lcmF0b3I6IENhbGxhYmxlW1tzdHIsIEZpZWxkSW5mb10sIHN0cl0gfCBOb25lID0gX1Vu
c2V0LAogICAgZGVzY3JpcHRpb246IHN0ciB8IE5vbmUgPSBfVW5zZXQsCiAgICBleGFtcGxlczog
bGlzdFtBbnldIHwgTm9uZSA9IF9VbnNldCwKICAgIGV4Y2x1ZGU6IGJvb2wgfCBOb25lID0gX1Vu
c2V0LAogICAgZXhjbHVkZV9pZjogQ2FsbGFibGVbW0FueV0sIGJvb2xdIHwgTm9uZSA9IF9VbnNl
dCwKICAgIGRpc2NyaW1pbmF0b3I6IHN0ciB8IHR5cGVzLkRpc2NyaW1pbmF0b3IgfCBOb25lID0g
X1Vuc2V0LAogICAgZGVwcmVjYXRlZDogRGVwcmVjYXRlZCB8IHN0ciB8IGJvb2wgfCBOb25lID0g
X1Vuc2V0LAogICAganNvbl9zY2hlbWFfZXh0cmE6IEpzb25EaWN0IHwgQ2FsbGFibGVbW0pzb25E
aWN0XSwgTm9uZV0gfCBOb25lID0gX1Vuc2V0LAogICAgZnJvemVuOiBib29sIHwgTm9uZSA9IF9V
bnNldCwKICAgIHZhbGlkYXRlX2RlZmF1bHQ6IExpdGVyYWxbRmFsc2VdIHwgTm9uZSA9IF9VbnNl
dCwKICAgIHJlcHI6IGJvb2wgPSBfVW5zZXQsCiAgICBpbml0OiBib29sIHwgTm9uZSA9IF9VbnNl
dCwKICAgIGluaXRfdmFyOiBib29sIHwgTm9uZSA9IF9VbnNldCwKICAgIGt3X29ubHk6IGJvb2wg
fCBOb25lID0gX1Vuc2V0LAogICAgcGF0dGVybjogc3RyIHwgcmUuUGF0dGVybltzdHJdIHwgTm9u
ZSA9IF9VbnNldCwKICAgIHN0cmljdDogYm9vbCB8IE5vbmUgPSBfVW5zZXQsCiAgICBjb2VyY2Vf
bnVtYmVyc190b19zdHI6IGJvb2wgfCBOb25lID0gX1Vuc2V0LAogICAgZ3Q6IGFubm90YXRlZF90
eXBlcy5TdXBwb3J0c0d0IHwgTm9uZSA9IF9VbnNldCwKICAgIGdlOiBhbm5vdGF0ZWRfdHlwZXMu
U3VwcG9ydHNHZSB8IE5vbmUgPSBfVW5zZXQsCiAgICBsdDogYW5ub3RhdGVkX3R5cGVzLlN1cHBv
cnRzTHQgfCBOb25lID0gX1Vuc2V0LAogICAgbGU6IGFubm90YXRlZF90eXBlcy5TdXBwb3J0c0xl
IHwgTm9uZSA9IF9VbnNldCwKICAgIG11bHRpcGxlX29mOiBmbG9hdCB8IE5vbmUgPSBfVW5zZXQs
CiAgICBhbGxvd19pbmZfbmFuOiBib29sIHwgTm9uZSA9IF9VbnNldCwKICAgIG1heF9kaWdpdHM6
IGludCB8IE5vbmUgPSBfVW5zZXQsCiAgICBkZWNpbWFsX3BsYWNlczogaW50IHwgTm9uZSA9IF9V
bnNldCwKICAgIG1pbl9sZW5ndGg6IGludCB8IE5vbmUgPSBfVW5zZXQsCiAgICBtYXhfbGVuZ3Ro
OiBpbnQgfCBOb25lID0gX1Vuc2V0LAogICAgdW5pb25fbW9kZTogTGl0ZXJhbFsic21hcnQiLCAi
bGVmdF90b19yaWdodCJdID0gX1Vuc2V0LAogICAgZmFpbF9mYXN0OiBib29sIHwgTm9uZSA9IF9V
bnNldCwKICAgICoqZXh0cmE6IFVucGFja1tfRW1wdHlLd2FyZ3NdLAopIC0+IF9UOiAuLi4KQG92
ZXJsb2FkCmRlZiBGaWVsZCggICMgTm8gZGVmYXVsdCBzZXQKICAgICosCiAgICBhbGlhczogc3Ry
IHwgTm9uZSA9IF9VbnNldCwKICAgIGFsaWFzX3ByaW9yaXR5OiBpbnQgfCBOb25lID0gX1Vuc2V0
LAogICAgdmFsaWRhdGlvbl9hbGlhczogc3RyIHwgQWxpYXNQYXRoIHwgQWxpYXNDaG9pY2VzIHwg
Tm9uZSA9IF9VbnNldCwKICAgIHNlcmlhbGl6YXRpb25fYWxpYXM6IHN0ciB8IE5vbmUgPSBfVW5z
ZXQsCiAgICB0aXRsZTogc3RyIHwgTm9uZSA9IF9VbnNldCwKICAgIGZpZWxkX3RpdGxlX2dlbmVy
YXRvcjogQ2FsbGFibGVbW3N0ciwgRmllbGRJbmZvXSwgc3RyXSB8IE5vbmUgPSBfVW5zZXQsCiAg
ICBkZXNjcmlwdGlvbjogc3RyIHwgTm9uZSA9IF9VbnNldCwKICAgIGV4YW1wbGVzOiBsaXN0W0Fu
eV0gfCBOb25lID0gX1Vuc2V0LAogICAgZXhjbHVkZTogYm9vbCB8IE5vbmUgPSBfVW5zZXQsCiAg
ICBleGNsdWRlX2lmOiBDYWxsYWJsZVtbQW55XSwgYm9vbF0gfCBOb25lID0gX1Vuc2V0LAogICAg
ZGlzY3JpbWluYXRvcjogc3RyIHwgdHlwZXMuRGlzY3JpbWluYXRvciB8IE5vbmUgPSBfVW5zZXQs
CiAgICBkZXByZWNhdGVkOiBEZXByZWNhdGVkIHwgc3RyIHwgYm9vbCB8IE5vbmUgPSBfVW5zZXQs
CiAgICBqc29uX3NjaGVtYV9leHRyYTogSnNvbkRpY3QgfCBDYWxsYWJsZVtbSnNvbkRpY3RdLCBO
b25lXSB8IE5vbmUgPSBfVW5zZXQsCiAgICBmcm96ZW46IGJvb2wgfCBOb25lID0gX1Vuc2V0LAog
ICAgdmFsaWRhdGVfZGVmYXVsdDogYm9vbCB8IE5vbmUgPSBfVW5zZXQsCiAgICByZXByOiBib29s
ID0gX1Vuc2V0LAogICAgaW5pdDogYm9vbCB8IE5vbmUgPSBfVW5zZXQsCiAgICBpbml0X3Zhcjog
Ym9vbCB8IE5vbmUgPSBfVW5zZXQsCiAgICBrd19vbmx5OiBib29sIHwgTm9uZSA9IF9VbnNldCwK
ICAgIHBhdHRlcm46IHN0ciB8IHJlLlBhdHRlcm5bc3RyXSB8IE5vbmUgPSBfVW5zZXQsCiAgICBz
dHJpY3Q6IGJvb2wgfCBOb25lID0gX1Vuc2V0LAogICAgY29lcmNlX251bWJlcnNfdG9fc3RyOiBi
b29sIHwgTm9uZSA9IF9VbnNldCwKICAgIGd0OiBhbm5vdGF0ZWRfdHlwZXMuU3VwcG9ydHNHdCB8
IE5vbmUgPSBfVW5zZXQsCiAgICBnZTogYW5ub3RhdGVkX3R5cGVzLlN1cHBvcnRzR2UgfCBOb25l
ID0gX1Vuc2V0LAogICAgbHQ6IGFubm90YXRlZF90eXBlcy5TdXBwb3J0c0x0IHwgTm9uZSA9IF9V
bnNldCwKICAgIGxlOiBhbm5vdGF0ZWRfdHlwZXMuU3VwcG9ydHNMZSB8IE5vbmUgPSBfVW5zZXQs
CiAgICBtdWx0aXBsZV9vZjogZmxvYXQgfCBOb25lID0gX1Vuc2V0LAogICAgYWxsb3dfaW5mX25h
bjogYm9vbCB8IE5vbmUgPSBfVW5zZXQsCiAgICBtYXhfZGlnaXRzOiBpbnQgfCBOb25lID0gX1Vu
c2V0LAogICAgZGVjaW1hbF9wbGFjZXM6IGludCB8IE5vbmUgPSBfVW5zZXQsCiAgICBtaW5fbGVu
Z3RoOiBpbnQgfCBOb25lID0gX1Vuc2V0LAogICAgbWF4X2xlbmd0aDogaW50IHwgTm9uZSA9IF9V
bnNldCwKICAgIHVuaW9uX21vZGU6IExpdGVyYWxbInNtYXJ0IiwgImxlZnRfdG9fcmlnaHQiXSA9
IF9VbnNldCwKICAgIGZhaWxfZmFzdDogYm9vbCB8IE5vbmUgPSBfVW5zZXQsCiAgICAqKmV4dHJh
OiBVbnBhY2tbX0VtcHR5S3dhcmdzXSwKKToKICAgICIiIiEhISBhYnN0cmFjdCAiVXNhZ2UgRG9j
dW1lbnRhdGlvbiIKICAgICAgICBbRmllbGRzXSguLi9jb25jZXB0cy9maWVsZHMubWQpCgogICAg
Q3JlYXRlIGEgZmllbGQgZm9yIG9iamVjdHMgdGhhdCBjYW4gYmUgY29uZmlndXJlZC4KCiAgICBV
c2VkIHRvIHByb3ZpZGUgZXh0cmEgaW5mb3JtYXRpb24gYWJvdXQgYSBmaWVsZCwgZWl0aGVyIGZv
ciB0aGUgbW9kZWwgc2NoZW1hIG9yIGNvbXBsZXggdmFsaWRhdGlvbi4gU29tZSBhcmd1bWVudHMK
ICAgIGFwcGx5IG9ubHkgdG8gbnVtYmVyIGZpZWxkcyAoYGludGAsIGBmbG9hdGAsIGBEZWNpbWFs
YCkgYW5kIHNvbWUgYXBwbHkgb25seSB0byBgc3RyYC4KCiAgICBOb3RlOgogICAgICAgIC0gQW55
IGBfVW5zZXRgIG9iamVjdHMgd2lsbCBiZSByZXBsYWNlZCBieSB0aGUgY29ycmVzcG9uZGluZyB2
YWx1ZSBkZWZpbmVkIGluIHRoZSBgX0RlZmF1bHRWYWx1ZXNgIGRpY3Rpb25hcnkuIElmIGEga2V5
IGZvciB0aGUgYF9VbnNldGAgb2JqZWN0IGlzIG5vdCBmb3VuZCBpbiB0aGUgYF9EZWZhdWx0VmFs
dWVzYCBkaWN0aW9uYXJ5LCBpdCB3aWxsIGRlZmF1bHQgdG8gYE5vbmVgCgogICAgQXJnczoKICAg
ICAgICBkZWZhdWx0OiBEZWZhdWx0IHZhbHVlIGlmIHRoZSBmaWVsZCBpcyBub3Qgc2V0LgogICAg
ICAgIGRlZmF1bHRfZmFjdG9yeTogQSBjYWxsYWJsZSB0byBnZW5lcmF0ZSB0aGUgZGVmYXVsdCB2
YWx1ZS4gVGhlIGNhbGxhYmxlIGNhbiBlaXRoZXIgdGFrZSAwIGFyZ3VtZW50cwogICAgICAgICAg
ICAoaW4gd2hpY2ggY2FzZSBpdCBpcyBjYWxsZWQgYXMgaXMpIG9yIGEgc2luZ2xlIGFyZ3VtZW50
IGNvbnRhaW5pbmcgdGhlIGFscmVhZHkgdmFsaWRhdGVkIGRhdGEuCiAgICAgICAgYWxpYXM6IFRo
ZSBuYW1lIHRvIHVzZSBmb3IgdGhlIGF0dHJpYnV0ZSB3aGVuIHZhbGlkYXRpbmcgb3Igc2VyaWFs
aXppbmcgYnkgYWxpYXMuCiAgICAgICAgICAgIFRoaXMgaXMgb2Z0ZW4gdXNlZCBmb3IgdGhpbmdz
IGxpa2UgY29udmVydGluZyBiZXR3ZWVuIHNuYWtlIGFuZCBjYW1lbCBjYXNlLgogICAgICAgIGFs
aWFzX3ByaW9yaXR5OiBQcmlvcml0eSBvZiB0aGUgYWxpYXMuIFRoaXMgYWZmZWN0cyB3aGV0aGVy
IGFuIGFsaWFzIGdlbmVyYXRvciBpcyB1c2VkLgogICAgICAgIHZhbGlkYXRpb25fYWxpYXM6IExp
a2UgYGFsaWFzYCwgYnV0IG9ubHkgYWZmZWN0cyB2YWxpZGF0aW9uLCBub3Qgc2VyaWFsaXphdGlv
bi4KICAgICAgICBzZXJpYWxpemF0aW9uX2FsaWFzOiBMaWtlIGBhbGlhc2AsIGJ1dCBvbmx5IGFm
ZmVjdHMgc2VyaWFsaXphdGlvbiwgbm90IHZhbGlkYXRpb24uCiAgICAgICAgdGl0bGU6IEh1bWFu
LXJlYWRhYmxlIHRpdGxlLgogICAgICAgIGZpZWxkX3RpdGxlX2dlbmVyYXRvcjogQSBjYWxsYWJs
ZSB0aGF0IHRha2VzIGEgZmllbGQgbmFtZSBhbmQgcmV0dXJucyB0aXRsZSBmb3IgaXQuCiAgICAg
ICAgZGVzY3JpcHRpb246IEh1bWFuLXJlYWRhYmxlIGRlc2NyaXB0aW9uLgogICAgICAgIGV4YW1w
bGVzOiBFeGFtcGxlIHZhbHVlcyBmb3IgdGhpcyBmaWVsZC4KICAgICAgICBleGNsdWRlOiBXaGV0
aGVyIHRvIGV4Y2x1ZGUgdGhlIGZpZWxkIGZyb20gdGhlIG1vZGVsIHNlcmlhbGl6YXRpb24uCiAg
ICAgICAgZXhjbHVkZV9pZjogQSBjYWxsYWJsZSB0aGF0IGRldGVybWluZXMgd2hldGhlciB0byBl
eGNsdWRlIGEgZmllbGQgZHVyaW5nIHNlcmlhbGl6YXRpb24gYmFzZWQgb24gaXRzIHZhbHVlLgog
ICAgICAgIGRpc2NyaW1pbmF0b3I6IEZpZWxkIG5hbWUgb3IgRGlzY3JpbWluYXRvciBmb3IgZGlz
Y3JpbWluYXRpbmcgdGhlIHR5cGUgaW4gYSB0YWdnZWQgdW5pb24uCiAgICAgICAgZGVwcmVjYXRl
ZDogQSBkZXByZWNhdGlvbiBtZXNzYWdlLCBhbiBpbnN0YW5jZSBvZiBgd2FybmluZ3MuZGVwcmVj
YXRlZGAgb3IgdGhlIGB0eXBpbmdfZXh0ZW5zaW9ucy5kZXByZWNhdGVkYCBiYWNrcG9ydCwKICAg
ICAgICAgICAgb3IgYSBib29sZWFuLiBJZiBgVHJ1ZWAsIGEgZGVmYXVsdCBkZXByZWNhdGlvbiBt
ZXNzYWdlIHdpbGwgYmUgZW1pdHRlZCB3aGVuIGFjY2Vzc2luZyB0aGUgZmllbGQuCiAgICAgICAg
anNvbl9zY2hlbWFfZXh0cmE6IEEgZGljdCBvciBjYWxsYWJsZSB0byBwcm92aWRlIGV4dHJhIEpT
T04gc2NoZW1hIHByb3BlcnRpZXMuCiAgICAgICAgZnJvemVuOiBXaGV0aGVyIHRoZSBmaWVsZCBp
cyBmcm96ZW4uIElmIHRydWUsIGF0dGVtcHRzIHRvIGNoYW5nZSB0aGUgdmFsdWUgb24gYW4gaW5z
dGFuY2Ugd2lsbCByYWlzZSBhbiBlcnJvci4KICAgICAgICB2YWxpZGF0ZV9kZWZhdWx0OiBJZiBg
VHJ1ZWAsIGFwcGx5IHZhbGlkYXRpb24gdG8gdGhlIGRlZmF1bHQgdmFsdWUgZXZlcnkgdGltZSB5
b3UgY3JlYXRlIGFuIGluc3RhbmNlLgogICAgICAgICAgICBPdGhlcndpc2UsIGZvciBwZXJmb3Jt
YW5jZSByZWFzb25zLCB0aGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgZmllbGQgaXMgdHJ1c3RlZCBh
bmQgbm90IHZhbGlkYXRlZC4KICAgICAgICByZXByOiBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0
aGVyIHRvIGluY2x1ZGUgdGhlIGZpZWxkIGluIHRoZSBgX19yZXByX19gIG91dHB1dC4KICAgICAg
ICBpbml0OiBXaGV0aGVyIHRoZSBmaWVsZCBzaG91bGQgYmUgaW5jbHVkZWQgaW4gdGhlIGNvbnN0
cnVjdG9yIG9mIHRoZSBkYXRhY2xhc3MuCiAgICAgICAgICAgIChPbmx5IGFwcGxpZXMgdG8gZGF0
YWNsYXNzZXMuKQogICAgICAgIGluaXRfdmFyOiBXaGV0aGVyIHRoZSBmaWVsZCBzaG91bGQgX29u
bHlfIGJlIGluY2x1ZGVkIGluIHRoZSBjb25zdHJ1Y3RvciBvZiB0aGUgZGF0YWNsYXNzLgogICAg
ICAgICAgICAoT25seSBhcHBsaWVzIHRvIGRhdGFjbGFzc2VzLikKICAgICAgICBrd19vbmx5OiBX
aGV0aGVyIHRoZSBmaWVsZCBzaG91bGQgYmUgYSBrZXl3b3JkLW9ubHkgYXJndW1lbnQgaW4gdGhl
IGNvbnN0cnVjdG9yIG9mIHRoZSBkYXRhY2xhc3MuCiAgICAgICAgICAgIChPbmx5IGFwcGxpZXMg
dG8gZGF0YWNsYXNzZXMuKQogICAgICAgIGNvZXJjZV9udW1iZXJzX3RvX3N0cjogV2hldGhlciB0
byBlbmFibGUgY29lcmNpb24gb2YgYW55IGBOdW1iZXJgIHR5cGUgdG8gYHN0cmAgKG5vdCBhcHBs
aWNhYmxlIGluIGBzdHJpY3RgIG1vZGUpLgogICAgICAgIHN0cmljdDogSWYgYFRydWVgLCBzdHJp
Y3QgdmFsaWRhdGlvbiBpcyBhcHBsaWVkIHRvIHRoZSBmaWVsZC4KICAgICAgICAgICAgU2VlIFtT
dHJpY3QgTW9kZV0oLi4vY29uY2VwdHMvc3RyaWN0X21vZGUubWQpIGZvciBkZXRhaWxzLgogICAg
ICAgIGd0OiBHcmVhdGVyIHRoYW4uIElmIHNldCwgdmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4g
dGhpcy4gT25seSBhcHBsaWNhYmxlIHRvIG51bWJlcnMuCiAgICAgICAgZ2U6IEdyZWF0ZXIgdGhh
biBvciBlcXVhbC4gSWYgc2V0LCB2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0
byB0aGlzLiBPbmx5IGFwcGxpY2FibGUgdG8gbnVtYmVycy4KICAgICAgICBsdDogTGVzcyB0aGFu
LiBJZiBzZXQsIHZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIHRoaXMuIE9ubHkgYXBwbGljYWJsZSB0
byBudW1iZXJzLgogICAgICAgIGxlOiBMZXNzIHRoYW4gb3IgZXF1YWwuIElmIHNldCwgdmFsdWUg
bXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhpcy4gT25seSBhcHBsaWNhYmxlIHRvIG51
bWJlcnMuCiAgICAgICAgbXVsdGlwbGVfb2Y6IFZhbHVlIG11c3QgYmUgYSBtdWx0aXBsZSBvZiB0
aGlzLiBPbmx5IGFwcGxpY2FibGUgdG8gbnVtYmVycy4KICAgICAgICBtaW5fbGVuZ3RoOiBNaW5p
bXVtIGxlbmd0aCBmb3IgaXRlcmFibGVzLgogICAgICAgIG1heF9sZW5ndGg6IE1heGltdW0gbGVu
Z3RoIGZvciBpdGVyYWJsZXMuCiAgICAgICAgcGF0dGVybjogUGF0dGVybiBmb3Igc3RyaW5ncyAo
YSByZWd1bGFyIGV4cHJlc3Npb24pLgogICAgICAgIGFsbG93X2luZl9uYW46IEFsbG93IGBpbmZg
LCBgLWluZmAsIGBuYW5gLiBPbmx5IGFwcGxpY2FibGUgdG8gZmxvYXQgYW5kIFtgRGVjaW1hbGBd
W2RlY2ltYWwuRGVjaW1hbF0gbnVtYmVycy4KICAgICAgICBtYXhfZGlnaXRzOiBNYXhpbXVtIG51
bWJlciBvZiBhbGxvdyBkaWdpdHMgZm9yIHN0cmluZ3MuCiAgICAgICAgZGVjaW1hbF9wbGFjZXM6
IE1heGltdW0gbnVtYmVyIG9mIGRlY2ltYWwgcGxhY2VzIGFsbG93ZWQgZm9yIG51bWJlcnMuCiAg
ICAgICAgdW5pb25fbW9kZTogVGhlIHN0cmF0ZWd5IHRvIGFwcGx5IHdoZW4gdmFsaWRhdGluZyBh
IHVuaW9uLiBDYW4gYmUgYHNtYXJ0YCAodGhlIGRlZmF1bHQpLCBvciBgbGVmdF90b19yaWdodGAu
CiAgICAgICAgICAgIFNlZSBbVW5pb24gTW9kZV0oLi4vY29uY2VwdHMvdW5pb25zLm1kI3VuaW9u
LW1vZGVzKSBmb3IgZGV0YWlscy4KICAgICAgICBmYWlsX2Zhc3Q6IElmIGBUcnVlYCwgdmFsaWRh
dGlvbiB3aWxsIHN0b3Agb24gdGhlIGZpcnN0IGVycm9yLiBJZiBgRmFsc2VgLCBhbGwgdmFsaWRh
dGlvbiBlcnJvcnMgd2lsbCBiZSBjb2xsZWN0ZWQuCiAgICAgICAgICAgIFRoaXMgb3B0aW9uIGNh
biBiZSBhcHBsaWVkIG9ubHkgdG8gaXRlcmFibGUgdHlwZXMgKGxpc3QsIHR1cGxlLCBzZXQsIGFu
ZCBmcm96ZW5zZXQpLgogICAgICAgIGV4dHJhOiAoRGVwcmVjYXRlZCkgRXh0cmEgZmllbGRzIHRo
YXQgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgSlNPTiBzY2hlbWEuCgogICAgICAgICAgICAhISEg
d2FybmluZyBEZXByZWNhdGVkCiAgICAgICAgICAgICAgICBUaGUgYGV4dHJhYCBrd2FyZ3MgaXMg
ZGVwcmVjYXRlZC4gVXNlIGBqc29uX3NjaGVtYV9leHRyYWAgaW5zdGVhZC4KCiAgICBSZXR1cm5z
OgogICAgICAgIEEgbmV3IFtgRmllbGRJbmZvYF1bcHlkYW50aWMuZmllbGRzLkZpZWxkSW5mb10u
IFRoZSByZXR1cm4gYW5ub3RhdGlvbiBpcyBgQW55YCBzbyBgRmllbGRgIGNhbiBiZSB1c2VkIG9u
CiAgICAgICAgICAgIHR5cGUtYW5ub3RhdGVkIGZpZWxkcyB3aXRob3V0IGNhdXNpbmcgYSB0eXBl
IGVycm9yLgogICAgIiIiCgoKIyBQbGFjZSB5b3VyIGN1cnNvciBoZXJlCiMgICAgICAgdgpGaWVs
ZCgidGVzdCIpCg==
--0000000000002f4c7e0652f8c2d7--
Romain Ouabdelkader <romain.ouabdelkader@HIDDEN>:bug-gnu-emacs@HIDDEN.
Full text available.bug-gnu-emacs@HIDDEN:bug#81150; Package emacs.
Full text available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.