From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Lennart Borgman Newsgroups: gmane.emacs.bugs Subject: bug#8252: Please add a function to get files in *grep* Date: Tue, 15 Mar 2011 10:31:40 +0100 Message-ID: References: NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 X-Trace: dough.gmane.org 1300181833 5136 80.91.229.12 (15 Mar 2011 09:37:13 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Tue, 15 Mar 2011 09:37:13 +0000 (UTC) Cc: 8252@debbugs.gnu.org To: Stefan Monnier Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Tue Mar 15 10:37:06 2011 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1PzQgb-0000Gc-RX for geb-bug-gnu-emacs@m.gmane.org; Tue, 15 Mar 2011 10:37:06 +0100 Original-Received: from localhost ([127.0.0.1]:32810 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PzQgb-0004MV-4u for geb-bug-gnu-emacs@m.gmane.org; Tue, 15 Mar 2011 05:37:05 -0400 Original-Received: from [140.186.70.92] (port=46771 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PzQgV-0004MQ-VK for bug-gnu-emacs@gnu.org; Tue, 15 Mar 2011 05:37:01 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PzQgU-000710-Us for bug-gnu-emacs@gnu.org; Tue, 15 Mar 2011 05:36:59 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:37586) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PzQgU-00070s-TR for bug-gnu-emacs@gnu.org; Tue, 15 Mar 2011 05:36:58 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.69) (envelope-from ) id 1PzQcg-0003dn-83; Tue, 15 Mar 2011 05:33:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Lennart Borgman Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-To: owner@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 15 Mar 2011 09:33:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 8252 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 8252-submit@debbugs.gnu.org id=B8252.130018152813926 (code B ref 8252); Tue, 15 Mar 2011 09:33:02 +0000 Original-Received: (at 8252) by debbugs.gnu.org; 15 Mar 2011 09:32:08 +0000 Original-Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1PzQbn-0003cY-Pn for submit@debbugs.gnu.org; Tue, 15 Mar 2011 05:32:07 -0400 Original-Received: from mail-ey0-f172.google.com ([209.85.215.172]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1PzQbl-0003c4-SF for 8252@debbugs.gnu.org; Tue, 15 Mar 2011 05:32:06 -0400 Original-Received: by eye13 with SMTP id 13so112506eye.3 for <8252@debbugs.gnu.org>; Tue, 15 Mar 2011 02:32:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc:content-type; bh=s7XPRqYHzGeQhEphI3Pdnssc/Zc1tIfe5VT38mDT6x0=; b=XWmDdolbY6e0IKKI11kTX1y9XnoGXIOed/EBJIjBzbpa60ecEE/kEzEUVZTzsS4XO3 yd4o9eOXKBFXRBM+8BcJb76cGkEvpwMx+PM1ooiWkLoIXx7d6+eDZxmYdO+PNzMtbxdH aebo88gFkcRsNqjRTvNJ1ByDMML+xPWly3MB4= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type; b=BRWmgAbKpeIA2iv5jPPPqFcsGKz2vc1VwFwbIeiLfvGKFMVkOEuXmn4+XCUy9B3I3N 1fRDAL8Zsz/q2luQ1OuUDeQEK+tgnCtW0m/2PuX58fjmnFQl7hUohFLyteiadDk2icif jlcQ7z+Ugo0Q8SaPxn5GmP0LHsdKLKF3ORoJs= Original-Received: by 10.213.25.79 with SMTP id y15mr3629011ebb.41.1300181520138; Tue, 15 Mar 2011 02:32:00 -0700 (PDT) Original-Received: by 10.213.27.136 with HTTP; Tue, 15 Mar 2011 02:31:40 -0700 (PDT) In-Reply-To: X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list Resent-Date: Tue, 15 Mar 2011 05:33:02 -0400 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 140.186.70.43 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: , Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:45015 Archived-At: On Tue, Mar 15, 2011 at 3:16 AM, Stefan Monnier wrote: > Could you motivate your request? There can be a lot of uses for it. In my case I am using it for this: (defun grep-get-buffer-files () "Return list of files in a `grep-mode' buffer." (or (and (compilation-buffer-p (current-buffer)) (derived-mode-p 'grep-mode)) (error "Not in a grep buffer")) (let ((here (point)) files) (font-lock-fontify-buffer) (goto-char (point-min)) (while (not (eobp)) (let ((file (grep-grepped-file (point)))) (when file (add-to-list 'files file))) (forward-line)) (goto-char here) ;;(message "files=%s" files) files)) (defun grep-query-replace(from to &optional delimited) "Do `query-replace-regexp' of FROM with TO, on all files in *grep*. Third arg DELIMITED (prefix arg) means replace only word-delimited matches. If you exit (\\[keyboard-quit], RET or q), you can resume the query replace with the command \\[tags-loop-continue]. Must be called from a `grep-mode' buffer." (interactive (let ((common ;; Use the regexps that have been used in grep (let ((query-replace-from-history-variable 'grep-regexp-history) (query-replace-defaults (or grep-query-replace-defaults query-replace-defaults))) (unless (derived-mode-p 'grep-mode) (error "This command must be used in a grep output buffer")) (query-replace-read-args "Query replace regexp in grepped files" t t)))) (setq grep-query-replace-defaults (cons (nth 0 common) (nth 1 common))) (list (nth 0 common) (nth 1 common) (nth 2 common)))) (unless (derived-mode-p 'grep-mode) (error "This command must be used in a grep output buffer")) (dolist (file (grep-get-buffer-files)) (let ((buffer (get-file-buffer file))) (if (and buffer (with-current-buffer buffer buffer-read-only)) (error "File `%s' is visited read-only" file)))) (tags-query-replace from to delimited '(grep-get-buffer-files)))