From unknown Thu Jun 19 14:04:55 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#61913 <61913@debbugs.gnu.org> To: bug#61913 <61913@debbugs.gnu.org> Subject: Status: java-ts-mode query error for string highlight, due to recent commit in tree-sitter-java. Reply-To: bug#61913 <61913@debbugs.gnu.org> Date: Thu, 19 Jun 2025 21:04:55 +0000 retitle 61913 java-ts-mode query error for string highlight, due to recent = commit in tree-sitter-java. reassign 61913 emacs submitter 61913 Vincenzo Pupillo severity 61913 normal thanks From debbugs-submit-bounces@debbugs.gnu.org Thu Mar 02 07:21:25 2023 Received: (at submit) by debbugs.gnu.org; 2 Mar 2023 12:21:25 +0000 Received: from localhost ([127.0.0.1]:56032 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pXhw4-0003uh-Ic for submit@debbugs.gnu.org; Thu, 02 Mar 2023 07:21:24 -0500 Received: from lists.gnu.org ([209.51.188.17]:53598) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pXhw2-0003uZ-P0 for submit@debbugs.gnu.org; Thu, 02 Mar 2023 07:21:23 -0500 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 1pXhw0-00015f-MO for bug-gnu-emacs@gnu.org; Thu, 02 Mar 2023 07:21:22 -0500 Received: from mail-ed1-x52c.google.com ([2a00:1450:4864:20::52c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pXhvv-0006Uh-I8 for bug-gnu-emacs@gnu.org; Thu, 02 Mar 2023 07:21:20 -0500 Received: by mail-ed1-x52c.google.com with SMTP id f13so66812064edz.6 for ; Thu, 02 Mar 2023 04:21:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc:subject:date:message-id:reply-to; bh=TGW61sEIf9ZCN5mML6tCGJokP8nkLkhLXs/3SvQAXCM=; b=Ku5aGd2ZY1UCpTFohCnhAzK/LKt0y4Tn2TpcRpyt72XfBmcQe3A+wXqeIpfSOq9nMA OgBRGVs1NxeZZht5e+PW+9MEKAFu795Q0a5uVIO/dG7QcPGKWvIc3zpHuOrjKvfjgEIa Fbob3c2/SH/tdV6Bo++F9F2DFCsGPTm04gPDExz6jWheCOnie6W7UTrTTt8vKi3sNSiz QzVKprY1VtTfLbL9ZVKzldcT+B8mk5QE4JYkhZ67YVFdzbR+OEOpyT9NKuU4p149sjlF bsqOheBPcg7Ov2xPMCA1xy8fVCA49oSHf1OQsiM3GVhI6HFl8PhmPyKq924LclVk3p8n rNKA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=TGW61sEIf9ZCN5mML6tCGJokP8nkLkhLXs/3SvQAXCM=; b=UAOqBprCEeDPYWR7DBagzXvw/PRmYDf63yn2kcbitLdT5U9G+9wUGXE01NVv+PqB3R zj9DcPt/JfqRxfVSjIVDF9xgTOKDwaLJbyZzoRgScPXzeH27xGQALOqzs0dyrA9/4/Ny 7VZ3hTJ3vJl2i+FhYfvIma8jbXXcfeFuyh/HxTjm7+nHsyoJ0Yocz0lhBvgZGq8ezZGy wAk/9MJ4arFR88aXIkSox2iBWpBwchdoneod5ceFWoy2kAgnqcvgp05CBLyCOfLR0LVJ TqSBV2PB8DqI1+bI+hmBSLuKKkznSrEi30H8lfhnkIwNTeW665ailQwjVQk38zsNk5+T Eh8w== X-Gm-Message-State: AO0yUKW/BZBZ2GPdk2MQVq4GGiptwayoyhU8GYRDMg7mEJuwr/Xj8NwX cNq2o72rrDTFjcKZaB9GNeUrdzkCqO8= X-Google-Smtp-Source: AK7set/LYon7Tc7X1dvalsB676c8BcXd8nnPlbJyS1B+Uzum2GpU+WUf4qGNlvRpcqrhWpGN2Ox24A== X-Received: by 2002:a17:906:aadb:b0:905:a46b:a725 with SMTP id kt27-20020a170906aadb00b00905a46ba725mr1798390ejb.16.1677759666000; Thu, 02 Mar 2023 04:21:06 -0800 (PST) Received: from 3-191.divsi.unimi.it (3-191.divsi.unimi.it. [159.149.3.191]) by smtp.gmail.com with ESMTPSA id va13-20020a17090711cd00b008b23b22b062sm7007608ejb.114.2023.03.02.04.21.05 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 02 Mar 2023 04:21:05 -0800 (PST) From: Vincenzo Pupillo To: bug-gnu-emacs@gnu.org Subject: java-ts-mode query error for string highlight, due to recent commit in tree-sitter-java. Date: Thu, 02 Mar 2023 13:21:05 +0100 Message-ID: <3399763.44csPzL39Z@3-191.divsi.unimi.it> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="nextPart8363688.T7Z3S40VBb" Content-Transfer-Encoding: 7Bit Received-SPF: pass client-ip=2a00:1450:4864:20::52c; envelope-from=v.pupillo@gmail.com; helo=mail-ed1-x52c.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@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) This is a multi-part message in MIME format. --nextPart8363688.T7Z3S40VBb Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" Hi, a recent commit in tree-sitter-java (https://github.com/tree-sitter/tree-sitter-java/commit/2b3b776b953a34ccffb647dd89732db79690d4c5) removed "text_block" from grammar.js. This causes a bug in java-ts-mode when treesit-fon-lock-level is > 1 Error during redeployment: (jit-lock-function 8295) reported (treesit-query-error "Node type error at" 42 "(string_literal) @font-lock-string-face (text_block) @font-lock-string-face" "Debugging the query with `treesit-query-validate'") The attached patch fixes the problem. Thank you very much. Vincenzo --nextPart8363688.T7Z3S40VBb Content-Disposition: attachment; filename="java_ts_mode_string_highlight.patch" Content-Transfer-Encoding: 7Bit Content-Type: text/x-patch; charset="unicode-2-0-utf-8"; name="java_ts_mode_string_highlight.patch" diff --git a/lisp/progmodes/java-ts-mode.el b/lisp/progmodes/java-ts-mode.el index d31d2d71c3..176636aa7c 100644 --- a/lisp/progmodes/java-ts-mode.el +++ b/lisp/progmodes/java-ts-mode.el @@ -183,7 +183,6 @@ java-ts-mode--font-lock-settings :override t :feature 'string `((string_literal) @font-lock-string-face - (text_block) @font-lock-string-face) :language 'java :override t :feature 'literal --nextPart8363688.T7Z3S40VBb-- From debbugs-submit-bounces@debbugs.gnu.org Thu Mar 02 08:02:18 2023 Received: (at 61913) by debbugs.gnu.org; 2 Mar 2023 13:02:18 +0000 Received: from localhost ([127.0.0.1]:56122 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pXiZe-0001MQ-EW for submit@debbugs.gnu.org; Thu, 02 Mar 2023 08:02:18 -0500 Received: from eggs.gnu.org ([209.51.188.92]:51376) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pXiZd-0001MA-B0 for 61913@debbugs.gnu.org; Thu, 02 Mar 2023 08:02:17 -0500 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 ) id 1pXiZX-0001MM-JM; Thu, 02 Mar 2023 08:02:11 -0500 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=xZFTRvnjrbVyiiz0M+B/aY1GQqVvcz9efdDvrREcMf0=; b=L08aBAq3sWow UERCn/i6Vo2Enc46gtufxKuEoV81rOHPONxcDKmi3fbq4XYmt/EUEhL4Ezt4QbweuSpXj+6VhmtDv hY0R2epgI+imMK+G2yMoDm7kSKe2str4rybJaSX8SzC00trksKE856ALvFTZIQ3lUXZ3xV1zQINf7 ho1T0dlPAzbz4PxJcEWRBO800xqrp1D9shkbpO0qEIP1Veio3VxAKKXB1WY91ieigDRGRifJoc/fp JbXBgNLPF9FFkdaBsRYFxvxJEa2N5C0LqtPU2mveFZGO+xRKAcRcTDJp6giwjB0Xd17g1vB0MK89T sjMhXwIdmaGhntecn7U7sA==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pXiZN-0004Rs-L3; Thu, 02 Mar 2023 08:02:10 -0500 Date: Thu, 02 Mar 2023 15:01:56 +0200 Message-Id: <83356ne27v.fsf@gnu.org> From: Eli Zaretskii To: Vincenzo Pupillo In-Reply-To: <3399763.44csPzL39Z@3-191.divsi.unimi.it> (message from Vincenzo Pupillo on Thu, 02 Mar 2023 13:21:05 +0100) Subject: Re: bug#61913: java-ts-mode query error for string highlight, due to recent commit in tree-sitter-java. References: <3399763.44csPzL39Z@3-191.divsi.unimi.it> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 61913 Cc: 61913@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Vincenzo Pupillo > Date: Thu, 02 Mar 2023 13:21:05 +0100 > > a recent commit in tree-sitter-java (https://github.com/tree-sitter/tree-sitter-java/commit/2b3b776b953a34ccffb647dd89732db79690d4c5) > removed "text_block" from grammar.js. This causes a bug in java-ts-mode when treesit-fon-lock-level is > 1 > > Error during redeployment: (jit-lock-function 8295) reported (treesit-query-error "Node type error at" 42 "(string_literal) @font-lock-string-face (text_block) @font-lock-string-face" "Debugging the query with `treesit-query-validate'") > > > The attached patch fixes the problem. Wouldn't removing text_block from our code cause problems if someone uses tree-sitter-java from before the removal? Is there a way to write code which handles text_block if it exists? From debbugs-submit-bounces@debbugs.gnu.org Thu Mar 02 09:45:21 2023 Received: (at 61913) by debbugs.gnu.org; 2 Mar 2023 14:45:21 +0000 Received: from localhost ([127.0.0.1]:56250 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pXkBM-0006PV-VG for submit@debbugs.gnu.org; Thu, 02 Mar 2023 09:45:21 -0500 Received: from sender7.unimi.it ([159.149.10.87]:58640) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pXiP9-00076W-8t for 61913@debbugs.gnu.org; Thu, 02 Mar 2023 07:51:27 -0500 X-Envelope-From: DKIM-Filter: OpenDKIM Filter v2.11.0 sender7.unimi.it D5733400EE Received: from mta05.msg.unimi.it (unknown [172.24.11.15]) by sender7.unimi.it (Postfix) with ESMTP id D5733400EE for <61913@debbugs.gnu.org>; Thu, 2 Mar 2023 13:51:17 +0100 (CET) Received: from 3-191.divsi.unimi.it (3-191.divsi.unimi.it [159.149.3.191]) by mta05.msg.unimi.it (Oracle Communications Messaging Server 8.1.0.9.20210415 64bit (built Apr 15 2021)) with ESMTPSA id <0RQW00D5Z91HXT40@mta05.msg.unimi.it> for 61913@debbugs.gnu.org; Thu, 02 Mar 2023 13:51:17 +0100 (CET) From: Vincenzo Pupillo To: 61913@debbugs.gnu.org Subject: Re: java-ts-mode query error for string highlight, due to recent commit in tree-sitter-java. Date: Thu, 02 Mar 2023 13:51:17 +0100 Message-id: <21968605.EfDdHjke4D@3-191.divsi.unimi.it> Organization: =?UTF-8?B?VW5pdmVyc2l0w6A=?= degli Studi di Milano In-reply-to: <3399763.44csPzL39Z@3-191.divsi.unimi.it> References: <3399763.44csPzL39Z@3-191.divsi.unimi.it> MIME-version: 1.0 Content-type: multipart/mixed; boundary=nextPart7669501.EvYhyI6sBW Content-transfer-encoding: 7Bit X-Unimi-Libra-ESVA-Information: Please contact Unimi for more information X-Unimi-Libra-ESVA-ID: D5733400EE.ACBDA X-Unimi-Libra-ESVA: No virus found X-Unimi-Libra-ESVA-From: vincenzo.pupillo@unimi.it X-Unimi-Libra-ESVA-Watermark: 1678366278.33925@qnXEYyrFYH/+XTaJ1e0Owg X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 61913 X-Mailman-Approved-At: Thu, 02 Mar 2023 09:45:19 -0500 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) This is a multi-part message in MIME format. --nextPart7669501.EvYhyI6sBW Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="ISO-8859-1" Sorry, I sent a broken patch. my emacs version is: GNU Emacs 30.0.50 (build 11, x86_64-pc-linux-gnu, GTK+ Version 3.24.36, cai= ro version 1.17.6) of 2023-03-02 Vincenzo In data gioved=EC 2 marzo 2023 13:21:05 CET, hai scritto: > Hi,=20 > a recent commit in tree-sitter-java (https://github.com/tree-sitter/tree-= sitter-java/commit/2b3b776b953a34ccffb647dd89732db79690d4c5)=20 > removed "text_block" from grammar.js. This causes a bug in java-ts-mode w= hen treesit-fon-lock-level is > 1 >=20 > Error during redeployment: (jit-lock-function 8295) reported (treesit-que= ry-error "Node type error at" 42 "(string_literal) @font-lock-string-face (= text_block) @font-lock-string-face" "Debugging the query with `treesit-quer= y-validate'") >=20 >=20 > The attached patch fixes the problem.=20 > Thank you very much. >=20 > Vincenzo >=20 >=20 >=20 >=20 >=20 =2D-=20 Vincenzo Pupillo Direzione ICT Universit=E0 degli Studi di Milano / University of Milan (Italy) Via Giuseppe Colombo, 46, 20133 Milano --nextPart7669501.EvYhyI6sBW Content-Disposition: attachment; filename="java_ts_mode_string_highlight.patch" Content-Transfer-Encoding: 7Bit Content-Type: text/x-patch; charset="unicode-2-0-utf-8"; name="java_ts_mode_string_highlight.patch" diff --git a/lisp/progmodes/java-ts-mode.el b/lisp/progmodes/java-ts-mode.el index d31d2d71c3..fc41f7196c 100644 --- a/lisp/progmodes/java-ts-mode.el +++ b/lisp/progmodes/java-ts-mode.el @@ -182,8 +182,7 @@ java-ts-mode--font-lock-settings :language 'java :override t :feature 'string - `((string_literal) @font-lock-string-face - (text_block) @font-lock-string-face) + `((string_literal) @font-lock-string-face) :language 'java :override t :feature 'literal --nextPart7669501.EvYhyI6sBW-- From debbugs-submit-bounces@debbugs.gnu.org Thu Mar 02 11:18:40 2023 Received: (at 61913) by debbugs.gnu.org; 2 Mar 2023 16:18:40 +0000 Received: from localhost ([127.0.0.1]:58205 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pXldg-0005nG-Cg for submit@debbugs.gnu.org; Thu, 02 Mar 2023 11:18:40 -0500 Received: from mail-ed1-f53.google.com ([209.85.208.53]:35449) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pXldf-0005n4-JU for 61913@debbugs.gnu.org; Thu, 02 Mar 2023 11:18:39 -0500 Received: by mail-ed1-f53.google.com with SMTP id u9so20248325edd.2 for <61913@debbugs.gnu.org>; Thu, 02 Mar 2023 08:18:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; 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=jNzWDDZevnw1zrdctcCatNX1gadIGgmzEXupLKzWKOQ=; b=TVw9gz+VBCowX+g5Gi6Pt3LI+gr3KpouoVhYoCPzg/qlo6iqob+JczM3EOYOfOSdh3 pK97KYB5j3uA3gWSIW+ZvPXfXgjKI9gMv6bPwyB8AetBN7q0zEO35mOchm7RGkqdYIK9 kG9LkSRFV8qzmC3hXz1tqVhws3HLXQi5PsUhEa9NNi4GeTQAuCbLWOH0YH60ZdR4y7qz j7Y9lzfWa+/I+ChpQTt1zZm8Bap2uBuLWr3dydbiTG56LsnMNoWAFBhn6e+tbGe5vd3Q nBReaicUm5H+0KYa5gvtg4sjoho6u6/HtDzuhUh/HXxl5tH7xPtLpSjJqlFjBHj1GuyL dpUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=jNzWDDZevnw1zrdctcCatNX1gadIGgmzEXupLKzWKOQ=; b=gKtrrKSEqQYUBuzBfCP8qCKlUaYeexE9SraeaZcsxixUewRtOh5VNyjoHkOhlCqV/f yQZQRNtttVM3SNK/BgfxbiJeyp3QFTShNRWYLYjHDXK/KeJikIL4np9TS/O3o8vub0Ap TIdNLnhgoBOl6AbBA1JcSNBwPjm0Id3kCxg8KiTfl0X2Bc56FQdgk6kkPYrCEj1aNPZJ +VrH+kgcZhDt091kVo+D7SeLTVUWhB4Raj1UEo8V4MJOHYUDa22vkCbBx3+dFr6hpOqA gIGIpuERvFmdKJZV8OnPAPy0wqgoUI8umO+yUk7qS9TT2hIKsppYvVGCti7MIHIzF8jY cUwA== X-Gm-Message-State: AO0yUKWKySCRRTsEkIVtgSA/9wSiklk3HRnbS2cvNu6W54a0LK38iJsH wa3u7ylCrt7Y369/9KzJmm4= X-Google-Smtp-Source: AK7set8yG2zhvHKKuDdi/agw4tf57tp3qN0L5APJcWRZuS9jGWFFljCfmrTEvemnqQAazLsEGg2TXg== X-Received: by 2002:aa7:cd83:0:b0:4ae:eb0f:4273 with SMTP id x3-20020aa7cd83000000b004aeeb0f4273mr10879605edv.15.1677773913361; Thu, 02 Mar 2023 08:18:33 -0800 (PST) Received: from 3-191.divsi.unimi.it (3-191.divsi.unimi.it. [159.149.3.191]) by smtp.gmail.com with ESMTPSA id d25-20020a50cd59000000b004bc422b58a2sm17400edj.88.2023.03.02.08.18.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 02 Mar 2023 08:18:32 -0800 (PST) From: Vincenzo Pupillo To: Eli Zaretskii Subject: Re: bug#61913: java-ts-mode query error for string highlight, due to recent commit in tree-sitter-java. Date: Thu, 02 Mar 2023 17:18:32 +0100 Message-ID: <23162699.6Emhk5qWAg@3-191.divsi.unimi.it> In-Reply-To: <83356ne27v.fsf@gnu.org> References: <3399763.44csPzL39Z@3-191.divsi.unimi.it> <83356ne27v.fsf@gnu.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="nextPart2725434.Lt9SDvczpP" Content-Transfer-Encoding: 7Bit X-Debbugs-Envelope-To: 61913 Cc: 61913@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" This is a multi-part message in MIME format. --nextPart2725434.Lt9SDvczpP Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="UTF-8" Yes, indeed "text_block" are not recognized by earlier versions of tree-sit= ter-java.=20 I have prepared a new patch that checks if "text_block" are recognized and = adjusts the query accordingly. Also java-mode seems not to recognize "text_block". You can check the result in the attached images. Thank you. Vincenzo In data gioved=EF=BF=BD 2 marzo 2023 14:01:56 CET, Eli Zaretskii ha scritto: > > From: Vincenzo Pupillo > > Date: Thu, 02 Mar 2023 13:21:05 +0100 > >=20 > > a recent commit in tree-sitter-java (https://github.com/tree-sitter/tre= e-sitter-java/commit/2b3b776b953a34ccffb647dd89732db79690d4c5)=20 > > removed "text_block" from grammar.js. This causes a bug in java-ts-mode= when treesit-fon-lock-level is > 1 > >=20 > > Error during redeployment: (jit-lock-function 8295) reported (treesit-q= uery-error "Node type error at" 42 "(string_literal) @font-lock-string-face= (text_block) @font-lock-string-face" "Debugging the query with `treesit-qu= ery-validate'") > >=20 > >=20 > > The attached patch fixes the problem.=20 >=20 > Wouldn't removing text_block from our code cause problems if someone > uses tree-sitter-java from before the removal? >=20 > Is there a way to write code which handles text_block if it exists? >=20 --nextPart2725434.Lt9SDvczpP Content-Disposition: attachment; filename="java_ts_mode_string_highlight.patch" Content-Transfer-Encoding: 7Bit Content-Type: text/x-patch; charset="unicode-2-0-utf-8"; name="java_ts_mode_string_highlight.patch" diff --git a/lisp/progmodes/java-ts-mode.el b/lisp/progmodes/java-ts-mode.el index d31d2d71c3..19b5fab20c 100644 --- a/lisp/progmodes/java-ts-mode.el +++ b/lisp/progmodes/java-ts-mode.el @@ -145,6 +145,16 @@ java-ts-mode--operators "|=" "~" ">>" ">>>" "<<" "::" "?" "&=") "Java operators for tree-sitter font-locking.") +(defun java-ts-mode--string-highlight-helper () +"Returns, for strings, a query based on what is supported by +the available version of Tree-sitter for java." + (condition-case nil + (progn (treesit-query-capture 'java '((text_block) @font-lock-string-face)) + `((string_literal) @font-lock-string-face + (text_block) @font-lock-string-face)) + (error + `((string_literal) @font-lock-string-face)))) + (defvar java-ts-mode--font-lock-settings (treesit-font-lock-rules :language 'java @@ -182,8 +192,7 @@ java-ts-mode--font-lock-settings :language 'java :override t :feature 'string - `((string_literal) @font-lock-string-face - (text_block) @font-lock-string-face) + (java-ts-mode--string-highlight-helper) :language 'java :override t :feature 'literal --nextPart2725434.Lt9SDvczpP Content-Disposition: attachment; filename="java_text_block_new_ts_grammar.png" Content-Transfer-Encoding: base64 Content-Type: image/png; name="java_text_block_new_ts_grammar.png" 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 AAAAAADo5f8DYSjyktIfd44AAAAASUVORK5CYII= --nextPart2725434.Lt9SDvczpP Content-Disposition: attachment; filename="java_text_block_regula_java_mode.png" Content-Transfer-Encoding: base64 Content-Type: image/png; name="java_text_block_regula_java_mode.png" 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 86pX0m1CWJKvfe/nR4Yc/GT8v97bYRfCkjru86+u3/PQpf+31PDns/Cz3M7RKHgchiFSwjk3XtKl avmTr/1ZN8cLIYSo3T//ldljv59y5Y2nzH1icWX90bO0p18tOnviJSf3jBeFu/7+8q1Xv9hYf0pC ZxjO+656/OnsM++6+sz+HUJLMpZ/Nf35T9cVGRxlUAxSVO397pX3z/zmPxdeffb7aT+XSG7nKZyd r/7PC3lnTrr81L6JVT/cd+ErW1LOvvWecRec3Ccpylq4e9VPM6bPXprjeu1LMX0uuGPytecO65kY aS3J2bv2p1kvzdmYOuV/s2/sZBE9Z66+XAjhyPpi/BXT19tCk0fdfP/Ei0/tnxRlK85I/3POOx/8 srdKCFG/XQ1Wfc2aS3945bgfbrth+pb61VkS//XOt4/FfvyvcXMzvW6vlDDmpsu6VS97ctqvriAi hBBCrtj120IhhPIyLJ3hifCuZ09+YPxFw3t2jBHVxbkZW3+d/n8frymTdXeWEWHh4UIurVacj5Hl +lOubZJ69Uhp3zYmKjxE2KpLC7L27jnkPPIYlnT8KcfHHEpL21t/flaI8JTBJ/eP2L86bX+FLELb JKf27JKUEBNusdeUFh7cu/dgcW3Tz4FS294nDU86snV7VYeeXTrEhlusFYWH9uzY71q3Jbpjar+e yfFRIfaqkpyMzIZznxTZrlvv1E7tYyNCZGtFcd7+vRmHyxs5K4QldusUZS/ctvNoJnCylefmCSGE JfH4UwdG7V+17kClc5BSRJehJ/e17ViyKS+278nDu0ZKImbo2SlCCLnq4LqVewx87vO6UqG7sXUP 4/Zd1sTUTu1iwkRtef7BPbsOllhlEZo44JSBsdlr1+wprR+HFNF5yEn9QjKPboJP7FlbthWJfkmd 2oZ2OXnC5KtPG9a3S2JcSFXurpXzP37z05XO82dar4JPrZO+03qxN/J1ocUS3z7eYt+Wk9fw6WCz uf7WW2lE77F3T7j01EE9O7dvI8qytiyb997b36yve9/UeP+58JUtKWfdctct55/cNzlGLs/L2PzH J6+/s/iwaxOie1/42APjLxzUKbzM1zfhIOY5iwhhPzh/5k/XzLx2wnnfPrpAdYlIRP9b3/9gUtdd /5v19Nt7KuMHXTHpnnemt7lj4vtbauy71qWXXj98eHdL+l6HiBk6or9cY+s6fGiSZUe2Q2o3dHhv 25YvN3n4IC+FRMTExsbWPfayvbqy0qqzI3SGoSzVFDbgxCFR1k1Llh5RbKAje9nSnQ8MGj6ib+ji Dc4py9LugofvWPja0zc/vk/uMebOF//z5pvShIlzM2wGhmFpd8Ej9yx6//W7Xsu0dz3/gVcfevHx Q9c+avCIU1AMUgjhKFi+dIf9pAGD+4b+nKZ8l7e0O/+R+1Z8+Pq/p2fWxoRVplz50n8fH3z4549f mLG9KKrPhbff8eaMdvfdMm1FqSyEiDz+tlkzJ3bLmP/RizO2FYW27z5gVGpSG8m29aPJ94W+M/38 HU+Ne2+dTci28kKb1HbUlA+nXxa2cs60B9flR/W7ZNIdL36YGn3LlO/qg2vDVZeV5M9bcHjGRZcP n7VltTMRWLqNvWK4SHvltwM6TzWXsAEnDY2ybvxHtTs06Q4vpM9t0567Tv71nWfe2n5EbpPYdcCI pJgwIQzsLC/kytJSe5f2Pfp3s2XmFlfU2BVjtUREhVXl78/dX211hES2Te6eOmSgWLP+UKUsrAW5 BdYTkpJi95XVzUhSRIfkBKlsX16lLCyx3YcMS40uz9q3bW+FPSwuJbXXkEGh6en7So08do0lhSf1 7ZW3d9f63ZVyVFKfgX1P6Fe1enOuVQgR1qHP0BOS5byMrTtLbOHxXVIHJIVJorTujmHt+wwb1Ek6 cmDn5qJaS2ynnqnHD4sOSduc5ePZkQYsce3iQ+SSgkIPb2a65NKM9RulwYOTyret3VvkEEK2GQp0 BlbqdWOl8OS+PfN2bVu7pUKO7tjzhP6DBon09AMVtsKsw9VDk1MSMkqP1CWXqKTO8aJoZ66fj5MU m5zcRrKVlVSIxK6JxWu+efOrnCOVoYn9z755wrR3Iyff8N7WWu1XgW25xou90a8LTfaMzTsqrzll wv/dWD7793W7C6oVT2XdlUrhSV3ispfM+fO/h4tqI1MGXXzrHe9NE9ff8dX++l4avv9Udb162pxH Bxf88elrn2zKtbftetzwgcltJXG4rjj2tEee67PifzMe/9TRdcxt993t45tw0NLLIkJUpX3639UX PTTxpuMXvrWlwSdAS+JFd48bVPDNhPump1cKIcS6tXukTz6bMO6sLx7+vdi6JW2T9aIRQzp8vDcv dMDIwfal//trwOXDhsV+lV0SNWTEAGnXx+lHP3I1FNJ74pw/J9b/Zd0w/bLbvzjkXuBOfxge1uBO ik3qGCVKs3PKVcWO3Kwcm9QvuWOYEM5pXgot+f31137cUS2E2Pnr688fN+LjW24c9d3zS2u8D0MK yf3hxWnzdliFEEXfvf/lRV/dMWZY1J+LKl3r8ywoBimEEMJReDivRjohsUOYEMosIoUW//rK81+k 1wghRJszX7hzlO23xyY/u6RYFkKsX7u1usO3D0+8eO6qL7IdlqRL77nl+IJvJ01+Pc257rXLf3f2 UpKXX2aT7ZWFOTnZzmekpet1Ey/tnDn3pkc+3FYrhEhP21bd/ttHJ908/KeX0pzvTw1WLYQQm+fN 33PtTZef+c6a30pkIcKOv+yS4yqXPrLQ0Jn2ut2Ro7E7NFi6XKYzvJi+x6eKdc+//eXfZUIIIdKX LXTey/vO8qb28K4dcSf069JnUHIf2VZTUVZclJeTlV1Y5dwxtsLMbYWu4uLCcunEkSmd2mTtLZOF vehwfm1yUlL8vlLnB7LIjknxUsmuvCpZiujUq3vbmkPrNuwptgshRFFRuTR8ZI/uiQediaCpSdXZ O3Zll8lCiNqsvQeTT+yZGB+Sm2+XolJ6JEeUZa7ZeqBcFkKUFFeGnDiye3jdvaI69egUVXkgbXNG qUMIUVxUZg8/qW9qt/icnY34zBkaERkirNXV/h3Jd1hraqyyLNtqq6uVs58Orys1srGSNXfX7pwy uxCi/PDuHbEJw7t3bZ+1o8BempVd3qVbpw57j+RahRBSXEqnWHvB5jyfrne2hEVGR0fbpYgOx4+9 565TIkuWLk6rsBXMfX69q2TdmnRr1wUTLhn24dZVkR5eBUL9Yk+8srGvCy3ykV9efe74lx67Zsqb F06xledlbtuwZtGP385bmVUtvL4Y5bLlHz69vL6r9etW7Ar9au5lF/f99r0dde+B7u8/Utzol+88 0fbHExOfWOT8LJO2cpH7qWwpSqx6fcqLqyqEEGJNTvtBs2/y7U04WHn5Tq8jZ8Gs77O7XTnhoqSG lZGDTxkSsX/R7xtdj5D9wD/LMiNPGNI3VAi5In3dLmnAiKHRIqT38GHR21d8s3SddeDIgeEi7LiR QyOz1q3P8fTasx/8/um7Jky60/nfpGkL9a4d0h+GMZKywSO5ctPKTa7jvrVbV60vaztoaGqIkWE4 irek761/r3bkZuXYwzsktvXy8B8VFIN0koQQQuNdQS7ftLr+s0vYcSedFF+y7JeVrrcPR/6Kf7ZL A4YMiBRCRA0+eVB45sIFzle+F9EDhvW3ZPz91876j4mO3EW/rbd1GDyke0hdi4LtRGkAACAASURB VPuqnSUZP/+wNuyUK8/taBFCRI24cmznvD/mL/WUj1WM7w4vw6vYvS1TnDzp2SnXjh7Zq0Okq18D O8sruTp/59oVy9I2b99zMLfEHtm+S7/BI4b3alvXgSUqMfW4YSeNOuPMM0affebZI3u0sURGRzlH YC/Kza+OSEyODxFCCCk6KSlOLsrNrxbC0rZ9vKUyP7fEFTXlqoLCSkvbtrE+Pk/8ZC0tdl3/ItdU VctSRESYJERIXHwbqSK/wLXQUZ539MLpkLiEWKkiP7+s/s1Ers7PLZEj4ttG+7Avg4SRjbWXFB7d hY7SI8XWsLbxMZIQcmVOdpGlfeeOEZIQIiQhJTmqJjenwGPw0RLa5465i1YtW7Lyr/99OOUk+8qP Hnrx9wJZhCQOv/k/b33942/Lly9NW/XPLw8NC2/btVtbyeOrQC0QrwtN9uy/Xx536dhbHnr6nS9/ 31re6dTrHn3ns0/uHhIjGVhpeJczb3/6o2/mL1m6JG3VstVzx/cJ69yjc/27T8P3n9DjThwZW7zk x2WeDqrKpeuWpFfU/WHfvyfTnzfhYOR1B9ZsnDt7+aX/ue3mwb9/c7TVEpuQEG7pccuHq2862igs oaG2/XGSEMKRl55+MPySkQMit/YdlpK5bF32JtuWyNuH94nIHTa8XWn6ur3KT80ucmXW1vQ05bWr 2rwNwzu5LDevSgzt1KmNJIoaPjksHVM6hcqFufmuT3tyZVm527gcFWXlIrZtnMXIMGRrrfsBWFmW hSXk6LNVV1AMUgghhKV9p6RwuSRf663LUVlR4TpoGZ/Q1hJ/2fRFF7utzhIa5lgbFyOJ6jbxbUMd hfmeXq0NWGLaxobIRUfcPhTJlUVHqqXecbH12+W+6rqWvD+/W3LHy1dcmDpvTuEZl57bbv+XP6w3 eJBXLsvN9bA71LwMz7broymPWCfddNHEZ295JMxauP2vL9557b/rjhjYWcY4akoLskoLsoSQwuJS Bw9J7ZbaKWvDwerQ9n2HDEqy5uzbk1lSVWN3iPCkAUO7WSx1vTuKc/OqOndKTth1pMAR0zEpznFk W0GNEFJoWLgkRXcfdnY3t5VIksVR6fWtRJ8sy0KSlBsnSdLRS1yEEEJ2OBzKx1yShJBCw0Iludb9 +Stba6x1fzmXWmvdD9zYamvtIiaswS8I+MpWU20X8ZGRoUJ4PmESaN5Wamhj7UcvhRBCyDabXYSG hgohhFyTl5Xf84TOydHZ+2s7pHQMrzyUXX+9mUH2A/OefmF+lsNhqyzKOnCwqEYWQoQff9e7028K /efDGU+lZRSUVdvDTpny+f2R4eGSsGu/CtRHKY28iflPrsnd+s+8rf/ME8LSduAd09+54+ZJl/7v nq9l3ZVKsac+8t6b55b8OOutDzcdLKiwyu3Of27GzeHhR/eP+/tPSFx8rCgqqDsDpsFRXeV2GZDD bnf4+CYcrLy/gTjy/5z17U2fXj/x8uWrjjaWl5Ta7Lu/eeix+UevuBFCCLkizyqEEPZ969YV3Tx8 5OBtfXrnp7990F5iX7ev45jhQ/KH9ajd9PEWzReRz7wOwzvrtjUbqy8edsZp7X76qcE1MZZOp5/e z1L6Z9pO17wqxbZvHyFEfc+h7TrEi7KSUkcAhqEvKAYphLAknnZ6v5CqNet32fSPHTjKSsvsuUv/ b8qcXQ1ek3JV4RFZOMqLS6yW1MR2kqi/FM8zR0VJmV3q2i5eEvl1TVJ0QrtIubRU7zCHXLZ03h/5 71982aCFWVecGrFlxo8NR6LHum3N+qpLRqh3hwavw7Nmr/jo6RUfSeEJ3QeefvnEKfdMe7Lg6vv/ DvzOkq2lWTmlPeKio6MkUds2uWNExcHN2w/WnWiSLKLB+51cdji3sluXpPahhdVJHdvYjmQUWIUQ st1mleXyg5u3ZCu+FGH34SyDFmttrRARERFC1F3UK4QQoRERIaJhQPZAtlltsggLDZWEK4CEhIZI zlOFss1qk6Wo8DAhXIEzNDw8RNis/j6cQgghHKVFxfZOCR3ah+fkeHhLk2VnWHJx5T1/eVupoY0N DQ+3COH6bBAeHiZstro3EVtBdm7NkE4pbfOqUtqFlGRkGzoZ6Uauyt6xcX3Dz5Oh/cacn1ry073P fLTaOWhL8klhrkdC+1Xwc4nr7k7N8SYmhBDCUbLlu5+3TBjYvUcXi2O77krDBo8dk5jx5cPPfVH3 DhISLnQO7dhLi0vF4MT2IUJ1FvsYZ+TQT+3WL2f/XTN03LgTY1xtVRtXbKztMfy4kOzMjEy3//bX Hxat3Za2sabbqbdcPLhmfdoum3BkrVuf2+vM2885TuxYt6H+EFRjeR2GV3LRws9/zoo67e5/j0l2 ezMO63rxI+MHS3u//2LF0fMEUsSw805vX/c0k+JPP3dkdMmm9Rn2AAxDX1AMUkT1uuqRO0+MyF7w 7ZISLz3atq1aU5Y4dGBcnvtIMjMzc8vsQoiqjSs31vQ49+LhMerXtGyttUoREeGuJZVb03c4Us8e 06/u0gBhSRp9wZCQgg3r9+u+2GvW//DD3qRL7/vP9UPtq77/Xf0FLY/kooWfzT8Qedq9D4/t2uBj tRTT9/xz+jf8DGNweHJtUea6H9+fu6wsKrVXJ0sAdlZYVHR4w5d3SHSbSEnU1NQIISwWi+z22ViK 6dC+4YMtl+fmloW0S05sn5wUbS3ILXROVPbiwhJHTHysVF1ZUen+X43ug+2VXFFUUiPFdkx0O2ci RXZMipOsxUVG5kJ7aVGZiE2Id+0QKSKhnWuT7KVFZXJMYqLrRJIUmZjUVqopLvHnuyFHWfMO5FSF tO/VNzmq4WMd2iapY6wkhFxbUyMiIo9OTqFx8W2OlsqyQ7KEGHkXduNtpUY21hLfsUP9M1KEtU9K CLGWuE5+OYqzsysiOvXq3zVeLsz296pVhYjwcLm6oqL+aWLpeMZZA5QfhRWvAvWLPQCvCy1SXJfu CQ2PkEWm9k4JdRTm5Tu8rFQKDw+TKytcD21orzNPS/W8R23bVqeVxp9x6Rn179Goo3wyaJKPLPrg q5u+mHxiklRb9+HOkfvj27MvmjVpxoyOn363bEe+LSqhY/cBJ54iFtz71iqrEEJUrV+7XT5n5PCa ZT9srhFC2HetXVd545VD5N0frPfnRxQ1eR+Gd5Vr33/0vZ7v3fPsF51P/uqnNfuKpXZ9Rl1+7fn9 a1e88sQn7kdw5KqaAXdOmxoz+48MufvocfedF7HxrS9WVgkhAjAMfS1xkJaYHsNPOzPFIYVFJyT3 HHLG+ReMSK5cO+PRd9Z6jZpy6T/vv7tyzuOvfhz3+Rd/bcmpDo/v2LnfiFParnzmxd+LZEfuT+/9 97JZk16fGfnx54u2HZESug4Y1Sv7o9cWHHI4cvZlVkQNveSqk4s2lVirCzP2Zf3w4Y9XT7/5jVfl 979dVxDV76LbJ46yrX7+s6OXqmpzZPz4/YbbHjsx/siCN+suIzOqKn3WI9O7v/vvJ7/sedb8BSu2 ZpdLsZ36jRx98dldVzz898IdbqeoHHrDs3T51ytPDjrw14qtB3KLbHF9x9x6VpuCP9Iy7Y6Kxu4s KbrrkMEdawoO5xeVVVllS3ib9p26JEdaCzIPV8lClBYWO/qndOtYsCevyhKTlHp85yjFN23kyrzD pT169+prC6/NO1x/TFmuydmzv9OwHkOHRuzPKiyvkUPCI6JiE9qLwxv3NOp7lY7iA/sKE4/rNXhI 5KHDxVV2S2TbpC5dEuSi3fsLjMQcuSpn/+GuA1MHdKvcfqjUFh7f7bhuca7rluSqnMycLoO6DRwo 9h0qrg1pk5ya2k4+suOAj2cfVOzFGZt3Rw/p0//EmA45h4+UVtlEWGRsQmKnxKjCzfl5ZY6y/ILK bp179sivOlBqD4/r3KdHwtGrqeTq8kpbSNtOndvVllhlR21FuaFI522lBjbW4YjreUL/kP25lSI6 sXvvjpaSPQeP/oCzXJGTXdKjX0JY7eE9+VrHXnxn37kmreTKsbdc+svzP+62p5w+/j+39a97xnl8 FQj1iz3Qb2JOIanXv/P2eQWLFyxatyO7xBrevu+oS667KOXIko8WHHR4mWWsW1al10y9/NZz/3lz YVZYz3PvfO6qlGrP7yZy2dIZM1aPeuw/H0ndZy/YeNge17n/iMFVPz73Zf2VrscqQ1lECNvubz7+ 4+pXLu5wtKlmx6d3jjs0YdJ11zw4tlOsVHEk78D2NX996/qw5yhIT99nH9lr59r1zi8GWrekbaq+ 4szy9HWZAXzQvQ3DALlyy5wHrtt+1W03jr3y3vMSo+WK3H3rf3nt1Tnz1ze87sFRtnja04dGP/Dw W33bS0W7F7/1wLTP9zkrAjAMfS1wkJYuFz/22sWy7LDXlBXmZGxf/dET7r8Br89+4PvHb8q7/s5b Lrz/hQnxoTXFeVk71/4zb2fdx5vqbbMn3547efJ1Nzx+QWKUvTRr56ofZjk/Hlcs/fCleVPvmvjq nLbhUvaX46+Yvn7lGxMfyH9g0iUPvXpLtK0oI/2HJ6bOWuD9QIcjd8nizQ+N6PTbDyu9pielqh1f PHztlgtvveHiM2+875r4CLkiP2PL6s8ef+brZbUNDzfKpZ6HJ5fu2Zx92vnX3ntNckKMVJm3J/27 J56duaJCNH5nyRXZezJFx3YduvbqGhFqke01lWWFGVsyDhRUy0KImpztWyP79e530mnHO6yVJXmZ 2zJTBvds2ENVXm5J734JYVWHct1nsbL969dW9Ujt0qVPcmSosFtrKkuL8rIad3xBCCFXZ29Ot3ZP 7ZbcrX/nMEm2VZcXHdiamZlrtGdrwe712+z9Ugee2stirynLO7ArQ5zQy7W0cHf6ppreqZ36DuoW 4rBWFGdv3ZpxOAAf+e1lBzevLk3u3jW5Q9deXcItsq22svTIgS3bDxY4d/H+zTtC+6ceP6q7ZKsq OZy5KzNkkGtUtsLMnVn9eqYOHBFmEUZ/X0R4XanXjZWt+bu2VSX27js4NlyqLc/fs2nXwQZHFmry 80v6xEcdzq47HtZoctnSaY+8O/Wh2z/980FRmr1l8VePv33kg8faC91XgcaLvZGvC032fT++85E0 etTpN9x3Q4c2YfaK/IM7ls589IPPljjPyui9GB15Pzw3NXnq/Y9/9efztuID6//8+P8+ufLtOxVr cGPb/92jtxwZf8+tFz80bUIbUZm7e90vH3m98Kz1kwYMGqZsg4ag+JcCgmKQLYeUeOnr85/oMOeG cR8Yu1Yafhs5Ynja2nXK1hYvSIety/lbZ4XrV+zWmQAjOg0a1T98f9q6DCMnyFq81rgfWxuDx0WA 1iS0XY/+PboNuXnyyfblz3+/jyACOEnh0bHR0fHderaTC3f4fNUq4C+yCI49Utzoh2f+30n2vE3z npn2Wz7vt0CdsMR+Q49LkKtLsrbvyvVyxRUQOJyjAdDkgvQgeZAOGwrsx5bP83ePAAAAmh5ZBAAA mIksAgAAzEQWAQAAZiKLAAAAM5FFAACAmfhOLwAAMBPHRQAAgJnIIgAAwEyhxQWHXX9kZ2e7LQIA AGhyHBcBAABmIosAAAAzkUUAAICZzM4ichD/e+1PyVuUTU2mOdcFAEBzMjuLAACAYxtZBAAAmIks AgAAzCSlpKS4/sjOzta+gEOSlC3qMnWNUJWpa2TZe6N/63JSVHodjwGal248I52gaFGUeS1wUpQZ qXGRZVnya4sAADBTihshVLO1k2ajgromUC1q6hp1i1A1qmvULb7QDApO6kWKFnWBk6/t7uTGbQ4A AKYwdo5GkrxP24oaWeuAh9d+NO+lZmRdCpo1Xsfjl6fkLepDF89IJxjJE+o7AgDQuhnLIgGkDgQu mnEBhnGCBgAQjEKVDcYF9oiCfhAJ7LoAAECL4W8W0YwO/iUG573UvbkEal1+3MVfXk/HeDplwzka AMCxxq8sohkO/ObsylOfntr9EKh+DDASKTRrNK81AQCgFWv260U8aZrLSI8pfI8GABCMmj2L6MyX xBEAAI49xrKI4kSJkdCgWeP1hIv6XuoWNc0ag/1oNjaOp2tB3Bs1CwAAOAb5+7urwsMsrqhUBwIF zXSibvRvXUb6Ua/dF+6RwutPpnotEKoadzrrcuJ3VwEAwUgri7Sa+aw1bYs3BBEAQJAydo4GLR5B BAAQpFpvFjmWDooAABC8/Pp9kRYo0BeCAACA5qHKIkE6hQfpsAEAOOa13nM0AAAgGJBFAACAmcgi AADATGQRAABgJrIIAAAwE1kEAACYiSwCAADMRBYBAABmIosAAAAzkUUAAICZyCIAAMBMZBEAAGAm sggAADATWQQAAJiJLAIAAMxEFgEAAGYiiwAAADORRQAAgJnIIgAAwExkEQAAYCayCAAAMBNZBAAA mIksAgAAzEQWAQAAZiKLAAAAM5FFAACAmcgiAADATGQRAABgplBlg3GyXHdDkhq0t0gzrTOVTfUm h01WNgXOTOvMAPYvy7IQQgqGBxwAAIMakUWcM6IrkbRs7oEgsPmg2ciyTAoBALQ+nKMJDgQRAEBr RRYBAABm8nCORnHmxb9P5OrTN+p+1DVCVWakJnAUV5aoz+ZoXnqiKHOvcd1WdwUAAESKm7om9dyv bnHRWaSmKPZ0X/d2IzU+0gwTTupFihZ1gZOv7b5yXrUKAEDrozpHI8sahxwkqTFz/1EG+1EPQM1I jY80r2mdHDbZSJ5Q3xEAABjh4RyNWhPM/TCC7/ECAFo3w1nEP0aOgkCXM4XwPRoAQGvVlFlE83SP ezrxdMrG/V5GagLH6+kYT6dsOEcDAIB/miyLaAYRNc0axX2N1ASIkUihWaN5rQkAAPBKde0qAABA MzKcRTRPlAAAADSOKotoXp/hxwkRzX4UvBYIYzUB4ulaEM0fLmtmkiTxEyMAgFZJOvoTZ0JkZ2fX 3VJMe5pBxI8aJ/dKrwXCWI0v9K/tUKcNnd9UdTHYoU6ZEXy/FwDQ+njIIgAAAM1CdY4GAACgGZFF AACAmcgiAADATGQRAABgJrIIAAAwE1kEAACYiSwCAADMRBYBAABmIosAAAAzkUUAAICZyCIAAMBM ZBEAAGAmsggAADATWQQAAJiJLAIAAMxEFgEAAGYiiwAAADORRQAAgJnIIgAAwExkEQAAYCayCAAA MBNZBAAAmIksAgAAzEQWAQAAZiKLAAAAM5FFAACAmcgiAADATGQRAABgJrIIAAAwE1kEAACYiSwC AADMRBYBAABmOmayiCwrWzyR5br/vDJS05wCNR4j/RipaWFmWmcqm3T5Wt8UXkqvVTY1guxhr820 znT/T7nYjf5S4wLVD3R42t1+k2U54H0CTqHKBkiSEEE51wI6ZFmWnM/thmZaZ04Om6zfgmAkSZKn ne6HAHYFqB0zx0WAY5iniUQzdkwOm8xxi9bBGUeUrb7z9PwBAoUs0gjH8oszCLddPem2fI8PC1c2 NYumfqyaun8AwaXFn6PRDPWKiVCWlS1OinZ1V5r3MsLVlU4PitXpVOpQj1mounKv8TQwdT/q8Rjp R+gucmn0tmt+XtdsV3yC93Qv5w3NpU6NPxKgeW2HOkyoy9Q1wq1Mf6k7zUoRiA+17g+O5oPpvl/0 94jm3V0090IjK5vBkb3PKlra9XrS/c8je591tSiK1ZXufzq513gtUAjsmRqgqaS4US5rCdSTqFA1 atYID5OrO81GJ51FLjo16kXqFq883cXXdk06xTqLXHRq1IvULd5ozjRC1a4uU7e4+LpIs1GHez5w 3dYMDQo6NZ4WabZrNgohdI7S+7qNnupd7Z4KFDyVabarG9UtnhrNokgMrj81k4SL5lL3Rs0C4bnd SecJYFDjewD0Bec5GknyY3rTEKh+FGSt4zQBXJe6cz8EcDzumnrb3cxUHSMRfl3roNlPoDw+LNxT RHAxUmOEH/348XDpaKJHUjHIJlpLYLXr9aQ6H7gfHVHTX6rP7zsCLUSLP0fTmqgn6WOHj9vunH7U h/db/iQUdNRxxL8Hmb2jrzFRw0TOIyKc4kFTI4scM5rgyAT84+vRi6YWkMznx11aE/VREIVgDCKi PoVwxQmaGlmkBfN0asOPNwXNUyeanbcYikMj/k2QLdBL6bXqi0xbVDrRPCgFHZrHPLymEz9onvpx tiubgKBCFmnZ1AFCeAgWOnytR5PRDCIIappBpOlorquZxwAEXHBeu4pjg+tSBj6mN0agfvAKwYjT KwgKZJFmdCzPB8fytrdgAfwSTYtlJIcFqgaAf4IziyhOOni6rsKrJjp5oTkeP9al7sQ/muNpIprr 8mPb6+lcu6D+Aojw6wiKZj9NxI+v3QaEp0Mjmtvux2PYnDyNWdHSbDxdw+ErzX4ULeoCfYE6KOLp +QMESjBcL6J+DahfXZpToIK6QN2PcCtz3vCvRj0edY1X6k6cPHWlqHcv89SVJp1+RHNtuzHqaUlz EnXVOG+oa9T9NB2DcUTxa2mNv8rE0+9vqrdd/fi4KIp1Kj3xui+M0Bxzs+1BNc0Y4Qd1P4oWdYGr XdkUuCDi5IojAewTOCoof3cVABoyMYs0Kc3wAbQywXmOBgAAtBocFwEQ7DgoAgS1YLheBADcqJOH f9edtDTq5KF5IQjQ+kjuh0Oys7PdFgEAADQ5rhcBAABmIosAAAAzkUUAAICZyCIAAMBMZBEAAGAm sggAADATWQQAAJiJLAIAAMxEFgEAAGYiiwAAADORRQAAgJnIIgAAwExkEQAAYCayCAAAMBNZBAAA mIksAgAAzEQWAQAAZiKLAAAAM5FFAACAmcgiAADATGQRAABgJrIIAAAwE1kEAACYiSwCAADMRBYB AABmIosAAAAzkUWAQJLnTNW87c5QzeI0eXGa+jYAtD5kEQAAYCayiD9mWme6/6dc7EZ/qXGB6idQ jux9VtnUZIysy0gNAKBlClU2wJuZ1pmTwybrt6A5EUQAIKhxXMQ3mrFjctjklnbc4thxZO+z7Xo9 qWwFAASRFDfKZVDxNXP4Wh8smvNQhM66XIt0agAALRznaJqEewRx3XY/oOJ+fEWRV9QngDTbnTSz TiMrdbhP+a7b6sMSimTgtcBJUWZkXeqeAQDBh+MiPtGc0XV4qne1eypQ8FSm2a5uVLd4ajRIM0w4 qRcpWtQFTr62uzNS44nsmbIUANAELMoG6ArspSHuR0cCSDHIJlqLpiNaV2+06/WkkaygvmPzkDxT lgIAmgDnaHymjiP+zfTNGREAAGixyCL+UF/S4Ueq8OMuAAC0PmSRAHAeKSFbOHk9HePplI1Z52gA AOYiiyDAjEQKzRrNa02agc41qlwyAgDNgCyCYx2BAwDMxfdofBPAL9EAAABBFvGV+ks0wt9rV5uN pzErWgLC07Ugmj9cBgCAEEJy/4mz7Oxst0XwyKfv9LoXuyqNxxf9dXnqR92u7kdd4xP3SKHzk6lO XguEqsadp3X52g8AoCXid1ePWU10aAQAAJ9wjgYAAJiJLHKMauQJGgAAAoXv9B4T1KdjCCIAgBaC a1cBAICZOEcDAADMRBYBAABmIou0BvKcqZq33RmqWZwmL05T3wYAoOmQRQAAgJnIIgAAwExkEQAA YCayCAAAMBO/LwIAAMzEcRH4w9M3cQAA8BVZBAAAmIksAgAAzMT1IgAAwEwcFwEAAGYiiwAAADOR RQAAgJnIIvAH3+kFAAQKWQQAAJiJLAIAAMxEFgEAAGYii8Bn8pyp0rgXla0AAPiF3zoDAABm4rgI AAAwE1kEAACYiSwCAADMRBYBAABmIosAAAAzkUUAAICZyCIAAMBMZBEAAGAmsggAADATWQQAAJiJ LAIAAMxEFgEAAGYiiwAAADORRQAAgJnIIgAAwExkEQAAYCayCAAAMBNZBAAAmIksAgAAzEQWAQAA ZiKLAAAAM5FFAACAmcgiAADATGQRAABgJrIIAAAwE1kEAACYiSwCAADMRBYBAABmIosAAAAzkUWA QJLnTNW87c5QzeI0eXGa+jYAtD5kEQAAYKZQZQMMkGXZ/U9Jktz/dCfLss5S4wLVT6A053j012V8 XwAAWiayiM/UU6O6Bc1D/cirWwAALRznaHyjOdVJkqT4dI5mwL4AgNZBSklJcf2RnZ3ttggaNOc/ Hb7WB4vm3C5P6/K1HQDQMnGOpkm4fzR33XafIN3nS8XnePVJB812J81jAI2s1OF1u5z0t0ioCpw8 bbj7bXVXAIBgRxZpEu45Q3/69FrgXKo5eTup767uU93ibFS0eGVku9SLFC3qAs12r+vSbPSDzuMQ qFUAAHSQRXwjSZKnqdEPAezKnWKQTbQWTZrrMvigeS0wwsiKFHytBwAEFlnEZ86ZVdHi/qdBfsya 0MdDCgDBiCziD8WE598U6MddoMO/vQAAMB1ZJAAMnoM4RuhcfuGkPrDkalc2GcbjDwDBiyyCADOS CTRr/M4Tft/RSTMYOTWmWwCAQWQRBLdGBhFB4AAAs/G7q77R+QyN5tf4IAIAMB1ZxDea1zq08BnR 05gVLQGhuS7RcHWaBX5o4Q87AMAgztH4TD3d6syIimKdSk9cd3fe8KMHoRqGZotPdLZLs2evBc52 ZZMQQlXvXqbZj/DcFQCgBSKL+MOnqU6zWLNRk36lp6XqdnVLI+l0qLPIyWuBgma9ZiMAIOhwjgYA AJiJLHKM4mILAEALwTmaY4L6ugqCCACghSCLHBNIHgCAFotzNAAAwExkEQAAYCayCAAAMBNZBAAA mIlrV/2h/g1T9z+dXDWaS5tCS/uabiPH08i7AwCCBVnEZ+o5Ut0i6iOI+su0AADAHedofOMpdpA5 AADwD1mk9VCHJAAAWj7O0QSGfznA63UnmodbdMrUi4ThToQvlTrcO9EZmNdt16Q+LqXfT0C2CADQ pMgiptGcVt1b1AWe2p1/as67Tup+1J2oW5yNihavXJ1oduikXqRuUVPXqmiwNAAAEgFJREFUGGlR d6uuAQCYiHM05tCcDiVj152o7+gHxbo0x9NENNflddvV91K3CAP9CGM1AIBmQxZBENCMHQCA1oEs gpaOIAIArRvXi7Rcnk4lHDsTs3PzdbZX8/EBAAQXskiLpjkNHzvHCZybqbO9ntoBAEGEczSBwQf0 puPp+BAAoHUgiyAIEEcAoBUji/hGc1LUOYngiZF+1AVNx9N4FC0B4Wld+o+h+l7qFifNRgBAi8X1 Ij5TT4Gak6irxnlDXeO1H3WBq13R4nVdRqhXp27xieLu7qNS92xkzM576ffjbFS0AABaMrKIP4zM dgGp8VrgpF/maam6Xd3SSDod6ixy0ixQN6pb3Hla6qkdAND8OEcDAADMRBaBR4oTIgAANAXO0aAO F14AAExBFkEdkgcAwBScowEAAGYiiwAAADORRYDmJs+ZqnnbnaGaxWny4jT1bQAILmQRAABgJrJI 01J/OcU/nvrx1A53cj3lAhUjNQCAwCKLoPWTJIlvCQFAi0UWAQAAZpJSUlJcf2RnZ7stQgAE6qdL PfXjqR1qPFYA0DJxXMRnrosPXJQVDS9Q0Cnzykg/rnZPBU5GarxSdOLktcZrgayqcTJSEyj6a3Eb xVHKIiGEqlK52CSevokDAC0Bv7vqM/Vna1n1gdv1p3qRT4z0o25XFxtp8crTXRTt6hr1HdXbpa4x 0hJArmEoF9RTr1o9HiMtAAAFjosEgCRJOnNY81OMR3M6DOCY1Z0rGFlXM485IIJxzADQApFFgNZP GveisgkAWgzO0fiDT7r6eHwAAMaRRXymeSi+hc++ARmep9MNRq6Q0LyjPj/uYrpgHDMAmI4s4hvN ibblC9SYNftxf0wC+PgEqp/mFIxjBgDTcb0I0PrxnV4ALRlZBAAAmIks4htP10y0ZJ7GrNmow0i9 p3X5ylM/mo0tRDCOGQBaAq4X8ZmnKUeTotjv6wka2Y/mmAPSibNd8admma80+/F1zE6ufpw3NDsx UuNVAMcMAMcOsog/fJpdfCrWodmPZqPQale3+MFgJ/pl7ks93fbU4h8j/ejXeFqqble3mE6eM5Xf FwHQkvFv4wEAADNxvQgAADATWQQAAJiJLAIAAMxEFgEAAGYiiwAAADORRQAAgJnIIgAAwExkEQAA YCayCAAAMBNZBAAAmIksAgAAzEQWAQAAZiKLAAAAM5FFAACAmcgiAADATGQRAABgJrIIAAAwE1kE AACYiSwCAADMRBYBAABmIosAAAAzkUUAAICZyCIAAMBMZBEAAGAmsggAADATWQQAAJiJLAIAAMxE FgEAAGYiiwAAADORRYBAkudM1bztzlDN4jR5cZr6NgC0PmQRAABgplBlAwyQZdn9T0mS3P90J8uy zlLjAtVPoDTnePTXZXxfAABaJrKIz9RTo7oFzUP9yKtbAAAtHOdofKM51UmSpPh0jmbAvgCA1kFK SUlx/ZGdne22CBo05z8dvtYHi+bcLl/X5Ws9AMBcnKNpEu4fzV233SdI9/lS8TlefdJBs91J8xhA Iyt1eN0uJ/0tEqoCJ08b7n5b3RUAINiRRZqEe87Qnz69FjiXak7eTuq7q/tUtzgbFS1eGdku9SJF i7pAs93IugJC53Fo0vUCAJzIIr6RJCmAU2MAu3KnGGQTrUWT5roMPmheC4wwsiIFX+sBAIFFFvGZ c2ZVtLj/aZAfsyY0ue8OHlIACDpkEX8oJjz/UoUfd4Em90fSv30BADARWSQADJ6DOEboXH7hpD6w 5GpXNvmOfQEAQYcsggAzkgM0a8zKEJrByMmU8QDAsYYsgmMdgQMAzMXvrvpG5zM0mhn7AgBaB7KI bzSvdTDr5IJBnsasaAkIzXWJhqvTLPCD5rpa+L4AAKhxjsZn6ilQZ/JTFOtUeuK6u/OGHz0I1TA0 W3yis12aPXstcLYrm4QQqnr9rjx1AgBoscgi/vBpwtMs1mzUpF/paam6Xd3SSDod6ixy8lqgoFOv swgAEBQ4RwMAAMxEFjlGcV0FAKCF4BzNMUF9fQZBBADQQpBFjgkkDwBAi8U5GgAAYCayCAAAMBNZ BAAAmIksAgAAzMS1q/7gtz4N8vR7qS58tRgAQBbxmXr6VLdA8LAAAIzhHI1vNOdXSfWvogAAAIPI IoGhDigAAMAIztEEnuYxEnVYUZepa4SqzL8a9bqEVplX6n7UnbjXuG6rz2qpb+t3JVQF7seo9CsB AC0ZWaRJqOdC9ckdIzUBaVEX6LfrUNerO3HPB+p6JyM16kXqFv12AEBQ4ByNbyR/Lw0xckdFjeYU 60eNJ+o7+sHgunxlfLs0KwEAQYTjIj5Tz4jNPBc28+paMoIIALQCZBF/KOY/v2dE9af8lq9Fjdm/ hx0A0KKQRQLAeaTE13lR8y5+zPRe76I+kONqVzZ5E6gxG9FE3QIAWhqyiDk0J3X/GOlHs8bXMfha 30jNuS4AgIm4dhUAAJiJLOKblnDioCWMAQCAQCGL+Ebz2gsjJy8UNZr9KGjWGOzHvVGzwA+e1tUU PK1LsxEAENS4XsRn6mlSHUTUU6a6Rt2PmrrGYD9G8oq6K688deU3RYdeh+3HmAEALRxZxB9eZ0Sv BU5GygJS47XAOONdGazUKdNZJLwtBQAEC87RAAAAM5FFAACAmcgiAADATGSRwOM6BgAAjCOLAAAA M5FFAACAmcgigBBCyHOmat52Z6hmcZq8OE19GwDgCVkEAACYiSzSeqh/pdRcjRxPI+8OAAgWZBEA AGAmsggAADCTlJKS4vojOzvbbRHQKLKBf75YRyPvDgAIFhwX8YfckP5SJ0WNk36NYqmTosbJ4FJ3 yiIhhC+VOtzvqNOJa5GnAk3qSv1+FEudFDVm8fRNHAA41vDv9PpMVn1eV7eoP9Cra4y0GOlH1Jfp zLLqu6j7Ubc4GxUtXrk60ezQSb1I3aKmrjHSou5WXQMAMBHHRXyjOY1JkuR1zlbUBKofvxkZTxPR XJfX7VLfS90iDPQjjNUAAJoNWQRBQDN2BDtp3IvKJgA4JpFF0NK1yiACAHDhehHTcJrAK+dDpBNE eAwBoBUgi5hGZ4qFk/Mh0jku4qkdABBEOEeDlq61XmrKd3oBwIksgiDQWuMIAECQRXylOSnqnERw UdRo9iPMuwBCczzqloDwtC79x1B9L3WLk2YjAKDF4noRn6mnQPUkqp4O1TXqfpyNihYjXP04b/jX iXo86hafKO6uH8WMjNl5L/1+nI2KFgBAS0YW8YfX2c5rgZN+mael6nZ1iztPS9Xt6pZG0ulQZ5GT ZoG6Ud3iztNST+3NRp4zld8XAQAn/m28wPN6uiGItKZtAQC0TFwvAo8IIgCAZsA5GtThwgsAgCnI IoEXpFN4kA4bABDsOEcDAADMRBYBAABmIosAAAAzkUUAAICZyCIAAMBMZBEAAGAmsggAADATWQQA AJiJLAIAAMxEFgEAAGYiiwAAADORRQAAgJnIIgAAwExkEQAAYCayCAAAMBNZBAAAmIksAgAAzEQW AQAAZiKLAAAAM5FFAACAmcgiAADATGQRAABgJrIIAAAwE1kEAACYiSwCAADMRBYBAABmIosAzU2e M1XztjtDNYvT5MVp6tsAEFzIIgAAwExkEX/IDSkXu9Ffalyg+gmU5hyPr+vytR4AYK5QZQO8kWVZ kiT9FpiFIAIAQYfjIr7RjB2SJDEFtgSaewcA0MJJKSkprj+ys7PdFkGDr7Odr/XBojm3y+C6XGUG 6wEALQTnaJqE+2ES1233CdJ9vlQcU1GfANJsd9I8HtPISh1et8tJf4uEqsDJ04a731Z35UT+AIDg RRZpEu45Q3+O9Frg+qyvXFBPfXd1n+oWZ6OixSsj26VepGhRF2i2G1mXk9cCfTqPQ2O6BQAYRBbx jSRJjZz53AWwK3eKQTbRWjRprsvgg+a1QJORnvU18u4AgEYii/jMObMqWtz/NKjxkyh4DAGgFSCL +EMx//k3I/pxF7jz72EHALQ0ZJEAMHgO4hihc/mFk/rAkqtd2QQAOAaQRRBgRiKFZo1ZeU4zGDmZ Mh4AONaQRRDEdGKEcQQOADAXWcQ3Zn12h5qnHRGQgAIAaDb8BrxvNK91aOEBxdOYFS0Bobku0XB1 mgUAgGMWx0V8pp5udYKIolin0hPX3Z03/OhBqIah2eITne3S7NlrgbNd2SSEUNV7KgMABCmyiD98 mg41i/+/vbs5ctsIAjDKqZKScHQ+bgwKwDHsUaHorjyUhA/wYWQWhB78cYltDPhe+UA1hyCpCz8B Q7o5bFpeOXdvnMfJBy0ccOGuanXBxK71uxYDkM41GgAgkxZ5USff4wLA63CN5iXE/RlCBICT0CIv QXkAcFqu0QAAmbQIAJBJiwAAmbQIAJDJ3tVHxN8wHf+xuq9p3nuEs31N94Ov54MPB6AXWmS3+BkZ J7f/EyR+mRYAGHONZp+57NAcAPAYLXIdMZIA4Pxco3mOxzpgdd9J83TLwrJ4123zQW57Vi4YH2Th ha2+96Z4Xmr5OE95RwAcSoukaX6sjidxwdy8/rH5uVvF48SDxEkdTiar7gdpHrCKd8VJFNdsmcTD xjUAJHKNJkfz47Bs23cSH/iAyXM1X89Bms+1+t7jo+LktuE4t21rAPg0WoQONLMDgGvQIpydEAG4 NvtFzmvuUsLrfDDXt7/wfpt/PwD0RYucWvNj+HXOE9S3ufB+5+YAdMQ1mufwD/TjzJ0fAuAatAgd kCMAF6ZF9ml+KC5cRJiz5ThxwXHmXs9k8hRzz7X8dxgfFSdVcwjAadkvslv8CGx+iN7X1Btxzepx 4oL7fDJZfa4t4tPFyS6Th49fVTzyltdcH7V8nDqcTAA4My3yiC2fdk9Zs7qgWl42d2+cx8kHLRxw 4a6quSAO42Rs7t65OQCfzzUaACCTFmHW5IIIABzBNRp+s/ECgBRahN+UBwApXKMBADJpEQAgkxYB ADJpEQAgkxY5VvxySu/e/32v/03vCLasAQAtwj5vX9/evr5NpwDwKC0CAGTSIhzF6RMAtvBbZ7vF LSDxV8LGa+6347IV4Ylut9uteZDJysmaYZhOqrn5h913ijRzpLmPZMvK5hoAuvfXyPQ+tol1crdw 17rmY+NwdRIXVHPzDZo9MTG3pjmPwy0TAC7ANZonKKV8qDl2KeWPhmie25is6cHb17dxarz/+x7P gkzWAHANWgQAyGS/yCM+7yzI0zXPowBAHi2y2zAMcRdqZp0kPvWRXI4BeBFaZJ9miCQ72+t5krhf BIBLsl8EAMikRQCATFpkn0/9+u4Wc1/fbQ77Mff13eYQgK7ZL7LbrhyZLD5kr0kzR8ZPFH+S5D7f 714D9UZzV8eWNauaOfLYoQA4szL+udVfv36N7gIAOJxrNABAJi0CAGTSIgBAJi0CAGTSIgBAJi0C AGTSIo8Yvn9r3h7btObHz+HHz3gbAF6HFgEAMmkRACCTFgEAMmkRACCT/x8NAJDJeZE+zH0TBwB6 p0UAgExaBADIZL8IAJDJeREAIJMWAQAyaREAIJMW6YPv9AJwVVoEAMikRQCATFoEAMikRTowfP9W /v5nOgWAS/BbZwBAJudFAIBMWgQAyKRFAIBMWgQAyKRFAIBMWgQAyKRFAIBMfbTIMAzDMEynAED/ +miRUkopRY4AwPX00SKVHAGA6+mpRQCA69EiAEAmLQIAZNIiAECmzlqkbl+1gxUALuPLdHBuwzCU UqZTAKBbnZ0XAQAuRosAAJm0CACQSYsAAJl6ahEbVwHgevr4Hk39Eq8QAYDr6aNFVAgAXFVP12gA gOvRIgBAJi0CAGTSIgBAJi0CAGTSIgBAJi0CAGTSIgBApnaLDMNQf+oUAOBQ7RYppZRS5AgAcLR2 i1RyBAA42lKLAAAcTYsAAJm0CACQSYsAAJlWWqRuX7WDFQA4yJfp4E/DMJRSplMAgCdZOS8CAHAo LQIAZNIiAEAmLQIAZFpqERtXAYCjtb9HU7/EK0QAgKO1W0SFAACfY+kaDQDA0bQIAJBJiwAAmbQI AJBJiwAAmbQIAJBJiwAAmbQIAJBJiwAAmbQIAJBJiwAAmbQIAJBJiwAAmbQIAJBJiwAAmbQIAJBJ iwAAmbQIAJBJiwAAmbQIAJBJiwAAmbQIAJBJiwAAmbQIAJBJiwAAmf4DanhhOs8hFl8AAAAASUVO RK5CYII= --nextPart2725434.Lt9SDvczpP Content-Disposition: attachment; filename="java_text_block_previous_ts_grammar.png" Content-Transfer-Encoding: base64 Content-Type: image/png; name="java_text_block_previous_ts_grammar.png" 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 hYtz24bQgJsAAAAASUVORK5CYII= --nextPart2725434.Lt9SDvczpP-- From debbugs-submit-bounces@debbugs.gnu.org Fri Mar 03 17:32:21 2023 Received: (at 61913) by debbugs.gnu.org; 3 Mar 2023 22:32:21 +0000 Received: from localhost ([127.0.0.1]:34123 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pYDwr-00006w-Ik for submit@debbugs.gnu.org; Fri, 03 Mar 2023 17:32:21 -0500 Received: from mail-pj1-f54.google.com ([209.85.216.54]:46717) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pYDwq-00006f-1w for 61913@debbugs.gnu.org; Fri, 03 Mar 2023 17:32:20 -0500 Received: by mail-pj1-f54.google.com with SMTP id q31-20020a17090a17a200b0023750b69614so3703893pja.5 for <61913@debbugs.gnu.org>; Fri, 03 Mar 2023 14:32:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1677882734; h=to:cc:date:message-id:subject:mime-version :content-transfer-encoding:from:from:to:cc:subject:date:message-id :reply-to; bh=1myuNm6gv4aFUKAZnsvYISmkNpRJelFl1fF3v1LtG24=; b=ijRDDEND4Oxc5SW7mhokJ8jqj4eVKkyJNGa6u188gu970AU8039++2Hn6zam6+iFes PpnI2zJMGxMacpDSivHssP8KpcCapB06CErtZU++MnUBt7XejGJlRZ2bGK99xkoIzzsN APqaXNGbJByfUKGqAzDN27pMB7vYlA+QUztIoMvpE2J6BJzSUjJ8m6EtHSE0Hn28gepW WcFZ+UKpQr74Vc+5Oe41o4pHEmD4cgXRMZm3IThEckTpnMWfNAotyADCoLA55BpXr+QX TyemEvTAEHKAK4okt5YB/eXkLQ/YAQDOyl8GII0DfZ37V7sKftESzPJQqP+UjnJFQWf5 2OFg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1677882734; h=to:cc:date:message-id:subject:mime-version :content-transfer-encoding:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=1myuNm6gv4aFUKAZnsvYISmkNpRJelFl1fF3v1LtG24=; b=moFKZyanXMsr69lLprv73NR4p6L/MCdVMoSmC049oOfaZXI6WZQxiQ5EUvN3Y+aWDV IQzJPjsKzeUnc6Mh+AThv7m64XM4iy6wnwNcdcv6gycDMJSggkB2uAYhPIwTwN0ZHh1B bqPLNiXfCM5occ7PQ4QjBSkiryqs6pm4pE6qYW851VAX+LKfqpo1L5SsuchqTku/YQrH BeHWQFd8WGZ5N/O31f+vilYHd3yOODDHRFmoLloCbp2csmWJlxw4IhuXDNadMmq6KYZ1 g2Tc5TCx3ssx/+WbmWaUKDK9nOpG6CSdEmAOfNcBhGedC3WRVnSLeETK2I0RQjRsGQBz zl7Q== X-Gm-Message-State: AO0yUKUOFZDVrNRK2N0rydaF1mgca1Fb1jfugXhbNhKEezBBQ6hTNHNu 6iEMeV7+T+99cPQ57jil4V3n7JVQKokQkA== X-Google-Smtp-Source: AK7set/y1KEw/bFcFtlTtNDdwg/b4n7JENONhrmMBeboiugk3Ji6X+NThlg9XKgc9jHaWoSpthy1kg== X-Received: by 2002:a17:90a:4146:b0:233:f393:f6cd with SMTP id m6-20020a17090a414600b00233f393f6cdmr3368546pjg.5.1677882734189; Fri, 03 Mar 2023 14:32:14 -0800 (PST) Received: from smtpclient.apple (cpe-172-117-161-177.socal.res.rr.com. [172.117.161.177]) by smtp.gmail.com with ESMTPSA id lx3-20020a17090b4b0300b00233bc4edb77sm3882525pjb.25.2023.03.03.14.32.13 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 03 Mar 2023 14:32:13 -0800 (PST) From: Yuan Fu Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3731.400.51.1.1\)) Subject: Re: bug#61913: java-ts-mode query error for string highlight, due to recent commit in tree-sitter-java. Message-Id: <23F92D53-993F-43D6-8A22-00F7AAE10505@gmail.com> Date: Fri, 3 Mar 2023 14:32:02 -0800 To: Vincenzo Pupillo X-Mailer: Apple Mail (2.3731.400.51.1.1) X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 61913 Cc: Eli Zaretskii , 61913@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Vincenzo Pupillo writes: > Yes, indeed "text_block" are not recognized by earlier versions of = tree-sitter-java.=20 > I have prepared a new patch that checks if "text_block" are recognized = and adjusts the query accordingly. > > Also java-mode seems not to recognize "text_block". > You can check the result in the attached images. > > Thank you. > > Vincenzo > > In data gioved=EF=BF=BD 2 marzo 2023 14:01:56 CET, Eli Zaretskii ha = scritto: >> > From: Vincenzo Pupillo >> > Date: Thu, 02 Mar 2023 13:21:05 +0100 >> >=20 >> > a recent commit in tree-sitter-java = (https://github.com/tree-sitter/tree-sitter-java/commit/2b3b776b953a34ccff= b647dd89732db79690d4c5)=20 >> > removed "text_block" from grammar.js. This causes a bug in = java-ts-mode when treesit-fon-lock-level is > 1 >> >=20 >> > Error during redeployment: (jit-lock-function 8295) reported >> > (treesit-query-error "Node type error at" 42 "(string_literal) >> > @font-lock-string-face (text_block) @font-lock-string-face" >> > "Debugging the query with `treesit-query-validate'") >> >=20 >> >=20 >> > The attached patch fixes the problem.=20 >>=20 >> Wouldn't removing text_block from our code cause problems if someone >> uses tree-sitter-java from before the removal? >>=20 >> Is there a way to write code which handles text_block if it exists? >>=20 Tree-sitter language grammars really need some versioning system. I wonder how do we propose such things to them tho... Yuan From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 04 02:10:38 2023 Received: (at 61913) by debbugs.gnu.org; 4 Mar 2023 07:10:38 +0000 Received: from localhost ([127.0.0.1]:35157 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pYM2Q-0008A9-Br for submit@debbugs.gnu.org; Sat, 04 Mar 2023 02:10:38 -0500 Received: from eggs.gnu.org ([209.51.188.92]:41048) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pYM2O-00089w-WA for 61913@debbugs.gnu.org; Sat, 04 Mar 2023 02:10:37 -0500 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 ) id 1pYM2J-0002zL-Au; Sat, 04 Mar 2023 02:10:31 -0500 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=pfNr6vP6JYU2CBZsC6GRsIdaj9GdJxn3tKapybBHlq4=; b=QVWNe3vQx9gO D2VUkBu907m9gJXmn23NPZxgitrT7BKrAvMr2dE4xFTj4gqpKz/iyHUa+xna0J7/aNc8ZT0wcIKkU ceok10cuxr9orlTUfwkO/NdBuFxseTTjmCox/Ugtu16jjW54WUo0S4aj/FFFMPMmLighBsmfIgcfd HjFXwyVcietoZ6Lg0ZWqpVG5iS3KnwjS+FK1gjaNsRsFUm+c7oCYg5GF0OUfoHnkWSE6OyPo0TFg6 +L93vWDm4KcwB6vG/JyJECHH4IzMcsB0QRe4ZjOmtECoiFzP2ZPdsaladsqmqUxaDYjDyP/LCv14A MhCNRC6Yy8q0GRD+Lu5JQQ==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pYM2I-0005w8-1b; Sat, 04 Mar 2023 02:10:31 -0500 Date: Sat, 04 Mar 2023 09:10:17 +0200 Message-Id: <83h6v1at5y.fsf@gnu.org> From: Eli Zaretskii To: Yuan Fu In-Reply-To: <23F92D53-993F-43D6-8A22-00F7AAE10505@gmail.com> (message from Yuan Fu on Fri, 3 Mar 2023 14:32:02 -0800) Subject: Re: bug#61913: java-ts-mode query error for string highlight, due to recent commit in tree-sitter-java. References: <23F92D53-993F-43D6-8A22-00F7AAE10505@gmail.com> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 61913 Cc: v.pupillo@gmail.com, 61913@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Yuan Fu > Date: Fri, 3 Mar 2023 14:32:02 -0800 > Cc: Eli Zaretskii , > 61913@debbugs.gnu.org > > >> > Error during redeployment: (jit-lock-function 8295) reported > >> > (treesit-query-error "Node type error at" 42 "(string_literal) > >> > @font-lock-string-face (text_block) @font-lock-string-face" > >> > "Debugging the query with `treesit-query-validate'") > >> > > >> > > >> > The attached patch fixes the problem. > >> > >> Wouldn't removing text_block from our code cause problems if someone > >> uses tree-sitter-java from before the removal? > >> > >> Is there a way to write code which handles text_block if it exists? > >> > > Tree-sitter language grammars really need some versioning system. I > wonder how do we propose such things to them tho... That'd be hard, given that many of them don't even make releases. It should be enough for our purposes to have a possibility of querying the grammar about support for specific features. Then the version will not matter, only the supported features will. Maybe we could do that ourselves, on-the-fly, like we do with programs when we want to know whether they support some command-line switch? From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 04 04:27:48 2023 Received: (at 61913) by debbugs.gnu.org; 4 Mar 2023 09:27:49 +0000 Received: from localhost ([127.0.0.1]:35245 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pYOBA-0003KZ-JS for submit@debbugs.gnu.org; Sat, 04 Mar 2023 04:27:48 -0500 Received: from mail-pj1-f45.google.com ([209.85.216.45]:53760) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pYOB8-0003KK-Ah for 61913@debbugs.gnu.org; Sat, 04 Mar 2023 04:27:47 -0500 Received: by mail-pj1-f45.google.com with SMTP id y2so4994438pjg.3 for <61913@debbugs.gnu.org>; Sat, 04 Mar 2023 01:27:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1677922060; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=cwQil4D8VnJ0o1gTU+uCjCgsqXuv7g9iIXbCw5/IR2o=; b=DtmpYFjUIIJPCUpv+ZoMivBfzm3nVYTa01BWSxqIjhAS7aWFGLXtDLMlQlGQeBKL9e oclHFHLPqgxp9HgVIAsWDDPni9CclvsSwbi02EI82Mxx2+coAh8SIoX0me+z3OMHzoaZ D5IWnVSl6JqjaHoxh1PR1WjZGhRYb1IXC3mJbNZBjhBn2lTaRVchneNgIv/3YVuuIvWz ID2pNmC68tPkuc0gJKPWPY/DrqSNP/ltFjR8jc43pd/nhtrEL7NH8fChaFSeqjvF0vWQ e3iXJNdMwaZO6vrJ7SIIirhveeIh+UzbBvIOThf5QJ2A/ZUDEJ3hww9MVXSlm+Ha7kXj pldA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1677922060; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=cwQil4D8VnJ0o1gTU+uCjCgsqXuv7g9iIXbCw5/IR2o=; b=gIwwdyq8Zk4CQ//e3gy16RDEWt2eUt8Vp8u35GvHM1xyYZeUeoZkdRJMlQy68liKoS A42vhpNd/eUiyDpagrXtiacErrbnwHvJAlpnV2L1eVxs7MJaf/AlSA5zsZEJzluAncFO +95WD7oACe0duTHqigi+k2YaHMm0fcSLr2Lcmbu9lhIr9Ufk+xn3GVfBa9zlb9kIDDZb keK7LxFLgqnXXPsR46c+sjD8pPxIBNPdlAXiyl/Yz/yYht7KeGfoHTSeAEMdKQDuZKd1 8t/nOBpHIWydnrZW6eDM0iIciveo+w5oL5Xa51WZH0CglINZH4wcex0sffU9tNUn1XUw S93w== X-Gm-Message-State: AO0yUKUq/tXpAu4+uaWqckilsDcNQKzwwPOaL+aoDjnKn9mGEHqXslHc 9E5ZFddJ9Oo5KIGF+dOJC5s= X-Google-Smtp-Source: AK7set/WvleGg8gjSs0lE5VT5QTLX7ILvLh9HKdu/eNTERrj5I6M2OYMNf8s4CsvbPbGBLLhwvvH7Q== X-Received: by 2002:a05:6a20:e20:b0:cb:fe3e:e33 with SMTP id ej32-20020a056a200e2000b000cbfe3e0e33mr4892126pzb.42.1677922060485; Sat, 04 Mar 2023 01:27:40 -0800 (PST) Received: from smtpclient.apple (cpe-172-117-161-177.socal.res.rr.com. [172.117.161.177]) by smtp.gmail.com with ESMTPSA id c1-20020a63d141000000b004dff15fc121sm2830540pgj.36.2023.03.04.01.27.39 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sat, 04 Mar 2023 01:27:40 -0800 (PST) Content-Type: text/plain; charset=utf-8 Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3731.400.51.1.1\)) Subject: Re: bug#61913: java-ts-mode query error for string highlight, due to recent commit in tree-sitter-java. From: Yuan Fu In-Reply-To: <83h6v1at5y.fsf@gnu.org> Date: Sat, 4 Mar 2023 01:27:29 -0800 Content-Transfer-Encoding: quoted-printable Message-Id: <7F86A486-0C53-4649-8373-91E093A67A19@gmail.com> References: <23F92D53-993F-43D6-8A22-00F7AAE10505@gmail.com> <83h6v1at5y.fsf@gnu.org> To: Eli Zaretskii X-Mailer: Apple Mail (2.3731.400.51.1.1) X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 61913 Cc: Vincenzo Pupillo , 61913@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) > On Mar 3, 2023, at 11:10 PM, Eli Zaretskii wrote: >=20 >> From: Yuan Fu >> Date: Fri, 3 Mar 2023 14:32:02 -0800 >> Cc: Eli Zaretskii , >> 61913@debbugs.gnu.org >>=20 >>>>> Error during redeployment: (jit-lock-function 8295) reported >>>>> (treesit-query-error "Node type error at" 42 "(string_literal) >>>>> @font-lock-string-face (text_block) @font-lock-string-face" >>>>> "Debugging the query with `treesit-query-validate'") >>>>>=20 >>>>>=20 >>>>> The attached patch fixes the problem.=20 >>>>=20 >>>> Wouldn't removing text_block from our code cause problems if = someone >>>> uses tree-sitter-java from before the removal? >>>>=20 >>>> Is there a way to write code which handles text_block if it exists? >>>>=20 >>=20 >> Tree-sitter language grammars really need some versioning system. I >> wonder how do we propose such things to them tho... >=20 > That'd be hard, given that many of them don't even make releases. >=20 > It should be enough for our purposes to have a possibility of querying > the grammar about support for specific features. Then the version > will not matter, only the supported features will. Maybe we could do > that ourselves, on-the-fly, like we do with programs when we want to > know whether they support some command-line switch? We can test whether a node type exists in the grammar, by trying to = compile a query using that node type. If it returns successfully, then = the node type exists. But there are other assumptions we make about a = grammar, like =E2=80=9Cthe 2nd child of a if node must be the = condition=E2=80=9D. Hopefully these more subtle things don=E2=80=99t = change easily, because we can=E2=80=99t easily test them. Yuan From debbugs-submit-bounces@debbugs.gnu.org Sun Mar 05 08:51:24 2023 Received: (at 61913) by debbugs.gnu.org; 5 Mar 2023 13:51:24 +0000 Received: from localhost ([127.0.0.1]:38821 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pYoln-0001AZ-QN for submit@debbugs.gnu.org; Sun, 05 Mar 2023 08:51:24 -0500 Received: from mail-ed1-f49.google.com ([209.85.208.49]:38470) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pYoll-0001AL-IC for 61913@debbugs.gnu.org; Sun, 05 Mar 2023 08:51:22 -0500 Received: by mail-ed1-f49.google.com with SMTP id cw28so28306813edb.5 for <61913@debbugs.gnu.org>; Sun, 05 Mar 2023 05:51:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=0O2BDNzHI1T4+fw2hvCYHS/MjkNfHT5/9KF8Ve3MYT4=; b=b0e7V8LgxzKCPo4FovUfntfqwByAUalLfv48ljDFFehyl3S84tUNJkol/JP2WbVMLG anHWp+UvFpRX2oKnzSfQS0rqhHf1RltxMd0/L1D6sb0oqQX9GI5hfqMmWyPcJzXvztbz /eF5Fk9MOyEkg89MpVChMxpVhcOcwmgHLYtWsEr1yDY0mxSg6E5cp2imyj43KgMA778N JoBmsw28OeL+wtazi6diU/wy/q10Mc8Wk8N0UkKIidFGx9dZO6YXH27maaIW3nDPBoQ5 LnnPFok10PUUY0x2hFJYorqTHEX5iHyYpnxH90rRSih5KJ59WVRaEunsM2EzaeYYLm3V C/eg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=0O2BDNzHI1T4+fw2hvCYHS/MjkNfHT5/9KF8Ve3MYT4=; b=CJeE+3azTItlJSQKmV3eEwCbCKaxTjwbzxNrnRtbuvPhNGKFiKgcmUVivBh4G5lK3V MUIO8TU+NMnX4N9U8d1drT0TsAozeX9T4VDiPi5sPIHd8q8ZdYzMLw3XhOMPmePfMyrK lieXE0pg1htZ50km6JLOoZecHGnMHnJFUAyO9/dWPkZpBMMdA4tFynqZ6KPrswskSWUH u4oS/5k6M2mMgghsF8hy/+F/+FqVAK14bv1OUyffUVCx5zFm8ndobWfKgsW1sfLZRx7/ d3ENWuurUp2CeM6EW9Km4WoET4erbEIKDAIrDP9Yw0mv1nsYKXoQSsnWS+NH3H1kaBby rAhg== X-Gm-Message-State: AO0yUKW1WsF86HMDpVsaX7O50VW9IXrkRtFjQRM8oLVdFvK1tTdi1ygR KiH3rhfMCYL4XPp1bZRgA1Sa9jMROVHWH8KpPEQ= X-Google-Smtp-Source: AK7set+LMCTl9OR0LRDu6VX0HglU7e7g9tpRTRMgZ7N7gXDHiMl89A7w6GGA0yiyBfwxD2afV6z6rl0rneTT6WduH/s= X-Received: by 2002:a17:906:4997:b0:877:7480:c75d with SMTP id p23-20020a170906499700b008777480c75dmr3662318eju.0.1678024275433; Sun, 05 Mar 2023 05:51:15 -0800 (PST) MIME-Version: 1.0 References: <23F92D53-993F-43D6-8A22-00F7AAE10505@gmail.com> <83h6v1at5y.fsf@gnu.org> <7F86A486-0C53-4649-8373-91E093A67A19@gmail.com> In-Reply-To: <7F86A486-0C53-4649-8373-91E093A67A19@gmail.com> From: Vincenzo Pupillo Date: Sun, 5 Mar 2023 14:50:39 +0100 Message-ID: Subject: Re: bug#61913: java-ts-mode query error for string highlight, due to recent commit in tree-sitter-java. To: Yuan Fu Content-Type: multipart/alternative; boundary="000000000000dc9b7305f6277882" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 61913 Cc: Eli Zaretskii , 61913@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --000000000000dc9b7305f6277882 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable nvim-treesiter seems to use a "lockfile" in which they put the version of the language parser to be installed ( https://github.com/nvim-treesitter/nvim-treesitter/blob/master/lockfile.jso= n) to allow some stability I suppose. Il giorno sab 4 mar 2023 alle ore 10:27 Yuan Fu ha scritto: > > > > On Mar 3, 2023, at 11:10 PM, Eli Zaretskii wrote: > > > >> From: Yuan Fu > >> Date: Fri, 3 Mar 2023 14:32:02 -0800 > >> Cc: Eli Zaretskii , > >> 61913@debbugs.gnu.org > >> > >>>>> Error during redeployment: (jit-lock-function 8295) reported > >>>>> (treesit-query-error "Node type error at" 42 "(string_literal) > >>>>> @font-lock-string-face (text_block) @font-lock-string-face" > >>>>> "Debugging the query with `treesit-query-validate'") > >>>>> > >>>>> > >>>>> The attached patch fixes the problem. > >>>> > >>>> Wouldn't removing text_block from our code cause problems if someone > >>>> uses tree-sitter-java from before the removal? > >>>> > >>>> Is there a way to write code which handles text_block if it exists? > >>>> > >> > >> Tree-sitter language grammars really need some versioning system. I > >> wonder how do we propose such things to them tho... > > > > That'd be hard, given that many of them don't even make releases. > > > > It should be enough for our purposes to have a possibility of querying > > the grammar about support for specific features. Then the version > > will not matter, only the supported features will. Maybe we could do > > that ourselves, on-the-fly, like we do with programs when we want to > > know whether they support some command-line switch? > > We can test whether a node type exists in the grammar, by trying to > compile a query using that node type. If it returns successfully, then th= e > node type exists. But there are other assumptions we make about a grammar= , > like =E2=80=9Cthe 2nd child of a if node must be the condition=E2=80=9D. = Hopefully these > more subtle things don=E2=80=99t change easily, because we can=E2=80=99t = easily test them. > > Yuan > > --000000000000dc9b7305f6277882 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
nvim-treesiter seems to use a "lockfile" in whic= h they put the version of the language parser to be installed (


> On Mar 3, 2023, at 11:10 PM, Eli Zaretskii <eliz@gnu.org> wrote:
>
>> From: Yuan Fu <casouri@gmail.com>
>> Date: Fri, 3 Mar 2023 14:32:02 -0800
>> Cc: Eli Zaretskii <eliz@gnu.org>,
>> 61913@d= ebbugs.gnu.org
>>
>>>>> Error during redeployment: (jit-lock-function 8295) re= ported
>>>>> (treesit-query-error "Node type error at" 42= "(string_literal)
>>>>> @font-lock-string-face (text_block) @font-lock-string-= face"
>>>>> "Debugging the query with `treesit-query-validate= '")
>>>>>
>>>>>
>>>>> The attached patch fixes the problem.
>>>>
>>>> Wouldn't removing text_block from our code cause probl= ems if someone
>>>> uses tree-sitter-java from before the removal?
>>>>
>>>> Is there a way to write code which handles text_block if i= t exists?
>>>>
>>
>> Tree-sitter language grammars really need some versioning system. = I
>> wonder how do we propose such things to them tho...
>
> That'd be hard, given that many of them don't even make releas= es.
>
> It should be enough for our purposes to have a possibility of querying=
> the grammar about support for specific features.=C2=A0 Then the versio= n
> will not matter, only the supported features will.=C2=A0 Maybe we coul= d do
> that ourselves, on-the-fly, like we do with programs when we want to > know whether they support some command-line switch?

We can test whether a node type exists in the grammar, by trying to compile= a query using that node type. If it returns successfully, then the node ty= pe exists. But there are other assumptions we make about a grammar, like = =E2=80=9Cthe 2nd child of a if node must be the condition=E2=80=9D. Hopeful= ly these more subtle things don=E2=80=99t change easily, because we can=E2= =80=99t easily test them.

Yuan

--000000000000dc9b7305f6277882-- From debbugs-submit-bounces@debbugs.gnu.org Sun Mar 05 10:09:51 2023 Received: (at 61913) by debbugs.gnu.org; 5 Mar 2023 15:09:52 +0000 Received: from localhost ([127.0.0.1]:39000 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pYpzi-0003BL-4E for submit@debbugs.gnu.org; Sun, 05 Mar 2023 10:09:50 -0500 Received: from eggs.gnu.org ([209.51.188.92]:60842) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pYpzc-0003Av-Pl for 61913@debbugs.gnu.org; Sun, 05 Mar 2023 10:09:45 -0500 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 ) id 1pYpzX-0002qh-5X; Sun, 05 Mar 2023 10:09:39 -0500 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=3rjV108vOBu3wsmJSqBkvIsTZcoXO09HNT+fZBZluy8=; b=rMZfp6IXEnqW 06gbiwqNZpytFs4wbiAyALICwseyc8pFtPl0H/LxpKVyGS0l7IffkCqaubyi8DoFB4ASLvInZdcUz Lh1HxeXAUGq9gix7RwMivg3zWjVBHOh+KOTr39dsbaTtBqYtPWqbJprMjzFpFF/EN7FrTEqvG+7JU 1g7kabUoSjLHtg8o+UIZRnx93gCJf3PaYDRXj1nVK29r2mym8jl8rNrTdivRK9ky8B/HF+KY6qeGo DfGpb3NrQ5ZaEZ4qvejZcioeWObVUtH0DknrKqb7d04hYa9uoftOIhuTmrYStS7HrMeOJAgo3u1ny 8sd0E7ZWsx287LMSTHHBBA==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pYpzW-0002ts-La; Sun, 05 Mar 2023 10:09:38 -0500 Date: Sun, 05 Mar 2023 17:09:29 +0200 Message-Id: <83lekb8cba.fsf@gnu.org> From: Eli Zaretskii To: Vincenzo Pupillo In-Reply-To: (message from Vincenzo Pupillo on Sun, 5 Mar 2023 14:50:39 +0100) Subject: Re: bug#61913: java-ts-mode query error for string highlight, due to recent commit in tree-sitter-java. References: <23F92D53-993F-43D6-8A22-00F7AAE10505@gmail.com> <83h6v1at5y.fsf@gnu.org> <7F86A486-0C53-4649-8373-91E093A67A19@gmail.com> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 61913 Cc: casouri@gmail.com, 61913@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Vincenzo Pupillo > Date: Sun, 5 Mar 2023 14:50:39 +0100 > Cc: Eli Zaretskii , 61913@debbugs.gnu.org > > nvim-treesiter seems to use a "lockfile" in which they put the version of the language parser to be installed > (https://github.com/nvim-treesitter/nvim-treesitter/blob/master/lockfile.json) to allow some stability I suppose. Those seem to be Git SHA hashes, but how can Emacs verify that the particular grammar shared library is of that revision or later? We can only tell users to verify that, which is not very reliable, and requires users to clone the repository. From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 06 01:12:58 2023 Received: (at 61913) by debbugs.gnu.org; 6 Mar 2023 06:12:58 +0000 Received: from localhost ([127.0.0.1]:41167 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pZ45i-0000Q3-1x for submit@debbugs.gnu.org; Mon, 06 Mar 2023 01:12:58 -0500 Received: from out-51.mta0.migadu.com ([91.218.175.51]:57943) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pZ45c-0000Pn-OJ for 61913@debbugs.gnu.org; Mon, 06 Mar 2023 01:12:56 -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=1678083171; 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=g9A6jUtP4tPrCR+dU8EBskXzR9Vy79C8Dh3c0FwCPj0=; b=pwZyQ00rftQ12obEYNm+LKq4VOkhQgFQ4pp0tttYcAsfuKTz31ZEgQIuatzlLLMODczOE8 dDJ5TbQs49T9Qai3Y3MsWpgORAwAphrkDH5iB0TJPNTjh2eeuAmnNC+oeem6VOTikj31XY lCB+NsQx39BRQ049JU2D6KVWq+J4xnZ1JS+eWsHboE5xnbVCVBsLDaNeMcNqgpByOkXEfM 8fd0tMO9EVraFVdTAsuq0Y1bPb5iCJmecA+QdfPrwPlYinnUkN31DYSv+RShXi1KWtXLG9 ULrY5jR0EXoPMAarotgStGENiOLdaPTmBbWyqHrQb7eDYLPs08HRueYyodDEZA== From: Theodor Thornhill To: Eli Zaretskii Subject: Re: bug#61913: java-ts-mode query error for string highlight, due to recent commit in tree-sitter-java. In-Reply-To: <83lekb8cba.fsf@gnu.org> (Eli Zaretskii's message of "Sun, 05 Mar 2023 17:09:29 +0200") References: <23F92D53-993F-43D6-8A22-00F7AAE10505@gmail.com> <83h6v1at5y.fsf@gnu.org> <7F86A486-0C53-4649-8373-91E093A67A19@gmail.com> <83lekb8cba.fsf@gnu.org> Date: Mon, 06 Mar 2023 07:12:49 +0100 Message-ID: <874jqyo1b2.fsf@thornhill.no> MIME-Version: 1.0 Content-Type: text/plain X-Migadu-Flow: FLOW_OUT X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 61913 Cc: casouri@gmail.com, Vincenzo Pupillo , 61913@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: >> From: Vincenzo Pupillo >> Date: Sun, 5 Mar 2023 14:50:39 +0100 >> Cc: Eli Zaretskii , 61913@debbugs.gnu.org >> >> nvim-treesiter seems to use a "lockfile" in which they put the version of the language parser to be installed >> (https://github.com/nvim-treesitter/nvim-treesitter/blob/master/lockfile.json) to allow some stability I suppose. > > Those seem to be Git SHA hashes, but how can Emacs verify that the > particular grammar shared library is of that revision or later? We > can only tell users to verify that, which is not very reliable, and > requires users to clone the repository. We could keep a header in the *-ts-mode.el file maybe? Something like: ;;; Grammar version: 95e84b5493e8d21060f1a905d2e5e3c5590bae45 Anyway, I think until we have such a system in place, we should strive to adhere to the most recent version of the grammar. The diff is ok, Vicenzo. Would you like to add a proper patch or should I just do it? I mean with a commit message and format like in CONTRIBUTE? Theo From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 06 09:03:56 2023 Received: (at 61913) by debbugs.gnu.org; 6 Mar 2023 14:03:56 +0000 Received: from localhost ([127.0.0.1]:41728 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pZBRU-0006vd-Ba for submit@debbugs.gnu.org; Mon, 06 Mar 2023 09:03:56 -0500 Received: from mail-ed1-f41.google.com ([209.85.208.41]:37536) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pZBRS-0006vQ-DH for 61913@debbugs.gnu.org; Mon, 06 Mar 2023 09:03:54 -0500 Received: by mail-ed1-f41.google.com with SMTP id j11so19451703edq.4 for <61913@debbugs.gnu.org>; Mon, 06 Mar 2023 06:03:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1678111428; 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=RsYuj4KrkCFDodmRqLT+hzVLy8s5n1mbYiYuYhII8rk=; b=IMx6xiFsDvvNP078dNPoOOQ6bOO0tvjiZs1dfF8hn4dOR0IJtc5HoHdEadDaVjZZXY 2vN5OdR6pOzsASX9XyQQrbblqxyGa40NfB39rSfC9q2pRKFH4DpP4IXnqBtNe1zOPMWS bg5mRvnac8MCX96GQAmHS8K5LCheDq1KXVHyeJ3Pwyq2E7Fk7/WwBb8s2Hv7xTH1LSPI wx2dOdW9FkIZKFxowKdxMgySARBAVvfpEYeJeOSGiCd4wWEZC1YlNMYARd57A4eA9kqZ y9zy6+MB7XaOKBpg53AWfKFXtjsPNDbQyph8dugxnRt2EOq5x5Yn1m/G13z1OzBpuQGE rYAg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1678111428; 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=RsYuj4KrkCFDodmRqLT+hzVLy8s5n1mbYiYuYhII8rk=; b=nq4fYDxV9074QHxNFYN3vlb5K3MF28ltZuycX+Gc0uyx3+UZ+VqO7D+OBRbDi5CXTl hFBf49x06Nsh+C3FjV4EaGKhbnTUCIbTJLaaCmBn8/QKq0wGeLHS6qTOaybb/Hnefiko RclekmDHWubSnLkjRNuHppqDSN2jJviw4oG+2Ep2hYHrbmb/TYZECxnhp6s7SKWjY4uR hbkHXbaGP3aKDdwcMDidvZRruNl8aalmRfNfP7JnHk6RzrWsgBgnG0yuQluJCX3BNML5 HW5wa6lYQ8FOjd3T+ZGF9tewhjTIEm2cpOolP2xieUHkel1IxWdBOG2Cv0jZgC6J/qbH REYg== X-Gm-Message-State: AO0yUKXzVF6OlZ697oKRWuO/OCGt0iWdSau3GqsTModXP7gCEWUZNKgE U1oPVi7wfgVlXPFmZzVzwag= X-Google-Smtp-Source: AK7set9WQy9bG+tIraHP1kI1bSkWszXwjQ79tADAx28l3lnGvAolgYp26eMGRi3a0nUcXWqHGerbiA== X-Received: by 2002:a17:906:fca8:b0:8ae:707:e129 with SMTP id qw8-20020a170906fca800b008ae0707e129mr10629514ejb.19.1678111428060; Mon, 06 Mar 2023 06:03:48 -0800 (PST) Received: from 3-191.divsi.unimi.it (3-191.divsi.unimi.it. [159.149.3.191]) by smtp.gmail.com with ESMTPSA id vf22-20020a170907239600b008ee64893786sm4669188ejb.99.2023.03.06.06.03.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Mar 2023 06:03:47 -0800 (PST) From: Vincenzo Pupillo To: Eli Zaretskii , Theodor Thornhill Subject: Re: bug#61913: java-ts-mode query error for string highlight, due to recent commit in tree-sitter-java. Date: Mon, 06 Mar 2023 15:03:46 +0100 Message-ID: <2822162.Lt9SDvczpP@3-191.divsi.unimi.it> In-Reply-To: <874jqyo1b2.fsf@thornhill.no> References: <23F92D53-993F-43D6-8A22-00F7AAE10505@gmail.com> <83lekb8cba.fsf@gnu.org> <874jqyo1b2.fsf@thornhill.no> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="nextPart4524094.ejJDZkT8p0" Content-Transfer-Encoding: 7Bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 61913 Cc: casouri@gmail.com, 61913@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) This is a multi-part message in MIME format. --nextPart4524094.ejJDZkT8p0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="ISO-8859-1" Is this patch okay? Please feel free to make any changes you see fit. Thank you. Vincenzo In data luned=EC 6 marzo 2023 07:12:49 CET, Theodor Thornhill ha scritto: > Eli Zaretskii writes: >=20 > >> From: Vincenzo Pupillo > >> Date: Sun, 5 Mar 2023 14:50:39 +0100 > >> Cc: Eli Zaretskii , 61913@debbugs.gnu.org > >>=20 > >> nvim-treesiter seems to use a "lockfile" in which they put the version= of the language parser to be installed > >> (https://github.com/nvim-treesitter/nvim-treesitter/blob/master/lockfi= le.json) to allow some stability I suppose. > > > > Those seem to be Git SHA hashes, but how can Emacs verify that the > > particular grammar shared library is of that revision or later? We > > can only tell users to verify that, which is not very reliable, and > > requires users to clone the repository. >=20 > We could keep a header in the *-ts-mode.el file maybe? Something like: >=20 >=20 > ;;; Grammar version: 95e84b5493e8d21060f1a905d2e5e3c5590bae45 >=20 >=20 > Anyway, I think until we have such a system in place, we should strive > to adhere to the most recent version of the grammar. The diff is ok, > Vicenzo. Would you like to add a proper patch or should I just do it? > I mean with a commit message and format like in CONTRIBUTE? >=20 > Theo >=20 --nextPart4524094.ejJDZkT8p0 Content-Disposition: attachment; filename="0001-java-ts-mode-detect-if-text_block-is-supported.patch" Content-Transfer-Encoding: 7Bit Content-Type: text/x-patch; charset="unicode-2-0-utf-8"; name="0001-java-ts-mode-detect-if-text_block-is-supported.patch" >From 72f32b71d82b925e5b4aa5d6bebc707aaca992af Mon Sep 17 00:00:00 2001 From: Vincenzo Pupillo Date: Mon, 6 Mar 2023 12:24:34 +0100 Subject: [PATCH] java-ts-mode: detect if text_block is supported. A recent commit in tree-sitter-java (issue #141) removed support for the text_block node type from the grammar. To support the old released version and the new one, a helper function was added on which the string syntax highlighting now depends. (bug#61913) * lisp/progmodes/java-ts-mode.el (java-ts-mode--string-highlight-helper): New helper function that return the right query string (java-ts-mode--font-lock-settings): Use it --- lisp/progmodes/java-ts-mode.el | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/lisp/progmodes/java-ts-mode.el b/lisp/progmodes/java-ts-mode.el index 1115eadde7..66fec3b0f1 100644 --- a/lisp/progmodes/java-ts-mode.el +++ b/lisp/progmodes/java-ts-mode.el @@ -145,6 +145,16 @@ java-ts-mode--operators "|=" "~" ">>" ">>>" "<<" "::" "?" "&=") "Java operators for tree-sitter font-locking.") +(defun java-ts-mode--string-highlight-helper () +"Returns, for strings, a query based on what is supported by +the available version of Tree-sitter for java." + (condition-case nil + (progn (treesit-query-capture 'java '((text_block) @font-lock-string-face)) + `((string_literal) @font-lock-string-face + (text_block) @font-lock-string-face)) + (error + `((string_literal) @font-lock-string-face)))) + (defvar java-ts-mode--font-lock-settings (treesit-font-lock-rules :language 'java @@ -182,8 +192,7 @@ java-ts-mode--font-lock-settings :language 'java :override t :feature 'string - `((string_literal) @font-lock-string-face - (text_block) @font-lock-string-face) + (java-ts-mode--string-highlight-helper) :language 'java :override t :feature 'literal -- 2.39.2 --nextPart4524094.ejJDZkT8p0-- From debbugs-submit-bounces@debbugs.gnu.org Thu Mar 09 05:25:08 2023 Received: (at 61913-done) by debbugs.gnu.org; 9 Mar 2023 10:25:09 +0000 Received: from localhost ([127.0.0.1]:51032 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1paDSO-0008Nb-JU for submit@debbugs.gnu.org; Thu, 09 Mar 2023 05:25:08 -0500 Received: from eggs.gnu.org ([209.51.188.92]:58172) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1paDSM-0008Ml-Ow for 61913-done@debbugs.gnu.org; Thu, 09 Mar 2023 05:25:07 -0500 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 ) id 1paDSH-000411-48; Thu, 09 Mar 2023 05:25:01 -0500 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=Pj6GU3j8WrMI/u06YQw/nuyVGm7lPAG41JQzwZo93cw=; b=dtsLpw5+Cs50 a0mK1QNb1dYTLlvDZUIYodORv/9cdLzeSlwec8rnbIdl+zJyALLPQOWZMQIy1U/BwJGIoYTXPvVDq o7rnisacb1Tp6U2/J/zzzyCkJgxrXVhg62B10+P705blFkwmnMAsLNsXlxy6zaGnZMPPiUN/NNZmv sX0p3bPVqKSmrwr4AOq34Ff8ex6d2XzxafLXtU6d+qsc06wrvF+RmLocLq5BDm3SNyyp70tIYPXnc cscCbJfTNWv+VVlHA0gNNrbv+pJEQ8syKOW+Fw7WvCML7cw0xSoNjR4WkAdXa466r+slegaQDJcDE 4VMHz31LU+FKZfi3zu9BuQ==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1paDSB-0002N5-22; Thu, 09 Mar 2023 05:25:00 -0500 Date: Thu, 09 Mar 2023 12:24:55 +0200 Message-Id: <835yba2pe0.fsf@gnu.org> From: Eli Zaretskii To: Vincenzo Pupillo In-Reply-To: <2822162.Lt9SDvczpP@3-191.divsi.unimi.it> (message from Vincenzo Pupillo on Mon, 06 Mar 2023 15:03:46 +0100) Subject: Re: bug#61913: java-ts-mode query error for string highlight, due to recent commit in tree-sitter-java. References: <23F92D53-993F-43D6-8A22-00F7AAE10505@gmail.com> <83lekb8cba.fsf@gnu.org> <874jqyo1b2.fsf@thornhill.no> <2822162.Lt9SDvczpP@3-191.divsi.unimi.it> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 61913-done Cc: 61913-done@debbugs.gnu.org, casouri@gmail.com, theo@thornhill.no X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Vincenzo Pupillo > Cc: casouri@gmail.com, 61913@debbugs.gnu.org > Date: Mon, 06 Mar 2023 15:03:46 +0100 > > Is this patch okay? Please feel free to make any changes you see fit. Thanks, installed on the emacs-29 branch. Btw, this patch all but exhausts the amount of changes we can accept from you without a copyright assignment. Would you like to start you legal paperwork of assigning the copyright to the FSF? If yes, I will send you the form to fill. From debbugs-submit-bounces@debbugs.gnu.org Thu Mar 09 07:49:54 2023 Received: (at 61913-done) by debbugs.gnu.org; 9 Mar 2023 12:49:54 +0000 Received: from localhost ([127.0.0.1]:51128 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1paFiT-0006e6-NJ for submit@debbugs.gnu.org; Thu, 09 Mar 2023 07:49:53 -0500 Received: from mail-ed1-f42.google.com ([209.85.208.42]:36367) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1paFiR-0006dr-Qm for 61913-done@debbugs.gnu.org; Thu, 09 Mar 2023 07:49:52 -0500 Received: by mail-ed1-f42.google.com with SMTP id da10so6555546edb.3 for <61913-done@debbugs.gnu.org>; Thu, 09 Mar 2023 04:49:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1678366186; 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=Md6zJcKe51WzEmqD2dLpo8fl1oW3VhRnALvxkMokXZY=; b=odxaJ09EKazurh8ZjGJYRd2S9BoqMuJFr/IEBndb35hsrvsBXegYtf6hUUsKBu9Elf PCrzGAqfX/Fb/QyIkH1psSamFAqfJEnqQ/nSn3R0w2DSj/2saSgV6/JpuZrlyDD5WfdO /QYsiRYAbw/SInRBuEM16znD7ApeF1FXB0KV1evWXaIOoTNQL006vZw5spc/SkUT8jR6 NqsmlmASbU3PDhO1ggFHDzJLSZu1FNPgMQJYeFenQlvx75mKrrB8wLQ9VP3J+bH0rK/M dkuQSg34+qRAjIYZ6A371pOEPg3zpwkIqZnhPV6OgpNfCmlNKtyUtAkw6cZLuuBTKMmn 4OEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1678366186; 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=Md6zJcKe51WzEmqD2dLpo8fl1oW3VhRnALvxkMokXZY=; b=BLoOq9dWuAumD5vfcmnf19oomP4WiCh2eaKP8scJVAXG1hSpAvjzMtaB7MuX1QvXpK 5YL6sXZNZu6Cxpf+LqGxL9mkfB4orUgA/pMFtTTA+rdr/P60O4dZtxIY31V7zRdEyUMF aC34zBRy8zmql+0ZXb3b6ZCZd+wruM4NiVnanFkqKGS/XPVRmp9d6ackGj/Ijj8crtKu K2IauicjUqnw1jPxCabfFOLCe1tkSf3Og4bI2Na5RVA4DC8AA11ZCfENcHENRsXr3vN1 9nhBvqwpVRqQ8/4clEvGS/Vh0Tl6eLWTvzZpM5jrcYEFQYrbWmNY7LwXjyeTf8sD/Mtq KWug== X-Gm-Message-State: AO0yUKU8BlbaXldtDLavrD0f6WFvTeECgEkt198dVs1JHilHw9CDjWrV DMV04CmCVq+dtTjwpQ0K5JE= X-Google-Smtp-Source: AK7set+McGT/dKoFV4ApkrRNa6zV8LdVhxw1jRBMD6jqeCA0fn1TzcCToNgJLhzBfSwAFGDvK1ZiEw== X-Received: by 2002:a17:906:3a48:b0:8b1:2f0e:e3a4 with SMTP id a8-20020a1709063a4800b008b12f0ee3a4mr19466285ejf.26.1678366185808; Thu, 09 Mar 2023 04:49:45 -0800 (PST) Received: from 3-191.divsi.unimi.it (3-191.divsi.unimi.it. [159.149.3.191]) by smtp.gmail.com with ESMTPSA id z71-20020a509e4d000000b004c2158e87e6sm9480913ede.97.2023.03.09.04.49.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 09 Mar 2023 04:49:45 -0800 (PST) From: Vincenzo Pupillo To: Eli Zaretskii Subject: Re: bug#61913: java-ts-mode query error for string highlight, due to recent commit in tree-sitter-java. Date: Thu, 09 Mar 2023 13:49:44 +0100 Message-ID: <4917121.31r3eYUQgx@3-191.divsi.unimi.it> In-Reply-To: <835yba2pe0.fsf@gnu.org> References: <23F92D53-993F-43D6-8A22-00F7AAE10505@gmail.com> <2822162.Lt9SDvczpP@3-191.divsi.unimi.it> <835yba2pe0.fsf@gnu.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 61913-done Cc: 61913-done@debbugs.gnu.org, casouri@gmail.com, theo@thornhill.no X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Yes, Eli, please send me the the form. Thank you. V. In data gioved=EF=BF=BD 9 marzo 2023 11:24:55 CET, Eli Zaretskii ha scritto: > > From: Vincenzo Pupillo > > Cc: casouri@gmail.com, 61913@debbugs.gnu.org > > Date: Mon, 06 Mar 2023 15:03:46 +0100 > >=20 > > Is this patch okay? Please feel free to make any changes you see fit. >=20 > Thanks, installed on the emacs-29 branch. >=20 > Btw, this patch all but exhausts the amount of changes we can accept > from you without a copyright assignment. Would you like to start you > legal paperwork of assigning the copyright to the FSF? If yes, I will > send you the form to fill. >=20 From debbugs-submit-bounces@debbugs.gnu.org Thu Mar 09 10:28:48 2023 Received: (at 61913-done) by debbugs.gnu.org; 9 Mar 2023 15:28:48 +0000 Received: from localhost ([127.0.0.1]:52884 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1paICF-00053k-Va for submit@debbugs.gnu.org; Thu, 09 Mar 2023 10:28:48 -0500 Received: from eggs.gnu.org ([209.51.188.92]:56548) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1paICE-00053U-26 for 61913-done@debbugs.gnu.org; Thu, 09 Mar 2023 10:28:46 -0500 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 ) id 1paIC7-0007fG-Th; Thu, 09 Mar 2023 10:28:39 -0500 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=80rSOmA5ZV6/cDGxKIb1vtArch2VbyoghpY8JXSMjuw=; b=LRZVhTYHYcRg fps0h04FGcu8CD9O/m8owv9x19uMg4JX/lnA5xD62D7jgSEedpQKMuUbBhFbvMT6ROaLQJL9mL6t7 1sG4QEr9tRiNrSLoTQ29l0RgWCtFECEkigfBydPv7W/m4FnZ9XSXaN4oTKc9J+5PXZXR/KQIEicy+ IUXXc/TyO3NWnlqeWIuoV1KUdZfUkMlG9mGm+hld2zBrEn/A8WW8/YnL78rc0KmGiSbyo2blwjtZV wPLJo2TQYc2MSEtUkvpoqxwURXVtjw5zNHid520uKU7HZtczrO/ittgZDysM3fQv4ZoQbpcDUXXJ7 IP9/89W9EGDgRLxceL8Zyg==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1paIC5-0007yL-So; Thu, 09 Mar 2023 10:28:39 -0500 Date: Thu, 09 Mar 2023 17:28:30 +0200 Message-Id: <83r0ty0wrl.fsf@gnu.org> From: Eli Zaretskii To: Vincenzo Pupillo In-Reply-To: <4917121.31r3eYUQgx@3-191.divsi.unimi.it> (message from Vincenzo Pupillo on Thu, 09 Mar 2023 13:49:44 +0100) Subject: Re: bug#61913: java-ts-mode query error for string highlight, due to recent commit in tree-sitter-java. References: <23F92D53-993F-43D6-8A22-00F7AAE10505@gmail.com> <2822162.Lt9SDvczpP@3-191.divsi.unimi.it> <835yba2pe0.fsf@gnu.org> <4917121.31r3eYUQgx@3-191.divsi.unimi.it> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 61913-done Cc: 61913-done@debbugs.gnu.org, casouri@gmail.com, theo@thornhill.no X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Vincenzo Pupillo > Cc: theo@thornhill.no, casouri@gmail.com, 61913-done@debbugs.gnu.org > Date: Thu, 09 Mar 2023 13:49:44 +0100 > > Yes, Eli, please send me the the form. Thank you. Form sent off-list. From debbugs-submit-bounces@debbugs.gnu.org Thu Mar 09 11:16:49 2023 Received: (at 61913) by debbugs.gnu.org; 9 Mar 2023 16:16:49 +0000 Received: from localhost ([127.0.0.1]:52927 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1paIwi-0006In-V5 for submit@debbugs.gnu.org; Thu, 09 Mar 2023 11:16:49 -0500 Received: from mail-ed1-f47.google.com ([209.85.208.47]:44765) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1paIwg-0006IZ-Sy for 61913@debbugs.gnu.org; Thu, 09 Mar 2023 11:16:47 -0500 Received: by mail-ed1-f47.google.com with SMTP id ay14so9074104edb.11 for <61913@debbugs.gnu.org>; Thu, 09 Mar 2023 08:16:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1678378601; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :sender:from:to:cc:subject:date:message-id:reply-to; bh=zYutQMCxljZkdwpdLiycojr051fJ+jME2w8rwDS5PSc=; b=EPFFUoibnY7uKo8Va9l6fUNiWFcbUeIhqTl4TiGTwgdk86EEqPVq0tliVOv5VChPAs EFaNEY2dNwOK2h7aKrFRlXYjs8C2rJMX5oFhOddoRhc5ACrAaiGI0h+sC9WVgR850ZSe n2FPz3GZUJgVD6ImaUqt9C0CUFEt0j1g2vR0tY/00fpLzQxdPg8TXBvmh96JncKyTUn4 SBHZNGITYeN9HNPskWuax2mgVY8XA99tvpRD/ogHVP0rFbwJTXuwYt6MlIsTFsjVsYli JOO+vk3NcdGC4PYk9WkW+5YOPhlmMNWMYKbMS4nvFaezy/3O0Xbd3J+y96WScID/0sLR 13WA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1678378601; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :sender:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=zYutQMCxljZkdwpdLiycojr051fJ+jME2w8rwDS5PSc=; b=z7bNdbJah9PyGKjs1iXCDtup8Vj7KCzXaacWzbmNDvINIQIo1RGZKkGgu1NeKOshTu +vIMK3zQwQW3Q54HtONj3NxcqAocAhl8uPkCBDFPXSzCWSjag1c/4muTMXS4ee7CB5Sx uL7XrnriHXgLPfZIi8SjZupw/WX1/zkwLTDj8qGIs18fuLhjQ8Fji/qjkbvHo9D9+Xs4 avgVQAxfGYAhlVG7ZK1yKaj26yIWZCX63q6/J6GG4n2bMAexiwywIlgSh6pUOOSTNAcM 1bmZ1e8Z86Hs5Vr1s/ImMwVL1PZZP/4Z4TqHimUF9qYRi23oWbx2a51Mh5Fyb3QI/fYq Fzlg== X-Gm-Message-State: AO0yUKXeR8IH7VF/BlDbGYHLt1NnlteP6W3mNUvDh0I0Knbz28IAfc9N 8B2mZ/xZz/PlFV4h6J2pO6o= X-Google-Smtp-Source: AK7set+Syu32vwlbfN8yzxUsG1KO0GnyZTPqtobZv37rgWqnDistfA7pQVBpWdCy3DucfY1hnzkPpg== X-Received: by 2002:a17:906:63d2:b0:881:44e3:baae with SMTP id u18-20020a17090663d200b0088144e3baaemr19793264ejk.54.1678378600836; Thu, 09 Mar 2023 08:16:40 -0800 (PST) Received: from [192.168.0.2] ([85.132.229.92]) by smtp.googlemail.com with ESMTPSA id m27-20020a170906599b00b008dea022f5e6sm8984033ejs.24.2023.03.09.08.16.39 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 09 Mar 2023 08:16:40 -0800 (PST) Message-ID: <0a02a263-f10f-9168-55a1-3e7c99f46729@yandex.ru> Date: Thu, 9 Mar 2023 18:16:38 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.7.1 Subject: Re: bug#61913: java-ts-mode query error for string highlight, due to recent commit in tree-sitter-java. Content-Language: en-US To: Vincenzo Pupillo , Eli Zaretskii , Theodor Thornhill References: <23F92D53-993F-43D6-8A22-00F7AAE10505@gmail.com> <83lekb8cba.fsf@gnu.org> <874jqyo1b2.fsf@thornhill.no> <2822162.Lt9SDvczpP@3-191.divsi.unimi.it> From: Dmitry Gutov In-Reply-To: <2822162.Lt9SDvczpP@3-191.divsi.unimi.it> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -0.9 (/) X-Debbugs-Envelope-To: 61913 Cc: casouri@gmail.com, 61913@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.9 (-) On 06/03/2023 16:03, Vincenzo Pupillo wrote: > Is this patch okay? Please feel free to make any changes you see fit. Does it also work if you replace treesit-query-capture with treesit-query-validate? The latter should be faster in general. From debbugs-submit-bounces@debbugs.gnu.org Thu Mar 09 11:49:16 2023 Received: (at 61913) by debbugs.gnu.org; 9 Mar 2023 16:49:16 +0000 Received: from localhost ([127.0.0.1]:52957 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1paJS8-0007Ca-EM for submit@debbugs.gnu.org; Thu, 09 Mar 2023 11:49:16 -0500 Received: from mail-ed1-f52.google.com ([209.85.208.52]:35747) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1paJS7-0007CE-BS for 61913@debbugs.gnu.org; Thu, 09 Mar 2023 11:49:15 -0500 Received: by mail-ed1-f52.google.com with SMTP id u9so9617104edd.2 for <61913@debbugs.gnu.org>; Thu, 09 Mar 2023 08:49:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1678380549; 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=vQEv572em5gMAqmjHbVSO9jSjHRzdi5AbTtgNGpe5+c=; b=YKY+SRiDT9ZwZVEq7P+23FehBy4VU+sLBQcYNBIXRTMDt4F0u88QNdxRFp+n5MIUQ7 lrY7Hz7u3PPQRFK/PFerwNEnm/G1xqBfgyMOC1Z+2PDaOwfAMDJPT8QBrR5BfrUJcTEN js7Qb1ipKM3XH+Jz6I17/1nqC+DgijPDeQ0oiVvtznPNQOIN0VVydQTFhUAaolixtRNu 7FI0Hmi+MfDwQHkR2gJ6UkRpW9bCvYWiLBt4135ypQbfaPpyqS9uOM2bEnIO9G3HtIgb QtDH+tVaFJa5Qm0bZIrJLJ+/KXP0Y6O2HThEUd/CF4lPovvQNQ7r0Jso8xEKEGUzX8yJ JI7w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1678380549; 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=vQEv572em5gMAqmjHbVSO9jSjHRzdi5AbTtgNGpe5+c=; b=TXRUtpqlayUm7rfXIRR4EMg/asJ9Mikb8QYjK19vfsigrHL+ovM9KxirRtDo7zMbW5 NVtnmB0nAoxeYylZ+EygkLEN0poDYgvnh/Bf76Msvflyj3cWQmZFB7LHkgEccjbCkg42 nKNyx8kBtG4rvQomMG6+3uGZ7fslM6mMpuZvpIZ2Xt26fxImCWmVUGEU5ZKPjVFKTJ5b tz4wivNjlDYxPDJViYLdbln9XPUMBc4GPq/FXdsG0PxF2DFeQbS+fZIM1MOsRS3VHtpo 2b6arYvK0CIbVcBSKOAr8gXZ6n8F5r/tU5vlyflC4EvPsEwtebsowHCoFevGVE2wvqNf sBLQ== X-Gm-Message-State: AO0yUKUc7AO+cpHQ170vPUDb0NB8rMMqIOXniVcxO1AC2ObDheO3ua9V El2cBasDHjokEQGliMGvDR8= X-Google-Smtp-Source: AK7set9XsJZo4X1zN8ygsZqQAejMO16ow3hNN05Qfp8sg4s9Wo/uMSP1IqAczIFOrXfI9C9TlujhOA== X-Received: by 2002:a17:907:c25:b0:8b2:fb3d:95e6 with SMTP id ga37-20020a1709070c2500b008b2fb3d95e6mr27548467ejc.74.1678380548902; Thu, 09 Mar 2023 08:49:08 -0800 (PST) Received: from 3-191.divsi.unimi.it (3-191.divsi.unimi.it. [159.149.3.191]) by smtp.gmail.com with ESMTPSA id i6-20020a17090671c600b008b26f3d45fbsm9164887ejk.143.2023.03.09.08.49.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 09 Mar 2023 08:49:08 -0800 (PST) From: Vincenzo Pupillo To: Eli Zaretskii , Theodor Thornhill , Dmitry Gutov Subject: Re: bug#61913: java-ts-mode query error for string highlight, due to recent commit in tree-sitter-java. Date: Thu, 09 Mar 2023 17:49:08 +0100 Message-ID: <10342076.nUPlyArG6x@3-191.divsi.unimi.it> In-Reply-To: <0a02a263-f10f-9168-55a1-3e7c99f46729@yandex.ru> References: <23F92D53-993F-43D6-8A22-00F7AAE10505@gmail.com> <2822162.Lt9SDvczpP@3-191.divsi.unimi.it> <0a02a263-f10f-9168-55a1-3e7c99f46729@yandex.ru> 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: 61913 Cc: casouri@gmail.com, 61913@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) treesit-query-validate calls treesit-query-capture which is defined in tree= sit.c. =20 It's a wrapper for interactive use, I guess it's not faster. V. In data gioved=C3=AC 9 marzo 2023 17:16:38 CET, Dmitry Gutov ha scritto: > On 06/03/2023 16:03, Vincenzo Pupillo wrote: > > Is this patch okay? Please feel free to make any changes you see fit. >=20 > Does it also work if you replace treesit-query-capture with=20 > treesit-query-validate? The latter should be faster in general. >=20 From debbugs-submit-bounces@debbugs.gnu.org Thu Mar 09 12:08:23 2023 Received: (at 61913) by debbugs.gnu.org; 9 Mar 2023 17:08:24 +0000 Received: from localhost ([127.0.0.1]:53002 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1paJkd-0007ma-K9 for submit@debbugs.gnu.org; Thu, 09 Mar 2023 12:08:23 -0500 Received: from mail-wm1-f53.google.com ([209.85.128.53]:43993) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1paJkb-0007mL-Sq for 61913@debbugs.gnu.org; Thu, 09 Mar 2023 12:08:22 -0500 Received: by mail-wm1-f53.google.com with SMTP id l7-20020a05600c4f0700b003e79fa98ce1so1709324wmq.2 for <61913@debbugs.gnu.org>; Thu, 09 Mar 2023 09:08:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1678381696; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :sender:from:to:cc:subject:date:message-id:reply-to; bh=0PzpLM7IL59K2C8cHL9fUbfibFOZfQLYdxYo2A6NoNE=; b=Sc3Ml9i/eiKASWvvaX8GAhhTK0THUXD7/DXMjwtV4g9BtWR46h/buTnDcDyVryWb45 YNRKbUN83cjxxbpRst3BqlLU1gPY6yaKwYoAqlLBrjiWPI7Qggm0HRzuV1m8SNlY/yPn zkyzzDynPSIMSPvnsTUtoaK6MuPF+lK8lpFW/OErJdl7Q4AxXSaeB5JHLM73vdtuG8iw Bjsrv374eqWDroFbhui9C1JzNZjpOSVEtSQGODOewp1Iw7hlhQpZKEB7sVBiLcO5TvWt ceVmoaBonfgfUp2Ts1KjmOKcr0pT6tnjcjCZ+6+ne59d1K9CPu7DjcFfc9dI5zWwH/gp 1hFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1678381696; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :sender:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=0PzpLM7IL59K2C8cHL9fUbfibFOZfQLYdxYo2A6NoNE=; b=hpQ/udrT//Zl7JpP2Tanj8gvfY6/NHkyE78/co7Rv3TaGKyvT/gKjUSgbpj/GolwqK AMdP9tOhekLhjNsbsj/JK+HYiW8Jrah8ZGRNKGX9ZdRcCrEhpUfYk7DC3PN94Mysbmrv RuVRwQeOZdMUnCFVIKrx5fACVLNSO5p/55ZS2cUmLFw6JeTQ6L15nnzf15LwRshHrItl 0yCXOew2gr+ezkLwfpSGHFX7fnoYkF7f87XhePYtcvkBLrKFLYNdicAf5mpv/hL/KTEa dxktS0rcAvFUhJXLiFQhdCEfOdu7aRY0RLHbYToIKyGn7sRc60QUCxA7UGLNAs+rj5My OF3Q== X-Gm-Message-State: AO0yUKWZH9/3ZDI/eKwFbWYEKPRFnDjced+pZUlcMI/IOrVItvcyyJvW dp/2PZdEH7NmJy2FcCtLl5U= X-Google-Smtp-Source: AK7set97ukhdP3niKMDgjiOgW8PQF450uxeL1ny9KmzmeJz0Lb8M2eDe8ZZ8RjHuiSYKhQr9ZlQ6yw== X-Received: by 2002:a7b:c5c2:0:b0:3e1:df8d:e022 with SMTP id n2-20020a7bc5c2000000b003e1df8de022mr19866279wmk.9.1678381696231; Thu, 09 Mar 2023 09:08:16 -0800 (PST) Received: from [192.168.0.2] ([85.132.229.92]) by smtp.googlemail.com with ESMTPSA id x17-20020adfdcd1000000b002c5804b6afasm18395055wrm.67.2023.03.09.09.08.15 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 09 Mar 2023 09:08:15 -0800 (PST) Message-ID: <10e369e0-26cb-a12f-19fd-899b6015ef53@yandex.ru> Date: Thu, 9 Mar 2023 19:08:14 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.7.1 Subject: Re: bug#61913: java-ts-mode query error for string highlight, due to recent commit in tree-sitter-java. Content-Language: en-US To: Vincenzo Pupillo , Eli Zaretskii , Theodor Thornhill References: <23F92D53-993F-43D6-8A22-00F7AAE10505@gmail.com> <2822162.Lt9SDvczpP@3-191.divsi.unimi.it> <0a02a263-f10f-9168-55a1-3e7c99f46729@yandex.ru> <10342076.nUPlyArG6x@3-191.divsi.unimi.it> From: Dmitry Gutov In-Reply-To: <10342076.nUPlyArG6x@3-191.divsi.unimi.it> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -0.9 (/) X-Debbugs-Envelope-To: 61913 Cc: casouri@gmail.com, 61913@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.9 (-) On 09/03/2023 18:49, Vincenzo Pupillo wrote: > treesit-query-validate calls treesit-query-capture which is defined in treesit.c. > It's a wrapper for interactive use, I guess it's not faster. Fair point, but there is a certain difference: treesit-query-validate creates a temporary buffer to run treesit-query-capture in. Whereas, in your patch, treesit-query-capture is called in the current buffer, whichever buffer is current when the code is loaded, I suppose. If the buffer is large, that might take a non-negligible amount of time. So okay, reusing treesit-query-validate is not a good idea, but we could use the same pattern here, or try treesit-query-string which also uses a temp buffer: diff --git a/lisp/progmodes/java-ts-mode.el b/lisp/progmodes/java-ts-mode.el index fca00cdce4f..0db6c9822ed 100644 --- a/lisp/progmodes/java-ts-mode.el +++ b/lisp/progmodes/java-ts-mode.el @@ -148,13 +148,13 @@ java-ts-mode--operators "Java operators for tree-sitter font-locking.") (defun java-ts-mode--string-highlight-helper () -"Returns, for strings, a query based on what is supported by + "Returns, for strings, a query based on what is supported by the available version of Tree-sitter for java." (condition-case nil - (progn (treesit-query-capture 'java '((text_block) @font-lock-string-face)) + (progn (treesit-query-string "" '((text_block) @font-lock-string-face) 'java) `((string_literal) @font-lock-string-face (text_block) @font-lock-string-face)) - (error + (treesit-query-error `((string_literal) @font-lock-string-face)))) (defvar java-ts-mode--font-lock-settings From unknown Thu Jun 19 14:04:55 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Fri, 07 Apr 2023 11:24:05 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator