From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: =?UTF-8?Q?Jo=C3=A3o_Paulo_Labegalini_de_Carvalho?= Newsgroups: gmane.emacs.devel Subject: Re: Initial fontification in sh-mode with tree-sittter Date: Fri, 4 Nov 2022 14:44:06 -0600 Message-ID: References: <6C8B0F8E-DF61-4BC3-B0D0-56DBB66BE637@gmail.com> <7AE71CCA-6F18-4DE6-8608-7D9B3E9E52FB@gmail.com> <9BA853EA-8B7F-41A0-A174-D86DF5CE7788@gmail.com> <83sfj3cfl0.fsf@gnu.org> <03309451-1AEB-458C-88FD-9715CECC27A2@gmail.com> <83mt9bc9ke.fsf@gnu.org> <8335b19ndr.fsf@gnu.org> <39ECD413-BD10-4BF3-90AC-36F02276607E@gmail.com> <8A2361BB-1081-4550-AC29-B9E99BFC2FB8@gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="0000000000005503aa05ecab23dc" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="26894"; mail-complaints-to="usenet@ciao.gmane.io" Cc: Eli Zaretskii , emacs-devel@gnu.org To: Yuan Fu Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Fri Nov 04 21:44:47 2022 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1or3YU-0006nX-4f for ged-emacs-devel@m.gmane-mx.org; Fri, 04 Nov 2022 21:44:46 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1or3Y9-0005zz-Rm; Fri, 04 Nov 2022 16:44:25 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1or3Y8-0005zq-IM for emacs-devel@gnu.org; Fri, 04 Nov 2022 16:44:24 -0400 Original-Received: from mail-ej1-x62e.google.com ([2a00:1450:4864:20::62e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1or3Y6-0003yl-DC; Fri, 04 Nov 2022 16:44:24 -0400 Original-Received: by mail-ej1-x62e.google.com with SMTP id f27so16322727eje.1; Fri, 04 Nov 2022 13:44:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=Qlg24gQNavmfY/hDLx5eKgfj3UuRsdrri/K0cWTdpwc=; b=agjWXaU6mpDoCLq/IwdvMJI4frXv5P7y40ZPmvaQBwglttQ0i116ANQBXDhNQTOw0J /m8AMIuMhPEARVrclxpXMmPAJy2rvE2r6DEYxVsJsia//Zw58BZYz9htHBxjxLE6oo3h uPIh/bADNini6TH4RO8mhpc/vZzgXLvKzHvctqyWaZUugckjp7GSRRpoGj+oRdu6IcTs l50myJO1s4wq6kJb8cdpqjN/i8EDl/k4k4MuQ75KHeGyIArBBcRPJUVGJkddOpflYmg3 sAKtR9kEgAQiSK4hEjzh0jigu80/ehoqliy1t+JJIrRt31mLtSKPgaxnNTnfNapf4+1F Cxow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=Qlg24gQNavmfY/hDLx5eKgfj3UuRsdrri/K0cWTdpwc=; b=HiaxOxCxnxaaHfHHdkxRecnssStEr7/a3E+twmBAPDJ6mwTasPmMpqriqWmPsk9VLO 40VBGiLhnOcb32LAGDNSccg4HhpC7j4kjw9ztOoe+SUR2T+Rfy5vR13//Dnd+ahhrP7g Bgp/9iOBcFbxHe4XI4iVqAZqxYPlXQNKA/sVSkuFz45Ip+QzcLOhJJ0zD+kUdLJu9llC MZBMarje2ujAAK+VqB5E/QHT+6ZeYtUNwJYWdQb2Qs8vbKP6iYiTwtMVBAIJlnzCO84s iq01XGmgujwGWDGUgYPxZ+f5OTyMLHl3Xf+QEbajP/1iIrjomGkII0QHFUCO7pzLzEY2 z0UQ== X-Gm-Message-State: ACrzQf3acQB2GnU4BQPWZw/DiOH9lEo8F+kep4nVnQykYCGsGCyGGWBS 1j+31D2ZDpjNFDJY8a2294eOI5GnHYWqUEIjyVSvyD9zgM4= X-Google-Smtp-Source: AMsMyM6Jz5crFNRaT80MDzaJSgOCdXwWByS6AY27ruwkOSmQOzqwfAq4qkEnSDS5ziHsc4q4fIuZDapWQs57iEX9cqs= X-Received: by 2002:a17:907:2708:b0:7a6:38d7:5987 with SMTP id w8-20020a170907270800b007a638d75987mr36309878ejk.467.1667594659882; Fri, 04 Nov 2022 13:44:19 -0700 (PDT) In-Reply-To: <8A2361BB-1081-4550-AC29-B9E99BFC2FB8@gmail.com> Received-SPF: pass client-ip=2a00:1450:4864:20::62e; envelope-from=jaopaulolc@gmail.com; helo=mail-ej1-x62e.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-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: "Emacs-devel" Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.devel:299155 Archived-At: --0000000000005503aa05ecab23dc Content-Type: multipart/alternative; boundary="0000000000005503a805ecab23da" --0000000000005503a805ecab23da Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable > > All you need to do is capture these contextual nodes in a special name > =E2=80=9Ccontextual=E2=80=9D. > > (heredoc_body) @contextual > (string) @contextual > I see. I'll give that a try. > But I don=E2=80=99t know about the bleeding you described in the very beg= inning. > Do you still see it? Is there a recipe to reproduce it? > It might just be because of how the tree-sitter-bash grammar defines heredoc strings. This are the steps to reproduce the issue on sh-mode: ;; build emacs from head of feature/tree-sitter branch ;; apply the attached patch. ;; launch emacs with: emacs -nw -Q ;;Write the forms bellow on *scratch* buffer) (require 'treesit) (add-to-list 'treesit-settings '(sh-mode t t)) (find-file "/tmp/heredoc-issue.sh") ;; contents of /tmp/heredoc-issue.sh file (also attached) #!/usr/bin/env bash cat <>" ;; Then execute the commands below ESC < ;; beginning-of-buffer C-s ;; isearch-forward heredoc ;; self-insert-command * 7 RET ;; newline C-a ;; move-beginning-of-line C-k ;; kill-line C-n ;; next-line (At this point the echo command after EOF is fontified as heredoc string) C-_ ;; undo (After a short delay, the whole buffer is correctly fontified) --=20 Jo=C3=A3o Paulo L. de Carvalho Ph.D Computer Science | IC-UNICAMP | Campinas , SP - Brazil Postdoctoral Research Fellow | University of Alberta | Edmonton, AB - Canad= a joao.carvalho@ic.unicamp.br joao.carvalho@ualberta.ca --0000000000005503a805ecab23da Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
All you need to do is capture these con= textual nodes in a special name =E2=80=9Ccontextual=E2=80=9D.

(heredoc_body) @contextual
(string) @contextual

I see. I'll give that a t= ry.
=C2=A0
But I = don=E2=80=99t know about the bleeding you described in the very beginning. = Do you still see it? Is there a recipe to reproduce it?

It might just be because=C2=A0of = how the tree-sitter-bash grammar defines heredoc strings.

This are t= he steps to reproduce the issue on sh-mode:

;; build emacs from head= of feature/tree-sitter branch
;; apply the attached patch.
;;= launch emacs with: emacs -nw -Q
;;Write the forms bellow on *scratch* b= uffer)

(require 'treesit)
(add-to-list 'treesit-se= ttings '(sh-mode t t))
(find-file "/tmp/heredoc-issue.sh")=

;; contents of /tmp/heredoc-issue.sh file (also attached)

#!= /usr/bin/env bash

cat <<EOF
heredoc string
EOF
echo &= quot;<<HELLO>>"

;; Then execute the commands below<= br>
ESC < =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 ;; beginning-of-buffer
C-s =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; isearch-forward
heredoc =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; self-insert-command * 7
RET= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; n= ewline
C-a =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 ;; move-beginning-of-line
C-k =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; kill-line
C-n =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; next-line (At th= is point the echo command after EOF is fontified as heredoc string)
C-_ = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; un= do (After a short delay, the whole buffer is correctly fontified)

--
Jo=C3=A3o Paulo L. de Carvalho
Ph.D Computer Sc= ience | =C2=A0IC-UNICAMP | Campinas , SP - Brazil
Postdoctoral Research = Fellow | University of Alberta | Edmonton, AB - Canada
--0000000000005503a805ecab23da-- --0000000000005503aa05ecab23dc Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Initial-fontification-in-sh-mode-with-tree-sitter.patch" Content-Disposition: attachment; filename="0001-Initial-fontification-in-sh-mode-with-tree-sitter.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_la2yopc90 RnJvbSBkNTJmNDQ5YmZhNWNjNzI2NTE3MGIxZWJlYmU0NTgxYWEzMWFjNTM5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/Sm89QzM9QTNvPTIwUD0yRT0yMEw9MkU9MjBk ZT0yMENhcnZhbGhvPz0KIDxqYW9wYXVsb2xjQGdtYWlsLmNvbT4KRGF0ZTogVGh1LCAyNyBPY3Qg MjAyMiAxNTo0NTo1NiAtMDYwMApTdWJqZWN0OiBbUEFUQ0hdIEluaXRpYWwgZm9udGlmaWNhdGlv biBpbiBzaC1tb2RlIHdpdGggdHJlZS1zaXR0ZXIKCi0tLQogbGlzcC9wcm9nbW9kZXMvc2gtc2Ny aXB0LmVsIHwgMTUzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQogMSBmaWxl IGNoYW5nZWQsIDE0MiBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9saXNwL3Byb2dtb2Rlcy9zaC1zY3JpcHQuZWwgYi9saXNwL3Byb2dtb2Rlcy9zaC1zY3JpcHQu ZWwKaW5kZXggNTU4YjYyYjIwYS4uMTdmOTM4ZTk1YSAxMDA2NDQKLS0tIGEvbGlzcC9wcm9nbW9k ZXMvc2gtc2NyaXB0LmVsCisrKyBiL2xpc3AvcHJvZ21vZGVzL3NoLXNjcmlwdC5lbApAQCAtMTQ4 LDYgKzE0OCw3IEBACiAgIChyZXF1aXJlICdsZXQtYWxpc3QpCiAgIChyZXF1aXJlICdzdWJyLXgp KQogKHJlcXVpcmUgJ2V4ZWN1dGFibGUpCisocmVxdWlyZSAndHJlZXNpdCkKIAogKGF1dG9sb2Fk ICdjb21pbnQtY29tcGxldGlvbi1hdC1wb2ludCAiY29taW50IikKIChhdXRvbG9hZCAnY29taW50 LWZpbGVuYW1lLWNvbXBsZXRpb24gImNvbWludCIpCkBAIC0xNTM0LDEzICsxNTM1LDYgQEAgc2gt bW9kZQogICA7OyB3ZSBjYW4ndCBsb29rIGlmIHByZXZpb3VzIGxpbmUgZW5kZWQgd2l0aCBgXCcK ICAgKHNldHEtbG9jYWwgY29taW50LXByb21wdC1yZWdleHAgIl5bIFx0XSoiKQogICAoc2V0cS1s b2NhbCBpbWVudS1jYXNlLWZvbGQtc2VhcmNoIG5pbCkKLSAgKHNldHEgZm9udC1sb2NrLWRlZmF1 bHRzCi0JYCgoc2gtZm9udC1sb2NrLWtleXdvcmRzCi0JICAgc2gtZm9udC1sb2NrLWtleXdvcmRz LTEgc2gtZm9udC1sb2NrLWtleXdvcmRzLTIpCi0JICBuaWwgbmlsCi0JICAoKD8vIC4gInciKSAo P34gLiAidyIpICg/LiAuICJ3IikgKD8tIC4gInciKSAoP18gLiAidyIpKSBuaWwKLQkgIChmb250 LWxvY2stc3ludGFjdGljLWZhY2UtZnVuY3Rpb24KLQkgICAuICwjJ3NoLWZvbnQtbG9jay1zeW50 YWN0aWMtZmFjZS1mdW5jdGlvbikpKQogICAoc2V0cS1sb2NhbCBzeW50YXgtcHJvcGVydGl6ZS1m dW5jdGlvbiAjJ3NoLXN5bnRheC1wcm9wZXJ0aXplLWZ1bmN0aW9uKQogICAoYWRkLWhvb2sgJ3N5 bnRheC1wcm9wZXJ0aXplLWV4dGVuZC1yZWdpb24tZnVuY3Rpb25zCiAgICAgICAgICAgICAjJ3N5 bnRheC1wcm9wZXJ0aXplLW11bHRpbGluZSAnYXBwZW5kICdsb2NhbCkKQEAgLTE1ODcsNyArMTU4 MSwyOCBAQCBzaC1tb2RlCiAgICBuaWwgbmlsKQogICAoYWRkLWhvb2sgJ2ZseW1ha2UtZGlhZ25v c3RpYy1mdW5jdGlvbnMgIydzaC1zaGVsbGNoZWNrLWZseW1ha2UgbmlsIHQpCiAgIChhZGQtaG9v ayAnaGFjay1sb2NhbC12YXJpYWJsZXMtaG9vawotICAgICMnc2gtYWZ0ZXItaGFjay1sb2NhbC12 YXJpYWJsZXMgbmlsIHQpKQorICAgICMnc2gtYWZ0ZXItaGFjay1sb2NhbC12YXJpYWJsZXMgbmls IHQpCisKKyAgKGNvbmQKKyAgIDs7IFRyZWUtc2l0dGVyCisgICAoKHRyZWVzaXQtcmVhZHktcCAn c2gtbW9kZSBzaC1zaGVsbCkKKyAgICAoc2V0cS1sb2NhbCBmb250LWxvY2sta2V5d29yZHMtb25s eSB0KQorICAgIChzZXRxLWxvY2FsIHRyZWVzaXQtZm9udC1sb2NrLWZlYXR1cmUtbGlzdAorICAg ICAgICAgICAgICAgICcoKGNvbW1lbnRzIGZ1bmN0aW9ucyBzdHJpbmdzIGhlcmVkb2NzKQorICAg ICAgICAgICAgICAgICAgKHZhcmlhYmxlcyBrZXl3b3JkcyBjb21tYW5kcyBkZWNsLWNvbW1hbmRz KQorICAgICAgICAgICAgICAgICAgKGNvbnN0YW50cyBvcGVyYXRvcnMgYnVpbHRpbi12YXJpYWJs ZXMpKSkKKyAgICAoc2V0cS1sb2NhbCB0cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5ncworICAgICAg ICAgICAgICAgIHNoLW1vZGUtLXRyZWVzaXQtc2V0dGluZ3MpCisgICAgKHRyZWVzaXQtbWFqb3It bW9kZS1zZXR1cCkpCisgICA7OyBFbGlzcC4KKyAgICh0CisgICAgKHNldHEgZm9udC1sb2NrLWRl ZmF1bHRzCisgICAgICAgICAgYCgoc2gtZm9udC1sb2NrLWtleXdvcmRzCisgICAgICAgICAgICAg c2gtZm9udC1sb2NrLWtleXdvcmRzLTEgc2gtZm9udC1sb2NrLWtleXdvcmRzLTIpCisgICAgICAg ICAgICBuaWwgbmlsCisgICAgICAgICAgICAoKD8vIC4gInciKSAoP34gLiAidyIpICg/LiAuICJ3 IikgKD8tIC4gInciKSAoP18gLiAidyIpKSBuaWwKKyAgICAgICAgICAgIChmb250LWxvY2stc3lu dGFjdGljLWZhY2UtZnVuY3Rpb24KKyAgICAgICAgICAgICAuICwjJ3NoLWZvbnQtbG9jay1zeW50 YWN0aWMtZmFjZS1mdW5jdGlvbikpKSkpKQogCiA7OzsjIyNhdXRvbG9hZAogKGRlZmFsaWFzICdz aGVsbC1zY3JpcHQtbW9kZSAnc2gtbW9kZSkKQEAgLTMxOTEsNiArMzIwNiwxMjIgQEAgc2gtc2hl bGxjaGVjay1mbHltYWtlCiAgICAgICAocHJvY2Vzcy1zZW5kLXJlZ2lvbiBzaC0tc2hlbGxjaGVj ay1wcm9jZXNzIChwb2ludC1taW4pIChwb2ludC1tYXgpKQogICAgICAgKHByb2Nlc3Mtc2VuZC1l b2Ygc2gtLXNoZWxsY2hlY2stcHJvY2VzcykpKSkKIAotKHByb3ZpZGUgJ3NoLXNjcmlwdCkKLQot Ozs7IHNoLXNjcmlwdC5lbCBlbmRzIGhlcmUKKzs7OyBUcmVlLXNpdHRlciBmb250LWxvY2sKKwor KGRlZnZhciBzaC1tb2RlLS10cmVlc2l0LW9wZXJhdG9ycworICAnKCJ8IiAifCYiICJ8fCIgIiYm IiAiPiIgIj4+IiAiPCIgIjw8IiAiPDwtIiAiPDw8IiAiPT0iICIhPSIgIjsiCisgICAgIjs7IiAi OyYiICI7OyYiKQorICAiTGlzdCBvZiBgc2gtbW9kZScgb3BlcmF0b3IgdG8gZm9udGlmeSIpCisK KyhkZWZ2YXIgc2gtbW9kZS0tdHJlZXNpdC1rZXl3b3JkcworICAnKCJjYXNlIiAiZG8iICJkb25l IiAiZWxpZiIgImVsc2UiICJlc2FjIiAiZXhwb3J0IiAiZmkiICJmb3IiCisgICAgImZ1bmN0aW9u IiAiaWYiICJpbiIgInVuc2V0IiAid2hpbGUiICJ0aGVuIikKKyAgIk1pbmltYWwgbGlzdCBvZiBr ZXl3b3JkcyB0aGF0IGJlbG9uZyB0byB0cmVlLXNpdHRlci1iYXNoJ3MgZ3JhbW1hci4KKworU29t ZSByZXNlcnZlZCB3b3JkcyBhcmUgbm90IHJlY29nbml6ZSB0byBrZWVwIHRoZSBncmFtbWFyCitz aW1wbGVyLiBUaG9zZSBhcmUgaWRlbnRpZmllZCB3aXRoIHJlZ2V4LWJhc2VkIGZpbHRlcmVkIHF1 ZXJpZXMuCisKK1NlZSBgc2gtbW9kZS0tdHJlZXNpdC1vdGhlci1rZXl3b3JkcycgYW5kCitgc2gt bW9kZS0tdHJlZXNpdC1zZXR0aW5ncycpLiIpCisKKyhkZWZ1biBzaC1tb2RlLS10cmVlc2l0LW90 aGVyLWtleXdvcmRzICgpCisgICJSZXR1cm5zIGEgbGlzdCBgb3RoZXJzJyBvZiBrZXkvcmVzZXJ2 ZWQgd29yZHMgdG8gYmUgZm9udGlmaWVkIHdpdGgKK3JlZ2V4LWJhc2VkIHF1ZXJpZXMgYXMgdGhl eSBhcmUgbm90IHBhcnQgb2YgdHJlZS1zaXR0ZXItYmFzaCdzCitncmFtbWFyLgorCitTZWUgYHNo LW1vZGUtLXRyZWVzaXQtb3RoZXIta2V5d29yZHMnIGFuZAorYHNoLW1vZGUtLXRyZWVzaXQtc2V0 dGluZ3MnKS4iCisgIChsZXQgKChtaW5pbWFsIHNoLW1vZGUtLXRyZWVzaXQta2V5d29yZHMpCisg ICAgICAgIChhbGwgKGFwcGVuZCAoc2gtZmVhdHVyZSBzaC1sZWFkaW5nLWtleXdvcmRzKQorICAg ICAgICAgICAgICAgICAgICAgKHNoLWZlYXR1cmUgc2gtb3RoZXIta2V5d29yZHMpKSkKKyAgICAg ICAgKG90aGVycykpCisgICAgKGRvbGlzdCAoa2V5d29yZCBhbGwgb3RoZXJzKQorICAgICAgKGlm IChub3QgKG1lbWJlciBrZXl3b3JkIG1pbmltYWwpKQorICAgICAgICAgIChzZXRxIG90aGVycyAo Y29ucyBrZXl3b3JkIG90aGVycykpKSkpKQorCisoZGVmdW4gc2gtbW9kZS0tdHJlZXNpdC1mb250 aWZ5LWRlY2wtY29tbWFuZCAobm9kZSBvdmVycmlkZSBfc3RhcnQgX2VuZCkKKyAgIkZvbnRpZmll cyBvbmx5IHRoZSBuYW1lIG9mIGRlY2xhcmF0aW9uX2NvbW1hbmQgbm9kZXMuCisKK1RoaXMgaXMg dXNlZCBpbnN0ZWFkIG9mIGBmb250LWxvY2stYnVpbHRpb24tZmFjZScgZGlyZWN0bHkgYmVjYXVz ZQorb3RoZXJ3aXNlIHRoZSB3aG9sZSBjb21tYW5kLCBpbmNsdWRpbmcgdGhlIHZhcmlhYmxlIGFz c2lnbm1lbnQgcGFydCwKK2lzIGZvbnRpZmllZCB3aXRoIHdpdGggYGZvbnQtbG9jay1idWlsdGlu LWZhY2UnLiBBbiBhbHRlcm5hdGl2ZSB0bwordGhpcyB3b3VsZCBiZSB0byBkZWNsYXJhdGlvbl9j b21tYW5kIG5vZGVzIHRvIGhhdmUgYSBgbmFtZTonIGZpZWxkLiIKKyAgKGxldCogKChtYXliZS1k ZWNsLWNtZCAodHJlZXNpdC1ub2RlLXBhcmVudCBub2RlKSkKKyAgICAgICAgIChub2RlLXR5cGUg KHRyZWVzaXQtbm9kZS10eXBlIG1heWJlLWRlY2wtY21kKSkpCisgICAgKHdoZW4gKHN0cmluZz0g bm9kZS10eXBlICJkZWNsYXJhdGlvbl9jb21tYW5kIikKKyAgICAgIChsZXQqICgobmFtZS1ub2Rl IChjYXIgKHRyZWVzaXQtbm9kZS1jaGlsZHJlbiBtYXliZS1kZWNsLWNtZCkpKQorICAgICAgICAg ICAgIChuYW1lLWJlZyAodHJlZXNpdC1ub2RlLXN0YXJ0IG5hbWUtbm9kZSkpCisgICAgICAgICAg ICAgKG5hbWUtZW5kICh0cmVlc2l0LW5vZGUtZW5kIG5hbWUtbm9kZSkpKQorICAgICAgICAocHV0 LXRleHQtcHJvcGVydHkgbmFtZS1iZWcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUt ZW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmFjZQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgZm9udC1sb2NrLWJ1aWx0aW4tZmFjZSkpKSkpCisKKyhkZWZ2YXIgc2gtbW9kZS0t dHJlZXNpdC1zZXR0aW5ncworICAodHJlZXNpdC1mb250LWxvY2stcnVsZXMKKyAgIDpmZWF0dXJl ICdjb21tZW50cworICAgOmxhbmd1YWdlIHNoLXNoZWxsCisgICAnKChjb21tZW50KSBAZm9udC1s b2NrLWNvbW1lbnQtZmFjZSkKKyAgIDpmZWF0dXJlICdmdW5jdGlvbnMKKyAgIDpsYW5ndWFnZSBz aC1zaGVsbAorICAgJygoZnVuY3Rpb25fZGVmaW5pdGlvbiBuYW1lOiAod29yZCkgQGZvbnQtbG9j ay1mdW5jdGlvbi1uYW1lLWZhY2UpKQorICAgOmZlYXR1cmUgJ3N0cmluZ3MKKyAgIDpsYW5ndWFn ZSBzaC1zaGVsbAorICAgJyhbKHN0cmluZykgKHJhd19zdHJpbmcpXSBAZm9udC1sb2NrLXN0cmlu Zy1mYWNlKQorICAgOmZlYXR1cmUgJ2hlcmVkb2NzCisgICA6bGFuZ3VhZ2Ugc2gtc2hlbGwKKyAg ICcoWyhoZXJlZG9jX3N0YXJ0KSAoaGVyZWRvY19ib2R5KV0gQHNoLWhlcmVkb2MpCisgICA6ZmVh dHVyZSAndmFyaWFibGVzCisgICA6bGFuZ3VhZ2Ugc2gtc2hlbGwKKyAgICcoKHZhcmlhYmxlX25h bWUpIEBmb250LWxvY2stdmFyaWFibGUtbmFtZS1mYWNlKQorICAgOmZlYXR1cmUgJ2tleXdvcmRz CisgICA6bGFuZ3VhZ2Ugc2gtc2hlbGwKKyAgIGAoOzsga2V5d29yZHMKKyAgICAgWyAsQHNoLW1v ZGUtLXRyZWVzaXQta2V5d29yZHMgXSBAZm9udC1sb2NrLWtleXdvcmQtZmFjZQorICAgICA7OyBy ZXNlcnZlZCB3b3JkcworICAgICAoY29tbWFuZF9uYW1lCisgICAgICAoKHdvcmQpIEBmb250LWxv Y2sta2V5d29yZC1mYWNlCisgICAgICAgKDptYXRjaAorICAgICAgICAsKHJ4LXRvLXN0cmluZwor ICAgICAgICAgICAgYChzZXEgYm9sCisgICAgICAgICAgICAgICAgICAob3IgLEAoc2gtbW9kZS0t dHJlZXNpdC1vdGhlci1rZXl3b3JkcykpCisgICAgICAgICAgICAgICAgICBlb2wpKQorICAgICAg ICBAZm9udC1sb2NrLWtleXdvcmQtZmFjZSkpKSkKKyAgIDpmZWF0dXJlICdjb21tYW5kcworICAg Omxhbmd1YWdlIHNoLXNoZWxsCisgICBgKDs7IGZ1bmN0aW9uL25vbi1idWlsdGluIGNvbW1hbmQg Y2FsbHMKKyAgICAgKGNvbW1hbmRfbmFtZSAod29yZCkgQGZvbnQtbG9jay1mdW5jdGlvbi1uYW1l LWZhY2UpCisgICAgIDs7IGJ1aWx0aW4gY29tbWFuZHMKKyAgICAgKGNvbW1hbmRfbmFtZQorICAg ICAgKCh3b3JkKSBAZm9udC1sb2NrLWJ1aWx0aW4tZmFjZQorICAgICAgICg6bWF0Y2ggLChsZXQg KChidWlsdGlucworICAgICAgICAgICAgICAgICAgICAgICAoc2gtZmVhdHVyZSBzaC1idWlsdGlu cykpKQorICAgICAgICAgICAgICAgICAgKHJ4LXRvLXN0cmluZworICAgICAgICAgICAgICAgICAg IGAoc2VxIGJvbAorICAgICAgICAgICAgICAgICAgICAgICAgIChvciAsQGJ1aWx0aW5zKQorICAg ICAgICAgICAgICAgICAgICAgICAgIGVvbCkpKQorICAgICAgICAgICAgICAgQGZvbnQtbG9jay1i dWlsdGluLWZhY2UpKSkpCisgICA6ZmVhdHVyZSAnZGVjbC1jb21tYW5kcworICAgOmxhbmd1YWdl IHNoLXNoZWxsCisgICAnKDs7IGRlY2xhcmF0aW9uIGNvbW1hbmRzCisgICAgIChkZWNsYXJhdGlv bl9jb21tYW5kIF8gQHNoLW1vZGUtLXRyZWVzaXQtZm9udGlmeS1kZWNsLWNvbW1hbmQpKQorICAg OmZlYXR1cmUgJ2NvbnN0YW50cworICAgOmxhbmd1YWdlIHNoLXNoZWxsCisgICAnKChjYXNlX2l0 ZW0gdmFsdWU6ICh3b3JkKSBAZm9udC1sb2NrLWNvbnN0YW50LWZhY2UpCisgICAgIChmaWxlX2Rl c2NyaXB0b3IpIEBmb250LWxvY2stY29uc3RhbnQtZmFjZSkKKyAgIDpmZWF0dXJlICdvcGVyYXRv cnMKKyAgIDpsYW5ndWFnZSBzaC1zaGVsbAorICAgYChbICxAc2gtbW9kZS0tdHJlZXNpdC1vcGVy YXRvcnMgXSBAZm9udC1sb2NrLWJ1aWx0aW4tZmFjZSkKKyAgIDpmZWF0dXJlICdidWlsdGluLXZh cmlhYmxlcworICAgOmxhbmd1YWdlIHNoLXNoZWxsCisgICBgKCgoc3BlY2lhbF92YXJpYWJsZV9u YW1lKSBAZm9udC1sb2NrLWJ1aWx0aW4tZmFjZQorICAgICAgKDptYXRjaCAsKGxldCAoKGJ1aWx0 aW4tdmFycyAoc2gtZmVhdHVyZSBzaC12YXJpYWJsZXMpKSkKKyAgICAgICAgICAgICAgICAgKHJ4 LXRvLXN0cmluZworICAgICAgICAgICAgICAgICAgYChzZXEgYm9sCisgICAgICAgICAgICAgICAg ICAgICAgICAob3IgLEBidWlsdGluLXZhcnMpCisgICAgICAgICAgICAgICAgICAgICAgICBlb2wp KSkKKyAgICAgICAgICAgICAgQGZvbnQtbG9jay1idWlsdGluLWZhY2UpKSkpCisgICJUcmVlLXNp dHRlciBmb250LWxvY2sgc2V0dGluZ3MgZm9yIGBzaC1tb2RlJy4iKQorCisocHJvdmlkZSAnc2gt bW9kZSkKKzs7OyBzaC1tb2RlLmVsIGVuZHMgaGVyZQotLSAKMi4zMS4xCgo= --0000000000005503aa05ecab23dc Content-Type: application/x-shellscript; name="heredoc-issue.sh" Content-Disposition: attachment; filename="heredoc-issue.sh" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_la2yq4zh1 IyEvdXNyL2Jpbi9lbnYgYmFzaAoKY2F0IDw8RU9GCmhlcmVkb2Mgc3RyaW5nCkVPRgplY2hvICI8 PEhFTExPPj4iCg== --0000000000005503aa05ecab23dc--