From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Theodor Thornhill via "Bug reports for GNU Emacs, the Swiss army knife of text editors" Newsgroups: gmane.emacs.bugs Subject: bug#59816: [PATCH]: bug#59816: 29.0.60; c++-ts-mode handles one-line comments badly Date: Mon, 05 Dec 2022 13:44:49 +0100 Message-ID: <878rjmdnpa.fsf@thornhill.no> References: <08257d6b-2426-bbdf-0ed4-edd161801ad6@gmail.com> Reply-To: Theodor Thornhill Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="10569"; mail-complaints-to="usenet@ciao.gmane.io" Cc: eliz@gnu.org, geza.herman@gmail.com To: 59816@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Mon Dec 05 13:45:15 2022 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 1p2AqQ-0002RQ-Mr for geb-bug-gnu-emacs@m.gmane-mx.org; Mon, 05 Dec 2022 13:45:15 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p2AqN-0002gP-3b; Mon, 05 Dec 2022 07:45:11 -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 1p2AqE-0002fy-Hm for bug-gnu-emacs@gnu.org; Mon, 05 Dec 2022 07:45:02 -0500 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 1p2AqE-0005pO-9S for bug-gnu-emacs@gnu.org; Mon, 05 Dec 2022 07:45:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1p2AqD-0000Rd-WB for bug-gnu-emacs@gnu.org; Mon, 05 Dec 2022 07:45:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Theodor Thornhill Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 05 Dec 2022 12:45:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 59816 X-GNU-PR-Package: emacs Original-Received: via spool by 59816-submit@debbugs.gnu.org id=B59816.16702442971686 (code B ref 59816); Mon, 05 Dec 2022 12:45:01 +0000 Original-Received: (at 59816) by debbugs.gnu.org; 5 Dec 2022 12:44:57 +0000 Original-Received: from localhost ([127.0.0.1]:35808 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p2Aq8-0000R8-Nv for submit@debbugs.gnu.org; Mon, 05 Dec 2022 07:44:57 -0500 Original-Received: from out2.migadu.com ([188.165.223.204]:49777) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p2Aq5-0000R2-Vr for 59816@debbugs.gnu.org; Mon, 05 Dec 2022 07:44:55 -0500 X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=thornhill.no; s=key1; t=1670244292; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=fyFaYERT4GRt2sZV2+aXF8lIg1WYg+mLAm89HQJ4fPY=; b=bHl3c3We8jTHiwtpXHrjjidQExQHEg0IgKHXiyNVZcqwC9+zUoxvVmLra+dMd5X6gy2E4K eXmRb78wrGs0yvn5m0f73YYylsxhFreHulKYhtaeExcT9cmn4sYK/KM6vhd54mYwdE70UZ HuCeJ8aETCgnp12goeteZenuwGNTtCwUdtWjqQjiplv1xsVxewjdE91iRKLrPAB/M6KKDM e91SzOIrx9Z0PLpu32POSeLH3XR8RjgpeHcR95A8M2sD93rMJo6mnrPIJFKhchpmBAoMiW 4ZQ7UHTHp5KwL9A5TgFUIxcN0NwnZH4cG7lA1PupvcwKAB3kATUUCeE5Ra4rzg== In-Reply-To: <08257d6b-2426-bbdf-0ed4-edd161801ad6@gmail.com> (Herman's message of "Sun, 4 Dec 2022 13:58:52 +0100") X-Migadu-Flow: FLOW_OUT 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:250017 Archived-At: --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Herman, G=C3=A9za writes: > With the following simple program, emacs reports that "int a;" is in a co= mment: > > --------------------- > void foo() { > =C2=A0=C2=A0 // c > =C2=A0=C2=A0 int a; > } > --------------------- > > Repro steps: > - install tree-sitter-cpp available at > https://github.com/tree-sitter/tree-sitter-cpp > - copy the program above into a buffer > - switch to c++-ts-mode > - at the line "int a;", put the cursor at the 'i' (or anywhere in the lin= e, > exact position doesn't seem to matter) > - M-: (nth 4 (syntax-ppss (point))) > > For me, this incorrectly returns "t". In c++-mode (without tree sitter), = this > correctly returns "nil". > You're right. This is my bad. This patch addresses it. What do you think, Eli? BTW - I see that many modes in general don't refer to their syntax-tables in their define-derived-mode form. Is that intentional? Theo --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=0001-Fix-syntax-table-for-tree-sitter-modes.patch >From b59c4cf3b238291fab57e6de47c60c5bdca3bc4f Mon Sep 17 00:00:00 2001 From: Theodor Thornhill Date: Mon, 5 Dec 2022 13:37:58 +0100 Subject: [PATCH] Fix syntax-table for tree-sitter modes When adapting the 'c-populate-syntax-table' for tree-sitter, I misread the code, and thus some crucial entries were missing. For the relevant modes we use the same table as specified in the non-tree-sitter major mode. * lisp/progmodes/c-ts-mode.el (c-ts-mode--syntax-table): Add new entries. * lisp/progmodes/csharp-mode.el (csharp-ts-mode): Add new entries. * lisp/progmodes/java-ts-mode.el (java-ts-mode--syntax-table): Add new entries. * lisp/progmodes/json-ts-mode.el (json-ts-mode--syntax-table): Add new entries. * lisp/progmodes/typescript-ts-mode.el (typescript-ts-mode--syntax-table): Add new entries. * lisp/textmodes/css-mode.el (css-ts-mode): Add new entries. --- lisp/progmodes/c-ts-mode.el | 2 ++ lisp/progmodes/csharp-mode.el | 1 + lisp/progmodes/java-ts-mode.el | 5 +++++ lisp/progmodes/json-ts-mode.el | 8 +++++--- lisp/progmodes/typescript-ts-mode.el | 9 +++++++-- lisp/textmodes/css-mode.el | 1 + 6 files changed, 21 insertions(+), 5 deletions(-) diff --git a/lisp/progmodes/c-ts-mode.el b/lisp/progmodes/c-ts-mode.el index 1bd093cfa2..0fcc9b9fe4 100644 --- a/lisp/progmodes/c-ts-mode.el +++ b/lisp/progmodes/c-ts-mode.el @@ -79,6 +79,8 @@ c-ts-mode--syntax-table (modify-syntax-entry ?\240 "." table) (modify-syntax-entry ?/ ". 124b" table) (modify-syntax-entry ?* ". 23" table) + (modify-syntax-entry ?\n "> b" table) + (modify-syntax-entry ?\^m "> b" table) table) "Syntax table for `c-ts-mode'.") diff --git a/lisp/progmodes/csharp-mode.el b/lisp/progmodes/csharp-mode.el index 054dabfed0..bb721e248a 100644 --- a/lisp/progmodes/csharp-mode.el +++ b/lisp/progmodes/csharp-mode.el @@ -890,6 +890,7 @@ csharp-mode ;;;###autoload (define-derived-mode csharp-ts-mode prog-mode "C#" "Major mode for editing C# code." + :syntax-table (csharp--make-mode-syntax-table) (unless (treesit-ready-p 'c-sharp) (error "Tree-sitter for C# isn't available")) diff --git a/lisp/progmodes/java-ts-mode.el b/lisp/progmodes/java-ts-mode.el index 2c42505ac9..f947efc5a4 100644 --- a/lisp/progmodes/java-ts-mode.el +++ b/lisp/progmodes/java-ts-mode.el @@ -58,6 +58,11 @@ java-ts-mode--syntax-table (modify-syntax-entry ?| "." table) (modify-syntax-entry ?\' "\"" table) (modify-syntax-entry ?\240 "." table) + (modify-syntax-entry ?/ ". 124b" table) + (modify-syntax-entry ?* ". 23" table) + (modify-syntax-entry ?\n "> b" table) + (modify-syntax-entry ?\^m "> b" table) + (modify-syntax-entry ?@ "'" table) table) "Syntax table for `java-ts-mode'.") diff --git a/lisp/progmodes/json-ts-mode.el b/lisp/progmodes/json-ts-mode.el index 101e873cf6..cd96b139be 100644 --- a/lisp/progmodes/json-ts-mode.el +++ b/lisp/progmodes/json-ts-mode.el @@ -46,9 +46,7 @@ json-ts-mode-indent-offset (defvar json-ts-mode--syntax-table (let ((table (make-syntax-table))) - ;; Taken from the cc-langs version (modify-syntax-entry ?_ "_" table) - (modify-syntax-entry ?$ "_" table) (modify-syntax-entry ?\\ "\\" table) (modify-syntax-entry ?+ "." table) (modify-syntax-entry ?- "." table) @@ -58,8 +56,12 @@ json-ts-mode--syntax-table (modify-syntax-entry ?> "." table) (modify-syntax-entry ?& "." table) (modify-syntax-entry ?| "." table) - (modify-syntax-entry ?` "\"" table) + (modify-syntax-entry ?\' "\"" table) (modify-syntax-entry ?\240 "." table) + (modify-syntax-entry ?/ ". 124b" table) + (modify-syntax-entry ?* ". 23" table) + (modify-syntax-entry ?\n "> b" table) + (modify-syntax-entry ?\^m "> b" table) table) "Syntax table for `json-ts-mode'.") diff --git a/lisp/progmodes/typescript-ts-mode.el b/lisp/progmodes/typescript-ts-mode.el index 48ac1169fe..c7edbb40f8 100644 --- a/lisp/progmodes/typescript-ts-mode.el +++ b/lisp/progmodes/typescript-ts-mode.el @@ -45,7 +45,6 @@ typescript-ts-mode--syntax-table (let ((table (make-syntax-table))) ;; Taken from the cc-langs version (modify-syntax-entry ?_ "_" table) - (modify-syntax-entry ?$ "_" table) (modify-syntax-entry ?\\ "\\" table) (modify-syntax-entry ?+ "." table) (modify-syntax-entry ?- "." table) @@ -55,8 +54,14 @@ typescript-ts-mode--syntax-table (modify-syntax-entry ?> "." table) (modify-syntax-entry ?& "." table) (modify-syntax-entry ?| "." table) - (modify-syntax-entry ?` "\"" table) + (modify-syntax-entry ?\' "\"" table) (modify-syntax-entry ?\240 "." table) + (modify-syntax-entry ?/ ". 124b" table) + (modify-syntax-entry ?* ". 23" table) + (modify-syntax-entry ?\n "> b" table) + (modify-syntax-entry ?\^m "> b" table) + (modify-syntax-entry ?$ "_" table) + (modify-syntax-entry ?` "\"" table) table) "Syntax table for `typescript-ts-mode'.") diff --git a/lisp/textmodes/css-mode.el b/lisp/textmodes/css-mode.el index b82886e397..b3654eaa7f 100644 --- a/lisp/textmodes/css-mode.el +++ b/lisp/textmodes/css-mode.el @@ -1822,6 +1822,7 @@ css-ts-mode can also be used to fill comments. \\{css-mode-map}" + :syntax-table css-mode-syntax-table (when (treesit-ready-p 'css) ;; Borrowed from `css-mode'. (add-hook 'completion-at-point-functions -- 2.34.1 --=-=-=--