GNU bug report logs - #71776
31.0.50; [PATCH] js-ts-mode: conforming use of font lock faces in jsdoc.

Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.

Package: emacs; Severity: wishlist; Reported by: Vincenzo Pupillo <v.pupillo@HIDDEN>; Keywords: patch; dated Tue, 25 Jun 2024 14:17:02 UTC; Maintainer for emacs is bug-gnu-emacs@HIDDEN.
Severity set to 'wishlist' from 'normal' Request was from Stefan Kangas <stefankangas@HIDDEN> to control <at> debbugs.gnu.org. Full text available.

Message received at 71776 <at> debbugs.gnu.org:


Received: (at 71776) by debbugs.gnu.org; 28 Jun 2024 05:51:44 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jun 28 01:51:44 2024
Received: from localhost ([127.0.0.1]:51374 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1sN4WO-0000Qg-7r
	for submit <at> debbugs.gnu.org; Fri, 28 Jun 2024 01:51:44 -0400
Received: from fhigh6-smtp.messagingengine.com ([103.168.172.157]:51851)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <dmitry@HIDDEN>) id 1sN4WM-0000QN-9j
 for 71776 <at> debbugs.gnu.org; Fri, 28 Jun 2024 01:51:42 -0400
Received: from compute1.internal (compute1.nyi.internal [10.202.2.41])
 by mailfhigh.nyi.internal (Postfix) with ESMTP id 1CA43114023F;
 Thu, 27 Jun 2024 20:50:14 -0400 (EDT)
Received: from mailfrontend2 ([10.202.2.163])
 by compute1.internal (MEProxy); Thu, 27 Jun 2024 20:50:14 -0400
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=fm1; t=1719535814;
 x=1719622214; bh=w8SAd9MI0gS/XVeTw1caZfOEwdJu5VZUDKuz1ZNg5/0=; b=
 hQWVzu71uHKRWzap883EItDnC/BgVAMFvVS4u4w59DLL1y3bjIaLUC7PStfcwrWN
 /DEwiw6vZyUYkbo5YAQy96xXTA6PUt8pAao0CPAqApb8oWPcpzvi2nnr7T6cC6q5
 KAvY/zazfzsNUsP+MK+2jshdlxy2HGCOASVhlHZ1FIOlhD8ZzQGkk5kVrFMYkPOZ
 z5WhUKGfUpg7LamER98q8XNaGCmNjAxBGabafcbhjhEMLk5hIgjk4kA2STAaM6Vp
 pNVOlrOUOH8as+9RoFdFqg7ufmz2TpMwNtKN9FgnZPNpCIYuFZRZRD6nGMNuXwsK
 3QpwRqhIAR2GVUp/2IY9YA==
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=fm2; t=1719535814; x=
 1719622214; bh=w8SAd9MI0gS/XVeTw1caZfOEwdJu5VZUDKuz1ZNg5/0=; b=n
 g37FlOyEP/4pbeKSCSYjZkmmJJdIaCw+/531VypG3FPaRmE06T5hGT0xnSMKgz0G
 fGr5gI5MvhNksC6GiTb1uSiMEApwRSjhdRqz8/1b1CnF+Q9z/JixVaP08d8aiEGG
 R5iybU5+1W5CAx/KAkT6529tF9q+vCgX7hKH3fPbZlfQAeBkco9ZB5Wghfgw3buN
 g6/WAapcWWh1yvMErEkxJCrxiyX7C35VR5WG3t2TiT858hFWHfxyuxlGrFjb0qhs
 YkY5L4vaunLrMrkVFr4/5rgwQiMDZlZYbfbrlAaaKoHIKQy1n0cRNuGgTwwAXA1I
 dftgpjkk1RRZ42b8Mm8ag==
X-ME-Sender: <xms:xQh-ZgoE0ZH0kWYDMrWVjPEFQl4rKfVdhRWp-ZBe91BDLI7cMbRZBQ>
 <xme:xQh-ZmrQzYzWju7NIW3Y4cny-SDuAtcF2qBfWVlH78-ONwVzA3xzEEmw6mlCuIxFC
 zFBM4lNRCCuZAXESwY>
X-ME-Received: <xmr:xQh-ZlNR-eFnsw6-jrbmNZm4KvfAfdLowAHocPj7R2DtsrOGLXFfvobcJhYhxkm1GKr0>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrtdehgdegtdcutefuodetggdotefrodftvf
 curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu
 uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc
 fjughrpefkffggfgfuvfevfhfhjggtgfesthejredttddvjeenucfhrhhomhepffhmihht
 rhihucfiuhhtohhvuceoughmihhtrhihsehguhhtohhvrdguvghvqeenucggtffrrghtth
 gvrhhnpeetudeljeegheetgfehgeejkeeuhedvveeikeeufedtvddtveefhfdvveegudej
 heenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpegumh
 hithhrhiesghhuthhovhdruggvvh
