annotate lisp/find-dired.el @ 110410:f2e111723c3a

Merge changes made in Gnus trunk. Reimplement nnimap, and do tweaks to the rest of the code to support that. * gnus-int.el (gnus-finish-retrieve-group-infos) (gnus-retrieve-group-data-early): New functions. * gnus-range.el (gnus-range-nconcat): New function. * gnus-start.el (gnus-get-unread-articles): Support early retrieval of data. (gnus-read-active-for-groups): Support finishing the early retrieval of data. * gnus-sum.el (gnus-summary-move-article): Pass the move-to group name if the move is internal, so that nnimap can do fast internal moves. * gnus.el (gnus-article-special-mark-lists): Add uid/active tuples, for nnimap usage. * nnimap.el: Rewritten. * nnmail.el (nnmail-inhibit-default-split-group): New internal variable to allow the mail splitting to not return a default group. This is useful for nnimap, which will leave unmatched mail in the inbox. * utf7.el (utf7-encode): Autoload. Implement shell connection. * nnimap.el (nnimap-open-shell-stream): New function. (nnimap-open-connection): Use it. Get the number of lines by using BODYSTRUCTURE. (nnimap-transform-headers): Get the number of lines in each message. (nnimap-retrieve-headers): Query for BODYSTRUCTURE so that we get the number of lines. Not all servers return UIDNEXT. Work past this problem. Remove junk from end of file. Fix typo in "bogus" section. Make capabilties be case-insensitive. Require cl when compiling. Don't bug out if the LIST command doesn't have any parameters. 2010-09-17 Knut Anders Hatlen <kahatlen@gmail.com> (tiny change) * nnimap.el (nnimap-get-groups): Don't bug out if the LIST command doesn't have any parameters. (mm-text-html-renderer): Document gnus-article-html. 2010-09-17 Julien Danjou <julien@danjou.info> (tiny fix) * mm-decode.el (mm-text-html-renderer): Document gnus-article-html. * dgnushack.el: Define netrc-credentials. If the user doesn't have a /etc/services, supply some sensible port defaults. Have `unseen-or-unread' select an unread unseen article first. (nntp-open-server): Return whether the open was successful or not. Throughout all files, replace (save-excursion (set-buffer ...)) with (with-current-buffer ... ). Save result so that it doesn't say "failed" all the time. Add ~/.authinfo to the default, since that's probably most useful for users. Don't use the "finish" method when we're reading from the agent. Add some more nnimap-relevant agent stuff to nnagent.el. * nnimap.el (nnimap-with-process-buffer): Removed. Revert one line that was changed by mistake in the last checkin. (nnimap-open-connection): Don't error out when we can't make a connection nnimap-related changes to avoid bugging out if we can't contact a server. * gnus-start.el (gnus-get-unread-articles): Don't try to scan groups from methods that are denied. * nnimap.el (nnimap-possibly-change-group): Return nil if we can't log in. (nnimap-finish-retrieve-group-infos): Make sure we're not waiting for nothing. * gnus-sum.el (gnus-select-newsgroup): Indent.
author Katsumi Yamaoka <yamaoka@jpl.org>
date Sat, 18 Sep 2010 10:02:19 +0000
parents 04698fd447b3
children 417b1e4d63cd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2230
6314334d7c2b Add standard library headers.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1225
diff changeset
1 ;;; find-dired.el --- run a `find' command and dired the output
662
8a533acedb77 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 584
diff changeset
2
74439
ddcbd2c1b70d Update copyright years.
Glenn Morris <rgm@gnu.org>
parents: 72555
diff changeset
3 ;; Copyright (C) 1992, 1994, 1995, 2000, 2001, 2002, 2003, 2004,
106815
1d1d5d9bd884 Add 2010 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 106121
diff changeset
4 ;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
846
20674ae6bf52 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 811
diff changeset
5
25278
cbe304a26771 Fix maintainer address.
Karl Heuer <kwzh@gnu.org>
parents: 22630
diff changeset
6 ;; Author: Roland McGrath <roland@gnu.org>,
1225
e16f52a7c9f9 New version from sk. Further hacked:
Roland McGrath <roland@gnu.org>
parents: 1183
diff changeset
7 ;; Sebastian Kremer <sk@thp.uni-koeln.de>
21057
9b9c929675eb Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 20597
diff changeset
8 ;; Maintainer: FSF
811
e694e0879463 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 807
diff changeset
9 ;; Keywords: unix
294
97aa6a6f9aa5 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 292
diff changeset
10
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12485
diff changeset
11 ;; This file is part of GNU Emacs.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12485
diff changeset
12
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
13 ;; GNU Emacs is free software: you can redistribute it and/or modify
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12485
diff changeset
14 ;; it under the terms of the GNU General Public License as published by
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
15 ;; the Free Software Foundation, either version 3 of the License, or
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
16 ;; (at your option) any later version.
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12485
diff changeset
17
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12485
diff changeset
18 ;; GNU Emacs is distributed in the hope that it will be useful,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12485
diff changeset
19 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12485
diff changeset
20 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12485
diff changeset
21 ;; GNU General Public License for more details.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12485
diff changeset
22
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12485
diff changeset
23 ;; You should have received a copy of the GNU General Public License
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
24 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 662
diff changeset
25
38412
253f761ad37b Some fixes to follow coding conventions in files maintained by FSF.
Pavel Janík <Pavel@Janik.cz>
parents: 30455
diff changeset
26 ;;; Commentary:
253f761ad37b Some fixes to follow coding conventions in files maintained by FSF.
Pavel Janík <Pavel@Janik.cz>
parents: 30455
diff changeset
27
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 662
diff changeset
28 ;;; Code:
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 662
diff changeset
29
292
cab78578e745 Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
30 (require 'dired)
1225
e16f52a7c9f9 New version from sk. Further hacked:
Roland McGrath <roland@gnu.org>
parents: 1183
diff changeset
31
20597
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 18580
diff changeset
32 (defgroup find-dired nil
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 18580
diff changeset
33 "Run a `find' command and dired the output."
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 18580
diff changeset
34 :group 'dired
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 18580
diff changeset
35 :prefix "find-")
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 18580
diff changeset
36
11035
97da4cb32d03 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 10929
diff changeset
37 ;; find's -ls corresponds to these switches.
10929
8102a6447ea0 (find-ls-option): Doc fix: now a cons.
Roland McGrath <roland@gnu.org>
parents: 10168
diff changeset
38 ;; Note -b, at least GNU find quotes spaces etc. in filenames
474
c3bbd755b7da *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 294
diff changeset
39 ;;;###autoload
20597
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 18580
diff changeset
40 (defcustom find-ls-option
105870
26baacb565b0 * textmodes/tex-mode.el (tex-alt-dvi-print-command)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105706
diff changeset
41 (if (eq system-type 'berkeley-unix) (purecopy '("-ls" . "-gilsb"))
26baacb565b0 * textmodes/tex-mode.el (tex-alt-dvi-print-command)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105706
diff changeset
42 (purecopy '("-exec ls -ld {} \\;" . "-ld")))
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 96410
diff changeset
43 "Description of the option to `find' to produce an `ls -l'-type listing.
10929
8102a6447ea0 (find-ls-option): Doc fix: now a cons.
Roland McGrath <roland@gnu.org>
parents: 10168
diff changeset
44 This is a cons of two strings (FIND-OPTION . LS-SWITCHES). FIND-OPTION
8102a6447ea0 (find-ls-option): Doc fix: now a cons.
Roland McGrath <roland@gnu.org>
parents: 10168
diff changeset
45 gives the option (or options) to `find' that produce the desired output.
20597
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 18580
diff changeset
46 LS-SWITCHES is a list of `ls' switches to tell dired how to parse the output."
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 18580
diff changeset
47 :type '(cons (string :tag "Find Option")
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 18580
diff changeset
48 (string :tag "Ls Switches"))
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 18580
diff changeset
49 :group 'find-dired)
474
c3bbd755b7da *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 294
diff changeset
50
c3bbd755b7da *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 294
diff changeset
51 ;;;###autoload
105939
a0f778f4a995 * term/x-win.el (x-gtk-stock-map):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105870
diff changeset
52 (defcustom find-ls-subdir-switches (purecopy "-al")
55940
793fa6e18e9d (find-ls-subdir-switches): New user option.
Luc Teirlinck <teirllm@auburn.edu>
parents: 54316
diff changeset
53 "`ls' switches for inserting subdirectories in `*Find*' buffers.
793fa6e18e9d (find-ls-subdir-switches): New user option.
Luc Teirlinck <teirllm@auburn.edu>
parents: 54316
diff changeset
54 This should contain the \"-l\" switch.
793fa6e18e9d (find-ls-subdir-switches): New user option.
Luc Teirlinck <teirllm@auburn.edu>
parents: 54316
diff changeset
55 Use the \"-F\" or \"-b\" switches if and only if you also use
793fa6e18e9d (find-ls-subdir-switches): New user option.
Luc Teirlinck <teirllm@auburn.edu>
parents: 54316
diff changeset
56 them for `find-ls-option'."
793fa6e18e9d (find-ls-subdir-switches): New user option.
Luc Teirlinck <teirllm@auburn.edu>
parents: 54316
diff changeset
57 :type 'string
793fa6e18e9d (find-ls-subdir-switches): New user option.
Luc Teirlinck <teirllm@auburn.edu>
parents: 54316
diff changeset
58 :group 'find-dired
59996
aac0a33f5772 Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents: 55940
diff changeset
59 :version "22.1")
55940
793fa6e18e9d (find-ls-subdir-switches): New user option.
Luc Teirlinck <teirllm@auburn.edu>
parents: 54316
diff changeset
60
793fa6e18e9d (find-ls-subdir-switches): New user option.
Luc Teirlinck <teirllm@auburn.edu>
parents: 54316
diff changeset
61 ;;;###autoload
20597
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 18580
diff changeset
62 (defcustom find-grep-options
105939
a0f778f4a995 * term/x-win.el (x-gtk-stock-map):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105870
diff changeset
63 (purecopy (if (or (eq system-type 'berkeley-unix)
16569
a3c07728832a (find-grep-options): Treat solaris, irix like BSD.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
64 (string-match "solaris2" system-configuration)
a3c07728832a (find-grep-options): Treat solaris, irix like BSD.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
65 (string-match "irix" system-configuration))
105939
a0f778f4a995 * term/x-win.el (x-gtk-stock-map):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105870
diff changeset
66 "-s" "-q"))
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 96410
diff changeset
67 "Option to grep to be as silent as possible.
10168
64163654c255 (find-grep-options): Use -q on non-BSD systems.
Richard M. Stallman <rms@gnu.org>
parents: 10024
diff changeset
68 On Berkeley systems, this is `-s'; on Posix, and with GNU grep, `-q' does it.
20597
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 18580
diff changeset
69 On other systems, the closest you can come is to use `-l'."
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 18580
diff changeset
70 :type 'string
886039ba7b3e Customized.
Andreas Schwab <schwab@suse.de>
parents: 18580
diff changeset
71 :group 'find-dired)
292
cab78578e745 Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
72
106121
f58be5f9ad87 * find-dired.el (find-name-arg): Remove autoload. (Bug#4387)
Juri Linkov <juri@jurta.org>
parents: 105994
diff changeset
73 ;; This used to be autoloaded (see bug#4387).
79588
7f97528cec7f (find-name-arg): New custom variable.
Jason Rumney <jasonr@gnu.org>
parents: 78236
diff changeset
74 (defcustom find-name-arg
105939
a0f778f4a995 * term/x-win.el (x-gtk-stock-map):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105870
diff changeset
75 (purecopy (if read-file-name-completion-ignore-case
79588
7f97528cec7f (find-name-arg): New custom variable.
Jason Rumney <jasonr@gnu.org>
parents: 78236
diff changeset
76 "-iname"
105939
a0f778f4a995 * term/x-win.el (x-gtk-stock-map):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105870
diff changeset
77 "-name"))
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 96410
diff changeset
78 "Argument used to specify file name pattern.
79588
7f97528cec7f (find-name-arg): New custom variable.
Jason Rumney <jasonr@gnu.org>
parents: 78236
diff changeset
79 If `read-file-name-completion-ignore-case' is non-nil, -iname is used so that
105706
697110244863 * find-dired.el (find-name-arg): Fix typo in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 100908
diff changeset
80 find also ignores case. Otherwise, -name is used."
79588
7f97528cec7f (find-name-arg): New custom variable.
Jason Rumney <jasonr@gnu.org>
parents: 78236
diff changeset
81 :type 'string
7f97528cec7f (find-name-arg): New custom variable.
Jason Rumney <jasonr@gnu.org>
parents: 78236
diff changeset
82 :group 'find-dired
7f97528cec7f (find-name-arg): New custom variable.
Jason Rumney <jasonr@gnu.org>
parents: 78236
diff changeset
83 :version "22.2")
7f97528cec7f (find-name-arg): New custom variable.
Jason Rumney <jasonr@gnu.org>
parents: 78236
diff changeset
84
292
cab78578e745 Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
85 (defvar find-args nil
cab78578e745 Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
86 "Last arguments given to `find' by \\[find-dired].")
cab78578e745 Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
87
10929
8102a6447ea0 (find-ls-option): Doc fix: now a cons.
Roland McGrath <roland@gnu.org>
parents: 10168
diff changeset
88 ;; History of find-args values entered in the minibuffer.
8102a6447ea0 (find-ls-option): Doc fix: now a cons.
Roland McGrath <roland@gnu.org>
parents: 10168
diff changeset
89 (defvar find-args-history nil)
8102a6447ea0 (find-ls-option): Doc fix: now a cons.
Roland McGrath <roland@gnu.org>
parents: 10168
diff changeset
90
48490
3531509372aa (find-dired): Set dired-sort-inhibit to t buffer-locally.
Richard M. Stallman <rms@gnu.org>
parents: 45382
diff changeset
91 (defvar dired-sort-inhibit)
3531509372aa (find-dired): Set dired-sort-inhibit to t buffer-locally.
Richard M. Stallman <rms@gnu.org>
parents: 45382
diff changeset
92
292
cab78578e745 Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
93 ;;;###autoload
cab78578e745 Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
94 (defun find-dired (dir args)
22630
e4a895537576 (find-dired): Bind dired-buffers so it can't change. Use abbreviate-file-name.
Richard M. Stallman <rms@gnu.org>
parents: 21057
diff changeset
95 "Run `find' and go into Dired mode on a buffer of the output.
474
c3bbd755b7da *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 294
diff changeset
96 The command run (after changing into DIR) is
c3bbd755b7da *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 294
diff changeset
97
16823
4fa015c0a620 (find-dired): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16569
diff changeset
98 find . \\( ARGS \\) -ls
4fa015c0a620 (find-dired): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16569
diff changeset
99
4fa015c0a620 (find-dired): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16569
diff changeset
100 except that the variable `find-ls-option' specifies what to use
4fa015c0a620 (find-dired): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16569
diff changeset
101 as the final argument."
107553
04698fd447b3 * find-dired.el (find-dired): Use read-directory-name (Bug#5777).
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
102 (interactive (list (read-directory-name "Run find in directory: " nil "" t)
10929
8102a6447ea0 (find-ls-option): Doc fix: now a cons.
Roland McGrath <roland@gnu.org>
parents: 10168
diff changeset
103 (read-string "Run find (with args): " find-args
8102a6447ea0 (find-ls-option): Doc fix: now a cons.
Roland McGrath <roland@gnu.org>
parents: 10168
diff changeset
104 '(find-args-history . 1))))
22630
e4a895537576 (find-dired): Bind dired-buffers so it can't change. Use abbreviate-file-name.
Richard M. Stallman <rms@gnu.org>
parents: 21057
diff changeset
105 (let ((dired-buffers dired-buffers))
e4a895537576 (find-dired): Bind dired-buffers so it can't change. Use abbreviate-file-name.
Richard M. Stallman <rms@gnu.org>
parents: 21057
diff changeset
106 ;; Expand DIR ("" means default-directory), and make sure it has a
e4a895537576 (find-dired): Bind dired-buffers so it can't change. Use abbreviate-file-name.
Richard M. Stallman <rms@gnu.org>
parents: 21057
diff changeset
107 ;; trailing slash.
55940
793fa6e18e9d (find-ls-subdir-switches): New user option.
Luc Teirlinck <teirllm@auburn.edu>
parents: 54316
diff changeset
108 (setq dir (file-name-as-directory (expand-file-name dir)))
22630
e4a895537576 (find-dired): Bind dired-buffers so it can't change. Use abbreviate-file-name.
Richard M. Stallman <rms@gnu.org>
parents: 21057
diff changeset
109 ;; Check that it's really a directory.
e4a895537576 (find-dired): Bind dired-buffers so it can't change. Use abbreviate-file-name.
Richard M. Stallman <rms@gnu.org>
parents: 21057
diff changeset
110 (or (file-directory-p dir)
e4a895537576 (find-dired): Bind dired-buffers so it can't change. Use abbreviate-file-name.
Richard M. Stallman <rms@gnu.org>
parents: 21057
diff changeset
111 (error "find-dired needs a directory: %s" dir))
e4a895537576 (find-dired): Bind dired-buffers so it can't change. Use abbreviate-file-name.
Richard M. Stallman <rms@gnu.org>
parents: 21057
diff changeset
112 (switch-to-buffer (get-buffer-create "*Find*"))
30455
1130a792b2f7 Update copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 26042
diff changeset
113
1130a792b2f7 Update copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 26042
diff changeset
114 ;; See if there's still a `find' running, and offer to kill
1130a792b2f7 Update copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 26042
diff changeset
115 ;; it first, if it is.
1130a792b2f7 Update copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 26042
diff changeset
116 (let ((find (get-buffer-process (current-buffer))))
1130a792b2f7 Update copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 26042
diff changeset
117 (when find
1130a792b2f7 Update copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 26042
diff changeset
118 (if (or (not (eq (process-status find) 'run))
1130a792b2f7 Update copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 26042
diff changeset
119 (yes-or-no-p "A `find' process is running; kill it? "))
1130a792b2f7 Update copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 26042
diff changeset
120 (condition-case nil
1130a792b2f7 Update copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 26042
diff changeset
121 (progn
1130a792b2f7 Update copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 26042
diff changeset
122 (interrupt-process find)
1130a792b2f7 Update copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 26042
diff changeset
123 (sit-for 1)
1130a792b2f7 Update copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 26042
diff changeset
124 (delete-process find))
1130a792b2f7 Update copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 26042
diff changeset
125 (error nil))
1130a792b2f7 Update copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 26042
diff changeset
126 (error "Cannot have two processes in `%s' at once" (buffer-name)))))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48490
diff changeset
127
22630
e4a895537576 (find-dired): Bind dired-buffers so it can't change. Use abbreviate-file-name.
Richard M. Stallman <rms@gnu.org>
parents: 21057
diff changeset
128 (widen)
e4a895537576 (find-dired): Bind dired-buffers so it can't change. Use abbreviate-file-name.
Richard M. Stallman <rms@gnu.org>
parents: 21057
diff changeset
129 (kill-all-local-variables)
e4a895537576 (find-dired): Bind dired-buffers so it can't change. Use abbreviate-file-name.
Richard M. Stallman <rms@gnu.org>
parents: 21057
diff changeset
130 (setq buffer-read-only nil)
e4a895537576 (find-dired): Bind dired-buffers so it can't change. Use abbreviate-file-name.
Richard M. Stallman <rms@gnu.org>
parents: 21057
diff changeset
131 (erase-buffer)
e4a895537576 (find-dired): Bind dired-buffers so it can't change. Use abbreviate-file-name.
Richard M. Stallman <rms@gnu.org>
parents: 21057
diff changeset
132 (setq default-directory dir
55940
793fa6e18e9d (find-ls-subdir-switches): New user option.
Luc Teirlinck <teirllm@auburn.edu>
parents: 54316
diff changeset
133 find-args args ; save for next interactive call
79588
7f97528cec7f (find-name-arg): New custom variable.
Jason Rumney <jasonr@gnu.org>
parents: 78236
diff changeset
134 args (concat find-program " . "
22630
e4a895537576 (find-dired): Bind dired-buffers so it can't change. Use abbreviate-file-name.
Richard M. Stallman <rms@gnu.org>
parents: 21057
diff changeset
135 (if (string= args "")
e4a895537576 (find-dired): Bind dired-buffers so it can't change. Use abbreviate-file-name.
Richard M. Stallman <rms@gnu.org>
parents: 21057
diff changeset
136 ""
72555
20f4483c11ca (find-dired): Use shell-quote-argument to properly
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
137 (concat
20f4483c11ca (find-dired): Use shell-quote-argument to properly
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
138 (shell-quote-argument "(")
20f4483c11ca (find-dired): Use shell-quote-argument to properly
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
139 " " args " "
20f4483c11ca (find-dired): Use shell-quote-argument to properly
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
140 (shell-quote-argument ")")
20f4483c11ca (find-dired): Use shell-quote-argument to properly
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
141 " "))
20f4483c11ca (find-dired): Use shell-quote-argument to properly
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
142 (if (equal (car find-ls-option) "-exec ls -ld {} \\;")
20f4483c11ca (find-dired): Use shell-quote-argument to properly
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
143 (concat "-exec ls -ld "
20f4483c11ca (find-dired): Use shell-quote-argument to properly
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
144 (shell-quote-argument "{}")
20f4483c11ca (find-dired): Use shell-quote-argument to properly
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
145 " "
20f4483c11ca (find-dired): Use shell-quote-argument to properly
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
146 (shell-quote-argument ";"))
20f4483c11ca (find-dired): Use shell-quote-argument to properly
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
147 (car find-ls-option))))
54316
0b81a282eca3 * find-dired.el (find-dired): Call `shell-command' instead of
Michael Albinus <michael.albinus@gmx.de>
parents: 53404
diff changeset
148 ;; Start the find process.
0b81a282eca3 * find-dired.el (find-dired): Call `shell-command' instead of
Michael Albinus <michael.albinus@gmx.de>
parents: 53404
diff changeset
149 (shell-command (concat args "&") (current-buffer))
22630
e4a895537576 (find-dired): Bind dired-buffers so it can't change. Use abbreviate-file-name.
Richard M. Stallman <rms@gnu.org>
parents: 21057
diff changeset
150 ;; The next statement will bomb in classic dired (no optional arg allowed)
e4a895537576 (find-dired): Bind dired-buffers so it can't change. Use abbreviate-file-name.
Richard M. Stallman <rms@gnu.org>
parents: 21057
diff changeset
151 (dired-mode dir (cdr find-ls-option))
53404
5e98e2525d62 (kill-find): New command.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
152 (let ((map (make-sparse-keymap)))
5e98e2525d62 (kill-find): New command.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
153 (set-keymap-parent map (current-local-map))
5e98e2525d62 (kill-find): New command.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
154 (define-key map "\C-c\C-k" 'kill-find)
5e98e2525d62 (kill-find): New command.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
155 (use-local-map map))
48490
3531509372aa (find-dired): Set dired-sort-inhibit to t buffer-locally.
Richard M. Stallman <rms@gnu.org>
parents: 45382
diff changeset
156 (make-local-variable 'dired-sort-inhibit)
3531509372aa (find-dired): Set dired-sort-inhibit to t buffer-locally.
Richard M. Stallman <rms@gnu.org>
parents: 45382
diff changeset
157 (setq dired-sort-inhibit t)
45382
374dfaadcd0f (find-dired): Implement revert-buffer-function.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 44847
diff changeset
158 (set (make-local-variable 'revert-buffer-function)
374dfaadcd0f (find-dired): Implement revert-buffer-function.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 44847
diff changeset
159 `(lambda (ignore-auto noconfirm)
374dfaadcd0f (find-dired): Implement revert-buffer-function.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 44847
diff changeset
160 (find-dired ,dir ,find-args)))
22630
e4a895537576 (find-dired): Bind dired-buffers so it can't change. Use abbreviate-file-name.
Richard M. Stallman <rms@gnu.org>
parents: 21057
diff changeset
161 ;; Set subdir-alist so that Tree Dired will work:
e4a895537576 (find-dired): Bind dired-buffers so it can't change. Use abbreviate-file-name.
Richard M. Stallman <rms@gnu.org>
parents: 21057
diff changeset
162 (if (fboundp 'dired-simple-subdir-alist)
e4a895537576 (find-dired): Bind dired-buffers so it can't change. Use abbreviate-file-name.
Richard M. Stallman <rms@gnu.org>
parents: 21057
diff changeset
163 ;; will work even with nested dired format (dired-nstd.el,v 1.15
e4a895537576 (find-dired): Bind dired-buffers so it can't change. Use abbreviate-file-name.
Richard M. Stallman <rms@gnu.org>
parents: 21057
diff changeset
164 ;; and later)
e4a895537576 (find-dired): Bind dired-buffers so it can't change. Use abbreviate-file-name.
Richard M. Stallman <rms@gnu.org>
parents: 21057
diff changeset
165 (dired-simple-subdir-alist)
e4a895537576 (find-dired): Bind dired-buffers so it can't change. Use abbreviate-file-name.
Richard M. Stallman <rms@gnu.org>
parents: 21057
diff changeset
166 ;; else we have an ancient tree dired (or classic dired, where
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48490
diff changeset
167 ;; this does no harm)
22630
e4a895537576 (find-dired): Bind dired-buffers so it can't change. Use abbreviate-file-name.
Richard M. Stallman <rms@gnu.org>
parents: 21057
diff changeset
168 (set (make-local-variable 'dired-subdir-alist)
e4a895537576 (find-dired): Bind dired-buffers so it can't change. Use abbreviate-file-name.
Richard M. Stallman <rms@gnu.org>
parents: 21057
diff changeset
169 (list (cons default-directory (point-min-marker)))))
55940
793fa6e18e9d (find-ls-subdir-switches): New user option.
Luc Teirlinck <teirllm@auburn.edu>
parents: 54316
diff changeset
170 (set (make-local-variable 'dired-subdir-switches) find-ls-subdir-switches)
22630
e4a895537576 (find-dired): Bind dired-buffers so it can't change. Use abbreviate-file-name.
Richard M. Stallman <rms@gnu.org>
parents: 21057
diff changeset
171 (setq buffer-read-only nil)
e4a895537576 (find-dired): Bind dired-buffers so it can't change. Use abbreviate-file-name.
Richard M. Stallman <rms@gnu.org>
parents: 21057
diff changeset
172 ;; Subdir headlerline must come first because the first marker in
e4a895537576 (find-dired): Bind dired-buffers so it can't change. Use abbreviate-file-name.
Richard M. Stallman <rms@gnu.org>
parents: 21057
diff changeset
173 ;; subdir-alist points there.
e4a895537576 (find-dired): Bind dired-buffers so it can't change. Use abbreviate-file-name.
Richard M. Stallman <rms@gnu.org>
parents: 21057
diff changeset
174 (insert " " dir ":\n")
e4a895537576 (find-dired): Bind dired-buffers so it can't change. Use abbreviate-file-name.
Richard M. Stallman <rms@gnu.org>
parents: 21057
diff changeset
175 ;; Make second line a ``find'' line in analogy to the ``total'' or
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48490
diff changeset
176 ;; ``wildcard'' line.
22630
e4a895537576 (find-dired): Bind dired-buffers so it can't change. Use abbreviate-file-name.
Richard M. Stallman <rms@gnu.org>
parents: 21057
diff changeset
177 (insert " " args "\n")
53404
5e98e2525d62 (kill-find): New command.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
178 (setq buffer-read-only t)
54316
0b81a282eca3 * find-dired.el (find-dired): Call `shell-command' instead of
Michael Albinus <michael.albinus@gmx.de>
parents: 53404
diff changeset
179 (let ((proc (get-buffer-process (current-buffer))))
22630
e4a895537576 (find-dired): Bind dired-buffers so it can't change. Use abbreviate-file-name.
Richard M. Stallman <rms@gnu.org>
parents: 21057
diff changeset
180 (set-process-filter proc (function find-dired-filter))
e4a895537576 (find-dired): Bind dired-buffers so it can't change. Use abbreviate-file-name.
Richard M. Stallman <rms@gnu.org>
parents: 21057
diff changeset
181 (set-process-sentinel proc (function find-dired-sentinel))
e4a895537576 (find-dired): Bind dired-buffers so it can't change. Use abbreviate-file-name.
Richard M. Stallman <rms@gnu.org>
parents: 21057
diff changeset
182 ;; Initialize the process marker; it is used by the filter.
e4a895537576 (find-dired): Bind dired-buffers so it can't change. Use abbreviate-file-name.
Richard M. Stallman <rms@gnu.org>
parents: 21057
diff changeset
183 (move-marker (process-mark proc) 1 (current-buffer)))
e4a895537576 (find-dired): Bind dired-buffers so it can't change. Use abbreviate-file-name.
Richard M. Stallman <rms@gnu.org>
parents: 21057
diff changeset
184 (setq mode-line-process '(":%s"))))
292
cab78578e745 Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
185
53404
5e98e2525d62 (kill-find): New command.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
186 (defun kill-find ()
5e98e2525d62 (kill-find): New command.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
187 "Kill the `find' process running in the current buffer."
5e98e2525d62 (kill-find): New command.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
188 (interactive)
5e98e2525d62 (kill-find): New command.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
189 (let ((find (get-buffer-process (current-buffer))))
5e98e2525d62 (kill-find): New command.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
190 (and find (eq (process-status find) 'run)
5e98e2525d62 (kill-find): New command.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
191 (eq (process-filter find) (function find-dired-filter))
5e98e2525d62 (kill-find): New command.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
192 (condition-case nil
5e98e2525d62 (kill-find): New command.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
193 (delete-process find)
5e98e2525d62 (kill-find): New command.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
194 (error nil)))))
5e98e2525d62 (kill-find): New command.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
195
292
cab78578e745 Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
196 ;;;###autoload
cab78578e745 Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
197 (defun find-name-dired (dir pattern)
cab78578e745 Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
198 "Search DIR recursively for files matching the globbing pattern PATTERN,
474
c3bbd755b7da *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 294
diff changeset
199 and run dired on those files.
c3bbd755b7da *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 294
diff changeset
200 PATTERN is a shell wildcard (not an Emacs regexp) and need not be quoted.
c3bbd755b7da *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 294
diff changeset
201 The command run (after changing into DIR) is
c3bbd755b7da *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 294
diff changeset
202
c3bbd755b7da *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 294
diff changeset
203 find . -name 'PATTERN' -ls"
c3bbd755b7da *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 294
diff changeset
204 (interactive
c3bbd755b7da *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 294
diff changeset
205 "DFind-name (directory): \nsFind-name (filename wildcard): ")
79588
7f97528cec7f (find-name-arg): New custom variable.
Jason Rumney <jasonr@gnu.org>
parents: 78236
diff changeset
206 (find-dired dir (concat find-name-arg " " (shell-quote-argument pattern))))
292
cab78578e745 Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
207
474
c3bbd755b7da *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 294
diff changeset
208 ;; This functionality suggested by
c3bbd755b7da *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 294
diff changeset
209 ;; From: oblanc@watcgl.waterloo.edu (Olivier Blanc)
c3bbd755b7da *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 294
diff changeset
210 ;; Subject: find-dired, lookfor-dired
c3bbd755b7da *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 294
diff changeset
211 ;; Date: 10 May 91 17:50:00 GMT
c3bbd755b7da *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 294
diff changeset
212 ;; Organization: University of Waterloo
c3bbd755b7da *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 294
diff changeset
213
2571
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2230
diff changeset
214 (defalias 'lookfor-dired 'find-grep-dired)
474
c3bbd755b7da *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 294
diff changeset
215 ;;;###autoload
43644
6046fb03f1af (find-grep-dired): Rename arg to `regexp'.
Richard M. Stallman <rms@gnu.org>
parents: 43643
diff changeset
216 (defun find-grep-dired (dir regexp)
6046fb03f1af (find-grep-dired): Rename arg to `regexp'.
Richard M. Stallman <rms@gnu.org>
parents: 43643
diff changeset
217 "Find files in DIR containing a regexp REGEXP and start Dired on output.
474
c3bbd755b7da *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 294
diff changeset
218 The command run (after changing into DIR) is
c3bbd755b7da *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 294
diff changeset
219
43644
6046fb03f1af (find-grep-dired): Rename arg to `regexp'.
Richard M. Stallman <rms@gnu.org>
parents: 43643
diff changeset
220 find . -exec grep -s -e REGEXP {} \\\; -ls
474
c3bbd755b7da *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 294
diff changeset
221
c3bbd755b7da *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 294
diff changeset
222 Thus ARG can also contain additional grep options."
10168
64163654c255 (find-grep-options): Use -q on non-BSD systems.
Richard M. Stallman <rms@gnu.org>
parents: 10024
diff changeset
223 (interactive "DFind-grep (directory): \nsFind-grep (grep regexp): ")
474
c3bbd755b7da *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 294
diff changeset
224 ;; find -exec doesn't allow shell i/o redirections in the command,
c3bbd755b7da *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 294
diff changeset
225 ;; or we could use `grep -l >/dev/null'
18580
717e09103d06 (find-grep-dired): Use -type f.
Richard M. Stallman <rms@gnu.org>
parents: 16823
diff changeset
226 ;; We use -type f, not ! -type d, to avoid getting screwed
717e09103d06 (find-grep-dired): Use -type f.
Richard M. Stallman <rms@gnu.org>
parents: 16823
diff changeset
227 ;; by FIFOs and devices. I'm not sure what's best to do
717e09103d06 (find-grep-dired): Use -type f.
Richard M. Stallman <rms@gnu.org>
parents: 16823
diff changeset
228 ;; about symlinks, so as far as I know this is not wrong.
474
c3bbd755b7da *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 294
diff changeset
229 (find-dired dir
79588
7f97528cec7f (find-name-arg): New custom variable.
Jason Rumney <jasonr@gnu.org>
parents: 78236
diff changeset
230 (concat "-type f -exec " grep-program " " find-grep-options " -e "
43644
6046fb03f1af (find-grep-dired): Rename arg to `regexp'.
Richard M. Stallman <rms@gnu.org>
parents: 43643
diff changeset
231 (shell-quote-argument regexp)
72555
20f4483c11ca (find-dired): Use shell-quote-argument to properly
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
232 " "
20f4483c11ca (find-dired): Use shell-quote-argument to properly
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
233 (shell-quote-argument "{}")
20f4483c11ca (find-dired): Use shell-quote-argument to properly
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
234 " "
20f4483c11ca (find-dired): Use shell-quote-argument to properly
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
235 (shell-quote-argument ";"))))
474
c3bbd755b7da *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 294
diff changeset
236
292
cab78578e745 Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
237 (defun find-dired-filter (proc string)
cab78578e745 Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
238 ;; Filter for \\[find-dired] processes.
53404
5e98e2525d62 (kill-find): New command.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
239 (let ((buf (process-buffer proc))
5e98e2525d62 (kill-find): New command.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
240 (inhibit-read-only t))
93521
7587f0dc0aa9 (find-dired-filter): Align columns by padding file sizes and link
Chong Yidong <cyd@stupidchicken.com>
parents: 79721
diff changeset
241 (if (buffer-name buf)
7587f0dc0aa9 (find-dired-filter): Align columns by padding file sizes and link
Chong Yidong <cyd@stupidchicken.com>
parents: 79721
diff changeset
242 (with-current-buffer buf
96410
56e9179abfbe (find-dired-filter): Preserve point.
Andreas Schwab <schwab@suse.de>
parents: 94678
diff changeset
243 (save-excursion
56e9179abfbe (find-dired-filter): Preserve point.
Andreas Schwab <schwab@suse.de>
parents: 94678
diff changeset
244 (save-restriction
56e9179abfbe (find-dired-filter): Preserve point.
Andreas Schwab <schwab@suse.de>
parents: 94678
diff changeset
245 (widen)
56e9179abfbe (find-dired-filter): Preserve point.
Andreas Schwab <schwab@suse.de>
parents: 94678
diff changeset
246 (let ((buffer-read-only nil)
56e9179abfbe (find-dired-filter): Preserve point.
Andreas Schwab <schwab@suse.de>
parents: 94678
diff changeset
247 (beg (point-max))
56e9179abfbe (find-dired-filter): Preserve point.
Andreas Schwab <schwab@suse.de>
parents: 94678
diff changeset
248 (l-opt (and (consp find-ls-option)
56e9179abfbe (find-dired-filter): Preserve point.
Andreas Schwab <schwab@suse.de>
parents: 94678
diff changeset
249 (string-match "l" (cdr find-ls-option))))
56e9179abfbe (find-dired-filter): Preserve point.
Andreas Schwab <schwab@suse.de>
parents: 94678
diff changeset
250 (ls-regexp (concat "^ +[^ \t\r\n]+\\( +[^ \t\r\n]+\\) +"
56e9179abfbe (find-dired-filter): Preserve point.
Andreas Schwab <schwab@suse.de>
parents: 94678
diff changeset
251 "[^ \t\r\n]+ +[^ \t\r\n]+\\( +[0-9]+\\)")))
56e9179abfbe (find-dired-filter): Preserve point.
Andreas Schwab <schwab@suse.de>
parents: 94678
diff changeset
252 (goto-char beg)
56e9179abfbe (find-dired-filter): Preserve point.
Andreas Schwab <schwab@suse.de>
parents: 94678
diff changeset
253 (insert string)
56e9179abfbe (find-dired-filter): Preserve point.
Andreas Schwab <schwab@suse.de>
parents: 94678
diff changeset
254 (goto-char beg)
56e9179abfbe (find-dired-filter): Preserve point.
Andreas Schwab <schwab@suse.de>
parents: 94678
diff changeset
255 (or (looking-at "^")
56e9179abfbe (find-dired-filter): Preserve point.
Andreas Schwab <schwab@suse.de>
parents: 94678
diff changeset
256 (forward-line 1))
56e9179abfbe (find-dired-filter): Preserve point.
Andreas Schwab <schwab@suse.de>
parents: 94678
diff changeset
257 (while (looking-at "^")
56e9179abfbe (find-dired-filter): Preserve point.
Andreas Schwab <schwab@suse.de>
parents: 94678
diff changeset
258 (insert " ")
474
c3bbd755b7da *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 294
diff changeset
259 (forward-line 1))
96410
56e9179abfbe (find-dired-filter): Preserve point.
Andreas Schwab <schwab@suse.de>
parents: 94678
diff changeset
260 ;; Convert ` ./FILE' to ` FILE'
56e9179abfbe (find-dired-filter): Preserve point.
Andreas Schwab <schwab@suse.de>
parents: 94678
diff changeset
261 ;; This would lose if the current chunk of output
56e9179abfbe (find-dired-filter): Preserve point.
Andreas Schwab <schwab@suse.de>
parents: 94678
diff changeset
262 ;; starts or ends within the ` ./', so back up a bit:
56e9179abfbe (find-dired-filter): Preserve point.
Andreas Schwab <schwab@suse.de>
parents: 94678
diff changeset
263 (goto-char (- beg 3)) ; no error if < 0
56e9179abfbe (find-dired-filter): Preserve point.
Andreas Schwab <schwab@suse.de>
parents: 94678
diff changeset
264 (while (search-forward " ./" nil t)
56e9179abfbe (find-dired-filter): Preserve point.
Andreas Schwab <schwab@suse.de>
parents: 94678
diff changeset
265 (delete-region (point) (- (point) 2)))
56e9179abfbe (find-dired-filter): Preserve point.
Andreas Schwab <schwab@suse.de>
parents: 94678
diff changeset
266 ;; Pad the number of links and file size. This is a
56e9179abfbe (find-dired-filter): Preserve point.
Andreas Schwab <schwab@suse.de>
parents: 94678
diff changeset
267 ;; quick and dirty way of getting the columns to line up
56e9179abfbe (find-dired-filter): Preserve point.
Andreas Schwab <schwab@suse.de>
parents: 94678
diff changeset
268 ;; most of the time, but it's not foolproof.
56e9179abfbe (find-dired-filter): Preserve point.
Andreas Schwab <schwab@suse.de>
parents: 94678
diff changeset
269 (when l-opt
56e9179abfbe (find-dired-filter): Preserve point.
Andreas Schwab <schwab@suse.de>
parents: 94678
diff changeset
270 (goto-char beg)
56e9179abfbe (find-dired-filter): Preserve point.
Andreas Schwab <schwab@suse.de>
parents: 94678
diff changeset
271 (goto-char (line-beginning-position))
56e9179abfbe (find-dired-filter): Preserve point.
Andreas Schwab <schwab@suse.de>
parents: 94678
diff changeset
272 (while (re-search-forward ls-regexp nil t)
56e9179abfbe (find-dired-filter): Preserve point.
Andreas Schwab <schwab@suse.de>
parents: 94678
diff changeset
273 (replace-match (format "%4s" (match-string 1))
56e9179abfbe (find-dired-filter): Preserve point.
Andreas Schwab <schwab@suse.de>
parents: 94678
diff changeset
274 nil nil nil 1)
56e9179abfbe (find-dired-filter): Preserve point.
Andreas Schwab <schwab@suse.de>
parents: 94678
diff changeset
275 (replace-match (format "%9s" (match-string 2))
56e9179abfbe (find-dired-filter): Preserve point.
Andreas Schwab <schwab@suse.de>
parents: 94678
diff changeset
276 nil nil nil 2)
56e9179abfbe (find-dired-filter): Preserve point.
Andreas Schwab <schwab@suse.de>
parents: 94678
diff changeset
277 (forward-line 1)))
56e9179abfbe (find-dired-filter): Preserve point.
Andreas Schwab <schwab@suse.de>
parents: 94678
diff changeset
278 ;; Find all the complete lines in the unprocessed
56e9179abfbe (find-dired-filter): Preserve point.
Andreas Schwab <schwab@suse.de>
parents: 94678
diff changeset
279 ;; output and process it to add text properties.
56e9179abfbe (find-dired-filter): Preserve point.
Andreas Schwab <schwab@suse.de>
parents: 94678
diff changeset
280 (goto-char (point-max))
56e9179abfbe (find-dired-filter): Preserve point.
Andreas Schwab <schwab@suse.de>
parents: 94678
diff changeset
281 (if (search-backward "\n" (process-mark proc) t)
56e9179abfbe (find-dired-filter): Preserve point.
Andreas Schwab <schwab@suse.de>
parents: 94678
diff changeset
282 (progn
56e9179abfbe (find-dired-filter): Preserve point.
Andreas Schwab <schwab@suse.de>
parents: 94678
diff changeset
283 (dired-insert-set-properties (process-mark proc)
56e9179abfbe (find-dired-filter): Preserve point.
Andreas Schwab <schwab@suse.de>
parents: 94678
diff changeset
284 (1+ (point)))
56e9179abfbe (find-dired-filter): Preserve point.
Andreas Schwab <schwab@suse.de>
parents: 94678
diff changeset
285 (move-marker (process-mark proc) (1+ (point)))))))))
294
97aa6a6f9aa5 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 292
diff changeset
286 ;; The buffer has been killed.
97aa6a6f9aa5 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 292
diff changeset
287 (delete-process proc))))
292
cab78578e745 Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
288
cab78578e745 Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
289 (defun find-dired-sentinel (proc state)
cab78578e745 Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
290 ;; Sentinel for \\[find-dired] processes.
53404
5e98e2525d62 (kill-find): New command.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
291 (let ((buf (process-buffer proc))
5e98e2525d62 (kill-find): New command.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
292 (inhibit-read-only t))
294
97aa6a6f9aa5 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 292
diff changeset
293 (if (buffer-name buf)
105994
009383a57ce8 * x-dnd.el (x-dnd-maybe-call-test-function):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105939
diff changeset
294 (with-current-buffer buf
3189
77efda0d2b31 (find-dired-sentinel): Write a line describing death.
Roland McGrath <roland@gnu.org>
parents: 2571
diff changeset
295 (let ((buffer-read-only nil))
77efda0d2b31 (find-dired-sentinel): Write a line describing death.
Roland McGrath <roland@gnu.org>
parents: 2571
diff changeset
296 (save-excursion
77efda0d2b31 (find-dired-sentinel): Write a line describing death.
Roland McGrath <roland@gnu.org>
parents: 2571
diff changeset
297 (goto-char (point-max))
42359
e6f53dd04c68 Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 42358
diff changeset
298 (insert "\n find " state)
3189
77efda0d2b31 (find-dired-sentinel): Write a line describing death.
Roland McGrath <roland@gnu.org>
parents: 2571
diff changeset
299 (forward-char -1) ;Back up before \n at end of STATE.
77efda0d2b31 (find-dired-sentinel): Write a line describing death.
Roland McGrath <roland@gnu.org>
parents: 2571
diff changeset
300 (insert " at " (substring (current-time-string) 0 19))
77efda0d2b31 (find-dired-sentinel): Write a line describing death.
Roland McGrath <roland@gnu.org>
parents: 2571
diff changeset
301 (forward-char 1)
77efda0d2b31 (find-dired-sentinel): Write a line describing death.
Roland McGrath <roland@gnu.org>
parents: 2571
diff changeset
302 (setq mode-line-process
7073
c662b47cda3f (find-dired, find-dired-sentinel):
Richard M. Stallman <rms@gnu.org>
parents: 5460
diff changeset
303 (concat ":"
3189
77efda0d2b31 (find-dired-sentinel): Write a line describing death.
Roland McGrath <roland@gnu.org>
parents: 2571
diff changeset
304 (symbol-name (process-status proc))))
77efda0d2b31 (find-dired-sentinel): Write a line describing death.
Roland McGrath <roland@gnu.org>
parents: 2571
diff changeset
305 ;; Since the buffer and mode line will show that the
77efda0d2b31 (find-dired-sentinel): Write a line describing death.
Roland McGrath <roland@gnu.org>
parents: 2571
diff changeset
306 ;; process is dead, we can delete it now. Otherwise it
77efda0d2b31 (find-dired-sentinel): Write a line describing death.
Roland McGrath <roland@gnu.org>
parents: 2571
diff changeset
307 ;; will stay around until M-x list-processes.
77efda0d2b31 (find-dired-sentinel): Write a line describing death.
Roland McGrath <roland@gnu.org>
parents: 2571
diff changeset
308 (delete-process proc)
11585
e28ae3856c1d (find-dired-sentinel): Use force-mode-line-update.
Karl Heuer <kwzh@gnu.org>
parents: 11035
diff changeset
309 (force-mode-line-update)))
294
97aa6a6f9aa5 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 292
diff changeset
310 (message "find-dired %s finished." (current-buffer))))))
55940
793fa6e18e9d (find-ls-subdir-switches): New user option.
Luc Teirlinck <teirllm@auburn.edu>
parents: 54316
diff changeset
311
1225
e16f52a7c9f9 New version from sk. Further hacked:
Roland McGrath <roland@gnu.org>
parents: 1183
diff changeset
312
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 474
diff changeset
313 (provide 'find-dired)
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 474
diff changeset
314
93975
1e3a407766b9 Fix up comment convention on the arch-tag lines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93521
diff changeset
315 ;; arch-tag: 8edece95-af00-4221-bc74-a4bd2f75f9b0
662
8a533acedb77 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 584
diff changeset
316 ;;; find-dired.el ends here