From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Troy Brown Newsgroups: gmane.emacs.bugs Subject: bug#64321: 29.0.92; Tree-Sitter/which-function Narrow/Widen causes modified buffer Date: Tue, 27 Jun 2023 22:23:52 -0400 Message-ID: Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="26836"; mail-complaints-to="usenet@ciao.gmane.io" To: 64321@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Wed Jun 28 04:25:16 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 1qEKrr-0006nD-Gu for geb-bug-gnu-emacs@m.gmane-mx.org; Wed, 28 Jun 2023 04:25:15 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qEKrh-0001OY-Pe; Tue, 27 Jun 2023 22:25:05 -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 1qEKrf-0001OD-0G for bug-gnu-emacs@gnu.org; Tue, 27 Jun 2023 22:25:03 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qEKre-0005Zi-Mp for bug-gnu-emacs@gnu.org; Tue, 27 Jun 2023 22:25:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1qEKre-0003UA-5U for bug-gnu-emacs@gnu.org; Tue, 27 Jun 2023 22:25:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Troy Brown Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 28 Jun 2023 02:25:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 64321 X-GNU-PR-Package: emacs X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.168791905313320 (code B ref -1); Wed, 28 Jun 2023 02:25:01 +0000 Original-Received: (at submit) by debbugs.gnu.org; 28 Jun 2023 02:24:13 +0000 Original-Received: from localhost ([127.0.0.1]:49768 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qEKqq-0003Sl-LO for submit@debbugs.gnu.org; Tue, 27 Jun 2023 22:24:13 -0400 Original-Received: from lists.gnu.org ([209.51.188.17]:38080) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qEKqo-0003Sd-5T for submit@debbugs.gnu.org; Tue, 27 Jun 2023 22:24:10 -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 1qEKqn-0001Jk-A5 for bug-gnu-emacs@gnu.org; Tue, 27 Jun 2023 22:24:09 -0400 Original-Received: from mail-ej1-f45.google.com ([209.85.218.45]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qEKql-0005DO-Kd for bug-gnu-emacs@gnu.org; Tue, 27 Jun 2023 22:24:09 -0400 Original-Received: by mail-ej1-f45.google.com with SMTP id a640c23a62f3a-98dfb3f9af6so610828666b.2 for ; Tue, 27 Jun 2023 19:24:06 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687919045; x=1690511045; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=7hc/BnQNm1XIsFI+xUrkhNpybGeUIXOqX3Hv47yDOAc=; b=gSjhH4RqeoPyIjboMcEQLa63rX7nUHRMknugG4OoHnE2wQbUhid23tWzturpP5jluE u6Nz/Aog/hsYzf7+LTvacZCE56E/P6DG/CelaovLPC57peIS1Thw4quF1r8hyD97dOgy jqhV2yaMtYmFNYamKNBurP+c3qF3lm/vbf8S42XHzFyCj5y/yy5i9DuaEUPzbf33+Hxh 1db7GJRd4YJZ+Q8GXSX/f623OZJiTVSLMLEwgIyhWbV7SLzA/HGiq3VzB9czdmhrYPjg //iwEXVYUbPnO6MqjM2/23eI5meJA9ek5ZJMv2vARCTWBkjZfOC004Io+U1AwYWtA+M6 xpag== X-Gm-Message-State: AC+VfDwM2AVYTAS3IWCAGqHgDz/ed3V/6twHJQPnvCrE86hU6p4Qy0AU CgrWEhnrNAvSKpdFSgISOL5GQHSb2kh6Bw== X-Google-Smtp-Source: ACHHUZ7c9g22z9NQUXF99Oedjv/V1DK6JJ3MoJ3qYgNtjOY3Lmh50D22KjUh6fAGwJ/+yicpViAgMQ== X-Received: by 2002:a17:906:6a0f:b0:992:8092:c109 with SMTP id qw15-20020a1709066a0f00b009928092c109mr44962ejc.51.1687919044543; Tue, 27 Jun 2023 19:24:04 -0700 (PDT) Original-Received: from mail-ed1-f49.google.com (mail-ed1-f49.google.com. [209.85.208.49]) by smtp.gmail.com with ESMTPSA id lr3-20020a170906fb8300b00973f1cd586fsm5175537ejb.1.2023.06.27.19.24.03 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 27 Jun 2023 19:24:04 -0700 (PDT) Original-Received: by mail-ed1-f49.google.com with SMTP id 4fb4d7f45d1cf-51d89664272so4893972a12.1 for ; Tue, 27 Jun 2023 19:24:03 -0700 (PDT) X-Received: by 2002:a17:907:708:b0:97b:956f:e6b5 with SMTP id xb8-20020a170907070800b0097b956fe6b5mr30428773ejb.23.1687919043655; Tue, 27 Jun 2023 19:24:03 -0700 (PDT) X-Gmail-Original-Message-ID: Received-SPF: pass client-ip=209.85.218.45; envelope-from=troy.s.brown@gmail.com; helo=mail-ej1-f45.google.com X-Spam_score_int: -13 X-Spam_score: -1.4 X-Spam_bar: - X-Spam_report: (-1.4 / 5.0 requ) BAYES_00=-1.9, FREEMAIL_FORGED_FROMDOMAIN=0.25, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action 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:264191 Archived-At: This problem seems to manifest with multiple tree-sitter modes. It appears there is an interaction with which-function-mode and tree-sitter which causes the buffer to be considered modified either after a narrow or widen of the buffer. To reproduce this, use a "hello_world.c" as follows: --8<---------------cut here---------------start------------->8--- #include int main (void) { printf("Hello, world!\n"); return 0; } --8<---------------cut here---------------end--------------->8--- Running "emacs -Q" with the corresponding tree-sitter grammar library installed. Move into the main function and narrow-to-defun. In some modes, I've seen this cause the buffer to show as modified, however with this example, it seems to occur after widening. The following sequence of commands can be used to reproduce the issue: C-x C-f ~/hello_world.c M-x c-ts-mode M-x which-function-mode C-x n d C-x n w At this point, the modeline shows that the buffer is modified, and running "M-: (buffer-modified-p)" indicates "t". As previously mentioned, this appears to only happen with tree-sitter modes when which-function-mode is enabled in the buffer. I then repeated the same but also triggered a backtrace on the first change as follows: M-: (add-to-list 'first-change-hook #'backtrace) With that in place, the following is the generated traceback: backtrace() treesit--font-lock-notifier(((1 . 21)) #) treesit-buffer-root-node(c) treesit-node-at(68) treesit--things-around(68 "\\(?:class_specifier\\|enum_specifier\\|function_defi..." c-ts-mode--defun-valid-p) treesit-thing-at-point(("\\(?:class_specifier\\|enum_specifier\\|function_defi..." . c-ts-mode--defun-valid-p) top-level) treesit-defun-at-point() treesit-add-log-current-defun() c-ts-mode--emacs-current-defun-name() add-log-current-defun() which-function() which-func-update-1(#) which-func-update() apply(which-func-update nil) timer-event-handler([t 0 0 500000 t which-func-update nil idle 0 nil])