X-ME-Proxy: <xmx:xQh-Zn6en22cl5GMc1oli-3lY1AbpIZsGEFAjOa77ceq1-LDxqHtJg>
 <xmx:xQh-Zv5zx7Fi9kjhgmVgG2M9-AUw1ZOAvvfMc-XQshpBjpVG1Z7Tbw>
 <xmx:xQh-ZngzMZePriuZlWRO5cZV1KaHWJ_--e9bt15MAxf11KQN5UIvIQ>
 <xmx:xQh-Zp5LbolzrJ8J22ykf7ukgDINIOLcKhJbgE22AU1-lUCpl8QZUQ>
 <xmx:xgh-Zi1w9pxLq_nSgvJ3gHTp8S9iRP57uOcQaYiiNPCWW9TGblbLrnzg>
Feedback-ID: i0e71465a:Fastmail
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu,
 27 Jun 2024 20:50:12 -0400 (EDT)
Message-ID: <beac41b3-42e6-47e8-8540-98c659cc075a@HIDDEN>
Date: Fri, 28 Jun 2024 03:50:10 +0300
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#71776: 31.0.50; [PATCH] js-ts-mode: conforming use of font
 lock faces in jsdoc.
To: Eli Zaretskii <eliz@HIDDEN>, Vincenzo Pupillo <v.pupillo@HIDDEN>
References: <2796980.fDdHjke4Dd@HIDDEN> <86bk3m67kn.fsf@HIDDEN>
Content-Language: en-US
From: Dmitry Gutov <dmitry@HIDDEN>
In-Reply-To: <86bk3m67kn.fsf@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 71776
Cc: Damien Cassou <damien@HIDDEN>, 71776 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

Hi!

On 27/06/2024 12:47, Eli Zaretskii wrote:
>> From: Vincenzo Pupillo<v.pupillo@HIDDEN>
>> Date: Tue, 25 Jun 2024 16:16:21 +0200
>>
>> The use of font lock faces by jsdoc in js-ts-mode is different from that done in
>> other major-modes such as java-mode or c++-mode. This patch makes them more similar.
> Thanks.
> 
> Dmitry, any comments?  On which branch should we install this, if you
> agree with the changes?

It looks like an improvement (thanks!), and as a change to the feature 
added just recently, should go to emacs-30 - the second revision of the 
patch, naturally.

Also Cc'ing Damien who did the original work.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#71776; Package emacs. Full text available.

Message received at 71776 <at> debbugs.gnu.org:


Received: (at 71776) by debbugs.gnu.org; 27 Jun 2024 20:31:56 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jun 27 16:31:56 2024
Received: from localhost ([127.0.0.1]:43471 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1sMvme-0003oX-4U
	for submit <at> debbugs.gnu.org; Thu, 27 Jun 2024 16:31:56 -0400
Received: from mail-wr1-f45.google.com ([209.85.221.45]:56333)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <v.pupillo@HIDDEN>) id 1sMvmb-0003oL-V3
 for 71776 <at> debbugs.gnu.org; Thu, 27 Jun 2024 16:31:54 -0400
