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: Code navigation for sh-mode with Tree-sitter Date: Sat, 3 Dec 2022 13:23:25 -0700 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="000000000000acca2b05eef23a84" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="24550"; mail-complaints-to="usenet@ciao.gmane.io" To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Sat Dec 03 21:24:27 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 1p1Z3i-00068z-At for ged-emacs-devel@m.gmane-mx.org; Sat, 03 Dec 2022 21:24:26 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p1Z32-0006ZQ-2y; Sat, 03 Dec 2022 15:23:44 -0500 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 1p1Z30-0006Yj-EB for emacs-devel@gnu.org; Sat, 03 Dec 2022 15:23:42 -0500 Original-Received: from mail-ed1-x531.google.com ([2a00:1450:4864:20::531]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1p1Z2y-0005uB-I4 for emacs-devel@gnu.org; Sat, 03 Dec 2022 15:23:42 -0500 Original-Received: by mail-ed1-x531.google.com with SMTP id c66so4436642edf.5 for ; Sat, 03 Dec 2022 12:23:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=Eq3p1IqPZXS8pOZDWcB/3K2JOIV07hVmWqADwExjEYQ=; b=TeTHpEcfcbo1sJXa3YUqrl+C31+x5fnVK/3gARcrraFz/SNGmcy0+Tmshwxwdp/E++ 1MV4nGSmzeZL7tT4I7gMa+B0ekMD6ufvMzeYVp1wEakySkg/uojoDSbiDzsa0J5o1Iun mI3jbXgUbxNw/zc8TwhjZZNY4YrsKuRJvruWwh175GLeMHYxW/nsQmh4Q+d3yLFj4BSm 6zgCTWcVMXVcDHPRy4CNeNCt6ft7pj5IsKahNr5DkDi78/kd6F+hKtWVPUSZry6ZytkN mbwlGPtZtpL7pQSvJrLcwAWT9VT8MkD2NdY2XOAgGq6Jb22M7wE52S+0dhwxX2uCRZWL j3RQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=Eq3p1IqPZXS8pOZDWcB/3K2JOIV07hVmWqADwExjEYQ=; b=ywYaLEjc9VqSBbaWqiyNZ38w5a2ceJEC5h57/MSCYchA4ba/Hs3jPLYHv/Ms7vWhjf +px0dOWnK5Q5ADJpuXFzsOvdXV4/ic8XHjvH/ADnwmaUROlRlQnlleylT4tlHWjZMcwO kZQQF5b29Y+e9n68wbrR+ZMK0Dsyn1qI4xnc1lXz/dkpXyPCiv4azecb5B+ikW7WBGTb 1Eehpty4/8DfwXA2THaA8EThyApsq6bXwKGpqYXOIkcpVKU1UNVKmEhUhbgYCV75tC43 oP5wi9zXGgSqytztVcMwH8Wk9Q6E6j9Z5Y4ArErUjUvXlIZy1IT3JCiAI/SondsnHL+Y xbbA== X-Gm-Message-State: ANoB5pn8gEycpTup6aDCsAlRe5adIL3VvFhbBd0umJoZAseGMD0EzW0U tphxsxBhNR2A/vonOTwlTHip89LEfrqFrYOplGPoFijPePY= X-Google-Smtp-Source: AA0mqf7iDo8GdGQMqe4VznuJik8TPpQz7L4XWQJiMysFZKskUZ49xGAy/XFd6D/0ZCbkZZVCTwXr5/uVXcPvMvuujCk= X-Received: by 2002:a05:6402:19a:b0:460:7413:5d46 with SMTP id r26-20020a056402019a00b0046074135d46mr68654230edv.47.1670099017440; Sat, 03 Dec 2022 12:23:37 -0800 (PST) Received-SPF: pass client-ip=2a00:1450:4864:20::531; envelope-from=jaopaulolc@gmail.com; helo=mail-ed1-x531.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: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.devel:300877 Archived-At: --000000000000acca2b05eef23a84 Content-Type: multipart/alternative; boundary="000000000000acca2805eef23a82" --000000000000acca2805eef23a82 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi all, I am working on basic navigation for sh-mode. My idea is that in sh-mode invoking C-M-a or C-M-e moves point to the beginning/end of the surrounding function if the point was inside of said function or to the beginning/end of the next/previous top-level function otherwise. I got the functions to do so in the attached patch (I did not include the C-M-a with a negative argument yet). If the functions are defined and used in isolation they work as intended. However, because `end-of-defun' calls `beginning-of-defun-raw' (which, AFAIK, uses `beginning-of-defun-function') it causes the C-M-e to not work when the point is not inside of a function. What I think is happening is that, when `end-of-defun' calls `beginning-of-defun-raw' it brings point to the beginning of a top-level function, so the subsequent call to `end-of-defun' moves point to the start location, does it make it seems as the point did not move. I have also noticed that calling the private function I defined directly via M-: brings the point to a slightly different location. For example: <---- point before C-M-e A { } <--- point after M-: (sh-mode--treesit-end-of-defun) <---- pint after C-M-e Calling sh-mode--treesit-end-of-defun brings the point right after the closing curly brace and with C-M-e the point is positioned at the next line= . That might be due to additional processing done inside `end-of-defun'. So, would it be ok to override `beginning-of-defun' and `end-of-defun' and thus have bash-ts-mode use the functions I wrote directly? If so, how could I do that? If not, how can I fix the "miss-behavior"? I would appreciate all feedback and suggestions. --=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 --000000000000acca2805eef23a82 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi all,

