From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Stefan Monnier Newsgroups: gmane.emacs.devel Subject: Re: Are variations such as these desired? Date: Tue, 13 Dec 2022 10:18:29 -0500 Message-ID: References: <668E5804-C241-4D72-8FC6-4F1B8454917E@easesoftware.com> <7CF4C507-1EE6-4DE3-966D-A7B6E49EFC0D@easesoftware.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="26021"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Cc: emacs-devel To: Perry Smith Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Tue Dec 13 16:19:06 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 1p573i-0006aV-BV for ged-emacs-devel@m.gmane-mx.org; Tue, 13 Dec 2022 16:19:06 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p573E-0003NU-Nb; Tue, 13 Dec 2022 10:18:36 -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 1p573C-0003N5-TN for emacs-devel@gnu.org; Tue, 13 Dec 2022 10:18:34 -0500 Original-Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p573B-0005ed-A8 for emacs-devel@gnu.org; Tue, 13 Dec 2022 10:18:34 -0500 Original-Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id AE91B442238; Tue, 13 Dec 2022 10:18:31 -0500 (EST) Original-Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 41850442240; Tue, 13 Dec 2022 10:18:30 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1670944710; bh=GU2+mqmReFx6rqkRzUr5W/MeELqz2XevTUI6cIldXBA=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=ioYU8jvjQehJrWMiHYAFp0pIH/lgPs/tmuBg6R3KBuf9wnPAzoF1Kvs75mTJwGC+5 P6HSsupfuVo0iwpJ0JL40i43NCbQEn2wd7ogtqhD3nVSB9tXzdhbGC1pg7TONf3UKA huTeT+/zEXRjAnVxa649E6cnrfQCU9/jBor06ycXt0P0crt1FFg2lYV7Y1XPNtRK3e tXhFfeHnX32Fb8csSB8F/z0fiKAJd5/OP9JtDCnkzxjlMy7RcmI2VCQ0gunZFUQy+t ggIQ+SNF3e2lGKV05S01miKcJCuNgbLTEnUdImTr9t3jF+QDTd+SrCHwYdjAdYbSZW Cd8gET9wkCBwg== Original-Received: from pastel (unknown [45.72.193.52]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 0B1701201F4; Tue, 13 Dec 2022 10:18:30 -0500 (EST) In-Reply-To: <7CF4C507-1EE6-4DE3-966D-A7B6E49EFC0D@easesoftware.com> (Perry Smith's message of "Tue, 13 Dec 2022 08:50:34 -0600") Received-SPF: pass client-ip=132.204.25.50; envelope-from=monnier@iro.umontreal.ca; helo=mailscanner.iro.umontreal.ca X-Spam_score_int: -42 X-Spam_score: -4.3 X-Spam_bar: ---- X-Spam_report: (-4.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_MED=-2.3, 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:301323 Archived-At: > So, your idea is like =E2=80=9Calign" except instead of using regular exp= ressions, it > would use Tree Sitter queries =E2=80=94 or similar such concepts. That's the idea, yes. You could use the approach in your code: take point as a specification of "the node to align", and then look at the children of that node and their children's children, ... For each level, check if all the children appear on a different line: if they're all on the same line, we're too low in the tree and we should stop recursing (if some are on the same line but not all, you get to decide whether you want to try and align or not). Otherwise, align them all together. There might need to be some heuristic (or major-mode-provided info) in this part so we do: x =3D 5; yup =3D 42; instead of x =3D 5 ; yup =3D 42; or x =3D 5 ; yup =3D 42; For SMIE, we don't have "nodes", so I was thinking of having the user specify a region of interest and look for tokens with the same precedence placed on different lines. Stefan