annotate lisp/dired.el @ 97366:d2c211c8ceda

(w32_list_system_processes, w32_system_process_attributes): Add prototypes. (Qeuid, Qegid, Qcomm, Qstate, Qppid, Qpgrp, Qsess, Qttname) (Qminflt, Qmajflt, Qcminflt, Qcmajflt, Qutime, Qstime, Qcutime) (Qpri, Qnice, Qthcount, Qstart, Qvsize, Qrss, Qargs, Quser, Qgroup) (Qetime, Qpcpu, Qpmem, Qtpgid, Qcstime): Add extern declarations.
author Eli Zaretskii <eliz@gnu.org>
date Sat, 09 Aug 2008 17:53:30 +0000
parents c3512b2085a0
children 6e551caf98f6
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2229
bd3c525fa6fc Added standard library headers.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1755
diff changeset
1 ;;; dired.el --- directory-browsing commands
834
2e0cd4e83c2e *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 778
diff changeset
2
58412
b9a1c1b8d195 (dired-align-file): Don't assume line starts with spaces.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57943
diff changeset
3 ;; Copyright (C) 1985, 1986, 1992, 1993, 1994, 1995, 1996, 1997, 2000,
79721
73661ddc7ac7 Add 2008 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 79074
diff changeset
4 ;; 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
878
5b1c5b4286e7 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 834
diff changeset
5
5803
4cd9bd412e4a (dired-listing-switches): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 5483
diff changeset
6 ;; Author: Sebastian Kremer <sk@thp.uni-koeln.de>
4cd9bd412e4a (dired-listing-switches): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 5483
diff changeset
7 ;; Maintainer: FSF
39015
b2fc23ab198a Add Keywords header.
Gerd Moellmann <gerd@gnu.org>
parents: 38990
diff changeset
8 ;; Keywords: files
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
9
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
10 ;; This file is part of GNU Emacs.
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
11
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94651
diff changeset
12 ;; GNU Emacs is free software: you can redistribute it and/or modify
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
13 ;; 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: 94651
diff changeset
14 ;; 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: 94651
diff changeset
15 ;; (at your option) any later version.
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
16
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
17 ;; GNU Emacs is distributed in the hope that it will be useful,
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
20 ;; GNU General Public License for more details.
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
21
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
22 ;; 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: 94651
diff changeset
23 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
24
834
2e0cd4e83c2e *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 778
diff changeset
25 ;;; Commentary:
2e0cd4e83c2e *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 778
diff changeset
26
2307
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2229
diff changeset
27 ;; This is a major mode for directory browsing and editing. It is
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2229
diff changeset
28 ;; documented in the Emacs manual.
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2229
diff changeset
29
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
30 ;; Rewritten in 1990/1991 to add tree features, file marking and
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
31 ;; sorting by Sebastian Kremer <sk@thp.uni-koeln.de>.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
32 ;; Finished up by rms in 1992.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
33
834
2e0cd4e83c2e *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 778
diff changeset
34 ;;; Code:
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
35
94485
a01f79200343 Require 'cl.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94480
diff changeset
36 (eval-when-compile (require 'cl))
a01f79200343 Require 'cl.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94480
diff changeset
37
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
38 ;;; Customizable variables
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
39
17944
0714535d0e28 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17811
diff changeset
40 (defgroup dired nil
0714535d0e28 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17811
diff changeset
41 "Directory editing."
54533
924fccad3acb (dired) <defgroup>: Add link to manual.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54512
diff changeset
42 :link '(custom-manual "(emacs)Dired")
47181
e17812b1a993 (defgroup dired): Use `files' as parent.
Richard M. Stallman <rms@gnu.org>
parents: 46789
diff changeset
43 :group 'files)
17944
0714535d0e28 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17811
diff changeset
44
0714535d0e28 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17811
diff changeset
45 (defgroup dired-mark nil
40950
4bc87462585c Many trivial doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 40818
diff changeset
46 "Handling marks in Dired."
17944
0714535d0e28 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17811
diff changeset
47 :prefix "dired-"
0714535d0e28 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17811
diff changeset
48 :group 'dired)
0714535d0e28 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17811
diff changeset
49
0714535d0e28 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17811
diff changeset
50
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
51 ;;;###autoload
17944
0714535d0e28 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17811
diff changeset
52 (defcustom dired-listing-switches "-al"
64531
733da358f853 (dired-align-file, dired-flag-backup-files, dired-change-marks,
Juanma Barranquero <lekktu@gmail.com>
parents: 64442
diff changeset
53 "*Switches passed to `ls' for Dired. MUST contain the `l' option.
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
54 May contain all other options that don't contradict `-l';
5803
4cd9bd412e4a (dired-listing-switches): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 5483
diff changeset
55 may contain even `F', `b', `i' and `s'. See also the variable
41307
db9182517100 (dired-listing-switches): Mention in the doc string
Eli Zaretskii <eliz@gnu.org>
parents: 41092
diff changeset
56 `dired-ls-F-marks-symlinks' concerning the `F' switch.
db9182517100 (dired-listing-switches): Mention in the doc string
Eli Zaretskii <eliz@gnu.org>
parents: 41092
diff changeset
57 On systems such as MS-DOS and MS-Windows, which use `ls' emulation in Lisp,
db9182517100 (dired-listing-switches): Mention in the doc string
Eli Zaretskii <eliz@gnu.org>
parents: 41092
diff changeset
58 some of the `ls' switches are not supported; see the doc string of
75450
d289216cf933 (dired-listing-switches): Fix doc typo.
Glenn Morris <rgm@gnu.org>
parents: 75347
diff changeset
59 `insert-directory' in `ls-lisp.el' for more details."
17944
0714535d0e28 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17811
diff changeset
60 :type 'string
0714535d0e28 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17811
diff changeset
61 :group 'dired)
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
62
55937
0edea1c45ca9 (dired-subdir-switches, dired-switches-alist): New vars.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55862
diff changeset
63 (defvar dired-subdir-switches nil
0edea1c45ca9 (dired-subdir-switches, dired-switches-alist): New vars.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55862
diff changeset
64 "If non-nil, switches passed to `ls' for inserting subdirectories.
0edea1c45ca9 (dired-subdir-switches, dired-switches-alist): New vars.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55862
diff changeset
65 If nil, `dired-listing-switches' is used.")
0edea1c45ca9 (dired-subdir-switches, dired-switches-alist): New vars.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55862
diff changeset
66
49243
15dce98a38b0 Doc fixes.
Kim F. Storm <storm@cua.dk>
parents: 49138
diff changeset
67 ; Don't use absolute file names as /bin should be in any PATH and people
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
68 ; may prefer /usr/local/gnu/bin or whatever. However, chown is
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
69 ; usually not in PATH.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
70
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
71 ;;;###autoload
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
72 (defvar dired-chown-program
87595
4c6c79916238 * configure.in: Remove references to unsupported systems.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87139
diff changeset
73 (if (memq system-type '(hpux usg-unix-v irix linux gnu/linux cygwin))
15348
8d78b06fbb46 (dired-chown-program): Try /usr/sbin/chown.
Richard M. Stallman <rms@gnu.org>
parents: 14947
diff changeset
74 "chown"
8d78b06fbb46 (dired-chown-program): Try /usr/sbin/chown.
Richard M. Stallman <rms@gnu.org>
parents: 14947
diff changeset
75 (if (file-exists-p "/usr/sbin/chown")
8d78b06fbb46 (dired-chown-program): Try /usr/sbin/chown.
Richard M. Stallman <rms@gnu.org>
parents: 14947
diff changeset
76 "/usr/sbin/chown"
8d78b06fbb46 (dired-chown-program): Try /usr/sbin/chown.
Richard M. Stallman <rms@gnu.org>
parents: 14947
diff changeset
77 "/etc/chown"))
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3580
diff changeset
78 "Name of chown command (usually `chown' or `/etc/chown').")
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
79
47488
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
80 (defvar dired-use-ls-dired (not (not (string-match "gnu" system-configuration)))
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
81 "Non-nil means Dired should use `ls --dired'.")
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
82
21743
8def83521606 (dired-chmod-program) [windows-nt]: Use chmod.
Geoff Voelker <voelker@cs.washington.edu>
parents: 21690
diff changeset
83 (defvar dired-chmod-program "chmod"
8def83521606 (dired-chmod-program) [windows-nt]: Use chmod.
Geoff Voelker <voelker@cs.washington.edu>
parents: 21690
diff changeset
84 "Name of chmod command (usually `chmod').")
11396
9c92e5ea420a (dired-chmod-program): Defined.
Karl Heuer <kwzh@gnu.org>
parents: 11151
diff changeset
85
54663
9b0161392fe1 Add autoload for `dired-do-touch'.
Juri Linkov <juri@jurta.org>
parents: 54661
diff changeset
86 (defvar dired-touch-program "touch"
9b0161392fe1 Add autoload for `dired-do-touch'.
Juri Linkov <juri@jurta.org>
parents: 54661
diff changeset
87 "Name of touch command (usually `touch').")
9b0161392fe1 Add autoload for `dired-do-touch'.
Juri Linkov <juri@jurta.org>
parents: 54661
diff changeset
88
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
89 ;;;###autoload
17944
0714535d0e28 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17811
diff changeset
90 (defcustom dired-ls-F-marks-symlinks nil
64531
733da358f853 (dired-align-file, dired-flag-backup-files, dired-change-marks,
Juanma Barranquero <lekktu@gmail.com>
parents: 64442
diff changeset
91 "*Informs Dired about how `ls -lF' marks symbolic links.
14146
36471d582fb2 (dired-ls-F-marks-symlinks): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 14107
diff changeset
92 Set this to t if `ls' (or whatever program is specified by
36471d582fb2 (dired-ls-F-marks-symlinks): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 14107
diff changeset
93 `insert-directory-program') with `-lF' marks the symbolic link
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
94 itself with a trailing @ (usually the case under Ultrix).
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
95
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
96 Example: if `ln -s foo bar; ls -F bar' gives `bar -> foo', set it to
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
97 nil (the default), if it gives `bar@ -> foo', set it to t.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
98
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
99 Dired checks if there is really a @ appended. Thus, if you have a
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
100 marking `ls' program on one host and a non-marking on another host, and
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
101 don't care about symbolic links which really end in a @, you can
17944
0714535d0e28 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17811
diff changeset
102 always set this variable to t."
0714535d0e28 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17811
diff changeset
103 :type 'boolean
0714535d0e28 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17811
diff changeset
104 :group 'dired-mark)
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
105
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
106 ;;;###autoload
17944
0714535d0e28 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17811
diff changeset
107 (defcustom dired-trivial-filenames "^\\.\\.?$\\|^#"
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
108 "*Regexp of files to skip when finding first file of a directory.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
109 A value of nil means move to the subdir line.
17944
0714535d0e28 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17811
diff changeset
110 A value of t means move to first file."
0714535d0e28 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17811
diff changeset
111 :type '(choice (const :tag "Move to subdir" nil)
0714535d0e28 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17811
diff changeset
112 (const :tag "Move to first" t)
0714535d0e28 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17811
diff changeset
113 regexp)
0714535d0e28 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17811
diff changeset
114 :group 'dired)
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
115
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
116 ;;;###autoload
17944
0714535d0e28 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17811
diff changeset
117 (defcustom dired-keep-marker-rename t
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
118 ;; Use t as default so that moved files "take their markers with them".
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
119 "*Controls marking of renamed files.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
120 If t, files keep their previous marks when they are renamed.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
121 If a character, renamed files (whether previously marked or not)
17944
0714535d0e28 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17811
diff changeset
122 are afterward marked with that character."
0714535d0e28 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17811
diff changeset
123 :type '(choice (const :tag "Keep" t)
0714535d0e28 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17811
diff changeset
124 (character :tag "Mark"))
0714535d0e28 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17811
diff changeset
125 :group 'dired-mark)
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
126
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
127 ;;;###autoload
17944
0714535d0e28 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17811
diff changeset
128 (defcustom dired-keep-marker-copy ?C
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
129 "*Controls marking of copied files.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
130 If t, copied files are marked if and as the corresponding original files were.
17944
0714535d0e28 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17811
diff changeset
131 If a character, copied files are unconditionally marked with that character."
0714535d0e28 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17811
diff changeset
132 :type '(choice (const :tag "Keep" t)
0714535d0e28 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17811
diff changeset
133 (character :tag "Mark"))
0714535d0e28 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17811
diff changeset
134 :group 'dired-mark)
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
135
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
136 ;;;###autoload
17944
0714535d0e28 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17811
diff changeset
137 (defcustom dired-keep-marker-hardlink ?H
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
138 "*Controls marking of newly made hard links.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
139 If t, they are marked if and as the files linked to were marked.
17944
0714535d0e28 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17811
diff changeset
140 If a character, new links are unconditionally marked with that character."
0714535d0e28 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17811
diff changeset
141 :type '(choice (const :tag "Keep" t)
0714535d0e28 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17811
diff changeset
142 (character :tag "Mark"))
0714535d0e28 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17811
diff changeset
143 :group 'dired-mark)
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
144
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
145 ;;;###autoload
17944
0714535d0e28 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17811
diff changeset
146 (defcustom dired-keep-marker-symlink ?Y
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
147 "*Controls marking of newly made symbolic links.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
148 If t, they are marked if and as the files linked to were marked.
17944
0714535d0e28 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17811
diff changeset
149 If a character, new links are unconditionally marked with that character."
0714535d0e28 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17811
diff changeset
150 :type '(choice (const :tag "Keep" t)
0714535d0e28 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17811
diff changeset
151 (character :tag "Mark"))
0714535d0e28 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17811
diff changeset
152 :group 'dired-mark)
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
153
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
154 ;;;###autoload
17944
0714535d0e28 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17811
diff changeset
155 (defcustom dired-dwim-target nil
64531
733da358f853 (dired-align-file, dired-flag-backup-files, dired-change-marks,
Juanma Barranquero <lekktu@gmail.com>
parents: 64442
diff changeset
156 "*If non-nil, Dired tries to guess a default target directory.
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
157 This means: if there is a dired buffer displayed in the next window,
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
158 use its current subdir, instead of the current subdir of this dired buffer.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
159
17944
0714535d0e28 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17811
diff changeset
160 The target is used in the prompt for file copy, rename etc."
0714535d0e28 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17811
diff changeset
161 :type 'boolean
0714535d0e28 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17811
diff changeset
162 :group 'dired)
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
163
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
164 ;;;###autoload
17944
0714535d0e28 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17811
diff changeset
165 (defcustom dired-copy-preserve-time t
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
166 "*If non-nil, Dired preserves the last-modified time in a file copy.
17944
0714535d0e28 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17811
diff changeset
167 \(This works on only some systems.)"
0714535d0e28 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17811
diff changeset
168 :type 'boolean
0714535d0e28 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17811
diff changeset
169 :group 'dired)
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
170
42245
30a233f73e77 (dired-free-space-program, dired-free-space-args):
Eli Zaretskii <eliz@gnu.org>
parents: 42206
diff changeset
171 ; These variables were deleted and the replacements are on files.el.
30a233f73e77 (dired-free-space-program, dired-free-space-args):
Eli Zaretskii <eliz@gnu.org>
parents: 42206
diff changeset
172 ; We leave aliases behind for back-compatibility.
30a233f73e77 (dired-free-space-program, dired-free-space-args):
Eli Zaretskii <eliz@gnu.org>
parents: 42206
diff changeset
173 (defvaralias 'dired-free-space-program 'directory-free-space-program)
30a233f73e77 (dired-free-space-program, dired-free-space-args):
Eli Zaretskii <eliz@gnu.org>
parents: 42206
diff changeset
174 (defvaralias 'dired-free-space-args 'directory-free-space-args)
30a233f73e77 (dired-free-space-program, dired-free-space-args):
Eli Zaretskii <eliz@gnu.org>
parents: 42206
diff changeset
175
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
176 ;;; Hook variables
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
177
43107
60ed6d7abdfe (dired-load-hook, dired-mode-hook)
Eli Zaretskii <eliz@gnu.org>
parents: 42690
diff changeset
178 (defcustom dired-load-hook nil
64531
733da358f853 (dired-align-file, dired-flag-backup-files, dired-change-marks,
Juanma Barranquero <lekktu@gmail.com>
parents: 64442
diff changeset
179 "Run after loading Dired.
43107
60ed6d7abdfe (dired-load-hook, dired-mode-hook)
Eli Zaretskii <eliz@gnu.org>
parents: 42690
diff changeset
180 You can customize key bindings or load extensions with this."
60ed6d7abdfe (dired-load-hook, dired-mode-hook)
Eli Zaretskii <eliz@gnu.org>
parents: 42690
diff changeset
181 :group 'dired
60ed6d7abdfe (dired-load-hook, dired-mode-hook)
Eli Zaretskii <eliz@gnu.org>
parents: 42690
diff changeset
182 :type 'hook)
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
183
43107
60ed6d7abdfe (dired-load-hook, dired-mode-hook)
Eli Zaretskii <eliz@gnu.org>
parents: 42690
diff changeset
184 (defcustom dired-mode-hook nil
64531
733da358f853 (dired-align-file, dired-flag-backup-files, dired-change-marks,
Juanma Barranquero <lekktu@gmail.com>
parents: 64442
diff changeset
185 "Run at the very end of `dired-mode'."
43107
60ed6d7abdfe (dired-load-hook, dired-mode-hook)
Eli Zaretskii <eliz@gnu.org>
parents: 42690
diff changeset
186 :group 'dired
60ed6d7abdfe (dired-load-hook, dired-mode-hook)
Eli Zaretskii <eliz@gnu.org>
parents: 42690
diff changeset
187 :type 'hook)
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
188
43107
60ed6d7abdfe (dired-load-hook, dired-mode-hook)
Eli Zaretskii <eliz@gnu.org>
parents: 42690
diff changeset
189 (defcustom dired-before-readin-hook nil
60ed6d7abdfe (dired-load-hook, dired-mode-hook)
Eli Zaretskii <eliz@gnu.org>
parents: 42690
diff changeset
190 "This hook is run before a dired buffer is read in (created or reverted)."
60ed6d7abdfe (dired-load-hook, dired-mode-hook)
Eli Zaretskii <eliz@gnu.org>
parents: 42690
diff changeset
191 :group 'dired
60ed6d7abdfe (dired-load-hook, dired-mode-hook)
Eli Zaretskii <eliz@gnu.org>
parents: 42690
diff changeset
192 :type 'hook)
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
193
43107
60ed6d7abdfe (dired-load-hook, dired-mode-hook)
Eli Zaretskii <eliz@gnu.org>
parents: 42690
diff changeset
194 (defcustom dired-after-readin-hook nil
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
195 "Hook run after each time a file or directory is read by Dired.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
196 After each listing of a file or directory, this hook is run
43107
60ed6d7abdfe (dired-load-hook, dired-mode-hook)
Eli Zaretskii <eliz@gnu.org>
parents: 42690
diff changeset
197 with the buffer narrowed to the listing."
60ed6d7abdfe (dired-load-hook, dired-mode-hook)
Eli Zaretskii <eliz@gnu.org>
parents: 42690
diff changeset
198 :group 'dired
60ed6d7abdfe (dired-load-hook, dired-mode-hook)
Eli Zaretskii <eliz@gnu.org>
parents: 42690
diff changeset
199 :type 'hook)
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
200 ;; Note this can't simply be run inside function `dired-ls' as the hook
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
201 ;; functions probably depend on the dired-subdir-alist to be OK.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
202
62240
19d278c4224b * dnd.el (dnd-protocol-alist): Improve custom type.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 61478
diff changeset
203 (defcustom dired-dnd-protocol-alist
19d278c4224b * dnd.el (dnd-protocol-alist): Improve custom type.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 61478
diff changeset
204 '(("^file:///" . dired-dnd-handle-local-file)
19d278c4224b * dnd.el (dnd-protocol-alist): Improve custom type.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 61478
diff changeset
205 ("^file://" . dired-dnd-handle-file)
19d278c4224b * dnd.el (dnd-protocol-alist): Improve custom type.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 61478
diff changeset
206 ("^file:" . dired-dnd-handle-local-file))
19d278c4224b * dnd.el (dnd-protocol-alist): Improve custom type.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 61478
diff changeset
207 "The functions to call when a drop in `dired-mode' is made.
19d278c4224b * dnd.el (dnd-protocol-alist): Improve custom type.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 61478
diff changeset
208 See `dnd-protocol-alist' for more information. When nil, behave
69783
d1bfd9018628 (dired-dnd-protocol-alist): Fix typo.
Romain Francoise <romain@orebokech.com>
parents: 69779
diff changeset
209 as in other buffers. Changing this option is effective only for
69779
865de55024d5 (dired-dnd-protocol-alist): Mention that change does
Reiner Steib <Reiner.Steib@gmx.de>
parents: 68816
diff changeset
210 new dired buffers."
62240
19d278c4224b * dnd.el (dnd-protocol-alist): Improve custom type.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 61478
diff changeset
211 :type '(choice (repeat (cons (regexp) (function)))
19d278c4224b * dnd.el (dnd-protocol-alist): Improve custom type.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 61478
diff changeset
212 (const :tag "Behave as in other buffers" nil))
19d278c4224b * dnd.el (dnd-protocol-alist): Improve custom type.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 61478
diff changeset
213 :version "22.1"
19d278c4224b * dnd.el (dnd-protocol-alist): Improve custom type.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 61478
diff changeset
214 :group 'dired)
19d278c4224b * dnd.el (dnd-protocol-alist): Improve custom type.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 61478
diff changeset
215
47507
d03e0c2bb52c (dired-font-lock-keywords): Use regexp-opt.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47491
diff changeset
216 ;; Internal variables
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
217
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
218 (defvar dired-marker-char ?* ; the answer is 42
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
219 ;; so that you can write things like
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
220 ;; (let ((dired-marker-char ?X))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
221 ;; ;; great code using X markers ...
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
222 ;; )
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
223 ;; For example, commands operating on two sets of files, A and B.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
224 ;; Or marking files with digits 0-9. This could implicate
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
225 ;; concentric sets or an order for the marked files.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
226 ;; The code depends on dynamic scoping on the marker char.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
227 "In Dired, the current mark character.
64193
7fc36b055c09 (dired-marker-char): Avoid quotations for `do' and `mark'
Juri Linkov <juri@jurta.org>
parents: 64091
diff changeset
228 This is what the do-commands look for, and what the mark-commands store.")
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
229
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
230 (defvar dired-del-marker ?D
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
231 "Character used to flag files for deletion.")
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
232
64531
733da358f853 (dired-align-file, dired-flag-backup-files, dired-change-marks,
Juanma Barranquero <lekktu@gmail.com>
parents: 64442
diff changeset
233 (defvar dired-shrink-to-fit t
878
5b1c5b4286e7 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 834
diff changeset
234 ;; I see no reason ever to make this nil -- rms.
5b1c5b4286e7 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 834
diff changeset
235 ;; (> baud-rate search-slow-speed)
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
236 "Non-nil means Dired shrinks the display buffer to fit the marked files.")
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
237
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
238 (defvar dired-flagging-regexp nil);; Last regexp used to flag files.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
239
878
5b1c5b4286e7 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 834
diff changeset
240 (defvar dired-file-version-alist)
5b1c5b4286e7 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 834
diff changeset
241
49772
b774f5818dbd (dired-directory): Add autoload cookie.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 49625
diff changeset
242 ;;;###autoload
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
243 (defvar dired-directory nil
64531
733da358f853 (dired-align-file, dired-flag-backup-files, dired-change-marks,
Juanma Barranquero <lekktu@gmail.com>
parents: 64442
diff changeset
244 "The directory name or wildcard spec that this dired directory lists.
2492
de8b66eb78cf dired-noselect, dired-internal-noselect, dired-insert-directory:
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2466
diff changeset
245 Local to each dired buffer. May be a list, in which case the car is the
47488
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
246 directory name and the cdr is the list of files to mention.
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
247 The directory name must be absolute, but need not be fully expanded.")
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
248
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
249 (defvar dired-actual-switches nil
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
250 "The value of `dired-listing-switches' used to make this buffer's text.")
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
251
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
252 (defvar dired-re-inode-size "[0-9 \t]*"
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
253 "Regexp for optional initial inode and file size as made by `ls -i -s'.")
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
254
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
255 ;; These regexps must be tested at beginning-of-line, but are also
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
256 ;; used to search for next matches, so neither omitting "^" nor
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
257 ;; replacing "^" by "\n" (to make it slightly faster) will work.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
258
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
259 (defvar dired-re-mark "^[^ \n]")
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
260 ;; "Regexp matching a marked line.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
261 ;; Important: the match ends just after the marker."
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
262 (defvar dired-re-maybe-mark "^. ")
25558
76420959ca81 (dired-re-dir, dired-re-sym): Don't match DOS drive
Eli Zaretskii <eliz@gnu.org>
parents: 25415
diff changeset
263 ;; The [^:] part after "d" and "l" is to avoid confusion with the
76420959ca81 (dired-re-dir, dired-re-sym): Don't match DOS drive
Eli Zaretskii <eliz@gnu.org>
parents: 25415
diff changeset
264 ;; DOS/Windows-style drive letters in directory names, like in "d:/foo".
76420959ca81 (dired-re-dir, dired-re-sym): Don't match DOS drive
Eli Zaretskii <eliz@gnu.org>
parents: 25415
diff changeset
265 (defvar dired-re-dir (concat dired-re-maybe-mark dired-re-inode-size "d[^:]"))
76420959ca81 (dired-re-dir, dired-re-sym): Don't match DOS drive
Eli Zaretskii <eliz@gnu.org>
parents: 25415
diff changeset
266 (defvar dired-re-sym (concat dired-re-maybe-mark dired-re-inode-size "l[^:]"))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
267 (defvar dired-re-exe;; match ls permission string of an executable file
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
268 (mapconcat (function
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
269 (lambda (x)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
270 (concat dired-re-maybe-mark dired-re-inode-size x)))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
271 '("-[-r][-w][xs][-r][-w].[-r][-w]."
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
272 "-[-r][-w].[-r][-w][xs][-r][-w]."
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
273 "-[-r][-w].[-r][-w].[-r][-w][xst]")
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
274 "\\|"))
9098
d012275093c1 (dired-re-perms): Accept various file type letters.
Richard M. Stallman <rms@gnu.org>
parents: 9076
diff changeset
275 (defvar dired-re-perms "[-bcdlps][-r][-w].[-r][-w].[-r][-w].")
51539
244cba9fc534 (dired-re-dot): Make it handle trailing /.
Luc Teirlinck <teirllm@auburn.edu>
parents: 51531
diff changeset
276 (defvar dired-re-dot "^.* \\.\\.?/?$")
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
277
55937
0edea1c45ca9 (dired-subdir-switches, dired-switches-alist): New vars.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55862
diff changeset
278 ;; The subdirectory names in the next two lists are expanded.
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
279 (defvar dired-subdir-alist nil
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
280 "Association list of subdirectories and their buffer positions.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
281 Each subdirectory has an element: (DIRNAME . STARTMARKER).
1170
54a44b2b9591 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1130
diff changeset
282 The order of elements is the reverse of the order in the buffer.
54a44b2b9591 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1130
diff changeset
283 In simple cases, this list contains one element.")
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
284
55937
0edea1c45ca9 (dired-subdir-switches, dired-switches-alist): New vars.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55862
diff changeset
285 (defvar dired-switches-alist nil
0edea1c45ca9 (dired-subdir-switches, dired-switches-alist): New vars.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55862
diff changeset
286 "Keeps track of which switches to use for inserted subdirectories.
0edea1c45ca9 (dired-subdir-switches, dired-switches-alist): New vars.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55862
diff changeset
287 This is an alist of the form (SUBDIR . SWITCHES).")
0edea1c45ca9 (dired-subdir-switches, dired-switches-alist): New vars.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55862
diff changeset
288 (make-variable-buffer-local 'dired-switches-alist)
0edea1c45ca9 (dired-subdir-switches, dired-switches-alist): New vars.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55862
diff changeset
289
68267
45d760802689 (dired-move-to-filename-regexp): Define as alias.
Richard M. Stallman <rms@gnu.org>
parents: 66325
diff changeset
290 (defvaralias 'dired-move-to-filename-regexp
45d760802689 (dired-move-to-filename-regexp): Define as alias.
Richard M. Stallman <rms@gnu.org>
parents: 66325
diff changeset
291 'directory-listing-before-filename-regexp)
45d760802689 (dired-move-to-filename-regexp): Define as alias.
Richard M. Stallman <rms@gnu.org>
parents: 66325
diff changeset
292
6864
7c689b8065bd (dired-subdir-regexp): Allow a space in dir name.
Richard M. Stallman <rms@gnu.org>
parents: 6817
diff changeset
293 (defvar dired-subdir-regexp "^. \\([^\n\r]+\\)\\(:\\)[\n\r]"
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
294 "Regexp matching a maybe hidden subdirectory line in `ls -lR' output.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
295 Subexpression 1 is the subdirectory proper, no trailing colon.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
296 The match starts at the beginning of the line and ends after the end
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
297 of the line (\\n or \\r).
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
298 Subexpression 2 must end right before the \\n or \\r.")
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
299
54780
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
300 (defgroup dired-faces nil
64531
733da358f853 (dired-align-file, dired-flag-backup-files, dired-change-marks,
Juanma Barranquero <lekktu@gmail.com>
parents: 64442
diff changeset
301 "Faces used by Dired."
54780
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
302 :group 'dired
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
303 :group 'faces)
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
304
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
305 (defface dired-header
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
306 '((t (:inherit font-lock-type-face)))
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
307 "Face used for directory headers."
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
308 :group 'dired-faces
59996
aac0a33f5772 Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents: 59786
diff changeset
309 :version "22.1")
54780
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
310 (defvar dired-header-face 'dired-header
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
311 "Face name used for directory headers.")
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
312
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
313 (defface dired-mark
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
314 '((t (:inherit font-lock-constant-face)))
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
315 "Face used for dired marks."
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
316 :group 'dired-faces
59996
aac0a33f5772 Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents: 59786
diff changeset
317 :version "22.1")
54780
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
318 (defvar dired-mark-face 'dired-mark
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
319 "Face name used for dired marks.")
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
320
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
321 (defface dired-marked
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
322 '((t (:inherit font-lock-warning-face)))
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
323 "Face used for marked files."
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
324 :group 'dired-faces
59996
aac0a33f5772 Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents: 59786
diff changeset
325 :version "22.1")
54780
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
326 (defvar dired-marked-face 'dired-marked
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
327 "Face name used for marked files.")
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
328
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
329 (defface dired-flagged
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
330 '((t (:inherit font-lock-warning-face)))
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
331 "Face used for flagged files."
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
332 :group 'dired-faces
59996
aac0a33f5772 Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents: 59786
diff changeset
333 :version "22.1")
54780
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
334 (defvar dired-flagged-face 'dired-flagged
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
335 "Face name used for flagged files.")
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
336
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
337 (defface dired-warning
78759
f85317d85f18 (dired-warning): Inherit from font-lock-warning-face to
Martin Rudalics <rudalics@gmx.at>
parents: 78462
diff changeset
338 ;; Inherit from font-lock-warning-face since with min-colors 8
f85317d85f18 (dired-warning): Inherit from font-lock-warning-face to
Martin Rudalics <rudalics@gmx.at>
parents: 78462
diff changeset
339 ;; font-lock-comment-face is not colored any more.
f85317d85f18 (dired-warning): Inherit from font-lock-warning-face to
Martin Rudalics <rudalics@gmx.at>
parents: 78462
diff changeset
340 '((t (:inherit font-lock-warning-face)))
54780
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
341 "Face used to highlight a part of a buffer that needs user attention."
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
342 :group 'dired-faces
59996
aac0a33f5772 Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents: 59786
diff changeset
343 :version "22.1")
54780
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
344 (defvar dired-warning-face 'dired-warning
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
345 "Face name used for a part of a buffer that needs user attention.")
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
346
80336
3c2f95ff2ff3 (dired-warn-writable): Rename to `dired-perm-write'.
Juri Linkov <juri@jurta.org>
parents: 80177
diff changeset
347 (defface dired-perm-write
79074
6b97f0761688 (dired-warn-writable): New face.
Eli Zaretskii <eliz@gnu.org>
parents: 78759
diff changeset
348 '((((type w32 pc)) :inherit default) ;; These default to rw-rw-rw.
80336
3c2f95ff2ff3 (dired-warn-writable): Rename to `dired-perm-write'.
Juri Linkov <juri@jurta.org>
parents: 80177
diff changeset
349 ;; Inherit from font-lock-comment-delimiter-face since with min-colors 8
3c2f95ff2ff3 (dired-warn-writable): Rename to `dired-perm-write'.
Juri Linkov <juri@jurta.org>
parents: 80177
diff changeset
350 ;; font-lock-comment-face is not colored any more.
3c2f95ff2ff3 (dired-warn-writable): Rename to `dired-perm-write'.
Juri Linkov <juri@jurta.org>
parents: 80177
diff changeset
351 (t (:inherit font-lock-comment-delimiter-face)))
79074
6b97f0761688 (dired-warn-writable): New face.
Eli Zaretskii <eliz@gnu.org>
parents: 78759
diff changeset
352 "Face used to highlight permissions of group- and world-writable files."
6b97f0761688 (dired-warn-writable): New face.
Eli Zaretskii <eliz@gnu.org>
parents: 78759
diff changeset
353 :group 'dired-faces
6b97f0761688 (dired-warn-writable): New face.
Eli Zaretskii <eliz@gnu.org>
parents: 78759
diff changeset
354 :version "22.2")
80336
3c2f95ff2ff3 (dired-warn-writable): Rename to `dired-perm-write'.
Juri Linkov <juri@jurta.org>
parents: 80177
diff changeset
355 (defvar dired-perm-write-face 'dired-perm-write
79074
6b97f0761688 (dired-warn-writable): New face.
Eli Zaretskii <eliz@gnu.org>
parents: 78759
diff changeset
356 "Face name used for permissions of group- and world-writable files.")
6b97f0761688 (dired-warn-writable): New face.
Eli Zaretskii <eliz@gnu.org>
parents: 78759
diff changeset
357
54780
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
358 (defface dired-directory
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
359 '((t (:inherit font-lock-function-name-face)))
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
360 "Face used for subdirectories."
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
361 :group 'dired-faces
59996
aac0a33f5772 Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents: 59786
diff changeset
362 :version "22.1")
54780
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
363 (defvar dired-directory-face 'dired-directory
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
364 "Face name used for subdirectories.")
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
365
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
366 (defface dired-symlink
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
367 '((t (:inherit font-lock-keyword-face)))
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
368 "Face used for symbolic links."
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
369 :group 'dired-faces
59996
aac0a33f5772 Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents: 59786
diff changeset
370 :version "22.1")
54780
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
371 (defvar dired-symlink-face 'dired-symlink
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
372 "Face name used for symbolic links.")
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
373
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
374 (defface dired-ignored
63052
ac4dcbb00c51 * dired.el (dired-ignored): Inherit from `shadow' face.
Juri Linkov <juri@jurta.org>
parents: 62658
diff changeset
375 '((t (:inherit shadow)))
54780
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
376 "Face used for files suffixed with `completion-ignored-extensions'."
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
377 :group 'dired-faces
59996
aac0a33f5772 Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents: 59786
diff changeset
378 :version "22.1")
54780
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
379 (defvar dired-ignored-face 'dired-ignored
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
380 "Face name used for files suffixed with `completion-ignored-extensions'.")
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
381
16454
76b0d4d3371e Tweak dired-font-lock-keywords.
Simon Marshall <simon@gnu.org>
parents: 16090
diff changeset
382 (defvar dired-font-lock-keywords
76b0d4d3371e Tweak dired-font-lock-keywords.
Simon Marshall <simon@gnu.org>
parents: 16090
diff changeset
383 (list
76b0d4d3371e Tweak dired-font-lock-keywords.
Simon Marshall <simon@gnu.org>
parents: 16090
diff changeset
384 ;;
76b0d4d3371e Tweak dired-font-lock-keywords.
Simon Marshall <simon@gnu.org>
parents: 16090
diff changeset
385 ;; Directory headers.
54780
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
386 (list dired-subdir-regexp '(1 dired-header-face))
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
387 ;;
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
388 ;; Dired marks.
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
389 (list dired-re-mark '(0 dired-mark-face))
16454
76b0d4d3371e Tweak dired-font-lock-keywords.
Simon Marshall <simon@gnu.org>
parents: 16090
diff changeset
390 ;;
76b0d4d3371e Tweak dired-font-lock-keywords.
Simon Marshall <simon@gnu.org>
parents: 16090
diff changeset
391 ;; We make heavy use of MATCH-ANCHORED, since the regexps don't identify the
76b0d4d3371e Tweak dired-font-lock-keywords.
Simon Marshall <simon@gnu.org>
parents: 16090
diff changeset
392 ;; file name itself. We search for Dired defined regexps, and then use the
76b0d4d3371e Tweak dired-font-lock-keywords.
Simon Marshall <simon@gnu.org>
parents: 16090
diff changeset
393 ;; Dired defined function `dired-move-to-filename' before searching for the
76b0d4d3371e Tweak dired-font-lock-keywords.
Simon Marshall <simon@gnu.org>
parents: 16090
diff changeset
394 ;; simple regexp ".+". It is that regexp which matches the file name.
76b0d4d3371e Tweak dired-font-lock-keywords.
Simon Marshall <simon@gnu.org>
parents: 16090
diff changeset
395 ;;
54780
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
396 ;; Marked files.
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
397 (list (concat "^[" (char-to-string dired-marker-char) "]")
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
398 '(".+" (dired-move-to-filename) nil (0 dired-marked-face)))
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
399 ;;
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
400 ;; Flagged files.
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
401 (list (concat "^[" (char-to-string dired-del-marker) "]")
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
402 '(".+" (dired-move-to-filename) nil (0 dired-flagged-face)))
19320
2e448d41aa55 (dired-font-lock-keywords): Don't specially highlight
Richard M. Stallman <rms@gnu.org>
parents: 18824
diff changeset
403 ;; People who are paranoid about security would consider this more
2e448d41aa55 (dired-font-lock-keywords): Don't specially highlight
Richard M. Stallman <rms@gnu.org>
parents: 18824
diff changeset
404 ;; important than other things such as whether it is a directory.
2e448d41aa55 (dired-font-lock-keywords): Don't specially highlight
Richard M. Stallman <rms@gnu.org>
parents: 18824
diff changeset
405 ;; But we don't want to encourage paranoia, so our default
2e448d41aa55 (dired-font-lock-keywords): Don't specially highlight
Richard M. Stallman <rms@gnu.org>
parents: 18824
diff changeset
406 ;; should be what's most useful for non-paranoids. -- rms.
2e448d41aa55 (dired-font-lock-keywords): Don't specially highlight
Richard M. Stallman <rms@gnu.org>
parents: 18824
diff changeset
407 ;;; ;;
2e448d41aa55 (dired-font-lock-keywords): Don't specially highlight
Richard M. Stallman <rms@gnu.org>
parents: 18824
diff changeset
408 ;;; ;; Files that are group or world writable.
2e448d41aa55 (dired-font-lock-keywords): Don't specially highlight
Richard M. Stallman <rms@gnu.org>
parents: 18824
diff changeset
409 ;;; (list (concat dired-re-maybe-mark dired-re-inode-size
2e448d41aa55 (dired-font-lock-keywords): Don't specially highlight
Richard M. Stallman <rms@gnu.org>
parents: 18824
diff changeset
410 ;;; "\\([-d]\\(....w....\\|.......w.\\)\\)")
54780
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
411 ;;; '(1 dired-warning-face)
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
412 ;;; '(".+" (dired-move-to-filename) nil (0 dired-warning-face)))
54533
924fccad3acb (dired) <defgroup>: Add link to manual.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54512
diff changeset
413 ;; However, we don't need to highlight the file name, only the
924fccad3acb (dired) <defgroup>: Add link to manual.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54512
diff changeset
414 ;; permissions, to win generally. -- fx.
924fccad3acb (dired) <defgroup>: Add link to manual.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54512
diff changeset
415 ;; Fixme: we could also put text properties on the permission
924fccad3acb (dired) <defgroup>: Add link to manual.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54512
diff changeset
416 ;; fields with keymaps to frob the permissions, somewhat a la XEmacs.
924fccad3acb (dired) <defgroup>: Add link to manual.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54512
diff changeset
417 (list (concat dired-re-maybe-mark dired-re-inode-size
54685
06ef8e8088f4 (dired-font-lock-keywords): Fix permission regexps.
Juri Linkov <juri@jurta.org>
parents: 54663
diff changeset
418 "[-d]....\\(w\\)....") ; group writable
80336
3c2f95ff2ff3 (dired-warn-writable): Rename to `dired-perm-write'.
Juri Linkov <juri@jurta.org>
parents: 80177
diff changeset
419 '(1 dired-perm-write-face))
54533
924fccad3acb (dired) <defgroup>: Add link to manual.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54512
diff changeset
420 (list (concat dired-re-maybe-mark dired-re-inode-size
54685
06ef8e8088f4 (dired-font-lock-keywords): Fix permission regexps.
Juri Linkov <juri@jurta.org>
parents: 54663
diff changeset
421 "[-d].......\\(w\\).") ; world writable
80336
3c2f95ff2ff3 (dired-warn-writable): Rename to `dired-perm-write'.
Juri Linkov <juri@jurta.org>
parents: 80177
diff changeset
422 '(1 dired-perm-write-face))
16454
76b0d4d3371e Tweak dired-font-lock-keywords.
Simon Marshall <simon@gnu.org>
parents: 16090
diff changeset
423 ;;
76b0d4d3371e Tweak dired-font-lock-keywords.
Simon Marshall <simon@gnu.org>
parents: 16090
diff changeset
424 ;; Subdirectories.
76b0d4d3371e Tweak dired-font-lock-keywords.
Simon Marshall <simon@gnu.org>
parents: 16090
diff changeset
425 (list dired-re-dir
54780
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
426 '(".+" (dired-move-to-filename) nil (0 dired-directory-face)))
16454
76b0d4d3371e Tweak dired-font-lock-keywords.
Simon Marshall <simon@gnu.org>
parents: 16090
diff changeset
427 ;;
76b0d4d3371e Tweak dired-font-lock-keywords.
Simon Marshall <simon@gnu.org>
parents: 16090
diff changeset
428 ;; Symbolic links.
49549
99be3a1e2589 Cygwin support patch.
Juanma Barranquero <lekktu@gmail.com>
parents: 49243
diff changeset
429 (list dired-re-sym
54780
1927e78ea49d (dired-faces): New defgroup.
Juri Linkov <juri@jurta.org>
parents: 54685
diff changeset
430 '(".+" (dired-move-to-filename) nil (0 dired-symlink-face)))
16454
76b0d4d3371e Tweak dired-font-lock-keywords.
Simon Marshall <simon@gnu.org>
parents: 16090
diff changeset
431 ;;
76b0d4d3371e Tweak dired-font-lock-keywords.
Simon Marshall <simon@gnu.org>
parents: 16090
diff changeset
432 ;; Files suffixed with `completion-ignored-extensions'.
76b0d4d3371e Tweak dired-font-lock-keywords.
Simon Marshall <simon@gnu.org>
parents: 16090
diff changeset
433 '(eval .
47507
d03e0c2bb52c (dired-font-lock-keywords): Use regexp-opt.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47491
diff changeset
434 ;; It is quicker to first find just an extension, then go back to the
d03e0c2bb52c (dired-font-lock-keywords): Use regexp-opt.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47491
diff changeset
435 ;; start of that file name. So we do this complex MATCH-ANCHORED form.
d03e0c2bb52c (dired-font-lock-keywords): Use regexp-opt.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47491
diff changeset
436 (list (concat "\\(" (regexp-opt completion-ignored-extensions) "\\|#\\)$")
62616
1f84b1fd2560 (dired-font-lock-keywords): Fontify files with junk extensions
Richard M. Stallman <rms@gnu.org>
parents: 62439
diff changeset
437 '(".+" (dired-move-to-filename) nil (0 dired-ignored-face))))
1f84b1fd2560 (dired-font-lock-keywords): Fontify files with junk extensions
Richard M. Stallman <rms@gnu.org>
parents: 62439
diff changeset
438 ;;
1f84b1fd2560 (dired-font-lock-keywords): Fontify files with junk extensions
Richard M. Stallman <rms@gnu.org>
parents: 62439
diff changeset
439 ;; Files suffixed with `completion-ignored-extensions'
1f84b1fd2560 (dired-font-lock-keywords): Fontify files with junk extensions
Richard M. Stallman <rms@gnu.org>
parents: 62439
diff changeset
440 ;; plus a character put in by -F.
1f84b1fd2560 (dired-font-lock-keywords): Fontify files with junk extensions
Richard M. Stallman <rms@gnu.org>
parents: 62439
diff changeset
441 '(eval .
1f84b1fd2560 (dired-font-lock-keywords): Fontify files with junk extensions
Richard M. Stallman <rms@gnu.org>
parents: 62439
diff changeset
442 (list (concat "\\(" (regexp-opt completion-ignored-extensions)
1f84b1fd2560 (dired-font-lock-keywords): Fontify files with junk extensions
Richard M. Stallman <rms@gnu.org>
parents: 62439
diff changeset
443 "\\|#\\)[*=|]$")
1f84b1fd2560 (dired-font-lock-keywords): Fontify files with junk extensions
Richard M. Stallman <rms@gnu.org>
parents: 62439
diff changeset
444 '(".+" (progn
1f84b1fd2560 (dired-font-lock-keywords): Fontify files with junk extensions
Richard M. Stallman <rms@gnu.org>
parents: 62439
diff changeset
445 (end-of-line)
1f84b1fd2560 (dired-font-lock-keywords): Fontify files with junk extensions
Richard M. Stallman <rms@gnu.org>
parents: 62439
diff changeset
446 ;; If the last character is not part of the filename,
1f84b1fd2560 (dired-font-lock-keywords): Fontify files with junk extensions
Richard M. Stallman <rms@gnu.org>
parents: 62439
diff changeset
447 ;; move back to the start of the filename
1f84b1fd2560 (dired-font-lock-keywords): Fontify files with junk extensions
Richard M. Stallman <rms@gnu.org>
parents: 62439
diff changeset
448 ;; so it can be fontified.
1f84b1fd2560 (dired-font-lock-keywords): Fontify files with junk extensions
Richard M. Stallman <rms@gnu.org>
parents: 62439
diff changeset
449 ;; Otherwise, leave point at the end of the line;
1f84b1fd2560 (dired-font-lock-keywords): Fontify files with junk extensions
Richard M. Stallman <rms@gnu.org>
parents: 62439
diff changeset
450 ;; that way, nothing is fontified.
1f84b1fd2560 (dired-font-lock-keywords): Fontify files with junk extensions
Richard M. Stallman <rms@gnu.org>
parents: 62439
diff changeset
451 (unless (get-text-property (1- (point)) 'mouse-face)
1f84b1fd2560 (dired-font-lock-keywords): Fontify files with junk extensions
Richard M. Stallman <rms@gnu.org>
parents: 62439
diff changeset
452 (dired-move-to-filename)))
1f84b1fd2560 (dired-font-lock-keywords): Fontify files with junk extensions
Richard M. Stallman <rms@gnu.org>
parents: 62439
diff changeset
453 nil (0 dired-ignored-face))))
1f84b1fd2560 (dired-font-lock-keywords): Fontify files with junk extensions
Richard M. Stallman <rms@gnu.org>
parents: 62439
diff changeset
454 )
16454
76b0d4d3371e Tweak dired-font-lock-keywords.
Simon Marshall <simon@gnu.org>
parents: 16090
diff changeset
455 "Additional expressions to highlight in Dired mode.")
63934
44925622f813 (dnd-protocol-alist): Add defvar.
Richard M. Stallman <rms@gnu.org>
parents: 63052
diff changeset
456
44925622f813 (dnd-protocol-alist): Add defvar.
Richard M. Stallman <rms@gnu.org>
parents: 63052
diff changeset
457 (defvar dnd-protocol-alist)
35607
5b26cd3356a1 Revert last change.
Dave Love <fx@gnu.org>
parents: 35522
diff changeset
458
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
459 ;;; Macros must be defined before they are used, for the byte compiler.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
460
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
461 (defmacro dired-mark-if (predicate msg)
54533
924fccad3acb (dired) <defgroup>: Add link to manual.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54512
diff changeset
462 "Mark all files for which PREDICATE evals to non-nil.
924fccad3acb (dired) <defgroup>: Add link to manual.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54512
diff changeset
463 PREDICATE is evaluated on each line, with point at beginning of line.
924fccad3acb (dired) <defgroup>: Add link to manual.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54512
diff changeset
464 MSG is a noun phrase for the type of files being marked.
924fccad3acb (dired) <defgroup>: Add link to manual.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54512
diff changeset
465 It should end with a noun that can be pluralized by adding `s'.
924fccad3acb (dired) <defgroup>: Add link to manual.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54512
diff changeset
466 Return value is the number of files marked, or nil if none were marked."
94889
e80a3956601b (dired-read-dir-and-switches): Ignore ., .., and
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
467 `(let ((inhibit-read-only t) count)
41608
45db352a0971 Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents: 41307
diff changeset
468 (save-excursion
45db352a0971 Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents: 41307
diff changeset
469 (setq count 0)
45db352a0971 Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents: 41307
diff changeset
470 (if ,msg (message "Marking %ss..." ,msg))
45db352a0971 Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents: 41307
diff changeset
471 (goto-char (point-min))
45db352a0971 Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents: 41307
diff changeset
472 (while (not (eobp))
45db352a0971 Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents: 41307
diff changeset
473 (if ,predicate
45db352a0971 Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents: 41307
diff changeset
474 (progn
45db352a0971 Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents: 41307
diff changeset
475 (delete-char 1)
45db352a0971 Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents: 41307
diff changeset
476 (insert dired-marker-char)
45db352a0971 Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents: 41307
diff changeset
477 (setq count (1+ count))))
45db352a0971 Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents: 41307
diff changeset
478 (forward-line 1))
45db352a0971 Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents: 41307
diff changeset
479 (if ,msg (message "%s %s%s %s%s."
45db352a0971 Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents: 41307
diff changeset
480 count
45db352a0971 Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents: 41307
diff changeset
481 ,msg
45db352a0971 Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents: 41307
diff changeset
482 (dired-plural-s count)
45db352a0971 Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents: 41307
diff changeset
483 (if (eq dired-marker-char ?\040) "un" "")
45db352a0971 Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents: 41307
diff changeset
484 (if (eq dired-marker-char dired-del-marker)
45db352a0971 Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents: 41307
diff changeset
485 "flagged" "marked"))))
45db352a0971 Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents: 41307
diff changeset
486 (and (> count 0) count)))
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
487
62373
6b68d72075c1 (dired-map-over-marks): New arg distinguish-one-marked.
Richard M. Stallman <rms@gnu.org>
parents: 62298
diff changeset
488 (defmacro dired-map-over-marks (body arg &optional show-progress
6b68d72075c1 (dired-map-over-marks): New arg distinguish-one-marked.
Richard M. Stallman <rms@gnu.org>
parents: 62298
diff changeset
489 distinguish-one-marked)
32027
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
490 "Eval BODY with point on each marked line. Return a list of BODY's results.
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
491 If no marked file could be found, execute BODY on the current line.
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
492 If ARG is an integer, use the next ARG (or previous -ARG, if ARG<0)
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
493 files instead of the marked files.
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
494 In that case point is dragged along. This is so that commands on
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
495 the next ARG (instead of the marked) files can be chained easily.
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
496 If ARG is otherwise non-nil, use current file instead.
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
497 If optional third arg SHOW-PROGRESS evaluates to non-nil,
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
498 redisplay the dired buffer after each file is processed.
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
499 No guarantee is made about the position on the marked line.
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
500 BODY must ensure this itself if it depends on this.
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
501 Search starts at the beginning of the buffer, thus the car of the list
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
502 corresponds to the line nearest to the buffer's bottom. This
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
503 is also true for (positive and negative) integer values of ARG.
62373
6b68d72075c1 (dired-map-over-marks): New arg distinguish-one-marked.
Richard M. Stallman <rms@gnu.org>
parents: 62298
diff changeset
504 BODY should not be too long as it is expanded four times.
6b68d72075c1 (dired-map-over-marks): New arg distinguish-one-marked.
Richard M. Stallman <rms@gnu.org>
parents: 62298
diff changeset
505
6b68d72075c1 (dired-map-over-marks): New arg distinguish-one-marked.
Richard M. Stallman <rms@gnu.org>
parents: 62298
diff changeset
506 If DISTINGUISH-ONE-MARKED is non-nil, then if we find just one marked file,
6b68d72075c1 (dired-map-over-marks): New arg distinguish-one-marked.
Richard M. Stallman <rms@gnu.org>
parents: 62298
diff changeset
507 return (t FILENAME) instead of (FILENAME)."
32027
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
508 ;;
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
509 ;;Warning: BODY must not add new lines before point - this may cause an
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
510 ;;endless loop.
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
511 ;;This warning should not apply any longer, sk 2-Sep-1991 14:10.
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
512 `(prog1
94889
e80a3956601b (dired-read-dir-and-switches): Ignore ., .., and
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
513 (let ((inhibit-read-only t) case-fold-search found results)
32027
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
514 (if ,arg
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
515 (if (integerp ,arg)
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
516 (progn ;; no save-excursion, want to move point.
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
517 (dired-repeat-over-lines
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
518 ,arg
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
519 (function (lambda ()
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
520 (if ,show-progress (sit-for 0))
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
521 (setq results (cons ,body results)))))
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
522 (if (< ,arg 0)
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
523 (nreverse results)
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
524 results))
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
525 ;; non-nil, non-integer ARG means use current file:
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
526 (list ,body))
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
527 (let ((regexp (dired-marker-regexp)) next-position)
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
528 (save-excursion
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
529 (goto-char (point-min))
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
530 ;; remember position of next marked file before BODY
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
531 ;; can insert lines before the just found file,
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
532 ;; confusing us by finding the same marked file again
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
533 ;; and again and...
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
534 (setq next-position (and (re-search-forward regexp nil t)
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
535 (point-marker))
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
536 found (not (null next-position)))
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
537 (while next-position
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
538 (goto-char next-position)
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
539 (if ,show-progress (sit-for 0))
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
540 (setq results (cons ,body results))
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
541 ;; move after last match
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
542 (goto-char next-position)
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
543 (forward-line 1)
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
544 (set-marker next-position nil)
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
545 (setq next-position (and (re-search-forward regexp nil t)
32027
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
546 (point-marker)))))
62373
6b68d72075c1 (dired-map-over-marks): New arg distinguish-one-marked.
Richard M. Stallman <rms@gnu.org>
parents: 62298
diff changeset
547 (if (and ,distinguish-one-marked (= (length results) 1))
6b68d72075c1 (dired-map-over-marks): New arg distinguish-one-marked.
Richard M. Stallman <rms@gnu.org>
parents: 62298
diff changeset
548 (setq results (cons t results)))
32027
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
549 (if found
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
550 results
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
551 (list ,body)))))
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
552 ;; save-excursion loses, again
638a006b3c47 (dired-map-over-marks): Use modern backquotes and docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31762
diff changeset
553 (dired-move-to-filename)))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
554
62373
6b68d72075c1 (dired-map-over-marks): New arg distinguish-one-marked.
Richard M. Stallman <rms@gnu.org>
parents: 62298
diff changeset
555 (defun dired-get-marked-files (&optional localp arg filter distinguish-one-marked)
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
556 "Return the marked files' names as list of strings.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
557 The list is in the same order as the buffer, that is, the car is the
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
558 first marked file.
44234
acb1f97fda8f (dired-get-marked-files): New arg FILTER allows selection of some files.
Richard M. Stallman <rms@gnu.org>
parents: 44212
diff changeset
559 Values returned are normally absolute file names.
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
560 Optional arg LOCALP as in `dired-get-filename'.
44234
acb1f97fda8f (dired-get-marked-files): New arg FILTER allows selection of some files.
Richard M. Stallman <rms@gnu.org>
parents: 44212
diff changeset
561 Optional second argument ARG specifies files near point
acb1f97fda8f (dired-get-marked-files): New arg FILTER allows selection of some files.
Richard M. Stallman <rms@gnu.org>
parents: 44212
diff changeset
562 instead of marked files. If ARG is an integer, use the next ARG files.
acb1f97fda8f (dired-get-marked-files): New arg FILTER allows selection of some files.
Richard M. Stallman <rms@gnu.org>
parents: 44212
diff changeset
563 If ARG is otherwise non-nil, use file. Usually ARG comes from
acb1f97fda8f (dired-get-marked-files): New arg FILTER allows selection of some files.
Richard M. Stallman <rms@gnu.org>
parents: 44212
diff changeset
564 the command's prefix arg.
acb1f97fda8f (dired-get-marked-files): New arg FILTER allows selection of some files.
Richard M. Stallman <rms@gnu.org>
parents: 44212
diff changeset
565 Optional third argument FILTER, if non-nil, is a function to select
62373
6b68d72075c1 (dired-map-over-marks): New arg distinguish-one-marked.
Richard M. Stallman <rms@gnu.org>
parents: 62298
diff changeset
566 some of the files--those for which (funcall FILTER FILENAME) is non-nil.
6b68d72075c1 (dired-map-over-marks): New arg distinguish-one-marked.
Richard M. Stallman <rms@gnu.org>
parents: 62298
diff changeset
567
6b68d72075c1 (dired-map-over-marks): New arg distinguish-one-marked.
Richard M. Stallman <rms@gnu.org>
parents: 62298
diff changeset
568 If DISTINGUISH-ONE-MARKED is non-nil, then if we find just one marked file,
6b68d72075c1 (dired-map-over-marks): New arg distinguish-one-marked.
Richard M. Stallman <rms@gnu.org>
parents: 62298
diff changeset
569 return (t FILENAME) instead of (FILENAME).
6b68d72075c1 (dired-map-over-marks): New arg distinguish-one-marked.
Richard M. Stallman <rms@gnu.org>
parents: 62298
diff changeset
570 Don't use that together with FILTER."
6b68d72075c1 (dired-map-over-marks): New arg distinguish-one-marked.
Richard M. Stallman <rms@gnu.org>
parents: 62298
diff changeset
571 (let* ((all-of-them
6b68d72075c1 (dired-map-over-marks): New arg distinguish-one-marked.
Richard M. Stallman <rms@gnu.org>
parents: 62298
diff changeset
572 (save-excursion
6b68d72075c1 (dired-map-over-marks): New arg distinguish-one-marked.
Richard M. Stallman <rms@gnu.org>
parents: 62298
diff changeset
573 (dired-map-over-marks
6b68d72075c1 (dired-map-over-marks): New arg distinguish-one-marked.
Richard M. Stallman <rms@gnu.org>
parents: 62298
diff changeset
574 (dired-get-filename localp)
6b68d72075c1 (dired-map-over-marks): New arg distinguish-one-marked.
Richard M. Stallman <rms@gnu.org>
parents: 62298
diff changeset
575 arg nil distinguish-one-marked)))
6b68d72075c1 (dired-map-over-marks): New arg distinguish-one-marked.
Richard M. Stallman <rms@gnu.org>
parents: 62298
diff changeset
576 result)
44234
acb1f97fda8f (dired-get-marked-files): New arg FILTER allows selection of some files.
Richard M. Stallman <rms@gnu.org>
parents: 44212
diff changeset
577 (if (not filter)
62373
6b68d72075c1 (dired-map-over-marks): New arg distinguish-one-marked.
Richard M. Stallman <rms@gnu.org>
parents: 62298
diff changeset
578 (if (and distinguish-one-marked (eq (car all-of-them) t))
6b68d72075c1 (dired-map-over-marks): New arg distinguish-one-marked.
Richard M. Stallman <rms@gnu.org>
parents: 62298
diff changeset
579 all-of-them
6b68d72075c1 (dired-map-over-marks): New arg distinguish-one-marked.
Richard M. Stallman <rms@gnu.org>
parents: 62298
diff changeset
580 (nreverse all-of-them))
44234
acb1f97fda8f (dired-get-marked-files): New arg FILTER allows selection of some files.
Richard M. Stallman <rms@gnu.org>
parents: 44212
diff changeset
581 (dolist (file all-of-them)
acb1f97fda8f (dired-get-marked-files): New arg FILTER allows selection of some files.
Richard M. Stallman <rms@gnu.org>
parents: 44212
diff changeset
582 (if (funcall filter file)
acb1f97fda8f (dired-get-marked-files): New arg FILTER allows selection of some files.
Richard M. Stallman <rms@gnu.org>
parents: 44212
diff changeset
583 (push file result)))
acb1f97fda8f (dired-get-marked-files): New arg FILTER allows selection of some files.
Richard M. Stallman <rms@gnu.org>
parents: 44212
diff changeset
584 result)))
35607
5b26cd3356a1 Revert last change.
Dave Love <fx@gnu.org>
parents: 35522
diff changeset
585
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
586 ;; The dired command
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
587
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
588 (defun dired-read-dir-and-switches (str)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
589 ;; For use in interactive.
94559
687d0af3b0f3 (dired-read-dir-and-switches):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94489
diff changeset
590 (reverse
687d0af3b0f3 (dired-read-dir-and-switches):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94489
diff changeset
591 (list
687d0af3b0f3 (dired-read-dir-and-switches):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94489
diff changeset
592 (if current-prefix-arg
687d0af3b0f3 (dired-read-dir-and-switches):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94489
diff changeset
593 (read-string "Dired listing switches: "
687d0af3b0f3 (dired-read-dir-and-switches):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94489
diff changeset
594 dired-listing-switches))
687d0af3b0f3 (dired-read-dir-and-switches):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94489
diff changeset
595 ;; If a dialog is about to be used, call read-directory-name so
687d0af3b0f3 (dired-read-dir-and-switches):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94489
diff changeset
596 ;; the dialog code knows we want directories. Some dialogs can
687d0af3b0f3 (dired-read-dir-and-switches):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94489
diff changeset
597 ;; only select directories or files when popped up, not both.
687d0af3b0f3 (dired-read-dir-and-switches):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94489
diff changeset
598 (if (next-read-file-uses-dialog-p)
687d0af3b0f3 (dired-read-dir-and-switches):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94489
diff changeset
599 (read-directory-name (format "Dired %s(directory): " str)
687d0af3b0f3 (dired-read-dir-and-switches):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94489
diff changeset
600 nil default-directory nil)
94894
05e7c4a4e123 (dired-read-dir-and-switches): Move things about to use less
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94893
diff changeset
601 (let ((cie ()))
94889
e80a3956601b (dired-read-dir-and-switches): Ignore ., .., and
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
602 (dolist (ext completion-ignored-extensions)
e80a3956601b (dired-read-dir-and-switches): Ignore ., .., and
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
603 (if (eq ?/ (aref ext (1- (length ext)))) (push ext cie)))
e80a3956601b (dired-read-dir-and-switches): Ignore ., .., and
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
604 (setq cie (concat (regexp-opt cie "\\(?:") "\\'"))
94894
05e7c4a4e123 (dired-read-dir-and-switches): Move things about to use less
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94893
diff changeset
605 (lexical-let* ((default (and buffer-file-name
05e7c4a4e123 (dired-read-dir-and-switches): Move things about to use less
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94893
diff changeset
606 (abbreviate-file-name buffer-file-name)))
05e7c4a4e123 (dired-read-dir-and-switches): Move things about to use less
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94893
diff changeset
607 (cie cie)
05e7c4a4e123 (dired-read-dir-and-switches): Move things about to use less
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94893
diff changeset
608 (completion-table
05e7c4a4e123 (dired-read-dir-and-switches): Move things about to use less
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94893
diff changeset
609 ;; We need a mix of read-file-name and
05e7c4a4e123 (dired-read-dir-and-switches): Move things about to use less
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94893
diff changeset
610 ;; read-directory-name so that completion to directories
05e7c4a4e123 (dired-read-dir-and-switches): Move things about to use less
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94893
diff changeset
611 ;; is preferred, but if the user wants to enter a global
05e7c4a4e123 (dired-read-dir-and-switches): Move things about to use less
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94893
diff changeset
612 ;; pattern, he can still use completion on filenames to
05e7c4a4e123 (dired-read-dir-and-switches): Move things about to use less
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94893
diff changeset
613 ;; help him write the pattern.
05e7c4a4e123 (dired-read-dir-and-switches): Move things about to use less
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94893
diff changeset
614 ;; Essentially, we want to use
05e7c4a4e123 (dired-read-dir-and-switches): Move things about to use less
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94893
diff changeset
615 ;; (completion-table-with-predicate
05e7c4a4e123 (dired-read-dir-and-switches): Move things about to use less
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94893
diff changeset
616 ;; 'read-file-name-internal 'file-directory-p nil)
05e7c4a4e123 (dired-read-dir-and-switches): Move things about to use less
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94893
diff changeset
617 ;; but that doesn't work because read-file-name-internal
05e7c4a4e123 (dired-read-dir-and-switches): Move things about to use less
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94893
diff changeset
618 ;; does not obey its `predicate' argument.
05e7c4a4e123 (dired-read-dir-and-switches): Move things about to use less
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94893
diff changeset
619 (completion-table-in-turn
05e7c4a4e123 (dired-read-dir-and-switches): Move things about to use less
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94893
diff changeset
620 (lambda (str pred action)
05e7c4a4e123 (dired-read-dir-and-switches): Move things about to use less
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94893
diff changeset
621 (let ((read-file-name-predicate
05e7c4a4e123 (dired-read-dir-and-switches): Move things about to use less
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94893
diff changeset
622 (lambda (f)
05e7c4a4e123 (dired-read-dir-and-switches): Move things about to use less
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94893
diff changeset
623 (and (not (member f '("./" "../")))
05e7c4a4e123 (dired-read-dir-and-switches): Move things about to use less
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94893
diff changeset
624 ;; Hack! Faster than file-directory-p!
05e7c4a4e123 (dired-read-dir-and-switches): Move things about to use less
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94893
diff changeset
625 (eq (aref f (1- (length f))) ?/)
05e7c4a4e123 (dired-read-dir-and-switches): Move things about to use less
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94893
diff changeset
626 (not (string-match cie f))))))
05e7c4a4e123 (dired-read-dir-and-switches): Move things about to use less
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94893
diff changeset
627 (complete-with-action
05e7c4a4e123 (dired-read-dir-and-switches): Move things about to use less
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94893
diff changeset
628 action 'read-file-name-internal str nil)))
05e7c4a4e123 (dired-read-dir-and-switches): Move things about to use less
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94893
diff changeset
629 'read-file-name-internal)))
05e7c4a4e123 (dired-read-dir-and-switches): Move things about to use less
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94893
diff changeset
630 (minibuffer-with-setup-hook
05e7c4a4e123 (dired-read-dir-and-switches): Move things about to use less
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94893
diff changeset
631 (lambda ()
05e7c4a4e123 (dired-read-dir-and-switches): Move things about to use less
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94893
diff changeset
632 (setq minibuffer-default default)
05e7c4a4e123 (dired-read-dir-and-switches): Move things about to use less
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94893
diff changeset
633 (setq minibuffer-completion-table completion-table))
05e7c4a4e123 (dired-read-dir-and-switches): Move things about to use less
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94893
diff changeset
634 (read-file-name (format "Dired %s(directory): " str)
05e7c4a4e123 (dired-read-dir-and-switches): Move things about to use less
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94893
diff changeset
635 nil default-directory nil))))))))
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
636
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
637 ;;;###autoload (define-key ctl-x-map "d" 'dired)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
638 ;;;###autoload
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
639 (defun dired (dirname &optional switches)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
640 "\"Edit\" directory DIRNAME--delete, rename, print, etc. some files in it.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
641 Optional second argument SWITCHES specifies the `ls' options used.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
642 \(Interactively, use a prefix argument to be able to specify SWITCHES.)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
643 Dired displays a list of files in DIRNAME (which may also have
2492
de8b66eb78cf dired-noselect, dired-internal-noselect, dired-insert-directory:
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2466
diff changeset
644 shell wildcards appended to select certain files). If DIRNAME is a cons,
13888
8838c82fd058 (dired): Fix typo.
Richard M. Stallman <rms@gnu.org>
parents: 13750
diff changeset
645 its first element is taken as the directory name and the rest as an explicit
2492
de8b66eb78cf dired-noselect, dired-internal-noselect, dired-insert-directory:
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2466
diff changeset
646 list of files to make directory entries for.
834
2e0cd4e83c2e *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 778
diff changeset
647 \\<dired-mode-map>\
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
648 You can move around in it with the usual commands.
2492
de8b66eb78cf dired-noselect, dired-internal-noselect, dired-insert-directory:
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2466
diff changeset
649 You can flag files for deletion with \\[dired-flag-file-deletion] and then
de8b66eb78cf dired-noselect, dired-internal-noselect, dired-insert-directory:
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2466
diff changeset
650 delete them by typing \\[dired-do-flagged-delete].
64531
733da358f853 (dired-align-file, dired-flag-backup-files, dired-change-marks,
Juanma Barranquero <lekktu@gmail.com>
parents: 64442
diff changeset
651 Type \\[describe-mode] after entering Dired for more info.
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
652
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
653 If DIRNAME is already in a dired buffer, that buffer is used without refresh."
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
654 ;; Cannot use (interactive "D") because of wildcards.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
655 (interactive (dired-read-dir-and-switches ""))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
656 (switch-to-buffer (dired-noselect dirname switches)))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
657
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
658 ;;;###autoload (define-key ctl-x-4-map "d" 'dired-other-window)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
659 ;;;###autoload
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
660 (defun dired-other-window (dirname &optional switches)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
661 "\"Edit\" directory DIRNAME. Like `dired' but selects in another window."
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
662 (interactive (dired-read-dir-and-switches "in other window "))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
663 (switch-to-buffer-other-window (dired-noselect dirname switches)))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
664
3148
a4c37b95f19f (dired-other-frame): New function, with binding.
Richard M. Stallman <rms@gnu.org>
parents: 3102
diff changeset
665 ;;;###autoload (define-key ctl-x-5-map "d" 'dired-other-frame)
a4c37b95f19f (dired-other-frame): New function, with binding.
Richard M. Stallman <rms@gnu.org>
parents: 3102
diff changeset
666 ;;;###autoload
a4c37b95f19f (dired-other-frame): New function, with binding.
Richard M. Stallman <rms@gnu.org>
parents: 3102
diff changeset
667 (defun dired-other-frame (dirname &optional switches)
a4c37b95f19f (dired-other-frame): New function, with binding.
Richard M. Stallman <rms@gnu.org>
parents: 3102
diff changeset
668 "\"Edit\" directory DIRNAME. Like `dired' but makes a new frame."
a4c37b95f19f (dired-other-frame): New function, with binding.
Richard M. Stallman <rms@gnu.org>
parents: 3102
diff changeset
669 (interactive (dired-read-dir-and-switches "in other frame "))
a4c37b95f19f (dired-other-frame): New function, with binding.
Richard M. Stallman <rms@gnu.org>
parents: 3102
diff changeset
670 (switch-to-buffer-other-frame (dired-noselect dirname switches)))
a4c37b95f19f (dired-other-frame): New function, with binding.
Richard M. Stallman <rms@gnu.org>
parents: 3102
diff changeset
671
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
672 ;;;###autoload
2492
de8b66eb78cf dired-noselect, dired-internal-noselect, dired-insert-directory:
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2466
diff changeset
673 (defun dired-noselect (dir-or-list &optional switches)
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
674 "Like `dired' but returns the dired buffer as value, does not select it."
2492
de8b66eb78cf dired-noselect, dired-internal-noselect, dired-insert-directory:
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2466
diff changeset
675 (or dir-or-list (setq dir-or-list default-directory))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
676 ;; This loses the distinction between "/foo/*/" and "/foo/*" that
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
677 ;; some shells make:
17431
cc5b0995866f (dired-noselect): Avoid calling file-directory-p
Richard M. Stallman <rms@gnu.org>
parents: 17206
diff changeset
678 (let (dirname initially-was-dirname)
2492
de8b66eb78cf dired-noselect, dired-internal-noselect, dired-insert-directory:
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2466
diff changeset
679 (if (consp dir-or-list)
de8b66eb78cf dired-noselect, dired-internal-noselect, dired-insert-directory:
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2466
diff changeset
680 (setq dirname (car dir-or-list))
de8b66eb78cf dired-noselect, dired-internal-noselect, dired-insert-directory:
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2466
diff changeset
681 (setq dirname dir-or-list))
17431
cc5b0995866f (dired-noselect): Avoid calling file-directory-p
Richard M. Stallman <rms@gnu.org>
parents: 17206
diff changeset
682 (setq initially-was-dirname
cc5b0995866f (dired-noselect): Avoid calling file-directory-p
Richard M. Stallman <rms@gnu.org>
parents: 17206
diff changeset
683 (string= (file-name-as-directory dirname) dirname))
8403
941432da0ff3 (dired-noselect): Call abbreviate-file-name here.
Richard M. Stallman <rms@gnu.org>
parents: 8321
diff changeset
684 (setq dirname (abbreviate-file-name
941432da0ff3 (dired-noselect): Call abbreviate-file-name here.
Richard M. Stallman <rms@gnu.org>
parents: 8321
diff changeset
685 (expand-file-name (directory-file-name dirname))))
14947
dde6603e020f (dired-noselect): Resolve symbolic links in argument.
Richard M. Stallman <rms@gnu.org>
parents: 14891
diff changeset
686 (if find-file-visit-truename
dde6603e020f (dired-noselect): Resolve symbolic links in argument.
Richard M. Stallman <rms@gnu.org>
parents: 14891
diff changeset
687 (setq dirname (file-truename dirname)))
17431
cc5b0995866f (dired-noselect): Avoid calling file-directory-p
Richard M. Stallman <rms@gnu.org>
parents: 17206
diff changeset
688 ;; If the argument was syntactically a directory name not a file name,
cc5b0995866f (dired-noselect): Avoid calling file-directory-p
Richard M. Stallman <rms@gnu.org>
parents: 17206
diff changeset
689 ;; or if it happens to name a file that is a directory,
cc5b0995866f (dired-noselect): Avoid calling file-directory-p
Richard M. Stallman <rms@gnu.org>
parents: 17206
diff changeset
690 ;; convert it syntactically to a directory name.
cc5b0995866f (dired-noselect): Avoid calling file-directory-p
Richard M. Stallman <rms@gnu.org>
parents: 17206
diff changeset
691 ;; The reason for checking initially-was-dirname
cc5b0995866f (dired-noselect): Avoid calling file-directory-p
Richard M. Stallman <rms@gnu.org>
parents: 17206
diff changeset
692 ;; and not just file-directory-p
cc5b0995866f (dired-noselect): Avoid calling file-directory-p
Richard M. Stallman <rms@gnu.org>
parents: 17206
diff changeset
693 ;; is that file-directory-p is slow over ftp.
cc5b0995866f (dired-noselect): Avoid calling file-directory-p
Richard M. Stallman <rms@gnu.org>
parents: 17206
diff changeset
694 (if (or initially-was-dirname (file-directory-p dirname))
cc5b0995866f (dired-noselect): Avoid calling file-directory-p
Richard M. Stallman <rms@gnu.org>
parents: 17206
diff changeset
695 (setq dirname (file-name-as-directory dirname)))
2492
de8b66eb78cf dired-noselect, dired-internal-noselect, dired-insert-directory:
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2466
diff changeset
696 (if (consp dir-or-list)
de8b66eb78cf dired-noselect, dired-internal-noselect, dired-insert-directory:
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2466
diff changeset
697 (setq dir-or-list (cons dirname (cdr dir-or-list)))
de8b66eb78cf dired-noselect, dired-internal-noselect, dired-insert-directory:
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2466
diff changeset
698 (setq dir-or-list dirname))
de8b66eb78cf dired-noselect, dired-internal-noselect, dired-insert-directory:
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2466
diff changeset
699 (dired-internal-noselect dir-or-list switches)))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
700
54512
1042cb3d696b (dired-directory-changed-p, dired-buffer-stale-p): New functions.
Luc Teirlinck <teirllm@auburn.edu>
parents: 53789
diff changeset
701 ;; The following is an internal dired function. It returns non-nil if
1042cb3d696b (dired-directory-changed-p, dired-buffer-stale-p): New functions.
Luc Teirlinck <teirllm@auburn.edu>
parents: 53789
diff changeset
702 ;; the directory visited by the current dired buffer has changed on
1042cb3d696b (dired-directory-changed-p, dired-buffer-stale-p): New functions.
Luc Teirlinck <teirllm@auburn.edu>
parents: 53789
diff changeset
703 ;; disk. DIRNAME should be the directory name of that directory.
1042cb3d696b (dired-directory-changed-p, dired-buffer-stale-p): New functions.
Luc Teirlinck <teirllm@auburn.edu>
parents: 53789
diff changeset
704 (defun dired-directory-changed-p (dirname)
1042cb3d696b (dired-directory-changed-p, dired-buffer-stale-p): New functions.
Luc Teirlinck <teirllm@auburn.edu>
parents: 53789
diff changeset
705 (not (let ((attributes (file-attributes dirname))
54542
0b174cfd1511 (dired-directory-changed-p): Reindent.
Luc Teirlinck <teirllm@auburn.edu>
parents: 54533
diff changeset
706 (modtime (visited-file-modtime)))
0b174cfd1511 (dired-directory-changed-p): Reindent.
Luc Teirlinck <teirllm@auburn.edu>
parents: 54533
diff changeset
707 (or (eq modtime 0)
0b174cfd1511 (dired-directory-changed-p): Reindent.
Luc Teirlinck <teirllm@auburn.edu>
parents: 54533
diff changeset
708 (not (eq (car attributes) t))
56423
fb8b1f758f89 (dired-directory-changed-p): `visited-file-modtime' now returns a
Luc Teirlinck <teirllm@auburn.edu>
parents: 56035
diff changeset
709 (equal (nth 5 attributes) modtime)))))
54512
1042cb3d696b (dired-directory-changed-p, dired-buffer-stale-p): New functions.
Luc Teirlinck <teirllm@auburn.edu>
parents: 53789
diff changeset
710
1042cb3d696b (dired-directory-changed-p, dired-buffer-stale-p): New functions.
Luc Teirlinck <teirllm@auburn.edu>
parents: 53789
diff changeset
711 (defun dired-buffer-stale-p (&optional noconfirm)
1042cb3d696b (dired-directory-changed-p, dired-buffer-stale-p): New functions.
Luc Teirlinck <teirllm@auburn.edu>
parents: 53789
diff changeset
712 "Return non-nil if current dired buffer needs updating.
1042cb3d696b (dired-directory-changed-p, dired-buffer-stale-p): New functions.
Luc Teirlinck <teirllm@auburn.edu>
parents: 53789
diff changeset
713 If NOCONFIRM is non-nil, then this function always returns nil
1042cb3d696b (dired-directory-changed-p, dired-buffer-stale-p): New functions.
Luc Teirlinck <teirllm@auburn.edu>
parents: 53789
diff changeset
714 for a remote directory. This feature is used by Auto Revert Mode."
1042cb3d696b (dired-directory-changed-p, dired-buffer-stale-p): New functions.
Luc Teirlinck <teirllm@auburn.edu>
parents: 53789
diff changeset
715 (let ((dirname
1042cb3d696b (dired-directory-changed-p, dired-buffer-stale-p): New functions.
Luc Teirlinck <teirllm@auburn.edu>
parents: 53789
diff changeset
716 (if (consp dired-directory) (car dired-directory) dired-directory)))
1042cb3d696b (dired-directory-changed-p, dired-buffer-stale-p): New functions.
Luc Teirlinck <teirllm@auburn.edu>
parents: 53789
diff changeset
717 (and (stringp dirname)
1042cb3d696b (dired-directory-changed-p, dired-buffer-stale-p): New functions.
Luc Teirlinck <teirllm@auburn.edu>
parents: 53789
diff changeset
718 (not (when noconfirm (file-remote-p dirname)))
1042cb3d696b (dired-directory-changed-p, dired-buffer-stale-p): New functions.
Luc Teirlinck <teirllm@auburn.edu>
parents: 53789
diff changeset
719 (file-readable-p dirname)
1042cb3d696b (dired-directory-changed-p, dired-buffer-stale-p): New functions.
Luc Teirlinck <teirllm@auburn.edu>
parents: 53789
diff changeset
720 (dired-directory-changed-p dirname))))
1042cb3d696b (dired-directory-changed-p, dired-buffer-stale-p): New functions.
Luc Teirlinck <teirllm@auburn.edu>
parents: 53789
diff changeset
721
12996
59cb17f969d2 (dired-internal-noselect): New arg MODE.
Richard M. Stallman <rms@gnu.org>
parents: 12906
diff changeset
722 (defun dired-internal-noselect (dir-or-list &optional switches mode)
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
723 ;; If there is an existing dired buffer for DIRNAME, just leave
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
724 ;; buffer as it is (don't even call dired-revert).
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
725 ;; This saves time especially for deep trees or with ange-ftp.
54512
1042cb3d696b (dired-directory-changed-p, dired-buffer-stale-p): New functions.
Luc Teirlinck <teirllm@auburn.edu>
parents: 53789
diff changeset
726 ;; The user can type `g' easily, and it is more consistent with find-file.
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
727 ;; But if SWITCHES are given they are probably different from the
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
728 ;; buffer's old value, so call dired-sort-other, which does
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
729 ;; revert the buffer.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
730 ;; A pity we can't possibly do "Directory has changed - refresh? "
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
731 ;; like find-file does.
12996
59cb17f969d2 (dired-internal-noselect): New arg MODE.
Richard M. Stallman <rms@gnu.org>
parents: 12906
diff changeset
732 ;; Optional argument MODE is passed to dired-find-buffer-nocreate,
59cb17f969d2 (dired-internal-noselect): New arg MODE.
Richard M. Stallman <rms@gnu.org>
parents: 12906
diff changeset
733 ;; see there.
47488
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
734 (let* (dirname
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
735 buffer
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
736 ;; note that buffer already is in dired-mode, if found
47488
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
737 new-buffer-p
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
738 (old-buf (current-buffer)))
47488
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
739 (if (consp dir-or-list)
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
740 (setq dirname (car dir-or-list))
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
741 (setq dirname dir-or-list))
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
742 ;; Look for an existing buffer.
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
743 (setq buffer (dired-find-buffer-nocreate dirname mode)
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
744 new-buffer-p (null buffer))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
745 (or buffer
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
746 (let ((default-major-mode 'fundamental-mode))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
747 ;; We don't want default-major-mode to run hooks and set auto-fill
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
748 ;; or whatever, now that dired-mode does not
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
749 ;; kill-all-local-variables any longer.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
750 (setq buffer (create-file-buffer (directory-file-name dirname)))))
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
751 (set-buffer buffer)
54512
1042cb3d696b (dired-directory-changed-p, dired-buffer-stale-p): New functions.
Luc Teirlinck <teirllm@auburn.edu>
parents: 53789
diff changeset
752 (if (not new-buffer-p) ; existing buffer ...
1042cb3d696b (dired-directory-changed-p, dired-buffer-stale-p): New functions.
Luc Teirlinck <teirllm@auburn.edu>
parents: 53789
diff changeset
753 (cond (switches ; ... but new switches
13010
06f8e805121d (dired-internal-noselect): Set dired-directory when refreshing a buffer
André Spiegel <spiegel@gnu.org>
parents: 12996
diff changeset
754 ;; file list may have changed
47488
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
755 (setq dired-directory dir-or-list)
13010
06f8e805121d (dired-internal-noselect): Set dired-directory when refreshing a buffer
André Spiegel <spiegel@gnu.org>
parents: 12996
diff changeset
756 ;; this calls dired-revert
49549
99be3a1e2589 Cygwin support patch.
Juanma Barranquero <lekktu@gmail.com>
parents: 49243
diff changeset
757 (dired-sort-other switches))
13010
06f8e805121d (dired-internal-noselect): Set dired-directory when refreshing a buffer
André Spiegel <spiegel@gnu.org>
parents: 12996
diff changeset
758 ;; If directory has changed on disk, offer to revert.
54512
1042cb3d696b (dired-directory-changed-p, dired-buffer-stale-p): New functions.
Luc Teirlinck <teirllm@auburn.edu>
parents: 53789
diff changeset
759 ((when (dired-directory-changed-p dirname)
14309
d546dc4e0c0b (dired-internal-noselect): Pass proper format string to message.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
760 (message "%s"
14361
fbce2d55fec6 Fix indentation.
Karl Heuer <kwzh@gnu.org>
parents: 14309
diff changeset
761 (substitute-command-keys
fbce2d55fec6 Fix indentation.
Karl Heuer <kwzh@gnu.org>
parents: 14309
diff changeset
762 "Directory has changed on disk; type \\[revert-buffer] to update Dired")))))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
763 ;; Else a new buffer
5113
193cd8b36b41 (dired-readin-insert): Expand default-directory and dirname
Richard M. Stallman <rms@gnu.org>
parents: 5112
diff changeset
764 (setq default-directory
17439
5d1881f8c7f1 (dired-internal-noselect): When setting default-directory,
Richard M. Stallman <rms@gnu.org>
parents: 17431
diff changeset
765 ;; We can do this unconditionally
5d1881f8c7f1 (dired-internal-noselect): When setting default-directory,
Richard M. Stallman <rms@gnu.org>
parents: 17431
diff changeset
766 ;; because dired-noselect ensures that the name
5d1881f8c7f1 (dired-internal-noselect): When setting default-directory,
Richard M. Stallman <rms@gnu.org>
parents: 17431
diff changeset
767 ;; is passed in directory name syntax
5d1881f8c7f1 (dired-internal-noselect): When setting default-directory,
Richard M. Stallman <rms@gnu.org>
parents: 17431
diff changeset
768 ;; if it was the name of a directory at all.
5d1881f8c7f1 (dired-internal-noselect): When setting default-directory,
Richard M. Stallman <rms@gnu.org>
parents: 17431
diff changeset
769 (file-name-directory dirname))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
770 (or switches (setq switches dired-listing-switches))
22355
80bf6e97360b (dired-internal-noselect): Call either dired-mode or MODE, but not both.
André Spiegel <spiegel@gnu.org>
parents: 22206
diff changeset
771 (if mode (funcall mode)
47488
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
772 (dired-mode dir-or-list switches))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
773 ;; default-directory and dired-actual-switches are set now
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
774 ;; (buffer-local), so we can call dired-readin:
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
775 (let ((failed t))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
776 (unwind-protect
47488
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
777 (progn (dired-readin)
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
778 (setq failed nil))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
779 ;; dired-readin can fail if parent directories are inaccessible.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
780 ;; Don't leave an empty buffer around in that case.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
781 (if failed (kill-buffer buffer))))
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
782 (goto-char (point-min))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
783 (dired-initial-position dirname))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
784 (set-buffer old-buf)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
785 buffer))
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
786
30108
d78375eda4e8 (dired-find-alternate-file): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 28966
diff changeset
787 (defvar dired-buffers nil
d78375eda4e8 (dired-find-alternate-file): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 28966
diff changeset
788 ;; Enlarged by dired-advertise
d78375eda4e8 (dired-find-alternate-file): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 28966
diff changeset
789 ;; Queried by function dired-buffers-for-dir. When this detects a
d78375eda4e8 (dired-find-alternate-file): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 28966
diff changeset
790 ;; killed buffer, it is removed from this list.
d78375eda4e8 (dired-find-alternate-file): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 28966
diff changeset
791 "Alist of expanded directories and their associated dired buffers.")
d78375eda4e8 (dired-find-alternate-file): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 28966
diff changeset
792
12996
59cb17f969d2 (dired-internal-noselect): New arg MODE.
Richard M. Stallman <rms@gnu.org>
parents: 12906
diff changeset
793 (defun dired-find-buffer-nocreate (dirname &optional mode)
59cb17f969d2 (dired-internal-noselect): New arg MODE.
Richard M. Stallman <rms@gnu.org>
parents: 12906
diff changeset
794 ;; This differs from dired-buffers-for-dir in that it does not consider
59cb17f969d2 (dired-internal-noselect): New arg MODE.
Richard M. Stallman <rms@gnu.org>
parents: 12906
diff changeset
795 ;; subdirs of default-directory and searches for the first match only.
59cb17f969d2 (dired-internal-noselect): New arg MODE.
Richard M. Stallman <rms@gnu.org>
parents: 12906
diff changeset
796 ;; Also, the major mode must be MODE.
47488
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
797 (setq dirname (expand-file-name dirname))
11970
a99407606405 (dired-find-buffer-nocreate): Check only buffers in
Karl Heuer <kwzh@gnu.org>
parents: 11587
diff changeset
798 (let (found (blist dired-buffers)) ; was (buffer-list)
12996
59cb17f969d2 (dired-internal-noselect): New arg MODE.
Richard M. Stallman <rms@gnu.org>
parents: 12906
diff changeset
799 (or mode (setq mode 'dired-mode))
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
800 (while blist
12045
ad681fd69905 (dired-find-buffer-nocreate): Ignore dead buffers.
Karl Heuer <kwzh@gnu.org>
parents: 12001
diff changeset
801 (if (null (buffer-name (cdr (car blist))))
ad681fd69905 (dired-find-buffer-nocreate): Ignore dead buffers.
Karl Heuer <kwzh@gnu.org>
parents: 12001
diff changeset
802 (setq blist (cdr blist))
ad681fd69905 (dired-find-buffer-nocreate): Ignore dead buffers.
Karl Heuer <kwzh@gnu.org>
parents: 12001
diff changeset
803 (save-excursion
ad681fd69905 (dired-find-buffer-nocreate): Ignore dead buffers.
Karl Heuer <kwzh@gnu.org>
parents: 12001
diff changeset
804 (set-buffer (cdr (car blist)))
12996
59cb17f969d2 (dired-internal-noselect): New arg MODE.
Richard M. Stallman <rms@gnu.org>
parents: 12906
diff changeset
805 (if (and (eq major-mode mode)
49583
ffebff40964c (dired-find-buffer-nocreate): Avoid error if dired-directory is nil.
Richard M. Stallman <rms@gnu.org>
parents: 49549
diff changeset
806 dired-directory ;; nil during find-alternate-file
47488
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
807 (equal dirname
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
808 (expand-file-name
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
809 (if (consp dired-directory)
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
810 (car dired-directory)
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
811 dired-directory))))
12045
ad681fd69905 (dired-find-buffer-nocreate): Ignore dead buffers.
Karl Heuer <kwzh@gnu.org>
parents: 12001
diff changeset
812 (setq found (cdr (car blist))
ad681fd69905 (dired-find-buffer-nocreate): Ignore dead buffers.
Karl Heuer <kwzh@gnu.org>
parents: 12001
diff changeset
813 blist nil)
ad681fd69905 (dired-find-buffer-nocreate): Ignore dead buffers.
Karl Heuer <kwzh@gnu.org>
parents: 12001
diff changeset
814 (setq blist (cdr blist))))))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
815 found))
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
816
35607
5b26cd3356a1 Revert last change.
Dave Love <fx@gnu.org>
parents: 35522
diff changeset
817
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
818 ;; Read in a new dired buffer
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
819
47488
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
820 (defun dired-readin ()
54533
924fccad3acb (dired) <defgroup>: Add link to manual.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54512
diff changeset
821 "Read in a new dired buffer.
58412
b9a1c1b8d195 (dired-align-file): Don't assume line starts with spaces.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57943
diff changeset
822 Differs from `dired-insert-subdir' in that it accepts
54533
924fccad3acb (dired) <defgroup>: Add link to manual.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54512
diff changeset
823 wildcards, erases the buffer, and builds the subdir-alist anew
924fccad3acb (dired) <defgroup>: Add link to manual.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54512
diff changeset
824 \(including making it buffer-local and clearing it first)."
924fccad3acb (dired) <defgroup>: Add link to manual.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54512
diff changeset
825
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
826 ;; default-directory and dired-actual-switches must be buffer-local
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
827 ;; and initialized by now.
47488
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
828 (let (dirname)
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
829 (if (consp dired-directory)
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
830 (setq dirname (car dired-directory))
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
831 (setq dirname dired-directory))
2492
de8b66eb78cf dired-noselect, dired-internal-noselect, dired-insert-directory:
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2466
diff changeset
832 (setq dirname (expand-file-name dirname))
de8b66eb78cf dired-noselect, dired-internal-noselect, dired-insert-directory:
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2466
diff changeset
833 (save-excursion
47488
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
834 ;; This hook which may want to modify dired-actual-switches
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
835 ;; based on dired-directory, e.g. with ange-ftp to a SysV host
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
836 ;; where ls won't understand -Al switches.
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
837 (run-hooks 'dired-before-readin-hook)
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
838 (if (consp buffer-undo-list)
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
839 (setq buffer-undo-list nil))
73775
5fbb36eba879 (dired-readin): Locally bind file-name-coding-system.
Richard M. Stallman <rms@gnu.org>
parents: 73211
diff changeset
840 (make-local-variable 'file-name-coding-system)
5fbb36eba879 (dired-readin): Locally bind file-name-coding-system.
Richard M. Stallman <rms@gnu.org>
parents: 73211
diff changeset
841 (setq file-name-coding-system
5fbb36eba879 (dired-readin): Locally bind file-name-coding-system.
Richard M. Stallman <rms@gnu.org>
parents: 73211
diff changeset
842 (or coding-system-for-read file-name-coding-system))
94889
e80a3956601b (dired-read-dir-and-switches): Ignore ., .., and
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
843 (let ((inhibit-read-only t)
47488
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
844 ;; Don't make undo entries for readin.
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
845 (buffer-undo-list t))
2492
de8b66eb78cf dired-noselect, dired-internal-noselect, dired-insert-directory:
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2466
diff changeset
846 (widen)
de8b66eb78cf dired-noselect, dired-internal-noselect, dired-insert-directory:
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2466
diff changeset
847 (erase-buffer)
47488
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
848 (dired-readin-insert))
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
849 (goto-char (point-min))
2492
de8b66eb78cf dired-noselect, dired-internal-noselect, dired-insert-directory:
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2466
diff changeset
850 ;; Must first make alist buffer local and set it to nil because
de8b66eb78cf dired-noselect, dired-internal-noselect, dired-insert-directory:
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2466
diff changeset
851 ;; dired-build-subdir-alist will call dired-clear-alist first
de8b66eb78cf dired-noselect, dired-internal-noselect, dired-insert-directory:
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2466
diff changeset
852 (set (make-local-variable 'dired-subdir-alist) nil)
7598
cdde619af40c (dired-readin): Clear modified flag at the very end.
Richard M. Stallman <rms@gnu.org>
parents: 7494
diff changeset
853 (dired-build-subdir-alist)
8073
6511fd7aaea4 (dired-readin): Record the directory's modtime.
Richard M. Stallman <rms@gnu.org>
parents: 7945
diff changeset
854 (let ((attributes (file-attributes dirname)))
6511fd7aaea4 (dired-readin): Record the directory's modtime.
Richard M. Stallman <rms@gnu.org>
parents: 7945
diff changeset
855 (if (eq (car attributes) t)
6511fd7aaea4 (dired-readin): Record the directory's modtime.
Richard M. Stallman <rms@gnu.org>
parents: 7945
diff changeset
856 (set-visited-file-modtime (nth 5 attributes))))
47488
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
857 (set-buffer-modified-p nil)
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
858 ;; No need to narrow since the whole buffer contains just
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
859 ;; dired-readin's output, nothing else. The hook can
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
860 ;; successfully use dired functions (e.g. dired-get-filename)
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
861 ;; as the subdir-alist has been built in dired-readin.
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
862 (run-hooks 'dired-after-readin-hook))))
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
863
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
864 ;; Subroutines of dired-readin
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
865
47488
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
866 (defun dired-readin-insert ()
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
867 ;; Insert listing for the specified dir (and maybe file list)
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
868 ;; already in dired-directory, assuming a clean buffer.
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
869 (let (dir file-list)
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
870 (if (consp dired-directory)
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
871 (setq dir (car dired-directory)
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
872 file-list (cdr dired-directory))
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
873 (setq dir dired-directory
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
874 file-list nil))
47901
29357f0b7ba5 (dired-readin-insert): Expand dired-directory.
Andreas Schwab <schwab@suse.de>
parents: 47852
diff changeset
875 (setq dir (expand-file-name dir))
47488
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
876 (if (and (equal "" (file-name-nondirectory dir))
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
877 (not file-list))
4284
831da9ea9a95 (dired-readin-insert): If we got a list of files,
Richard M. Stallman <rms@gnu.org>
parents: 4191
diff changeset
878 ;; If we are reading a whole single directory...
47488
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
879 (dired-insert-directory dir dired-actual-switches nil nil t)
2492
de8b66eb78cf dired-noselect, dired-internal-noselect, dired-insert-directory:
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2466
diff changeset
880 (if (not (file-readable-p
47488
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
881 (directory-file-name (file-name-directory dir))))
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
882 (error "Directory %s inaccessible or nonexistent" dir)
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
883 ;; Else treat it as a wildcard spec
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
884 ;; unless we have an explicit list of files.
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
885 (dired-insert-directory dir dired-actual-switches
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
886 file-list (not file-list) t)))))
2492
de8b66eb78cf dired-noselect, dired-internal-noselect, dired-insert-directory:
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2466
diff changeset
887
57264
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
888 (defun dired-align-file (beg end)
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
889 "Align the fields of a file to the ones of surrounding lines.
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
890 BEG..END is the line where the file info is located."
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
891 ;; Some versions of ls try to adjust the size of each field so as to just
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
892 ;; hold the largest element ("largest" in the current invocation, of
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
893 ;; course). So when a single line is output, the size of each field is
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
894 ;; just big enough for that one output. Thus when dired refreshes one
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
895 ;; line, the alignment if this line w.r.t the rest is messed up because
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
896 ;; the fields of that one line will generally be smaller.
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
897 ;;
66325
fda96ff4c7e5 * files.el (directory-listing-before-filename-regexp): New
Michael Albinus <michael.albinus@gmx.de>
parents: 65689
diff changeset
898 ;; To work around this problem, we here add spaces to try and
fda96ff4c7e5 * files.el (directory-listing-before-filename-regexp): New
Michael Albinus <michael.albinus@gmx.de>
parents: 65689
diff changeset
899 ;; re-align the fields as needed. Since this is purely aesthetic,
fda96ff4c7e5 * files.el (directory-listing-before-filename-regexp): New
Michael Albinus <michael.albinus@gmx.de>
parents: 65689
diff changeset
900 ;; it is of utmost importance that it doesn't mess up anything like
fda96ff4c7e5 * files.el (directory-listing-before-filename-regexp): New
Michael Albinus <michael.albinus@gmx.de>
parents: 65689
diff changeset
901 ;; `dired-move-to-filename'. To this end, we limit ourselves to
fda96ff4c7e5 * files.el (directory-listing-before-filename-regexp): New
Michael Albinus <michael.albinus@gmx.de>
parents: 65689
diff changeset
902 ;; adding spaces only, and to only add them at places where there
fda96ff4c7e5 * files.el (directory-listing-before-filename-regexp): New
Michael Albinus <michael.albinus@gmx.de>
parents: 65689
diff changeset
903 ;; was already at least one space. This way, as long as
fda96ff4c7e5 * files.el (directory-listing-before-filename-regexp): New
Michael Albinus <michael.albinus@gmx.de>
parents: 65689
diff changeset
904 ;; `directory-listing-before-filename-regexp' always matches spaces
fda96ff4c7e5 * files.el (directory-listing-before-filename-regexp): New
Michael Albinus <michael.albinus@gmx.de>
parents: 65689
diff changeset
905 ;; with "*" or "+", we know we haven't made anything worse. There
fda96ff4c7e5 * files.el (directory-listing-before-filename-regexp): New
Michael Albinus <michael.albinus@gmx.de>
parents: 65689
diff changeset
906 ;; is one spot where the exact number of spaces is important, which
fda96ff4c7e5 * files.el (directory-listing-before-filename-regexp): New
Michael Albinus <michael.albinus@gmx.de>
parents: 65689
diff changeset
907 ;; is just before the actual filename, so we refrain from adding
fda96ff4c7e5 * files.el (directory-listing-before-filename-regexp): New
Michael Albinus <michael.albinus@gmx.de>
parents: 65689
diff changeset
908 ;; spaces there (and within the filename as well, of course).
57264
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
909 (save-excursion
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
910 (let (file file-col other other-col)
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
911 ;; Check the there is indeed a file, and that there is anoter adjacent
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
912 ;; file with which to align, and that additional spaces are needed to
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
913 ;; align the filenames.
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
914 (when (and (setq file (progn (goto-char beg)
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
915 (dired-move-to-filename nil end)))
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
916 (setq file-col (current-column))
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
917 (setq other
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
918 (or (and (goto-char beg)
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
919 (zerop (forward-line -1))
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
920 (dired-move-to-filename))
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
921 (and (goto-char beg)
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
922 (zerop (forward-line 1))
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
923 (dired-move-to-filename))))
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
924 (setq other-col (current-column))
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
925 (/= file other)
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
926 ;; Make sure there is some work left to do.
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
927 (> other-col file-col))
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
928 ;; If we've only looked at the line above, check to see if the line
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
929 ;; below exists as well and if so, align with the shorter one.
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
930 (when (and (< other file)
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
931 (goto-char beg)
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
932 (zerop (forward-line 1))
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
933 (dired-move-to-filename))
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
934 (let ((alt-col (current-column)))
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
935 (when (< alt-col other-col)
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
936 (setq other-col alt-col)
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
937 (setq other (point)))))
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
938 ;; Keep positions uptodate when we insert stuff.
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
939 (if (> other file) (setq other (copy-marker other)))
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
940 (setq file (copy-marker file))
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
941 ;; Main loop.
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
942 (goto-char beg)
58412
b9a1c1b8d195 (dired-align-file): Don't assume line starts with spaces.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57943
diff changeset
943 (skip-chars-forward " ") ;Skip to the first field.
57264
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
944 (while (and (> other-col file-col)
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
945 ;; Don't touch anything just before (and after) the
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
946 ;; beginning of the filename.
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
947 (> file (point)))
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
948 ;; We're now just in front of a field, with a space behind us.
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
949 (let* ((curcol (current-column))
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
950 ;; Nums are right-aligned.
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
951 (num-align (looking-at "[0-9]"))
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
952 ;; Let's look at the other line, in the same column: we
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
953 ;; should be either near the end of the previous field, or
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
954 ;; in the space between that field and the next.
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
955 ;; [ Of course, it's also possible that we're already within
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
956 ;; the next field or even past it, but that's unlikely since
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
957 ;; other-col > file-col. ]
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
958 ;; Let's find the distance to the alignment-point (either
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
959 ;; the beginning or the end of the next field, depending on
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
960 ;; whether this field is left or right aligned).
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
961 (align-pt-offset
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
962 (save-excursion
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
963 (goto-char other)
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
964 (move-to-column curcol)
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
965 (when (looking-at
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
966 (concat
64531
733da358f853 (dired-align-file, dired-flag-backup-files, dired-change-marks,
Juanma Barranquero <lekktu@gmail.com>
parents: 64442
diff changeset
967 (if (eq (char-before) ?\s) " *" "[^ ]* *")
57264
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
968 (if num-align "[0-9][^ ]*")))
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
969 (- (match-end 0) (match-beginning 0)))))
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
970 ;; Now, the number of spaces to insert is align-pt-offset
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
971 ;; minus the distance to the equivalent point on the
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
972 ;; current line.
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
973 (spaces
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
974 (if (not num-align)
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
975 align-pt-offset
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
976 (and align-pt-offset
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
977 (save-excursion
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
978 (skip-chars-forward "^ ")
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
979 (- align-pt-offset (- (current-column) curcol)))))))
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
980 (when (and spaces (> spaces 0))
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
981 (setq file-col (+ spaces file-col))
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
982 (if (> file-col other-col)
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
983 (setq spaces (- spaces (- file-col other-col))))
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
984 (insert-char ?\s spaces)
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
985 ;; Let's just make really sure we did not mess up.
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
986 (unless (save-excursion
58412
b9a1c1b8d195 (dired-align-file): Don't assume line starts with spaces.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57943
diff changeset
987 (eq (dired-move-to-filename) (marker-position file)))
57264
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
988 ;; Damn! We messed up: let's revert the change.
58412
b9a1c1b8d195 (dired-align-file): Don't assume line starts with spaces.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57943
diff changeset
989 (delete-char (- spaces)))))
b9a1c1b8d195 (dired-align-file): Don't assume line starts with spaces.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57943
diff changeset
990 ;; Now skip to next field.
b9a1c1b8d195 (dired-align-file): Don't assume line starts with spaces.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57943
diff changeset
991 (skip-chars-forward "^ ") (skip-chars-forward " "))
57264
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
992 (set-marker file nil)))))
58412
b9a1c1b8d195 (dired-align-file): Don't assume line starts with spaces.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57943
diff changeset
993
57264
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
994
47488
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
995 (defun dired-insert-directory (dir switches &optional file-list wildcard hdr)
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
996 "Insert a directory listing of DIR, Dired style.
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
997 Use SWITCHES to make the listings.
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
998 If FILE-LIST is non-nil, list only those files.
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
999 Otherwise, if WILDCARD is non-nil, expand wildcards;
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
1000 in that case, DIR should be a file name that uses wildcards.
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
1001 In other cases, DIR should be a directory name or a directory filename.
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
1002 If HDR is non-nil, insert a header line with the directory name."
10126
b4262885826e (dired-insert-directory): Quote certain chars with \.
Richard M. Stallman <rms@gnu.org>
parents: 9673
diff changeset
1003 (let ((opoint (point))
13929
490fe0437271 (dired-insert-directory): Force use of C locale.
Richard M. Stallman <rms@gnu.org>
parents: 13888
diff changeset
1004 (process-environment (copy-sequence process-environment))
10126
b4262885826e (dired-insert-directory): Quote certain chars with \.
Richard M. Stallman <rms@gnu.org>
parents: 9673
diff changeset
1005 end)
47575
4d9f899a5963 * dired.el (dired-insert-directory): Always add "--dired" to to
Kai Großjohann <kgrossjo@eu.uu.net>
parents: 47544
diff changeset
1006 (if (or dired-use-ls-dired (file-remote-p dir))
47488
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
1007 (setq switches (concat "--dired " switches)))
16773
7064fa2cb0d7 (dired-insert-directory): Don't override the user's locale.
Richard M. Stallman <rms@gnu.org>
parents: 16710
diff changeset
1008 ;; We used to specify the C locale here, to force English month names;
7064fa2cb0d7 (dired-insert-directory): Don't override the user's locale.
Richard M. Stallman <rms@gnu.org>
parents: 16710
diff changeset
1009 ;; but this should not be necessary any more,
66325
fda96ff4c7e5 * files.el (directory-listing-before-filename-regexp): New
Michael Albinus <michael.albinus@gmx.de>
parents: 65689
diff changeset
1010 ;; with the new value of `directory-listing-before-filename-regexp'.
47488
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
1011 (if file-list
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
1012 (dolist (f file-list)
57264
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
1013 (let ((beg (point)))
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
1014 (insert-directory f switches nil nil)
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
1015 ;; Re-align fields, if necessary.
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
1016 (dired-align-file beg (point))))
47488
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
1017 (insert-directory dir switches wildcard (not wildcard)))
10126
b4262885826e (dired-insert-directory): Quote certain chars with \.
Richard M. Stallman <rms@gnu.org>
parents: 9673
diff changeset
1018 ;; Quote certain characters, unless ls quoted them for us.
11151
ab55a16a92ce Wrap filename character quoting code with save-excursion so following forms
Simon Marshall <simon@gnu.org>
parents: 10845
diff changeset
1019 (if (not (string-match "b" dired-actual-switches))
ab55a16a92ce Wrap filename character quoting code with save-excursion so following forms
Simon Marshall <simon@gnu.org>
parents: 10845
diff changeset
1020 (save-excursion
ab55a16a92ce Wrap filename character quoting code with save-excursion so following forms
Simon Marshall <simon@gnu.org>
parents: 10845
diff changeset
1021 (setq end (point-marker))
ab55a16a92ce Wrap filename character quoting code with save-excursion so following forms
Simon Marshall <simon@gnu.org>
parents: 10845
diff changeset
1022 (goto-char opoint)
ab55a16a92ce Wrap filename character quoting code with save-excursion so following forms
Simon Marshall <simon@gnu.org>
parents: 10845
diff changeset
1023 (while (search-forward "\\" end t)
48903
bcc54fecfcee (dired-insert-directory): Preserve text properties when quoting.
Andreas Schwab <schwab@suse.de>
parents: 48491
diff changeset
1024 (replace-match (apply #'propertize
bcc54fecfcee (dired-insert-directory): Preserve text properties when quoting.
Andreas Schwab <schwab@suse.de>
parents: 48491
diff changeset
1025 "\\\\"
bcc54fecfcee (dired-insert-directory): Preserve text properties when quoting.
Andreas Schwab <schwab@suse.de>
parents: 48491
diff changeset
1026 (text-properties-at (match-beginning 0)))
bcc54fecfcee (dired-insert-directory): Preserve text properties when quoting.
Andreas Schwab <schwab@suse.de>
parents: 48491
diff changeset
1027 nil t))
11151
ab55a16a92ce Wrap filename character quoting code with save-excursion so following forms
Simon Marshall <simon@gnu.org>
parents: 10845
diff changeset
1028 (goto-char opoint)
ab55a16a92ce Wrap filename character quoting code with save-excursion so following forms
Simon Marshall <simon@gnu.org>
parents: 10845
diff changeset
1029 (while (search-forward "\^m" end t)
48903
bcc54fecfcee (dired-insert-directory): Preserve text properties when quoting.
Andreas Schwab <schwab@suse.de>
parents: 48491
diff changeset
1030 (replace-match (apply #'propertize
bcc54fecfcee (dired-insert-directory): Preserve text properties when quoting.
Andreas Schwab <schwab@suse.de>
parents: 48491
diff changeset
1031 "\\015"
bcc54fecfcee (dired-insert-directory): Preserve text properties when quoting.
Andreas Schwab <schwab@suse.de>
parents: 48491
diff changeset
1032 (text-properties-at (match-beginning 0)))
bcc54fecfcee (dired-insert-directory): Preserve text properties when quoting.
Andreas Schwab <schwab@suse.de>
parents: 48491
diff changeset
1033 nil t))
11151
ab55a16a92ce Wrap filename character quoting code with save-excursion so following forms
Simon Marshall <simon@gnu.org>
parents: 10845
diff changeset
1034 (set-marker end nil)))
47488
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
1035 (dired-insert-set-properties opoint (point))
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
1036 ;; If we used --dired and it worked, the lines are already indented.
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
1037 ;; Otherwise, indent them.
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
1038 (unless (save-excursion
47852
d8b6eab7d77a (dired-insert-directory): When looking for existing
Andreas Schwab <schwab@suse.de>
parents: 47831
diff changeset
1039 (goto-char opoint)
47488
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
1040 (looking-at " "))
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
1041 (let ((indent-tabs-mode nil))
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
1042 (indent-rigidly opoint (point) 2)))
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
1043 ;; Insert text at the beginning to standardize things.
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
1044 (save-excursion
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
1045 (goto-char opoint)
95783
4a429fae9256 (dired-insert-directory): Don't assume Unix-style dir names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94894
diff changeset
1046 (if (and (or hdr wildcard)
4a429fae9256 (dired-insert-directory): Don't assume Unix-style dir names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94894
diff changeset
1047 (not (and (looking-at "^ \\(.*\\):$")
4a429fae9256 (dired-insert-directory): Don't assume Unix-style dir names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94894
diff changeset
1048 (file-name-absolute-p (match-string 1)))))
47488
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
1049 ;; Note that dired-build-subdir-alist will replace the name
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
1050 ;; by its expansion, so it does not matter whether what we insert
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
1051 ;; here is fully expanded, but it should be absolute.
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
1052 (insert " " (directory-file-name (file-name-directory dir)) ":\n"))
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
1053 (when wildcard
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
1054 ;; Insert "wildcard" line where "total" line would be for a full dir.
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
1055 (insert " wildcard " (file-name-nondirectory dir) "\n")))))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1056
6634
dc75f33163fb (dired-insert-directory): Add mouse-face properties.
Richard M. Stallman <rms@gnu.org>
parents: 6594
diff changeset
1057 (defun dired-insert-set-properties (beg end)
54533
924fccad3acb (dired) <defgroup>: Add link to manual.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54512
diff changeset
1058 "Make the file names highlight when the mouse is on them."
6634
dc75f33163fb (dired-insert-directory): Add mouse-face properties.
Richard M. Stallman <rms@gnu.org>
parents: 6594
diff changeset
1059 (save-excursion
dc75f33163fb (dired-insert-directory): Add mouse-face properties.
Richard M. Stallman <rms@gnu.org>
parents: 6594
diff changeset
1060 (goto-char beg)
dc75f33163fb (dired-insert-directory): Add mouse-face properties.
Richard M. Stallman <rms@gnu.org>
parents: 6594
diff changeset
1061 (while (< (point) end)
12736
a7253dcf5f9d (dired-insert-set-properties): Catch errors.
Richard M. Stallman <rms@gnu.org>
parents: 12211
diff changeset
1062 (condition-case nil
a7253dcf5f9d (dired-insert-set-properties): Catch errors.
Richard M. Stallman <rms@gnu.org>
parents: 12211
diff changeset
1063 (if (dired-move-to-filename)
38074
7ca7def9af01 (dired-insert-set-properties): Add help-echo to mouse-highlighted text.
Eli Zaretskii <eliz@gnu.org>
parents: 37547
diff changeset
1064 (add-text-properties
7ca7def9af01 (dired-insert-set-properties): Add help-echo to mouse-highlighted text.
Eli Zaretskii <eliz@gnu.org>
parents: 37547
diff changeset
1065 (point)
7ca7def9af01 (dired-insert-set-properties): Add help-echo to mouse-highlighted text.
Eli Zaretskii <eliz@gnu.org>
parents: 37547
diff changeset
1066 (save-excursion
7ca7def9af01 (dired-insert-set-properties): Add help-echo to mouse-highlighted text.
Eli Zaretskii <eliz@gnu.org>
parents: 37547
diff changeset
1067 (dired-move-to-end-of-filename)
7ca7def9af01 (dired-insert-set-properties): Add help-echo to mouse-highlighted text.
Eli Zaretskii <eliz@gnu.org>
parents: 37547
diff changeset
1068 (point))
38426
7c443908a552 (dired-insert-set-properties): Fix invalid mouse-face
Gerd Moellmann <gerd@gnu.org>
parents: 38214
diff changeset
1069 '(mouse-face highlight
97079
22b04404b5d5 (dired-insert-set-properties): Add new text property
Juri Linkov <juri@jurta.org>
parents: 97062
diff changeset
1070 dired-filename t
38074
7ca7def9af01 (dired-insert-set-properties): Add help-echo to mouse-highlighted text.
Eli Zaretskii <eliz@gnu.org>
parents: 37547
diff changeset
1071 help-echo "mouse-2: visit this file in other window")))
12736
a7253dcf5f9d (dired-insert-set-properties): Catch errors.
Richard M. Stallman <rms@gnu.org>
parents: 12211
diff changeset
1072 (error nil))
6634
dc75f33163fb (dired-insert-directory): Add mouse-face properties.
Richard M. Stallman <rms@gnu.org>
parents: 6594
diff changeset
1073 (forward-line 1))))
35607
5b26cd3356a1 Revert last change.
Dave Love <fx@gnu.org>
parents: 35522
diff changeset
1074
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1075 ;; Reverting a dired buffer
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1076
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1077 (defun dired-revert (&optional arg noconfirm)
54533
924fccad3acb (dired) <defgroup>: Add link to manual.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54512
diff changeset
1078 "Reread the dired buffer.
64531
733da358f853 (dired-align-file, dired-flag-backup-files, dired-change-marks,
Juanma Barranquero <lekktu@gmail.com>
parents: 64442
diff changeset
1079 Must also be called after `dired-actual-switches' have changed.
54533
924fccad3acb (dired) <defgroup>: Add link to manual.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54512
diff changeset
1080 Should not fail even on completely garbaged buffers.
924fccad3acb (dired) <defgroup>: Add link to manual.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54512
diff changeset
1081 Preserves old cursor, marks/flags, hidden-p."
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1082 (widen) ; just in case user narrowed
56035
e3ace501b5f4 (dired-revert): If buffer is marked unmodified before
Luc Teirlinck <teirllm@auburn.edu>
parents: 56015
diff changeset
1083 (let ((modflag (buffer-modified-p))
e3ace501b5f4 (dired-revert): If buffer is marked unmodified before
Luc Teirlinck <teirllm@auburn.edu>
parents: 56015
diff changeset
1084 (opoint (point))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1085 (ofile (dired-get-filename nil t))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1086 (mark-alist nil) ; save marked files
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1087 (hidden-subdirs (dired-remember-hidden))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1088 (old-subdir-alist (cdr (reverse dired-subdir-alist))) ; except pwd
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1089 (case-fold-search nil) ; we check for upper case ls flags
94889
e80a3956601b (dired-read-dir-and-switches): Ignore ., .., and
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
1090 (inhibit-read-only t))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1091 (goto-char (point-min))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1092 (setq mark-alist;; only after dired-remember-hidden since this unhides:
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1093 (dired-remember-marks (point-min) (point-max)))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1094 ;; treat top level dir extra (it may contain wildcards)
2492
de8b66eb78cf dired-noselect, dired-internal-noselect, dired-insert-directory:
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2466
diff changeset
1095 (dired-uncache
de8b66eb78cf dired-noselect, dired-internal-noselect, dired-insert-directory:
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2466
diff changeset
1096 (if (consp dired-directory) (car dired-directory) dired-directory))
74385
fcc9e01e9e6d (dired-revert): Turn off dired-after-readin-hook around call to dired-readin.
Richard M. Stallman <rms@gnu.org>
parents: 73775
diff changeset
1097 ;; Run dired-after-readin-hook just once, below.
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1098 (let ((dired-after-readin-hook nil))
74385
fcc9e01e9e6d (dired-revert): Turn off dired-after-readin-hook around call to dired-readin.
Richard M. Stallman <rms@gnu.org>
parents: 73775
diff changeset
1099 (dired-readin)
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1100 (dired-insert-old-subdirs old-subdir-alist))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1101 (dired-mark-remembered mark-alist) ; mark files that were marked
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1102 ;; ... run the hook for the whole buffer, and only after markers
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1103 ;; have been reinserted (else omitting in dired-x would omit marked files)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1104 (run-hooks 'dired-after-readin-hook) ; no need to narrow
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1105 (or (and ofile (dired-goto-file ofile)) ; move cursor to where it
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1106 (goto-char opoint)) ; was before
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1107 (dired-move-to-filename)
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1108 (save-excursion ; hide subdirs that were hidden
54533
924fccad3acb (dired) <defgroup>: Add link to manual.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54512
diff changeset
1109 (dolist (dir hidden-subdirs)
924fccad3acb (dired) <defgroup>: Add link to manual.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54512
diff changeset
1110 (if (dired-goto-subdir dir)
56035
e3ace501b5f4 (dired-revert): If buffer is marked unmodified before
Luc Teirlinck <teirllm@auburn.edu>
parents: 56015
diff changeset
1111 (dired-hide-subdir 1))))
e3ace501b5f4 (dired-revert): If buffer is marked unmodified before
Luc Teirlinck <teirllm@auburn.edu>
parents: 56015
diff changeset
1112 (unless modflag (restore-buffer-modified-p nil)))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1113 ;; outside of the let scope
56035
e3ace501b5f4 (dired-revert): If buffer is marked unmodified before
Luc Teirlinck <teirllm@auburn.edu>
parents: 56015
diff changeset
1114 ;;; Might as well not override the user if the user changed this.
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1115 ;;; (setq buffer-read-only t)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1116 )
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1117
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1118 ;; Subroutines of dired-revert
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1119 ;; Some of these are also used when inserting subdirs.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1120
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1121 (defun dired-remember-marks (beg end)
54533
924fccad3acb (dired) <defgroup>: Add link to manual.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54512
diff changeset
1122 "Return alist of files and their marks, from BEG to END."
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1123 (if selective-display ; must unhide to make this work.
94889
e80a3956601b (dired-read-dir-and-switches): Ignore ., .., and
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
1124 (let ((inhibit-read-only t))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1125 (subst-char-in-region beg end ?\r ?\n)))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1126 (let (fil chr alist)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1127 (save-excursion
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1128 (goto-char beg)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1129 (while (re-search-forward dired-re-mark end t)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1130 (if (setq fil (dired-get-filename nil t))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1131 (setq chr (preceding-char)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1132 alist (cons (cons fil chr) alist)))))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1133 alist))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1134
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1135 (defun dired-mark-remembered (alist)
54533
924fccad3acb (dired) <defgroup>: Add link to manual.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54512
diff changeset
1136 "Mark all files remembered in ALIST.
924fccad3acb (dired) <defgroup>: Add link to manual.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54512
diff changeset
1137 Each element of ALIST looks like (FILE . MARKERCHAR)."
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1138 (let (elt fil chr)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1139 (while alist
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1140 (setq elt (car alist)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1141 alist (cdr alist)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1142 fil (car elt)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1143 chr (cdr elt))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1144 (if (dired-goto-file fil)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1145 (save-excursion
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1146 (beginning-of-line)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1147 (delete-char 1)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1148 (insert chr))))))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1149
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1150 (defun dired-remember-hidden ()
54533
924fccad3acb (dired) <defgroup>: Add link to manual.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54512
diff changeset
1151 "Return a list of names of subdirs currently hidden."
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1152 (let ((l dired-subdir-alist) dir pos result)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1153 (while l
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1154 (setq dir (car (car l))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1155 pos (cdr (car l))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1156 l (cdr l))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1157 (goto-char pos)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1158 (skip-chars-forward "^\r\n")
834
2e0cd4e83c2e *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 778
diff changeset
1159 (if (eq (following-char) ?\r)
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1160 (setq result (cons dir result))))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1161 result))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1162
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1163 (defun dired-insert-old-subdirs (old-subdir-alist)
54533
924fccad3acb (dired) <defgroup>: Add link to manual.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54512
diff changeset
1164 "Try to insert all subdirs that were displayed before.
924fccad3acb (dired) <defgroup>: Add link to manual.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54512
diff changeset
1165 Do so according to the former subdir alist OLD-SUBDIR-ALIST."
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1166 (or (string-match "R" dired-actual-switches)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1167 (let (elt dir)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1168 (while old-subdir-alist
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1169 (setq elt (car old-subdir-alist)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1170 old-subdir-alist (cdr old-subdir-alist)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1171 dir (car elt))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1172 (condition-case ()
1130
e18597ff3c95 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1109
diff changeset
1173 (progn
e18597ff3c95 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1109
diff changeset
1174 (dired-uncache dir)
56015
e7e7513282b4 (dired-insert-old-subdirs): Adapt to fact that the R switch is no
Luc Teirlinck <teirllm@auburn.edu>
parents: 55994
diff changeset
1175 (dired-insert-subdir dir))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1176 (error nil))))))
1130
e18597ff3c95 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1109
diff changeset
1177
e18597ff3c95 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1109
diff changeset
1178 (defun dired-uncache (dir)
54533
924fccad3acb (dired) <defgroup>: Add link to manual.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54512
diff changeset
1179 "Remove directory DIR from any directory cache."
7030
9e51b51e8595 Pass operation to find-file-name-handler.
Karl Heuer <kwzh@gnu.org>
parents: 6864
diff changeset
1180 (let ((handler (find-file-name-handler dir 'dired-uncache)))
1130
e18597ff3c95 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1109
diff changeset
1181 (if handler
e18597ff3c95 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1109
diff changeset
1182 (funcall handler 'dired-uncache dir))))
35607
5b26cd3356a1 Revert last change.
Dave Love <fx@gnu.org>
parents: 35522
diff changeset
1183
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1184 ;; dired mode key bindings and initialization
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1185
54533
924fccad3acb (dired) <defgroup>: Add link to manual.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54512
diff changeset
1186 (defvar dired-mode-map
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1187 ;; This looks ugly when substitute-command-keys uses C-d instead d:
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1188 ;; (define-key dired-mode-map "\C-d" 'dired-flag-file-deletion)
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1189 (let ((map (make-keymap)))
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1190 (suppress-keymap map)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1191 (define-key map [mouse-2] 'dired-mouse-find-file-other-window)
59024
f71e5777b783 (dired-mode-map): Map follow-link to mouse-face.
Kim F. Storm <storm@cua.dk>
parents: 58426
diff changeset
1192 (define-key map [follow-link] 'mouse-face)
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1193 ;; Commands to mark or flag certain categories of files
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1194 (define-key map "#" 'dired-flag-auto-save-files)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1195 (define-key map "." 'dired-clean-directory)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1196 (define-key map "~" 'dired-flag-backup-files)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1197 ;; Upper case keys (except !) for operating on the marked files
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1198 (define-key map "A" 'dired-do-search)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1199 (define-key map "C" 'dired-do-copy)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1200 (define-key map "B" 'dired-do-byte-compile)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1201 (define-key map "D" 'dired-do-delete)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1202 (define-key map "G" 'dired-do-chgrp)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1203 (define-key map "H" 'dired-do-hardlink)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1204 (define-key map "L" 'dired-do-load)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1205 (define-key map "M" 'dired-do-chmod)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1206 (define-key map "O" 'dired-do-chown)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1207 (define-key map "P" 'dired-do-print)
28937
2d65f0ae4167 (dired-mode-map): Use dired-do-query-replace-regexp.
Gerd Moellmann <gerd@gnu.org>
parents: 28737
diff changeset
1208 (define-key map "Q" 'dired-do-query-replace-regexp)
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1209 (define-key map "R" 'dired-do-rename)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1210 (define-key map "S" 'dired-do-symlink)
54663
9b0161392fe1 Add autoload for `dired-do-touch'.
Juri Linkov <juri@jurta.org>
parents: 54661
diff changeset
1211 (define-key map "T" 'dired-do-touch)
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1212 (define-key map "X" 'dired-do-shell-command)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1213 (define-key map "Z" 'dired-do-compress)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1214 (define-key map "!" 'dired-do-shell-command)
97088
4656cbfe9954 (dired-mode-map): Rebind `dired-flag-garbage-files' from `&' to `%&'.
Juri Linkov <juri@jurta.org>
parents: 97079
diff changeset
1215 (define-key map "&" 'dired-do-async-shell-command)
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1216 ;; Comparison commands
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1217 (define-key map "=" 'dired-diff)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1218 (define-key map "\M-=" 'dired-backup-diff)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1219 ;; Tree Dired commands
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1220 (define-key map "\M-\C-?" 'dired-unmark-all-files)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1221 (define-key map "\M-\C-d" 'dired-tree-down)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1222 (define-key map "\M-\C-u" 'dired-tree-up)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1223 (define-key map "\M-\C-n" 'dired-next-subdir)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1224 (define-key map "\M-\C-p" 'dired-prev-subdir)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1225 ;; move to marked files
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1226 (define-key map "\M-{" 'dired-prev-marked-file)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1227 (define-key map "\M-}" 'dired-next-marked-file)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1228 ;; Make all regexp commands share a `%' prefix:
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1229 ;; We used to get to the submap via a symbol dired-regexp-prefix,
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1230 ;; but that seems to serve little purpose, and copy-keymap
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1231 ;; does a better job without it.
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1232 (define-key map "%" nil)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1233 (define-key map "%u" 'dired-upcase)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1234 (define-key map "%l" 'dired-downcase)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1235 (define-key map "%d" 'dired-flag-files-regexp)
22206
ebcc36b6b95e (dired-mark-files-containing-regexp): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21956
diff changeset
1236 (define-key map "%g" 'dired-mark-files-containing-regexp)
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1237 (define-key map "%m" 'dired-mark-files-regexp)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1238 (define-key map "%r" 'dired-do-rename-regexp)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1239 (define-key map "%C" 'dired-do-copy-regexp)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1240 (define-key map "%H" 'dired-do-hardlink-regexp)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1241 (define-key map "%R" 'dired-do-rename-regexp)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1242 (define-key map "%S" 'dired-do-symlink-regexp)
97088
4656cbfe9954 (dired-mode-map): Rebind `dired-flag-garbage-files' from `&' to `%&'.
Juri Linkov <juri@jurta.org>
parents: 97079
diff changeset
1243 (define-key map "%&" 'dired-flag-garbage-files)
16500
707d6f8c6381 (dired-mode-map): Make * a prefix for mark commands.
Richard M. Stallman <rms@gnu.org>
parents: 16490
diff changeset
1244 ;; Commands for marking and unmarking.
707d6f8c6381 (dired-mode-map): Make * a prefix for mark commands.
Richard M. Stallman <rms@gnu.org>
parents: 16490
diff changeset
1245 (define-key map "*" nil)
707d6f8c6381 (dired-mode-map): Make * a prefix for mark commands.
Richard M. Stallman <rms@gnu.org>
parents: 16490
diff changeset
1246 (define-key map "**" 'dired-mark-executables)
707d6f8c6381 (dired-mode-map): Make * a prefix for mark commands.
Richard M. Stallman <rms@gnu.org>
parents: 16490
diff changeset
1247 (define-key map "*/" 'dired-mark-directories)
707d6f8c6381 (dired-mode-map): Make * a prefix for mark commands.
Richard M. Stallman <rms@gnu.org>
parents: 16490
diff changeset
1248 (define-key map "*@" 'dired-mark-symlinks)
707d6f8c6381 (dired-mode-map): Make * a prefix for mark commands.
Richard M. Stallman <rms@gnu.org>
parents: 16490
diff changeset
1249 (define-key map "*%" 'dired-mark-files-regexp)
707d6f8c6381 (dired-mode-map): Make * a prefix for mark commands.
Richard M. Stallman <rms@gnu.org>
parents: 16490
diff changeset
1250 (define-key map "*c" 'dired-change-marks)
16514
c270f12e9373 (dired-mode-map): Put dired-mark-subdir-files on *s.
Richard M. Stallman <rms@gnu.org>
parents: 16501
diff changeset
1251 (define-key map "*s" 'dired-mark-subdir-files)
16500
707d6f8c6381 (dired-mode-map): Make * a prefix for mark commands.
Richard M. Stallman <rms@gnu.org>
parents: 16490
diff changeset
1252 (define-key map "*m" 'dired-mark)
707d6f8c6381 (dired-mode-map): Make * a prefix for mark commands.
Richard M. Stallman <rms@gnu.org>
parents: 16490
diff changeset
1253 (define-key map "*u" 'dired-unmark)
707d6f8c6381 (dired-mode-map): Make * a prefix for mark commands.
Richard M. Stallman <rms@gnu.org>
parents: 16490
diff changeset
1254 (define-key map "*?" 'dired-unmark-all-files)
18160
c64b7a17eea9 (dired-unmark-all-marks):
Richard M. Stallman <rms@gnu.org>
parents: 17988
diff changeset
1255 (define-key map "*!" 'dired-unmark-all-marks)
54533
924fccad3acb (dired) <defgroup>: Add link to manual.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54512
diff changeset
1256 (define-key map "U" 'dired-unmark-all-marks)
16500
707d6f8c6381 (dired-mode-map): Make * a prefix for mark commands.
Richard M. Stallman <rms@gnu.org>
parents: 16490
diff changeset
1257 (define-key map "*\177" 'dired-unmark-backward)
707d6f8c6381 (dired-mode-map): Make * a prefix for mark commands.
Richard M. Stallman <rms@gnu.org>
parents: 16490
diff changeset
1258 (define-key map "*\C-n" 'dired-next-marked-file)
707d6f8c6381 (dired-mode-map): Make * a prefix for mark commands.
Richard M. Stallman <rms@gnu.org>
parents: 16490
diff changeset
1259 (define-key map "*\C-p" 'dired-prev-marked-file)
44212
e87d819f2887 (dired-toggle-marks): Renamed from dired-do-toggle. Bindings changed.
Richard M. Stallman <rms@gnu.org>
parents: 44061
diff changeset
1260 (define-key map "*t" 'dired-toggle-marks)
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1261 ;; Lower keys for commands not operating on all the marked files
30108
d78375eda4e8 (dired-find-alternate-file): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 28966
diff changeset
1262 (define-key map "a" 'dired-find-alternate-file)
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1263 (define-key map "d" 'dired-flag-file-deletion)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1264 (define-key map "e" 'dired-find-file)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1265 (define-key map "f" 'dired-find-file)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1266 (define-key map "\C-m" 'dired-advertised-find-file)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1267 (define-key map "g" 'revert-buffer)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1268 (define-key map "h" 'describe-mode)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1269 (define-key map "i" 'dired-maybe-insert-subdir)
70802
e1bfa36494e2 (dired-mode-map): Put dired-goto-file on j, not M-g.
Richard M. Stallman <rms@gnu.org>
parents: 69783
diff changeset
1270 (define-key map "j" 'dired-goto-file)
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1271 (define-key map "k" 'dired-do-kill-lines)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1272 (define-key map "l" 'dired-do-redisplay)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1273 (define-key map "m" 'dired-mark)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1274 (define-key map "n" 'dired-next-line)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1275 (define-key map "o" 'dired-find-file-other-window)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1276 (define-key map "\C-o" 'dired-display-file)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1277 (define-key map "p" 'dired-previous-line)
21095
f557f5e4137f (dired-quit): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21047
diff changeset
1278 (define-key map "q" 'quit-window)
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1279 (define-key map "s" 'dired-sort-toggle-or-edit)
44212
e87d819f2887 (dired-toggle-marks): Renamed from dired-do-toggle. Bindings changed.
Richard M. Stallman <rms@gnu.org>
parents: 44061
diff changeset
1280 (define-key map "t" 'dired-toggle-marks)
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1281 (define-key map "u" 'dired-unmark)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1282 (define-key map "v" 'dired-view-file)
42100
eb27208de620 (dired-copy-filename-as-kill): Moved from dired-x.el.
Richard M. Stallman <rms@gnu.org>
parents: 41608
diff changeset
1283 (define-key map "w" 'dired-copy-filename-as-kill)
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1284 (define-key map "x" 'dired-do-flagged-delete)
38990
8911bc85234c (dired-mode-map): Bind `y' to dired-show-file-type
Gerd Moellmann <gerd@gnu.org>
parents: 38426
diff changeset
1285 (define-key map "y" 'dired-show-file-type)
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1286 (define-key map "+" 'dired-create-directory)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1287 ;; moving
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1288 (define-key map "<" 'dired-prev-dirline)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1289 (define-key map ">" 'dired-next-dirline)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1290 (define-key map "^" 'dired-up-directory)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1291 (define-key map " " 'dired-next-line)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1292 (define-key map "\C-n" 'dired-next-line)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1293 (define-key map "\C-p" 'dired-previous-line)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1294 (define-key map [down] 'dired-next-line)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1295 (define-key map [up] 'dired-previous-line)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1296 ;; hiding
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1297 (define-key map "$" 'dired-hide-subdir)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1298 (define-key map "\M-$" 'dired-hide-all)
97062
a84502b647f0 (dired-mode-map): Bind dired-do-isearch to `M-s a C-s'
Juri Linkov <juri@jurta.org>
parents: 96920
diff changeset
1299 ;; isearch
a84502b647f0 (dired-mode-map): Bind dired-do-isearch to `M-s a C-s'
Juri Linkov <juri@jurta.org>
parents: 96920
diff changeset
1300 (define-key map (kbd "M-s a C-s") 'dired-do-isearch)
a84502b647f0 (dired-mode-map): Bind dired-do-isearch to `M-s a C-s'
Juri Linkov <juri@jurta.org>
parents: 96920
diff changeset
1301 (define-key map (kbd "M-s a M-C-s") 'dired-do-isearch-regexp)
97079
22b04404b5d5 (dired-insert-set-properties): Add new text property
Juri Linkov <juri@jurta.org>
parents: 97062
diff changeset
1302 (define-key map (kbd "M-s f C-s") 'dired-isearch-filenames)
22b04404b5d5 (dired-insert-set-properties): Add new text property
Juri Linkov <juri@jurta.org>
parents: 97062
diff changeset
1303 (define-key map (kbd "M-s f M-C-s") 'dired-isearch-filenames-regexp)
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1304 ;; misc
82195
69abb81564e4 (dired-mode-map): Bind C-x C-q to dired-toggle-read-only.
Juri Linkov <juri@jurta.org>
parents: 82140
diff changeset
1305 (define-key map "\C-x\C-q" 'dired-toggle-read-only)
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1306 (define-key map "?" 'dired-summary)
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1307 (define-key map "\177" 'dired-unmark-backward)
59786
aa04ceecde25 (dired-mode-map): Remap `undo' and `advertised-undo'
Richard M. Stallman <rms@gnu.org>
parents: 59279
diff changeset
1308 (define-key map [remap undo] 'dired-undo)
aa04ceecde25 (dired-mode-map): Remap `undo' and `advertised-undo'
Richard M. Stallman <rms@gnu.org>
parents: 59279
diff changeset
1309 (define-key map [remap advertised-undo] 'dired-undo)
77402
dd08291401af Rename "thumbnails" to "image-dired".
Chong Yidong <cyd@stupidchicken.com>
parents: 77394
diff changeset
1310 ;; thumbnail manipulation (image-dired)
dd08291401af Rename "thumbnails" to "image-dired".
Chong Yidong <cyd@stupidchicken.com>
parents: 77394
diff changeset
1311 (define-key map "\C-td" 'image-dired-display-thumbs)
dd08291401af Rename "thumbnails" to "image-dired".
Chong Yidong <cyd@stupidchicken.com>
parents: 77394
diff changeset
1312 (define-key map "\C-tt" 'image-dired-tag-files)
dd08291401af Rename "thumbnails" to "image-dired".
Chong Yidong <cyd@stupidchicken.com>
parents: 77394
diff changeset
1313 (define-key map "\C-tr" 'image-dired-delete-tag)
dd08291401af Rename "thumbnails" to "image-dired".
Chong Yidong <cyd@stupidchicken.com>
parents: 77394
diff changeset
1314 (define-key map "\C-tj" 'image-dired-jump-thumbnail-buffer)
dd08291401af Rename "thumbnails" to "image-dired".
Chong Yidong <cyd@stupidchicken.com>
parents: 77394
diff changeset
1315 (define-key map "\C-ti" 'image-dired-dired-display-image)
dd08291401af Rename "thumbnails" to "image-dired".
Chong Yidong <cyd@stupidchicken.com>
parents: 77394
diff changeset
1316 (define-key map "\C-tx" 'image-dired-dired-display-external)
dd08291401af Rename "thumbnails" to "image-dired".
Chong Yidong <cyd@stupidchicken.com>
parents: 77394
diff changeset
1317 (define-key map "\C-ta" 'image-dired-display-thumbs-append)
dd08291401af Rename "thumbnails" to "image-dired".
Chong Yidong <cyd@stupidchicken.com>
parents: 77394
diff changeset
1318 (define-key map "\C-t." 'image-dired-display-thumb)
dd08291401af Rename "thumbnails" to "image-dired".
Chong Yidong <cyd@stupidchicken.com>
parents: 77394
diff changeset
1319 (define-key map "\C-tc" 'image-dired-dired-comment-files)
dd08291401af Rename "thumbnails" to "image-dired".
Chong Yidong <cyd@stupidchicken.com>
parents: 77394
diff changeset
1320 (define-key map "\C-tf" 'image-dired-mark-tagged-files)
dd08291401af Rename "thumbnails" to "image-dired".
Chong Yidong <cyd@stupidchicken.com>
parents: 77394
diff changeset
1321 (define-key map "\C-t\C-t" 'image-dired-dired-insert-marked-thumbs)
dd08291401af Rename "thumbnails" to "image-dired".
Chong Yidong <cyd@stupidchicken.com>
parents: 77394
diff changeset
1322 (define-key map "\C-te" 'image-dired-dired-edit-comment-and-tags)
94417
1a8916b995cf * epa-file.el (auto-encryption-mode): Rename from epa-file-mode.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94145
diff changeset
1323 ;; encryption and decryption (epa-dired)
1a8916b995cf * epa-file.el (auto-encryption-mode): Rename from epa-file-mode.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94145
diff changeset
1324 (define-key map ":d" 'epa-dired-do-decrypt)
1a8916b995cf * epa-file.el (auto-encryption-mode): Rename from epa-file-mode.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94145
diff changeset
1325 (define-key map ":v" 'epa-dired-do-verify)
1a8916b995cf * epa-file.el (auto-encryption-mode): Rename from epa-file-mode.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94145
diff changeset
1326 (define-key map ":s" 'epa-dired-do-sign)
1a8916b995cf * epa-file.el (auto-encryption-mode): Rename from epa-file-mode.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94145
diff changeset
1327 (define-key map ":e" 'epa-dired-do-encrypt)
4099
b62687587309 (dired-mode-map): Add menu bar items.
Richard M. Stallman <rms@gnu.org>
parents: 3822
diff changeset
1328
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1329 ;; Make menu bar items.
4099
b62687587309 (dired-mode-map): Add menu bar items.
Richard M. Stallman <rms@gnu.org>
parents: 3822
diff changeset
1330
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1331 ;; No need to fo this, now that top-level items are fewer.
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1332 ;;;;
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1333 ;; Get rid of the Edit menu bar item to save space.
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1334 ;(define-key map [menu-bar edit] 'undefined)
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1335
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1336 (define-key map [menu-bar subdir]
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1337 (cons "Subdir" (make-sparse-keymap "Subdir")))
4099
b62687587309 (dired-mode-map): Add menu bar items.
Richard M. Stallman <rms@gnu.org>
parents: 3822
diff changeset
1338
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1339 (define-key map [menu-bar subdir hide-all]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1340 '(menu-item "Hide All" dired-hide-all
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1341 :help "Hide all subdirectories, leave only header lines"))
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1342 (define-key map [menu-bar subdir hide-subdir]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1343 '(menu-item "Hide/UnHide Subdir" dired-hide-subdir
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1344 :help "Hide or unhide current directory listing"))
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1345 (define-key map [menu-bar subdir tree-down]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1346 '(menu-item "Tree Down" dired-tree-down
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1347 :help "Go to first subdirectory header down the tree"))
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1348 (define-key map [menu-bar subdir tree-up]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1349 '(menu-item "Tree Up" dired-tree-up
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1350 :help "Go to first subdirectory header up the tree"))
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1351 (define-key map [menu-bar subdir up]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1352 '(menu-item "Up Directory" dired-up-directory
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1353 :help "Edit the parent directory"))
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1354 (define-key map [menu-bar subdir prev-subdir]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1355 '(menu-item "Prev Subdir" dired-prev-subdir
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1356 :help "Go to previous subdirectory header line"))
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1357 (define-key map [menu-bar subdir next-subdir]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1358 '(menu-item "Next Subdir" dired-next-subdir
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1359 :help "Go to next subdirectory header line"))
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1360 (define-key map [menu-bar subdir prev-dirline]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1361 '(menu-item "Prev Dirline" dired-prev-dirline
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1362 :help "Move to next directory-file line"))
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1363 (define-key map [menu-bar subdir next-dirline]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1364 '(menu-item "Next Dirline" dired-next-dirline
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1365 :help "Move to previous directory-file line"))
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1366 (define-key map [menu-bar subdir insert]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1367 '(menu-item "Insert This Subdir" dired-maybe-insert-subdir
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1368 :help "Insert contents of subdirectory"))
4099
b62687587309 (dired-mode-map): Add menu bar items.
Richard M. Stallman <rms@gnu.org>
parents: 3822
diff changeset
1369
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1370 (define-key map [menu-bar immediate]
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1371 (cons "Immediate" (make-sparse-keymap "Immediate")))
4099
b62687587309 (dired-mode-map): Add menu bar items.
Richard M. Stallman <rms@gnu.org>
parents: 3822
diff changeset
1372
70977
88e8184b9f87 (dired-mode-map): Move tumme commands to Operate,
Mathias Dahl <mathias.dahl@gmail.com>
parents: 70920
diff changeset
1373 (define-key map
94417
1a8916b995cf * epa-file.el (auto-encryption-mode): Rename from epa-file-mode.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94145
diff changeset
1374 [menu-bar immediate epa-dired-do-decrypt]
1a8916b995cf * epa-file.el (auto-encryption-mode): Rename from epa-file-mode.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94145
diff changeset
1375 '(menu-item "Decrypt" epa-dired-do-decrypt
1a8916b995cf * epa-file.el (auto-encryption-mode): Rename from epa-file-mode.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94145
diff changeset
1376 :help "Decrypt file at cursor"))
1a8916b995cf * epa-file.el (auto-encryption-mode): Rename from epa-file-mode.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94145
diff changeset
1377
1a8916b995cf * epa-file.el (auto-encryption-mode): Rename from epa-file-mode.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94145
diff changeset
1378 (define-key map
1a8916b995cf * epa-file.el (auto-encryption-mode): Rename from epa-file-mode.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94145
diff changeset
1379 [menu-bar immediate epa-dired-do-verify]
1a8916b995cf * epa-file.el (auto-encryption-mode): Rename from epa-file-mode.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94145
diff changeset
1380 '(menu-item "Verify" epa-dired-do-verify
1a8916b995cf * epa-file.el (auto-encryption-mode): Rename from epa-file-mode.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94145
diff changeset
1381 :help "Verify digital signature of file at cursor"))
1a8916b995cf * epa-file.el (auto-encryption-mode): Rename from epa-file-mode.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94145
diff changeset
1382
1a8916b995cf * epa-file.el (auto-encryption-mode): Rename from epa-file-mode.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94145
diff changeset
1383 (define-key map
1a8916b995cf * epa-file.el (auto-encryption-mode): Rename from epa-file-mode.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94145
diff changeset
1384 [menu-bar immediate epa-dired-do-sign]
1a8916b995cf * epa-file.el (auto-encryption-mode): Rename from epa-file-mode.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94145
diff changeset
1385 '(menu-item "Sign" epa-dired-do-sign
1a8916b995cf * epa-file.el (auto-encryption-mode): Rename from epa-file-mode.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94145
diff changeset
1386 :help "Create digital signature of file at cursor"))
1a8916b995cf * epa-file.el (auto-encryption-mode): Rename from epa-file-mode.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94145
diff changeset
1387
1a8916b995cf * epa-file.el (auto-encryption-mode): Rename from epa-file-mode.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94145
diff changeset
1388 (define-key map
1a8916b995cf * epa-file.el (auto-encryption-mode): Rename from epa-file-mode.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94145
diff changeset
1389 [menu-bar immediate epa-dired-do-encrypt]
1a8916b995cf * epa-file.el (auto-encryption-mode): Rename from epa-file-mode.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94145
diff changeset
1390 '(menu-item "Encrypt" epa-dired-do-encrypt
1a8916b995cf * epa-file.el (auto-encryption-mode): Rename from epa-file-mode.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94145
diff changeset
1391 :help "Encrypt file at cursor"))
1a8916b995cf * epa-file.el (auto-encryption-mode): Rename from epa-file-mode.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94145
diff changeset
1392
1a8916b995cf * epa-file.el (auto-encryption-mode): Rename from epa-file-mode.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94145
diff changeset
1393 (define-key map [menu-bar immediate dashes-4]
1a8916b995cf * epa-file.el (auto-encryption-mode): Rename from epa-file-mode.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94145
diff changeset
1394 '("--"))
1a8916b995cf * epa-file.el (auto-encryption-mode): Rename from epa-file-mode.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94145
diff changeset
1395
1a8916b995cf * epa-file.el (auto-encryption-mode): Rename from epa-file-mode.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94145
diff changeset
1396 (define-key map
77402
dd08291401af Rename "thumbnails" to "image-dired".
Chong Yidong <cyd@stupidchicken.com>
parents: 77394
diff changeset
1397 [menu-bar immediate image-dired-dired-display-external]
dd08291401af Rename "thumbnails" to "image-dired".
Chong Yidong <cyd@stupidchicken.com>
parents: 77394
diff changeset
1398 '(menu-item "Display Image Externally" image-dired-dired-display-external
70977
88e8184b9f87 (dired-mode-map): Move tumme commands to Operate,
Mathias Dahl <mathias.dahl@gmail.com>
parents: 70920
diff changeset
1399 :help "Display image in external viewer"))
88e8184b9f87 (dired-mode-map): Move tumme commands to Operate,
Mathias Dahl <mathias.dahl@gmail.com>
parents: 70920
diff changeset
1400 (define-key map
77402
dd08291401af Rename "thumbnails" to "image-dired".
Chong Yidong <cyd@stupidchicken.com>
parents: 77394
diff changeset
1401 [menu-bar immediate image-dired-dired-display-image]
dd08291401af Rename "thumbnails" to "image-dired".
Chong Yidong <cyd@stupidchicken.com>
parents: 77394
diff changeset
1402 '(menu-item "Display Image" image-dired-dired-display-image
70977
88e8184b9f87 (dired-mode-map): Move tumme commands to Operate,
Mathias Dahl <mathias.dahl@gmail.com>
parents: 70920
diff changeset
1403 :help "Display sized image in a separate window"))
88e8184b9f87 (dired-mode-map): Move tumme commands to Operate,
Mathias Dahl <mathias.dahl@gmail.com>
parents: 70920
diff changeset
1404
88e8184b9f87 (dired-mode-map): Move tumme commands to Operate,
Mathias Dahl <mathias.dahl@gmail.com>
parents: 70920
diff changeset
1405 (define-key map [menu-bar immediate dashes-4]
88e8184b9f87 (dired-mode-map): Move tumme commands to Operate,
Mathias Dahl <mathias.dahl@gmail.com>
parents: 70920
diff changeset
1406 '("--"))
88e8184b9f87 (dired-mode-map): Move tumme commands to Operate,
Mathias Dahl <mathias.dahl@gmail.com>
parents: 70920
diff changeset
1407
16090
cf84933860ed (dired-mode-map): Add revert-buffer to Immediate menu.
Richard M. Stallman <rms@gnu.org>
parents: 15944
diff changeset
1408 (define-key map [menu-bar immediate revert-buffer]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1409 '(menu-item "Refresh" revert-buffer
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1410 :help "Update contents of shown directories"))
16090
cf84933860ed (dired-mode-map): Add revert-buffer to Immediate menu.
Richard M. Stallman <rms@gnu.org>
parents: 15944
diff changeset
1411
cf84933860ed (dired-mode-map): Add revert-buffer to Immediate menu.
Richard M. Stallman <rms@gnu.org>
parents: 15944
diff changeset
1412 (define-key map [menu-bar immediate dashes]
cf84933860ed (dired-mode-map): Add revert-buffer to Immediate menu.
Richard M. Stallman <rms@gnu.org>
parents: 15944
diff changeset
1413 '("--"))
cf84933860ed (dired-mode-map): Add revert-buffer to Immediate menu.
Richard M. Stallman <rms@gnu.org>
parents: 15944
diff changeset
1414
97079
22b04404b5d5 (dired-insert-set-properties): Add new text property
Juri Linkov <juri@jurta.org>
parents: 97062
diff changeset
1415 (define-key map [menu-bar immediate isearch-filenames-regexp]
22b04404b5d5 (dired-insert-set-properties): Add new text property
Juri Linkov <juri@jurta.org>
parents: 97062
diff changeset
1416 '(menu-item "Isearch Regexp in File Names..." dired-isearch-filenames-regexp
22b04404b5d5 (dired-insert-set-properties): Add new text property
Juri Linkov <juri@jurta.org>
parents: 97062
diff changeset
1417 :help "Incrementally search for regexp in file names only"))
22b04404b5d5 (dired-insert-set-properties): Add new text property
Juri Linkov <juri@jurta.org>
parents: 97062
diff changeset
1418 (define-key map [menu-bar immediate isearch-filenames]
22b04404b5d5 (dired-insert-set-properties): Add new text property
Juri Linkov <juri@jurta.org>
parents: 97062
diff changeset
1419 '(menu-item "Isearch in File Names..." dired-isearch-filenames
22b04404b5d5 (dired-insert-set-properties): Add new text property
Juri Linkov <juri@jurta.org>
parents: 97062
diff changeset
1420 :help "Incrementally search for string in file names only."))
60893
a3d87fda9c16 (dired-mode-map): Add menu item "Compare directories"
Juri Linkov <juri@jurta.org>
parents: 60097
diff changeset
1421 (define-key map [menu-bar immediate compare-directories]
70984
2a033afe32cd * dired.el (dired-mode-map): Change `tumme-tag-remove' to
Mathias Dahl <mathias.dahl@gmail.com>
parents: 70981
diff changeset
1422 '(menu-item "Compare Directories..." dired-compare-directories
60893
a3d87fda9c16 (dired-mode-map): Add menu item "Compare directories"
Juri Linkov <juri@jurta.org>
parents: 60097
diff changeset
1423 :help "Mark files with different attributes in two dired buffers"))
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1424 (define-key map [menu-bar immediate backup-diff]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1425 '(menu-item "Compare with Backup" dired-backup-diff
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1426 :help "Diff file at cursor with its latest backup"))
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1427 (define-key map [menu-bar immediate diff]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1428 '(menu-item "Diff..." dired-diff
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1429 :help "Compare file at cursor with another file"))
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1430 (define-key map [menu-bar immediate view]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1431 '(menu-item "View This File" dired-view-file
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1432 :help "Examine file at cursor in read-only mode"))
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1433 (define-key map [menu-bar immediate display]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1434 '(menu-item "Display in Other Window" dired-display-file
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1435 :help "Display file at cursor in other window"))
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1436 (define-key map [menu-bar immediate find-file-other-window]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1437 '(menu-item "Find in Other Window" dired-find-file-other-window
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1438 :help "Edit file at cursor in other window"))
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1439 (define-key map [menu-bar immediate find-file]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1440 '(menu-item "Find This File" dired-find-file
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1441 :help "Edit file at cursor"))
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1442 (define-key map [menu-bar immediate create-directory]
94489
746622b8b8d4 (dired-mode-map): Add :help.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94485
diff changeset
1443 '(menu-item "Create Directory..." dired-create-directory
746622b8b8d4 (dired-mode-map): Add :help.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94485
diff changeset
1444 :help "Create a directory"))
55108
7b14aa2880ba (dired-mode-map): Add a menu entry for wdired.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55058
diff changeset
1445 (define-key map [menu-bar immediate wdired-mode]
82195
69abb81564e4 (dired-mode-map): Bind C-x C-q to dired-toggle-read-only.
Juri Linkov <juri@jurta.org>
parents: 82140
diff changeset
1446 '(menu-item "Edit File Names" wdired-change-to-wdired-mode
94489
746622b8b8d4 (dired-mode-map): Add :help.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94485
diff changeset
1447 :help "Put a dired buffer in a mode in which filenames are editable"
96920
3aa8d40c3218 * dired.el (dired-mode-map): Show the key binding for wdired.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96821
diff changeset
1448 :keys "C-x C-q"
82195
69abb81564e4 (dired-mode-map): Bind C-x C-q to dired-toggle-read-only.
Juri Linkov <juri@jurta.org>
parents: 82140
diff changeset
1449 :filter (lambda (x) (if (eq major-mode 'dired-mode) x))))
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1450
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1451 (define-key map [menu-bar regexp]
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1452 (cons "Regexp" (make-sparse-keymap "Regexp")))
4099
b62687587309 (dired-mode-map): Add menu bar items.
Richard M. Stallman <rms@gnu.org>
parents: 3822
diff changeset
1453
70977
88e8184b9f87 (dired-mode-map): Move tumme commands to Operate,
Mathias Dahl <mathias.dahl@gmail.com>
parents: 70920
diff changeset
1454 (define-key map
77402
dd08291401af Rename "thumbnails" to "image-dired".
Chong Yidong <cyd@stupidchicken.com>
parents: 77394
diff changeset
1455 [menu-bar regexp image-dired-mark-tagged-files]
dd08291401af Rename "thumbnails" to "image-dired".
Chong Yidong <cyd@stupidchicken.com>
parents: 77394
diff changeset
1456 '(menu-item "Mark From Image Tag..." image-dired-mark-tagged-files
77709
fe66dc682a15 (dired-recursive-deletes, dired-recursive-copies): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents: 77402
diff changeset
1457 :help "Mark files whose image tags matches regexp"))
fe66dc682a15 (dired-recursive-deletes, dired-recursive-copies): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents: 77402
diff changeset
1458
70977
88e8184b9f87 (dired-mode-map): Move tumme commands to Operate,
Mathias Dahl <mathias.dahl@gmail.com>
parents: 70920
diff changeset
1459 (define-key map [menu-bar regexp dashes-1]
77709
fe66dc682a15 (dired-recursive-deletes, dired-recursive-copies): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents: 77402
diff changeset
1460 '("--"))
70977
88e8184b9f87 (dired-mode-map): Move tumme commands to Operate,
Mathias Dahl <mathias.dahl@gmail.com>
parents: 70920
diff changeset
1461
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1462 (define-key map [menu-bar regexp downcase]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1463 '(menu-item "Downcase" dired-downcase
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1464 ;; When running on plain MS-DOS, there's only one
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1465 ;; letter-case for file names.
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1466 :enable (or (not (fboundp 'msdos-long-file-names))
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1467 (msdos-long-file-names))
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1468 :help "Rename marked files to lower-case name"))
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1469 (define-key map [menu-bar regexp upcase]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1470 '(menu-item "Upcase" dired-upcase
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1471 :enable (or (not (fboundp 'msdos-long-file-names))
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1472 (msdos-long-file-names))
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1473 :help "Rename marked files to upper-case name"))
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1474 (define-key map [menu-bar regexp hardlink]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1475 '(menu-item "Hardlink..." dired-do-hardlink-regexp
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1476 :help "Make hard links for files matching regexp"))
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1477 (define-key map [menu-bar regexp symlink]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1478 '(menu-item "Symlink..." dired-do-symlink-regexp
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1479 :visible (fboundp 'make-symbolic-link)
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1480 :help "Make symbolic links for files matching regexp"))
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1481 (define-key map [menu-bar regexp rename]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1482 '(menu-item "Rename..." dired-do-rename-regexp
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1483 :help "Rename marked files matching regexp"))
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1484 (define-key map [menu-bar regexp copy]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1485 '(menu-item "Copy..." dired-do-copy-regexp
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1486 :help "Copy marked files matching regexp"))
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1487 (define-key map [menu-bar regexp flag]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1488 '(menu-item "Flag..." dired-flag-files-regexp
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1489 :help "Flag files matching regexp for deletion"))
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1490 (define-key map [menu-bar regexp mark]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1491 '(menu-item "Mark..." dired-mark-files-regexp
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1492 :help "Mark files matching regexp for future operations"))
24023
4d7de66c650e (dired-mode-map): Fix duplicate [menu-bar regexp mark].
Dave Love <fx@gnu.org>
parents: 23230
diff changeset
1493 (define-key map [menu-bar regexp mark-cont]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1494 '(menu-item "Mark Containing..." dired-mark-files-containing-regexp
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1495 :help "Mark files whose contents matches regexp"))
4099
b62687587309 (dired-mode-map): Add menu bar items.
Richard M. Stallman <rms@gnu.org>
parents: 3822
diff changeset
1496
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1497 (define-key map [menu-bar mark]
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1498 (cons "Mark" (make-sparse-keymap "Mark")))
4099
b62687587309 (dired-mode-map): Add menu bar items.
Richard M. Stallman <rms@gnu.org>
parents: 3822
diff changeset
1499
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1500 (define-key map [menu-bar mark prev]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1501 '(menu-item "Previous Marked" dired-prev-marked-file
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1502 :help "Move to previous marked file"))
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1503 (define-key map [menu-bar mark next]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1504 '(menu-item "Next Marked" dired-next-marked-file
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1505 :help "Move to next marked file"))
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1506 (define-key map [menu-bar mark marks]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1507 '(menu-item "Change Marks..." dired-change-marks
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1508 :help "Replace marker with another character"))
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1509 (define-key map [menu-bar mark unmark-all]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1510 '(menu-item "Unmark All" dired-unmark-all-marks))
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1511 (define-key map [menu-bar mark symlinks]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1512 '(menu-item "Mark Symlinks" dired-mark-symlinks
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1513 :visible (fboundp 'make-symbolic-link)
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1514 :help "Mark all symbolic links"))
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1515 (define-key map [menu-bar mark directories]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1516 '(menu-item "Mark Directories" dired-mark-directories
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1517 :help "Mark all directories except `.' and `..'"))
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1518 (define-key map [menu-bar mark directory]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1519 '(menu-item "Mark Old Backups" dired-clean-directory
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1520 :help "Flag old numbered backups for deletion"))
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1521 (define-key map [menu-bar mark executables]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1522 '(menu-item "Mark Executables" dired-mark-executables
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1523 :help "Mark all executable files"))
16825
9ec806f8bbb7 (dired-garbage-files-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 16824
diff changeset
1524 (define-key map [menu-bar mark garbage-files]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1525 '(menu-item "Flag Garbage Files" dired-flag-garbage-files
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1526 :help "Flag unneeded files for deletion"))
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1527 (define-key map [menu-bar mark backup-files]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1528 '(menu-item "Flag Backup Files" dired-flag-backup-files
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1529 :help "Flag all backup files for deletion"))
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1530 (define-key map [menu-bar mark auto-save-files]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1531 '(menu-item "Flag Auto-save Files" dired-flag-auto-save-files
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1532 :help "Flag auto-save files for deletion"))
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1533 (define-key map [menu-bar mark deletion]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1534 '(menu-item "Flag" dired-flag-file-deletion
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1535 :help "Flag current line's file for deletion"))
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1536 (define-key map [menu-bar mark unmark]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1537 '(menu-item "Unmark" dired-unmark
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1538 :help "Unmark or unflag current line's file"))
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1539 (define-key map [menu-bar mark mark]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1540 '(menu-item "Mark" dired-mark
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1541 :help "Mark current line's file for future operations"))
20991
0cd10d49b777 (dired-do-toggle): Moved here from dired-x.el.
Karl Heuer <kwzh@gnu.org>
parents: 20953
diff changeset
1542 (define-key map [menu-bar mark toggle-marks]
44212
e87d819f2887 (dired-toggle-marks): Renamed from dired-do-toggle. Bindings changed.
Richard M. Stallman <rms@gnu.org>
parents: 44061
diff changeset
1543 '(menu-item "Toggle Marks" dired-toggle-marks
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1544 :help "Mark unmarked files, unmark marked ones"))
4099
b62687587309 (dired-mode-map): Add menu bar items.
Richard M. Stallman <rms@gnu.org>
parents: 3822
diff changeset
1545
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1546 (define-key map [menu-bar operate]
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1547 (cons "Operate" (make-sparse-keymap "Operate")))
4099
b62687587309 (dired-mode-map): Add menu bar items.
Richard M. Stallman <rms@gnu.org>
parents: 3822
diff changeset
1548
70977
88e8184b9f87 (dired-mode-map): Move tumme commands to Operate,
Mathias Dahl <mathias.dahl@gmail.com>
parents: 70920
diff changeset
1549 (define-key map
77402
dd08291401af Rename "thumbnails" to "image-dired".
Chong Yidong <cyd@stupidchicken.com>
parents: 77394
diff changeset
1550 [menu-bar operate image-dired-delete-tag]
dd08291401af Rename "thumbnails" to "image-dired".
Chong Yidong <cyd@stupidchicken.com>
parents: 77394
diff changeset
1551 '(menu-item "Delete Image Tag..." image-dired-delete-tag
70981
755bf4667ffb * dired.el (dired-mode-map): Change `tumme-tag-remove' to
Mathias Dahl <mathias.dahl@gmail.com>
parents: 70977
diff changeset
1552 :help "Delete image tag from current or marked files"))
70977
88e8184b9f87 (dired-mode-map): Move tumme commands to Operate,
Mathias Dahl <mathias.dahl@gmail.com>
parents: 70920
diff changeset
1553 (define-key map
77402
dd08291401af Rename "thumbnails" to "image-dired".
Chong Yidong <cyd@stupidchicken.com>
parents: 77394
diff changeset
1554 [menu-bar operate image-dired-tag-files]
dd08291401af Rename "thumbnails" to "image-dired".
Chong Yidong <cyd@stupidchicken.com>
parents: 77394
diff changeset
1555 '(menu-item "Add Image Tags..." image-dired-tag-files
70977
88e8184b9f87 (dired-mode-map): Move tumme commands to Operate,
Mathias Dahl <mathias.dahl@gmail.com>
parents: 70920
diff changeset
1556 :help "Add image tags to current or marked files"))
88e8184b9f87 (dired-mode-map): Move tumme commands to Operate,
Mathias Dahl <mathias.dahl@gmail.com>
parents: 70920
diff changeset
1557 (define-key map
77402
dd08291401af Rename "thumbnails" to "image-dired".
Chong Yidong <cyd@stupidchicken.com>
parents: 77394
diff changeset
1558 [menu-bar operate image-dired-dired-comment-files]
dd08291401af Rename "thumbnails" to "image-dired".
Chong Yidong <cyd@stupidchicken.com>
parents: 77394
diff changeset
1559 '(menu-item "Add Image Comment..." image-dired-dired-comment-files
70977
88e8184b9f87 (dired-mode-map): Move tumme commands to Operate,
Mathias Dahl <mathias.dahl@gmail.com>
parents: 70920
diff changeset
1560 :help "Add image comment to current or marked files"))
88e8184b9f87 (dired-mode-map): Move tumme commands to Operate,
Mathias Dahl <mathias.dahl@gmail.com>
parents: 70920
diff changeset
1561 (define-key map
77402
dd08291401af Rename "thumbnails" to "image-dired".
Chong Yidong <cyd@stupidchicken.com>
parents: 77394
diff changeset
1562 [menu-bar operate image-dired-display-thumbs]
96821
e1156184215a (dired-mode-map): Fix menu text of image-dired-display-thumbs.
Juri Linkov <juri@jurta.org>
parents: 95841
diff changeset
1563 '(menu-item "Display image thumbnails" image-dired-display-thumbs
e1156184215a (dired-mode-map): Fix menu text of image-dired-display-thumbs.
Juri Linkov <juri@jurta.org>
parents: 95841
diff changeset
1564 :help "Display image thumbnails for current or marked image files"))
77709
fe66dc682a15 (dired-recursive-deletes, dired-recursive-copies): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents: 77402
diff changeset
1565
70977
88e8184b9f87 (dired-mode-map): Move tumme commands to Operate,
Mathias Dahl <mathias.dahl@gmail.com>
parents: 70920
diff changeset
1566 (define-key map [menu-bar operate dashes-3]
77709
fe66dc682a15 (dired-recursive-deletes, dired-recursive-copies): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents: 77402
diff changeset
1567 '("--"))
70977
88e8184b9f87 (dired-mode-map): Move tumme commands to Operate,
Mathias Dahl <mathias.dahl@gmail.com>
parents: 70920
diff changeset
1568
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1569 (define-key map [menu-bar operate query-replace]
28937
2d65f0ae4167 (dired-mode-map): Use dired-do-query-replace-regexp.
Gerd Moellmann <gerd@gnu.org>
parents: 28737
diff changeset
1570 '(menu-item "Query Replace in Files..." dired-do-query-replace-regexp
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1571 :help "Replace regexp in marked files"))
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1572 (define-key map [menu-bar operate search]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1573 '(menu-item "Search Files..." dired-do-search
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1574 :help "Search marked files for regexp"))
97062
a84502b647f0 (dired-mode-map): Bind dired-do-isearch to `M-s a C-s'
Juri Linkov <juri@jurta.org>
parents: 96920
diff changeset
1575 (define-key map [menu-bar operate isearch-regexp]
a84502b647f0 (dired-mode-map): Bind dired-do-isearch to `M-s a C-s'
Juri Linkov <juri@jurta.org>
parents: 96920
diff changeset
1576 '(menu-item "Isearch Regexp Files..." dired-do-isearch-regexp
a84502b647f0 (dired-mode-map): Bind dired-do-isearch to `M-s a C-s'
Juri Linkov <juri@jurta.org>
parents: 96920
diff changeset
1577 :help "Incrementally search marked files for regexp"))
a84502b647f0 (dired-mode-map): Bind dired-do-isearch to `M-s a C-s'
Juri Linkov <juri@jurta.org>
parents: 96920
diff changeset
1578 (define-key map [menu-bar operate isearch]
a84502b647f0 (dired-mode-map): Bind dired-do-isearch to `M-s a C-s'
Juri Linkov <juri@jurta.org>
parents: 96920
diff changeset
1579 '(menu-item "Isearch Files..." dired-do-isearch
a84502b647f0 (dired-mode-map): Bind dired-do-isearch to `M-s a C-s'
Juri Linkov <juri@jurta.org>
parents: 96920
diff changeset
1580 :help "Incrementally search marked files for string"))
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1581 (define-key map [menu-bar operate chown]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1582 '(menu-item "Change Owner..." dired-do-chown
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1583 :visible (not (memq system-type '(ms-dos windows-nt)))
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1584 :help "Change the owner of marked files"))
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1585 (define-key map [menu-bar operate chgrp]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1586 '(menu-item "Change Group..." dired-do-chgrp
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1587 :visible (not (memq system-type '(ms-dos windows-nt)))
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1588 :help "Change the group of marked files"))
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1589 (define-key map [menu-bar operate chmod]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1590 '(menu-item "Change Mode..." dired-do-chmod
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1591 :help "Change mode (attributes) of marked files"))
54663
9b0161392fe1 Add autoload for `dired-do-touch'.
Juri Linkov <juri@jurta.org>
parents: 54661
diff changeset
1592 (define-key map [menu-bar operate touch]
9b0161392fe1 Add autoload for `dired-do-touch'.
Juri Linkov <juri@jurta.org>
parents: 54661
diff changeset
1593 '(menu-item "Change Timestamp..." dired-do-touch
9b0161392fe1 Add autoload for `dired-do-touch'.
Juri Linkov <juri@jurta.org>
parents: 54661
diff changeset
1594 :help "Change timestamp of marked files"))
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1595 (define-key map [menu-bar operate load]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1596 '(menu-item "Load" dired-do-load
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1597 :help "Load marked Emacs Lisp files"))
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1598 (define-key map [menu-bar operate compile]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1599 '(menu-item "Byte-compile" dired-do-byte-compile
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1600 :help "Byte-compile marked Emacs Lisp files"))
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1601 (define-key map [menu-bar operate compress]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1602 '(menu-item "Compress" dired-do-compress
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1603 :help "Compress/uncompress marked files"))
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1604 (define-key map [menu-bar operate print]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1605 '(menu-item "Print..." dired-do-print
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1606 :help "Ask for print command and print marked files"))
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1607 (define-key map [menu-bar operate hardlink]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1608 '(menu-item "Hardlink to..." dired-do-hardlink
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1609 :help "Make hard links for current or marked files"))
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1610 (define-key map [menu-bar operate symlink]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1611 '(menu-item "Symlink to..." dired-do-symlink
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1612 :visible (fboundp 'make-symbolic-link)
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1613 :help "Make symbolic links for current or marked files"))
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1614 (define-key map [menu-bar operate command]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1615 '(menu-item "Shell Command..." dired-do-shell-command
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1616 :help "Run a shell command on each of marked files"))
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1617 (define-key map [menu-bar operate delete]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1618 '(menu-item "Delete" dired-do-delete
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1619 :help "Delete current file or all marked files"))
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1620 (define-key map [menu-bar operate rename]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1621 '(menu-item "Rename to..." dired-do-rename
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1622 :help "Rename current file or move marked files"))
12801
f4e3e478c1b1 (dired-mode-map): Set up the map completely
Richard M. Stallman <rms@gnu.org>
parents: 12736
diff changeset
1623 (define-key map [menu-bar operate copy]
27840
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1624 '(menu-item "Copy to..." dired-do-copy
1e17908c52b8 (dired-mode-map): Don't remove "Edit" from the menu
Eli Zaretskii <eliz@gnu.org>
parents: 27784
diff changeset
1625 :help "Copy current file or all marked files"))
4099
b62687587309 (dired-mode-map): Add menu bar items.
Richard M. Stallman <rms@gnu.org>
parents: 3822
diff changeset
1626
54533
924fccad3acb (dired) <defgroup>: Add link to manual.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54512
diff changeset
1627 map)
924fccad3acb (dired) <defgroup>: Add link to manual.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54512
diff changeset
1628 "Local keymap for `dired-mode' buffers.")
35607
5b26cd3356a1 Revert last change.
Dave Love <fx@gnu.org>
parents: 35522
diff changeset
1629
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1630 ;; Dired mode is suitable only for specially formatted data.
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1631 (put 'dired-mode 'mode-class 'special)
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1632
64894
aee8ba4e5b1a Add handler to desktop-buffer-mode-handlers.
Lars Hansen <larsh@soem.dk>
parents: 64762
diff changeset
1633 ;; Autoload cookie needed by desktop.el
aee8ba4e5b1a Add handler to desktop-buffer-mode-handlers.
Lars Hansen <larsh@soem.dk>
parents: 64762
diff changeset
1634 ;;;###autoload
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1635 (defun dired-mode (&optional dirname switches)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1636 "\
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1637 Mode for \"editing\" directory listings.
40950
4bc87462585c Many trivial doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 40818
diff changeset
1638 In Dired, you are \"editing\" a list of the files in a directory and
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1639 \(optionally) its subdirectories, in the format of `ls -lR'.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1640 Each directory is a page: use \\[backward-page] and \\[forward-page] to move pagewise.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1641 \"Editing\" means that you can run shell commands on files, visit,
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1642 compress, load or byte-compile them, change their file attributes
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1643 and insert subdirectories into the same buffer. You can \"mark\"
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1644 files for later commands or \"flag\" them for deletion, either file
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1645 by file or all files matching certain criteria.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1646 You can move using the usual cursor motion commands.\\<dired-mode-map>
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1647 Letters no longer insert themselves. Digits are prefix arguments.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1648 Instead, type \\[dired-flag-file-deletion] to flag a file for Deletion.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1649 Type \\[dired-mark] to Mark a file or subdirectory for later commands.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1650 Most commands operate on the marked files and use the current file
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1651 if no files are marked. Use a numeric prefix argument to operate on
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1652 the next ARG (or previous -ARG if ARG<0) files, or just `1'
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1653 to operate on the current file only. Prefix arguments override marks.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1654 Mark-using commands display a list of failures afterwards. Type \\[dired-summary]
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1655 to see why something went wrong.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1656 Type \\[dired-unmark] to Unmark a file or all files of a subdirectory.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1657 Type \\[dired-unmark-backward] to back up one line and unflag.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1658 Type \\[dired-do-flagged-delete] to eXecute the deletions requested.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1659 Type \\[dired-advertised-find-file] to Find the current line's file
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1660 (or dired it in another buffer, if it is a directory).
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1661 Type \\[dired-find-file-other-window] to find file or dired directory in Other window.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1662 Type \\[dired-maybe-insert-subdir] to Insert a subdirectory in this buffer.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1663 Type \\[dired-do-rename] to Rename a file or move the marked files to another directory.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1664 Type \\[dired-do-copy] to Copy files.
64531
733da358f853 (dired-align-file, dired-flag-backup-files, dired-change-marks,
Juanma Barranquero <lekktu@gmail.com>
parents: 64442
diff changeset
1665 Type \\[dired-sort-toggle-or-edit] to toggle Sorting by name/date or change the `ls' switches.
733da358f853 (dired-align-file, dired-flag-backup-files, dired-change-marks,
Juanma Barranquero <lekktu@gmail.com>
parents: 64442
diff changeset
1666 Type \\[revert-buffer] to read all currently expanded directories aGain.
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1667 This retains all marks and hides subdirs again that were hidden before.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1668 SPC and DEL can be used to move down and up by lines.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1669
64531
733da358f853 (dired-align-file, dired-flag-backup-files, dired-change-marks,
Juanma Barranquero <lekktu@gmail.com>
parents: 64442
diff changeset
1670 If Dired ever gets confused, you can either type \\[revert-buffer] \
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1671 to read the
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1672 directories again, type \\[dired-do-redisplay] \
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1673 to relist a single or the marked files or a
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1674 subdirectory, or type \\[dired-build-subdir-alist] to parse the buffer
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1675 again for the directory tree.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1676
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1677 Customization variables (rename this buffer and type \\[describe-variable] on each line
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1678 for more info):
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1679
58412
b9a1c1b8d195 (dired-align-file): Don't assume line starts with spaces.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57943
diff changeset
1680 `dired-listing-switches'
b9a1c1b8d195 (dired-align-file): Don't assume line starts with spaces.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57943
diff changeset
1681 `dired-trivial-filenames'
b9a1c1b8d195 (dired-align-file): Don't assume line starts with spaces.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57943
diff changeset
1682 `dired-shrink-to-fit'
b9a1c1b8d195 (dired-align-file): Don't assume line starts with spaces.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57943
diff changeset
1683 `dired-marker-char'
b9a1c1b8d195 (dired-align-file): Don't assume line starts with spaces.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57943
diff changeset
1684 `dired-del-marker'
b9a1c1b8d195 (dired-align-file): Don't assume line starts with spaces.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57943
diff changeset
1685 `dired-keep-marker-rename'
b9a1c1b8d195 (dired-align-file): Don't assume line starts with spaces.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57943
diff changeset
1686 `dired-keep-marker-copy'
b9a1c1b8d195 (dired-align-file): Don't assume line starts with spaces.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57943
diff changeset
1687 `dired-keep-marker-hardlink'
b9a1c1b8d195 (dired-align-file): Don't assume line starts with spaces.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57943
diff changeset
1688 `dired-keep-marker-symlink'
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1689
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1690 Hooks (use \\[describe-variable] to see their documentation):
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1691
58412
b9a1c1b8d195 (dired-align-file): Don't assume line starts with spaces.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57943
diff changeset
1692 `dired-before-readin-hook'
b9a1c1b8d195 (dired-align-file): Don't assume line starts with spaces.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57943
diff changeset
1693 `dired-after-readin-hook'
b9a1c1b8d195 (dired-align-file): Don't assume line starts with spaces.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57943
diff changeset
1694 `dired-mode-hook'
b9a1c1b8d195 (dired-align-file): Don't assume line starts with spaces.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57943
diff changeset
1695 `dired-load-hook'
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1696
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1697 Keybindings:
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1698 \\{dired-mode-map}"
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1699 ;; Not to be called interactively (e.g. dired-directory will be set
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1700 ;; to default-directory, which is wrong with wildcards).
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1701 (kill-all-local-variables)
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1702 (use-local-map dired-mode-map)
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1703 (dired-advertise) ; default-directory is already set
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1704 (setq major-mode 'dired-mode
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1705 mode-name "Dired"
58412
b9a1c1b8d195 (dired-align-file): Don't assume line starts with spaces.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57943
diff changeset
1706 ;; case-fold-search nil
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1707 buffer-read-only t
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1708 selective-display t ; for subdirectory hiding
27784
c27b002e4491 (dired-mode): Call propertized-buffer-identification to
Gerd Moellmann <gerd@gnu.org>
parents: 27051
diff changeset
1709 mode-line-buffer-identification
c27b002e4491 (dired-mode): Call propertized-buffer-identification to
Gerd Moellmann <gerd@gnu.org>
parents: 27051
diff changeset
1710 (propertized-buffer-identification "%17b"))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1711 (set (make-local-variable 'revert-buffer-function)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1712 (function dired-revert))
54512
1042cb3d696b (dired-directory-changed-p, dired-buffer-stale-p): New functions.
Luc Teirlinck <teirllm@auburn.edu>
parents: 53789
diff changeset
1713 (set (make-local-variable 'buffer-stale-function)
1042cb3d696b (dired-directory-changed-p, dired-buffer-stale-p): New functions.
Luc Teirlinck <teirllm@auburn.edu>
parents: 53789
diff changeset
1714 (function dired-buffer-stale-p))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1715 (set (make-local-variable 'page-delimiter)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1716 "\n\n")
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1717 (set (make-local-variable 'dired-directory)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1718 (or dirname default-directory))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1719 ;; list-buffers uses this to display the dir being edited in this buffer.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1720 (set (make-local-variable 'list-buffers-directory)
52706
7ba748e3346e (dired-mode): Handle dired-directory as a list.
Richard M. Stallman <rms@gnu.org>
parents: 52488
diff changeset
1721 (expand-file-name (if (listp dired-directory)
7ba748e3346e (dired-mode): Handle dired-directory as a list.
Richard M. Stallman <rms@gnu.org>
parents: 52488
diff changeset
1722 (car dired-directory)
7ba748e3346e (dired-mode): Handle dired-directory as a list.
Richard M. Stallman <rms@gnu.org>
parents: 52488
diff changeset
1723 dired-directory)))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1724 (set (make-local-variable 'dired-actual-switches)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1725 (or switches dired-listing-switches))
54533
924fccad3acb (dired) <defgroup>: Add link to manual.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54512
diff changeset
1726 (set (make-local-variable 'font-lock-defaults)
924fccad3acb (dired) <defgroup>: Add link to manual.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54512
diff changeset
1727 '(dired-font-lock-keywords t nil nil beginning-of-line))
55154
9752700e4860 (dired-mode): Rename desktop-buffer-misc-data-function to desktop-save-buffer.
Lars Hansen <larsh@soem.dk>
parents: 55108
diff changeset
1728 (set (make-local-variable 'desktop-save-buffer)
55058
053797c3d447 (dired-restore-desktop-buffer) Move from desktop.el. Add parameters.
Lars Hansen <larsh@soem.dk>
parents: 54780
diff changeset
1729 'dired-desktop-buffer-misc-data)
55937
0edea1c45ca9 (dired-subdir-switches, dired-switches-alist): New vars.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55862
diff changeset
1730 (setq dired-switches-alist nil)
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1731 (dired-sort-other dired-actual-switches t)
61478
ca956f06ae9e * dired.el (dired-mode): Use dnd-* instead of x-dnd-*
Jan Djärv <jan.h.d@swipnet.se>
parents: 61296
diff changeset
1732 (when (featurep 'dnd)
62439
af763a03ded2 (dired-mode): Simplify.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 62373
diff changeset
1733 (set (make-local-variable 'dnd-protocol-alist)
af763a03ded2 (dired-mode): Simplify.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 62373
diff changeset
1734 (append dired-dnd-protocol-alist dnd-protocol-alist)))
97079
22b04404b5d5 (dired-insert-set-properties): Add new text property
Juri Linkov <juri@jurta.org>
parents: 97062
diff changeset
1735 (add-hook 'isearch-mode-hook 'dired-isearch-filenames-setup nil t)
62240
19d278c4224b * dnd.el (dnd-protocol-alist): Improve custom type.
Reiner Steib <Reiner.Steib@gmx.de>
parents: 61478
diff changeset
1736 (run-mode-hooks 'dired-mode-hook))
35607
5b26cd3356a1 Revert last change.
Dave Love <fx@gnu.org>
parents: 35522
diff changeset
1737
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3580
diff changeset
1738 ;; Idiosyncratic dired commands that don't deal with marks.
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1739
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1740 (defun dired-summary ()
64531
733da358f853 (dired-align-file, dired-flag-backup-files, dired-change-marks,
Juanma Barranquero <lekktu@gmail.com>
parents: 64442
diff changeset
1741 "Summarize basic Dired commands and show recent dired errors."
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1742 (interactive)
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1743 (dired-why)
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1744 ;>> this should check the key-bindings and use substitute-command-keys if non-standard
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1745 (message
3822
242b72c42f33 * dired.el (dired-summary): dired-do-rename is on "R", not "r".
Jim Blandy <jimb@redhat.com>
parents: 3737
diff changeset
1746 "d-elete, u-ndelete, x-punge, f-ind, o-ther window, R-ename, C-opy, h-elp"))
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1747
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1748 (defun dired-undo ()
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1749 "Undo in a dired buffer.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1750 This doesn't recover lost files, it just undoes changes in the buffer itself.
55970
58340ec919e5 (dired-undo): Call `dired-build-subdir-alist'.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55937
diff changeset
1751 You can use it to recover marks, killed lines or subdirs."
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1752 (interactive)
94889
e80a3956601b (dired-read-dir-and-switches): Ignore ., .., and
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
1753 (let ((inhibit-read-only t))
55970
58340ec919e5 (dired-undo): Call `dired-build-subdir-alist'.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55937
diff changeset
1754 (undo))
58340ec919e5 (dired-undo): Call `dired-build-subdir-alist'.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55937
diff changeset
1755 (dired-build-subdir-alist)
64531
733da358f853 (dired-align-file, dired-flag-backup-files, dired-change-marks,
Juanma Barranquero <lekktu@gmail.com>
parents: 64442
diff changeset
1756 (message "Change in dired buffer undone.
55970
58340ec919e5 (dired-undo): Call `dired-build-subdir-alist'.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55937
diff changeset
1757 Actual changes in files cannot be undone by Emacs."))
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1758
82195
69abb81564e4 (dired-mode-map): Bind C-x C-q to dired-toggle-read-only.
Juri Linkov <juri@jurta.org>
parents: 82140
diff changeset
1759 (defun dired-toggle-read-only ()
69abb81564e4 (dired-mode-map): Bind C-x C-q to dired-toggle-read-only.
Juri Linkov <juri@jurta.org>
parents: 82140
diff changeset
1760 "Edit dired buffer with Wdired, or set it read-only.
69abb81564e4 (dired-mode-map): Bind C-x C-q to dired-toggle-read-only.
Juri Linkov <juri@jurta.org>
parents: 82140
diff changeset
1761 Call `wdired-change-to-wdired-mode' in dired buffers whose editing is
69abb81564e4 (dired-mode-map): Bind C-x C-q to dired-toggle-read-only.
Juri Linkov <juri@jurta.org>
parents: 82140
diff changeset
1762 supported by Wdired (the major mode of the dired buffer is `dired-mode').
69abb81564e4 (dired-mode-map): Bind C-x C-q to dired-toggle-read-only.
Juri Linkov <juri@jurta.org>
parents: 82140
diff changeset
1763 Otherwise, for buffers inheriting from dired-mode, call `toggle-read-only'."
69abb81564e4 (dired-mode-map): Bind C-x C-q to dired-toggle-read-only.
Juri Linkov <juri@jurta.org>
parents: 82140
diff changeset
1764 (interactive)
69abb81564e4 (dired-mode-map): Bind C-x C-q to dired-toggle-read-only.
Juri Linkov <juri@jurta.org>
parents: 82140
diff changeset
1765 (if (eq major-mode 'dired-mode)
69abb81564e4 (dired-mode-map): Bind C-x C-q to dired-toggle-read-only.
Juri Linkov <juri@jurta.org>
parents: 82140
diff changeset
1766 (wdired-change-to-wdired-mode)
69abb81564e4 (dired-mode-map): Bind C-x C-q to dired-toggle-read-only.
Juri Linkov <juri@jurta.org>
parents: 82140
diff changeset
1767 (toggle-read-only)))
69abb81564e4 (dired-mode-map): Bind C-x C-q to dired-toggle-read-only.
Juri Linkov <juri@jurta.org>
parents: 82140
diff changeset
1768
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1769 (defun dired-next-line (arg)
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1770 "Move down lines then position at filename.
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1771 Optional prefix ARG says how many lines to move; default is one line."
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1772 (interactive "p")
85406
25e29d02bb55 (dired-next-line, dired-previous-line): Use forward-line.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 85311
diff changeset
1773 (forward-line arg)
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1774 (dired-move-to-filename))
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1775
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1776 (defun dired-previous-line (arg)
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1777 "Move up lines then position at filename.
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1778 Optional prefix ARG says how many lines to move; default is one line."
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1779 (interactive "p")
85406
25e29d02bb55 (dired-next-line, dired-previous-line): Use forward-line.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 85311
diff changeset
1780 (forward-line (- arg))
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1781 (dired-move-to-filename))
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1782
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1783 (defun dired-next-dirline (arg &optional opoint)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1784 "Goto ARG'th next directory file line."
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1785 (interactive "p")
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1786 (or opoint (setq opoint (point)))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1787 (if (if (> arg 0)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1788 (re-search-forward dired-re-dir nil t arg)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1789 (beginning-of-line)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1790 (re-search-backward dired-re-dir nil t (- arg)))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1791 (dired-move-to-filename) ; user may type `i' or `f'
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1792 (goto-char opoint)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1793 (error "No more subdirectories")))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1794
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1795 (defun dired-prev-dirline (arg)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1796 "Goto ARG'th previous directory file line."
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1797 (interactive "p")
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1798 (dired-next-dirline (- arg)))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1799
13033
216edf9576ea (dired-up-directory): Add optional argument `other-window' to obviate
Erik Naggum <erik@naggum.no>
parents: 13010
diff changeset
1800 (defun dired-up-directory (&optional other-window)
40950
4bc87462585c Many trivial doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 40818
diff changeset
1801 "Run Dired on parent directory of current directory.
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1802 Find the parent directory either in this buffer or another buffer.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1803 Creates a buffer if necessary."
13033
216edf9576ea (dired-up-directory): Add optional argument `other-window' to obviate
Erik Naggum <erik@naggum.no>
parents: 13010
diff changeset
1804 (interactive "P")
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1805 (let* ((dir (dired-current-directory))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1806 (up (file-name-directory (directory-file-name dir))))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1807 (or (dired-goto-file (directory-file-name dir))
1170
54a44b2b9591 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1130
diff changeset
1808 ;; Only try dired-goto-subdir if buffer has more than one dir.
54a44b2b9591 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1130
diff changeset
1809 (and (cdr dired-subdir-alist)
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1810 (dired-goto-subdir up))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1811 (progn
13033
216edf9576ea (dired-up-directory): Add optional argument `other-window' to obviate
Erik Naggum <erik@naggum.no>
parents: 13010
diff changeset
1812 (if other-window
216edf9576ea (dired-up-directory): Add optional argument `other-window' to obviate
Erik Naggum <erik@naggum.no>
parents: 13010
diff changeset
1813 (dired-other-window up)
216edf9576ea (dired-up-directory): Add optional argument `other-window' to obviate
Erik Naggum <erik@naggum.no>
parents: 13010
diff changeset
1814 (dired up))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1815 (dired-goto-file dir)))))
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1816
40950
4bc87462585c Many trivial doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 40818
diff changeset
1817 (defun dired-get-file-for-visit ()
4bc87462585c Many trivial doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 40818
diff changeset
1818 "Get the current line's file name, with an error if file does not exist."
17988
2e732d9d5b79 (dired-find-file): Likewise.
Kenichi Handa <handa@m17n.org>
parents: 17944
diff changeset
1819 (interactive)
51444
b53bffc0cbaf (dired-get-filename): Err for . and .. in usual case.
Richard M. Stallman <rms@gnu.org>
parents: 50831
diff changeset
1820 ;; We pass t for second arg so that we don't get error for `.' and `..'.
b53bffc0cbaf (dired-get-filename): Err for . and .. in usual case.
Richard M. Stallman <rms@gnu.org>
parents: 50831
diff changeset
1821 (let ((raw (dired-get-filename nil t))
b53bffc0cbaf (dired-get-filename): Err for . and .. in usual case.
Richard M. Stallman <rms@gnu.org>
parents: 50831
diff changeset
1822 file-name)
b53bffc0cbaf (dired-get-filename): Err for . and .. in usual case.
Richard M. Stallman <rms@gnu.org>
parents: 50831
diff changeset
1823 (if (null raw)
b53bffc0cbaf (dired-get-filename): Err for . and .. in usual case.
Richard M. Stallman <rms@gnu.org>
parents: 50831
diff changeset
1824 (error "No file on this line"))
b53bffc0cbaf (dired-get-filename): Err for . and .. in usual case.
Richard M. Stallman <rms@gnu.org>
parents: 50831
diff changeset
1825 (setq file-name (file-name-sans-versions raw t))
16490
92289a4265ed (dired-find-file): Error if line's file does not exist.
Richard M. Stallman <rms@gnu.org>
parents: 16457
diff changeset
1826 (if (file-exists-p file-name)
40950
4bc87462585c Many trivial doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 40818
diff changeset
1827 file-name
18824
41c3ad77f90a (dired-find-file): Better error message
Richard M. Stallman <rms@gnu.org>
parents: 18160
diff changeset
1828 (if (file-symlink-p file-name)
41c3ad77f90a (dired-find-file): Better error message
Richard M. Stallman <rms@gnu.org>
parents: 18160
diff changeset
1829 (error "File is a symlink to a nonexistent target")
64531
733da358f853 (dired-align-file, dired-flag-backup-files, dired-change-marks,
Juanma Barranquero <lekktu@gmail.com>
parents: 64442
diff changeset
1830 (error "File no longer exists; type `g' to update dired buffer")))))
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1831
40950
4bc87462585c Many trivial doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 40818
diff changeset
1832 ;; Force `f' rather than `e' in the mode doc:
4bc87462585c Many trivial doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 40818
diff changeset
1833 (defalias 'dired-advertised-find-file 'dired-find-file)
4bc87462585c Many trivial doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 40818
diff changeset
1834 (defun dired-find-file ()
4bc87462585c Many trivial doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 40818
diff changeset
1835 "In Dired, visit the file or directory named on this line."
4bc87462585c Many trivial doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 40818
diff changeset
1836 (interactive)
51498
031a70df49c9 (dired-get-filename): Don't err for . and .. for calls from dired-add-entry.
Juanma Barranquero <lekktu@gmail.com>
parents: 51444
diff changeset
1837 ;; Bind `find-file-run-dired' so that the command works on directories
50831
5565e45852d3 (dired-find-file): Bind find-file-run-dired around the call to find-file.
Richard M. Stallman <rms@gnu.org>
parents: 50464
diff changeset
1838 ;; too, independent of the user's setting.
5565e45852d3 (dired-find-file): Bind find-file-run-dired around the call to find-file.
Richard M. Stallman <rms@gnu.org>
parents: 50464
diff changeset
1839 (let ((find-file-run-dired t))
5565e45852d3 (dired-find-file): Bind find-file-run-dired around the call to find-file.
Richard M. Stallman <rms@gnu.org>
parents: 50464
diff changeset
1840 (find-file (dired-get-file-for-visit))))
40950
4bc87462585c Many trivial doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 40818
diff changeset
1841
30108
d78375eda4e8 (dired-find-alternate-file): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 28966
diff changeset
1842 (defun dired-find-alternate-file ()
40950
4bc87462585c Many trivial doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 40818
diff changeset
1843 "In Dired, visit this file or directory instead of the dired buffer."
30108
d78375eda4e8 (dired-find-alternate-file): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 28966
diff changeset
1844 (interactive)
d78375eda4e8 (dired-find-alternate-file): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 28966
diff changeset
1845 (set-buffer-modified-p nil)
40950
4bc87462585c Many trivial doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 40818
diff changeset
1846 (find-alternate-file (dired-get-file-for-visit)))
46789
cf99f76fc3d4 Add comment for last change.
Andreas Schwab <schwab@suse.de>
parents: 46759
diff changeset
1847 ;; Don't override the setting from .emacs.
46759
6e0e9800f72c Hide disabling of dired-find-alternate-file behind
Andreas Schwab <schwab@suse.de>
parents: 46086
diff changeset
1848 ;;;###autoload (put 'dired-find-alternate-file 'disabled t)
30108
d78375eda4e8 (dired-find-alternate-file): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 28966
diff changeset
1849
6594
bca9e6c8a07f (dired-mouse-find-file-other-window): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6309
diff changeset
1850 (defun dired-mouse-find-file-other-window (event)
40950
4bc87462585c Many trivial doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 40818
diff changeset
1851 "In Dired, visit the file or directory name you click on."
6594
bca9e6c8a07f (dired-mouse-find-file-other-window): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6309
diff changeset
1852 (interactive "e")
44764
2e019a1ff633 (dired-mouse-find-file-other-window):
Richard M. Stallman <rms@gnu.org>
parents: 44475
diff changeset
1853 (let (window pos file)
6594
bca9e6c8a07f (dired-mouse-find-file-other-window): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6309
diff changeset
1854 (save-excursion
44764
2e019a1ff633 (dired-mouse-find-file-other-window):
Richard M. Stallman <rms@gnu.org>
parents: 44475
diff changeset
1855 (setq window (posn-window (event-end event))
2e019a1ff633 (dired-mouse-find-file-other-window):
Richard M. Stallman <rms@gnu.org>
parents: 44475
diff changeset
1856 pos (posn-point (event-end event)))
2e019a1ff633 (dired-mouse-find-file-other-window):
Richard M. Stallman <rms@gnu.org>
parents: 44475
diff changeset
1857 (if (not (windowp window))
2e019a1ff633 (dired-mouse-find-file-other-window):
Richard M. Stallman <rms@gnu.org>
parents: 44475
diff changeset
1858 (error "No file chosen"))
2e019a1ff633 (dired-mouse-find-file-other-window):
Richard M. Stallman <rms@gnu.org>
parents: 44475
diff changeset
1859 (set-buffer (window-buffer window))
2e019a1ff633 (dired-mouse-find-file-other-window):
Richard M. Stallman <rms@gnu.org>
parents: 44475
diff changeset
1860 (goto-char pos)
2e019a1ff633 (dired-mouse-find-file-other-window):
Richard M. Stallman <rms@gnu.org>
parents: 44475
diff changeset
1861 (setq file (dired-get-file-for-visit)))
52369
5e02293b946b (dired-mouse-find-file-other-window):
Richard M. Stallman <rms@gnu.org>
parents: 51846
diff changeset
1862 (if (file-directory-p file)
5e02293b946b (dired-mouse-find-file-other-window):
Richard M. Stallman <rms@gnu.org>
parents: 51846
diff changeset
1863 (or (and (cdr dired-subdir-alist)
5e02293b946b (dired-mouse-find-file-other-window):
Richard M. Stallman <rms@gnu.org>
parents: 51846
diff changeset
1864 (dired-goto-subdir file))
5e02293b946b (dired-mouse-find-file-other-window):
Richard M. Stallman <rms@gnu.org>
parents: 51846
diff changeset
1865 (progn
5e02293b946b (dired-mouse-find-file-other-window):
Richard M. Stallman <rms@gnu.org>
parents: 51846
diff changeset
1866 (select-window window)
5e02293b946b (dired-mouse-find-file-other-window):
Richard M. Stallman <rms@gnu.org>
parents: 51846
diff changeset
1867 (dired-other-window file)))
59279
565c4724abdc (dired-view-command-alist): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 59024
diff changeset
1868 (select-window window)
565c4724abdc (dired-view-command-alist): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 59024
diff changeset
1869 (find-file-other-window (file-name-sans-versions file t)))))
44475
9cab12e7e72a (dired-view-command-alist): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 44234
diff changeset
1870
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1871 (defun dired-view-file ()
64531
733da358f853 (dired-align-file, dired-flag-backup-files, dired-change-marks,
Juanma Barranquero <lekktu@gmail.com>
parents: 64442
diff changeset
1872 "In Dired, examine a file in view mode, returning to Dired when done.
44475
9cab12e7e72a (dired-view-command-alist): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 44234
diff changeset
1873 When file is a directory, show it in this buffer if it is inserted.
59279
565c4724abdc (dired-view-command-alist): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 59024
diff changeset
1874 Otherwise, display it in another buffer."
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1875 (interactive)
40950
4bc87462585c Many trivial doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 40818
diff changeset
1876 (let ((file (dired-get-file-for-visit)))
4bc87462585c Many trivial doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 40818
diff changeset
1877 (if (file-directory-p file)
4bc87462585c Many trivial doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 40818
diff changeset
1878 (or (and (cdr dired-subdir-alist)
4bc87462585c Many trivial doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 40818
diff changeset
1879 (dired-goto-subdir file))
4bc87462585c Many trivial doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 40818
diff changeset
1880 (dired file))
59279
565c4724abdc (dired-view-command-alist): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 59024
diff changeset
1881 (view-file file))))
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1882
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1883 (defun dired-find-file-other-window ()
40950
4bc87462585c Many trivial doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 40818
diff changeset
1884 "In Dired, visit this file or directory in another window."
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1885 (interactive)
40950
4bc87462585c Many trivial doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 40818
diff changeset
1886 (find-file-other-window (dired-get-file-for-visit)))
878
5b1c5b4286e7 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 834
diff changeset
1887
5b1c5b4286e7 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 834
diff changeset
1888 (defun dired-display-file ()
40950
4bc87462585c Many trivial doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 40818
diff changeset
1889 "In Dired, display this file or directory in another window."
878
5b1c5b4286e7 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 834
diff changeset
1890 (interactive)
40950
4bc87462585c Many trivial doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 40818
diff changeset
1891 (display-buffer (find-file-noselect (dired-get-file-for-visit))))
35607
5b26cd3356a1 Revert last change.
Dave Love <fx@gnu.org>
parents: 35522
diff changeset
1892
40950
4bc87462585c Many trivial doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 40818
diff changeset
1893 ;;; Functions for extracting and manipulating file names in Dired buffers.
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1894
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1895 (defun dired-get-filename (&optional localp no-error-if-not-filep)
40950
4bc87462585c Many trivial doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 40818
diff changeset
1896 "In Dired, return name of file mentioned on this line.
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1897 Value returned normally includes the directory name.
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1898 Optional arg LOCALP with value `no-dir' means don't include directory
51539
244cba9fc534 (dired-re-dot): Make it handle trailing /.
Luc Teirlinck <teirllm@auburn.edu>
parents: 51531
diff changeset
1899 name in result. A value of `verbatim' means to return the name exactly as
244cba9fc534 (dired-re-dot): Make it handle trailing /.
Luc Teirlinck <teirllm@auburn.edu>
parents: 51531
diff changeset
1900 it occurs in the buffer, and a value of t means construct name relative to
244cba9fc534 (dired-re-dot): Make it handle trailing /.
Luc Teirlinck <teirllm@auburn.edu>
parents: 51531
diff changeset
1901 `default-directory', which still may contain slashes if in a subdirectory.
244cba9fc534 (dired-re-dot): Make it handle trailing /.
Luc Teirlinck <teirllm@auburn.edu>
parents: 51531
diff changeset
1902 Optional arg NO-ERROR-IF-NOT-FILEP means treat `.' and `..' as
244cba9fc534 (dired-re-dot): Make it handle trailing /.
Luc Teirlinck <teirllm@auburn.edu>
parents: 51531
diff changeset
1903 regular filenames and return nil if no filename on this line.
244cba9fc534 (dired-re-dot): Make it handle trailing /.
Luc Teirlinck <teirllm@auburn.edu>
parents: 51531
diff changeset
1904 Otherwise, an error occurs in these cases."
26914
09c7b74fa57f * ls-lisp.el (ls-lisp-insert-directory): Print an explicit message
Eli Zaretskii <eliz@gnu.org>
parents: 26120
diff changeset
1905 (let (case-fold-search file p1 p2 already-absolute)
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1906 (save-excursion
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1907 (if (setq p1 (dired-move-to-filename (not no-error-if-not-filep)))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1908 (setq p2 (dired-move-to-end-of-filename no-error-if-not-filep))))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1909 ;; nil if no file on this line, but no-error-if-not-filep is t:
10126
b4262885826e (dired-insert-directory): Quote certain chars with \.
Richard M. Stallman <rms@gnu.org>
parents: 9673
diff changeset
1910 (if (setq file (and p1 p2 (buffer-substring p1 p2)))
b4262885826e (dired-insert-directory): Quote certain chars with \.
Richard M. Stallman <rms@gnu.org>
parents: 9673
diff changeset
1911 (progn
b4262885826e (dired-insert-directory): Quote certain chars with \.
Richard M. Stallman <rms@gnu.org>
parents: 9673
diff changeset
1912 ;; Get rid of the mouse-face property that file names have.
b4262885826e (dired-insert-directory): Quote certain chars with \.
Richard M. Stallman <rms@gnu.org>
parents: 9673
diff changeset
1913 (set-text-properties 0 (length file) nil file)
b4262885826e (dired-insert-directory): Quote certain chars with \.
Richard M. Stallman <rms@gnu.org>
parents: 9673
diff changeset
1914 ;; Unquote names quoted by ls or by dired-insert-directory.
b4262885826e (dired-insert-directory): Quote certain chars with \.
Richard M. Stallman <rms@gnu.org>
parents: 9673
diff changeset
1915 ;; Using read to unquote is much faster than substituting
b4262885826e (dired-insert-directory): Quote certain chars with \.
Richard M. Stallman <rms@gnu.org>
parents: 9673
diff changeset
1916 ;; \007 (4 chars) -> ^G (1 char) etc. in a lisp loop.
b4262885826e (dired-insert-directory): Quote certain chars with \.
Richard M. Stallman <rms@gnu.org>
parents: 9673
diff changeset
1917 (setq file
b4262885826e (dired-insert-directory): Quote certain chars with \.
Richard M. Stallman <rms@gnu.org>
parents: 9673
diff changeset
1918 (read
b4262885826e (dired-insert-directory): Quote certain chars with \.
Richard M. Stallman <rms@gnu.org>
parents: 9673
diff changeset
1919 (concat "\""
47507
d03e0c2bb52c (dired-font-lock-keywords): Use regexp-opt.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47491
diff changeset
1920 ;; Some ls -b don't escape quotes, argh!
10126
b4262885826e (dired-insert-directory): Quote certain chars with \.
Richard M. Stallman <rms@gnu.org>
parents: 9673
diff changeset
1921 ;; This is not needed for GNU ls, though.
b4262885826e (dired-insert-directory): Quote certain chars with \.
Richard M. Stallman <rms@gnu.org>
parents: 9673
diff changeset
1922 (or (dired-string-replace-match
14387
9c3c642de62a (dired-get-filename): When quoting " chars,
Richard M. Stallman <rms@gnu.org>
parents: 14361
diff changeset
1923 "\\([^\\]\\|\\`\\)\"" file "\\1\\\\\"" nil t)
10126
b4262885826e (dired-insert-directory): Quote certain chars with \.
Richard M. Stallman <rms@gnu.org>
parents: 9673
diff changeset
1924 file)
50197
ecb46e1986f0 * dired.el (dired-get-filename): Pay attention to the case that
Kenichi Handa <handa@m17n.org>
parents: 49772
diff changeset
1925 "\"")))
ecb46e1986f0 * dired.el (dired-get-filename): Pay attention to the case that
Kenichi Handa <handa@m17n.org>
parents: 49772
diff changeset
1926 ;; The above `read' will return a unibyte string if FILE
ecb46e1986f0 * dired.el (dired-get-filename): Pay attention to the case that
Kenichi Handa <handa@m17n.org>
parents: 49772
diff changeset
1927 ;; contains eight-bit-control/graphic characters.
ecb46e1986f0 * dired.el (dired-get-filename): Pay attention to the case that
Kenichi Handa <handa@m17n.org>
parents: 49772
diff changeset
1928 (if (and enable-multibyte-characters
ecb46e1986f0 * dired.el (dired-get-filename): Pay attention to the case that
Kenichi Handa <handa@m17n.org>
parents: 49772
diff changeset
1929 (not (multibyte-string-p file)))
ecb46e1986f0 * dired.el (dired-get-filename): Pay attention to the case that
Kenichi Handa <handa@m17n.org>
parents: 49772
diff changeset
1930 (setq file (string-to-multibyte file)))))
27051
66940eaf5c5c (dired-get-filename): Don't call file-name-absolute-p with FILE if FILE is nil.
Richard M. Stallman <rms@gnu.org>
parents: 26914
diff changeset
1931 (and file (file-name-absolute-p file)
38214
a4de79556592 (dired-get-filename): A file name starting with ~
Richard M. Stallman <rms@gnu.org>
parents: 38091
diff changeset
1932 ;; A relative file name can start with ~.
a4de79556592 (dired-get-filename): A file name starting with ~
Richard M. Stallman <rms@gnu.org>
parents: 38091
diff changeset
1933 ;; Don't treat it as absolute in this context.
a4de79556592 (dired-get-filename): A file name starting with ~
Richard M. Stallman <rms@gnu.org>
parents: 38091
diff changeset
1934 (not (eq (aref file 0) ?~))
26914
09c7b74fa57f * ls-lisp.el (ls-lisp-insert-directory): Print an explicit message
Eli Zaretskii <eliz@gnu.org>
parents: 26120
diff changeset
1935 (setq already-absolute t))
09c7b74fa57f * ls-lisp.el (ls-lisp-insert-directory): Print an explicit message
Eli Zaretskii <eliz@gnu.org>
parents: 26120
diff changeset
1936 (cond
43131
0c878a7e5de7 (dired-get-filename): Add /: when appropriate
Richard M. Stallman <rms@gnu.org>
parents: 43107
diff changeset
1937 ((null file)
0c878a7e5de7 (dired-get-filename): Add /: when appropriate
Richard M. Stallman <rms@gnu.org>
parents: 43107
diff changeset
1938 nil)
51498
031a70df49c9 (dired-get-filename): Don't err for . and .. for calls from dired-add-entry.
Juanma Barranquero <lekktu@gmail.com>
parents: 51444
diff changeset
1939 ((eq localp 'verbatim)
031a70df49c9 (dired-get-filename): Don't err for . and .. for calls from dired-add-entry.
Juanma Barranquero <lekktu@gmail.com>
parents: 51444
diff changeset
1940 file)
51444
b53bffc0cbaf (dired-get-filename): Err for . and .. in usual case.
Richard M. Stallman <rms@gnu.org>
parents: 50831
diff changeset
1941 ((and (not no-error-if-not-filep)
55862
f1e403523e6d (dired-get-filename): Don't use dired-re-dot.
Andreas Schwab <schwab@suse.de>
parents: 55154
diff changeset
1942 (member file '("." "..")))
51444
b53bffc0cbaf (dired-get-filename): Err for . and .. in usual case.
Richard M. Stallman <rms@gnu.org>
parents: 50831
diff changeset
1943 (error "Cannot operate on `.' or `..'"))
26914
09c7b74fa57f * ls-lisp.el (ls-lisp-insert-directory): Print an explicit message
Eli Zaretskii <eliz@gnu.org>
parents: 26120
diff changeset
1944 ((and (eq localp 'no-dir) already-absolute)
09c7b74fa57f * ls-lisp.el (ls-lisp-insert-directory): Print an explicit message
Eli Zaretskii <eliz@gnu.org>
parents: 26120
diff changeset
1945 (file-name-nondirectory file))
43131
0c878a7e5de7 (dired-get-filename): Add /: when appropriate
Richard M. Stallman <rms@gnu.org>
parents: 43107
diff changeset
1946 (already-absolute
47181
e17812b1a993 (defgroup dired): Use `files' as parent.
Richard M. Stallman <rms@gnu.org>
parents: 46789
diff changeset
1947 (let ((handler (find-file-name-handler file nil)))
e17812b1a993 (defgroup dired): Use `files' as parent.
Richard M. Stallman <rms@gnu.org>
parents: 46789
diff changeset
1948 ;; check for safe-magic property so that we won't
e17812b1a993 (defgroup dired): Use `files' as parent.
Richard M. Stallman <rms@gnu.org>
parents: 46789
diff changeset
1949 ;; put /: for names that don't really need them.
47488
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
1950 ;; For instance, .gz files when auto-compression-mode is on.
47181
e17812b1a993 (defgroup dired): Use `files' as parent.
Richard M. Stallman <rms@gnu.org>
parents: 46789
diff changeset
1951 (if (and handler (not (get handler 'safe-magic)))
e17812b1a993 (defgroup dired): Use `files' as parent.
Richard M. Stallman <rms@gnu.org>
parents: 46789
diff changeset
1952 (concat "/:" file)
e17812b1a993 (defgroup dired): Use `files' as parent.
Richard M. Stallman <rms@gnu.org>
parents: 46789
diff changeset
1953 file)))
43131
0c878a7e5de7 (dired-get-filename): Add /: when appropriate
Richard M. Stallman <rms@gnu.org>
parents: 43107
diff changeset
1954 ((eq localp 'no-dir)
26914
09c7b74fa57f * ls-lisp.el (ls-lisp-insert-directory): Print an explicit message
Eli Zaretskii <eliz@gnu.org>
parents: 26120
diff changeset
1955 file)
43131
0c878a7e5de7 (dired-get-filename): Add /: when appropriate
Richard M. Stallman <rms@gnu.org>
parents: 43107
diff changeset
1956 ((equal (dired-current-directory) "/")
0c878a7e5de7 (dired-get-filename): Add /: when appropriate
Richard M. Stallman <rms@gnu.org>
parents: 43107
diff changeset
1957 (setq file (concat (dired-current-directory localp) file))
47181
e17812b1a993 (defgroup dired): Use `files' as parent.
Richard M. Stallman <rms@gnu.org>
parents: 46789
diff changeset
1958 (let ((handler (find-file-name-handler file nil)))
e17812b1a993 (defgroup dired): Use `files' as parent.
Richard M. Stallman <rms@gnu.org>
parents: 46789
diff changeset
1959 ;; check for safe-magic property so that we won't
e17812b1a993 (defgroup dired): Use `files' as parent.
Richard M. Stallman <rms@gnu.org>
parents: 46789
diff changeset
1960 ;; put /: for names that don't really need them.
e17812b1a993 (defgroup dired): Use `files' as parent.
Richard M. Stallman <rms@gnu.org>
parents: 46789
diff changeset
1961 ;; For instance, .gz files when auto-compression-mode is on.
e17812b1a993 (defgroup dired): Use `files' as parent.
Richard M. Stallman <rms@gnu.org>
parents: 46789
diff changeset
1962 (if (and handler (not (get handler 'safe-magic)))
e17812b1a993 (defgroup dired): Use `files' as parent.
Richard M. Stallman <rms@gnu.org>
parents: 46789
diff changeset
1963 (concat "/:" file)
e17812b1a993 (defgroup dired): Use `files' as parent.
Richard M. Stallman <rms@gnu.org>
parents: 46789
diff changeset
1964 file)))
26914
09c7b74fa57f * ls-lisp.el (ls-lisp-insert-directory): Print an explicit message
Eli Zaretskii <eliz@gnu.org>
parents: 26120
diff changeset
1965 (t
43131
0c878a7e5de7 (dired-get-filename): Add /: when appropriate
Richard M. Stallman <rms@gnu.org>
parents: 43107
diff changeset
1966 (concat (dired-current-directory localp) file)))))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1967
10214
82e7df72b8a0 (dired-string-replace-match): Function moved here.
Richard M. Stallman <rms@gnu.org>
parents: 10126
diff changeset
1968 (defun dired-string-replace-match (regexp string newtext
51498
031a70df49c9 (dired-get-filename): Don't err for . and .. for calls from dired-add-entry.
Juanma Barranquero <lekktu@gmail.com>
parents: 51444
diff changeset
1969 &optional literal global)
10214
82e7df72b8a0 (dired-string-replace-match): Function moved here.
Richard M. Stallman <rms@gnu.org>
parents: 10126
diff changeset
1970 "Replace first match of REGEXP in STRING with NEWTEXT.
82e7df72b8a0 (dired-string-replace-match): Function moved here.
Richard M. Stallman <rms@gnu.org>
parents: 10126
diff changeset
1971 If it does not match, nil is returned instead of the new string.
82e7df72b8a0 (dired-string-replace-match): Function moved here.
Richard M. Stallman <rms@gnu.org>
parents: 10126
diff changeset
1972 Optional arg LITERAL means to take NEWTEXT literally.
82e7df72b8a0 (dired-string-replace-match): Function moved here.
Richard M. Stallman <rms@gnu.org>
parents: 10126
diff changeset
1973 Optional arg GLOBAL means to replace all matches."
82e7df72b8a0 (dired-string-replace-match): Function moved here.
Richard M. Stallman <rms@gnu.org>
parents: 10126
diff changeset
1974 (if global
25415
862886e87cf5 (dired-string-replace-match): Return `nil' when no match
Richard M. Stallman <rms@gnu.org>
parents: 24456
diff changeset
1975 (let ((start 0) ret)
12906
28a8f63327fc (dired-string-replace-match): Simplify using replace-match.
Richard M. Stallman <rms@gnu.org>
parents: 12801
diff changeset
1976 (while (string-match regexp string start)
28a8f63327fc (dired-string-replace-match): Simplify using replace-match.
Richard M. Stallman <rms@gnu.org>
parents: 12801
diff changeset
1977 (let ((from-end (- (length string) (match-end 0))))
25415
862886e87cf5 (dired-string-replace-match): Return `nil' when no match
Richard M. Stallman <rms@gnu.org>
parents: 24456
diff changeset
1978 (setq ret (setq string (replace-match newtext t literal string)))
12906
28a8f63327fc (dired-string-replace-match): Simplify using replace-match.
Richard M. Stallman <rms@gnu.org>
parents: 12801
diff changeset
1979 (setq start (- (length string) from-end))))
25415
862886e87cf5 (dired-string-replace-match): Return `nil' when no match
Richard M. Stallman <rms@gnu.org>
parents: 24456
diff changeset
1980 ret)
10214
82e7df72b8a0 (dired-string-replace-match): Function moved here.
Richard M. Stallman <rms@gnu.org>
parents: 10126
diff changeset
1981 (if (not (string-match regexp string 0))
82e7df72b8a0 (dired-string-replace-match): Function moved here.
Richard M. Stallman <rms@gnu.org>
parents: 10126
diff changeset
1982 nil
12906
28a8f63327fc (dired-string-replace-match): Simplify using replace-match.
Richard M. Stallman <rms@gnu.org>
parents: 12801
diff changeset
1983 (replace-match newtext t literal string))))
10214
82e7df72b8a0 (dired-string-replace-match): Function moved here.
Richard M. Stallman <rms@gnu.org>
parents: 10126
diff changeset
1984
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1985 (defun dired-make-absolute (file &optional dir)
49243
15dce98a38b0 Doc fixes.
Kim F. Storm <storm@cua.dk>
parents: 49138
diff changeset
1986 ;;"Convert FILE (a file name relative to DIR) to an absolute file name."
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1987 ;; We can't always use expand-file-name as this would get rid of `.'
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1988 ;; or expand in / instead default-directory if DIR=="".
97142
c3512b2085a0 * bitmaps/README:
Dan Nicolaescu <dann@ics.uci.edu>
parents: 97088
diff changeset
1989 ;; This should be good enough for ange-ftp.
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1990 ;; It should be reasonably fast, though, as it is called in
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1991 ;; dired-get-filename.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1992 (concat (or dir default-directory) file))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1993
16794
2de3fd99ae88 (dired-make-relative): Ignore the third argument;
Richard M. Stallman <rms@gnu.org>
parents: 16782
diff changeset
1994 (defun dired-make-relative (file &optional dir ignore)
2de3fd99ae88 (dired-make-relative): Ignore the third argument;
Richard M. Stallman <rms@gnu.org>
parents: 16782
diff changeset
1995 "Convert FILE (an absolute file name) to a name relative to DIR.
2de3fd99ae88 (dired-make-relative): Ignore the third argument;
Richard M. Stallman <rms@gnu.org>
parents: 16782
diff changeset
1996 If this is impossible, return FILE unchanged.
2de3fd99ae88 (dired-make-relative): Ignore the third argument;
Richard M. Stallman <rms@gnu.org>
parents: 16782
diff changeset
1997 DIR must be a directory name, not a file name."
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
1998 (or dir (setq dir default-directory))
5003
28ad14078b0e (dired-chown-program): Check for irix, not silicon-graphic-unix.
Richard M. Stallman <rms@gnu.org>
parents: 4888
diff changeset
1999 ;; This case comes into play if default-directory is set to
28ad14078b0e (dired-chown-program): Check for irix, not silicon-graphic-unix.
Richard M. Stallman <rms@gnu.org>
parents: 4888
diff changeset
2000 ;; use ~.
28ad14078b0e (dired-chown-program): Check for irix, not silicon-graphic-unix.
Richard M. Stallman <rms@gnu.org>
parents: 4888
diff changeset
2001 (if (and (> (length dir) 0) (= (aref dir 0) ?~))
28ad14078b0e (dired-chown-program): Check for irix, not silicon-graphic-unix.
Richard M. Stallman <rms@gnu.org>
parents: 4888
diff changeset
2002 (setq dir (expand-file-name dir)))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2003 (if (string-match (concat "^" (regexp-quote dir)) file)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2004 (substring file (match-end 0))
56035
e3ace501b5f4 (dired-revert): If buffer is marked unmodified before
Luc Teirlinck <teirllm@auburn.edu>
parents: 56015
diff changeset
2005 ;;; (or no-error
16794
2de3fd99ae88 (dired-make-relative): Ignore the third argument;
Richard M. Stallman <rms@gnu.org>
parents: 16782
diff changeset
2006 ;;; (error "%s: not in directory tree growing at %s" file dir))
2de3fd99ae88 (dired-make-relative): Ignore the third argument;
Richard M. Stallman <rms@gnu.org>
parents: 16782
diff changeset
2007 file))
35607
5b26cd3356a1 Revert last change.
Dave Love <fx@gnu.org>
parents: 35522
diff changeset
2008
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2009 ;;; Functions for finding the file name in a dired buffer line.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2010
16782
97849649b875 (dired-permission-flags-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 16773
diff changeset
2011 (defvar dired-permission-flags-regexp
97849649b875 (dired-permission-flags-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 16773
diff changeset
2012 "\\([^ ]\\)[-r][-w]\\([^ ]\\)[-r][-w]\\([^ ]\\)[-r][-w]\\([^ ]\\)"
97849649b875 (dired-permission-flags-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 16773
diff changeset
2013 "Regular expression to match the permission flags in `ls -l'.")
97849649b875 (dired-permission-flags-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 16773
diff changeset
2014
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2015 ;; Move to first char of filename on this line.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2016 ;; Returns position (point) or nil if no filename on this line."
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2017 (defun dired-move-to-filename (&optional raise-error eol)
57264
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
2018 "Move to the beginning of the filename on the current line.
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
2019 Return the position of the beginning of the filename, or nil if none found."
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2020 ;; This is the UNIX version.
47507
d03e0c2bb52c (dired-font-lock-keywords): Use regexp-opt.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47491
diff changeset
2021 (or eol (setq eol (line-end-position)))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2022 (beginning-of-line)
47488
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
2023 ;; First try assuming `ls --dired' was used.
47507
d03e0c2bb52c (dired-font-lock-keywords): Use regexp-opt.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47491
diff changeset
2024 (let ((change (next-single-property-change (point) 'dired-filename nil eol)))
d03e0c2bb52c (dired-font-lock-keywords): Use regexp-opt.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47491
diff changeset
2025 (cond
d03e0c2bb52c (dired-font-lock-keywords): Use regexp-opt.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47491
diff changeset
2026 ((and change (< change eol))
d03e0c2bb52c (dired-font-lock-keywords): Use regexp-opt.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47491
diff changeset
2027 (goto-char change))
66325
fda96ff4c7e5 * files.el (directory-listing-before-filename-regexp): New
Michael Albinus <michael.albinus@gmx.de>
parents: 65689
diff changeset
2028 ((re-search-forward directory-listing-before-filename-regexp eol t)
47507
d03e0c2bb52c (dired-font-lock-keywords): Use regexp-opt.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47491
diff changeset
2029 (goto-char (match-end 0)))
d03e0c2bb52c (dired-font-lock-keywords): Use regexp-opt.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47491
diff changeset
2030 ((re-search-forward dired-permission-flags-regexp eol t)
d03e0c2bb52c (dired-font-lock-keywords): Use regexp-opt.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47491
diff changeset
2031 ;; Ha! There *is* a file. Our regexp-from-hell just failed to find it.
57228
445f56b6dc24 (dired-move-to-filename): Don't output a message if
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56423
diff changeset
2032 (if raise-error
66325
fda96ff4c7e5 * files.el (directory-listing-before-filename-regexp): New
Michael Albinus <michael.albinus@gmx.de>
parents: 65689
diff changeset
2033 (error "Unrecognized line! Check directory-listing-before-filename-regexp"))
57228
445f56b6dc24 (dired-move-to-filename): Don't output a message if
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56423
diff changeset
2034 (beginning-of-line)
445f56b6dc24 (dired-move-to-filename): Don't output a message if
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56423
diff changeset
2035 nil)
47507
d03e0c2bb52c (dired-font-lock-keywords): Use regexp-opt.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47491
diff changeset
2036 (raise-error
d03e0c2bb52c (dired-font-lock-keywords): Use regexp-opt.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47491
diff changeset
2037 (error "No file on this line")))))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2038
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2039 (defun dired-move-to-end-of-filename (&optional no-error)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2040 ;; Assumes point is at beginning of filename,
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2041 ;; thus the rwx bit re-search-backward below will succeed in *this*
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2042 ;; line if at all. So, it should be called only after
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2043 ;; (dired-move-to-filename t).
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2044 ;; On failure, signals an error (with non-nil NO-ERROR just returns nil).
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2045 ;; This is the UNIX version.
47488
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
2046 (if (get-text-property (point) 'dired-filename)
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
2047 (goto-char (next-single-property-change (point) 'dired-filename))
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
2048 (let (opoint file-type executable symlink hidden case-fold-search used-F eol)
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
2049 ;; case-fold-search is nil now, so we can test for capital F:
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
2050 (setq used-F (string-match "F" dired-actual-switches)
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
2051 opoint (point)
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
2052 eol (save-excursion (end-of-line) (point))
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
2053 hidden (and selective-display
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
2054 (save-excursion (search-forward "\r" eol t))))
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
2055 (if hidden
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
2056 nil
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
2057 (save-excursion ;; Find out what kind of file this is:
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
2058 ;; Restrict perm bits to be non-blank,
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
2059 ;; otherwise this matches one char to early (looking backward):
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
2060 ;; "l---------" (some systems make symlinks that way)
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
2061 ;; "----------" (plain file with zero perms)
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
2062 (if (re-search-backward
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
2063 dired-permission-flags-regexp nil t)
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
2064 (setq file-type (char-after (match-beginning 1))
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
2065 symlink (eq file-type ?l)
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
2066 ;; Only with -F we need to know whether it's an executable
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
2067 executable (and
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
2068 used-F
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
2069 (string-match
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
2070 "[xst]" ;; execute bit set anywhere?
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
2071 (concat
54577
664f8942b3c8 (dired-mode): Use run-mode-hooks.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54548
diff changeset
2072 (match-string 2)
664f8942b3c8 (dired-mode): Use run-mode-hooks.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54548
diff changeset
2073 (match-string 3)
664f8942b3c8 (dired-mode): Use run-mode-hooks.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54548
diff changeset
2074 (match-string 4)))))
47488
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
2075 (or no-error (error "No file on this line"))))
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
2076 ;; Move point to end of name:
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
2077 (if symlink
57264
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
2078 (if (search-forward " -> " eol t)
47488
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
2079 (progn
57264
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
2080 (forward-char -4)
47488
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
2081 (and used-F
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
2082 dired-ls-F-marks-symlinks
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
2083 (eq (preceding-char) ?@) ;; did ls really mark the link?
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
2084 (forward-char -1))))
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
2085 (goto-char eol) ;; else not a symbolic link
65027
966abb81fa37 (dired-move-to-end-of-filename):
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 64961
diff changeset
2086 ;; ls -lF marks dirs, sockets, fifos and executables with exactly
966abb81fa37 (dired-move-to-end-of-filename):
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 64961
diff changeset
2087 ;; one trailing character. (Executable bits on symlinks ain't mean
47488
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
2088 ;; a thing, even to ls, but we know it's not a symlink.)
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
2089 (and used-F
65027
966abb81fa37 (dired-move-to-end-of-filename):
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 64961
diff changeset
2090 (or (memq file-type '(?d ?s ?p))
47488
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
2091 executable)
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
2092 (forward-char -1))))
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
2093 (or no-error
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
2094 (not (eq opoint (point)))
87139
f358a2fd5895 Fix buggy calls to `error'.
Deepak Goel <deego@gnufans.org>
parents: 86356
diff changeset
2095 (error "%s" (if hidden
47488
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
2096 (substitute-command-keys
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
2097 "File line is hidden, type \\[dired-hide-subdir] to unhide")
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
2098 "No file on this line")))
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
2099 (if (eq opoint (point))
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
2100 nil
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
2101 (point)))))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2102
35607
5b26cd3356a1 Revert last change.
Dave Love <fx@gnu.org>
parents: 35522
diff changeset
2103
42100
eb27208de620 (dired-copy-filename-as-kill): Moved from dired-x.el.
Richard M. Stallman <rms@gnu.org>
parents: 41608
diff changeset
2104 ;;; COPY NAMES OF MARKED FILES INTO KILL-RING.
eb27208de620 (dired-copy-filename-as-kill): Moved from dired-x.el.
Richard M. Stallman <rms@gnu.org>
parents: 41608
diff changeset
2105
eb27208de620 (dired-copy-filename-as-kill): Moved from dired-x.el.
Richard M. Stallman <rms@gnu.org>
parents: 41608
diff changeset
2106 (defun dired-copy-filename-as-kill (&optional arg)
eb27208de620 (dired-copy-filename-as-kill): Moved from dired-x.el.
Richard M. Stallman <rms@gnu.org>
parents: 41608
diff changeset
2107 "Copy names of marked (or next ARG) files into the kill ring.
eb27208de620 (dired-copy-filename-as-kill): Moved from dired-x.el.
Richard M. Stallman <rms@gnu.org>
parents: 41608
diff changeset
2108 The names are separated by a space.
49243
15dce98a38b0 Doc fixes.
Kim F. Storm <storm@cua.dk>
parents: 49138
diff changeset
2109 With a zero prefix arg, use the absolute file name of each marked file.
64531
733da358f853 (dired-align-file, dired-flag-backup-files, dired-change-marks,
Juanma Barranquero <lekktu@gmail.com>
parents: 64442
diff changeset
2110 With \\[universal-argument], use the file name relative to the dired buffer's
61296
8d1c64f52397 (dired-copy-filename-as-kill): Make `-' arg behave like `-1'. Doc fix.
Luc Teirlinck <teirllm@auburn.edu>
parents: 61023
diff changeset
2111 `default-directory'. (This still may contain slashes if in a subdirectory.)
42100
eb27208de620 (dired-copy-filename-as-kill): Moved from dired-x.el.
Richard M. Stallman <rms@gnu.org>
parents: 41608
diff changeset
2112
61296
8d1c64f52397 (dired-copy-filename-as-kill): Make `-' arg behave like `-1'. Doc fix.
Luc Teirlinck <teirllm@auburn.edu>
parents: 61023
diff changeset
2113 If on a subdir headerline, use absolute subdirname instead;
8d1c64f52397 (dired-copy-filename-as-kill): Make `-' arg behave like `-1'. Doc fix.
Luc Teirlinck <teirllm@auburn.edu>
parents: 61023
diff changeset
2114 prefix arg and marked files are ignored in this case.
42100
eb27208de620 (dired-copy-filename-as-kill): Moved from dired-x.el.
Richard M. Stallman <rms@gnu.org>
parents: 41608
diff changeset
2115
eb27208de620 (dired-copy-filename-as-kill): Moved from dired-x.el.
Richard M. Stallman <rms@gnu.org>
parents: 41608
diff changeset
2116 You can then feed the file name(s) to other commands with \\[yank]."
eb27208de620 (dired-copy-filename-as-kill): Moved from dired-x.el.
Richard M. Stallman <rms@gnu.org>
parents: 41608
diff changeset
2117 (interactive "P")
eb27208de620 (dired-copy-filename-as-kill): Moved from dired-x.el.
Richard M. Stallman <rms@gnu.org>
parents: 41608
diff changeset
2118 (let ((string
eb27208de620 (dired-copy-filename-as-kill): Moved from dired-x.el.
Richard M. Stallman <rms@gnu.org>
parents: 41608
diff changeset
2119 (or (dired-get-subdir)
eb27208de620 (dired-copy-filename-as-kill): Moved from dired-x.el.
Richard M. Stallman <rms@gnu.org>
parents: 41608
diff changeset
2120 (mapconcat (function identity)
eb27208de620 (dired-copy-filename-as-kill): Moved from dired-x.el.
Richard M. Stallman <rms@gnu.org>
parents: 41608
diff changeset
2121 (if arg
eb27208de620 (dired-copy-filename-as-kill): Moved from dired-x.el.
Richard M. Stallman <rms@gnu.org>
parents: 41608
diff changeset
2122 (cond ((zerop (prefix-numeric-value arg))
eb27208de620 (dired-copy-filename-as-kill): Moved from dired-x.el.
Richard M. Stallman <rms@gnu.org>
parents: 41608
diff changeset
2123 (dired-get-marked-files))
61296
8d1c64f52397 (dired-copy-filename-as-kill): Make `-' arg behave like `-1'. Doc fix.
Luc Teirlinck <teirllm@auburn.edu>
parents: 61023
diff changeset
2124 ((consp arg)
8d1c64f52397 (dired-copy-filename-as-kill): Make `-' arg behave like `-1'. Doc fix.
Luc Teirlinck <teirllm@auburn.edu>
parents: 61023
diff changeset
2125 (dired-get-marked-files t))
8d1c64f52397 (dired-copy-filename-as-kill): Make `-' arg behave like `-1'. Doc fix.
Luc Teirlinck <teirllm@auburn.edu>
parents: 61023
diff changeset
2126 (t
8d1c64f52397 (dired-copy-filename-as-kill): Make `-' arg behave like `-1'. Doc fix.
Luc Teirlinck <teirllm@auburn.edu>
parents: 61023
diff changeset
2127 (dired-get-marked-files
8d1c64f52397 (dired-copy-filename-as-kill): Make `-' arg behave like `-1'. Doc fix.
Luc Teirlinck <teirllm@auburn.edu>
parents: 61023
diff changeset
2128 'no-dir (prefix-numeric-value arg))))
42100
eb27208de620 (dired-copy-filename-as-kill): Moved from dired-x.el.
Richard M. Stallman <rms@gnu.org>
parents: 41608
diff changeset
2129 (dired-get-marked-files 'no-dir))
eb27208de620 (dired-copy-filename-as-kill): Moved from dired-x.el.
Richard M. Stallman <rms@gnu.org>
parents: 41608
diff changeset
2130 " "))))
42594
ec991a12a82f (dired-copy-filename-as-kill): Call kill-append if following a kill command.
Richard M. Stallman <rms@gnu.org>
parents: 42245
diff changeset
2131 (if (eq last-command 'kill-region)
ec991a12a82f (dired-copy-filename-as-kill): Call kill-append if following a kill command.
Richard M. Stallman <rms@gnu.org>
parents: 42245
diff changeset
2132 (kill-append string nil)
ec991a12a82f (dired-copy-filename-as-kill): Call kill-append if following a kill command.
Richard M. Stallman <rms@gnu.org>
parents: 42245
diff changeset
2133 (kill-new string))
42100
eb27208de620 (dired-copy-filename-as-kill): Moved from dired-x.el.
Richard M. Stallman <rms@gnu.org>
parents: 41608
diff changeset
2134 (message "%s" string)))
eb27208de620 (dired-copy-filename-as-kill): Moved from dired-x.el.
Richard M. Stallman <rms@gnu.org>
parents: 41608
diff changeset
2135
eb27208de620 (dired-copy-filename-as-kill): Moved from dired-x.el.
Richard M. Stallman <rms@gnu.org>
parents: 41608
diff changeset
2136
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2137 ;; Keeping Dired buffers in sync with the filesystem and with each other
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2138
17206
30a9faea2a54 (dired-glob-regexp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17198
diff changeset
2139 (defun dired-buffers-for-dir (dir &optional file)
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2140 ;; Return a list of buffers that dired DIR (top level or in-situ subdir).
17206
30a9faea2a54 (dired-glob-regexp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17198
diff changeset
2141 ;; If FILE is non-nil, include only those whose wildcard pattern (if any)
30a9faea2a54 (dired-glob-regexp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17198
diff changeset
2142 ;; matches FILE.
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2143 ;; The list is in reverse order of buffer creation, most recent last.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2144 ;; As a side effect, killed dired buffers for DIR are removed from
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2145 ;; dired-buffers.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2146 (setq dir (file-name-as-directory dir))
57264
fc40eb786614 (dired-view-command-alist): Use more efficient regexps. Remove dubious args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57228
diff changeset
2147 (let ((alist dired-buffers) result elt buf)
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2148 (while alist
8791
555762c754a6 (dired-buffers-for-dir): Assume dirs are preexpanded.
Richard M. Stallman <rms@gnu.org>
parents: 8438
diff changeset
2149 (setq elt (car alist)
555762c754a6 (dired-buffers-for-dir): Assume dirs are preexpanded.
Richard M. Stallman <rms@gnu.org>
parents: 8438
diff changeset
2150 buf (cdr elt))
555762c754a6 (dired-buffers-for-dir): Assume dirs are preexpanded.
Richard M. Stallman <rms@gnu.org>
parents: 8438
diff changeset
2151 (if (buffer-name buf)
555762c754a6 (dired-buffers-for-dir): Assume dirs are preexpanded.
Richard M. Stallman <rms@gnu.org>
parents: 8438
diff changeset
2152 (if (dired-in-this-tree dir (car elt))
17206
30a9faea2a54 (dired-glob-regexp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17198
diff changeset
2153 (with-current-buffer buf
30a9faea2a54 (dired-glob-regexp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17198
diff changeset
2154 (and (assoc dir dired-subdir-alist)
30a9faea2a54 (dired-glob-regexp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17198
diff changeset
2155 (or (null file)
30a9faea2a54 (dired-glob-regexp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17198
diff changeset
2156 (let ((wildcards
30a9faea2a54 (dired-glob-regexp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17198
diff changeset
2157 (file-name-nondirectory dired-directory)))
30a9faea2a54 (dired-glob-regexp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17198
diff changeset
2158 (or (= 0 (length wildcards))
30a9faea2a54 (dired-glob-regexp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17198
diff changeset
2159 (string-match (dired-glob-regexp wildcards)
30a9faea2a54 (dired-glob-regexp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17198
diff changeset
2160 file))))
30a9faea2a54 (dired-glob-regexp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17198
diff changeset
2161 (setq result (cons buf result)))))
8791
555762c754a6 (dired-buffers-for-dir): Assume dirs are preexpanded.
Richard M. Stallman <rms@gnu.org>
parents: 8438
diff changeset
2162 ;; else buffer is killed - clean up:
555762c754a6 (dired-buffers-for-dir): Assume dirs are preexpanded.
Richard M. Stallman <rms@gnu.org>
parents: 8438
diff changeset
2163 (setq dired-buffers (delq elt dired-buffers)))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2164 (setq alist (cdr alist)))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2165 result))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2166
17206
30a9faea2a54 (dired-glob-regexp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17198
diff changeset
2167 (defun dired-glob-regexp (pattern)
30a9faea2a54 (dired-glob-regexp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17198
diff changeset
2168 "Convert glob-pattern PATTERN to a regular expression."
30a9faea2a54 (dired-glob-regexp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17198
diff changeset
2169 (let ((matched-in-pattern 0) ;; How many chars of PATTERN we've handled.
30a9faea2a54 (dired-glob-regexp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17198
diff changeset
2170 regexp)
30a9faea2a54 (dired-glob-regexp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17198
diff changeset
2171 (while (string-match "[[?*]" pattern matched-in-pattern)
30a9faea2a54 (dired-glob-regexp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17198
diff changeset
2172 (let ((op-end (match-end 0))
30a9faea2a54 (dired-glob-regexp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17198
diff changeset
2173 (next-op (aref pattern (match-beginning 0))))
30a9faea2a54 (dired-glob-regexp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17198
diff changeset
2174 (setq regexp (concat regexp
30a9faea2a54 (dired-glob-regexp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17198
diff changeset
2175 (regexp-quote
30a9faea2a54 (dired-glob-regexp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17198
diff changeset
2176 (substring pattern matched-in-pattern
30a9faea2a54 (dired-glob-regexp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17198
diff changeset
2177 (match-beginning 0)))))
30a9faea2a54 (dired-glob-regexp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17198
diff changeset
2178 (cond ((= next-op ??)
30a9faea2a54 (dired-glob-regexp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17198
diff changeset
2179 (setq regexp (concat regexp "."))
30a9faea2a54 (dired-glob-regexp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17198
diff changeset
2180 (setq matched-in-pattern op-end))
30a9faea2a54 (dired-glob-regexp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17198
diff changeset
2181 ((= next-op ?\[)
30a9faea2a54 (dired-glob-regexp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17198
diff changeset
2182 ;; Fails to handle ^ yet ????
30a9faea2a54 (dired-glob-regexp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17198
diff changeset
2183 (let* ((set-start (match-beginning 0))
30a9faea2a54 (dired-glob-regexp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17198
diff changeset
2184 (set-cont
30a9faea2a54 (dired-glob-regexp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17198
diff changeset
2185 (if (= (aref pattern (1+ set-start)) ?^)
30a9faea2a54 (dired-glob-regexp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17198
diff changeset
2186 (+ 3 set-start)
30a9faea2a54 (dired-glob-regexp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17198
diff changeset
2187 (+ 2 set-start)))
30a9faea2a54 (dired-glob-regexp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17198
diff changeset
2188 (set-end (string-match "]" pattern set-cont))
30a9faea2a54 (dired-glob-regexp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17198
diff changeset
2189 (set (substring pattern set-start (1+ set-end))))
30a9faea2a54 (dired-glob-regexp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17198
diff changeset
2190 (setq regexp (concat regexp set))
30a9faea2a54 (dired-glob-regexp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17198
diff changeset
2191 (setq matched-in-pattern (1+ set-end))))
30a9faea2a54 (dired-glob-regexp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17198
diff changeset
2192 ((= next-op ?*)
30a9faea2a54 (dired-glob-regexp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17198
diff changeset
2193 (setq regexp (concat regexp ".*"))
30a9faea2a54 (dired-glob-regexp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17198
diff changeset
2194 (setq matched-in-pattern op-end)))))
30a9faea2a54 (dired-glob-regexp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17198
diff changeset
2195 (concat "\\`"
30a9faea2a54 (dired-glob-regexp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17198
diff changeset
2196 regexp
30a9faea2a54 (dired-glob-regexp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17198
diff changeset
2197 (regexp-quote
30a9faea2a54 (dired-glob-regexp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17198
diff changeset
2198 (substring pattern matched-in-pattern))
30a9faea2a54 (dired-glob-regexp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17198
diff changeset
2199 "\\'")))
30a9faea2a54 (dired-glob-regexp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17198
diff changeset
2200
49549
99be3a1e2589 Cygwin support patch.
Juanma Barranquero <lekktu@gmail.com>
parents: 49243
diff changeset
2201
17206
30a9faea2a54 (dired-glob-regexp): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17198
diff changeset
2202
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2203 (defun dired-advertise ()
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2204 ;;"Advertise in variable `dired-buffers' that we dired `default-directory'."
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2205 ;; With wildcards we actually advertise too much.
8791
555762c754a6 (dired-buffers-for-dir): Assume dirs are preexpanded.
Richard M. Stallman <rms@gnu.org>
parents: 8438
diff changeset
2206 (let ((expanded-default (expand-file-name default-directory)))
555762c754a6 (dired-buffers-for-dir): Assume dirs are preexpanded.
Richard M. Stallman <rms@gnu.org>
parents: 8438
diff changeset
2207 (if (memq (current-buffer) (dired-buffers-for-dir expanded-default))
555762c754a6 (dired-buffers-for-dir): Assume dirs are preexpanded.
Richard M. Stallman <rms@gnu.org>
parents: 8438
diff changeset
2208 t ; we have already advertised ourselves
555762c754a6 (dired-buffers-for-dir): Assume dirs are preexpanded.
Richard M. Stallman <rms@gnu.org>
parents: 8438
diff changeset
2209 (setq dired-buffers
555762c754a6 (dired-buffers-for-dir): Assume dirs are preexpanded.
Richard M. Stallman <rms@gnu.org>
parents: 8438
diff changeset
2210 (cons (cons expanded-default (current-buffer))
555762c754a6 (dired-buffers-for-dir): Assume dirs are preexpanded.
Richard M. Stallman <rms@gnu.org>
parents: 8438
diff changeset
2211 dired-buffers)))))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2212
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2213 (defun dired-unadvertise (dir)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2214 ;; Remove DIR from the buffer alist in variable dired-buffers.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2215 ;; This has the effect of removing any buffer whose main directory is DIR.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2216 ;; It does not affect buffers in which DIR is a subdir.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2217 ;; Removing is also done as a side-effect in dired-buffer-for-dir.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2218 (setq dired-buffers
8791
555762c754a6 (dired-buffers-for-dir): Assume dirs are preexpanded.
Richard M. Stallman <rms@gnu.org>
parents: 8438
diff changeset
2219 (delq (assoc (expand-file-name dir) dired-buffers) dired-buffers)))
35607
5b26cd3356a1 Revert last change.
Dave Love <fx@gnu.org>
parents: 35522
diff changeset
2220
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2221 ;; Tree Dired
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2222
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2223 ;;; utility functions
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2224
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2225 (defun dired-in-this-tree (file dir)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2226 ;;"Is FILE part of the directory tree starting at DIR?"
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2227 (let (case-fold-search)
8791
555762c754a6 (dired-buffers-for-dir): Assume dirs are preexpanded.
Richard M. Stallman <rms@gnu.org>
parents: 8438
diff changeset
2228 (string-match (concat "^" (regexp-quote dir)) file)))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2229
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2230 (defun dired-normalize-subdir (dir)
49243
15dce98a38b0 Doc fixes.
Kim F. Storm <storm@cua.dk>
parents: 49138
diff changeset
2231 ;; Prepend default-directory to DIR if relative file name.
15dce98a38b0 Doc fixes.
Kim F. Storm <storm@cua.dk>
parents: 49138
diff changeset
2232 ;; dired-get-filename must be able to make a valid file name from a
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2233 ;; file and its directory DIR.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2234 (file-name-as-directory
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2235 (if (file-name-absolute-p dir)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2236 dir
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2237 (expand-file-name dir default-directory))))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2238
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2239 (defun dired-get-subdir ()
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2240 ;;"Return the subdir name on this line, or nil if not on a headerline."
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2241 ;; Look up in the alist whether this is a headerline.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2242 (save-excursion
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2243 (let ((cur-dir (dired-current-directory)))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2244 (beginning-of-line) ; alist stores b-o-l positions
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2245 (and (zerop (- (point)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2246 (dired-get-subdir-min (assoc cur-dir
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2247 dired-subdir-alist))))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2248 cur-dir))))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2249
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2250 ;(defun dired-get-subdir-min (elt)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2251 ; (cdr elt))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2252 ;; can't use macro, must be redefinable for other alist format in dired-nstd.
2584
55e18ce6e98a Changed fsets to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2492
diff changeset
2253 (defalias 'dired-get-subdir-min 'cdr)
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2254
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2255 (defun dired-get-subdir-max (elt)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2256 (save-excursion
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2257 (goto-char (dired-get-subdir-min elt))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2258 (dired-subdir-max)))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2259
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2260 (defun dired-clear-alist ()
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2261 (while dired-subdir-alist
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2262 (set-marker (dired-get-subdir-min (car dired-subdir-alist)) nil)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2263 (setq dired-subdir-alist (cdr dired-subdir-alist))))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2264
1091
3302f6e93ce5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 910
diff changeset
2265 (defun dired-subdir-index (dir)
3302f6e93ce5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 910
diff changeset
2266 ;; Return an index into alist for use with nth
3302f6e93ce5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 910
diff changeset
2267 ;; for the sake of subdir moving commands.
3302f6e93ce5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 910
diff changeset
2268 (let (found (index 0) (alist dired-subdir-alist))
3302f6e93ce5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 910
diff changeset
2269 (while alist
3302f6e93ce5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 910
diff changeset
2270 (if (string= dir (car (car alist)))
3302f6e93ce5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 910
diff changeset
2271 (setq alist nil found t)
3302f6e93ce5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 910
diff changeset
2272 (setq alist (cdr alist) index (1+ index))))
3302f6e93ce5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 910
diff changeset
2273 (if found index nil)))
3302f6e93ce5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 910
diff changeset
2274
3302f6e93ce5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 910
diff changeset
2275 (defun dired-next-subdir (arg &optional no-error-if-not-found no-skip)
3302f6e93ce5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 910
diff changeset
2276 "Go to next subdirectory, regardless of level."
3302f6e93ce5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 910
diff changeset
2277 ;; Use 0 arg to go to this directory's header line.
3302f6e93ce5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 910
diff changeset
2278 ;; NO-SKIP prevents moving to end of header line, returning whatever
3302f6e93ce5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 910
diff changeset
2279 ;; position was found in dired-subdir-alist.
3302f6e93ce5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 910
diff changeset
2280 (interactive "p")
3302f6e93ce5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 910
diff changeset
2281 (let ((this-dir (dired-current-directory))
3302f6e93ce5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 910
diff changeset
2282 pos index)
3302f6e93ce5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 910
diff changeset
2283 ;; nth with negative arg does not return nil but the first element
3302f6e93ce5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 910
diff changeset
2284 (setq index (- (dired-subdir-index this-dir) arg))
3302f6e93ce5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 910
diff changeset
2285 (setq pos (if (>= index 0)
3302f6e93ce5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 910
diff changeset
2286 (dired-get-subdir-min (nth index dired-subdir-alist))))
3302f6e93ce5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 910
diff changeset
2287 (if pos
3302f6e93ce5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 910
diff changeset
2288 (progn
3302f6e93ce5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 910
diff changeset
2289 (goto-char pos)
3302f6e93ce5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 910
diff changeset
2290 (or no-skip (skip-chars-forward "^\n\r"))
3302f6e93ce5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 910
diff changeset
2291 (point))
3302f6e93ce5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 910
diff changeset
2292 (if no-error-if-not-found
3302f6e93ce5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 910
diff changeset
2293 nil ; return nil if not found
3302f6e93ce5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 910
diff changeset
2294 (error "%s directory" (if (> arg 0) "Last" "First"))))))
3302f6e93ce5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 910
diff changeset
2295
39376
7e0db9f5d524 (dired-build-subdir-alist): Accept optional arg SWITCHES.
Eli Zaretskii <eliz@gnu.org>
parents: 39325
diff changeset
2296 (defun dired-build-subdir-alist (&optional switches)
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2297 "Build `dired-subdir-alist' by parsing the buffer.
39376
7e0db9f5d524 (dired-build-subdir-alist): Accept optional arg SWITCHES.
Eli Zaretskii <eliz@gnu.org>
parents: 39325
diff changeset
2298 Returns the new value of the alist.
7e0db9f5d524 (dired-build-subdir-alist): Accept optional arg SWITCHES.
Eli Zaretskii <eliz@gnu.org>
parents: 39325
diff changeset
2299 If optional arg SWITCHES is non-nil, use its value
7e0db9f5d524 (dired-build-subdir-alist): Accept optional arg SWITCHES.
Eli Zaretskii <eliz@gnu.org>
parents: 39325
diff changeset
2300 instead of `dired-actual-switches'."
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2301 (interactive)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2302 (dired-clear-alist)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2303 (save-excursion
39376
7e0db9f5d524 (dired-build-subdir-alist): Accept optional arg SWITCHES.
Eli Zaretskii <eliz@gnu.org>
parents: 39325
diff changeset
2304 (let* ((count 0)
94889
e80a3956601b (dired-read-dir-and-switches): Ignore ., .., and
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
2305 (inhibit-read-only t)
60097
031a5ac39eb7 (dired-build-subdir-alist): Bind buffer-undo-list to t.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
2306 (buffer-undo-list t)
39376
7e0db9f5d524 (dired-build-subdir-alist): Accept optional arg SWITCHES.
Eli Zaretskii <eliz@gnu.org>
parents: 39325
diff changeset
2307 (switches (or switches dired-actual-switches))
7e0db9f5d524 (dired-build-subdir-alist): Accept optional arg SWITCHES.
Eli Zaretskii <eliz@gnu.org>
parents: 39325
diff changeset
2308 new-dir-name
7e0db9f5d524 (dired-build-subdir-alist): Accept optional arg SWITCHES.
Eli Zaretskii <eliz@gnu.org>
parents: 39325
diff changeset
2309 (R-ftp-base-dir-regex
7e0db9f5d524 (dired-build-subdir-alist): Accept optional arg SWITCHES.
Eli Zaretskii <eliz@gnu.org>
parents: 39325
diff changeset
2310 ;; Used to expand subdirectory names correctly in recursive
7e0db9f5d524 (dired-build-subdir-alist): Accept optional arg SWITCHES.
Eli Zaretskii <eliz@gnu.org>
parents: 39325
diff changeset
2311 ;; ange-ftp listings.
7e0db9f5d524 (dired-build-subdir-alist): Accept optional arg SWITCHES.
Eli Zaretskii <eliz@gnu.org>
parents: 39325
diff changeset
2312 (and (string-match "R" switches)
7e0db9f5d524 (dired-build-subdir-alist): Accept optional arg SWITCHES.
Eli Zaretskii <eliz@gnu.org>
parents: 39325
diff changeset
2313 (string-match "\\`/.*:\\(/.*\\)" default-directory)
7e0db9f5d524 (dired-build-subdir-alist): Accept optional arg SWITCHES.
Eli Zaretskii <eliz@gnu.org>
parents: 39325
diff changeset
2314 (concat "\\`" (match-string 1 default-directory)))))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2315 (goto-char (point-min))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2316 (setq dired-subdir-alist nil)
73099
59243837a57a (dired-build-subdir-alist): When file ends in colon,
Richard M. Stallman <rms@gnu.org>
parents: 72716
diff changeset
2317 (while (re-search-forward dired-subdir-regexp nil t)
59243837a57a (dired-build-subdir-alist): When file ends in colon,
Richard M. Stallman <rms@gnu.org>
parents: 72716
diff changeset
2318 ;; Avoid taking a file name ending in a colon
59243837a57a (dired-build-subdir-alist): When file ends in colon,
Richard M. Stallman <rms@gnu.org>
parents: 72716
diff changeset
2319 ;; as a subdir name.
59243837a57a (dired-build-subdir-alist): When file ends in colon,
Richard M. Stallman <rms@gnu.org>
parents: 72716
diff changeset
2320 (unless (save-excursion
59243837a57a (dired-build-subdir-alist): When file ends in colon,
Richard M. Stallman <rms@gnu.org>
parents: 72716
diff changeset
2321 (goto-char (match-beginning 0))
59243837a57a (dired-build-subdir-alist): When file ends in colon,
Richard M. Stallman <rms@gnu.org>
parents: 72716
diff changeset
2322 (beginning-of-line)
59243837a57a (dired-build-subdir-alist): When file ends in colon,
Richard M. Stallman <rms@gnu.org>
parents: 72716
diff changeset
2323 (forward-char 2)
59243837a57a (dired-build-subdir-alist): When file ends in colon,
Richard M. Stallman <rms@gnu.org>
parents: 72716
diff changeset
2324 (save-match-data (looking-at dired-re-perms)))
59243837a57a (dired-build-subdir-alist): When file ends in colon,
Richard M. Stallman <rms@gnu.org>
parents: 72716
diff changeset
2325 (save-excursion
59243837a57a (dired-build-subdir-alist): When file ends in colon,
Richard M. Stallman <rms@gnu.org>
parents: 72716
diff changeset
2326 (goto-char (match-beginning 1))
59243837a57a (dired-build-subdir-alist): When file ends in colon,
Richard M. Stallman <rms@gnu.org>
parents: 72716
diff changeset
2327 (setq new-dir-name
59243837a57a (dired-build-subdir-alist): When file ends in colon,
Richard M. Stallman <rms@gnu.org>
parents: 72716
diff changeset
2328 (buffer-substring-no-properties (point) (match-end 1))
59243837a57a (dired-build-subdir-alist): When file ends in colon,
Richard M. Stallman <rms@gnu.org>
parents: 72716
diff changeset
2329 new-dir-name
59243837a57a (dired-build-subdir-alist): When file ends in colon,
Richard M. Stallman <rms@gnu.org>
parents: 72716
diff changeset
2330 (save-match-data
59243837a57a (dired-build-subdir-alist): When file ends in colon,
Richard M. Stallman <rms@gnu.org>
parents: 72716
diff changeset
2331 (if (and R-ftp-base-dir-regex
59243837a57a (dired-build-subdir-alist): When file ends in colon,
Richard M. Stallman <rms@gnu.org>
parents: 72716
diff changeset
2332 (not (string= new-dir-name default-directory))
59243837a57a (dired-build-subdir-alist): When file ends in colon,
Richard M. Stallman <rms@gnu.org>
parents: 72716
diff changeset
2333 (string-match R-ftp-base-dir-regex new-dir-name))
59243837a57a (dired-build-subdir-alist): When file ends in colon,
Richard M. Stallman <rms@gnu.org>
parents: 72716
diff changeset
2334 (concat default-directory
59243837a57a (dired-build-subdir-alist): When file ends in colon,
Richard M. Stallman <rms@gnu.org>
parents: 72716
diff changeset
2335 (substring new-dir-name (match-end 0)))
59243837a57a (dired-build-subdir-alist): When file ends in colon,
Richard M. Stallman <rms@gnu.org>
parents: 72716
diff changeset
2336 (expand-file-name new-dir-name))))
59243837a57a (dired-build-subdir-alist): When file ends in colon,
Richard M. Stallman <rms@gnu.org>
parents: 72716
diff changeset
2337 (delete-region (point) (match-end 1))
73211
dae82b8b0355 (dired-build-subdir-alist): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 73099
diff changeset
2338 (insert new-dir-name))
dae82b8b0355 (dired-build-subdir-alist): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 73099
diff changeset
2339 (setq count (1+ count))
dae82b8b0355 (dired-build-subdir-alist): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 73099
diff changeset
2340 (dired-alist-add-1 new-dir-name
dae82b8b0355 (dired-build-subdir-alist): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 73099
diff changeset
2341 ;; Place a sub directory boundary between lines.
dae82b8b0355 (dired-build-subdir-alist): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 73099
diff changeset
2342 (save-excursion
dae82b8b0355 (dired-build-subdir-alist): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 73099
diff changeset
2343 (goto-char (match-beginning 0))
dae82b8b0355 (dired-build-subdir-alist): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 73099
diff changeset
2344 (beginning-of-line)
dae82b8b0355 (dired-build-subdir-alist): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 73099
diff changeset
2345 (point-marker)))))
55937
0edea1c45ca9 (dired-subdir-switches, dired-switches-alist): New vars.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55862
diff changeset
2346 (if (and (> count 1) (interactive-p))
73099
59243837a57a (dired-build-subdir-alist): When file ends in colon,
Richard M. Stallman <rms@gnu.org>
parents: 72716
diff changeset
2347 (message "Buffer includes %d directories" count)))
59243837a57a (dired-build-subdir-alist): When file ends in colon,
Richard M. Stallman <rms@gnu.org>
parents: 72716
diff changeset
2348 ;; We don't need to sort it because it is in buffer order per
59243837a57a (dired-build-subdir-alist): When file ends in colon,
Richard M. Stallman <rms@gnu.org>
parents: 72716
diff changeset
2349 ;; constructionem. Return new alist:
59243837a57a (dired-build-subdir-alist): When file ends in colon,
Richard M. Stallman <rms@gnu.org>
parents: 72716
diff changeset
2350 dired-subdir-alist))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2351
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2352 (defun dired-alist-add-1 (dir new-marker)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2353 ;; Add new DIR at NEW-MARKER. Don't sort.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2354 (setq dired-subdir-alist
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2355 (cons (cons (dired-normalize-subdir dir) new-marker)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2356 dired-subdir-alist)))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2357
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2358 (defun dired-goto-next-nontrivial-file ()
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2359 ;; Position point on first nontrivial file after point.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2360 (dired-goto-next-file);; so there is a file to compare with
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2361 (if (stringp dired-trivial-filenames)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2362 (while (and (not (eobp))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2363 (string-match dired-trivial-filenames
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2364 (file-name-nondirectory
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2365 (or (dired-get-filename nil t) ""))))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2366 (forward-line 1)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2367 (dired-move-to-filename))))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2368
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2369 (defun dired-goto-next-file ()
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2370 (let ((max (1- (dired-subdir-max))))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2371 (while (and (not (dired-move-to-filename)) (< (point) max))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2372 (forward-line 1))))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2373
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2374 (defun dired-goto-file (file)
70802
e1bfa36494e2 (dired-mode-map): Put dired-goto-file on j, not M-g.
Richard M. Stallman <rms@gnu.org>
parents: 69783
diff changeset
2375 "Go to line describing file FILE in this dired buffer."
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2376 ;; Return value of point on success, else nil.
49243
15dce98a38b0 Doc fixes.
Kim F. Storm <storm@cua.dk>
parents: 49138
diff changeset
2377 ;; FILE must be an absolute file name.
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2378 ;; Loses if FILE contains control chars like "\007" for which ls
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2379 ;; either inserts "?" or "\\007" into the buffer, so we won't find
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2380 ;; it in the buffer.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2381 (interactive
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2382 (prog1 ; let push-mark display its message
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2383 (list (expand-file-name
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2384 (read-file-name "Goto file: "
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2385 (dired-current-directory))))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2386 (push-mark)))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2387 (setq file (directory-file-name file)) ; does no harm if no directory
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2388 (let (found case-fold-search dir)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2389 (setq dir (or (file-name-directory file)
48986
5f0ef23b7e51 (dired-goto-file): Handle \ and ^M quoted by backslash. Fix error message.
Richard M. Stallman <rms@gnu.org>
parents: 48903
diff changeset
2390 (error "File name `%s' is not absolute" file)))
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2391 (save-excursion
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2392 ;; The hair here is to get the result of dired-goto-subdir
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2393 ;; without really calling it if we don't have any subdirs.
5299
883c241eed1b (dired-in-this-tree): Call expand-file-name.
Richard M. Stallman <rms@gnu.org>
parents: 5115
diff changeset
2394 (if (if (string= dir (expand-file-name default-directory))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2395 (goto-char (point-min))
1170
54a44b2b9591 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1130
diff changeset
2396 (and (cdr dired-subdir-alist)
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2397 (dired-goto-subdir dir)))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2398 (let ((base (file-name-nondirectory file))
48986
5f0ef23b7e51 (dired-goto-file): Handle \ and ^M quoted by backslash. Fix error message.
Richard M. Stallman <rms@gnu.org>
parents: 48903
diff changeset
2399 search-string
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2400 (boundary (dired-subdir-max)))
48986
5f0ef23b7e51 (dired-goto-file): Handle \ and ^M quoted by backslash. Fix error message.
Richard M. Stallman <rms@gnu.org>
parents: 48903
diff changeset
2401 (setq search-string
5f0ef23b7e51 (dired-goto-file): Handle \ and ^M quoted by backslash. Fix error message.
Richard M. Stallman <rms@gnu.org>
parents: 48903
diff changeset
2402 (replace-regexp-in-string "\^m" "\\^m" base nil t))
5f0ef23b7e51 (dired-goto-file): Handle \ and ^M quoted by backslash. Fix error message.
Richard M. Stallman <rms@gnu.org>
parents: 48903
diff changeset
2403 (setq search-string
5f0ef23b7e51 (dired-goto-file): Handle \ and ^M quoted by backslash. Fix error message.
Richard M. Stallman <rms@gnu.org>
parents: 48903
diff changeset
2404 (replace-regexp-in-string "\\\\" "\\\\" search-string nil t))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2405 (while (and (not found)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2406 ;; filenames are preceded by SPC, this makes
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2407 ;; the search faster (e.g. for the filename "-"!).
48986
5f0ef23b7e51 (dired-goto-file): Handle \ and ^M quoted by backslash. Fix error message.
Richard M. Stallman <rms@gnu.org>
parents: 48903
diff changeset
2408 (search-forward (concat " " search-string)
5f0ef23b7e51 (dired-goto-file): Handle \ and ^M quoted by backslash. Fix error message.
Richard M. Stallman <rms@gnu.org>
parents: 48903
diff changeset
2409 boundary 'move))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2410 ;; Match could have BASE just as initial substring or
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2411 ;; or in permission bits or date or
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2412 ;; not be a proper filename at all:
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2413 (if (equal base (dired-get-filename 'no-dir t))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2414 ;; Must move to filename since an (actually
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2415 ;; correct) match could have been elsewhere on the
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2416 ;; ;; line (e.g. "-" would match somewhere in the
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2417 ;; permission bits).
5115
da6f8aa6c0aa (dired-goto-file): Don't try matching one line twice.
Richard M. Stallman <rms@gnu.org>
parents: 5113
diff changeset
2418 (setq found (dired-move-to-filename))
da6f8aa6c0aa (dired-goto-file): Don't try matching one line twice.
Richard M. Stallman <rms@gnu.org>
parents: 5113
diff changeset
2419 ;; If this isn't the right line, move forward to avoid
da6f8aa6c0aa (dired-goto-file): Don't try matching one line twice.
Richard M. Stallman <rms@gnu.org>
parents: 5113
diff changeset
2420 ;; trying this line again.
da6f8aa6c0aa (dired-goto-file): Don't try matching one line twice.
Richard M. Stallman <rms@gnu.org>
parents: 5113
diff changeset
2421 (forward-line 1))))))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2422 (and found
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2423 ;; return value of point (i.e., FOUND):
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2424 (goto-char found))))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2425
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2426 (defun dired-initial-position (dirname)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2427 ;; Where point should go in a new listing of DIRNAME.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2428 ;; Point assumed at beginning of new subdir line.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2429 ;; You may redefine this function as you wish, e.g. like in dired-x.el.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2430 (end-of-line)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2431 (if dired-trivial-filenames (dired-goto-next-nontrivial-file)))
35607
5b26cd3356a1 Revert last change.
Dave Love <fx@gnu.org>
parents: 35522
diff changeset
2432
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2433 ;; These are hooks which make tree dired work.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2434 ;; They are in this file because other parts of dired need to call them.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2435 ;; But they don't call the rest of tree dired unless there are subdirs loaded.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2436
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2437 ;; This function is called for each retrieved filename.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2438 ;; It could stand to be faster, though it's mostly function call
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2439 ;; overhead. Avoiding the function call seems to save about 10% in
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2440 ;; dired-get-filename. Make it a defsubst?
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2441 (defun dired-current-directory (&optional localp)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2442 "Return the name of the subdirectory to which this line belongs.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2443 This returns a string with trailing slash, like `default-directory'.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2444 Optional argument means return a file name relative to `default-directory'."
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2445 (let ((here (point))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2446 (alist (or dired-subdir-alist
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2447 ;; probably because called in a non-dired buffer
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2448 (error "No subdir-alist in %s" (current-buffer))))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2449 elt dir)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2450 (while alist
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2451 (setq elt (car alist)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2452 dir (car elt)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2453 ;; use `<=' (not `<') as subdir line is part of subdir
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2454 alist (if (<= (dired-get-subdir-min elt) here)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2455 nil ; found
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2456 (cdr alist))))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2457 (if localp
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2458 (dired-make-relative dir default-directory)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2459 dir)))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2460
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2461 ;; Subdirs start at the beginning of their header lines and end just
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2462 ;; before the beginning of the next header line (or end of buffer).
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2463
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2464 (defun dired-subdir-max ()
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2465 (save-excursion
1170
54a44b2b9591 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1130
diff changeset
2466 (if (or (null (cdr dired-subdir-alist)) (not (dired-next-subdir 1 t t)))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2467 (point-max)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2468 (point))))
35607
5b26cd3356a1 Revert last change.
Dave Love <fx@gnu.org>
parents: 35522
diff changeset
2469
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2470 ;; Deleting files
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2471
77984
b4683039515d (dired-recursive-deletes, dired-recursive-copies): Change default to
Chong Yidong <cyd@stupidchicken.com>
parents: 77982
diff changeset
2472 (defcustom dired-recursive-deletes 'top
25731
62a49653ef38 (dired-recursive-deletes): New custom variable.
Richard M. Stallman <rms@gnu.org>
parents: 25558
diff changeset
2473 "*Decide whether recursive deletes are allowed.
77709
fe66dc682a15 (dired-recursive-deletes, dired-recursive-copies): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents: 77402
diff changeset
2474 A value of nil means no recursive deletes.
25731
62a49653ef38 (dired-recursive-deletes): New custom variable.
Richard M. Stallman <rms@gnu.org>
parents: 25558
diff changeset
2475 `always' means delete recursively without asking. This is DANGEROUS!
62a49653ef38 (dired-recursive-deletes): New custom variable.
Richard M. Stallman <rms@gnu.org>
parents: 25558
diff changeset
2476 `top' means ask for each directory at top level, but delete its subdirectories
62a49653ef38 (dired-recursive-deletes): New custom variable.
Richard M. Stallman <rms@gnu.org>
parents: 25558
diff changeset
2477 without asking.
62a49653ef38 (dired-recursive-deletes): New custom variable.
Richard M. Stallman <rms@gnu.org>
parents: 25558
diff changeset
2478 Anything else means ask for each directory."
49068
a6b76c097634 (dired-recursive-deletes): Fix custom type.
Richard M. Stallman <rms@gnu.org>
parents: 48986
diff changeset
2479 :type '(choice :tag "Delete non-empty directories"
a6b76c097634 (dired-recursive-deletes): Fix custom type.
Richard M. Stallman <rms@gnu.org>
parents: 48986
diff changeset
2480 (const :tag "Yes" always)
a6b76c097634 (dired-recursive-deletes): Fix custom type.
Richard M. Stallman <rms@gnu.org>
parents: 48986
diff changeset
2481 (const :tag "No--only delete empty directories" nil)
a6b76c097634 (dired-recursive-deletes): Fix custom type.
Richard M. Stallman <rms@gnu.org>
parents: 48986
diff changeset
2482 (const :tag "Confirm for each directory" t)
a6b76c097634 (dired-recursive-deletes): Fix custom type.
Richard M. Stallman <rms@gnu.org>
parents: 48986
diff changeset
2483 (const :tag "Confirm for each top directory only" top))
25731
62a49653ef38 (dired-recursive-deletes): New custom variable.
Richard M. Stallman <rms@gnu.org>
parents: 25558
diff changeset
2484 :group 'dired)
62a49653ef38 (dired-recursive-deletes): New custom variable.
Richard M. Stallman <rms@gnu.org>
parents: 25558
diff changeset
2485
49549
99be3a1e2589 Cygwin support patch.
Juanma Barranquero <lekktu@gmail.com>
parents: 49243
diff changeset
2486 ;; Match anything but `.' and `..'.
25731
62a49653ef38 (dired-recursive-deletes): New custom variable.
Richard M. Stallman <rms@gnu.org>
parents: 25558
diff changeset
2487 (defvar dired-re-no-dot "^\\([^.]\\|\\.\\([^.]\\|\\..\\)\\).*")
62a49653ef38 (dired-recursive-deletes): New custom variable.
Richard M. Stallman <rms@gnu.org>
parents: 25558
diff changeset
2488
62a49653ef38 (dired-recursive-deletes): New custom variable.
Richard M. Stallman <rms@gnu.org>
parents: 25558
diff changeset
2489 ;; Delete file, possibly delete a directory and all its files.
62a49653ef38 (dired-recursive-deletes): New custom variable.
Richard M. Stallman <rms@gnu.org>
parents: 25558
diff changeset
2490 ;; This function is usefull outside of dired. One could change it's name
62a49653ef38 (dired-recursive-deletes): New custom variable.
Richard M. Stallman <rms@gnu.org>
parents: 25558
diff changeset
2491 ;; to e.g. recursive-delete-file and put it somewhere else.
62a49653ef38 (dired-recursive-deletes): New custom variable.
Richard M. Stallman <rms@gnu.org>
parents: 25558
diff changeset
2492 (defun dired-delete-file (file &optional recursive) "\
62a49653ef38 (dired-recursive-deletes): New custom variable.
Richard M. Stallman <rms@gnu.org>
parents: 25558
diff changeset
2493 Delete FILE or directory (possibly recursively if optional RECURSIVE is true.)
62a49653ef38 (dired-recursive-deletes): New custom variable.
Richard M. Stallman <rms@gnu.org>
parents: 25558
diff changeset
2494 RECURSIVE determines what to do with a non-empty directory. If RECURSIVE is:
64531
733da358f853 (dired-align-file, dired-flag-backup-files, dired-change-marks,
Juanma Barranquero <lekktu@gmail.com>
parents: 64442
diff changeset
2495 nil, do not delete.
25731
62a49653ef38 (dired-recursive-deletes): New custom variable.
Richard M. Stallman <rms@gnu.org>
parents: 25558
diff changeset
2496 `always', delete recursively without asking.
62a49653ef38 (dired-recursive-deletes): New custom variable.
Richard M. Stallman <rms@gnu.org>
parents: 25558
diff changeset
2497 `top', ask for each directory at top level.
62a49653ef38 (dired-recursive-deletes): New custom variable.
Richard M. Stallman <rms@gnu.org>
parents: 25558
diff changeset
2498 Anything else, ask for each sub-directory."
62a49653ef38 (dired-recursive-deletes): New custom variable.
Richard M. Stallman <rms@gnu.org>
parents: 25558
diff changeset
2499 (let (files)
62a49653ef38 (dired-recursive-deletes): New custom variable.
Richard M. Stallman <rms@gnu.org>
parents: 25558
diff changeset
2500 ;; This test is equivalent to
62a49653ef38 (dired-recursive-deletes): New custom variable.
Richard M. Stallman <rms@gnu.org>
parents: 25558
diff changeset
2501 ;; (and (file-directory-p fn) (not (file-symlink-p fn)))
62a49653ef38 (dired-recursive-deletes): New custom variable.
Richard M. Stallman <rms@gnu.org>
parents: 25558
diff changeset
2502 ;; but more efficient
62a49653ef38 (dired-recursive-deletes): New custom variable.
Richard M. Stallman <rms@gnu.org>
parents: 25558
diff changeset
2503 (if (not (eq t (car (file-attributes file))))
62a49653ef38 (dired-recursive-deletes): New custom variable.
Richard M. Stallman <rms@gnu.org>
parents: 25558
diff changeset
2504 (delete-file file)
62a49653ef38 (dired-recursive-deletes): New custom variable.
Richard M. Stallman <rms@gnu.org>
parents: 25558
diff changeset
2505 (when (and recursive
62a49653ef38 (dired-recursive-deletes): New custom variable.
Richard M. Stallman <rms@gnu.org>
parents: 25558
diff changeset
2506 (setq files
62a49653ef38 (dired-recursive-deletes): New custom variable.
Richard M. Stallman <rms@gnu.org>
parents: 25558
diff changeset
2507 (directory-files file t dired-re-no-dot)) ; Not empty.
62a49653ef38 (dired-recursive-deletes): New custom variable.
Richard M. Stallman <rms@gnu.org>
parents: 25558
diff changeset
2508 (or (eq recursive 'always)
65689
96187e7edd1b 2005-09-25 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 65249
diff changeset
2509 (yes-or-no-p (format "Recursive delete of %s? "
25731
62a49653ef38 (dired-recursive-deletes): New custom variable.
Richard M. Stallman <rms@gnu.org>
parents: 25558
diff changeset
2510 (dired-make-relative file)))))
62a49653ef38 (dired-recursive-deletes): New custom variable.
Richard M. Stallman <rms@gnu.org>
parents: 25558
diff changeset
2511 (if (eq recursive 'top) (setq recursive 'always)) ; Don't ask again.
62a49653ef38 (dired-recursive-deletes): New custom variable.
Richard M. Stallman <rms@gnu.org>
parents: 25558
diff changeset
2512 (while files ; Recursively delete (possibly asking).
62a49653ef38 (dired-recursive-deletes): New custom variable.
Richard M. Stallman <rms@gnu.org>
parents: 25558
diff changeset
2513 (dired-delete-file (car files) recursive)
62a49653ef38 (dired-recursive-deletes): New custom variable.
Richard M. Stallman <rms@gnu.org>
parents: 25558
diff changeset
2514 (setq files (cdr files))))
62a49653ef38 (dired-recursive-deletes): New custom variable.
Richard M. Stallman <rms@gnu.org>
parents: 25558
diff changeset
2515 (delete-directory file))))
62a49653ef38 (dired-recursive-deletes): New custom variable.
Richard M. Stallman <rms@gnu.org>
parents: 25558
diff changeset
2516
12736
a7253dcf5f9d (dired-insert-set-properties): Catch errors.
Richard M. Stallman <rms@gnu.org>
parents: 12211
diff changeset
2517 (defun dired-do-flagged-delete (&optional nomessage)
40950
4bc87462585c Many trivial doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 40818
diff changeset
2518 "In Dired, delete the files flagged for deletion.
12736
a7253dcf5f9d (dired-insert-set-properties): Catch errors.
Richard M. Stallman <rms@gnu.org>
parents: 12211
diff changeset
2519 If NOMESSAGE is non-nil, we don't display any message
77841
d582a9f8e632 (dired-do-delete, dired-do-flagged-delete): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 77709
diff changeset
2520 if there are no flagged files.
82195
69abb81564e4 (dired-mode-map): Bind C-x C-q to dired-toggle-read-only.
Juri Linkov <juri@jurta.org>
parents: 82140
diff changeset
2521 `dired-recursive-deletes' controls whether deletion of
69abb81564e4 (dired-mode-map): Bind C-x C-q to dired-toggle-read-only.
Juri Linkov <juri@jurta.org>
parents: 82140
diff changeset
2522 non-empty directories is allowed."
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2523 (interactive)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2524 (let* ((dired-marker-char dired-del-marker)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2525 (regexp (dired-marker-regexp))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2526 case-fold-search)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2527 (if (save-excursion (goto-char (point-min))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2528 (re-search-forward regexp nil t))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2529 (dired-internal-do-deletions
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2530 ;; this can't move point since ARG is nil
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2531 (dired-map-over-marks (cons (dired-get-filename) (point))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2532 nil)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2533 nil)
12736
a7253dcf5f9d (dired-insert-set-properties): Catch errors.
Richard M. Stallman <rms@gnu.org>
parents: 12211
diff changeset
2534 (or nomessage
a7253dcf5f9d (dired-insert-set-properties): Catch errors.
Richard M. Stallman <rms@gnu.org>
parents: 12211
diff changeset
2535 (message "(No deletions requested)")))))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2536
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2537 (defun dired-do-delete (&optional arg)
77841
d582a9f8e632 (dired-do-delete, dired-do-flagged-delete): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 77709
diff changeset
2538 "Delete all marked (or next ARG) files.
82195
69abb81564e4 (dired-mode-map): Bind C-x C-q to dired-toggle-read-only.
Juri Linkov <juri@jurta.org>
parents: 82140
diff changeset
2539 `dired-recursive-deletes' controls whether deletion of
69abb81564e4 (dired-mode-map): Bind C-x C-q to dired-toggle-read-only.
Juri Linkov <juri@jurta.org>
parents: 82140
diff changeset
2540 non-empty directories is allowed."
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2541 ;; This is more consistent with the file marking feature than
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2542 ;; dired-do-flagged-delete.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2543 (interactive "P")
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2544 (dired-internal-do-deletions
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2545 ;; this may move point if ARG is an integer
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2546 (dired-map-over-marks (cons (dired-get-filename) (point))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2547 arg)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2548 arg))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2549
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2550 (defvar dired-deletion-confirmer 'yes-or-no-p) ; or y-or-n-p?
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2551
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2552 (defun dired-internal-do-deletions (l arg)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2553 ;; L is an alist of files to delete, with their buffer positions.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2554 ;; ARG is the prefix arg.
97142
c3512b2085a0 * bitmaps/README:
Dan Nicolaescu <dann@ics.uci.edu>
parents: 97088
diff changeset
2555 ;; Filenames are absolute.
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2556 ;; (car L) *must* be the *last* (bottommost) file in the dired buffer.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2557 ;; That way as changes are made in the buffer they do not shift the
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2558 ;; lines still to be changed, so the (point) values in L stay valid.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2559 ;; Also, for subdirs in natural order, a subdir's files are deleted
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2560 ;; before the subdir itself - the other way around would not work.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2561 (let ((files (mapcar (function car) l))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2562 (count (length l))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2563 (succ 0))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2564 ;; canonicalize file list for pop up
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2565 (setq files (nreverse (mapcar (function dired-make-relative) files)))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2566 (if (dired-mark-pop-up
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2567 " *Deletions*" 'delete files dired-deletion-confirmer
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2568 (format "Delete %s " (dired-mark-prompt arg files)))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2569 (save-excursion
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2570 (let (failures);; files better be in reverse order for this loop!
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2571 (while l
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2572 (goto-char (cdr (car l)))
94889
e80a3956601b (dired-read-dir-and-switches): Ignore ., .., and
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
2573 (let ((inhibit-read-only t))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2574 (condition-case err
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2575 (let ((fn (car (car l))))
25731
62a49653ef38 (dired-recursive-deletes): New custom variable.
Richard M. Stallman <rms@gnu.org>
parents: 25558
diff changeset
2576 (dired-delete-file fn dired-recursive-deletes)
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2577 ;; if we get here, removing worked
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2578 (setq succ (1+ succ))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2579 (message "%s of %s deletions" succ count)
43903
9978ea345d85 (dired-readin): Clear out undo list.
Richard M. Stallman <rms@gnu.org>
parents: 43131
diff changeset
2580 (dired-fun-in-all-buffers
9978ea345d85 (dired-readin): Clear out undo list.
Richard M. Stallman <rms@gnu.org>
parents: 43131
diff changeset
2581 (file-name-directory fn) (file-name-nondirectory fn)
9978ea345d85 (dired-readin): Clear out undo list.
Richard M. Stallman <rms@gnu.org>
parents: 43131
diff changeset
2582 (function dired-delete-entry) fn))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2583 (error;; catch errors from failed deletions
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2584 (dired-log "%s\n" err)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2585 (setq failures (cons (car (car l)) failures)))))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2586 (setq l (cdr l)))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2587 (if (not failures)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2588 (message "%d deletion%s done" count (dired-plural-s count))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2589 (dired-log-summary
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2590 (format "%d of %d deletion%s failed"
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2591 (length failures) count
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2592 (dired-plural-s count))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2593 failures))))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2594 (message "(No deletions performed)")))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2595 (dired-move-to-filename))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2596
43903
9978ea345d85 (dired-readin): Clear out undo list.
Richard M. Stallman <rms@gnu.org>
parents: 43131
diff changeset
2597 (defun dired-fun-in-all-buffers (directory file fun &rest args)
9978ea345d85 (dired-readin): Clear out undo list.
Richard M. Stallman <rms@gnu.org>
parents: 43131
diff changeset
2598 ;; In all buffers dired'ing DIRECTORY, run FUN with ARGS.
9978ea345d85 (dired-readin): Clear out undo list.
Richard M. Stallman <rms@gnu.org>
parents: 43131
diff changeset
2599 ;; If the buffer has a wildcard pattern, check that it matches FILE.
9978ea345d85 (dired-readin): Clear out undo list.
Richard M. Stallman <rms@gnu.org>
parents: 43131
diff changeset
2600 ;; (FILE does not include a directory component.)
9978ea345d85 (dired-readin): Clear out undo list.
Richard M. Stallman <rms@gnu.org>
parents: 43131
diff changeset
2601 ;; FILE may be nil, in which case ignore it.
9978ea345d85 (dired-readin): Clear out undo list.
Richard M. Stallman <rms@gnu.org>
parents: 43131
diff changeset
2602 ;; Return list of buffers where FUN succeeded (i.e., returned non-nil).
9978ea345d85 (dired-readin): Clear out undo list.
Richard M. Stallman <rms@gnu.org>
parents: 43131
diff changeset
2603 (let (success-list)
9978ea345d85 (dired-readin): Clear out undo list.
Richard M. Stallman <rms@gnu.org>
parents: 43131
diff changeset
2604 (dolist (buf (dired-buffers-for-dir (expand-file-name directory)
9978ea345d85 (dired-readin): Clear out undo list.
Richard M. Stallman <rms@gnu.org>
parents: 43131
diff changeset
2605 file))
9978ea345d85 (dired-readin): Clear out undo list.
Richard M. Stallman <rms@gnu.org>
parents: 43131
diff changeset
2606 (with-current-buffer buf
9978ea345d85 (dired-readin): Clear out undo list.
Richard M. Stallman <rms@gnu.org>
parents: 43131
diff changeset
2607 (if (apply fun args)
9978ea345d85 (dired-readin): Clear out undo list.
Richard M. Stallman <rms@gnu.org>
parents: 43131
diff changeset
2608 (setq success-list (cons (buffer-name buf) success-list)))))
9978ea345d85 (dired-readin): Clear out undo list.
Richard M. Stallman <rms@gnu.org>
parents: 43131
diff changeset
2609 success-list))
9978ea345d85 (dired-readin): Clear out undo list.
Richard M. Stallman <rms@gnu.org>
parents: 43131
diff changeset
2610
49549
99be3a1e2589 Cygwin support patch.
Juanma Barranquero <lekktu@gmail.com>
parents: 49243
diff changeset
2611 ;; Delete the entry for FILE from
43903
9978ea345d85 (dired-readin): Clear out undo list.
Richard M. Stallman <rms@gnu.org>
parents: 43131
diff changeset
2612 (defun dired-delete-entry (file)
9978ea345d85 (dired-readin): Clear out undo list.
Richard M. Stallman <rms@gnu.org>
parents: 43131
diff changeset
2613 (save-excursion
9978ea345d85 (dired-readin): Clear out undo list.
Richard M. Stallman <rms@gnu.org>
parents: 43131
diff changeset
2614 (and (dired-goto-file file)
94889
e80a3956601b (dired-read-dir-and-switches): Ignore ., .., and
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
2615 (let ((inhibit-read-only t))
43903
9978ea345d85 (dired-readin): Clear out undo list.
Richard M. Stallman <rms@gnu.org>
parents: 43131
diff changeset
2616 (delete-region (progn (beginning-of-line) (point))
9978ea345d85 (dired-readin): Clear out undo list.
Richard M. Stallman <rms@gnu.org>
parents: 43131
diff changeset
2617 (save-excursion (forward-line 1) (point))))))
9978ea345d85 (dired-readin): Clear out undo list.
Richard M. Stallman <rms@gnu.org>
parents: 43131
diff changeset
2618 (dired-clean-up-after-deletion file))
9978ea345d85 (dired-readin): Clear out undo list.
Richard M. Stallman <rms@gnu.org>
parents: 43131
diff changeset
2619
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2620 ;; This is a separate function for the sake of dired-x.el.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2621 (defun dired-clean-up-after-deletion (fn)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2622 ;; Clean up after a deleted file or directory FN.
1170
54a44b2b9591 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1130
diff changeset
2623 (save-excursion (and (cdr dired-subdir-alist)
54a44b2b9591 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1130
diff changeset
2624 (dired-goto-subdir fn)
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2625 (dired-kill-subdir))))
35607
5b26cd3356a1 Revert last change.
Dave Love <fx@gnu.org>
parents: 35522
diff changeset
2626
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2627 ;; Confirmation
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2628
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2629 (defun dired-marker-regexp ()
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2630 (concat "^" (regexp-quote (char-to-string dired-marker-char))))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2631
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2632 (defun dired-plural-s (count)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2633 (if (= 1 count) "" "s"))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2634
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2635 (defun dired-mark-prompt (arg files)
80177
8de8dd7c8cb4 (dired-mark-prompt): Don't count/display the t element.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
2636 "Return a string for use in a prompt, either the current file
8de8dd7c8cb4 (dired-mark-prompt): Don't count/display the t element.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
2637 name, or the marker and a count of marked files."
8de8dd7c8cb4 (dired-mark-prompt): Don't count/display the t element.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
2638 ;; distinguish-one-marked can cause the first element to be just t.
8de8dd7c8cb4 (dired-mark-prompt): Don't count/display the t element.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
2639 (if (eq (car files) t) (setq files (cdr files)))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2640 (let ((count (length files)))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2641 (if (= count 1)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2642 (car files)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2643 ;; more than 1 file:
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2644 (if (integerp arg)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2645 ;; abs(arg) = count
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2646 ;; Perhaps this is nicer, but it also takes more screen space:
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2647 ;;(format "[%s %d files]" (if (> arg 0) "next" "previous")
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2648 ;; count)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2649 (format "[next %d files]" arg)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2650 (format "%c [%d files]" dired-marker-char count)))))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2651
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2652 (defun dired-pop-to-buffer (buf)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2653 ;; Pop up buffer BUF.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2654 ;; If dired-shrink-to-fit is t, make its window fit its contents.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2655 (if (not dired-shrink-to-fit)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2656 (pop-to-buffer (get-buffer-create buf))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2657 ;; let window shrink to fit:
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2658 (let ((window (selected-window))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2659 target-lines w2)
44061
f816ded285dd Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 43903
diff changeset
2660 (cond ;; if split-height-threshold is enabled, use the largest window
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2661 ((and (> (window-height (setq w2 (get-largest-window)))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2662 split-height-threshold)
78462
49b138bd37ef Use window-full-width-p instead of comparing frame-width and
Martin Rudalics <rudalics@gmx.at>
parents: 78236
diff changeset
2663 (window-full-width-p w2))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2664 (setq window w2))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2665 ;; if the least-recently-used window is big enough, use it
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2666 ((and (> (window-height (setq w2 (get-lru-window)))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2667 (* 2 window-min-height))
78462
49b138bd37ef Use window-full-width-p instead of comparing frame-width and
Martin Rudalics <rudalics@gmx.at>
parents: 78236
diff changeset
2668 (window-full-width-p w2))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2669 (setq window w2)))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2670 (save-excursion
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2671 (set-buffer buf)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2672 (goto-char (point-max))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2673 (skip-chars-backward "\n\r\t ")
2466
e766b88d67ce (dired-pop-to-buffer): Adjust count-lines val for last line.
Richard M. Stallman <rms@gnu.org>
parents: 2458
diff changeset
2674 (setq target-lines (count-lines (point-min) (point)))
e766b88d67ce (dired-pop-to-buffer): Adjust count-lines val for last line.
Richard M. Stallman <rms@gnu.org>
parents: 2458
diff changeset
2675 ;; Don't forget to count the last line.
e766b88d67ce (dired-pop-to-buffer): Adjust count-lines val for last line.
Richard M. Stallman <rms@gnu.org>
parents: 2458
diff changeset
2676 (if (not (bolp))
e766b88d67ce (dired-pop-to-buffer): Adjust count-lines val for last line.
Richard M. Stallman <rms@gnu.org>
parents: 2458
diff changeset
2677 (setq target-lines (1+ target-lines))))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2678 (if (<= (window-height window) (* 2 window-min-height))
778
cd00bdacc17b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 723
diff changeset
2679 ;; At this point, every window on the frame is too small to split.
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2680 (setq w2 (display-buffer buf))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2681 (setq w2 (split-window window
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2682 (max window-min-height
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2683 (- (window-height window)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2684 (1+ (max window-min-height target-lines)))))))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2685 (set-window-buffer w2 buf)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2686 (if (< (1- (window-height w2)) target-lines)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2687 (progn
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2688 (select-window w2)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2689 (enlarge-window (- target-lines (1- (window-height w2))))))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2690 (set-window-start w2 1)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2691 )))
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2692
68267
45d760802689 (dired-move-to-filename-regexp): Define as alias.
Richard M. Stallman <rms@gnu.org>
parents: 66325
diff changeset
2693 (defcustom dired-no-confirm nil
64531
733da358f853 (dired-align-file, dired-flag-backup-files, dired-change-marks,
Juanma Barranquero <lekktu@gmail.com>
parents: 64442
diff changeset
2694 "A list of symbols for commands Dired should not confirm.
17198
471ce207330c Doc dired-no-confirm and allow t value.
Simon Marshall <simon@gnu.org>
parents: 17079
diff changeset
2695 Command symbols are `byte-compile', `chgrp', `chmod', `chown', `compress',
54663
9b0161392fe1 Add autoload for `dired-do-touch'.
Juri Linkov <juri@jurta.org>
parents: 54661
diff changeset
2696 `copy', `delete', `hardlink', `load', `move', `print', `shell', `symlink',
68267
45d760802689 (dired-move-to-filename-regexp): Define as alias.
Richard M. Stallman <rms@gnu.org>
parents: 66325
diff changeset
2697 `touch' and `uncompress'."
45d760802689 (dired-move-to-filename-regexp): Define as alias.
Richard M. Stallman <rms@gnu.org>
parents: 66325
diff changeset
2698 :group 'dired
68273
9bccb5180c1b (dired-no-confirm): Add quote.
Luc Teirlinck <teirllm@auburn.edu>
parents: 68267
diff changeset
2699 :type '(set (const byte-compile) (const chgrp)
9bccb5180c1b (dired-no-confirm): Add quote.
Luc Teirlinck <teirllm@auburn.edu>
parents: 68267
diff changeset
2700 (const chmod) (const chown) (const compress)
9bccb5180c1b (dired-no-confirm): Add quote.
Luc Teirlinck <teirllm@auburn.edu>
parents: 68267
diff changeset
2701 (const copy) (const delete) (const hardlink)
9bccb5180c1b (dired-no-confirm): Add quote.
Luc Teirlinck <teirllm@auburn.edu>
parents: 68267
diff changeset
2702 (const load) (const move) (const print)
9bccb5180c1b (dired-no-confirm): Add quote.
Luc Teirlinck <teirllm@auburn.edu>
parents: 68267
diff changeset
2703 (const shell) (const symlink) (const touch)
9bccb5180c1b (dired-no-confirm): Add quote.
Luc Teirlinck <teirllm@auburn.edu>
parents: 68267
diff changeset
2704 (const uncompress)))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2705
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2706 (defun dired-mark-pop-up (bufname op-symbol files function &rest args)
47544
55087a54b990 (dired-mark-pop-up): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 47521
diff changeset
2707 "Return FUNCTION's result on ARGS after showing which files are marked.
55087a54b990 (dired-mark-pop-up): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 47521
diff changeset
2708 Displays the file names in a buffer named BUFNAME;
55087a54b990 (dired-mark-pop-up): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 47521
diff changeset
2709 nil gives \" *Marked Files*\".
55087a54b990 (dired-mark-pop-up): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 47521
diff changeset
2710 This uses function `dired-pop-to-buffer' to do that.
55087a54b990 (dired-mark-pop-up): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 47521
diff changeset
2711
55087a54b990 (dired-mark-pop-up): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 47521
diff changeset
2712 FUNCTION should not manipulate files, just read input
55087a54b990 (dired-mark-pop-up): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 47521
diff changeset
2713 (an argument or confirmation).
32149
504f15a7d36d (dired-mark-pop-up): Turn comment into docstring. Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32027
diff changeset
2714 The window is not shown if there is just one file or
504f15a7d36d (dired-mark-pop-up): Turn comment into docstring. Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32027
diff changeset
2715 OP-SYMBOL is a member of the list in `dired-no-confirm'.
62373
6b68d72075c1 (dired-map-over-marks): New arg distinguish-one-marked.
Richard M. Stallman <rms@gnu.org>
parents: 62298
diff changeset
2716 FILES is the list of marked files. It can also be (t FILENAME)
6b68d72075c1 (dired-map-over-marks): New arg distinguish-one-marked.
Richard M. Stallman <rms@gnu.org>
parents: 62298
diff changeset
2717 in the case of one marked file, to distinguish that from using
6b68d72075c1 (dired-map-over-marks): New arg distinguish-one-marked.
Richard M. Stallman <rms@gnu.org>
parents: 62298
diff changeset
2718 just the current file."
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2719 (or bufname (setq bufname " *Marked Files*"))
17198
471ce207330c Doc dired-no-confirm and allow t value.
Simon Marshall <simon@gnu.org>
parents: 17079
diff changeset
2720 (if (or (eq dired-no-confirm t)
471ce207330c Doc dired-no-confirm and allow t value.
Simon Marshall <simon@gnu.org>
parents: 17079
diff changeset
2721 (memq op-symbol dired-no-confirm)
62373
6b68d72075c1 (dired-map-over-marks): New arg distinguish-one-marked.
Richard M. Stallman <rms@gnu.org>
parents: 62298
diff changeset
2722 ;; If FILES defaulted to the current line's file.
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2723 (= (length files) 1))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2724 (apply function args)
32149
504f15a7d36d (dired-mark-pop-up): Turn comment into docstring. Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32027
diff changeset
2725 (with-current-buffer (get-buffer-create bufname)
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2726 (erase-buffer)
62373
6b68d72075c1 (dired-map-over-marks): New arg distinguish-one-marked.
Richard M. Stallman <rms@gnu.org>
parents: 62298
diff changeset
2727 ;; Handle (t FILE) just like (FILE), here.
6b68d72075c1 (dired-map-over-marks): New arg distinguish-one-marked.
Richard M. Stallman <rms@gnu.org>
parents: 62298
diff changeset
2728 ;; That value is used (only in some cases), to mean
6b68d72075c1 (dired-map-over-marks): New arg distinguish-one-marked.
Richard M. Stallman <rms@gnu.org>
parents: 62298
diff changeset
2729 ;; just one file that was marked, rather than the current line file.
6b68d72075c1 (dired-map-over-marks): New arg distinguish-one-marked.
Richard M. Stallman <rms@gnu.org>
parents: 62298
diff changeset
2730 (dired-format-columns-of-files (if (eq (car files) t) (cdr files) files))
38091
58a77e50831e (dired-mark-pop-up): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents: 38074
diff changeset
2731 (remove-text-properties (point-min) (point-max)
58a77e50831e (dired-mark-pop-up): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents: 38074
diff changeset
2732 '(mouse-face nil help-echo nil)))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2733 (save-window-excursion
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2734 (dired-pop-to-buffer bufname)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2735 (apply function args))))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2736
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2737 (defun dired-format-columns-of-files (files)
94562
46f178f2b009 (dired-format-columns-of-files): Use completion--insert-strings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94559
diff changeset
2738 (let ((beg (point)))
46f178f2b009 (dired-format-columns-of-files): Use completion--insert-strings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94559
diff changeset
2739 (completion--insert-strings files)
46f178f2b009 (dired-format-columns-of-files): Use completion--insert-strings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94559
diff changeset
2740 (put-text-property beg (point) 'mouse-face nil)))
35607
5b26cd3356a1 Revert last change.
Dave Love <fx@gnu.org>
parents: 35522
diff changeset
2741
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2742 ;; Commands to mark or flag file(s) at or near current line.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2743
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2744 (defun dired-repeat-over-lines (arg function)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2745 ;; This version skips non-file lines.
3737
8a0b09b3a24c (dired-repeat-over-lines): Going fwd, skip new lines
Richard M. Stallman <rms@gnu.org>
parents: 3633
diff changeset
2746 (let ((pos (make-marker)))
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2747 (beginning-of-line)
3737
8a0b09b3a24c (dired-repeat-over-lines): Going fwd, skip new lines
Richard M. Stallman <rms@gnu.org>
parents: 3633
diff changeset
2748 (while (and (> arg 0) (not (eobp)))
8a0b09b3a24c (dired-repeat-over-lines): Going fwd, skip new lines
Richard M. Stallman <rms@gnu.org>
parents: 3633
diff changeset
2749 (setq arg (1- arg))
8a0b09b3a24c (dired-repeat-over-lines): Going fwd, skip new lines
Richard M. Stallman <rms@gnu.org>
parents: 3633
diff changeset
2750 (beginning-of-line)
8a0b09b3a24c (dired-repeat-over-lines): Going fwd, skip new lines
Richard M. Stallman <rms@gnu.org>
parents: 3633
diff changeset
2751 (while (and (not (eobp)) (dired-between-files)) (forward-line 1))
8a0b09b3a24c (dired-repeat-over-lines): Going fwd, skip new lines
Richard M. Stallman <rms@gnu.org>
parents: 3633
diff changeset
2752 (save-excursion
8a0b09b3a24c (dired-repeat-over-lines): Going fwd, skip new lines
Richard M. Stallman <rms@gnu.org>
parents: 3633
diff changeset
2753 (forward-line 1)
8a0b09b3a24c (dired-repeat-over-lines): Going fwd, skip new lines
Richard M. Stallman <rms@gnu.org>
parents: 3633
diff changeset
2754 (move-marker pos (1+ (point))))
8a0b09b3a24c (dired-repeat-over-lines): Going fwd, skip new lines
Richard M. Stallman <rms@gnu.org>
parents: 3633
diff changeset
2755 (save-excursion (funcall function))
8a0b09b3a24c (dired-repeat-over-lines): Going fwd, skip new lines
Richard M. Stallman <rms@gnu.org>
parents: 3633
diff changeset
2756 ;; Advance to the next line--actually, to the line that *was* next.
8a0b09b3a24c (dired-repeat-over-lines): Going fwd, skip new lines
Richard M. Stallman <rms@gnu.org>
parents: 3633
diff changeset
2757 ;; (If FUNCTION inserted some new lines in between, skip them.)
8a0b09b3a24c (dired-repeat-over-lines): Going fwd, skip new lines
Richard M. Stallman <rms@gnu.org>
parents: 3633
diff changeset
2758 (goto-char pos))
8a0b09b3a24c (dired-repeat-over-lines): Going fwd, skip new lines
Richard M. Stallman <rms@gnu.org>
parents: 3633
diff changeset
2759 (while (and (< arg 0) (not (bobp)))
8a0b09b3a24c (dired-repeat-over-lines): Going fwd, skip new lines
Richard M. Stallman <rms@gnu.org>
parents: 3633
diff changeset
2760 (setq arg (1+ arg))
8a0b09b3a24c (dired-repeat-over-lines): Going fwd, skip new lines
Richard M. Stallman <rms@gnu.org>
parents: 3633
diff changeset
2761 (forward-line -1)
8a0b09b3a24c (dired-repeat-over-lines): Going fwd, skip new lines
Richard M. Stallman <rms@gnu.org>
parents: 3633
diff changeset
2762 (while (and (not (bobp)) (dired-between-files)) (forward-line -1))
8a0b09b3a24c (dired-repeat-over-lines): Going fwd, skip new lines
Richard M. Stallman <rms@gnu.org>
parents: 3633
diff changeset
2763 (beginning-of-line)
8a0b09b3a24c (dired-repeat-over-lines): Going fwd, skip new lines
Richard M. Stallman <rms@gnu.org>
parents: 3633
diff changeset
2764 (save-excursion (funcall function)))
8a0b09b3a24c (dired-repeat-over-lines): Going fwd, skip new lines
Richard M. Stallman <rms@gnu.org>
parents: 3633
diff changeset
2765 (move-marker pos nil)
8a0b09b3a24c (dired-repeat-over-lines): Going fwd, skip new lines
Richard M. Stallman <rms@gnu.org>
parents: 3633
diff changeset
2766 (dired-move-to-filename)))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2767
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2768 (defun dired-between-files ()
53224
f0eb34e60705 tag of miles@gnu.org--gnu-2003/emacs--cvs-trunk--0--patch-137
Karoly Lorentey <lorentey@elte.hu>
parents: 52973
diff changeset
2769 ;; This used to be a regexp match of the `total ...' line output by
f0eb34e60705 tag of miles@gnu.org--gnu-2003/emacs--cvs-trunk--0--patch-137
Karoly Lorentey <lorentey@elte.hu>
parents: 52973
diff changeset
2770 ;; ls, which is slightly faster, but that is not very robust; notably,
f0eb34e60705 tag of miles@gnu.org--gnu-2003/emacs--cvs-trunk--0--patch-137
Karoly Lorentey <lorentey@elte.hu>
parents: 52973
diff changeset
2771 ;; it fails for non-english locales.
f0eb34e60705 tag of miles@gnu.org--gnu-2003/emacs--cvs-trunk--0--patch-137
Karoly Lorentey <lorentey@elte.hu>
parents: 52973
diff changeset
2772 (save-excursion (not (dired-move-to-filename))))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2773
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2774 (defun dired-next-marked-file (arg &optional wrap opoint)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2775 "Move to the next marked file, wrapping around the end of the buffer."
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2776 (interactive "p\np")
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2777 (or opoint (setq opoint (point)));; return to where interactively started
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2778 (if (if (> arg 0)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2779 (re-search-forward dired-re-mark nil t arg)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2780 (beginning-of-line)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2781 (re-search-backward dired-re-mark nil t (- arg)))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2782 (dired-move-to-filename)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2783 (if (null wrap)
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2784 (progn
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2785 (goto-char opoint)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2786 (error "No next marked file"))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2787 (message "(Wraparound for next marked file)")
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2788 (goto-char (if (> arg 0) (point-min) (point-max)))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2789 (dired-next-marked-file arg nil opoint))))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2790
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2791 (defun dired-prev-marked-file (arg &optional wrap)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2792 "Move to the previous marked file, wrapping around the end of the buffer."
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2793 (interactive "p\np")
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2794 (dired-next-marked-file (- arg) wrap))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2795
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2796 (defun dired-file-marker (file)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2797 ;; Return FILE's marker, or nil if unmarked.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2798 (save-excursion
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2799 (and (dired-goto-file file)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2800 (progn
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2801 (beginning-of-line)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2802 (if (not (equal ?\040 (following-char)))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2803 (following-char))))))
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2804
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2805 (defun dired-mark-files-in-region (start end)
94889
e80a3956601b (dired-read-dir-and-switches): Ignore ., .., and
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
2806 (let ((inhibit-read-only t))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2807 (if (> start end)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2808 (error "start > end"))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2809 (goto-char start) ; assumed at beginning of line
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2810 (while (< (point) end)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2811 ;; Skip subdir line and following garbage like the `total' line:
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2812 (while (and (< (point) end) (dired-between-files))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2813 (forward-line 1))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2814 (if (and (not (looking-at dired-re-dot))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2815 (dired-get-filename nil t))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2816 (progn
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2817 (delete-char 1)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2818 (insert dired-marker-char)))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2819 (forward-line 1))))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2820
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2821 (defun dired-mark (arg)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2822 "Mark the current (or next ARG) files.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2823 If on a subdir headerline, mark all its files except `.' and `..'.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2824
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2825 Use \\[dired-unmark-all-files] to remove all marks
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2826 and \\[dired-unmark] on a subdir to remove the marks in
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2827 this subdir."
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2828 (interactive "P")
10710
d5d1393a26af (dired-mark): If on dir header line, always mark
Richard M. Stallman <rms@gnu.org>
parents: 10658
diff changeset
2829 (if (dired-get-subdir)
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2830 (save-excursion (dired-mark-subdir-files))
94889
e80a3956601b (dired-read-dir-and-switches): Ignore ., .., and
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
2831 (let ((inhibit-read-only t))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2832 (dired-repeat-over-lines
834
2e0cd4e83c2e *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 778
diff changeset
2833 (prefix-numeric-value arg)
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2834 (function (lambda () (delete-char 1) (insert dired-marker-char)))))))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2835
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2836 (defun dired-unmark (arg)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2837 "Unmark the current (or next ARG) files.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2838 If looking at a subdir, unmark all its files except `.' and `..'."
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2839 (interactive "P")
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2840 (let ((dired-marker-char ?\040))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2841 (dired-mark arg)))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2842
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2843 (defun dired-flag-file-deletion (arg)
40950
4bc87462585c Many trivial doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 40818
diff changeset
2844 "In Dired, flag the current line's file for deletion.
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2845 With prefix arg, repeat over several lines.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2846
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2847 If on a subdir headerline, mark all its files except `.' and `..'."
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2848 (interactive "P")
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2849 (let ((dired-marker-char dired-del-marker))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2850 (dired-mark arg)))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2851
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2852 (defun dired-unmark-backward (arg)
40950
4bc87462585c Many trivial doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 40818
diff changeset
2853 "In Dired, move up lines and remove deletion flag there.
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2854 Optional prefix ARG says how many lines to unflag; default is one line."
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2855 (interactive "p")
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2856 (dired-unmark (- arg)))
20991
0cd10d49b777 (dired-do-toggle): Moved here from dired-x.el.
Karl Heuer <kwzh@gnu.org>
parents: 20953
diff changeset
2857
44212
e87d819f2887 (dired-toggle-marks): Renamed from dired-do-toggle. Bindings changed.
Richard M. Stallman <rms@gnu.org>
parents: 44061
diff changeset
2858 (defun dired-toggle-marks ()
e87d819f2887 (dired-toggle-marks): Renamed from dired-do-toggle. Bindings changed.
Richard M. Stallman <rms@gnu.org>
parents: 44061
diff changeset
2859 "Toggle marks: marked files become unmarked, and vice versa.
20991
0cd10d49b777 (dired-do-toggle): Moved here from dired-x.el.
Karl Heuer <kwzh@gnu.org>
parents: 20953
diff changeset
2860 Files marked with other flags (such as `D') are not affected.
0cd10d49b777 (dired-do-toggle): Moved here from dired-x.el.
Karl Heuer <kwzh@gnu.org>
parents: 20953
diff changeset
2861 `.' and `..' are never toggled.
0cd10d49b777 (dired-do-toggle): Moved here from dired-x.el.
Karl Heuer <kwzh@gnu.org>
parents: 20953
diff changeset
2862 As always, hidden subdirs are not affected."
0cd10d49b777 (dired-do-toggle): Moved here from dired-x.el.
Karl Heuer <kwzh@gnu.org>
parents: 20953
diff changeset
2863 (interactive)
0cd10d49b777 (dired-do-toggle): Moved here from dired-x.el.
Karl Heuer <kwzh@gnu.org>
parents: 20953
diff changeset
2864 (save-excursion
0cd10d49b777 (dired-do-toggle): Moved here from dired-x.el.
Karl Heuer <kwzh@gnu.org>
parents: 20953
diff changeset
2865 (goto-char (point-min))
94889
e80a3956601b (dired-read-dir-and-switches): Ignore ., .., and
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
2866 (let ((inhibit-read-only t))
20991
0cd10d49b777 (dired-do-toggle): Moved here from dired-x.el.
Karl Heuer <kwzh@gnu.org>
parents: 20953
diff changeset
2867 (while (not (eobp))
0cd10d49b777 (dired-do-toggle): Moved here from dired-x.el.
Karl Heuer <kwzh@gnu.org>
parents: 20953
diff changeset
2868 (or (dired-between-files)
0cd10d49b777 (dired-do-toggle): Moved here from dired-x.el.
Karl Heuer <kwzh@gnu.org>
parents: 20953
diff changeset
2869 (looking-at dired-re-dot)
0cd10d49b777 (dired-do-toggle): Moved here from dired-x.el.
Karl Heuer <kwzh@gnu.org>
parents: 20953
diff changeset
2870 ;; use subst instead of insdel because it does not move
0cd10d49b777 (dired-do-toggle): Moved here from dired-x.el.
Karl Heuer <kwzh@gnu.org>
parents: 20953
diff changeset
2871 ;; the gap and thus should be faster and because
0cd10d49b777 (dired-do-toggle): Moved here from dired-x.el.
Karl Heuer <kwzh@gnu.org>
parents: 20953
diff changeset
2872 ;; other characters are left alone automatically
0cd10d49b777 (dired-do-toggle): Moved here from dired-x.el.
Karl Heuer <kwzh@gnu.org>
parents: 20953
diff changeset
2873 (apply 'subst-char-in-region
0cd10d49b777 (dired-do-toggle): Moved here from dired-x.el.
Karl Heuer <kwzh@gnu.org>
parents: 20953
diff changeset
2874 (point) (1+ (point))
0cd10d49b777 (dired-do-toggle): Moved here from dired-x.el.
Karl Heuer <kwzh@gnu.org>
parents: 20953
diff changeset
2875 (if (eq ?\040 (following-char)) ; SPC
0cd10d49b777 (dired-do-toggle): Moved here from dired-x.el.
Karl Heuer <kwzh@gnu.org>
parents: 20953
diff changeset
2876 (list ?\040 dired-marker-char)
0cd10d49b777 (dired-do-toggle): Moved here from dired-x.el.
Karl Heuer <kwzh@gnu.org>
parents: 20953
diff changeset
2877 (list dired-marker-char ?\040))))
0cd10d49b777 (dired-do-toggle): Moved here from dired-x.el.
Karl Heuer <kwzh@gnu.org>
parents: 20953
diff changeset
2878 (forward-line 1)))))
35607
5b26cd3356a1 Revert last change.
Dave Love <fx@gnu.org>
parents: 35522
diff changeset
2879
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2880 ;;; Commands to mark or flag files based on their characteristics or names.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2881
1755
83734c185e01 (dired-regexp-history): New history list.
Richard M. Stallman <rms@gnu.org>
parents: 1672
diff changeset
2882 (defvar dired-regexp-history nil
83734c185e01 (dired-regexp-history): New history list.
Richard M. Stallman <rms@gnu.org>
parents: 1672
diff changeset
2883 "History list of regular expressions used in Dired commands.")
83734c185e01 (dired-regexp-history): New history list.
Richard M. Stallman <rms@gnu.org>
parents: 1672
diff changeset
2884
83734c185e01 (dired-regexp-history): New history list.
Richard M. Stallman <rms@gnu.org>
parents: 1672
diff changeset
2885 (defun dired-read-regexp (prompt)
83734c185e01 (dired-regexp-history): New history list.
Richard M. Stallman <rms@gnu.org>
parents: 1672
diff changeset
2886 (read-from-minibuffer prompt nil nil nil 'dired-regexp-history))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2887
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2888 (defun dired-mark-files-regexp (regexp &optional marker-char)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2889 "Mark all files matching REGEXP for use in later commands.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2890 A prefix argument means to unmark them instead.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2891 `.' and `..' are never marked.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2892
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2893 REGEXP is an Emacs regexp, not a shell wildcard. Thus, use `\\.o$' for
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2894 object files--just `.o' will mark more than you might think."
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2895 (interactive
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2896 (list (dired-read-regexp (concat (if current-prefix-arg "Unmark" "Mark")
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2897 " files (regexp): "))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2898 (if current-prefix-arg ?\040)))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2899 (let ((dired-marker-char (or marker-char dired-marker-char)))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2900 (dired-mark-if
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2901 (and (not (looking-at dired-re-dot))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2902 (not (eolp)) ; empty line
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2903 (let ((fn (dired-get-filename nil t)))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2904 (and fn (string-match regexp (file-name-nondirectory fn)))))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2905 "matching file")))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2906
22206
ebcc36b6b95e (dired-mark-files-containing-regexp): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21956
diff changeset
2907 (defun dired-mark-files-containing-regexp (regexp &optional marker-char)
ebcc36b6b95e (dired-mark-files-containing-regexp): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21956
diff changeset
2908 "Mark all files with contents containing REGEXP for use in later commands.
ebcc36b6b95e (dired-mark-files-containing-regexp): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21956
diff changeset
2909 A prefix argument means to unmark them instead.
ebcc36b6b95e (dired-mark-files-containing-regexp): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21956
diff changeset
2910 `.' and `..' are never marked."
ebcc36b6b95e (dired-mark-files-containing-regexp): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21956
diff changeset
2911 (interactive
ebcc36b6b95e (dired-mark-files-containing-regexp): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21956
diff changeset
2912 (list (dired-read-regexp (concat (if current-prefix-arg "Unmark" "Mark")
ebcc36b6b95e (dired-mark-files-containing-regexp): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21956
diff changeset
2913 " files containing (regexp): "))
ebcc36b6b95e (dired-mark-files-containing-regexp): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21956
diff changeset
2914 (if current-prefix-arg ?\040)))
ebcc36b6b95e (dired-mark-files-containing-regexp): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21956
diff changeset
2915 (let ((dired-marker-char (or marker-char dired-marker-char)))
ebcc36b6b95e (dired-mark-files-containing-regexp): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21956
diff changeset
2916 (dired-mark-if
ebcc36b6b95e (dired-mark-files-containing-regexp): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21956
diff changeset
2917 (and (not (looking-at dired-re-dot))
ebcc36b6b95e (dired-mark-files-containing-regexp): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21956
diff changeset
2918 (not (eolp)) ; empty line
ebcc36b6b95e (dired-mark-files-containing-regexp): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21956
diff changeset
2919 (let ((fn (dired-get-filename nil t)))
23230
6e0d3186be0d (dired-mark-files-containing-regexp):
Karl Heuer <kwzh@gnu.org>
parents: 23225
diff changeset
2920 (when (and fn (file-readable-p fn)
6e0d3186be0d (dired-mark-files-containing-regexp):
Karl Heuer <kwzh@gnu.org>
parents: 23225
diff changeset
2921 (not (file-directory-p fn)))
6e0d3186be0d (dired-mark-files-containing-regexp):
Karl Heuer <kwzh@gnu.org>
parents: 23225
diff changeset
2922 (let ((prebuf (get-file-buffer fn)))
6e0d3186be0d (dired-mark-files-containing-regexp):
Karl Heuer <kwzh@gnu.org>
parents: 23225
diff changeset
2923 (message "Checking %s" fn)
6e0d3186be0d (dired-mark-files-containing-regexp):
Karl Heuer <kwzh@gnu.org>
parents: 23225
diff changeset
2924 ;; For now we do it inside emacs
6e0d3186be0d (dired-mark-files-containing-regexp):
Karl Heuer <kwzh@gnu.org>
parents: 23225
diff changeset
2925 ;; Grep might be better if there are a lot of files
6e0d3186be0d (dired-mark-files-containing-regexp):
Karl Heuer <kwzh@gnu.org>
parents: 23225
diff changeset
2926 (if prebuf
6e0d3186be0d (dired-mark-files-containing-regexp):
Karl Heuer <kwzh@gnu.org>
parents: 23225
diff changeset
2927 (with-current-buffer prebuf
6e0d3186be0d (dired-mark-files-containing-regexp):
Karl Heuer <kwzh@gnu.org>
parents: 23225
diff changeset
2928 (save-excursion
6e0d3186be0d (dired-mark-files-containing-regexp):
Karl Heuer <kwzh@gnu.org>
parents: 23225
diff changeset
2929 (goto-char (point-min))
6e0d3186be0d (dired-mark-files-containing-regexp):
Karl Heuer <kwzh@gnu.org>
parents: 23225
diff changeset
2930 (re-search-forward regexp nil t)))
6e0d3186be0d (dired-mark-files-containing-regexp):
Karl Heuer <kwzh@gnu.org>
parents: 23225
diff changeset
2931 (with-temp-buffer
6e0d3186be0d (dired-mark-files-containing-regexp):
Karl Heuer <kwzh@gnu.org>
parents: 23225
diff changeset
2932 (insert-file-contents fn)
6e0d3186be0d (dired-mark-files-containing-regexp):
Karl Heuer <kwzh@gnu.org>
parents: 23225
diff changeset
2933 (goto-char (point-min))
6e0d3186be0d (dired-mark-files-containing-regexp):
Karl Heuer <kwzh@gnu.org>
parents: 23225
diff changeset
2934 (re-search-forward regexp nil t))))
23188
c8b236bbecad (dired-mark-files-containing-regexp):
Karl Heuer <kwzh@gnu.org>
parents: 22856
diff changeset
2935 )))
22206
ebcc36b6b95e (dired-mark-files-containing-regexp): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21956
diff changeset
2936 "matching file")))
ebcc36b6b95e (dired-mark-files-containing-regexp): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21956
diff changeset
2937
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2938 (defun dired-flag-files-regexp (regexp)
40950
4bc87462585c Many trivial doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 40818
diff changeset
2939 "In Dired, flag all files containing the specified REGEXP for deletion.
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2940 The match is against the non-directory part of the filename. Use `^'
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2941 and `$' to anchor matches. Exclude subdirs by hiding them.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2942 `.' and `..' are never flagged."
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2943 (interactive (list (dired-read-regexp "Flag for deletion (regexp): ")))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2944 (dired-mark-files-regexp regexp dired-del-marker))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2945
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2946 (defun dired-mark-symlinks (unflag-p)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2947 "Mark all symbolic links.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2948 With prefix argument, unflag all those files."
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2949 (interactive "P")
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2950 (let ((dired-marker-char (if unflag-p ?\040 dired-marker-char)))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2951 (dired-mark-if (looking-at dired-re-sym) "symbolic link")))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2952
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2953 (defun dired-mark-directories (unflag-p)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2954 "Mark all directory file lines except `.' and `..'.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2955 With prefix argument, unflag all those files."
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2956 (interactive "P")
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2957 (let ((dired-marker-char (if unflag-p ?\040 dired-marker-char)))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2958 (dired-mark-if (and (looking-at dired-re-dir)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2959 (not (looking-at dired-re-dot)))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2960 "directory file")))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2961
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2962 (defun dired-mark-executables (unflag-p)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2963 "Mark all executable files.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2964 With prefix argument, unflag all those files."
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2965 (interactive "P")
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2966 (let ((dired-marker-char (if unflag-p ?\040 dired-marker-char)))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2967 (dired-mark-if (looking-at dired-re-exe) "executable file")))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2968
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2969 ;; dired-x.el has a dired-mark-sexp interactive command: mark
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2970 ;; files for which PREDICATE returns non-nil.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2971
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2972 (defun dired-flag-auto-save-files (&optional unflag-p)
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2973 "Flag for deletion files whose names suggest they are auto save files.
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2974 A prefix argument says to unflag those files instead."
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2975 (interactive "P")
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2976 (let ((dired-marker-char (if unflag-p ?\040 dired-del-marker)))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2977 (dired-mark-if
3633
47680ad33068 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
2978 ;; It is less than general to check for # here,
3043
29fe3ea604a2 (dired-flag-backup-files): Speedup:
Richard M. Stallman <rms@gnu.org>
parents: 2584
diff changeset
2979 ;; but it's the only way this runs fast enough.
29fe3ea604a2 (dired-flag-backup-files): Speedup:
Richard M. Stallman <rms@gnu.org>
parents: 2584
diff changeset
2980 (and (save-excursion (end-of-line)
3580
8223f1bf078f (dired-flag-auto-save-files): Ignore `*' added by ls -F.
Richard M. Stallman <rms@gnu.org>
parents: 3524
diff changeset
2981 (or
8223f1bf078f (dired-flag-auto-save-files): Ignore `*' added by ls -F.
Richard M. Stallman <rms@gnu.org>
parents: 3524
diff changeset
2982 (eq (preceding-char) ?#)
8223f1bf078f (dired-flag-auto-save-files): Ignore `*' added by ls -F.
Richard M. Stallman <rms@gnu.org>
parents: 3524
diff changeset
2983 ;; Handle executables in case of -F option.
8223f1bf078f (dired-flag-auto-save-files): Ignore `*' added by ls -F.
Richard M. Stallman <rms@gnu.org>
parents: 3524
diff changeset
2984 ;; We need not worry about the other kinds
8223f1bf078f (dired-flag-auto-save-files): Ignore `*' added by ls -F.
Richard M. Stallman <rms@gnu.org>
parents: 3524
diff changeset
2985 ;; of markings that -F makes, since they won't
8223f1bf078f (dired-flag-auto-save-files): Ignore `*' added by ls -F.
Richard M. Stallman <rms@gnu.org>
parents: 3524
diff changeset
2986 ;; appear on real auto-save files.
8223f1bf078f (dired-flag-auto-save-files): Ignore `*' added by ls -F.
Richard M. Stallman <rms@gnu.org>
parents: 3524
diff changeset
2987 (if (eq (preceding-char) ?*)
8223f1bf078f (dired-flag-auto-save-files): Ignore `*' added by ls -F.
Richard M. Stallman <rms@gnu.org>
parents: 3524
diff changeset
2988 (progn
8223f1bf078f (dired-flag-auto-save-files): Ignore `*' added by ls -F.
Richard M. Stallman <rms@gnu.org>
parents: 3524
diff changeset
2989 (forward-char -1)
8223f1bf078f (dired-flag-auto-save-files): Ignore `*' added by ls -F.
Richard M. Stallman <rms@gnu.org>
parents: 3524
diff changeset
2990 (eq (preceding-char) ?#)))))
3043
29fe3ea604a2 (dired-flag-backup-files): Speedup:
Richard M. Stallman <rms@gnu.org>
parents: 2584
diff changeset
2991 (not (looking-at dired-re-dir))
29fe3ea604a2 (dired-flag-backup-files): Speedup:
Richard M. Stallman <rms@gnu.org>
parents: 2584
diff changeset
2992 (let ((fn (dired-get-filename t t)))
29fe3ea604a2 (dired-flag-backup-files): Speedup:
Richard M. Stallman <rms@gnu.org>
parents: 2584
diff changeset
2993 (if fn (auto-save-file-name-p
29fe3ea604a2 (dired-flag-backup-files): Speedup:
Richard M. Stallman <rms@gnu.org>
parents: 2584
diff changeset
2994 (file-name-nondirectory fn)))))
29fe3ea604a2 (dired-flag-backup-files): Speedup:
Richard M. Stallman <rms@gnu.org>
parents: 2584
diff changeset
2995 "auto save file")))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
2996
54533
924fccad3acb (dired) <defgroup>: Add link to manual.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54512
diff changeset
2997 (defcustom dired-garbage-files-regexp
54548
f36d3226281c Fix comments.
Juri Linkov <juri@jurta.org>
parents: 54542
diff changeset
2998 ;; `log' here is dubious, since it's typically used for useful log
54533
924fccad3acb (dired) <defgroup>: Add link to manual.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54512
diff changeset
2999 ;; files, not just TeX stuff. -- fx
49138
f955735e16d8 (dired-garbage-files-regexp): Use \\' instead of $ and
Kai Großjohann <kgrossjo@eu.uu.net>
parents: 49094
diff changeset
3000 (concat (regexp-opt
f955735e16d8 (dired-garbage-files-regexp): Use \\' instead of $ and
Kai Großjohann <kgrossjo@eu.uu.net>
parents: 49094
diff changeset
3001 '(".log" ".toc" ".dvi" ".bak" ".orig" ".rej" ".aux"))
49549
99be3a1e2589 Cygwin support patch.
Juanma Barranquero <lekktu@gmail.com>
parents: 49243
diff changeset
3002 "\\'")
54533
924fccad3acb (dired) <defgroup>: Add link to manual.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54512
diff changeset
3003 "Regular expression to match \"garbage\" files for `dired-flag-garbage-files'."
924fccad3acb (dired) <defgroup>: Add link to manual.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54512
diff changeset
3004 :type 'regexp
924fccad3acb (dired) <defgroup>: Add link to manual.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54512
diff changeset
3005 :group 'dired)
16825
9ec806f8bbb7 (dired-garbage-files-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 16824
diff changeset
3006
9ec806f8bbb7 (dired-garbage-files-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 16824
diff changeset
3007 (defun dired-flag-garbage-files ()
19780
91cd68461722 (dired-flag-garbage-files): Move interactive flag across doc string.
Richard M. Stallman <rms@gnu.org>
parents: 19736
diff changeset
3008 "Flag for deletion all files that match `dired-garbage-files-regexp'."
16825
9ec806f8bbb7 (dired-garbage-files-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 16824
diff changeset
3009 (interactive)
9ec806f8bbb7 (dired-garbage-files-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 16824
diff changeset
3010 (dired-flag-files-regexp dired-garbage-files-regexp))
9ec806f8bbb7 (dired-garbage-files-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 16824
diff changeset
3011
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3012 (defun dired-flag-backup-files (&optional unflag-p)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3013 "Flag all backup files (names ending with `~') for deletion.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3014 With prefix argument, unflag these files."
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3015 (interactive "P")
64531
733da358f853 (dired-align-file, dired-flag-backup-files, dired-change-marks,
Juanma Barranquero <lekktu@gmail.com>
parents: 64442
diff changeset
3016 (let ((dired-marker-char (if unflag-p ?\s dired-del-marker)))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3017 (dired-mark-if
13726
0611604f3cd3 (dired-flag-backup-files): Under MS-DOS, search for
Karl Heuer <kwzh@gnu.org>
parents: 13033
diff changeset
3018 ;; Don't call backup-file-name-p unless the last character looks like
0611604f3cd3 (dired-flag-backup-files): Under MS-DOS, search for
Karl Heuer <kwzh@gnu.org>
parents: 13033
diff changeset
3019 ;; it might be the end of a backup file name. This isn't very general,
3043
29fe3ea604a2 (dired-flag-backup-files): Speedup:
Richard M. Stallman <rms@gnu.org>
parents: 2584
diff changeset
3020 ;; but it's the only way this runs fast enough.
29fe3ea604a2 (dired-flag-backup-files): Speedup:
Richard M. Stallman <rms@gnu.org>
parents: 2584
diff changeset
3021 (and (save-excursion (end-of-line)
13726
0611604f3cd3 (dired-flag-backup-files): Under MS-DOS, search for
Karl Heuer <kwzh@gnu.org>
parents: 13033
diff changeset
3022 ;; Handle executables in case of -F option.
0611604f3cd3 (dired-flag-backup-files): Under MS-DOS, search for
Karl Heuer <kwzh@gnu.org>
parents: 13033
diff changeset
3023 ;; We need not worry about the other kinds
0611604f3cd3 (dired-flag-backup-files): Under MS-DOS, search for
Karl Heuer <kwzh@gnu.org>
parents: 13033
diff changeset
3024 ;; of markings that -F makes, since they won't
0611604f3cd3 (dired-flag-backup-files): Under MS-DOS, search for
Karl Heuer <kwzh@gnu.org>
parents: 13033
diff changeset
3025 ;; appear on real backup files.
0611604f3cd3 (dired-flag-backup-files): Under MS-DOS, search for
Karl Heuer <kwzh@gnu.org>
parents: 13033
diff changeset
3026 (if (eq (preceding-char) ?*)
0611604f3cd3 (dired-flag-backup-files): Under MS-DOS, search for
Karl Heuer <kwzh@gnu.org>
parents: 13033
diff changeset
3027 (forward-char -1))
13750
6a9cecd5bcfb (dired-flag-backup-files): Undo previous change.
Karl Heuer <kwzh@gnu.org>
parents: 13726
diff changeset
3028 (eq (preceding-char) ?~))
3043
29fe3ea604a2 (dired-flag-backup-files): Speedup:
Richard M. Stallman <rms@gnu.org>
parents: 2584
diff changeset
3029 (not (looking-at dired-re-dir))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3030 (let ((fn (dired-get-filename t t)))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3031 (if fn (backup-file-name-p fn))))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3032 "backup file")))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3033
910
4fba6d4b6a28 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 890
diff changeset
3034 (defun dired-change-marks (&optional old new)
4fba6d4b6a28 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 890
diff changeset
3035 "Change all OLD marks to NEW marks.
4fba6d4b6a28 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 890
diff changeset
3036 OLD and NEW are both characters used to mark files."
4fba6d4b6a28 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 890
diff changeset
3037 (interactive
4fba6d4b6a28 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 890
diff changeset
3038 (let* ((cursor-in-echo-area t)
4fba6d4b6a28 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 890
diff changeset
3039 (old (progn (message "Change (old mark): ") (read-char)))
4fba6d4b6a28 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 890
diff changeset
3040 (new (progn (message "Change %c marks to (new mark): " old)
4fba6d4b6a28 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 890
diff changeset
3041 (read-char))))
4fba6d4b6a28 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 890
diff changeset
3042 (list old new)))
3478
a917a964bef8 (dired-change-marks): Just ding if one arg is RET.
Richard M. Stallman <rms@gnu.org>
parents: 3148
diff changeset
3043 (if (or (eq old ?\r) (eq new ?\r))
a917a964bef8 (dired-change-marks): Just ding if one arg is RET.
Richard M. Stallman <rms@gnu.org>
parents: 3148
diff changeset
3044 (ding)
a917a964bef8 (dired-change-marks): Just ding if one arg is RET.
Richard M. Stallman <rms@gnu.org>
parents: 3148
diff changeset
3045 (let ((string (format "\n%c" old))
94889
e80a3956601b (dired-read-dir-and-switches): Ignore ., .., and
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
3046 (inhibit-read-only t))
3478
a917a964bef8 (dired-change-marks): Just ding if one arg is RET.
Richard M. Stallman <rms@gnu.org>
parents: 3148
diff changeset
3047 (save-excursion
a917a964bef8 (dired-change-marks): Just ding if one arg is RET.
Richard M. Stallman <rms@gnu.org>
parents: 3148
diff changeset
3048 (goto-char (point-min))
a917a964bef8 (dired-change-marks): Just ding if one arg is RET.
Richard M. Stallman <rms@gnu.org>
parents: 3148
diff changeset
3049 (while (search-forward string nil t)
64531
733da358f853 (dired-align-file, dired-flag-backup-files, dired-change-marks,
Juanma Barranquero <lekktu@gmail.com>
parents: 64442
diff changeset
3050 (if (if (= old ?\s)
12211
472729271c30 (dired-change-marks): If OLD is a space, don't act on non-file lines.
Richard M. Stallman <rms@gnu.org>
parents: 12045
diff changeset
3051 (save-match-data
472729271c30 (dired-change-marks): If OLD is a space, don't act on non-file lines.
Richard M. Stallman <rms@gnu.org>
parents: 12045
diff changeset
3052 (dired-get-filename 'no-dir t))
472729271c30 (dired-change-marks): If OLD is a space, don't act on non-file lines.
Richard M. Stallman <rms@gnu.org>
parents: 12045
diff changeset
3053 t)
472729271c30 (dired-change-marks): If OLD is a space, don't act on non-file lines.
Richard M. Stallman <rms@gnu.org>
parents: 12045
diff changeset
3054 (subst-char-in-region (match-beginning 0)
472729271c30 (dired-change-marks): If OLD is a space, don't act on non-file lines.
Richard M. Stallman <rms@gnu.org>
parents: 12045
diff changeset
3055 (match-end 0) old new)))))))
910
4fba6d4b6a28 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 890
diff changeset
3056
18160
c64b7a17eea9 (dired-unmark-all-marks):
Richard M. Stallman <rms@gnu.org>
parents: 17988
diff changeset
3057 (defun dired-unmark-all-marks ()
64531
733da358f853 (dired-align-file, dired-flag-backup-files, dired-change-marks,
Juanma Barranquero <lekktu@gmail.com>
parents: 64442
diff changeset
3058 "Remove all marks from all files in the dired buffer."
4169
45b07ea88511 (dired-unmark-all-files-no-query): New command.
Richard M. Stallman <rms@gnu.org>
parents: 4099
diff changeset
3059 (interactive)
45b07ea88511 (dired-unmark-all-files-no-query): New command.
Richard M. Stallman <rms@gnu.org>
parents: 4099
diff changeset
3060 (dired-unmark-all-files ?\r))
45b07ea88511 (dired-unmark-all-files-no-query): New command.
Richard M. Stallman <rms@gnu.org>
parents: 4099
diff changeset
3061
3102
603e39319c86 (dired-unmark-all-files): Read arg as a string.
Richard M. Stallman <rms@gnu.org>
parents: 3043
diff changeset
3062 (defun dired-unmark-all-files (mark &optional arg)
3524
bedf7049667a (dired-unmark-all-files): Read arg as just a character.
Richard M. Stallman <rms@gnu.org>
parents: 3503
diff changeset
3063 "Remove a specific mark (or any mark) from every file.
49549
99be3a1e2589 Cygwin support patch.
Juanma Barranquero <lekktu@gmail.com>
parents: 49243
diff changeset
3064 After this command, type the mark character to remove,
3524
bedf7049667a (dired-unmark-all-files): Read arg as just a character.
Richard M. Stallman <rms@gnu.org>
parents: 3503
diff changeset
3065 or type RET to remove all marks.
2458
b1834ed2c366 (dired-unmark-all-files): Read the arg as just a char.
Richard M. Stallman <rms@gnu.org>
parents: 2307
diff changeset
3066 With prefix arg, query for each marked file.
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3067 Type \\[help-command] at that time for help."
3524
bedf7049667a (dired-unmark-all-files): Read arg as just a character.
Richard M. Stallman <rms@gnu.org>
parents: 3503
diff changeset
3068 (interactive "cRemove marks (RET means all): \nP")
bedf7049667a (dired-unmark-all-files): Read arg as just a character.
Richard M. Stallman <rms@gnu.org>
parents: 3503
diff changeset
3069 (save-excursion
bedf7049667a (dired-unmark-all-files): Read arg as just a character.
Richard M. Stallman <rms@gnu.org>
parents: 3503
diff changeset
3070 (let* ((count 0)
94889
e80a3956601b (dired-read-dir-and-switches): Ignore ., .., and
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
3071 (inhibit-read-only t) case-fold-search query
3524
bedf7049667a (dired-unmark-all-files): Read arg as just a character.
Richard M. Stallman <rms@gnu.org>
parents: 3503
diff changeset
3072 (string (format "\n%c" mark))
bedf7049667a (dired-unmark-all-files): Read arg as just a character.
Richard M. Stallman <rms@gnu.org>
parents: 3503
diff changeset
3073 (help-form "\
3102
603e39319c86 (dired-unmark-all-files): Read arg as a string.
Richard M. Stallman <rms@gnu.org>
parents: 3043
diff changeset
3074 Type SPC or `y' to unmark one file, DEL or `n' to skip to next,
603e39319c86 (dired-unmark-all-files): Read arg as a string.
Richard M. Stallman <rms@gnu.org>
parents: 3043
diff changeset
3075 `!' to unmark all remaining files with no more questions."))
3524
bedf7049667a (dired-unmark-all-files): Read arg as just a character.
Richard M. Stallman <rms@gnu.org>
parents: 3503
diff changeset
3076 (goto-char (point-min))
bedf7049667a (dired-unmark-all-files): Read arg as just a character.
Richard M. Stallman <rms@gnu.org>
parents: 3503
diff changeset
3077 (while (if (eq mark ?\r)
bedf7049667a (dired-unmark-all-files): Read arg as just a character.
Richard M. Stallman <rms@gnu.org>
parents: 3503
diff changeset
3078 (re-search-forward dired-re-mark nil t)
bedf7049667a (dired-unmark-all-files): Read arg as just a character.
Richard M. Stallman <rms@gnu.org>
parents: 3503
diff changeset
3079 (search-forward string nil t))
bedf7049667a (dired-unmark-all-files): Read arg as just a character.
Richard M. Stallman <rms@gnu.org>
parents: 3503
diff changeset
3080 (if (or (not arg)
51444
b53bffc0cbaf (dired-get-filename): Err for . and .. in usual case.
Richard M. Stallman <rms@gnu.org>
parents: 50831
diff changeset
3081 (let ((file (dired-get-filename t t)))
b53bffc0cbaf (dired-get-filename): Err for . and .. in usual case.
Richard M. Stallman <rms@gnu.org>
parents: 50831
diff changeset
3082 (and file
b53bffc0cbaf (dired-get-filename): Err for . and .. in usual case.
Richard M. Stallman <rms@gnu.org>
parents: 50831
diff changeset
3083 (dired-query 'query "Unmark file `%s'? "
b53bffc0cbaf (dired-get-filename): Err for . and .. in usual case.
Richard M. Stallman <rms@gnu.org>
parents: 50831
diff changeset
3084 file))))
3524
bedf7049667a (dired-unmark-all-files): Read arg as just a character.
Richard M. Stallman <rms@gnu.org>
parents: 3503
diff changeset
3085 (progn (subst-char-in-region (1- (point)) (point)
64531
733da358f853 (dired-align-file, dired-flag-backup-files, dired-change-marks,
Juanma Barranquero <lekktu@gmail.com>
parents: 64442
diff changeset
3086 (preceding-char) ?\s)
3524
bedf7049667a (dired-unmark-all-files): Read arg as just a character.
Richard M. Stallman <rms@gnu.org>
parents: 3503
diff changeset
3087 (setq count (1+ count)))))
bedf7049667a (dired-unmark-all-files): Read arg as just a character.
Richard M. Stallman <rms@gnu.org>
parents: 3503
diff changeset
3088 (message (if (= count 1) "1 mark removed"
bedf7049667a (dired-unmark-all-files): Read arg as just a character.
Richard M. Stallman <rms@gnu.org>
parents: 3503
diff changeset
3089 "%d marks removed")
bedf7049667a (dired-unmark-all-files): Read arg as just a character.
Richard M. Stallman <rms@gnu.org>
parents: 3503
diff changeset
3090 count))))
35607
5b26cd3356a1 Revert last change.
Dave Love <fx@gnu.org>
parents: 35522
diff changeset
3091
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3092 ;; Logging failures operating on files, and showing the results.
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3093
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3094 (defvar dired-log-buffer "*Dired log*")
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3095
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3096 (defun dired-why ()
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3097 "Pop up a buffer with error log output from Dired.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3098 A group of errors from a single command ends with a formfeed.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3099 Thus, use \\[backward-page] to find the beginning of a group of errors."
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3100 (interactive)
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3101 (if (get-buffer dired-log-buffer)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3102 (let ((owindow (selected-window))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3103 (window (display-buffer (get-buffer dired-log-buffer))))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3104 (unwind-protect
910
4fba6d4b6a28 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 890
diff changeset
3105 (progn
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3106 (select-window window)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3107 (goto-char (point-max))
47488
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
3108 (forward-line -1)
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
3109 (backward-page 1)
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
3110 (recenter 0))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3111 (select-window owindow)))))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3112
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3113 (defun dired-log (log &rest args)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3114 ;; Log a message or the contents of a buffer.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3115 ;; If LOG is a string and there are more args, it is formatted with
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3116 ;; those ARGS. Usually the LOG string ends with a \n.
49549
99be3a1e2589 Cygwin support patch.
Juanma Barranquero <lekktu@gmail.com>
parents: 49243
diff changeset
3117 ;; End each bunch of errors with (dired-log t):
47488
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
3118 ;; this inserts the current time and buffer at the start of the page,
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
3119 ;; and \f (formfeed) at the end.
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3120 (let ((obuf (current-buffer)))
47488
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
3121 (with-current-buffer (get-buffer-create dired-log-buffer)
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
3122 (goto-char (point-max))
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
3123 (let ((inhibit-read-only t))
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
3124 (cond ((stringp log)
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
3125 (insert (if args
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
3126 (apply (function format) log args)
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
3127 log)))
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
3128 ((bufferp log)
64430
52b011251c32 (dired-log): Use `insert-buffer-substring', not `insert-buffer'.
Juanma Barranquero <lekktu@gmail.com>
parents: 64193
diff changeset
3129 (insert-buffer-substring log))
47488
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
3130 ((eq t log)
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
3131 (backward-page 1)
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
3132 (unless (bolp)
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
3133 (insert "\n"))
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
3134 (insert (current-time-string)
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
3135 "\tBuffer `" (buffer-name obuf) "'\n")
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
3136 (goto-char (point-max))
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
3137 (insert "\f\n")))))))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3138
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3139 (defun dired-log-summary (string failures)
72716
28b70fec3284 (dired-log-summary): Add doc string.
Richard M. Stallman <rms@gnu.org>
parents: 72021
diff changeset
3140 "State a summary of a command's failures, in echo area and log buffer.
28b70fec3284 (dired-log-summary): Add doc string.
Richard M. Stallman <rms@gnu.org>
parents: 72021
diff changeset
3141 STRING is an overall summary of the failures.
28b70fec3284 (dired-log-summary): Add doc string.
Richard M. Stallman <rms@gnu.org>
parents: 72021
diff changeset
3142 FAILURES is a list of file names that we failed to operate on,
28b70fec3284 (dired-log-summary): Add doc string.
Richard M. Stallman <rms@gnu.org>
parents: 72021
diff changeset
3143 or nil if file names are not applicable."
47488
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
3144 (if (= (length failures) 1)
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
3145 (message "%s"
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
3146 (with-current-buffer dired-log-buffer
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
3147 (goto-char (point-max))
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
3148 (backward-page 1)
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
3149 (if (eolp) (forward-line 1))
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
3150 (buffer-substring (point) (point-max))))
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
3151 (message (if failures "%s--type ? for details (%s)"
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
3152 "%s--type ? for details")
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
3153 string failures))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3154 ;; Log a summary describing a bunch of errors.
47488
6ca0edea0a56 (dired-use-ls-dired): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47181
diff changeset
3155 (dired-log (concat "\n" string "\n"))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3156 (dired-log t))
35607
5b26cd3356a1 Revert last change.
Dave Love <fx@gnu.org>
parents: 35522
diff changeset
3157
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3158 ;;; Sorting
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3159
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3160 ;; Most ls can only sort by name or by date (with -t), nothing else.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3161 ;; GNU ls sorts on size with -S, on extension with -X, and unsorted with -U.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3162 ;; So anything that does not contain these is sort "by name".
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3163
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3164 (defvar dired-ls-sorting-switches "SXU"
58412
b9a1c1b8d195 (dired-align-file): Don't assume line starts with spaces.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57943
diff changeset
3165 "String of `ls' switches \(single letters\) except \"t\" that influence sorting.
52973
e9b83c6e5ab4 (dired-ls-sorting-switches): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 52706
diff changeset
3166
e9b83c6e5ab4 (dired-ls-sorting-switches): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 52706
diff changeset
3167 This indicates to Dired which option switches to watch out for because they
e9b83c6e5ab4 (dired-ls-sorting-switches): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 52706
diff changeset
3168 will change the sorting order behavior of `ls'.
e9b83c6e5ab4 (dired-ls-sorting-switches): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 52706
diff changeset
3169
e9b83c6e5ab4 (dired-ls-sorting-switches): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 52706
diff changeset
3170 To change the default sorting order \(e.g. add a `-v' option\), see the
e9b83c6e5ab4 (dired-ls-sorting-switches): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 52706
diff changeset
3171 variable `dired-listing-switches'. To temporarily override the listing
e9b83c6e5ab4 (dired-ls-sorting-switches): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 52706
diff changeset
3172 format, use `\\[universal-argument] \\[dired]'.")
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3173
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3174 (defvar dired-sort-by-date-regexp
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3175 (concat "^-[^" dired-ls-sorting-switches
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3176 "]*t[^" dired-ls-sorting-switches "]*$")
64531
733da358f853 (dired-align-file, dired-flag-backup-files, dired-change-marks,
Juanma Barranquero <lekktu@gmail.com>
parents: 64442
diff changeset
3177 "Regexp recognized by Dired to set `by date' mode.")
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3178
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3179 (defvar dired-sort-by-name-regexp
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3180 (concat "^-[^t" dired-ls-sorting-switches "]+$")
64531
733da358f853 (dired-align-file, dired-flag-backup-files, dired-change-marks,
Juanma Barranquero <lekktu@gmail.com>
parents: 64442
diff changeset
3181 "Regexp recognized by Dired to set `by name' mode.")
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3182
48491
5d690a3537aa (dired-sort-inhibit): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47901
diff changeset
3183 (defvar dired-sort-inhibit nil
5d690a3537aa (dired-sort-inhibit): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47901
diff changeset
3184 "Non-nil means the Dired sort command is disabled.
64531
733da358f853 (dired-align-file, dired-flag-backup-files, dired-change-marks,
Juanma Barranquero <lekktu@gmail.com>
parents: 64442
diff changeset
3185 The idea is to set this buffer-locally in special dired buffers.")
48491
5d690a3537aa (dired-sort-inhibit): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47901
diff changeset
3186
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3187 (defun dired-sort-set-modeline ()
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3188 ;; Set modeline display according to dired-actual-switches.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3189 ;; Modeline display of "by name" or "by date" guarantees the user a
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3190 ;; match with the corresponding regexps. Non-matching switches are
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3191 ;; shown literally.
74969
3b49658358de (dired-sort-other): Move test for dired-mode...
Nick Roberts <nickrob@snap.net.nz>
parents: 74385
diff changeset
3192 (when (eq major-mode 'dired-mode)
3b49658358de (dired-sort-other): Move test for dired-mode...
Nick Roberts <nickrob@snap.net.nz>
parents: 74385
diff changeset
3193 (setq mode-name
3b49658358de (dired-sort-other): Move test for dired-mode...
Nick Roberts <nickrob@snap.net.nz>
parents: 74385
diff changeset
3194 (let (case-fold-search)
77709
fe66dc682a15 (dired-recursive-deletes, dired-recursive-copies): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents: 77402
diff changeset
3195 (cond ((string-match
74969
3b49658358de (dired-sort-other): Move test for dired-mode...
Nick Roberts <nickrob@snap.net.nz>
parents: 74385
diff changeset
3196 dired-sort-by-name-regexp dired-actual-switches)
3b49658358de (dired-sort-other): Move test for dired-mode...
Nick Roberts <nickrob@snap.net.nz>
parents: 74385
diff changeset
3197 "Dired by name")
3b49658358de (dired-sort-other): Move test for dired-mode...
Nick Roberts <nickrob@snap.net.nz>
parents: 74385
diff changeset
3198 ((string-match
3b49658358de (dired-sort-other): Move test for dired-mode...
Nick Roberts <nickrob@snap.net.nz>
parents: 74385
diff changeset
3199 dired-sort-by-date-regexp dired-actual-switches)
3b49658358de (dired-sort-other): Move test for dired-mode...
Nick Roberts <nickrob@snap.net.nz>
parents: 74385
diff changeset
3200 "Dired by date")
3b49658358de (dired-sort-other): Move test for dired-mode...
Nick Roberts <nickrob@snap.net.nz>
parents: 74385
diff changeset
3201 (t
3b49658358de (dired-sort-other): Move test for dired-mode...
Nick Roberts <nickrob@snap.net.nz>
parents: 74385
diff changeset
3202 (concat "Dired " dired-actual-switches)))))
3b49658358de (dired-sort-other): Move test for dired-mode...
Nick Roberts <nickrob@snap.net.nz>
parents: 74385
diff changeset
3203 (force-mode-line-update)))
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3204
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3205 (defun dired-sort-toggle-or-edit (&optional arg)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3206 "Toggle between sort by date/name and refresh the dired buffer.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3207 With a prefix argument you can edit the current listing switches instead."
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3208 (interactive "P")
48491
5d690a3537aa (dired-sort-inhibit): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 47901
diff changeset
3209 (when dired-sort-inhibit
64531
733da358f853 (dired-align-file, dired-flag-backup-files, dired-change-marks,
Juanma Barranquero <lekktu@gmail.com>
parents: 64442
diff changeset
3210 (error "Cannot sort this dired buffer"))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3211 (if arg
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3212 (dired-sort-other
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3213 (read-string "ls switches (must contain -l): " dired-actual-switches))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3214 (dired-sort-toggle)))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3215
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3216 (defun dired-sort-toggle ()
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3217 ;; Toggle between sort by date/name. Reverts the buffer.
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3218 (setq dired-actual-switches
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3219 (let (case-fold-search)
21833
a9d4f3acae4e (dired-sort-toggle): Handle spaces in dired-actual-switches.
Richard M. Stallman <rms@gnu.org>
parents: 21743
diff changeset
3220 (if (string-match " " dired-actual-switches)
a9d4f3acae4e (dired-sort-toggle): Handle spaces in dired-actual-switches.
Richard M. Stallman <rms@gnu.org>
parents: 21743
diff changeset
3221 ;; New toggle scheme: add/remove a trailing " -t"
a9d4f3acae4e (dired-sort-toggle): Handle spaces in dired-actual-switches.
Richard M. Stallman <rms@gnu.org>
parents: 21743
diff changeset
3222 (if (string-match " -t\\'" dired-actual-switches)
47507
d03e0c2bb52c (dired-font-lock-keywords): Use regexp-opt.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47491
diff changeset
3223 (substring dired-actual-switches 0 (match-beginning 0))
21833
a9d4f3acae4e (dired-sort-toggle): Handle spaces in dired-actual-switches.
Richard M. Stallman <rms@gnu.org>
parents: 21743
diff changeset
3224 (concat dired-actual-switches " -t"))
a9d4f3acae4e (dired-sort-toggle): Handle spaces in dired-actual-switches.
Richard M. Stallman <rms@gnu.org>
parents: 21743
diff changeset
3225 ;; old toggle scheme: look for some 't' switch and add/remove it
a9d4f3acae4e (dired-sort-toggle): Handle spaces in dired-actual-switches.
Richard M. Stallman <rms@gnu.org>
parents: 21743
diff changeset
3226 (concat
a9d4f3acae4e (dired-sort-toggle): Handle spaces in dired-actual-switches.
Richard M. Stallman <rms@gnu.org>
parents: 21743
diff changeset
3227 "-l"
35607
5b26cd3356a1 Revert last change.
Dave Love <fx@gnu.org>
parents: 35522
diff changeset
3228 (dired-replace-in-string (concat "[-lt"
5b26cd3356a1 Revert last change.
Dave Love <fx@gnu.org>
parents: 35522
diff changeset
3229 dired-ls-sorting-switches "]")
5b26cd3356a1 Revert last change.
Dave Love <fx@gnu.org>
parents: 35522
diff changeset
3230 ""
5b26cd3356a1 Revert last change.
Dave Love <fx@gnu.org>
parents: 35522
diff changeset
3231 dired-actual-switches)
21833
a9d4f3acae4e (dired-sort-toggle): Handle spaces in dired-actual-switches.
Richard M. Stallman <rms@gnu.org>
parents: 21743
diff changeset
3232 (if (string-match (concat "[t" dired-ls-sorting-switches "]")
a9d4f3acae4e (dired-sort-toggle): Handle spaces in dired-actual-switches.
Richard M. Stallman <rms@gnu.org>
parents: 21743
diff changeset
3233 dired-actual-switches)
a9d4f3acae4e (dired-sort-toggle): Handle spaces in dired-actual-switches.
Richard M. Stallman <rms@gnu.org>
parents: 21743
diff changeset
3234 ""
a9d4f3acae4e (dired-sort-toggle): Handle spaces in dired-actual-switches.
Richard M. Stallman <rms@gnu.org>
parents: 21743
diff changeset
3235 "t")))))
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3236 (dired-sort-set-modeline)
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3237 (revert-buffer))
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3238
35607
5b26cd3356a1 Revert last change.
Dave Love <fx@gnu.org>
parents: 35522
diff changeset
3239 ;; Some user code loads dired especially for this.
42690
41928c5aed9c Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 42594
diff changeset
3240 ;; Don't do that--use replace-regexp-in-string instead.
35607
5b26cd3356a1 Revert last change.
Dave Love <fx@gnu.org>
parents: 35522
diff changeset
3241 (defun dired-replace-in-string (regexp newtext string)
5b26cd3356a1 Revert last change.
Dave Love <fx@gnu.org>
parents: 35522
diff changeset
3242 ;; Replace REGEXP with NEWTEXT everywhere in STRING and return result.
5b26cd3356a1 Revert last change.
Dave Love <fx@gnu.org>
parents: 35522
diff changeset
3243 ;; NEWTEXT is taken literally---no \\DIGIT escapes will be recognized.
5b26cd3356a1 Revert last change.
Dave Love <fx@gnu.org>
parents: 35522
diff changeset
3244 (let ((result "") (start 0) mb me)
5b26cd3356a1 Revert last change.
Dave Love <fx@gnu.org>
parents: 35522
diff changeset
3245 (while (string-match regexp string start)
5b26cd3356a1 Revert last change.
Dave Love <fx@gnu.org>
parents: 35522
diff changeset
3246 (setq mb (match-beginning 0)
5b26cd3356a1 Revert last change.
Dave Love <fx@gnu.org>
parents: 35522
diff changeset
3247 me (match-end 0)
5b26cd3356a1 Revert last change.
Dave Love <fx@gnu.org>
parents: 35522
diff changeset
3248 result (concat result (substring string start mb) newtext)
5b26cd3356a1 Revert last change.
Dave Love <fx@gnu.org>
parents: 35522
diff changeset
3249 start me))
5b26cd3356a1 Revert last change.
Dave Love <fx@gnu.org>
parents: 35522
diff changeset
3250 (concat result (substring string start))))
5b26cd3356a1 Revert last change.
Dave Love <fx@gnu.org>
parents: 35522
diff changeset
3251
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3252 (defun dired-sort-other (switches &optional no-revert)
64531
733da358f853 (dired-align-file, dired-flag-backup-files, dired-change-marks,
Juanma Barranquero <lekktu@gmail.com>
parents: 64442
diff changeset
3253 "Specify new `ls' SWITCHES for current dired buffer.
54577
664f8942b3c8 (dired-mode): Use run-mode-hooks.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54548
diff changeset
3254 Values matching `dired-sort-by-date-regexp' or `dired-sort-by-name-regexp'
664f8942b3c8 (dired-mode): Use run-mode-hooks.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54548
diff changeset
3255 set the minor mode accordingly, others appear literally in the mode line.
664f8942b3c8 (dired-mode): Use run-mode-hooks.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54548
diff changeset
3256 With optional second arg NO-REVERT, don't refresh the listing afterwards."
30414
a8e324dcc228 (dired-sort-R-check): Added to allow recursive listing
Gerd Moellmann <gerd@gnu.org>
parents: 30130
diff changeset
3257 (dired-sort-R-check switches)
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3258 (setq dired-actual-switches switches)
74969
3b49658358de (dired-sort-other): Move test for dired-mode...
Nick Roberts <nickrob@snap.net.nz>
parents: 74385
diff changeset
3259 (dired-sort-set-modeline)
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3260 (or no-revert (revert-buffer)))
30414
a8e324dcc228 (dired-sort-R-check): Added to allow recursive listing
Gerd Moellmann <gerd@gnu.org>
parents: 30130
diff changeset
3261
68267
45d760802689 (dired-move-to-filename-regexp): Define as alias.
Richard M. Stallman <rms@gnu.org>
parents: 66325
diff changeset
3262 (defvar dired-subdir-alist-pre-R nil
45d760802689 (dired-move-to-filename-regexp): Define as alias.
Richard M. Stallman <rms@gnu.org>
parents: 66325
diff changeset
3263 "Value of `dired-subdir-alist' before -R switch added.")
68273
9bccb5180c1b (dired-no-confirm): Add quote.
Luc Teirlinck <teirllm@auburn.edu>
parents: 68267
diff changeset
3264 (make-variable-buffer-local 'dired-subdir-alist-pre-R)
30414
a8e324dcc228 (dired-sort-R-check): Added to allow recursive listing
Gerd Moellmann <gerd@gnu.org>
parents: 30130
diff changeset
3265
a8e324dcc228 (dired-sort-R-check): Added to allow recursive listing
Gerd Moellmann <gerd@gnu.org>
parents: 30130
diff changeset
3266 (defun dired-sort-R-check (switches)
a8e324dcc228 (dired-sort-R-check): Added to allow recursive listing
Gerd Moellmann <gerd@gnu.org>
parents: 30130
diff changeset
3267 "Additional processing of -R in ls option string SWITCHES.
a8e324dcc228 (dired-sort-R-check): Added to allow recursive listing
Gerd Moellmann <gerd@gnu.org>
parents: 30130
diff changeset
3268 Saves `dired-subdir-alist' when R is set and restores saved value
a8e324dcc228 (dired-sort-R-check): Added to allow recursive listing
Gerd Moellmann <gerd@gnu.org>
parents: 30130
diff changeset
3269 minus any directories explicitly deleted when R is cleared.
a8e324dcc228 (dired-sort-R-check): Added to allow recursive listing
Gerd Moellmann <gerd@gnu.org>
parents: 30130
diff changeset
3270 To be called first in body of `dired-sort-other', etc."
a8e324dcc228 (dired-sort-R-check): Added to allow recursive listing
Gerd Moellmann <gerd@gnu.org>
parents: 30130
diff changeset
3271 (cond
a8e324dcc228 (dired-sort-R-check): Added to allow recursive listing
Gerd Moellmann <gerd@gnu.org>
parents: 30130
diff changeset
3272 ((and (string-match "R" switches)
a8e324dcc228 (dired-sort-R-check): Added to allow recursive listing
Gerd Moellmann <gerd@gnu.org>
parents: 30130
diff changeset
3273 (not (string-match "R" dired-actual-switches)))
a8e324dcc228 (dired-sort-R-check): Added to allow recursive listing
Gerd Moellmann <gerd@gnu.org>
parents: 30130
diff changeset
3274 ;; Adding -R to ls switches -- save `dired-subdir-alist':
a8e324dcc228 (dired-sort-R-check): Added to allow recursive listing
Gerd Moellmann <gerd@gnu.org>
parents: 30130
diff changeset
3275 (setq dired-subdir-alist-pre-R dired-subdir-alist))
a8e324dcc228 (dired-sort-R-check): Added to allow recursive listing
Gerd Moellmann <gerd@gnu.org>
parents: 30130
diff changeset
3276 ((and (string-match "R" dired-actual-switches)
a8e324dcc228 (dired-sort-R-check): Added to allow recursive listing
Gerd Moellmann <gerd@gnu.org>
parents: 30130
diff changeset
3277 (not (string-match "R" switches)))
a8e324dcc228 (dired-sort-R-check): Added to allow recursive listing
Gerd Moellmann <gerd@gnu.org>
parents: 30130
diff changeset
3278 ;; Deleting -R from ls switches -- revert to pre-R subdirs
a8e324dcc228 (dired-sort-R-check): Added to allow recursive listing
Gerd Moellmann <gerd@gnu.org>
parents: 30130
diff changeset
3279 ;; that are still present:
a8e324dcc228 (dired-sort-R-check): Added to allow recursive listing
Gerd Moellmann <gerd@gnu.org>
parents: 30130
diff changeset
3280 (setq dired-subdir-alist
a8e324dcc228 (dired-sort-R-check): Added to allow recursive listing
Gerd Moellmann <gerd@gnu.org>
parents: 30130
diff changeset
3281 (if dired-subdir-alist-pre-R
a8e324dcc228 (dired-sort-R-check): Added to allow recursive listing
Gerd Moellmann <gerd@gnu.org>
parents: 30130
diff changeset
3282 (let (subdirs)
a8e324dcc228 (dired-sort-R-check): Added to allow recursive listing
Gerd Moellmann <gerd@gnu.org>
parents: 30130
diff changeset
3283 (while dired-subdir-alist-pre-R
a8e324dcc228 (dired-sort-R-check): Added to allow recursive listing
Gerd Moellmann <gerd@gnu.org>
parents: 30130
diff changeset
3284 (if (assoc (caar dired-subdir-alist-pre-R)
a8e324dcc228 (dired-sort-R-check): Added to allow recursive listing
Gerd Moellmann <gerd@gnu.org>
parents: 30130
diff changeset
3285 dired-subdir-alist)
a8e324dcc228 (dired-sort-R-check): Added to allow recursive listing
Gerd Moellmann <gerd@gnu.org>
parents: 30130
diff changeset
3286 ;; subdir still present...
a8e324dcc228 (dired-sort-R-check): Added to allow recursive listing
Gerd Moellmann <gerd@gnu.org>
parents: 30130
diff changeset
3287 (setq subdirs
a8e324dcc228 (dired-sort-R-check): Added to allow recursive listing
Gerd Moellmann <gerd@gnu.org>
parents: 30130
diff changeset
3288 (cons (car dired-subdir-alist-pre-R)
a8e324dcc228 (dired-sort-R-check): Added to allow recursive listing
Gerd Moellmann <gerd@gnu.org>
parents: 30130
diff changeset
3289 subdirs)))
a8e324dcc228 (dired-sort-R-check): Added to allow recursive listing
Gerd Moellmann <gerd@gnu.org>
parents: 30130
diff changeset
3290 (setq dired-subdir-alist-pre-R
a8e324dcc228 (dired-sort-R-check): Added to allow recursive listing
Gerd Moellmann <gerd@gnu.org>
parents: 30130
diff changeset
3291 (cdr dired-subdir-alist-pre-R)))
a8e324dcc228 (dired-sort-R-check): Added to allow recursive listing
Gerd Moellmann <gerd@gnu.org>
parents: 30130
diff changeset
3292 (reverse subdirs))
a8e324dcc228 (dired-sort-R-check): Added to allow recursive listing
Gerd Moellmann <gerd@gnu.org>
parents: 30130
diff changeset
3293 ;; No pre-R subdir alist, so revert to main directory
a8e324dcc228 (dired-sort-R-check): Added to allow recursive listing
Gerd Moellmann <gerd@gnu.org>
parents: 30130
diff changeset
3294 ;; listing:
a8e324dcc228 (dired-sort-R-check): Added to allow recursive listing
Gerd Moellmann <gerd@gnu.org>
parents: 30130
diff changeset
3295 (list (car (reverse dired-subdir-alist))))))))
35607
5b26cd3356a1 Revert last change.
Dave Love <fx@gnu.org>
parents: 35522
diff changeset
3296
53789
7efe8089eadf * x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents: 53224
diff changeset
3297
7efe8089eadf * x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents: 53224
diff changeset
3298 ;;;; Drag and drop support
7efe8089eadf * x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents: 53224
diff changeset
3299
77984
b4683039515d (dired-recursive-deletes, dired-recursive-copies): Change default to
Chong Yidong <cyd@stupidchicken.com>
parents: 77982
diff changeset
3300 (defcustom dired-recursive-copies 'top
58426
eb84b4af8ff5 (dired-recursive-copies): Moved from dired-aux.el.
Richard M. Stallman <rms@gnu.org>
parents: 58412
diff changeset
3301 "*Decide whether recursive copies are allowed.
77709
fe66dc682a15 (dired-recursive-deletes, dired-recursive-copies): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents: 77402
diff changeset
3302 A value of nil means no recursive copies.
58426
eb84b4af8ff5 (dired-recursive-copies): Moved from dired-aux.el.
Richard M. Stallman <rms@gnu.org>
parents: 58412
diff changeset
3303 `always' means copy recursively without asking.
eb84b4af8ff5 (dired-recursive-copies): Moved from dired-aux.el.
Richard M. Stallman <rms@gnu.org>
parents: 58412
diff changeset
3304 `top' means ask for each directory at top level.
eb84b4af8ff5 (dired-recursive-copies): Moved from dired-aux.el.
Richard M. Stallman <rms@gnu.org>
parents: 58412
diff changeset
3305 Anything else means ask for each directory."
eb84b4af8ff5 (dired-recursive-copies): Moved from dired-aux.el.
Richard M. Stallman <rms@gnu.org>
parents: 58412
diff changeset
3306 :type '(choice :tag "Copy directories"
eb84b4af8ff5 (dired-recursive-copies): Moved from dired-aux.el.
Richard M. Stallman <rms@gnu.org>
parents: 58412
diff changeset
3307 (const :tag "No recursive copies" nil)
eb84b4af8ff5 (dired-recursive-copies): Moved from dired-aux.el.
Richard M. Stallman <rms@gnu.org>
parents: 58412
diff changeset
3308 (const :tag "Ask for each directory" t)
eb84b4af8ff5 (dired-recursive-copies): Moved from dired-aux.el.
Richard M. Stallman <rms@gnu.org>
parents: 58412
diff changeset
3309 (const :tag "Ask for each top directory only" top)
eb84b4af8ff5 (dired-recursive-copies): Moved from dired-aux.el.
Richard M. Stallman <rms@gnu.org>
parents: 58412
diff changeset
3310 (const :tag "Copy directories without asking" always))
eb84b4af8ff5 (dired-recursive-copies): Moved from dired-aux.el.
Richard M. Stallman <rms@gnu.org>
parents: 58412
diff changeset
3311 :group 'dired)
eb84b4af8ff5 (dired-recursive-copies): Moved from dired-aux.el.
Richard M. Stallman <rms@gnu.org>
parents: 58412
diff changeset
3312
53789
7efe8089eadf * x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents: 53224
diff changeset
3313 (defun dired-dnd-popup-notice ()
62658
4c2b5f50f981 (dired-dnd-popup-notice): Use message-box.
Nick Roberts <nickrob@snap.net.nz>
parents: 62616
diff changeset
3314 (message-box
80462
837d54fb9fc9 (dired-dnd-handle-local-file): Obey dired-backup-overwrite for copy,
Chong Yidong <cyd@stupidchicken.com>
parents: 80336
diff changeset
3315 "Dired recursive copies are currently disabled.\nSee the variable `dired-recursive-copies'."))
53789
7efe8089eadf * x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents: 53224
diff changeset
3316
7efe8089eadf * x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents: 53224
diff changeset
3317
7efe8089eadf * x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents: 53224
diff changeset
3318 (defun dired-dnd-do-ask-action (uri)
7efe8089eadf * x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents: 53224
diff changeset
3319 ;; No need to get actions and descriptions from the source,
7efe8089eadf * x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents: 53224
diff changeset
3320 ;; we only have three actions anyway.
55937
0edea1c45ca9 (dired-subdir-switches, dired-switches-alist): New vars.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55862
diff changeset
3321 (let ((action (x-popup-menu
53789
7efe8089eadf * x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents: 53224
diff changeset
3322 t
7efe8089eadf * x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents: 53224
diff changeset
3323 (list "What action?"
7efe8089eadf * x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents: 53224
diff changeset
3324 (cons ""
7efe8089eadf * x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents: 53224
diff changeset
3325 '(("Copy here" . copy)
7efe8089eadf * x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents: 53224
diff changeset
3326 ("Move here" . move)
7efe8089eadf * x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents: 53224
diff changeset
3327 ("Link here" . link)
7efe8089eadf * x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents: 53224
diff changeset
3328 "--"
7efe8089eadf * x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents: 53224
diff changeset
3329 ("Cancel" . nil)))))))
7efe8089eadf * x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents: 53224
diff changeset
3330 (if action
7efe8089eadf * x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents: 53224
diff changeset
3331 (dired-dnd-handle-local-file uri action)
7efe8089eadf * x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents: 53224
diff changeset
3332 nil)))
7efe8089eadf * x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents: 53224
diff changeset
3333
86218
2d68ac2d165c (dired-relist-entry): Declare as function.
Glenn Morris <rgm@gnu.org>
parents: 85406
diff changeset
3334 (declare-function dired-relist-entry "dired-aux" (file))
86318
996f5a68400d (make-symbolic-link): Declare as function.
Juanma Barranquero <lekktu@gmail.com>
parents: 86218
diff changeset
3335 (declare-function make-symbolic-link "fileio.c")
86218
2d68ac2d165c (dired-relist-entry): Declare as function.
Glenn Morris <rgm@gnu.org>
parents: 85406
diff changeset
3336
95841
b4e36ff621b3 Add some compiler declarations, for builds without X.
Glenn Morris <rgm@gnu.org>
parents: 95783
diff changeset
3337 ;; Only used when (featurep 'dnd).
b4e36ff621b3 Add some compiler declarations, for builds without X.
Glenn Morris <rgm@gnu.org>
parents: 95783
diff changeset
3338 (declare-function dnd-get-local-file-name "dnd" (uri &optional must-exist))
b4e36ff621b3 Add some compiler declarations, for builds without X.
Glenn Morris <rgm@gnu.org>
parents: 95783
diff changeset
3339 (declare-function dnd-get-local-file-uri "dnd" (uri))
b4e36ff621b3 Add some compiler declarations, for builds without X.
Glenn Morris <rgm@gnu.org>
parents: 95783
diff changeset
3340
53789
7efe8089eadf * x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents: 53224
diff changeset
3341 (defun dired-dnd-handle-local-file (uri action)
7efe8089eadf * x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents: 53224
diff changeset
3342 "Copy, move or link a file to the dired directory.
7efe8089eadf * x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents: 53224
diff changeset
3343 URI is the file to handle, ACTION is one of copy, move, link or ask.
7efe8089eadf * x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents: 53224
diff changeset
3344 Ask means pop up a menu for the user to select one of copy, move or link."
7efe8089eadf * x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents: 53224
diff changeset
3345 (require 'dired-aux)
61478
ca956f06ae9e * dired.el (dired-mode): Use dnd-* instead of x-dnd-*
Jan Djärv <jan.h.d@swipnet.se>
parents: 61296
diff changeset
3346 (let* ((from (dnd-get-local-file-name uri t))
80462
837d54fb9fc9 (dired-dnd-handle-local-file): Obey dired-backup-overwrite for copy,
Chong Yidong <cyd@stupidchicken.com>
parents: 80336
diff changeset
3347 (to (when from
837d54fb9fc9 (dired-dnd-handle-local-file): Obey dired-backup-overwrite for copy,
Chong Yidong <cyd@stupidchicken.com>
parents: 80336
diff changeset
3348 (concat (dired-current-directory)
837d54fb9fc9 (dired-dnd-handle-local-file): Obey dired-backup-overwrite for copy,
Chong Yidong <cyd@stupidchicken.com>
parents: 80336
diff changeset
3349 (file-name-nondirectory from)))))
837d54fb9fc9 (dired-dnd-handle-local-file): Obey dired-backup-overwrite for copy,
Chong Yidong <cyd@stupidchicken.com>
parents: 80336
diff changeset
3350 (when from
837d54fb9fc9 (dired-dnd-handle-local-file): Obey dired-backup-overwrite for copy,
Chong Yidong <cyd@stupidchicken.com>
parents: 80336
diff changeset
3351 (cond ((eq action 'ask)
837d54fb9fc9 (dired-dnd-handle-local-file): Obey dired-backup-overwrite for copy,
Chong Yidong <cyd@stupidchicken.com>
parents: 80336
diff changeset
3352 (dired-dnd-do-ask-action uri))
837d54fb9fc9 (dired-dnd-handle-local-file): Obey dired-backup-overwrite for copy,
Chong Yidong <cyd@stupidchicken.com>
parents: 80336
diff changeset
3353 ;; If copying a directory and dired-recursive-copies is
837d54fb9fc9 (dired-dnd-handle-local-file): Obey dired-backup-overwrite for copy,
Chong Yidong <cyd@stupidchicken.com>
parents: 80336
diff changeset
3354 ;; nil, dired-copy-file fails. Pop up a notice.
837d54fb9fc9 (dired-dnd-handle-local-file): Obey dired-backup-overwrite for copy,
Chong Yidong <cyd@stupidchicken.com>
parents: 80336
diff changeset
3355 ((and (memq action '(copy private))
837d54fb9fc9 (dired-dnd-handle-local-file): Obey dired-backup-overwrite for copy,
Chong Yidong <cyd@stupidchicken.com>
parents: 80336
diff changeset
3356 (file-directory-p from)
837d54fb9fc9 (dired-dnd-handle-local-file): Obey dired-backup-overwrite for copy,
Chong Yidong <cyd@stupidchicken.com>
parents: 80336
diff changeset
3357 (not dired-recursive-copies))
837d54fb9fc9 (dired-dnd-handle-local-file): Obey dired-backup-overwrite for copy,
Chong Yidong <cyd@stupidchicken.com>
parents: 80336
diff changeset
3358 (dired-dnd-popup-notice))
837d54fb9fc9 (dired-dnd-handle-local-file): Obey dired-backup-overwrite for copy,
Chong Yidong <cyd@stupidchicken.com>
parents: 80336
diff changeset
3359 ((memq action '(copy private move link))
837d54fb9fc9 (dired-dnd-handle-local-file): Obey dired-backup-overwrite for copy,
Chong Yidong <cyd@stupidchicken.com>
parents: 80336
diff changeset
3360 (let ((overwrite (and (file-exists-p to)
837d54fb9fc9 (dired-dnd-handle-local-file): Obey dired-backup-overwrite for copy,
Chong Yidong <cyd@stupidchicken.com>
parents: 80336
diff changeset
3361 (y-or-n-p
837d54fb9fc9 (dired-dnd-handle-local-file): Obey dired-backup-overwrite for copy,
Chong Yidong <cyd@stupidchicken.com>
parents: 80336
diff changeset
3362 (format "Overwrite existing file `%s'? " to))))
837d54fb9fc9 (dired-dnd-handle-local-file): Obey dired-backup-overwrite for copy,
Chong Yidong <cyd@stupidchicken.com>
parents: 80336
diff changeset
3363 ;; Binding dired-overwrite-confirmed to nil makes
837d54fb9fc9 (dired-dnd-handle-local-file): Obey dired-backup-overwrite for copy,
Chong Yidong <cyd@stupidchicken.com>
parents: 80336
diff changeset
3364 ;; dired-handle-overwrite a no-op. We instead use
837d54fb9fc9 (dired-dnd-handle-local-file): Obey dired-backup-overwrite for copy,
Chong Yidong <cyd@stupidchicken.com>
parents: 80336
diff changeset
3365 ;; y-or-n-p, which pops a graphical menu.
837d54fb9fc9 (dired-dnd-handle-local-file): Obey dired-backup-overwrite for copy,
Chong Yidong <cyd@stupidchicken.com>
parents: 80336
diff changeset
3366 dired-overwrite-confirmed backup-file)
837d54fb9fc9 (dired-dnd-handle-local-file): Obey dired-backup-overwrite for copy,
Chong Yidong <cyd@stupidchicken.com>
parents: 80336
diff changeset
3367 (when (and overwrite
837d54fb9fc9 (dired-dnd-handle-local-file): Obey dired-backup-overwrite for copy,
Chong Yidong <cyd@stupidchicken.com>
parents: 80336
diff changeset
3368 ;; d-b-o is defined in dired-aux.
837d54fb9fc9 (dired-dnd-handle-local-file): Obey dired-backup-overwrite for copy,
Chong Yidong <cyd@stupidchicken.com>
parents: 80336
diff changeset
3369 (boundp 'dired-backup-overwrite)
837d54fb9fc9 (dired-dnd-handle-local-file): Obey dired-backup-overwrite for copy,
Chong Yidong <cyd@stupidchicken.com>
parents: 80336
diff changeset
3370 dired-backup-overwrite
837d54fb9fc9 (dired-dnd-handle-local-file): Obey dired-backup-overwrite for copy,
Chong Yidong <cyd@stupidchicken.com>
parents: 80336
diff changeset
3371 (setq backup-file
837d54fb9fc9 (dired-dnd-handle-local-file): Obey dired-backup-overwrite for copy,
Chong Yidong <cyd@stupidchicken.com>
parents: 80336
diff changeset
3372 (car (find-backup-file-name to)))
837d54fb9fc9 (dired-dnd-handle-local-file): Obey dired-backup-overwrite for copy,
Chong Yidong <cyd@stupidchicken.com>
parents: 80336
diff changeset
3373 (or (eq dired-backup-overwrite 'always)
837d54fb9fc9 (dired-dnd-handle-local-file): Obey dired-backup-overwrite for copy,
Chong Yidong <cyd@stupidchicken.com>
parents: 80336
diff changeset
3374 (y-or-n-p
837d54fb9fc9 (dired-dnd-handle-local-file): Obey dired-backup-overwrite for copy,
Chong Yidong <cyd@stupidchicken.com>
parents: 80336
diff changeset
3375 (format
837d54fb9fc9 (dired-dnd-handle-local-file): Obey dired-backup-overwrite for copy,
Chong Yidong <cyd@stupidchicken.com>
parents: 80336
diff changeset
3376 "Make backup for existing file `%s'? " to))))
837d54fb9fc9 (dired-dnd-handle-local-file): Obey dired-backup-overwrite for copy,
Chong Yidong <cyd@stupidchicken.com>
parents: 80336
diff changeset
3377 (rename-file to backup-file 0)
837d54fb9fc9 (dired-dnd-handle-local-file): Obey dired-backup-overwrite for copy,
Chong Yidong <cyd@stupidchicken.com>
parents: 80336
diff changeset
3378 (dired-relist-entry backup-file))
837d54fb9fc9 (dired-dnd-handle-local-file): Obey dired-backup-overwrite for copy,
Chong Yidong <cyd@stupidchicken.com>
parents: 80336
diff changeset
3379 (cond ((memq action '(copy private))
837d54fb9fc9 (dired-dnd-handle-local-file): Obey dired-backup-overwrite for copy,
Chong Yidong <cyd@stupidchicken.com>
parents: 80336
diff changeset
3380 (dired-copy-file from to overwrite))
837d54fb9fc9 (dired-dnd-handle-local-file): Obey dired-backup-overwrite for copy,
Chong Yidong <cyd@stupidchicken.com>
parents: 80336
diff changeset
3381 ((eq action 'move)
837d54fb9fc9 (dired-dnd-handle-local-file): Obey dired-backup-overwrite for copy,
Chong Yidong <cyd@stupidchicken.com>
parents: 80336
diff changeset
3382 (dired-rename-file from to overwrite))
837d54fb9fc9 (dired-dnd-handle-local-file): Obey dired-backup-overwrite for copy,
Chong Yidong <cyd@stupidchicken.com>
parents: 80336
diff changeset
3383 ((eq action 'link)
837d54fb9fc9 (dired-dnd-handle-local-file): Obey dired-backup-overwrite for copy,
Chong Yidong <cyd@stupidchicken.com>
parents: 80336
diff changeset
3384 (make-symbolic-link from to overwrite)))
837d54fb9fc9 (dired-dnd-handle-local-file): Obey dired-backup-overwrite for copy,
Chong Yidong <cyd@stupidchicken.com>
parents: 80336
diff changeset
3385 (dired-relist-entry to)
837d54fb9fc9 (dired-dnd-handle-local-file): Obey dired-backup-overwrite for copy,
Chong Yidong <cyd@stupidchicken.com>
parents: 80336
diff changeset
3386 action))))))
53789
7efe8089eadf * x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents: 53224
diff changeset
3387
7efe8089eadf * x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents: 53224
diff changeset
3388 (defun dired-dnd-handle-file (uri action)
7efe8089eadf * x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents: 53224
diff changeset
3389 "Copy, move or link a file to the dired directory if it is a local file.
7efe8089eadf * x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents: 53224
diff changeset
3390 URI is the file to handle. If the hostname in the URI isn't local, do nothing.
7efe8089eadf * x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents: 53224
diff changeset
3391 ACTION is one of copy, move, link or ask.
7efe8089eadf * x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents: 53224
diff changeset
3392 Ask means pop up a menu for the user to select one of copy, move or link."
61478
ca956f06ae9e * dired.el (dired-mode): Use dnd-* instead of x-dnd-*
Jan Djärv <jan.h.d@swipnet.se>
parents: 61296
diff changeset
3393 (let ((local-file (dnd-get-local-file-uri uri)))
53789
7efe8089eadf * x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents: 53224
diff changeset
3394 (if local-file (dired-dnd-handle-local-file local-file action)
7efe8089eadf * x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents: 53224
diff changeset
3395 nil)))
55058
053797c3d447 (dired-restore-desktop-buffer) Move from desktop.el. Add parameters.
Lars Hansen <larsh@soem.dk>
parents: 54780
diff changeset
3396
053797c3d447 (dired-restore-desktop-buffer) Move from desktop.el. Add parameters.
Lars Hansen <larsh@soem.dk>
parents: 54780
diff changeset
3397
053797c3d447 (dired-restore-desktop-buffer) Move from desktop.el. Add parameters.
Lars Hansen <larsh@soem.dk>
parents: 54780
diff changeset
3398 ;;;; Desktop support
053797c3d447 (dired-restore-desktop-buffer) Move from desktop.el. Add parameters.
Lars Hansen <larsh@soem.dk>
parents: 54780
diff changeset
3399
053797c3d447 (dired-restore-desktop-buffer) Move from desktop.el. Add parameters.
Lars Hansen <larsh@soem.dk>
parents: 54780
diff changeset
3400 (eval-when-compile (require 'desktop))
053797c3d447 (dired-restore-desktop-buffer) Move from desktop.el. Add parameters.
Lars Hansen <larsh@soem.dk>
parents: 54780
diff changeset
3401
053797c3d447 (dired-restore-desktop-buffer) Move from desktop.el. Add parameters.
Lars Hansen <larsh@soem.dk>
parents: 54780
diff changeset
3402 (defun dired-desktop-buffer-misc-data (desktop-dirname)
053797c3d447 (dired-restore-desktop-buffer) Move from desktop.el. Add parameters.
Lars Hansen <larsh@soem.dk>
parents: 54780
diff changeset
3403 "Auxiliary information to be saved in desktop file."
053797c3d447 (dired-restore-desktop-buffer) Move from desktop.el. Add parameters.
Lars Hansen <larsh@soem.dk>
parents: 54780
diff changeset
3404 (cons
053797c3d447 (dired-restore-desktop-buffer) Move from desktop.el. Add parameters.
Lars Hansen <larsh@soem.dk>
parents: 54780
diff changeset
3405 ;; Value of `dired-directory'.
053797c3d447 (dired-restore-desktop-buffer) Move from desktop.el. Add parameters.
Lars Hansen <larsh@soem.dk>
parents: 54780
diff changeset
3406 (if (consp dired-directory)
053797c3d447 (dired-restore-desktop-buffer) Move from desktop.el. Add parameters.
Lars Hansen <larsh@soem.dk>
parents: 54780
diff changeset
3407 ;; Directory name followed by list of files.
053797c3d447 (dired-restore-desktop-buffer) Move from desktop.el. Add parameters.
Lars Hansen <larsh@soem.dk>
parents: 54780
diff changeset
3408 (cons (desktop-file-name (car dired-directory) desktop-dirname)
053797c3d447 (dired-restore-desktop-buffer) Move from desktop.el. Add parameters.
Lars Hansen <larsh@soem.dk>
parents: 54780
diff changeset
3409 (cdr dired-directory))
64442
11d53eaa016c (dired-desktop-buffer-misc-data, dired-restore-desktop-buffer):
Juri Linkov <juri@jurta.org>
parents: 64430
diff changeset
3410 ;; Directory name, optionally with shell wildcard.
55058
053797c3d447 (dired-restore-desktop-buffer) Move from desktop.el. Add parameters.
Lars Hansen <larsh@soem.dk>
parents: 54780
diff changeset
3411 (desktop-file-name dired-directory desktop-dirname))
053797c3d447 (dired-restore-desktop-buffer) Move from desktop.el. Add parameters.
Lars Hansen <larsh@soem.dk>
parents: 54780
diff changeset
3412 ;; Subdirectories in `dired-subdir-alist'.
053797c3d447 (dired-restore-desktop-buffer) Move from desktop.el. Add parameters.
Lars Hansen <larsh@soem.dk>
parents: 54780
diff changeset
3413 (cdr
053797c3d447 (dired-restore-desktop-buffer) Move from desktop.el. Add parameters.
Lars Hansen <larsh@soem.dk>
parents: 54780
diff changeset
3414 (nreverse
053797c3d447 (dired-restore-desktop-buffer) Move from desktop.el. Add parameters.
Lars Hansen <larsh@soem.dk>
parents: 54780
diff changeset
3415 (mapcar
053797c3d447 (dired-restore-desktop-buffer) Move from desktop.el. Add parameters.
Lars Hansen <larsh@soem.dk>
parents: 54780
diff changeset
3416 (function (lambda (f) (desktop-file-name (car f) desktop-dirname)))
053797c3d447 (dired-restore-desktop-buffer) Move from desktop.el. Add parameters.
Lars Hansen <larsh@soem.dk>
parents: 54780
diff changeset
3417 dired-subdir-alist)))))
053797c3d447 (dired-restore-desktop-buffer) Move from desktop.el. Add parameters.
Lars Hansen <larsh@soem.dk>
parents: 54780
diff changeset
3418
053797c3d447 (dired-restore-desktop-buffer) Move from desktop.el. Add parameters.
Lars Hansen <larsh@soem.dk>
parents: 54780
diff changeset
3419 (defun dired-restore-desktop-buffer (desktop-buffer-file-name
053797c3d447 (dired-restore-desktop-buffer) Move from desktop.el. Add parameters.
Lars Hansen <larsh@soem.dk>
parents: 54780
diff changeset
3420 desktop-buffer-name
053797c3d447 (dired-restore-desktop-buffer) Move from desktop.el. Add parameters.
Lars Hansen <larsh@soem.dk>
parents: 54780
diff changeset
3421 desktop-buffer-misc)
053797c3d447 (dired-restore-desktop-buffer) Move from desktop.el. Add parameters.
Lars Hansen <larsh@soem.dk>
parents: 54780
diff changeset
3422 "Restore a dired buffer specified in a desktop file."
053797c3d447 (dired-restore-desktop-buffer) Move from desktop.el. Add parameters.
Lars Hansen <larsh@soem.dk>
parents: 54780
diff changeset
3423 ;; First element of `desktop-buffer-misc' is the value of `dired-directory'.
64442
11d53eaa016c (dired-desktop-buffer-misc-data, dired-restore-desktop-buffer):
Juri Linkov <juri@jurta.org>
parents: 64430
diff changeset
3424 ;; This value is a directory name, optionally with shell wildcard or
55058
053797c3d447 (dired-restore-desktop-buffer) Move from desktop.el. Add parameters.
Lars Hansen <larsh@soem.dk>
parents: 54780
diff changeset
3425 ;; a directory name followed by list of files.
053797c3d447 (dired-restore-desktop-buffer) Move from desktop.el. Add parameters.
Lars Hansen <larsh@soem.dk>
parents: 54780
diff changeset
3426 (let* ((dired-dir (car desktop-buffer-misc))
053797c3d447 (dired-restore-desktop-buffer) Move from desktop.el. Add parameters.
Lars Hansen <larsh@soem.dk>
parents: 54780
diff changeset
3427 (dir (if (consp dired-dir) (car dired-dir) dired-dir)))
053797c3d447 (dired-restore-desktop-buffer) Move from desktop.el. Add parameters.
Lars Hansen <larsh@soem.dk>
parents: 54780
diff changeset
3428 (if (file-directory-p (file-name-directory dir))
053797c3d447 (dired-restore-desktop-buffer) Move from desktop.el. Add parameters.
Lars Hansen <larsh@soem.dk>
parents: 54780
diff changeset
3429 (progn
053797c3d447 (dired-restore-desktop-buffer) Move from desktop.el. Add parameters.
Lars Hansen <larsh@soem.dk>
parents: 54780
diff changeset
3430 (dired dired-dir)
053797c3d447 (dired-restore-desktop-buffer) Move from desktop.el. Add parameters.
Lars Hansen <larsh@soem.dk>
parents: 54780
diff changeset
3431 ;; The following elements of `desktop-buffer-misc' are the keys
053797c3d447 (dired-restore-desktop-buffer) Move from desktop.el. Add parameters.
Lars Hansen <larsh@soem.dk>
parents: 54780
diff changeset
3432 ;; from `dired-subdir-alist'.
84860
a853167e2059 (dired-restore-desktop-buffer): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82365
diff changeset
3433 (mapc 'dired-maybe-insert-subdir (cdr desktop-buffer-misc))
55058
053797c3d447 (dired-restore-desktop-buffer) Move from desktop.el. Add parameters.
Lars Hansen <larsh@soem.dk>
parents: 54780
diff changeset
3434 (current-buffer))
053797c3d447 (dired-restore-desktop-buffer) Move from desktop.el. Add parameters.
Lars Hansen <larsh@soem.dk>
parents: 54780
diff changeset
3435 (message "Desktop: Directory %s no longer exists." dir)
053797c3d447 (dired-restore-desktop-buffer) Move from desktop.el. Add parameters.
Lars Hansen <larsh@soem.dk>
parents: 54780
diff changeset
3436 (when desktop-missing-file-warning (sit-for 1))
053797c3d447 (dired-restore-desktop-buffer) Move from desktop.el. Add parameters.
Lars Hansen <larsh@soem.dk>
parents: 54780
diff changeset
3437 nil)))
53789
7efe8089eadf * x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents: 53224
diff changeset
3438
64961
1fa57fbe3d5f Revert last change.
Andreas Schwab <schwab@suse.de>
parents: 64955
diff changeset
3439 (add-to-list 'desktop-buffer-mode-handlers
1fa57fbe3d5f Revert last change.
Andreas Schwab <schwab@suse.de>
parents: 64955
diff changeset
3440 '(dired-mode . dired-restore-desktop-buffer))
64894
aee8ba4e5b1a Add handler to desktop-buffer-mode-handlers.
Lars Hansen <larsh@soem.dk>
parents: 64762
diff changeset
3441
53789
7efe8089eadf * x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents: 53224
diff changeset
3442
4888
a58a505c42d9 `provide' "dired" before running user hooks.
Brian Fox <bfox@gnu.org>
parents: 4760
diff changeset
3443 (provide 'dired)
a58a505c42d9 `provide' "dired" before running user hooks.
Brian Fox <bfox@gnu.org>
parents: 4760
diff changeset
3444
723
a898ba10b49c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 661
diff changeset
3445 (run-hooks 'dired-load-hook) ; for your customizations
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3446
58412
b9a1c1b8d195 (dired-align-file): Don't assume line starts with spaces.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57943
diff changeset
3447 ;; arch-tag: e1af7a8f-691c-41a0-aac1-ddd4d3c87517
834
2e0cd4e83c2e *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 778
diff changeset
3448 ;;; dired.el ends here