I am working on basic navigation for sh-mod= e. My idea is that in sh-mode invoking=C2=A0C-M-a or C-M-e moves point to t= he beginning/end of the surrounding=C2=A0function if the point was inside= =C2=A0of said function or to the beginning/end of the next/previous top-lev= el function otherwise.

I got the fu= nctions to do so in the attached patch (I did not include the C-M-a with a = negative argument yet).

If the functions are defined and used= in isolation they work as intended. However, because `end-of-defun' ca= lls `beginning-of-defun-raw' (which, AFAIK, uses `beginning-of-defun-fu= nction') it causes the C-M-e to not work when the point is not inside o= f a function.

What I think is happening is that, when `end-of-defun&= #39; calls `beginning-of-defun-raw' it brings point to the beginning of= a top-level function, so the subsequent call to `end-of-defun' moves p= oint to the start location, does=C2=A0it make it seems as the point did not= move.

I have also noticed that calling the private function I defin= ed directly via M-: brings the point to a slightly different location. For = example:

<---- point before C-M-e
A {
} <--- point after= M-: (sh-mode--treesit-end-of-defun)
<---- pint af= ter C-M-e

Calling sh-mode--treesit-end-of-defun brings the point rig= ht after the closing curly brace and with C-M-e the point is positioned at = the next line.

That might be due to additional processing done insid= e `end-of-defun'.

So, would it be ok to override `beginning-of-d= efun' and `end-of-defun' and thus have bash-ts-mode use the functio= ns I wrote directly? If so, how could I do that? If not, how can I fix the = "miss-behavior"?

I would appreciate all feedback and sugge= stions.