Received: by mail-wr1-f45.google.com with SMTP id
 ffacd0b85a97d-364a3d5d901so5526088f8f.0
 for <71776 <at> debbugs.gnu.org>; Thu, 27 Jun 2024 13:31:50 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1719520245; x=1720125045; darn=debbugs.gnu.org;
 h=content-transfer-encoding:mime-version:references:in-reply-to
 :message-id:date:subject:cc:to:from:from:to:cc:subject:date
 :message-id:reply-to;
 bh=5VhPns0i4QnJsepnN+Zhnj1adpoFpFgtfqL364fjyE0=;
 b=eVtNEcEGWJNe7OxWIdVBNgk4VwcbTTnnxUKE5dLMPgPKXIn/AZzMjCPBwlwM94xqWq
 03DZMBsV8CSgGBCAn2lK5Zw7C8TH/dtCwMDZpRtTKlP8B6AxC1D+owgUtgpPQm7oMFKU
 qjAr4hcVC568xHR0ZqNBx6lIAGkJFeCkh+ezRF101xQsLju6PGJ2UqfEZ6twKeIBUWkk
 uE1ddo81msiSmDaH/YXtE1DacZkwep9I4WHuyNez/2/JQGecq/FN/RE0L8riB0+sEmZ6
 eEKTG5TO87knaWcttJAOuKR6Ogdgi4pYdyp3NVkf6s10FcZ3lFCzH94Bkg0Ga3DaxD+J
 y8zg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1719520245; x=1720125045;
 h=content-transfer-encoding:mime-version:references:in-reply-to
 :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
 :subject:date:message-id:reply-to;
 bh=5VhPns0i4QnJsepnN+Zhnj1adpoFpFgtfqL364fjyE0=;
 b=ukS3u/0g4XpFUjC4v+S9PDVC6MLv3KUwWcoJ4KVCO02P4kahjFOQtiji+29qmyKAoR
 cURTabk5uz0/6VgNnuJNnKAaR6tAkf7xP+X5ROHcClwH9qsyCfFUxFF/qOlfo2vYPpZJ
 p0ONZZZ4KnRIsWdfB9oBqoiueT/rOb3TuRBQ1dx4wL1cDog4SMig6y5htUt950wclLq5
 wE3j7aJa4ade6iNXtQKZXixF60HiH/bFjB2eCN4sxWr9I1RbQvictjffzU5JaXkajAUF
 TGKluqScY/0Em8ZnSQCBC0QcH+nqBCXABqwJy7QagQ+QZE3ESAFsDIB+k+6Yqy37QkCn
 PODQ==
X-Gm-Message-State: AOJu0YyY1DZnmyYakD/wVHsf2KusxBmCxwBxwHHWrC2YEVjWsAPu3dOb
 tdQ1c0eucFYGcVakbe5t43lT72WwFwPTOG6/8CHRDk2ji8uzF/1dwSCODrkGzYc=
X-Google-Smtp-Source: AGHT+IE4ljaDEaIJJfCxrH7xDHI2YQeS7+vnU1PrGo3cUp1R/857llHokqZQMlwnSxoK8dVpcp2haQ==
X-Received: by 2002:a2e:3218:0:b0:2ec:55f3:40d with SMTP id
 38308e7fff4ca-2ec5b346102mr86472911fa.30.1719516034791; 
 Thu, 27 Jun 2024 12:20:34 -0700 (PDT)
