From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Dmitry Gutov Newsgroups: gmane.emacs.bugs Subject: bug#66732: tree-sitter fontification doesn't update multi-line syntax reliably Date: Thu, 14 Dec 2023 03:43:58 +0200 Message-ID: References: <878r7s5cdf.fsf@honnef.co> <83fs1tbou1.fsf@gnu.org> <835y1zo3rw.fsf@gnu.org> <2ce274aa-6d01-4d0a-b10c-07f821343fed@gmail.com> <50920549-006c-0153-2471-02e41a3dada7@gutov.dev> <8c7cd429-bdc3-4fac-ad1c-fbad793bf1a0@gmail.com> <231ebcd1-ec30-0432-82e7-d63e11cd65f7@gutov.dev> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="39423"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Cc: 66732@debbugs.gnu.org, dominik@honnef.co To: Yuan Fu , Eli Zaretskii , Stefan Monnier Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Thu Dec 14 02:45:31 2023 Return-path: Envelope-to: geb-bug-gnu-emacs@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 1rDan4-000A1Y-Oj for geb-bug-gnu-emacs@m.gmane-mx.org; Thu, 14 Dec 2023 02:45:31 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rDamQ-0003VJ-JH; Wed, 13 Dec 2023 20:44:50 -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 1rDamN-0003Up-IE for bug-gnu-emacs@gnu.org; Wed, 13 Dec 2023 20:44:48 -0500 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rDamM-0004SY-6h for bug-gnu-emacs@gnu.org; Wed, 13 Dec 2023 20:44:47 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1rDamb-0001Nj-Nj for bug-gnu-emacs@gnu.org; Wed, 13 Dec 2023 20:45:01 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Dmitry Gutov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 14 Dec 2023 01:45:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66732 X-GNU-PR-Package: emacs Original-Received: via spool by 66732-submit@debbugs.gnu.org id=B66732.17025182675255 (code B ref 66732); Thu, 14 Dec 2023 01:45:01 +0000 Original-Received: (at 66732) by debbugs.gnu.org; 14 Dec 2023 01:44:27 +0000 Original-Received: from localhost ([127.0.0.1]:59933 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDam2-0001Mh-UW for submit@debbugs.gnu.org; Wed, 13 Dec 2023 20:44:27 -0500 Original-Received: from out5-smtp.messagingengine.com ([66.111.4.29]:34811) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDam1-0001MT-6U for 66732@debbugs.gnu.org; Wed, 13 Dec 2023 20:44:25 -0500 Original-Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailout.nyi.internal (Postfix) with ESMTP id B96735C0319; Wed, 13 Dec 2023 20:44:02 -0500 (EST) Original-Received: from mailfrontend1 ([10.202.2.162]) by compute1.internal (MEProxy); Wed, 13 Dec 2023 20:44:02 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm3; t=1702518242; x=1702604642; bh=Tq1Mx2WQlOOEzm/ZH+K1zdeTmjybmOuC5O/8+z64zFE=; b= x2sPoqJL5K9ro5Ewwledkug0qIcg5l0DV25Naifkv5dwfO131YqyXPC+uCk2NLOn 5mF3i0hLeMp07187hpDfBBbcqZw8v1bqf5I5bUkl37VZ7Njt1KHyKCoODPg6deno L1dtDTTx/CtzzumeGl/Xsmed73/1jFm+x6c6fICawcV1fcMrIrogCzI6Xch8K/Nj r+IXtVWyZPo6YIFA8IPDjgO1MNvyjnjQtKKhdxsyPpQIbvkfUcYxFuCC/w4Q7rUs eKXqIoff4G6xzJCOv6j8LozI/+CIi/MGHLfbKxtLfYiVo3BwpwILPP3vexZJhixa b3w3SD9MpuRSALE3XCDsoA== 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:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1702518242; x= 1702604642; bh=Tq1Mx2WQlOOEzm/ZH+K1zdeTmjybmOuC5O/8+z64zFE=; b=X jRawGWwuALbbZaLyu/KDEBxy6n7/QO4lRQOYgII9Z7Oc4R6gtEA1DQl9t31AuKPY St/M2t04+iu0FYsKYFU42WxEQBNtdwSqjjYIw/oRCWZAe3QyRe4LyzH8aU8o1DqA R56b34xaHq5p+j0BqzTHYFs8CnQb3en5BEQc2pNX2zeEZ0mRnwavXdjyl+pBQW+C aNHh1AdTyvfnHoDYtmM9UGh6j/goJF0PSvr1tUbOuLkwO0qifWL0VzMjbRIhJxCS SKdWaZwl3XgzxxwrzMMbGtNRinp3TxpCEa30jV/spUzqLuJ1BXCr4aSlD05WTJZg thVvuKc7oqDy0bdD7BNnA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrudelkedgfeelucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhepkfffgggfuffvvehfhfgjtgfgsehtjeertddtfeejnecuhfhrohhmpeffmhhi thhrhicuifhuthhovhcuoegumhhithhrhiesghhuthhovhdruggvvheqnecuggftrfgrth htvghrnhepiefgteevheevveffheeltdeukeeiieekueefgedugfefgefhudelgfefveel vdevnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepug hmihhtrhihsehguhhtohhvrdguvghv X-ME-Proxy: Feedback-ID: i0e71465a:Fastmail Original-Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 13 Dec 2023 20:44:00 -0500 (EST) Content-Language: en-US In-Reply-To: X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:276167 Archived-At: On 13/12/2023 05:28, Yuan Fu wrote: >>> c-ts-mode--emacs-set-ranges is registered as a range rule, so many >>> tree-sitter function calls it before doing anything to make sure >>> range is up-to-date. treesit-font-lock-fontify-region calls >>> treesit-update-ranges at the beginning of its body, and >>> treesit-update-ranges calls c-ts-mode--emacs-set-ranges. >> >> That seems to mean that any feature accessing the parse tree should >> call treesit-update-ranges first. Including >> syntax-propertize-functions and *-extend-region-functions, which we >> currently don't do. >> >> But which boundaries is it supposed to use? Should >> treesit--syntax-extend-region call treesit-update-ranges, when wait >> for the parser updates, then possibly call treesit-update-ranges again >> on the extended boundaries, and so on, until the parser stops sending >> notifications? Will it stop? > > It'll stop. If the ranges don't change, no reparse will happen. And only > buffer content change can cause range change. Reparse itself can't. So > at most you'll see reparse -> update ranges -> reparse. > >> Anyway, could you try my patch? Like I said, I'm not sure if the >> insufficient fontification I'm observing in c-ts-mode is due to the >> problem with the solution, or due to the other redisplay-related >> problems on my system. > > Yeah, it doesn't solve the problem in c-ts-mode regarding block comments. > > We might need to run (progn (force-parse) (update-ranges) (force-parse)) > before jit-lock-fontify-now and sytax-ppss. Well... I've replaced (treesit-buffer-root-node (treesit-language-at (point))) in treesit--syntax-extend-region with (treesit-buffer-root-node (treesit-language-at (point))) (treesit-update-ranges beg end) (treesit-buffer-root-node (treesit-language-at (point))) and even tried commenting out the call to 'treesit-update-ranges' inside treesit-font-lock-fontify-region, but the result looks unchanged. And the region does get extended, according to my print-debugging inside font-lock-default-fontify-region. Could you check if you're seeing the same?