--
Jo=C3=A3o Paulo L. de Carvalho
Ph.D Computer Science | =C2=A0IC-UNICAM= P | Campinas , SP - Brazil
Postdoctoral Research Fellow | University of = Alberta | Edmonton, AB - Canada
--000000000000acca2805eef23a82-- --000000000000acca2b05eef23a84 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Basic-navigation-for-sh-mode.patch" Content-Disposition: attachment; filename="0001-Basic-navigation-for-sh-mode.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lb8dtnjq0 RnJvbSBlYzdlOTljYzkzZmI4ZjExZDk0ZTRjMDJjNTU4Y2JmZDc1NjIzN2E2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/Sm89QzM9QTNvPTIwUD0yRT0yMEw9MkU9MjBk ZT0yMENhcnZhbGhvPz0KIDxqYW9wYXVsb2xjQGdtYWlsLmNvbT4KRGF0ZTogU2F0LCAzIERlYyAy MDIyIDEyOjU1OjI3IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gQmFzaWMgbmF2aWdhdGlvbiBmb3Ig c2gtbW9kZQoKLS0tCiBsaXNwL3Byb2dtb2Rlcy9zaC1zY3JpcHQuZWwgfCA2MyArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKystCiAxIGZpbGUgY2hhbmdlZCwgNjIgaW5zZXJ0aW9u cygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL2xpc3AvcHJvZ21vZGVzL3NoLXNjcmlw dC5lbCBiL2xpc3AvcHJvZ21vZGVzL3NoLXNjcmlwdC5lbAppbmRleCA0MDhlYmZjMDQ1Li41ODg1 MjYxYzAxIDEwMDY0NAotLS0gYS9saXNwL3Byb2dtb2Rlcy9zaC1zY3JpcHQuZWwKKysrIGIvbGlz cC9wcm9nbW9kZXMvc2gtc2NyaXB0LmVsCkBAIC0xNjE5LDcgKzE2MTksMTMgQEAgYmFzaC10cy1t b2RlCiAgICAgICAgICAgICAgICAgICAoIGJyYWNrZXQgZGVsaW1pdGVyIG1pc2MtcHVuY3R1YXRp b24gb3BlcmF0b3IpKSkKICAgICAoc2V0cS1sb2NhbCB0cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5n cwogICAgICAgICAgICAgICAgIHNoLW1vZGUtLXRyZWVzaXQtc2V0dGluZ3MpCi0gICAgKHRyZWVz aXQtbWFqb3ItbW9kZS1zZXR1cCkpKQorICAgIChzZXRxLWxvY2FsIHRyZWVzaXQtZGVmdW4tcHJl ZmVyLXRvcC1sZXZlbCB0KQorICAgIChzZXRxLWxvY2FsIHRyZWVzaXQtZGVmdW4tdHlwZS1yZWdl eHAgImZ1bmN0aW9uX2RlZmluaXRpb24iKQorICAgICh0cmVlc2l0LW1ham9yLW1vZGUtc2V0dXAp CisgICAgKHNldHEtbG9jYWwgYmVnaW5uaW5nLW9mLWRlZnVuLWZ1bmN0aW9uCisgICAgICAgICAg ICAgICAgIydzaC1tb2RlLS10cmVlc2l0LWJlZ2lubmluZy1vZi1kZWZ1bikKKyAgICAoc2V0cS1s b2NhbCBlbmQtb2YtZGVmdW4tZnVuY3Rpb24KKyAgICAgICAgICAgICAgICAjJ3NoLW1vZGUtLXRy ZWVzaXQtZW5kLW9mLWRlZnVuKSkpCiAKIChhZHZpY2UtYWRkICdiYXNoLXRzLW1vZGUgOmFyb3Vu ZCAjJ3NoLS1yZWRpcmVjdC1iYXNoLXRzLW1vZGUKICAgICAgICAgICAgIDs7IEdpdmUgaXQgbG93 ZXIgcHJlY2VkZW5jZSB0aGFuIG5vcm1hbCBhZHZpY2UsIHNvIG90aGVyCkBAIC0zMzY0LDUgKzMz NzAsNjAgQEAgc2gtbW9kZS0tdHJlZXNpdC1zZXR0aW5ncwogICAgJygoWyIkIl0pIEBmb250LWxv Y2stbWlzYy1wdW5jdHVhdGlvbi1mYWNlKSkKICAgIlRyZWUtc2l0dGVyIGZvbnQtbG9jayBzZXR0 aW5ncyBmb3IgYHNoLW1vZGUnLiIpCiAKKwwKKzs7OyBUcmVlLXNpdHRlciBuYXZpZ2F0aW9uCisK KyhkZWZtYWNybyBnZXQtZnVuLW9yLW5pbCAobm9kZSkKKyAgYCgodHJlZXNpdC1wYXJlbnQtdW50 aWwgLG5vZGUKKyAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKHApCisgICAgICAgICAg ICAgICAgICAgICAgICAgIChzdHJpbmc9ICh0cmVlc2l0LW5vZGUtdHlwZSBwKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiZnVuY3Rpb25fZGVmaW5pdGlvbiIpKSkpCisKKyhk ZWZ1biBzaC1tb2RlLS10cmVlc2l0LWJlZ2lubmluZy1vZi1kZWZ1biAoJm9wdGlvbmFsIGFyZykK KyAgIlRyZWUtc2l0dGVyIGBiZWdpbm5pbmctb2YtZGVmdW4nIGZ1bmN0aW9uLgorQVJHIGlzIHRo ZSBzYW1lIGFzIGluIGBiZWdpbm5pbmctb2YtZGVmdW4nLiIKKyAgKGxldCAoKGFyZyAob3IgYXJn IDEpKQorICAgICAgICAodGFyZ2V0LW5vZGUgbmlsKQorICAgICAgICAobm9kZS1hdC1wb2ludCBu aWwpCisgICAgICAgIChmdW5jdGlvbiB0cmVlc2l0LWRlZnVuLXR5cGUtcmVnZXhwKSkKKyAgICAo aWYgKD4gYXJnIDApCisgICAgICAgIDs7IEdvIGJhY2t3YXJkLgorICAgICAgICAod2hpbGUgKD4g YXJnIDApCisgICAgICAgICAgKHNldHEgbm9kZS1hdC1wb2ludCAodHJlZXNpdC1ub2RlLWF0IChw b2ludCkpKQorICAgICAgICAgIChpZiAoc3RyaW5nPSAodHJlZXNpdC1ub2RlLXR5cGUgbm9kZS1h dC1wb2ludCkgImZ1bmN0aW9uIikKKyAgICAgICAgICAgICAgKHNldHEgbm9kZS1hdC1wb2ludCAo dHJlZXNpdC1ub2RlLXBhcmVudCBub2RlLWF0LXBvaW50KSkpCisgICAgICAgICAgKHNldHEgdGFy Z2V0LW5vZGUgKGdldC1mdW4tb3ItbmlsIG5vZGUtYXQtcG9pbnQpKQorICAgICAgICAgICh1bmxl c3MgdGFyZ2V0LW5vZGUKKyAgICAgICAgICAgIChzZXRxIG1heWJlLXRhcmdldC1ub2RlICh0cmVl c2l0LXNlYXJjaC1mb3J3YXJkIG5vZGUtYXQtcG9pbnQKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0KSkKKyAg ICAgICAgICAgIChzZXRxIHRhcmdldC1ub2RlIChvciAodHJlZXNpdC1ub2RlLXRvcC1sZXZlbCBt YXliZS10YXJnZXQtbm9kZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXli ZS10YXJnZXQtbm9kZSkpKQorICAgICAgICAgICh3aGVuIHRhcmdldC1ub2RlCisgICAgICAgICAg ICAoZ290by1jaGFyICh0cmVlc2l0LW5vZGUtc3RhcnQgdGFyZ2V0LW5vZGUpKSkKKyAgICAgICAg ICAoc2V0cSBhcmcgKDEtIGFyZykpKQorICAgICAgOzsgR28gZm9yd2FyZC4KKyAgICAgICh3aGls ZSAoPCBhcmcgMCkKKyAgICAgICAgKHNldHEgYXJnICgxKyBhcmcpKSkpKSkKKworKGRlZnVuIHNo LW1vZGUtLXRyZWVzaXQtZW5kLW9mLWRlZnVuICgpCisgICJUcmVlLXNpdHRlciBgZW5kLW9mLWRl ZnVuJyBmdW5jdGlvbi4iCisgIChsZXQgKChub2RlLWF0LXBvaW50IG5pbCkKKyAgICAgICAgKHRh cmdldC1ub2RlIG5pbCkKKyAgICAgICAgKGZ1bmN0aW9uIHRyZWVzaXQtZGVmdW4tdHlwZS1yZWdl eHApKQorICAgIChzZXRxIG5vZGUtYXQtcG9pbnQgKHRyZWVzaXQtbm9kZS1hdCAocG9pbnQpKSkK KyAgICAoc2V0cSB0YXJnZXQtbm9kZSAoZ2V0LWZ1bi1vci1uaWwgbm9kZS1hdC1wb2ludCkpCisg ICAgKHVubGVzcyB0YXJnZXQtbm9kZQorICAgICAgKHNldHEgdGFyZ2V0LW5vZGUgKHRyZWVzaXQt c2VhcmNoLWZvcndhcmQgbm9kZS1hdC1wb2ludAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24pKQorICAgICAgKHdoZW4gKGFuZCB0YXJnZXQt bm9kZQorICAgICAgICAgICAgICAgICAodHJlZXNpdC1wYXJlbnQtdW50aWwgdGFyZ2V0LW5vZGUK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKHApCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmc9ICh0cmVlc2l0LW5v ZGUtdHlwZSBwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBmdW5jdGlvbikpKSkKKyAgICAgICAgKHNldHEgdGFyZ2V0LW5vZGUgKHRyZWVzaXQtbm9k ZS10b3AtbGV2ZWwgdGFyZ2V0LW5vZGUpKSkpCisgICAgKHdoZW4gdGFyZ2V0LW5vZGUKKyAgICAg IChnb3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1lbmQgdGFyZ2V0LW5vZGUpKSkpKQorCiAocHJvdmlk ZSAnc2gtc2NyaXB0KQogOzs7IHNoLXNjcmlwdC5lbCBlbmRzIGhlcmUKLS0gCjIuMzEuMQoK --000000000000acca2b05eef23a84--