From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: "Basil L. Contovounesios" Newsgroups: gmane.emacs.bugs Subject: bug#18859: 24.3; ibuffer-mark-by-file-name-regexp does not match displayed name Date: Sun, 17 Jan 2021 16:32:57 +0000 Message-ID: <87im7vy152.fsf@tcd.ie> References: <87bnox9pn8.fsf@sc3d.org> <878ssagpg0.fsf@mouse.gnus.org> <87y2grzgxv.fsf@tcd.ie> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="17596"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) Cc: 18859@debbugs.gnu.org, Reuben Thomas To: Lars Ingebrigtsen Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sun Jan 17 17:34:17 2021 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 1l1B0K-0004SO-SR for geb-bug-gnu-emacs@m.gmane-mx.org; Sun, 17 Jan 2021 17:34:17 +0100 Original-Received: from localhost ([::1]:41410 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1l1B0J-0000H3-RD for geb-bug-gnu-emacs@m.gmane-mx.org; Sun, 17 Jan 2021 11:34:15 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:59658) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l1B07-0000GV-CX for bug-gnu-emacs@gnu.org; Sun, 17 Jan 2021 11:34:03 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]:34050) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1l1B06-0004xs-Ho for bug-gnu-emacs@gnu.org; Sun, 17 Jan 2021 11:34:03 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1l1B06-00078G-E4 for bug-gnu-emacs@gnu.org; Sun, 17 Jan 2021 11:34:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: "Basil L. Contovounesios" Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 17 Jan 2021 16:34:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 18859 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: fixed patch Original-Received: via spool by 18859-submit@debbugs.gnu.org id=B18859.161090118927356 (code B ref 18859); Sun, 17 Jan 2021 16:34:02 +0000 Original-Received: (at 18859) by debbugs.gnu.org; 17 Jan 2021 16:33:09 +0000 Original-Received: from localhost ([127.0.0.1]:45596 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1l1AzE-000778-PH for submit@debbugs.gnu.org; Sun, 17 Jan 2021 11:33:09 -0500 Original-Received: from mail-wm1-f41.google.com ([209.85.128.41]:52199) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1l1AzC-00076c-8P for 18859@debbugs.gnu.org; Sun, 17 Jan 2021 11:33:07 -0500 Original-Received: by mail-wm1-f41.google.com with SMTP id h17so11294711wmq.1 for <18859@debbugs.gnu.org>; Sun, 17 Jan 2021 08:33:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tcd-ie.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=fYrdARxlP+85pxjekYWGUTmXiW7HvgNbF3QKKZVfJmc=; b=arpM9AhPc1OMESrjw0xYtUZCgwXcRszRVn36McsUTgX1b8cO1tf4i0nPNuzbk2Lztx XejJX8A75PioD9v2W3S0p41Dj0YfvYyerGqR5a3Ix2IQ4junamJK6EIJ8TprOEincG5D xpQeLQ58i9EMdGxjEJbJYOtEwFXdZVolGeGf4scmzMEXBQ7v9Qq312tBA5OOt8jDU2Mx xoJ6dd2CnJYcAnthutZKLBDP1B/ujJyUiTptRBgJ7gJ5f28XgqAIKeiKlvHNMEqN1twy gBTC5PcoB4LWGhmgEdEAKdcP7SpekxPg2kCA7U4kgEW4TNxO4sDiUenwT/APd2hAufbs 2Hhw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=fYrdARxlP+85pxjekYWGUTmXiW7HvgNbF3QKKZVfJmc=; b=SF3QIl70boXuDvICiqKLJp03jBDxh8DViUblEb/3XbAAGdsEBzESb6/Rv7J6HWcZdn s1IJziWTqLz1r0zuf3qjX2OailEkOYJppn+sX6hlTVTGURPa5AIuD9cqRnYK66gM1ICU j9WuzlJB6DIWYeo14FO+eFFfGxmf6wKJMrcEv1JNZbkXLEwoSTUAkd2LTw/OJan0Gyu4 XxRXPEIhQtX1gtUiAj5+iSRFzgmUgOYO8IcFtvmmJRy31ZUvqeGu0NVBdCfNHdc4rAJ5 oooNOSdSyrNFallMKiV0GlMq4COLDiAbdDR71xbIpWqhNbU6nc1Lf/jyVNV9Jxu3B9No IJZA== X-Gm-Message-State: AOAM530Lajs1eeQizS1fjr9KsLeI63f/vWeAwma0dOTEfmYf4fyyv2ku icAnfFCOeOX3mPvoUaUKKMR3tw== X-Google-Smtp-Source: ABdhPJzCRyU/LJZGrWSWeCW5jbQBRCSLSx4vi4Iz26W2tHG9fQdvsi8c0fir3fDiQoUEYo5q+DvsTQ== X-Received: by 2002:a1c:2605:: with SMTP id m5mr17394120wmm.111.1610901180427; Sun, 17 Jan 2021 08:33:00 -0800 (PST) Original-Received: from localhost ([2a02:8084:20e2:c380:f410:82e8:3a21:eedf]) by smtp.gmail.com with ESMTPSA id r2sm24838712wrn.83.2021.01.17.08.32.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 17 Jan 2021 08:32:58 -0800 (PST) In-Reply-To: <87y2grzgxv.fsf@tcd.ie> (Basil L. Contovounesios's message of "Sun, 17 Jan 2021 16:06:20 +0000") 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" Xref: news.gmane.io gmane.emacs.bugs:198058 Archived-At: --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable "Basil L. Contovounesios" writes: > Lars Ingebrigtsen writes: > >> Reuben Thomas writes: >> >>> In the *IBuffer*, files in my home directory are displayed with names >>> starting with =E2=80=98~=E2=80=99, but when I type % f ~ RET I get no m= atches. If I type >>> instead % f /home/MYUSER RET then all files in my home directory are >>> matched. >>> >>> I=E2=80=99m not convinced that the matches should be made in the second= case, >>> even; but certainly they _should_ be made in the first. >> >> The following patch fixes this by matching on the abbreviated file name >> (which is what ibuffer uses to create the displayed file name). >> >> But I guess this could be a controversial change -- does anybody have an >> objection to making this change?=20=20 >> >> diff --git a/lisp/ibuf-ext.el b/lisp/ibuf-ext.el >> index 1b69574a39..06a2248d40 100644 >> --- a/lisp/ibuf-ext.el >> +++ b/lisp/ibuf-ext.el >> @@ -1846,7 +1846,8 @@ ibuffer-mark-by-file-name-regexp >> (stringp dired-directory) >> dired-directory))))) >> (when name >> - (string-match regexp name)))))) >> + ;; Match on the displayed file name (which is abbreviated). >> + (string-match regexp (abbreviate-file-name name))))))) > > Any objections to this followup fix for master? Or rather, the improved patch attached. --=20 Basil --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=0001-Fix-ibuffer-mark-by-file-name-regexp-abbreviations.patch >From 4cf9d4f2be9095b3fa77ef4a54929f0a47c986dc Mon Sep 17 00:00:00 2001 From: "Basil L. Contovounesios" Date: Sun, 17 Jan 2021 15:53:53 +0000 Subject: [PATCH] Fix ibuffer-mark-by-file-name-regexp abbreviations * lisp/ibuffer.el (ibuffer--abbreviate-file-name): New function. (filename): Use it. * lisp/ibuf-ext.el (ibuffer-mark-by-file-name-regexp): Prefer read-regexp over read-string for reading regexps. Determine file name using ibuffer-buffer-file-name for consistency. Abbreviate file name using ibuffer-directory-abbrev-alist (bug#18859). --- lisp/ibuf-ext.el | 17 ++++++----------- lisp/ibuffer.el | 9 ++++++--- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/lisp/ibuf-ext.el b/lisp/ibuf-ext.el index 7be1b3d16c..a6523e10e4 100644 --- a/lisp/ibuf-ext.el +++ b/lisp/ibuf-ext.el @@ -1823,18 +1823,13 @@ ibuffer-mark-by-mode-regexp ;;;###autoload (defun ibuffer-mark-by-file-name-regexp (regexp) "Mark all buffers whose file name matches REGEXP." - (interactive "sMark by file name (regexp): ") + (interactive (list (read-regexp "Mark by file name (regexp)"))) (ibuffer-mark-on-buffer - #'(lambda (buf) - (let ((name (or (buffer-file-name buf) - (with-current-buffer buf - (and - (boundp 'dired-directory) - (stringp dired-directory) - dired-directory))))) - (when name - ;; Match on the displayed file name (which is abbreviated). - (string-match regexp (abbreviate-file-name name))))))) + (lambda (buf) + (let ((name (with-current-buffer buf (ibuffer-buffer-file-name)))) + (when name + ;; Match on the displayed file name (which is abbreviated). + (string-match-p regexp (ibuffer--abbreviate-file-name name))))))) ;;;###autoload (defun ibuffer-mark-by-content-regexp (regexp &optional all-buffers) diff --git a/lisp/ibuffer.el b/lisp/ibuffer.el index 4800e0243d..84c53b16ac 100644 --- a/lisp/ibuffer.el +++ b/lisp/ibuffer.el @@ -1308,6 +1308,11 @@ ibuffer-buffer-file-name (car dired-directory))))) (and dirname (expand-file-name dirname)))))) +(defun ibuffer--abbreviate-file-name (filename) + "Abbreviate FILENAME using `ibuffer-directory-abbrev-alist'." + (let ((directory-abbrev-alist ibuffer-directory-abbrev-alist)) + (abbreviate-file-name filename))) + (define-ibuffer-op ibuffer-do-save () "Save marked buffers as with `save-buffer'." (:complex t @@ -1885,9 +1890,7 @@ filename (cond ((zerop total) "No files") ((= 1 total) "1 file") (t (format "%d files" total)))))) - (let ((directory-abbrev-alist ibuffer-directory-abbrev-alist)) - (abbreviate-file-name - (or (ibuffer-buffer-file-name) "")))) + (ibuffer--abbreviate-file-name (or (ibuffer-buffer-file-name) ""))) (define-ibuffer-column filename-and-process (:name "Filename/Process" -- 2.29.2 --=-=-=--