From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Jim Porter Newsgroups: gmane.emacs.bugs Subject: bug#66806: 30.0.50; [PATCH] 'project-find-regexp' passes Git submodules to the search program Date: Sat, 28 Oct 2023 22:36:07 -0700 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------y8rocPDD6xT7cy0sLCc5h52C" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="6364"; mail-complaints-to="usenet@ciao.gmane.io" Cc: dmitry@gutov.dev To: 66806@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sun Oct 29 06:36:43 2023 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qwyTZ-0001UN-Qt for geb-bug-gnu-emacs@m.gmane-mx.org; Sun, 29 Oct 2023 06:36:41 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qwyTQ-0007Yj-TF; Sun, 29 Oct 2023 01:36:32 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qwyTP-0007YY-1w for bug-gnu-emacs@gnu.org; Sun, 29 Oct 2023 01:36:31 -0400 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qwyTO-00065J-K7 for bug-gnu-emacs@gnu.org; Sun, 29 Oct 2023 01:36:30 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1qwyTu-0003Lt-NS; Sun, 29 Oct 2023 01:37:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Jim Porter Original-Sender: "Debbugs-submit" Resent-CC: dmitry@gutov.dev, bug-gnu-emacs@gnu.org Resent-Date: Sun, 29 Oct 2023 05:37:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 66806 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch X-Debbugs-Original-To: bug-gnu-emacs@gnu.org X-Debbugs-Original-Xcc: dmitry@gutov.dev Original-Received: via spool by submit@debbugs.gnu.org id=B.169855781612871 (code B ref -1); Sun, 29 Oct 2023 05:37:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 29 Oct 2023 05:36:56 +0000 Original-Received: from localhost ([127.0.0.1]:40242 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qwyTn-0003LW-Ph for submit@debbugs.gnu.org; Sun, 29 Oct 2023 01:36:56 -0400 Original-Received: from lists.gnu.org ([2001:470:142::17]:43914) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qwyTi-0003LE-NV for submit@debbugs.gnu.org; Sun, 29 Oct 2023 01:36:54 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qwyT6-0007WU-9l for bug-gnu-emacs@gnu.org; Sun, 29 Oct 2023 01:36:12 -0400 Original-Received: from mail-il1-x135.google.com ([2607:f8b0:4864:20::135]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qwyT4-00062V-HY for bug-gnu-emacs@gnu.org; Sun, 29 Oct 2023 01:36:12 -0400 Original-Received: by mail-il1-x135.google.com with SMTP id e9e14a558f8ab-35906265d80so3402535ab.0 for ; Sat, 28 Oct 2023 22:36:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1698557769; x=1699162569; darn=gnu.org; h=subject:from:to:content-language:mime-version:date:message-id:from :to:cc:subject:date:message-id:reply-to; bh=rncAl5UBZ5banhCS7pv++aNnvkp1vj+h7IyD3+m+E1o=; b=HzI/n5+6XQC82Dxs0YjvcVjcXHzGjoxQg7oyDc/+JAD2ZigOhEIGYB493DWeY096V/ Zkgy+cBuGAHsGcZpWRZyPk8r09BfmS8yuaHYnx9VP2eHlCIf0Ob3HYpqjxc71JNlWVy9 Q6uBj8EO+ucS6wJOi5Q8JHbysSPoSdIzU78L+VmoJqNAfGwjjfTXmnUOvWQ1mlQCJq6n 4JY87fMsRHkiC7+u3TsB7mT+v8GYNaFxGvO1ZIb1UuqIEql3O63icgIJM06h8iozLuQr j4BpU1CHtsy7PXtGP9m97fm4LQXMJLgPmrAJLyyl4NhJlcmkQKpNurGTZQqsvnqGiirp si9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1698557769; x=1699162569; h=subject:from:to:content-language:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=rncAl5UBZ5banhCS7pv++aNnvkp1vj+h7IyD3+m+E1o=; b=gswg6v+CV3Xh7YnTtegPJ1HjM2+FI1iDFIbYBAx1s5z46YGFdKyMtDDeImpY7w9JCQ Lxityy9ocP5KZxJcwHph3mye7KubTo4W2vk4qQlTOb2LFJLim6R/qRGBMn53fTunHIl1 IhyYtpRwxJFj8pk+VkQN9h0dOtfFf+QdojnoToLZ9fP3weHWFq9jbMOXIxUpTfKy/pN3 3FmH0ZJLIAOLn9pRm7iRFep/Z60GMXzRRwsR/7WzJwJGu1nX8a3DbhtlW9CT6gfv6TWd JEeAJ98aKKO3TewwGwz6WPHMKsjJH1l0yGi6Txkp41JHS1QxUhs5E/URslCujuExID1e mBBw== X-Gm-Message-State: AOJu0Yy/HDTuUAwtYYhZXlDdbuSj4ytCH5CDm8j/OhYBYw8b/SqrkXnR yGje7Vy4BOwpEzM2/PA+nV/y8g2gs5U= X-Google-Smtp-Source: AGHT+IHIxskWcdJwtBnm7cGdjScAujhFiH/nO3GsC+vq06jNfxMsHOD6JkuSp10IMR2tNX9WQasBfw== X-Received: by 2002:a05:6e02:152a:b0:357:46e3:58be with SMTP id i10-20020a056e02152a00b0035746e358bemr9937389ilu.1.1698557768834; Sat, 28 Oct 2023 22:36:08 -0700 (PDT) Original-Received: from [192.168.1.2] (cpe-76-168-148-233.socal.res.rr.com. [76.168.148.233]) by smtp.googlemail.com with ESMTPSA id iz11-20020a170902ef8b00b001cc436e9806sm415778plb.81.2023.10.28.22.36.07 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 28 Oct 2023 22:36:07 -0700 (PDT) X-Mozilla-News-Host: news://news.gmane.io:119 Content-Language: en-US Received-SPF: pass client-ip=2607:f8b0:4864:20::135; envelope-from=jporterbugs@gmail.com; helo=mail-il1-x135.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-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:273481 Archived-At: This is a multi-part message in MIME format. --------------y8rocPDD6xT7cy0sLCc5h52C Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Debbugs-Cc: dmitry@gutov.dev To see this in action, you can do the following, starting from "emacs -Q" inside of a Git repo that contains submodules: M-x trace-function RET project-files RET C-x p g some-string RET If you look at the trace, you'll see that the files in your submodules are returned from 'project-files', but so is the submodule directory. That's not really correct, since 'project-files' is supposed to return *files*, not directories. (There are already workarounds for this in 'project-search' and 'project-query-replace-regexp'.) By default, this is just a theoretical problem, but if you customize 'xref-search-program-alist' and 'xref-search-program' to include some other program, this can cause real issues. For example, I tried to add "ag" to this list[1], and unfortunately, it just doesn't work in this case. The results for submodules get duplicated, and there's no way I can see with ag to search only the specified *files*, ignoring any directories. (Looking at the definition for ripgrep, I'm guessing the "-g '!*/'" is the trick for that program, but nothing similar works for ag.) Attached are two possible patches for this: a minimal version that just fixes 'project-find-regexp', and a maximal version that fixes this in general, and should theoretically speed up 'project-search' and 'project-query-replace-regexp' since they no longer need to call 'file-regular-p' on every file. Do either of these patches look ok? [1] This is a long story, simplified for this message since the gory details aren't especially relevant. --------------y8rocPDD6xT7cy0sLCc5h52C Content-Type: text/plain; charset=UTF-8; name="minimal_0001-Exclude-Git-submodules-when-getting-list-of-files-fo.patch" Content-Disposition: attachment; filename*0="minimal_0001-Exclude-Git-submodules-when-getting-list-of-fil"; filename*1="es-fo.patch" Content-Transfer-Encoding: base64 RnJvbSA5ZjlmYzZhNjA2YmRkMTYxMGQ0NDBkOWIxMzBhYWEzMGFhNjY1OTdhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKaW0gUG9ydGVyIDxqcG9ydGVyYnVnc0BnbWFpbC5j b20+CkRhdGU6IFNhdCwgMjggT2N0IDIwMjMgMjI6MTE6MzAgLTA3MDAKU3ViamVjdDogW1BB VENIXSBFeGNsdWRlIEdpdCBzdWJtb2R1bGVzIHdoZW4gZ2V0dGluZyBsaXN0IG9mIGZpbGVz IGZvcgogJ3Byb2plY3QtZmluZC1yZWdleHAnCgoqIGxpc3AvcHJvZ21vZGVzL3Byb2plY3Qu ZWwgKHByb2plY3QtZmluZC1yZWdleHApOiBGaWx0ZXIgb3V0Cm5vbi1yZWd1bGFyIGZpbGVz LgotLS0KIGxpc3AvcHJvZ21vZGVzL3Byb2plY3QuZWwgfCAzICsrLQogMSBmaWxlIGNoYW5n ZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL2xpc3Av cHJvZ21vZGVzL3Byb2plY3QuZWwgYi9saXNwL3Byb2dtb2Rlcy9wcm9qZWN0LmVsCmluZGV4 IGZkYTEwODFlYjYyLi5lMjQ1ZTc5NDMxOCAxMDA2NDQKLS0tIGEvbGlzcC9wcm9nbW9kZXMv cHJvamVjdC5lbAorKysgYi9saXNwL3Byb2dtb2Rlcy9wcm9qZWN0LmVsCkBAIC05NjAsNyAr OTYwLDggQEAgcHJvamVjdC1maW5kLXJlZ2V4cAogICAgICAgICAgKGRlZmF1bHQtZGlyZWN0 b3J5IChwcm9qZWN0LXJvb3QgcHIpKQogICAgICAgICAgKGZpbGVzCiAgICAgICAgICAgKGlm IChub3QgY3VycmVudC1wcmVmaXgtYXJnKQotICAgICAgICAgICAgICAocHJvamVjdC1maWxl cyBwcikKKyAgICAgICAgICAgICAgOzsgWFhYOiBTZWUgdGhlIGNvbW1lbnQgaW4gcHJvamVj dC1xdWVyeS1yZXBsYWNlLXJlZ2V4cC4KKyAgICAgICAgICAgICAgKGNsLWRlbGV0ZS1pZi1u b3QgIydmaWxlLXJlZ3VsYXItcCAocHJvamVjdC1maWxlcyBwcikpCiAgICAgICAgICAgICAo bGV0ICgoZGlyIChyZWFkLWRpcmVjdG9yeS1uYW1lICJCYXNlIGRpcmVjdG9yeTogIgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsZXItZGlyIG5p bCB0KSkpCiAgICAgICAgICAgICAgIChwcm9qZWN0LS1maWxlcy1pbi1kaXJlY3RvcnkgZGly Ci0tIAoyLjI1LjEKCg== --------------y8rocPDD6xT7cy0sLCc5h52C Content-Type: text/plain; charset=UTF-8; name="maximal_0001-Exclude-Git-submodules-from-project-files.patch" Content-Disposition: attachment; filename*0="maximal_0001-Exclude-Git-submodules-from-project-files.patch" Content-Transfer-Encoding: base64 RnJvbSBmZGI3YTk5ZGNkNDdlM2ExMTA1N2ZiNDcyMjFhNWU2ZjQwYjJkYjZhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKaW0gUG9ydGVyIDxqcG9ydGVyYnVnc0BnbWFpbC5j b20+CkRhdGU6IFNhdCwgMjggT2N0IDIwMjMgMjI6MjA6NDEgLTA3MDAKU3ViamVjdDogW1BB VENIXSBFeGNsdWRlIEdpdCBzdWJtb2R1bGVzIGZyb20gJ3Byb2plY3QtZmlsZXMnCgoqIGxp c3AvcHJvZ21vZGVzL3Byb2plY3QuZWwgKHByb2plY3QtLXZjLWxpc3QtZmlsZXMpOiBFeGNs dWRlIEdpdApzdWJtb2R1bGVzLgoocHJvamVjdC1zZWFyY2gsIHByb2plY3QtcXVlcnktcmVw bGFjZS1yZWdleHApOiBSZW1vdmUgbm93LXVubmVlZGVkCndvcmthcm91bmQuCi0tLQogbGlz cC9wcm9nbW9kZXMvcHJvamVjdC5lbCB8IDIwICsrKysrKysrKy0tLS0tLS0tLS0tCiAxIGZp bGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9saXNwL3Byb2dtb2Rlcy9wcm9qZWN0LmVsIGIvbGlzcC9wcm9nbW9kZXMvcHJvamVj dC5lbAppbmRleCBmZGExMDgxZWI2Mi4uOTJiM2VkNTI2MDAgMTAwNjQ0Ci0tLSBhL2xpc3Av cHJvZ21vZGVzL3Byb2plY3QuZWwKKysrIGIvbGlzcC9wcm9nbW9kZXMvcHJvamVjdC5lbApA QCAtNjQ3LDYgKzY0Nyw3IEBAIHByb2plY3QtLXZjLWxpc3QtZmlsZXMKICAgICAgICAgICAg IChpbmNsdWRlLXVudHJhY2tlZCAocHJvamVjdC0tdmFsdWUtaW4tZGlyCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICdwcm9qZWN0LXZjLWluY2x1ZGUtdW50cmFja2VkCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcikpCisgICAgICAgICAgICAoc3Vi bW9kdWxlcyAocHJvamVjdC0tZ2l0LXN1Ym1vZHVsZXMpKQogICAgICAgICAgICAgZmlsZXMp CiAgICAgICAgKHNldHEgYXJncyAoYXBwZW5kIGFyZ3MKICAgICAgICAgICAgICAgICAgICAg ICAgICAgJygiLWMiICItLWV4Y2x1ZGUtc3RhbmRhcmQiKQpAQCAtNjgwLDEzICs2ODEsMTQg QEAgcHJvamVjdC0tdmMtbGlzdC1maWxlcwogICAgICAgIChzZXRxIGZpbGVzCiAgICAgICAg ICAgICAgKG1hcGNhcgogICAgICAgICAgICAgICAobGFtYmRhIChmaWxlKSAoY29uY2F0IGRl ZmF1bHQtZGlyZWN0b3J5IGZpbGUpKQotICAgICAgICAgICAgICAoc3BsaXQtc3RyaW5nCi0g ICAgICAgICAgICAgICAoYXBwbHkgIyd2Yy1naXQtLXJ1bi1jb21tYW5kLXN0cmluZyBuaWwg ImxzLWZpbGVzIiBhcmdzKQotICAgICAgICAgICAgICAgIlwwIiB0KSkpCisgICAgICAgICAg ICAgIChjbC1zZXQtZGlmZmVyZW5jZQorICAgICAgICAgICAgICAgKHNwbGl0LXN0cmluZwor ICAgICAgICAgICAgICAgIChhcHBseSAjJ3ZjLWdpdC0tcnVuLWNvbW1hbmQtc3RyaW5nIG5p bCAibHMtZmlsZXMiIGFyZ3MpCisgICAgICAgICAgICAgICAgIlwwIiB0KQorICAgICAgICAg ICAgICAgc3VibW9kdWxlcyA6dGVzdCAjJ3N0cmluZz0pKSkKICAgICAgICAod2hlbiAocHJv amVjdC0tdmMtbWVyZ2Utc3VibW9kdWxlcy1wIGRlZmF1bHQtZGlyZWN0b3J5KQogICAgICAg ICAgOzsgVW5mb3J0dW5hdGVseSwgJ2xzLWZpbGVzIC0tcmVjdXJzZS1zdWJtb2R1bGVzJyBj b25mbGljdHMgd2l0aCAnLW8nLgotICAgICAgICAgKGxldCogKChzdWJtb2R1bGVzIChwcm9q ZWN0LS1naXQtc3VibW9kdWxlcykpCi0gICAgICAgICAgICAgICAgKHN1Yi1maWxlcworICAg ICAgICAgKGxldCAoKHN1Yi1maWxlcwogICAgICAgICAgICAgICAgICAobWFwY2FyCiAgICAg ICAgICAgICAgICAgICAobGFtYmRhIChtb2R1bGUpCiAgICAgICAgICAgICAgICAgICAgICh3 aGVuIChmaWxlLWRpcmVjdG9yeS1wIG1vZHVsZSkKQEAgLTEzMjYsOCArMTMyOCw3IEBAIHBy b2plY3Qtc2VhcmNoCiAgIChpbnRlcmFjdGl2ZSAic1NlYXJjaCAocmVnZXhwKTogIikKICAg KGZpbGVsb29wLWluaXRpYWxpemUtc2VhcmNoCiAgICByZWdleHAKLSAgIDs7IFhYWDogU2Vl IHRoZSBjb21tZW50IGluIHByb2plY3QtcXVlcnktcmVwbGFjZS1yZWdleHAuCi0gICAoY2wt ZGVsZXRlLWlmLW5vdCAjJ2ZpbGUtcmVndWxhci1wIChwcm9qZWN0LWZpbGVzIChwcm9qZWN0 LWN1cnJlbnQgdCkpKQorICAgKHByb2plY3QtZmlsZXMgKHByb2plY3QtY3VycmVudCB0KSkK ICAgICdkZWZhdWx0KQogICAoZmlsZWxvb3AtY29udGludWUpKQogCkBAIC0xMzQ4LDEwICsx MzQ5LDcgQEAgcHJvamVjdC1xdWVyeS1yZXBsYWNlLXJlZ2V4cAogICAgICAgIChsaXN0IGZy b20gdG8pKSkpCiAgIChmaWxlbG9vcC1pbml0aWFsaXplLXJlcGxhY2UKICAgIGZyb20gdG8K LSAgIDs7IFhYWDogRmlsdGVyIG91dCBHaXQgc3VibW9kdWxlcywgd2hpY2ggYXJlIG5vdCBy ZWd1bGFyIGZpbGVzLgotICAgOzsgYHByb2plY3QtZmlsZXMnIGNhbiByZXR1cm4gdGhvc2Us IHdoaWNoIGlzIGFyZ3VhYmx5IHN1Ym9wdGltYWwsCi0gICA7OyBidXQgcmVtb3ZpbmcgdGhl bSBlYWdlcmx5IGhhcyBwZXJmb3JtYW5jZSBjb3N0LgotICAgKGNsLWRlbGV0ZS1pZi1ub3Qg IydmaWxlLXJlZ3VsYXItcCAocHJvamVjdC1maWxlcyAocHJvamVjdC1jdXJyZW50IHQpKSkK KyAgIChwcm9qZWN0LWZpbGVzIChwcm9qZWN0LWN1cnJlbnQgdCkpCiAgICAnZGVmYXVsdCkK ICAgKGZpbGVsb29wLWNvbnRpbnVlKSkKIAotLSAKMi4yNS4xCgo= --------------y8rocPDD6xT7cy0sLCc5h52C--