Received: from fedora.localnet (2-230-139-124.ip202.fastwebnet.it.
 [2.230.139.124]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-58612c835b9sm64786a12.3.2024.06.27.12.20.33
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 27 Jun 2024 12:20:33 -0700 (PDT)
From: Vincenzo Pupillo <v.pupillo@HIDDEN>
To: Dmitry Gutov <dmitry@HIDDEN>, Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#71776: 31.0.50;
 [PATCH] js-ts-mode: conforming use of font lock faces in jsdoc.
Date: Thu, 27 Jun 2024 21:20:32 +0200
Message-ID: <2641653.vYhyI6sBWr@fedora>
In-Reply-To: <26457965.1r3eYUQgxm@fedora>
References: <2796980.fDdHjke4Dd@HIDDEN> <86bk3m67kn.fsf@HIDDEN>
 <26457965.1r3eYUQgxm@fedora>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="nextPart5106780.Qq0lBPeGtt"
Content-Transfer-Encoding: 7Bit
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 71776
Cc: 71776 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

This is a multi-part message in MIME format.

--nextPart5106780.Qq0lBPeGtt
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset="utf-8"

In data gioved=C3=AC 27 giugno 2024 12:33:15 CEST, Vincenzo Pupillo ha scri=
tto:
> In data gioved=C3=AC 27 giugno 2024 11:47:20 CEST, Eli Zaretskii ha scrit=
to:
> > > From: Vincenzo Pupillo <v.pupillo@HIDDEN>
> > > Date: Tue, 25 Jun 2024 16:16:21 +0200
> > >=20
> > > The use of font lock faces by jsdoc in js-ts-mode is different from t=
hat
> > > done in other major-modes such as java-mode or c++-mode. This patch
> > > makes
> > > them more similar.
> >=20
> > Thanks.
> >=20
> > Dmitry, any comments?  On which branch should we install this, if you
> > agree with the changes?
>=20
> Please wait. I noticed this morning that there are problems with multiple
> comment blocks in the same file.
>=20
> Thanks.
> V.

Hi, this patch fix the treesit range rule for the jsdoc parser.=20
As you can see from the attached screenshots, with the previous rule the=20
parser throws an error (look at the modeline). With the new one, it doesn't=
=20
happen anymore, and now the font lock is correct (I applied both patches I=
=20
sent for this bug).

Thanks.
Vincenzo
--nextPart5106780.Qq0lBPeGtt
Content-Disposition: attachment;
 filename="0001-Fix-treesit-range-rule-for-jsdoc.patch"
Content-Transfer-Encoding: 7Bit
Content-Type: text/x-patch; charset="x-UTF_8J";
 name="0001-Fix-treesit-range-rule-for-jsdoc.patch"

From 0002186ff06659407ec32e76b18b4cf45e6f35f9 Mon Sep 17 00:00:00 2001
From: Vincenzo Pupillo <v.pupillo@HIDDEN>
Date: Thu, 27 Jun 2024 16:13:58 +0200
Subject: [PATCH] Fix treesit range rule for jsdoc

The parser for jsdoc is local, so it is necessary for the range
rule to take this into account.

* lisp/progmodes/js.el (js-ts-mode): Add ':local' keyword.

* lisp/progmodes/js.el (js-ts-language-at-point): Removed
'js-ts-language-at-point'.
---
 lisp/progmodes/js.el | 33 +++++++++++----------------------
 1 file changed, 11 insertions(+), 22 deletions(-)

diff --git a/lisp/progmodes/js.el b/lisp/progmodes/js.el
index 529b31669ed..31e8f2924ac 100644
--- a/lisp/progmodes/js.el
+++ b/lisp/progmodes/js.el
@@ -3636,10 +3636,16 @@ js--treesit-font-lock-settings
    :override t
    '((escape_sequence) @font-lock-escape-face)
 
+   ;; "document" should be first, to avoid overlap.
+   :language 'jsdoc
+   :override t
+   :feature 'document
+   '((document) @font-lock-doc-face)
+
    :language 'jsdoc
    :override t
    :feature 'keyword
-   '((tag_name) @font-lock-keyword-face)
+   '((tag_name) @font-lock-constant-face)
 
    :language 'jsdoc
    :override t
@@ -3649,17 +3655,12 @@ js--treesit-font-lock-settings
    :language 'jsdoc
    :override t
    :feature 'property
-   '((type) @font-lock-variable-use-face)
+   '((type) @font-lock-type-face)
 
    :language 'jsdoc
    :override t
    :feature 'definition
-   '((identifier) @font-lock-variable-name-face)
-
-   :language 'jsdoc
-   :override t
-   :feature 'comment
-   '((description) @font-lock-comment-face))
+   '((identifier) @font-lock-variable-name-face))
   "Tree-sitter font-lock settings.")
 
 (defun js--fontify-template-string (node override start end &rest _)
@@ -3933,7 +3934,7 @@ js-ts-mode
     ;; Fontification.
     (setq-local treesit-font-lock-settings js--treesit-font-lock-settings)
     (setq-local treesit-font-lock-feature-list
-                '(( comment definition)
+                '(( comment document definition)
                   ( keyword string)
                   ( assignment constant escape-sequence jsx number
                     pattern string-interpolation)
@@ -3944,10 +3945,9 @@ js-ts-mode
                   (treesit-range-rules
                    :embed 'jsdoc
                    :host 'javascript
+                   :local t
                    `(((comment) @capture (:match ,js--treesit-jsdoc-beginning-regexp @capture))))))
 
-    (setq-local treesit-language-at-point-function #'js-ts-language-at-point)
-
     ;; Imenu
     (setq-local treesit-simple-imenu-settings
                 `(("Function" "\\`function_declaration\\'" nil nil)
@@ -3989,17 +3989,6 @@ js-ts--syntax-propertize
         (put-text-property ns (1+ ns) 'syntax-table syntax)
         (put-text-property (1- ne) ne 'syntax-table syntax)))))
 
-(defun js-ts-language-at-point (point)
-  "Return the language at POINT."
-  (let ((node (treesit-node-at point 'javascript)))
-    (if (and (treesit-ready-p 'jsdoc)
-             (equal (treesit-node-type node) "comment")
-             (string-match-p
-              js--treesit-jsdoc-beginning-regexp
-              (treesit-node-text node)))
-        'jsdoc
-      'javascript)))
-
 ;;;###autoload
 (define-derived-mode js-json-mode prog-mode "JSON"
   :syntax-table js-mode-syntax-table
-- 
2.45.2


--nextPart5106780.Qq0lBPeGtt
Content-Disposition: attachment; filename="js-jsdoc-master.png"
Content-Transfer-Encoding: base64
Content-Type: image/png; name="js-jsdoc-master.png"

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


--nextPart5106780.Qq0lBPeGtt
Content-Disposition: attachment; filename="js_jsdoc_with_patch.png"
Content-Transfer-Encoding: base64
Content-Type: image/png; name="js_jsdoc_with_patch.png"

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


--nextPart5106780.Qq0lBPeGtt--







Information forwarded to bug-gnu-emacs@HIDDEN:
bug#71776; Package emacs. Full text available.

Message received at 71776 <at> debbugs.gnu.org:


Received: (at 71776) by debbugs.gnu.org; 27 Jun 2024 10:34:26 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jun 27 06:34:26 2024
Received: from localhost ([127.0.0.1]:41101 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1sMmSQ-00027m-Il
	for submit <at> debbugs.gnu.org; Thu, 27 Jun 2024 06:34:26 -0400
Received: from mail-ej1-f53.google.com ([209.85.218.53]:49456)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <v.pupillo@HIDDEN>) id 1sMmSP-00027a-0m
 for 71776 <at> debbugs.gnu.org; Thu, 27 Jun 2024 06:34:25 -0400
Received: by mail-ej1-f53.google.com with SMTP id
 a640c23a62f3a-a727d9dd367so331741966b.3
 for <71776 <at> debbugs.gnu.org>; Thu, 27 Jun 2024 03:34:22 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1719484396; x=1720089196; darn=debbugs.gnu.org;
 h=content-transfer-encoding:mime-version:references:in-reply-to
 :message-id:date:subject:cc:to:from:from:to:cc:subject:date
 :message-id:reply-to;
 bh=WOcdVIBNgrGrMHZC0tdEKjExZeSYJgSeHwgR0UvK+HQ=;
 b=TmCSFaUz9W5dG5pEp6OZ5BHiApXO29fsrxPQm9Nem/JLLQnlrfD8er3vb7g6IP1ecc
 RDDSPRn0DqOiml6UlaF9RBsRzCLXL5XLh+e9bAlHyyP2vVUNjkbtjROZ0m1TdOBB4pb0
 JAFFyUAJa+misxcf51xp+pHuMos6fSdq4Q5pcHmf/WidtLnsme6N1jXVO2HcLRgiOwNO
 hcBC8DhUODrXinu2XhaWaGlkxUPr1q27STbO3vcrBPFUxUfxNvtYZZJyGcZZr2EfoCak
 xYcRzwq7XZqXmYhdHAmt9sh/etWktvDk7SB+AdNYgrHUD0b5shLtQa+P4e+FYLOgy2l+
 B5QQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1719484396; x=1720089196;
 h=content-transfer-encoding:mime-version:references:in-reply-to
 :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
 :subject:date:message-id:reply-to;
 bh=WOcdVIBNgrGrMHZC0tdEKjExZeSYJgSeHwgR0UvK+HQ=;
 b=vprjOm00ooUM9ubmZ+6Wctljh9OpACpXF548CEQmbKSJnVNtutT27bM6JgKL5MEm11
 cEAyevliIbOPGCYlgDk2dX8NiEqAlaTkukgDDU4zSAiCLHEHg8hc3JZgSKCzn0a/0BSa
 vnIqwD4+OLj9V18u6B/DEkLR6EgBmaNSIkoFiId7rbNBWCWJSPw/EXKr4im+/R+7QYOr
 7K6yMeC6tLbSidAsxXNSu6ai7SowfCHmRv+wbsA1voqiJCbtYv0BdL7qCM3/TEQZbGcV
 16kdX/Q3Ma7Ktqt6hCmw5T4WZdYxngFvKDrbnScLu0LEEYErpQ0uQrMC6EuzWpVWOOc/
 YMlw==
X-Gm-Message-State: AOJu0Ywm7nLaA0e2DYJfx1QIt/c27FKxwAFz+pS0xmqLwSHE6Q5z9o14
 3HSK12VYlXxK3xWeyzlIZbXy0aiYBL4oU7wJYGOB0ScdZeCveEGs
X-Google-Smtp-Source: AGHT+IGmFKaFl59c9I2wBtH2yC7UnVazOoXfcGo9RiIIgqo4PI+iP9JY55RymxhnXHnx+2XOAs8Iow==
X-Received: by 2002:a17:906:278d:b0:a6e:fad9:6dbb with SMTP id
 a640c23a62f3a-a7242b95324mr996374766b.0.1719484396362; 
 Thu, 27 Jun 2024 03:33:16 -0700 (PDT)
Received: from fedora.localnet (2-230-139-124.ip202.fastwebnet.it.
 [2.230.139.124]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a729d7ca3a9sm46209666b.223.2024.06.27.03.33.15
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 27 Jun 2024 03:33:16 -0700 (PDT)
From: Vincenzo Pupillo <v.pupillo@HIDDEN>
To: Dmitry Gutov <dmitry@HIDDEN>, Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#71776: 31.0.50;
 [PATCH] js-ts-mode: conforming use of font lock faces in jsdoc.
Date: Thu, 27 Jun 2024 12:33:15 +0200
Message-ID: <26457965.1r3eYUQgxm@fedora>
In-Reply-To: <86bk3m67kn.fsf@HIDDEN>
References: <2796980.fDdHjke4Dd@HIDDEN> <86bk3m67kn.fsf@HIDDEN>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset="utf-8"
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 71776
Cc: 71776 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

In data gioved=C3=AC 27 giugno 2024 11:47:20 CEST, Eli Zaretskii ha scritto:
> > From: Vincenzo Pupillo <v.pupillo@HIDDEN>
> > Date: Tue, 25 Jun 2024 16:16:21 +0200
> >=20
> > The use of font lock faces by jsdoc in js-ts-mode is different from that
> > done in other major-modes such as java-mode or c++-mode. This patch mak=
es
> > them more similar.
> Thanks.
>=20
> Dmitry, any comments?  On which branch should we install this, if you
> agree with the changes?
Please wait. I noticed this morning that there are problems with multiple=20
comment blocks in the same file.=20

Thanks.
V.






Information forwarded to bug-gnu-emacs@HIDDEN:
bug#71776; Package emacs. Full text available.

Message received at 71776 <at> debbugs.gnu.org:


Received: (at 71776) by debbugs.gnu.org; 27 Jun 2024 09:47:33 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jun 27 05:47:33 2024
Received: from localhost ([127.0.0.1]:41046 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1sMlj3-0000xE-Cq
	for submit <at> debbugs.gnu.org; Thu, 27 Jun 2024 05:47:33 -0400
Received: from eggs.gnu.org ([209.51.188.92]:60322)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1sMlj1-0000wz-Kp
 for 71776 <at> debbugs.gnu.org; Thu, 27 Jun 2024 05:47:31 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1sMlit-0004F0-Eg; Thu, 27 Jun 2024 05:47:23 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=WQQuVGPiiZQGRTZgD7mckgQbBfsJ/doj4+GRDUkteUc=; b=bXrhaCWrkAYf
 PTo4wnmSPE6rr4016aQ0XPtIomgpDaifRclN5+rSBdgORQqEOCsUBX/UVwfCiJVGIONdwVwf1tf9/
 YAId/bwpFNBHRunuNZuHWZhKWtf1QvIdroAynYKdx41a3N2et2iSWhlyMM14iJmvRGQirOS7+F0CI
 77lo9NQRq+AbkvdVCModbgoMpPbSOL1pIFbGroFuOAa4bB9Q7xuGDv3+454dUF+k5njEVbWjPW2H+
 ZPm0eLw9kqDNPuYuYgDySEZVEYZldtZS4jsHopqReSH8mZyiGJQpcah3NIY/4vOF+79aVy01D4BoE
 PclU/HmeD5/iYScsnL/whA==;
Date: Thu, 27 Jun 2024 12:47:20 +0300
Message-Id: <86bk3m67kn.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Vincenzo Pupillo <v.pupillo@HIDDEN>, Dmitry Gutov <dmitry@HIDDEN>
In-Reply-To: <2796980.fDdHjke4Dd@HIDDEN> (message from Vincenzo
 Pupillo on Tue, 25 Jun 2024 16:16:21 +0200)
Subject: Re: bug#71776: 31.0.50;
 [PATCH] js-ts-mode: conforming use of font lock faces in jsdoc.
References: <2796980.fDdHjke4Dd@HIDDEN>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 71776
Cc: 71776 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Vincenzo Pupillo <v.pupillo@HIDDEN>
> Date: Tue, 25 Jun 2024 16:16:21 +0200
> 
> The use of font lock faces by jsdoc in js-ts-mode is different from that done in 
> other major-modes such as java-mode or c++-mode. This patch makes them more similar.

Thanks.

Dmitry, any comments?  On which branch should we install this, if you
agree with the changes?




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#71776; Package emacs. Full text available.

Message received at submit <at> debbugs.gnu.org:


Received: (at submit) by debbugs.gnu.org; 25 Jun 2024 14:16:35 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Jun 25 10:16:35 2024
Received: from localhost ([127.0.0.1]:37515 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1sM6yJ-0005T9-8b
	for submit <at> debbugs.gnu.org; Tue, 25 Jun 2024 10:16:35 -0400
Received: from lists.gnu.org ([209.51.188.17]:37240)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <v.pupillo@HIDDEN>) id 1sM6yD-0005Sw-TO
 for submit <at> debbugs.gnu.org; Tue, 25 Jun 2024 10:16:33 -0400
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 <v.pupillo@HIDDEN>)
 id 1sM6yB-0001E1-V4
 for bug-gnu-emacs@HIDDEN; Tue, 25 Jun 2024 10:16:27 -0400
Received: from mail-ej1-x62d.google.com ([2a00:1450:4864:20::62d])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.90_1) (envelope-from <v.pupillo@HIDDEN>)
 id 1sM6yA-0003ih-6i
 for bug-gnu-emacs@HIDDEN; Tue, 25 Jun 2024 10:16:27 -0400
Received: by mail-ej1-x62d.google.com with SMTP id
 a640c23a62f3a-a72477a6096so324784766b.1
 for <bug-gnu-emacs@HIDDEN>; Tue, 25 Jun 2024 07:16:25 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1719324983; x=1719929783; darn=gnu.org;
 h=content-transfer-encoding:mime-version:message-id:date:subject:to
 :from:from:to:cc:subject:date:message-id:reply-to;
 bh=TWDenCdXRZfHQkPOJqI8pikbWEaAhIFv6OxBU9nRBNk=;
 b=gFQKoUREOHZRaSVaBHJ9zPBPk+XyBlxgn/ePcR4CLEmLIUEQgca4i0Ys95vTgdLdM6
 wRQWl/YnRobDOuivTKcgJ8v0pSavPM3whyEhLKNwTK49uBz5u05LvtkVocyVxjsP3hPz
 Cxf4G5Ei0erwheTp6wPAxX3lCpM5LUSJlTrHRq8FObtlhzmk9E7fW3iLDlCKJSg/0Vcx
 ZRFGEZzorXm8AotFb8YMArqR7x7z0ZwMWsc89aaFYfLfWHsT3x8ookz+qmuY2Uv4Ed1H
 eZ7+E6mrAzFR+oLhqp0ngeBr/tu8x4noSVZ+jEYBFKc5FH/iM2BijG3q6TC9VJVDpVH/
 sECw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1719324983; x=1719929783;
 h=content-transfer-encoding:mime-version:message-id:date:subject:to
 :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
 bh=TWDenCdXRZfHQkPOJqI8pikbWEaAhIFv6OxBU9nRBNk=;
 b=VtVvio8g0DbJDPgirkseOgrtgnxV+J6o1DC1DMmzAlliGXMovGYh4E6B23cHWpsF8D
 6pRNLiLEmg8OqgW3gG3OBAa657pMdUia+Du2TyVyVIPjj+T4UMFSrv8rMxkibxwYrAR6
 HxKsgO8z8aHy1iSqfv7Od3N0fjMakVawP/HzGOXlyoZO7TxLjVvJMnVQkOdp8gY2CJVe
 2pK1gM/6t1RXmgUGFKOX7Tlbg+34/EfU+3gOOHRHPn0L2twD5mXDdoQ4j3FzOJYNHI3Q
 hVKjwqRRJJapZoNjj43+ly4VT1vZIyevgoMCsizziv8CimkStCozeueEWMPwt/jB2ebk
 AihA==
X-Gm-Message-State: AOJu0YyNoLcHEc8/OA3zAZ0f9dYqy+yNUDCeIKpBdJ2ZzWXK6tXd5QSO
 z3HogDcgbrji1eu1mcMmmPSJYmBNn/VAZFLLLW+YJwzyz/4l5ChPeV66Vw==
X-Google-Smtp-Source: AGHT+IFZYdBfpXar3aje8ItjWDdbKTHwYNeJ0MDeeIs0j7Hj7yH9u3wLuJp07l4qnPwHkDGHl2GxAQ==
X-Received: by 2002:a17:906:37cf:b0:a70:3a15:110d with SMTP id
 a640c23a62f3a-a7245c642damr427181266b.69.1719324983083; 
 Tue, 25 Jun 2024 07:16:23 -0700 (PDT)
Received: from 3-191.divsi.unimi.it (3-191.divsi.unimi.it. [159.149.3.191])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a6fe4eeb106sm394521166b.167.2024.06.25.07.16.22
 for <bug-gnu-emacs@HIDDEN>
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 25 Jun 2024 07:16:22 -0700 (PDT)
From: Vincenzo Pupillo <v.pupillo@HIDDEN>
To: bug-gnu-emacs@HIDDEN
Subject: 31.0.50;
 [PATCH] js-ts-mode: conforming use of font lock faces in jsdoc.
Date: Tue, 25 Jun 2024 16:16:21 +0200
Message-ID: <2796980.fDdHjke4Dd@HIDDEN>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="nextPart2788866.vYhyI6sBWr"
Content-Transfer-Encoding: 7Bit
Received-SPF: pass client-ip=2a00:1450:4864:20::62d;
 envelope-from=v.pupillo@HIDDEN; helo=mail-ej1-x62d.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,
 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-Spam-Score: -1.3 (-)
X-Debbugs-Envelope-To: submit
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -2.3 (--)

This is a multi-part message in MIME format.

--nextPart2788866.vYhyI6sBWr
Content-Transfer-Encoding: 7Bit
Content-Type: text/plain; charset="utf-8"

Hi,
The use of font lock faces by jsdoc in js-ts-mode is different from that done in 
other major-modes such as java-mode or c++-mode. This patch makes them more similar.

Thanks.
Vincenzo
--nextPart2788866.vYhyI6sBWr
Content-Disposition: attachment;
 filename="0001-Conforming-use-of-font-lock-faces-in-jsdoc.patch"
Content-Transfer-Encoding: 7Bit
Content-Type: text/x-patch; charset="x-UTF_8J";
 name="0001-Conforming-use-of-font-lock-faces-in-jsdoc.patch"

From a81051ab74bd8bb29843206beaf481cf8270b4aa Mon Sep 17 00:00:00 2001
From: Vincenzo Pupillo <v.pupillo@HIDDEN>
Date: Tue, 25 Jun 2024 15:54:17 +0200
Subject: [PATCH] Conforming use of font lock faces in jsdoc

* lisp/progmodes/js.el (js--treesit-font-lock-settings):
Use 'font-lock-doc-face' for 'document' node type,
font-lock-constant-face for 'tag_name' and 'font-lock-type' face
for 'type'.

* lisp/progmodes/js.el (js-ts-mode): Add 'document' to
'treesit-font-lock-feature-list'.
---
 lisp/progmodes/js.el | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

diff --git a/lisp/progmodes/js.el b/lisp/progmodes/js.el
index 529b31669ed..e9962c36a46 100644
--- a/lisp/progmodes/js.el
+++ b/lisp/progmodes/js.el
@@ -3636,10 +3636,16 @@ js--treesit-font-lock-settings
    :override t
    '((escape_sequence) @font-lock-escape-face)
 
+   ;; "document" should be first, to avoid overlap.
+   :language 'jsdoc
+   :override t
+   :feature 'document
+   '((document) @font-lock-doc-face)
+
    :language 'jsdoc
    :override t
    :feature 'keyword
-   '((tag_name) @font-lock-keyword-face)
+   '((tag_name) @font-lock-constant-face)
 
    :language 'jsdoc
    :override t
@@ -3649,17 +3655,12 @@ js--treesit-font-lock-settings
    :language 'jsdoc
    :override t
    :feature 'property
-   '((type) @font-lock-variable-use-face)
+   '((type) @font-lock-type-face)
 
    :language 'jsdoc
    :override t
    :feature 'definition
-   '((identifier) @font-lock-variable-name-face)
-
-   :language 'jsdoc
-   :override t
-   :feature 'comment
-   '((description) @font-lock-comment-face))
+   '((identifier) @font-lock-variable-name-face))
   "Tree-sitter font-lock settings.")
 
 (defun js--fontify-template-string (node override start end &rest _)
@@ -3933,7 +3934,7 @@ js-ts-mode
     ;; Fontification.
     (setq-local treesit-font-lock-settings js--treesit-font-lock-settings)
     (setq-local treesit-font-lock-feature-list
-                '(( comment definition)
+                '(( comment document definition)
                   ( keyword string)
                   ( assignment constant escape-sequence jsx number
                     pattern string-interpolation)
-- 
2.45.2


--nextPart2788866.vYhyI6sBWr--







Acknowledgement sent to Vincenzo Pupillo <v.pupillo@HIDDEN>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs@HIDDEN. Full text available.
Report forwarded to bug-gnu-emacs@HIDDEN:
bug#71776; Package emacs. Full text available.
Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.
Last modified: Sun, 30 Jun 2024 05:45:02 UTC

GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997 nCipher Corporation Ltd, 1994-97 Ian Jackson.